<?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>131423</bug_id>
          
          <creation_ts>2014-04-08 20:22:18 -0700</creation_ts>
          <short_desc>DFG IR should keep the data flow of doubles and int52&apos;s separate from the data flow of JSValue&apos;s</short_desc>
          <delta_ts>2014-04-15 13:27:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>131424</dependson>
          <blocked>131689</blocked>
    
    <blocked>131419</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>atrick</cc>
    
    <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>juergen</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>999042</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-08 20:22:18 -0700</bug_when>
    <thetext>This accomplishes two things:

- It makes all complex conversions explicit in IR.  Currently JSValue-to-Double is almost always implicit.
- It makes it easy to use, and property handle, values that fall outside of the JSValue domain, like heavy NaNs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999046</commentid>
    <comment_count>1</comment_count>
      <attachid>228931</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-08 20:29:51 -0700</bug_when>
    <thetext>Created attachment 228931
it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000201</commentid>
    <comment_count>2</comment_count>
      <attachid>229208</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-12 11:52:17 -0700</bug_when>
    <thetext>Created attachment 229208
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000213</commentid>
    <comment_count>3</comment_count>
      <attachid>229210</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-12 12:54:52 -0700</bug_when>
    <thetext>Created attachment 229210
even more

This is starting to get fun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000236</commentid>
    <comment_count>4</comment_count>
      <attachid>229213</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-12 16:16:09 -0700</bug_when>
    <thetext>Created attachment 229213
maybe 1/3 done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000308</commentid>
    <comment_count>5</comment_count>
      <attachid>229237</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-13 11:46:44 -0700</bug_when>
    <thetext>Created attachment 229237
more progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000329</commentid>
    <comment_count>6</comment_count>
      <attachid>229244</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-13 14:06:32 -0700</bug_when>
    <thetext>Created attachment 229244
it&apos;s getting real</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000347</commentid>
    <comment_count>7</comment_count>
      <attachid>229251</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-13 16:59:40 -0700</bug_when>
    <thetext>Created attachment 229251
not done yet

I can&apos;t wait to land this monster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000350</commentid>
    <comment_count>8</comment_count>
      <attachid>229252</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-13 17:22:24 -0700</bug_when>
    <thetext>Created attachment 229252
almost there</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000351</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-13 17:23:16 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=229213) [details]
&gt; maybe 1/3 done

48.42 * 3 = 145.26.

This implies that I have roughly five more kilobytes of code before this patch is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000360</commentid>
    <comment_count>10</comment_count>
      <attachid>229253</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-13 18:29:31 -0700</bug_when>
    <thetext>Created attachment 229253
it compiles!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000415</commentid>
    <comment_count>11</comment_count>
      <attachid>229267</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-13 23:59:42 -0700</bug_when>
    <thetext>Created attachment 229267
it ran something

It&apos;s starting to not be completely broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000588</commentid>
    <comment_count>12</comment_count>
      <attachid>229303</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-14 13:36:41 -0700</bug_when>
    <thetext>Created attachment 229303
it sometimes passes some tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000624</commentid>
    <comment_count>13</comment_count>
      <attachid>229312</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-14 15:31:26 -0700</bug_when>
    <thetext>Created attachment 229312
passing tests on 64-bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000741</commentid>
    <comment_count>14</comment_count>
      <attachid>229345</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-14 21:58:37 -0700</bug_when>
    <thetext>Created attachment 229345
passes all tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000778</commentid>
    <comment_count>15</comment_count>
      <attachid>229354</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-14 23:30:53 -0700</bug_when>
    <thetext>Created attachment 229354
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000780</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-14 23:32:31 -0700</bug_when>
    <thetext>Attachment 229354 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/AssemblyHelpers.h:421:  The parameter name &quot;fpr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:190:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:294:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 3 in 47 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000781</commentid>
    <comment_count>17</comment_count>
      <attachid>229355</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-14 23:33:35 -0700</bug_when>
    <thetext>Created attachment 229355
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000783</commentid>
    <comment_count>18</comment_count>
      <attachid>229357</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-14 23:34:46 -0700</bug_when>
    <thetext>Created attachment 229357
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000784</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-14 23:37:33 -0700</bug_when>
    <thetext>Attachment 229357 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/AssemblyHelpers.h:421:  The parameter name &quot;fpr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:190:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 47 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000785</commentid>
    <comment_count>20</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-14 23:39:44 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Attachment 229357 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/jit/AssemblyHelpers.h:421:  The parameter name &quot;fpr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

Fixed.

&gt; ERROR: Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:190:  Multi line control clauses should use braces.  [whitespace/braces] [4]

No.

&gt; Total errors found: 2 in 47 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000794</commentid>
    <comment_count>21</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-15 00:01:14 -0700</bug_when>
    <thetext>Benchmark report for SunSpider, Octane, Kraken, and AsmBench on oldmac (MacPro4,1).

VMs tested:
&quot;ToT&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r167272)
&quot;DisjointDataFlow&quot; at /Volumes/Data/fromMiniMe/tertiary/OpenSource/WebKitBuild/Release/jsc (r167272)

Collected 6 samples per benchmark/VM, with 6 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to
get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                   ToT                 DisjointDataFlow                                 
SunSpider:
   3d-cube                                    8.8556+-0.1658            8.8135+-0.1897        
   3d-morph                                   9.5043+-0.1738     ?      9.5260+-0.1173        ?
   3d-raytrace                               10.4978+-0.2492     ?     10.9246+-0.2754        ? might be 1.0407x slower
   access-binary-trees                        3.0791+-0.0494            3.0327+-0.0932          might be 1.0153x faster
   access-fannkuch                            9.2635+-0.2691            9.2375+-0.1992        
   access-nbody                               4.6771+-0.0702     !      4.9050+-0.0382        ! definitely 1.0487x slower
   access-nsieve                              5.7626+-0.1300     ?      5.8214+-0.1160        ? might be 1.0102x slower
   bitops-3bit-bits-in-byte                   2.0844+-0.1141            2.0511+-0.0997          might be 1.0163x faster
   bitops-bits-in-byte                        6.5818+-0.0625     ?      6.6650+-0.1064        ? might be 1.0126x slower
   bitops-bitwise-and                         3.1246+-0.0112            3.1223+-0.0481        
   bitops-nsieve-bits                         6.1300+-0.1292     ^      5.9076+-0.0246        ^ definitely 1.0376x faster
   controlflow-recursive                      3.4637+-0.0795     ?      3.5368+-0.1283        ? might be 1.0211x slower
   crypto-aes                                 6.0505+-0.1034     ?      6.0899+-0.0222        ?
   crypto-md5                                 3.4563+-0.0555     ?      3.5898+-0.1785        ? might be 1.0386x slower
   crypto-sha1                                4.7430+-0.2969            4.6967+-0.2188        
   date-format-tofte                         13.3832+-0.5011           13.1751+-0.5879          might be 1.0158x faster
   date-format-xparb                          9.9797+-0.1528            9.7536+-0.1629          might be 1.0232x faster
   math-cordic                                4.7658+-0.0667     ?      4.8741+-0.0544        ? might be 1.0227x slower
   math-partial-sums                         10.5080+-0.2057           10.3280+-0.1330          might be 1.0174x faster
   math-spectral-norm                         3.2244+-0.1131     ?      3.3599+-0.1325        ? might be 1.0420x slower
   regexp-dna                                12.0826+-0.1314           12.0682+-0.2592        
   string-base64                              6.1819+-0.0509     ?      6.2072+-0.0378        ?
   string-fasta                              11.4589+-0.2247     ?     11.5913+-0.2498        ? might be 1.0116x slower
   string-tagcloud                           16.9122+-0.2845     ?     16.9723+-0.3670        ?
   string-unpack-code                        33.1013+-0.2880     ?     33.1581+-0.1912        ?
   string-validate-input                      7.2788+-0.0794     ?      7.4886+-0.1569        ? might be 1.0288x slower

   &lt;arithmetic&gt; *                             8.3135+-0.0331     ?      8.3422+-0.0371        ? might be 1.0034x slower
   &lt;geometric&gt;                                6.8098+-0.0336     ?      6.8482+-0.0306        ? might be 1.0056x slower
   &lt;harmonic&gt;                                 5.7097+-0.0382     ?      5.7484+-0.0425        ? might be 1.0068x slower

                                                   ToT                 DisjointDataFlow                                 
Octane and V8v7:
   encrypt                                   0.44475+-0.00248          0.44453+-0.00156       
   decrypt                                   8.04512+-0.00860    ?     8.22488+-0.22501       ? might be 1.0223x slower
   deltablue                        x2       0.44441+-0.00607    ?     0.44577+-0.00213       ?
   earley                                    0.95063+-0.00746    ?     0.95481+-0.00341       ?
   boyer                                    10.65078+-0.07016         10.63740+-0.02689       
   navier-stokes                    x2       7.85221+-0.17849    ?     7.94955+-0.22564       ? might be 1.0124x slower
   raytrace                         x2       2.83404+-0.06045    ?     2.89518+-0.06709       ? might be 1.0216x slower
   regexp                           x2      32.36546+-1.59683         32.03733+-0.74428         might be 1.0102x faster
   richards                         x2       0.22832+-0.00646          0.22610+-0.00573       
   splay                            x2       0.65112+-0.02244          0.64333+-0.02370         might be 1.0121x faster
   pdfjs                            x2      98.71862+-1.00381         97.70550+-0.33678         might be 1.0104x faster
   mandreel                         x2     104.04172+-0.64701    ?   104.90456+-0.55541       ?
   gbemu                            x2      71.81361+-0.26283         71.46601+-0.90133       
   closure                                   0.89578+-0.00118    ?     0.89889+-0.00233       ?
   jquery                                   11.47915+-0.04427    ?    11.63422+-0.34224       ? might be 1.0135x slower
   box2d                            x2      27.53755+-0.25138    ?    27.83984+-0.27793       ? might be 1.0110x slower
   zlib                             x2     752.06250+-6.82752        739.43296+-27.22691        might be 1.0171x faster
   typescript                       x2    1250.82231+-15.87611      1247.02486+-7.30913       

V8v7:
   &lt;arithmetic&gt;                              6.80265+-0.19364          6.79101+-0.08695         might be 1.0017x faster
   &lt;geometric&gt; *                             2.02784+-0.02466    ?     2.03226+-0.01962       ? might be 1.0022x slower
   &lt;harmonic&gt;                                0.76635+-0.01124          0.76320+-0.00892         might be 1.0041x faster

Octane including V8v7:
   &lt;arithmetic&gt;                            157.70700+-0.93728        156.59789+-1.71884         might be 1.0071x faster
   &lt;geometric&gt; *                            12.10291+-0.07826    ?    12.11049+-0.07606       ? might be 1.0006x slower
   &lt;harmonic&gt;                                1.34976+-0.01854          1.34489+-0.01492         might be 1.0036x faster

                                                   ToT                 DisjointDataFlow                                 
Kraken:
   ai-astar                                  497.940+-9.174            495.352+-7.535         
   audio-beat-detection                      214.703+-1.289            213.870+-0.681         
   audio-dft                                 299.102+-4.001      ?     300.186+-5.285         ?
   audio-fft                                 121.517+-0.083      ?     121.562+-0.344         ?
   audio-oscillator                          385.390+-8.322            383.563+-1.129         
   imaging-darkroom                          292.080+-6.892            289.506+-0.556         
   imaging-desaturate                        113.918+-0.961            113.739+-0.575         
   imaging-gaussian-blur                     191.936+-4.664      ?     210.639+-44.432        ? might be 1.0974x slower
   json-parse-financial                       85.709+-2.721             85.371+-1.297         
   json-stringify-tinderbox                  106.445+-2.120      ?     107.718+-2.010         ? might be 1.0120x slower
   stanford-crypto-aes                        95.566+-2.141      ?      98.250+-2.946         ? might be 1.0281x slower
   stanford-crypto-ccm                       106.201+-2.901            101.793+-10.598          might be 1.0433x faster
   stanford-crypto-pbkdf2                    251.095+-0.946      ?     255.601+-6.666         ? might be 1.0179x slower
   stanford-crypto-sha256-iterative          112.441+-3.129            110.403+-0.196           might be 1.0185x faster

   &lt;arithmetic&gt; *                            205.289+-1.163      ?     206.254+-3.627         ? might be 1.0047x slower
   &lt;geometric&gt;                               174.845+-1.120      ?     175.462+-3.252         ? might be 1.0035x slower
   &lt;harmonic&gt;                                152.023+-1.141      ?     152.124+-3.070         ? might be 1.0007x slower

                                                   ToT                 DisjointDataFlow                                 
AsmBench:
   bigfib.cpp                               991.0034+-5.6074          988.5683+-10.4231       
   cray.c                                    57.6591+-0.4919     ?     58.5741+-0.6725        ? might be 1.0159x slower
   dry.c                                    935.4674+-76.5102         895.4475+-83.9800         might be 1.0447x faster
   FloatMM.c                               1792.0316+-40.6358    ?   1795.0815+-44.3661       ?
   gcc-loops.cpp                           2232.0565+-3.2209     ?   2235.8031+-7.7630        ?
   n-body.c                                3056.0710+-51.3423        3039.6989+-8.5335        
   Quicksort.c                               85.3543+-2.2289           84.5378+-0.5411        
   stepanov_container.cpp                  6255.2408+-13.1123    ?   6291.4020+-40.7525       ?
   Towers.c                                  71.7684+-0.4278     ?     72.1978+-0.4640        ?

   &lt;arithmetic&gt;                            1719.6281+-12.6983        1717.9234+-15.9505         might be 1.0010x faster
   &lt;geometric&gt; *                            663.6269+-7.2056          661.3768+-9.2199          might be 1.0034x faster
   &lt;harmonic&gt;                               193.2350+-1.5413     ?    194.0429+-1.5205        ? might be 1.0042x slower

                                                   ToT                 DisjointDataFlow                                 
All benchmarks:
   &lt;arithmetic&gt;                             294.9121+-1.6248          294.4772+-2.0231          might be 1.0015x faster
   &lt;geometric&gt;                               25.3706+-0.0800     ?     25.4292+-0.1100        ? might be 1.0023x slower
   &lt;harmonic&gt;                                 2.9347+-0.0338            2.9293+-0.0256          might be 1.0018x faster

                                                   ToT                 DisjointDataFlow                                 
Geomean of preferred means:
   &lt;scaled-result&gt;                           60.8462+-0.1486     ?     60.9265+-0.3885        ? might be 1.0013x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000921</commentid>
    <comment_count>22</comment_count>
      <attachid>229357</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-04-15 12:25:24 -0700</bug_when>
    <thetext>Comment on attachment 229357
the patch

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

r=me

Please make sure to test 32bit and iOS before landing.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:263
&gt; +                // DoubleAsInt42 node, which occurs after the Div/Mod node that the conversions

DoubleAsInt52?

&gt; Source/JavaScriptCore/dfg/DFGNodeType.h:119
&gt; +    macro(ValueRep, NodeResultJS) \

Seems like we should rename NodeResultJS to NodeResultValue to match.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2168
&gt; +        // This is pretty annoying - boxDouble() on X86 clobbers the source. That&apos;s kinda gross.

A better way to say this is, here, &quot;boxDouble() on X86 clobbers the source, so we need to make a copy&quot;, and then in the assembler, &quot;FIXME: Don&apos;t clobber the source.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000924</commentid>
    <comment_count>23</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-15 12:35:38 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 229357 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=229357&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; Please make sure to test 32bit and iOS before landing.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:263
&gt; &gt; +                // DoubleAsInt42 node, which occurs after the Div/Mod node that the conversions
&gt; 
&gt; DoubleAsInt52?

Lol.  DoubleAsInt32.

Some day, we may have Int33, Int34, Int35, ..., all the way up to Int51.  But that day will hopefully not come anytime soon.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGNodeType.h:119
&gt; &gt; +    macro(ValueRep, NodeResultJS) \
&gt; 
&gt; Seems like we should rename NodeResultJS to NodeResultValue to match.

Actually, I want to do more carnage to NodeResultMask.  Currently we have NodeResultNumber and NodeResultInt32, which are like NodeResultJS in almost every way.  I just filed: https://bugs.webkit.org/show_bug.cgi?id=131689.  Clearly, that bug is not a high priority - the nastiness it fixes isn&apos;t an immediate concern.

Because both this, and that, will be big changes, I&apos;d rather not also search-and-replace NodeResultJS for now.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2168
&gt; &gt; +        // This is pretty annoying - boxDouble() on X86 clobbers the source. That&apos;s kinda gross.
&gt; 
&gt; A better way to say this is, here, &quot;boxDouble() on X86 clobbers the source, so we need to make a copy&quot;, and then in the assembler, &quot;FIXME: Don&apos;t clobber the source.&quot;

Good idea.  https://bugs.webkit.org/show_bug.cgi?id=131690</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000942</commentid>
    <comment_count>24</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-04-15 13:27:24 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/167325</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228931</attachid>
            <date>2014-04-08 20:29:51 -0700</date>
            <delta_ts>2014-04-12 11:52:17 -0700</delta_ts>
            <desc>it begins</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>7235</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHJldmlz
aW9uIDE2Njk5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBpbmxpbmUgTm9kZUZsYWdzIHJlc3Vs
dEZvcihGbHVzaEZvcm1hdCBmCiAgICAgY2FzZSBGbHVzaGVkSW50NTI6CiAgICAgICAgIHJldHVy
biBOb2RlUmVzdWx0SW50NTI7CiAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgotICAgICAgICByZXR1
cm4gTm9kZVJlc3VsdE51bWJlcjsKKyAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHREb3VibGU7CiAg
ICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRCb29sZWFu
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAx
NjY5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzg1LDYgKzM4NSw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICB7CiAgICAgICAgIHN3
aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgRG91
YmxlQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgY2FzZSBX
ZWFrSlNDb25zdGFudDoKICAgICAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC04MDUsMTEgKzgwNywyMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIHJldHVybiAobV9mbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0SW50MzI7
CiAgICAgfQogICAgIAorICAgIGJvb2wgaGFzSW50NTJSZXN1bHQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRJbnQ1MjsKKyAg
ICB9CisgICAgCiAgICAgYm9vbCBoYXNOdW1iZXJSZXN1bHQoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHROdW1iZXI7CiAgICAg
fQogICAgIAorICAgIGJvb2wgaGFzRG91YmxlUmVzdWx0KCkKKyAgICB7CisgICAgICAgIHJldHVy
biAobV9mbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0RG91YmxlOworICAgIH0K
KyAgICAKICAgICBib29sIGhhc0pTUmVzdWx0KCkKICAgICB7CiAgICAgICAgIHJldHVybiAobV9m
bGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0SlM7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDE2Njk5NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDEwICszOCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAjZGVmaW5lIE5v
ZGVSZXN1bHRNYXNrICAgICAgICAgICAgICAgICAgIDB4MDAwNwogI2RlZmluZSBOb2RlUmVzdWx0
SlMgICAgICAgICAgICAgICAgICAgICAweDAwMDEKICNkZWZpbmUgTm9kZVJlc3VsdE51bWJlciAg
ICAgICAgICAgICAgICAgMHgwMDAyCi0jZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAgICAgICAg
ICAgICAgIDB4MDAwMwotI2RlZmluZSBOb2RlUmVzdWx0SW50NTIgICAgICAgICAgICAgICAgICAw
eDAwMDQKLSNkZWZpbmUgTm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAgICAgICAgMHgwMDA1Ci0j
ZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdlICAgICAgICAgICAgICAgIDB4MDAwNgorI2RlZmluZSBO
b2RlUmVzdWx0RG91YmxlICAgICAgICAgICAgICAgICAweDAwMDMKKyNkZWZpbmUgTm9kZVJlc3Vs
dEludDMyICAgICAgICAgICAgICAgICAgMHgwMDA0CisjZGVmaW5lIE5vZGVSZXN1bHRJbnQ1MiAg
ICAgICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAgICAg
ICAgICAgICAweDAwMDYKKyNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgICAgICAg
MHgwMDA3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogI2RlZmluZSBOb2RlTXVz
dEdlbmVyYXRlICAgICAgICAgICAgICAgICAweDAwMDggLy8gc2V0IG9uIG5vZGVzIHRoYXQgaGF2
ZSBzaWRlIGVmZmVjdHMsIGFuZCBtYXkgbm90IHRyaXZpYWxseSBiZSByZW1vdmVkIGJ5IERDRS4K
ICNkZWZpbmUgTm9kZUhhc1ZhckFyZ3MgICAgICAgICAgICAgICAgICAgMHgwMDEwCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNjY5OTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDYgKzM3LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAv
KiBBIGNvbnN0YW50IGluIHRoZSBDb2RlQmxvY2sncyBjb25zdGFudCBwb29sLiAqL1wKICAgICBt
YWNybyhKU0NvbnN0YW50LCBOb2RlUmVzdWx0SlMgfCBOb2RlRG9lc05vdEV4aXQpIFwKICAgICBc
CisgICAgLyogQ29uc3RhbnRzIHdpdGggc3BlY2lmaWMgcmVwcmVzZW50YXRpb25zLiAqL1wKKyAg
ICBtYWNybyhEb3VibGVDb25zdGFudCwgTm9kZVJlc3VsdERvdWJsZSB8IE5vZGVEb2VzTm90RXhp
dCkgXAorICAgIG1hY3JvKEludDUyQ29uc3RhbnQsIE5vZGVSZXN1bHRJbnQ1MiB8IE5vZGVEb2Vz
Tm90RXhpdCkgXAorICAgIFwKICAgICAvKiBBIGNvbnN0YW50IG5vdCBpbiB0aGUgQ29kZUJsb2Nr
J3MgY29uc3RhbnQgcG9vbC4gVXNlcyBnZXQgcGF0Y2hlZCB0byBqdW1wcyB0aGF0IGV4aXQgdGhl
ICovXAogICAgIC8qIGNvZGUgYmxvY2suICovXAogICAgIG1hY3JvKFdlYWtKU0NvbnN0YW50LCBO
b2RlUmVzdWx0SlMgfCBOb2RlRG9lc05vdEV4aXQpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVXNlS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVXNlS2luZC5oCShyZXZpc2lvbiAxNjY5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1VzZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsMTIgQEAg
ZW51bSBVc2VLaW5kIHsKICAgICBJbnQzMlVzZSwKICAgICBLbm93bkludDMyVXNlLAogICAgIE1h
Y2hpbmVJbnRVc2UsCisgICAgSW50NTJSZXBVc2UsCiAgICAgUmVhbE51bWJlclVzZSwKICAgICBO
dW1iZXJVc2UsCiAgICAgS25vd25OdW1iZXJVc2UsCisgICAgRG91YmxlUmVwVXNlLAorICAgIERv
dWJsZVJlcFJlYWxVc2UsCiAgICAgQm9vbGVhblVzZSwKICAgICBDZWxsVXNlLAogICAgIEtub3du
Q2VsbFVzZSwKQEAgLTY5LDExICs3MiwxNyBAQCBBTFdBWVNfSU5MSU5FIFNwZWN1bGF0ZWRUeXBl
IHR5cGVGaWx0ZXJGCiAgICAgICAgIHJldHVybiBTcGVjSW50MzI7CiAgICAgY2FzZSBNYWNoaW5l
SW50VXNlOgogICAgICAgICByZXR1cm4gU3BlY01hY2hpbmVJbnQ7CisgICAgY2FzZSBJbnQ1MlJl
cFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNJbnQ1MjsKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6
CiAgICAgICAgIHJldHVybiBTcGVjRnVsbFJlYWxOdW1iZXI7CiAgICAgY2FzZSBOdW1iZXJVc2U6
CiAgICAgY2FzZSBLbm93bk51bWJlclVzZToKICAgICAgICAgcmV0dXJuIFNwZWNGdWxsTnVtYmVy
OworICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICByZXR1cm4gU3BlY0RvdWJsZTsKKyAg
ICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgICAgIHJldHVybiBTcGVjRG91YmxlUmVhbDsK
ICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIHJldHVybiBTcGVjQm9vbGVhbjsKICAgICBj
YXNlIENlbGxVc2U6CkBAIC0xMTYsNiArMTI1LDggQEAgQUxXQVlTX0lOTElORSBib29sIHNob3Vs
ZE5vdEhhdmVUeXBlQ2hlYwogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CiAgICAgY2FzZSBLbm93
bkNlbGxVc2U6CiAgICAgY2FzZSBLbm93blN0cmluZ1VzZToKKyAgICBjYXNlIEludDUyUmVwVXNl
OgorICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZh
dWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzYsNiArMTQ3LDkgQEAgQUxXQVlTX0lO
TElORSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQgawogICAgIGNhc2UgUmVhbE51bWJlclVzZToK
ICAgICBjYXNlIE51bWJlclVzZToKICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgorICAgIGNhc2Ug
SW50NTJSZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBS
ZWFsVXNlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xNDUsOSArMTU5LDggQEAgQUxXQVlTX0lOTElORSBib29sIGlzTnVtZXJp
Y2FsKFVzZUtpbmQgawogQUxXQVlTX0lOTElORSBib29sIGlzRG91YmxlKFVzZUtpbmQga2luZCkK
IHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIFJlYWxOdW1iZXJVc2U6Ci0gICAgY2Fz
ZSBOdW1iZXJVc2U6Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKKyAgICBjYXNlIERvdWJsZVJl
cFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAxNjY5OTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
MTUsNiArMTE1LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgbV9teVJlZkNvdW50cy5maW5kKGVkZ2Uubm9kZSgpKS0+dmFsdWUrKzsKICAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdl
KSwgZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkgPT0gKGVkZ2UudXNlS2luZCgpID09IERvdWJsZVJl
cFVzZSB8fCBlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBSZWFsVXNlKSk7CisgICAgICAgICAg
ICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+aGFzSW50NTJSZXN1bHQoKSA9
PSAoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEluIFNTQSwgYWxsIGVkZ2VzIG11c3QgaGFzUmVzdWx0KCku
CiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhh
c1Jlc3VsdCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNjY5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDcgKzE4
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgIExUeXBlIHR5cGU7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5mbGFncygp
ICYgTm9kZVJlc3VsdE1hc2spIHsKLSAgICAgICAgICAgICAgICBjYXNlIE5vZGVSZXN1bHROdW1i
ZXI6CisgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0RG91YmxlOgogICAgICAgICAgICAg
ICAgICAgICB0eXBlID0gbV9vdXQuZG91YmxlVHlwZTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6CkBAIC03MTksNyArNzE5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHNvdXJjZSA9IG1fcGhpcy5nZXQobV9ub2Rl
KTsKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5mbGFncygpICYgTm9kZVJlc3Vs
dE1hc2spIHsKLSAgICAgICAgY2FzZSBOb2RlUmVzdWx0TnVtYmVyOgorICAgICAgICBjYXNlIE5v
ZGVSZXN1bHREb3VibGU6CiAgICAgICAgICAgICBzZXREb3VibGUobV9vdXQuZ2V0KHNvdXJjZSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229208</attachid>
            <date>2014-04-12 11:52:17 -0700</date>
            <delta_ts>2014-04-12 12:54:52 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>18492</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2
aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDggKzEyMywxMCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICBlbHNlIGlm
IChub2RlQ2FuU3BlY3VsYXRlSW50MzIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAg
ICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKLSAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG5vZGUtPnNl
dEFyaXRoTW9kZShBcml0aDo6RG9PdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0
UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMTM1LDEwICsxMzcsMTEgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXJFeHBlY3RpbmdEZWZpbmVkKG5vZGUtPmNoaWxk
MSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRn
ZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERv
dWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91
YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3Ao
QXJpdGhBZGQpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5l
cmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1
bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKQEAgLTE3Nyw4ICsxODAsOSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEFyaXRoU3ViOiB7CiAgICAgICAgICAgICBpZiAoYXR0ZW1wdFRvTWFrZUludGVnZXJBZGQo
bm9kZSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJl
clVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjAxLDcgKzIwNSw4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0
aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIyNiw4ICsyMzEsOSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6
OkNoZWNrT3ZlcmZsb3dBbmROZWdhdGl2ZVplcm8pOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
IG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKQEAgLTI0NiwyNCArMjUyLDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3dBbmROZWdh
dGl2ZVplcm8pOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKIAogICAgICAg
ICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gcmVmJ2luZyBvbiB0aGUgY2hpbGRyZW4g
YmVjYXVzZSB3ZSdyZSBzdGVhbGluZyB0aGVtIGZyb20KICAgICAgICAgICAgICAgICAvLyB0aGUg
b3JpZ2luYWwgZGl2aXNpb24uCiAgICAgICAgICAgICAgICAgTm9kZSogbmV3RGl2aXNpb24gPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5C
bG9jaywgU3BlY0RvdWJsZSwgKm5vZGUpOworICAgICAgICAgICAgICAgIG5ld0RpdmlzaW9uLT5z
ZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0T3AoRG91YmxlQXNJbnQzMik7Ci0gICAgICAgICAgICAgICAgbm9kZS0+
Y2hpbGRyZW4uaW5pdGlhbGl6ZShFZGdlKG5ld0RpdmlzaW9uLCBLbm93bk51bWJlclVzZSksIEVk
Z2UoKSwgRWRnZSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5pbml0aWFsaXpl
KEVkZ2UobmV3RGl2aXNpb24sIERvdWJsZVJlcFVzZSksIEVkZ2UoKSwgRWRnZSgpKTsKICAgICAg
ICAgICAgICAgICBpZiAoYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhO
b2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0
aDo6Q2hlY2tPdmVyZmxvdyk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3dBbmROZWdhdGl2ZVpl
cm8pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
Zml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8
TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJl
cFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0
RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAg
LTI3NSw4ICsyODMsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJV
c2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
Zml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVk
Z2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRS
ZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCkBAIC0yODYsMTQgKzI5NSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEFyaXRoU3FydDoKICAgICAgICAgY2FzZSBBcml0aFNpbjoKICAgICAgICAgY2FzZSBBcml0aENv
czogewotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0zMDUsNyArMzE2LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQz
MigpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1i
ZXIoKSkKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3Ry
aW5nKCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzQyLDggKzM1Myw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6
c2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQy
KCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZUNsb2JiZXJzV29ybGQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQpAQCAtNDA2LDggKzQxNyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVy
KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAg
ICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1
bGF0ZVN0cmluZ0lkZW50KCkpIHsKQEAgLTUwMCw3ICs1MTEsOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgeworICAgICAgICAgICAgYXJyYXlN
b2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CisgICAgICAgICAgICBzd2l0Y2ggKGFycmF5TW9kZS50
eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnM6
CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpVbnByb2ZpbGVkOgogICAgICAgICAgICAgY2FzZSBB
cnJheTo6VW5kZWNpZGVkOgpAQCAtNTE5LDYgKzUzMSwyNCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgICAgICBz
d2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJs
ZToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKKyAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkZsb2F0NjRBcnJheToKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQo
Tm9kZVJlc3VsdERvdWJsZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJBcnJheToKKyAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQorICAgICAgICAgICAgICAg
ICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91Ymxl
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTU2NSw3ICs1OTUsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KGNoaWxkMik7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxSZWFsTnVtYmVy
VXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwUmVhbFVzZT4o
Y2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6
OkludDhBcnJheToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6CkBAIC01ODEs
MTMgKzYxMSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkMy0+
c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQogICAgICAgICAgICAgICAgICAgICBmaXhFZGdl
PE1hY2hpbmVJbnRVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4oY2hpbGQzKTsKKyAgICAgICAgICAgICAgICAg
ICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6CiAgICAgICAgICAgICBjYXNl
IEFycmF5OjpGbG9hdDY0QXJyYXk6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxV
c2U+KGNoaWxkMSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4oY2hpbGQzKTsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAgICAgICBjYXNl
IEFycmF5OjpBcnJheVN0b3JhZ2U6CkBAIC02MjksNyArNjU5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAg
ICAgICAgZml4RWRnZTxSZWFsTnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxEb3VibGVSZXBSZWFsVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAg
ICAgICAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgpAQCAtNjYyLDcgKzY5Miw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlSW50MzIoKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hp
bGQxKCkpOwogCiAgICAgICAgICAgICBOb2RlKiBsb2dpY2FsTm90ID0gbm9kZS0+Y2hpbGQxKCku
bm9kZSgpOwogICAgICAgICAgICAgaWYgKGxvZ2ljYWxOb3QtPm9wKCkgPT0gTG9naWNhbE5vdCkg
ewpAQCAtNzU5LDcgKzc4OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBvcGVyYW5kSW5kZXggPSAwOyBvcGVyYW5kSW5kZXggPCBub2RlLT5u
dW1DaGlsZHJlbigpOyArK29wZXJhbmRJbmRleCkKLSAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxSZWFsTnVtYmVyVXNlPihtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGls
ZCgpICsgb3BlcmFuZEluZGV4XSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91Ymxl
UmVwUmVhbFVzZT4obV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW25vZGUtPmZpcnN0Q2hpbGQoKSAr
IG9wZXJhbmRJbmRleF0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGNhc2UgQUxMX0FS
UkFZX1NUT1JBR0VfSU5ERVhJTkdfVFlQRVM6CkBAIC0xMzI3LDcgKzEzNTcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CkBAIC0xNDY2LDcgKzE0OTYsOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdl
SXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIE51bWJlclVzZToKLSAgICAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgorICAgICAgICBjYXNl
IERvdWJsZVJlcFVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgogICAgICAgICAg
ICAgaWYgKHZhcmlhYmxlLT5kb3VibGVGb3JtYXRTdGF0ZSgpID09IFVzaW5nRG91YmxlRm9ybWF0
KQogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1l
cmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTUy
MCw3ICsxNTUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0
ZU1hY2hpbmVJbnQoKSkKICAgICAgICAgICAgIHVzZUtpbmQgPSBNYWNoaW5lSW50VXNlOwogICAg
ICAgICBlbHNlIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkKLSAgICAgICAgICAg
IHVzZUtpbmQgPSBOdW1iZXJVc2U7CisgICAgICAgICAgICB1c2VLaW5kID0gRG91YmxlUmVwVXNl
OwogICAgICAgICBlbHNlIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpCiAgICAg
ICAgICAgICB1c2VLaW5kID0gQm9vbGVhblVzZTsKICAgICAgICAgZWxzZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMTY3MTgyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw3ICs2Miw3IEBAIGlubGluZSBOb2RlRmxhZ3MgcmVzdWx0Rm9yKEZsdXNoRm9y
bWF0IGYKICAgICBjYXNlIEZsdXNoZWRJbnQ1MjoKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRJ
bnQ1MjsKICAgICBjYXNlIEZsdXNoZWREb3VibGU6Ci0gICAgICAgIHJldHVybiBOb2RlUmVzdWx0
TnVtYmVyOworICAgICAgICByZXR1cm4gTm9kZVJlc3VsdERvdWJsZTsKICAgICBjYXNlIEZsdXNo
ZWRCb29sZWFuOgogICAgICAgICByZXR1cm4gTm9kZVJlc3VsdEJvb2xlYW47CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE2NzE4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUs
NiArMzI1LDEzIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIGZpbHRlckZsYWdzKH5m
bGFncyk7CiAgICAgfQogICAgIAorICAgIHZvaWQgc2V0UmVzdWx0KE5vZGVGbGFncyByZXN1bHQp
CisgICAgeworICAgICAgICBBU1NFUlQoIShyZXN1bHQgJiB+Tm9kZVJlc3VsdE1hc2spKTsKKyAg
ICAgICAgY2xlYXJGbGFncyhOb2RlUmVzdWx0TWFzayk7CisgICAgICAgIG1lcmdlRmxhZ3MocmVz
dWx0KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBzZXRPcEFuZERlZmF1bHRGbGFncyhOb2RlVHlw
ZSBvcCkKICAgICB7CiAgICAgICAgIG1fb3AgPSBvcDsKQEAgLTM4NSw2ICszOTIsOCBAQCBzdHJ1
Y3QgTm9kZSB7CiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBK
U0NvbnN0YW50OgorICAgICAgICBjYXNlIERvdWJsZUNvbnN0YW50OgorICAgICAgICBjYXNlIElu
dDUyQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgICAgIGNhc2Ug
UGhhbnRvbUFyZ3VtZW50czoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODA1LDExICs4
MTQsMjEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVz
dWx0TWFzaykgPT0gTm9kZVJlc3VsdEludDMyOwogICAgIH0KICAgICAKKyAgICBib29sIGhhc0lu
dDUyUmVzdWx0KCkKKyAgICB7CisgICAgICAgIHJldHVybiAobV9mbGFncyAmIE5vZGVSZXN1bHRN
YXNrKSA9PSBOb2RlUmVzdWx0SW50NTI7CisgICAgfQorICAgIAogICAgIGJvb2wgaGFzTnVtYmVy
UmVzdWx0KCkKICAgICB7CiAgICAgICAgIHJldHVybiAobV9mbGFncyAmIE5vZGVSZXN1bHRNYXNr
KSA9PSBOb2RlUmVzdWx0TnVtYmVyOwogICAgIH0KICAgICAKKyAgICBib29sIGhhc0RvdWJsZVJl
c3VsdCgpCisgICAgeworICAgICAgICByZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykg
PT0gTm9kZVJlc3VsdERvdWJsZTsKKyAgICB9CisgICAgCiAgICAgYm9vbCBoYXNKU1Jlc3VsdCgp
CiAgICAgewogICAgICAgICByZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9k
ZVJlc3VsdEpTOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5o
CShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVG
bGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogI2RlZmluZSBOb2RlUmVzdWx0TWFzayAgICAgICAgICAgICAgICAg
ICAweDAwMDcKICNkZWZpbmUgTm9kZVJlc3VsdEpTICAgICAgICAgICAgICAgICAgICAgMHgwMDAx
CiAjZGVmaW5lIE5vZGVSZXN1bHROdW1iZXIgICAgICAgICAgICAgICAgIDB4MDAwMgotI2RlZmlu
ZSBOb2RlUmVzdWx0SW50MzIgICAgICAgICAgICAgICAgICAweDAwMDMKLSNkZWZpbmUgTm9kZVJl
c3VsdEludDUyICAgICAgICAgICAgICAgICAgMHgwMDA0Ci0jZGVmaW5lIE5vZGVSZXN1bHRCb29s
ZWFuICAgICAgICAgICAgICAgIDB4MDAwNQotI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAg
ICAgICAgICAgICAweDAwMDYKKyNkZWZpbmUgTm9kZVJlc3VsdERvdWJsZSAgICAgICAgICAgICAg
ICAgMHgwMDAzCisjZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAgICAgICAgICAgICAgIDB4MDAw
NAorI2RlZmluZSBOb2RlUmVzdWx0SW50NTIgICAgICAgICAgICAgICAgICAweDAwMDUKKyNkZWZp
bmUgTm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAgICAgICAgMHgwMDA2CisjZGVmaW5lIE5vZGVS
ZXN1bHRTdG9yYWdlICAgICAgICAgICAgICAgIDB4MDAwNwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKICNkZWZpbmUgTm9kZU11c3RHZW5lcmF0ZSAgICAgICAgICAgICAgICAgMHgw
MDA4IC8vIHNldCBvbiBub2RlcyB0aGF0IGhhdmUgc2lkZSBlZmZlY3RzLCBhbmQgbWF5IG5vdCB0
cml2aWFsbHkgYmUgcmVtb3ZlZCBieSBEQ0UuCiAjZGVmaW5lIE5vZGVIYXNWYXJBcmdzICAgICAg
ICAgICAgICAgICAgIDB4MDAxMApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogQSBjb25zdGFudCBpbiB0aGUgQ29kZUJsb2Nr
J3MgY29uc3RhbnQgcG9vbC4gKi9cCiAgICAgbWFjcm8oSlNDb25zdGFudCwgTm9kZVJlc3VsdEpT
IHwgTm9kZURvZXNOb3RFeGl0KSBcCiAgICAgXAorICAgIC8qIENvbnN0YW50cyB3aXRoIHNwZWNp
ZmljIHJlcHJlc2VudGF0aW9ucy4gKi9cCisgICAgbWFjcm8oRG91YmxlQ29uc3RhbnQsIE5vZGVS
ZXN1bHREb3VibGUgfCBOb2RlRG9lc05vdEV4aXQpIFwKKyAgICBtYWNybyhJbnQ1MkNvbnN0YW50
LCBOb2RlUmVzdWx0SW50NTIgfCBOb2RlRG9lc05vdEV4aXQpIFwKKyAgICBcCiAgICAgLyogQSBj
b25zdGFudCBub3QgaW4gdGhlIENvZGVCbG9jaydzIGNvbnN0YW50IHBvb2wuIFVzZXMgZ2V0IHBh
dGNoZWQgdG8ganVtcHMgdGhhdCBleGl0IHRoZSAqL1wKICAgICAvKiBjb2RlIGJsb2NrLiAqL1wK
ICAgICBtYWNybyhXZWFrSlNDb25zdGFudCwgTm9kZVJlc3VsdEpTIHwgTm9kZURvZXNOb3RFeGl0
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkocmV2aXNpb24g
MTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDkgKzM4LDEwIEBAIGVudW0gVXNlS2luZCB7CiAgICAgSW50MzJVc2Us
CiAgICAgS25vd25JbnQzMlVzZSwKICAgICBNYWNoaW5lSW50VXNlLAotICAgIFJlYWxOdW1iZXJV
c2UsCisgICAgSW50NTJSZXBVc2UsCiAgICAgTnVtYmVyVXNlLAotICAgIEtub3duTnVtYmVyVXNl
LAorICAgIERvdWJsZVJlcFVzZSwKKyAgICBEb3VibGVSZXBSZWFsVXNlLAogICAgIEJvb2xlYW5V
c2UsCiAgICAgQ2VsbFVzZSwKICAgICBLbm93bkNlbGxVc2UsCkBAIC02OSwxMSArNzAsMTcgQEAg
QUxXQVlTX0lOTElORSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRgogICAgICAgICByZXR1cm4g
U3BlY0ludDMyOwogICAgIGNhc2UgTWFjaGluZUludFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNN
YWNoaW5lSW50OworICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIHJldHVybiBTcGVjSW50
NTI7CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgICAgICByZXR1cm4gU3BlY0Z1bGxSZWFs
TnVtYmVyOwogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CiAg
ICAgICAgIHJldHVybiBTcGVjRnVsbE51bWJlcjsKKyAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAg
ICAgICAgcmV0dXJuIFNwZWNEb3VibGU7CisgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgorICAg
ICAgICByZXR1cm4gU3BlY0RvdWJsZVJlYWw7CiAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAg
ICByZXR1cm4gU3BlY0Jvb2xlYW47CiAgICAgY2FzZSBDZWxsVXNlOgpAQCAtMTE2LDYgKzEyMyw4
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBzaG91bGROb3RIYXZlVHlwZUNoZWMKICAgICBjYXNlIEtu
b3duTnVtYmVyVXNlOgogICAgIGNhc2UgS25vd25DZWxsVXNlOgogICAgIGNhc2UgS25vd25TdHJp
bmdVc2U6CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFVzZToKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTM2LDYgKzE0NSw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5k
IGsKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgY2Fz
ZSBLbm93bk51bWJlclVzZToKKyAgICBjYXNlIEludDUyUmVwVXNlOgorICAgIGNhc2UgRG91Ymxl
UmVwVXNlOgorICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ1LDkgKzE1Nyw4IEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGsKIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc0RvdWJsZShVc2VLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAg
Y2FzZSBSZWFsTnVtYmVyVXNlOgotICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgS25vd25O
dW1iZXJVc2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBSZWFs
VXNlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4g
ZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAko
cmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE1LDYgKzExNSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG1fbXlSZWZDb3VudHMuZmluZChl
ZGdlLm5vZGUoKSktPnZhbHVlKys7CiAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpID09
IChlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UgfHwgZWRnZS51c2VLaW5kKCkgPT0gRG91
YmxlUmVwUmVhbFVzZSkpOworICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRn
ZSksIGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkgPT0gKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVw
VXNlKSk7CisgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAobV9n
cmFwaC5tX2Zvcm0gPT0gU1NBKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiBTU0Es
IGFsbCBlZGdlcyBtdXN0IGhhc1Jlc3VsdCgpLgogICAgICAgICAgICAgICAgICAgICAgICAgVkFM
SURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdlLT5oYXNSZXN1bHQoKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTY3
MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4Niw3ICsxODYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBMVHlwZSB0eXBlOwogICAgICAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVSZXN1bHRNYXNrKSB7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBOb2RlUmVzdWx0TnVtYmVyOgorICAgICAgICAgICAgICAgIGNhc2UgTm9k
ZVJlc3VsdERvdWJsZToKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IG1fb3V0LmRvdWJsZVR5
cGU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgTm9k
ZVJlc3VsdEludDMyOgpAQCAtNzE5LDcgKzcxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1
ZSBzb3VyY2UgPSBtX3BoaXMuZ2V0KG1fbm9kZSk7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2gg
KG1fbm9kZS0+ZmxhZ3MoKSAmIE5vZGVSZXN1bHRNYXNrKSB7Ci0gICAgICAgIGNhc2UgTm9kZVJl
c3VsdE51bWJlcjoKKyAgICAgICAgY2FzZSBOb2RlUmVzdWx0RG91YmxlOgogICAgICAgICAgICAg
c2V0RG91YmxlKG1fb3V0LmdldChzb3VyY2UpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIE5vZGVSZXN1bHRJbnQzMjoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229210</attachid>
            <date>2014-04-12 12:54:52 -0700</date>
            <delta_ts>2014-04-12 16:16:09 -0700</delta_ts>
            <desc>even more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>30589</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2
aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDggKzEyMywxMCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICBlbHNlIGlm
IChub2RlQ2FuU3BlY3VsYXRlSW50MzIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAg
ICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKLSAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG5vZGUtPnNl
dEFyaXRoTW9kZShBcml0aDo6RG9PdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0
UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMTM1LDEwICsxMzcsMTEgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXJFeHBlY3RpbmdEZWZpbmVkKG5vZGUtPmNoaWxk
MSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRn
ZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERv
dWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91
YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3Ao
QXJpdGhBZGQpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5l
cmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1
bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKQEAgLTE3Nyw4ICsxODAsOSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEFyaXRoU3ViOiB7CiAgICAgICAgICAgICBpZiAoYXR0ZW1wdFRvTWFrZUludGVnZXJBZGQo
bm9kZSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJl
clVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMTk0LDE0ICsxOTgs
MTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLm5lZ2F0ZVNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9k
ZSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5v
ZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0
aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93QW5k
TmVnYXRpdmVaZXJvKTsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3Vs
dEludDUyKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhF
ZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0
UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgICAgIApAQCAtMjE4LDE2ICsyMjQsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX2dyYXBoLm11bFNo
b3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGlmIChieXRlY29k
ZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9k
ZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CisgICAgICAgICAgICAgICAg
bm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIApAQCAtMjQ2LDI0ICsyNTQsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5l
Z2F0aXZlWmVybyk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogCiAgICAg
ICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBkbyByZWYnaW5nIG9uIHRoZSBjaGlsZHJl
biBiZWNhdXNlIHdlJ3JlIHN0ZWFsaW5nIHRoZW0gZnJvbQogICAgICAgICAgICAgICAgIC8vIHRo
ZSBvcmlnaW5hbCBkaXZpc2lvbi4KICAgICAgICAgICAgICAgICBOb2RlKiBuZXdEaXZpc2lvbiA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJ
bkJsb2NrLCBTcGVjRG91YmxlLCAqbm9kZSk7CisgICAgICAgICAgICAgICAgbmV3RGl2aXNpb24t
PnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBub2RlLT5zZXRPcChEb3VibGVBc0ludDMyKTsKLSAgICAgICAgICAgICAgICBub2Rl
LT5jaGlsZHJlbi5pbml0aWFsaXplKEVkZ2UobmV3RGl2aXNpb24sIEtub3duTnVtYmVyVXNlKSwg
RWRnZSgpLCBFZGdlKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLmluaXRpYWxp
emUoRWRnZShuZXdEaXZpc2lvbiwgRG91YmxlUmVwVXNlKSwgRWRnZSgpLCBFZGdlKCkpOwogICAg
ICAgICAgICAgICAgIGlmIChieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0
aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFy
aXRoOjpDaGVja092ZXJmbG93KTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZl
WmVybyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRn
ZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91Ymxl
UmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVz
ZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1
bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApA
QCAtMjc1LDggKzI4NSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4
RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNl
dFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKQEAgLTI4NiwxNCArMjk3LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgQXJpdGhTcXJ0OgogICAgICAgICBjYXNlIEFyaXRoU2luOgogICAgICAgICBjYXNlIEFyaXRo
Q29zOiB7Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTMwNSw3ICszMTgsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUlu
dDMyKCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51
bWJlcigpKQotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVT
dHJpbmcoKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMzYsMTQgKzM0OSwxNCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkKICAgICAgICAgICAg
ICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDUyUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJG
bGFncyhOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZU51bWJlcihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUo
KSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9i
YmVyc1dvcmxkKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQw
MSwxMyArNDE0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
ZW5hYmxlSW50NTIoKQogICAgICAgICAgICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1h
Y2hpbmVJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2Rl
OjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGls
ZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxk
MigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSAmJiBub2Rl
LT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkgewpAQCAtNTAwLDcgKzUx
Myw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgp
KSB7CisgICAgICAgICAgICBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAg
ICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBBcnJheTo6
U2VsZWN0VXNpbmdQcmVkaWN0aW9uczoKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVucHJvZmls
ZWQ6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpVbmRlY2lkZWQ6CkBAIC01MTksNiArNTMzLDI0
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgeworICAgICAg
ICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgorICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQz
MkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5OgorICAgICAgICAg
ICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQz
MkFycmF5OgorICAgICAgICAgICAgICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KCkpCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50
NTIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0
UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIApAQCAtNTU4LDE0ICs1OTAsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihjaGlsZDIpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMy0+cHJlZGljdGlvbigpICYgU3Bl
Y0ludDUyKQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KGNoaWxk
Myk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGNoaWxkMyk7CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNl
PihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJh
eTo6RG91YmxlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEp
OwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7Ci0gICAgICAgICAg
ICAgICAgZml4RWRnZTxSZWFsTnVtYmVyVXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8RG91YmxlUmVwUmVhbFVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDhBcnJheToKICAgICAgICAgICAgIGNhc2UgQXJy
YXk6OkludDE2QXJyYXk6CkBAIC01NzksMTUgKzYxMSwxNSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGlmIChjaGlsZDMtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoY2hpbGQzLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpCi0gICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4oY2hpbGQzKTsKKyAgICAgICAgICAgICAgICAgICAg
Zml4RWRnZTxJbnQ1MlJlcFVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihjaGlsZDMpOworICAgICAgICAgICAg
ICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKICAgICAgICAgICAg
IGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3du
Q2VsbFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGls
ZDIpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihjaGlsZDMpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKICAgICAgICAgICAg
IGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZToKQEAgLTYyOSw3ICs2NjEsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKLSAgICAg
ICAgICAgICAgICBmaXhFZGdlPFJlYWxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFJlYWxVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6
CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CkBAIC02NjIsNyArNjk0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVJbnQzMigpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVOdW1iZXIoKSkKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2Rl
LT5jaGlsZDEoKSk7CiAKICAgICAgICAgICAgIE5vZGUqIGxvZ2ljYWxOb3QgPSBub2RlLT5jaGls
ZDEoKS5ub2RlKCk7CiAgICAgICAgICAgICBpZiAobG9naWNhbE5vdC0+b3AoKSA9PSBMb2dpY2Fs
Tm90KSB7CkBAIC03NTksNyArNzkxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIG9wZXJhbmRJbmRleCA9IDA7IG9wZXJhbmRJbmRleCA8IG5v
ZGUtPm51bUNoaWxkcmVuKCk7ICsrb3BlcmFuZEluZGV4KQotICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPFJlYWxOdW1iZXJVc2U+KG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJz
dENoaWxkKCkgKyBvcGVyYW5kSW5kZXhdKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxE
b3VibGVSZXBSZWFsVXNlPihtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGls
ZCgpICsgb3BlcmFuZEluZGV4XSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgY2FzZSBB
TExfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUzoKQEAgLTEzMjcsMTMgKzEzNTksMTMgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEZsdXNoZWREb3VibGU6Ci0gICAgICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgICAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50NTI6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxN
YWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKQEAgLTE0NjYsNyArMTQ5OCw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1By
b2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
TnVtYmVyVXNlOgotICAgICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91
YmxlUmVwVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CiAgICAgICAgICAgICBp
ZiAodmFyaWFibGUtPmRvdWJsZUZvcm1hdFN0YXRlKCkgPT0gVXNpbmdEb3VibGVGb3JtYXQpCiAg
ICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJ
c1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDc1LDcg
KzE1MDgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHx8IGlzQm9vbGVhblNwZWN1bGF0
aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJp
bGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAg
IGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICBpZiAoaXNNYWNoaW5lSW50U3BlY3VsYXRp
b24odmFyaWFibGUtPnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmls
aXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTE4LDkgKzE1NTEsOSBAQCBwcml2YXRlOgogICAgICAg
ICAKICAgICAgICAgVXNlS2luZCB1c2VLaW5kOwogICAgICAgICBpZiAobm9kZS0+c2hvdWxkU3Bl
Y3VsYXRlTWFjaGluZUludCgpKQotICAgICAgICAgICAgdXNlS2luZCA9IE1hY2hpbmVJbnRVc2U7
CisgICAgICAgICAgICB1c2VLaW5kID0gSW50NTJSZXBVc2U7CiAgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKQotICAgICAgICAgICAgdXNlS2luZCA9IE51bWJl
clVzZTsKKyAgICAgICAgICAgIHVzZUtpbmQgPSBEb3VibGVSZXBVc2U7CiAgICAgICAgIGVsc2Ug
aWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKSkKICAgICAgICAgICAgIHVzZUtpbmQg
PSBCb29sZWFuVXNlOwogICAgICAgICBlbHNlCkBAIC0xNTg4LDkgKzE2MjEsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3Bl
Y3VsYXRlTWFjaGluZUludChub2RlKSkgewotICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxk
MigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxv
dyk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTczNSw4NSArMTc2
OSw2OSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgQVNTRVJUKG5vZGUgPT0gbV9jdXJyZW50
Tm9kZSk7CiAgICAgICAgIAotICAgICAgICBpZiAoaXNEb3VibGUoZWRnZS51c2VLaW5kKCkpKSB7
Ci0gICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGlj
KCkpIHsKLSAgICAgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjSW50NTJBc0RvdWJsZSwgSW50MzJUb0RvdWJsZSwKLSAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+b3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBlZGdlLnNldE5vZGUocmVzdWx0KTsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoZWRnZS51c2VLaW5kKCkp
IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwUmVh
bFVzZTogeworICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKQorICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoZW5hYmxlSW50
NTIoKSAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpIHsKLSAgICAgICAgICAg
ICAgICAvLyBNYWtlIGFsbCBkb3VibGUgdXNlcyBvZiBpbnQ1MiB2YWx1ZXMgaGF2ZSBhbiBpbnRl
cm1lZGlhdGUgSW50NTJUb0RvdWJsZS4KLSAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciB0
aGUgc2FtZSByZWFzb24gYXMgSW50NTJUb1ZhbHVlIChzZWUgYmVsb3cpIGV4Y2VwdCB0aGF0Ci0g
ICAgICAgICAgICAgICAgLy8gSW50OFRvRG91YmxlIHdpbGwgY29udmVydCBpbnQ1MidzIHRoYXQg
Zml0IGluIGFuIGludDMyIGludG8gYSBkb3VibGUKLSAgICAgICAgICAgICAgICAvLyByYXRoZXIg
dGhhbiB0cnlpbmcgdG8gY3JlYXRlIGEgYm94ZWQgaW50MzIgbGlrZSBJbnQ1MlRvVmFsdWUgZG9l
cy4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20o
ZWRnZS5ub2RlKCkpOwotICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVj
SW50NTJBc0RvdWJsZSwgSW50NTJUb0RvdWJsZSwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+
b3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKLSAgICAgICAgICAgICAgICBl
ZGdlLnNldE5vZGUocmVzdWx0KTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOworCisgICAgICAgICAgICBOb2RlKiBy
ZXN1bHQ7CisgICAgICAgICAgICBpZiAoZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkgeworICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NTJBc0RvdWJsZSwgRG91YmxlUmVwLCBu
b2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIEludDUy
UmVwVXNlKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJ
bkJsb2NrLCBTcGVjRG91YmxlLCBEb3VibGVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAg
ICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7CiAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYmIGVkZ2UudXNl
S2luZCgpICE9IE1hY2hpbmVJbnRVc2UKLSAgICAgICAgICAgICYmIGVkZ2UtPnNob3VsZFNwZWN1
bGF0ZU1hY2hpbmVJbnQoKSAmJiAhZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkgewotICAg
ICAgICAgICAgLy8gV2UgbWFrZSBhbGwgbm9uLWludDUyIHVzZXMgb2YgaW50NTIgdmFsdWVzIGhh
dmUgYW4gaW50ZXJtZWRpYXRlIEludDUyVG9WYWx1ZQotICAgICAgICAgICAgLy8gbm9kZSB0byBl
bnN1cmUgdGhhdCB3ZSBoYW5kbGUgdGhpcyBwcm9wZXJseToKLSAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICAvLyBhOiBTb21lSW50NTIKLSAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEBhLCAu
Li4pCi0gICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgQGEpCi0gICAgICAgICAgICAvLyBkOiBB
cml0aEFkZChAYSwgLi4uKQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIFdpdGhvdXQg
YW4gaW50ZXJtZWRpYXRlIG5vZGUgYW5kIGp1c3QgbGFiZWxpbmcgdGhlIHVzZXMsIHdlIHdpbGwg
Z2V0OgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ1MgotICAgICAg
ICAgICAgLy8gYjogQXJpdGhBZGQoSW50NTI6QGEsIC4uLikKLSAgICAgICAgICAgIC8vIGM6IENh
bGwoLi4uLCBVbnR5cGVkOkBhKQotICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoSW50NTI6QGEs
IC4uLikKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBBbmQgbm93IHRoZSBjLT5VbnR5
cGVkOkBhIGVkZ2Ugd2lsbCBib3ggdGhlIHZhbHVlIG9mIEBhIGludG8gYSBkb3VibGUuIFRoaXMK
LSAgICAgICAgICAgIC8vIGlzIGJhZCwgYmVjYXVzZSBub3cgdGhlIGQtPkludDUyOkBhIGVkZ2Ug
d2lsbCBlaXRoZXIgaGF2ZSB0byBkbyBkb3VibGUtdG8taW50Ci0gICAgICAgICAgICAvLyBjb252
ZXJzaW9ucywgb3Igd2lsbCBoYXZlIHRvIE9TUiBleGl0IHVuY29uZGl0aW9uYWxseS4gQWx0ZXJu
YXRpdmVseSB3ZSBjb3VsZAotICAgICAgICAgICAgLy8gaGF2ZSB0aGUgYy0+VW50eXBlZDpAYSBl
ZGdlIGJveCB0aGUgdmFsdWUgYnkgY29weWluZyByYXRoZXIgdGhhbiBpbi1wbGFjZS4KLSAgICAg
ICAgICAgIC8vIEJ1dCB0aGVzZSBib3hpbmdzIGFyZSBhbHNvIGNvc3RseSBzbyB0aGlzIHdvdWxk
bid0IGJlIGdyZWF0LgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIFRoZSBzb2x1dGlv
biB3ZSB1c2UgaXMgdG8gYWx3YXlzIGhhdmUgbm9uLUludDUyIHVzZXMgb2YgcHJlZGljdGVkIElu
dDUyJ3MgdXNlCi0gICAgICAgICAgICAvLyBhbiBpbnRlcnZlbmluZyBJbnQ1MlRvVmFsdWUgbm9k
ZToKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBhOiBTb21lSW50NTIKLSAgICAgICAg
ICAgIC8vIGI6IEFyaXRoQWRkKEludDUyOkBhLCAuLi4pCi0gICAgICAgICAgICAvLyB4OiBJbnQ1
MlRvVmFsdWUoSW50NTI6QGEpCi0gICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgVW50eXBlZDpA
eCkKLSAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEludDUyOkBhLCAuLi4pCi0gICAgICAgICAg
ICAvLwotICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGV2ZW4gaWYgd2UgaGFkIG11bHRpcGxlIG5v
bi1pbnQ1MiB1c2VzIG9mIEBhLCB0aGUgbXVsdGlwbGUKLSAgICAgICAgICAgIC8vIEludDUyVG9W
YWx1ZSdzIHdvdWxkIGdldCBDU0UnZCB0b2dldGhlci4gU28gdGhlIGJveGluZyB3b3VsZCBvbmx5
IGhhcHBlbiBvbmNlLgotICAgICAgICAgICAgLy8gQXQgdGhlIHNhbWUgdGltZSwgQGEgd291bGQg
Y29udGludWUgdG8gYmUgcmVwcmVzZW50ZWQgYXMgYSBuYXRpdmUgaW50NTIuCi0gICAgICAgICAg
ICAvLwotICAgICAgICAgICAgLy8gQW4gYWx0ZXJuYXRpdmUgd291bGQgaGF2ZSBiZWVuIHRvIGlu
c2VydCBUb05hdGl2ZUludDUyIG5vZGVzIG9uIGludDUyIHVzZXMgb2YKLSAgICAgICAgICAgIC8v
IGludDUyJ3MuIFRoaXMgd291bGQgaGF2ZSBoYW5kbGVkIHRoZSBhYm92ZSBleGFtcGxlIGJ1dCB3
b3VsZCBmYWxsIG92ZXIgZm9yOgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIGE6IFNv
bWVJbnQ1MgotICAgICAgICAgICAgLy8gYjogQ2FsbCguLi4sIEBhKQotICAgICAgICAgICAgLy8g
YzogQXJpdGhBZGQoQGEsIC4uLikKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBCdXQg
dGhlIHNvbHV0aW9uIHdlIHVzZSBoYW5kbGVzIHRoZSBhYm92ZSBncmFjZWZ1bGx5LgorICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKKyAgICAgICAgICAgIGlmIChlZGdl
LT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgYWxsb3cgdGhpcy4gVGhhdCBt
YXkgY2hhbmdlLiBJdCB3b3VsZCBiZSBoYXJtbGVzcyB0byBhbGxvdyBpdAorICAgICAgICAgICAg
Ly8gYnV0IGl0J3MganVzdCB0aGF0IHJpZ2h0IG5vdywgaXQgd291bGQgbm90IGJlIHByb2ZpdGFi
bGUuIFNvIHRoZSBwcmVkaWN0aW9uCisgICAgICAgICAgICAvLyBwcm9wYWdhdG9yIHdpbGwgb25s
eSBjaG9vc2UgdG8gc3BlY3VsYXRlIEludDUyIGlmIHdlIGRvbid0IHRoaW5rIHRoYXQgdGhlIGlu
cHV0cworICAgICAgICAgICAgLy8gc2hvdWxkIGJlIGRvdWJsZS4KKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSk7CisgICAgICAgICAgICAKICAgICAg
ICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAg
ICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MiwgSW50NTJUb1ZhbHVlLAotICAgICAg
ICAgICAgICAgIG5vZGUtPm9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgVW50eXBlZFVzZSkpOwor
ICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NTIsIEludDUyUmVwLCBub2Rl
LT5vcmlnaW4sCisgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgSW50MzJVc2UpKTsK
KwogICAgICAgICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGRl
ZmF1bHQ6IHsKKyAgICAgICAgICAgIGlmICghZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkgJiYgIWVk
Z2UtPmhhc0ludDUyUmVzdWx0KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChlZGdlLT5o
YXNEb3VibGVSZXN1bHQoKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVj
RG91YmxlLCBWYWx1ZVJlcCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBFZGdl
KGVkZ2Uubm9kZSgpLCBEb3VibGVSZXBVc2UpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAg
ICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91Ymxl
LCBWYWx1ZVJlcCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uu
bm9kZSgpLCBJbnQ1MlJlcFVzZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBlZGdlLnNldE5vZGUocmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9IH0KICAgICB9CiAgICAgCiAgICAgdm9pZCBhZGRSZXF1aXJlZFBoYW50b20oTm9kZSogbm9k
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHJl
dmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3Jt
YXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBpbmxpbmUgTm9kZUZsYWdzIHJl
c3VsdEZvcihGbHVzaEZvcm1hdCBmCiAgICAgY2FzZSBGbHVzaGVkSW50NTI6CiAgICAgICAgIHJl
dHVybiBOb2RlUmVzdWx0SW50NTI7CiAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgotICAgICAgICBy
ZXR1cm4gTm9kZVJlc3VsdE51bWJlcjsKKyAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHREb3VibGU7
CiAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRCb29s
ZWFuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lv
biAxNjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSwxMyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVy
biBmaWx0ZXJGbGFncyh+ZmxhZ3MpOwogICAgIH0KICAgICAKKyAgICB2b2lkIHNldFJlc3VsdChO
b2RlRmxhZ3MgcmVzdWx0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEocmVzdWx0ICYgfk5vZGVS
ZXN1bHRNYXNrKSk7CisgICAgICAgIGNsZWFyRmxhZ3MoTm9kZVJlc3VsdE1hc2spOworICAgICAg
ICBtZXJnZUZsYWdzKHJlc3VsdCk7CisgICAgfQorICAgIAogICAgIHZvaWQgc2V0T3BBbmREZWZh
dWx0RmxhZ3MoTm9kZVR5cGUgb3ApCiAgICAgewogICAgICAgICBtX29wID0gb3A7CkBAIC0zODUs
NiArMzkyLDggQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7
CiAgICAgICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoK
KyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICBjYXNlIFdlYWtKU0NvbnN0YW50
OgogICAgICAgICBjYXNlIFBoYW50b21Bcmd1bWVudHM6CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTgwNSwxMSArODE0LDIxIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuICht
X2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRJbnQzMjsKICAgICB9CiAgICAg
CisgICAgYm9vbCBoYXNJbnQ1MlJlc3VsdCgpCisgICAgeworICAgICAgICByZXR1cm4gKG1fZmxh
Z3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdEludDUyOworICAgIH0KKyAgICAKICAg
ICBib29sIGhhc051bWJlclJlc3VsdCgpCiAgICAgewogICAgICAgICByZXR1cm4gKG1fZmxhZ3Mg
JiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdE51bWJlcjsKICAgICB9CiAgICAgCisgICAg
Ym9vbCBoYXNEb3VibGVSZXN1bHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChtX2ZsYWdzICYg
Tm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHREb3VibGU7CisgICAgfQorICAgIAogICAgIGJv
b2wgaGFzSlNSZXN1bHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIChtX2ZsYWdzICYgTm9kZVJl
c3VsdE1hc2spID09IE5vZGVSZXN1bHRKUzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZUZsYWdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVGbGFncy5jcHAJKHJldmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcs
OSBAQCB2b2lkIGR1bXBOb2RlRmxhZ3MoUHJpbnRTdHJlYW0mIGFjdHVhbE91CiAgICAgICAgIGNh
c2UgTm9kZVJlc3VsdE51bWJlcjoKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgIk51bWJl
ciIpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTm9kZVJlc3VsdE51bWJlcjoK
KyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgIkRvdWJsZSIpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgogICAgICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiSW50MzIiKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwx
MCArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogI2RlZmluZSBOb2Rl
UmVzdWx0TWFzayAgICAgICAgICAgICAgICAgICAweDAwMDcKICNkZWZpbmUgTm9kZVJlc3VsdEpT
ICAgICAgICAgICAgICAgICAgICAgMHgwMDAxCiAjZGVmaW5lIE5vZGVSZXN1bHROdW1iZXIgICAg
ICAgICAgICAgICAgIDB4MDAwMgotI2RlZmluZSBOb2RlUmVzdWx0SW50MzIgICAgICAgICAgICAg
ICAgICAweDAwMDMKLSNkZWZpbmUgTm9kZVJlc3VsdEludDUyICAgICAgICAgICAgICAgICAgMHgw
MDA0Ci0jZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAgICAgIDB4MDAwNQotI2Rl
ZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAgICAgICAweDAwMDYKKyNkZWZpbmUgTm9k
ZVJlc3VsdERvdWJsZSAgICAgICAgICAgICAgICAgMHgwMDAzCisjZGVmaW5lIE5vZGVSZXN1bHRJ
bnQzMiAgICAgICAgICAgICAgICAgIDB4MDAwNAorI2RlZmluZSBOb2RlUmVzdWx0SW50NTIgICAg
ICAgICAgICAgICAgICAweDAwMDUKKyNkZWZpbmUgTm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAg
ICAgICAgMHgwMDA2CisjZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdlICAgICAgICAgICAgICAgIDB4
MDAwNwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICNkZWZpbmUgTm9kZU11c3RH
ZW5lcmF0ZSAgICAgICAgICAgICAgICAgMHgwMDA4IC8vIHNldCBvbiBub2RlcyB0aGF0IGhhdmUg
c2lkZSBlZmZlY3RzLCBhbmQgbWF5IG5vdCB0cml2aWFsbHkgYmUgcmVtb3ZlZCBieSBEQ0UuCiAj
ZGVmaW5lIE5vZGVIYXNWYXJBcmdzICAgICAgICAgICAgICAgICAgIDB4MDAxMApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTY3MTgyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyog
QSBjb25zdGFudCBpbiB0aGUgQ29kZUJsb2NrJ3MgY29uc3RhbnQgcG9vbC4gKi9cCiAgICAgbWFj
cm8oSlNDb25zdGFudCwgTm9kZVJlc3VsdEpTIHwgTm9kZURvZXNOb3RFeGl0KSBcCiAgICAgXAor
ICAgIC8qIENvbnN0YW50cyB3aXRoIHNwZWNpZmljIHJlcHJlc2VudGF0aW9ucy4gKi9cCisgICAg
bWFjcm8oRG91YmxlQ29uc3RhbnQsIE5vZGVSZXN1bHREb3VibGUgfCBOb2RlRG9lc05vdEV4aXQp
IFwKKyAgICBtYWNybyhJbnQ1MkNvbnN0YW50LCBOb2RlUmVzdWx0SW50NTIgfCBOb2RlRG9lc05v
dEV4aXQpIFwKKyAgICBcCiAgICAgLyogQSBjb25zdGFudCBub3QgaW4gdGhlIENvZGVCbG9jaydz
IGNvbnN0YW50IHBvb2wuIFVzZXMgZ2V0IHBhdGNoZWQgdG8ganVtcHMgdGhhdCBleGl0IHRoZSAq
L1wKICAgICAvKiBjb2RlIGJsb2NrLiAqL1wKICAgICBtYWNybyhXZWFrSlNDb25zdGFudCwgTm9k
ZVJlc3VsdEpTIHwgTm9kZURvZXNOb3RFeGl0KSBcCkBAIC0xMDYsMTUgKzExMCwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogVXNlZCB0byBib3ggdGhlIHJlc3Vs
dCBvZiBVUlNoaWZ0IG5vZGVzIChyZXN1bHQgaGFzIHJhbmdlIDAuLjJeMzItMSkuICovXAogICAg
IG1hY3JvKFVJbnQzMlRvTnVtYmVyLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAgXAotICAgIC8q
IFVzZWQgdG8gY2FzdCBrbm93biBpbnRlZ2VycyB0byBkb3VibGVzLCBzbyBhcyB0byBzZXBhcmF0
ZSB0aGUgZG91YmxlIGZvcm0gKi9cCi0gICAgLyogb2YgdGhlIHZhbHVlIGZyb20gdGhlIGludGVn
ZXIgZm9ybS4gKi9cCi0gICAgbWFjcm8oSW50MzJUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlcikg
XAotICAgIC8qIFVzZWQgdG8gc3BlY3VsYXRlIHRoYXQgYSBkb3VibGUgdmFsdWUgaXMgYWN0dWFs
bHkgYW4gaW50ZWdlci4gKi9cCi0gICAgbWFjcm8oRG91YmxlQXNJbnQzMiwgTm9kZVJlc3VsdElu
dDMyKSBcCi0gICAgLyogVXNlZCB0byBzZXBhcmF0ZSByZXByZXNlbnRhdGlvbiBhbmQgcmVnaXN0
ZXIgYWxsb2NhdGlvbiBvZiBJbnQ1MidzIHJlcHJlc2VudGVkICovXAotICAgIC8qIGFzIHZhbHVl
cy4gKi9cCi0gICAgbWFjcm8oSW50NTJUb1ZhbHVlLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNy
byhJbnQ1MlRvRG91YmxlLCBOb2RlUmVzdWx0TnVtYmVyKSBcCisgICAgLyogQ2hhbmdlIHRoZSBy
ZXByZXNlbnRhdGlvbiBvZiBhIHZhbHVlLiAqL1wKKyAgICBtYWNybyhEb3VibGVSZXAsIE5vZGVS
ZXN1bHREb3VibGUpIFwKKyAgICBtYWNybyhJbnQ1MlJlcCwgTm9kZVJlc3VsdEludDUyKSBcCisg
ICAgbWFjcm8oVmFsdWVSZXAsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBOb2RlcyBm
b3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhBcml0aEFkZCwgTm9kZVJl
c3VsdE51bWJlcikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5k
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQu
Y3BwCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNyArNDYsMTcgQEAgdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAg
ICAgICAgb3V0LnByaW50KCJLbm93bkludDMyIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TWFjaGluZUludFVzZToKLSAgICAgICAgb3V0LnByaW50KCJNYWNoaW5lSW50Iik7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgb3V0LnByaW50KCJSZWFs
TnVtYmVyIik7CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgb3V0LnByaW50KCJJbnQ1
MlJlcCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgb3V0
LnByaW50KCJOdW1iZXIiKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBLbm93bk51bWJlclVz
ZToKLSAgICAgICAgb3V0LnByaW50KCJLbm93bk51bWJlciIpOworICAgIGNhc2UgRG91YmxlUmVw
VXNlOgorICAgICAgICBvdXQucHJpbnQoIkRvdWJsZVJlcCIpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgICAgIG91dC5wcmludCgiRG91YmxlUmVwUmVh
bCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIG91dC5w
cmludCgiQm9vbGVhbiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5k
LmgJKHJldmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNl
S2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw5ICszOCwxMCBAQCBlbnVtIFVzZUtpbmQgewog
ICAgIEludDMyVXNlLAogICAgIEtub3duSW50MzJVc2UsCiAgICAgTWFjaGluZUludFVzZSwKLSAg
ICBSZWFsTnVtYmVyVXNlLAorICAgIEludDUyUmVwVXNlLAogICAgIE51bWJlclVzZSwKLSAgICBL
bm93bk51bWJlclVzZSwKKyAgICBEb3VibGVSZXBVc2UsCisgICAgRG91YmxlUmVwUmVhbFVzZSwK
ICAgICBCb29sZWFuVXNlLAogICAgIENlbGxVc2UsCiAgICAgS25vd25DZWxsVXNlLApAQCAtNjks
MTEgKzcwLDE3IEBAIEFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckYKICAg
ICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgICAg
IHJldHVybiBTcGVjTWFjaGluZUludDsKKyAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICBy
ZXR1cm4gU3BlY0ludDUyOwogICAgIGNhc2UgUmVhbE51bWJlclVzZToKICAgICAgICAgcmV0dXJu
IFNwZWNGdWxsUmVhbE51bWJlcjsKICAgICBjYXNlIE51bWJlclVzZToKICAgICBjYXNlIEtub3du
TnVtYmVyVXNlOgogICAgICAgICByZXR1cm4gU3BlY0Z1bGxOdW1iZXI7CisgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6CisgICAgICAgIHJldHVybiBTcGVjRG91YmxlOworICAgIGNhc2UgRG91YmxlUmVw
UmVhbFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVSZWFsOwogICAgIGNhc2UgQm9vbGVh
blVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCb29sZWFuOwogICAgIGNhc2UgQ2VsbFVzZToKQEAg
LTExNiw2ICsxMjMsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgc2hvdWxkTm90SGF2ZVR5cGVDaGVj
CiAgICAgY2FzZSBLbm93bk51bWJlclVzZToKICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICBj
YXNlIEtub3duU3RyaW5nVXNlOgorICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTEzNiw2ICsxNDUsOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOdW1l
cmljYWwoVXNlS2luZCBrCiAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgIGNhc2UgTnVtYmVy
VXNlOgogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAg
ICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0
NSw5ICsxNTcsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOdW1lcmljYWwoVXNlS2luZCBrCiBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNEb3VibGUoVXNlS2luZCBraW5kKQogewogICAgIHN3aXRjaCAo
a2luZCkgewotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICBjYXNlIE51bWJlclVzZToKLSAg
ICBjYXNlIEtub3duTnVtYmVyVXNlOgorICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgIGNhc2Ug
RG91YmxlUmVwUmVhbFVzZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YWxpZGF0ZS5jcHAJKHJldmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNSw2ICsxMTUsOSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBtX215UmVm
Q291bnRzLmZpbmQoZWRnZS5ub2RlKCkpLT52YWx1ZSsrOwogICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdlLT5oYXNEb3Vi
bGVSZXN1bHQoKSA9PSAoZWRnZS51c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNlIHx8IGVkZ2UudXNl
S2luZCgpID09IERvdWJsZVJlcFJlYWxVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUoKG5vZGUsIGVkZ2UpLCBlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpID09IChlZGdlLnVzZUtpbmQo
KSA9PSBJbnQ1MlJlcFVzZSkpOworICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gSW4gU1NBLCBhbGwgZWRnZXMgbXVzdCBoYXNSZXN1bHQoKS4KICAgICAgICAgICAgICAg
ICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+aGFzUmVzdWx0KCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJ
KHJldmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNyArMTg2LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgTFR5cGUgdHlw
ZTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmZsYWdzKCkgJiBOb2RlUmVzdWx0TWFz
aykgewotICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdE51bWJlcjoKKyAgICAgICAgICAg
ICAgICBjYXNlIE5vZGVSZXN1bHREb3VibGU6CiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBt
X291dC5kb3VibGVUeXBlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICBjYXNlIE5vZGVSZXN1bHRJbnQzMjoKQEAgLTcxOSw3ICs3MTksNyBAQCBwcml2YXRlOgog
ICAgICAgICBMVmFsdWUgc291cmNlID0gbV9waGlzLmdldChtX25vZGUpOwogICAgICAgICAKICAg
ICAgICAgc3dpdGNoIChtX25vZGUtPmZsYWdzKCkgJiBOb2RlUmVzdWx0TWFzaykgewotICAgICAg
ICBjYXNlIE5vZGVSZXN1bHROdW1iZXI6CisgICAgICAgIGNhc2UgTm9kZVJlc3VsdERvdWJsZToK
ICAgICAgICAgICAgIHNldERvdWJsZShtX291dC5nZXQoc291cmNlKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229213</attachid>
            <date>2014-04-12 16:16:09 -0700</date>
            <delta_ts>2014-04-13 11:46:44 -0700</delta_ts>
            <desc>maybe 1/3 done</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>49587</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5oCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDMyICAgCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0ludDUyICAgICAgICAgICAgICA9IDB4MDA0MDAwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhbiBJbnQ1MiBhbmQgd2UgaW50ZW5kIGl0IHRvIHVuYm94IGl0Lgogc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNNYWNoaW5lSW50ICAgICAgICAgPSAweDAwNjAwMDAwOyAvLyBJ
dCdzIHNvbWV0aGluZyB0aGF0IHdlIGNhbiBkbyBtYWNoaW5lIGludCBhcml0aG1ldGljIG9uLgog
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQ1MkFzRG91YmxlICAgICAgPSAweDAw
ODAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50NTIgYW5kIGl0J3MgaW5zaWRlIGEgZG91
YmxlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZU1hY2hpbmVJbnQg
PSAweDAwYTAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgc29tZSBraW5kIG9mIGludGVnZXIgaW4g
YSBKU1ZhbHVlLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnRlZ2VyICAgICAg
ICAgICAgPSAweDAwZTAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgc29tZSBraW5kIG9mIGludGVn
ZXIuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY05vbkludEFzRG91YmxlICAgICA9
IDB4MDEwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBub3QgYW4gSW50NTIgYnV0IGl0J3MgYSBy
ZWFsIG51bWJlciBhbmQgaXQncyBhIGRvdWJsZS4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjRG91YmxlUmVhbCAgICAgICAgID0gMHgwMTgwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGEgbm9uLU5hTiBkb3VibGUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1OSw3ICsxNTksOSBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgc2V0Q29uc3Rh
bnQoTm9kZSogbm9kZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0KG1fZ3JhcGgsIHZhbHVlKTsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBm
b3JOb2RlKG5vZGUpOworICAgICAgICB2YWx1ZS5zZXQobV9ncmFwaCwgdmFsdWUpOworICAgICAg
ICB2YWx1ZS5maXhUeXBlRm9yUmVwcmVzZW50YXRpb24obm9kZSk7CiAgICAgICAgIG1fc3RhdGUu
c2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2
LDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIAogICAg
IHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICBjYXNlIERv
dWJsZUNvbnN0YW50OgorICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICBjYXNlIFdlYWtKU0Nv
bnN0YW50OgogICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czogewogICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG5vZGUpKTsKQEAgLTMw
NywzOSArMzA5LDQ4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEludDMyVG9Eb3VibGU6
IHsKKyAgICBjYXNlIERvdWJsZVJlcDogewogICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlz
TnVtYmVyKCkpIHsKLSAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIEpTVmFsdWUoSlNWYWx1
ZTo6RW5jb2RlQXNEb3VibGUsIGNoaWxkLmFzTnVtYmVyKCkpKTsKKyAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGNoaWxkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBl
KSkKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlUmVhbCk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91Ymxl
KTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fdHlwZSk7CisgICAgICAgIGZvck5vZGUobm9kZSkuZml4VHlwZUZvclJlcHJlc2VudGF0aW9u
KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50NTJU
b0RvdWJsZTogeworICAgIGNhc2UgSW50NTJSZXA6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmIChjaGlsZCAmJiBj
aGlsZC5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBjaGlsZCk7
Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGNoaWxkKSB7CisgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJ5dGVjb2RlSW50VXNlICYmIGNoaWxkLmlz
TWFjaGluZUludCgpKSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBpZiAoY2hpbGQuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgc2V0Q29u
c3RhbnQobm9kZSwgY2hpbGQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsK
KyAgICAgICAgCisgICAgICAgIC8vIEJ5dGVjb2RlSW50VXNlIGlzIGN1cnJlbnRseSBvbmx5IHVz
ZWQgZm9yIGhhbmRsaW5nIGNvbnN0YW50cy4gV2Ugc2hvdWxkbid0IGV2ZXIgc2VlIGl0CisgICAg
ICAgIC8vIGlmIHdlIGNvdWxkbid0IHRyaXZpYWxseSBjb25zdGFudCBmb2xkLgorICAgICAgICBS
RUxFQVNFX0FTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgIT0gQnl0ZWNvZGVJbnRVc2Up
OworICAgICAgICAKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBJbnQ1MlRvVmFsdWU6IHsK
LSAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7
Ci0gICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICBz
ZXRDb25zdGFudChub2RlLCBjaGlsZCk7CisgICAgY2FzZSBWYWx1ZVJlcDogeworICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAg
aWYgKHZhbHVlKSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCB2YWx1ZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0g
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlOwotICAgICAgICBpZiAodHlwZSAmIFNwZWNJ
bnQ1MikKLSAgICAgICAgICAgIHR5cGUgPSAodHlwZSB8IFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFz
RG91YmxlKSAmIH5TcGVjSW50NTI7Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSh0eXBl
KTsKKyAgICAgICAgCisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5tX3R5cGUpOworICAgICAgICBmb3JOb2RlKG5vZGUpLmZpeFR5cGVGb3JSZXBy
ZXNlbnRhdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkocmV2
aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEFic3RyYWN0VmFs
dWU6OnNldE1vc3RTcGVjaWZpYyhHcmFwCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogfQogCi12
b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIEpTVmFsdWUgdmFsdWUpCit2b2lk
IEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgaWYgKCEhdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkpIHsKICAgICAgICAgbV9j
dXJyZW50S25vd25TdHJ1Y3R1cmUubWFrZVRvcCgpOwpAQCAtNjcsOCArNjcsNiBAQCB2b2lkIEFi
c3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIEpTCiAgICAgfQogICAgIAogICAgIG1fdHlw
ZSA9IHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKTsKLSAgICBpZiAobV90eXBlID09IFNwZWNJ
bnQ1MkFzRG91YmxlKQotICAgICAgICBtX3R5cGUgPSBTcGVjSW50NTI7CiAgICAgbV92YWx1ZSA9
IHZhbHVlOwogICAgIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTg1LDYgKzgzLDMwIEBA
IHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgU3QKICAgICBjaGVja0NvbnNp
c3RlbmN5KCk7CiB9CiAKK3ZvaWQgQWJzdHJhY3RWYWx1ZTo6Zml4VHlwZUZvclJlcHJlc2VudGF0
aW9uKE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUtPmhhc0RvdWJsZVJlc3VsdCgpKSB7Cisg
ICAgICAgIGlmIChtX3R5cGUgJiBTcGVjSW50MzIpIHsKKyAgICAgICAgICAgIG1fdHlwZSAmPSB+
U3BlY0ludDMyOworICAgICAgICAgICAgbV90eXBlIHw9IFNwZWNJbnQ1MkFzRG91YmxlOworICAg
ICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKG5vZGUtPmhhc0lu
dDUyUmVzdWx0KCkpIHsKKyAgICAgICAgaWYgKG1fdHlwZSAmIFNwZWNJbnQ1MkFzRG91YmxlKSB7
CisgICAgICAgICAgICBtX3R5cGUgJj0gflNwZWNJbnQ1MkFzRG91YmxlOworICAgICAgICAgICAg
bV90eXBlIHw9IFNwZWNJbnQ1MjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIGlmIChtX3R5cGUgJiBTcGVjSW50NTIpIHsKKyAgICAgICAgbV90eXBlICY9IH5T
cGVjSW50NTI7CisgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTJBc0RvdWJsZTsKKyAgICB9Cit9
CisKIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKEdyYXBoJiBncmFwaCwg
Y29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikKIHsKICAgICBpZiAoaXNDbGVhcigpKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9u
IDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUg
ewogICAgIH0KICAgICAKICAgICB2b2lkIHNldE1vc3RTcGVjaWZpYyhHcmFwaCYsIEpTVmFsdWUp
OwotICAgIHZvaWQgc2V0KEdyYXBoJiwgSlNWYWx1ZSk7CisgICAgdm9pZCBzZXQoR3JhcGgmLCBO
b2RlKiwgSlNWYWx1ZSk7CiAgICAgdm9pZCBzZXQoR3JhcGgmLCBTdHJ1Y3R1cmUqKTsKICAgICAK
ICAgICB2b2lkIHNldFR5cGUoU3BlY3VsYXRlZFR5cGUgdHlwZSkKQEAgLTEyOSw2ICsxMjksOCBA
QCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAg
ICB9CiAgICAgCisgICAgdm9pZCBmaXhUeXBlRm9yUmVwcmVzZW50YXRpb24oTm9kZSopOworICAg
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX3R5cGUgPT0gb3RoZXIubV90eXBlCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTY3MTgyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2MSwyOSArMTYxLDExIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICAgICAKLSAgICBOb2RlKiBpbnQzMlRvRG91YmxlQ1NFKE5vZGUqIG5vZGUpCi0gICAgewot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgewotICAgICAg
ICAgICAgTm9kZSogb3RoZXJOb2RlID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwotICAgICAgICAg
ICAgaWYgKG90aGVyTm9kZSA9PSBub2RlLT5jaGlsZDEoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgICAgIHN3aXRjaCAob3RoZXJOb2RlLT5vcCgpKSB7Ci0gICAgICAgICAg
ICBjYXNlIEludDMyVG9Eb3VibGU6Ci0gICAgICAgICAgICAgICAgaWYgKG90aGVyTm9kZS0+Y2hp
bGQxKCkuc2FuaXRpemVkKCkgPT0gbm9kZS0+Y2hpbGQxKCkuc2FuaXRpemVkKCkpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBvdGhlck5vZGU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICAKICAgICBOb2RlKiBj
b25zdGFudENTRShOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
ZW5kSW5kZXhGb3JQdXJlQ1NFKCk7IGktLTspIHsKICAgICAgICAgICAgIE5vZGUqIG90aGVyTm9k
ZSA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgIGlmIChvdGhlck5vZGUtPm9w
KCkgIT0gSlNDb25zdGFudCkKKyAgICAgICAgICAgIGlmIChvdGhlck5vZGUtPm9wKCkgIT0gbm9k
ZS0+b3AoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKG90aGVyTm9kZS0+Y29uc3RhbnROdW1iZXIoKSAhPSBub2RlLT5jb25zdGFudE51
bWJlcigpKQpAQCAtMTE0Nyw4ICsxMTI5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb21w
YXJlRXFDb25zdGFudDoKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgICAgIGNhc2Ug
TWFrZVJvcGU6Ci0gICAgICAgIGNhc2UgSW50NTJUb0RvdWJsZToKLSAgICAgICAgY2FzZSBJbnQ1
MlRvVmFsdWU6CisgICAgICAgIGNhc2UgRG91YmxlUmVwOgorICAgICAgICBjYXNlIFZhbHVlUmVw
OgorICAgICAgICBjYXNlIEludDUyUmVwOgogICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3Rv
cmVFbGltaW5hdGlvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIHNldFJl
cGxhY2VtZW50KHB1cmVDU0Uobm9kZSkpOwpAQCAtMTE3NiwxMiArMTE1OSw2IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNh
c2UgSW50MzJUb0RvdWJsZToKLSAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWlu
YXRpb24pCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBzZXRSZXBsYWNlbWVu
dChpbnQzMlRvRG91YmxlQ1NFKG5vZGUpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgCiAgICAgICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0g
U3RvcmVFbGltaW5hdGlvbikKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyNjcsNiArMTI0
NCw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEpT
Q29uc3RhbnQ6CisgICAgICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgSW50
NTJDb25zdGFudDoKICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24p
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHN0cmFuZ2Us
IGJ1dCBuZWNlc3NhcnkuIFNvbWUgcGhhc2VzIHdpbGwgY29udmVydCBub2RlcyB0byBjb25zdGFu
dHMsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2
aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiwxNSArMTIyLDE1IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIElzTnVtYmVyOgogICAgIGNhc2UgSXNT
dHJpbmc6CiAgICAgY2FzZSBMb2dpY2FsTm90OgotICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAg
ICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgotICAgIGNhc2UgSW50NTJUb0RvdWJsZToKLSAg
ICBjYXNlIEludDUyVG9WYWx1ZToKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgY2FzZSBD
b25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAgY2Fz
ZSBEb3VibGVBc0ludDMyOgogICAgIGNhc2UgQ2hlY2s6CisgICAgY2FzZSBEb3VibGVSZXA6Cisg
ICAgY2FzZSBWYWx1ZVJlcDoKKyAgICBjYXNlIEludDUyUmVwOgogICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgIGNhc2UgTW92SGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDgg
KzEyMywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50
aXR5KCk7CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlQ2FuU3BlY3VsYXRlSW50MzIobm9kZS0+
YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFy
aXRoOjpDaGVja092ZXJmbG93KTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6RG9PdmVyZmxvdyk7
CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApA
QCAtMTM1LDEwICsxMzcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXJF
eHBlY3RpbmdEZWZpbmVkKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9k
ZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0T3AoQXJpdGhBZGQpOwogICAgICAgICAgICAgICAgIG5v
ZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKKyAg
ICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE3Nyw4ICsx
ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEFyaXRoU3ViOiB7CiAgICAgICAgICAgICBp
ZiAoYXR0ZW1wdFRvTWFrZUludGVnZXJBZGQobm9kZSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZp
eEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdl
PERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVz
dWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIApAQCAtMTk0LDE0ICsxOTgsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX2dyYXBoLm5lZ2F0ZVNo
b3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGJ5dGVj
b2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAg
ICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOwog
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhN
b2RlKEFyaXRoOjpDaGVja092ZXJmbG93QW5kTmVnYXRpdmVaZXJvKTsKKyAgICAgICAgICAgICAg
ICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjE4LDE2ICsyMjQs
MTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLm11bFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkp
IHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICAgICAgICAgIGlmIChieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5h
cml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2Rl
KEFyaXRoOjpDaGVja092ZXJmbG93KTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0
aXZlWmVybyk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1
Mik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBm
aXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxO
dW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVw
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRE
b3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjQ2LDI0ICsyNTQs
MjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9k
ZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51
bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVy
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVz
ZT4obm9kZS0+Y2hpbGQyKCkpOwogCiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0
byBkbyByZWYnaW5nIG9uIHRoZSBjaGlsZHJlbiBiZWNhdXNlIHdlJ3JlIHN0ZWFsaW5nIHRoZW0g
ZnJvbQogICAgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBkaXZpc2lvbi4KICAgICAgICAg
ICAgICAgICBOb2RlKiBuZXdEaXZpc2lvbiA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAg
ICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjRG91YmxlLCAqbm9kZSk7Cisg
ICAgICAgICAgICAgICAgbmV3RGl2aXNpb24tPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChEb3VibGVBc0lu
dDMyKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5pbml0aWFsaXplKEVkZ2UobmV3
RGl2aXNpb24sIEtub3duTnVtYmVyVXNlKSwgRWRnZSgpLCBFZGdlKCkpOworICAgICAgICAgICAg
ICAgIG5vZGUtPmNoaWxkcmVuLmluaXRpYWxpemUoRWRnZShuZXdEaXZpc2lvbiwgRG91YmxlUmVw
VXNlKSwgRWRnZSgpLCBFZGdlKCkpOwogICAgICAgICAgICAgICAgIGlmIChieXRlY29kZUNhbkln
bm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0
aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjc1LDggKzI4NSw5IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZml4RWRnZTxOdW1i
ZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTI4NiwxNCArMjk3
LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZp
eEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5z
ZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJpdGhTcXJ0OgogICAgICAgICBjYXNlIEFy
aXRoU2luOgogICAgICAgICBjYXNlIEFyaXRoQ29zOiB7Ci0gICAgICAgICAgICBmaXhFZGdlPE51
bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVz
dWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
QEAgLTMwNSw3ICszMTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKQotICAgICAgICAgICAgICAgIGZpeEVk
Z2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxE
b3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0z
MzYsMTQgKzM0OSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KGVuYWJsZUludDUyKCkKICAgICAgICAgICAgICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVN
YWNoaW5lSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
ewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNs
b2JiZXJzV29ybGQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihub2RlLT5jaGlsZDEoKS5u
b2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVt
YmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVS
ZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJl
cFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3Mo
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KQEAgLTQwMSwxMyArNDE0LDEzIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZW5hYmxlSW50NTIoKQogICAgICAgICAgICAgICAg
ICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgp
LCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNo
aW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNo
aW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1
MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJS
ZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVk
Z2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlU3RyaW5nSWRlbnQoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3Ry
aW5nSWRlbnQoKSkgewpAQCAtNTAwLDcgKzUxMyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRj
aCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CisgICAgICAgICAgICBhcnJheU1vZGUgPSBu
b2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkg
ewogICAgICAgICAgICAgY2FzZSBBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9uczoKICAgICAg
ICAgICAgIGNhc2UgQXJyYXk6OlVucHJvZmlsZWQ6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpV
bmRlY2lkZWQ6CkBAIC01MTksNiArNTMzLDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAo
YXJyYXlNb2RlLnR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgorICAg
ICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJh
eTo6RmxvYXQ2NEFycmF5OgorICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVz
dWx0RG91YmxlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgorICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpCisgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtNTU4LDE0ICs1OTAsMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDIpOwogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgaWYg
KGNoaWxkMy0+cHJlZGljdGlvbigpICYgU3BlY0ludDUyKQotICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPE1hY2hpbmVJbnRVc2U+KGNoaWxkMyk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KGNoaWxkMik7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxSZWFsTnVtYmVyVXNlPihj
aGlsZDMpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwUmVhbFVzZT4oY2hpbGQz
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDhB
cnJheToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6CkBAIC01NzksMTUgKzYx
MSwxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChjaGlsZDMtPnNob3VsZFNwZWN1
bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxk
Myk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQzLT5zaG91bGRTcGVjdWxhdGVNYWNo
aW5lSW50KCkpCi0gICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4oY2hp
bGQzKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4oY2hpbGQzKTsK
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVy
VXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4o
Y2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6
OkZsb2F0MzJBcnJheToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDIpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
TnVtYmVyVXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNl
PihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJh
eTo6Q29udGlndW91czoKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZToKQEAg
LTYyOSw3ICs2NjEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJV
c2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgQXJyYXk6OkRvdWJsZToKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFJlYWxOdW1iZXJV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFJl
YWxVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpBcnJh
eVN0b3JhZ2U6CkBAIC02NjIsNyArNjk0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGVsc2Ug
aWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGVsc2Ug
aWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkKLSAgICAgICAgICAg
ICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAKICAgICAgICAgICAgIE5v
ZGUqIGxvZ2ljYWxOb3QgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgICAgICBpZiAo
bG9naWNhbE5vdC0+b3AoKSA9PSBMb2dpY2FsTm90KSB7CkBAIC03NTksNyArNzkxLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQUxMX0RPVUJM
RV9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG9wZXJhbmRJ
bmRleCA9IDA7IG9wZXJhbmRJbmRleCA8IG5vZGUtPm51bUNoaWxkcmVuKCk7ICsrb3BlcmFuZElu
ZGV4KQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPFJlYWxOdW1iZXJVc2U+KG1fZ3JhcGgu
bV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyBvcGVyYW5kSW5kZXhdKTsKKyAg
ICAgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBSZWFsVXNlPihtX2dyYXBoLm1fdmFy
QXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgb3BlcmFuZEluZGV4XSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5H
X1RZUEVTOgogICAgICAgICAgICAgY2FzZSBBTExfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBF
UzoKQEAgLTk2MCwxNiArOTkyLDE2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVy
VXBJbkxvb3A6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICAgICAgY2Fz
ZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgotICAgICAgICBjYXNlIEludDUyVG9Eb3VibGU6Ci0g
ICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50
OgogICAgICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoK
ICAgICAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgICAgICBjYXNlIERvdWJs
ZUFzSW50MzI6Ci0gICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICAgICAgY2FzZSBWYWx1
ZVRvSW50MzI6CiAgICAgICAgIGNhc2UgSGFyZFBoYW50b206IC8vIEhhcmRQaGFudG9tIHdvdWxk
IGJlIHRyaXZpYWwgdG8gaGFuZGxlIGJ1dCBhbnl3YXkgd2UgYXNzZXJ0IHRoYXQgd2Ugd29uJ3Qg
c2VlIGl0IGhlcmUgeWV0LgorICAgICAgICBjYXNlIERvdWJsZVJlcDoKKyAgICAgICAgY2FzZSBJ
bnQ1MlJlcDoKKyAgICAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICAgICAgICAgIC8vIFRoZXNlIGFy
ZSBqdXN0IG5vZGVzIHRoYXQgd2UgZG9uJ3QgY3VycmVudGx5IGV4cGVjdCB0byBzZWUgZHVyaW5n
IGZpeHVwLgogICAgICAgICAgICAgLy8gSWYgd2UgZXZlciB3YW50ZWQgdG8gaW5zZXJ0IHRoZW0g
cHJpb3IgdG8gZml4dXAsIHRoZW4gd2UganVzdCBoYXZlIHRvIGNyZWF0ZQogICAgICAgICAgICAg
Ly8gZml4dXAgcnVsZXMgZm9yIHRoZW0uCkBAIC0xMzI3LDEzICsxMzU5LDEzIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgotICAgICAgICAgICAgICAgIGZpeEVk
Z2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxE
b3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgRmx1c2hlZEludDUyOgotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUlu
dFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgRmx1c2hlZENlbGw6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2Rl
LT5jaGlsZDEoKSk7CkBAIC0xNDY2LDcgKzE0OTgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxl
VG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51bWJlclVz
ZToKLSAgICAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVz
ZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgogICAgICAgICAgICAgaWYgKHZhcmlh
YmxlLT5kb3VibGVGb3JtYXRTdGF0ZSgpID09IFVzaW5nRG91YmxlRm9ybWF0KQogICAgICAgICAg
ICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRh
YmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ3NSw3ICsxNTA4LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB8fCBpc0Jvb2xlYW5TcGVjdWxhdGlvbih2YXJp
YWJsZS0+cHJlZGljdGlvbigpKSkKICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFu
Z2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBjYXNlIElu
dDUyUmVwVXNlOgogICAgICAgICAgICAgaWYgKGlzTWFjaGluZUludFNwZWN1bGF0aW9uKHZhcmlh
YmxlLT5wcmVkaWN0aW9uKCkpKQogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5n
ZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTUxOCw5ICsxNTUxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAg
ICAgIFVzZUtpbmQgdXNlS2luZDsKICAgICAgICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZU1h
Y2hpbmVJbnQoKSkKLSAgICAgICAgICAgIHVzZUtpbmQgPSBNYWNoaW5lSW50VXNlOworICAgICAg
ICAgICAgdXNlS2luZCA9IEludDUyUmVwVXNlOwogICAgICAgICBlbHNlIGlmIChub2RlLT5zaG91
bGRTcGVjdWxhdGVOdW1iZXIoKSkKLSAgICAgICAgICAgIHVzZUtpbmQgPSBOdW1iZXJVc2U7Cisg
ICAgICAgICAgICB1c2VLaW5kID0gRG91YmxlUmVwVXNlOwogICAgICAgICBlbHNlIGlmIChub2Rl
LT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpCiAgICAgICAgICAgICB1c2VLaW5kID0gQm9vbGVh
blVzZTsKICAgICAgICAgZWxzZQpAQCAtMTU4OCw5ICsxNjIxLDEwIEBAIHByaXZhdGU6CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZU1h
Y2hpbmVJbnQobm9kZSkpIHsKLSAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOworICAg
ICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTE3MzUsODUgKzE3NjksNzUgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIEFTU0VSVChub2RlID09IG1fY3VycmVudE5vZGUpOwog
ICAgICAgICAKLSAgICAgICAgaWYgKGlzRG91YmxlKGVkZ2UudXNlS2luZCgpKSkgewotICAgICAg
ICAgICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyRm9yQXJpdGhtZXRpYygpKSB7Ci0g
ICAgICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9kZSgpKTsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDUy
QXNEb3VibGUsIEludDMyVG9Eb3VibGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdp
biwgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKGVkZ2UudXNlS2luZCgpKSB7CisgICAg
ICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6IHsK
KyAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSkKKyAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkgJiYg
ZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8g
TWFrZSBhbGwgZG91YmxlIHVzZXMgb2YgaW50NTIgdmFsdWVzIGhhdmUgYW4gaW50ZXJtZWRpYXRl
IEludDUyVG9Eb3VibGUuCi0gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgdGhlIHNhbWUg
cmVhc29uIGFzIEludDUyVG9WYWx1ZSAoc2VlIGJlbG93KSBleGNlcHQgdGhhdAotICAgICAgICAg
ICAgICAgIC8vIEludDhUb0RvdWJsZSB3aWxsIGNvbnZlcnQgaW50NTIncyB0aGF0IGZpdCBpbiBh
biBpbnQzMiBpbnRvIGEgZG91YmxlCi0gICAgICAgICAgICAgICAgLy8gcmF0aGVyIHRoYW4gdHJ5
aW5nIHRvIGNyZWF0ZSBhIGJveGVkIGludDMyIGxpa2UgSW50NTJUb1ZhbHVlIGRvZXMuCi0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9k
ZSgpKTsKLSAgICAgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAotICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDUyQXNE
b3VibGUsIEludDUyVG9Eb3VibGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbiwg
RWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7Ci0gICAgICAgICAgICAgICAgZWRnZS5zZXRO
b2RlKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYWRkUmVx
dWlyZWRQaGFudG9tKGVkZ2Uubm9kZSgpKTsKKworICAgICAgICAgICAgTm9kZSogcmVzdWx0Owor
ICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpIHsKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAg
ICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDUyQXNEb3VibGUsIERvdWJsZVJlcCwgbm9kZS0+b3Jp
Z2luLAorICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBJbnQ1MlJlcFVzZSkp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywg
U3BlY0RvdWJsZSwgRG91YmxlUmVwLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAg
IEVkZ2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwogICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBlZGdlLnNldE5vZGUocmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBpZiAoZW5hYmxlSW50NTIoKSAmJiBlZGdlLnVzZUtpbmQoKSAh
PSBNYWNoaW5lSW50VXNlCi0gICAgICAgICAgICAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVNYWNo
aW5lSW50KCkgJiYgIWVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKLSAgICAgICAgICAg
IC8vIFdlIG1ha2UgYWxsIG5vbi1pbnQ1MiB1c2VzIG9mIGludDUyIHZhbHVlcyBoYXZlIGFuIGlu
dGVybWVkaWF0ZSBJbnQ1MlRvVmFsdWUKLSAgICAgICAgICAgIC8vIG5vZGUgdG8gZW5zdXJlIHRo
YXQgd2UgaGFuZGxlIHRoaXMgcHJvcGVybHk6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAg
Ly8gYTogU29tZUludDUyCi0gICAgICAgICAgICAvLyBiOiBBcml0aEFkZChAYSwgLi4uKQotICAg
ICAgICAgICAgLy8gYzogQ2FsbCguLi4sIEBhKQotICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQo
QGEsIC4uLikKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBXaXRob3V0IGFuIGludGVy
bWVkaWF0ZSBub2RlIGFuZCBqdXN0IGxhYmVsaW5nIHRoZSB1c2VzLCB3ZSB3aWxsIGdldDoKLSAg
ICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBhOiBTb21lSW50NTIKLSAgICAgICAgICAgIC8v
IGI6IEFyaXRoQWRkKEludDUyOkBhLCAuLi4pCi0gICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwg
VW50eXBlZDpAYSkKLSAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEludDUyOkBhLCAuLi4pCi0g
ICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gQW5kIG5vdyB0aGUgYy0+VW50eXBlZDpAYSBl
ZGdlIHdpbGwgYm94IHRoZSB2YWx1ZSBvZiBAYSBpbnRvIGEgZG91YmxlLiBUaGlzCi0gICAgICAg
ICAgICAvLyBpcyBiYWQsIGJlY2F1c2Ugbm93IHRoZSBkLT5JbnQ1MjpAYSBlZGdlIHdpbGwgZWl0
aGVyIGhhdmUgdG8gZG8gZG91YmxlLXRvLWludAotICAgICAgICAgICAgLy8gY29udmVyc2lvbnMs
IG9yIHdpbGwgaGF2ZSB0byBPU1IgZXhpdCB1bmNvbmRpdGlvbmFsbHkuIEFsdGVybmF0aXZlbHkg
d2UgY291bGQKLSAgICAgICAgICAgIC8vIGhhdmUgdGhlIGMtPlVudHlwZWQ6QGEgZWRnZSBib3gg
dGhlIHZhbHVlIGJ5IGNvcHlpbmcgcmF0aGVyIHRoYW4gaW4tcGxhY2UuCi0gICAgICAgICAgICAv
LyBCdXQgdGhlc2UgYm94aW5ncyBhcmUgYWxzbyBjb3N0bHkgc28gdGhpcyB3b3VsZG4ndCBiZSBn
cmVhdC4KLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBUaGUgc29sdXRpb24gd2UgdXNl
IGlzIHRvIGFsd2F5cyBoYXZlIG5vbi1JbnQ1MiB1c2VzIG9mIHByZWRpY3RlZCBJbnQ1MidzIHVz
ZQotICAgICAgICAgICAgLy8gYW4gaW50ZXJ2ZW5pbmcgSW50NTJUb1ZhbHVlIG5vZGU6Ci0gICAg
ICAgICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29tZUludDUyCi0gICAgICAgICAgICAvLyBi
OiBBcml0aEFkZChJbnQ1MjpAYSwgLi4uKQotICAgICAgICAgICAgLy8geDogSW50NTJUb1ZhbHVl
KEludDUyOkBhKQotICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIFVudHlwZWQ6QHgpCi0gICAg
ICAgICAgICAvLyBkOiBBcml0aEFkZChJbnQ1MjpAYSwgLi4uKQotICAgICAgICAgICAgLy8KLSAg
ICAgICAgICAgIC8vIE5vdGUgdGhhdCBldmVuIGlmIHdlIGhhZCBtdWx0aXBsZSBub24taW50NTIg
dXNlcyBvZiBAYSwgdGhlIG11bHRpcGxlCi0gICAgICAgICAgICAvLyBJbnQ1MlRvVmFsdWUncyB3
b3VsZCBnZXQgQ1NFJ2QgdG9nZXRoZXIuIFNvIHRoZSBib3hpbmcgd291bGQgb25seSBoYXBwZW4g
b25jZS4KLSAgICAgICAgICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUsIEBhIHdvdWxkIGNvbnRpbnVl
IHRvIGJlIHJlcHJlc2VudGVkIGFzIGEgbmF0aXZlIGludDUyLgotICAgICAgICAgICAgLy8KLSAg
ICAgICAgICAgIC8vIEFuIGFsdGVybmF0aXZlIHdvdWxkIGhhdmUgYmVlbiB0byBpbnNlcnQgVG9O
YXRpdmVJbnQ1MiBub2RlcyBvbiBpbnQ1MiB1c2VzIG9mCi0gICAgICAgICAgICAvLyBpbnQ1Midz
LiBUaGlzIHdvdWxkIGhhdmUgaGFuZGxlZCB0aGUgYWJvdmUgZXhhbXBsZSBidXQgd291bGQgZmFs
bCBvdmVyIGZvcjoKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBhOiBTb21lSW50NTIK
LSAgICAgICAgICAgIC8vIGI6IENhbGwoLi4uLCBAYSkKLSAgICAgICAgICAgIC8vIGM6IEFyaXRo
QWRkKEBhLCAuLi4pCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gQnV0IHRoZSBzb2x1
dGlvbiB3ZSB1c2UgaGFuZGxlcyB0aGUgYWJvdmUgZ3JhY2VmdWxseS4KKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAgICAgICAgICBpZiAoZWRnZS0+aGFzSW50
NTJSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgICAgIE5vZGUq
IHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgbV9p
bmRleEluQmxvY2ssIFNwZWNJbnQ1MiwgSW50NTJUb1ZhbHVlLAotICAgICAgICAgICAgICAgIG5v
ZGUtPm9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgVW50eXBlZFVzZSkpOworCisgICAgICAgICAg
ICBOb2RlKiByZXN1bHQ7CisgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkp
IHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgbmV2ZXIgaGFwcGVuLgorICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyRm9yQXJpdGhtZXRpYygpKSB7CisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAg
ICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMiwgSW50NTJSZXAsIG5vZGUtPm9yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgSW50MzJVc2UpKTsKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGhl
cmUgZm9yIGRlYWxpbmcgd2l0aCBjb25zdGFudHMuCisgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoZWRnZS0+b3AoKSA9PSBKU0NvbnN0YW50KTsKKyAgICAgICAgICAgICAgICByZXN1bHQg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4
SW5CbG9jaywgU3BlY01hY2hpbmVJbnQsIEludDUyUmVwLCBub2RlLT5vcmlnaW4sCisgICAgICAg
ICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIEJ5dGVjb2RlTWFjaGluZUludFVzZSkpOwor
ICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBlZGdlLnNldE5vZGUocmVzdWx0KTsKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgZGVmYXVsdDogeworICAgICAgICAgICAgaWYgKCFlZGdlLT5oYXNEb3VibGVS
ZXN1bHQoKSAmJiAhZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9k
ZSgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAg
ICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2ssIFNwZWNEb3VibGUsIFZhbHVlUmVwLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIERvdWJsZVJlcFVzZSkpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMyIHwgU3Bl
Y0ludDUyQXNEb3VibGUsIFZhbHVlUmVwLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAg
ICAgIEVkZ2UoZWRnZS5ub2RlKCksIEludDUyUmVwVXNlKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0gfQogICAgIH0KICAgICAKICAgICB2b2lkIGFkZFJlcXVpcmVkUGhh
bnRvbShOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVz
aEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1
c2hGb3JtYXQuaAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIGlubGlu
ZSBOb2RlRmxhZ3MgcmVzdWx0Rm9yKEZsdXNoRm9ybWF0IGYKICAgICBjYXNlIEZsdXNoZWRJbnQ1
MjoKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRJbnQ1MjsKICAgICBjYXNlIEZsdXNoZWREb3Vi
bGU6Ci0gICAgICAgIHJldHVybiBOb2RlUmVzdWx0TnVtYmVyOworICAgICAgICByZXR1cm4gTm9k
ZVJlc3VsdERvdWJsZTsKICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgogICAgICAgICByZXR1cm4g
Tm9kZVJlc3VsdEJvb2xlYW47CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgJKHJldmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDEzIEBAIHN0cnVjdCBOb2RlIHsK
ICAgICAgICAgcmV0dXJuIGZpbHRlckZsYWdzKH5mbGFncyk7CiAgICAgfQogICAgIAorICAgIHZv
aWQgc2V0UmVzdWx0KE5vZGVGbGFncyByZXN1bHQpCisgICAgeworICAgICAgICBBU1NFUlQoIShy
ZXN1bHQgJiB+Tm9kZVJlc3VsdE1hc2spKTsKKyAgICAgICAgY2xlYXJGbGFncyhOb2RlUmVzdWx0
TWFzayk7CisgICAgICAgIG1lcmdlRmxhZ3MocmVzdWx0KTsKKyAgICB9CisgICAgCiAgICAgdm9p
ZCBzZXRPcEFuZERlZmF1bHRGbGFncyhOb2RlVHlwZSBvcCkKICAgICB7CiAgICAgICAgIG1fb3Ag
PSBvcDsKQEAgLTM4NSw2ICszOTIsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICBz
d2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgICAgICBjYXNlIERv
dWJsZUNvbnN0YW50OgorICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgIGNhc2Ug
V2Vha0pTQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtNDAxLDcgKzQxMCwxMiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
CiAgICAgdm9pZCBjb252ZXJ0VG9Db25zdGFudCh1bnNpZ25lZCBjb25zdGFudE51bWJlcikKICAg
ICB7Ci0gICAgICAgIG1fb3AgPSBKU0NvbnN0YW50OworICAgICAgICBpZiAoaGFzRG91YmxlUmVz
dWx0KCkpCisgICAgICAgICAgICBtX29wID0gRG91YmxlQ29uc3RhbnQ7CisgICAgICAgIGVsc2Ug
aWYgKGhhc0ludDUyUmVzdWx0KCkpCisgICAgICAgICAgICBtX29wID0gSW50NTJDb25zdGFudDsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9vcCA9IEpTQ29uc3RhbnQ7CiAgICAgICAgIG1f
ZmxhZ3MgJj0gfihOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlciB8IE5vZGVDbG9i
YmVyc1dvcmxkKTsKICAgICAgICAgbV9vcEluZm8gPSBjb25zdGFudE51bWJlcjsKICAgICAgICAg
Y2hpbGRyZW4ucmVzZXQoKTsKQEAgLTgwNSwxMSArODE5LDIxIEBAIHN0cnVjdCBOb2RlIHsKICAg
ICAgICAgcmV0dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRJbnQz
MjsKICAgICB9CiAgICAgCisgICAgYm9vbCBoYXNJbnQ1MlJlc3VsdCgpCisgICAgeworICAgICAg
ICByZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdEludDUyOwor
ICAgIH0KKyAgICAKICAgICBib29sIGhhc051bWJlclJlc3VsdCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdE51bWJlcjsKICAg
ICB9CiAgICAgCisgICAgYm9vbCBoYXNEb3VibGVSZXN1bHQoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHREb3VibGU7CisgICAg
fQorICAgIAogICAgIGJvb2wgaGFzSlNSZXN1bHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuICht
X2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRKUzsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5jcHAJKHJldmlzaW9uIDE2NzE4MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNiArNDcsOSBAQCB2b2lkIGR1bXBOb2RlRmxhZ3MoUHJpbnRTdHJlYW0mIGFjdHVh
bE91CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdE51bWJlcjoKICAgICAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIk51bWJlciIpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTm9k
ZVJlc3VsdE51bWJlcjoKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgIkRvdWJsZSIpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgogICAgICAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiSW50MzIiKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCShyZXZpc2lvbiAxNjcx
ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCwxMCArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogI2RlZmluZSBOb2RlUmVzdWx0TWFzayAgICAgICAgICAgICAgICAgICAweDAwMDcKICNkZWZp
bmUgTm9kZVJlc3VsdEpTICAgICAgICAgICAgICAgICAgICAgMHgwMDAxCiAjZGVmaW5lIE5vZGVS
ZXN1bHROdW1iZXIgICAgICAgICAgICAgICAgIDB4MDAwMgotI2RlZmluZSBOb2RlUmVzdWx0SW50
MzIgICAgICAgICAgICAgICAgICAweDAwMDMKLSNkZWZpbmUgTm9kZVJlc3VsdEludDUyICAgICAg
ICAgICAgICAgICAgMHgwMDA0Ci0jZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAg
ICAgIDB4MDAwNQotI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAgICAgICAweDAw
MDYKKyNkZWZpbmUgTm9kZVJlc3VsdERvdWJsZSAgICAgICAgICAgICAgICAgMHgwMDAzCisjZGVm
aW5lIE5vZGVSZXN1bHRJbnQzMiAgICAgICAgICAgICAgICAgIDB4MDAwNAorI2RlZmluZSBOb2Rl
UmVzdWx0SW50NTIgICAgICAgICAgICAgICAgICAweDAwMDUKKyNkZWZpbmUgTm9kZVJlc3VsdEJv
b2xlYW4gICAgICAgICAgICAgICAgMHgwMDA2CisjZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdlICAg
ICAgICAgICAgICAgIDB4MDAwNwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICNk
ZWZpbmUgTm9kZU11c3RHZW5lcmF0ZSAgICAgICAgICAgICAgICAgMHgwMDA4IC8vIHNldCBvbiBu
b2RlcyB0aGF0IGhhdmUgc2lkZSBlZmZlY3RzLCBhbmQgbWF5IG5vdCB0cml2aWFsbHkgYmUgcmVt
b3ZlZCBieSBEQ0UuCiAjZGVmaW5lIE5vZGVIYXNWYXJBcmdzICAgICAgICAgICAgICAgICAgIDB4
MDAxMApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNp
b24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgLyogQSBjb25zdGFudCBpbiB0aGUgQ29kZUJsb2NrJ3MgY29uc3RhbnQgcG9v
bC4gKi9cCiAgICAgbWFjcm8oSlNDb25zdGFudCwgTm9kZVJlc3VsdEpTIHwgTm9kZURvZXNOb3RF
eGl0KSBcCiAgICAgXAorICAgIC8qIENvbnN0YW50cyB3aXRoIHNwZWNpZmljIHJlcHJlc2VudGF0
aW9ucy4gKi9cCisgICAgbWFjcm8oRG91YmxlQ29uc3RhbnQsIE5vZGVSZXN1bHREb3VibGUgfCBO
b2RlRG9lc05vdEV4aXQpIFwKKyAgICBtYWNybyhJbnQ1MkNvbnN0YW50LCBOb2RlUmVzdWx0SW50
NTIgfCBOb2RlRG9lc05vdEV4aXQpIFwKKyAgICBcCiAgICAgLyogQSBjb25zdGFudCBub3QgaW4g
dGhlIENvZGVCbG9jaydzIGNvbnN0YW50IHBvb2wuIFVzZXMgZ2V0IHBhdGNoZWQgdG8ganVtcHMg
dGhhdCBleGl0IHRoZSAqL1wKICAgICAvKiBjb2RlIGJsb2NrLiAqL1wKICAgICBtYWNybyhXZWFr
SlNDb25zdGFudCwgTm9kZVJlc3VsdEpTIHwgTm9kZURvZXNOb3RFeGl0KSBcCkBAIC0xMDYsMTUg
KzExMCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogVXNlZCB0
byBib3ggdGhlIHJlc3VsdCBvZiBVUlNoaWZ0IG5vZGVzIChyZXN1bHQgaGFzIHJhbmdlIDAuLjJe
MzItMSkuICovXAogICAgIG1hY3JvKFVJbnQzMlRvTnVtYmVyLCBOb2RlUmVzdWx0TnVtYmVyKSBc
CiAgICAgXAotICAgIC8qIFVzZWQgdG8gY2FzdCBrbm93biBpbnRlZ2VycyB0byBkb3VibGVzLCBz
byBhcyB0byBzZXBhcmF0ZSB0aGUgZG91YmxlIGZvcm0gKi9cCi0gICAgLyogb2YgdGhlIHZhbHVl
IGZyb20gdGhlIGludGVnZXIgZm9ybS4gKi9cCi0gICAgbWFjcm8oSW50MzJUb0RvdWJsZSwgTm9k
ZVJlc3VsdE51bWJlcikgXAotICAgIC8qIFVzZWQgdG8gc3BlY3VsYXRlIHRoYXQgYSBkb3VibGUg
dmFsdWUgaXMgYWN0dWFsbHkgYW4gaW50ZWdlci4gKi9cCisgICAgLyogQXR0ZW1wdCB0byB0cnVu
Y2F0ZSBhIGRvdWJsZSB0byBpbnQzMjsgdGhpcyB3aWxsIGV4aXQgaWYgaXQgY2FuJ3QgZG8gaXQu
ICovXAogICAgIG1hY3JvKERvdWJsZUFzSW50MzIsIE5vZGVSZXN1bHRJbnQzMikgXAotICAgIC8q
IFVzZWQgdG8gc2VwYXJhdGUgcmVwcmVzZW50YXRpb24gYW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24g
b2YgSW50NTIncyByZXByZXNlbnRlZCAqL1wKLSAgICAvKiBhcyB2YWx1ZXMuICovXAotICAgIG1h
Y3JvKEludDUyVG9WYWx1ZSwgTm9kZVJlc3VsdEpTKSBcCi0gICAgbWFjcm8oSW50NTJUb0RvdWJs
ZSwgTm9kZVJlc3VsdE51bWJlcikgXAorICAgIFwKKyAgICAvKiBDaGFuZ2UgdGhlIHJlcHJlc2Vu
dGF0aW9uIG9mIGEgdmFsdWUuICovXAorICAgIG1hY3JvKERvdWJsZVJlcCwgTm9kZVJlc3VsdERv
dWJsZSkgXAorICAgIG1hY3JvKEludDUyUmVwLCBOb2RlUmVzdWx0SW50NTIpIFwKKyAgICBtYWNy
byhWYWx1ZVJlcCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBhcml0
aG1ldGljIG9wZXJhdGlvbnMuICovXAogICAgIG1hY3JvKEFyaXRoQWRkLCBOb2RlUmVzdWx0TnVt
YmVyKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTY3MTgyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4OSw3ICs0ODksNiBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6Ci0gICAgICAgIGNhc2UgSW50MzJUb0RvdWJs
ZToKICAgICAgICAgY2FzZSBEb3VibGVBc0ludDMyOgogICAgICAgICBjYXNlIEdldExvY2FsVW5s
aW5rZWQ6CiAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6CkBAIC01MDMsMTEgKzUw
MiwxMiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAg
ICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRp
b25Qb2ludDoKLSAgICAgICAgY2FzZSBJbnQ1MlRvVmFsdWU6Ci0gICAgICAgIGNhc2UgSW50NTJU
b0RvdWJsZToKICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgogICAgICAgICBjYXNlIFZhbHVl
VG9JbnQzMjoKLSAgICAgICAgY2FzZSBIYXJkUGhhbnRvbTogeworICAgICAgICBjYXNlIEhhcmRQ
aGFudG9tOgorICAgICAgICBjYXNlIERvdWJsZVJlcDoKKyAgICAgICAgY2FzZSBJbnQ1MlJlcDoK
KyAgICAgICAgY2FzZSBWYWx1ZVJlcDogewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3Vs
ZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRoaXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uIEl0IGlzCiAg
ICAgICAgICAgICAvLyBpbnNlcnRlZCBieSBmaXh1cCgpLCB3aGljaCBmb2xsb3dzIHRoaXMgcGhh
c2UuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE2
NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdAogCiAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgY2FzZSBK
U0NvbnN0YW50OgorICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAgY2FzZSBJbnQ1MkNvbnN0
YW50OgogICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgY2FzZSBJZGVudGl0eToKICAgICBj
YXNlIFRvVGhpczoKQEAgLTEzOCw3ICsxNDAsNiBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJh
Y3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgY2FzZSBVSW50MzJU
b051bWJlcjoKICAgICBjYXNlIEludDMyVG9Eb3VibGU6Ci0gICAgY2FzZSBEb3VibGVBc0ludDMy
OgogICAgIGNhc2UgQXJpdGhBZGQ6CiAgICAgY2FzZSBBcml0aFN1YjoKICAgICBjYXNlIEFyaXRo
TmVnYXRlOgpAQCAtMjQxLDggKzI0Miw2IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0
YXRlVHlwZSYgc3QKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVj
a1RpZXJVcEFuZE9TUkVudGVyOgogICAgIGNhc2UgTG9vcEhpbnQ6Ci0gICAgY2FzZSBJbnQ1MlRv
RG91YmxlOgotICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgIGNhc2UgU3RvcmVCYXJyaWVyOgog
ICAgIGNhc2UgU3RvcmVCYXJyaWVyV2l0aE51bGxDaGVjazoKICAgICBjYXNlIEludmFsaWRhdGlv
blBvaW50OgpAQCAtMjU0LDYgKzI1Myw5IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0
YXRlVHlwZSYgc3QKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoK
ICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CisgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICBjYXNl
IERvdWJsZVJlcDoKKyAgICBjYXNlIEludDUyUmVwOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgCiAgICAgY2FzZSBHZXRCeVZhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTY3MTgyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQzLDI4ICsxNDMsNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxK
U1ZhbHVlKEVkZ2UgCiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQogCi0gICAgY2FzZSBEYXRh
Rm9ybWF0RG91YmxlOiB7Ci0gICAgICAgIEZQUlJlZyBmcHIgPSBpbmZvLmZwcigpOwotICAgICAg
ICBHUFJSZWcgZ3ByID0gYm94RG91YmxlKGZwcik7Ci0KLSAgICAgICAgLy8gVXBkYXRlIGFsbCBp
bmZvCi0gICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRK
U0RvdWJsZSk7Ci0gICAgICAgIG1fZnBycy5yZWxlYXNlKGZwcik7Ci0gICAgICAgIG1fZ3Bycy5y
ZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7Ci0KLSAgICAgICAgcmV0
dXJuIGdwcjsKLSAgICB9Ci0gICAgICAgIAotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAg
IGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOiB7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZv
LmdwcigpOwotICAgICAgICBsb2NrKGdwcik7Ci0gICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBh
bGxvY2F0ZSgpOwotICAgICAgICBib3hJbnQ1MihncHIsIHJlc3VsdEdQUiwgaW5mby5yZWdpc3Rl
ckZvcm1hdCgpKTsKLSAgICAgICAgdW5sb2NrKGdwcik7Ci0gICAgICAgIHJldHVybiByZXN1bHRH
UFI7Ci0gICAgfQotCiAgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKICAgICAgICAgLy8gTm8gcmV0
YWcgcmVxdWlyZWQgb24gSlNWQUxVRTY0IQogICAgIGNhc2UgRGF0YUZvcm1hdEpTOgpAQCAtNzY5
LDEyICs3NDcsNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAg
ICAgCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFG
b3JtYXROb25lOiB7Ci0gICAgICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1h
dERvdWJsZSkgewotICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5j
b3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwotICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0g
RGF0YUZvcm1hdEludDMyOwotICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7Ci0gICAgICAg
IH0KLSAgICAgICAgCiAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwogCiAgICAgICAg
IGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CkBAIC05MjcsMTcgKzg5OSw3IEBAIEdQUlJlZyBT
cGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgcmV0dXJuIGdwcjsKICAg
ICB9CiAKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNE
b3VibGU6IHsKLSAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkgJiYgaXNJbnQzMkNvbnN0
YW50KGVkZ2Uubm9kZSgpKSkgewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7
Ci0gICAgICAgICAgICBBU1NFUlQoaXNJbnQzMkNvbnN0YW50KGVkZ2Uubm9kZSgpKSk7Ci0gICAg
ICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW0zMih2YWx1ZU9mSW50MzJDb25z
dGFudChlZGdlLm5vZGUoKSkpLCBncHIpOwotICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0
YUZvcm1hdEludDMyOwotICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgfQotICAgICAg
ICBGQUxMVEhST1VHSDsKLSAgICB9CisgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAgICAg
Y2FzZSBEYXRhRm9ybWF0Q2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgogICAgIGNh
c2UgRGF0YUZvcm1hdEpTQ2VsbDoKQEAgLTk0Nyw2ICs5MDksNyBAQCBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAg
IH0KIAorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9y
YWdlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAKQEAg
LTk4Myw3ICs5NDYsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ1
CiAKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgewogICAgIGNhc2UgRGF0YUZv
cm1hdE5vbmU6IHsKLSAgICAgICAgaWYgKChlZGdlLT5oYXNDb25zdGFudCgpICYmICF2YWx1ZU9m
SlNDb25zdGFudChlZGdlLm5vZGUoKSkuaXNNYWNoaW5lSW50KCkpIHx8IGluZm8uc3BpbGxGb3Jt
YXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7CisgICAgICAgIGlmICgoZWRnZS0+aGFzQ29uc3Rh
bnQoKSAmJiAhdmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpLmlzTWFjaGluZUludCgpKSkg
ewogICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUs
IEpTVmFsdWVSZWdzKCksIDApOwogICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAg
ICAgIH0KQEAgLTExMTgsMjYgKzEwODEsMTAgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlSW50NQogCiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0
YUZvcm1hdEpTRG91YmxlOgotICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewotICAg
ICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkp
OwotICAgICAgICAgICAgaWYgKGpzVmFsdWUuaXNNYWNoaW5lSW50KCkpIHsKLSAgICAgICAgICAg
ICAgICBpbnQ2NF90IHZhbHVlID0ganNWYWx1ZS5hc01hY2hpbmVJbnQoKTsKLSAgICAgICAgICAg
ICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCi0gICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gdmFsdWUgPDwgSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudDsKLSAgICAg
ICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgICAgICBtX2pp
dC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW02NCh2YWx1ZSksIGdwcik7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGdwcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBGQUxMVEhS
T1VHSDsKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xl
YW46CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9v
bGVhbjogewotICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwotICAgIH0K
LQorICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKICAgICBjYXNlIERhdGFGb3JtYXRTdG9y
YWdlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAKQEAg
LTEzNTIsMTEgKzEyOTksNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVD
ZWxsCiAKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgewogICAgIGNhc2UgRGF0
YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0SW50MzIgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKLSAg
ICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwotICAgICAgICB9
Ci0gICAgICAgIAogICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKIAogICAgICAgICBp
ZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewpAQCAtMTQwNSwxNiArMTM0NywxNiBAQCBHUFJSZWcg
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNJ
bnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRKU0Rv
dWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNC
b29sZWFuOgotICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46Ci0gICAgY2FzZSBEYXRhRm9ybWF0
SW50NTI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKKyAgICBjYXNlIERhdGFG
b3JtYXRCb29sZWFuOiB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7
CiAgICAgfQogCisgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1h
dFN0b3JhZ2U6CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0
U3RyaWN0SW50NTI6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIAogICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNl
S2luZC5jcHAJKHJldmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVXNlS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE3ICs0NiwxNyBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlCiAgICAgY2FzZSBLbm93bkludDMyVXNl
OgogICAgICAgICBvdXQucHJpbnQoIktub3duSW50MzIiKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBNYWNoaW5lSW50VXNlOgotICAgICAgICBvdXQucHJpbnQoIk1hY2hpbmVJbnQiKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgICAgICBvdXQucHJpbnQo
IlJlYWxOdW1iZXIiKTsKKyAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICBvdXQucHJpbnQo
IkludDUyUmVwIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAg
ICBvdXQucHJpbnQoIk51bWJlciIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEtub3duTnVt
YmVyVXNlOgotICAgICAgICBvdXQucHJpbnQoIktub3duTnVtYmVyIik7CisgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6CisgICAgICAgIG91dC5wcmludCgiRG91YmxlUmVwIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICAgICAgb3V0LnByaW50KCJEb3VibGVS
ZXBSZWFsIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAg
b3V0LnByaW50KCJCb29sZWFuIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1VzZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuaAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdVc2VLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICszNywxMSBAQCBlbnVtIFVzZUtp
bmQgewogICAgIFVudHlwZWRVc2UsCiAgICAgSW50MzJVc2UsCiAgICAgS25vd25JbnQzMlVzZSwK
LSAgICBNYWNoaW5lSW50VXNlLAotICAgIFJlYWxOdW1iZXJVc2UsCisgICAgSW50NTJSZXBVc2Us
CiAgICAgTnVtYmVyVXNlLAotICAgIEtub3duTnVtYmVyVXNlLAorICAgIEJ5dGVjb2RlSW50VXNl
LAorICAgIERvdWJsZVJlcFVzZSwKKyAgICBEb3VibGVSZXBSZWFsVXNlLAogICAgIEJvb2xlYW5V
c2UsCiAgICAgQ2VsbFVzZSwKICAgICBLbm93bkNlbGxVc2UsCkBAIC02NywxMyArNjgsMTYgQEAg
QUxXQVlTX0lOTElORSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRgogICAgIGNhc2UgSW50MzJV
c2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNlOgogICAgICAgICByZXR1cm4gU3BlY0ludDMyOwot
ICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICBy
ZXR1cm4gU3BlY01hY2hpbmVJbnQ7Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgICAgICBy
ZXR1cm4gU3BlY0Z1bGxSZWFsTnVtYmVyOwogICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2Ug
S25vd25OdW1iZXJVc2U6Ci0gICAgICAgIHJldHVybiBTcGVjRnVsbE51bWJlcjsKKyAgICAgICAg
cmV0dXJuIFNwZWNCeXRlY29kZU51bWJlcjsKKyAgICBjYXNlIEJ5dGVjb2RlTWFjaGluZUludFVz
ZToKKyAgICAgICAgcmV0dXJuIFNwZWNCeXRlY29kZU1hY2hpbmVJbnQ7CisgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6CisgICAgICAgIHJldHVybiBTcGVjRG91YmxlOworICAgIGNhc2UgRG91YmxlUmVw
UmVhbFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVSZWFsOwogICAgIGNhc2UgQm9vbGVh
blVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCb29sZWFuOwogICAgIGNhc2UgQ2VsbFVzZToKQEAg
LTExMyw5ICsxMTcsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIHNob3VsZE5vdEhhdmVUeXBlQ2hl
YwogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgVW50eXBlZFVzZToKICAgICBjYXNlIEtu
b3duSW50MzJVc2U6Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKICAgICBjYXNlIEtub3duQ2Vs
bFVzZToKICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgorICAgIGNhc2UgSW50NTJSZXBVc2U6Cisg
ICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMiwxMCArMTM3LDExIEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGsKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBj
YXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKLSAgICBjYXNlIE1hY2hpbmVJ
bnRVc2U6Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgIGNhc2UgTnVtYmVyVXNlOgotICAg
IGNhc2UgS25vd25OdW1iZXJVc2U6CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICBjYXNlIERv
dWJsZVJlcFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgY2FzZSBCeXRlY29k
ZUludFVzZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTQ1LDkgKzE1MSw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc051bWVy
aWNhbChVc2VLaW5kIGsKIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RvdWJsZShVc2VLaW5kIGtpbmQp
CiB7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgIGNh
c2UgTnVtYmVyVXNlOgotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CisgICAgY2FzZSBEb3VibGVS
ZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTE1LDYgKzExNSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgIG1fbXlSZWZDb3VudHMuZmluZChlZGdlLm5vZGUoKSktPnZhbHVlKys7CiAgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRn
ZSksIGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpID09IChlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVS
ZXBVc2UgfHwgZWRnZS51c2VLaW5kKCkgPT0gRG91YmxlUmVwUmVhbFVzZSkpOworICAgICAgICAg
ICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkg
PT0gKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKSk7CisgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBJbiBTU0EsIGFsbCBlZGdlcyBtdXN0IGhhc1Jlc3VsdCgp
LgogICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdlLT5o
YXNSZXN1bHQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw3ICsx
ODYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICBMVHlwZSB0eXBlOwogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+ZmxhZ3Mo
KSAmIE5vZGVSZXN1bHRNYXNrKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0TnVt
YmVyOgorICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdERvdWJsZToKICAgICAgICAgICAg
ICAgICAgICAgdHlwZSA9IG1fb3V0LmRvdWJsZVR5cGU7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgpAQCAtNzE5LDcgKzcx
OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBzb3VyY2UgPSBtX3BoaXMuZ2V0KG1fbm9k
ZSk7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+ZmxhZ3MoKSAmIE5vZGVSZXN1
bHRNYXNrKSB7Ci0gICAgICAgIGNhc2UgTm9kZVJlc3VsdE51bWJlcjoKKyAgICAgICAgY2FzZSBO
b2RlUmVzdWx0RG91YmxlOgogICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0LmdldChzb3VyY2Up
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vZGVSZXN1bHRJbnQzMjoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229237</attachid>
            <date>2014-04-13 11:46:44 -0700</date>
            <delta_ts>2014-04-13 14:06:32 -0700</delta_ts>
            <desc>more progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>70100</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlci5oCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw5
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBzZXRDb25zdGFudChOb2RlKiBub2RlLCBKU1Zh
bHVlIHZhbHVlKQogICAgIHsKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgdmFs
dWUpOworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZSk7CisgICAg
ICAgIHZhbHVlLnNldChtX2dyYXBoLCB2YWx1ZSk7CisgICAgICAgIHZhbHVlLmZpeFR5cGVGb3JS
ZXByZXNlbnRhdGlvbihub2RlKTsKICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0
cnVlKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAxNjcx
ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsOCBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgCiAgICAgc3dpdGNoIChub2RlLT5vcCgp
KSB7CiAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAg
Y2FzZSBJbnQ1MkNvbnN0YW50OgogICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgY2FzZSBQ
aGFudG9tQXJndW1lbnRzOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1f
Z3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobm9kZSkpOwpAQCAtMzA3LDM5ICszMDksMzkgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50MzJUb0RvdWJsZTogeworICAgIGNhc2UgRG91Ymxl
UmVwOiB7CiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52
YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwgSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwg
Y2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW50MzJTcGVj
dWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGVSZWFsKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKTsKKyAgICAgICAg
Zm9yTm9kZShub2RlKS5maXhUeXBlRm9yUmVwcmVzZW50YXRpb24obm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBJbnQ1MlRvRG91YmxlOiB7CisgICAgY2Fz
ZSBJbnQ1MlJlcDogeworICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gSW50MzJVc2UpOworICAgICAgICAKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmIChjaGlsZCAmJiBjaGls
ZC5pc051bWJlcigpKSB7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc0ludDMyKCkpIHsK
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsK
KyAgICAgICAgCisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50NTJUb1ZhbHVlOiB7Ci0g
ICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwot
ICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgc2V0
Q29uc3RhbnQobm9kZSwgY2hpbGQpOworICAgIGNhc2UgVmFsdWVSZXA6IHsKKyAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlm
ICh2YWx1ZSkgeworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgdmFsdWUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZTsKLSAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50
NTIpCi0gICAgICAgICAgICB0eXBlID0gKHR5cGUgfCBTcGVjSW50MzIgfCBTcGVjSW50NTJBc0Rv
dWJsZSkgJiB+U3BlY0ludDUyOwotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUodHlwZSk7
CisgICAgICAgIAorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkubV90eXBlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5maXhUeXBlRm9yUmVwcmVz
ZW50YXRpb24obm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlz
aW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBBYnN0cmFjdFZhbHVl
OjpzZXRNb3N0U3BlY2lmaWMoR3JhcAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIH0KIAotdm9p
ZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBKU1ZhbHVlIHZhbHVlKQordm9pZCBB
YnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBKU1ZhbHVlIHZhbHVl
KQogewogICAgIGlmICghIXZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAgIG1fY3Vy
cmVudEtub3duU3RydWN0dXJlLm1ha2VUb3AoKTsKQEAgLTY3LDggKzY3LDYgQEAgdm9pZCBBYnN0
cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBKUwogICAgIH0KICAgICAKICAgICBtX3R5cGUg
PSBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSk7Ci0gICAgaWYgKG1fdHlwZSA9PSBTcGVjSW50
NTJBc0RvdWJsZSkKLSAgICAgICAgbV90eXBlID0gU3BlY0ludDUyOwogICAgIG1fdmFsdWUgPSB2
YWx1ZTsKICAgICAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC04NSw2ICs4MywzMCBAQCB2
b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIFN0CiAgICAgY2hlY2tDb25zaXN0
ZW5jeSgpOwogfQogCit2b2lkIEFic3RyYWN0VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRhdGlv
bihOb2RlKiBub2RlKQoreworICAgIGlmIChub2RlLT5oYXNEb3VibGVSZXN1bHQoKSkgeworICAg
ICAgICBpZiAobV90eXBlICYgU3BlY0ludDMyKSB7CisgICAgICAgICAgICBtX3R5cGUgJj0gflNw
ZWNJbnQzMjsKKyAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTJBc0RvdWJsZTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChub2RlLT5oYXNJbnQ1
MlJlc3VsdCgpKSB7CisgICAgICAgIGlmIChtX3R5cGUgJiBTcGVjSW50NTJBc0RvdWJsZSkgewor
ICAgICAgICAgICAgbV90eXBlICY9IH5TcGVjSW50NTJBc0RvdWJsZTsKKyAgICAgICAgICAgIG1f
dHlwZSB8PSBTcGVjSW50NTI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBpZiAobV90eXBlICYgU3BlY0ludDUyKSB7CisgICAgICAgIG1fdHlwZSAmPSB+U3Bl
Y0ludDUyOworICAgICAgICBtX3R5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7CisgICAgfQorfQor
CiBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlcihHcmFwaCYgZ3JhcGgsIGNv
bnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpCiB7CiAgICAgaWYgKGlzQ2xlYXIoKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAx
NjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBzZXRNb3N0U3BlY2lmaWMoR3JhcGgmLCBKU1ZhbHVlKTsK
LSAgICB2b2lkIHNldChHcmFwaCYsIEpTVmFsdWUpOworICAgIHZvaWQgc2V0KEdyYXBoJiwgTm9k
ZSosIEpTVmFsdWUpOwogICAgIHZvaWQgc2V0KEdyYXBoJiwgU3RydWN0dXJlKik7CiAgICAgCiAg
ICAgdm9pZCBzZXRUeXBlKFNwZWN1bGF0ZWRUeXBlIHR5cGUpCkBAIC0xMjksNiArMTI5LDggQEAg
c3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAg
fQogICAgIAorICAgIHZvaWQgZml4VHlwZUZvclJlcHJlc2VudGF0aW9uKE5vZGUqKTsKKyAgICAK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gbV90eXBlID09IG90aGVyLm1fdHlwZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDE2NzE4MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjEsMjkgKzE2MSwxMSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAgICAgCi0gICAgTm9kZSogaW50MzJUb0RvdWJsZUNTRShOb2RlKiBub2RlKQotICAgIHsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKLSAgICAgICAg
ICAgIE5vZGUqIG90aGVyTm9kZSA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKLSAgICAgICAgICAg
IGlmIChvdGhlck5vZGUgPT0gbm9kZS0+Y2hpbGQxKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgICAgICBzd2l0Y2ggKG90aGVyTm9kZS0+b3AoKSkgewotICAgICAgICAgICAg
Y2FzZSBJbnQzMlRvRG91YmxlOgotICAgICAgICAgICAgICAgIGlmIChvdGhlck5vZGUtPmNoaWxk
MSgpLnNhbml0aXplZCgpID09IG5vZGUtPmNoaWxkMSgpLnNhbml0aXplZCgpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gb3RoZXJOb2RlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgCiAgICAgTm9kZSogY29u
c3RhbnRDU0UoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGVu
ZEluZGV4Rm9yUHVyZUNTRSgpOyBpLS07KSB7CiAgICAgICAgICAgICBOb2RlKiBvdGhlck5vZGUg
PSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5vcCgp
ICE9IEpTQ29uc3RhbnQpCisgICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5vcCgpICE9IG5vZGUt
Pm9wKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChvdGhlck5vZGUtPmNvbnN0YW50TnVtYmVyKCkgIT0gbm9kZS0+Y29uc3RhbnROdW1i
ZXIoKSkKQEAgLTExNDcsOCArMTEyOSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ29tcGFy
ZUVxQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgICAgICBjYXNlIE1h
a2VSb3BlOgotICAgICAgICBjYXNlIEludDUyVG9Eb3VibGU6Ci0gICAgICAgIGNhc2UgSW50NTJU
b1ZhbHVlOgorICAgICAgICBjYXNlIERvdWJsZVJlcDoKKyAgICAgICAgY2FzZSBWYWx1ZVJlcDoK
KyAgICAgICAgY2FzZSBJbnQ1MlJlcDoKICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3Jl
RWxpbWluYXRpb24pCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBzZXRSZXBs
YWNlbWVudChwdXJlQ1NFKG5vZGUpKTsKQEAgLTExNzYsMTIgKzExNTksNiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNl
IEludDMyVG9Eb3VibGU6Ci0gICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0
aW9uKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQo
aW50MzJUb0RvdWJsZUNTRShub2RlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IAogICAgICAgICBjYXNlIEdldENhbGxlZToKICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0
b3JlRWxpbWluYXRpb24pCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjY3LDYgKzEyNDQs
OCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBKU0Nv
bnN0YW50OgorICAgICAgICBjYXNlIERvdWJsZUNvbnN0YW50OgorICAgICAgICBjYXNlIEludDUy
Q29uc3RhbnQ6CiAgICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgLy8gVGhpcyBpcyBzdHJhbmdlLCBi
dXQgbmVjZXNzYXJ5LiBTb21lIHBoYXNlcyB3aWxsIGNvbnZlcnQgbm9kZXMgdG8gY29uc3RhbnRz
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlz
aW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsMTUgKzEyMiwxNSBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBJc051bWJlcjoKICAgICBjYXNlIElzU3Ry
aW5nOgogICAgIGNhc2UgTG9naWNhbE5vdDoKLSAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAg
Y2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKLSAgICBjYXNlIEludDUyVG9Eb3VibGU6Ci0gICAg
Y2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgogICAgIGNhc2UgQ29u
c3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgogICAgIGNhc2Ug
RG91YmxlQXNJbnQzMjoKICAgICBjYXNlIENoZWNrOgorICAgIGNhc2UgRG91YmxlUmVwOgorICAg
IGNhc2UgVmFsdWVSZXA6CisgICAgY2FzZSBJbnQ1MlJlcDoKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKICAgICBjYXNlIE1vdkhpbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw4ICsx
MjMsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0
eSgpOwogICAgICAgICAgICAgZWxzZSBpZiAobm9kZUNhblNwZWN1bGF0ZUludDMyKG5vZGUtPmFy
aXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0
aDo6Q2hlY2tPdmVyZmxvdyk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkRvT3ZlcmZsb3cpOwor
ICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAg
LTEzNSwxMCArMTM3LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyRXhw
ZWN0aW5nRGVmaW5lZChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUo
KSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICAgICAgICAgIG5vZGUtPnNldE9wKEFyaXRoQWRkKTsKICAgICAgICAgICAgICAgICBub2Rl
LT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCk7CisgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0xNzcsOCArMTgw
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcml0aFN1YjogewogICAgICAgICAgICAgaWYg
KGF0dGVtcHRUb01ha2VJbnRlZ2VyQWRkKG5vZGUpKQogICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhF
ZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxE
b3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3Vs
dChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTE5NCwxNCArMTk4LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobV9ncmFwaC5uZWdhdGVTaG91
bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxN
YWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGlmIChieXRlY29k
ZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9k
ZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CisgICAgICAgICAgICAgICAg
bm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIxOCwxNiArMjI0LDE4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAobV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgICAgICAgICBpZiAoYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJp
dGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShB
cml0aDo6Q2hlY2tPdmVyZmxvdyk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3dBbmROZWdhdGl2
ZVplcm8pOworICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZml4
RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TnVt
YmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91
YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTI0NiwyNCArMjU0LDI2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUo
QXJpdGg6OkNoZWNrT3ZlcmZsb3dBbmROZWdhdGl2ZVplcm8pOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1i
ZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVz
ZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+
KG5vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8g
ZG8gcmVmJ2luZyBvbiB0aGUgY2hpbGRyZW4gYmVjYXVzZSB3ZSdyZSBzdGVhbGluZyB0aGVtIGZy
b20KICAgICAgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgZGl2aXNpb24uCiAgICAgICAgICAg
ICAgICAgTm9kZSogbmV3RGl2aXNpb24gPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAg
ICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0RvdWJsZSwgKm5vZGUpOworICAg
ICAgICAgICAgICAgIG5ld0RpdmlzaW9uLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3AoRG91YmxlQXNJbnQz
Mik7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4uaW5pdGlhbGl6ZShFZGdlKG5ld0Rp
dmlzaW9uLCBLbm93bk51bWJlclVzZSksIEVkZ2UoKSwgRWRnZSgpKTsKKyAgICAgICAgICAgICAg
ICBub2RlLT5jaGlsZHJlbi5pbml0aWFsaXplKEVkZ2UobmV3RGl2aXNpb24sIERvdWJsZVJlcFVz
ZSksIEVkZ2UoKSwgRWRnZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYnl0ZWNvZGVDYW5JZ25v
cmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7CiAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6
OkNoZWNrT3ZlcmZsb3dBbmROZWdhdGl2ZVplcm8pOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
IG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTI3NSw4ICsyODUsOSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVy
VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yODYsMTQgKzI5Nywx
NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhF
ZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0
UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFyaXRoU3FydDoKICAgICAgICAgY2FzZSBBcml0
aFNpbjoKICAgICAgICAgY2FzZSBBcml0aENvczogewotICAgICAgICAgICAgZml4RWRnZTxOdW1i
ZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3Vs
dERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBA
IC0zMDUsNyArMzE4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91
YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpCiAgICAgICAgICAgICAgICAgZml4RWRn
ZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzM2
LDE0ICszNDksMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChl
bmFibGVJbnQ1MigpCiAgICAgICAgICAgICAgICAgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFj
aGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9i
YmVyc1dvcmxkKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9k
ZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxO
dW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJl
clVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVw
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBV
c2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5v
ZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CkBAIC00MDEsMTMgKzQxNCwxMyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkKICAgICAgICAgICAgICAgICAm
JiBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwg
bm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGlu
ZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGlu
ZUludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJS
ZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVw
VXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4
RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmlu
Z0lkZW50KCkpIHsKQEAgLTUwMCw3ICs1MTMsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgeworICAgICAgICAgICAgYXJyYXlNb2RlID0gbm9k
ZS0+YXJyYXlNb2RlKCk7CisgICAgICAgICAgICBzd2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsK
ICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnM6CiAgICAgICAg
ICAgICBjYXNlIEFycmF5OjpVbnByb2ZpbGVkOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6VW5k
ZWNpZGVkOgpAQCAtNTE5LDYgKzUzMywyNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgICAgICBzd2l0Y2ggKGFy
cmF5TW9kZS50eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKKyAgICAg
ICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6
OkZsb2F0NjRBcnJheToKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3Vs
dERvdWJsZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJBcnJheToKKyAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQorICAgICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTU1OCwxNCArNTkwLDE0IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKICAgICAgICAg
ICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGlmIChj
aGlsZDMtPnByZWRpY3Rpb24oKSAmIFNwZWNJbnQ1MikKLSAgICAgICAgICAgICAgICAgICAgZml4
RWRnZTxNYWNoaW5lSW50VXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdl
PEludDUyUmVwVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEtub3duQ2VsbFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihjaGlsZDIpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8UmVhbE51bWJlclVzZT4oY2hp
bGQzKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFJlYWxVc2U+KGNoaWxkMyk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJy
YXk6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQxNkFycmF5OgpAQCAtNTc5LDE1ICs2MTEs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQzLT5zaG91bGRTcGVjdWxh
dGVJbnQzMigpKQogICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDMp
OwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkMy0+c2hvdWxkU3BlY3VsYXRlTWFjaGlu
ZUludCgpKQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KGNoaWxk
Myk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGNoaWxkMyk7CiAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVz
ZT4oY2hpbGQzKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KGNo
aWxkMyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpG
bG9hdDMyQXJyYXk6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CiAgICAg
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KGNoaWxkMSk7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51
bWJlclVzZT4oY2hpbGQzKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4o
Y2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6
OkNvbnRpZ3VvdXM6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CkBAIC02
MjksNyArNjYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNl
Pihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxSZWFsTnVtYmVyVXNl
Pihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBSZWFs
VXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6QXJyYXlT
dG9yYWdlOgpAQCAtNjYyLDcgKzY5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBlbHNlIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBlbHNlIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpCi0gICAgICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogCiAgICAgICAgICAgICBOb2Rl
KiBsb2dpY2FsTm90ID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICAgICAgaWYgKGxv
Z2ljYWxOb3QtPm9wKCkgPT0gTG9naWNhbE5vdCkgewpAQCAtNzU5LDcgKzc5MSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFMTF9ET1VCTEVf
SU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBvcGVyYW5kSW5k
ZXggPSAwOyBvcGVyYW5kSW5kZXggPCBub2RlLT5udW1DaGlsZHJlbigpOyArK29wZXJhbmRJbmRl
eCkKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxSZWFsTnVtYmVyVXNlPihtX2dyYXBoLm1f
dmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgb3BlcmFuZEluZGV4XSk7CisgICAg
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwUmVhbFVzZT4obV9ncmFwaC5tX3ZhckFy
Z0NoaWxkcmVuW25vZGUtPmZpcnN0Q2hpbGQoKSArIG9wZXJhbmRJbmRleF0pOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19U
WVBFUzoKICAgICAgICAgICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfSU5ERVhJTkdfVFlQRVM6
CkBAIC05NjAsMTYgKzk5MiwxNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVGllclVw
SW5Mb29wOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgICAgIGNhc2Ug
Q2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKLSAgICAgICAgY2FzZSBJbnQ1MlRvRG91YmxlOgotICAg
ICAgICBjYXNlIEludDUyVG9WYWx1ZToKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoK
ICAgICAgICAgY2FzZSBDaGVja0FycmF5OgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAg
ICAgICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICAgICAgY2FzZSBEb3VibGVB
c0ludDMyOgotICAgICAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAgICAgIGNhc2UgVmFsdWVU
b0ludDMyOgogICAgICAgICBjYXNlIEhhcmRQaGFudG9tOiAvLyBIYXJkUGhhbnRvbSB3b3VsZCBi
ZSB0cml2aWFsIHRvIGhhbmRsZSBidXQgYW55d2F5IHdlIGFzc2VydCB0aGF0IHdlIHdvbid0IHNl
ZSBpdCBoZXJlIHlldC4KKyAgICAgICAgY2FzZSBEb3VibGVSZXA6CisgICAgICAgIGNhc2UgSW50
NTJSZXA6CisgICAgICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgICAgICAgICAvLyBUaGVzZSBhcmUg
anVzdCBub2RlcyB0aGF0IHdlIGRvbid0IGN1cnJlbnRseSBleHBlY3QgdG8gc2VlIGR1cmluZyBm
aXh1cC4KICAgICAgICAgICAgIC8vIElmIHdlIGV2ZXIgd2FudGVkIHRvIGluc2VydCB0aGVtIHBy
aW9yIHRvIGZpeHVwLCB0aGVuIHdlIGp1c3QgaGF2ZSB0byBjcmVhdGUKICAgICAgICAgICAgIC8v
IGZpeHVwIHJ1bGVzIGZvciB0aGVtLgpAQCAtMTMyNywxMyArMTM1OSwxMyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91
YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIEZsdXNoZWRJbnQ1MjoKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNl
Pihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIEZsdXNoZWRDZWxsOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwpAQCAtMTQ2Niw3ICsxNDk4LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRv
VW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6
Ci0gICAgICAgIGNhc2UgUmVhbE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6
CisgICAgICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKICAgICAgICAgICAgIGlmICh2YXJpYWJs
ZS0+ZG91YmxlRm9ybWF0U3RhdGUoKSA9PSBVc2luZ0RvdWJsZUZvcm1hdCkKICAgICAgICAgICAg
ICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJs
ZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0NzUsNyArMTUwOCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfHwgaXNCb29sZWFuU3BlY3VsYXRpb24odmFyaWFi
bGUtPnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdl
ZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgY2FzZSBJbnQ1
MlJlcFVzZToKICAgICAgICAgICAgIGlmIChpc01hY2hpbmVJbnRTcGVjdWxhdGlvbih2YXJpYWJs
ZS0+cHJlZGljdGlvbigpKSkKICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2Vk
IHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTE1MTgsOSArMTU1MSw5IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAg
ICBVc2VLaW5kIHVzZUtpbmQ7CiAgICAgICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNo
aW5lSW50KCkpCi0gICAgICAgICAgICB1c2VLaW5kID0gTWFjaGluZUludFVzZTsKKyAgICAgICAg
ICAgIHVzZUtpbmQgPSBJbnQ1MlJlcFVzZTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+c2hvdWxk
U3BlY3VsYXRlTnVtYmVyKCkpCi0gICAgICAgICAgICB1c2VLaW5kID0gTnVtYmVyVXNlOworICAg
ICAgICAgICAgdXNlS2luZCA9IERvdWJsZVJlcFVzZTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+
c2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpKQogICAgICAgICAgICAgdXNlS2luZCA9IEJvb2xlYW5V
c2U7CiAgICAgICAgIGVsc2UKQEAgLTE1ODgsOSArMTYyMSwxMCBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVNYWNo
aW5lSW50KG5vZGUpKSB7Ci0gICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKKyAgICAg
ICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xNzM1LDg1ICsxNzY5LDc1IEBAIHBy
aXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlQobm9kZSA9PSBtX2N1cnJlbnROb2RlKTsKICAg
ICAgICAgCi0gICAgICAgIGlmIChpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpIHsKLSAgICAgICAg
ICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgewotICAg
ICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MkFz
RG91YmxlLCBJbnQzMlRvRG91YmxlLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4s
IEVkZ2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChlZGdlLnVzZUtpbmQoKSkgeworICAgICAg
ICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOiB7Cisg
ICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpCisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYmIGVk
Z2UtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkgewotICAgICAgICAgICAgICAgIC8vIE1h
a2UgYWxsIGRvdWJsZSB1c2VzIG9mIGludDUyIHZhbHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJ
bnQ1MlRvRG91YmxlLgotICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBzYW1lIHJl
YXNvbiBhcyBJbnQ1MlRvVmFsdWUgKHNlZSBiZWxvdykgZXhjZXB0IHRoYXQKLSAgICAgICAgICAg
ICAgICAvLyBJbnQ4VG9Eb3VibGUgd2lsbCBjb252ZXJ0IGludDUyJ3MgdGhhdCBmaXQgaW4gYW4g
aW50MzIgaW50byBhIGRvdWJsZQotICAgICAgICAgICAgICAgIC8vIHJhdGhlciB0aGFuIHRyeWlu
ZyB0byBjcmVhdGUgYSBib3hlZCBpbnQzMiBsaWtlIEludDUyVG9WYWx1ZSBkb2VzLgotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUo
KSk7Ci0gICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MkFzRG91
YmxlLCBJbnQ1MlRvRG91YmxlLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4sIEVk
Z2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwotICAgICAgICAgICAgICAgIGVkZ2Uuc2V0Tm9k
ZShyZXN1bHQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGFkZFJlcXVp
cmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7CisKKyAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKKyAg
ICAgICAgICAgIGlmIChlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKSB7CisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAg
bV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MkFzRG91YmxlLCBEb3VibGVSZXAsIG5vZGUtPm9yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgSW50NTJSZXBVc2UpKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNw
ZWNEb3VibGUsIERvdWJsZVJlcCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBF
ZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgaWYgKGVuYWJsZUludDUyKCkgJiYgZWRnZS51c2VLaW5kKCkgIT0g
TWFjaGluZUludFVzZQotICAgICAgICAgICAgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGlu
ZUludCgpICYmICFlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7Ci0gICAgICAgICAgICAv
LyBXZSBtYWtlIGFsbCBub24taW50NTIgdXNlcyBvZiBpbnQ1MiB2YWx1ZXMgaGF2ZSBhbiBpbnRl
cm1lZGlhdGUgSW50NTJUb1ZhbHVlCi0gICAgICAgICAgICAvLyBub2RlIHRvIGVuc3VyZSB0aGF0
IHdlIGhhbmRsZSB0aGlzIHByb3Blcmx5OgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8v
IGE6IFNvbWVJbnQ1MgotICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoQGEsIC4uLikKLSAgICAg
ICAgICAgIC8vIGM6IENhbGwoLi4uLCBAYSkKLSAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEBh
LCAuLi4pCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gV2l0aG91dCBhbiBpbnRlcm1l
ZGlhdGUgbm9kZSBhbmQganVzdCBsYWJlbGluZyB0aGUgdXNlcywgd2Ugd2lsbCBnZXQ6Ci0gICAg
ICAgICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29tZUludDUyCi0gICAgICAgICAgICAvLyBi
OiBBcml0aEFkZChJbnQ1MjpAYSwgLi4uKQotICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIFVu
dHlwZWQ6QGEpCi0gICAgICAgICAgICAvLyBkOiBBcml0aEFkZChJbnQ1MjpAYSwgLi4uKQotICAg
ICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIEFuZCBub3cgdGhlIGMtPlVudHlwZWQ6QGEgZWRn
ZSB3aWxsIGJveCB0aGUgdmFsdWUgb2YgQGEgaW50byBhIGRvdWJsZS4gVGhpcwotICAgICAgICAg
ICAgLy8gaXMgYmFkLCBiZWNhdXNlIG5vdyB0aGUgZC0+SW50NTI6QGEgZWRnZSB3aWxsIGVpdGhl
ciBoYXZlIHRvIGRvIGRvdWJsZS10by1pbnQKLSAgICAgICAgICAgIC8vIGNvbnZlcnNpb25zLCBv
ciB3aWxsIGhhdmUgdG8gT1NSIGV4aXQgdW5jb25kaXRpb25hbGx5LiBBbHRlcm5hdGl2ZWx5IHdl
IGNvdWxkCi0gICAgICAgICAgICAvLyBoYXZlIHRoZSBjLT5VbnR5cGVkOkBhIGVkZ2UgYm94IHRo
ZSB2YWx1ZSBieSBjb3B5aW5nIHJhdGhlciB0aGFuIGluLXBsYWNlLgotICAgICAgICAgICAgLy8g
QnV0IHRoZXNlIGJveGluZ3MgYXJlIGFsc28gY29zdGx5IHNvIHRoaXMgd291bGRuJ3QgYmUgZ3Jl
YXQuCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gVGhlIHNvbHV0aW9uIHdlIHVzZSBp
cyB0byBhbHdheXMgaGF2ZSBub24tSW50NTIgdXNlcyBvZiBwcmVkaWN0ZWQgSW50NTIncyB1c2UK
LSAgICAgICAgICAgIC8vIGFuIGludGVydmVuaW5nIEludDUyVG9WYWx1ZSBub2RlOgotICAgICAg
ICAgICAgLy8KLSAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ1MgotICAgICAgICAgICAgLy8gYjog
QXJpdGhBZGQoSW50NTI6QGEsIC4uLikKLSAgICAgICAgICAgIC8vIHg6IEludDUyVG9WYWx1ZShJ
bnQ1MjpAYSkKLSAgICAgICAgICAgIC8vIGM6IENhbGwoLi4uLCBVbnR5cGVkOkB4KQotICAgICAg
ICAgICAgLy8gZDogQXJpdGhBZGQoSW50NTI6QGEsIC4uLikKLSAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICAvLyBOb3RlIHRoYXQgZXZlbiBpZiB3ZSBoYWQgbXVsdGlwbGUgbm9uLWludDUyIHVz
ZXMgb2YgQGEsIHRoZSBtdWx0aXBsZQotICAgICAgICAgICAgLy8gSW50NTJUb1ZhbHVlJ3Mgd291
bGQgZ2V0IENTRSdkIHRvZ2V0aGVyLiBTbyB0aGUgYm94aW5nIHdvdWxkIG9ubHkgaGFwcGVuIG9u
Y2UuCi0gICAgICAgICAgICAvLyBBdCB0aGUgc2FtZSB0aW1lLCBAYSB3b3VsZCBjb250aW51ZSB0
byBiZSByZXByZXNlbnRlZCBhcyBhIG5hdGl2ZSBpbnQ1Mi4KLSAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICAvLyBBbiBhbHRlcm5hdGl2ZSB3b3VsZCBoYXZlIGJlZW4gdG8gaW5zZXJ0IFRvTmF0
aXZlSW50NTIgbm9kZXMgb24gaW50NTIgdXNlcyBvZgotICAgICAgICAgICAgLy8gaW50NTIncy4g
VGhpcyB3b3VsZCBoYXZlIGhhbmRsZWQgdGhlIGFib3ZlIGV4YW1wbGUgYnV0IHdvdWxkIGZhbGwg
b3ZlciBmb3I6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29tZUludDUyCi0g
ICAgICAgICAgICAvLyBiOiBDYWxsKC4uLiwgQGEpCi0gICAgICAgICAgICAvLyBjOiBBcml0aEFk
ZChAYSwgLi4uKQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIEJ1dCB0aGUgc29sdXRp
b24gd2UgdXNlIGhhbmRsZXMgdGhlIGFib3ZlIGdyYWNlZnVsbHkuCisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0ludDUy
UmVzdWx0KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAgICBOb2RlKiBy
ZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgIG1faW5k
ZXhJbkJsb2NrLCBTcGVjSW50NTIsIEludDUyVG9WYWx1ZSwKLSAgICAgICAgICAgICAgICBub2Rl
LT5vcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIFVudHlwZWRVc2UpKTsKKworICAgICAgICAgICAg
Tm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKSB7
CisgICAgICAgICAgICAgICAgLy8gVGhpcyB3aWxsIG5ldmVyIGhhcHBlbi4KKyAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfSBlbHNlIGlm
IChlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgeworICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAg
ICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIsIEludDUyUmVwLCBub2RlLT5vcmlnaW4s
CisgICAgICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIEludDMyVXNlKSk7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgb25seSBoZXJl
IGZvciBkZWFsaW5nIHdpdGggY29uc3RhbnRzLgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGVkZ2UtPm9wKCkgPT0gSlNDb25zdGFudCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNNYWNoaW5lSW50LCBJbnQ1MkNvbnN0YW50LCBub2RlLT5vcmlnaW4sCisgICAg
ICAgICAgICAgICAgICAgIE9wSW5mbyhlZGdlLT5jb25zdGFudE51bWJlcigpKSk7CisgICAgICAg
ICAgICB9CisKICAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOwotICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICBkZWZhdWx0OiB7CisgICAgICAgICAgICBpZiAoIWVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgp
ICYmICFlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBOb2RlKiByZXN1bHQ7CisgICAgICAgICAgICBpZiAo
ZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9j
aywgU3BlY0RvdWJsZSwgVmFsdWVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgRWRnZShlZGdlLm5vZGUoKSwgRG91YmxlUmVwVXNlKSk7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisg
ICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIgfCBTcGVjSW50NTJB
c0RvdWJsZSwgVmFsdWVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgRWRn
ZShlZGdlLm5vZGUoKSwgSW50NTJSZXBVc2UpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfSB9CiAgICAgfQogICAgIAogICAgIHZvaWQgYWRkUmVxdWlyZWRQaGFudG9tKE5v
ZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1h
dC5oCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zs
dXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgaW5saW5lIE5vZGVG
bGFncyByZXN1bHRGb3IoRmx1c2hGb3JtYXQgZgogICAgIGNhc2UgRmx1c2hlZEludDUyOgogICAg
ICAgICByZXR1cm4gTm9kZVJlc3VsdEludDUyOwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAg
ICAgICAgcmV0dXJuIE5vZGVSZXN1bHROdW1iZXI7CisgICAgICAgIHJldHVybiBOb2RlUmVzdWx0
RG91YmxlOwogICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CiAgICAgICAgIHJldHVybiBOb2RlUmVz
dWx0Qm9vbGVhbjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAko
cmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsMTMgQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICByZXR1cm4gZmlsdGVyRmxhZ3MofmZsYWdzKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBzZXRS
ZXN1bHQoTm9kZUZsYWdzIHJlc3VsdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKHJlc3VsdCAm
IH5Ob2RlUmVzdWx0TWFzaykpOworICAgICAgICBjbGVhckZsYWdzKE5vZGVSZXN1bHRNYXNrKTsK
KyAgICAgICAgbWVyZ2VGbGFncyhyZXN1bHQpOworICAgIH0KKyAgICAKICAgICB2b2lkIHNldE9w
QW5kRGVmYXVsdEZsYWdzKE5vZGVUeXBlIG9wKQogICAgIHsKICAgICAgICAgbV9vcCA9IG9wOwpA
QCAtMzg1LDYgKzM5Miw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICB7CiAgICAgICAgIHN3aXRjaCAo
b3AoKSkgewogICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgRG91YmxlQ29u
c3RhbnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgY2FzZSBXZWFrSlND
b25zdGFudDoKICAgICAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC00MDEsNyArNDEwLDEyIEBAIHN0cnVjdCBOb2RlIHsKICAgICAKICAgICB2
b2lkIGNvbnZlcnRUb0NvbnN0YW50KHVuc2lnbmVkIGNvbnN0YW50TnVtYmVyKQogICAgIHsKLSAg
ICAgICAgbV9vcCA9IEpTQ29uc3RhbnQ7CisgICAgICAgIGlmIChoYXNEb3VibGVSZXN1bHQoKSkK
KyAgICAgICAgICAgIG1fb3AgPSBEb3VibGVDb25zdGFudDsKKyAgICAgICAgZWxzZSBpZiAoaGFz
SW50NTJSZXN1bHQoKSkKKyAgICAgICAgICAgIG1fb3AgPSBJbnQ1MkNvbnN0YW50OworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBtX29wID0gSlNDb25zdGFudDsKICAgICAgICAgbV9mbGFncyAm
PSB+KE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9iYmVyIHwgTm9kZUNsb2JiZXJzV29y
bGQpOwogICAgICAgICBtX29wSW5mbyA9IGNvbnN0YW50TnVtYmVyOwogICAgICAgICBjaGlsZHJl
bi5yZXNldCgpOwpAQCAtODA1LDExICs4MTksMjEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBy
ZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdEludDMyOwogICAg
IH0KICAgICAKKyAgICBib29sIGhhc0ludDUyUmVzdWx0KCkKKyAgICB7CisgICAgICAgIHJldHVy
biAobV9mbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0SW50NTI7CisgICAgfQor
ICAgIAogICAgIGJvb2wgaGFzTnVtYmVyUmVzdWx0KCkKICAgICB7CiAgICAgICAgIHJldHVybiAo
bV9mbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0TnVtYmVyOwogICAgIH0KICAg
ICAKKyAgICBib29sIGhhc0RvdWJsZVJlc3VsdCgpCisgICAgeworICAgICAgICByZXR1cm4gKG1f
ZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdERvdWJsZTsKKyAgICB9CisgICAg
CiAgICAgYm9vbCBoYXNKU1Jlc3VsdCgpCiAgICAgewogICAgICAgICByZXR1cm4gKG1fZmxhZ3Mg
JiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdEpTOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw2ICs0Nyw5IEBAIHZvaWQgZHVtcE5vZGVGbGFncyhQcmludFN0cmVhbSYgYWN0dWFsT3UKICAg
ICAgICAgY2FzZSBOb2RlUmVzdWx0TnVtYmVyOgogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAiTnVtYmVyIik7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOb2RlUmVzdWx0
TnVtYmVyOgorICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRG91YmxlIik7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6CiAgICAgICAgICAgICBv
dXQucHJpbnQoY29tbWEsICJJbnQzMiIpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDE2NzE4MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDEwICszOCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAjZGVm
aW5lIE5vZGVSZXN1bHRNYXNrICAgICAgICAgICAgICAgICAgIDB4MDAwNwogI2RlZmluZSBOb2Rl
UmVzdWx0SlMgICAgICAgICAgICAgICAgICAgICAweDAwMDEKICNkZWZpbmUgTm9kZVJlc3VsdE51
bWJlciAgICAgICAgICAgICAgICAgMHgwMDAyCi0jZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAg
ICAgICAgICAgICAgIDB4MDAwMwotI2RlZmluZSBOb2RlUmVzdWx0SW50NTIgICAgICAgICAgICAg
ICAgICAweDAwMDQKLSNkZWZpbmUgTm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAgICAgICAgMHgw
MDA1Ci0jZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdlICAgICAgICAgICAgICAgIDB4MDAwNgorI2Rl
ZmluZSBOb2RlUmVzdWx0RG91YmxlICAgICAgICAgICAgICAgICAweDAwMDMKKyNkZWZpbmUgTm9k
ZVJlc3VsdEludDMyICAgICAgICAgICAgICAgICAgMHgwMDA0CisjZGVmaW5lIE5vZGVSZXN1bHRJ
bnQ1MiAgICAgICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAg
ICAgICAgICAgICAgICAweDAwMDYKKyNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAg
ICAgICAgMHgwMDA3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogI2RlZmluZSBO
b2RlTXVzdEdlbmVyYXRlICAgICAgICAgICAgICAgICAweDAwMDggLy8gc2V0IG9uIG5vZGVzIHRo
YXQgaGF2ZSBzaWRlIGVmZmVjdHMsIGFuZCBtYXkgbm90IHRyaXZpYWxseSBiZSByZW1vdmVkIGJ5
IERDRS4KICNkZWZpbmUgTm9kZUhhc1ZhckFyZ3MgICAgICAgICAgICAgICAgICAgMHgwMDEwCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNjcx
ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDYgKzM3LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICAvKiBBIGNvbnN0YW50IGluIHRoZSBDb2RlQmxvY2sncyBjb25zdGFudCBwb29sLiAqL1wK
ICAgICBtYWNybyhKU0NvbnN0YW50LCBOb2RlUmVzdWx0SlMgfCBOb2RlRG9lc05vdEV4aXQpIFwK
ICAgICBcCisgICAgLyogQ29uc3RhbnRzIHdpdGggc3BlY2lmaWMgcmVwcmVzZW50YXRpb25zLiAq
L1wKKyAgICBtYWNybyhEb3VibGVDb25zdGFudCwgTm9kZVJlc3VsdERvdWJsZSB8IE5vZGVEb2Vz
Tm90RXhpdCkgXAorICAgIG1hY3JvKEludDUyQ29uc3RhbnQsIE5vZGVSZXN1bHRJbnQ1MiB8IE5v
ZGVEb2VzTm90RXhpdCkgXAorICAgIFwKICAgICAvKiBBIGNvbnN0YW50IG5vdCBpbiB0aGUgQ29k
ZUJsb2NrJ3MgY29uc3RhbnQgcG9vbC4gVXNlcyBnZXQgcGF0Y2hlZCB0byBqdW1wcyB0aGF0IGV4
aXQgdGhlICovXAogICAgIC8qIGNvZGUgYmxvY2suICovXAogICAgIG1hY3JvKFdlYWtKU0NvbnN0
YW50LCBOb2RlUmVzdWx0SlMgfCBOb2RlRG9lc05vdEV4aXQpIFwKQEAgLTEwNiwxNSArMTEwLDEz
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBVc2VkIHRvIGJveCB0
aGUgcmVzdWx0IG9mIFVSU2hpZnQgbm9kZXMgKHJlc3VsdCBoYXMgcmFuZ2UgMC4uMl4zMi0xKS4g
Ki9cCiAgICAgbWFjcm8oVUludDMyVG9OdW1iZXIsIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBc
Ci0gICAgLyogVXNlZCB0byBjYXN0IGtub3duIGludGVnZXJzIHRvIGRvdWJsZXMsIHNvIGFzIHRv
IHNlcGFyYXRlIHRoZSBkb3VibGUgZm9ybSAqL1wKLSAgICAvKiBvZiB0aGUgdmFsdWUgZnJvbSB0
aGUgaW50ZWdlciBmb3JtLiAqL1wKLSAgICBtYWNybyhJbnQzMlRvRG91YmxlLCBOb2RlUmVzdWx0
TnVtYmVyKSBcCi0gICAgLyogVXNlZCB0byBzcGVjdWxhdGUgdGhhdCBhIGRvdWJsZSB2YWx1ZSBp
cyBhY3R1YWxseSBhbiBpbnRlZ2VyLiAqL1wKKyAgICAvKiBBdHRlbXB0IHRvIHRydW5jYXRlIGEg
ZG91YmxlIHRvIGludDMyOyB0aGlzIHdpbGwgZXhpdCBpZiBpdCBjYW4ndCBkbyBpdC4gKi9cCiAg
ICAgbWFjcm8oRG91YmxlQXNJbnQzMiwgTm9kZVJlc3VsdEludDMyKSBcCi0gICAgLyogVXNlZCB0
byBzZXBhcmF0ZSByZXByZXNlbnRhdGlvbiBhbmQgcmVnaXN0ZXIgYWxsb2NhdGlvbiBvZiBJbnQ1
MidzIHJlcHJlc2VudGVkICovXAotICAgIC8qIGFzIHZhbHVlcy4gKi9cCi0gICAgbWFjcm8oSW50
NTJUb1ZhbHVlLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNybyhJbnQ1MlRvRG91YmxlLCBOb2Rl
UmVzdWx0TnVtYmVyKSBcCisgICAgXAorICAgIC8qIENoYW5nZSB0aGUgcmVwcmVzZW50YXRpb24g
b2YgYSB2YWx1ZS4gKi9cCisgICAgbWFjcm8oRG91YmxlUmVwLCBOb2RlUmVzdWx0RG91YmxlKSBc
CisgICAgbWFjcm8oSW50NTJSZXAsIE5vZGVSZXN1bHRJbnQ1MikgXAorICAgIG1hY3JvKFZhbHVl
UmVwLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGFyaXRobWV0aWMg
b3BlcmF0aW9ucy4gKi9cCiAgICAgbWFjcm8oQXJpdGhBZGQsIE5vZGVSZXN1bHROdW1iZXIpIFwK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDg5LDcgKzQ4OSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0
QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKLSAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgogICAg
ICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgIGNhc2UgR2V0TG9jYWxVbmxpbmtlZDoK
ICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKQEAgLTUwMywxMSArNTAyLDEyIEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICAgICAgY2Fz
ZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50
OgotICAgICAgICBjYXNlIEludDUyVG9WYWx1ZToKLSAgICAgICAgY2FzZSBJbnQ1MlRvRG91Ymxl
OgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMy
OgotICAgICAgICBjYXNlIEhhcmRQaGFudG9tOiB7CisgICAgICAgIGNhc2UgSGFyZFBoYW50b206
CisgICAgICAgIGNhc2UgRG91YmxlUmVwOgorICAgICAgICBjYXNlIEludDUyUmVwOgorICAgICAg
ICBjYXNlIFZhbHVlUmVwOiB7CiAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVy
IGJlIHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxhdGlvbi4gSXQgaXMKICAgICAgICAg
ICAgIC8vIGluc2VydGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZvbGxvd3MgdGhpcyBwaGFzZS4KICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTY3MTgyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExMSw2ICsxMTEsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0CiAKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNlIEpTQ29uc3Rh
bnQ6CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAg
ICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAgICBjYXNlIElkZW50aXR5OgogICAgIGNhc2UgVG9U
aGlzOgpAQCAtMTM4LDcgKzE0MCw2IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRl
VHlwZSYgc3QKICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICBjYXNlIFVJbnQzMlRvTnVtYmVy
OgogICAgIGNhc2UgSW50MzJUb0RvdWJsZToKLSAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAg
Y2FzZSBBcml0aEFkZDoKICAgICBjYXNlIEFyaXRoU3ViOgogICAgIGNhc2UgQXJpdGhOZWdhdGU6
CkBAIC0yNDEsOCArMjQyLDYgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdAogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICBjYXNlIENoZWNrVGllclVw
QW5kT1NSRW50ZXI6CiAgICAgY2FzZSBMb29wSGludDoKLSAgICBjYXNlIEludDUyVG9Eb3VibGU6
Ci0gICAgY2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CiAgICAgY2Fz
ZSBTdG9yZUJhcnJpZXJXaXRoTnVsbENoZWNrOgogICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6
CkBAIC0yNTQsNiArMjUzLDkgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNh
c2UgTXVsdGlQdXRCeU9mZnNldDoKKyAgICBjYXNlIFZhbHVlUmVwOgorICAgIGNhc2UgRG91Ymxl
UmVwOgorICAgIGNhc2UgSW50NTJSZXA6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAK
ICAgICBjYXNlIEdldEJ5VmFsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDYsMjEgKzEwNiw5IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUo
RWRnZSAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAgICAgICAgICAgY2Fz
ZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQo
SklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAg
ICAgICAgICBib3hJbnQ1MihncHIsIGdwciwgc3BpbGxGb3JtYXQpOwotICAgICAgICAgICAgICAg
IHJldHVybiBncHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgICAgIGlmIChzcGls
bEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIE5l
ZWQgdG8gYm94IHRoZSBkb3VibGUsIHNpbmNlIHdlIHdhbnQgYSBKU1ZhbHVlLgotICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5zdWI2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGdw
cik7Ci0gICAgICAgICAgICAgICAgICAgIHNwaWxsRm9ybWF0ID0gRGF0YUZvcm1hdEpTRG91Ymxl
OwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJl
YW0sIGdwciwgc3BpbGxGb3JtYXQpOwpAQCAtMTQzLDI4ICsxMzEsNiBAQCBHUFJSZWcgU3BlY3Vs
YXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQog
Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7Ci0gICAgICAgIEZQUlJlZyBmcHIgPSBpbmZv
LmZwcigpOwotICAgICAgICBHUFJSZWcgZ3ByID0gYm94RG91YmxlKGZwcik7Ci0KLSAgICAgICAg
Ly8gVXBkYXRlIGFsbCBpbmZvCi0gICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBn
cHIsIERhdGFGb3JtYXRKU0RvdWJsZSk7Ci0gICAgICAgIG1fZnBycy5yZWxlYXNlKGZwcik7Ci0g
ICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7
Ci0KLSAgICAgICAgcmV0dXJuIGdwcjsKLSAgICB9Ci0gICAgICAgIAotICAgIGNhc2UgRGF0YUZv
cm1hdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOiB7Ci0gICAgICAgIEdQ
UlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBsb2NrKGdwcik7Ci0gICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSBhbGxvY2F0ZSgpOwotICAgICAgICBib3hJbnQ1MihncHIsIHJlc3VsdEdQ
UiwgaW5mby5yZWdpc3RlckZvcm1hdCgpKTsKLSAgICAgICAgdW5sb2NrKGdwcik7Ci0gICAgICAg
IHJldHVybiByZXN1bHRHUFI7Ci0gICAgfQotCiAgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKICAg
ICAgICAgLy8gTm8gcmV0YWcgcmVxdWlyZWQgb24gSlNWQUxVRTY0IQogICAgIGNhc2UgRGF0YUZv
cm1hdEpTOgpAQCAtNzY5LDEyICs3MzUsNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVJbnQzCiAgICAgCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsK
ICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAgICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0
KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRp
dmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwotICAgICAgICAgICAg
cmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOwotICAgICAgICAgICAgcmV0dXJuIGFsbG9j
YXRlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCiAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0
ZSgpOwogCiAgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CkBAIC03ODgsNyArNzQ4
LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICAK
ICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAg
ICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRK
UykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyIHx8IHNwaWxsRm9ybWF0ID09IERh
dGFGb3JtYXRJbnQ1MiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMik7CiAgICAgICAgIAogICAgICAgICBtX2dwcnMu
cmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAgICAgICAg
IApAQCAtODA5LDM2ICs3NjksNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVJbnQzCiAgICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SlNJbnQzMjsKICAg
ICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHNwaWxsRm9ybWF0
ID09IERhdGFGb3JtYXRJbnQ1MiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50
NTIpIHsKLSAgICAgICAgICAgIC8vIEdlbmVyYWxseSwgdGhpcyBjYW4gb25seSBoYXBwZW4gaWYg
d2UndmUgYWxyZWFkeSBwcm92ZWQgdGhhdCB0aGUKLSAgICAgICAgICAgIC8vIHZhbHVlIGlzIGFu
IGludDMyLiBUaGF0J3MgYmVjYXVzZSBpZiBhIHZhbHVlIG9yaWdpbmF0ZWQgYXMgYSBKU1ZhbHVl
Ci0gICAgICAgICAgICAvLyB0aGVuIHdlIHdvdWxkIHNwZWN1bGF0ZSB0aGF0IGl0J3MgYW4gaW50
MzIgYmVmb3JlIHJlcHJlc2VudGluZyBpdCBhcwotICAgICAgICAgICAgLy8gYW4gaW50NTIuIE90
aGVyd2lzZSwgaWYgd2Uga25vd2luZ2x5IHByb2R1Y2VkIGFuIGludDUyLCB0aGVuIHdlIHdvdWxk
Ci0gICAgICAgICAgICAvLyBiZSBib3hpbmcgaXQgaW50byBhIHZhbHVlIHVzaW5nIEludDUyVG9W
YWx1ZS4gVGhpcyBhc3NlcnRpb24gaXMgdmFsaWQKLSAgICAgICAgICAgIC8vIG9ubHkgYmVjYXVz
ZSBJbnQ1MiBpcyBzb21ldGhpbmcgdGhhdCB3ZSBpbnRyb2R1Y2UgYXQgcHJlZGljdGlvbiB0aW1l
LgotICAgICAgICAgICAgLy8gSG93ZXZlcjogd2UgbWF5IGhhdmUgYW4gaW50MzItcHJvZHVjaW5n
IG5vZGUgcmVwbGFjZWQgYnkgYW4KLSAgICAgICAgICAgIC8vIGludDUyLXByb2R1Y2luZyBub2Rl
IGR1ZSB0byBDU0UuIFNvIHdlIG11c3QgZG8gYSBjaGVjay4KLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCEodHlwZSAmIH5TcGVjTWFjaGluZUludCkpOwotICAgICAgICAgICAgaWYgKHR5cGUg
JiBTcGVjSW50NTIpIHsKLSAgICAgICAgICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9jYXRlKCk7
Ci0gICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoZ3ByLCB0ZW1wKTsKLSAg
ICAgICAgICAgICAgICAvLyBDdXJyZW50bHksIHdlIGNhbid0IHN1cHBseSB2YWx1ZSBwcm9maWxp
bmcgaW5mb3JtYXRpb24gaGVyZS4gOi0vCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
aygKLSAgICAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBn
cHIsIHRlbXApKTsKLSAgICAgICAgICAgICAgICB1bmxvY2sodGVtcCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKQot
ICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
bV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdw
cik7Ci0gICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OmludDUyU2hpZnRBbW91bnQpLCBncHIpOwotICAgICAgICAgICAgICAgIG1faml0Lnplcm9FeHRl
bmQzMlRvUHRyKGdwciwgZ3ByKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluZm8uZmls
bEludDMyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFG
b3JtYXRJbnQzMjsKLSAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgIH0KICAgICAgICAg
bV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdw
cik7CiAKICAgICAgICAgLy8gRmlsbCBhcyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJvdWdoLgpAQCAt
ODk3LDQ3ICs4MjcsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQz
CiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIERhdGFGb3Jt
YXRTdHJpY3RJbnQ1MjoKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjogewotICAgICAgICBHUFJS
ZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJlc3VsdDsKLSAgICAgICAgRGF0
YUZvcm1hdCBvbGRGb3JtYXQgPSBpbmZvLnJlZ2lzdGVyRm9ybWF0KCk7Ci0gICAgICAgIGlmICht
X2dwcnMuaXNMb2NrZWQoZ3ByKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gYWxsb2NhdGUoKTsK
LSAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgbG9jayhncHIpOwotICAgICAgICAgICAgaW5mby5maWxsSW50MzIoKm1fc3Ry
ZWFtLCBncHIpOwotICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOwotICAgICAgICB9Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKCEodHlwZSAmIH5TcGVjTWFjaGluZUludCkpOwotICAgICAgICBpZiAo
b2xkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikKLSAgICAgICAgICAgIG1faml0LnJzaGlmdDY0
KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgcmVzdWx0KTsKLSAgICAg
ICAgaWYgKHR5cGUgJiBTcGVjSW50NTIpIHsKLSAgICAgICAgICAgIEdQUlJlZyB0ZW1wID0gYWxs
b2NhdGUoKTsKLSAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdCwgdGVt
cCk7Ci0gICAgICAgICAgICAvLyBDdXJyZW50bHksIHdlIGNhbid0IHN1cHBseSB2YWx1ZSBwcm9m
aWxpbmcgaW5mb3JtYXRpb24gaGVyZS4gOi0vCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KAotICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZXN1bHQsIHRl
bXApKTsKLSAgICAgICAgICAgIHVubG9jayh0ZW1wKTsKLSAgICAgICAgfQotICAgICAgICBtX2pp
dC56ZXJvRXh0ZW5kMzJUb1B0cihyZXN1bHQsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybkZvcm1h
dCA9IERhdGFGb3JtYXRJbnQzMjsKLSAgICAgICAgcmV0dXJuIGdwcjsKLSAgICB9Ci0KLSAgICBj
YXNlIERhdGFGb3JtYXREb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6IHsKLSAg
ICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkgJiYgaXNJbnQzMkNvbnN0YW50KGVkZ2Uubm9k
ZSgpKSkgewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAg
ICBBU1NFUlQoaXNJbnQzMkNvbnN0YW50KGVkZ2Uubm9kZSgpKSk7Ci0gICAgICAgICAgICBtX2pp
dC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW0zMih2YWx1ZU9mSW50MzJDb25zdGFudChlZGdlLm5v
ZGUoKSkpLCBncHIpOwotICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMy
OwotICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgfQotICAgICAgICBGQUxMVEhST1VH
SDsKLSAgICB9CisgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9y
bWF0Q2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgogICAgIGNhc2UgRGF0YUZvcm1h
dEpTQ2VsbDoKQEAgLTk0Nyw3ICs4MzcsMTAgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlSW50MwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CiAKKyAgICBj
YXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBj
YXNlIERhdGFGb3JtYXRJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgCiAgICAgZGVmYXVs
dDoKQEAgLTk4Myw3ICs4NzYsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVJbnQ1CiAKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgewogICAgIGNhc2Ug
RGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgaWYgKChlZGdlLT5oYXNDb25zdGFudCgpICYmICF2
YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSkuaXNNYWNoaW5lSW50KCkpIHx8IGluZm8uc3Bp
bGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7CisgICAgICAgIGlmICgoZWRnZS0+aGFz
Q29uc3RhbnQoKSAmJiAhdmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpLmlzTWFjaGluZUlu
dCgpKSkgewogICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7
CiAgICAgICAgIH0KQEAgLTExMTgsMjYgKzEwMTEsMTAgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsU3BlY3VsYXRlSW50NQogCiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNh
c2UgRGF0YUZvcm1hdEpTRG91YmxlOgotICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkg
ewotICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5u
b2RlKCkpOwotICAgICAgICAgICAgaWYgKGpzVmFsdWUuaXNNYWNoaW5lSW50KCkpIHsKLSAgICAg
ICAgICAgICAgICBpbnQ2NF90IHZhbHVlID0ganNWYWx1ZS5hc01hY2hpbmVJbnQoKTsKLSAgICAg
ICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCi0gICAgICAg
ICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPDwgSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudDsK
LSAgICAgICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgICAg
ICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW02NCh2YWx1ZSksIGdwcik7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBG
QUxMVEhST1VHSDsKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1h
dEJvb2xlYW46CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1h
dEpTQm9vbGVhbjogewotICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwot
ICAgIH0KLQorICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKICAgICBjYXNlIERhdGFGb3Jt
YXRTdG9yYWdlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAKQEAgLTEyMDUsMjQgKzEwODIsNiBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVEb3ViCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0g
ICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOiB7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0g
YWxsb2NhdGUoKTsKLSAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0
ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21w
aWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgaW5m
by5maWxsSW50NTIoKm1fc3RyZWFtLCBncHIpOwotICAgICAgICAgICAgdW5sb2NrKGdwcik7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNhc2Ug
RGF0YUZvcm1hdFN0cmljdEludDUyOiB7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2Nh
dGUoKTsKLSAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNw
aWxsT3JkZXJTcGlsbGVkKTsKLSAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgaW5mby5maWxs
U3RyaWN0SW50NTIoKm1fc3RyZWFtLCBncHIpOwotICAgICAgICAgICAgdW5sb2NrKGdwcik7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKIApAQCAtMTI4NywyOCArMTE0Niw2IEBAIEZQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAgICAgICAgcmV0dXJuIGZw
cjsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOiB7Ci0gICAgICAg
IEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5n
cHIoKTsKLSAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKLSAgICAgICAgR1BSUmVnIHRlbXAgPSBh
bGxvY2F0ZSgpOwotICAgICAgICBtX2ppdC5tb3ZlKGdwciwgdGVtcCk7Ci0gICAgICAgIG1faml0
LnJzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgdGVtcCk7
Ci0gICAgICAgIG1faml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHRlbXAsIGZwcik7Ci0gICAgICAg
IHVubG9jayh0ZW1wKTsKLSAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwotICAgICAgICByZXR1
cm4gZnByOwotICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6
IHsKLSAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgIEdQUlJlZyBn
cHIgPSBpbmZvLmdwcigpOwotICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICBtX2pp
dC5jb252ZXJ0SW50NjRUb0RvdWJsZShncHIsIGZwcik7Ci0gICAgICAgIG1fZ3Bycy51bmxvY2so
Z3ByKTsKLSAgICAgICAgcmV0dXJuIGZwcjsKLSAgICB9Ci0KICAgICAvLyBVbmJveCB0aGUgZG91
YmxlCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6IHsKICAgICAgICAgR1BSUmVnIGdwciA9
IGluZm8uZ3ByKCk7CkBAIC0xMzUyLDExICsxMTg5LDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsU3BlY3VsYXRlQ2VsbAogCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkp
IHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAgICAgIGlmIChpbmZvLnNwaWxsRm9y
bWF0KCkgPT0gRGF0YUZvcm1hdEludDMyIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0RG91YmxlKSB7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gYWxsb2Nh
dGUoKTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRl
KCk7CiAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKQEAgLTE0MDUsMTYgKzEy
MzcsMTYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogICAgIGNh
c2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CiAgICAgY2Fz
ZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNh
c2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgotICAg
IGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOiB7
CisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjogewogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxh
dGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAgIHJl
dHVybiBhbGxvY2F0ZSgpOwogICAgIH0KIAorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAg
ICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAg
IGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTQzMyw3ICsxMjY1LDcgQEAg
R1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogCiAgICAgc3dpdGNoIChp
bmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAg
ICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyIHx8IGluZm8uc3Bp
bGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7CisgICAgICAgIGlmIChpbmZvLnNwaWxs
Rm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyKSB7CiAgICAgICAgICAgICB0ZXJtaW5hdGVTcGVj
dWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAg
ICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICAgICAgfQpAQCAtMTQ4NywxNiArMTMxOSwxNiBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICBjYXNlIERhdGFG
b3JtYXRKU0RvdWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Ci0gICAgY2FzZSBEYXRhRm9y
bWF0SW50NTI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKKyAgICBjYXNlIERh
dGFGb3JtYXRDZWxsOiBQCiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7
CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBE
YXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKKyAgICBjYXNlIERh
dGFGb3JtYXRTdHJpY3RJbnQ1MjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTI0MDAsOCArMjIzMiwxMyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICAgICAgCi0gICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7Ci0gICAgICAgIGNvbXBpbGVJbnQz
MlRvRG91YmxlKG5vZGUpOworICAgIGNhc2UgRG91YmxlUmVwOiB7CisgICAgICAgIGNvbXBpbGVE
b3VibGVSZXAobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2Fz
ZSBWYWx1ZVJlcDogeworICAgICAgICBjb21waWxlVmFsdWVSZXAobm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0yNDEzLDE0ICsyMjUwLDYgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
ICAgIAotICAgIGNhc2UgSW50NTJUb0RvdWJsZTogewotICAgICAgICBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIG9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBGUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMsIG9wZXJhbmQpOwotICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKG9wZXJh
bmQuZnByKCksIHJlc3VsdC5mcHIoKSk7Ci0gICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnBy
KCksIG5vZGUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgICAgIAogICAgIGNhc2UgVmFs
dWVBZGQ6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzOSw2ICsxMDM5LDI4IEBAIEdQUlRl
bXBvcmFyeTo6R1BSVGVtcG9yYXJ5KAogfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAK
K0pTVmFsdWVSZWdzVGVtcG9yYXJ5OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeSgpIHsgfQorCitKU1Zh
bHVlUmVnc1RlbXBvcmFyeTo6SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqIGpp
dCkKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIDogbV9ncHIoaml0KQorI2Vsc2UKKyAgICA6IG1f
cGF5bG9hZEdQUihqaXQpCisgICAgLCBtX3RhZ0dQUihqaXQpCit7Cit9CisKK0pTVmFsdWVSZWdz
VGVtcG9yYXJ5Ojp+SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoKSB7IH0KKworSlNWYWx1ZVJlZ3MgSlNW
YWx1ZVJlZ3NUZW1wb3Jhcnk6OnJlZ3MoKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0
dXJuIEpTVmFsdWVSZWdzKG1fZ3ByLmdwcigpKTsKKyNlbHNlCisgICAgcmV0dXJuIEpTVmFsdWVS
ZWdzKG1fdGFnR1BSLmdwcigpLCBtX3BheWxvYWRHUFIuZ3ByKCkpOworI2VuZGlmCit9CisKIHZv
aWQgR1BSVGVtcG9yYXJ5OjphZG9wdChHUFJUZW1wb3JhcnkmIG90aGVyKQogewogICAgIEFTU0VS
VCghbV9qaXQpOwpAQCAtMjA2Niw3MCArMjA4OCwxMzEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZURvdWJsZUFzSW50MwogICAgIGludDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9
CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91YmxlKE5vZGUqIG5vZGUp
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKE5vZGUqIG5vZGUpCiB7Ci0g
ICAgQVNTRVJUKCFpc0ludDMyQ29uc3RhbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpKSk7IC8vIFRo
aXMgc2hvdWxkIGhhdmUgYmVlbiBjb25zdGFudCBmb2xkZWQuCisgICAgc3dpdGNoIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBBU1NF
UlQoIWlzSW50MzJDb25zdGFudChub2RlLT5jaGlsZDEoKS5ub2RlKCkpKTsgLy8gVGhpcyBzaG91
bGQgaGF2ZSBiZWVuIGNvbnN0YW50IGZvbGRlZC4KICAgICAKLSAgICBpZiAoaXNJbnQzMlNwZWN1
bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSkgewotICAgICAg
ICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOwotICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwot
ICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcDEuZ3ByKCksIHJlc3VsdC5mcHIo
KSk7Ci0gICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSkgeworICAgICAgICAgICAgU3BlY3VsYXRlSW50
MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgICAg
ICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcDEuZ3ByKCksIHJlc3VsdC5mcHIoKSk7Cisg
ICAgICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogICAgIAotICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICBGUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+
Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBHUFJUZW1wb3Jh
cnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAKLSAgICBH
UFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOwotICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIo
KTsKLSAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigpOworICAgICAgICBHUFJSZWcg
b3AxR1BSID0gb3AxLmdwcigpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7
CisgICAgICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CiAgICAgCi0gICAgSklU
Q29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoNjQoCi0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJh
bmNoNjQoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcDFHUFIs
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiAgICAgCi0gICAgaWYgKG5lZWRzVHlw
ZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlcikpIHsKLSAgICAgICAgdHlwZUNo
ZWNrKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNw
ZWNGdWxsTnVtYmVyLAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1i
bGVyOjpaZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwotICAg
IH0KKyAgICAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjQnl0ZWNv
ZGVOdW1iZXIpKSB7CisgICAgICAgICAgICB0eXBlQ2hlY2soCisgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNCeXRlY29kZU51bWJlciwKKyAg
ICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIG9w
MUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIH0KICAgICAK
LSAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgdGVtcEdQUik7Ci0gICAgdW5ib3hEb3VibGUodGVtcEdQ
UiwgcmVzdWx0RlBSKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgp
OworICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgdGVtcEdQUik7CisgICAgICAgIHVuYm94RG91
YmxlKHRlbXBHUFIsIHJlc3VsdEZQUik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUg
PSBtX2ppdC5qdW1wKCk7CiAgICAgCi0gICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsKLSAgICBt
X2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcDFHUFIsIHJlc3VsdEZQUik7Ci0gICAgZG9uZS5s
aW5rKCZtX2ppdCk7Ci0jZWxzZQotICAgIEZQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAg
ICBpc0ludGVnZXIubGluaygmbV9qaXQpOworICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0Rv
dWJsZShvcDFHUFIsIHJlc3VsdEZQUik7CisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworI2Vs
c2UgLy8gVVNFKEpTVkFMVUU2NCkgLT4gdGhpcyBpcyB0aGUgMzJfNjQgY2FzZQorICAgICAgICBG
UFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAKLSAgICBHUFJSZWcgb3AxVGFnR1BSID0gb3Ax
LnRhZ0dQUigpOwotICAgIEdQUlJlZyBvcDFQYXlsb2FkR1BSID0gb3AxLnBheWxvYWRHUFIoKTsK
LSAgICBGUFJSZWcgdGVtcEZQUiA9IHRlbXAuZnByKCk7Ci0gICAgRlBSUmVnIHJlc3VsdEZQUiA9
IHJlc3VsdC5mcHIoKTsKKyAgICAgICAgR1BSUmVnIG9wMVRhZ0dQUiA9IG9wMS50YWdHUFIoKTsK
KyAgICAgICAgR1BSUmVnIG9wMVBheWxvYWRHUFIgPSBvcDEucGF5bG9hZEdQUigpOworICAgICAg
ICBGUFJSZWcgdGVtcEZQUiA9IHRlbXAuZnByKCk7CisgICAgICAgIEZQUlJlZyByZXN1bHRGUFIg
PSByZXN1bHQuZnByKCk7CiAgICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0g
bV9qaXQuYnJhbmNoMzIoCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgb3AxVGFnR1BS
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7
CiAgICAgCi0gICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51
bWJlcikpIHsKLSAgICAgICAgdHlwZUNoZWNrKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3Ax
VGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAot
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwg
b3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOwotICAgIH0KKyAg
ICAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjQnl0ZWNvZGVOdW1i
ZXIpKSB7CisgICAgICAgICAgICB0eXBlQ2hlY2soCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNCeXRlY29k
ZU51bWJlciwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcp
KSk7CisgICAgICAgIH0KICAgICAKLSAgICB1bmJveERvdWJsZShvcDFUYWdHUFIsIG9wMVBheWxv
YWRHUFIsIHJlc3VsdEZQUiwgdGVtcEZQUik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9
IG1faml0Lmp1bXAoKTsKKyAgICAgICAgdW5ib3hEb3VibGUob3AxVGFnR1BSLCBvcDFQYXlsb2Fk
R1BSLCByZXN1bHRGUFIsIHRlbXBGUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25l
ID0gbV9qaXQuanVtcCgpOwogICAgIAotICAgIGlzSW50ZWdlci5saW5rKCZtX2ppdCk7Ci0gICAg
bV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxUGF5bG9hZEdQUiwgcmVzdWx0RlBSKTsKLSAg
ICBkb25lLmxpbmsoJm1faml0KTsKLSNlbmRpZgorICAgICAgICBpc0ludGVnZXIubGluaygmbV9q
aXQpOworICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcDFQYXlsb2FkR1BSLCBy
ZXN1bHRGUFIpOworICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyNlbmRpZiAvLyBVU0UoSlNW
QUxVRTY0KQogICAgIAotICAgIGRvdWJsZVJlc3VsdChyZXN1bHRGUFIsIG5vZGUpOworICAgICAg
ICBkb3VibGVSZXN1bHQocmVzdWx0RlBSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIEludDUyUmVwVXNlOiB7Cisg
ICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIAorICAg
ICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgRlBSUmVnIHJlc3Vs
dEZQUiA9IHJlc3VsdC5mcHIoKTsKKworICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJs
ZSh2YWx1ZUdQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgCisgICAgICAgIGRvdWJsZVJlc3VsdChy
ZXN1bHRGUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVJlcChOb2RlKiBub2RlKQoreworICAgIHN3aXRjaCAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKKyAgICAg
ICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgCisgICAg
ICAgIEZQUlJlZyB2YWx1ZUZQUiA9IHZhbHVlLmZwcigpOworICAgICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKyAgICAgICAgCisgICAgICAgIGJveERvdWJsZSh2
YWx1ZUZQUiwgcmVzdWx0UmVncyk7CisgICAgICAgIAorICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRl
U3RyaWN0SW50NTJPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIEdQUlJlZyB2YWx1
ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworICAgICAgICAKKyAgICAgICAgYm94SW50NTIodmFsdWVHUFIsIHJlc3VsdEdQUiwgRGF0
YUZvcm1hdEludDUyKTsKKyAgICAgICAgCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQorICAgICAgICAKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQogfQogCiBzdGF0aWMgZG91YmxlIGNsYW1w
RG91YmxlVG9CeXRlKGRvdWJsZSBkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTks
NiArNDU5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQudW5ib3hEb3VibGUodGFnR1BSLCBw
YXlsb2FkR1BSLCBmcHIsIHNjcmF0Y2hGUFIpOwogICAgIH0KICNlbmRpZgorICAgIHZvaWQgYm94
RG91YmxlKEZQUlJlZyBmcHIsIEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgeworICAgICAgICBtX2pp
dC5ib3hEb3VibGUoZnByLCByZWdzKTsKKyAgICB9CiAKICAgICAvLyBTcGlsbCBhIFZpcnR1YWxS
ZWdpc3RlciB0byB0aGUgSlNTdGFjay4KICAgICB2b2lkIHNwaWxsKFZpcnR1YWxSZWdpc3RlciBz
cGlsbE1lKQpAQCAtOTI1LDYgKzkyOSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGpzVmFsdWVSZXN1
bHQodGFnLCBwYXlsb2FkLCBub2RlLCBEYXRhRm9ybWF0SlMsIG1vZGUpOwogICAgIH0KICNlbmRp
ZgorICAgIHZvaWQganNWYWx1ZVJlc3VsdChKU1ZhbHVlUmVncyByZWdzLCBOb2RlKiBub2RlLCBE
YXRhRnJtYXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbk1vZGUgbW9kZSA9IENh
bGxVc2VDaGlsZHJlbikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAganNWYWx1
ZVJlc3VsdChyZWdzLmdwcigpLCBub2RlLCBmb3JtYXQsIG1vZGUpOworI2Vsc2UKKyAgICAgICAg
anNWYWx1ZVJlc3VsdChyZWdzLnRhZ0dQUigpLCByZWdzLnBheWxvYWRHUFIoKSwgbm9kZSwgZm9y
bWF0LCBtb2RlKTsKKyNlbmRpZgorICAgIH0KICAgICB2b2lkIHN0b3JhZ2VSZXN1bHQoR1BSUmVn
IHJlZywgTm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRyZW4p
CiAgICAgewogICAgICAgICBpZiAobW9kZSA9PSBDYWxsVXNlQ2hpbGRyZW4pCkBAIC0yMDgzLDcg
KzIwOTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlVmFsdWVUb0ludDMyKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVVSW50MzJUb051bWJlcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
RG91YmxlQXNJbnQzMihOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlSW50MzJUb0RvdWJsZShOb2Rl
Kik7CisgICAgdm9pZCBjb21waWxlRG91YmxlUmVwKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVB
ZGQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU1ha2VSb3BlKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVBcml0aFN1YihOb2RlKik7CkBAIC0yNTY1LDYgKzI1NzcsMjMgQEAgcHJpdmF0ZToKICAg
ICBHUFJSZWcgbV9ncHI7CiB9OwogCitjbGFzcyBKU1ZhbHVlUmVnc1RlbXBvcmFyeSB7CitwdWJs
aWM6CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkoKTsKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFy
eShTcGVjdWxhdGl2ZUpJVCopOworICAgIH5KU1ZhbHVlUmVnc1RlbXBvcmFyeSgpOworICAgIAor
ICAgIEpTVmFsdWVSZWdzIHJlZ3MoKTsKKworcHJpdmF0ZToKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgIEdQUlRlbXBvcmFyeSBtX2dwcjsKKyNlbHNlCisgICAgR1BSVGVtcG9yYXJ5IG1fcGF5bG9h
ZEdQUjsKKyAgICBHUFJUZW1wb3JhcnkgbV90YWdHUFI7CisjZW5kaWYKK307CisKIGNsYXNzIEZQ
UlRlbXBvcmFyeSB7CiBwdWJsaWM6CiAgICAgRlBSVGVtcG9yYXJ5KFNwZWN1bGF0aXZlSklUKik7
CkBAIC0yNzU0LDEyICsyNzgzLDEyIEBAIHByaXZhdGU6CiAvLyBHaXZlcyB5b3UgYSBjYW5vbmlj
YWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgog
Y2xhc3MgU3BlY3VsYXRlSW50NTJPcGVyYW5kIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVj
dWxhdGVJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5k
U3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAg
ZXhwbGljaXQgU3BlY3VsYXRlSW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2Ug
ZWRnZSkKICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAg
ICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKICAgICB7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51
c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2Uu
dXNlS2luZCgpID09IEludDUyUmVwVXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9k
ZSgpKSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0KQEAgLTI4MDEsMTIgKzI4MzAsMTIgQEAg
cHJpdmF0ZToKIC8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBp
cyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBj
bGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgewogcHVibGljOgotICAgIGV4cGxpY2l0
IFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVk
Z2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxh
dGlvbikKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRp
dmVKSVQqIGppdCwgRWRnZSBlZGdlKQogICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBt
X2VkZ2UoZWRnZSkKICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQogICAg
IHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpOwogICAgICAgICBpZiAo
aml0LT5pc0ZpbGxlZChub2RlKCkpKQogICAgICAgICAgICAgZ3ByKCk7CiAgICAgfQpAQCAtMjg0
OSwzNSArMjg3OCwzNSBAQCBlbnVtIE9wcG9zaXRlU2hpZnRUYWcgeyBPcHBvc2l0ZVNoaWZ0IH07
CiAKIGNsYXNzIFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCB7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBq
aXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3Bl
cmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3Bl
cmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UpCiAgICAgICAgIDogbV9qaXQoaml0
KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFs
aWRHUFJSZWcpCiAgICAgICAgICwgbV9zdHJpY3Qoaml0LT5iZXR0ZXJVc2VTdHJpY3RJbnQ1Mihl
ZGdlKSkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKTsKICAg
ICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKICAgICAgICAgICAgIGdwcigpOwogICAg
IH0KICAgICAKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQoU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBjb25zdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1
Mk9wZXJhbmQmIG90aGVyLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNP
cGVyYW5kU3BlY3VsYXRpb24pCisgICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NTJP
cGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgY29uc3QgU3BlY3VsYXRlV2hp
Y2hldmVySW50NTJPcGVyYW5kJiBvdGhlcikKICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAg
ICwgbV9lZGdlKGVkZ2UpCiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykK
ICAgICAgICAgLCBtX3N0cmljdChvdGhlci5tX3N0cmljdCkKICAgICB7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51
c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2Uu
dXNlS2luZCgpID09IEludDUyUmVwVXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9k
ZSgpKSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0KICAgICAKLSAgICBleHBsaWNpdCBTcGVj
dWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdl
LCBPcHBvc2l0ZVNoaWZ0VGFnLCBjb25zdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQm
IG90aGVyLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3Bl
Y3VsYXRpb24pCisgICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKFNw
ZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3Bwb3NpdGVTaGlmdFRhZywgY29uc3QgU3Bl
Y3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kJiBvdGhlcikKICAgICAgICAgOiBtX2ppdChqaXQp
CiAgICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxp
ZEdQUlJlZykKICAgICAgICAgLCBtX3N0cmljdCghb3RoZXIubV9zdHJpY3QpCiAgICAgewotICAg
ICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
IHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlz
RmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CkBAIC0yOTI2LDEzICsy
OTU1LDEzIEBAIHByaXZhdGU6CiAKIGNsYXNzIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgewogcHVi
bGljOgotICAgIGV4cGxpY2l0IFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQq
IGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNP
cGVyYW5kU3BlY3VsYXRpb24pCisgICAgZXhwbGljaXQgU3BlY3VsYXRlRG91YmxlT3BlcmFuZChT
cGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAg
ICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZnByT3JJbnZhbGlkKEludmFsaWRGUFJS
ZWcpCiAgICAgewogICAgICAgICBBU1NFUlQobV9qaXQpOwotICAgICAgICBBU1NFUlRfVU5VU0VE
KG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGlzRG91YmxlKGVkZ2Uu
dXNlS2luZCgpKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzRG91YmxlKGVkZ2UudXNlS2lu
ZCgpKSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBm
cHIoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5j
cHAJKHJldmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNl
S2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE3ICs0NiwxNyBAQCB2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlCiAgICAgY2FzZSBLbm93bkludDMyVXNlOgogICAg
ICAgICBvdXQucHJpbnQoIktub3duSW50MzIiKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBN
YWNoaW5lSW50VXNlOgotICAgICAgICBvdXQucHJpbnQoIk1hY2hpbmVJbnQiKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgICAgICBvdXQucHJpbnQoIlJlYWxO
dW1iZXIiKTsKKyAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICBvdXQucHJpbnQoIkludDUy
UmVwIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICBvdXQu
cHJpbnQoIk51bWJlciIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEtub3duTnVtYmVyVXNl
OgotICAgICAgICBvdXQucHJpbnQoIktub3duTnVtYmVyIik7CisgICAgY2FzZSBEb3VibGVSZXBV
c2U6CisgICAgICAgIG91dC5wcmludCgiRG91YmxlUmVwIik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICAgICAgb3V0LnByaW50KCJEb3VibGVSZXBSZWFs
Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgb3V0LnBy
aW50KCJCb29sZWFuIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtp
bmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQu
aAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICszNywxMCBAQCBlbnVtIFVzZUtpbmQgewog
ICAgIFVudHlwZWRVc2UsCiAgICAgSW50MzJVc2UsCiAgICAgS25vd25JbnQzMlVzZSwKLSAgICBN
YWNoaW5lSW50VXNlLAotICAgIFJlYWxOdW1iZXJVc2UsCisgICAgSW50NTJSZXBVc2UsCiAgICAg
TnVtYmVyVXNlLAotICAgIEtub3duTnVtYmVyVXNlLAorICAgIERvdWJsZVJlcFVzZSwKKyAgICBE
b3VibGVSZXBSZWFsVXNlLAogICAgIEJvb2xlYW5Vc2UsCiAgICAgQ2VsbFVzZSwKICAgICBLbm93
bkNlbGxVc2UsCkBAIC02NywxMyArNjcsMTQgQEAgQUxXQVlTX0lOTElORSBTcGVjdWxhdGVkVHlw
ZSB0eXBlRmlsdGVyRgogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNl
OgogICAgICAgICByZXR1cm4gU3BlY0ludDMyOwotICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAg
ICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICByZXR1cm4gU3BlY01hY2hpbmVJbnQ7Ci0gICAg
Y2FzZSBSZWFsTnVtYmVyVXNlOgotICAgICAgICByZXR1cm4gU3BlY0Z1bGxSZWFsTnVtYmVyOwog
ICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgIHJl
dHVybiBTcGVjRnVsbE51bWJlcjsKKyAgICAgICAgcmV0dXJuIFNwZWNCeXRlY29kZU51bWJlcjsK
KyAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNEb3VibGU7CisgICAg
Y2FzZSBEb3VibGVSZXBSZWFsVXNlOgorICAgICAgICByZXR1cm4gU3BlY0RvdWJsZVJlYWw7CiAg
ICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICByZXR1cm4gU3BlY0Jvb2xlYW47CiAgICAgY2Fz
ZSBDZWxsVXNlOgpAQCAtMTEzLDkgKzExNCwxMCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgc2hvdWxk
Tm90SGF2ZVR5cGVDaGVjCiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBVbnR5cGVkVXNl
OgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKLSAgICBjYXNlIEtub3duTnVtYmVyVXNlOgogICAg
IGNhc2UgS25vd25DZWxsVXNlOgogICAgIGNhc2UgS25vd25TdHJpbmdVc2U6CisgICAgY2FzZSBJ
bnQ1MlJlcFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMyLDEwICsxMzQsMTEg
QEAgQUxXQVlTX0lOTElORSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQgawogICAgIHN3aXRjaCAo
a2luZCkgewogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNlOgotICAg
IGNhc2UgTWFjaGluZUludFVzZToKLSAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAgICAgY2FzZSBO
dW1iZXJVc2U6Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKKyAgICBjYXNlIEludDUyUmVwVXNl
OgorICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAg
ICBjYXNlIEJ5dGVjb2RlSW50VXNlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDUsOSArMTQ4LDggQEAgQUxXQVlTX0lOTElO
RSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQgawogQUxXQVlTX0lOTElORSBib29sIGlzRG91Ymxl
KFVzZUtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIFJlYWxOdW1i
ZXJVc2U6Ci0gICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKKyAg
ICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAxNjcx
ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMTUsNiArMTE1LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgbV9teVJlZkNvdW50cy5maW5kKGVkZ2Uubm9kZSgpKS0+
dmFsdWUrKzsKICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFZBTElE
QVRFKChub2RlLCBlZGdlKSwgZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkgPT0gKGVkZ2UudXNlS2lu
ZCgpID09IERvdWJsZVJlcFVzZSB8fCBlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBSZWFsVXNl
KSk7CisgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+aGFz
SW50NTJSZXN1bHQoKSA9PSAoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpKTsKKyAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9
PSBTU0EpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIFNTQSwgYWxsIGVkZ2VzIG11
c3QgaGFzUmVzdWx0KCkuCiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwg
ZWRnZSksIGVkZ2UtPmhhc1Jlc3VsdCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTg2LDcgKzE4Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgIExUeXBlIHR5cGU7CiAgICAgICAgICAgICAgICAgc3dpdGNo
IChub2RlLT5mbGFncygpICYgTm9kZVJlc3VsdE1hc2spIHsKLSAgICAgICAgICAgICAgICBjYXNl
IE5vZGVSZXN1bHROdW1iZXI6CisgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0RG91Ymxl
OgogICAgICAgICAgICAgICAgICAgICB0eXBlID0gbV9vdXQuZG91YmxlVHlwZTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6
CkBAIC03MTksNyArNzE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHNvdXJjZSA9IG1f
cGhpcy5nZXQobV9ub2RlKTsKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5mbGFn
cygpICYgTm9kZVJlc3VsdE1hc2spIHsKLSAgICAgICAgY2FzZSBOb2RlUmVzdWx0TnVtYmVyOgor
ICAgICAgICBjYXNlIE5vZGVSZXN1bHREb3VibGU6CiAgICAgICAgICAgICBzZXREb3VibGUobV9v
dXQuZ2V0KHNvdXJjZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZVJl
c3VsdEludDMyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzUsNiArNDM1LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGZwcjsKICAgICB9CiAgICAgCisgICAgdm9pZCBib3hEb3VibGUo
RlBSUmVnIGZwciwgSlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7CisgICAgICAgIGJveERvdWJsZShm
cHIsIHJlZ3MuZ3ByKCkpOworICAgIH0KKyAgICAKICAgICAvLyBIZXJlIGFyZSBwb3NzaWJsZSBh
cnJhbmdlbWVudHMgb2Ygc291cmNlLCB0YXJnZXQsIHNjcmF0Y2g6CiAgICAgLy8gLSBzb3VyY2Us
IHRhcmdldCwgc2NyYXRjaCBjYW4gYWxsIGJlIHNlcGFyYXRlIHJlZ2lzdGVycy4KICAgICAvLyAt
IHNvdXJjZSBhbmQgdGFyZ2V0IGNhbiBiZSB0aGUgc2FtZSBidXQgc2NyYXRjaCBpcyBzZXBhcmF0
ZS4KQEAgLTQ2Nyw2ICs0NzIsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbW92ZUludHNU
b0RvdWJsZShwYXlsb2FkR1BSLCB0YWdHUFIsIGZwciwgc2NyYXRjaEZQUik7CiAgICAgfQorICAg
IAorICAgIHZvaWQgYm94RG91YmxlKEZQUlJlZyBmcHIsIEpTVmFsdWVSZWdzIHJlZ3MpCisgICAg
eworICAgICAgICBib3hEb3VibGUoZnByLCByZWdzLnRhZ0dQUigpLCByZWdzLnBheWxvYWRHUFIo
KSk7CisgICAgfQogI2VuZGlmCiAgICAgCiAgICAgZW51bSBFeGNlcHRpb25DaGVja0tpbmQgeyBO
b3JtYWxFeGNlcHRpb25DaGVjaywgSW52ZXJ0ZWRFeGNlcHRpb25DaGVjayB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229244</attachid>
            <date>2014-04-13 14:06:32 -0700</date>
            <delta_ts>2014-04-13 16:59:40 -0700</delta_ts>
            <desc>it&apos;s getting real</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>88912</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlci5oCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw5
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBzZXRDb25zdGFudChOb2RlKiBub2RlLCBKU1Zh
bHVlIHZhbHVlKQogICAgIHsKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgdmFs
dWUpOworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZSk7CisgICAg
ICAgIHZhbHVlLnNldChtX2dyYXBoLCB2YWx1ZSk7CisgICAgICAgIHZhbHVlLmZpeFR5cGVGb3JS
ZXByZXNlbnRhdGlvbihub2RlKTsKICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0
cnVlKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAxNjcx
ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsOCBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgCiAgICAgc3dpdGNoIChub2RlLT5vcCgp
KSB7CiAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAg
Y2FzZSBJbnQ1MkNvbnN0YW50OgogICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgY2FzZSBQ
aGFudG9tQXJndW1lbnRzOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1f
Z3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobm9kZSkpOwpAQCAtMzA3LDM5ICszMDksMzkgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50MzJUb0RvdWJsZTogeworICAgIGNhc2UgRG91Ymxl
UmVwOiB7CiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52
YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwgSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwg
Y2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW50MzJTcGVj
dWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGVSZWFsKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKTsKKyAgICAgICAg
Zm9yTm9kZShub2RlKS5maXhUeXBlRm9yUmVwcmVzZW50YXRpb24obm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBJbnQ1MlRvRG91YmxlOiB7CisgICAgY2Fz
ZSBJbnQ1MlJlcDogeworICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gSW50MzJVc2UpOworICAgICAgICAKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmIChjaGlsZCAmJiBjaGls
ZC5pc051bWJlcigpKSB7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc0ludDMyKCkpIHsK
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsK
KyAgICAgICAgCisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50NTJUb1ZhbHVlOiB7Ci0g
ICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwot
ICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgc2V0
Q29uc3RhbnQobm9kZSwgY2hpbGQpOworICAgIGNhc2UgVmFsdWVSZXA6IHsKKyAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlm
ICh2YWx1ZSkgeworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgdmFsdWUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZTsKLSAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50
NTIpCi0gICAgICAgICAgICB0eXBlID0gKHR5cGUgfCBTcGVjSW50MzIgfCBTcGVjSW50NTJBc0Rv
dWJsZSkgJiB+U3BlY0ludDUyOwotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUodHlwZSk7
CisgICAgICAgIAorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkubV90eXBlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5maXhUeXBlRm9yUmVwcmVz
ZW50YXRpb24obm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlz
aW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBBYnN0cmFjdFZhbHVl
OjpzZXRNb3N0U3BlY2lmaWMoR3JhcAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIH0KIAotdm9p
ZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBKU1ZhbHVlIHZhbHVlKQordm9pZCBB
YnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBKU1ZhbHVlIHZhbHVl
KQogewogICAgIGlmICghIXZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAgIG1fY3Vy
cmVudEtub3duU3RydWN0dXJlLm1ha2VUb3AoKTsKQEAgLTY3LDggKzY3LDYgQEAgdm9pZCBBYnN0
cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBKUwogICAgIH0KICAgICAKICAgICBtX3R5cGUg
PSBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSk7Ci0gICAgaWYgKG1fdHlwZSA9PSBTcGVjSW50
NTJBc0RvdWJsZSkKLSAgICAgICAgbV90eXBlID0gU3BlY0ludDUyOwogICAgIG1fdmFsdWUgPSB2
YWx1ZTsKICAgICAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC04NSw2ICs4MywzMyBAQCB2
b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIFN0CiAgICAgY2hlY2tDb25zaXN0
ZW5jeSgpOwogfQogCit2b2lkIEFic3RyYWN0VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRhdGlv
bihOb2RlKiBub2RlKQoreworICAgIGlmIChub2RlLT5oYXNEb3VibGVSZXN1bHQoKSkgeworICAg
ICAgICBpZiAobV90eXBlICYgU3BlY01hY2hpbmVJbnQpIHsKKyAgICAgICAgICAgIG1fdHlwZSAm
PSB+U3BlY01hY2hpbmVJbnQ7CisgICAgICAgICAgICBtX3R5cGUgfD0gU3BlY0ludDUyQXNEb3Vi
bGU7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3R5cGUgJiB+U3BlY0Rv
dWJsZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChub2RlLT5oYXNJ
bnQ1MlJlc3VsdCgpKSB7CisgICAgICAgIGlmIChtX3R5cGUgJiBTcGVjSW50NTJBc0RvdWJsZSkg
eworICAgICAgICAgICAgbV90eXBlICY9IH5TcGVjSW50NTJBc0RvdWJsZTsKKyAgICAgICAgICAg
IG1fdHlwZSB8PSBTcGVjSW50NTI7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IShtX3R5cGUgJiB+U3BlY01hY2hpbmVJbnQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBpZiAobV90eXBlICYgU3BlY0ludDUyKSB7CisgICAgICAgIG1fdHlwZSAmPSB+U3Bl
Y0ludDUyOworICAgICAgICBtX3R5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7CisgICAgfQorICAg
IFJFTEVBU0VfQVNTRVJUKCEobV90eXBlICYgflNwZWNIZWFwVG9wKSk7Cit9CisKIEZpbHRyYXRp
b25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKEdyYXBoJiBncmFwaCwgY29uc3QgU3RydWN0
dXJlU2V0JiBvdGhlcikKIHsKICAgICBpZiAoaXNDbGVhcigpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9uIDE2NzE4MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIH0KICAg
ICAKICAgICB2b2lkIHNldE1vc3RTcGVjaWZpYyhHcmFwaCYsIEpTVmFsdWUpOwotICAgIHZvaWQg
c2V0KEdyYXBoJiwgSlNWYWx1ZSk7CisgICAgdm9pZCBzZXQoR3JhcGgmLCBOb2RlKiwgSlNWYWx1
ZSk7CiAgICAgdm9pZCBzZXQoR3JhcGgmLCBTdHJ1Y3R1cmUqKTsKICAgICAKICAgICB2b2lkIHNl
dFR5cGUoU3BlY3VsYXRlZFR5cGUgdHlwZSkKQEAgLTEyOSw2ICsxMjksOCBAQCBzdHJ1Y3QgQWJz
dHJhY3RWYWx1ZSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCisg
ICAgdm9pZCBmaXhUeXBlRm9yUmVwcmVzZW50YXRpb24oTm9kZSopOworICAgIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX3R5cGUgPT0gb3RoZXIubV90eXBlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSwy
OSArMTYxLDExIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAKLSAg
ICBOb2RlKiBpbnQzMlRvRG91YmxlQ1NFKE5vZGUqIG5vZGUpCi0gICAgewotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgewotICAgICAgICAgICAgTm9kZSog
b3RoZXJOb2RlID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwotICAgICAgICAgICAgaWYgKG90aGVy
Tm9kZSA9PSBub2RlLT5jaGlsZDEoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgICAgIHN3aXRjaCAob3RoZXJOb2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIEludDMy
VG9Eb3VibGU6Ci0gICAgICAgICAgICAgICAgaWYgKG90aGVyTm9kZS0+Y2hpbGQxKCkuc2FuaXRp
emVkKCkgPT0gbm9kZS0+Y2hpbGQxKCkuc2FuaXRpemVkKCkpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBvdGhlck5vZGU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICAKICAgICBOb2RlKiBjb25zdGFudENTRShO
b2RlKiBub2RlKQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZW5kSW5kZXhGb3JQ
dXJlQ1NFKCk7IGktLTspIHsKICAgICAgICAgICAgIE5vZGUqIG90aGVyTm9kZSA9IG1fY3VycmVu
dEJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgIGlmIChvdGhlck5vZGUtPm9wKCkgIT0gSlNDb25z
dGFudCkKKyAgICAgICAgICAgIGlmIChvdGhlck5vZGUtPm9wKCkgIT0gbm9kZS0+b3AoKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG90
aGVyTm9kZS0+Y29uc3RhbnROdW1iZXIoKSAhPSBub2RlLT5jb25zdGFudE51bWJlcigpKQpAQCAt
MTE0Nyw4ICsxMTI5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb21wYXJlRXFDb25zdGFu
dDoKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgICAgIGNhc2UgTWFrZVJvcGU6Ci0g
ICAgICAgIGNhc2UgSW50NTJUb0RvdWJsZToKLSAgICAgICAgY2FzZSBJbnQ1MlRvVmFsdWU6Cisg
ICAgICAgIGNhc2UgRG91YmxlUmVwOgorICAgICAgICBjYXNlIFZhbHVlUmVwOgorICAgICAgICBj
YXNlIEludDUyUmVwOgogICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlv
bikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KHB1
cmVDU0Uobm9kZSkpOwpAQCAtMTE3NiwxMiArMTE1OSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgSW50MzJUb0Rv
dWJsZToKLSAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCi0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBzZXRSZXBsYWNlbWVudChpbnQzMlRvRG91
YmxlQ1NFKG5vZGUpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgR2V0Q2FsbGVlOgogICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5h
dGlvbikKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyNjcsNiArMTI0NCw4IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6Cisg
ICAgICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoK
ICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHN0cmFuZ2UsIGJ1dCBuZWNlc3Nh
cnkuIFNvbWUgcGhhc2VzIHdpbGwgY29udmVydCBub2RlcyB0byBjb25zdGFudHMsCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTY3MTgy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMiwxNSArMTIyLDE1IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUKICAgICBjYXNlIElzTnVtYmVyOgogICAgIGNhc2UgSXNTdHJpbmc6CiAgICAg
Y2FzZSBMb2dpY2FsTm90OgotICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICBjYXNlIEV4dHJh
Y3RPU1JFbnRyeUxvY2FsOgotICAgIGNhc2UgSW50NTJUb0RvdWJsZToKLSAgICBjYXNlIEludDUy
VG9WYWx1ZToKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgY2FzZSBDb25zdGFudFN0b3Jh
Z2VQb2ludGVyOgogICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAgY2FzZSBEb3VibGVBc0lu
dDMyOgogICAgIGNhc2UgQ2hlY2s6CisgICAgY2FzZSBEb3VibGVSZXA6CisgICAgY2FzZSBWYWx1
ZVJlcDoKKyAgICBjYXNlIEludDUyUmVwOgogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAg
IGNhc2UgTW92SGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDggKzEyMywxMCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAg
ICAgICAgICBlbHNlIGlmIChub2RlQ2FuU3BlY3VsYXRlSW50MzIobm9kZS0+YXJpdGhOb2RlRmxh
Z3MoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092
ZXJmbG93KTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6RG9PdmVyZmxvdyk7CisgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMTM1LDEwICsx
MzcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXJFeHBlY3RpbmdEZWZp
bmVkKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAg
ICAgbm9kZS0+c2V0T3AoQXJpdGhBZGQpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxh
Z3MoTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKKyAgICAgICAgICAgICAg
ICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE3Nyw4ICsxODAsOSBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIEFyaXRoU3ViOiB7CiAgICAgICAgICAgICBpZiAoYXR0ZW1wdFRv
TWFrZUludGVnZXJBZGQobm9kZSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRn
ZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91Ymxl
UmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVz
ZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1
bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApA
QCAtMTk0LDE0ICsxOTgsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX2dyYXBoLm5lZ2F0ZVNob3VsZFNwZWN1bGF0
ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNl
Pihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuSWdub3Jl
TmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgICAg
ICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpD
aGVja092ZXJmbG93QW5kTmVnYXRpdmVaZXJvKTsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRS
ZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjE4LDE2ICsyMjQsMTggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChtX2dyYXBoLm11bFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAgICAgICAg
ICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
ICAgIGlmIChieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFn
cygpKSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVj
a092ZXJmbG93KTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7Cisg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJl
clVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjQ2LDI0ICsyNTQsMjYgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hl
Y2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hp
bGQyKCkpOwogCiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBkbyByZWYnaW5n
IG9uIHRoZSBjaGlsZHJlbiBiZWNhdXNlIHdlJ3JlIHN0ZWFsaW5nIHRoZW0gZnJvbQogICAgICAg
ICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBkaXZpc2lvbi4KICAgICAgICAgICAgICAgICBOb2Rl
KiBuZXdEaXZpc2lvbiA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAg
ICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjRG91YmxlLCAqbm9kZSk7CisgICAgICAgICAgICAg
ICAgbmV3RGl2aXNpb24tPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChEb3VibGVBc0ludDMyKTsKLSAgICAg
ICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5pbml0aWFsaXplKEVkZ2UobmV3RGl2aXNpb24sIEtu
b3duTnVtYmVyVXNlKSwgRWRnZSgpLCBFZGdlKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNo
aWxkcmVuLmluaXRpYWxpemUoRWRnZShuZXdEaXZpc2lvbiwgRG91YmxlUmVwVXNlKSwgRWRnZSgp
LCBFZGdlKCkpOwogICAgICAgICAgICAgICAgIGlmIChieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZl
WmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVy
Zmxvd0FuZE5lZ2F0aXZlWmVybyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
IGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhF
ZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0
UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgICAgIApAQCAtMjc1LDggKzI4NSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTI4NiwxNCArMjk3LDE2IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZml4RWRn
ZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91Ymxl
UmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9k
ZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgIGNhc2UgQXJpdGhTcXJ0OgogICAgICAgICBjYXNlIEFyaXRoU2luOgogICAg
ICAgICBjYXNlIEFyaXRoQ29zOiB7Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTMwNSw3ICsz
MTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4o
bm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZU51bWJlcigpKQotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1Vz
ZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMzYsMTQgKzM0OSwx
NCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGVuYWJsZUludDUy
KCkKICAgICAgICAgICAgICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUt
PmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4o
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+
Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5l
cmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KQEAgLTQwMSwxMyArNDE0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoZW5hYmxlSW50NTIoKQogICAgICAgICAgICAgICAgICYmIE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGls
ZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihu
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUt
PmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9k
ZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxO
dW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJl
clVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVw
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBV
c2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5n
SWRlbnQoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkg
ewpAQCAtNTAwLDcgKzUxMyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJy
YXlNb2RlKCkudHlwZSgpKSB7CisgICAgICAgICAgICBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1v
ZGUoKTsKKyAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgewogICAgICAgICAg
ICAgY2FzZSBBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9uczoKICAgICAgICAgICAgIGNhc2Ug
QXJyYXk6OlVucHJvZmlsZWQ6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpVbmRlY2lkZWQ6CkBA
IC01MTksNiArNTMzLDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5
cGUoKSkgeworICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgorICAgICAgICAgICAgY2Fz
ZSBBcnJheTo6RmxvYXQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFy
cmF5OgorICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNh
c2UgQXJyYXk6OlVpbnQzMkFycmF5OgorICAgICAgICAgICAgICAgIGlmIChub2RlLT5zaG91bGRT
cGVjdWxhdGVNYWNoaW5lSW50KCkpCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3Vs
dChOb2RlUmVzdWx0SW50NTIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIApAQCAtNTU4LDE0ICs1OTAsMTQgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDIpOwogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMy0+cHJl
ZGljdGlvbigpICYgU3BlY0ludDUyKQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hp
bmVJbnRVc2U+KGNoaWxkMyk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBV
c2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPEludDMyVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25D
ZWxsVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxk
Mik7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxSZWFsTnVtYmVyVXNlPihjaGlsZDMpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwUmVhbFVzZT4oY2hpbGQzKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDhBcnJheToKICAgICAg
ICAgICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6CkBAIC01NzksMTUgKzYxMSwxNSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGlmIChjaGlsZDMtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkp
CiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMyk7CiAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoY2hpbGQzLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpCi0g
ICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4oY2hpbGQzKTsKKyAgICAg
ICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4oY2hpbGQzKTsKICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihjaGlsZDMp
OworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4oY2hpbGQzKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJh
eToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEtub3duQ2VsbFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdl
PEludDMyVXNlPihjaGlsZDIpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihj
aGlsZDMpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihjaGlsZDMpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91
czoKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZToKQEAgLTYyOSw3ICs2NjEs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNo
aWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6
OkRvdWJsZToKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFJlYWxOdW1iZXJVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFJlYWxVc2U+KG5vZGUt
PmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJy
YXk6OkNvbnRpZ3VvdXM6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CkBA
IC02NjIsNyArNjk0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91
YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAKICAgICAgICAgICAgIE5vZGUqIGxvZ2ljYWxO
b3QgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgICAgICBpZiAobG9naWNhbE5vdC0+
b3AoKSA9PSBMb2dpY2FsTm90KSB7CkBAIC03NTksNyArNzkxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19U
WVBFUzoKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG9wZXJhbmRJbmRleCA9IDA7IG9w
ZXJhbmRJbmRleCA8IG5vZGUtPm51bUNoaWxkcmVuKCk7ICsrb3BlcmFuZEluZGV4KQotICAgICAg
ICAgICAgICAgICAgICBmaXhFZGdlPFJlYWxOdW1iZXJVc2U+KG1fZ3JhcGgubV92YXJBcmdDaGls
ZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyBvcGVyYW5kSW5kZXhdKTsKKyAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxEb3VibGVSZXBSZWFsVXNlPihtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5b
bm9kZS0+Zmlyc3RDaGlsZCgpICsgb3BlcmFuZEluZGV4XSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICAgICAgY2FzZSBBTExfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUzoKQEAgLTk2MCwx
NiArOTkyLDE2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAg
ICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICAgICAgY2FzZSBDaGVja1RpZXJV
cEFuZE9TUkVudGVyOgotICAgICAgICBjYXNlIEludDUyVG9Eb3VibGU6Ci0gICAgICAgIGNhc2Ug
SW50NTJUb1ZhbHVlOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgICAgICBj
YXNlIENoZWNrQXJyYXk6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICAgICAgY2Fz
ZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6Ci0g
ICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAg
ICAgICAgIGNhc2UgSGFyZFBoYW50b206IC8vIEhhcmRQaGFudG9tIHdvdWxkIGJlIHRyaXZpYWwg
dG8gaGFuZGxlIGJ1dCBhbnl3YXkgd2UgYXNzZXJ0IHRoYXQgd2Ugd29uJ3Qgc2VlIGl0IGhlcmUg
eWV0LgorICAgICAgICBjYXNlIERvdWJsZVJlcDoKKyAgICAgICAgY2FzZSBJbnQ1MlJlcDoKKyAg
ICAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICAgICAgICAgIC8vIFRoZXNlIGFyZSBqdXN0IG5vZGVz
IHRoYXQgd2UgZG9uJ3QgY3VycmVudGx5IGV4cGVjdCB0byBzZWUgZHVyaW5nIGZpeHVwLgogICAg
ICAgICAgICAgLy8gSWYgd2UgZXZlciB3YW50ZWQgdG8gaW5zZXJ0IHRoZW0gcHJpb3IgdG8gZml4
dXAsIHRoZW4gd2UganVzdCBoYXZlIHRvIGNyZWF0ZQogICAgICAgICAgICAgLy8gZml4dXAgcnVs
ZXMgZm9yIHRoZW0uCkBAIC0xMzI3LDEzICsxMzU5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBGbHVzaGVkRG91YmxlOgotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgRmx1c2hlZEludDMyOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRmx1
c2hlZEludDUyOgotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRmx1c2hl
ZENlbGw6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CkBAIC0xNDY2LDcgKzE0OTgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fcHJvZml0
YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51bWJlclVzZToKLSAgICAgICAg
Y2FzZSBSZWFsTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAg
Y2FzZSBEb3VibGVSZXBSZWFsVXNlOgogICAgICAgICAgICAgaWYgKHZhcmlhYmxlLT5kb3VibGVG
b3JtYXRTdGF0ZSgpID09IFVzaW5nRG91YmxlRm9ybWF0KQogICAgICAgICAgICAgICAgIG1fcHJv
Zml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0
cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ3NSw3ICsxNTA4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICB8fCBpc0Jvb2xlYW5TcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGlj
dGlvbigpKSkKICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlh
YmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgog
ICAgICAgICAgICAgaWYgKGlzTWFjaGluZUludFNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0
aW9uKCkpKQogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFi
bGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTUxOCw5ICsxNTUxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIFVzZUtpbmQg
dXNlS2luZDsKICAgICAgICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkK
LSAgICAgICAgICAgIHVzZUtpbmQgPSBNYWNoaW5lSW50VXNlOworICAgICAgICAgICAgdXNlS2lu
ZCA9IEludDUyUmVwVXNlOwogICAgICAgICBlbHNlIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVO
dW1iZXIoKSkKLSAgICAgICAgICAgIHVzZUtpbmQgPSBOdW1iZXJVc2U7CisgICAgICAgICAgICB1
c2VLaW5kID0gRG91YmxlUmVwVXNlOwogICAgICAgICBlbHNlIGlmIChub2RlLT5zaG91bGRTcGVj
dWxhdGVCb29sZWFuKCkpCiAgICAgICAgICAgICB1c2VLaW5kID0gQm9vbGVhblVzZTsKICAgICAg
ICAgZWxzZQpAQCAtMTU4OCw5ICsxNjIxLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9k
ZSkpIHsKLSAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBu
b2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOworICAgICAgICAgICAgbm9k
ZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICAKQEAgLTE3MjUsOTUgKzE3NTksMTA3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCk7CiAgICAgICAgICAgICBpZiAobV9j
dXJyZW50Tm9kZS0+Y29udGFpbnNNb3ZIaW50KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICBpZiAodHJ5VG9SZWxheFJlcHJlc2VudGF0aW9uKG1fY3VycmVudE5vZGUp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgREZHX05PREVfRE9fVE9f
Q0hJTERSRU4obV9ncmFwaCwgbV9jdXJyZW50Tm9kZSwgaW5qZWN0VHlwZUNvbnZlcnNpb25zRm9y
RWRnZSk7CiAgICAgICAgIH0KICAgICAgICAgY2xlYXJQaGFudG9tc0F0RW5kKCk7CiAgICAgICAg
IG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogICAgIH0KICAgICAKKyAgICBib29sIHRy
eVRvUmVsYXhSZXByZXNlbnRhdGlvbihOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgLy8gU29t
ZSBvcGVyYXRpb25zIG1heSBiZSBhYmxlIHRvIG9wZXJhdGUgbW9yZSBlZmZpY2llbnRseSBvdmVy
IGxvb3NlciByZXByZXNlbnRhdGlvbnMuCisgICAgICAgIC8vIElkZW50aWZ5IHRob3NlIGhlcmUu
IFRoaXMgYXZvaWRzIGluc2VydGluZyBhIHJlZHVuZGFudCByZXByZXNlbnRhdGlvbiBjb252ZXJz
aW9uLgorICAgICAgICAKKyAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgIGNh
c2UgVmFsdWVUb0ludDMyOgorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBEb3VibGVSZXBVc2UKKyAgICAgICAgICAgICAgICAmJiAhbm9kZS0+Y2hpbGQxKCktPmhh
c0RvdWJsZVJlc3VsdCgpKSB7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkuc2V0VXNl
S2luZChOdW1iZXJVc2UpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgCiAgICAgdm9pZCBpbmplY3RUeXBlQ29udmVyc2lvbnNGb3JFZGdlKE5vZGUqIG5v
ZGUsIEVkZ2UmIGVkZ2UpCiAgICAgewogICAgICAgICBBU1NFUlQobm9kZSA9PSBtX2N1cnJlbnRO
b2RlKTsKICAgICAgICAgCi0gICAgICAgIGlmIChpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpIHsK
LSAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMo
KSkgewotICAgICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNw
ZWNJbnQ1MkFzRG91YmxlLCBJbnQzMlRvRG91YmxlLAotICAgICAgICAgICAgICAgICAgICBub2Rl
LT5vcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChlZGdlLnVzZUtpbmQoKSkg
eworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFs
VXNlOiB7CisgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1
MigpICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkgewotICAgICAgICAgICAg
ICAgIC8vIE1ha2UgYWxsIGRvdWJsZSB1c2VzIG9mIGludDUyIHZhbHVlcyBoYXZlIGFuIGludGVy
bWVkaWF0ZSBJbnQ1MlRvRG91YmxlLgotICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHRo
ZSBzYW1lIHJlYXNvbiBhcyBJbnQ1MlRvVmFsdWUgKHNlZSBiZWxvdykgZXhjZXB0IHRoYXQKLSAg
ICAgICAgICAgICAgICAvLyBJbnQ4VG9Eb3VibGUgd2lsbCBjb252ZXJ0IGludDUyJ3MgdGhhdCBm
aXQgaW4gYW4gaW50MzIgaW50byBhIGRvdWJsZQotICAgICAgICAgICAgICAgIC8vIHJhdGhlciB0
aGFuIHRyeWluZyB0byBjcmVhdGUgYSBib3hlZCBpbnQzMiBsaWtlIEludDUyVG9WYWx1ZSBkb2Vz
LgotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShl
ZGdlLm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJ
bnQ1MkFzRG91YmxlLCBJbnQ1MlRvRG91YmxlLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5v
cmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwotICAgICAgICAgICAgICAgIGVk
Z2Uuc2V0Tm9kZShyZXN1bHQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7CisKKyAgICAgICAgICAgIE5vZGUqIHJl
c3VsdDsKKyAgICAgICAgICAgIGlmIChlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKSB7CisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAg
ICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MkFzRG91YmxlLCBEb3VibGVSZXAsIG5v
ZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgSW50NTJS
ZXBVc2UpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNEb3VibGUsIERvdWJsZVJlcCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAg
ICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGVuYWJsZUludDUyKCkgJiYgZWRnZS51c2VL
aW5kKCkgIT0gTWFjaGluZUludFVzZQotICAgICAgICAgICAgJiYgZWRnZS0+c2hvdWxkU3BlY3Vs
YXRlTWFjaGluZUludCgpICYmICFlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7Ci0gICAg
ICAgICAgICAvLyBXZSBtYWtlIGFsbCBub24taW50NTIgdXNlcyBvZiBpbnQ1MiB2YWx1ZXMgaGF2
ZSBhbiBpbnRlcm1lZGlhdGUgSW50NTJUb1ZhbHVlCi0gICAgICAgICAgICAvLyBub2RlIHRvIGVu
c3VyZSB0aGF0IHdlIGhhbmRsZSB0aGlzIHByb3Blcmx5OgotICAgICAgICAgICAgLy8KLSAgICAg
ICAgICAgIC8vIGE6IFNvbWVJbnQ1MgotICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoQGEsIC4u
LikKLSAgICAgICAgICAgIC8vIGM6IENhbGwoLi4uLCBAYSkKLSAgICAgICAgICAgIC8vIGQ6IEFy
aXRoQWRkKEBhLCAuLi4pCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gV2l0aG91dCBh
biBpbnRlcm1lZGlhdGUgbm9kZSBhbmQganVzdCBsYWJlbGluZyB0aGUgdXNlcywgd2Ugd2lsbCBn
ZXQ6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29tZUludDUyCi0gICAgICAg
ICAgICAvLyBiOiBBcml0aEFkZChJbnQ1MjpAYSwgLi4uKQotICAgICAgICAgICAgLy8gYzogQ2Fs
bCguLi4sIFVudHlwZWQ6QGEpCi0gICAgICAgICAgICAvLyBkOiBBcml0aEFkZChJbnQ1MjpAYSwg
Li4uKQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIEFuZCBub3cgdGhlIGMtPlVudHlw
ZWQ6QGEgZWRnZSB3aWxsIGJveCB0aGUgdmFsdWUgb2YgQGEgaW50byBhIGRvdWJsZS4gVGhpcwot
ICAgICAgICAgICAgLy8gaXMgYmFkLCBiZWNhdXNlIG5vdyB0aGUgZC0+SW50NTI6QGEgZWRnZSB3
aWxsIGVpdGhlciBoYXZlIHRvIGRvIGRvdWJsZS10by1pbnQKLSAgICAgICAgICAgIC8vIGNvbnZl
cnNpb25zLCBvciB3aWxsIGhhdmUgdG8gT1NSIGV4aXQgdW5jb25kaXRpb25hbGx5LiBBbHRlcm5h
dGl2ZWx5IHdlIGNvdWxkCi0gICAgICAgICAgICAvLyBoYXZlIHRoZSBjLT5VbnR5cGVkOkBhIGVk
Z2UgYm94IHRoZSB2YWx1ZSBieSBjb3B5aW5nIHJhdGhlciB0aGFuIGluLXBsYWNlLgotICAgICAg
ICAgICAgLy8gQnV0IHRoZXNlIGJveGluZ3MgYXJlIGFsc28gY29zdGx5IHNvIHRoaXMgd291bGRu
J3QgYmUgZ3JlYXQuCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gVGhlIHNvbHV0aW9u
IHdlIHVzZSBpcyB0byBhbHdheXMgaGF2ZSBub24tSW50NTIgdXNlcyBvZiBwcmVkaWN0ZWQgSW50
NTIncyB1c2UKLSAgICAgICAgICAgIC8vIGFuIGludGVydmVuaW5nIEludDUyVG9WYWx1ZSBub2Rl
OgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ1MgotICAgICAgICAg
ICAgLy8gYjogQXJpdGhBZGQoSW50NTI6QGEsIC4uLikKLSAgICAgICAgICAgIC8vIHg6IEludDUy
VG9WYWx1ZShJbnQ1MjpAYSkKLSAgICAgICAgICAgIC8vIGM6IENhbGwoLi4uLCBVbnR5cGVkOkB4
KQotICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoSW50NTI6QGEsIC4uLikKLSAgICAgICAgICAg
IC8vCi0gICAgICAgICAgICAvLyBOb3RlIHRoYXQgZXZlbiBpZiB3ZSBoYWQgbXVsdGlwbGUgbm9u
LWludDUyIHVzZXMgb2YgQGEsIHRoZSBtdWx0aXBsZQotICAgICAgICAgICAgLy8gSW50NTJUb1Zh
bHVlJ3Mgd291bGQgZ2V0IENTRSdkIHRvZ2V0aGVyLiBTbyB0aGUgYm94aW5nIHdvdWxkIG9ubHkg
aGFwcGVuIG9uY2UuCi0gICAgICAgICAgICAvLyBBdCB0aGUgc2FtZSB0aW1lLCBAYSB3b3VsZCBj
b250aW51ZSB0byBiZSByZXByZXNlbnRlZCBhcyBhIG5hdGl2ZSBpbnQ1Mi4KLSAgICAgICAgICAg
IC8vCi0gICAgICAgICAgICAvLyBBbiBhbHRlcm5hdGl2ZSB3b3VsZCBoYXZlIGJlZW4gdG8gaW5z
ZXJ0IFRvTmF0aXZlSW50NTIgbm9kZXMgb24gaW50NTIgdXNlcyBvZgotICAgICAgICAgICAgLy8g
aW50NTIncy4gVGhpcyB3b3VsZCBoYXZlIGhhbmRsZWQgdGhlIGFib3ZlIGV4YW1wbGUgYnV0IHdv
dWxkIGZhbGwgb3ZlciBmb3I6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29t
ZUludDUyCi0gICAgICAgICAgICAvLyBiOiBDYWxsKC4uLiwgQGEpCi0gICAgICAgICAgICAvLyBj
OiBBcml0aEFkZChAYSwgLi4uKQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIEJ1dCB0
aGUgc29sdXRpb24gd2UgdXNlIGhhbmRsZXMgdGhlIGFib3ZlIGdyYWNlZnVsbHkuCisgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgaWYgKGVkZ2Ut
Pmhhc0ludDUyUmVzdWx0KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAg
ICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAg
ICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NTIsIEludDUyVG9WYWx1ZSwKLSAgICAgICAgICAg
ICAgICBub2RlLT5vcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIFVudHlwZWRVc2UpKTsKKworICAg
ICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJl
c3VsdCgpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyB3aWxsIG5ldmVyIGhhcHBlbi4KKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
fSBlbHNlIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgewor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAg
ICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIsIEludDUyUmVwLCBub2Rl
LT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIEludDMyVXNl
KSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMg
b25seSBoZXJlIGZvciBkZWFsaW5nIHdpdGggY29uc3RhbnRzLgorICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGVkZ2UtPm9wKCkgPT0gSlNDb25zdGFudCk7CisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAg
bV9pbmRleEluQmxvY2ssIFNwZWNNYWNoaW5lSW50LCBJbnQ1MkNvbnN0YW50LCBub2RlLT5vcmln
aW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhlZGdlLT5jb25zdGFudE51bWJlcigpKSk7
CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOwotICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICBkZWZhdWx0OiB7CisgICAgICAgICAgICBpZiAoIWVkZ2UtPmhhc0RvdWJs
ZVJlc3VsdCgpICYmICFlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgCisgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5u
b2RlKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBOb2RlKiByZXN1bHQ7CisgICAgICAg
ICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpIHsKKyAgICAgICAgICAgICAgICByZXN1
bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2lu
ZGV4SW5CbG9jaywgU3BlY0RvdWJsZSwgVmFsdWVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAg
ICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgRG91YmxlUmVwVXNlKSk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIgfCBT
cGVjSW50NTJBc0RvdWJsZSwgVmFsdWVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAg
ICAgICAgRWRnZShlZGdlLm5vZGUoKSwgSW50NTJSZXBVc2UpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfSB9CiAgICAgfQogICAgIAogICAgIHZvaWQgYWRkUmVxdWlyZWRQ
aGFudG9tKE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zs
dXNoRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
bHVzaEZvcm1hdC5oCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgaW5s
aW5lIE5vZGVGbGFncyByZXN1bHRGb3IoRmx1c2hGb3JtYXQgZgogICAgIGNhc2UgRmx1c2hlZElu
dDUyOgogICAgICAgICByZXR1cm4gTm9kZVJlc3VsdEludDUyOwogICAgIGNhc2UgRmx1c2hlZERv
dWJsZToKLSAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHROdW1iZXI7CisgICAgICAgIHJldHVybiBO
b2RlUmVzdWx0RG91YmxlOwogICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CiAgICAgICAgIHJldHVy
biBOb2RlUmVzdWx0Qm9vbGVhbjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsMTMgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICByZXR1cm4gZmlsdGVyRmxhZ3MofmZsYWdzKTsKICAgICB9CiAgICAgCisgICAg
dm9pZCBzZXRSZXN1bHQoTm9kZUZsYWdzIHJlc3VsdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
KHJlc3VsdCAmIH5Ob2RlUmVzdWx0TWFzaykpOworICAgICAgICBjbGVhckZsYWdzKE5vZGVSZXN1
bHRNYXNrKTsKKyAgICAgICAgbWVyZ2VGbGFncyhyZXN1bHQpOworICAgIH0KKyAgICAKICAgICB2
b2lkIHNldE9wQW5kRGVmYXVsdEZsYWdzKE5vZGVUeXBlIG9wKQogICAgIHsKICAgICAgICAgbV9v
cCA9IG9wOwpAQCAtMzg1LDYgKzM5Miw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICB7CiAgICAgICAg
IHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGNhc2Ug
RG91YmxlQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgY2Fz
ZSBXZWFrSlNDb25zdGFudDoKICAgICAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC00MDEsNyArNDEwLDEyIEBAIHN0cnVjdCBOb2RlIHsKICAg
ICAKICAgICB2b2lkIGNvbnZlcnRUb0NvbnN0YW50KHVuc2lnbmVkIGNvbnN0YW50TnVtYmVyKQog
ICAgIHsKLSAgICAgICAgbV9vcCA9IEpTQ29uc3RhbnQ7CisgICAgICAgIGlmIChoYXNEb3VibGVS
ZXN1bHQoKSkKKyAgICAgICAgICAgIG1fb3AgPSBEb3VibGVDb25zdGFudDsKKyAgICAgICAgZWxz
ZSBpZiAoaGFzSW50NTJSZXN1bHQoKSkKKyAgICAgICAgICAgIG1fb3AgPSBJbnQ1MkNvbnN0YW50
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX29wID0gSlNDb25zdGFudDsKICAgICAgICAg
bV9mbGFncyAmPSB+KE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9iYmVyIHwgTm9kZUNs
b2JiZXJzV29ybGQpOwogICAgICAgICBtX29wSW5mbyA9IGNvbnN0YW50TnVtYmVyOwogICAgICAg
ICBjaGlsZHJlbi5yZXNldCgpOwpAQCAtODA1LDExICs4MTksMjEgQEAgc3RydWN0IE5vZGUgewog
ICAgICAgICByZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdElu
dDMyOwogICAgIH0KICAgICAKKyAgICBib29sIGhhc0ludDUyUmVzdWx0KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiAobV9mbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0SW50NTI7
CisgICAgfQorICAgIAogICAgIGJvb2wgaGFzTnVtYmVyUmVzdWx0KCkKICAgICB7CiAgICAgICAg
IHJldHVybiAobV9mbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0TnVtYmVyOwog
ICAgIH0KICAgICAKKyAgICBib29sIGhhc0RvdWJsZVJlc3VsdCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdERvdWJsZTsKKyAg
ICB9CisgICAgCiAgICAgYm9vbCBoYXNKU1Jlc3VsdCgpCiAgICAgewogICAgICAgICByZXR1cm4g
KG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdEpTOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAkocmV2aXNpb24gMTY3MTgyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0Nyw5IEBAIHZvaWQgZHVtcE5vZGVGbGFncyhQcmludFN0cmVhbSYgYWN0
dWFsT3UKICAgICAgICAgY2FzZSBOb2RlUmVzdWx0TnVtYmVyOgogICAgICAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCAiTnVtYmVyIik7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBO
b2RlUmVzdWx0TnVtYmVyOgorICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRG91YmxlIik7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6CiAgICAg
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJJbnQzMiIpOwogICAgICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDE2
NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDEwICszOCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAjZGVmaW5lIE5vZGVSZXN1bHRNYXNrICAgICAgICAgICAgICAgICAgIDB4MDAwNwogI2Rl
ZmluZSBOb2RlUmVzdWx0SlMgICAgICAgICAgICAgICAgICAgICAweDAwMDEKICNkZWZpbmUgTm9k
ZVJlc3VsdE51bWJlciAgICAgICAgICAgICAgICAgMHgwMDAyCi0jZGVmaW5lIE5vZGVSZXN1bHRJ
bnQzMiAgICAgICAgICAgICAgICAgIDB4MDAwMwotI2RlZmluZSBOb2RlUmVzdWx0SW50NTIgICAg
ICAgICAgICAgICAgICAweDAwMDQKLSNkZWZpbmUgTm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAg
ICAgICAgMHgwMDA1Ci0jZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdlICAgICAgICAgICAgICAgIDB4
MDAwNgorI2RlZmluZSBOb2RlUmVzdWx0RG91YmxlICAgICAgICAgICAgICAgICAweDAwMDMKKyNk
ZWZpbmUgTm9kZVJlc3VsdEludDMyICAgICAgICAgICAgICAgICAgMHgwMDA0CisjZGVmaW5lIE5v
ZGVSZXN1bHRJbnQ1MiAgICAgICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0
Qm9vbGVhbiAgICAgICAgICAgICAgICAweDAwMDYKKyNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2Ug
ICAgICAgICAgICAgICAgMHgwMDA3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
I2RlZmluZSBOb2RlTXVzdEdlbmVyYXRlICAgICAgICAgICAgICAgICAweDAwMDggLy8gc2V0IG9u
IG5vZGVzIHRoYXQgaGF2ZSBzaWRlIGVmZmVjdHMsIGFuZCBtYXkgbm90IHRyaXZpYWxseSBiZSBy
ZW1vdmVkIGJ5IERDRS4KICNkZWZpbmUgTm9kZUhhc1ZhckFyZ3MgICAgICAgICAgICAgICAgICAg
MHgwMDEwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZp
c2lvbiAxNjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICAgICAvKiBBIGNvbnN0YW50IGluIHRoZSBDb2RlQmxvY2sncyBjb25zdGFudCBw
b29sLiAqL1wKICAgICBtYWNybyhKU0NvbnN0YW50LCBOb2RlUmVzdWx0SlMgfCBOb2RlRG9lc05v
dEV4aXQpIFwKICAgICBcCisgICAgLyogQ29uc3RhbnRzIHdpdGggc3BlY2lmaWMgcmVwcmVzZW50
YXRpb25zLiAqL1wKKyAgICBtYWNybyhEb3VibGVDb25zdGFudCwgTm9kZVJlc3VsdERvdWJsZSB8
IE5vZGVEb2VzTm90RXhpdCkgXAorICAgIG1hY3JvKEludDUyQ29uc3RhbnQsIE5vZGVSZXN1bHRJ
bnQ1MiB8IE5vZGVEb2VzTm90RXhpdCkgXAorICAgIFwKICAgICAvKiBBIGNvbnN0YW50IG5vdCBp
biB0aGUgQ29kZUJsb2NrJ3MgY29uc3RhbnQgcG9vbC4gVXNlcyBnZXQgcGF0Y2hlZCB0byBqdW1w
cyB0aGF0IGV4aXQgdGhlICovXAogICAgIC8qIGNvZGUgYmxvY2suICovXAogICAgIG1hY3JvKFdl
YWtKU0NvbnN0YW50LCBOb2RlUmVzdWx0SlMgfCBOb2RlRG9lc05vdEV4aXQpIFwKQEAgLTEwNiwx
NSArMTEwLDEzIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBVc2Vk
IHRvIGJveCB0aGUgcmVzdWx0IG9mIFVSU2hpZnQgbm9kZXMgKHJlc3VsdCBoYXMgcmFuZ2UgMC4u
Ml4zMi0xKS4gKi9cCiAgICAgbWFjcm8oVUludDMyVG9OdW1iZXIsIE5vZGVSZXN1bHROdW1iZXIp
IFwKICAgICBcCi0gICAgLyogVXNlZCB0byBjYXN0IGtub3duIGludGVnZXJzIHRvIGRvdWJsZXMs
IHNvIGFzIHRvIHNlcGFyYXRlIHRoZSBkb3VibGUgZm9ybSAqL1wKLSAgICAvKiBvZiB0aGUgdmFs
dWUgZnJvbSB0aGUgaW50ZWdlciBmb3JtLiAqL1wKLSAgICBtYWNybyhJbnQzMlRvRG91YmxlLCBO
b2RlUmVzdWx0TnVtYmVyKSBcCi0gICAgLyogVXNlZCB0byBzcGVjdWxhdGUgdGhhdCBhIGRvdWJs
ZSB2YWx1ZSBpcyBhY3R1YWxseSBhbiBpbnRlZ2VyLiAqL1wKKyAgICAvKiBBdHRlbXB0IHRvIHRy
dW5jYXRlIGEgZG91YmxlIHRvIGludDMyOyB0aGlzIHdpbGwgZXhpdCBpZiBpdCBjYW4ndCBkbyBp
dC4gKi9cCiAgICAgbWFjcm8oRG91YmxlQXNJbnQzMiwgTm9kZVJlc3VsdEludDMyKSBcCi0gICAg
LyogVXNlZCB0byBzZXBhcmF0ZSByZXByZXNlbnRhdGlvbiBhbmQgcmVnaXN0ZXIgYWxsb2NhdGlv
biBvZiBJbnQ1MidzIHJlcHJlc2VudGVkICovXAotICAgIC8qIGFzIHZhbHVlcy4gKi9cCi0gICAg
bWFjcm8oSW50NTJUb1ZhbHVlLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNybyhJbnQ1MlRvRG91
YmxlLCBOb2RlUmVzdWx0TnVtYmVyKSBcCisgICAgXAorICAgIC8qIENoYW5nZSB0aGUgcmVwcmVz
ZW50YXRpb24gb2YgYSB2YWx1ZS4gKi9cCisgICAgbWFjcm8oRG91YmxlUmVwLCBOb2RlUmVzdWx0
RG91YmxlKSBcCisgICAgbWFjcm8oSW50NTJSZXAsIE5vZGVSZXN1bHRJbnQ1MikgXAorICAgIG1h
Y3JvKFZhbHVlUmVwLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGFy
aXRobWV0aWMgb3BlcmF0aW9ucy4gKi9cCiAgICAgbWFjcm8oQXJpdGhBZGQsIE5vZGVSZXN1bHRO
dW1iZXIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNjcxODIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg5LDcgKzQ4OSw2IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAg
ICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKLSAgICAgICAgY2FzZSBJbnQzMlRvRG91
YmxlOgogICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgIGNhc2UgR2V0TG9jYWxV
bmxpbmtlZDoKICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKQEAgLTUwMywxMSAr
NTAyLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAg
ICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgICAgICBjYXNlIEludmFsaWRh
dGlvblBvaW50OgotICAgICAgICBjYXNlIEludDUyVG9WYWx1ZToKLSAgICAgICAgY2FzZSBJbnQ1
MlRvRG91YmxlOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgICAgIGNhc2UgVmFs
dWVUb0ludDMyOgotICAgICAgICBjYXNlIEhhcmRQaGFudG9tOiB7CisgICAgICAgIGNhc2UgSGFy
ZFBoYW50b206CisgICAgICAgIGNhc2UgRG91YmxlUmVwOgorICAgICAgICBjYXNlIEludDUyUmVw
OgorICAgICAgICBjYXNlIFZhbHVlUmVwOiB7CiAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hv
dWxkIG5ldmVyIGJlIHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxhdGlvbi4gSXQgaXMK
ICAgICAgICAgICAgIC8vIGluc2VydGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZvbGxvd3MgdGhpcyBw
aGFzZS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24g
MTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0CiAKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNl
IEpTQ29uc3RhbnQ6CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBjYXNlIEludDUyQ29u
c3RhbnQ6CiAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAgICBjYXNlIElkZW50aXR5OgogICAg
IGNhc2UgVG9UaGlzOgpAQCAtMTM4LDcgKzE0MCw2IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0
cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICBjYXNlIFVJbnQz
MlRvTnVtYmVyOgogICAgIGNhc2UgSW50MzJUb0RvdWJsZToKLSAgICBjYXNlIERvdWJsZUFzSW50
MzI6CiAgICAgY2FzZSBBcml0aEFkZDoKICAgICBjYXNlIEFyaXRoU3ViOgogICAgIGNhc2UgQXJp
dGhOZWdhdGU6CkBAIC0yNDEsOCArMjQyLDYgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICBjYXNlIENo
ZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgY2FzZSBMb29wSGludDoKLSAgICBjYXNlIEludDUy
VG9Eb3VibGU6Ci0gICAgY2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6
CiAgICAgY2FzZSBTdG9yZUJhcnJpZXJXaXRoTnVsbENoZWNrOgogICAgIGNhc2UgSW52YWxpZGF0
aW9uUG9pbnQ6CkBAIC0yNTQsNiArMjUzLDkgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0
OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKKyAgICBjYXNlIFZhbHVlUmVwOgorICAgIGNh
c2UgRG91YmxlUmVwOgorICAgIGNhc2UgSW50NTJSZXA6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAKICAgICBjYXNlIEdldEJ5VmFsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNjcxODIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDYsMjEgKzEwNiw5IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bEpTVmFsdWUoRWRnZSAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAgICAg
ICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKLSAgICAgICAgICAgICAgICBtX2pp
dC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsK
LSAgICAgICAgICAgICAgICBib3hJbnQ1MihncHIsIGdwciwgc3BpbGxGb3JtYXQpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21w
aWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgICAg
IGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIE5lZWQgdG8gYm94IHRoZSBkb3VibGUsIHNpbmNlIHdlIHdhbnQgYSBKU1ZhbHVlLgot
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdWI2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIsIGdwcik7Ci0gICAgICAgICAgICAgICAgICAgIHNwaWxsRm9ybWF0ID0gRGF0YUZvcm1h
dEpTRG91YmxlOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1
ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwpAQCAtMTQzLDI4ICsxMzEsNiBAQCBHUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAgIHJldHVybiBncHI7
CiAgICAgfQogCi0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7Ci0gICAgICAgIEZQUlJlZyBm
cHIgPSBpbmZvLmZwcigpOwotICAgICAgICBHUFJSZWcgZ3ByID0gYm94RG91YmxlKGZwcik7Ci0K
LSAgICAgICAgLy8gVXBkYXRlIGFsbCBpbmZvCi0gICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1f
c3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0RvdWJsZSk7Ci0gICAgICAgIG1fZnBycy5yZWxlYXNl
KGZwcik7Ci0gICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxs
T3JkZXJKUyk7Ci0KLSAgICAgICAgcmV0dXJuIGdwcjsKLSAgICB9Ci0gICAgICAgIAotICAgIGNh
c2UgRGF0YUZvcm1hdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOiB7Ci0g
ICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBsb2NrKGdwcik7Ci0gICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSBhbGxvY2F0ZSgpOwotICAgICAgICBib3hJbnQ1MihncHIs
IHJlc3VsdEdQUiwgaW5mby5yZWdpc3RlckZvcm1hdCgpKTsKLSAgICAgICAgdW5sb2NrKGdwcik7
Ci0gICAgICAgIHJldHVybiByZXN1bHRHUFI7Ci0gICAgfQotCiAgICAgY2FzZSBEYXRhRm9ybWF0
Q2VsbDoKICAgICAgICAgLy8gTm8gcmV0YWcgcmVxdWlyZWQgb24gSlNWQUxVRTY0IQogICAgIGNh
c2UgRGF0YUZvcm1hdEpTOgpAQCAtMTc5LDYgKzE0NSw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgCiAgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVh
bjoKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJs
ZToKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICAgICAgLy8gdGhpcyB0eXBlIGN1cnJl
bnRseSBuZXZlciBvY2N1cnMKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgCkBAIC03NjksMTIgKzczNyw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUludDMKICAgICAKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkg
ewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgaWYgKGluZm8uc3BpbGxGb3Jt
YXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxh
dGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgICAg
ICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7Ci0gICAgICAgICAgICByZXR1cm4gYWxs
b2NhdGUoKTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9j
YXRlKCk7CiAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKQEAgLTc4OCw3ICs3
NTAsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAg
IAogICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwog
ICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1h
dEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIgfHwgc3BpbGxGb3JtYXQgPT0g
RGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwg
c3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKTsKICAgICAgICAgCiAgICAgICAgIG1fZ3By
cy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKICAgICAg
ICAgCkBAIC04MDksMzYgKzc3MSw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZUludDMKICAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRKU0ludDMyOwog
ICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAgICAgICAgfQotICAgICAgICBpZiAoc3BpbGxGb3Jt
YXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJ
bnQ1MikgewotICAgICAgICAgICAgLy8gR2VuZXJhbGx5LCB0aGlzIGNhbiBvbmx5IGhhcHBlbiBp
ZiB3ZSd2ZSBhbHJlYWR5IHByb3ZlZCB0aGF0IHRoZQotICAgICAgICAgICAgLy8gdmFsdWUgaXMg
YW4gaW50MzIuIFRoYXQncyBiZWNhdXNlIGlmIGEgdmFsdWUgb3JpZ2luYXRlZCBhcyBhIEpTVmFs
dWUKLSAgICAgICAgICAgIC8vIHRoZW4gd2Ugd291bGQgc3BlY3VsYXRlIHRoYXQgaXQncyBhbiBp
bnQzMiBiZWZvcmUgcmVwcmVzZW50aW5nIGl0IGFzCi0gICAgICAgICAgICAvLyBhbiBpbnQ1Mi4g
T3RoZXJ3aXNlLCBpZiB3ZSBrbm93aW5nbHkgcHJvZHVjZWQgYW4gaW50NTIsIHRoZW4gd2Ugd291
bGQKLSAgICAgICAgICAgIC8vIGJlIGJveGluZyBpdCBpbnRvIGEgdmFsdWUgdXNpbmcgSW50NTJU
b1ZhbHVlLiBUaGlzIGFzc2VydGlvbiBpcyB2YWxpZAotICAgICAgICAgICAgLy8gb25seSBiZWNh
dXNlIEludDUyIGlzIHNvbWV0aGluZyB0aGF0IHdlIGludHJvZHVjZSBhdCBwcmVkaWN0aW9uIHRp
bWUuCi0gICAgICAgICAgICAvLyBIb3dldmVyOiB3ZSBtYXkgaGF2ZSBhbiBpbnQzMi1wcm9kdWNp
bmcgbm9kZSByZXBsYWNlZCBieSBhbgotICAgICAgICAgICAgLy8gaW50NTItcHJvZHVjaW5nIG5v
ZGUgZHVlIHRvIENTRS4gU28gd2UgbXVzdCBkbyBhIGNoZWNrLgotICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoISh0eXBlICYgflNwZWNNYWNoaW5lSW50KSk7Ci0gICAgICAgICAgICBpZiAodHlw
ZSAmIFNwZWNJbnQ1MikgewotICAgICAgICAgICAgICAgIEdQUlJlZyB0ZW1wID0gYWxsb2NhdGUo
KTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihncHIsIHRlbXApOwot
ICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2UgY2FuJ3Qgc3VwcGx5IHZhbHVlIHByb2Zp
bGluZyBpbmZvcm1hdGlvbiBoZXJlLiA6LS8KLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAotICAgICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCAwLAotICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IGdwciwgdGVtcCkpOwotICAgICAgICAgICAgICAgIHVubG9jayh0ZW1wKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIp
Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwg
Z3ByKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6aW50NTJTaGlmdEFtb3VudCksIGdwcik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuemVyb0V4
dGVuZDMyVG9QdHIoZ3ByLCBncHIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5mby5m
aWxsSW50MzIoKm1fc3RyZWFtLCBncHIpOwotICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0
YUZvcm1hdEludDMyOwotICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgfQogICAgICAg
ICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwg
Z3ByKTsKIAogICAgICAgICAvLyBGaWxsIGFzIEpTVmFsdWUsIGFuZCBmYWxsIHRocm91Z2guCkBA
IC04OTcsNDcgKzgyOSw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUlu
dDMKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgRGF0YUZv
cm1hdFN0cmljdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOiB7Ci0gICAgICAgIEdQ
UlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBHUFJSZWcgcmVzdWx0OwotICAgICAgICBE
YXRhRm9ybWF0IG9sZEZvcm1hdCA9IGluZm8ucmVnaXN0ZXJGb3JtYXQoKTsKLSAgICAgICAgaWYg
KG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgp
OwotICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBsb2NrKGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQzMigqbV9z
dHJlYW0sIGdwcik7Ci0gICAgICAgICAgICByZXN1bHQgPSBncHI7Ci0gICAgICAgIH0KLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNNYWNoaW5lSW50KSk7Ci0gICAgICAgIGlm
IChvbGRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQotICAgICAgICAgICAgbV9qaXQucnNoaWZ0
NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCByZXN1bHQpOwotICAg
ICAgICBpZiAodHlwZSAmIFNwZWNJbnQ1MikgewotICAgICAgICAgICAgR1BSUmVnIHRlbXAgPSBh
bGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0LCB0
ZW1wKTsKLSAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2UgY2FuJ3Qgc3VwcGx5IHZhbHVlIHBy
b2ZpbGluZyBpbmZvcm1hdGlvbiBoZXJlLiA6LS8KLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soCi0gICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAgICAg
ICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHJlc3VsdCwg
dGVtcCkpOwotICAgICAgICAgICAgdW5sb2NrKHRlbXApOwotICAgICAgICB9Ci0gICAgICAgIG1f
aml0Lnplcm9FeHRlbmQzMlRvUHRyKHJlc3VsdCwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuRm9y
bWF0ID0gRGF0YUZvcm1hdEludDMyOwotICAgICAgICByZXR1cm4gZ3ByOwotICAgIH0KLQotICAg
IGNhc2UgRGF0YUZvcm1hdERvdWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZTogewot
ICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSAmJiBpc0ludDMyQ29uc3RhbnQoZWRnZS5u
b2RlKCkpKSB7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKLSAgICAgICAg
ICAgIEFTU0VSVChpc0ludDMyQ29uc3RhbnQoZWRnZS5ub2RlKCkpKTsKLSAgICAgICAgICAgIG1f
aml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTMyKHZhbHVlT2ZJbnQzMkNvbnN0YW50KGVkZ2Uu
bm9kZSgpKSksIGdwcik7Ci0gICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50
MzI7Ci0gICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICB9Ci0gICAgICAgIEZBTExUSFJP
VUdIOwotICAgIH0KKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAgICBjYXNlIERhdGFG
b3JtYXRDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CiAgICAgY2FzZSBEYXRhRm9y
bWF0SlNDZWxsOgpAQCAtOTQ3LDcgKzgzOSwxMCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KIAorICAg
IGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAg
IGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAKICAgICBkZWZh
dWx0OgpAQCAtOTgzLDcgKzg3OCw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZUludDUKIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2Fz
ZSBEYXRhRm9ybWF0Tm9uZTogewotICAgICAgICBpZiAoKGVkZ2UtPmhhc0NvbnN0YW50KCkgJiYg
IXZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKS5pc01hY2hpbmVJbnQoKSkgfHwgaW5mby5z
cGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKKyAgICAgICAgaWYgKChlZGdlLT5o
YXNDb25zdGFudCgpICYmICF2YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSkuaXNNYWNoaW5l
SW50KCkpKSB7CiAgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUo
KTsKICAgICAgICAgfQpAQCAtMTExOCwyNiArMTAxMywxMCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVJbnQ1CiAKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0gICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgp
KSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB2YWx1ZU9mSlNDb25zdGFudChlZGdl
Lm5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoanNWYWx1ZS5pc01hY2hpbmVJbnQoKSkgewotICAg
ICAgICAgICAgICAgIGludDY0X3QgdmFsdWUgPSBqc1ZhbHVlLmFzTWFjaGluZUludCgpOwotICAg
ICAgICAgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikKLSAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA8PCBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50
OwotICAgICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAg
ICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHZhbHVlKSwgZ3ByKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IEZBTExUSFJPVUdIOwogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CiAgICAgY2FzZSBEYXRhRm9y
bWF0Qm9vbGVhbjoKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9y
bWF0SlNCb29sZWFuOiB7Ci0gICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7
Ci0gICAgfQotCisgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOgogICAgIGNhc2UgRGF0YUZv
cm1hdFN0b3JhZ2U6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIApAQCAtMTIwNSwyNCArMTA4NCw2IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNw
ZWN1bGF0ZURvdWIKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
LSAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6IHsKLSAgICAgICAgICAgIEdQUlJlZyBncHIg
PSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdp
c3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwotICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBp
bmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICB1bmxvY2soZ3ByKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2Fz
ZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxv
Y2F0ZSgpOwotICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3Rlciwg
U3BpbGxPcmRlclNwaWxsZWQpOwotICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZp
bGxTdHJpY3RJbnQ1MigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICB1bmxvY2soZ3ByKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwogCkBAIC0xMjg3LDI4ICsxMTQ4LDYgQEAg
RlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YgogICAgICAgICByZXR1cm4g
ZnByOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6IHsKLSAgICAg
ICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZv
LmdwcigpOwotICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICBHUFJSZWcgdGVtcCA9
IGFsbG9jYXRlKCk7Ci0gICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1wKTsKLSAgICAgICAgbV9q
aXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCB0ZW1w
KTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUodGVtcCwgZnByKTsKLSAgICAg
ICAgdW5sb2NrKHRlbXApOwotICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0gICAgICAgIHJl
dHVybiBmcHI7Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1
MjogewotICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BSUmVn
IGdwciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgIG1f
aml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKGdwciwgZnByKTsKLSAgICAgICAgbV9ncHJzLnVubG9j
ayhncHIpOwotICAgICAgICByZXR1cm4gZnByOwotICAgIH0KLQogICAgIC8vIFVuYm94IHRoZSBk
b3VibGUKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZTogewogICAgICAgICBHUFJSZWcgZ3By
ID0gaW5mby5ncHIoKTsKQEAgLTEzNTIsMTEgKzExOTEsNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQo
KSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgaWYgKGluZm8uc3BpbGxG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50MzIgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFG
b3JtYXREb3VibGUpIHsKLSAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9u
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBhbGxv
Y2F0ZSgpOwotICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2Nh
dGUoKTsKIAogICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewpAQCAtMTQwNSwxNiAr
MTIzOSwxNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICBj
YXNlIERhdGFGb3JtYXRKU0RvdWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOgotICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46Ci0g
ICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6
IHsKKyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOiB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1
bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAg
cmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgfQogCisgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgog
ICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6Cisg
ICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0xNDMzLDcgKzEyNjcsNyBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAKICAgICBzd2l0Y2gg
KGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAg
ICAgICAgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50MzIgfHwgaW5mby5z
cGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKKyAgICAgICAgaWYgKGluZm8uc3Bp
bGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50MzIpIHsKICAgICAgICAgICAgIHRlcm1pbmF0ZVNw
ZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAg
ICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgICAgICB9CkBAIC0xNDg3LDE2ICsxMzIxLDE2
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICBjYXNlIERh
dGFGb3JtYXRKU0ludDMyOgogICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgogICAgIGNhc2UgRGF0
YUZvcm1hdEpTRG91YmxlOgotICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERh
dGFGb3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKLSAgICBjYXNlIERhdGFG
b3JtYXRJbnQ1MjoKLSAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjogeworICAgIGNhc2Ug
RGF0YUZvcm1hdENlbGw6IFAKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24o
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUo
KTsKICAgICB9CiAgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNl
IERhdGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2Ug
RGF0YUZvcm1hdFN0cmljdEludDUyOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMjQwMCwyNCArMjIzNCwyMyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICAgICAgCi0gICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7Ci0gICAgICAgIGNvbXBpbGVJ
bnQzMlRvRG91YmxlKG5vZGUpOworICAgIGNhc2UgRG91YmxlUmVwOiB7CisgICAgICAgIGNvbXBp
bGVEb3VibGVSZXAobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAg
Y2FzZSBJbnQ1MlRvVmFsdWU6IHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1
c2UsIG9wZXJhbmQpOwotICAgICAgICBtX2ppdC5tb3ZlKG9wZXJhbmQuZ3ByKCksIHJlc3VsdC5n
cHIoKSk7Ci0gICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKKyAgICBj
YXNlIFZhbHVlUmVwOiB7CisgICAgICAgIGNvbXBpbGVWYWx1ZVJlcChub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEludDUyVG9Eb3VibGU6IHsKLSAgICAg
ICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcGVyYW5kKTsKLSAgICAgICAgbV9q
aXQubW92ZURvdWJsZShvcGVyYW5kLmZwcigpLCByZXN1bHQuZnByKCkpOwotICAgICAgICBkb3Vi
bGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKKyAgICBjYXNlIEludDUyUmVwOiB7CisgICAg
ICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcGVyYW5kKTsKKyAgICAgICAgCisg
ICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKG9wZXJhbmQuZ3ByKCksIHJlc3VsdC5ncHIo
KSk7CisgICAgICAgIAorICAgICAgICBzdHJpY3RJbnQ1MlJlc3VsdChyZXN1bHQuZ3ByKCksIG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE2NzE4
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDM5LDYgKzEwMzksMjggQEAgR1BSVGVtcG9yYXJ5OjpHUFJUZW1w
b3JhcnkoCiB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKIAorSlNWYWx1ZVJlZ3NUZW1w
b3Jhcnk6OkpTVmFsdWVSZWdzVGVtcG9yYXJ5KCkgeyB9CisKK0pTVmFsdWVSZWdzVGVtcG9yYXJ5
OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeShTcGVjdWxhdGl2ZUpJVCogaml0KQorI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgOiBtX2dwcihqaXQpCisjZWxzZQorICAgIDogbV9wYXlsb2FkR1BSKGppdCkK
KyAgICAsIG1fdGFnR1BSKGppdCkKK3sKK30KKworSlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6On5KU1Zh
bHVlUmVnc1RlbXBvcmFyeSgpIHsgfQorCitKU1ZhbHVlUmVncyBKU1ZhbHVlUmVnc1RlbXBvcmFy
eTo6cmVncygpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gSlNWYWx1ZVJlZ3Mo
bV9ncHIuZ3ByKCkpOworI2Vsc2UKKyAgICByZXR1cm4gSlNWYWx1ZVJlZ3MobV90YWdHUFIuZ3By
KCksIG1fcGF5bG9hZEdQUi5ncHIoKSk7CisjZW5kaWYKK30KKwogdm9pZCBHUFJUZW1wb3Jhcnk6
OmFkb3B0KEdQUlRlbXBvcmFyeSYgb3RoZXIpCiB7CiAgICAgQVNTRVJUKCFtX2ppdCk7CkBAIC0x
ODE3LDE2ICsxODM5LDEzIEBAIEdlbmVyYXRlZE9wZXJhbmRUeXBlIFNwZWN1bGF0aXZlSklUOjpj
aGUKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlM6CiAg
ICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91Ymxl
OgogICAgICAgICByZXR1cm4gR2VuZXJhdGVkT3BlcmFuZEpTVmFsdWU7CiAKICAgICBjYXNlIERh
dGFGb3JtYXRKU0ludDMyOgogICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgogICAgICAgICByZXR1
cm4gR2VuZXJhdGVkT3BlcmFuZEludGVnZXI7CiAKLSAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJs
ZToKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6Ci0gICAgICAgIHJldHVybiBHZW5lcmF0ZWRP
cGVyYW5kRG91YmxlOwotICAgICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gR2VuZXJhdGVkT3BlcmFuZFR5cGVV
bmtub3duOwpAQCAtMTg0NSw3ICsxODY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVZhbHVlVG9JbnQzMgogICAgIH0KICAgICAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBj
YXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAgIFNw
ZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEpOwogICAgICAgICBHUFJS
ZWcgb3AxR1BSID0gb3AxLmdwcigpOwpAQCAtMTg1NSw2ICsxODc0LDE5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorICAgICAgICAKKyAgICBjYXNlIERvdWJsZVJlcFVzZTog
eworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBTcGVjdWxhdGVE
b3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uKTsKKyAgICAgICAgRlBSUmVnIGZwciA9IG9wMS5mcHIoKTsKKyAgICAgICAgR1BSUmVn
IGdwciA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90VHJ1bmNh
dGVkVG9JbnRlZ2VyID0gbV9qaXQuYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKGZwciwgZ3By
LCBKSVRDb21waWxlcjo6QnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCk7CisgICAgICAgIAorICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobm90VHJ1bmNhdGVkVG9JbnRlZ2Vy
LCB0aGlzLCB0b0ludDMyLCBncHIsIGZwcikpOworICAgICAgICAKKyAgICAgICAgaW50MzJSZXN1
bHQoZ3ByLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAKICAgICBjYXNlIE51
bWJlclVzZToKICAgICBjYXNlIE5vdENlbGxVc2U6IHsKQEAgLTE4NjYsMTggKzE4OTgsNiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAgICAgICAgICAgICBpbnQz
MlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIG9wMS5mb3JtYXQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBHZW5lcmF0ZWRPcGVyYW5kRG91YmxlOiB7
Ci0gICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgU3Bl
Y3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7Ci0gICAgICAgICAgICBGUFJSZWcgZnByID0gb3AxLmZwcigpOwotICAg
ICAgICAgICAgR1BSUmVnIGdwciA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIG5vdFRydW5jYXRlZFRvSW50ZWdlciA9IG1faml0LmJyYW5jaFRydW5jYXRlRG91
YmxlVG9JbnQzMihmcHIsIGdwciwgSklUQ29tcGlsZXI6OkJyYW5jaElmVHJ1bmNhdGVGYWlsZWQp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwobm90VHJ1bmNhdGVkVG9JbnRlZ2VyLCB0aGlzLCB0b0ludDMyLCBncHIsIGZwcikpOwot
Ci0gICAgICAgICAgICBpbnQzMlJlc3VsdChncHIsIG5vZGUpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9CiAgICAgICAgIGNhc2UgR2VuZXJhdGVkT3BlcmFuZEpTVmFsdWU6IHsKICAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
QEAgLTIwNjYsNzAgKzIwODYsMTMxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3Vi
bGVBc0ludDMKICAgICBpbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW50MzJUb0RvdWJsZShOb2RlKiBub2RlKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcChOb2RlKiBub2RlKQogewotICAgIEFTU0VSVCgh
aXNJbnQzMkNvbnN0YW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpOyAvLyBUaGlzIHNob3VsZCBo
YXZlIGJlZW4gY29uc3RhbnQgZm9sZGVkLgorICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpKSB7CisgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgQVNTRVJUKCFpc0ludDMy
Q29uc3RhbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpKSk7IC8vIFRoaXMgc2hvdWxkIGhhdmUgYmVl
biBjb25zdGFudCBmb2xkZWQuCiAgICAgCi0gICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkpIHsKLSAgICAgICAgU3BlY3VsYXRl
SW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uKTsKLSAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgbV9q
aXQuY29udmVydEludDMyVG9Eb3VibGUob3AxLmdwcigpLCByZXN1bHQuZnByKCkpOwotICAgICAg
ICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fdHlwZSkpIHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBv
cDEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgbV9qaXQuY29u
dmVydEludDMyVG9Eb3VibGUob3AxLmdwcigpLCByZXN1bHQuZnByKCkpOworICAgICAgICAgICAg
ZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KICAgICAKLSAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQx
KCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOwogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogCi0gICAgR1BSUmVnIG9wMUdQ
UiA9IG9wMS5ncHIoKTsKLSAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7Ci0gICAgRlBS
UmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKKyAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9w
MS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBG
UFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigpOwogICAgIAotICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDY0KAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Cisg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDY0KAorICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxR1BSLCBHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogICAgIAotICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2Rl
LT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIpKSB7Ci0gICAgICAgIHR5cGVDaGVjaygKLSAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJl
ciwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywg
b3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKLSAgICB9CisgICAgICAg
IGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY0J5dGVjb2RlTnVtYmVyKSkg
eworICAgICAgICAgICAgdHlwZUNoZWNrKAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9w
MUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjQnl0ZWNvZGVOdW1iZXIsCisgICAgICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBvcDFHUFIsIEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAgICB9CiAgICAgCi0gICAgbV9qaXQu
bW92ZShvcDFHUFIsIHRlbXBHUFIpOwotICAgIHVuYm94RG91YmxlKHRlbXBHUFIsIHJlc3VsdEZQ
Uik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAg
bV9qaXQubW92ZShvcDFHUFIsIHRlbXBHUFIpOworICAgICAgICB1bmJveERvdWJsZSh0ZW1wR1BS
LCByZXN1bHRGUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVt
cCgpOwogICAgIAotICAgIGlzSW50ZWdlci5saW5rKCZtX2ppdCk7Ci0gICAgbV9qaXQuY29udmVy
dEludDMyVG9Eb3VibGUob3AxR1BSLCByZXN1bHRGUFIpOwotICAgIGRvbmUubGluaygmbV9qaXQp
OwotI2Vsc2UKLSAgICBGUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgaXNJbnRlZ2Vy
LmxpbmsoJm1faml0KTsKKyAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxR1BS
LCByZXN1bHRGUFIpOworICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyNlbHNlIC8vIFVTRShK
U1ZBTFVFNjQpIC0+IHRoaXMgaXMgdGhlIDMyXzY0IGNhc2UKKyAgICAgICAgRlBSVGVtcG9yYXJ5
IHRlbXAodGhpcyk7CiAgICAgCi0gICAgR1BSUmVnIG9wMVRhZ0dQUiA9IG9wMS50YWdHUFIoKTsK
LSAgICBHUFJSZWcgb3AxUGF5bG9hZEdQUiA9IG9wMS5wYXlsb2FkR1BSKCk7Ci0gICAgRlBSUmVn
IHRlbXBGUFIgPSB0ZW1wLmZwcigpOwotICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnBy
KCk7CisgICAgICAgIEdQUlJlZyBvcDFUYWdHUFIgPSBvcDEudGFnR1BSKCk7CisgICAgICAgIEdQ
UlJlZyBvcDFQYXlsb2FkR1BSID0gb3AxLnBheWxvYWRHUFIoKTsKKyAgICAgICAgRlBSUmVnIHRl
bXBGUFIgPSB0ZW1wLmZwcigpOworICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZw
cigpOwogICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5j
aDMyKAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50
ZWdlciA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwogICAgIAotICAg
IGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIpKSB7Ci0g
ICAgICAgIHR5cGVDaGVjaygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3Ax
UGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKLSAgICAgICAgICAg
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMVRhZ0dQUiwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKLSAgICB9CisgICAgICAgIGlmIChu
ZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY0J5dGVjb2RlTnVtYmVyKSkgeworICAg
ICAgICAgICAgdHlwZUNoZWNrKAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMVRhZ0dQ
Uiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjQnl0ZWNvZGVOdW1iZXIsCisg
ICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOworICAgICAg
ICB9CiAgICAgCi0gICAgdW5ib3hEb3VibGUob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSLCByZXN1
bHRGUFIsIHRlbXBGUFIpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1w
KCk7CisgICAgICAgIHVuYm94RG91YmxlKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiwgcmVzdWx0
RlBSLCB0ZW1wRlBSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1
bXAoKTsKICAgICAKLSAgICBpc0ludGVnZXIubGluaygmbV9qaXQpOwotICAgIG1faml0LmNvbnZl
cnRJbnQzMlRvRG91YmxlKG9wMVBheWxvYWRHUFIsIHJlc3VsdEZQUik7Ci0gICAgZG9uZS5saW5r
KCZtX2ppdCk7Ci0jZW5kaWYKKyAgICAgICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsKKyAgICAg
ICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxUGF5bG9hZEdQUiwgcmVzdWx0RlBSKTsK
KyAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAg
ICAKLSAgICBkb3VibGVSZXN1bHQocmVzdWx0RlBSLCBub2RlKTsKKyAgICAgICAgZG91YmxlUmVz
dWx0KHJlc3VsdEZQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICBTcGVj
dWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAKKyAgICAgICAgR1BSUmVn
IHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAgICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1
bHQuZnByKCk7CisKKyAgICAgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUodmFsdWVHUFIs
IHJlc3VsdEZQUik7CisgICAgICAgIAorICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0RlBSLCBu
b2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICAKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVSZXAoTm9kZSogbm9kZSkKK3sKKyAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSkgeworICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CisgICAgICAgIFNwZWN1bGF0
ZURvdWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1Zh
bHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIAorICAgICAgICBGUFJSZWcg
dmFsdWVGUFIgPSB2YWx1ZS5mcHIoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IHJlc3VsdC5yZWdzKCk7CisgICAgICAgIAorICAgICAgICBib3hEb3VibGUodmFsdWVGUFIsIHJl
c3VsdFJlZ3MpOworICAgICAgICAKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBu
b2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDUy
T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CisgICAgICAgIAorICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1
ZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAg
ICAgCisgICAgICAgIGJveEludDUyKHZhbHVlR1BSLCByZXN1bHRHUFIsIERhdGFGb3JtYXRJbnQ1
Mik7CisgICAgICAgIAorICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KIH0KIAogc3RhdGljIGRvdWJsZSBjbGFtcERvdWJsZVRvQnl0
ZShkb3VibGUgZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgJKHJldmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNDU5LDYgKzQ1OSwxMCBA
QCBwdWJsaWM6CiAgICAgICAgIG1faml0LnVuYm94RG91YmxlKHRhZ0dQUiwgcGF5bG9hZEdQUiwg
ZnByLCBzY3JhdGNoRlBSKTsKICAgICB9CiAjZW5kaWYKKyAgICB2b2lkIGJveERvdWJsZShGUFJS
ZWcgZnByLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyAgICAgICAgbV9qaXQuYm94RG91Ymxl
KGZwciwgcmVncyk7CisgICAgfQogCiAgICAgLy8gU3BpbGwgYSBWaXJ0dWFsUmVnaXN0ZXIgdG8g
dGhlIEpTU3RhY2suCiAgICAgdm9pZCBzcGlsbChWaXJ0dWFsUmVnaXN0ZXIgc3BpbGxNZSkKQEAg
LTkyNSw2ICs5MjksMTQgQEAgcHVibGljOgogICAgICAgICBqc1ZhbHVlUmVzdWx0KHRhZywgcGF5
bG9hZCwgbm9kZSwgRGF0YUZvcm1hdEpTLCBtb2RlKTsKICAgICB9CiAjZW5kaWYKKyAgICB2b2lk
IGpzVmFsdWVSZXN1bHQoSlNWYWx1ZVJlZ3MgcmVncywgTm9kZSogbm9kZSwgRGF0YUZybWF0IGZv
cm1hdCA9IERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRy
ZW4pCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVn
cy5ncHIoKSwgbm9kZSwgZm9ybWF0LCBtb2RlKTsKKyNlbHNlCisgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVncy50YWdHUFIoKSwgcmVncy5wYXlsb2FkR1BSKCksIG5vZGUsIGZvcm1hdCwgbW9kZSk7
CisjZW5kaWYKKyAgICB9CiAgICAgdm9pZCBzdG9yYWdlUmVzdWx0KEdQUlJlZyByZWcsIE5vZGUq
IG5vZGUsIFVzZUNoaWxkcmVuTW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxkcmVuKQogICAgIHsKICAg
ICAgICAgaWYgKG1vZGUgPT0gQ2FsbFVzZUNoaWxkcmVuKQpAQCAtMjA4Myw3ICsyMDk1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgY29tcGlsZVZhbHVlVG9JbnQzMihOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlVUludDMyVG9OdW1iZXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZURvdWJsZUFzSW50
MzIoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUludDMyVG9Eb3VibGUoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZURvdWJsZVJlcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQWRkKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVNYWtlUm9wZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhT
dWIoTm9kZSopOwpAQCAtMjU2NSw2ICsyNTc3LDIzIEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1f
Z3ByOwogfTsKIAorY2xhc3MgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgeworcHVibGljOgorICAgIEpT
VmFsdWVSZWdzVGVtcG9yYXJ5KCk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRp
dmVKSVQqKTsKKyAgICB+SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoKTsKKyAgICAKKyAgICBKU1ZhbHVl
UmVncyByZWdzKCk7CisKK3ByaXZhdGU6CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBHUFJUZW1w
b3JhcnkgbV9ncHI7CisjZWxzZQorICAgIEdQUlRlbXBvcmFyeSBtX3BheWxvYWRHUFI7CisgICAg
R1BSVGVtcG9yYXJ5IG1fdGFnR1BSOworI2VuZGlmCit9OworCiBjbGFzcyBGUFJUZW1wb3Jhcnkg
ewogcHVibGljOgogICAgIEZQUlRlbXBvcmFyeShTcGVjdWxhdGl2ZUpJVCopOwpAQCAtMjc1NCwx
MiArMjc4MywxMiBAQCBwcml2YXRlOgogLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUyIChp
LmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDE2LCBsb3cgYml0cyB6ZXJvKS4KIGNsYXNzIFNwZWN1
bGF0ZUludDUyT3BlcmFuZCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU3BlY3VsYXRlSW50NTJP
cGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9u
TW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNw
ZWN1bGF0ZUludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UpCiAgICAg
ICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3By
T3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1v
ZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09
IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9
PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAg
ICAgICAgICBncHIoKTsKICAgICB9CkBAIC0yODAxLDEyICsyODMwLDEyIEBAIHByaXZhdGU6CiAv
LyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhlIGxv
dyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgogY2xhc3MgU3BlY3Vs
YXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVT
dHJpY3RJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5k
U3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAg
ZXhwbGljaXQgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQs
IEVkZ2UgZWRnZSkKICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9lZGdlKGVkZ2Up
CiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKICAgICB7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwg
ZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxs
ZWQobm9kZSgpKSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0KQEAgLTI4NDksMzUgKzI4Nzgs
MzUgQEAgZW51bSBPcHBvc2l0ZVNoaWZ0VGFnIHsgT3Bwb3NpdGVTaGlmdCB9OwogCiBjbGFzcyBT
cGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQgewogcHVibGljOgotICAgIGV4cGxpY2l0IFNw
ZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVk
Z2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxh
dGlvbikKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQoU3BlY3Vs
YXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlKQogICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAg
LCBtX2VkZ2UoZWRnZSkKICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQog
ICAgICAgICAsIG1fc3RyaWN0KGppdC0+YmV0dGVyVXNlU3RyaWN0SW50NTIoZWRnZSkpCiAgICAg
ewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChq
aXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CiAgICAgCi0g
ICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklU
KiBqaXQsIEVkZ2UgZWRnZSwgY29uc3QgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kJiBv
dGhlciwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1
bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZChTcGVj
dWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUy
T3BlcmFuZCYgb3RoZXIpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fZWRnZShl
ZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgICAgICwg
bV9zdHJpY3Qob3RoZXIubV9zdHJpY3QpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1v
ZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09
IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9
PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAg
ICAgICAgICBncHIoKTsKICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hl
dmVySW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3Bwb3NpdGVT
aGlmdFRhZywgY29uc3QgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kJiBvdGhlciwgT3Bl
cmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQor
ICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJ
VCogaml0LCBFZGdlIGVkZ2UsIE9wcG9zaXRlU2hpZnRUYWcsIGNvbnN0IFNwZWN1bGF0ZVdoaWNo
ZXZlckludDUyT3BlcmFuZCYgb3RoZXIpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAs
IG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAg
ICAgICAgICwgbV9zdHJpY3QoIW90aGVyLm1fc3RyaWN0KQogICAgIHsKLSAgICAgICAgQVNTRVJU
X1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVz
ZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZWRnZS51
c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2Rl
KCkpKQogICAgICAgICAgICAgZ3ByKCk7CiAgICAgfQpAQCAtMjkyNiwxMyArMjk1NSwxMyBAQCBw
cml2YXRlOgogCiBjbGFzcyBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHsKIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBTcGVjdWxhdGVEb3VibGVPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2Ug
ZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1
bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQoU3BlY3VsYXRpdmVK
SVQqIGppdCwgRWRnZSBlZGdlKQogICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX2Vk
Z2UoZWRnZSkKICAgICAgICAgLCBtX2Zwck9ySW52YWxpZChJbnZhbGlkRlBSUmVnKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1faml0KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2Rl
ID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkp
OworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOwogICAg
ICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQogICAgICAgICAgICAgZnByKCk7CiAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCShyZXZpc2lv
biAxNjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NiwxNyArNDYsMTcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAgb3V0LnBy
aW50KCJLbm93bkludDMyIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWFjaGluZUludFVz
ZToKLSAgICAgICAgb3V0LnByaW50KCJNYWNoaW5lSW50Iik7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgb3V0LnByaW50KCJSZWFsTnVtYmVyIik7Cisg
ICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgb3V0LnByaW50KCJJbnQ1MlJlcCIpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgb3V0LnByaW50KCJOdW1i
ZXIiKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAg
b3V0LnByaW50KCJLbm93bk51bWJlciIpOworICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAg
ICBvdXQucHJpbnQoIkRvdWJsZVJlcCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERvdWJs
ZVJlcFJlYWxVc2U6CisgICAgICAgIG91dC5wcmludCgiRG91YmxlUmVwUmVhbCIpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIG91dC5wcmludCgiQm9vbGVh
biIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHJldmlzaW9u
IDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNywxMCArMzcsMTAgQEAgZW51bSBVc2VLaW5kIHsKICAgICBVbnR5cGVk
VXNlLAogICAgIEludDMyVXNlLAogICAgIEtub3duSW50MzJVc2UsCi0gICAgTWFjaGluZUludFVz
ZSwKLSAgICBSZWFsTnVtYmVyVXNlLAorICAgIEludDUyUmVwVXNlLAogICAgIE51bWJlclVzZSwK
LSAgICBLbm93bk51bWJlclVzZSwKKyAgICBEb3VibGVSZXBVc2UsCisgICAgRG91YmxlUmVwUmVh
bFVzZSwKICAgICBCb29sZWFuVXNlLAogICAgIENlbGxVc2UsCiAgICAgS25vd25DZWxsVXNlLApA
QCAtNjcsMTMgKzY3LDE0IEBAIEFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRl
ckYKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAg
cmV0dXJuIFNwZWNJbnQzMjsKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgY2FzZSBJbnQ1
MlJlcFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNNYWNoaW5lSW50OwotICAgIGNhc2UgUmVhbE51
bWJlclVzZToKLSAgICAgICAgcmV0dXJuIFNwZWNGdWxsUmVhbE51bWJlcjsKICAgICBjYXNlIE51
bWJlclVzZToKLSAgICBjYXNlIEtub3duTnVtYmVyVXNlOgotICAgICAgICByZXR1cm4gU3BlY0Z1
bGxOdW1iZXI7CisgICAgICAgIHJldHVybiBTcGVjQnl0ZWNvZGVOdW1iZXI7CisgICAgY2FzZSBE
b3VibGVSZXBVc2U6CisgICAgICAgIHJldHVybiBTcGVjRG91YmxlOworICAgIGNhc2UgRG91Ymxl
UmVwUmVhbFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVSZWFsOwogICAgIGNhc2UgQm9v
bGVhblVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCb29sZWFuOwogICAgIGNhc2UgQ2VsbFVzZToK
QEAgLTExMyw5ICsxMTQsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIHNob3VsZE5vdEhhdmVUeXBl
Q2hlYwogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgVW50eXBlZFVzZToKICAgICBjYXNl
IEtub3duSW50MzJVc2U6Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKICAgICBjYXNlIEtub3du
Q2VsbFVzZToKICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgorICAgIGNhc2UgSW50NTJSZXBVc2U6
CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMiwxMCArMTM0LDExIEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGsKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAg
ICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKLSAgICBjYXNlIE1hY2hp
bmVJbnRVc2U6Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgIGNhc2UgTnVtYmVyVXNlOgot
ICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICBjYXNl
IERvdWJsZVJlcFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgY2FzZSBCeXRl
Y29kZUludFVzZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTQ1LDkgKzE0OCw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc051
bWVyaWNhbChVc2VLaW5kIGsKIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RvdWJsZShVc2VLaW5kIGtp
bmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAg
IGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CisgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTY3MTgyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTE1LDYgKzExNSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIG1fbXlSZWZDb3VudHMuZmluZChlZGdlLm5vZGUoKSktPnZhbHVlKys7CiAg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwg
ZWRnZSksIGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpID09IChlZGdlLnVzZUtpbmQoKSA9PSBEb3Vi
bGVSZXBVc2UgfHwgZWRnZS51c2VLaW5kKCkgPT0gRG91YmxlUmVwUmVhbFVzZSkpOworICAgICAg
ICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc0ludDUyUmVzdWx0
KCkgPT0gKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKSk7CisgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiBTU0EsIGFsbCBlZGdlcyBtdXN0IGhhc1Jlc3Vs
dCgpLgogICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdl
LT5oYXNSZXN1bHQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw3
ICsxODYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICBMVHlwZSB0eXBlOwogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Zmxh
Z3MoKSAmIE5vZGVSZXN1bHRNYXNrKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0
TnVtYmVyOgorICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdERvdWJsZToKICAgICAgICAg
ICAgICAgICAgICAgdHlwZSA9IG1fb3V0LmRvdWJsZVR5cGU7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgpAQCAtMjgyLDEy
ICsyODIsMzAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEpT
Q29uc3RhbnQ6CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEb3VibGVDb25zdGFu
dDoKKyAgICAgICAgICAgIGNvbXBpbGVEb3VibGVDb25zdGFudCgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKKyAgICAgICAgICAgIGNvbXBpbGVJbnQ1
MkNvbnN0YW50KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWFrSlNDb25z
dGFudDoKICAgICAgICAgICAgIGNvbXBpbGVXZWFrSlNDb25zdGFudCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKICAgICAgICAgICAgIGNvbXBp
bGVQaGFudG9tQXJndW1lbnRzKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBE
b3VibGVSZXA6CisgICAgICAgICAgICBjb21waWxlRG91YmxlUmVwKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICAgICAgICAgIGNvbXBpbGVWYWx1ZVJl
cCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NTJSZXA6CisgICAgICAg
ICAgICBjb21waWxlSW50NTJSZXAoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFZhbHVlVG9JbnQzMjoKKyAgICAgICAgICAgIGNvbXBpbGVWYWx1ZVRvSW50MzIoKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldEFyZ3VtZW50OgogICAgICAgICAgICAgY29t
cGlsZUdldEFyZ3VtZW50KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM3NSw5ICszOTMsNiBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgogICAgICAgICAgICAgY29t
cGlsZVVJbnQzMlRvTnVtYmVyKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJ
bnQzMlRvRG91YmxlOgotICAgICAgICAgICAgY29tcGlsZUludDMyVG9Eb3VibGUoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAg
Y29tcGlsZUNoZWNrU3RydWN0dXJlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU2NiwxMiAr
NTgxLDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICAg
ICAgICAgIGNvbXBpbGVJbnZhbGlkYXRpb25Qb2ludCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgotICAgICAgICAgICAgY29tcGlsZVZhbHVlVG9JbnQz
MigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgotICAg
ICAgICAgICAgY29tcGlsZUludDUyVG9WYWx1ZSgpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOgogICAgICAgICAgICAgY29tcGlsZUNo
ZWNrQXJndW1lbnRzTm90Q3JlYXRlZCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02MzAsNjEg
KzYzOSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHZv
aWQgY29tcGlsZVZhbHVlVG9JbnQzMigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpKSB7Ci0gICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgICAgICAg
ICBzZXRJbnQzMihsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Ci0gICAgICAgICAg
ICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxk
MSgpKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBO
dW1iZXJVc2U6Ci0gICAgICAgIGNhc2UgTm90Q2VsbFVzZTogewotICAgICAgICAgICAgTG93ZXJl
ZE5vZGVWYWx1ZSB2YWx1ZSA9IG1faW50MzJWYWx1ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9k
ZSgpKTsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgICAg
IHNldEludDMyKHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVl
cy5nZXQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWQo
dmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIobnVtYmVyT3JOb3RDZWxsVG9JbnQz
MihtX25vZGUtPmNoaWxkMSgpLCB2YWx1ZS52YWx1ZSgpKSk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZhbHVlID0gbV9k
b3VibGVWYWx1ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKLSAgICAgICAgICAgIGlm
IChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgICAgIHNldEludDMyKGRvdWJsZVRvSW50
MzIodmFsdWUudmFsdWUoKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBXZSdsbCBiYXNpY2FsbHkganVzdCBnZXQg
aGVyZSBmb3IgY29uc3RhbnRzLiBCdXQgaXQncyBnb29kIHRvIGhhdmUgdGhpcwotICAgICAgICAg
ICAgLy8gY2F0Y2gtYWxsIHNpbmNlIHdlIG9mdGVuIGFkZCBuZXcgcmVwcmVzZW50YXRpb25zIGlu
dG8gdGhlIG1peC4KLSAgICAgICAgICAgIHNldEludDMyKAotICAgICAgICAgICAgICAgIG51bWJl
ck9yTm90Q2VsbFRvSW50MzIoCi0gICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQxKCks
Ci0gICAgICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgICAgIAotICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6Ci0gICAgICAgICAgICBzZXRJbnQz
MihtX291dC56ZXJvRXh0KGxvd0Jvb2xlYW4obV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmludDMy
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBjb21waWxlSW50NTJUb1ZhbHVlKCkK
LSAgICB7Ci0gICAgICAgIHNldEpTVmFsdWUobG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSk7
Ci0gICAgfQotCiAgICAgdm9pZCBjb21waWxlVXBzaWxvbigpCiAgICAgewogICAgICAgICBMVmFs
dWUgZGVzdGluYXRpb24gPSBtX3BoaXMuZ2V0KG1fbm9kZS0+cGhpKCkpOwpAQCAtNzE5LDcgKzY3
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBzb3VyY2UgPSBtX3BoaXMuZ2V0KG1fbm9k
ZSk7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+ZmxhZ3MoKSAmIE5vZGVSZXN1
bHRNYXNrKSB7Ci0gICAgICAgIGNhc2UgTm9kZVJlc3VsdE51bWJlcjoKKyAgICAgICAgY2FzZSBO
b2RlUmVzdWx0RG91YmxlOgogICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0LmdldChzb3VyY2Up
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vZGVSZXN1bHRJbnQzMjoKQEAg
LTczOSwxNyArNjkzLDE0OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9CisgICAgCisgICAgdm9pZCBjb21waWxlRG91YmxlQ29uc3RhbnQoKQorICAgIHsK
KyAgICAgICAgc2V0RG91YmxlKG1fb3V0LmNvbnN0RG91YmxlKG1fZ3JhcGgudmFsdWVPZk51bWJl
ckNvbnN0YW50KG1fbm9kZSkpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjb21waWxlSW50NTJD
b25zdGFudCgpCisgICAgeworICAgICAgICBpbnQ2NF90IHZhbHVlID0gbV9ncmFwaC52YWx1ZU9m
SlNDb25zdGFudChtX25vZGUpLmFzTWFjaGluZUludCgpOworICAgICAgICAKKyAgICAgICAgc2V0
SW50NTIobV9vdXQuY29uc3RJbnQ2NCh2YWx1ZSA8PCBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50
KSk7CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmNvbnN0SW50NjQodmFsdWUpKTsKKyAg
ICB9CiAKKyAgICB2b2lkIGNvbXBpbGVXZWFrSlNDb25zdGFudCgpCisgICAgeworICAgICAgICBz
ZXRKU1ZhbHVlKHdlYWtQb2ludGVyKG1fbm9kZS0+d2Vha0NvbnN0YW50KCkpKTsKKyAgICB9Cisg
ICAgCiAgICAgdm9pZCBjb21waWxlUGhhbnRvbUFyZ3VtZW50cygpCiAgICAgewogICAgICAgICBz
ZXRKU1ZhbHVlKG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpKTsK
ICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlV2Vha0pTQ29uc3RhbnQoKQorICAgIHZvaWQg
Y29tcGlsZURvdWJsZVJlcCgpCiAgICAgewotICAgICAgICBzZXRKU1ZhbHVlKHdlYWtQb2ludGVy
KG1fbm9kZS0+d2Vha0NvbnN0YW50KCkpKTsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICAgICAg
TFZhbHVlIGJveGVkUmVzdWx0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgCisgICAgICAgICAgICBMQmFzaWNCbG9j
ayBpbnRDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGVSZXAgdW5ib3hpbmcgaW50
IGNhc2UiKSk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBkb3VibGVDYXNlID0gRlRMX05FV19C
TE9DSyhtX291dCwgKCJEb3VibGVSZXAgdW5ib3hpbmcgZG91YmxlIGNhc2UiKSk7CisgICAgICAg
ICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRv
dWJsZVJlcCB1bmJveGluZyBjb250aW51YXRpb24iKSk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIExWYWx1ZSBpc05vdEludDMyOworICAgICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5l
ZWRzVHlwZUNoZWNrKG1fbm9kZS0+Y2hpbGQxKCksIFNwZWNJbnQzMikpCisgICAgICAgICAgICAg
ICAgaXNOb3RJbnQzMiA9IG1fb3V0LmJvb2xlYW5GYWxzZTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKG1fbm9kZS0+Y2hpbGQxKCksIH5TcGVjSW50
MzIpKQorICAgICAgICAgICAgICAgIGlzTm90SW50MzIgPSBtX291dC5ib29sZWFuVHJ1ZTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpc05vdEludDMyID0gdGhpcy0+aXNOb3RJ
bnQzMihib3hlZFJlc3VsdCk7CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNOb3RJbnQzMiwg
dW5zdXJlKGRvdWJsZUNhc2UpLCB1bnN1cmUoaW50Q2FzZSkpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGludENhc2UsIGRv
dWJsZUNhc2UpOworICAgICAgICAgICAgCisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBpbnRU
b0RvdWJsZSA9IG1fb3V0LmFuY2hvcigKKyAgICAgICAgICAgICAgICBtX291dC5pbnRUb0RvdWJs
ZSh1bmJveEludDMyKGJveGVkUmVzdWx0KSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhkb3Vi
bGVDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICAgICAgCisgICAgICAgICAgICBGVExfVFlQ
RV9DSEVDSygKKyAgICAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoYm94ZWRSZXN1bHQpLCBtX25v
ZGUtPmNoaWxkMSgpLCBTcGVjQnl0ZWNvZGVOdW1iZXIsCisgICAgICAgICAgICAgICAgaXNDZWxs
T3JNaXNjKGJveGVkUmVzdWx0KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHVuYm94ZWREb3VibGUgPSBtX291dC5hbmNob3IodW5ib3hEb3VibGUoYm94ZWRSZXN1
bHQpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5waGkobV9vdXQu
ZG91YmxlVHlwZSwgaW50VG9Eb3VibGUsIHVuYm94ZWREb3VibGUpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBzZXREb3VibGUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSW50NTJSZXB1c2U6IHsKKyAgICAgICAg
ICAgIHNldERvdWJsZShzdHJpY3RJbnQ1MlRvRG91YmxlKGxvd1N0cmljdEludDUyKG1fbm9kZS0+
Y2hpbGQxKCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVWYWx1ZVJlcCgp
CisgICAgeworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7Cisg
ICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKGJveERv
dWJsZShsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKKyAg
ICAgICAgICAgIHNldEpTVmFsdWUoc3RyaWN0SW50NTJUb0pTVmFsdWUobG93U3RyaWN0SW50NTIo
bV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZVZh
bHVlVG9JbnQzMigpCisgICAgeworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpKSB7CisgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgICAgICBzZXRJbnQzMihs
b3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICAgICAgc2V0SW50MzIobV9v
dXQuY2FzdFRvSW50MzIobG93U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgor
ICAgICAgICAgICAgc2V0SW50MzIoZG91YmxlVG9JbnQzMihsb3dEb3VibGUobV9ub2RlLT5jaGls
ZDEoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
TnVtYmVyVXNlOgorICAgICAgICBjYXNlIE5vdENlbGxVc2U6IHsKKyAgICAgICAgICAgIExvd2Vy
ZWROb2RlVmFsdWUgdmFsdWUgPSBtX2ludDMyVmFsdWVzLmdldChtX25vZGUtPmNoaWxkMSgpLm5v
ZGUoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKKyAgICAgICAgICAgICAg
ICBzZXRJbnQzMih2YWx1ZS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFsdWUgPSBtX2pzVmFsdWVWYWx1
ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlk
KHZhbHVlKSkgeworICAgICAgICAgICAgICAgIHNldEludDMyKG51bWJlck9yTm90Q2VsbFRvSW50
MzIobV9ub2RlLT5jaGlsZDEoKSwgdmFsdWUudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBXZSdsbCBi
YXNpY2FsbHkganVzdCBnZXQgaGVyZSBmb3IgY29uc3RhbnRzLiBCdXQgaXQncyBnb29kIHRvIGhh
dmUgdGhpcworICAgICAgICAgICAgLy8gY2F0Y2gtYWxsIHNpbmNlIHdlIG9mdGVuIGFkZCBuZXcg
cmVwcmVzZW50YXRpb25zIGludG8gdGhlIG1peC4KKyAgICAgICAgICAgIHNldEludDMyKAorICAg
ICAgICAgICAgICAgIG51bWJlck9yTm90Q2VsbFRvSW50MzIoCisgICAgICAgICAgICAgICAgICAg
IG1fbm9kZS0+Y2hpbGQxKCksCisgICAgICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6Cisg
ICAgICAgICAgICBzZXRJbnQzMihtX291dC56ZXJvRXh0KGxvd0Jvb2xlYW4obV9ub2RlLT5jaGls
ZDEoKSksIG1fb3V0LmludDMyKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBjb21w
aWxlR2V0QXJndW1lbnQoKQogICAgIHsKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJp
YWJsZSA9IG1fbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CkBAIC0xNDg5LDExICsxNTc0LDYg
QEAgcHJpdmF0ZToKICAgICAgICAgc2V0SW50MzIodmFsdWUpOwogICAgIH0KICAgICAKLSAgICB2
b2lkIGNvbXBpbGVJbnQzMlRvRG91YmxlKCkKLSAgICB7Ci0gICAgICAgIHNldERvdWJsZShsb3dE
b3VibGUobV9ub2RlLT5jaGlsZDEoKSkpOwotICAgIH0KLSAgICAKICAgICB2b2lkIGNvbXBpbGVD
aGVja1N0cnVjdHVyZSgpCiAgICAgewogICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSk7CkBAIC00NzI1LDIxICs0ODA1LDkgQEAgcHJpdmF0ZToKICAgICB9CiAg
ICAgCiAgICAgZW51bSBJbnQ1MktpbmQgeyBTdHJpY3RJbnQ1MiwgSW50NTIgfTsKLSAgICBMVmFs
dWUgbG93SW50NTIoRWRnZSBlZGdlLCBJbnQ1MktpbmQga2luZCwgT3BlcmFuZFNwZWN1bGF0aW9u
TW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIExWYWx1ZSBsb3dJ
bnQ1MihFZGdlIGVkZ2UsIEludDUyS2luZCBraW5kKQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtp
bmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChlZGdlLT5oYXND
b25zdGFudCgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC52YWx1ZU9m
SlNDb25zdGFudChlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoIXZhbHVlLmlzTWFjaGlu
ZUludCgpKSB7Ci0gICAgICAgICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbV9vdXQuaW50NjRaZXJvOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaW50NjRfdCByZXN1bHQgPSB2YWx1ZS5hc01hY2hpbmVJbnQoKTsKLSAgICAgICAgICAg
IGlmIChraW5kID09IEludDUyKQotICAgICAgICAgICAgICAgIHJlc3VsdCA8PD0gSlNWYWx1ZTo6
aW50NTJTaGlmdEFtb3VudDsKLSAgICAgICAgICAgIHJldHVybiBtX291dC5jb25zdEludDY0KHJl
c3VsdCk7Ci0gICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZWRnZS51c2VLaW5kKCkg
PT0gSW50NTJSZXBVc2UpOwogICAgICAgICAKICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1
ZTsKICAgICAgICAgCkBAIC00NzY0LDI1ICs0ODMyLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICByZXR1cm4gaW50NTJUb1N0cmljdEludDUyKHZhbHVlLnZhbHVlKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9pbnQzMlZh
bHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKLSAg
ICAgICAgICAgIHJldHVybiBzZXRJbnQ1MldpdGhTdHJpY3RWYWx1ZSgKLSAgICAgICAgICAgICAg
ICBlZGdlLm5vZGUoKSwgbV9vdXQuc2lnbkV4dCh2YWx1ZS52YWx1ZSgpLCBtX291dC5pbnQ2NCks
IGtpbmQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1f
c3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiBTcGVjSW50NTIpKTsKLSAgICAgICAgCi0gICAg
ICAgIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlm
IChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gdmFs
dWUudmFsdWUoKTsKLSAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAg
IGpzVmFsdWVWYWx1ZShib3hlZFJlc3VsdCksIGVkZ2UsIFNwZWNNYWNoaW5lSW50LCBpc05vdElu
dDMyKGJveGVkUmVzdWx0KSk7Ci0gICAgICAgICAgICByZXR1cm4gc2V0SW50NTJXaXRoU3RyaWN0
VmFsdWUoCi0gICAgICAgICAgICAgICAgZWRnZS5ub2RlKCksIG1fb3V0LnNpZ25FeHQodW5ib3hJ
bnQzMihib3hlZFJlc3VsdCksIG1fb3V0LmludDY0KSwga2luZCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCEobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlw
ZSAmIFNwZWNNYWNoaW5lSW50KSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fc3RhdGUu
Zm9yTm9kZShlZGdlKS5tX3R5cGUpOwogICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwog
ICAgICAgICByZXR1cm4gbV9vdXQuaW50NjRaZXJvOwogICAgIH0KQEAgLTQ5MjIsNzEgKzQ5NzMs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fb3V0LmJvb2xlYW5GYWxzZTsKICAgICB9
CiAgICAgCi0gICAgTFZhbHVlIGxvd0RvdWJsZShFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlv
bk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93
RG91YmxlKEVkZ2UgZWRnZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9k
ZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgaXNEb3VibGUoZWRnZS51c2VLaW5kKCkp
KTsKLSAgICAgICAgCi0gICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7Ci0gICAgICAg
ICAgICBKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUo
KSk7Ci0gICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgICAg
ICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwotICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5k
b3VibGVaZXJvOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0
RG91YmxlKHZhbHVlLmFzTnVtYmVyKCkpOwotICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzRG91YmxlKGVkZ2UudXNlS2luZCgpKSk7CiAgICAgICAgIAogICAgICAgICBMb3dlcmVk
Tm9kZVZhbHVlIHZhbHVlID0gbV9kb3VibGVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKICAgICAg
ICAgaWYgKGlzVmFsaWQodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlKCk7
CiAgICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1faW50MzJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgp
KTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gbV9vdXQuaW50VG9Eb3VibGUodmFsdWUudmFsdWUoKSk7Ci0gICAgICAgICAgICBzZXRE
b3VibGUoZWRnZS5ub2RlKCksIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0SW50NTJWYWx1ZXMu
Z2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQotICAgICAgICAg
ICAgcmV0dXJuIHN0cmljdEludDUyVG9Eb3VibGUoZWRnZSwgdmFsdWUudmFsdWUoKSk7Ci0gICAg
ICAgIAotICAgICAgICB2YWx1ZSA9IG1faW50NTJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAg
ICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDUy
VG9Eb3VibGUoZWRnZSwgaW50NTJUb1N0cmljdEludDUyKHZhbHVlLnZhbHVlKCkpKTsKLSAgICAg
ICAgCi0gICAgICAgIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0g
ICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVz
dWx0ID0gdmFsdWUudmFsdWUoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgaW50Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRG91YmxlIHVuYm94aW5nIGludCBj
YXNlIikpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgZG91YmxlQ2FzZSA9IEZUTF9ORVdfQkxP
Q0sobV9vdXQsICgiRG91YmxlIHVuYm94aW5nIGRvdWJsZSBjYXNlIikpOwotICAgICAgICAgICAg
TEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGUg
dW5ib3hpbmcgY29udGludWF0aW9uIikpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291
dC5icmFuY2goaXNOb3RJbnQzMihib3hlZFJlc3VsdCksIHVuc3VyZShkb3VibGVDYXNlKSwgdW5z
dXJlKGludENhc2UpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFz
dE5leHQgPSBtX291dC5hcHBlbmRUbyhpbnRDYXNlLCBkb3VibGVDYXNlKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaW50VG9Eb3VibGUgPSBtX291dC5hbmNob3Io
Ci0gICAgICAgICAgICAgICAgbV9vdXQuaW50VG9Eb3VibGUodW5ib3hJbnQzMihib3hlZFJlc3Vs
dCkpKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAg
ICAganNWYWx1ZVZhbHVlKGJveGVkUmVzdWx0KSwgZWRnZSwgU3BlY0Z1bGxOdW1iZXIsIGlzQ2Vs
bE9yTWlzYyhib3hlZFJlc3VsdCkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBWYWx1ZUZy
b21CbG9jayB1bmJveGVkRG91YmxlID0gbV9vdXQuYW5jaG9yKHVuYm94RG91YmxlKGJveGVkUmVz
dWx0KSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQucGhpKG1fb3V0
LmRvdWJsZVR5cGUsIGludFRvRG91YmxlLCB1bmJveGVkRG91YmxlKTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgc2V0RG91YmxlKGVkZ2Uubm9kZSgpLCByZXN1bHQpOwotICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIShtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgU3BlY0Z1bGxOdW1iZXIpKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUpOwogICAg
ICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwogICAgICAgICByZXR1cm4gbV9vdXQuZG91Ymxl
WmVybzsKICAgICB9CkBAIC01MDA5LDE0ICs1MDA0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9z
dHJpY3RJbnQ1MlZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2
YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gc3RyaWN0SW50NTJUb0pTVmFsdWUodmFsdWUudmFs
dWUoKSk7Ci0gICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1faW50NTJWYWx1ZXMuZ2V0KGVkZ2Uu
bm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJu
IHN0cmljdEludDUyVG9KU1ZhbHVlKGludDUyVG9TdHJpY3RJbnQ1Mih2YWx1ZS52YWx1ZSgpKSk7
Ci0gICAgICAgIAogICAgICAgICB2YWx1ZSA9IG1fYm9vbGVhblZhbHVlcy5nZXQoZWRnZS5ub2Rl
KCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKICAgICAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSBib3hCb29sZWFuKHZhbHVlLnZhbHVlKCkpOwpAQCAtNTAyNCwxMyArNTAxMSw2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICB2YWx1ZSA9IG1fZG91YmxlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAg
ICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGJv
eERvdWJsZSh2YWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgICAgIHNldEpTVmFsdWUoZWRnZS5ub2Rl
KCksIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAg
ICAgIAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmgJKHJldmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzNSw2ICs0MzUsMTEgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gZnByOwogICAgIH0KICAgICAKKyAgICB2b2lkIGJveERvdWJs
ZShGUFJSZWcgZnByLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyAgICAgICAgYm94RG91Ymxl
KGZwciwgcmVncy5ncHIoKSk7CisgICAgfQorICAgIAogICAgIC8vIEhlcmUgYXJlIHBvc3NpYmxl
IGFycmFuZ2VtZW50cyBvZiBzb3VyY2UsIHRhcmdldCwgc2NyYXRjaDoKICAgICAvLyAtIHNvdXJj
ZSwgdGFyZ2V0LCBzY3JhdGNoIGNhbiBhbGwgYmUgc2VwYXJhdGUgcmVnaXN0ZXJzLgogICAgIC8v
IC0gc291cmNlIGFuZCB0YXJnZXQgY2FuIGJlIHRoZSBzYW1lIGJ1dCBzY3JhdGNoIGlzIHNlcGFy
YXRlLgpAQCAtNDY3LDYgKzQ3MiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtb3ZlSW50
c1RvRG91YmxlKHBheWxvYWRHUFIsIHRhZ0dQUiwgZnByLCBzY3JhdGNoRlBSKTsKICAgICB9Cisg
ICAgCisgICAgdm9pZCBib3hEb3VibGUoRlBSUmVnIGZwciwgSlNWYWx1ZVJlZ3MgcmVncykKKyAg
ICB7CisgICAgICAgIGJveERvdWJsZShmcHIsIHJlZ3MudGFnR1BSKCksIHJlZ3MucGF5bG9hZEdQ
UigpKTsKKyAgICB9CiAjZW5kaWYKICAgICAKICAgICBlbnVtIEV4Y2VwdGlvbkNoZWNrS2luZCB7
IE5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229251</attachid>
            <date>2014-04-13 16:59:40 -0700</date>
            <delta_ts>2014-04-13 17:22:24 -0700</delta_ts>
            <desc>not done yet</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>127628</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlci5oCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw5
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBzZXRDb25zdGFudChOb2RlKiBub2RlLCBKU1Zh
bHVlIHZhbHVlKQogICAgIHsKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgdmFs
dWUpOworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZSk7CisgICAg
ICAgIHZhbHVlLnNldChtX2dyYXBoLCB2YWx1ZSk7CisgICAgICAgIHZhbHVlLmZpeFR5cGVGb3JS
ZXByZXNlbnRhdGlvbihub2RlKTsKICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0
cnVlKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAxNjcx
ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsOCBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgCiAgICAgc3dpdGNoIChub2RlLT5vcCgp
KSB7CiAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAg
Y2FzZSBJbnQ1MkNvbnN0YW50OgogICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgY2FzZSBQ
aGFudG9tQXJndW1lbnRzOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1f
Z3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobm9kZSkpOwpAQCAtMzA3LDM5ICszMDksMzkgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50MzJUb0RvdWJsZTogeworICAgIGNhc2UgRG91Ymxl
UmVwOiB7CiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52
YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwgSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwg
Y2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW50MzJTcGVj
dWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGVSZWFsKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKTsKKyAgICAgICAg
Zm9yTm9kZShub2RlKS5maXhUeXBlRm9yUmVwcmVzZW50YXRpb24obm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBJbnQ1MlRvRG91YmxlOiB7CisgICAgY2Fz
ZSBJbnQ1MlJlcDogeworICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gSW50MzJVc2UpOworICAgICAgICAKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmIChjaGlsZCAmJiBjaGls
ZC5pc051bWJlcigpKSB7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc0ludDMyKCkpIHsK
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsK
KyAgICAgICAgCisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50NTJUb1ZhbHVlOiB7Ci0g
ICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwot
ICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgc2V0
Q29uc3RhbnQobm9kZSwgY2hpbGQpOworICAgIGNhc2UgVmFsdWVSZXA6IHsKKyAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlm
ICh2YWx1ZSkgeworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgdmFsdWUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZTsKLSAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50
NTIpCi0gICAgICAgICAgICB0eXBlID0gKHR5cGUgfCBTcGVjSW50MzIgfCBTcGVjSW50NTJBc0Rv
dWJsZSkgJiB+U3BlY0ludDUyOwotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUodHlwZSk7
CisgICAgICAgIAorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkubV90eXBlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5maXhUeXBlRm9yUmVwcmVz
ZW50YXRpb24obm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0zNzAs
NyArMzcyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
ICAgICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKQogICAg
ICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgog
ICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc01hY2hpbmVJbnQoKSAmJiBy
aWdodC5pc01hY2hpbmVJbnQoKSkgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIobGVmdC5hc01hY2hpbmVJbnQoKSArIHJpZ2h0LmFzTWFjaGluZUludCgpKTsKICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0LmlzTWFjaGluZUludCgpKSB7CkBAIC0zODMsNyArMzg1
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAg
ICAgICAgIHx8ICFmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY0ludDMyKSkKICAg
ICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAg
ICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5p
c051bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIo
bGVmdC5hc051bWJlcigpICsgcmlnaHQuYXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNDI2LDcgKzQyOCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHkKICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRo
TW9kZSgpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgY2FzZSBJ
bnQ1MlJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNNYWNo
aW5lSW50KCkgJiYgcmlnaHQuaXNNYWNoaW5lSW50KCkpIHsKICAgICAgICAgICAgICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKGxlZnQuYXNNYWNoaW5lSW50KCkgLSByaWdodC5hc01hY2hp
bmVJbnQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc01hY2hpbmVJbnQoKSB8fCAh
c2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpIHsKQEAgLTQzOSw3ICs0NDEs
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAg
ICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjSW50MzIpKQogICAg
ICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAg
ICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0Lmlz
TnVtYmVyKCkpIHsKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihs
ZWZ0LmFzTnVtYmVyKCkgLSByaWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC00NzcsNyArNDc5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhN
b2RlKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBjYXNlIElu
dDUyUmVwVXNlOgogICAgICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTWFjaGluZUludCgp
KSB7CiAgICAgICAgICAgICAgICAgZG91YmxlIGRvdWJsZVJlc3VsdDsKICAgICAgICAgICAgICAg
ICBpZiAoc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhNb2RlKCkpKQpAQCAtNDk2
LDcgKzQ5OCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAg
ICAgICAgICAgIGlmIChzaG91bGRDaGVja05lZ2F0aXZlWmVybyhub2RlLT5hcml0aE1vZGUoKSkp
CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6
CiAgICAgICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewogICAgICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKC1jaGlsZC5hc051bWJlcigpKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01MzMsNyArNTM1LDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrT3Zl
cmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4
aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNl
OgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmln
aHQgJiYgbGVmdC5pc01hY2hpbmVJbnQoKSAmJiByaWdodC5pc01hY2hpbmVJbnQoKSkgewogICAg
ICAgICAgICAgICAgIGRvdWJsZSBkb3VibGVSZXN1bHQgPSBsZWZ0LmFzTnVtYmVyKCkgKiByaWdo
dC5hc051bWJlcigpOwogICAgICAgICAgICAgICAgIGlmICghc2hvdWxkQ2hlY2tOZWdhdGl2ZVpl
cm8obm9kZS0+YXJpdGhNb2RlKCkpKQpAQCAtNTQ3LDcgKzU0OSw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZShTcGVjSW50NTIpOwogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBE
b3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVt
YmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50
KG5vZGUsIGpzTnVtYmVyKGxlZnQuYXNOdW1iZXIoKSAqIHJpZ2h0LmFzTnVtYmVyKCkpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTU4NSw3ICs1ODcsNyBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91
YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJl
cigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc051bWJlcihsZWZ0LmFzTnVtYmVyKCkgLyByaWdodC5hc051bWJlcigpKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC02MTksNyArNjIxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNJbnQzMik7CiAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJs
ZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIo
KSAmJiByaWdodC5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9k
ZSwganNOdW1iZXIoZm1vZChsZWZ0LmFzTnVtYmVyKCksIHJpZ2h0LmFzTnVtYmVyKCkpKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC02NDUsNyArNjQ3LDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRU
eXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERv
dWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1i
ZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgZG91YmxlIGEgPSBs
ZWZ0LmFzTnVtYmVyKCk7CiAgICAgICAgICAgICAgICAgZG91YmxlIGIgPSByaWdodC5hc051bWJl
cigpOwpAQCAtNjczLDcgKzY3NSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHkKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwog
ICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAg
ICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNO
dW1iZXIoKSkgewogICAgICAgICAgICAgICAgIGRvdWJsZSBhID0gbGVmdC5hc051bWJlcigpOwog
ICAgICAgICAgICAgICAgIGRvdWJsZSBiID0gcmlnaHQuYXNOdW1iZXIoKTsKQEAgLTcwMyw3ICs3
MDUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIG5vZGUt
PnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1i
ZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGNoaWxk
ICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2Rl
LCBqc051bWJlcihjaGlsZC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC03NTksNyArNzYxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAg
ICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAg
ICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgog
ICAgICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICAgICAgY2FzZSBTdHJpbmdVc2U6
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUyLDcgKzUyLDcgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXRNb3N0U3BlY2lmaWMoR3JhcAog
ICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIH0KIAotdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3Jh
cGgmIGdyYXBoLCBKU1ZhbHVlIHZhbHVlKQordm9pZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICghIXZhbHVlICYm
IHZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLm1ha2VU
b3AoKTsKQEAgLTY3LDggKzY3LDYgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdy
YXBoLCBKUwogICAgIH0KICAgICAKICAgICBtX3R5cGUgPSBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2
YWx1ZSk7Ci0gICAgaWYgKG1fdHlwZSA9PSBTcGVjSW50NTJBc0RvdWJsZSkKLSAgICAgICAgbV90
eXBlID0gU3BlY0ludDUyOwogICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAKICAgICBjaGVja0Nv
bnNpc3RlbmN5KCk7CkBAIC04NSw2ICs4MywzMyBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OnNldChH
cmFwaCYgZ3JhcGgsIFN0CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogfQogCit2b2lkIEFic3Ry
YWN0VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihOb2RlKiBub2RlKQoreworICAgIGlm
IChub2RlLT5oYXNEb3VibGVSZXN1bHQoKSkgeworICAgICAgICBpZiAobV90eXBlICYgU3BlY01h
Y2hpbmVJbnQpIHsKKyAgICAgICAgICAgIG1fdHlwZSAmPSB+U3BlY01hY2hpbmVJbnQ7CisgICAg
ICAgICAgICBtX3R5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7CisgICAgICAgIH0KKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIShtX3R5cGUgJiB+U3BlY0RvdWJsZSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIGlmIChub2RlLT5oYXNJbnQ1MlJlc3VsdCgpKSB7CisgICAgICAg
IGlmIChtX3R5cGUgJiBTcGVjSW50NTJBc0RvdWJsZSkgeworICAgICAgICAgICAgbV90eXBlICY9
IH5TcGVjSW50NTJBc0RvdWJsZTsKKyAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTI7Cisg
ICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3R5cGUgJiB+U3BlY01hY2hpbmVJ
bnQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAobV90eXBlICYgU3Bl
Y0ludDUyKSB7CisgICAgICAgIG1fdHlwZSAmPSB+U3BlY0ludDUyOworICAgICAgICBtX3R5cGUg
fD0gU3BlY0ludDUyQXNEb3VibGU7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKCEobV90eXBl
ICYgflNwZWNIZWFwVG9wKSk7Cit9CisKIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6
ZmlsdGVyKEdyYXBoJiBncmFwaCwgY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikKIHsKICAgICBp
ZiAoaXNDbGVhcigpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFZhbHVlLmgJKHJldmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcgQEAg
c3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIH0KICAgICAKICAgICB2b2lkIHNldE1vc3RTcGVj
aWZpYyhHcmFwaCYsIEpTVmFsdWUpOwotICAgIHZvaWQgc2V0KEdyYXBoJiwgSlNWYWx1ZSk7Cisg
ICAgdm9pZCBzZXQoR3JhcGgmLCBOb2RlKiwgSlNWYWx1ZSk7CiAgICAgdm9pZCBzZXQoR3JhcGgm
LCBTdHJ1Y3R1cmUqKTsKICAgICAKICAgICB2b2lkIHNldFR5cGUoU3BlY3VsYXRlZFR5cGUgdHlw
ZSkKQEAgLTEyOSw2ICsxMjksOCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIGNo
ZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBmaXhUeXBlRm9yUmVwcmVz
ZW50YXRpb24oTm9kZSopOworICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBYnN0cmFj
dFZhbHVlJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3R5cGUgPT0gb3Ro
ZXIubV90eXBlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSwyOSArMTYxLDExIEBAIHByaXZhdGU6CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAKLSAgICBOb2RlKiBpbnQzMlRvRG91YmxlQ1NF
KE5vZGUqIG5vZGUpCi0gICAgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5C
bG9jazsgaS0tOykgewotICAgICAgICAgICAgTm9kZSogb3RoZXJOb2RlID0gbV9jdXJyZW50Qmxv
Y2stPmF0KGkpOwotICAgICAgICAgICAgaWYgKG90aGVyTm9kZSA9PSBub2RlLT5jaGlsZDEoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIHN3aXRjaCAob3RoZXJOb2Rl
LT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIEludDMyVG9Eb3VibGU6Ci0gICAgICAgICAgICAg
ICAgaWYgKG90aGVyTm9kZS0+Y2hpbGQxKCkuc2FuaXRpemVkKCkgPT0gbm9kZS0+Y2hpbGQxKCku
c2FuaXRpemVkKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlck5vZGU7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLSAgICAKICAgICBOb2RlKiBjb25zdGFudENTRShOb2RlKiBub2RlKQogICAgIHsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gZW5kSW5kZXhGb3JQdXJlQ1NFKCk7IGktLTspIHsKICAgICAg
ICAgICAgIE5vZGUqIG90aGVyTm9kZSA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKLSAgICAgICAg
ICAgIGlmIChvdGhlck5vZGUtPm9wKCkgIT0gSlNDb25zdGFudCkKKyAgICAgICAgICAgIGlmIChv
dGhlck5vZGUtPm9wKCkgIT0gbm9kZS0+b3AoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG90aGVyTm9kZS0+Y29uc3RhbnROdW1iZXIo
KSAhPSBub2RlLT5jb25zdGFudE51bWJlcigpKQpAQCAtMTE0Nyw4ICsxMTI5LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBDb21wYXJlRXFDb25zdGFudDoKICAgICAgICAgY2FzZSBWYWx1ZVRv
SW50MzI6CiAgICAgICAgIGNhc2UgTWFrZVJvcGU6Ci0gICAgICAgIGNhc2UgSW50NTJUb0RvdWJs
ZToKLSAgICAgICAgY2FzZSBJbnQ1MlRvVmFsdWU6CisgICAgICAgIGNhc2UgRG91YmxlUmVwOgor
ICAgICAgICBjYXNlIFZhbHVlUmVwOgorICAgICAgICBjYXNlIEludDUyUmVwOgogICAgICAgICAg
ICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KHB1cmVDU0Uobm9kZSkpOwpAQCAtMTE3Niwx
MiArMTE1OSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKLSAgICAgICAgICAgIGlmIChj
c2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBzZXRSZXBsYWNlbWVudChpbnQzMlRvRG91YmxlQ1NFKG5vZGUpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgICAg
ICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTEyNjcsNiArMTI0NCw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgRG91YmxlQ29uc3Rh
bnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgICAgIGlmIChjc2VNb2Rl
ID09IFN0b3JlRWxpbWluYXRpb24pCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAvLyBUaGlzIGlzIHN0cmFuZ2UsIGJ1dCBuZWNlc3NhcnkuIFNvbWUgcGhhc2VzIHdpbGwgY29u
dmVydCBub2RlcyB0byBjb25zdGFudHMsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiwxNSArMTIyLDE1
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIElz
TnVtYmVyOgogICAgIGNhc2UgSXNTdHJpbmc6CiAgICAgY2FzZSBMb2dpY2FsTm90OgotICAgIGNh
c2UgSW50MzJUb0RvdWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgotICAgIGNh
c2UgSW50NTJUb0RvdWJsZToKLSAgICBjYXNlIEludDUyVG9WYWx1ZToKICAgICBjYXNlIENoZWNr
SW5Cb3VuZHM6CiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgIGNhc2UgVUlu
dDMyVG9OdW1iZXI6CiAgICAgY2FzZSBEb3VibGVBc0ludDMyOgogICAgIGNhc2UgQ2hlY2s6Cisg
ICAgY2FzZSBEb3VibGVSZXA6CisgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICBjYXNlIEludDUyUmVw
OgogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgTW92SGludDoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTY3
MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIzLDggKzEyMywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlQ2Fu
U3BlY3VsYXRlSW50MzIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAg
bm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKLSAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9k
ZShBcml0aDo6RG9PdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5v
ZGVSZXN1bHREb3VibGUpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIApAQCAtMTM1LDEwICsxMzcsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpz
aG91bGRTcGVjdWxhdGVOdW1iZXJFeHBlY3RpbmdEZWZpbmVkKG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVt
YmVyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNl
Pihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3AoQXJpdGhBZGQp
OwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVDbG9iYmVyc1dvcmxkKTsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJl
c3VsdERvdWJsZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTE3Nyw4ICsxODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEFyaXRo
U3ViOiB7CiAgICAgICAgICAgICBpZiAoYXR0ZW1wdFRvTWFrZUludGVnZXJBZGQobm9kZSkpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMTk0LDE0ICsxOTgsMTYgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChtX2dyYXBoLm5lZ2F0ZVNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRo
Tm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJp
dGg6OkNoZWNrT3ZlcmZsb3cpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93QW5kTmVnYXRpdmVa
ZXJvKTsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVk
Z2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJs
ZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5v
ZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIApAQCAtMjE4LDE2ICsyMjQsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX2dyYXBoLm11bFNob3VsZFNwZWN1
bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJ
bnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJ
bnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVw
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVz
ZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGlmIChieXRlY29kZUNhbklnbm9y
ZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6
Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0
UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBm
aXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+
c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIApAQCAtMjQ2LDI0ICsyNTQsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVy
byk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogCiAgICAgICAgICAgICAg
ICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBkbyByZWYnaW5nIG9uIHRoZSBjaGlsZHJlbiBiZWNhdXNl
IHdlJ3JlIHN0ZWFsaW5nIHRoZW0gZnJvbQogICAgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5h
bCBkaXZpc2lvbi4KICAgICAgICAgICAgICAgICBOb2RlKiBuZXdEaXZpc2lvbiA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjRG91YmxlLCAqbm9kZSk7CisgICAgICAgICAgICAgICAgbmV3RGl2aXNpb24tPnNldFJlc3Vs
dChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBu
b2RlLT5zZXRPcChEb3VibGVBc0ludDMyKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJl
bi5pbml0aWFsaXplKEVkZ2UobmV3RGl2aXNpb24sIEtub3duTnVtYmVyVXNlKSwgRWRnZSgpLCBF
ZGdlKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLmluaXRpYWxpemUoRWRnZShu
ZXdEaXZpc2lvbiwgRG91YmxlUmVwVXNlKSwgRWRnZSgpLCBFZGdlKCkpOwogICAgICAgICAgICAg
ICAgIGlmIChieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFn
cygpKSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVj
a092ZXJmbG93KTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdl
PE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjc1LDgg
KzI4NSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
IGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdl
PERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3Vi
bGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChO
b2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKQEAgLTI4NiwxNCArMjk3LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJpdGhT
cXJ0OgogICAgICAgICBjYXNlIEFyaXRoU2luOgogICAgICAgICBjYXNlIEFyaXRoQ29zOiB7Ci0g
ICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5v
ZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKQEAgLTMwNSw3ICszMTgsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCiAg
ICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKQot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0zMzYsMTQgKzM0OSwxNCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkKICAgICAgICAgICAgICAgICAmJiBO
b2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9k
ZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUlu
dFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUlu
dFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNl
Pihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2Rl
TXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51
bWJlcihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
ICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxk
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQwMSwxMyArNDE0
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZW5hYmxlSW50
NTIoKQogICAgICAgICAgICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQo
bm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRT
cGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2Rl
KCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSAmJiBub2RlLT5jaGlsZDIo
KS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkgewpAQCAtNTAwLDcgKzUxMyw4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CisgICAg
ICAgICAgICBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAgICAgIHN3aXRj
aCAoYXJyYXlNb2RlLnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBBcnJheTo6U2VsZWN0VXNp
bmdQcmVkaWN0aW9uczoKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVucHJvZmlsZWQ6CiAgICAg
ICAgICAgICBjYXNlIEFycmF5OjpVbmRlY2lkZWQ6CkBAIC01MTksNiArNTMzLDI0IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAK
KyAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgeworICAgICAgICAgICAgY2Fz
ZSBBcnJheTo6RG91YmxlOgorICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQzMkFycmF5Ogor
ICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5OgorICAgICAgICAgICAgICAgIG5v
ZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5Ogor
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpCisg
ICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5v
ZGVSZXN1bHREb3VibGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAt
NTU4LDE0ICs1OTAsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihjaGlsZDIpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMyk7
CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMy0+cHJlZGljdGlvbigpICYgU3BlY0ludDUyKQot
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KGNoaWxkMyk7CisgICAg
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGNoaWxkMyk7CiAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDMp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91Ymxl
OgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7Ci0gICAgICAgICAgICAgICAgZml4
RWRnZTxSZWFsTnVtYmVyVXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91
YmxlUmVwUmVhbFVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQXJyYXk6OkludDhBcnJheToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDE2
QXJyYXk6CkBAIC01NzksMTUgKzYxMSwxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlm
IChjaGlsZDMtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQz
LT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpCi0gICAgICAgICAgICAgICAgICAgIGZpeEVk
Z2U8TWFjaGluZUludFVzZT4oY2hpbGQzKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQ1MlJlcFVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPERvdWJsZVJlcFVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKICAgICAgICAgICAgIGNhc2UgQXJy
YXk6OkZsb2F0NjRBcnJheToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4o
Y2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDIpOwotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8RG91YmxlUmVwVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKICAgICAgICAgICAgIGNhc2UgQXJy
YXk6OkFycmF5U3RvcmFnZToKQEAgLTYyOSw3ICs2NjEsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPFJlYWxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPERvdWJsZVJlcFJlYWxVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAg
ICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CkBAIC02NjIsNyArNjk0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJ
bnQzMigpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVO
dW1iZXIoKSkKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEo
KSk7CiAKICAgICAgICAgICAgIE5vZGUqIGxvZ2ljYWxOb3QgPSBub2RlLT5jaGlsZDEoKS5ub2Rl
KCk7CiAgICAgICAgICAgICBpZiAobG9naWNhbE5vdC0+b3AoKSA9PSBMb2dpY2FsTm90KSB7CkBA
IC03NTksNyArNzkxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIG9wZXJhbmRJbmRleCA9IDA7IG9wZXJhbmRJbmRleCA8IG5vZGUtPm51bUNo
aWxkcmVuKCk7ICsrb3BlcmFuZEluZGV4KQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPFJl
YWxOdW1iZXJVc2U+KG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkg
KyBvcGVyYW5kSW5kZXhdKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBS
ZWFsVXNlPihtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgb3Bl
cmFuZEluZGV4XSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFM
TF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgY2FzZSBBTExfQVJSQVlf
U1RPUkFHRV9JTkRFWElOR19UWVBFUzoKQEAgLTk2MCwxNiArOTkyLDE2IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBB
dFJldHVybjoKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgotICAgICAgICBj
YXNlIEludDUyVG9Eb3VibGU6Ci0gICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgICAgICBj
YXNlIEludmFsaWRhdGlvblBvaW50OgogICAgICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAg
IGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVy
OgogICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6Ci0gICAgICAgIGNhc2UgSW50MzJUb0RvdWJs
ZToKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgICAgIGNhc2UgSGFyZFBoYW50b206
IC8vIEhhcmRQaGFudG9tIHdvdWxkIGJlIHRyaXZpYWwgdG8gaGFuZGxlIGJ1dCBhbnl3YXkgd2Ug
YXNzZXJ0IHRoYXQgd2Ugd29uJ3Qgc2VlIGl0IGhlcmUgeWV0LgorICAgICAgICBjYXNlIERvdWJs
ZVJlcDoKKyAgICAgICAgY2FzZSBJbnQ1MlJlcDoKKyAgICAgICAgY2FzZSBWYWx1ZVJlcDoKICAg
ICAgICAgICAgIC8vIFRoZXNlIGFyZSBqdXN0IG5vZGVzIHRoYXQgd2UgZG9uJ3QgY3VycmVudGx5
IGV4cGVjdCB0byBzZWUgZHVyaW5nIGZpeHVwLgogICAgICAgICAgICAgLy8gSWYgd2UgZXZlciB3
YW50ZWQgdG8gaW5zZXJ0IHRoZW0gcHJpb3IgdG8gZml4dXAsIHRoZW4gd2UganVzdCBoYXZlIHRv
IGNyZWF0ZQogICAgICAgICAgICAgLy8gZml4dXAgcnVsZXMgZm9yIHRoZW0uCkBAIC0xMzI3LDEz
ICsxMzU5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDUyOgotICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CkBAIC0xNDY2LDcgKzE0OTgsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFi
bGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIE51bWJlclVzZToKLSAgICAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgorICAg
ICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgog
ICAgICAgICAgICAgaWYgKHZhcmlhYmxlLT5kb3VibGVGb3JtYXRTdGF0ZSgpID09IFVzaW5nRG91
YmxlRm9ybWF0KQogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFy
aWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTQ3NSw3ICsxNTA4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB8fCBpc0Jv
b2xlYW5TcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkKICAgICAgICAgICAgICAg
ICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRv
VW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50
VXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgaWYgKGlzTWFjaGlu
ZUludFNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQogICAgICAgICAgICAgICAg
IG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9V
bmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTUxOCw5ICsxNTUxLDkgQEAgcHJp
dmF0ZToKICAgICAgICAgCiAgICAgICAgIFVzZUtpbmQgdXNlS2luZDsKICAgICAgICAgaWYgKG5v
ZGUtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkKLSAgICAgICAgICAgIHVzZUtpbmQgPSBN
YWNoaW5lSW50VXNlOworICAgICAgICAgICAgdXNlS2luZCA9IEludDUyUmVwVXNlOwogICAgICAg
ICBlbHNlIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkKLSAgICAgICAgICAgIHVz
ZUtpbmQgPSBOdW1iZXJVc2U7CisgICAgICAgICAgICB1c2VLaW5kID0gRG91YmxlUmVwVXNlOwog
ICAgICAgICBlbHNlIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpCiAgICAgICAg
ICAgICB1c2VLaW5kID0gQm9vbGVhblVzZTsKICAgICAgICAgZWxzZQpAQCAtMTU4OCw5ICsxNjIx
LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtX2dyYXBo
LmFkZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAgICAgICAgICAgIGZpeEVk
Z2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxN
YWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDUy
UmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNl
Pihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6
OkNoZWNrT3ZlcmZsb3cpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJ
bnQ1Mik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKQEAg
LTE3MjUsOTUgKzE3NTksMTA3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBhZGRQaGFudG9tc0lm
TmVjZXNzYXJ5KCk7CiAgICAgICAgICAgICBpZiAobV9jdXJyZW50Tm9kZS0+Y29udGFpbnNNb3ZI
aW50KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAodHJ5VG9S
ZWxheFJlcHJlc2VudGF0aW9uKG1fY3VycmVudE5vZGUpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgREZHX05PREVfRE9fVE9fQ0hJTERSRU4obV9ncmFwaCwgbV9jdXJy
ZW50Tm9kZSwgaW5qZWN0VHlwZUNvbnZlcnNpb25zRm9yRWRnZSk7CiAgICAgICAgIH0KICAgICAg
ICAgY2xlYXJQaGFudG9tc0F0RW5kKCk7CiAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUo
YmxvY2spOwogICAgIH0KICAgICAKKyAgICBib29sIHRyeVRvUmVsYXhSZXByZXNlbnRhdGlvbihO
b2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgLy8gU29tZSBvcGVyYXRpb25zIG1heSBiZSBhYmxl
IHRvIG9wZXJhdGUgbW9yZSBlZmZpY2llbnRseSBvdmVyIGxvb3NlciByZXByZXNlbnRhdGlvbnMu
CisgICAgICAgIC8vIElkZW50aWZ5IHRob3NlIGhlcmUuIFRoaXMgYXZvaWRzIGluc2VydGluZyBh
IHJlZHVuZGFudCByZXByZXNlbnRhdGlvbiBjb252ZXJzaW9uLgorICAgICAgICAKKyAgICAgICAg
c3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgorICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UKKyAgICAg
ICAgICAgICAgICAmJiAhbm9kZS0+Y2hpbGQxKCktPmhhc0RvdWJsZVJlc3VsdCgpKSB7CisgICAg
ICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkuc2V0VXNlS2luZChOdW1iZXJVc2UpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBpbmpl
Y3RUeXBlQ29udmVyc2lvbnNGb3JFZGdlKE5vZGUqIG5vZGUsIEVkZ2UmIGVkZ2UpCiAgICAgewog
ICAgICAgICBBU1NFUlQobm9kZSA9PSBtX2N1cnJlbnROb2RlKTsKICAgICAgICAgCi0gICAgICAg
IGlmIChpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpIHsKLSAgICAgICAgICAgIGlmIChlZGdlLT5z
aG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgewotICAgICAgICAgICAgICAgIGFk
ZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAg
ICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MkFzRG91YmxlLCBJbnQzMlRv
RG91YmxlLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4sIEVkZ2UoZWRnZS5ub2Rl
KCksIE51bWJlclVzZSkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGVkZ2Uu
c2V0Tm9kZShyZXN1bHQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgc3dpdGNoIChlZGdlLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIERvdWJsZVJl
cFVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOiB7CisgICAgICAgICAgICBpZiAo
ZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYmIGVkZ2UtPnNob3VsZFNwZWN1
bGF0ZU1hY2hpbmVJbnQoKSkgewotICAgICAgICAgICAgICAgIC8vIE1ha2UgYWxsIGRvdWJsZSB1
c2VzIG9mIGludDUyIHZhbHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJbnQ1MlRvRG91YmxlLgot
ICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBJbnQ1MlRv
VmFsdWUgKHNlZSBiZWxvdykgZXhjZXB0IHRoYXQKLSAgICAgICAgICAgICAgICAvLyBJbnQ4VG9E
b3VibGUgd2lsbCBjb252ZXJ0IGludDUyJ3MgdGhhdCBmaXQgaW4gYW4gaW50MzIgaW50byBhIGRv
dWJsZQotICAgICAgICAgICAgICAgIC8vIHJhdGhlciB0aGFuIHRyeWluZyB0byBjcmVhdGUgYSBi
b3hlZCBpbnQzMiBsaWtlIEludDUyVG9WYWx1ZSBkb2VzLgotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAg
ICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAg
ICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MkFzRG91YmxlLCBJbnQ1MlRvRG91
YmxlLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCks
IE51bWJlclVzZSkpOwotICAgICAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdl
Lm5vZGUoKSk7CisKKyAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChl
ZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNJbnQ1MkFzRG91YmxlLCBEb3VibGVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAg
ICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgSW50NTJSZXBVc2UpKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNEb3VibGUsIERvdWJs
ZVJlcCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgp
LCBOdW1iZXJVc2UpKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZWRnZS5zZXROb2Rl
KHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgaWYgKGVuYWJsZUludDUyKCkgJiYgZWRnZS51c2VLaW5kKCkgIT0gTWFjaGluZUludFVzZQot
ICAgICAgICAgICAgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpICYmICFlZGdl
LT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBtYWtlIGFsbCBu
b24taW50NTIgdXNlcyBvZiBpbnQ1MiB2YWx1ZXMgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgSW50NTJU
b1ZhbHVlCi0gICAgICAgICAgICAvLyBub2RlIHRvIGVuc3VyZSB0aGF0IHdlIGhhbmRsZSB0aGlz
IHByb3Blcmx5OgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ1Mgot
ICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoQGEsIC4uLikKLSAgICAgICAgICAgIC8vIGM6IENh
bGwoLi4uLCBAYSkKLSAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEBhLCAuLi4pCi0gICAgICAg
ICAgICAvLwotICAgICAgICAgICAgLy8gV2l0aG91dCBhbiBpbnRlcm1lZGlhdGUgbm9kZSBhbmQg
anVzdCBsYWJlbGluZyB0aGUgdXNlcywgd2Ugd2lsbCBnZXQ6Ci0gICAgICAgICAgICAvLwotICAg
ICAgICAgICAgLy8gYTogU29tZUludDUyCi0gICAgICAgICAgICAvLyBiOiBBcml0aEFkZChJbnQ1
MjpAYSwgLi4uKQotICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIFVudHlwZWQ6QGEpCi0gICAg
ICAgICAgICAvLyBkOiBBcml0aEFkZChJbnQ1MjpAYSwgLi4uKQotICAgICAgICAgICAgLy8KLSAg
ICAgICAgICAgIC8vIEFuZCBub3cgdGhlIGMtPlVudHlwZWQ6QGEgZWRnZSB3aWxsIGJveCB0aGUg
dmFsdWUgb2YgQGEgaW50byBhIGRvdWJsZS4gVGhpcwotICAgICAgICAgICAgLy8gaXMgYmFkLCBi
ZWNhdXNlIG5vdyB0aGUgZC0+SW50NTI6QGEgZWRnZSB3aWxsIGVpdGhlciBoYXZlIHRvIGRvIGRv
dWJsZS10by1pbnQKLSAgICAgICAgICAgIC8vIGNvbnZlcnNpb25zLCBvciB3aWxsIGhhdmUgdG8g
T1NSIGV4aXQgdW5jb25kaXRpb25hbGx5LiBBbHRlcm5hdGl2ZWx5IHdlIGNvdWxkCi0gICAgICAg
ICAgICAvLyBoYXZlIHRoZSBjLT5VbnR5cGVkOkBhIGVkZ2UgYm94IHRoZSB2YWx1ZSBieSBjb3B5
aW5nIHJhdGhlciB0aGFuIGluLXBsYWNlLgotICAgICAgICAgICAgLy8gQnV0IHRoZXNlIGJveGlu
Z3MgYXJlIGFsc28gY29zdGx5IHNvIHRoaXMgd291bGRuJ3QgYmUgZ3JlYXQuCi0gICAgICAgICAg
ICAvLwotICAgICAgICAgICAgLy8gVGhlIHNvbHV0aW9uIHdlIHVzZSBpcyB0byBhbHdheXMgaGF2
ZSBub24tSW50NTIgdXNlcyBvZiBwcmVkaWN0ZWQgSW50NTIncyB1c2UKLSAgICAgICAgICAgIC8v
IGFuIGludGVydmVuaW5nIEludDUyVG9WYWx1ZSBub2RlOgotICAgICAgICAgICAgLy8KLSAgICAg
ICAgICAgIC8vIGE6IFNvbWVJbnQ1MgotICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoSW50NTI6
QGEsIC4uLikKLSAgICAgICAgICAgIC8vIHg6IEludDUyVG9WYWx1ZShJbnQ1MjpAYSkKLSAgICAg
ICAgICAgIC8vIGM6IENhbGwoLi4uLCBVbnR5cGVkOkB4KQotICAgICAgICAgICAgLy8gZDogQXJp
dGhBZGQoSW50NTI6QGEsIC4uLikKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBOb3Rl
IHRoYXQgZXZlbiBpZiB3ZSBoYWQgbXVsdGlwbGUgbm9uLWludDUyIHVzZXMgb2YgQGEsIHRoZSBt
dWx0aXBsZQotICAgICAgICAgICAgLy8gSW50NTJUb1ZhbHVlJ3Mgd291bGQgZ2V0IENTRSdkIHRv
Z2V0aGVyLiBTbyB0aGUgYm94aW5nIHdvdWxkIG9ubHkgaGFwcGVuIG9uY2UuCi0gICAgICAgICAg
ICAvLyBBdCB0aGUgc2FtZSB0aW1lLCBAYSB3b3VsZCBjb250aW51ZSB0byBiZSByZXByZXNlbnRl
ZCBhcyBhIG5hdGl2ZSBpbnQ1Mi4KLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBBbiBh
bHRlcm5hdGl2ZSB3b3VsZCBoYXZlIGJlZW4gdG8gaW5zZXJ0IFRvTmF0aXZlSW50NTIgbm9kZXMg
b24gaW50NTIgdXNlcyBvZgotICAgICAgICAgICAgLy8gaW50NTIncy4gVGhpcyB3b3VsZCBoYXZl
IGhhbmRsZWQgdGhlIGFib3ZlIGV4YW1wbGUgYnV0IHdvdWxkIGZhbGwgb3ZlciBmb3I6Ci0gICAg
ICAgICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29tZUludDUyCi0gICAgICAgICAgICAvLyBi
OiBDYWxsKC4uLiwgQGEpCi0gICAgICAgICAgICAvLyBjOiBBcml0aEFkZChAYSwgLi4uKQotICAg
ICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIEJ1dCB0aGUgc29sdXRpb24gd2UgdXNlIGhhbmRs
ZXMgdGhlIGFib3ZlIGdyYWNlZnVsbHkuCisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ1
MlJlcFVzZTogeworICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpCisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGFkZFJlcXVpcmVk
UGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVj
SW50NTIsIEludDUyVG9WYWx1ZSwKLSAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4sIEVkZ2Uo
ZWRnZS5ub2RlKCksIFVudHlwZWRVc2UpKTsKKworICAgICAgICAgICAgTm9kZSogcmVzdWx0Owor
ICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKSB7CisgICAgICAgICAgICAg
ICAgLy8gVGhpcyB3aWxsIG5ldmVyIGhhcHBlbi4KKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChlZGdlLT5zaG91bGRT
cGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJ
bkJsb2NrLCBTcGVjSW50MzIsIEludDUyUmVwLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAg
ICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIEludDMyVXNlKSk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgb25seSBoZXJlIGZvciBkZWFsaW5nIHdp
dGggY29uc3RhbnRzLgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UtPm9wKCkg
PT0gSlNDb25zdGFudCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNNYWNo
aW5lSW50LCBJbnQ1MkNvbnN0YW50LCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAg
IE9wSW5mbyhlZGdlLT5jb25zdGFudE51bWJlcigpKSk7CisgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OiB7
CisgICAgICAgICAgICBpZiAoIWVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpICYmICFlZGdlLT5oYXNJ
bnQ1MlJlc3VsdCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBOb2RlKiByZXN1bHQ7CisgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91Ymxl
UmVzdWx0KCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0RvdWJsZSwg
VmFsdWVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5v
ZGUoKSwgRG91YmxlUmVwVXNlKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAg
ICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIgfCBTcGVjSW50NTJBc0RvdWJsZSwgVmFsdWVS
ZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwg
SW50NTJSZXBVc2UpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ZWRnZS5zZXROb2RlKHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSB9CiAg
ICAgfQogICAgIAogICAgIHZvaWQgYWRkUmVxdWlyZWRQaGFudG9tKE5vZGUqIG5vZGUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAx
NjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgaW5saW5lIE5vZGVGbGFncyByZXN1bHRGb3Io
Rmx1c2hGb3JtYXQgZgogICAgIGNhc2UgRmx1c2hlZEludDUyOgogICAgICAgICByZXR1cm4gTm9k
ZVJlc3VsdEludDUyOwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAgICAgcmV0dXJuIE5v
ZGVSZXN1bHROdW1iZXI7CisgICAgICAgIHJldHVybiBOb2RlUmVzdWx0RG91YmxlOwogICAgIGNh
c2UgRmx1c2hlZEJvb2xlYW46CiAgICAgICAgIHJldHVybiBOb2RlUmVzdWx0Qm9vbGVhbjsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTY3MTgy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyNSw2ICszMjUsMTMgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gZmlsdGVy
RmxhZ3MofmZsYWdzKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBzZXRSZXN1bHQoTm9kZUZsYWdz
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKHJlc3VsdCAmIH5Ob2RlUmVzdWx0TWFz
aykpOworICAgICAgICBjbGVhckZsYWdzKE5vZGVSZXN1bHRNYXNrKTsKKyAgICAgICAgbWVyZ2VG
bGFncyhyZXN1bHQpOworICAgIH0KKyAgICAKICAgICB2b2lkIHNldE9wQW5kRGVmYXVsdEZsYWdz
KE5vZGVUeXBlIG9wKQogICAgIHsKICAgICAgICAgbV9vcCA9IG9wOwpAQCAtMzg1LDYgKzM5Miw4
IEBAIHN0cnVjdCBOb2RlIHsKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAg
ICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAgICAg
IGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAgICAg
ICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00
MDEsNyArNDEwLDEyIEBAIHN0cnVjdCBOb2RlIHsKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0Nv
bnN0YW50KHVuc2lnbmVkIGNvbnN0YW50TnVtYmVyKQogICAgIHsKLSAgICAgICAgbV9vcCA9IEpT
Q29uc3RhbnQ7CisgICAgICAgIGlmIChoYXNEb3VibGVSZXN1bHQoKSkKKyAgICAgICAgICAgIG1f
b3AgPSBEb3VibGVDb25zdGFudDsKKyAgICAgICAgZWxzZSBpZiAoaGFzSW50NTJSZXN1bHQoKSkK
KyAgICAgICAgICAgIG1fb3AgPSBJbnQ1MkNvbnN0YW50OworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBtX29wID0gSlNDb25zdGFudDsKICAgICAgICAgbV9mbGFncyAmPSB+KE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlTWlnaHRDbG9iYmVyIHwgTm9kZUNsb2JiZXJzV29ybGQpOwogICAgICAgICBt
X29wSW5mbyA9IGNvbnN0YW50TnVtYmVyOwogICAgICAgICBjaGlsZHJlbi5yZXNldCgpOwpAQCAt
ODA1LDExICs4MTksMjEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gKG1fZmxhZ3Mg
JiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdEludDMyOwogICAgIH0KICAgICAKKyAgICBi
b29sIGhhc0ludDUyUmVzdWx0KCkKKyAgICB7CisgICAgICAgIHJldHVybiAobV9mbGFncyAmIE5v
ZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0SW50NTI7CisgICAgfQorICAgIAogICAgIGJvb2wg
aGFzTnVtYmVyUmVzdWx0KCkKICAgICB7CiAgICAgICAgIHJldHVybiAobV9mbGFncyAmIE5vZGVS
ZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0TnVtYmVyOwogICAgIH0KICAgICAKKyAgICBib29sIGhh
c0RvdWJsZVJlc3VsdCgpCisgICAgeworICAgICAgICByZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVz
dWx0TWFzaykgPT0gTm9kZVJlc3VsdERvdWJsZTsKKyAgICB9CisgICAgCiAgICAgYm9vbCBoYXNK
U1Jlc3VsdCgpCiAgICAgewogICAgICAgICByZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFz
aykgPT0gTm9kZVJlc3VsdEpTOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlRmxhZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZUZsYWdzLmNwcAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlRmxhZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw5IEBAIHZv
aWQgZHVtcE5vZGVGbGFncyhQcmludFN0cmVhbSYgYWN0dWFsT3UKICAgICAgICAgY2FzZSBOb2Rl
UmVzdWx0TnVtYmVyOgogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiTnVtYmVyIik7CiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOb2RlUmVzdWx0TnVtYmVyOgorICAgICAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiRG91YmxlIik7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6CiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEs
ICJJbnQzMiIpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAjZGVmaW5lIE5vZGVSZXN1bHRN
YXNrICAgICAgICAgICAgICAgICAgIDB4MDAwNwogI2RlZmluZSBOb2RlUmVzdWx0SlMgICAgICAg
ICAgICAgICAgICAgICAweDAwMDEKICNkZWZpbmUgTm9kZVJlc3VsdE51bWJlciAgICAgICAgICAg
ICAgICAgMHgwMDAyCi0jZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAgICAgICAgICAgICAgIDB4
MDAwMwotI2RlZmluZSBOb2RlUmVzdWx0SW50NTIgICAgICAgICAgICAgICAgICAweDAwMDQKLSNk
ZWZpbmUgTm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAgICAgICAgMHgwMDA1Ci0jZGVmaW5lIE5v
ZGVSZXN1bHRTdG9yYWdlICAgICAgICAgICAgICAgIDB4MDAwNgorI2RlZmluZSBOb2RlUmVzdWx0
RG91YmxlICAgICAgICAgICAgICAgICAweDAwMDMKKyNkZWZpbmUgTm9kZVJlc3VsdEludDMyICAg
ICAgICAgICAgICAgICAgMHgwMDA0CisjZGVmaW5lIE5vZGVSZXN1bHRJbnQ1MiAgICAgICAgICAg
ICAgICAgIDB4MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAgICAgICAgICAgICAw
eDAwMDYKKyNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgICAgICAgMHgwMDA3CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogI2RlZmluZSBOb2RlTXVzdEdlbmVyYXRl
ICAgICAgICAgICAgICAgICAweDAwMDggLy8gc2V0IG9uIG5vZGVzIHRoYXQgaGF2ZSBzaWRlIGVm
ZmVjdHMsIGFuZCBtYXkgbm90IHRyaXZpYWxseSBiZSByZW1vdmVkIGJ5IERDRS4KICNkZWZpbmUg
Tm9kZUhhc1ZhckFyZ3MgICAgICAgICAgICAgICAgICAgMHgwMDEwCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYg
KzM3LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBBIGNvbnN0
YW50IGluIHRoZSBDb2RlQmxvY2sncyBjb25zdGFudCBwb29sLiAqL1wKICAgICBtYWNybyhKU0Nv
bnN0YW50LCBOb2RlUmVzdWx0SlMgfCBOb2RlRG9lc05vdEV4aXQpIFwKICAgICBcCisgICAgLyog
Q29uc3RhbnRzIHdpdGggc3BlY2lmaWMgcmVwcmVzZW50YXRpb25zLiAqL1wKKyAgICBtYWNybyhE
b3VibGVDb25zdGFudCwgTm9kZVJlc3VsdERvdWJsZSB8IE5vZGVEb2VzTm90RXhpdCkgXAorICAg
IG1hY3JvKEludDUyQ29uc3RhbnQsIE5vZGVSZXN1bHRJbnQ1MiB8IE5vZGVEb2VzTm90RXhpdCkg
XAorICAgIFwKICAgICAvKiBBIGNvbnN0YW50IG5vdCBpbiB0aGUgQ29kZUJsb2NrJ3MgY29uc3Rh
bnQgcG9vbC4gVXNlcyBnZXQgcGF0Y2hlZCB0byBqdW1wcyB0aGF0IGV4aXQgdGhlICovXAogICAg
IC8qIGNvZGUgYmxvY2suICovXAogICAgIG1hY3JvKFdlYWtKU0NvbnN0YW50LCBOb2RlUmVzdWx0
SlMgfCBOb2RlRG9lc05vdEV4aXQpIFwKQEAgLTEwNiwxNSArMTEwLDEzIEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBVc2VkIHRvIGJveCB0aGUgcmVzdWx0IG9mIFVS
U2hpZnQgbm9kZXMgKHJlc3VsdCBoYXMgcmFuZ2UgMC4uMl4zMi0xKS4gKi9cCiAgICAgbWFjcm8o
VUludDMyVG9OdW1iZXIsIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBcCi0gICAgLyogVXNlZCB0
byBjYXN0IGtub3duIGludGVnZXJzIHRvIGRvdWJsZXMsIHNvIGFzIHRvIHNlcGFyYXRlIHRoZSBk
b3VibGUgZm9ybSAqL1wKLSAgICAvKiBvZiB0aGUgdmFsdWUgZnJvbSB0aGUgaW50ZWdlciBmb3Jt
LiAqL1wKLSAgICBtYWNybyhJbnQzMlRvRG91YmxlLCBOb2RlUmVzdWx0TnVtYmVyKSBcCi0gICAg
LyogVXNlZCB0byBzcGVjdWxhdGUgdGhhdCBhIGRvdWJsZSB2YWx1ZSBpcyBhY3R1YWxseSBhbiBp
bnRlZ2VyLiAqL1wKKyAgICAvKiBBdHRlbXB0IHRvIHRydW5jYXRlIGEgZG91YmxlIHRvIGludDMy
OyB0aGlzIHdpbGwgZXhpdCBpZiBpdCBjYW4ndCBkbyBpdC4gKi9cCiAgICAgbWFjcm8oRG91Ymxl
QXNJbnQzMiwgTm9kZVJlc3VsdEludDMyKSBcCi0gICAgLyogVXNlZCB0byBzZXBhcmF0ZSByZXBy
ZXNlbnRhdGlvbiBhbmQgcmVnaXN0ZXIgYWxsb2NhdGlvbiBvZiBJbnQ1MidzIHJlcHJlc2VudGVk
ICovXAotICAgIC8qIGFzIHZhbHVlcy4gKi9cCi0gICAgbWFjcm8oSW50NTJUb1ZhbHVlLCBOb2Rl
UmVzdWx0SlMpIFwKLSAgICBtYWNybyhJbnQ1MlRvRG91YmxlLCBOb2RlUmVzdWx0TnVtYmVyKSBc
CisgICAgXAorICAgIC8qIENoYW5nZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgYSB2YWx1ZS4gKi9c
CisgICAgbWFjcm8oRG91YmxlUmVwLCBOb2RlUmVzdWx0RG91YmxlKSBcCisgICAgbWFjcm8oSW50
NTJSZXAsIE5vZGVSZXN1bHRJbnQ1MikgXAorICAgIG1hY3JvKFZhbHVlUmVwLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGFyaXRobWV0aWMgb3BlcmF0aW9ucy4gKi9c
CiAgICAgbWFjcm8oQXJpdGhBZGQsIE5vZGVSZXN1bHROdW1iZXIpIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3Bw
CShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlcjMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY5LDkgKzI2OSw3IEBAIHZv
aWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgCiAgICAgICAg
IHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBJblBhaXI6Ci0g
ICAgICAgIGNhc2UgSW5GUFI6CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgotICAg
ICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIG1faml0Lmxv
YWQzMigKICAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnLAogICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QwKTsKQEAgLTI4Niw2ICsyODQsMTQgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNv
bXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9h
ZEZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIEluRlBSOgorICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKKyAg
ICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0
Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LmxvYWREb3Vi
bGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgbV9qaXQu
c2FuaXRpemVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5zdG9y
ZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3Bl
cmFuZCkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJ
bkdQUjoKICAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAg
IG1faml0LmxvYWQzMigKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjk3LDYgKzI5Nyw3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25z
dCAKICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBt
X2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgp
LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEdQUkluZm86
OnJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LnNhbml0aXplRG91
YmxlKEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICAgICAgbV9qaXQuYm94RG91YmxlKEZQUklu
Zm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQo
R1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAg
ICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAx
NjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg5LDcgKzQ4OSw2IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0
aDoKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKLSAgICAgICAgY2FzZSBJ
bnQzMlRvRG91YmxlOgogICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgIGNhc2Ug
R2V0TG9jYWxVbmxpbmtlZDoKICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKQEAg
LTUwMywxMSArNTAyLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJl
dHVybjoKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgICAgICBjYXNl
IEludmFsaWRhdGlvblBvaW50OgotICAgICAgICBjYXNlIEludDUyVG9WYWx1ZToKLSAgICAgICAg
Y2FzZSBJbnQ1MlRvRG91YmxlOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgICAg
IGNhc2UgVmFsdWVUb0ludDMyOgotICAgICAgICBjYXNlIEhhcmRQaGFudG9tOiB7CisgICAgICAg
IGNhc2UgSGFyZFBoYW50b206CisgICAgICAgIGNhc2UgRG91YmxlUmVwOgorICAgICAgICBjYXNl
IEludDUyUmVwOgorICAgICAgICBjYXNlIFZhbHVlUmVwOiB7CiAgICAgICAgICAgICAvLyBUaGlz
IG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxhdGlv
bi4gSXQgaXMKICAgICAgICAgICAgIC8vIGluc2VydGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZvbGxv
d3MgdGhpcyBwaGFzZS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAko
cmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsOCBAQCBib29sIHNhZmVUb0V4
ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsK
ICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBjYXNl
IEludDUyQ29uc3RhbnQ6CiAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAgICBjYXNlIElkZW50
aXR5OgogICAgIGNhc2UgVG9UaGlzOgpAQCAtMTM4LDcgKzE0MCw2IEBAIGJvb2wgc2FmZVRvRXhl
Y3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICBj
YXNlIFVJbnQzMlRvTnVtYmVyOgogICAgIGNhc2UgSW50MzJUb0RvdWJsZToKLSAgICBjYXNlIERv
dWJsZUFzSW50MzI6CiAgICAgY2FzZSBBcml0aEFkZDoKICAgICBjYXNlIEFyaXRoU3ViOgogICAg
IGNhc2UgQXJpdGhOZWdhdGU6CkBAIC0yNDEsOCArMjQyLDYgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAg
ICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgY2FzZSBMb29wSGludDoKLSAgICBj
YXNlIEludDUyVG9Eb3VibGU6Ci0gICAgY2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgY2FzZSBTdG9y
ZUJhcnJpZXI6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXJXaXRoTnVsbENoZWNrOgogICAgIGNhc2Ug
SW52YWxpZGF0aW9uUG9pbnQ6CkBAIC0yNTQsNiArMjUzLDkgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBNdWx0aUdl
dEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKKyAgICBjYXNlIFZhbHVlUmVw
OgorICAgIGNhc2UgRG91YmxlUmVwOgorICAgIGNhc2UgSW50NTJSZXA6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAKICAgICBjYXNlIEdldEJ5VmFsOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAx
NjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMjEgKzEwNiw5IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDUy
OgotICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKLSAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBib3hJbnQ1MihncHIsIGdwciwgc3BpbGxGb3JtYXQp
OwotICAgICAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2
NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAg
ICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIE5lZWQgdG8gYm94IHRoZSBkb3VibGUsIHNpbmNlIHdlIHdhbnQgYSBK
U1ZhbHVlLgotICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdWI2NChHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIsIGdwcik7Ci0gICAgICAgICAgICAgICAgICAgIHNwaWxsRm9ybWF0ID0g
RGF0YUZvcm1hdEpTRG91YmxlOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaW5mby5m
aWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwpAQCAtMTQzLDI4ICsxMzEs
NiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAgIHJl
dHVybiBncHI7CiAgICAgfQogCi0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7Ci0gICAgICAg
IEZQUlJlZyBmcHIgPSBpbmZvLmZwcigpOwotICAgICAgICBHUFJSZWcgZ3ByID0gYm94RG91Ymxl
KGZwcik7Ci0KLSAgICAgICAgLy8gVXBkYXRlIGFsbCBpbmZvCi0gICAgICAgIGluZm8uZmlsbEpT
VmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0RvdWJsZSk7Ci0gICAgICAgIG1fZnBy
cy5yZWxlYXNlKGZwcik7Ci0gICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0
ZXIsIFNwaWxsT3JkZXJKUyk7Ci0KLSAgICAgICAgcmV0dXJuIGdwcjsKLSAgICB9Ci0gICAgICAg
IAotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdElu
dDUyOiB7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBsb2NrKGdw
cik7Ci0gICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBhbGxvY2F0ZSgpOwotICAgICAgICBib3hJ
bnQ1MihncHIsIHJlc3VsdEdQUiwgaW5mby5yZWdpc3RlckZvcm1hdCgpKTsKLSAgICAgICAgdW5s
b2NrKGdwcik7Ci0gICAgICAgIHJldHVybiByZXN1bHRHUFI7Ci0gICAgfQotCiAgICAgY2FzZSBE
YXRhRm9ybWF0Q2VsbDoKICAgICAgICAgLy8gTm8gcmV0YWcgcmVxdWlyZWQgb24gSlNWQUxVRTY0
IQogICAgIGNhc2UgRGF0YUZvcm1hdEpTOgpAQCAtMTc5LDYgKzE0NSw4IEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgCiAgICAgY2FzZSBEYXRhRm9y
bWF0Qm9vbGVhbjoKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZv
cm1hdERvdWJsZToKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICAgICAgLy8gdGhpcyB0
eXBlIGN1cnJlbnRseSBuZXZlciBvY2N1cnMKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgCkBAIC03NjksMTIgKzczNyw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJG
b3JtYXQoKSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgaWYgKGluZm8u
c3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0g
ICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7Ci0gICAgICAgICAgICBy
ZXR1cm4gYWxsb2NhdGUoKTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgR1BSUmVnIGdw
ciA9IGFsbG9jYXRlKCk7CiAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKQEAg
LTc4OCw3ICs3NTAsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQz
CiAgICAgICAgIAogICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGlsbEZv
cm1hdCgpOwogICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0ICYg
RGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIgfHwgc3BpbGxG
b3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJp
Y3RJbnQ1Mik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3Jt
YXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKTsKICAgICAgICAgCiAgICAg
ICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVk
KTsKICAgICAgICAgCkBAIC04MDksMzYgKzc3MSw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRK
U0ludDMyOwogICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAgICAgICAgfQotICAgICAgICBpZiAo
c3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3Jt
YXRTdHJpY3RJbnQ1MikgewotICAgICAgICAgICAgLy8gR2VuZXJhbGx5LCB0aGlzIGNhbiBvbmx5
IGhhcHBlbiBpZiB3ZSd2ZSBhbHJlYWR5IHByb3ZlZCB0aGF0IHRoZQotICAgICAgICAgICAgLy8g
dmFsdWUgaXMgYW4gaW50MzIuIFRoYXQncyBiZWNhdXNlIGlmIGEgdmFsdWUgb3JpZ2luYXRlZCBh
cyBhIEpTVmFsdWUKLSAgICAgICAgICAgIC8vIHRoZW4gd2Ugd291bGQgc3BlY3VsYXRlIHRoYXQg
aXQncyBhbiBpbnQzMiBiZWZvcmUgcmVwcmVzZW50aW5nIGl0IGFzCi0gICAgICAgICAgICAvLyBh
biBpbnQ1Mi4gT3RoZXJ3aXNlLCBpZiB3ZSBrbm93aW5nbHkgcHJvZHVjZWQgYW4gaW50NTIsIHRo
ZW4gd2Ugd291bGQKLSAgICAgICAgICAgIC8vIGJlIGJveGluZyBpdCBpbnRvIGEgdmFsdWUgdXNp
bmcgSW50NTJUb1ZhbHVlLiBUaGlzIGFzc2VydGlvbiBpcyB2YWxpZAotICAgICAgICAgICAgLy8g
b25seSBiZWNhdXNlIEludDUyIGlzIHNvbWV0aGluZyB0aGF0IHdlIGludHJvZHVjZSBhdCBwcmVk
aWN0aW9uIHRpbWUuCi0gICAgICAgICAgICAvLyBIb3dldmVyOiB3ZSBtYXkgaGF2ZSBhbiBpbnQz
Mi1wcm9kdWNpbmcgbm9kZSByZXBsYWNlZCBieSBhbgotICAgICAgICAgICAgLy8gaW50NTItcHJv
ZHVjaW5nIG5vZGUgZHVlIHRvIENTRS4gU28gd2UgbXVzdCBkbyBhIGNoZWNrLgotICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNNYWNoaW5lSW50KSk7Ci0gICAgICAgICAg
ICBpZiAodHlwZSAmIFNwZWNJbnQ1MikgewotICAgICAgICAgICAgICAgIEdQUlJlZyB0ZW1wID0g
YWxsb2NhdGUoKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihncHIs
IHRlbXApOwotICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2UgY2FuJ3Qgc3VwcGx5IHZh
bHVlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBoZXJlLiA6LS8KLSAgICAgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVncygp
LCAwLAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIGdwciwgdGVtcCkpOwotICAgICAgICAgICAgICAgIHVubG9jayh0ZW1wKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3Ry
aWN0SW50NTIpCi0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJl
Z2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIGdwcik7Ci0gICAgICAgICAgICAgICAgbV9q
aXQuemVyb0V4dGVuZDMyVG9QdHIoZ3ByLCBncHIpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaW5mby5maWxsSW50MzIoKm1fc3RyZWFtLCBncHIpOwotICAgICAgICAgICAgcmV0dXJuRm9y
bWF0ID0gRGF0YUZvcm1hdEludDMyOwotICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAg
fQogICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJl
Z2lzdGVyKSwgZ3ByKTsKIAogICAgICAgICAvLyBGaWxsIGFzIEpTVmFsdWUsIGFuZCBmYWxsIHRo
cm91Z2guCkBAIC04OTcsNDcgKzgyOSw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNw
ZWN1bGF0ZUludDMKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CiAgICAgICAgIAotICAgIGNh
c2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOiB7Ci0g
ICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBHUFJSZWcgcmVzdWx0Owot
ICAgICAgICBEYXRhRm9ybWF0IG9sZEZvcm1hdCA9IGluZm8ucmVnaXN0ZXJGb3JtYXQoKTsKLSAg
ICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBh
bGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2NrKGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxJ
bnQzMigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICByZXN1bHQgPSBncHI7Ci0gICAgICAg
IH0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNNYWNoaW5lSW50KSk7Ci0g
ICAgICAgIGlmIChvbGRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQotICAgICAgICAgICAgbV9q
aXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCByZXN1
bHQpOwotICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ1MikgewotICAgICAgICAgICAgR1BSUmVn
IHRlbXAgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIo
cmVzdWx0LCB0ZW1wKTsKLSAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2UgY2FuJ3Qgc3VwcGx5
IHZhbHVlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBoZXJlLiA6LS8KLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwK
LSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IHJlc3VsdCwgdGVtcCkpOwotICAgICAgICAgICAgdW5sb2NrKHRlbXApOwotICAgICAgICB9Ci0g
ICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHJlc3VsdCwgcmVzdWx0KTsKLSAgICAgICAg
cmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOwotICAgICAgICByZXR1cm4gZ3ByOwotICAg
IH0KLQotICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXRKU0Rv
dWJsZTogewotICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSAmJiBpc0ludDMyQ29uc3Rh
bnQoZWRnZS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsK
LSAgICAgICAgICAgIEFTU0VSVChpc0ludDMyQ29uc3RhbnQoZWRnZS5ub2RlKCkpKTsKLSAgICAg
ICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTMyKHZhbHVlT2ZJbnQzMkNvbnN0
YW50KGVkZ2Uubm9kZSgpKSksIGdwcik7Ci0gICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRh
Rm9ybWF0SW50MzI7Ci0gICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICB9Ci0gICAgICAg
IEZBTExUSFJPVUdIOwotICAgIH0KKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAgICBj
YXNlIERhdGFGb3JtYXRDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CiAgICAgY2Fz
ZSBEYXRhRm9ybWF0SlNDZWxsOgpAQCAtOTQ3LDcgKzgzOSwxMCBAQCBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAg
IH0KIAorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9y
YWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmlj
dEludDUyOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAK
ICAgICBkZWZhdWx0OgpAQCAtOTgzLDcgKzg3OCw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUludDUKIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7
CiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewotICAgICAgICBpZiAoKGVkZ2UtPmhhc0NvbnN0
YW50KCkgJiYgIXZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKS5pc01hY2hpbmVJbnQoKSkg
fHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKKyAgICAgICAgaWYg
KChlZGdlLT5oYXNDb25zdGFudCgpICYmICF2YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSku
aXNNYWNoaW5lSW50KCkpKSB7CiAgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1
dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAgICAgICByZXR1cm4g
YWxsb2NhdGUoKTsKICAgICAgICAgfQpAQCAtMTAwNCw4MiArODk5LDIxIEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDUKICAgICAgICAgCiAgICAgICAgIERhdGFGb3Jt
YXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CiAgICAgICAgIAotICAgICAgICBS
RUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0
ID09IERhdGFGb3JtYXRJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIgfHwg
c3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERh
dGFGb3JtYXRTdHJpY3RJbnQ1Mik7CiAgICAgICAgIAogICAgICAgICBtX2dwcnMucmV0YWluKGdw
ciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAgICAgICAgIAotICAgICAg
ICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEpTSW50MzIgfHwgc3BpbGxGb3JtYXQgPT0g
RGF0YUZvcm1hdEludDMyKSB7Ci0gICAgICAgICAgICAvLyBJZiB3ZSBrbm93IHRoaXMgd2FzIHNw
aWxsZWQgYXMgYW4gaW50ZWdlciB3ZSBjYW4gZmlsbCB3aXRob3V0IGNoZWNraW5nLgotICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIGdwcik7Ci0gICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihncHIsIGdwcik7
Ci0gICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIp
IHsKLSAgICAgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ1MigqbV9zdHJlYW0sIGdwcik7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwg
Z3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbEludDUyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAg
ICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09
IERhdGFGb3JtYXRJbnQ1MiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIp
IHsKLSAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0
YUZvcm1hdFN0cmljdEludDUyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09
IERhdGFGb3JtYXRJbnQ1MikKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBncHIpOwotICAgICAgICAgICAg
ICAgIGluZm8uZmlsbFN0cmljdEludDUyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZ3ByOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0
ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKLSAgICAgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2
NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIGdwcik7Ci0gICAgICAg
ICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICByZXR1cm4g
Z3ByOwotICAgICAgICB9CiAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVz
c0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotCi0gICAgICAgIC8vIEZpbGwgYXMgSlNWYWx1
ZSwgYW5kIGZhbGwgdGhyb3VnaC4KLSAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0s
IGdwciwgRGF0YUZvcm1hdEpTSW50MzIpOwotICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0g
ICAgICAgIEZBTExUSFJPVUdIOwotICAgIH0KLQotICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7Ci0g
ICAgICAgIC8vIENoZWNrIHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2VyLiBOb3RlIHRoYXQgd2Ugd291
bGQgKmxpa2UqIHRvIHVuYm94IGFuIEludDUyCi0gICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgYnV0
IHRoaXMgaXMgdG9vIGNvc3RseS4gV2Ugb25seSAqcHJvdmUqIHRoYXQgdGhpcyBpcyBhbiBJbnQ1
MgotICAgICAgICAvLyBldmVuIHRob3VnaCB3ZSBjaGVjayBpZiBpdCdzIGFuIGludDMyLgotICAg
ICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJlc3VsdDsKLSAg
ICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBh
bGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICAgICAgcmVz
dWx0ID0gZ3ByOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0eXBlICYgflNwZWNJbnQzMikKLSAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MocmVzdWx0KSwg
ZWRnZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCByZXN1bHQsIEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwotICAgICAgICBpZiAocmVzdWx0ID09IGdwcikg
Ly8gVGhlIG5vdC1hbHJlYWR5LWxvY2tlZCwgc28gZmlsbCBpbi1wbGFjZSwgY2FzZS4KLSAgICAg
ICAgICAgIGluZm8uZmlsbEludDUyKCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKLSAg
ICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0LCByZXN1bHQpOwotICAgICAgICBp
ZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCi0gICAgICAgICAgICBtX2ppdC5s
c2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIHJlc3VsdCk7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgY2FzZSBEYXRhRm9ybWF0SW50
MzI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjogewotICAgICAgICBHUFJSZWcgZ3ByID0g
aW5mby5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJlc3VsdDsKLSAgICAgICAgaWYgKG1fZ3Bycy5p
c0xvY2tlZChncHIpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgpOwotICAgICAg
ICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICAgICAgaW5mby5maWxsSW50NTIoKm1fc3Ry
ZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOwotICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOworICAg
ICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpIHsKKyAgICAg
ICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCisgICAgICAgICAgICAg
ICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQp
LCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NTIoKm1fc3RyZWFtLCBncHIp
OworICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAgICAgICAgfQotICAgICAgICBtX2ppdC5zaWdu
RXh0ZW5kMzJUb1B0cihyZXN1bHQsIHJlc3VsdCk7Ci0gICAgICAgIGlmIChkZXNpcmVkRm9ybWF0
ID09IERhdGFGb3JtYXRJbnQ1MikKLSAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1
MikKKyAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1
MlNoaWZ0QW1vdW50KSwgZ3ByKTsKKyAgICAgICAgaW5mby5maWxsSW50NTIoKm1fc3RyZWFtLCBn
cHIpOworICAgICAgICByZXR1cm4gZ3ByOwogICAgIH0KIAogICAgIGNhc2UgRGF0YUZvcm1hdFN0
cmljdEludDUyOiB7CkBAIC0xMTE2LDMxICs5NTAsNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVJbnQ1CiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQogCi0gICAgY2Fz
ZSBEYXRhRm9ybWF0RG91YmxlOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgotICAgICAg
ICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewotICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVl
ID0gdmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKGpzVmFs
dWUuaXNNYWNoaW5lSW50KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVlID0ganNW
YWx1ZS5hc01hY2hpbmVJbnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9
PSBEYXRhRm9ybWF0SW50NTIpCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPDwg
SlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudDsKLSAgICAgICAgICAgICAgICBHUFJSZWcgZ3ByID0g
YWxsb2NhdGUoKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJ
bW02NCh2YWx1ZSksIGdwcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIERhdGFGb3Jt
YXRDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46Ci0gICAgY2FzZSBEYXRhRm9ybWF0
SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogewotICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0g
ICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwotICAgIH0KLQotICAgIGNhc2UgRGF0YUZvcm1hdFN0
b3JhZ2U6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIAog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOwpAQCAtMTE2MCwxNyArOTY5LDYgQEAgRlBSUmVnIFNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YgogICAgICAgICBpZiAoZWRnZS0+aGFzQ29u
c3RhbnQoKSkgewogICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CiAKLSAgICAg
ICAgICAgIGlmIChpc0ludDMyQ29uc3RhbnQoZWRnZS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAg
ICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92
ZShNYWNyb0Fzc2VtYmxlcjo6SW1tNjQocmVpbnRlcnByZXREb3VibGVUb0ludDY0KHN0YXRpY19j
YXN0PGRvdWJsZT4odmFsdWVPZkludDMyQ29uc3RhbnQoZWRnZS5ub2RlKCkpKSkpLCBncHIpOwot
ICAgICAgICAgICAgICAgIG1faml0Lm1vdmU2NFRvRG91YmxlKGdwciwgZnByKTsKLSAgICAgICAg
ICAgICAgICB1bmxvY2soZ3ByKTsKLQotICAgICAgICAgICAgICAgIC8vIERvbid0IGZpbGwgZG91
YmxlIGhlcmUgc2luY2UgdGhhdCB3aWxsIGxlYWQgdG8gY29uZnVzaW9uOiB0aGUKLSAgICAgICAg
ICAgICAgICAvLyByZWdpc3RlciBhbGxvY2F0b3Igd2lsbCBub3cgdGhpbmsgdGhhdCB0aGlzIGlz
IGEgZG91YmxlIHdoaWxlCi0gICAgICAgICAgICAgICAgLy8gZXZlcnlvbmUgZWxzZSB0aGlua3Mg
aXQncyBhbiBpbnRlZ2VyLgotICAgICAgICAgICAgICAgIHJldHVybiBmcHI7Ci0gICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoaXNOdW1iZXJDb25zdGFudChlZGdlLm5vZGUoKSkpIHsKICAg
ICAgICAgICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKICAgICAgICAgICAgICAg
ICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW02NChyZWludGVycHJldERvdWJsZVRvSW50
NjQodmFsdWVPZk51bWJlckNvbnN0YW50KGVkZ2Uubm9kZSgpKSkpLCBncHIpOwpAQCAtMTE4Niwx
NTkgKzk4NCwxOCBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZv
LnNwaWxsRm9ybWF0KCk7Ci0gICAgICAgIHN3aXRjaCAoc3BpbGxGb3JtYXQpIHsKLSAgICAgICAg
Y2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7Ci0gICAgICAgICAgICBGUFJSZWcgZnByID0gZnByQWxs
b2NhdGUoKTsKLSAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZnByKTsKLSAgICAgICAgICAgIG1fZnBycy5yZXRhaW4o
ZnByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJEb3VibGUpOwotICAgICAgICAgICAgaW5m
by5maWxsRG91YmxlKCptX3N0cmVhbSwgZnByKTsKLSAgICAgICAgICAgIHJldHVybiBmcHI7Ci0g
ICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjogewot
ICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGls
bGVkKTsKLSAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgaW5mby5maWxsSW50MzIoKm1fc3Ry
ZWFtLCBncHIpOwotICAgICAgICAgICAgdW5sb2NrKGdwcik7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOiB7
Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgIG1fZ3By
cy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAg
ICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0
ZXIpLCBncHIpOwotICAgICAgICAgICAgaW5mby5maWxsSW50NTIoKm1fc3RyZWFtLCBncHIpOwot
ICAgICAgICAgICAgdW5sb2NrKGdwcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOiB7Ci0gICAg
ICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgIG1fZ3Bycy5yZXRh
aW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAgICAgICAg
IG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBn
cHIpOwotICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NTIoKm1fc3RyZWFtLCBncHIpOwot
ICAgICAgICAgICAgdW5sb2NrKGdwcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsK
LQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMp
OwotICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxP
cmRlclNwaWxsZWQpOwotICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxKU1Zh
bHVlKCptX3N0cmVhbSwgZ3ByLCBzcGlsbEZvcm1hdCk7Ci0gICAgICAgICAgICB1bmxvY2soZ3By
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3dpdGNoIChp
bmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKLSAgICBjYXNlIERhdGFGb3JtYXROb25lOiAvLyBTaG91
bGQgaGF2ZSBmaWxsZWQsIGFib3ZlLgotICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46IC8vIFRo
aXMgdHlwZSBuZXZlciBvY2N1cnMuCi0gICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIGNhc2UgRGF0YUZvcm1hdENl
bGw6Ci0gICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBK
U1ZhbHVlUmVncygpLCAwKTsKLSAgICAgICAgcmV0dXJuIGZwckFsbG9jYXRlKCk7Ci0KLSAgICBj
YXNlIERhdGFGb3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlM6Ci0gICAgY2FzZSBE
YXRhRm9ybWF0SlNCb29sZWFuOiB7Ci0gICAgICAgIEdQUlJlZyBqc1ZhbHVlR3ByID0gaW5mby5n
cHIoKTsKLSAgICAgICAgbV9ncHJzLmxvY2soanNWYWx1ZUdwcik7Ci0gICAgICAgIEZQUlJlZyBm
cHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICBHUFJSZWcgdGVtcEdwciA9IGFsbG9jYXRlKCk7
Ci0KLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoNjQo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwganNWYWx1ZUdwciwgR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyKTsKLQotICAgICAgICBpZiAodHlwZSAmIH5TcGVjRnVsbE51bWJlcikK
LSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoanNWYWx1
ZUdwciksIGVkZ2UsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywganNW
YWx1ZUdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7Ci0KLSAgICAgICAgLy8g
Rmlyc3QsIGlmIHdlIGdldCBoZXJlIHdlIGhhdmUgYSBkb3VibGUgZW5jb2RlZCBhcyBhIEpTVmFs
dWUKLSAgICAgICAgbV9qaXQubW92ZShqc1ZhbHVlR3ByLCB0ZW1wR3ByKTsKLSAgICAgICAgdW5i
b3hEb3VibGUodGVtcEdwciwgZnByKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaGFzVW5i
b3hlZERvdWJsZSA9IG1faml0Lmp1bXAoKTsKLQotICAgICAgICAvLyBGaW5hbGx5LCBoYW5kbGUg
aW50ZWdlcnMuCi0gICAgICAgIGlzSW50ZWdlci5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0
LmNvbnZlcnRJbnQzMlRvRG91YmxlKGpzVmFsdWVHcHIsIGZwcik7Ci0gICAgICAgIGhhc1VuYm94
ZWREb3VibGUubGluaygmbV9qaXQpOwotCi0gICAgICAgIG1fZ3Bycy5yZWxlYXNlKGpzVmFsdWVH
cHIpOwotICAgICAgICBtX2dwcnMudW5sb2NrKGpzVmFsdWVHcHIpOwotICAgICAgICBtX2dwcnMu
dW5sb2NrKHRlbXBHcHIpOwotICAgICAgICBtX2ZwcnMucmV0YWluKGZwciwgdmlydHVhbFJlZ2lz
dGVyLCBTcGlsbE9yZGVyRG91YmxlKTsKLSAgICAgICAgaW5mby5maWxsRG91YmxlKCptX3N0cmVh
bSwgZnByKTsKLSAgICAgICAgaW5mby5raWxsU3BpbGxlZCgpOwotICAgICAgICByZXR1cm4gZnBy
OwotICAgIH0KLQotICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6Ci0gICAgY2FzZSBEYXRhRm9y
bWF0SW50MzI6IHsKLSAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAg
IEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAg
ICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShncHIsIGZwcik7Ci0gICAgICAgIG1fZ3By
cy51bmxvY2soZ3ByKTsKLSAgICAgICAgcmV0dXJuIGZwcjsKLSAgICB9Ci0gICAgICAgIAotICAg
IGNhc2UgRGF0YUZvcm1hdEludDUyOiB7Ci0gICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0
ZSgpOwotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgbV9ncHJzLmxv
Y2soZ3ByKTsKLSAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOwotICAgICAgICBtX2pp
dC5tb3ZlKGdwciwgdGVtcCk7Ci0gICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgdGVtcCk7Ci0gICAgICAgIG1faml0LmNvbnZlcnRJ
bnQ2NFRvRG91YmxlKHRlbXAsIGZwcik7Ci0gICAgICAgIHVubG9jayh0ZW1wKTsKLSAgICAgICAg
bV9ncHJzLnVubG9jayhncHIpOwotICAgICAgICByZXR1cm4gZnByOwotICAgIH0KLSAgICAgICAg
Ci0gICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdERvdWJsZSk7CiAgICAgICAgIEZQUlJlZyBmcHIg
PSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAg
ICAgbV9ncHJzLmxvY2soZ3ByKTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUo
Z3ByLCBmcHIpOwotICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0gICAgICAgIHJldHVybiBm
cHI7Ci0gICAgfQotCi0gICAgLy8gVW5ib3ggdGhlIGRvdWJsZQotICAgIGNhc2UgRGF0YUZvcm1h
dEpTRG91YmxlOiB7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBG
UFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChn
cHIpKSB7Ci0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgdHJhbXBsZSBncHIgaWYg
aXQgaXMgaW4gdXNlLgotICAgICAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOwotICAg
ICAgICAgICAgbV9qaXQubW92ZShncHIsIHRlbXApOwotICAgICAgICAgICAgdW5ib3hEb3VibGUo
dGVtcCwgZnByKTsKLSAgICAgICAgICAgIHVubG9jayh0ZW1wKTsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICB1bmJveERvdWJsZShncHIsIGZwcik7Ci0KLSAgICAgICAgbV9ncHJzLnJlbGVh
c2UoZ3ByKTsKKyAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCBmcHIpOwogICAgICAgICBtX2ZwcnMucmV0YWluKGZwciwgdmly
dHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyRG91YmxlKTsKLQogICAgICAgICBpbmZvLmZpbGxEb3Vi
bGUoKm1fc3RyZWFtLCBmcHIpOwogICAgICAgICByZXR1cm4gZnByOwogICAgIH0KIAotICAgIGNh
c2UgRGF0YUZvcm1hdERvdWJsZTogewotICAgICAgICBGUFJSZWcgZnByID0gaW5mby5mcHIoKTsK
LSAgICAgICAgbV9mcHJzLmxvY2soZnByKTsKLSAgICAgICAgcmV0dXJuIGZwcjsKLSAgICB9Ci0g
ICAgICAgIAotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiBJbnZhbGlkRlBSUmVnOwotICAgIH0KKyAgICBSRUxFQVNFX0FT
U0VSVChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSk7CisgICAgRlBS
UmVnIGZwciA9IGluZm8uZnByKCk7CisgICAgbV9mcHJzLmxvY2soZnByKTsKKyAgICByZXR1cm4g
ZnByOwogfQogCiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKEVkZ2Ug
ZWRnZSkKQEAgLTEzNTIsMTEgKzEwMDksNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVDZWxsCiAKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgewogICAg
IGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9
PSBEYXRhRm9ybWF0SW50MzIgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3Vi
bGUpIHsKLSAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwot
ICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKIAog
ICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewpAQCAtMTQwNSwxNiArMTA1NywxNiBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICBjYXNlIERhdGFG
b3JtYXRKU0RvdWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNCb29sZWFuOgotICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46Ci0gICAgY2FzZSBE
YXRhRm9ybWF0SW50NTI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKKyAgICBj
YXNlIERhdGFGb3JtYXRCb29sZWFuOiB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhl
Y3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFs
bG9jYXRlKCk7CiAgICAgfQogCisgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2Ug
RGF0YUZvcm1hdFN0b3JhZ2U6CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CisgICAgY2FzZSBE
YXRhRm9ybWF0U3RyaWN0SW50NTI6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0xNDMzLDcgKzEwODUsNyBAQCBHUFJSZWcg
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAKICAgICBzd2l0Y2ggKGluZm8ucmVn
aXN0ZXJGb3JtYXQoKSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgaWYg
KGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50MzIgfHwgaW5mby5zcGlsbEZvcm1h
dCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKKyAgICAgICAgaWYgKGluZm8uc3BpbGxGb3JtYXQo
KSA9PSBEYXRhRm9ybWF0SW50MzIpIHsKICAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZl
RXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgICAgIHJl
dHVybiBhbGxvY2F0ZSgpOwogICAgICAgICB9CkBAIC0xNDg3LDE2ICsxMTM5LDE2IEBAIEdQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICBjYXNlIERhdGFGb3JtYXRK
U0ludDMyOgogICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgogICAgIGNhc2UgRGF0YUZvcm1hdEpT
RG91YmxlOgotICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRK
U0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQ1
MjoKLSAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjogeworICAgIGNhc2UgRGF0YUZvcm1h
dENlbGw6IFAKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9
CiAgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3Jt
YXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1h
dFN0cmljdEludDUyOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTUwNSwyNiArMTE1Nyw2IEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICB9CiB9CiAKLUpJVENvbXBpbGVyOjpKdW1w
IFNwZWN1bGF0aXZlSklUOjpjb252ZXJ0VG9Eb3VibGUoR1BSUmVnIHZhbHVlLCBGUFJSZWcgcmVz
dWx0LCBHUFJSZWcgdG1wKQotewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1f
aml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHZhbHVlLCBHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIG5v
dE51bWJlciA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgdmFsdWUs
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgCi0gICAgbV9qaXQubW92ZSh2
YWx1ZSwgdG1wKTsKLSAgICB1bmJveERvdWJsZSh0bXAsIHJlc3VsdCk7Ci0gICAgCi0gICAgSklU
Q29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLSAgICAKLSAgICBpc0ludGVnZXIu
bGluaygmbV9qaXQpOwotICAgIAotICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHZhbHVl
LCByZXN1bHQpOwotICAgIAotICAgIGRvbmUubGluaygmbV9qaXQpOwotCi0gICAgcmV0dXJuIG5v
dE51bWJlcjsKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJhc2VWYWx1ZVN0b3Jl
QmFycmllcihFZGdlJiBiYXNlRWRnZSwgRWRnZSYgdmFsdWVFZGdlKQogewogI2lmIEVOQUJMRShH
R0MpCkBAIC0yNDAwLDI0ICsyMDMyLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIElu
dDMyVG9Eb3VibGU6IHsKLSAgICAgICAgY29tcGlsZUludDMyVG9Eb3VibGUobm9kZSk7CisgICAg
Y2FzZSBEb3VibGVSZXA6IHsKKyAgICAgICAgY29tcGlsZURvdWJsZVJlcChub2RlKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEludDUyVG9WYWx1ZTogewotICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3BlcmFuZCk7Ci0gICAgICAgIG1f
aml0Lm1vdmUob3BlcmFuZC5ncHIoKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgIGNhc2UgVmFsdWVSZXA6IHsKKyAgICAgICAg
Y29tcGlsZVZhbHVlUmVwKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAot
ICAgIGNhc2UgSW50NTJUb0RvdWJsZTogewotICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
IG9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBGUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMsIG9wZXJhbmQpOwotICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKG9wZXJhbmQuZnBy
KCksIHJlc3VsdC5mcHIoKSk7Ci0gICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5v
ZGUpOworICAgIGNhc2UgSW50NTJSZXA6IHsKKyAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5k
IG9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMsIG9wZXJhbmQpOworICAgICAgICAKKyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMy
VG9QdHIob3BlcmFuZC5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgCisgICAgICAgIHN0
cmljdEludDUyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMiw4ICsz
MzIsNiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgfSBl
bHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpIHsKICAgICAgICAgaWYg
KG5vZGUtPmhhc0NvbnN0YW50KCkpCiAgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0SW50NTJD
b25zdGFudDsKLSAgICAgICAgZWxzZSBpZiAoaXNKU0ludDMyKGluZm8uc3BpbGxGb3JtYXQoKSkg
fHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRKUykKLSAgICAgICAgICAgIGZpbGxB
Y3Rpb24gPSBMb2FkMzJQYXlsb2FkQ29udmVydFRvSW50NTI7CiAgICAgICAgIGVsc2UgaWYgKGlu
Zm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50NTIpCiAgICAgICAgICAgICBmaWxsQWN0
aW9uID0gTG9hZDY0OwogICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0
YUZvcm1hdFN0cmljdEludDUyKQpAQCAtMzQxLDE3ICszMzksMTIgQEAgU2lsZW50UmVnaXN0ZXJT
YXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9y
bWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUpCiAgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0
OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uIEFu
eXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFzIGFuIGludDMyIHdpbGwgbmV2ZXIKLSAgICAgICAgICAg
IC8vIGJlIHR1cm5lZCBpbnRvIGEgY2VsbCAoaW1tZWRpYXRlIHNwZWMgZmFpbCkgb3IgYSBkb3Vi
bGUgKHRvLWRvdWJsZQotICAgICAgICAgICAgLy8gY29udmVyc2lvbnMgaW52b2x2ZSBhIHNlcGFy
YXRlIG5vZGUpLgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7IC8vIE1ha2UgR0NDIGhhcHB5LgogICAgICAg
ICB9CiAgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50
NTIpIHsKICAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpCiAgICAgICAgICAgICBmaWxs
QWN0aW9uID0gU2V0U3RyaWN0SW50NTJDb25zdGFudDsKLSAgICAgICAgZWxzZSBpZiAoaXNKU0lu
dDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3Jt
YXRKUykKLSAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkMzJQYXlsb2FkU2lnbkV4dGVuZDsK
ICAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQ1MikK
ICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjRTaGlmdEludDUyUmlnaHQ7CiAgICAgICAg
IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpCkBA
IC0zNTksOSArMzUyLDYgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6
cwogICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUp
CiAgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OwogICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uIEFueXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFz
IGFuIGludDMyIHdpbGwgbmV2ZXIKLSAgICAgICAgICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEgY2Vs
bCAoaW1tZWRpYXRlIHNwZWMgZmFpbCkgb3IgYSBkb3VibGUgKHRvLWRvdWJsZQotICAgICAgICAg
ICAgLy8gY29udmVyc2lvbnMgaW52b2x2ZSBhIHNlcGFyYXRlIG5vZGUpLgogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBM
b2FkNjQ7IC8vIE1ha2UgR0NDIGhhcHB5LgogICAgICAgICB9CkBAIC0zNzYsOSArMzY2LDYgQEAg
U2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgICAgICB9IGVsc2Ug
aWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50MzIpIHsKICAgICAgICAgICAg
IEFTU0VSVChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0SlNJbnQzMik7CiAgICAgICAgICAg
ICBmaWxsQWN0aW9uID0gTG9hZDMyUGF5bG9hZEJveEludDsKLSAgICAgICAgfSBlbHNlIGlmIChp
bmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAgICAgICAgICAgQVNT
RVJUKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRKU0RvdWJsZSk7Ci0gICAgICAgICAgICBm
aWxsQWN0aW9uID0gTG9hZERvdWJsZUJveERvdWJsZTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OwogI2Vsc2UKQEAgLTQzNCwxNCArNDIxLDExIEBAIFNp
bGVudFJlZ2lzdGVyU2F2ZVBsYW4gU3BlY3VsYXRpdmVKSVQ6OnMKICAgICBpZiAobm9kZS0+aGFz
Q29uc3RhbnQoKSkgewogICAgICAgICBBU1NFUlQoaXNOdW1iZXJDb25zdGFudChub2RlKSk7CiAg
ICAgICAgIGZpbGxBY3Rpb24gPSBTZXREb3VibGVDb25zdGFudDsKLSAgICB9IGVsc2UgaWYgKGlu
Zm8uc3BpbGxGb3JtYXQoKSAhPSBEYXRhRm9ybWF0Tm9uZSAmJiBpbmZvLnNwaWxsRm9ybWF0KCkg
IT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAgICAgICAvLyBpdCB3YXMgYWxyZWFkeSBzcGlsbGVk
IHByZXZpb3VzbHkgYW5kIG5vdCBhcyBhIGRvdWJsZSwgd2hpY2ggbWVhbnMgd2UgbmVlZCB1bmJv
eGluZy4KLSAgICAgICAgQVNTRVJUKGluZm8uc3BpbGxGb3JtYXQoKSAmIERhdGFGb3JtYXRKUyk7
Ci0gICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkSlNVbmJveERvdWJsZTsKLSAgICB9IGVsc2UKKyAg
ICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3Jt
YXROb25lIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKTsKICAgICAg
ICAgZmlsbEFjdGlvbiA9IExvYWREb3VibGU7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAg
IEFTU0VSVChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSB8fCBpbmZv
LnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTRG91YmxlKTsKKyAgICBBU1NFUlQoaW5m
by5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpOwogICAgIGlmIChub2RlLT5o
YXNDb25zdGFudCgpKSB7CiAgICAgICAgIEFTU0VSVChpc051bWJlckNvbnN0YW50KG5vZGUpKTsK
ICAgICAgICAgZmlsbEFjdGlvbiA9IFNldERvdWJsZUNvbnN0YW50OwpAQCAtNTI4LDE0ICs1MTIs
NiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgICAgIG1f
aml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJl
Z2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIo
cGxhbi5ncHIoKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTG9hZERv
dWJsZUJveERvdWJsZToKLSAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwotICAgICAg
ICBtX2ppdC5zdWI2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHBsYW4uZ3ByKCkp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExvYWRKU1VuYm94RG91YmxlOgotICAgICAgICBt
X2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxS
ZWdpc3RlcigpKSwgY2FuVHJhbXBsZSk7Ci0gICAgICAgIHVuYm94RG91YmxlKGNhblRyYW1wbGUs
IHBsYW4uZnByKCkpOwotICAgICAgICBicmVhazsKICNlbHNlCiAgICAgY2FzZSBTZXRKU0NvbnN0
YW50VGFnOgogICAgICAgICBtX2ppdC5tb3ZlKEltbTMyKHZhbHVlT2ZKU0NvbnN0YW50KHBsYW4u
bm9kZSgpKS50YWcoKSksIHBsYW4uZ3ByKCkpOwpAQCAtMTAzOSw2ICsxMDE1LDI4IEBAIEdQUlRl
bXBvcmFyeTo6R1BSVGVtcG9yYXJ5KAogfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAK
K0pTVmFsdWVSZWdzVGVtcG9yYXJ5OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeSgpIHsgfQorCitKU1Zh
bHVlUmVnc1RlbXBvcmFyeTo6SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqIGpp
dCkKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIDogbV9ncHIoaml0KQorI2Vsc2UKKyAgICA6IG1f
cGF5bG9hZEdQUihqaXQpCisgICAgLCBtX3RhZ0dQUihqaXQpCit7Cit9CisKK0pTVmFsdWVSZWdz
VGVtcG9yYXJ5Ojp+SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoKSB7IH0KKworSlNWYWx1ZVJlZ3MgSlNW
YWx1ZVJlZ3NUZW1wb3Jhcnk6OnJlZ3MoKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0
dXJuIEpTVmFsdWVSZWdzKG1fZ3ByLmdwcigpKTsKKyNlbHNlCisgICAgcmV0dXJuIEpTVmFsdWVS
ZWdzKG1fdGFnR1BSLmdwcigpLCBtX3BheWxvYWRHUFIuZ3ByKCkpOworI2VuZGlmCit9CisKIHZv
aWQgR1BSVGVtcG9yYXJ5OjphZG9wdChHUFJUZW1wb3JhcnkmIG90aGVyKQogewogICAgIEFTU0VS
VCghbV9qaXQpOwpAQCAtMTgxNywxNiArMTgxNSwxMyBAQCBHZW5lcmF0ZWRPcGVyYW5kVHlwZSBT
cGVjdWxhdGl2ZUpJVDo6Y2hlCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgogICAgIGNhc2Ug
RGF0YUZvcm1hdEpTOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERh
dGFGb3JtYXRKU0RvdWJsZToKICAgICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRKU1ZhbHVl
OwogCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQz
MjoKICAgICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRJbnRlZ2VyOwogCi0gICAgY2FzZSBE
YXRhRm9ybWF0SlNEb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgotICAgICAgICBy
ZXR1cm4gR2VuZXJhdGVkT3BlcmFuZERvdWJsZTsKLSAgICAgICAgCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEdlbmVy
YXRlZE9wZXJhbmRUeXBlVW5rbm93bjsKQEAgLTE4NDUsNyArMTg0MCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKICAgICB9CiAgICAgICAgIAogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgY2FzZSBJbnQ1MlJlcFVz
ZTogewogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3Ax
KTsKICAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKQEAgLTE4NTUsNiArMTg1MCwx
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgCisgICAgY2Fz
ZSBEb3VibGVSZXBVc2U6IHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAg
ICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZQUlJlZyBmcHIgPSBvcDEuZnByKCk7
CisgICAgICAgIEdQUlJlZyBncHIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIG5vdFRydW5jYXRlZFRvSW50ZWdlciA9IG1faml0LmJyYW5jaFRydW5jYXRlRG91Ymxl
VG9JbnQzMihmcHIsIGdwciwgSklUQ29tcGlsZXI6OkJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpOwor
ICAgICAgICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5vdFRy
dW5jYXRlZFRvSW50ZWdlciwgdGhpcywgdG9JbnQzMiwgZ3ByLCBmcHIpKTsKKyAgICAgICAgCisg
ICAgICAgIGludDMyUmVzdWx0KGdwciwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAg
ICAgCiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgY2FzZSBOb3RDZWxsVXNlOiB7CkBAIC0xODY2
LDE4ICsxODc0LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgog
ICAgICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlLCBvcDEuZm9ybWF0KCkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgR2VuZXJhdGVk
T3BlcmFuZERvdWJsZTogewotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
LSAgICAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxk
MSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwotICAgICAgICAgICAgRlBSUmVnIGZwciA9
IG9wMS5mcHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSByZXN1bHQuZ3ByKCk7Ci0gICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RUcnVuY2F0ZWRUb0ludGVnZXIgPSBtX2ppdC5i
cmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoZnByLCBncHIsIEpJVENvbXBpbGVyOjpCcmFuY2hJ
ZlRydW5jYXRlRmFpbGVkKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5vdFRydW5jYXRlZFRvSW50ZWdlciwgdGhpcywgdG9JbnQz
MiwgZ3ByLCBmcHIpKTsKLQotICAgICAgICAgICAgaW50MzJSZXN1bHQoZ3ByLCBub2RlKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogICAgICAgICBjYXNlIEdlbmVyYXRlZE9wZXJh
bmRKU1ZhbHVlOiB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogI2lm
IFVTRShKU1ZBTFVFNjQpCkBAIC0yMDY2LDcwICsyMDYyLDEzMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlRG91YmxlQXNJbnQzCiAgICAgaW50MzJSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDMyVG9Eb3VibGUoTm9kZSog
bm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm9kZSogbm9kZSkK
IHsKLSAgICBBU1NFUlQoIWlzSW50MzJDb25zdGFudChub2RlLT5jaGlsZDEoKS5ub2RlKCkpKTsg
Ly8gVGhpcyBzaG91bGQgaGF2ZSBiZWVuIGNvbnN0YW50IGZvbGRlZC4KKyAgICBzd2l0Y2ggKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAg
IEFTU0VSVCghaXNJbnQzMkNvbnN0YW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpOyAvLyBUaGlz
IHNob3VsZCBoYXZlIGJlZW4gY29uc3RhbnQgZm9sZGVkLgogICAgIAotICAgIGlmIChpc0ludDMy
U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKSB7Ci0g
ICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7Ci0gICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMS5ncHIoKSwgcmVzdWx0
LmZwcigpKTsKLSAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKSB7CisgICAgICAgICAgICBTcGVjdWxh
dGVJbnQzMk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOworICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAg
ICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMS5ncHIoKSwgcmVzdWx0LmZwcigp
KTsKKyAgICAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgCi0gICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRo
aXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwotICAgIEZQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgRlBSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIEdQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKIAot
ICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7Ci0gICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1w
LmdwcigpOwotICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CisgICAgICAgIEdQ
UlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5n
cHIoKTsKKyAgICAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKICAgICAKLSAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NCgKLSAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2pp
dC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9w
MUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAgICAKLSAgICBpZiAobmVl
ZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyKSkgewotICAgICAgICB0
eXBlQ2hlY2soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGlsZDEo
KSwgU3BlY0Z1bGxOdW1iZXIsCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9B
c3NlbWJsZXI6Olplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7
Ci0gICAgfQorICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNC
eXRlY29kZU51bWJlcikpIHsKKyAgICAgICAgICAgIHR5cGVDaGVjaygKKyAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0J5dGVjb2RlTnVtYmVy
LAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgfQog
ICAgIAotICAgIG1faml0Lm1vdmUob3AxR1BSLCB0ZW1wR1BSKTsKLSAgICB1bmJveERvdWJsZSh0
ZW1wR1BSLCByZXN1bHRGUFIpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5q
dW1wKCk7CisgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCB0ZW1wR1BSKTsKKyAgICAgICAgdW5i
b3hEb3VibGUodGVtcEdQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
ZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAKLSAgICBpc0ludGVnZXIubGluaygmbV9qaXQpOwot
ICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMUdQUiwgcmVzdWx0RlBSKTsKLSAgICBk
b25lLmxpbmsoJm1faml0KTsKLSNlbHNlCi0gICAgRlBSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Cisg
ICAgICAgIGlzSW50ZWdlci5saW5rKCZtX2ppdCk7CisgICAgICAgIG1faml0LmNvbnZlcnRJbnQz
MlRvRG91YmxlKG9wMUdQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7
CisjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSAtPiB0aGlzIGlzIHRoZSAzMl82NCBjYXNlCisgICAg
ICAgIEZQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgIAotICAgIEdQUlJlZyBvcDFUYWdHUFIg
PSBvcDEudGFnR1BSKCk7Ci0gICAgR1BSUmVnIG9wMVBheWxvYWRHUFIgPSBvcDEucGF5bG9hZEdQ
UigpOwotICAgIEZQUlJlZyB0ZW1wRlBSID0gdGVtcC5mcHIoKTsKLSAgICBGUFJSZWcgcmVzdWx0
RlBSID0gcmVzdWx0LmZwcigpOworICAgICAgICBHUFJSZWcgb3AxVGFnR1BSID0gb3AxLnRhZ0dQ
UigpOworICAgICAgICBHUFJSZWcgb3AxUGF5bG9hZEdQUiA9IG9wMS5wYXlsb2FkR1BSKCk7Cisg
ICAgICAgIEZQUlJlZyB0ZW1wRlBSID0gdGVtcC5mcHIoKTsKKyAgICAgICAgRlBSUmVnIHJlc3Vs
dEZQUiA9IHJlc3VsdC5mcHIoKTsKICAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVn
ZXIgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBvcDFU
YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJU
YWcpKTsKICAgICAKLSAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNG
dWxsTnVtYmVyKSkgewotICAgICAgICB0eXBlQ2hlY2soCi0gICAgICAgICAgICBKU1ZhbHVlUmVn
cyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1i
ZXIsCi0gICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVx
dWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7Ci0gICAg
fQorICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNCeXRlY29k
ZU51bWJlcikpIHsKKyAgICAgICAgICAgIHR5cGVDaGVjaygKKyAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0J5
dGVjb2RlTnVtYmVyLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2Vz
dFRhZykpKTsKKyAgICAgICAgfQogICAgIAotICAgIHVuYm94RG91YmxlKG9wMVRhZ0dQUiwgb3Ax
UGF5bG9hZEdQUiwgcmVzdWx0RlBSLCB0ZW1wRlBSKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBk
b25lID0gbV9qaXQuanVtcCgpOworICAgICAgICB1bmJveERvdWJsZShvcDFUYWdHUFIsIG9wMVBh
eWxvYWRHUFIsIHJlc3VsdEZQUiwgdGVtcEZQUik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgCi0gICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsK
LSAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcDFQYXlsb2FkR1BSLCByZXN1bHRGUFIp
OwotICAgIGRvbmUubGluaygmbV9qaXQpOwotI2VuZGlmCisgICAgICAgIGlzSW50ZWdlci5saW5r
KCZtX2ppdCk7CisgICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMVBheWxvYWRH
UFIsIHJlc3VsdEZQUik7CisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworI2VuZGlmIC8vIFVT
RShKU1ZBTFVFNjQpCiAgICAgCi0gICAgZG91YmxlUmVzdWx0KHJlc3VsdEZQUiwgbm9kZSk7Cisg
ICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHRGUFIsIG5vZGUpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgSW50NTJSZXBVc2U6
IHsKKyAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAg
CisgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICBGUFJSZWcg
cmVzdWx0RlBSID0gcmVzdWx0LmZwcigpOworCisgICAgICAgIG1faml0LmNvbnZlcnRJbnQ2NFRv
RG91YmxlKHZhbHVlR1BSLCByZXN1bHRGUFIpOworICAgICAgICAKKyAgICAgICAgZG91YmxlUmVz
dWx0KHJlc3VsdEZQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8g
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUmVwKE5vZGUqIG5vZGUpCit7CisgICAgc3dpdGNo
IChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTogewor
ICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAK
KyAgICAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWUuZnByKCk7CisgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworICAgICAgICAKKyAgICAgICAgYm94RG91
YmxlKHZhbHVlRlBSLCByZXN1bHRSZWdzKTsKKyAgICAgICAgCisgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICBTcGVj
dWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAKKyAgICAgICAgR1BSUmVn
IHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBib3hJbnQ1Mih2YWx1ZUdQUiwgcmVzdWx0R1BS
LCBEYXRhRm9ybWF0SW50NTIpOworICAgICAgICAKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiB9CiAKIHN0YXRpYyBkb3VibGUg
Y2xhbXBEb3VibGVUb0J5dGUoZG91YmxlIGQpCkBAIC0yNDQwLDEwICsyNDk3LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbAogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBu
b3ROYU4gPSBtX2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsLCBy
ZXN1bHRSZWcsIHJlc3VsdFJlZyk7Ci0gICAgc3RhdGljIGNvbnN0IGRvdWJsZSBOYU4gPSBRTmFO
OwotICAgIG1faml0LmxvYWREb3VibGUoJk5hTiwgcmVzdWx0UmVnKTsKLSAgICBub3ROYU4ubGlu
aygmbV9qaXQpOworICAgIHNhbml0aXplRG91YmxlKHJlc3VsdFJlZyk7CiAgICAgCiAgICAgZG91
YmxlUmVzdWx0KHJlc3VsdFJlZywgbm9kZSk7CiB9CkBAIC00NDg3LDM2ICs0NTQxLDM3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUludDMyKEVkZ2UKICAgICAoU3BlY3VsYXRlSW50
MzJPcGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlTWFjaGluZUludChFZGdlIGVkZ2UpCi17Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNNYWNoaW5lSW50KSkKLSAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIChTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQodGhpcywgZWRn
ZSkpLmdwcigpOwotI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKLSAgICBVTlVTRURfUEFSQU0oZWRn
ZSk7Ci0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYgLy8gVVNFKEpTVkFM
VUU2NCkKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTnVtYmVyKEVkZ2UgZWRn
ZSkKIHsKLSAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNGdWxsTnVtYmVyKSkKKyAg
ICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNCeXRlY29kZU51bWJlcikpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICAoU3BlY3VsYXRlRG91YmxlT3BlcmFuZCh0aGlzLCBlZGdlKSku
ZnByKCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgZWRnZSk7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBHUFJSZWcgZ3ByID0gdmFsdWUuZ3ByKCk7CisgICAgdHlwZUNoZWNrKAor
ICAgICAgICBqc1ZhbHVlUmVncyhncHIpLCBlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIsCisgICAg
ICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgZ3ByLCBHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyKSk7CisjZWxzZQorICAgIEdQUlJlZyB0YWdHUFIgPSB2YWx1ZS50YWdH
UFIoKTsKKyAgICBERkdfVFlQRV9DSEVDSygKKyAgICAgICAgdmFsdWUuanNWYWx1ZVJlZ3MoKSwg
ZWRnZSwgflNwZWNJbnQzMiwKKyAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKKyAgICBE
RkdfVFlQRV9DSEVDSygKKyAgICAgICAgdmFsdWUuanNWYWx1ZVJlZ3MoKSwgZWRnZSwgU3BlY0J5
dGVjb2RlTnVtYmVyLAorICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJv
dmVPckVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlUmVhbE51bWJlcihFZGdl
IGVkZ2UpCiB7Ci0gICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbFJlYWxOdW1i
ZXIpKQorICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0RvdWJsZVJlYWwpKQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcGVyYW5kKHRo
aXMsIGVkZ2UpOwogICAgIEZQUlJlZyBmcHIgPSBvcGVyYW5kLmZwcigpOwotICAgIERGR19UWVBF
X0NIRUNLKAotICAgICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIs
CisgICAgdHlwZUNoZWNrKAorICAgICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjRG91Ymxl
UmVhbCwKICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIGZwciwgZnByKSk7CiB9CkBAIC00NzY4
LDggKzQ4MjMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAog
ICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhl
ZGdlLCBTcGVjSW50MzIpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBLbm93bk51bWJlclVz
ZToKLSAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbE51bWJlcikp
OworICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNoZWNr
KGVkZ2UsIFNwZWNEb3VibGUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnQ1MlJlcFVz
ZToKKyAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTWFjaGluZUludCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICAgICAgQVNTRVJU
KCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCkpOwpAQCAtNDc4MCwxNSArNDgzOCwxMiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkCiAgICAgY2FzZSBJbnQz
MlVzZToKICAgICAgICAgc3BlY3VsYXRlSW50MzIoZWRnZSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTWFjaGluZUludFVzZToKLSAgICAgICAgc3BlY3VsYXRlTWFjaGluZUludChlZGdlKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgICAgICBzcGVjdWxh
dGVSZWFsTnVtYmVyKGVkZ2UpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIE51bWJlclVzZToK
ICAgICAgICAgc3BlY3VsYXRlTnVtYmVyKGVkZ2UpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IERvdWJsZVJlcFJlYWxVc2U6CisgICAgICAgIHNwZWN1bGF0ZURvdWJsZVJlYWwoZWRnZSk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgc3BlY3VsYXRlQm9v
bGVhbihlZGdlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1OSw2ICs0NTksMTAgQEAgcHVibGljOgogICAgICAgICBtX2ppdC51bmJveERvdWJsZSh0YWdH
UFIsIHBheWxvYWRHUFIsIGZwciwgc2NyYXRjaEZQUik7CiAgICAgfQogI2VuZGlmCisgICAgdm9p
ZCBib3hEb3VibGUoRlBSUmVnIGZwciwgSlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7CisgICAgICAg
IG1faml0LmJveERvdWJsZShmcHIsIHJlZ3MpOworICAgIH0KIAogICAgIC8vIFNwaWxsIGEgVmly
dHVhbFJlZ2lzdGVyIHRvIHRoZSBKU1N0YWNrLgogICAgIHZvaWQgc3BpbGwoVmlydHVhbFJlZ2lz
dGVyIHNwaWxsTWUpCkBAIC05MjUsNiArOTI5LDE0IEBAIHB1YmxpYzoKICAgICAgICAganNWYWx1
ZVJlc3VsdCh0YWcsIHBheWxvYWQsIG5vZGUsIERhdGFGb3JtYXRKUywgbW9kZSk7CiAgICAgfQog
I2VuZGlmCisgICAgdm9pZCBqc1ZhbHVlUmVzdWx0KEpTVmFsdWVSZWdzIHJlZ3MsIE5vZGUqIG5v
ZGUsIERhdGFGcm1hdCBmb3JtYXQgPSBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuTW9kZSBtb2Rl
ID0gQ2FsbFVzZUNoaWxkcmVuKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlZ3MuZ3ByKCksIG5vZGUsIGZvcm1hdCwgbW9kZSk7CisjZWxzZQorICAg
ICAgICBqc1ZhbHVlUmVzdWx0KHJlZ3MudGFnR1BSKCksIHJlZ3MucGF5bG9hZEdQUigpLCBub2Rl
LCBmb3JtYXQsIG1vZGUpOworI2VuZGlmCisgICAgfQogICAgIHZvaWQgc3RvcmFnZVJlc3VsdChH
UFJSZWcgcmVnLCBOb2RlKiBub2RlLCBVc2VDaGlsZHJlbk1vZGUgbW9kZSA9IENhbGxVc2VDaGls
ZHJlbikKICAgICB7CiAgICAgICAgIGlmIChtb2RlID09IENhbGxVc2VDaGlsZHJlbikKQEAgLTIw
ODMsNyArMjA5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVWYWx1ZVRvSW50MzIoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZVVJbnQzMlRvTnVtYmVyKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVEb3VibGVBc0ludDMyKE5vZGUqKTsKLSAgICB2b2lkIGNvbXBpbGVJbnQzMlRvRG91Ymxl
KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVEb3VibGVSZXAoTm9kZSopOwogICAgIHZvaWQgY29t
cGlsZUFkZChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTWFrZVJvcGUoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZUFyaXRoU3ViKE5vZGUqKTsKQEAgLTIxODUsMTIgKzIxOTcsNiBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTQXJyYXkoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0
dXJlKiwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzKTsKIAotI2lmIFVT
RShKU1ZBTFVFNjQpIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGNvbnZlcnRUb0RvdWJsZShHUFJS
ZWcgdmFsdWUsIEZQUlJlZyByZXN1bHQsIEdQUlJlZyB0bXApOwotI2VsaWYgVVNFKEpTVkFMVUUz
Ml82NCkKLSAgICBKSVRDb21waWxlcjo6SnVtcCBjb252ZXJ0VG9Eb3VibGUoSlNWYWx1ZU9wZXJh
bmQmLCBGUFJSZWcgcmVzdWx0KTsKLSNlbmRpZgotICAgIAogICAgIC8vIEFkZCBhIHNwZWN1bGF0
aW9uIGNoZWNrLgogICAgIHZvaWQgc3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCwgSlNWYWx1ZVNv
dXJjZSwgTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwpOwogICAgIHZvaWQg
c3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTm9kZSosIGNvbnN0IE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYganVtcHNUb0ZhaWwpOwpAQCAtMjU2NSw2ICsyNTcxLDIz
IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwogfTsKIAorY2xhc3MgSlNWYWx1ZVJlZ3NU
ZW1wb3JhcnkgeworcHVibGljOgorICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5KCk7CisgICAgSlNW
YWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqKTsKKyAgICB+SlNWYWx1ZVJlZ3NUZW1w
b3JhcnkoKTsKKyAgICAKKyAgICBKU1ZhbHVlUmVncyByZWdzKCk7CisKK3ByaXZhdGU6CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICBHUFJUZW1wb3JhcnkgbV9ncHI7CisjZWxzZQorICAgIEdQUlRl
bXBvcmFyeSBtX3BheWxvYWRHUFI7CisgICAgR1BSVGVtcG9yYXJ5IG1fdGFnR1BSOworI2VuZGlm
Cit9OworCiBjbGFzcyBGUFJUZW1wb3JhcnkgewogcHVibGljOgogICAgIEZQUlRlbXBvcmFyeShT
cGVjdWxhdGl2ZUpJVCopOwpAQCAtMjc1NCwxMiArMjc3NywxMiBAQCBwcml2YXRlOgogLy8gR2l2
ZXMgeW91IGEgY2Fub25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDE2LCBs
b3cgYml0cyB6ZXJvKS4KIGNsYXNzIFNwZWN1bGF0ZUludDUyT3BlcmFuZCB7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgU3BlY3VsYXRlSW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVk
Z2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNw
ZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUludDUyT3BlcmFuZChTcGVjdWxhdGl2
ZUpJVCogaml0LCBFZGdlIGVkZ2UpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1f
ZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAg
ewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChq
aXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CkBAIC0yODAx
LDEyICsyODI0LDEyIEBAIHByaXZhdGU6CiAvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGku
ZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMgYXJlIHNp
Z24tZXh0ZW5kZWQpLgogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVK
SVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0
aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgZXhwbGljaXQgU3BlY3VsYXRlU3RyaWN0SW50NTJP
cGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSkKICAgICAgICAgOiBtX2ppdChq
aXQpCiAgICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52
YWxpZEdQUlJlZykKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVz
ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNl
KTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKICAgICAgICAgICAgIGdwcigp
OwogICAgIH0KQEAgLTI4NDksMzUgKzI4NzIsMzUgQEAgZW51bSBPcHBvc2l0ZVNoaWZ0VGFnIHsg
T3Bwb3NpdGVTaGlmdCB9OwogCiBjbGFzcyBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQg
ewogcHVibGljOgotICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZChT
cGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9k
ZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVX
aGljaGV2ZXJJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlKQogICAg
ICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkKICAgICAgICAgLCBtX2dw
ck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQogICAgICAgICAsIG1fc3RyaWN0KGppdC0+YmV0dGVy
VXNlU3RyaWN0SW50NTIoZWRnZSkpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUs
IG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1h
Y2hpbmVJbnRVc2UpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJ
bnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAg
ICAgICBncHIoKTsKICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVy
SW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgY29uc3QgU3BlY3Vs
YXRlV2hpY2hldmVySW50NTJPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBt
b2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0
ZVdoaWNoZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIGNv
bnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCYgb3RoZXIpCiAgICAgICAgIDogbV9q
aXQoaml0KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlk
KEludmFsaWRHUFJSZWcpCiAgICAgICAgICwgbV9zdHJpY3Qob3RoZXIubV9zdHJpY3QpCiAgICAg
ewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChq
aXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CiAgICAgCi0g
ICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklU
KiBqaXQsIEVkZ2UgZWRnZSwgT3Bwb3NpdGVTaGlmdFRhZywgY29uc3QgU3BlY3VsYXRlV2hpY2hl
dmVySW50NTJPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZl
ckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wcG9zaXRlU2hp
ZnRUYWcsIGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCYgb3RoZXIpCiAgICAg
ICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3By
T3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgICAgICwgbV9zdHJpY3QoIW90aGVyLm1fc3Ry
aWN0KQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpOwogICAg
ICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQogICAgICAgICAgICAgZ3ByKCk7CiAgICAg
fQpAQCAtMjkyNiwxMyArMjk0OSwxMyBAQCBwcml2YXRlOgogCiBjbGFzcyBTcGVjdWxhdGVEb3Vi
bGVPcGVyYW5kIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
KFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBt
b2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0
ZURvdWJsZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlKQogICAgICAgICA6
IG1faml0KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkKICAgICAgICAgLCBtX2Zwck9ySW52
YWxpZChJbnZhbGlkRlBSUmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faml0KTsKLSAgICAg
ICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8
fCBpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0Rv
dWJsZShlZGdlLnVzZUtpbmQoKSkpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkp
KQogICAgICAgICAgICAgZnByKCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdVc2VLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuY3BwCShyZXZpc2lvbiAxNjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNyArNDYsMTcg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2UgS25v
d25JbnQzMlVzZToKICAgICAgICAgb3V0LnByaW50KCJLbm93bkludDMyIik7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTWFjaGluZUludFVzZToKLSAgICAgICAgb3V0LnByaW50KCJNYWNoaW5l
SW50Iik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAg
b3V0LnByaW50KCJSZWFsTnVtYmVyIik7CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAg
b3V0LnByaW50KCJJbnQ1MlJlcCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE51bWJlclVz
ZToKICAgICAgICAgb3V0LnByaW50KCJOdW1iZXIiKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgb3V0LnByaW50KCJLbm93bk51bWJlciIpOworICAg
IGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBvdXQucHJpbnQoIkRvdWJsZVJlcCIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgICAgIG91dC5wcmlu
dCgiRG91YmxlUmVwUmVhbCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJvb2xlYW5Vc2U6
CiAgICAgICAgIG91dC5wcmludCgiQm9vbGVhbiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdVc2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdVc2VLaW5kLmgJKHJldmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVXNlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMCArMzcsMTAgQEAg
ZW51bSBVc2VLaW5kIHsKICAgICBVbnR5cGVkVXNlLAogICAgIEludDMyVXNlLAogICAgIEtub3du
SW50MzJVc2UsCi0gICAgTWFjaGluZUludFVzZSwKLSAgICBSZWFsTnVtYmVyVXNlLAorICAgIElu
dDUyUmVwVXNlLAogICAgIE51bWJlclVzZSwKLSAgICBLbm93bk51bWJlclVzZSwKKyAgICBEb3Vi
bGVSZXBVc2UsCisgICAgRG91YmxlUmVwUmVhbFVzZSwKICAgICBCb29sZWFuVXNlLAogICAgIENl
bGxVc2UsCiAgICAgS25vd25DZWxsVXNlLApAQCAtNjcsMTMgKzY3LDE0IEBAIEFMV0FZU19JTkxJ
TkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckYKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNh
c2UgS25vd25JbnQzMlVzZToKICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKLSAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNN
YWNoaW5lSW50OwotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgcmV0dXJuIFNwZWNG
dWxsUmVhbE51bWJlcjsKICAgICBjYXNlIE51bWJlclVzZToKLSAgICBjYXNlIEtub3duTnVtYmVy
VXNlOgotICAgICAgICByZXR1cm4gU3BlY0Z1bGxOdW1iZXI7CisgICAgICAgIHJldHVybiBTcGVj
Qnl0ZWNvZGVOdW1iZXI7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgIHJldHVybiBT
cGVjRG91YmxlOworICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICAgICAgcmV0dXJuIFNw
ZWNEb3VibGVSZWFsOwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgcmV0dXJuIFNwZWNC
b29sZWFuOwogICAgIGNhc2UgQ2VsbFVzZToKQEAgLTExMyw5ICsxMTQsMTAgQEAgQUxXQVlTX0lO
TElORSBib29sIHNob3VsZE5vdEhhdmVUeXBlQ2hlYwogICAgIHN3aXRjaCAoa2luZCkgewogICAg
IGNhc2UgVW50eXBlZFVzZToKICAgICBjYXNlIEtub3duSW50MzJVc2U6Ci0gICAgY2FzZSBLbm93
bk51bWJlclVzZToKICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICBjYXNlIEtub3duU3RyaW5n
VXNlOgorICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTEzMiwxMCArMTM0LDExIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5k
IGsKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25v
d25JbnQzMlVzZToKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Ci0gICAgY2FzZSBSZWFsTnVtYmVy
VXNlOgogICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CisgICAg
Y2FzZSBJbnQ1MlJlcFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICBjYXNlIERvdWJs
ZVJlcFJlYWxVc2U6CisgICAgY2FzZSBCeXRlY29kZUludFVzZToKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ1LDkgKzE0OCw4
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGsKIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc0RvdWJsZShVc2VLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0g
ICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgS25v
d25OdW1iZXJVc2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBS
ZWFsVXNlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNw
cAkocmV2aXNpb24gMTY3MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxp
ZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMi0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE1LDYgKzExNSw5IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG1fbXlSZWZDb3VudHMuZmlu
ZChlZGdlLm5vZGUoKSktPnZhbHVlKys7CiAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgp
ID09IChlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UgfHwgZWRnZS51c2VLaW5kKCkgPT0g
RG91YmxlUmVwUmVhbFVzZSkpOworICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwg
ZWRnZSksIGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkgPT0gKGVkZ2UudXNlS2luZCgpID09IEludDUy
UmVwVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAo
bV9ncmFwaC5tX2Zvcm0gPT0gU1NBKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiBT
U0EsIGFsbCBlZGdlcyBtdXN0IGhhc1Jlc3VsdCgpLgogICAgICAgICAgICAgICAgICAgICAgICAg
VkFMSURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdlLT5oYXNSZXN1bHQoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNjcx
ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzNCw5ICsyMzQsOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNh
bkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBDb21wYXJlRXE6CiAgICAgICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlm
IChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpCisgICAgICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkKKyAgICAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpKQogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0yNTQsOSArMjU0LDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgICAgICBpZiAo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKQorICAgICAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpCisgICAgICAg
IGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc5LDkgKzI3OSw5IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CiAgICAg
ICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpCisg
ICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKQogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkK
KyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVz
ZSkpCiAgICAgICAgICAgICBicmVhazsKQEAgLTM0OSwxMCArMzQ5LDEwIEBAIENhcGFiaWxpdHlM
ZXZlbCBjYW5Db21waWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIFVudHlw
ZWRVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgICAgICAgICBj
YXNlIEtub3duSW50MzJVc2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgor
ICAgICAgICAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBO
dW1iZXJVc2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAg
ICAgICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVS
ZXBVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgogICAgICAgICAg
ICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgICAgICAgICBjYXNlIENlbGxVc2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBLbm93bkNlbGxVc2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTY3MTgyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4Niw3ICsxODYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBMVHlwZSB0eXBlOwogICAgICAgICAgICAgICAg
IHN3aXRjaCAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVSZXN1bHRNYXNrKSB7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBOb2RlUmVzdWx0TnVtYmVyOgorICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3Vs
dERvdWJsZToKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IG1fb3V0LmRvdWJsZVR5cGU7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3Vs
dEludDMyOgpAQCAtMjgyLDEyICsyODIsMzAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBEb3VibGVDb25zdGFudDoKKyAgICAgICAgICAgIGNvbXBpbGVEb3VibGVDb25zdGFudCgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKKyAgICAg
ICAgICAgIGNvbXBpbGVJbnQ1MkNvbnN0YW50KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAgICAgICAgICAgIGNvbXBpbGVXZWFrSlNDb25zdGFu
dCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoK
ICAgICAgICAgICAgIGNvbXBpbGVQaGFudG9tQXJndW1lbnRzKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBEb3VibGVSZXA6CisgICAgICAgICAgICBjb21waWxlRG91YmxlUmVw
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICAgICAg
ICAgIGNvbXBpbGVWYWx1ZVJlcCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
SW50NTJSZXA6CisgICAgICAgICAgICBjb21waWxlSW50NTJSZXAoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAgICAgICAgICAgIGNvbXBpbGVWYWx1
ZVRvSW50MzIoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldEFyZ3VtZW50
OgogICAgICAgICAgICAgY29tcGlsZUdldEFyZ3VtZW50KCk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTM3NSw5ICszOTMsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFVJbnQzMlRvTnVtYmVy
OgogICAgICAgICAgICAgY29tcGlsZVVJbnQzMlRvTnVtYmVyKCk7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgotICAgICAgICAgICAgY29tcGlsZUludDMy
VG9Eb3VibGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENoZWNrU3RydWN0
dXJlOgogICAgICAgICAgICAgY29tcGlsZUNoZWNrU3RydWN0dXJlKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTU2NiwxMiArNTgxLDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnZhbGlk
YXRpb25Qb2ludDoKICAgICAgICAgICAgIGNvbXBpbGVJbnZhbGlkYXRpb25Qb2ludCgpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgotICAgICAgICAgICAg
Y29tcGlsZVZhbHVlVG9JbnQzMigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
SW50NTJUb1ZhbHVlOgotICAgICAgICAgICAgY29tcGlsZUludDUyVG9WYWx1ZSgpOwotICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOgogICAg
ICAgICAgICAgY29tcGlsZUNoZWNrQXJndW1lbnRzTm90Q3JlYXRlZCgpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC02MzAsNzMgKzYzOSwxOCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBpbGVWYWx1ZVRvSW50MzIoKQotICAgIHsKLSAgICAg
ICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewotICAgICAgICBjYXNlIElu
dDMyVXNlOgotICAgICAgICAgICAgc2V0SW50MzIobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSkp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBNYWNoaW5l
SW50VXNlOgotICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobG93U3RyaWN0
SW50NTIobV9ub2RlLT5jaGlsZDEoKSkpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAgICAgICBjYXNlIE5vdENlbGxVc2U6IHsK
LSAgICAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2ludDMyVmFsdWVzLmdldCht
X25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkp
IHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMih2YWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFs
dWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKLSAgICAg
ICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgICAgIHNldEludDMyKG51
bWJlck9yTm90Q2VsbFRvSW50MzIobV9ub2RlLT5jaGlsZDEoKSwgdmFsdWUudmFsdWUoKSkpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAg
ICAgICAgICB2YWx1ZSA9IG1fZG91YmxlVmFsdWVzLmdldChtX25vZGUtPmNoaWxkMSgpLm5vZGUo
KSk7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBz
ZXRJbnQzMihkb3VibGVUb0ludDMyKHZhbHVlLnZhbHVlKCkpKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gV2UnbGwg
YmFzaWNhbGx5IGp1c3QgZ2V0IGhlcmUgZm9yIGNvbnN0YW50cy4gQnV0IGl0J3MgZ29vZCB0byBo
YXZlIHRoaXMKLSAgICAgICAgICAgIC8vIGNhdGNoLWFsbCBzaW5jZSB3ZSBvZnRlbiBhZGQgbmV3
IHJlcHJlc2VudGF0aW9ucyBpbnRvIHRoZSBtaXguCi0gICAgICAgICAgICBzZXRJbnQzMigKLSAg
ICAgICAgICAgICAgICBudW1iZXJPck5vdENlbGxUb0ludDMyKAotICAgICAgICAgICAgICAgICAg
ICBtX25vZGUtPmNoaWxkMSgpLAotICAgICAgICAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbikpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBCb29sZWFuVXNlOgot
ICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuemVyb0V4dChsb3dCb29sZWFuKG1fbm9kZS0+Y2hp
bGQxKCkpLCBtX291dC5pbnQzMikpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAK
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgY29t
cGlsZUludDUyVG9WYWx1ZSgpCi0gICAgewotICAgICAgICBzZXRKU1ZhbHVlKGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDEoKSkpOwotICAgIH0KLQogICAgIHZvaWQgY29tcGlsZVVwc2lsb24oKQog
ICAgIHsKICAgICAgICAgTFZhbHVlIGRlc3RpbmF0aW9uID0gbV9waGlzLmdldChtX25vZGUtPnBo
aSgpKTsKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkpIHsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OgogICAgICAgICAgICAgbV9vdXQuc2V0KGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgZGVz
dGluYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAg
ICAgICAgICAgICBtX291dC5zZXQobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0
aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Cisg
ICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICBtX291dC5zZXQobG93SW50NTIo
bV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEJvb2xlYW5Vc2U6CkBAIC03MTksNyArNjczLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgTFZhbHVlIHNvdXJjZSA9IG1fcGhpcy5nZXQobV9ub2RlKTsKICAgICAgICAgCiAgICAgICAg
IHN3aXRjaCAobV9ub2RlLT5mbGFncygpICYgTm9kZVJlc3VsdE1hc2spIHsKLSAgICAgICAgY2Fz
ZSBOb2RlUmVzdWx0TnVtYmVyOgorICAgICAgICBjYXNlIE5vZGVSZXN1bHREb3VibGU6CiAgICAg
ICAgICAgICBzZXREb3VibGUobV9vdXQuZ2V0KHNvdXJjZSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgpAQCAtNzM5LDE3ICs2OTMsMTIwIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICB2
b2lkIGNvbXBpbGVEb3VibGVDb25zdGFudCgpCisgICAgeworICAgICAgICBzZXREb3VibGUobV9v
dXQuY29uc3REb3VibGUobV9ncmFwaC52YWx1ZU9mTnVtYmVyQ29uc3RhbnQobV9ub2RlKSkpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVJbnQ1MkNvbnN0YW50KCkKKyAgICB7CisgICAg
ICAgIGludDY0X3QgdmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG1fbm9kZSkuYXNN
YWNoaW5lSW50KCk7CisgICAgICAgIAorICAgICAgICBzZXRJbnQ1MihtX291dC5jb25zdEludDY0
KHZhbHVlIDw8IEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpKTsKKyAgICAgICAgc2V0U3RyaWN0
SW50NTIobV9vdXQuY29uc3RJbnQ2NCh2YWx1ZSkpOworICAgIH0KIAorICAgIHZvaWQgY29tcGls
ZVdlYWtKU0NvbnN0YW50KCkKKyAgICB7CisgICAgICAgIHNldEpTVmFsdWUod2Vha1BvaW50ZXIo
bV9ub2RlLT53ZWFrQ29uc3RhbnQoKSkpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVQ
aGFudG9tQXJndW1lbnRzKCkKICAgICB7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQuY29uc3RJ
bnQ2NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKSkpOwogICAgIH0KICAgICAKLSAgICB2b2lk
IGNvbXBpbGVXZWFrSlNDb25zdGFudCgpCisgICAgdm9pZCBjb21waWxlRG91YmxlUmVwKCkKICAg
ICB7Ci0gICAgICAgIHNldEpTVmFsdWUod2Vha1BvaW50ZXIobV9ub2RlLT53ZWFrQ29uc3RhbnQo
KSkpOworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAg
ICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAg
ICAgICBzZXREb3VibGUoanNWYWx1ZVRvRG91YmxlKG1fbm9kZS0+Y2hpbGQxKCksIHZhbHVlKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBj
YXNlIEludDUyUmVwdXNlOiB7CisgICAgICAgICAgICBzZXREb3VibGUoc3RyaWN0SW50NTJUb0Rv
dWJsZShsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KICAgICB9CiAgICAg
CisgICAgdm9pZCBjb21waWxlVmFsdWVSZXAoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX25v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewor
ICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hEb3VibGUobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQx
KCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHN0cmljdElu
dDUyVG9KU1ZhbHVlKGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVJbnQ1MlJlcCgpCisgICAgeworICAgICAgICBzZXRT
dHJpY3RJbnQ1MihtX291dC5zaWduRXh0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291
dC5pbnQ2NCkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVWYWx1ZVRvSW50MzIoKQor
ICAgIHsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAg
ICAgICBjYXNlIEludDMyVXNlOgorICAgICAgICAgICAgc2V0SW50MzIobG93SW50MzIobV9ub2Rl
LT5jaGlsZDEoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0ludDMy
KGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgICAgIHNl
dEludDMyKGRvdWJsZVRvSW50MzIobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIE51bWJlclVzZToKKyAg
ICAgICAgY2FzZSBOb3RDZWxsVXNlOiB7CisgICAgICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZh
bHVlID0gbV9pbnQzMlZhbHVlcy5nZXQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAg
ICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICAgICAgc2V0SW50MzIodmFs
dWUudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChtX25vZGUt
PmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKKyAg
ICAgICAgICAgICAgICBzZXRJbnQzMihudW1iZXJPck5vdENlbGxUb0ludDMyKG1fbm9kZS0+Y2hp
bGQxKCksIHZhbHVlLnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gV2UnbGwgYmFzaWNhbGx5IGp1c3Qg
Z2V0IGhlcmUgZm9yIGNvbnN0YW50cy4gQnV0IGl0J3MgZ29vZCB0byBoYXZlIHRoaXMKKyAgICAg
ICAgICAgIC8vIGNhdGNoLWFsbCBzaW5jZSB3ZSBvZnRlbiBhZGQgbmV3IHJlcHJlc2VudGF0aW9u
cyBpbnRvIHRoZSBtaXguCisgICAgICAgICAgICBzZXRJbnQzMigKKyAgICAgICAgICAgICAgICBu
dW1iZXJPck5vdENlbGxUb0ludDMyKAorICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxk
MSgpLAorICAgICAgICAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbikpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBCb29sZWFuVXNlOgorICAgICAgICAgICAgc2V0
SW50MzIobV9vdXQuemVyb0V4dChsb3dCb29sZWFuKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291dC5p
bnQzMikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUdldEFyZ3VtZW50
KCkKICAgICB7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBtX25vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpOwpAQCAtOTYzLDcgKzEwMjAsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6IHsKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICAgICAg
aWYgKCFtX3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0lu
dDUyKQogICAgICAgICAgICAgICAgICYmICFtX3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDIo
KSkuY291bGRCZVR5cGUoU3BlY0ludDUyKSkgewogICAgICAgICAgICAgICAgIEludDUyS2luZCBr
aW5kOwpAQCAtMTAxMyw3ICsxMDcwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAg
ICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIExWYWx1ZSBDMSA9IGxvd0RvdWJs
ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSBDMiA9IGxvd0RvdWJsZSht
X25vZGUtPmNoaWxkMigpKTsKIApAQCAtMTA2Miw3ICsxMTE5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBNYWNo
aW5lSW50VXNlOiB7CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAgICAgICAgICAgIElu
dDUyS2luZCBraW5kOwogICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dXaGljaGV2ZXJJbnQ1
MihtX25vZGUtPmNoaWxkMSgpLCBraW5kKTsKICAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0ludDUyKG1fbm9kZS0+Y2hpbGQyKCksIG9wcG9zaXRlKGtpbmQpKTsKQEAgLTEwODksNyArMTE0
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAg
ICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OiB7CiAgICAgICAgICAgICBzZXREb3VibGUoCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91Ymxl
TXVsKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQy
KCkpKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExOTIsNyArMTI0OSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNh
c2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAg
ICBzZXREb3VibGUobV9vdXQuZG91YmxlRGl2KAogICAgICAgICAgICAgICAgIGxvd0RvdWJsZSht
X25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTEyOTAsNyArMTM0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7
CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBzZXREb3VibGUoCiAg
ICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlUmVtKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgp
KSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTEzMTgsNyArMTM3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2Ug
RG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0RvdWJsZShtX25v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0RvdWJsZShtX25v
ZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIApAQCAtMTM2OCw3ICsxNDI1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAg
Y2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAg
ICAgIHNldERvdWJsZShtX291dC5kb3VibGVBYnMobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkp
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTQwOSw3ICsxNDY2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAg
ICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsK
ICAgICAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQxKCkpLmNvdWxk
QmVUeXBlKFNwZWNJbnQ1MikpIHsKICAgICAgICAgICAgICAgICBJbnQ1MktpbmQga2luZDsKICAg
ICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dXaGljaGV2ZXJJbnQ1MihtX25vZGUtPmNo
aWxkMSgpLCBraW5kKTsKQEAgLTE0MjksNyArMTQ4Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNl
OiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBzZXREb3VibGUo
bV9vdXQuZG91YmxlTmVnKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0ODksMTEgKzE1NDYsNiBAQCBwcml2YXRlOgogICAg
ICAgICBzZXRJbnQzMih2YWx1ZSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZUludDMy
VG9Eb3VibGUoKQotICAgIHsKLSAgICAgICAgc2V0RG91YmxlKGxvd0RvdWJsZShtX25vZGUtPmNo
aWxkMSgpKSk7Ci0gICAgfQotICAgIAogICAgIHZvaWQgY29tcGlsZUNoZWNrU3RydWN0dXJlKCkK
ICAgICB7CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
QEAgLTIyMDQsNyArMjI1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKGlzSW50
KHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBpbnRWYWx1ZTsKICAgICAgICAg
ICAgICAgICAgICAgc3dpdGNoIChjaGlsZDMudXNlS2luZCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJbnQ1MlJl
cFVzZToKICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNoaWxkMy51c2VLaW5kKCkgPT0gSW50MzJVc2UpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50VmFsdWUgPSBsb3dJbnQzMihjaGlsZDMpOwpAQCAtMjIzNyw3
ICsyMjg5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBkb3VibGVWYWx1ZSA9
IGxvd0RvdWJsZShjaGlsZDMpOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNDbGFtcGVkKHR5cGUpKSB7CkBAIC0zMzE5LDggKzMzNzEsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUNvbXBhcmVFcSgpCiAgICAgewogICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpCi0gICAgICAgICAgICB8fCBtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKQotICAgICAgICAgICAgfHwgbV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChEb3VibGVSZXBVc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChPYmplY3RVc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChC
b29sZWFuVXNlKQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5n
SWRlbnRVc2UpKSB7CkBAIC0zMzYyLDcgKzM0MTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CiAgICAg
ICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCks
IGtpbmQpOwogICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NTIobV9ub2RlLT5jaGls
ZDIoKSwga2luZCk7CkBAIC0zMzcwLDcgKzM0MjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoTnVtYmVyVXNlKSkgeworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoRG91YmxlUmVwVXNlKSkgewogICAgICAgICAgICAgc2V0Qm9vbGVhbigKICAgICAgICAgICAg
ICAgICBtX291dC5kb3VibGVFcXVhbChsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0Rv
dWJsZShtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDExNCw3
ICs0MTY2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2Up
KSB7CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpIHsK
ICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBs
b3dXaGljaGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBraW5kKTsKICAgICAgICAgICAgIExW
YWx1ZSByaWdodCA9IGxvd0ludDUyKG1fbm9kZS0+Y2hpbGQyKCksIGtpbmQpOwpAQCAtNDEyMiw3
ICs0MTc0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsK
KyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkpIHsKICAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5mY21wKHJlYWxDb25kaXRpb24sIGxlZnQsIHJpZ2h0
KSk7CkBAIC00Mzc5LDcgKzQ0MzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGxv
d0Jvb2xlYW4obV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAg
ICAgICAgICByZXR1cm4gbV9vdXQubm90WmVybzMyKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkp
KTsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgog
ICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmRvdWJsZU5vdEVxdWFsKGxvd0RvdWJsZShlZGdlKSwg
bV9vdXQuZG91YmxlWmVybyk7CiAgICAgICAgIGNhc2UgT2JqZWN0T3JPdGhlclVzZToKICAgICAg
ICAgICAgIHJldHVybiBtX291dC5iaXROb3QoCkBAIC00NzI1LDIxICs0Nzc3LDkgQEAgcHJpdmF0
ZToKICAgICB9CiAgICAgCiAgICAgZW51bSBJbnQ1MktpbmQgeyBTdHJpY3RJbnQ1MiwgSW50NTIg
fTsKLSAgICBMVmFsdWUgbG93SW50NTIoRWRnZSBlZGdlLCBJbnQ1MktpbmQga2luZCwgT3BlcmFu
ZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAg
IExWYWx1ZSBsb3dJbnQ1MihFZGdlIGVkZ2UsIEludDUyS2luZCBraW5kKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8
fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKLSAgICAgICAgCi0gICAgICAgIGlm
IChlZGdlLT5oYXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbV9n
cmFwaC52YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoIXZh
bHVlLmlzTWFjaGluZUludCgpKSB7Ci0gICAgICAgICAgICAgICAgdGVybWluYXRlKFVuY291bnRh
YmxlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuaW50NjRaZXJvOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaW50NjRfdCByZXN1bHQgPSB2YWx1ZS5hc01hY2hpbmVJbnQoKTsK
LSAgICAgICAgICAgIGlmIChraW5kID09IEludDUyKQotICAgICAgICAgICAgICAgIHJlc3VsdCA8
PD0gSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudDsKLSAgICAgICAgICAgIHJldHVybiBtX291dC5j
b25zdEludDY0KHJlc3VsdCk7Ci0gICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZWRn
ZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpOwogICAgICAgICAKICAgICAgICAgTG93ZXJlZE5v
ZGVWYWx1ZSB2YWx1ZTsKICAgICAgICAgCkBAIC00NzY0LDI1ICs0ODA0LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICByZXR1cm4gaW50NTJUb1N0cmljdEludDUyKHZhbHVlLnZhbHVlKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZhbHVl
ID0gbV9pbnQzMlZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2
YWx1ZSkpIHsKLSAgICAgICAgICAgIHJldHVybiBzZXRJbnQ1MldpdGhTdHJpY3RWYWx1ZSgKLSAg
ICAgICAgICAgICAgICBlZGdlLm5vZGUoKSwgbV9vdXQuc2lnbkV4dCh2YWx1ZS52YWx1ZSgpLCBt
X291dC5pbnQ2NCksIGtpbmQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBSRUxFQVNF
X0FTU0VSVCghKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiBTcGVjSW50NTIpKTsKLSAg
ICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7
Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgTFZhbHVlIGJveGVk
UmVzdWx0ID0gdmFsdWUudmFsdWUoKTsKLSAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAotICAg
ICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShib3hlZFJlc3VsdCksIGVkZ2UsIFNwZWNNYWNoaW5l
SW50LCBpc05vdEludDMyKGJveGVkUmVzdWx0KSk7Ci0gICAgICAgICAgICByZXR1cm4gc2V0SW50
NTJXaXRoU3RyaWN0VmFsdWUoCi0gICAgICAgICAgICAgICAgZWRnZS5ub2RlKCksIG1fb3V0LnNp
Z25FeHQodW5ib3hJbnQzMihib3hlZFJlc3VsdCksIG1fb3V0LmludDY0KSwga2luZCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCEobV9zdGF0ZS5mb3JOb2Rl
KGVkZ2UpLm1fdHlwZSAmIFNwZWNNYWNoaW5lSW50KSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUpOwogICAgICAgICB0ZXJtaW5hdGUoVW5j
b3VudGFibGUpOwogICAgICAgICByZXR1cm4gbV9vdXQuaW50NjRaZXJvOwogICAgIH0KQEAgLTQ5
MjIsNzEgKzQ5NDUsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fb3V0LmJvb2xlYW5G
YWxzZTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIGxvd0RvdWJsZShFZGdlIGVkZ2UsIE9wZXJh
bmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAg
ICBMVmFsdWUgbG93RG91YmxlKEVkZ2UgZWRnZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVT
RUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgaXNEb3VibGUoZWRn
ZS51c2VLaW5kKCkpKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgp
KSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFu
dChlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpIHsKLSAg
ICAgICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwotICAgICAgICAgICAgICAgIHJl
dHVybiBtX291dC5kb3VibGVaZXJvOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
IG1fb3V0LmNvbnN0RG91YmxlKHZhbHVlLmFzTnVtYmVyKCkpOwotICAgICAgICB9CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGlzRG91YmxlKGVkZ2UudXNlS2luZCgpKSk7CiAgICAgICAgIAogICAg
ICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlID0gbV9kb3VibGVWYWx1ZXMuZ2V0KGVkZ2Uubm9k
ZSgpKTsKICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHZh
bHVlLnZhbHVlKCk7CiAgICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1faW50MzJWYWx1ZXMuZ2V0
KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuaW50VG9Eb3VibGUodmFsdWUudmFsdWUoKSk7Ci0gICAg
ICAgICAgICBzZXREb3VibGUoZWRnZS5ub2RlKCksIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0
SW50NTJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUp
KQotICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDUyVG9Eb3VibGUoZWRnZSwgdmFsdWUudmFs
dWUoKSk7Ci0gICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1faW50NTJWYWx1ZXMuZ2V0KGVkZ2Uu
bm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJu
IHN0cmljdEludDUyVG9Eb3VibGUoZWRnZSwgaW50NTJUb1N0cmljdEludDUyKHZhbHVlLnZhbHVl
KCkpKTsKLSAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdl
Lm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgTFZh
bHVlIGJveGVkUmVzdWx0ID0gdmFsdWUudmFsdWUoKTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgaW50Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRG91YmxlIHVu
Ym94aW5nIGludCBjYXNlIikpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgZG91YmxlQ2FzZSA9
IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRG91YmxlIHVuYm94aW5nIGRvdWJsZSBjYXNlIikpOwot
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291
dCwgKCJEb3VibGUgdW5ib3hpbmcgY29udGludWF0aW9uIikpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBtX291dC5icmFuY2goaXNOb3RJbnQzMihib3hlZFJlc3VsdCksIHVuc3VyZShkb3Vi
bGVDYXNlKSwgdW5zdXJlKGludENhc2UpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpbnRDYXNlLCBkb3VibGVDYXNlKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaW50VG9Eb3VibGUgPSBt
X291dC5hbmNob3IoCi0gICAgICAgICAgICAgICAgbV9vdXQuaW50VG9Eb3VibGUodW5ib3hJbnQz
Mihib3hlZFJlc3VsdCkpKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgY29u
dGludWF0aW9uKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0g
ICAgICAgICAgICAgICAganNWYWx1ZVZhbHVlKGJveGVkUmVzdWx0KSwgZWRnZSwgU3BlY0Z1bGxO
dW1iZXIsIGlzQ2VsbE9yTWlzYyhib3hlZFJlc3VsdCkpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBWYWx1ZUZyb21CbG9jayB1bmJveGVkRG91YmxlID0gbV9vdXQuYW5jaG9yKHVuYm94RG91
YmxlKGJveGVkUmVzdWx0KSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9v
dXQucGhpKG1fb3V0LmRvdWJsZVR5cGUsIGludFRvRG91YmxlLCB1bmJveGVkRG91YmxlKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgc2V0RG91YmxlKGVkZ2Uubm9kZSgpLCByZXN1bHQpOwot
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIShtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgU3BlY0Z1bGxO
dW1iZXIpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5t
X3R5cGUpOwogICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwogICAgICAgICByZXR1cm4g
bV9vdXQuZG91YmxlWmVybzsKICAgICB9CkBAIC00OTk0LDYgKzQ5NjEsOCBAQCBwcml2YXRlOgog
ICAgIExWYWx1ZSBsb3dKU1ZhbHVlKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBt
b2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVz
ZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzRG91Ymxl
KGVkZ2UudXNlS2luZCgpKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgp
ICE9IEludDUyUmVwVXNlKTsKICAgICAgICAgCiAgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFu
dCgpKQogICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2Rl
KG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpKSk7CkBAIC01MDA5LDE0ICs0
OTc4LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9zdHJpY3RJbnQ1MlZhbHVlcy5nZXQoZWRnZS5u
b2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4g
c3RyaWN0SW50NTJUb0pTVmFsdWUodmFsdWUudmFsdWUoKSk7Ci0gICAgICAgIAotICAgICAgICB2
YWx1ZSA9IG1faW50NTJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFs
aWQodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDUyVG9KU1ZhbHVlKGludDUy
VG9TdHJpY3RJbnQ1Mih2YWx1ZS52YWx1ZSgpKSk7Ci0gICAgICAgIAogICAgICAgICB2YWx1ZSA9
IG1fYm9vbGVhblZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2
YWx1ZSkpIHsKICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBib3hCb29sZWFuKHZhbHVlLnZh
bHVlKCkpOwpAQCAtNTAyNCwxMyArNDk4NSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1fZG91Ymxl
VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewot
ICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGJveERvdWJsZSh2YWx1ZS52YWx1ZSgpKTsKLSAg
ICAgICAgICAgIHNldEpTVmFsdWUoZWRnZS5ub2RlKCksIHJlc3VsdCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC01MDkwLDIzICs1
MDQ0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShtX291dC5pbnQ2NCwg
cmVzdWx0cyk7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBzZXRJbnQ1MldpdGhTdHJpY3RWYWx1
ZShOb2RlKiBub2RlLCBMVmFsdWUgdmFsdWUsIEludDUyS2luZCBraW5kKQotICAgIHsKLSAgICAg
ICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgIGNhc2UgU3RyaWN0SW50NTI6Ci0gICAgICAgICAg
ICBzZXRTdHJpY3RJbnQ1Mihub2RlLCB2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7
Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBJbnQ1MjoKLSAgICAgICAgICAgIHZhbHVlID0g
c3RyaWN0SW50NTJUb0ludDUyKHZhbHVlKTsKLSAgICAgICAgICAgIHNldEludDUyKG5vZGUsIHZh
bHVlKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotCiAgICAgTFZhbHVlIHN0cmljdEludDUyVG9JbnQ1MihMVmFsdWUgdmFsdWUpCiAgICAg
ewogICAgICAgICByZXR1cm4gbV9vdXQuc2hsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OmludDUyU2hpZnRBbW91bnQpKTsKQEAgLTUxMzgsNiArNTA3NSw3IEBAIHByaXZhdGU6CiAg
ICAgewogICAgICAgICByZXR1cm4gbV9vdXQudGVzdE5vblplcm82NChqc1ZhbHVlLCBtX3RhZ1R5
cGVOdW1iZXIpOwogICAgIH0KKyAgICAKICAgICBMVmFsdWUgdW5ib3hEb3VibGUoTFZhbHVlIGpz
VmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuYml0Q2FzdChtX291dC5hZGQoanNW
YWx1ZSwgbV90YWdUeXBlTnVtYmVyKSwgbV9vdXQuZG91YmxlVHlwZSk7CkBAIC01MTQ2LDYgKzUw
ODQsMzkgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5zdWIobV9vdXQu
Yml0Q2FzdChkb3VibGVWYWx1ZSwgbV9vdXQuaW50NjQpLCBtX3RhZ1R5cGVOdW1iZXIpOwogICAg
IH0KKyAgICBMVmFsdWUganNWYWx1ZVRvRG91YmxlKEVkZ2UgZWRnZSwgTFZhbHVlIGJveGVkVmFs
dWUpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBpbnRDYXNlID0gRlRMX05FV19CTE9DSyht
X291dCwgKCJEb3VibGVSZXAgdW5ib3hpbmcgaW50IGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Js
b2NrIGRvdWJsZUNhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZVJlcCB1bmJveGlu
ZyBkb3VibGUgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJEb3VibGVSZXAgdW5ib3hpbmcgY29udGludWF0aW9uIikpOwor
ICAgICAgICAgICAgCisgICAgICAgIExWYWx1ZSBpc05vdEludDMyOworICAgICAgICBpZiAoIW1f
aW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0ludDMyKSkKKyAgICAgICAgICAg
IGlzTm90SW50MzIgPSBtX291dC5ib29sZWFuRmFsc2U7CisgICAgICAgIGVsc2UgaWYgKCFtX2lu
dGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UsIH5TcGVjSW50MzIpKQorICAgICAgICAgICAg
aXNOb3RJbnQzMiA9IG1fb3V0LmJvb2xlYW5UcnVlOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBpc05vdEludDMyID0gdGhpcy0+aXNOb3RJbnQzMihib3hlZFZhbHVlKTsKKyAgICAgICAgbV9v
dXQuYnJhbmNoKGlzTm90SW50MzIsIHVuc3VyZShkb3VibGVDYXNlKSwgdW5zdXJlKGludENhc2Up
KTsKKyAgICAgICAgICAgIAorICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFw
cGVuZFRvKGludENhc2UsIGRvdWJsZUNhc2UpOworICAgICAgICAgICAgCisgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGludFRvRG91YmxlID0gbV9vdXQuYW5jaG9yKAorICAgICAgICAgICAgbV9vdXQu
aW50VG9Eb3VibGUodW5ib3hJbnQzMihib3hlZFZhbHVlKSkpOworICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oZG91
YmxlQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAgICBGVExfVFlQRV9D
SEVDSygKKyAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShib3hlZFZhbHVlKSwgZWRnZSwgU3BlY0J5
dGVjb2RlTnVtYmVyLCBpc0NlbGxPck1pc2MoYm94ZWRWYWx1ZSkpOworICAgICAgICAgICAgCisg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIHVuYm94ZWREb3VibGUgPSBtX291dC5hbmNob3IodW5ib3hE
b3VibGUoYm94ZWRWYWx1ZSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Cisg
ICAgICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4
dCk7CisgICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShtX291dC5kb3VibGVU
eXBlLCBpbnRUb0RvdWJsZSwgdW5ib3hlZERvdWJsZSk7CisgICAgfQogICAgIAogICAgIExWYWx1
ZSBpc051bWJlcihMVmFsdWUganNWYWx1ZSkKICAgICB7CkBAIC01MjE3LDggKzUxODgsOSBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBLbm93bkludDMyVXNlOgotICAgICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgog
ICAgICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToK
KyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAgIEFTU0VSVCghbV9pbnRlcnBy
ZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBJbnQzMlVzZToKQEAgLTUyNTEsMTQgKzUyMjMsMTEgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmlu
Z09yU3RyaW5nT2JqZWN0KGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
UmVhbE51bWJlclVzZToKLSAgICAgICAgICAgIHNwZWN1bGF0ZVJlYWxOdW1iZXIoZWRnZSk7Ci0g
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBz
cGVjdWxhdGVOdW1iZXIoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBN
YWNoaW5lSW50VXNlOgotICAgICAgICAgICAgc3BlY3VsYXRlTWFjaGluZUludChlZGdlKTsKKyAg
ICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlRG91Ymxl
UmVhbChlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6
CiAgICAgICAgICAgICBzcGVjdWxhdGVCb29sZWFuKGVkZ2UpOwpAQCAtNTUyMCwxNCArNTQ4OSwx
MSBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgc3BlY3VsYXRlTnVtYmVyKEVkZ2UgZWRnZSkK
ICAgICB7Ci0gICAgICAgIC8vIERvIGFuIGVhcmx5IHJldHVybiBoZXJlIGJlY2F1c2UgbG93RG91
YmxlKCkgY2FuIGNyZWF0ZSBhIGxvdCBvZiBjb250cm9sIGZsb3cuCi0gICAgICAgIGlmICghbV9p
bnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgCi0gICAgICAgIGxvd0RvdWJsZShlZGdlKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0g
bG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBGVExf
VFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIs
IGlzTm90TnVtYmVyKHZhbHVlKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc3BlY3VsYXRlUmVh
bE51bWJlcihFZGdlIGVkZ2UpCisgICAgdm9pZCBzcGVjdWxhdGVEb3VibGVSZWFsKEVkZ2UgZWRn
ZSkKICAgICB7CiAgICAgICAgIC8vIERvIGFuIGVhcmx5IHJldHVybiBoZXJlIGJlY2F1c2UgbG93
RG91YmxlKCkgY2FuIGNyZWF0ZSBhIGxvdCBvZiBjb250cm9sIGZsb3cuCiAgICAgICAgIGlmICgh
bV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSkKQEAgLTU1MzUsMTkgKzU1MDEsMTAg
QEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0RvdWJsZShl
ZGdlKTsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBkb3VibGVWYWx1ZSh2
YWx1ZSksIGVkZ2UsIFNwZWNGdWxsUmVhbE51bWJlciwKKyAgICAgICAgICAgIGRvdWJsZVZhbHVl
KHZhbHVlKSwgZWRnZSwgU3BlY0RvdWJsZVJlYWwsCiAgICAgICAgICAgICBtX291dC5kb3VibGVO
b3RFcXVhbE9yVW5vcmRlcmVkKHZhbHVlLCB2YWx1ZSkpOwogICAgIH0KICAgICAKLSAgICB2b2lk
IHNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSBlZGdlKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2lu
dGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKLSAgICAgICAgSW50NTJLaW5kIGtpbmQ7Ci0gICAgICAgIGxvd1doaWNoZXZlckludDUy
KGVkZ2UsIGtpbmQpOwotICAgIH0KLSAgICAKICAgICB2b2lkIHNwZWN1bGF0ZUJvb2xlYW4oRWRn
ZSBlZGdlKQogICAgIHsKICAgICAgICAgbG93Qm9vbGVhbihlZGdlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGb3JtYXQuY3BwCShyZXZpc2lvbiAxNjcxODIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCB2b2lkIHJlYm94QWNjb3JkaW5nVG9Gb3JtYXQoCiAg
ICAgY2FzZSBWYWx1ZUZvcm1hdERvdWJsZTogewogICAgICAgICBqaXQubW92ZURvdWJsZVRvNjQo
RlBSSW5mbzo6ZnBSZWdUMCwgc2NyYXRjaDEpOwogICAgICAgICBqaXQubW92ZTY0VG9Eb3VibGUo
dmFsdWUsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICBqaXQuc2FuaXRpemVEb3VibGUoRlBS
SW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgIGppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwg
dmFsdWUpOwogICAgICAgICBqaXQubW92ZTY0VG9Eb3VibGUoc2NyYXRjaDEsIEZQUkluZm86OmZw
UmVnVDApOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDE2NzE4MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NiArNTQsMTQgQEAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIEFzc2VtYgogICAg
IHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQogCit2b2lkIEFzc2VtYmx5SGVscGVy
czo6c2FuaXRpemVEb3VibGUoRlBSUmVnIGZwcikKK3sKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBub3ROYU4gPSBicmFuY2hEb3VibGUoRG91YmxlRXF1YWwsIGZwciwgZnByKTsKKyAgICBzdGF0
aWMgY29uc3QgZG91YmxlIE5hTiA9IFFOYU47CisgICAgbV9sb2FkRG91YmxlKCZOYU4sIGZwcik7
CisgICAgbGluayh0aGlzKTsKK30KKwogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKIHZvaWQg
QXNzZW1ibHlIZWxwZXJzOjpzZXRTYW1wbGluZ0ZsYWcoaW50MzJfdCBmbGFnKQogewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAx
NjcxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MTcsNiArNDE3LDggQEAgcHVibGljOgogICAgIHZvaWQgaml0QXNz
ZXJ0VGFnc0luUGxhY2UoKSB7IH0KICAgICB2b2lkIGppdEFzc2VydEFyZ3VtZW50Q291bnRTYW5l
KCkgeyB9CiAjZW5kaWYKKyAgICAKKyAgICB2b2lkIHNhbml0aXplRG91YmxlKEZQUlJlZyBmcHIp
OwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBjb252ZXJ0IGJldHdlZW4gZG91YmxlcywgYW5kIGRv
dWJsZXMgYm94ZWQgYW5kIEpTVmFsdWVzLgogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC00MzUsNiAr
NDM3LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZwcjsKICAgICB9CiAgICAgCisgICAg
dm9pZCBib3hEb3VibGUoRlBSUmVnIGZwciwgSlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7CisgICAg
ICAgIGJveERvdWJsZShmcHIsIHJlZ3MuZ3ByKCkpOworICAgIH0KKyAgICAKICAgICAvLyBIZXJl
IGFyZSBwb3NzaWJsZSBhcnJhbmdlbWVudHMgb2Ygc291cmNlLCB0YXJnZXQsIHNjcmF0Y2g6CiAg
ICAgLy8gLSBzb3VyY2UsIHRhcmdldCwgc2NyYXRjaCBjYW4gYWxsIGJlIHNlcGFyYXRlIHJlZ2lz
dGVycy4KICAgICAvLyAtIHNvdXJjZSBhbmQgdGFyZ2V0IGNhbiBiZSB0aGUgc2FtZSBidXQgc2Ny
YXRjaCBpcyBzZXBhcmF0ZS4KQEAgLTQ2Nyw2ICs0NzQsMTEgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgbW92ZUludHNUb0RvdWJsZShwYXlsb2FkR1BSLCB0YWdHUFIsIGZwciwgc2NyYXRjaEZQ
Uik7CiAgICAgfQorICAgIAorICAgIHZvaWQgYm94RG91YmxlKEZQUlJlZyBmcHIsIEpTVmFsdWVS
ZWdzIHJlZ3MpCisgICAgeworICAgICAgICBib3hEb3VibGUoZnByLCByZWdzLnRhZ0dQUigpLCBy
ZWdzLnBheWxvYWRHUFIoKSk7CisgICAgfQogI2VuZGlmCiAgICAgCiAgICAgZW51bSBFeGNlcHRp
b25DaGVja0tpbmQgeyBOb3JtYWxFeGNlcHRpb25DaGVjaywgSW52ZXJ0ZWRFeGNlcHRpb25DaGVj
ayB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229252</attachid>
            <date>2014-04-13 17:22:24 -0700</date>
            <delta_ts>2014-04-13 18:29:31 -0700</delta_ts>
            <desc>almost there</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>143965</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3MjA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MyBA
QAorMjAxNC0wNC0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBJUiBzaG91bGQga2VlcCB0aGUgZGF0YSBmbG93IG9mIGRvdWJsZXMgYW5kIGludDUyJ3Mg
c2VwYXJhdGUgZnJvbSB0aGUgZGF0YSBmbG93IG9mIEpTVmFsdWUncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBXb3JrIGluIHByb2dyZXNz
LgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OnNldENvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0VmFsdWUuaDoKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkNTRVBoYXNlOjpjb25zdGFudENTRSk6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhh
c2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6aW50MzJU
b0RvdWJsZUNTRSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJl
cml6ZSk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6Zml4dXBTZXRMb2NhbHNJbkJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpvYnNlcnZlVXNlS2luZE9uTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
Zml4SW50RWRnZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRvTWFr
ZUludGVnZXJBZGQpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmluamVjdFR5cGVD
b252ZXJzaW9uc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnRyeVRv
UmVsYXhSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6aW5q
ZWN0VHlwZUNvbnZlcnNpb25zRm9yRWRnZSk6CisgICAgICAgICogZGZnL0RGR0ZsdXNoRm9ybWF0
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6cmVzdWx0Rm9yKToKKyAgICAgICAgKEpTQzo6REZHOjp1
c2VLaW5kRm9yKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OnNldFJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ29uc3RhbnQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb0NvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpoYXNJbnQ1MlJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6aGFzRG91YmxlUmVzdWx0KToKKyAgICAgICAgKiBkZmcvREZHTm9kZUZsYWdzLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpkdW1wTm9kZUZsYWdzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZUZs
YWdzLmg6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGls
ZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAg
ICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTYWZlVG9FeGVj
dXRlRWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50U2F2ZVBsYW5Gb3JHUFIpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpzaWxlbnRTYXZlUGxhbkZvckZQUik6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2gpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0dlbmVyYXRlZFR5cGVGb3JU
b0ludDMyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlVG9JbnQzMik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
RmxvYXRUeXBlZEFycmF5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUFkZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aFN1Yik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE11bCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aERpdik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVNYWNo
aW5lSW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3Bl
Y3VsYXRlTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlUmVhbE51bWJlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmJveERvdWJs
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmpzVmFsdWVSZXN1bHQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUludDUyT3BlcmFuZDo6U3BlY3VsYXRlSW50NTJP
cGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQ6
OlNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRlV2hpY2hldmVySW50NTJPcGVyYW5kOjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZURvdWJsZU9wZXJhbmQ6OlNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ1Mik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKToK
KyAgICAgICAgKEpTQzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb252ZXJ0VG9Eb3VibGUpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHVXNlS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAg
ICAqIGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6
CisgICAgICAgIChKU0M6OkRGRzo6c2hvdWxkTm90SGF2ZVR5cGVDaGVjayk6CisgICAgICAgIChK
U0M6OkRGRzo6aXNOdW1lcmljYWwpOgorICAgICAgICAoSlNDOjpERkc6OmlzRG91YmxlKToKKyAg
ICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRl
Ojp2YWxpZGF0ZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y3JlYXRlUGhpVmFyaWFi
bGVzKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVXBzaWxvbik6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQaGkpOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlRG91YmxlQ29uc3RhbnQpOgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlSW50NTJDb25zdGFudCk6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVXZWFrSlNDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVEb3VibGVSZXApOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVmFsdWVSZXApOgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlSW50NTJSZXApOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVmFsdWVUb0ludDMyKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoQWRkT3JTdWIpOgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJpdGhNdWwpOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJpdGhEaXYpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJpdGhNb2QpOgorICAgICAgICAoSlNDOjpGVEw6
Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJpdGhNaW5Pck1heCk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcml0aEFicyk6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcml0aE5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVDb21wYXJlRXEpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpM
b3dlckRGR1RvTExWTTo6Y29tcGFyZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OmJvb2xpZnkpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dJbnQ1
Mik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd0RvdWJsZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd0pTVmFsdWUpOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjpqc1ZhbHVlVG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjpzcGVjdWxhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpzcGVjdWxhdGVEb3VibGVSZWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUludDUyVG9WYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVJbnQzMlRvRG91YmxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c2V0SW50NTJXaXRoU3RyaWN0VmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVSZWFs
TnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3Bl
Y3VsYXRlTWFjaGluZUludCk6IERlbGV0ZWQuCisgICAgICAgICogZnRsL0ZUTFZhbHVlRm9ybWF0
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpyZWJveEFjY29yZGluZ1RvRm9ybWF0KToKKyAgICAg
ICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpzYW5pdGl6ZURvdWJsZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJveERvdWJsZSk6CisKIDIwMTQtMDQtMDgg
IE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXdyaXRlIEZ1bmN0
aW9uLmJpbmQgYXMgYSBidWlsdGluCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3
LDYgQEAKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNp
bmNsdWRlICJERkdKSVRDb2RlLmgiCi0jaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgIkRG
R1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsNiBAQAogI2luY2x1ZGUgIkRGR0Nv
bW1vbi5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbkRhdGEuaCIKICNpbmNsdWRlICJERkdFeGl0UHJv
ZmlsZS5oIgotI2luY2x1ZGUgIkRGR01pbmlmaWVkR3JhcGguaCIKLSNpbmNsdWRlICJERkdPU1JF
bnRyeS5oIgotI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKLSNpbmNsdWRlICJERkdWYXJpYWJsZUV2
ZW50U3RyZWFtLmgiCiAjaW5jbHVkZSAiRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiRXZhbENvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGlvbkNvdW50ZXIuaCIK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlci5oCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw5
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBzZXRDb25zdGFudChOb2RlKiBub2RlLCBKU1Zh
bHVlIHZhbHVlKQogICAgIHsKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgdmFs
dWUpOworICAgICAgICBBYnN0cmFjdFZhbHVlJiBhYnN0cmFjdFZhbHVlID0gZm9yTm9kZShub2Rl
KTsKKyAgICAgICAgYWJzdHJhY3RWYWx1ZS5zZXQobV9ncmFwaCwgdmFsdWUpOworICAgICAgICBh
YnN0cmFjdFZhbHVlLmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihub2RlKTsKICAgICAgICAgbV9z
dGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2
ICsxMjYsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
CiAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgIGNh
c2UgRG91YmxlQ29uc3RhbnQ6CisgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgIGNhc2UgV2Vh
a0pTQ29uc3RhbnQ6CiAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOiB7CiAgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobm9kZSkpOwpA
QCAtMzA3LDM5ICszMDksMzkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50MzJUb0Rv
dWJsZTogeworICAgIGNhc2UgRG91YmxlUmVwOiB7CiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBm
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGQgJiYgY2hp
bGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgSlNWYWx1ZShK
U1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgY2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAg
c2V0Q29uc3RhbnQobm9kZSwgY2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5t
X3R5cGUpKQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGVSZWFs
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNE
b3VibGUpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkubV90eXBlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5maXhUeXBlRm9yUmVwcmVzZW50
YXRpb24obm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBJ
bnQ1MlRvRG91YmxlOiB7CisgICAgY2FzZSBJbnQ1MlJlcDogeworICAgICAgICBSRUxFQVNFX0FT
U0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSW50MzJVc2UpOworICAgICAgICAKICAg
ICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0g
ICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgIGlmIChjaGls
ZCAmJiBjaGlsZC5pc0ludDMyKCkpIHsKICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNo
aWxkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgCisgICAgICAgIGZvck5vZGUobm9kZSku
c2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAg
IGNhc2UgSW50NTJUb1ZhbHVlOiB7Ci0gICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1i
ZXIoKSkgewotICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQpOworICAgIGNhc2Ug
VmFsdWVSZXA6IHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLnZhbHVlKCk7CisgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgc2V0Q29uc3Rh
bnQobm9kZSwgdmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAg
U3BlY3VsYXRlZFR5cGUgdHlwZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZTsKLSAg
ICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NTIpCi0gICAgICAgICAgICB0eXBlID0gKHR5cGUgfCBT
cGVjSW50MzIgfCBTcGVjSW50NTJBc0RvdWJsZSkgJiB+U3BlY0ludDUyOwotICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUodHlwZSk7CisgICAgICAgIAorICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldFR5cGUoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKTsKKyAgICAgICAgZm9yTm9k
ZShub2RlKS5maXhUeXBlRm9yUmVwcmVzZW50YXRpb24obm9kZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICAgICAgCkBAIC0zNzAsNyArMzcyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3co
bm9kZS0+YXJpdGhNb2RlKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1
ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAg
ICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYg
bGVmdC5pc01hY2hpbmVJbnQoKSAmJiByaWdodC5pc01hY2hpbmVJbnQoKSkgewogICAgICAgICAg
ICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIobGVmdC5hc01hY2hpbmVJbnQoKSArIHJp
Z2h0LmFzTWFjaGluZUludCgpKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmlzTWFjaGlu
ZUludCgpKSB7CkBAIC0zODMsNyArMzg1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIHx8ICFmb3JOb2RlKG5vZGUtPmNoaWxkMigp
KS5pc1R5cGUoU3BlY0ludDMyKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRy
dWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAg
ICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxl
ZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgc2V0
Q29uc3RhbnQobm9kZSwganNOdW1iZXIobGVmdC5hc051bWJlcigpICsgcmlnaHQuYXNOdW1iZXIo
KSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDI2LDcgKzQyOCw3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGlmIChzaG91bGRD
aGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSkKICAgICAgICAgICAgICAgICBub2RlLT5z
ZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWFjaGlu
ZUludFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0
ICYmIHJpZ2h0ICYmIGxlZnQuaXNNYWNoaW5lSW50KCkgJiYgcmlnaHQuaXNNYWNoaW5lSW50KCkp
IHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGxlZnQuYXNNYWNo
aW5lSW50KCkgLSByaWdodC5hc01hY2hpbmVJbnQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdC5pc01hY2hpbmVJbnQoKSB8fCAhc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1v
ZGUoKSkpIHsKQEAgLTQzOSw3ICs0NDEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hpbGQyKCkp
LmlzVHlwZShTcGVjSW50MzIpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1
ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAg
IGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVm
dC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgICAgICBzZXRD
b25zdGFudChub2RlLCBqc051bWJlcihsZWZ0LmFzTnVtYmVyKCkgLSByaWdodC5hc051bWJlcigp
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00NzcsNyArNDc5LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNob3VsZENo
ZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNl
dENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5l
SW50VXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgaWYgKGNoaWxk
ICYmIGNoaWxkLmlzTWFjaGluZUludCgpKSB7CiAgICAgICAgICAgICAgICAgZG91YmxlIGRvdWJs
ZVJlc3VsdDsKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9k
ZS0+YXJpdGhNb2RlKCkpKQpAQCAtNDk2LDcgKzQ5OCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja05lZ2F0aXZl
WmVybyhub2RlLT5hcml0aE1vZGUoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhp
dCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVzZToKKyAg
ICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQu
aXNOdW1iZXIoKSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVy
KC1jaGlsZC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01MzMsNyAr
NTM1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKQogICAgICAg
ICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAg
ICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc01hY2hpbmVJbnQoKSAmJiByaWdo
dC5pc01hY2hpbmVJbnQoKSkgewogICAgICAgICAgICAgICAgIGRvdWJsZSBkb3VibGVSZXN1bHQg
PSBsZWZ0LmFzTnVtYmVyKCkgKiByaWdodC5hc051bWJlcigpOwogICAgICAgICAgICAgICAgIGlm
ICghc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhNb2RlKCkpKQpAQCAtNTQ3LDcg
KzU0OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NTIpOwogICAgICAgICAgICAgbm9k
ZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51
bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVm
dCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgewogICAg
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGxlZnQuYXNOdW1iZXIoKSAq
IHJpZ2h0LmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTU4NSw3ICs1
ODcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIG5vZGUt
PnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1i
ZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQg
JiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKICAgICAg
ICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihsZWZ0LmFzTnVtYmVyKCkgLyBy
aWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC02MTksNyArNjIx
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBub2RlLT5z
ZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVtYmVy
VXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYm
IHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CiAgICAgICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoZm1vZChsZWZ0LmFzTnVtYmVyKCks
IHJpZ2h0LmFzTnVtYmVyKCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC02NDUsNyAr
NjQ3LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVt
YmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0
ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CiAgICAg
ICAgICAgICAgICAgZG91YmxlIGEgPSBsZWZ0LmFzTnVtYmVyKCk7CiAgICAgICAgICAgICAgICAg
ZG91YmxlIGIgPSByaWdodC5hc051bWJlcigpOwpAQCAtNjczLDcgKzY3NSw3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVl
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAg
Y2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0
LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgICAgIGRvdWJs
ZSBhID0gbGVmdC5hc051bWJlcigpOwogICAgICAgICAgICAgICAgIGRvdWJsZSBiID0gcmlnaHQu
YXNOdW1iZXIoKTsKQEAgLTcwMyw3ICs3MDUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0lu
dDMyKTsKICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OgogICAgICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKICAgICAgICAg
ICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihjaGlsZC5hc051bWJlcigpKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03NjksNyArNzcxLDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAg
ICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAg
ICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAg
ICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlz
aW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTY3LDggKzY3LDYgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpz
ZXQoR3JhcGgmIGdyYXBoLCBKUwogICAgIH0KICAgICAKICAgICBtX3R5cGUgPSBzcGVjdWxhdGlv
bkZyb21WYWx1ZSh2YWx1ZSk7Ci0gICAgaWYgKG1fdHlwZSA9PSBTcGVjSW50NTJBc0RvdWJsZSkK
LSAgICAgICAgbV90eXBlID0gU3BlY0ludDUyOwogICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAK
ICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC04NSw2ICs4MywzMyBAQCB2b2lkIEFic3RyYWN0
VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIFN0CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogfQog
Cit2b2lkIEFic3RyYWN0VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihOb2RlKiBub2Rl
KQoreworICAgIGlmIChub2RlLT5oYXNEb3VibGVSZXN1bHQoKSkgeworICAgICAgICBpZiAobV90
eXBlICYgU3BlY01hY2hpbmVJbnQpIHsKKyAgICAgICAgICAgIG1fdHlwZSAmPSB+U3BlY01hY2hp
bmVJbnQ7CisgICAgICAgICAgICBtX3R5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7CisgICAgICAg
IH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3R5cGUgJiB+U3BlY0RvdWJsZSkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChub2RlLT5oYXNJbnQ1MlJlc3VsdCgp
KSB7CisgICAgICAgIGlmIChtX3R5cGUgJiBTcGVjSW50NTJBc0RvdWJsZSkgeworICAgICAgICAg
ICAgbV90eXBlICY9IH5TcGVjSW50NTJBc0RvdWJsZTsKKyAgICAgICAgICAgIG1fdHlwZSB8PSBT
cGVjSW50NTI7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3R5cGUgJiB+
U3BlY01hY2hpbmVJbnQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAo
bV90eXBlICYgU3BlY0ludDUyKSB7CisgICAgICAgIG1fdHlwZSAmPSB+U3BlY0ludDUyOworICAg
ICAgICBtX3R5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7CisgICAgfQorICAgIFJFTEVBU0VfQVNT
RVJUKCEobV90eXBlICYgflNwZWNIZWFwVG9wKSk7Cit9CisKIEZpbHRyYXRpb25SZXN1bHQgQWJz
dHJhY3RWYWx1ZTo6ZmlsdGVyKEdyYXBoJiBncmFwaCwgY29uc3QgU3RydWN0dXJlU2V0JiBvdGhl
cikKIHsKICAgICBpZiAoaXNDbGVhcigpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOSw2ICszOSw3IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKIGNsYXNzIEdyYXBoOworc3RydWN0IE5vZGU7CiAKIHN0cnVjdCBBYnN0cmFjdFZh
bHVlIHsKICAgICBBYnN0cmFjdFZhbHVlKCkKQEAgLTEyOSw2ICsxMzAsOCBAQCBzdHJ1Y3QgQWJz
dHJhY3RWYWx1ZSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCisg
ICAgdm9pZCBmaXhUeXBlRm9yUmVwcmVzZW50YXRpb24oTm9kZSopOworICAgIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX3R5cGUgPT0gb3RoZXIubV90eXBlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSwy
OSArMTYxLDExIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAKLSAg
ICBOb2RlKiBpbnQzMlRvRG91YmxlQ1NFKE5vZGUqIG5vZGUpCi0gICAgewotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgewotICAgICAgICAgICAgTm9kZSog
b3RoZXJOb2RlID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwotICAgICAgICAgICAgaWYgKG90aGVy
Tm9kZSA9PSBub2RlLT5jaGlsZDEoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgICAgIHN3aXRjaCAob3RoZXJOb2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIEludDMy
VG9Eb3VibGU6Ci0gICAgICAgICAgICAgICAgaWYgKG90aGVyTm9kZS0+Y2hpbGQxKCkuc2FuaXRp
emVkKCkgPT0gbm9kZS0+Y2hpbGQxKCkuc2FuaXRpemVkKCkpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBvdGhlck5vZGU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICAKICAgICBOb2RlKiBjb25zdGFudENTRShO
b2RlKiBub2RlKQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZW5kSW5kZXhGb3JQ
dXJlQ1NFKCk7IGktLTspIHsKICAgICAgICAgICAgIE5vZGUqIG90aGVyTm9kZSA9IG1fY3VycmVu
dEJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgIGlmIChvdGhlck5vZGUtPm9wKCkgIT0gSlNDb25z
dGFudCkKKyAgICAgICAgICAgIGlmIChvdGhlck5vZGUtPm9wKCkgIT0gbm9kZS0+b3AoKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG90
aGVyTm9kZS0+Y29uc3RhbnROdW1iZXIoKSAhPSBub2RlLT5jb25zdGFudE51bWJlcigpKQpAQCAt
MTE0OCw4ICsxMTMwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb21wYXJlRXFDb25zdGFu
dDoKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgICAgIGNhc2UgTWFrZVJvcGU6Ci0g
ICAgICAgIGNhc2UgSW50NTJUb0RvdWJsZToKLSAgICAgICAgY2FzZSBJbnQ1MlRvVmFsdWU6Cisg
ICAgICAgIGNhc2UgRG91YmxlUmVwOgorICAgICAgICBjYXNlIFZhbHVlUmVwOgorICAgICAgICBj
YXNlIEludDUyUmVwOgogICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlv
bikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KHB1
cmVDU0Uobm9kZSkpOwpAQCAtMTE3NywxMiArMTE2MCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgSW50MzJUb0Rv
dWJsZToKLSAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCi0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBzZXRSZXBsYWNlbWVudChpbnQzMlRvRG91
YmxlQ1NFKG5vZGUpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgR2V0Q2FsbGVlOgogICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5h
dGlvbikKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyNjgsNiArMTI0NSw4IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6Cisg
ICAgICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoK
ICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHN0cmFuZ2UsIGJ1dCBuZWNlc3Nh
cnkuIFNvbWUgcGhhc2VzIHdpbGwgY29udmVydCBub2RlcyB0byBjb25zdGFudHMsCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDE2
NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIkRGR0NvbW1vbi5oIgotI2luY2x1ZGUgIkRGR05vZGUuaCIKICNpbmNsdWRlICJF
eGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJJbnRyaW5z
aWMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShy
ZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgCiAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAg
ICAgY2FzZSBKU0NvbnN0YW50OgorICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAgY2FzZSBJ
bnQ1MkNvbnN0YW50OgogICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgY2FzZSBJZGVudGl0
eToKICAgICBjYXNlIFBoYW50b206CkBAIC0xMjMsMTUgKzEyNSwxNSBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBJc051bWJlcjoKICAgICBjYXNl
IElzU3RyaW5nOgogICAgIGNhc2UgTG9naWNhbE5vdDoKLSAgICBjYXNlIEludDMyVG9Eb3VibGU6
CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKLSAgICBjYXNlIEludDUyVG9Eb3VibGU6
Ci0gICAgY2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgogICAgIGNh
c2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgogICAg
IGNhc2UgRG91YmxlQXNJbnQzMjoKICAgICBjYXNlIENoZWNrOgorICAgIGNhc2UgRG91YmxlUmVw
OgorICAgIGNhc2UgVmFsdWVSZXA6CisgICAgY2FzZSBJbnQ1MlJlcDoKICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKICAgICBjYXNlIE1vdkhpbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
Myw4ICsxMjMsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9J
ZGVudGl0eSgpOwogICAgICAgICAgICAgZWxzZSBpZiAobm9kZUNhblNwZWN1bGF0ZUludDMyKG5v
ZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9k
ZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkRvT3ZlcmZs
b3cpOworICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKQEAgLTEzNSwxMCArMTM3LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVt
YmVyRXhwZWN0aW5nRGVmaW5lZChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkp
OwogICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKEFyaXRoQWRkKTsKICAgICAgICAgICAgICAg
ICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCk7
CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0xNzcs
OCArMTgwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcml0aFN1YjogewogICAgICAgICAg
ICAgaWYgKGF0dGVtcHRUb01ha2VJbnRlZ2VyQWRkKG5vZGUpKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4
RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNl
dFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKQEAgLTE5NCwxNCArMTk4LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobV9ncmFwaC5uZWdh
dGVTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgZml4
RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGlmIChi
eXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93
KTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFy
aXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CisgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIxOCwxNiAr
MjI0LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAobV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5v
ZGUpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgICAgICAgICBpZiAoYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9k
ZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRo
TW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3dBbmRO
ZWdhdGl2ZVplcm8pOworICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0
SW50NTIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVk
Z2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJs
ZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVz
dWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTI0NiwyNCAr
MjU0LDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0
aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3dBbmROZWdhdGl2ZVplcm8pOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZml4RWRn
ZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51
bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91Ymxl
UmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVS
ZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5l
ZWQgdG8gZG8gcmVmJ2luZyBvbiB0aGUgY2hpbGRyZW4gYmVjYXVzZSB3ZSdyZSBzdGVhbGluZyB0
aGVtIGZyb20KICAgICAgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgZGl2aXNpb24uCiAgICAg
ICAgICAgICAgICAgTm9kZSogbmV3RGl2aXNpb24gPSBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAogICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0RvdWJsZSwgKm5vZGUp
OworICAgICAgICAgICAgICAgIG5ld0RpdmlzaW9uLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJs
ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3AoRG91Ymxl
QXNJbnQzMik7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4uaW5pdGlhbGl6ZShFZGdl
KG5ld0RpdmlzaW9uLCBLbm93bk51bWJlclVzZSksIEVkZ2UoKSwgRWRnZSgpKTsKKyAgICAgICAg
ICAgICAgICBub2RlLT5jaGlsZHJlbi5pbml0aWFsaXplKEVkZ2UobmV3RGl2aXNpb24sIERvdWJs
ZVJlcFVzZSksIEVkZ2UoKSwgRWRnZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYnl0ZWNvZGVD
YW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUo
QXJpdGg6OkNoZWNrT3ZlcmZsb3dBbmROZWdhdGl2ZVplcm8pOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTI3NSw4ICsyODUsOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVkZ2U8
TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVz
ZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yODYsNyAr
Mjk3LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
Zml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUt
PnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKQEAgLTI5NCw3ICszMDYsOCBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEFyaXRoRlJvdW5kOgogICAgICAgICBjYXNlIEFyaXRoU2luOgogICAgICAgICBjYXNlIEFy
aXRoQ29zOiB7Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTMwNiw3ICszMTksNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZU51bWJlcigpKQotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVTdHJpbmcoKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMzcsMTQgKzM1MCwxNCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkKICAgICAgICAg
ICAgICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUtPmNoaWxkMSgp
Lm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVk
Z2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVk
Z2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEludDUyUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xl
YXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZU51bWJlcihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5v
ZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQx
KCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVD
bG9iYmVyc1dvcmxkKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAg
LTQwMiwxMyArNDE1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoZW5hYmxlSW50NTIoKQogICAgICAgICAgICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0
ZU1hY2hpbmVJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkp
KSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5j
aGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNo
aWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSAmJiBu
b2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkgewpAQCAtNTAxLDcg
KzUxNCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlw
ZSgpKSB7CisgICAgICAgICAgICBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKKyAgICAg
ICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBBcnJh
eTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9uczoKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVucHJv
ZmlsZWQ6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpVbmRlY2lkZWQ6CkBAIC01MjAsNiArNTM0
LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgeworICAg
ICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgorICAgICAgICAgICAgY2FzZSBBcnJheTo6Rmxv
YXQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5OgorICAgICAg
ICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVp
bnQzMkFycmF5OgorICAgICAgICAgICAgICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNo
aW5lSW50KCkpCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0
SW50NTIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+
c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIApAQCAtNTU5LDE0ICs1OTEsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBm
aXhFZGdlPEludDMyVXNlPihjaGlsZDIpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJV
c2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMy0+cHJlZGljdGlvbigpICYg
U3BlY0ludDUyKQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KGNo
aWxkMyk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGNoaWxkMyk7
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBB
cnJheTo6RG91YmxlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGls
ZDEpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxSZWFsTnVtYmVyVXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8RG91YmxlUmVwUmVhbFVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDhBcnJheToKICAgICAgICAgICAgIGNhc2Ug
QXJyYXk6OkludDE2QXJyYXk6CkBAIC01ODAsMTUgKzYxMiwxNSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGlmIChjaGlsZDMtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoY2hpbGQzLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpCi0gICAgICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4oY2hpbGQzKTsKKyAgICAgICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihjaGlsZDMpOworICAgICAgICAg
ICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKICAgICAgICAg
ICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtu
b3duQ2VsbFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihj
aGlsZDIpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihjaGlsZDMpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihjaGlsZDMpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKICAgICAgICAg
ICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZToKQEAgLTYzMCw3ICs2NjIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPFJlYWxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFJlYWxVc2U+KG5vZGUtPmNoaWxkMigpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3Vv
dXM6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CkBAIC02NjMsNyArNjk1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91
bGRTcGVjdWxhdGVJbnQzMigpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91
bGRTcGVjdWxhdGVOdW1iZXIoKSkKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihu
b2RlLT5jaGlsZDEoKSk7CiAKICAgICAgICAgICAgIE5vZGUqIGxvZ2ljYWxOb3QgPSBub2RlLT5j
aGlsZDEoKS5ub2RlKCk7CiAgICAgICAgICAgICBpZiAobG9naWNhbE5vdC0+b3AoKSA9PSBMb2dp
Y2FsTm90KSB7CkBAIC03NjAsNyArNzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG9wZXJhbmRJbmRleCA9IDA7IG9wZXJhbmRJbmRleCA8
IG5vZGUtPm51bUNoaWxkcmVuKCk7ICsrb3BlcmFuZEluZGV4KQotICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPFJlYWxOdW1iZXJVc2U+KG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltub2RlLT5m
aXJzdENoaWxkKCkgKyBvcGVyYW5kSW5kZXhdKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxEb3VibGVSZXBSZWFsVXNlPihtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RD
aGlsZCgpICsgb3BlcmFuZEluZGV4XSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgY2Fz
ZSBBTExfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUzoKQEAgLTk2MSwxNiArOTkzLDE4IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgICAgIGNhc2Ug
Q2hlY2tUaWVyVXBBdFJldHVybjoKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVy
OgotICAgICAgICBjYXNlIEludDUyVG9Eb3VibGU6Ci0gICAgICAgIGNhc2UgSW50NTJUb1ZhbHVl
OgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgICAgICBjYXNlIENoZWNrQXJy
YXk6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICAgICAgY2FzZSBDb25zdGFudFN0
b3JhZ2VQb2ludGVyOgogICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6Ci0gICAgICAgIGNhc2Ug
SW50MzJUb0RvdWJsZToKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgICAgIGNhc2Ug
SGFyZFBoYW50b206IC8vIEhhcmRQaGFudG9tIHdvdWxkIGJlIHRyaXZpYWwgdG8gaGFuZGxlIGJ1
dCBhbnl3YXkgd2UgYXNzZXJ0IHRoYXQgd2Ugd29uJ3Qgc2VlIGl0IGhlcmUgeWV0LgorICAgICAg
ICBjYXNlIERvdWJsZVJlcDoKKyAgICAgICAgY2FzZSBJbnQ1MlJlcDoKKyAgICAgICAgY2FzZSBW
YWx1ZVJlcDoKKyAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICAgICAgY2FzZSBJbnQ1
MkNvbnN0YW50OgogICAgICAgICAgICAgLy8gVGhlc2UgYXJlIGp1c3Qgbm9kZXMgdGhhdCB3ZSBk
b24ndCBjdXJyZW50bHkgZXhwZWN0IHRvIHNlZSBkdXJpbmcgZml4dXAuCiAgICAgICAgICAgICAv
LyBJZiB3ZSBldmVyIHdhbnRlZCB0byBpbnNlcnQgdGhlbSBwcmlvciB0byBmaXh1cCwgdGhlbiB3
ZSBqdXN0IGhhdmUgdG8gY3JlYXRlCiAgICAgICAgICAgICAvLyBmaXh1cCBydWxlcyBmb3IgdGhl
bS4KQEAgLTEzMjgsMTMgKzEzNjIsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmx1
c2hlZEpTVmFsdWU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEZs
dXNoZWREb3VibGU6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBGbHVzaGVk
SW50MzI6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50NTI6
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKQEAgLTE0Njcs
NyArMTUwMSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hh
bmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAgICAgICBjYXNlIFJlYWxO
dW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBjYXNlIERvdWJs
ZVJlcFJlYWxVc2U6CiAgICAgICAgICAgICBpZiAodmFyaWFibGUtPmRvdWJsZUZvcm1hdFN0YXRl
KCkgPT0gVXNpbmdEb3VibGVGb3JtYXQpCiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5
Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xNDc2LDcgKzE1MTEsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIHx8IGlzQm9vbGVhblNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQog
ICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdl
SXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAg
ICBpZiAoaXNNYWNoaW5lSW50U3BlY3VsYXRpb24odmFyaWFibGUtPnByZWRpY3Rpb24oKSkpCiAg
ICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJ
c1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTE5LDkg
KzE1NTQsOSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgVXNlS2luZCB1c2VLaW5kOwog
ICAgICAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQotICAgICAgICAg
ICAgdXNlS2luZCA9IE1hY2hpbmVJbnRVc2U7CisgICAgICAgICAgICB1c2VLaW5kID0gSW50NTJS
ZXBVc2U7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKQot
ICAgICAgICAgICAgdXNlS2luZCA9IE51bWJlclVzZTsKKyAgICAgICAgICAgIHVzZUtpbmQgPSBE
b3VibGVSZXBVc2U7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZUJvb2xl
YW4oKSkKICAgICAgICAgICAgIHVzZUtpbmQgPSBCb29sZWFuVXNlOwogICAgICAgICBlbHNlCkBA
IC0xNTg5LDkgKzE2MjQsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkgewotICAg
ICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
IGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldEFy
aXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1
bHQoTm9kZVJlc3VsdEludDUyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgICAgIApAQCAtMTcyNiw5NSArMTc2MiwxMDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGFkZFBoYW50b21zSWZOZWNlc3NhcnkoKTsKICAgICAgICAgICAgIGlmIChtX2N1cnJlbnROb2Rl
LT5jb250YWluc01vdkhpbnQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIGlmICh0cnlUb1JlbGF4UmVwcmVzZW50YXRpb24obV9jdXJyZW50Tm9kZSkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBERkdfTk9ERV9ET19UT19DSElMRFJFTiht
X2dyYXBoLCBtX2N1cnJlbnROb2RlLCBpbmplY3RUeXBlQ29udmVyc2lvbnNGb3JFZGdlKTsKICAg
ICAgICAgfQogICAgICAgICBjbGVhclBoYW50b21zQXRFbmQoKTsKICAgICAgICAgbV9pbnNlcnRp
b25TZXQuZXhlY3V0ZShibG9jayk7CiAgICAgfQogICAgIAorICAgIGJvb2wgdHJ5VG9SZWxheFJl
cHJlc2VudGF0aW9uKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICAvLyBTb21lIG9wZXJhdGlv
bnMgbWF5IGJlIGFibGUgdG8gb3BlcmF0ZSBtb3JlIGVmZmljaWVudGx5IG92ZXIgbG9vc2VyIHJl
cHJlc2VudGF0aW9ucy4KKyAgICAgICAgLy8gSWRlbnRpZnkgdGhvc2UgaGVyZS4gVGhpcyBhdm9p
ZHMgaW5zZXJ0aW5nIGEgcmVkdW5kYW50IHJlcHJlc2VudGF0aW9uIGNvbnZlcnNpb24uCisgICAg
ICAgIAorICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgY2FzZSBWYWx1ZVRv
SW50MzI6CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IERvdWJs
ZVJlcFVzZQorICAgICAgICAgICAgICAgICYmICFub2RlLT5jaGlsZDEoKS0+aGFzRG91YmxlUmVz
dWx0KCkpIHsKKyAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS5zZXRVc2VLaW5kKE51bWJl
clVzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAK
ICAgICB2b2lkIGluamVjdFR5cGVDb252ZXJzaW9uc0ZvckVkZ2UoTm9kZSogbm9kZSwgRWRnZSYg
ZWRnZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChub2RlID09IG1fY3VycmVudE5vZGUpOwogICAg
ICAgICAKLSAgICAgICAgaWYgKGlzRG91YmxlKGVkZ2UudXNlS2luZCgpKSkgewotICAgICAgICAg
ICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyRm9yQXJpdGhtZXRpYygpKSB7Ci0gICAg
ICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAotICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDUyQXNE
b3VibGUsIEludDMyVG9Eb3VibGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbiwg
RWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKGVkZ2UudXNlS2luZCgpKSB7CisgICAgICAg
IGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6IHsKKyAg
ICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkgJiYgZWRn
ZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gTWFr
ZSBhbGwgZG91YmxlIHVzZXMgb2YgaW50NTIgdmFsdWVzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIElu
dDUyVG9Eb3VibGUuCi0gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgdGhlIHNhbWUgcmVh
c29uIGFzIEludDUyVG9WYWx1ZSAoc2VlIGJlbG93KSBleGNlcHQgdGhhdAotICAgICAgICAgICAg
ICAgIC8vIEludDhUb0RvdWJsZSB3aWxsIGNvbnZlcnQgaW50NTIncyB0aGF0IGZpdCBpbiBhbiBp
bnQzMiBpbnRvIGEgZG91YmxlCi0gICAgICAgICAgICAgICAgLy8gcmF0aGVyIHRoYW4gdHJ5aW5n
IHRvIGNyZWF0ZSBhIGJveGVkIGludDMyIGxpa2UgSW50NTJUb1ZhbHVlIGRvZXMuCi0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9kZSgp
KTsKLSAgICAgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAotICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDUyQXNEb3Vi
bGUsIEludDUyVG9Eb3VibGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbiwgRWRn
ZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7Ci0gICAgICAgICAgICAgICAgZWRnZS5zZXROb2Rl
KHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYWRkUmVxdWly
ZWRQaGFudG9tKGVkZ2Uubm9kZSgpKTsKKworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAg
ICAgICAgICAgaWYgKGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpIHsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY0ludDUyQXNEb3VibGUsIERvdWJsZVJlcCwgbm9kZS0+b3JpZ2lu
LAorICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBJbnQ1MlJlcFVzZSkpOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y0RvdWJsZSwgRG91YmxlUmVwLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIEVk
Z2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBlZGdlLnNldE5vZGUocmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBpZiAoZW5hYmxlSW50NTIoKSAmJiBlZGdlLnVzZUtpbmQoKSAhPSBN
YWNoaW5lSW50VXNlCi0gICAgICAgICAgICAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KCkgJiYgIWVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKLSAgICAgICAgICAgIC8v
IFdlIG1ha2UgYWxsIG5vbi1pbnQ1MiB1c2VzIG9mIGludDUyIHZhbHVlcyBoYXZlIGFuIGludGVy
bWVkaWF0ZSBJbnQ1MlRvVmFsdWUKLSAgICAgICAgICAgIC8vIG5vZGUgdG8gZW5zdXJlIHRoYXQg
d2UgaGFuZGxlIHRoaXMgcHJvcGVybHk6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8g
YTogU29tZUludDUyCi0gICAgICAgICAgICAvLyBiOiBBcml0aEFkZChAYSwgLi4uKQotICAgICAg
ICAgICAgLy8gYzogQ2FsbCguLi4sIEBhKQotICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoQGEs
IC4uLikKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBXaXRob3V0IGFuIGludGVybWVk
aWF0ZSBub2RlIGFuZCBqdXN0IGxhYmVsaW5nIHRoZSB1c2VzLCB3ZSB3aWxsIGdldDoKLSAgICAg
ICAgICAgIC8vCi0gICAgICAgICAgICAvLyBhOiBTb21lSW50NTIKLSAgICAgICAgICAgIC8vIGI6
IEFyaXRoQWRkKEludDUyOkBhLCAuLi4pCi0gICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgVW50
eXBlZDpAYSkKLSAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEludDUyOkBhLCAuLi4pCi0gICAg
ICAgICAgICAvLwotICAgICAgICAgICAgLy8gQW5kIG5vdyB0aGUgYy0+VW50eXBlZDpAYSBlZGdl
IHdpbGwgYm94IHRoZSB2YWx1ZSBvZiBAYSBpbnRvIGEgZG91YmxlLiBUaGlzCi0gICAgICAgICAg
ICAvLyBpcyBiYWQsIGJlY2F1c2Ugbm93IHRoZSBkLT5JbnQ1MjpAYSBlZGdlIHdpbGwgZWl0aGVy
IGhhdmUgdG8gZG8gZG91YmxlLXRvLWludAotICAgICAgICAgICAgLy8gY29udmVyc2lvbnMsIG9y
IHdpbGwgaGF2ZSB0byBPU1IgZXhpdCB1bmNvbmRpdGlvbmFsbHkuIEFsdGVybmF0aXZlbHkgd2Ug
Y291bGQKLSAgICAgICAgICAgIC8vIGhhdmUgdGhlIGMtPlVudHlwZWQ6QGEgZWRnZSBib3ggdGhl
IHZhbHVlIGJ5IGNvcHlpbmcgcmF0aGVyIHRoYW4gaW4tcGxhY2UuCi0gICAgICAgICAgICAvLyBC
dXQgdGhlc2UgYm94aW5ncyBhcmUgYWxzbyBjb3N0bHkgc28gdGhpcyB3b3VsZG4ndCBiZSBncmVh
dC4KLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBUaGUgc29sdXRpb24gd2UgdXNlIGlz
IHRvIGFsd2F5cyBoYXZlIG5vbi1JbnQ1MiB1c2VzIG9mIHByZWRpY3RlZCBJbnQ1MidzIHVzZQot
ICAgICAgICAgICAgLy8gYW4gaW50ZXJ2ZW5pbmcgSW50NTJUb1ZhbHVlIG5vZGU6Ci0gICAgICAg
ICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29tZUludDUyCi0gICAgICAgICAgICAvLyBiOiBB
cml0aEFkZChJbnQ1MjpAYSwgLi4uKQotICAgICAgICAgICAgLy8geDogSW50NTJUb1ZhbHVlKElu
dDUyOkBhKQotICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIFVudHlwZWQ6QHgpCi0gICAgICAg
ICAgICAvLyBkOiBBcml0aEFkZChJbnQ1MjpAYSwgLi4uKQotICAgICAgICAgICAgLy8KLSAgICAg
ICAgICAgIC8vIE5vdGUgdGhhdCBldmVuIGlmIHdlIGhhZCBtdWx0aXBsZSBub24taW50NTIgdXNl
cyBvZiBAYSwgdGhlIG11bHRpcGxlCi0gICAgICAgICAgICAvLyBJbnQ1MlRvVmFsdWUncyB3b3Vs
ZCBnZXQgQ1NFJ2QgdG9nZXRoZXIuIFNvIHRoZSBib3hpbmcgd291bGQgb25seSBoYXBwZW4gb25j
ZS4KLSAgICAgICAgICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUsIEBhIHdvdWxkIGNvbnRpbnVlIHRv
IGJlIHJlcHJlc2VudGVkIGFzIGEgbmF0aXZlIGludDUyLgotICAgICAgICAgICAgLy8KLSAgICAg
ICAgICAgIC8vIEFuIGFsdGVybmF0aXZlIHdvdWxkIGhhdmUgYmVlbiB0byBpbnNlcnQgVG9OYXRp
dmVJbnQ1MiBub2RlcyBvbiBpbnQ1MiB1c2VzIG9mCi0gICAgICAgICAgICAvLyBpbnQ1MidzLiBU
aGlzIHdvdWxkIGhhdmUgaGFuZGxlZCB0aGUgYWJvdmUgZXhhbXBsZSBidXQgd291bGQgZmFsbCBv
dmVyIGZvcjoKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBhOiBTb21lSW50NTIKLSAg
ICAgICAgICAgIC8vIGI6IENhbGwoLi4uLCBAYSkKLSAgICAgICAgICAgIC8vIGM6IEFyaXRoQWRk
KEBhLCAuLi4pCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gQnV0IHRoZSBzb2x1dGlv
biB3ZSB1c2UgaGFuZGxlcyB0aGUgYWJvdmUgZ3JhY2VmdWxseS4KKyAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAgICAgICAgICBpZiAoZWRnZS0+aGFzSW50NTJS
ZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgICAgIE5vZGUqIHJl
c3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2ssIFNwZWNJbnQ1MiwgSW50NTJUb1ZhbHVlLAotICAgICAgICAgICAgICAgIG5vZGUt
Pm9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgVW50eXBlZFVzZSkpOworCisgICAgICAgICAgICBO
b2RlKiByZXN1bHQ7CisgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpIHsK
KyAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgbmV2ZXIgaGFwcGVuLgorICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyRm9yQXJpdGhtZXRpYygpKSB7CisgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMiwgSW50NTJSZXAsIG5vZGUtPm9yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgSW50MzJVc2UpKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGhlcmUgZm9y
IGRlYWxpbmcgd2l0aCBjb25zdGFudHMuCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZWRnZS0+b3AoKSA9PSBKU0NvbnN0YW50KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9j
aywgU3BlY01hY2hpbmVJbnQsIEludDUyQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAg
ICAgICAgICAgICAgT3BJbmZvKGVkZ2UtPmNvbnN0YW50TnVtYmVyKCkpKTsKKyAgICAgICAgICAg
IH0KKwogICAgICAgICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
IGRlZmF1bHQ6IHsKKyAgICAgICAgICAgIGlmICghZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkgJiYg
IWVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChlZGdl
LT5oYXNEb3VibGVSZXN1bHQoKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjRG91YmxlLCBWYWx1ZVJlcCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBF
ZGdlKGVkZ2Uubm9kZSgpLCBEb3VibGVSZXBVc2UpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAg
ICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91
YmxlLCBWYWx1ZVJlcCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBFZGdlKGVk
Z2Uubm9kZSgpLCBJbnQ1MlJlcFVzZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBlZGdlLnNldE5vZGUocmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9IH0KICAgICB9CiAgICAgCiAgICAgdm9pZCBhZGRSZXF1aXJlZFBoYW50b20oTm9kZSog
bm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJ
KHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hG
b3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBpbmxpbmUgTm9kZUZsYWdz
IHJlc3VsdEZvcihGbHVzaEZvcm1hdCBmCiAgICAgY2FzZSBGbHVzaGVkSW50NTI6CiAgICAgICAg
IHJldHVybiBOb2RlUmVzdWx0SW50NTI7CiAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgotICAgICAg
ICByZXR1cm4gTm9kZVJlc3VsdE51bWJlcjsKKyAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHREb3Vi
bGU7CiAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRC
b29sZWFuOwogICAgIH0KQEAgLTgzLDkgKzgzLDkgQEAgaW5saW5lIFVzZUtpbmQgdXNlS2luZEZv
cihGbHVzaEZvcm1hdCBmbwogICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICByZXR1cm4g
SW50MzJVc2U7CiAgICAgY2FzZSBGbHVzaGVkSW50NTI6Ci0gICAgICAgIHJldHVybiBNYWNoaW5l
SW50VXNlOworICAgICAgICByZXR1cm4gSW50NTJSZXBVc2U7CiAgICAgY2FzZSBGbHVzaGVkRG91
YmxlOgotICAgICAgICByZXR1cm4gTnVtYmVyVXNlOworICAgICAgICByZXR1cm4gRG91YmxlUmVw
VXNlOwogICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CiAgICAgICAgIHJldHVybiBCb29sZWFuVXNl
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAx
NjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzI1LDYgKzMyNSwxMyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBm
aWx0ZXJGbGFncyh+ZmxhZ3MpOwogICAgIH0KICAgICAKKyAgICB2b2lkIHNldFJlc3VsdChOb2Rl
RmxhZ3MgcmVzdWx0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEocmVzdWx0ICYgfk5vZGVSZXN1
bHRNYXNrKSk7CisgICAgICAgIGNsZWFyRmxhZ3MoTm9kZVJlc3VsdE1hc2spOworICAgICAgICBt
ZXJnZUZsYWdzKHJlc3VsdCk7CisgICAgfQorICAgIAogICAgIHZvaWQgc2V0T3BBbmREZWZhdWx0
RmxhZ3MoTm9kZVR5cGUgb3ApCiAgICAgewogICAgICAgICBtX29wID0gb3A7CkBAIC0zODUsNiAr
MzkyLDggQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAg
ICAgICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAg
ICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICBjYXNlIFdlYWtKU0NvbnN0YW50Ogog
ICAgICAgICBjYXNlIFBoYW50b21Bcmd1bWVudHM6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTQwMSw3ICs0MTAsMTIgQEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIHZvaWQgY29udmVy
dFRvQ29uc3RhbnQodW5zaWduZWQgY29uc3RhbnROdW1iZXIpCiAgICAgewotICAgICAgICBtX29w
ID0gSlNDb25zdGFudDsKKyAgICAgICAgaWYgKGhhc0RvdWJsZVJlc3VsdCgpKQorICAgICAgICAg
ICAgbV9vcCA9IERvdWJsZUNvbnN0YW50OworICAgICAgICBlbHNlIGlmIChoYXNJbnQ1MlJlc3Vs
dCgpKQorICAgICAgICAgICAgbV9vcCA9IEludDUyQ29uc3RhbnQ7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fb3AgPSBKU0NvbnN0YW50OwogICAgICAgICBtX2ZsYWdzICY9IH4oTm9kZU11
c3RHZW5lcmF0ZSB8IE5vZGVNaWdodENsb2JiZXIgfCBOb2RlQ2xvYmJlcnNXb3JsZCk7CiAgICAg
ICAgIG1fb3BJbmZvID0gY29uc3RhbnROdW1iZXI7CiAgICAgICAgIGNoaWxkcmVuLnJlc2V0KCk7
CkBAIC04MDUsMTEgKzgxOSwyMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiAobV9m
bGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0SW50MzI7CiAgICAgfQogICAgIAor
ICAgIGJvb2wgaGFzSW50NTJSZXN1bHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChtX2ZsYWdz
ICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRJbnQ1MjsKKyAgICB9CisgICAgCiAgICAg
Ym9vbCBoYXNOdW1iZXJSZXN1bHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIChtX2ZsYWdzICYg
Tm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHROdW1iZXI7CiAgICAgfQogICAgIAorICAgIGJv
b2wgaGFzRG91YmxlUmVzdWx0KCkKKyAgICB7CisgICAgICAgIHJldHVybiAobV9mbGFncyAmIE5v
ZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0RG91YmxlOworICAgIH0KKyAgICAKICAgICBib29s
IGhhc0pTUmVzdWx0KCkKICAgICB7CiAgICAgICAgIHJldHVybiAobV9mbGFncyAmIE5vZGVSZXN1
bHRNYXNrKSA9PSBOb2RlUmVzdWx0SlM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVGbGFncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlRmxhZ3MuY3BwCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVGbGFncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDkg
QEAgdm9pZCBkdW1wTm9kZUZsYWdzKFByaW50U3RyZWFtJiBhY3R1YWxPdQogICAgICAgICBjYXNl
IE5vZGVSZXN1bHROdW1iZXI6CiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJOdW1iZXIi
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5vZGVSZXN1bHROdW1iZXI6Cisg
ICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJEb3VibGUiKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIE5vZGVSZXN1bHRJbnQzMjoKICAgICAgICAgICAgIG91dC5wcmludChj
b21tYSwgIkludDMyIik7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAg
KzM4LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICNkZWZpbmUgTm9kZVJl
c3VsdE1hc2sgICAgICAgICAgICAgICAgICAgMHgwMDA3CiAjZGVmaW5lIE5vZGVSZXN1bHRKUyAg
ICAgICAgICAgICAgICAgICAgIDB4MDAwMQogI2RlZmluZSBOb2RlUmVzdWx0TnVtYmVyICAgICAg
ICAgICAgICAgICAweDAwMDIKLSNkZWZpbmUgTm9kZVJlc3VsdEludDMyICAgICAgICAgICAgICAg
ICAgMHgwMDAzCi0jZGVmaW5lIE5vZGVSZXN1bHRJbnQ1MiAgICAgICAgICAgICAgICAgIDB4MDAw
NAotI2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAgICAgICAgICAgICAweDAwMDUKLSNkZWZp
bmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgICAgICAgMHgwMDA2CisjZGVmaW5lIE5vZGVS
ZXN1bHREb3VibGUgICAgICAgICAgICAgICAgIDB4MDAwMworI2RlZmluZSBOb2RlUmVzdWx0SW50
MzIgICAgICAgICAgICAgICAgICAweDAwMDQKKyNkZWZpbmUgTm9kZVJlc3VsdEludDUyICAgICAg
ICAgICAgICAgICAgMHgwMDA1CisjZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAg
ICAgIDB4MDAwNgorI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAgICAgICAweDAw
MDcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAjZGVmaW5lIE5vZGVNdXN0R2Vu
ZXJhdGUgICAgICAgICAgICAgICAgIDB4MDAwOCAvLyBzZXQgb24gbm9kZXMgdGhhdCBoYXZlIHNp
ZGUgZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlhbGx5IGJlIHJlbW92ZWQgYnkgRENFLgogI2Rl
ZmluZSBOb2RlSGFzVmFyQXJncyAgICAgICAgICAgICAgICAgICAweDAwMTAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIEEg
Y29uc3RhbnQgaW4gdGhlIENvZGVCbG9jaydzIGNvbnN0YW50IHBvb2wuICovXAogICAgIG1hY3Jv
KEpTQ29uc3RhbnQsIE5vZGVSZXN1bHRKUyB8IE5vZGVEb2VzTm90RXhpdCkgXAogICAgIFwKKyAg
ICAvKiBDb25zdGFudHMgd2l0aCBzcGVjaWZpYyByZXByZXNlbnRhdGlvbnMuICovXAorICAgIG1h
Y3JvKERvdWJsZUNvbnN0YW50LCBOb2RlUmVzdWx0RG91YmxlIHwgTm9kZURvZXNOb3RFeGl0KSBc
CisgICAgbWFjcm8oSW50NTJDb25zdGFudCwgTm9kZVJlc3VsdEludDUyIHwgTm9kZURvZXNOb3RF
eGl0KSBcCisgICAgXAogICAgIC8qIEEgY29uc3RhbnQgbm90IGluIHRoZSBDb2RlQmxvY2sncyBj
b25zdGFudCBwb29sLiBVc2VzIGdldCBwYXRjaGVkIHRvIGp1bXBzIHRoYXQgZXhpdCB0aGUgKi9c
CiAgICAgLyogY29kZSBibG9jay4gKi9cCiAgICAgbWFjcm8oV2Vha0pTQ29uc3RhbnQsIE5vZGVS
ZXN1bHRKUyB8IE5vZGVEb2VzTm90RXhpdCkgXApAQCAtMTA2LDE1ICsxMTAsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIFVzZWQgdG8gYm94IHRoZSByZXN1bHQg
b2YgVVJTaGlmdCBub2RlcyAocmVzdWx0IGhhcyByYW5nZSAwLi4yXjMyLTEpLiAqL1wKICAgICBt
YWNybyhVSW50MzJUb051bWJlciwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIFwKLSAgICAvKiBV
c2VkIHRvIGNhc3Qga25vd24gaW50ZWdlcnMgdG8gZG91Ymxlcywgc28gYXMgdG8gc2VwYXJhdGUg
dGhlIGRvdWJsZSBmb3JtICovXAotICAgIC8qIG9mIHRoZSB2YWx1ZSBmcm9tIHRoZSBpbnRlZ2Vy
IGZvcm0uICovXAotICAgIG1hY3JvKEludDMyVG9Eb3VibGUsIE5vZGVSZXN1bHROdW1iZXIpIFwK
LSAgICAvKiBVc2VkIHRvIHNwZWN1bGF0ZSB0aGF0IGEgZG91YmxlIHZhbHVlIGlzIGFjdHVhbGx5
IGFuIGludGVnZXIuICovXAorICAgIC8qIEF0dGVtcHQgdG8gdHJ1bmNhdGUgYSBkb3VibGUgdG8g
aW50MzI7IHRoaXMgd2lsbCBleGl0IGlmIGl0IGNhbid0IGRvIGl0LiAqL1wKICAgICBtYWNybyhE
b3VibGVBc0ludDMyLCBOb2RlUmVzdWx0SW50MzIpIFwKLSAgICAvKiBVc2VkIHRvIHNlcGFyYXRl
IHJlcHJlc2VudGF0aW9uIGFuZCByZWdpc3RlciBhbGxvY2F0aW9uIG9mIEludDUyJ3MgcmVwcmVz
ZW50ZWQgKi9cCi0gICAgLyogYXMgdmFsdWVzLiAqL1wKLSAgICBtYWNybyhJbnQ1MlRvVmFsdWUs
IE5vZGVSZXN1bHRKUykgXAotICAgIG1hY3JvKEludDUyVG9Eb3VibGUsIE5vZGVSZXN1bHROdW1i
ZXIpIFwKKyAgICBcCisgICAgLyogQ2hhbmdlIHRoZSByZXByZXNlbnRhdGlvbiBvZiBhIHZhbHVl
LiAqL1wKKyAgICBtYWNybyhEb3VibGVSZXAsIE5vZGVSZXN1bHREb3VibGUpIFwKKyAgICBtYWNy
byhJbnQ1MlJlcCwgTm9kZVJlc3VsdEludDUyKSBcCisgICAgbWFjcm8oVmFsdWVSZXAsIE5vZGVS
ZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25z
LiAqL1wKICAgICBtYWNybyhBcml0aEFkZCwgTm9kZVJlc3VsdE51bWJlcikgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82
NC5jcHAJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjksOSArMjY5LDcg
QEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAKICAg
ICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIEluUGFp
cjoKLSAgICAgICAgY2FzZSBJbkZQUjoKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6
Ci0gICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgbV9q
aXQubG9hZDMyKAogICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVz
Y3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50YWcsCiAgICAgICAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDApOwpAQCAtMjg2LDYgKzI4NCwxNCBAQCB2b2lkIE9TUkV4aXRDb21waWxl
cjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpw
YXlsb2FkRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCisg
ICAgICAgIGNhc2UgSW5GUFI6CisgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNr
OgorICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
c2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgbV9qaXQubG9h
ZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBt
X2ppdC5zYW5pdGl6ZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0
LnN0b3JlRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zv
cihvcGVyYW5kKSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQzMkluR1BSOgogICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTcsNiArMjk3LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0
KGNvbnN0IAogICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAg
ICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBp
bmRleCksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoR1BS
SW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgbV9qaXQuc2FuaXRp
emVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBtX2ppdC5ib3hEb3VibGUo
RlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgbV9qaXQuc3Rv
cmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQp
KTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTAsNyArNDkwLDYgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICBjYXNlIEdldEFycmF5
TGVuZ3RoOgogICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgotICAgICAgICBj
YXNlIEludDMyVG9Eb3VibGU6CiAgICAgICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKICAgICAgICAg
Y2FzZSBHZXRMb2NhbFVubGlua2VkOgogICAgICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3Ro
OgpAQCAtNTA0LDExICs1MDMsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJV
cEF0UmV0dXJuOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgICAg
IGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6Ci0gICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgotICAg
ICAgICBjYXNlIEludDUyVG9Eb3VibGU6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAg
ICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6Ci0gICAgICAgIGNhc2UgSGFyZFBoYW50b206IHsKKyAg
ICAgICAgY2FzZSBIYXJkUGhhbnRvbToKKyAgICAgICAgY2FzZSBEb3VibGVSZXA6CisgICAgICAg
IGNhc2UgSW50NTJSZXA6CisgICAgICAgIGNhc2UgVmFsdWVSZXA6IHsKICAgICAgICAgICAgIC8v
IFRoaXMgbm9kZSBzaG91bGQgbmV2ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBp
bGF0aW9uLiBJdCBpcwogICAgICAgICAgICAgLy8gaW5zZXJ0ZWQgYnkgZml4dXAoKSwgd2hpY2gg
Zm9sbG93cyB0aGlzIHBoYXNlLgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIHN3aXRjaCAoZWRnZS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBVbnR5cGVkVXNl
OgogICAgICAgICBjYXNlIEludDMyVXNlOgotICAgICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6Cisg
ICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6
CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgogICAg
ICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIGNhc2UgQ2VsbFVzZToKQEAgLTYxLDcgKzYz
LDYgQEAgcHVibGljOgogICAgICAgICBjYXNlIE5vdENlbGxVc2U6CiAgICAgICAgIGNhc2UgT3Ro
ZXJVc2U6CiAgICAgICAgIGNhc2UgTWlzY1VzZToKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNl
OgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgS25vd25J
bnQzMlVzZToKQEAgLTY5LDExICs3MCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBtX3Jl
c3VsdCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCi0gICAgICAg
IGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKGVk
Z2UpLm1fdHlwZSAmIH5TcGVjRnVsbE51bWJlcikKLSAgICAgICAgICAgICAgICBtX3Jlc3VsdCA9
IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
S25vd25DZWxsVXNlOgogICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5
cGUgJiB+U3BlY0NlbGwpCiAgICAgICAgICAgICAgICAgbV9yZXN1bHQgPSBmYWxzZTsKQEAgLTEx
MSw2ICsxMDcsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAK
ICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgY2Fz
ZSBEb3VibGVDb25zdGFudDoKKyAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgY2FzZSBXZWFr
SlNDb25zdGFudDoKICAgICBjYXNlIElkZW50aXR5OgogICAgIGNhc2UgVG9UaGlzOgpAQCAtMTM3
LDcgKzEzNSw2IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAg
ICBjYXNlIEJpdFVSU2hpZnQ6CiAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgY2FzZSBVSW50
MzJUb051bWJlcjoKLSAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAgY2FzZSBEb3VibGVBc0lu
dDMyOgogICAgIGNhc2UgQXJpdGhBZGQ6CiAgICAgY2FzZSBBcml0aFN1YjoKQEAgLTI0Miw4ICsy
MzksNiBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2Fz
ZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoK
ICAgICBjYXNlIExvb3BIaW50OgotICAgIGNhc2UgSW50NTJUb0RvdWJsZToKLSAgICBjYXNlIElu
dDUyVG9WYWx1ZToKICAgICBjYXNlIFN0b3JlQmFycmllcjoKICAgICBjYXNlIFN0b3JlQmFycmll
cldpdGhOdWxsQ2hlY2s6CiAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKQEAgLTI1NSw2ICsy
NTAsOSBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2Fz
ZSBDaGVjazoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBNdWx0aVB1dEJ5
T2Zmc2V0OgorICAgIGNhc2UgVmFsdWVSZXA6CisgICAgY2FzZSBEb3VibGVSZXA6CisgICAgY2Fz
ZSBJbnQ1MlJlcDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAgIGNhc2UgR2V0
QnlWYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiwyMSAr
MTA2LDkgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6Ci0gICAgICAgICAgICBjYXNlIERhdGFGb3JtYXRT
dHJpY3RJbnQ1MjogewotICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgICAgIGJveElu
dDUyKGdwciwgZ3ByLCBzcGlsbEZvcm1hdCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdwcjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERh
dGFGb3JtYXREb3VibGUpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTmVlZCB0byBib3ggdGhl
IGRvdWJsZSwgc2luY2Ugd2Ugd2FudCBhIEpTVmFsdWUuCi0gICAgICAgICAgICAgICAgICAgIG1f
aml0LnN1YjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3ByKTsKLSAgICAgICAg
ICAgICAgICAgICAgc3BpbGxGb3JtYXQgPSBEYXRhRm9ybWF0SlNEb3VibGU7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNwaWxsRm9y
bWF0ICYgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzcGls
bEZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBzcGls
bEZvcm1hdCk7CkBAIC0xNDMsMjggKzEzMSw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bEpTVmFsdWUoRWRnZSAKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CiAKLSAgICBjYXNlIERh
dGFGb3JtYXREb3VibGU6IHsKLSAgICAgICAgRlBSUmVnIGZwciA9IGluZm8uZnByKCk7Ci0gICAg
ICAgIEdQUlJlZyBncHIgPSBib3hEb3VibGUoZnByKTsKLQotICAgICAgICAvLyBVcGRhdGUgYWxs
IGluZm8KLSAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1h
dEpTRG91YmxlKTsKLSAgICAgICAgbV9mcHJzLnJlbGVhc2UoZnByKTsKLSAgICAgICAgbV9ncHJz
LnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckpTKTsKLQotICAgICAgICBy
ZXR1cm4gZ3ByOwotICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6Ci0g
ICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKLSAgICAgICAgR1BSUmVnIGdwciA9IGlu
Zm8uZ3ByKCk7Ci0gICAgICAgIGxvY2soZ3ByKTsKLSAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IGFsbG9jYXRlKCk7Ci0gICAgICAgIGJveEludDUyKGdwciwgcmVzdWx0R1BSLCBpbmZvLnJlZ2lz
dGVyRm9ybWF0KCkpOwotICAgICAgICB1bmxvY2soZ3ByKTsKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dEdQUjsKLSAgICB9Ci0KICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgogICAgICAgICAvLyBObyBy
ZXRhZyByZXF1aXJlZCBvbiBKU1ZBTFVFNjQhCiAgICAgY2FzZSBEYXRhRm9ybWF0SlM6CkBAIC0x
NzksNiArMTQ1LDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAog
ICAgICAgICAKICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgogICAgIGNhc2UgRGF0YUZvcm1h
dFN0b3JhZ2U6CisgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgorICAgIGNhc2UgRGF0YUZvcm1h
dEludDUyOgogICAgICAgICAvLyB0aGlzIHR5cGUgY3VycmVudGx5IG5ldmVyIG9jY3VycwogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAKQEAgLTc2OSwxMiAr
NzM3LDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgIAog
ICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0
Tm9uZTogewotICAgICAgICBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3Vi
bGUpIHsKLSAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKLSAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFG
b3JtYXRJbnQzMjsKLSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwotICAgICAgICB9Ci0g
ICAgICAgIAogICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKIAogICAgICAgICBpZiAo
ZWRnZS0+aGFzQ29uc3RhbnQoKSkgewpAQCAtNzg4LDcgKzc1MCw3IEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgCiAgICAgICAgIERhdGFGb3JtYXQg
c3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CiAgICAgICAgIAotICAgICAgICBSRUxF
QVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09
IERhdGFGb3JtYXRJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIgfHwgc3Bp
bGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9y
bWF0SW50MzIpOwogICAgICAgICAKICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxS
ZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwogICAgICAgICAKQEAgLTgwOSwzNiArNzcxLDYg
QEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICAgICAg
cmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEpTSW50MzI7CiAgICAgICAgICAgICByZXR1cm4gZ3By
OwogICAgICAgICB9Ci0gICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIg
fHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKSB7Ci0gICAgICAgICAgICAv
LyBHZW5lcmFsbHksIHRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmIHdlJ3ZlIGFscmVhZHkgcHJvdmVk
IHRoYXQgdGhlCi0gICAgICAgICAgICAvLyB2YWx1ZSBpcyBhbiBpbnQzMi4gVGhhdCdzIGJlY2F1
c2UgaWYgYSB2YWx1ZSBvcmlnaW5hdGVkIGFzIGEgSlNWYWx1ZQotICAgICAgICAgICAgLy8gdGhl
biB3ZSB3b3VsZCBzcGVjdWxhdGUgdGhhdCBpdCdzIGFuIGludDMyIGJlZm9yZSByZXByZXNlbnRp
bmcgaXQgYXMKLSAgICAgICAgICAgIC8vIGFuIGludDUyLiBPdGhlcndpc2UsIGlmIHdlIGtub3dp
bmdseSBwcm9kdWNlZCBhbiBpbnQ1MiwgdGhlbiB3ZSB3b3VsZAotICAgICAgICAgICAgLy8gYmUg
Ym94aW5nIGl0IGludG8gYSB2YWx1ZSB1c2luZyBJbnQ1MlRvVmFsdWUuIFRoaXMgYXNzZXJ0aW9u
IGlzIHZhbGlkCi0gICAgICAgICAgICAvLyBvbmx5IGJlY2F1c2UgSW50NTIgaXMgc29tZXRoaW5n
IHRoYXQgd2UgaW50cm9kdWNlIGF0IHByZWRpY3Rpb24gdGltZS4KLSAgICAgICAgICAgIC8vIEhv
d2V2ZXI6IHdlIG1heSBoYXZlIGFuIGludDMyLXByb2R1Y2luZyBub2RlIHJlcGxhY2VkIGJ5IGFu
Ci0gICAgICAgICAgICAvLyBpbnQ1Mi1wcm9kdWNpbmcgbm9kZSBkdWUgdG8gQ1NFLiBTbyB3ZSBt
dXN0IGRvIGEgY2hlY2suCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHR5cGUgJiB+U3Bl
Y01hY2hpbmVJbnQpKTsKLSAgICAgICAgICAgIGlmICh0eXBlICYgU3BlY0ludDUyKSB7Ci0gICAg
ICAgICAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgICAgIG1f
aml0LnNpZ25FeHRlbmQzMlRvUHRyKGdwciwgdGVtcCk7Ci0gICAgICAgICAgICAgICAgLy8gQ3Vy
cmVudGx5LCB3ZSBjYW4ndCBzdXBwbHkgdmFsdWUgcHJvZmlsaW5nIGluZm9ybWF0aW9uIGhlcmUu
IDotLwotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICAgICAg
ICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAgICAgICAgICAgIG1faml0
LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgZ3ByLCB0ZW1wKSk7Ci0gICAgICAg
ICAgICAgICAgdW5sb2NrKHRlbXApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKLSAgICAgICAgICAgICAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsK
LSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21w
aWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgICAg
IG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwg
Z3ByKTsKLSAgICAgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihncHIsIGdwcik7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQzMigqbV9zdHJlYW0sIGdw
cik7Ci0gICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7Ci0gICAgICAg
ICAgICByZXR1cm4gZ3ByOwotICAgICAgICB9CiAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21w
aWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwogCiAgICAgICAgIC8vIEZp
bGwgYXMgSlNWYWx1ZSwgYW5kIGZhbGwgdGhyb3VnaC4KQEAgLTg5Nyw0NyArODI5LDcgQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICByZXR1cm4gZ3By
OwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6Ci0gICAg
Y2FzZSBEYXRhRm9ybWF0SW50NTI6IHsKLSAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7
Ci0gICAgICAgIEdQUlJlZyByZXN1bHQ7Ci0gICAgICAgIERhdGFGb3JtYXQgb2xkRm9ybWF0ID0g
aW5mby5yZWdpc3RlckZvcm1hdCgpOwotICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGdwcikp
IHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2ppdC5t
b3ZlKGdwciwgcmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvY2soZ3By
KTsKLSAgICAgICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IGdwcjsKLSAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHR5
cGUgJiB+U3BlY01hY2hpbmVJbnQpKTsKLSAgICAgICAgaWYgKG9sZEZvcm1hdCA9PSBEYXRhRm9y
bWF0SW50NTIpCi0gICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6aW50NTJTaGlmdEFtb3VudCksIHJlc3VsdCk7Ci0gICAgICAgIGlmICh0eXBlICYgU3BlY0lu
dDUyKSB7Ci0gICAgICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAg
ICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHQsIHRlbXApOwotICAgICAgICAgICAgLy8g
Q3VycmVudGx5LCB3ZSBjYW4ndCBzdXBwbHkgdmFsdWUgcHJvZmlsaW5nIGluZm9ybWF0aW9uIGhl
cmUuIDotLwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgICAgICBC
YWRUeXBlLCBKU1ZhbHVlUmVncygpLCAwLAotICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgcmVzdWx0LCB0ZW1wKSk7Ci0gICAgICAgICAgICB1
bmxvY2sodGVtcCk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIo
cmVzdWx0LCByZXN1bHQpOwotICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7
Ci0gICAgICAgIHJldHVybiBncHI7Ci0gICAgfQotCi0gICAgY2FzZSBEYXRhRm9ybWF0RG91Ymxl
OgotICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOiB7Ci0gICAgICAgIGlmIChlZGdlLT5oYXND
b25zdGFudCgpICYmIGlzSW50MzJDb25zdGFudChlZGdlLm5vZGUoKSkpIHsKLSAgICAgICAgICAg
IEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgQVNTRVJUKGlzSW50MzJDb25z
dGFudChlZGdlLm5vZGUoKSkpOwotICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxl
cjo6SW1tMzIodmFsdWVPZkludDMyQ29uc3RhbnQoZWRnZS5ub2RlKCkpKSwgZ3ByKTsKLSAgICAg
ICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKLSAgICAgICAgICAgIHJldHVy
biBncHI7Ci0gICAgICAgIH0KLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgfQorICAgIGNhc2Ug
RGF0YUZvcm1hdEpTRG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CiAgICAgY2FzZSBE
YXRhRm9ybWF0Qm9vbGVhbjoKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CkBAIC05NDcsNyAr
ODM5LDEwIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAg
ICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgfQogCisgICAgY2FzZSBEYXRhRm9ybWF0RG91Ymxl
OgogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6
CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC05ODMsNyArODc4LDcg
QEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50NQogCiAgICAgc3dpdGNo
IChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0g
ICAgICAgIGlmICgoZWRnZS0+aGFzQ29uc3RhbnQoKSAmJiAhdmFsdWVPZkpTQ29uc3RhbnQoZWRn
ZS5ub2RlKCkpLmlzTWFjaGluZUludCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZv
cm1hdERvdWJsZSkgeworICAgICAgICBpZiAoKGVkZ2UtPmhhc0NvbnN0YW50KCkgJiYgIXZhbHVl
T2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKS5pc01hY2hpbmVJbnQoKSkpIHsKICAgICAgICAgICAg
IHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCAwKTsKICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgICAgICB9CkBAIC0xMDA0
LDgyICs4OTksMjEgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50NQog
ICAgICAgICAKICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3Jt
YXQoKTsKICAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERh
dGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyIHx8IHNwaWxsRm9y
bWF0ID09IERhdGFGb3JtYXRJbnQ1MiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0
SW50NTIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0
SW50NTIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKTsKICAgICAgICAg
CiAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJT
cGlsbGVkKTsKICAgICAgICAgCi0gICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0
SlNJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpIHsKLSAgICAgICAgICAg
IC8vIElmIHdlIGtub3cgdGhpcyB3YXMgc3BpbGxlZCBhcyBhbiBpbnRlZ2VyIHdlIGNhbiBmaWxs
IHdpdGhvdXQgY2hlY2tpbmcuCi0gICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIG1faml0LnNp
Z25FeHRlbmQzMlRvUHRyKGdwciwgZ3ByKTsKLSAgICAgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0
ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewotICAgICAgICAgICAgICAgIGluZm8uZmlsbFN0
cmljdEludDUyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBncHIpOwotICAgICAgICAgICAgaW5mby5maWxsSW50
NTIoKm1fc3RyZWFtLCBncHIpOwotICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0
ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewotICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJ
VENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAg
ICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQotICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFt
b3VudCksIGdwcik7Ci0gICAgICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NTIoKm1fc3Ry
ZWFtLCBncHIpOwotICAgICAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKQotICAg
ICAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNo
aWZ0QW1vdW50KSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbEludDUyKCptX3N0cmVhbSwg
Z3ByKTsKLSAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgIH0KICAgICAgICAgbV9qaXQu
bG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0K
LSAgICAgICAgLy8gRmlsbCBhcyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJvdWdoLgotICAgICAgICBp
bmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNJbnQzMik7Ci0gICAg
ICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgfQotCi0g
ICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsKLSAgICAgICAgLy8gQ2hlY2sgdGhlIHZhbHVlIGlzIGFu
IGludGVnZXIuIE5vdGUgdGhhdCB3ZSB3b3VsZCAqbGlrZSogdG8gdW5ib3ggYW4gSW50NTIKLSAg
ICAgICAgLy8gYXQgdGhpcyBwb2ludCBidXQgdGhpcyBpcyB0b28gY29zdGx5LiBXZSBvbmx5ICpw
cm92ZSogdGhhdCB0aGlzIGlzIGFuIEludDUyCi0gICAgICAgIC8vIGV2ZW4gdGhvdWdoIHdlIGNo
ZWNrIGlmIGl0J3MgYW4gaW50MzIuCi0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwot
ICAgICAgICBHUFJSZWcgcmVzdWx0OwotICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGdwcikp
IHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2ppdC5t
b3ZlKGdwciwgcmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fZ3Bycy5s
b2NrKGdwcik7Ci0gICAgICAgICAgICByZXN1bHQgPSBncHI7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKHR5cGUgJiB+U3BlY0ludDMyKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCBKU1ZhbHVlUmVncyhyZXN1bHQpLCBlZGdlLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2Vt
Ymxlcjo6QmVsb3csIHJlc3VsdCwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7Ci0g
ICAgICAgIGlmIChyZXN1bHQgPT0gZ3ByKSAvLyBUaGUgbm90LWFscmVhZHktbG9ja2VkLCBzbyBm
aWxsIGluLXBsYWNlLCBjYXNlLgotICAgICAgICAgICAgaW5mby5maWxsSW50NTIoKm1fc3RyZWFt
LCBncHIsIGRlc2lyZWRGb3JtYXQpOwotICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihy
ZXN1bHQsIHJlc3VsdCk7Ci0gICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJ
bnQ1MikKLSAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpp
bnQ1MlNoaWZ0QW1vdW50KSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9
Ci0KLSAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKLSAgICBjYXNlIERhdGFGb3JtYXRKU0ludDMy
OiB7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBHUFJSZWcgcmVz
dWx0OwotICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGdwcikpIHsKLSAgICAgICAgICAgIHJl
c3VsdCA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKGdwciwgcmVzdWx0KTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAg
ICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0sIGdwciwgZGVzaXJlZEZvcm1hdCk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBncHI7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFG
b3JtYXRTdHJpY3RJbnQ1MikgeworICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFG
b3JtYXRJbnQ1MikKKyAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxT
dHJpY3RJbnQ1MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgICAgICByZXR1cm4gZ3ByOwogICAg
ICAgICB9Ci0gICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdCwgcmVzdWx0KTsK
LSAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQotICAgICAgICAg
ICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQp
LCByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBpZiAoc3BpbGxGb3Jt
YXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKQorICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQo
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBncHIpOworICAgICAgICBp
bmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgIHJldHVybiBncHI7CiAgICAg
fQogCiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKQEAgLTExMTYsMzEgKzk1MCw2
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDUKICAgICAgICAgcmV0
dXJuIGdwcjsKICAgICB9CiAKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6Ci0gICAgY2FzZSBE
YXRhRm9ybWF0SlNEb3VibGU6Ci0gICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7Ci0g
ICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB2YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUo
KSk7Ci0gICAgICAgICAgICBpZiAoanNWYWx1ZS5pc01hY2hpbmVJbnQoKSkgewotICAgICAgICAg
ICAgICAgIGludDY0X3QgdmFsdWUgPSBqc1ZhbHVlLmFzTWFjaGluZUludCgpOwotICAgICAgICAg
ICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikKLSAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgPSB2YWx1ZSA8PCBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50OwotICAg
ICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgICAgIG1f
aml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHZhbHVlKSwgZ3ByKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZ3ByOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEZBTExU
SFJPVUdIOwotICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0Qm9v
bGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNC
b29sZWFuOiB7Ci0gICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7Ci0gICAg
fQotCi0gICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CkBAIC0x
MTYwLDE3ICs5NjksNiBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3Vi
CiAgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICBHUFJSZWcg
Z3ByID0gYWxsb2NhdGUoKTsKIAotICAgICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChlZGdl
Lm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsK
LSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW02NChyZWludGVy
cHJldERvdWJsZVRvSW50NjQoc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZU9mSW50MzJDb25zdGFu
dChlZGdlLm5vZGUoKSkpKSksIGdwcik7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZTY0VG9E
b3VibGUoZ3ByLCBmcHIpOwotICAgICAgICAgICAgICAgIHVubG9jayhncHIpOwotCi0gICAgICAg
ICAgICAgICAgLy8gRG9uJ3QgZmlsbCBkb3VibGUgaGVyZSBzaW5jZSB0aGF0IHdpbGwgbGVhZCB0
byBjb25mdXNpb246IHRoZQotICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGFsbG9jYXRvciB3
aWxsIG5vdyB0aGluayB0aGF0IHRoaXMgaXMgYSBkb3VibGUgd2hpbGUKLSAgICAgICAgICAgICAg
ICAvLyBldmVyeW9uZSBlbHNlIHRoaW5rcyBpdCdzIGFuIGludGVnZXIuCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZwcjsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpc051bWJlckNv
bnN0YW50KGVkZ2Uubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJB
bGxvY2F0ZSgpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6Oklt
bTY0KHJlaW50ZXJwcmV0RG91YmxlVG9JbnQ2NCh2YWx1ZU9mTnVtYmVyQ29uc3RhbnQoZWRnZS5u
b2RlKCkpKSksIGdwcik7CkBAIC0xMTg2LDE1OSArOTg0LDE4IEBAIEZQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgRGF0
YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKLSAgICAgICAgc3dpdGNo
IChzcGlsbEZvcm1hdCkgewotICAgICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6IHsKLSAgICAg
ICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQubG9h
ZERvdWJsZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBmcHIpOwot
ICAgICAgICAgICAgbV9mcHJzLnJldGFpbihmcHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRl
ckRvdWJsZSk7Ci0gICAgICAgICAgICBpbmZvLmZpbGxEb3VibGUoKm1fc3RyZWFtLCBmcHIpOwot
ICAgICAgICAgICAgcmV0dXJuIGZwcjsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAg
IGNhc2UgRGF0YUZvcm1hdEludDMyOiB7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2Nh
dGUoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1
YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwotICAgICAgICAgICAgbV9qaXQubG9hZDMy
KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAg
ICAgICBpbmZvLmZpbGxJbnQzMigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICB1bmxvY2so
Z3ByKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6IHsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxv
Y2F0ZSgpOwotICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3Rlciwg
U3BpbGxPcmRlclNwaWxsZWQpOwotICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZp
bGxJbnQ1MigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICB1bmxvY2soZ3ByKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBEYXRh
Rm9ybWF0U3RyaWN0SW50NTI6IHsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgp
OwotICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxP
cmRlclNwaWxsZWQpOwotICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxTdHJp
Y3RJbnQ1MigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICB1bmxvY2soZ3ByKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChz
cGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUyk7Ci0gICAgICAgICAgICBtX2dwcnMucmV0YWluKGdw
ciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7Ci0gICAgICAgICAgICBtX2pp
dC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsK
LSAgICAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIHNwaWxsRm9ybWF0
KTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgewotICAgIGNh
c2UgRGF0YUZvcm1hdE5vbmU6IC8vIFNob3VsZCBoYXZlIGZpbGxlZCwgYWJvdmUuCi0gICAgY2Fz
ZSBEYXRhRm9ybWF0Qm9vbGVhbjogLy8gVGhpcyB0eXBlIG5ldmVyIG9jY3Vycy4KLSAgICBjYXNl
IERhdGFGb3JtYXRTdG9yYWdlOgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotCi0gICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKLSAgICAgICAgdGVybWluYXRlU3BlY3VsYXRp
dmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwotICAgICAgICByZXR1
cm4gZnByQWxsb2NhdGUoKTsKLQotICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKLSAgICBjYXNl
IERhdGFGb3JtYXRKUzoKLSAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46IHsKLSAgICAgICAg
R1BSUmVnIGpzVmFsdWVHcHIgPSBpbmZvLmdwcigpOwotICAgICAgICBtX2dwcnMubG9jayhqc1Zh
bHVlR3ByKTsKLSAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgIEdQ
UlJlZyB0ZW1wR3ByID0gYWxsb2NhdGUoKTsKLQotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBp
c0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBq
c1ZhbHVlR3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotCi0gICAgICAgIGlm
ICh0eXBlICYgflNwZWNGdWxsTnVtYmVyKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlUmVncyhqc1ZhbHVlR3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoVGVzdDY0
KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBqc1ZhbHVlR3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIpKTsKLQotICAgICAgICAvLyBGaXJzdCwgaWYgd2UgZ2V0IGhlcmUgd2UgaGF2ZSBh
IGRvdWJsZSBlbmNvZGVkIGFzIGEgSlNWYWx1ZQotICAgICAgICBtX2ppdC5tb3ZlKGpzVmFsdWVH
cHIsIHRlbXBHcHIpOwotICAgICAgICB1bmJveERvdWJsZSh0ZW1wR3ByLCBmcHIpOwotICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBoYXNVbmJveGVkRG91YmxlID0gbV9qaXQuanVtcCgpOwotCi0g
ICAgICAgIC8vIEZpbmFsbHksIGhhbmRsZSBpbnRlZ2Vycy4KLSAgICAgICAgaXNJbnRlZ2VyLmxp
bmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUoanNWYWx1ZUdw
ciwgZnByKTsKLSAgICAgICAgaGFzVW5ib3hlZERvdWJsZS5saW5rKCZtX2ppdCk7Ci0KLSAgICAg
ICAgbV9ncHJzLnJlbGVhc2UoanNWYWx1ZUdwcik7Ci0gICAgICAgIG1fZ3Bycy51bmxvY2soanNW
YWx1ZUdwcik7Ci0gICAgICAgIG1fZ3Bycy51bmxvY2sodGVtcEdwcik7Ci0gICAgICAgIG1fZnBy
cy5yZXRhaW4oZnByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJEb3VibGUpOwotICAgICAg
ICBpbmZvLmZpbGxEb3VibGUoKm1fc3RyZWFtLCBmcHIpOwotICAgICAgICBpbmZvLmtpbGxTcGls
bGVkKCk7Ci0gICAgICAgIHJldHVybiBmcHI7Ci0gICAgfQotCi0gICAgY2FzZSBEYXRhRm9ybWF0
SlNJbnQzMjoKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjogewotICAgICAgICBGUFJSZWcgZnBy
ID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7Ci0gICAg
ICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91Ymxl
KGdwciwgZnByKTsKLSAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwotICAgICAgICByZXR1cm4g
ZnByOwotICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6IHsKLSAgICAg
ICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZv
LmdwcigpOwotICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICBHUFJSZWcgdGVtcCA9
IGFsbG9jYXRlKCk7Ci0gICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1wKTsKLSAgICAgICAgbV9q
aXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCB0ZW1w
KTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUodGVtcCwgZnByKTsKLSAgICAg
ICAgdW5sb2NrKHRlbXApOwotICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0gICAgICAgIHJl
dHVybiBmcHI7Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1
MjogeworICAgICAgICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91
YmxlKTsKICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgIEdQUlJl
ZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICBt
X2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZShncHIsIGZwcik7Ci0gICAgICAgIG1fZ3Bycy51bmxv
Y2soZ3ByKTsKLSAgICAgICAgcmV0dXJuIGZwcjsKLSAgICB9Ci0KLSAgICAvLyBVbmJveCB0aGUg
ZG91YmxlCi0gICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6IHsKLSAgICAgICAgR1BSUmVnIGdw
ciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAg
ICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGdwcikpIHsKLSAgICAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB3ZSBkb24ndCB0cmFtcGxlIGdwciBpZiBpdCBpcyBpbiB1c2UuCi0gICAgICAgICAgICBHUFJS
ZWcgdGVtcCA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKGdwciwgdGVtcCk7
Ci0gICAgICAgICAgICB1bmJveERvdWJsZSh0ZW1wLCBmcHIpOwotICAgICAgICAgICAgdW5sb2Nr
KHRlbXApOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHVuYm94RG91YmxlKGdwciwgZnBy
KTsKLQotICAgICAgICBtX2dwcnMucmVsZWFzZShncHIpOworICAgICAgICBtX2ppdC5sb2FkRG91
YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7CiAgICAg
ICAgIG1fZnBycy5yZXRhaW4oZnByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJEb3VibGUp
OwotCiAgICAgICAgIGluZm8uZmlsbERvdWJsZSgqbV9zdHJlYW0sIGZwcik7CiAgICAgICAgIHJl
dHVybiBmcHI7CiAgICAgfQogCi0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7Ci0gICAgICAg
IEZQUlJlZyBmcHIgPSBpbmZvLmZwcigpOwotICAgICAgICBtX2ZwcnMubG9jayhmcHIpOwotICAg
ICAgICByZXR1cm4gZnByOwotICAgIH0KLSAgICAgICAgCi0gICAgZGVmYXVsdDoKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEludmFsaWRGUFJS
ZWc7Ci0gICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9PSBE
YXRhRm9ybWF0RG91YmxlKTsKKyAgICBGUFJSZWcgZnByID0gaW5mby5mcHIoKTsKKyAgICBtX2Zw
cnMubG9jayhmcHIpOworICAgIHJldHVybiBmcHI7CiB9CiAKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSBlZGdlKQpAQCAtMTM1MiwxMSArMTAwOSw2IEBAIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKIAogICAgIHN3aXRjaCAoaW5m
by5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewotICAgICAg
ICBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMiB8fCBpbmZvLnNwaWxs
Rm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAgICAgICAgICAgdGVybWluYXRlU3Bl
Y3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwotICAgICAg
ICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCiAgICAgICAgIEdQ
UlJlZyBncHIgPSBhbGxvY2F0ZSgpOwogCiAgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgp
KSB7CkBAIC0xNDA1LDE2ICsxMDU3LDE2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNw
ZWN1bGF0ZUNlbGwKICAgICBjYXNlIERhdGFGb3JtYXRKU0ludDMyOgogICAgIGNhc2UgRGF0YUZv
cm1hdEludDMyOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgotICAgIGNhc2UgRGF0YUZv
cm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46Ci0gICAgY2FzZSBEYXRh
Rm9ybWF0Qm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKLSAgICBjYXNlIERhdGFG
b3JtYXRTdHJpY3RJbnQ1MjogeworICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46IHsKICAgICAg
ICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdz
KCksIDApOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CiAKKyAgICBjYXNlIERh
dGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERh
dGFGb3JtYXRJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAg
LTE0MzMsNyArMTA4NSw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJv
b2wKIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2FzZSBEYXRh
Rm9ybWF0Tm9uZTogewotICAgICAgICBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3Jt
YXRJbnQzMiB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgeworICAg
ICAgICBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMikgewogICAgICAg
ICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIDApOwogICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgICAgIH0KQEAg
LTE0ODcsMTYgKzExMzksMTYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRl
Qm9vbAogICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50
MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91
YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKLSAgICBjYXNlIERhdGFGb3JtYXRDZWxs
OgotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdElu
dDUyOiB7CisgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDogUAogICAgICAgICB0ZXJtaW5hdGVTcGVj
dWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAg
IHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0
RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CisgICAgY2FzZSBEYXRhRm9ybWF0
SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0xNTA1LDI2
ICsxMTU3LDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogICAg
IH0KIH0KIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRUb0RvdWJs
ZShHUFJSZWcgdmFsdWUsIEZQUlJlZyByZXN1bHQsIEdQUlJlZyB0bXApCi17Ci0gICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFi
b3ZlT3JFcXVhbCwgdmFsdWUsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAg
Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgbm90TnVtYmVyID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCB2YWx1ZSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
KTsKLSAgICAKLSAgICBtX2ppdC5tb3ZlKHZhbHVlLCB0bXApOwotICAgIHVuYm94RG91YmxlKHRt
cCwgcmVzdWx0KTsKLSAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVt
cCgpOwotICAgIAotICAgIGlzSW50ZWdlci5saW5rKCZtX2ppdCk7Ci0gICAgCi0gICAgbV9qaXQu
Y29udmVydEludDMyVG9Eb3VibGUodmFsdWUsIHJlc3VsdCk7Ci0gICAgCi0gICAgZG9uZS5saW5r
KCZtX2ppdCk7Ci0KLSAgICByZXR1cm4gbm90TnVtYmVyOwotfQotCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQmFzZVZhbHVlU3RvcmVCYXJyaWVyKEVkZ2UmIGJhc2VFZGdlLCBFZGdlJiB2
YWx1ZUVkZ2UpCiB7CiAjaWYgRU5BQkxFKEdHQykKQEAgLTI0MDAsMjQgKzIwMzIsMjMgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50MzJUb0RvdWJsZTogewotICAgICAgICBjb21waWxl
SW50MzJUb0RvdWJsZShub2RlKTsKKyAgICBjYXNlIERvdWJsZVJlcDogeworICAgICAgICBjb21w
aWxlRG91YmxlUmVwKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAg
IGNhc2UgSW50NTJUb1ZhbHVlOiB7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCBvcGVyYW5kKTsKLSAgICAgICAgbV9qaXQubW92ZShvcGVyYW5kLmdwcigpLCByZXN1bHQu
Z3ByKCkpOwotICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisgICAg
Y2FzZSBWYWx1ZVJlcDogeworICAgICAgICBjb21waWxlVmFsdWVSZXAobm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBJbnQ1MlRvRG91YmxlOiB7Ci0gICAg
ICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3BlcmFuZCk7Ci0gICAgICAgIG1f
aml0Lm1vdmVEb3VibGUob3BlcmFuZC5mcHIoKSwgcmVzdWx0LmZwcigpKTsKLSAgICAgICAgZG91
YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CisgICAgY2FzZSBJbnQ1MlJlcDogeworICAg
ICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgb3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3BlcmFuZCk7CisgICAgICAgIAor
ICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihvcGVyYW5kLmdwcigpLCByZXN1bHQuZ3By
KCkpOworICAgICAgICAKKyAgICAgICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0LmdwcigpLCBu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNjcy
MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMyLDggKzMzMiw2IEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4g
U3BlY3VsYXRpdmVKSVQ6OnMKICAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFG
b3JtYXRJbnQ1MikgewogICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkKICAgICAgICAg
ICAgIGZpbGxBY3Rpb24gPSBTZXRJbnQ1MkNvbnN0YW50OwotICAgICAgICBlbHNlIGlmIChpc0pT
SW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZv
cm1hdEpTKQotICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQzMlBheWxvYWRDb252ZXJ0VG9J
bnQ1MjsKICAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJ
bnQ1MikKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CiAgICAgICAgIGVsc2UgaWYg
KGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpCkBAIC0zNDEsMTcg
KzMzOSwxMiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAg
ICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkKICAgICAg
ICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
Ly8gU2hvdWxkIG5ldmVyIGhhcHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMgYW4gaW50
MzIgd2lsbCBuZXZlcgotICAgICAgICAgICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxsIChpbW1l
ZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRvdWJsZSAodG8tZG91YmxlCi0gICAgICAgICAgICAvLyBj
b252ZXJzaW9ucyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9kZSkuCiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsg
Ly8gTWFrZSBHQ0MgaGFwcHkuCiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9y
bWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewogICAgICAgICBpZiAobm9kZS0+aGFzQ29u
c3RhbnQoKSkKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRTdHJpY3RJbnQ1MkNvbnN0YW50
OwotICAgICAgICBlbHNlIGlmIChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8fCBpbmZv
LnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKQotICAgICAgICAgICAgZmlsbEFjdGlvbiA9
IExvYWQzMlBheWxvYWRTaWduRXh0ZW5kOwogICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9y
bWF0KCkgPT0gRGF0YUZvcm1hdEludDUyKQogICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2
NFNoaWZ0SW50NTJSaWdodDsKICAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09
IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKQEAgLTM1OSw5ICszNTIsNiBAQCBTaWxlbnRSZWdpc3Rl
clNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2Fk
NjQ7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi4g
QW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMgYW4gaW50MzIgd2lsbCBuZXZlcgotICAgICAgICAg
ICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRv
dWJsZSAodG8tZG91YmxlCi0gICAgICAgICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZlIGEgc2Vw
YXJhdGUgbm9kZSkuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsgLy8gTWFrZSBHQ0MgaGFwcHkuCiAgICAg
ICAgIH0KQEAgLTM3Niw5ICszNjYsNiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0
aXZlSklUOjpzCiAgICAgICAgIH0gZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFG
b3JtYXRJbnQzMikgewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFG
b3JtYXRKU0ludDMyKTsKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkMzJQYXlsb2FkQm94
SW50OwotICAgICAgICB9IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0
RG91YmxlKSB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1h
dEpTRG91YmxlKTsKLSAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkRG91YmxlQm94RG91Ymxl
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CiAjZWxz
ZQpAQCAtNDM0LDE0ICs0MjEsMTEgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2
ZUpJVDo6cwogICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgIEFTU0VSVChp
c051bWJlckNvbnN0YW50KG5vZGUpKTsKICAgICAgICAgZmlsbEFjdGlvbiA9IFNldERvdWJsZUNv
bnN0YW50OwotICAgIH0gZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpICE9IERhdGFGb3JtYXRO
b25lICYmIGluZm8uc3BpbGxGb3JtYXQoKSAhPSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAg
IC8vIGl0IHdhcyBhbHJlYWR5IHNwaWxsZWQgcHJldmlvdXNseSBhbmQgbm90IGFzIGEgZG91Ymxl
LCB3aGljaCBtZWFucyB3ZSBuZWVkIHVuYm94aW5nLgotICAgICAgICBBU1NFUlQoaW5mby5zcGls
bEZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgZmlsbEFjdGlvbiA9IExvYWRKU1Vu
Ym94RG91YmxlOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChpbmZv
LnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09
IERhdGFGb3JtYXREb3VibGUpOwogICAgICAgICBmaWxsQWN0aW9uID0gTG9hZERvdWJsZTsKICNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgQVNTRVJUKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9
PSBEYXRhRm9ybWF0RG91YmxlIHx8IGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0
SlNEb3VibGUpOworICAgIEFTU0VSVChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1h
dERvdWJsZSk7CiAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgQVNTRVJU
KGlzTnVtYmVyQ29uc3RhbnQobm9kZSkpOwogICAgICAgICBmaWxsQWN0aW9uID0gU2V0RG91Ymxl
Q29uc3RhbnQ7CkBAIC01MjgsMTQgKzUxMiw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVu
dEZpbGwoY29uc3QgU2kKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2Fk
Rm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwogICAgICAg
ICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihwbGFuLmdwcigpLCBwbGFuLmdwcigpKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBMb2FkRG91YmxlQm94RG91YmxlOgotICAgICAgICBtX2ppdC5s
b2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3Rl
cigpKSwgcGxhbi5ncHIoKSk7Ci0gICAgICAgIG1faml0LnN1YjY0KEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlciwgcGxhbi5ncHIoKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTG9h
ZEpTVW5ib3hEb3VibGU6Ci0gICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVz
c0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBjYW5UcmFtcGxlKTsKLSAgICAg
ICAgdW5ib3hEb3VibGUoY2FuVHJhbXBsZSwgcGxhbi5mcHIoKSk7Ci0gICAgICAgIGJyZWFrOwog
I2Vsc2UKICAgICBjYXNlIFNldEpTQ29uc3RhbnRUYWc6CiAgICAgICAgIG1faml0Lm1vdmUoSW1t
MzIodmFsdWVPZkpTQ29uc3RhbnQocGxhbi5ub2RlKCkpLnRhZygpKSwgcGxhbi5ncHIoKSk7CkBA
IC0xMDM5LDYgKzEwMTUsMjggQEAgR1BSVGVtcG9yYXJ5OjpHUFJUZW1wb3JhcnkoCiB9CiAjZW5k
aWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKIAorSlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6OkpTVmFsdWVS
ZWdzVGVtcG9yYXJ5KCkgeyB9CisKK0pTVmFsdWVSZWdzVGVtcG9yYXJ5OjpKU1ZhbHVlUmVnc1Rl
bXBvcmFyeShTcGVjdWxhdGl2ZUpJVCogaml0KQorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgOiBt
X2dwcihqaXQpCisjZWxzZQorICAgIDogbV9wYXlsb2FkR1BSKGppdCkKKyAgICAsIG1fdGFnR1BS
KGppdCkKK3sKK30KKworSlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6On5KU1ZhbHVlUmVnc1RlbXBvcmFy
eSgpIHsgfQorCitKU1ZhbHVlUmVncyBKU1ZhbHVlUmVnc1RlbXBvcmFyeTo6cmVncygpCit7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gSlNWYWx1ZVJlZ3MobV9ncHIuZ3ByKCkpOwor
I2Vsc2UKKyAgICByZXR1cm4gSlNWYWx1ZVJlZ3MobV90YWdHUFIuZ3ByKCksIG1fcGF5bG9hZEdQ
Ui5ncHIoKSk7CisjZW5kaWYKK30KKwogdm9pZCBHUFJUZW1wb3Jhcnk6OmFkb3B0KEdQUlRlbXBv
cmFyeSYgb3RoZXIpCiB7CiAgICAgQVNTRVJUKCFtX2ppdCk7CkBAIC0xMjU4LDEwICsxMjU2LDEw
IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW4KICAgICAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBjb21waWxlUGVl
cEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOwogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5l
SW50VXNlKSkKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVw
VXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUludDUyQnJhbmNoKG5vZGUsIGJyYW5j
aE5vZGUsIGNvbmRpdGlvbik7CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgZWxz
ZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpCisgICAgICAgIGVsc2UgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpKQogICAgICAgICAgICAgY29tcGls
ZVBlZXBIb2xlRG91YmxlQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGRvdWJsZUNvbmRpdGlvbik7
CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQ29tcGFyZUVxKSB7CiAgICAgICAgICAg
ICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkgfHwgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFN0cmluZ0lkZW50VXNlKSkgewpAQCAtMTgxNywxNiArMTgxNSwxMyBAQCBHZW5lcmF0
ZWRPcGVyYW5kVHlwZSBTcGVjdWxhdGl2ZUpJVDo6Y2hlCiAgICAgY2FzZSBEYXRhRm9ybWF0SlND
ZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVh
bjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAgICAgICAgcmV0dXJuIEdlbmVyYXRl
ZE9wZXJhbmRKU1ZhbHVlOwogCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAgICBjYXNl
IERhdGFGb3JtYXRJbnQzMjoKICAgICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRJbnRlZ2Vy
OwogCi0gICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91
YmxlOgotICAgICAgICByZXR1cm4gR2VuZXJhdGVkT3BlcmFuZERvdWJsZTsKLSAgICAgICAgCiAg
ICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRUeXBlVW5rbm93bjsKQEAgLTE4NDUsNyArMTg0MCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKICAgICB9CiAgICAg
ICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAg
Y2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzLCBSZXVzZSwgb3AxKTsKICAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKQEAg
LTE4NTUsNiArMTg1MCwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0lu
dDMyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgCisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKKyAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9k
ZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZQUlJlZyBm
cHIgPSBvcDEuZnByKCk7CisgICAgICAgIEdQUlJlZyBncHIgPSByZXN1bHQuZ3ByKCk7CisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFRydW5jYXRlZFRvSW50ZWdlciA9IG1faml0LmJyYW5j
aFRydW5jYXRlRG91YmxlVG9JbnQzMihmcHIsIGdwciwgSklUQ29tcGlsZXI6OkJyYW5jaElmVHJ1
bmNhdGVGYWlsZWQpOworICAgICAgICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKG5vdFRydW5jYXRlZFRvSW50ZWdlciwgdGhpcywgdG9JbnQzMiwgZ3ByLCBmcHIp
KTsKKyAgICAgICAgCisgICAgICAgIGludDMyUmVzdWx0KGdwciwgbm9kZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAgICAgCiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgY2FzZSBOb3RDZWxs
VXNlOiB7CkBAIC0xODY2LDE4ICsxODc0LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVZhbHVlVG9JbnQzMgogICAgICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2Rl
LCBvcDEuZm9ybWF0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
IGNhc2UgR2VuZXJhdGVkT3BlcmFuZERvdWJsZTogewotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRo
aXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwotICAgICAgICAg
ICAgRlBSUmVnIGZwciA9IG9wMS5mcHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSByZXN1
bHQuZ3ByKCk7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RUcnVuY2F0ZWRUb0lu
dGVnZXIgPSBtX2ppdC5icmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoZnByLCBncHIsIEpJVENv
bXBpbGVyOjpCcmFuY2hJZlRydW5jYXRlRmFpbGVkKTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5vdFRydW5jYXRlZFRvSW50ZWdl
ciwgdGhpcywgdG9JbnQzMiwgZ3ByLCBmcHIpKTsKLQotICAgICAgICAgICAgaW50MzJSZXN1bHQo
Z3ByLCBub2RlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogICAgICAgICBjYXNl
IEdlbmVyYXRlZE9wZXJhbmRKU1ZhbHVlOiB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0yMDY2LDcwICsyMDYyLDEzMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlQXNJbnQzCiAgICAgaW50MzJSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDMy
VG9Eb3VibGUoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVS
ZXAoTm9kZSogbm9kZSkKIHsKLSAgICBBU1NFUlQoIWlzSW50MzJDb25zdGFudChub2RlLT5jaGls
ZDEoKS5ub2RlKCkpKTsgLy8gVGhpcyBzaG91bGQgaGF2ZSBiZWVuIGNvbnN0YW50IGZvbGRlZC4K
KyAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNhc2UgTnVtYmVy
VXNlOiB7CisgICAgICAgIEFTU0VSVCghaXNJbnQzMkNvbnN0YW50KG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSkpOyAvLyBUaGlzIHNob3VsZCBoYXZlIGJlZW4gY29uc3RhbnQgZm9sZGVkLgogICAgIAot
ICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS5tX3R5cGUpKSB7Ci0gICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcDEodGhpcywgbm9k
ZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIEZQUlRlbXBv
cmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9w
MS5ncHIoKSwgcmVzdWx0LmZwcigpKTsKLSAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIo
KSwgbm9kZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgICAgIGlmIChpc0ludDMyU3Bl
Y3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKSB7CisgICAg
ICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKKyAgICAgICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMS5ncHIo
KSwgcmVzdWx0LmZwcigpKTsKKyAgICAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCks
IG5vZGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgCi0gICAgSlNWYWx1
ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOwotICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
KyAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAKICNpZiBVU0UoSlNWQUxV
RTY0KQotICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jhcnkg
dGVtcCh0aGlzKTsKIAotICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7Ci0gICAgR1BSUmVn
IHRlbXBHUFIgPSB0ZW1wLmdwcigpOwotICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnBy
KCk7CisgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0
ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5m
cHIoKTsKICAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFu
Y2g2NCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxR1BSLCBHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBp
c0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZU9yRXF1YWwsIG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAg
ICAKLSAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVy
KSkgewotICAgICAgICB0eXBlQ2hlY2soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFHUFIp
LCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCi0gICAgICAgICAgICBtX2ppdC5icmFu
Y2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKSk7Ci0gICAgfQorICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+
Y2hpbGQxKCksIFNwZWNCeXRlY29kZU51bWJlcikpIHsKKyAgICAgICAgICAgIHR5cGVDaGVjaygK
KyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3Bl
Y0J5dGVjb2RlTnVtYmVyLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNy
b0Fzc2VtYmxlcjo6WmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIp
KTsKKyAgICAgICAgfQogICAgIAotICAgIG1faml0Lm1vdmUob3AxR1BSLCB0ZW1wR1BSKTsKLSAg
ICB1bmJveERvdWJsZSh0ZW1wR1BSLCByZXN1bHRGUFIpOwotICAgIEpJVENvbXBpbGVyOjpKdW1w
IGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCB0ZW1wR1BS
KTsKKyAgICAgICAgdW5ib3hEb3VibGUodGVtcEdQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAKLSAgICBpc0ludGVnZXIu
bGluaygmbV9qaXQpOwotICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMUdQUiwgcmVz
dWx0RlBSKTsKLSAgICBkb25lLmxpbmsoJm1faml0KTsKLSNlbHNlCi0gICAgRlBSVGVtcG9yYXJ5
IHRlbXAodGhpcyk7CisgICAgICAgIGlzSW50ZWdlci5saW5rKCZtX2ppdCk7CisgICAgICAgIG1f
aml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMUdQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgZG9u
ZS5saW5rKCZtX2ppdCk7CisjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSAtPiB0aGlzIGlzIHRoZSAz
Ml82NCBjYXNlCisgICAgICAgIEZQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgIAotICAgIEdQ
UlJlZyBvcDFUYWdHUFIgPSBvcDEudGFnR1BSKCk7Ci0gICAgR1BSUmVnIG9wMVBheWxvYWRHUFIg
PSBvcDEucGF5bG9hZEdQUigpOwotICAgIEZQUlJlZyB0ZW1wRlBSID0gdGVtcC5mcHIoKTsKLSAg
ICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigpOworICAgICAgICBHUFJSZWcgb3AxVGFn
R1BSID0gb3AxLnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgb3AxUGF5bG9hZEdQUiA9IG9wMS5w
YXlsb2FkR1BSKCk7CisgICAgICAgIEZQUlJlZyB0ZW1wRlBSID0gdGVtcC5mcHIoKTsKKyAgICAg
ICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKICAgICAKLSAgICBKSVRDb21waWxl
cjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwor
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2gzMigKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6SW50MzJUYWcpKTsKICAgICAKLSAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+
Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyKSkgewotICAgICAgICB0eXBlQ2hlY2soCi0gICAgICAg
ICAgICBKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEo
KSwgU3BlY0Z1bGxOdW1iZXIsCi0gICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dl
c3RUYWcpKSk7Ci0gICAgfQorICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQx
KCksIFNwZWNCeXRlY29kZU51bWJlcikpIHsKKyAgICAgICAgICAgIHR5cGVDaGVjaygKKyAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5j
aGlsZDEoKSwgU3BlY0J5dGVjb2RlTnVtYmVyLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKKyAgICAgICAgfQogICAgIAotICAgIHVuYm94RG91Ymxl
KG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiwgcmVzdWx0RlBSLCB0ZW1wRlBSKTsKLSAgICBKSVRD
b21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAgICB1bmJveERvdWJsZShv
cDFUYWdHUFIsIG9wMVBheWxvYWRHUFIsIHJlc3VsdEZQUiwgdGVtcEZQUik7CisgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgCi0gICAgaXNJbnRlZ2Vy
LmxpbmsoJm1faml0KTsKLSAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcDFQYXlsb2Fk
R1BSLCByZXN1bHRGUFIpOwotICAgIGRvbmUubGluaygmbV9qaXQpOwotI2VuZGlmCisgICAgICAg
IGlzSW50ZWdlci5saW5rKCZtX2ppdCk7CisgICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91
YmxlKG9wMVBheWxvYWRHUFIsIHJlc3VsdEZQUik7CisgICAgICAgIGRvbmUubGluaygmbV9qaXQp
OworI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgCi0gICAgZG91YmxlUmVzdWx0KHJlc3Vs
dEZQUiwgbm9kZSk7CisgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHRGUFIsIG5vZGUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNh
c2UgSW50NTJSZXBVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHZh
bHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKyAgICAgICAgCisgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwor
ICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigpOworCisgICAgICAgIG1faml0
LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHZhbHVlR1BSLCByZXN1bHRGUFIpOworICAgICAgICAKKyAg
ICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdEZQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUmVwKE5vZGUqIG5vZGUp
Cit7CisgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIERv
dWJsZVJlcFVzZTogeworICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOworICAgICAgICAKKyAgICAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWUuZnByKCk7Cisg
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworICAgICAgICAK
KyAgICAgICAgYm94RG91YmxlKHZhbHVlRlBSLCByZXN1bHRSZWdzKTsKKyAgICAgICAgCisgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBJbnQ1MlJlcFVzZTog
eworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAK
KyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBib3hJbnQ1Mih2YWx1
ZUdQUiwgcmVzdWx0R1BSLCBEYXRhRm9ybWF0SW50NTIpOworICAgICAgICAKKyAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiB9CiAK
IHN0YXRpYyBkb3VibGUgY2xhbXBEb3VibGVUb0J5dGUoZG91YmxlIGQpCkBAIC0yMzIwLDcgKzIz
NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJCiAgICAgICAg
IH0KICAgICAgICAgICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGNhc2UgTWFjaGlu
ZUludFVzZTogeworICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAgICAgICBTcGVj
dWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgdmFsdWVPcCh0aGlzLCB2YWx1ZVVzZSk7CiAgICAgICAg
ICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKQEAgLTIzNDQsNyArMjQwMSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckkKICAgICAgICAgfQogI2VuZGlmIC8vIFVTRShK
U1ZBTFVFNjQpCiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAg
ICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIGlmIChpc0NsYW1wZWQodHlwZSkp
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZWxlbWVudFNpemUodHlwZSkgPT0gMSk7CiAgICAg
ICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNl
KTsKQEAgLTI0NDAsMTAgKzI0OTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
QnlWYWxPbkZsCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQog
ICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdE5hTiA9IG1faml0LmJyYW5jaERvdWJs
ZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWwsIHJlc3VsdFJlZywgcmVzdWx0UmVnKTsKLSAg
ICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9IFFOYU47Ci0gICAgbV9qaXQubG9hZERvdWJsZSgm
TmFOLCByZXN1bHRSZWcpOwotICAgIG5vdE5hTi5saW5rKCZtX2ppdCk7CisgICAgc2FuaXRpemVE
b3VibGUocmVzdWx0UmVnKTsKICAgICAKICAgICBkb3VibGVSZXN1bHQocmVzdWx0UmVnLCBub2Rl
KTsKIH0KQEAgLTI2NDEsNyArMjY5NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
ZGQoTm9kZSogbm8KICAgICB9CiAgICAgICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY2Fz
ZSBNYWNoaW5lSW50VXNlOiB7CisgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICBBU1NF
UlQoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpOwogICAgICAgICBBU1NF
UlQoIXNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAKQEAgLTI2
NzAsNyArMjcyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQoTm9kZSogbm8K
ICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAKLSAgICBjYXNlIE51bWJlclVz
ZTogeworICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9w
ZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBGUFJUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMsIG9wMSwgb3AyKTsKQEAgLTI4MDcsNyArMjg2MSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2QKICAgICB9CiAgICAgICAgIAogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgY2FzZSBJbnQ1MlJlcFVz
ZTogewogICAgICAgICBBU1NFUlQoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUo
KSkpOwogICAgICAgICBBU1NFUlQoIXNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRo
TW9kZSgpKSk7CiAKQEAgLTI4MzYsNyArMjg5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcml0aFN1YihOb2QKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotICAg
IGNhc2UgTnVtYmVyVXNlOiB7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3Bl
Y3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBT
cGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
IEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKQEAgLTI4ODEsNyArMjkzNSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSgKICAgICB9CiAKICNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgIGNhc2UgSW50NTJSZXBV
c2U6IHsKICAgICAgICAgQVNTRVJUKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2Rl
KCkpKTsKICAgICAgICAgCiAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NTIpKSB7CkBAIC0yOTE4LDcgKzI5NzIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhOZWdhdGUoCiAgICAgfQogI2VuZGlmIC8vIFVT
RShKU1ZBTFVFNjQpCiAgICAgICAgIAotICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgY2FzZSBE
b3VibGVSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAg
ICAgICAKQEAgLTI5NjksNyArMzAyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cml0aE11bChOb2QKICAgICB9CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkgICAKLSAgICBjYXNl
IE1hY2hpbmVJbnRVc2U6IHsKKyAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAgIEFTU0VS
VChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAgICAgICAgIAogICAg
ICAgICAvLyBUaGlzIGlzIHN1cGVyIGNsZXZlci4gV2Ugd2FudCB0byBkbyBhbiBpbnQ1MiBtdWx0
aXBsaWNhdGlvbiBhbmQgY2hlY2sgdGhlCkBAIC0zMDI2LDcgKzMwODAsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQXJpdGhNdWwoTm9kCiAgICAgfQogI2VuZGlmIC8vIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIAotICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgY2FzZSBEb3VibGVS
ZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIp
OwpAQCAtMzE5MCw3ICszMjQ0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRo
RGl2KE5vZAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgTnVtYmVy
VXNlOiB7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVEb3Vi
bGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFy
eSByZXN1bHQodGhpcywgb3AxKTsKQEAgLTM0OTUsNyArMzU0OSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aE1vZChOb2QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAg
ICAgCi0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAg
ICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
ICAgICAgICAgCkBAIC0zNTMwLDEzICszNTg0LDEzIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBhcmUoTm9kZSogbm9kZSwKICAgICB9CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7CisgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgY29tcGlsZUludDUyQ29t
cGFyZShub2RlLCBjb25kaXRpb24pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogI2Vu
ZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgCi0gICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChOdW1iZXJVc2UpKSB7CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBV
c2UpKSB7CiAgICAgICAgIGNvbXBpbGVEb3VibGVDb21wYXJlKG5vZGUsIGRvdWJsZUNvbmRpdGlv
bik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0zNjEwLDcgKzM2NjQsNyBAQCBi
b29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kCiAgICAgfQogICAgIAogI2lm
IFVTRShKU1ZBTFVFNjQpICAgCi0gICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5l
SW50VXNlKSkgeworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7
CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJh
bmNoKCk7CiAgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKICAg
ICAgICAgICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxv
Y2spOwpAQCAtMzYyNiw3ICszNjgwLDcgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0
cmljdEVxKE5vZAogICAgIH0KICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi0gICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChEb3VibGVSZXBVc2UpKSB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5C
bG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAgICAgIGlmIChicmFuY2hJbmRleElu
QmxvY2sgIT0gVUlOVF9NQVgpIHsKICAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Js
b2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOwpAQCAtNDQ4NywzNiArNDU0MSwzNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVJbnQzMihFZGdlCiAgICAgKFNwZWN1bGF0ZUludDMy
T3BlcmFuZCh0aGlzLCBlZGdlKSkuZ3ByKCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSBlZGdlKQotewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
aWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTWFjaGluZUludCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICAoU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKHRoaXMsIGVkZ2Up
KS5ncHIoKTsKLSNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCi0gICAgVU5VU0VEX1BBUkFNKGVkZ2Up
OwotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlmIC8vIFVTRShKU1ZBTFVF
NjQpCi19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcihFZGdlIGVkZ2Up
CiB7Ci0gICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbE51bWJlcikpCisgICAg
aWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgKFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQodGhpcywgZWRnZSkpLmZw
cigpOworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2UpOworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgR1BSUmVnIGdwciA9IHZhbHVlLmdwcigpOworICAgIHR5cGVDaGVjaygKKyAg
ICAgICAganNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgU3BlY0J5dGVjb2RlTnVtYmVyLAorICAgICAg
ICBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGdwciwgR1BSSW5mbzo6
dGFnVHlwZU51bWJlcikpOworI2Vsc2UKKyAgICBHUFJSZWcgdGFnR1BSID0gdmFsdWUudGFnR1BS
KCk7CisgICAgREZHX1RZUEVfQ0hFQ0soCisgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksIGVk
Z2UsIH5TcGVjSW50MzIsCisgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpF
cXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAgREZH
X1RZUEVfQ0hFQ0soCisgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksIGVkZ2UsIFNwZWNCeXRl
Y29kZU51bWJlciwKKyAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRnZSBl
ZGdlKQogewotICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0Z1bGxSZWFsTnVtYmVy
KSkKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNEb3VibGVSZWFsKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlz
LCBlZGdlKTsKICAgICBGUFJSZWcgZnByID0gb3BlcmFuZC5mcHIoKTsKLSAgICBERkdfVFlQRV9D
SEVDSygKLSAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgZWRnZSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAor
ICAgIHR5cGVDaGVjaygKKyAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgZWRnZSwgU3BlY0RvdWJsZVJl
YWwsCiAgICAgICAgIG1faml0LmJyYW5jaERvdWJsZSgKICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBmcHIsIGZwcikpOwogfQpAQCAtNDc2OCw4
ICs0ODIzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWQKICAg
ICBjYXNlIEtub3duSW50MzJVc2U6CiAgICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRn
ZSwgU3BlY0ludDMyKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6
Ci0gICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0Z1bGxOdW1iZXIpKTsK
KyAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhl
ZGdlLCBTcGVjRG91YmxlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50NTJSZXBVc2U6
CisgICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY01hY2hpbmVJbnQpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgIEFTU0VSVCgh
bmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwpKTsKQEAgLTQ3ODAsMTUgKzQ4MzgsMTIgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogICAgIGNhc2UgSW50MzJV
c2U6CiAgICAgICAgIHNwZWN1bGF0ZUludDMyKGVkZ2UpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIE1hY2hpbmVJbnRVc2U6Ci0gICAgICAgIHNwZWN1bGF0ZU1hY2hpbmVJbnQoZWRnZSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgc3BlY3VsYXRl
UmVhbE51bWJlcihlZGdlKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOdW1iZXJVc2U6CiAg
ICAgICAgIHNwZWN1bGF0ZU51bWJlcihlZGdlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBE
b3VibGVSZXBSZWFsVXNlOgorICAgICAgICBzcGVjdWxhdGVEb3VibGVSZWFsKGVkZ2UpOworICAg
ICAgICBicmVhazsKICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIHNwZWN1bGF0ZUJvb2xl
YW4oZWRnZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NTksNiArNDU5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQudW5ib3hEb3VibGUodGFnR1BS
LCBwYXlsb2FkR1BSLCBmcHIsIHNjcmF0Y2hGUFIpOwogICAgIH0KICNlbmRpZgorICAgIHZvaWQg
Ym94RG91YmxlKEZQUlJlZyBmcHIsIEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgeworICAgICAgICBt
X2ppdC5ib3hEb3VibGUoZnByLCByZWdzKTsKKyAgICB9CiAKICAgICAvLyBTcGlsbCBhIFZpcnR1
YWxSZWdpc3RlciB0byB0aGUgSlNTdGFjay4KICAgICB2b2lkIHNwaWxsKFZpcnR1YWxSZWdpc3Rl
ciBzcGlsbE1lKQpAQCAtOTI1LDYgKzkyOSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGpzVmFsdWVS
ZXN1bHQodGFnLCBwYXlsb2FkLCBub2RlLCBEYXRhRm9ybWF0SlMsIG1vZGUpOwogICAgIH0KICNl
bmRpZgorICAgIHZvaWQganNWYWx1ZVJlc3VsdChKU1ZhbHVlUmVncyByZWdzLCBOb2RlKiBub2Rl
LCBEYXRhRm9ybWF0IGZvcm1hdCA9IERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUg
PSBDYWxsVXNlQ2hpbGRyZW4pCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVncy5ncHIoKSwgbm9kZSwgZm9ybWF0LCBtb2RlKTsKKyNlbHNlCisgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVncy50YWdHUFIoKSwgcmVncy5wYXlsb2FkR1BSKCksIG5vZGUs
IGZvcm1hdCwgbW9kZSk7CisjZW5kaWYKKyAgICB9CiAgICAgdm9pZCBzdG9yYWdlUmVzdWx0KEdQ
UlJlZyByZWcsIE5vZGUqIG5vZGUsIFVzZUNoaWxkcmVuTW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxk
cmVuKQogICAgIHsKICAgICAgICAgaWYgKG1vZGUgPT0gQ2FsbFVzZUNoaWxkcmVuKQpAQCAtMjA4
Myw3ICsyMDk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVZhbHVlVG9JbnQzMihOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlVUludDMyVG9OdW1iZXIoTm9kZSopOwogICAgIHZvaWQgY29t
cGlsZURvdWJsZUFzSW50MzIoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUludDMyVG9Eb3VibGUo
Tm9kZSopOworICAgIHZvaWQgY29tcGlsZURvdWJsZVJlcChOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlQWRkKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVNYWtlUm9wZShOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlQXJpdGhTdWIoTm9kZSopOwpAQCAtMjE4NSwxMiArMjE5Nyw2IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1
cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOwogCi0jaWYgVVNF
KEpTVkFMVUU2NCkgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgY29udmVydFRvRG91YmxlKEdQUlJl
ZyB2YWx1ZSwgRlBSUmVnIHJlc3VsdCwgR1BSUmVnIHRtcCk7Ci0jZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQotICAgIEpJVENvbXBpbGVyOjpKdW1wIGNvbnZlcnRUb0RvdWJsZShKU1ZhbHVlT3BlcmFu
ZCYsIEZQUlJlZyByZXN1bHQpOwotI2VuZGlmCi0gICAgCiAgICAgLy8gQWRkIGEgc3BlY3VsYXRp
b24gY2hlY2suCiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291
cmNlLCBOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCk7CiAgICAgdm9pZCBz
cGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBOb2RlKiwgY29uc3QgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wc1RvRmFpbCk7CkBAIC0yNTY1LDYgKzI1NzEsMjMg
QEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHI7CiB9OwogCitjbGFzcyBKU1ZhbHVlUmVnc1Rl
bXBvcmFyeSB7CitwdWJsaWM6CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkoKTsKKyAgICBKU1Zh
bHVlUmVnc1RlbXBvcmFyeShTcGVjdWxhdGl2ZUpJVCopOworICAgIH5KU1ZhbHVlUmVnc1RlbXBv
cmFyeSgpOworICAgIAorICAgIEpTVmFsdWVSZWdzIHJlZ3MoKTsKKworcHJpdmF0ZToKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIEdQUlRlbXBvcmFyeSBtX2dwcjsKKyNlbHNlCisgICAgR1BSVGVt
cG9yYXJ5IG1fcGF5bG9hZEdQUjsKKyAgICBHUFJUZW1wb3JhcnkgbV90YWdHUFI7CisjZW5kaWYK
K307CisKIGNsYXNzIEZQUlRlbXBvcmFyeSB7CiBwdWJsaWM6CiAgICAgRlBSVGVtcG9yYXJ5KFNw
ZWN1bGF0aXZlSklUKik7CkBAIC0yNzU0LDEyICsyNzc3LDEyIEBAIHByaXZhdGU6CiAvLyBHaXZl
cyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxv
dyBiaXRzIHplcm8pLgogY2xhc3MgU3BlY3VsYXRlSW50NTJPcGVyYW5kIHsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRn
ZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3Bl
Y3VsYXRpb24pCisgICAgZXhwbGljaXQgU3BlY3VsYXRlSW50NTJPcGVyYW5kKFNwZWN1bGF0aXZl
SklUKiBqaXQsIEVkZ2UgZWRnZSkKICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9l
ZGdlKGVkZ2UpCiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKICAgICB7
Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKTsKICAgICAgICAgaWYgKGpp
dC0+aXNGaWxsZWQobm9kZSgpKSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0KQEAgLTI4MDEs
MTIgKzI4MjQsMTIgQEAgcHJpdmF0ZToKIC8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5l
LiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUgc2ln
bi1leHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgewogcHVibGlj
OgotICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJ
VCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRp
Y09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9w
ZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlKQogICAgICAgICA6IG1faml0KGpp
dCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkKICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZh
bGlkR1BSUmVnKQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNl
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2Up
OwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQogICAgICAgICAgICAgZ3ByKCk7
CiAgICAgfQpAQCAtMjg0OSwzNSArMjg3MiwzNSBAQCBlbnVtIE9wcG9zaXRlU2hpZnRUYWcgeyBP
cHBvc2l0ZVNoaWZ0IH07CiAKIGNsYXNzIFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCB7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKFNw
ZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2Rl
ID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdo
aWNoZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UpCiAgICAg
ICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3By
T3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgICAgICwgbV9zdHJpY3Qoaml0LT5iZXR0ZXJV
c2VTdHJpY3RJbnQ1MihlZGdlKSkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwg
bW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFj
aGluZUludFVzZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09IElu
dDUyUmVwVXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKICAgICAgICAg
ICAgIGdwcigpOwogICAgIH0KICAgICAKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJ
bnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBjb25zdCBTcGVjdWxh
dGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQmIG90aGVyLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1v
ZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgZXhwbGljaXQgU3BlY3VsYXRl
V2hpY2hldmVySW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgY29u
c3QgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kJiBvdGhlcikKICAgICAgICAgOiBtX2pp
dChqaXQpCiAgICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAgICAgICwgbV9ncHJPckludmFsaWQo
SW52YWxpZEdQUlJlZykKICAgICAgICAgLCBtX3N0cmljdChvdGhlci5tX3N0cmljdCkKICAgICB7
Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKTsKICAgICAgICAgaWYgKGpp
dC0+aXNGaWxsZWQobm9kZSgpKSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0KICAgICAKLSAg
ICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQq
IGppdCwgRWRnZSBlZGdlLCBPcHBvc2l0ZVNoaWZ0VGFnLCBjb25zdCBTcGVjdWxhdGVXaGljaGV2
ZXJJbnQ1Mk9wZXJhbmQmIG90aGVyLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRv
bWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVy
SW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3Bwb3NpdGVTaGlm
dFRhZywgY29uc3QgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kJiBvdGhlcikKICAgICAg
ICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAgICAgICwgbV9ncHJP
ckludmFsaWQoSW52YWxpZEdQUlJlZykKICAgICAgICAgLCBtX3N0cmljdCghb3RoZXIubV9zdHJp
Y3QpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CiAgICAg
ICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9
CkBAIC0yOTI2LDEzICsyOTQ5LDEzIEBAIHByaXZhdGU6CiAKIGNsYXNzIFNwZWN1bGF0ZURvdWJs
ZU9wZXJhbmQgewogcHVibGljOgotICAgIGV4cGxpY2l0IFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQo
U3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1v
ZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgZXhwbGljaXQgU3BlY3VsYXRl
RG91YmxlT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UpCiAgICAgICAgIDog
bV9qaXQoaml0KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZnByT3JJbnZh
bGlkKEludmFsaWRGUFJSZWcpCiAgICAgewogICAgICAgICBBU1NFUlQobV9qaXQpOwotICAgICAg
ICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8
IGlzRG91YmxlKGVkZ2UudXNlS2luZCgpKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzRG91
YmxlKGVkZ2UudXNlS2luZCgpKSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkp
CiAgICAgICAgICAgICBmcHIoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVXNlS2luZC5jcHAJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE3ICs0NiwxNyBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlCiAgICAgY2FzZSBLbm93
bkludDMyVXNlOgogICAgICAgICBvdXQucHJpbnQoIktub3duSW50MzIiKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBNYWNoaW5lSW50VXNlOgotICAgICAgICBvdXQucHJpbnQoIk1hY2hpbmVJ
bnQiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgICAgICBv
dXQucHJpbnQoIlJlYWxOdW1iZXIiKTsKKyAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICBv
dXQucHJpbnQoIkludDUyUmVwIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTnVtYmVyVXNl
OgogICAgICAgICBvdXQucHJpbnQoIk51bWJlciIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEtub3duTnVtYmVyVXNlOgotICAgICAgICBvdXQucHJpbnQoIktub3duTnVtYmVyIik7CisgICAg
Y2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgIG91dC5wcmludCgiRG91YmxlUmVwIik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICAgICAgb3V0LnByaW50
KCJEb3VibGVSZXBSZWFsIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQm9vbGVhblVzZToK
ICAgICAgICAgb3V0LnByaW50KCJCb29sZWFuIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1VzZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuaAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdVc2VLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICszNywxMCBAQCBl
bnVtIFVzZUtpbmQgewogICAgIFVudHlwZWRVc2UsCiAgICAgSW50MzJVc2UsCiAgICAgS25vd25J
bnQzMlVzZSwKLSAgICBNYWNoaW5lSW50VXNlLAotICAgIFJlYWxOdW1iZXJVc2UsCisgICAgSW50
NTJSZXBVc2UsCiAgICAgTnVtYmVyVXNlLAotICAgIEtub3duTnVtYmVyVXNlLAorICAgIERvdWJs
ZVJlcFVzZSwKKyAgICBEb3VibGVSZXBSZWFsVXNlLAogICAgIEJvb2xlYW5Vc2UsCiAgICAgQ2Vs
bFVzZSwKICAgICBLbm93bkNlbGxVc2UsCkBAIC02NywxMyArNjcsMTQgQEAgQUxXQVlTX0lOTElO
RSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRgogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgY2Fz
ZSBLbm93bkludDMyVXNlOgogICAgICAgICByZXR1cm4gU3BlY0ludDMyOwotICAgIGNhc2UgTWFj
aGluZUludFVzZToKKyAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICByZXR1cm4gU3BlY01h
Y2hpbmVJbnQ7Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgICAgICByZXR1cm4gU3BlY0Z1
bGxSZWFsTnVtYmVyOwogICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgS25vd25OdW1iZXJV
c2U6Ci0gICAgICAgIHJldHVybiBTcGVjRnVsbE51bWJlcjsKKyAgICAgICAgcmV0dXJuIFNwZWNC
eXRlY29kZU51bWJlcjsKKyAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgcmV0dXJuIFNw
ZWNEb3VibGU7CisgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgorICAgICAgICByZXR1cm4gU3Bl
Y0RvdWJsZVJlYWw7CiAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICByZXR1cm4gU3BlY0Jv
b2xlYW47CiAgICAgY2FzZSBDZWxsVXNlOgpAQCAtMTEzLDkgKzExNCwxMCBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgc2hvdWxkTm90SGF2ZVR5cGVDaGVjCiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAg
Y2FzZSBVbnR5cGVkVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKLSAgICBjYXNlIEtub3du
TnVtYmVyVXNlOgogICAgIGNhc2UgS25vd25DZWxsVXNlOgogICAgIGNhc2UgS25vd25TdHJpbmdV
c2U6CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTMyLDEwICsxMzQsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQg
awogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgY2FzZSBLbm93
bkludDMyVXNlOgotICAgIGNhc2UgTWFjaGluZUludFVzZToKLSAgICBjYXNlIFJlYWxOdW1iZXJV
c2U6CiAgICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKKyAgICBj
YXNlIEludDUyUmVwVXNlOgorICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgIGNhc2UgRG91Ymxl
UmVwUmVhbFVzZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTQ1LDkgKzE0Nyw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc051
bWVyaWNhbChVc2VLaW5kIGsKIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RvdWJsZShVc2VLaW5kIGtp
bmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAg
IGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CisgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTY3MjA0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTE1LDYgKzExNSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIG1fbXlSZWZDb3VudHMuZmluZChlZGdlLm5vZGUoKSktPnZhbHVlKys7CiAg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwg
ZWRnZSksIGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpID09IChlZGdlLnVzZUtpbmQoKSA9PSBEb3Vi
bGVSZXBVc2UgfHwgZWRnZS51c2VLaW5kKCkgPT0gRG91YmxlUmVwUmVhbFVzZSkpOworICAgICAg
ICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc0ludDUyUmVzdWx0
KCkgPT0gKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKSk7CisgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiBTU0EsIGFsbCBlZGdlcyBtdXN0IGhhc1Jlc3Vs
dCgpLgogICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdl
LT5oYXNSZXN1bHQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw5ICsyMzUs
OSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBD
b21wYXJlRXE6CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFj
aGluZUludFVzZSkpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBV
c2UpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoTnVtYmVyVXNlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVS
ZXBVc2UpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoU3RyaW5nSWRlbnRVc2UpKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNTUsOSArMjU1
LDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2Ug
Q29tcGFyZVN0cmljdEVxOgogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMy
VXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE1hY2hpbmVJbnRVc2UpKQorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKElu
dDUyUmVwVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKE51bWJlclVzZSkpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
RG91YmxlUmVwVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgw
LDkgKzI4MCw5IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAg
ICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSW50MzJVc2UpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoSW50NTJSZXBVc2UpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChEb3VibGVSZXBVc2UpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpCiAgICAgICAgICAgICBicmVhazsKQEAg
LTM1MCwxMCArMzUwLDEwIEBAIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKEdyYXBoJiBncmFw
aCkKICAgICAgICAgICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBJbnQzMlVzZToKICAgICAgICAgICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICAgICAgICAgIGNhc2UgSW50NTJS
ZXBVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgICAgICAgICAgICAg
Y2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgICAgICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6
CisgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgICAgICAgICAgY2Fz
ZSBEb3VibGVSZXBSZWFsVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAg
ICAgICAgICAgICAgICBjYXNlIENlbGxVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBLbm93bkNl
bGxVc2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw3ICsxODYsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICBMVHlwZSB0eXBlOwogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+ZmxhZ3MoKSAmIE5v
ZGVSZXN1bHRNYXNrKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0TnVtYmVyOgor
ICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdERvdWJsZToKICAgICAgICAgICAgICAgICAg
ICAgdHlwZSA9IG1fb3V0LmRvdWJsZVR5cGU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgpAQCAtMjgyLDEyICsyODIsMzAg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICAg
ICAgICAgIGNvbXBpbGVEb3VibGVDb25zdGFudCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgSW50NTJDb25zdGFudDoKKyAgICAgICAgICAgIGNvbXBpbGVJbnQ1MkNvbnN0YW50
KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAg
ICAgICAgICAgIGNvbXBpbGVXZWFrSlNDb25zdGFudCgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKICAgICAgICAgICAgIGNvbXBpbGVQaGFudG9t
QXJndW1lbnRzKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEb3VibGVSZXA6
CisgICAgICAgICAgICBjb21waWxlRG91YmxlUmVwKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICAgICAgICAgIGNvbXBpbGVWYWx1ZVJlcCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NTJSZXA6CisgICAgICAgICAgICBjb21w
aWxlSW50NTJSZXAoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlVG9J
bnQzMjoKKyAgICAgICAgICAgIGNvbXBpbGVWYWx1ZVRvSW50MzIoKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEdldEFyZ3VtZW50OgogICAgICAgICAgICAgY29tcGlsZUdldEFy
Z3VtZW50KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM3OCw5ICszOTYsNiBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgogICAgICAgICAgICAgY29tcGlsZVVJbnQz
MlRvTnVtYmVyKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnQzMlRvRG91
YmxlOgotICAgICAgICAgICAgY29tcGlsZUludDMyVG9Eb3VibGUoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgY29tcGlsZUNo
ZWNrU3RydWN0dXJlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU2OSwxMiArNTg0LDYgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICAgICAgICAgIGNv
bXBpbGVJbnZhbGlkYXRpb25Qb2ludCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgVmFsdWVUb0ludDMyOgotICAgICAgICAgICAgY29tcGlsZVZhbHVlVG9JbnQzMigpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgotICAgICAgICAgICAg
Y29tcGlsZUludDUyVG9WYWx1ZSgpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOgogICAgICAgICAgICAgY29tcGlsZUNoZWNrQXJndW1l
bnRzTm90Q3JlYXRlZCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02MzMsNzMgKzY0MiwxOCBA
QCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBp
bGVWYWx1ZVRvSW50MzIoKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSkgewotICAgICAgICBjYXNlIEludDMyVXNlOgotICAgICAgICAgICAgc2V0SW50
MzIobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgotICAgICAgICAgICAgc2V0SW50
MzIobV9vdXQuY2FzdFRvSW50MzIobG93U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSkpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNl
OgotICAgICAgICBjYXNlIE5vdENlbGxVc2U6IHsKLSAgICAgICAgICAgIExvd2VyZWROb2RlVmFs
dWUgdmFsdWUgPSBtX2ludDMyVmFsdWVzLmdldChtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7Ci0g
ICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQz
Mih2YWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KG1f
bm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkg
ewotICAgICAgICAgICAgICAgIHNldEludDMyKG51bWJlck9yTm90Q2VsbFRvSW50MzIobV9ub2Rl
LT5jaGlsZDEoKSwgdmFsdWUudmFsdWUoKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICB2YWx1ZSA9IG1fZG91YmxlVmFs
dWVzLmdldChtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoaXNWYWxp
ZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMihkb3VibGVUb0ludDMyKHZhbHVl
LnZhbHVlKCkpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgLy8gV2UnbGwgYmFzaWNhbGx5IGp1c3QgZ2V0IGhlcmUgZm9y
IGNvbnN0YW50cy4gQnV0IGl0J3MgZ29vZCB0byBoYXZlIHRoaXMKLSAgICAgICAgICAgIC8vIGNh
dGNoLWFsbCBzaW5jZSB3ZSBvZnRlbiBhZGQgbmV3IHJlcHJlc2VudGF0aW9ucyBpbnRvIHRoZSBt
aXguCi0gICAgICAgICAgICBzZXRJbnQzMigKLSAgICAgICAgICAgICAgICBudW1iZXJPck5vdENl
bGxUb0ludDMyKAotICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkMSgpLAotICAgICAg
ICAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbikpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAg
ICAKLSAgICAgICAgY2FzZSBCb29sZWFuVXNlOgotICAgICAgICAgICAgc2V0SW50MzIobV9vdXQu
emVyb0V4dChsb3dCb29sZWFuKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291dC5pbnQzMikpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgY29tcGlsZUludDUyVG9WYWx1ZSgpCi0gICAgewot
ICAgICAgICBzZXRKU1ZhbHVlKGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSkpOwotICAgIH0K
LQogICAgIHZvaWQgY29tcGlsZVVwc2lsb24oKQogICAgIHsKICAgICAgICAgTFZhbHVlIGRlc3Rp
bmF0aW9uID0gbV9waGlzLmdldChtX25vZGUtPnBoaSgpKTsKICAgICAgICAgCiAgICAgICAgIHN3
aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKLSAgICAgICAgY2FzZSBOdW1iZXJV
c2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgbV9vdXQuc2V0KGxv
d0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRpb24pOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgICAgICBtX291dC5zZXQobG93SW50
MzIobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAg
ICAgICAgICAgICBtX291dC5zZXQobG93SW50NTIobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0
aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CkBAIC03
MjIsNyArNjc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHNvdXJjZSA9IG1fcGhpcy5n
ZXQobV9ub2RlKTsKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5mbGFncygpICYg
Tm9kZVJlc3VsdE1hc2spIHsKLSAgICAgICAgY2FzZSBOb2RlUmVzdWx0TnVtYmVyOgorICAgICAg
ICBjYXNlIE5vZGVSZXN1bHREb3VibGU6CiAgICAgICAgICAgICBzZXREb3VibGUobV9vdXQuZ2V0
KHNvdXJjZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdElu
dDMyOgpAQCAtNzQyLDE3ICs2OTYsMTIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVEb3VibGVDb25zdGFudCgp
CisgICAgeworICAgICAgICBzZXREb3VibGUobV9vdXQuY29uc3REb3VibGUobV9ncmFwaC52YWx1
ZU9mTnVtYmVyQ29uc3RhbnQobV9ub2RlKSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBp
bGVJbnQ1MkNvbnN0YW50KCkKKyAgICB7CisgICAgICAgIGludDY0X3QgdmFsdWUgPSBtX2dyYXBo
LnZhbHVlT2ZKU0NvbnN0YW50KG1fbm9kZSkuYXNNYWNoaW5lSW50KCk7CisgICAgICAgIAorICAg
ICAgICBzZXRJbnQ1MihtX291dC5jb25zdEludDY0KHZhbHVlIDw8IEpTVmFsdWU6OmludDUyU2hp
ZnRBbW91bnQpKTsKKyAgICAgICAgc2V0U3RyaWN0SW50NTIobV9vdXQuY29uc3RJbnQ2NCh2YWx1
ZSkpOworICAgIH0KIAorICAgIHZvaWQgY29tcGlsZVdlYWtKU0NvbnN0YW50KCkKKyAgICB7Cisg
ICAgICAgIHNldEpTVmFsdWUod2Vha1BvaW50ZXIobV9ub2RlLT53ZWFrQ29uc3RhbnQoKSkpOwor
ICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVQaGFudG9tQXJndW1lbnRzKCkKICAgICB7CiAg
ICAgICAgIHNldEpTVmFsdWUobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZSgpKSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVXZWFrSlNDb25zdGFudCgpCisg
ICAgdm9pZCBjb21waWxlRG91YmxlUmVwKCkKICAgICB7Ci0gICAgICAgIHNldEpTVmFsdWUod2Vh
a1BvaW50ZXIobV9ub2RlLT53ZWFrQ29uc3RhbnQoKSkpOworICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAg
ICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBzZXREb3VibGUoanNWYWx1ZVRvRG91
YmxlKG1fbm9kZS0+Y2hpbGQxKCksIHZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEludDUyUmVwdXNlOiB7CisgICAgICAg
ICAgICBzZXREb3VibGUoc3RyaWN0SW50NTJUb0RvdWJsZShsb3dTdHJpY3RJbnQ1MihtX25vZGUt
PmNoaWxkMSgpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgdm9pZCBjb21waWxlVmFsdWVSZXAo
KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewor
ICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogeworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hE
b3VibGUobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7Cisg
ICAgICAgICAgICBzZXRKU1ZhbHVlKHN0cmljdEludDUyVG9KU1ZhbHVlKGxvd1N0cmljdEludDUy
KG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVJ
bnQ1MlJlcCgpCisgICAgeworICAgICAgICBzZXRTdHJpY3RJbnQ1MihtX291dC5zaWduRXh0KGxv
d0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291dC5pbnQ2NCkpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGNvbXBpbGVWYWx1ZVRvSW50MzIoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX25v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIEludDMyVXNlOgorICAgICAg
ICAgICAgc2V0SW50MzIobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAg
ICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0ludDMyKGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hp
bGQxKCkpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IERvdWJsZVJlcFVzZToKKyAgICAgICAgICAgIHNldEludDMyKGRvdWJsZVRvSW50MzIobG93RG91
YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBOb3RDZWxsVXNlOiB7Cisg
ICAgICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlID0gbV9pbnQzMlZhbHVlcy5nZXQobV9u
b2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7
CisgICAgICAgICAgICAgICAgc2V0SW50MzIodmFsdWUudmFsdWUoKSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhbHVl
ID0gbV9qc1ZhbHVlVmFsdWVzLmdldChtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAg
ICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBzZXRJbnQzMihudW1i
ZXJPck5vdENlbGxUb0ludDMyKG1fbm9kZS0+Y2hpbGQxKCksIHZhbHVlLnZhbHVlKCkpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgLy8gV2UnbGwgYmFzaWNhbGx5IGp1c3QgZ2V0IGhlcmUgZm9yIGNvbnN0YW50cy4gQnV0
IGl0J3MgZ29vZCB0byBoYXZlIHRoaXMKKyAgICAgICAgICAgIC8vIGNhdGNoLWFsbCBzaW5jZSB3
ZSBvZnRlbiBhZGQgbmV3IHJlcHJlc2VudGF0aW9ucyBpbnRvIHRoZSBtaXguCisgICAgICAgICAg
ICBzZXRJbnQzMigKKyAgICAgICAgICAgICAgICBudW1iZXJPck5vdENlbGxUb0ludDMyKAorICAg
ICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkMSgpLAorICAgICAgICAgICAgICAgICAgICBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbikpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBCb29sZWFuVXNlOgorICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuemVyb0V4dChsb3dCb29s
ZWFuKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291dC5pbnQzMikpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIHZvaWQgY29tcGlsZUdldEFyZ3VtZW50KCkKICAgICB7CiAgICAgICAgIFZhcmlhYmxl
QWNjZXNzRGF0YSogdmFyaWFibGUgPSBtX25vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwpAQCAt
OTY2LDcgKzEwMjMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgY2Fz
ZSBJbnQ1MlJlcFVzZTogewogICAgICAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobV9ub2Rl
LT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyKQogICAgICAgICAgICAgICAgICYmICFt
X3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDIoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyKSkg
ewogICAgICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwpAQCAtMTAxNiw3ICsxMDczLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAg
ICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAg
ICAgICAgICAgIExWYWx1ZSBDMSA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgICAgIExWYWx1ZSBDMiA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKTsKIApAQCAtMTA2
NSw3ICsxMTIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIGNhc2Ug
SW50NTJSZXBVc2U6IHsKICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAgICAgICAg
TFZhbHVlIGxlZnQgPSBsb3dXaGljaGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBraW5kKTsK
ICAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0ludDUyKG1fbm9kZS0+Y2hpbGQyKCksIG9w
cG9zaXRlKGtpbmQpKTsKQEAgLTEwOTIsNyArMTE0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNl
OiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBzZXREb3VibGUo
CiAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlTXVsKGxvd0RvdWJsZShtX25vZGUtPmNoaWxk
MSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTExOTUsNyArMTI1Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNh
c2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBzZXREb3VibGUobV9vdXQuZG91YmxlRGl2
KAogICAgICAgICAgICAgICAgIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91Ymxl
KG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyOTMsNyArMTM1
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAg
ICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OiB7CiAgICAgICAgICAgICBzZXREb3VibGUoCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91Ymxl
UmVtKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQy
KCkpKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEzMjEsNyArMTM3OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNh
c2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAg
IApAQCAtMTM3MSw3ICsxNDI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAg
Y2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIHNldERvdWJsZShtX291dC5kb3VibGVB
YnMobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtMTQxOCw3ICsxNDc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7
CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAgICAgICAgICAgIGlmICghbV9zdGF0ZS5m
b3JOb2RlKG1fbm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1MikpIHsKICAgICAg
ICAgICAgICAgICBJbnQ1MktpbmQga2luZDsKICAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUg
PSBsb3dXaGljaGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBraW5kKTsKQEAgLTE0MzgsNyAr
MTQ5NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVw
VXNlOiB7CiAgICAgICAgICAgICBzZXREb3VibGUobV9vdXQuZG91YmxlTmVnKGxvd0RvdWJsZSht
X25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0
OTgsMTEgKzE1NTUsNiBAQCBwcml2YXRlOgogICAgICAgICBzZXRJbnQzMih2YWx1ZSk7CiAgICAg
fQogICAgIAotICAgIHZvaWQgY29tcGlsZUludDMyVG9Eb3VibGUoKQotICAgIHsKLSAgICAgICAg
c2V0RG91YmxlKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSk7Ci0gICAgfQotICAgIAogICAg
IHZvaWQgY29tcGlsZUNoZWNrU3RydWN0dXJlKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBjZWxs
ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTIyMTMsNyArMjI2NSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgaWYgKGlzSW50KHR5cGUpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIExWYWx1ZSBpbnRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjaGlsZDMu
dXNlS2luZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBJbnQzMlVzZTogewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMy51c2VL
aW5kKCkgPT0gSW50MzJVc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50VmFsdWUg
PSBsb3dJbnQzMihjaGlsZDMpOwpAQCAtMjI0Niw3ICsyMjk4LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIExWYWx1ZSBkb3VibGVWYWx1ZSA9IGxvd0RvdWJsZShjaGlsZDMpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNDbGFtcGVk
KHR5cGUpKSB7CkBAIC0zMzI4LDggKzMzODAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGls
ZUNvbXBhcmVFcSgpCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQo
SW50MzJVc2UpCi0gICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5l
SW50VXNlKQotICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNl
KQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpCisg
ICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpCiAgICAg
ICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpCiAgICAgICAgICAg
ICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCb29sZWFuVXNlKQogICAgICAgICAgICAgfHwg
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpKSB7CkBAIC0zMzcxLDcgKzM0
MjMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsK
KyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAg
ICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd1do
aWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQpOwogICAgICAgICAgICAgTFZhbHVl
IHJpZ2h0ID0gbG93SW50NTIobV9ub2RlLT5jaGlsZDIoKSwga2luZCk7CkBAIC0zMzc5LDcgKzM0
MzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkgeworICAg
ICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKSkgewogICAgICAg
ICAgICAgc2V0Qm9vbGVhbigKICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVFcXVhbChsb3dE
b3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDEyMyw3ICs0MTc1LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7CisgICAgICAgIGlmIChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgICAgIEludDUyS2luZCBraW5k
OwogICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dXaGljaGV2ZXJJbnQ1MihtX25vZGUtPmNo
aWxkMSgpLCBraW5kKTsKICAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0ludDUyKG1fbm9k
ZS0+Y2hpbGQyKCksIGtpbmQpOwpAQCAtNDEzMSw3ICs0MTgzLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKERvdWJsZVJlcFVzZSkpIHsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5m
Y21wKHJlYWxDb25kaXRpb24sIGxlZnQsIHJpZ2h0KSk7CkBAIC00Mzg4LDcgKzQ0NDAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGxvd0Jvb2xlYW4obV9ub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgICAgICByZXR1cm4gbV9vdXQubm90WmVy
bzMyKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6
CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmRv
dWJsZU5vdEVxdWFsKGxvd0RvdWJsZShlZGdlKSwgbV9vdXQuZG91YmxlWmVybyk7CiAgICAgICAg
IGNhc2UgT2JqZWN0T3JPdGhlclVzZToKICAgICAgICAgICAgIHJldHVybiBtX291dC5iaXROb3Qo
CkBAIC00NzM0LDIxICs0Nzg2LDkgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgZW51bSBJ
bnQ1MktpbmQgeyBTdHJpY3RJbnQ1MiwgSW50NTIgfTsKLSAgICBMVmFsdWUgbG93SW50NTIoRWRn
ZSBlZGdlLCBJbnQ1MktpbmQga2luZCwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIExWYWx1ZSBsb3dJbnQ1MihFZGdlIGVkZ2Us
IEludDUyS2luZCBraW5kKQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2Rl
ID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5l
SW50VXNlKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7Ci0g
ICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChlZGdl
Lm5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoIXZhbHVlLmlzTWFjaGluZUludCgpKSB7Ci0gICAg
ICAgICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gbV9vdXQuaW50NjRaZXJvOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW50NjRfdCBy
ZXN1bHQgPSB2YWx1ZS5hc01hY2hpbmVJbnQoKTsKLSAgICAgICAgICAgIGlmIChraW5kID09IElu
dDUyKQotICAgICAgICAgICAgICAgIHJlc3VsdCA8PD0gSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3Vu
dDsKLSAgICAgICAgICAgIHJldHVybiBtX291dC5jb25zdEludDY0KHJlc3VsdCk7Ci0gICAgICAg
IH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2Up
OwogICAgICAgICAKICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZTsKICAgICAgICAgCkBA
IC00NzczLDI1ICs0ODEzLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXR1cm4gaW50
NTJUb1N0cmljdEludDUyKHZhbHVlLnZhbHVlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9pbnQzMlZhbHVlcy5nZXQoZWRnZS5u
b2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgIHJldHVy
biBzZXRJbnQ1MldpdGhTdHJpY3RWYWx1ZSgKLSAgICAgICAgICAgICAgICBlZGdlLm5vZGUoKSwg
bV9vdXQuc2lnbkV4dCh2YWx1ZS52YWx1ZSgpLCBtX291dC5pbnQ2NCksIGtpbmQpOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fc3RhdGUuZm9yTm9kZShl
ZGdlKS5tX3R5cGUgJiBTcGVjSW50NTIpKTsKLSAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9q
c1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVl
KSkgewotICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gdmFsdWUudmFsdWUoKTsKLSAg
ICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShi
b3hlZFJlc3VsdCksIGVkZ2UsIFNwZWNNYWNoaW5lSW50LCBpc05vdEludDMyKGJveGVkUmVzdWx0
KSk7Ci0gICAgICAgICAgICByZXR1cm4gc2V0SW50NTJXaXRoU3RyaWN0VmFsdWUoCi0gICAgICAg
ICAgICAgICAgZWRnZS5ub2RlKCksIG1fb3V0LnNpZ25FeHQodW5ib3hJbnQzMihib3hlZFJlc3Vs
dCksIG1fb3V0LmludDY0KSwga2luZCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKCEobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIFNwZWNNYWNoaW5l
SW50KSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5t
X3R5cGUpOwogICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwogICAgICAgICByZXR1cm4g
bV9vdXQuaW50NjRaZXJvOwogICAgIH0KQEAgLTQ5MzEsNzEgKzQ5NTQsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIG1fb3V0LmJvb2xlYW5GYWxzZTsKICAgICB9CiAgICAgCi0gICAgTFZh
bHVlIGxvd0RvdWJsZShFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1
dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93RG91YmxlKEVkZ2UgZWRn
ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24gfHwgaXNEb3VibGUoZWRnZS51c2VLaW5kKCkpKTsKLSAgICAgICAgCi0g
ICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAg
ICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgICAgICB0ZXJtaW5hdGUoVW5j
b3VudGFibGUpOwotICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5kb3VibGVaZXJvOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0RG91YmxlKHZhbHVlLmFz
TnVtYmVyKCkpOwotICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzRG91YmxlKGVk
Z2UudXNlS2luZCgpKSk7CiAgICAgICAgIAogICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVl
ID0gbV9kb3VibGVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlzVmFsaWQo
dmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlKCk7CiAgICAgICAgIAotICAg
ICAgICB2YWx1ZSA9IG1faW50MzJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYg
KGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuaW50
VG9Eb3VibGUodmFsdWUudmFsdWUoKSk7Ci0gICAgICAgICAgICBzZXREb3VibGUoZWRnZS5ub2Rl
KCksIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0SW50NTJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgp
KTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIHN0cmlj
dEludDUyVG9Eb3VibGUoZWRnZSwgdmFsdWUudmFsdWUoKSk7Ci0gICAgICAgIAotICAgICAgICB2
YWx1ZSA9IG1faW50NTJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFs
aWQodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDUyVG9Eb3VibGUoZWRnZSwg
aW50NTJUb1N0cmljdEludDUyKHZhbHVlLnZhbHVlKCkpKTsKLSAgICAgICAgCi0gICAgICAgIHZh
bHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1Zh
bGlkKHZhbHVlKSkgewotICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gdmFsdWUudmFs
dWUoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW50Q2FzZSA9IEZU
TF9ORVdfQkxPQ0sobV9vdXQsICgiRG91YmxlIHVuYm94aW5nIGludCBjYXNlIikpOwotICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgZG91YmxlQ2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRG91
YmxlIHVuYm94aW5nIGRvdWJsZSBjYXNlIikpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29u
dGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGUgdW5ib3hpbmcgY29udGlu
dWF0aW9uIikpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5icmFuY2goaXNOb3RJ
bnQzMihib3hlZFJlc3VsdCksIHVuc3VyZShkb3VibGVDYXNlKSwgdW5zdXJlKGludENhc2UpKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5h
cHBlbmRUbyhpbnRDYXNlLCBkb3VibGVDYXNlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgaW50VG9Eb3VibGUgPSBtX291dC5hbmNob3IoCi0gICAgICAgICAgICAg
ICAgbV9vdXQuaW50VG9Eb3VibGUodW5ib3hJbnQzMihib3hlZFJlc3VsdCkpKTsKLSAgICAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAganNWYWx1ZVZhbHVl
KGJveGVkUmVzdWx0KSwgZWRnZSwgU3BlY0Z1bGxOdW1iZXIsIGlzQ2VsbE9yTWlzYyhib3hlZFJl
c3VsdCkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayB1bmJveGVk
RG91YmxlID0gbV9vdXQuYW5jaG9yKHVuYm94RG91YmxlKGJveGVkUmVzdWx0KSk7Ci0gICAgICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQucGhpKG1fb3V0LmRvdWJsZVR5cGUsIGlu
dFRvRG91YmxlLCB1bmJveGVkRG91YmxlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc2V0
RG91YmxlKGVkZ2Uubm9kZSgpLCByZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3N0YXRlLmZv
ck5vZGUoZWRnZSkubV90eXBlICYgU3BlY0Z1bGxOdW1iZXIpKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUpOwogICAgICAgICB0ZXJtaW5hdGUo
VW5jb3VudGFibGUpOwogICAgICAgICByZXR1cm4gbV9vdXQuZG91YmxlWmVybzsKICAgICB9CkBA
IC01MDAzLDYgKzQ5NzAsOCBAQCBwcml2YXRlOgogICAgIExWYWx1ZSBsb3dKU1ZhbHVlKEVkZ2Ug
ZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1
bGF0aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzRG91YmxlKGVkZ2UudXNlS2luZCgpKSk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpICE9IEludDUyUmVwVXNlKTsKICAgICAgICAg
CiAgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKQogICAgICAgICAgICAgcmV0dXJuIG1f
b3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQo
ZWRnZS5ub2RlKCkpKSk7CkBAIC01MDE4LDE0ICs0OTg3LDYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZhbHVlID0g
bV9zdHJpY3RJbnQ1MlZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxp
ZCh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gc3RyaWN0SW50NTJUb0pTVmFsdWUodmFsdWUu
dmFsdWUoKSk7Ci0gICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1faW50NTJWYWx1ZXMuZ2V0KGVk
Z2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQotICAgICAgICAgICAgcmV0
dXJuIHN0cmljdEludDUyVG9KU1ZhbHVlKGludDUyVG9TdHJpY3RJbnQ1Mih2YWx1ZS52YWx1ZSgp
KSk7Ci0gICAgICAgIAogICAgICAgICB2YWx1ZSA9IG1fYm9vbGVhblZhbHVlcy5nZXQoZWRnZS5u
b2RlKCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKICAgICAgICAgICAgIExWYWx1
ZSByZXN1bHQgPSBib3hCb29sZWFuKHZhbHVlLnZhbHVlKCkpOwpAQCAtNTAzMywxMyArNDk5NCw2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICB2YWx1ZSA9IG1fZG91YmxlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0g
ICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IGJveERvdWJsZSh2YWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgICAgIHNldEpTVmFsdWUoZWRnZS5u
b2RlKCksIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0g
ICAgICAgIAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CkBAIC01MDk5LDIzICs1MDUzLDYgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuIG1fb3V0LnBoaShtX291dC5pbnQ2NCwgcmVzdWx0cyk7CiAgICAgfQogICAgIAotICAg
IExWYWx1ZSBzZXRJbnQ1MldpdGhTdHJpY3RWYWx1ZShOb2RlKiBub2RlLCBMVmFsdWUgdmFsdWUs
IEludDUyS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAg
IGNhc2UgU3RyaWN0SW50NTI6Ci0gICAgICAgICAgICBzZXRTdHJpY3RJbnQ1Mihub2RlLCB2YWx1
ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2Fz
ZSBJbnQ1MjoKLSAgICAgICAgICAgIHZhbHVlID0gc3RyaWN0SW50NTJUb0ludDUyKHZhbHVlKTsK
LSAgICAgICAgICAgIHNldEludDUyKG5vZGUsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiB2
YWx1ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgTFZhbHVlIHN0cmljdElu
dDUyVG9JbnQ1MihMVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuc2hs
KHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpKTsKQEAg
LTUxNDcsNiArNTA4NCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQu
dGVzdE5vblplcm82NChqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpOwogICAgIH0KKyAgICAKICAg
ICBMVmFsdWUgdW5ib3hEb3VibGUoTFZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAgICByZXR1
cm4gbV9vdXQuYml0Q2FzdChtX291dC5hZGQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKSwgbV9v
dXQuZG91YmxlVHlwZSk7CkBAIC01MTU1LDYgKzUwOTMsMzkgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX291dC5zdWIobV9vdXQuYml0Q2FzdChkb3VibGVWYWx1ZSwgbV9vdXQu
aW50NjQpLCBtX3RhZ1R5cGVOdW1iZXIpOwogICAgIH0KKyAgICBMVmFsdWUganNWYWx1ZVRvRG91
YmxlKEVkZ2UgZWRnZSwgTFZhbHVlIGJveGVkVmFsdWUpCisgICAgeworICAgICAgICBMQmFzaWNC
bG9jayBpbnRDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGVSZXAgdW5ib3hpbmcg
aW50IGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoIkRvdWJsZVJlcCB1bmJveGluZyBkb3VibGUgY2FzZSIpKTsKKyAgICAgICAg
TEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGVS
ZXAgdW5ib3hpbmcgY29udGludWF0aW9uIikpOworICAgICAgICAgICAgCisgICAgICAgIExWYWx1
ZSBpc05vdEludDMyOworICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2so
ZWRnZSwgU3BlY0ludDMyKSkKKyAgICAgICAgICAgIGlzTm90SW50MzIgPSBtX291dC5ib29sZWFu
RmFsc2U7CisgICAgICAgIGVsc2UgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVk
Z2UsIH5TcGVjSW50MzIpKQorICAgICAgICAgICAgaXNOb3RJbnQzMiA9IG1fb3V0LmJvb2xlYW5U
cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpc05vdEludDMyID0gdGhpcy0+aXNOb3RJ
bnQzMihib3hlZFZhbHVlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIsIHVuc3Vy
ZShkb3VibGVDYXNlKSwgdW5zdXJlKGludENhc2UpKTsKKyAgICAgICAgICAgIAorICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGludENhc2UsIGRvdWJsZUNhc2Up
OworICAgICAgICAgICAgCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGludFRvRG91YmxlID0gbV9v
dXQuYW5jaG9yKAorICAgICAgICAgICAgbV9vdXQuaW50VG9Eb3VibGUodW5ib3hJbnQzMihib3hl
ZFZhbHVlKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAg
ICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKKyAg
ICAgICAgICAgIAorICAgICAgICBGVExfVFlQRV9DSEVDSygKKyAgICAgICAgICAgIGpzVmFsdWVW
YWx1ZShib3hlZFZhbHVlKSwgZWRnZSwgU3BlY0J5dGVjb2RlTnVtYmVyLCBpc0NlbGxPck1pc2Mo
Ym94ZWRWYWx1ZSkpOworICAgICAgICAgICAgCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHVuYm94
ZWREb3VibGUgPSBtX291dC5hbmNob3IodW5ib3hEb3VibGUoYm94ZWRWYWx1ZSkpOworICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAKKyAgICAgICAg
cmV0dXJuIG1fb3V0LnBoaShtX291dC5kb3VibGVUeXBlLCBpbnRUb0RvdWJsZSwgdW5ib3hlZERv
dWJsZSk7CisgICAgfQogICAgIAogICAgIExWYWx1ZSBpc051bWJlcihMVmFsdWUganNWYWx1ZSkK
ICAgICB7CkBAIC01MjI2LDggKzUxOTcsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFVudHlw
ZWRVc2U6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBLbm93bkludDMyVXNlOgot
ICAgICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgogICAgICAgICBjYXNlIEtub3duU3RyaW5nVXNl
OgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToK
ICAgICAgICAgICAgIEFTU0VSVCghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKQEAgLTUyNjAsMTQg
KzUyMzIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVz
ZToKICAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09yU3RyaW5nT2JqZWN0KGVkZ2UpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgICAg
IHNwZWN1bGF0ZVJlYWxOdW1iZXIoZWRnZSk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVOdW1iZXIoZWRnZSk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgotICAgICAgICAgICAg
c3BlY3VsYXRlTWFjaGluZUludChlZGdlKTsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNl
OgorICAgICAgICAgICAgc3BlY3VsYXRlRG91YmxlUmVhbChlZGdlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVCb29s
ZWFuKGVkZ2UpOwpAQCAtNTUyOSwxNCArNTQ5OCwxMSBAQCBwcml2YXRlOgogICAgIAogICAgIHZv
aWQgc3BlY3VsYXRlTnVtYmVyKEVkZ2UgZWRnZSkKICAgICB7Ci0gICAgICAgIC8vIERvIGFuIGVh
cmx5IHJldHVybiBoZXJlIGJlY2F1c2UgbG93RG91YmxlKCkgY2FuIGNyZWF0ZSBhIGxvdCBvZiBj
b250cm9sIGZsb3cuCi0gICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhl
ZGdlKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGxvd0RvdWJsZShl
ZGdlKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFs
dWUpLCBlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIsIGlzTm90TnVtYmVyKHZhbHVlKSk7CiAgICAg
fQogICAgIAotICAgIHZvaWQgc3BlY3VsYXRlUmVhbE51bWJlcihFZGdlIGVkZ2UpCisgICAgdm9p
ZCBzcGVjdWxhdGVEb3VibGVSZWFsKEVkZ2UgZWRnZSkKICAgICB7CiAgICAgICAgIC8vIERvIGFu
IGVhcmx5IHJldHVybiBoZXJlIGJlY2F1c2UgbG93RG91YmxlKCkgY2FuIGNyZWF0ZSBhIGxvdCBv
ZiBjb250cm9sIGZsb3cuCiAgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVj
ayhlZGdlKSkKQEAgLTU1NDQsMTkgKzU1MTAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAg
ICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0RvdWJsZShlZGdlKTsKICAgICAgICAgRlRMX1RZUEVfQ0hF
Q0soCi0gICAgICAgICAgICBkb3VibGVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNGdWxsUmVhbE51
bWJlciwKKyAgICAgICAgICAgIGRvdWJsZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0RvdWJsZVJl
YWwsCiAgICAgICAgICAgICBtX291dC5kb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKHZhbHVlLCB2
YWx1ZSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSBl
ZGdlKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVk
Z2UpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgSW50NTJLaW5kIGtp
bmQ7Ci0gICAgICAgIGxvd1doaWNoZXZlckludDUyKGVkZ2UsIGtpbmQpOwotICAgIH0KLSAgICAK
ICAgICB2b2lkIHNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAgIHsKICAgICAgICAgbG93
Qm9vbGVhbihlZGdlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVG
b3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFs
dWVGb3JtYXQuY3BwCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFZhbHVlRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCB2
b2lkIHJlYm94QWNjb3JkaW5nVG9Gb3JtYXQoCiAgICAgY2FzZSBWYWx1ZUZvcm1hdERvdWJsZTog
ewogICAgICAgICBqaXQubW92ZURvdWJsZVRvNjQoRlBSSW5mbzo6ZnBSZWdUMCwgc2NyYXRjaDEp
OwogICAgICAgICBqaXQubW92ZTY0VG9Eb3VibGUodmFsdWUsIEZQUkluZm86OmZwUmVnVDApOwor
ICAgICAgICBqaXQuc2FuaXRpemVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgIGpp
dC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgdmFsdWUpOwogICAgICAgICBqaXQubW92ZTY0
VG9Eb3VibGUoc2NyYXRjaDEsIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICBicmVhazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJl
dmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsMTQgQEAgVmVjdG9yPEJ5dGVjb2Rl
QW5kTWFjaGluZU9mZnNldD4mIEFzc2VtYgogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlOwogfQogCit2b2lkIEFzc2VtYmx5SGVscGVyczo6c2FuaXRpemVEb3VibGUoRlBSUmVnIGZw
cikKK3sKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3ROYU4gPSBicmFuY2hEb3VibGUoRG91
YmxlRXF1YWwsIGZwciwgZnByKTsKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9IFFOYU47
CisgICAgbG9hZERvdWJsZSgmTmFOLCBmcHIpOworICAgIG5vdE5hTi5saW5rKHRoaXMpOworfQor
CiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQogdm9pZCBBc3NlbWJseUhlbHBlcnM6OnNldFNh
bXBsaW5nRmxhZyhpbnQzMl90IGZsYWcpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNyw2
ICs0MTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBqaXRBc3NlcnRUYWdzSW5QbGFjZSgpIHsgfQog
ICAgIHZvaWQgaml0QXNzZXJ0QXJndW1lbnRDb3VudFNhbmUoKSB7IH0KICNlbmRpZgorICAgIAor
ICAgIHZvaWQgc2FuaXRpemVEb3VibGUoRlBSUmVnIGZwcik7CiAKICAgICAvLyBUaGVzZSBtZXRo
b2RzIGNvbnZlcnQgYmV0d2VlbiBkb3VibGVzLCBhbmQgZG91YmxlcyBib3hlZCBhbmQgSlNWYWx1
ZXMuCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTQzNSw2ICs0MzcsMTEgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gZnByOwogICAgIH0KICAgICAKKyAgICB2b2lkIGJveERvdWJsZShGUFJSZWcg
ZnByLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyAgICAgICAgYm94RG91YmxlKGZwciwgcmVn
cy5ncHIoKSk7CisgICAgfQorICAgIAogICAgIC8vIEhlcmUgYXJlIHBvc3NpYmxlIGFycmFuZ2Vt
ZW50cyBvZiBzb3VyY2UsIHRhcmdldCwgc2NyYXRjaDoKICAgICAvLyAtIHNvdXJjZSwgdGFyZ2V0
LCBzY3JhdGNoIGNhbiBhbGwgYmUgc2VwYXJhdGUgcmVnaXN0ZXJzLgogICAgIC8vIC0gc291cmNl
IGFuZCB0YXJnZXQgY2FuIGJlIHRoZSBzYW1lIGJ1dCBzY3JhdGNoIGlzIHNlcGFyYXRlLgpAQCAt
NDY3LDYgKzQ3NCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtb3ZlSW50c1RvRG91Ymxl
KHBheWxvYWRHUFIsIHRhZ0dQUiwgZnByLCBzY3JhdGNoRlBSKTsKICAgICB9CisgICAgCisgICAg
dm9pZCBib3hEb3VibGUoRlBSUmVnIGZwciwgSlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7CisgICAg
ICAgIGJveERvdWJsZShmcHIsIHJlZ3MudGFnR1BSKCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAg
ICB9CiAjZW5kaWYKICAgICAKICAgICBlbnVtIEV4Y2VwdGlvbkNoZWNrS2luZCB7IE5vcm1hbEV4
Y2VwdGlvbkNoZWNrLCBJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229253</attachid>
            <date>2014-04-13 18:29:31 -0700</date>
            <delta_ts>2014-04-13 23:59:42 -0700</delta_ts>
            <desc>it compiles!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>151244</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3MjA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MSBA
QAorMjAxNC0wNC0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBJUiBzaG91bGQga2VlcCB0aGUgZGF0YSBmbG93IG9mIGRvdWJsZXMgYW5kIGludDUyJ3Mg
c2VwYXJhdGUgZnJvbSB0aGUgZGF0YSBmbG93IG9mIEpTVmFsdWUncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBXb3JrIGluIHByb2dyZXNz
LgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OnNldENvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0VmFsdWUuaDoKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkNTRVBoYXNlOjpjb25zdGFudENTRSk6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhh
c2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6aW50MzJU
b0RvdWJsZUNTRSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJl
cml6ZSk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6Zml4dXBTZXRMb2NhbHNJbkJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpvYnNlcnZlVXNlS2luZE9uTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
Zml4SW50RWRnZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRvTWFr
ZUludGVnZXJBZGQpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmluamVjdFR5cGVD
b252ZXJzaW9uc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnRyeVRv
UmVsYXhSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6aW5q
ZWN0VHlwZUNvbnZlcnNpb25zRm9yRWRnZSk6CisgICAgICAgICogZGZnL0RGR0ZsdXNoRm9ybWF0
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6cmVzdWx0Rm9yKToKKyAgICAgICAgKEpTQzo6REZHOjp1
c2VLaW5kRm9yKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OnNldFJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ29uc3RhbnQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb0NvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpoYXNJbnQ1MlJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6aGFzRG91YmxlUmVzdWx0KToKKyAgICAgICAgKiBkZmcvREZHTm9kZUZsYWdzLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpkdW1wTm9kZUZsYWdzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZUZs
YWdzLmg6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGls
ZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAg
ICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTYWZlVG9FeGVj
dXRlRWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50U2F2ZVBsYW5Gb3JHUFIpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpzaWxlbnRTYXZlUGxhbkZvckZQUik6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwpOgorICAgICAgICAoSlNDOjpERkc6OkpT
VmFsdWVSZWdzVGVtcG9yYXJ5OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeSk6CisgICAgICAgIChKU0M6
OkRGRzo6SlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6On5KU1ZhbHVlUmVnc1RlbXBvcmFyeSk6CisgICAg
ICAgIChKU0M6OkRGRzo6SlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6OnJlZ3MpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2gpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXApOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVSZXApOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBl
ZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsT25GbG9hdFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQWRkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUFyaXRoU3ViKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFy
aXRoTmVnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFy
aXRoTXVsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRo
RGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9k
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcik6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZURvdWJsZVJlYWwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW50MzJUb0RvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU1hY2hpbmVJbnQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVSZWFsTnVtYmVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Ym94RG91YmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6anNWYWx1ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRlSW50NTJPcGVyYW5kOjpTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZDo6U3BlY3VsYXRlU3RyaWN0SW50NTJPcGVy
YW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQ6
OlNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRlRG91YmxlT3BlcmFuZDo6U3BlY3VsYXRlRG91YmxlT3BlcmFuZCk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpmaWxsSlNWYWx1ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29udmVydFRvRG91YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5jcHA6
CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdVc2VLaW5k
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6CisgICAgICAgIChKU0M6OkRG
Rzo6c2hvdWxkTm90SGF2ZVR5cGVDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6aXNOdW1lcmlj
YWwpOgorICAgICAgICAoSlNDOjpERkc6OmlzRG91YmxlKToKKyAgICAgICAgKiBkZmcvREZHVmFs
aWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6CisgICAg
ICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29t
cGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y3JlYXRlUGhpVmFyaWFibGVzKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6
Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVXBzaWxvbik6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVQaGkpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlRG91YmxlQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlSW50NTJDb25zdGFudCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVXZWFrSlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVEb3VibGVSZXApOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjpjb21waWxlVmFsdWVSZXApOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlSW50NTJSZXApOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlVmFsdWVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZUFyaXRoQWRkT3JTdWIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlQXJpdGhNdWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlQXJpdGhEaXYpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlQXJpdGhNb2QpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlQXJpdGhNaW5Pck1heCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OmNvbXBpbGVBcml0aEFicyk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNv
bXBpbGVBcml0aE5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNv
bXBpbGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVDb21wYXJlRXEpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
Q29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGFyZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmJvb2xpZnkpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dJbnQ1Mik6CisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd1N0cmljdEludDUyKToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6bG93V2hpY2hldmVySW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6
Okxvd2VyREZHVG9MTFZNOjpsb3dEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpsb3dKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
c3RyaWN0SW50NTJUb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OmpzVmFsdWVUb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNw
ZWN1bGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZU51
bWJlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZURvdWJs
ZVJlYWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlSW50NTJU
b1ZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZUludDMyVG9Eb3VibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpzZXRJbnQ1MldpdGhTdHJpY3RWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZVJlYWxOdW1iZXIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVNYWNoaW5lSW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBmdGwvRlRMVmFsdWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OnJlYm94QWNjb3JkaW5nVG9Gb3JtYXQpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnNhbml0aXplRG91YmxlKToK
KyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5
SGVscGVyczo6Ym94RG91YmxlKToKKwogMjAxNC0wNC0wOCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFJld3JpdGUgRnVuY3Rpb24uYmluZCBhcyBhIGJ1aWx0aW4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkRGR0Nv
bW1vbi5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIK
LSNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRl
ICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNjcyMDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDEwICs0NSw2IEBACiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZH
Q29tbW9uRGF0YS5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCi0jaW5jbHVkZSAiREZH
TWluaWZpZWRHcmFwaC5oIgotI2luY2x1ZGUgIkRGR09TUkVudHJ5LmgiCi0jaW5jbHVkZSAiREZH
T1NSRXhpdC5oIgotI2luY2x1ZGUgIkRGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaCIKICNpbmNsdWRl
ICJEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJFdmFsQ29kZUNhY2hl
LmgiCiAjaW5jbHVkZSAiRXhlY3V0aW9uQ291bnRlci5oIgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDE2
NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xNTksNyArMTU5LDkgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIHNldENvbnN0YW50KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCB2YWx1ZSk7CisgICAgICAgIEFic3RyYWN0VmFs
dWUmIGFic3RyYWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUpOworICAgICAgICBhYnN0cmFjdFZhbHVl
LnNldChtX2dyYXBoLCB2YWx1ZSk7CisgICAgICAgIGFic3RyYWN0VmFsdWUuZml4VHlwZUZvclJl
cHJlc2VudGF0aW9uKG5vZGUpOwogICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRy
dWUpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE2NzIw
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw4IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkp
IHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBj
YXNlIEludDUyQ29uc3RhbnQ6CiAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAgICBjYXNlIFBo
YW50b21Bcmd1bWVudHM6IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9n
cmFwaC52YWx1ZU9mSlNDb25zdGFudChub2RlKSk7CkBAIC0zMDcsMzkgKzMwOSwzOSBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICAgICAgCi0gICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7CisgICAgY2FzZSBEb3VibGVS
ZXA6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZh
bHVlKCk7CiAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7Ci0gICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCBj
aGlsZC5hc051bWJlcigpKSk7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBjaGlsZCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAoaXNJbnQzMlNwZWN1
bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZVJlYWwpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CisgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpOworICAgICAgICBm
b3JOb2RlKG5vZGUpLmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEludDUyVG9Eb3VibGU6IHsKKyAgICBjYXNl
IEludDUyUmVwOiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBJbnQzMlVzZSk7CisgICAgICAgIAogICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxk
LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzSW50MzIoKSkgewog
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwor
ICAgICAgICAKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBJbnQ1MlRvVmFsdWU6IHsKLSAg
ICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0g
ICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICBzZXRD
b25zdGFudChub2RlLCBjaGlsZCk7CisgICAgY2FzZSBWYWx1ZVJlcDogeworICAgICAgICBKU1Zh
bHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYg
KHZhbHVlKSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCB2YWx1ZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlOwotICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ1
MikKLSAgICAgICAgICAgIHR5cGUgPSAodHlwZSB8IFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91
YmxlKSAmIH5TcGVjSW50NTI7Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSh0eXBlKTsK
KyAgICAgICAgCisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShmb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKS5tX3R5cGUpOworICAgICAgICBmb3JOb2RlKG5vZGUpLmZpeFR5cGVGb3JSZXByZXNl
bnRhdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTM3MCw3
ICszNzIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgICAgICBpZiAoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpCiAgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAg
ICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTWFjaGluZUludCgpICYmIHJp
Z2h0LmlzTWFjaGluZUludCgpKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihsZWZ0LmFzTWFjaGluZUludCgpICsgcmlnaHQuYXNNYWNoaW5lSW50KCkpOwogICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNNYWNoaW5lSW50KCkpIHsKQEAgLTM4Myw3ICszODUs
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAg
ICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjSW50MzIpKQogICAg
ICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAg
ICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0Lmlz
TnVtYmVyKCkpIHsKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihs
ZWZ0LmFzTnVtYmVyKCkgKyByaWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC00MjYsNyArNDI4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhN
b2RlKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBjYXNlIElu
dDUyUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc01hY2hp
bmVJbnQoKSAmJiByaWdodC5pc01hY2hpbmVJbnQoKSkgewogICAgICAgICAgICAgICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIobGVmdC5hc01hY2hpbmVJbnQoKSAtIHJpZ2h0LmFzTWFjaGlu
ZUludCgpKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmlzTWFjaGluZUludCgpIHx8ICFz
aG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSkgewpAQCAtNDM5LDcgKzQ0MSw3
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAg
ICAgICB8fCAhZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuaXNUeXBlKFNwZWNJbnQzMikpCiAgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAg
ICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNO
dW1iZXIoKSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGxl
ZnQuYXNOdW1iZXIoKSAtIHJpZ2h0LmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTQ3Nyw3ICs0NzksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1v
ZGUoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIGNhc2UgSW50
NTJSZXBVc2U6CiAgICAgICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNNYWNoaW5lSW50KCkp
IHsKICAgICAgICAgICAgICAgICBkb3VibGUgZG91YmxlUmVzdWx0OwogICAgICAgICAgICAgICAg
IGlmIChzaG91bGRDaGVja05lZ2F0aXZlWmVybyhub2RlLT5hcml0aE1vZGUoKSkpCkBAIC00OTYs
NyArNDk4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
ICAgICAgICAgaWYgKHNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTW9kZSgpKSkK
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToK
ICAgICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CiAgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoLWNoaWxkLmFzTnVtYmVyKCkpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTUzMyw3ICs1MzUsNyBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2hlY2tPdmVy
Zmxvdyhub2RlLT5hcml0aE1vZGUoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhp
dCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6
CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdo
dCAmJiBsZWZ0LmlzTWFjaGluZUludCgpICYmIHJpZ2h0LmlzTWFjaGluZUludCgpKSB7CiAgICAg
ICAgICAgICAgICAgZG91YmxlIGRvdWJsZVJlc3VsdCA9IGxlZnQuYXNOdW1iZXIoKSAqIHJpZ2h0
LmFzTnVtYmVyKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRDaGVja05lZ2F0aXZlWmVy
byhub2RlLT5hcml0aE1vZGUoKSkpCkBAIC01NDcsNyArNTQ5LDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRU
eXBlKFNwZWNJbnQ1Mik7CiAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERv
dWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1i
ZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNOdW1iZXIobGVmdC5hc051bWJlcigpICogcmlnaHQuYXNOdW1iZXIoKSkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDcgKzU4Nyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjSW50MzIpOwogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVy
KCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5v
ZGUsIGpzTnVtYmVyKGxlZnQuYXNOdW1iZXIoKSAvIHJpZ2h0LmFzTnVtYmVyKCkpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKQEAgLTYxOSw3ICs2MjEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0ludDMyKTsKICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91Ymxl
UmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigp
ICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2Rl
LCBqc051bWJlcihmbW9kKGxlZnQuYXNOdW1iZXIoKSwgcmlnaHQuYXNOdW1iZXIoKSkpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTY0NSw3ICs2NDcsNyBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91
YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJl
cigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgICAgICBkb3VibGUgYSA9IGxl
ZnQuYXNOdW1iZXIoKTsKICAgICAgICAgICAgICAgICBkb3VibGUgYiA9IHJpZ2h0LmFzTnVtYmVy
KCk7CkBAIC02NzMsNyArNjc1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAg
ICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAg
ICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051
bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgZG91YmxlIGEgPSBsZWZ0LmFzTnVtYmVyKCk7CiAg
ICAgICAgICAgICAgICAgZG91YmxlIGIgPSByaWdodC5hc051bWJlcigpOwpAQCAtNzAzLDcgKzcw
NSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICAgICAgbm9kZS0+
c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51bWJl
clVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAoY2hpbGQg
JiYgY2hpbGQuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUs
IGpzTnVtYmVyKGNoaWxkLmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTc2OSw3ICs3NzEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAg
ICAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICAgICAgY2FzZSBJbnQzMlVzZToKLSAgICAg
ICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAg
ICAgICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAgICAgICAgICBjYXNlIFN0cmluZ1VzZToK
ICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjcs
OCArNjcsNiBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIEpTCiAgICAg
fQogICAgIAogICAgIG1fdHlwZSA9IHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKTsKLSAgICBp
ZiAobV90eXBlID09IFNwZWNJbnQ1MkFzRG91YmxlKQotICAgICAgICBtX3R5cGUgPSBTcGVjSW50
NTI7CiAgICAgbV92YWx1ZSA9IHZhbHVlOwogICAgIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsK
QEAgLTg1LDYgKzgzLDMzIEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwg
U3QKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiB9CiAKK3ZvaWQgQWJzdHJhY3RWYWx1ZTo6Zml4
VHlwZUZvclJlcHJlc2VudGF0aW9uKE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUtPmhhc0Rv
dWJsZVJlc3VsdCgpKSB7CisgICAgICAgIGlmIChtX3R5cGUgJiBTcGVjTWFjaGluZUludCkgewor
ICAgICAgICAgICAgbV90eXBlICY9IH5TcGVjTWFjaGluZUludDsKKyAgICAgICAgICAgIG1fdHlw
ZSB8PSBTcGVjSW50NTJBc0RvdWJsZTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VS
VCghKG1fdHlwZSAmIH5TcGVjRG91YmxlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgaWYgKG5vZGUtPmhhc0ludDUyUmVzdWx0KCkpIHsKKyAgICAgICAgaWYgKG1fdHlwZSAm
IFNwZWNJbnQ1MkFzRG91YmxlKSB7CisgICAgICAgICAgICBtX3R5cGUgJj0gflNwZWNJbnQ1MkFz
RG91YmxlOworICAgICAgICAgICAgbV90eXBlIHw9IFNwZWNJbnQ1MjsKKyAgICAgICAgfQorICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghKG1fdHlwZSAmIH5TcGVjTWFjaGluZUludCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChtX3R5cGUgJiBTcGVjSW50NTIpIHsKKyAg
ICAgICAgbV90eXBlICY9IH5TcGVjSW50NTI7CisgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTJB
c0RvdWJsZTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlQoIShtX3R5cGUgJiB+U3BlY0hlYXBU
b3ApKTsKK30KKwogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXIoR3JhcGgm
IGdyYXBoLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQogewogICAgIGlmIChpc0NsZWFyKCkp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAko
cmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzM5
LDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgR3JhcGg7Citz
dHJ1Y3QgTm9kZTsKIAogc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIEFic3RyYWN0VmFsdWUo
KQpAQCAtMTI5LDYgKzEzMCw4IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgY2hl
Y2tDb25zaXN0ZW5jeSgpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGZpeFR5cGVGb3JSZXByZXNl
bnRhdGlvbihOb2RlKik7CisgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFic3RyYWN0
VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhl
ci5tX3R5cGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3Bw
CShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYxLDI5ICsx
NjEsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIAotICAgIE5v
ZGUqIGludDMyVG9Eb3VibGVDU0UoTm9kZSogbm9kZSkKLSAgICB7Ci0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBvdGhl
ck5vZGUgPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAob3RoZXJOb2Rl
ID09IG5vZGUtPmNoaWxkMSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAg
ICAgc3dpdGNoIChvdGhlck5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSW50MzJUb0Rv
dWJsZToKLSAgICAgICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5jaGlsZDEoKS5zYW5pdGl6ZWQo
KSA9PSBub2RlLT5jaGlsZDEoKS5zYW5pdGl6ZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG90aGVyTm9kZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAogICAgIE5vZGUqIGNvbnN0YW50Q1NFKE5vZGUq
IG5vZGUpCiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBlbmRJbmRleEZvclB1cmVD
U0UoKTsgaS0tOykgewogICAgICAgICAgICAgTm9kZSogb3RoZXJOb2RlID0gbV9jdXJyZW50Qmxv
Y2stPmF0KGkpOwotICAgICAgICAgICAgaWYgKG90aGVyTm9kZS0+b3AoKSAhPSBKU0NvbnN0YW50
KQorICAgICAgICAgICAgaWYgKG90aGVyTm9kZS0+b3AoKSAhPSBub2RlLT5vcCgpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAob3RoZXJO
b2RlLT5jb25zdGFudE51bWJlcigpICE9IG5vZGUtPmNvbnN0YW50TnVtYmVyKCkpCkBAIC0xMTQ4
LDggKzExMzAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENvbXBhcmVFcUNvbnN0YW50Ogog
ICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICAgICAgY2FzZSBNYWtlUm9wZToKLSAgICAg
ICAgY2FzZSBJbnQ1MlRvRG91YmxlOgotICAgICAgICBjYXNlIEludDUyVG9WYWx1ZToKKyAgICAg
ICAgY2FzZSBEb3VibGVSZXA6CisgICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgIGNhc2Ug
SW50NTJSZXA6CiAgICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQocHVyZUNT
RShub2RlKSk7CkBAIC0xMTc3LDEyICsxMTYwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBJbnQzMlRvRG91Ymxl
OgotICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KGludDMyVG9Eb3VibGVD
U0Uobm9kZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBHZXRDYWxsZWU6CiAgICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9u
KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI2OCw2ICsxMjQ1LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICAg
ICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAg
ICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgc3RyYW5nZSwgYnV0IG5lY2Vzc2FyeS4g
U29tZSBwaGFzZXMgd2lsbCBjb252ZXJ0IG5vZGVzIHRvIGNvbnN0YW50cywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTY3MjA0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCi0jaW5jbHVkZSAiREZHTm9k
ZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkludHJpbnNpYy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4IEBAIHZv
aWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAKICAgICBzd2l0Y2gg
KG5vZGUtPm9wKCkpIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgY2FzZSBEb3VibGVDb25z
dGFudDoKKyAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoK
ICAgICBjYXNlIElkZW50aXR5OgogICAgIGNhc2UgUGhhbnRvbToKQEAgLTEyMywxNSArMTI1LDE1
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIElz
TnVtYmVyOgogICAgIGNhc2UgSXNTdHJpbmc6CiAgICAgY2FzZSBMb2dpY2FsTm90OgotICAgIGNh
c2UgSW50MzJUb0RvdWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgotICAgIGNh
c2UgSW50NTJUb0RvdWJsZToKLSAgICBjYXNlIEludDUyVG9WYWx1ZToKICAgICBjYXNlIENoZWNr
SW5Cb3VuZHM6CiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgIGNhc2UgVUlu
dDMyVG9OdW1iZXI6CiAgICAgY2FzZSBEb3VibGVBc0ludDMyOgogICAgIGNhc2UgQ2hlY2s6Cisg
ICAgY2FzZSBEb3VibGVSZXA6CisgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICBjYXNlIEludDUyUmVw
OgogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgTW92SGludDoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTY3
MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIzLDggKzEyMywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlQ2Fu
U3BlY3VsYXRlSW50MzIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAg
bm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKLSAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9k
ZShBcml0aDo6RG9PdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5v
ZGVSZXN1bHREb3VibGUpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIApAQCAtMTM1LDEwICsxMzcsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpz
aG91bGRTcGVjdWxhdGVOdW1iZXJFeHBlY3RpbmdEZWZpbmVkKG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVt
YmVyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNl
Pihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3AoQXJpdGhBZGQp
OwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVDbG9iYmVyc1dvcmxkKTsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJl
c3VsdERvdWJsZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTE3Nyw4ICsxODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEFyaXRo
U3ViOiB7CiAgICAgICAgICAgICBpZiAoYXR0ZW1wdFRvTWFrZUludGVnZXJBZGQobm9kZSkpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMTk0LDE0ICsxOTgsMTYgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChtX2dyYXBoLm5lZ2F0ZVNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRo
Tm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJp
dGg6OkNoZWNrT3ZlcmZsb3cpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93QW5kTmVnYXRpdmVa
ZXJvKTsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVk
Z2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJs
ZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5v
ZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIApAQCAtMjE4LDE2ICsyMjQsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX2dyYXBoLm11bFNob3VsZFNwZWN1
bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJ
bnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJ
bnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVw
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVz
ZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGlmIChieXRlY29kZUNhbklnbm9y
ZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6
Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0
UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBm
aXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+
c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIApAQCAtMjQ2LDI0ICsyNTQsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVy
byk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogCiAgICAgICAgICAgICAg
ICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBkbyByZWYnaW5nIG9uIHRoZSBjaGlsZHJlbiBiZWNhdXNl
IHdlJ3JlIHN0ZWFsaW5nIHRoZW0gZnJvbQogICAgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5h
bCBkaXZpc2lvbi4KICAgICAgICAgICAgICAgICBOb2RlKiBuZXdEaXZpc2lvbiA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjRG91YmxlLCAqbm9kZSk7CisgICAgICAgICAgICAgICAgbmV3RGl2aXNpb24tPnNldFJlc3Vs
dChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBu
b2RlLT5zZXRPcChEb3VibGVBc0ludDMyKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJl
bi5pbml0aWFsaXplKEVkZ2UobmV3RGl2aXNpb24sIEtub3duTnVtYmVyVXNlKSwgRWRnZSgpLCBF
ZGdlKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLmluaXRpYWxpemUoRWRnZShu
ZXdEaXZpc2lvbiwgRG91YmxlUmVwVXNlKSwgRWRnZSgpLCBFZGdlKCkpOwogICAgICAgICAgICAg
ICAgIGlmIChieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFn
cygpKSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVj
a092ZXJmbG93KTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdl
PE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjc1LDgg
KzI4NSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
IGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdl
PERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3Vi
bGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChO
b2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKQEAgLTI4Niw3ICsyOTcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjk0LDcgKzMwNiw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgQXJpdGhGUm91bmQ6CiAgICAgICAgIGNhc2UgQXJpdGhTaW46
CiAgICAgICAgIGNhc2UgQXJpdGhDb3M6IHsKLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3Vi
bGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMzA2
LDcgKzMxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1i
ZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJl
cFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3Ry
aW5nVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTMzNywxNCAr
MzUwLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZW5hYmxl
SW50NTIoKQogICAgICAgICAgICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJ
bnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAg
ICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNX
b3JsZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwg
bm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVy
VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihu
b2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVz
dEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQpAQCAtNDAyLDEzICs0MTUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpCiAgICAgICAgICAgICAgICAgJiYgTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUt
PmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihub2RlLT5jaGlsZDEo
KS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3Vi
bGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJs
ZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVT
dHJpbmdJZGVudCgpICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVu
dCgpKSB7CkBAIC01MDEsNyArNTE0LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5hcnJheU1vZGUoKS50eXBlKCkpIHsKKyAgICAgICAgICAgIGFycmF5TW9kZSA9IG5vZGUtPmFy
cmF5TW9kZSgpOworICAgICAgICAgICAgc3dpdGNoIChhcnJheU1vZGUudHlwZSgpKSB7CiAgICAg
ICAgICAgICBjYXNlIEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zOgogICAgICAgICAgICAg
Y2FzZSBBcnJheTo6VW5wcm9maWxlZDoKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVuZGVjaWRl
ZDoKQEAgLTUyMCw2ICs1MzQsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoIChhcnJheU1v
ZGUudHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6CisgICAgICAgICAg
ICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9h
dDY0QXJyYXk6CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3Vi
bGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPnNo
b3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0
UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC01NTksMTQgKzU5MSwxNCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQz
LT5wcmVkaWN0aW9uKCkgJiBTcGVjSW50NTIpCi0gICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8
TWFjaGluZUludFVzZT4oY2hpbGQzKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1
MlJlcFVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxL
bm93bkNlbGxVc2U+KGNoaWxkMSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4o
Y2hpbGQyKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFJlYWxOdW1iZXJVc2U+KGNoaWxkMyk7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBSZWFsVXNlPihjaGlsZDMpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50OEFycmF5Ogog
ICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MTZBcnJheToKQEAgLTU4MCwxNSArNjEyLDE1IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMy0+c2hvdWxkU3BlY3VsYXRlSW50
MzIoKSkKICAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQzKTsKICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChjaGlsZDMtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQo
KSkKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihjaGlsZDMpOwor
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihjaGlsZDMpOwogICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KGNo
aWxkMyk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihjaGlsZDMp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQz
MkFycmF5OgogICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5OgogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJV
c2U+KGNoaWxkMyk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KGNoaWxk
Myk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250
aWd1b3VzOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgpAQCAtNjMwLDcg
KzY2Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBB
cnJheTo6RG91YmxlOgotICAgICAgICAgICAgICAgIGZpeEVkZ2U8UmVhbE51bWJlclVzZT4obm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwUmVhbFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBBcnJheTo6Q29udGlndW91czoKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFn
ZToKQEAgLTY2Myw3ICs2OTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZWxzZSBpZiAobm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKQotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKIAogICAgICAgICAgICAgTm9kZSogbG9n
aWNhbE5vdCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAgICAgIGlmIChsb2dpY2Fs
Tm90LT5vcCgpID09IExvZ2ljYWxOb3QpIHsKQEAgLTc2MCw3ICs3OTIsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVY
SU5HX1RZUEVTOgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgb3BlcmFuZEluZGV4ID0g
MDsgb3BlcmFuZEluZGV4IDwgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgKytvcGVyYW5kSW5kZXgpCi0g
ICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8UmVhbE51bWJlclVzZT4obV9ncmFwaC5tX3ZhckFy
Z0NoaWxkcmVuW25vZGUtPmZpcnN0Q2hpbGQoKSArIG9wZXJhbmRJbmRleF0pOworICAgICAgICAg
ICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFJlYWxVc2U+KG1fZ3JhcGgubV92YXJBcmdDaGls
ZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyBvcGVyYW5kSW5kZXhdKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgICAgICBjYXNlIEFMTF9BUlJBWV9TVE9SQUdFX0lOREVYSU5HX1RZUEVTOgpAQCAt
OTYxLDE2ICs5OTMsMTggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9v
cDoKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgICAgICBjYXNlIENoZWNr
VGllclVwQW5kT1NSRW50ZXI6Ci0gICAgICAgIGNhc2UgSW50NTJUb0RvdWJsZToKLSAgICAgICAg
Y2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAgICAg
ICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgogICAgICAg
ICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgICAgIGNhc2UgRG91YmxlQXNJbnQz
MjoKLSAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgogICAgICAgICBjYXNlIFZhbHVlVG9JbnQz
MjoKICAgICAgICAgY2FzZSBIYXJkUGhhbnRvbTogLy8gSGFyZFBoYW50b20gd291bGQgYmUgdHJp
dmlhbCB0byBoYW5kbGUgYnV0IGFueXdheSB3ZSBhc3NlcnQgdGhhdCB3ZSB3b24ndCBzZWUgaXQg
aGVyZSB5ZXQuCisgICAgICAgIGNhc2UgRG91YmxlUmVwOgorICAgICAgICBjYXNlIEludDUyUmVw
OgorICAgICAgICBjYXNlIFZhbHVlUmVwOgorICAgICAgICBjYXNlIERvdWJsZUNvbnN0YW50Ogor
ICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgICAgICAvLyBUaGVzZSBhcmUganVz
dCBub2RlcyB0aGF0IHdlIGRvbid0IGN1cnJlbnRseSBleHBlY3QgdG8gc2VlIGR1cmluZyBmaXh1
cC4KICAgICAgICAgICAgIC8vIElmIHdlIGV2ZXIgd2FudGVkIHRvIGluc2VydCB0aGVtIHByaW9y
IHRvIGZpeHVwLCB0aGVuIHdlIGp1c3QgaGF2ZSB0byBjcmVhdGUKICAgICAgICAgICAgIC8vIGZp
eHVwIHJ1bGVzIGZvciB0aGVtLgpAQCAtMTMyOCwxMyArMTM2MiwxMyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51
bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91Ymxl
UmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNl
Pihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIEZsdXNoZWRJbnQ1MjoKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IEZsdXNoZWRDZWxsOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hp
bGQxKCkpOwpAQCAtMTQ2Nyw3ICsxNTAxLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBt
X3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5i
b3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6Ci0g
ICAgICAgIGNhc2UgUmVhbE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6Cisg
ICAgICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKICAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+
ZG91YmxlRm9ybWF0U3RhdGUoKSA9PSBVc2luZ0RvdWJsZUZvcm1hdCkKICAgICAgICAgICAgICAg
ICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRv
VW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0NzYsNyArMTUxMSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgfHwgaXNCb29sZWFuU3BlY3VsYXRpb24odmFyaWFibGUt
PnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZCB8
PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJl
cFVzZToKICAgICAgICAgICAgIGlmIChpc01hY2hpbmVJbnRTcGVjdWxhdGlvbih2YXJpYWJsZS0+
cHJlZGljdGlvbigpKSkKICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9
IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTE1MTksOSArMTU1NCw5IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBV
c2VLaW5kIHVzZUtpbmQ7CiAgICAgICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KCkpCi0gICAgICAgICAgICB1c2VLaW5kID0gTWFjaGluZUludFVzZTsKKyAgICAgICAgICAg
IHVzZUtpbmQgPSBJbnQ1MlJlcFVzZTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+c2hvdWxkU3Bl
Y3VsYXRlTnVtYmVyKCkpCi0gICAgICAgICAgICB1c2VLaW5kID0gTnVtYmVyVXNlOworICAgICAg
ICAgICAgdXNlS2luZCA9IERvdWJsZVJlcFVzZTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+c2hv
dWxkU3BlY3VsYXRlQm9vbGVhbigpKQogICAgICAgICAgICAgdXNlS2luZCA9IEJvb2xlYW5Vc2U7
CiAgICAgICAgIGVsc2UKQEAgLTE1ODksOSArMTYyNCwxMCBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KG5vZGUpKSB7Ci0gICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAg
ICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKKyAgICAgICAg
ICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xNzI2LDk1ICsxNzYyLDEwNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgYWRkUGhhbnRvbXNJZk5lY2Vzc2FyeSgpOwogICAgICAgICAgICAg
aWYgKG1fY3VycmVudE5vZGUtPmNvbnRhaW5zTW92SGludCgpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgaWYgKHRyeVRvUmVsYXhSZXByZXNlbnRhdGlvbihtX2N1cnJl
bnROb2RlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIERGR19OT0RF
X0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG1fY3VycmVudE5vZGUsIGluamVjdFR5cGVDb252ZXJz
aW9uc0ZvckVkZ2UpOwogICAgICAgICB9CiAgICAgICAgIGNsZWFyUGhhbnRvbXNBdEVuZCgpOwog
ICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICB9CiAgICAgCisgICAg
Ym9vbCB0cnlUb1JlbGF4UmVwcmVzZW50YXRpb24oTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAg
IC8vIFNvbWUgb3BlcmF0aW9ucyBtYXkgYmUgYWJsZSB0byBvcGVyYXRlIG1vcmUgZWZmaWNpZW50
bHkgb3ZlciBsb29zZXIgcmVwcmVzZW50YXRpb25zLgorICAgICAgICAvLyBJZGVudGlmeSB0aG9z
ZSBoZXJlLiBUaGlzIGF2b2lkcyBpbnNlcnRpbmcgYSByZWR1bmRhbnQgcmVwcmVzZW50YXRpb24g
Y29udmVyc2lvbi4KKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAg
ICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNlCisgICAgICAgICAgICAgICAgJiYgIW5vZGUtPmNoaWxk
MSgpLT5oYXNEb3VibGVSZXN1bHQoKSkgeworICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgp
LnNldFVzZUtpbmQoTnVtYmVyVXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIAogICAgIHZvaWQgaW5qZWN0VHlwZUNvbnZlcnNpb25zRm9yRWRnZShO
b2RlKiBub2RlLCBFZGdlJiBlZGdlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5vZGUgPT0gbV9j
dXJyZW50Tm9kZSk7CiAgICAgICAgIAotICAgICAgICBpZiAoaXNEb3VibGUoZWRnZS51c2VLaW5k
KCkpKSB7Ci0gICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0
aG1ldGljKCkpIHsKLSAgICAgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2Rl
KCkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJs
b2NrLCBTcGVjSW50NTJBc0RvdWJsZSwgSW50MzJUb0RvdWJsZSwKLSAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+b3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBlZGdlLnNldE5vZGUocmVzdWx0KTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoZWRnZS51c2VL
aW5kKCkpIHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgIGNhc2UgRG91Ymxl
UmVwUmVhbFVzZTogeworICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKQor
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoZW5h
YmxlSW50NTIoKSAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpIHsKLSAgICAg
ICAgICAgICAgICAvLyBNYWtlIGFsbCBkb3VibGUgdXNlcyBvZiBpbnQ1MiB2YWx1ZXMgaGF2ZSBh
biBpbnRlcm1lZGlhdGUgSW50NTJUb0RvdWJsZS4KLSAgICAgICAgICAgICAgICAvLyBUaGlzIGlz
IGZvciB0aGUgc2FtZSByZWFzb24gYXMgSW50NTJUb1ZhbHVlIChzZWUgYmVsb3cpIGV4Y2VwdCB0
aGF0Ci0gICAgICAgICAgICAgICAgLy8gSW50OFRvRG91YmxlIHdpbGwgY29udmVydCBpbnQ1Midz
IHRoYXQgZml0IGluIGFuIGludDMyIGludG8gYSBkb3VibGUKLSAgICAgICAgICAgICAgICAvLyBy
YXRoZXIgdGhhbiB0cnlpbmcgdG8gY3JlYXRlIGEgYm94ZWQgaW50MzIgbGlrZSBJbnQ1MlRvVmFs
dWUgZG9lcy4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBhZGRSZXF1aXJlZFBo
YW50b20oZWRnZS5ub2RlKCkpOwotICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
LCBTcGVjSW50NTJBc0RvdWJsZSwgSW50NTJUb0RvdWJsZSwKLSAgICAgICAgICAgICAgICAgICAg
bm9kZS0+b3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKLSAgICAgICAgICAg
ICAgICBlZGdlLnNldE5vZGUocmVzdWx0KTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOworCisgICAgICAgICAgICBO
b2RlKiByZXN1bHQ7CisgICAgICAgICAgICBpZiAoZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkgewor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAg
ICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NTJBc0RvdWJsZSwgRG91Ymxl
UmVwLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCks
IEludDUyUmVwVXNlKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJl
c3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1f
aW5kZXhJbkJsb2NrLCBTcGVjRG91YmxlLCBEb3VibGVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7CiAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYmIGVk
Z2UudXNlS2luZCgpICE9IE1hY2hpbmVJbnRVc2UKLSAgICAgICAgICAgICYmIGVkZ2UtPnNob3Vs
ZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSAmJiAhZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkg
ewotICAgICAgICAgICAgLy8gV2UgbWFrZSBhbGwgbm9uLWludDUyIHVzZXMgb2YgaW50NTIgdmFs
dWVzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIEludDUyVG9WYWx1ZQotICAgICAgICAgICAgLy8gbm9k
ZSB0byBlbnN1cmUgdGhhdCB3ZSBoYW5kbGUgdGhpcyBwcm9wZXJseToKLSAgICAgICAgICAgIC8v
Ci0gICAgICAgICAgICAvLyBhOiBTb21lSW50NTIKLSAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRk
KEBhLCAuLi4pCi0gICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgQGEpCi0gICAgICAgICAgICAv
LyBkOiBBcml0aEFkZChAYSwgLi4uKQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIFdp
dGhvdXQgYW4gaW50ZXJtZWRpYXRlIG5vZGUgYW5kIGp1c3QgbGFiZWxpbmcgdGhlIHVzZXMsIHdl
IHdpbGwgZ2V0OgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ1Mgot
ICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoSW50NTI6QGEsIC4uLikKLSAgICAgICAgICAgIC8v
IGM6IENhbGwoLi4uLCBVbnR5cGVkOkBhKQotICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoSW50
NTI6QGEsIC4uLikKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBBbmQgbm93IHRoZSBj
LT5VbnR5cGVkOkBhIGVkZ2Ugd2lsbCBib3ggdGhlIHZhbHVlIG9mIEBhIGludG8gYSBkb3VibGUu
IFRoaXMKLSAgICAgICAgICAgIC8vIGlzIGJhZCwgYmVjYXVzZSBub3cgdGhlIGQtPkludDUyOkBh
IGVkZ2Ugd2lsbCBlaXRoZXIgaGF2ZSB0byBkbyBkb3VibGUtdG8taW50Ci0gICAgICAgICAgICAv
LyBjb252ZXJzaW9ucywgb3Igd2lsbCBoYXZlIHRvIE9TUiBleGl0IHVuY29uZGl0aW9uYWxseS4g
QWx0ZXJuYXRpdmVseSB3ZSBjb3VsZAotICAgICAgICAgICAgLy8gaGF2ZSB0aGUgYy0+VW50eXBl
ZDpAYSBlZGdlIGJveCB0aGUgdmFsdWUgYnkgY29weWluZyByYXRoZXIgdGhhbiBpbi1wbGFjZS4K
LSAgICAgICAgICAgIC8vIEJ1dCB0aGVzZSBib3hpbmdzIGFyZSBhbHNvIGNvc3RseSBzbyB0aGlz
IHdvdWxkbid0IGJlIGdyZWF0LgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIFRoZSBz
b2x1dGlvbiB3ZSB1c2UgaXMgdG8gYWx3YXlzIGhhdmUgbm9uLUludDUyIHVzZXMgb2YgcHJlZGlj
dGVkIEludDUyJ3MgdXNlCi0gICAgICAgICAgICAvLyBhbiBpbnRlcnZlbmluZyBJbnQ1MlRvVmFs
dWUgbm9kZToKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBhOiBTb21lSW50NTIKLSAg
ICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEludDUyOkBhLCAuLi4pCi0gICAgICAgICAgICAvLyB4
OiBJbnQ1MlRvVmFsdWUoSW50NTI6QGEpCi0gICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgVW50
eXBlZDpAeCkKLSAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEludDUyOkBhLCAuLi4pCi0gICAg
ICAgICAgICAvLwotICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGV2ZW4gaWYgd2UgaGFkIG11bHRp
cGxlIG5vbi1pbnQ1MiB1c2VzIG9mIEBhLCB0aGUgbXVsdGlwbGUKLSAgICAgICAgICAgIC8vIElu
dDUyVG9WYWx1ZSdzIHdvdWxkIGdldCBDU0UnZCB0b2dldGhlci4gU28gdGhlIGJveGluZyB3b3Vs
ZCBvbmx5IGhhcHBlbiBvbmNlLgotICAgICAgICAgICAgLy8gQXQgdGhlIHNhbWUgdGltZSwgQGEg
d291bGQgY29udGludWUgdG8gYmUgcmVwcmVzZW50ZWQgYXMgYSBuYXRpdmUgaW50NTIuCi0gICAg
ICAgICAgICAvLwotICAgICAgICAgICAgLy8gQW4gYWx0ZXJuYXRpdmUgd291bGQgaGF2ZSBiZWVu
IHRvIGluc2VydCBUb05hdGl2ZUludDUyIG5vZGVzIG9uIGludDUyIHVzZXMgb2YKLSAgICAgICAg
ICAgIC8vIGludDUyJ3MuIFRoaXMgd291bGQgaGF2ZSBoYW5kbGVkIHRoZSBhYm92ZSBleGFtcGxl
IGJ1dCB3b3VsZCBmYWxsIG92ZXIgZm9yOgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8v
IGE6IFNvbWVJbnQ1MgotICAgICAgICAgICAgLy8gYjogQ2FsbCguLi4sIEBhKQotICAgICAgICAg
ICAgLy8gYzogQXJpdGhBZGQoQGEsIC4uLikKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAv
LyBCdXQgdGhlIHNvbHV0aW9uIHdlIHVzZSBoYW5kbGVzIHRoZSBhYm92ZSBncmFjZWZ1bGx5Lgor
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKKyAgICAgICAgICAgIGlm
IChlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOwotICAg
ICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAg
ICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDUyLCBJbnQ1MlRvVmFsdWUsCi0gICAg
ICAgICAgICAgICAgbm9kZS0+b3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBVbnR5cGVkVXNlKSk7
CisKKyAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChlZGdlLT5oYXNE
b3VibGVSZXN1bHQoKSkgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBuZXZlciBoYXBw
ZW4uCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGlj
KCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMyLCBJbnQ1MlJl
cCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBJ
bnQzMlVzZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlz
IGlzIG9ubHkgaGVyZSBmb3IgZGVhbGluZyB3aXRoIGNvbnN0YW50cy4KKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChlZGdlLT5vcCgpID09IEpTQ29uc3RhbnQpOworICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAg
ICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTWFjaGluZUludCwgSW50NTJDb25zdGFudCwgbm9kZS0+
b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8oZWRnZS0+Y29uc3RhbnROdW1iZXIo
KSkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBlZGdlLnNldE5vZGUocmVzdWx0KTsK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgZGVmYXVsdDogeworICAgICAgICAgICAgaWYgKCFlZGdlLT5oYXNE
b3VibGVSZXN1bHQoKSAmJiAhZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVk
Z2Uubm9kZSgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAg
ICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKSB7CisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAg
bV9pbmRleEluQmxvY2ssIFNwZWNEb3VibGUsIFZhbHVlUmVwLCBub2RlLT5vcmlnaW4sCisgICAg
ICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIERvdWJsZVJlcFVzZSkpOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMy
IHwgU3BlY0ludDUyQXNEb3VibGUsIFZhbHVlUmVwLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIEludDUyUmVwVXNlKSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0gfQogICAgIH0KICAgICAKICAgICB2b2lkIGFkZFJlcXVp
cmVkUGhhbnRvbShOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGbHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Miw3ICs2Miw3IEBAIGlu
bGluZSBOb2RlRmxhZ3MgcmVzdWx0Rm9yKEZsdXNoRm9ybWF0IGYKICAgICBjYXNlIEZsdXNoZWRJ
bnQ1MjoKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRJbnQ1MjsKICAgICBjYXNlIEZsdXNoZWRE
b3VibGU6Ci0gICAgICAgIHJldHVybiBOb2RlUmVzdWx0TnVtYmVyOworICAgICAgICByZXR1cm4g
Tm9kZVJlc3VsdERvdWJsZTsKICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgogICAgICAgICByZXR1
cm4gTm9kZVJlc3VsdEJvb2xlYW47CiAgICAgfQpAQCAtODMsOSArODMsOSBAQCBpbmxpbmUgVXNl
S2luZCB1c2VLaW5kRm9yKEZsdXNoRm9ybWF0IGZvCiAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAg
ICAgICAgIHJldHVybiBJbnQzMlVzZTsKICAgICBjYXNlIEZsdXNoZWRJbnQ1MjoKLSAgICAgICAg
cmV0dXJuIE1hY2hpbmVJbnRVc2U7CisgICAgICAgIHJldHVybiBJbnQ1MlJlcFVzZTsKICAgICBj
YXNlIEZsdXNoZWREb3VibGU6Ci0gICAgICAgIHJldHVybiBOdW1iZXJVc2U7CisgICAgICAgIHJl
dHVybiBEb3VibGVSZXBVc2U7CiAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKICAgICAgICAgcmV0
dXJuIEJvb2xlYW5Vc2U7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDEzIEBAIHN0cnVjdCBOb2RlIHsKICAg
ICAgICAgcmV0dXJuIGZpbHRlckZsYWdzKH5mbGFncyk7CiAgICAgfQogICAgIAorICAgIHZvaWQg
c2V0UmVzdWx0KE5vZGVGbGFncyByZXN1bHQpCisgICAgeworICAgICAgICBBU1NFUlQoIShyZXN1
bHQgJiB+Tm9kZVJlc3VsdE1hc2spKTsKKyAgICAgICAgY2xlYXJGbGFncyhOb2RlUmVzdWx0TWFz
ayk7CisgICAgICAgIG1lcmdlRmxhZ3MocmVzdWx0KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBz
ZXRPcEFuZERlZmF1bHRGbGFncyhOb2RlVHlwZSBvcCkKICAgICB7CiAgICAgICAgIG1fb3AgPSBv
cDsKQEAgLTM4NSw2ICszOTIsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICBzd2l0
Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgICAgICBjYXNlIERvdWJs
ZUNvbnN0YW50OgorICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgV2Vh
a0pTQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtNDAxLDcgKzQxMCwxMiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgCiAg
ICAgdm9pZCBjb252ZXJ0VG9Db25zdGFudCh1bnNpZ25lZCBjb25zdGFudE51bWJlcikKICAgICB7
Ci0gICAgICAgIG1fb3AgPSBKU0NvbnN0YW50OworICAgICAgICBpZiAoaGFzRG91YmxlUmVzdWx0
KCkpCisgICAgICAgICAgICBtX29wID0gRG91YmxlQ29uc3RhbnQ7CisgICAgICAgIGVsc2UgaWYg
KGhhc0ludDUyUmVzdWx0KCkpCisgICAgICAgICAgICBtX29wID0gSW50NTJDb25zdGFudDsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV9vcCA9IEpTQ29uc3RhbnQ7CiAgICAgICAgIG1fZmxh
Z3MgJj0gfihOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlciB8IE5vZGVDbG9iYmVy
c1dvcmxkKTsKICAgICAgICAgbV9vcEluZm8gPSBjb25zdGFudE51bWJlcjsKICAgICAgICAgY2hp
bGRyZW4ucmVzZXQoKTsKQEAgLTgwNSwxMSArODE5LDIxIEBAIHN0cnVjdCBOb2RlIHsKICAgICAg
ICAgcmV0dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRJbnQzMjsK
ICAgICB9CiAgICAgCisgICAgYm9vbCBoYXNJbnQ1MlJlc3VsdCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdEludDUyOworICAg
IH0KKyAgICAKICAgICBib29sIGhhc051bWJlclJlc3VsdCgpCiAgICAgewogICAgICAgICByZXR1
cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdE51bWJlcjsKICAgICB9
CiAgICAgCisgICAgYm9vbCBoYXNEb3VibGVSZXN1bHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHREb3VibGU7CisgICAgfQor
ICAgIAogICAgIGJvb2wgaGFzSlNSZXN1bHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIChtX2Zs
YWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRKUzsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5jcHAJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDcsNiArNDcsOSBAQCB2b2lkIGR1bXBOb2RlRmxhZ3MoUHJpbnRTdHJlYW0m
IGFjdHVhbE91CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdE51bWJlcjoKICAgICAgICAgICAgIG91
dC5wcmludChjb21tYSwgIk51bWJlciIpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgTm9kZVJlc3VsdERvdWJsZToKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgIkRvdWJs
ZSIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgog
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiSW50MzIiKTsKICAgICAgICAgICAgIGJyZWFr
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCShyZXZpc2lv
biAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwxMCArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogI2RlZmluZSBOb2RlUmVzdWx0TWFzayAgICAgICAgICAgICAgICAg
ICAweDAwMDcKICNkZWZpbmUgTm9kZVJlc3VsdEpTICAgICAgICAgICAgICAgICAgICAgMHgwMDAx
CiAjZGVmaW5lIE5vZGVSZXN1bHROdW1iZXIgICAgICAgICAgICAgICAgIDB4MDAwMgotI2RlZmlu
ZSBOb2RlUmVzdWx0SW50MzIgICAgICAgICAgICAgICAgICAweDAwMDMKLSNkZWZpbmUgTm9kZVJl
c3VsdEludDUyICAgICAgICAgICAgICAgICAgMHgwMDA0Ci0jZGVmaW5lIE5vZGVSZXN1bHRCb29s
ZWFuICAgICAgICAgICAgICAgIDB4MDAwNQotI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAg
ICAgICAgICAgICAweDAwMDYKKyNkZWZpbmUgTm9kZVJlc3VsdERvdWJsZSAgICAgICAgICAgICAg
ICAgMHgwMDAzCisjZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAgICAgICAgICAgICAgIDB4MDAw
NAorI2RlZmluZSBOb2RlUmVzdWx0SW50NTIgICAgICAgICAgICAgICAgICAweDAwMDUKKyNkZWZp
bmUgTm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAgICAgICAgMHgwMDA2CisjZGVmaW5lIE5vZGVS
ZXN1bHRTdG9yYWdlICAgICAgICAgICAgICAgIDB4MDAwNwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKICNkZWZpbmUgTm9kZU11c3RHZW5lcmF0ZSAgICAgICAgICAgICAgICAgMHgw
MDA4IC8vIHNldCBvbiBub2RlcyB0aGF0IGhhdmUgc2lkZSBlZmZlY3RzLCBhbmQgbWF5IG5vdCB0
cml2aWFsbHkgYmUgcmVtb3ZlZCBieSBEQ0UuCiAjZGVmaW5lIE5vZGVIYXNWYXJBcmdzICAgICAg
ICAgICAgICAgICAgIDB4MDAxMApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogQSBjb25zdGFudCBpbiB0aGUgQ29kZUJsb2Nr
J3MgY29uc3RhbnQgcG9vbC4gKi9cCiAgICAgbWFjcm8oSlNDb25zdGFudCwgTm9kZVJlc3VsdEpT
IHwgTm9kZURvZXNOb3RFeGl0KSBcCiAgICAgXAorICAgIC8qIENvbnN0YW50cyB3aXRoIHNwZWNp
ZmljIHJlcHJlc2VudGF0aW9ucy4gKi9cCisgICAgbWFjcm8oRG91YmxlQ29uc3RhbnQsIE5vZGVS
ZXN1bHREb3VibGUgfCBOb2RlRG9lc05vdEV4aXQpIFwKKyAgICBtYWNybyhJbnQ1MkNvbnN0YW50
LCBOb2RlUmVzdWx0SW50NTIgfCBOb2RlRG9lc05vdEV4aXQpIFwKKyAgICBcCiAgICAgLyogQSBj
b25zdGFudCBub3QgaW4gdGhlIENvZGVCbG9jaydzIGNvbnN0YW50IHBvb2wuIFVzZXMgZ2V0IHBh
dGNoZWQgdG8ganVtcHMgdGhhdCBleGl0IHRoZSAqL1wKICAgICAvKiBjb2RlIGJsb2NrLiAqL1wK
ICAgICBtYWNybyhXZWFrSlNDb25zdGFudCwgTm9kZVJlc3VsdEpTIHwgTm9kZURvZXNOb3RFeGl0
KSBcCkBAIC0xMDYsMTUgKzExMCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAgICAgLyogVXNlZCB0byBib3ggdGhlIHJlc3VsdCBvZiBVUlNoaWZ0IG5vZGVzIChyZXN1bHQg
aGFzIHJhbmdlIDAuLjJeMzItMSkuICovXAogICAgIG1hY3JvKFVJbnQzMlRvTnVtYmVyLCBOb2Rl
UmVzdWx0TnVtYmVyKSBcCiAgICAgXAotICAgIC8qIFVzZWQgdG8gY2FzdCBrbm93biBpbnRlZ2Vy
cyB0byBkb3VibGVzLCBzbyBhcyB0byBzZXBhcmF0ZSB0aGUgZG91YmxlIGZvcm0gKi9cCi0gICAg
Lyogb2YgdGhlIHZhbHVlIGZyb20gdGhlIGludGVnZXIgZm9ybS4gKi9cCi0gICAgbWFjcm8oSW50
MzJUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlcikgXAotICAgIC8qIFVzZWQgdG8gc3BlY3VsYXRl
IHRoYXQgYSBkb3VibGUgdmFsdWUgaXMgYWN0dWFsbHkgYW4gaW50ZWdlci4gKi9cCisgICAgLyog
QXR0ZW1wdCB0byB0cnVuY2F0ZSBhIGRvdWJsZSB0byBpbnQzMjsgdGhpcyB3aWxsIGV4aXQgaWYg
aXQgY2FuJ3QgZG8gaXQuICovXAogICAgIG1hY3JvKERvdWJsZUFzSW50MzIsIE5vZGVSZXN1bHRJ
bnQzMikgXAotICAgIC8qIFVzZWQgdG8gc2VwYXJhdGUgcmVwcmVzZW50YXRpb24gYW5kIHJlZ2lz
dGVyIGFsbG9jYXRpb24gb2YgSW50NTIncyByZXByZXNlbnRlZCAqL1wKLSAgICAvKiBhcyB2YWx1
ZXMuICovXAotICAgIG1hY3JvKEludDUyVG9WYWx1ZSwgTm9kZVJlc3VsdEpTKSBcCi0gICAgbWFj
cm8oSW50NTJUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlcikgXAorICAgIFwKKyAgICAvKiBDaGFu
Z2UgdGhlIHJlcHJlc2VudGF0aW9uIG9mIGEgdmFsdWUuICovXAorICAgIG1hY3JvKERvdWJsZVJl
cCwgTm9kZVJlc3VsdERvdWJsZSkgXAorICAgIG1hY3JvKEludDUyUmVwLCBOb2RlUmVzdWx0SW50
NTIpIFwKKyAgICBtYWNybyhWYWx1ZVJlcCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8q
IE5vZGVzIGZvciBhcml0aG1ldGljIG9wZXJhdGlvbnMuICovXAogICAgIG1hY3JvKEFyaXRoQWRk
LCBOb2RlUmVzdWx0TnVtYmVyKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAkocmV2aXNpb24gMTY3MjA0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2OSw5ICsyNjksNyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6
Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRl
Y2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgSW5QYWlyOgotICAgICAgICBjYXNlIEluRlBSOgog
ICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNw
bGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCiAgICAgICAgICAgICAg
ICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4
KS0+YXNCaXRzLnRhZywKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CkBAIC0yODYs
NiArMjg0LDE0IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbkZQUjoKKyAgICAg
ICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBtX2ppdC5tb3Zl
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZv
OjpyZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBG
UFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LnNhbml0aXplRG91YmxlKEZQUklu
Zm86OmZwUmVnVDApOworICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBS
ZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAg
IGJyZWFrOworCiAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CiAgICAgICAgIGNhc2Ug
SW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0
LmNwcAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsNyBAQCB2
b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIGNhc2UgRG91
YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwog
ICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBS
ZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5zYW5pdGl6ZURvdWJsZShGUFJJbmZvOjpmcFJlZ1Qw
KTsKICAgICAgICAgICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZv
OjpyZWdUMCk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3Nl
bWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ5MCw3ICs0OTAsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5
VmFsQWxpYXM6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXQ6Ci0gICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICAg
ICAgY2FzZSBEb3VibGVBc0ludDMyOgogICAgICAgICBjYXNlIEdldExvY2FsVW5saW5rZWQ6CiAg
ICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6CkBAIC01MDQsMTEgKzUwMywxNCBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgICAgIGNhc2Ug
Q2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoK
LSAgICAgICAgY2FzZSBJbnQ1MlRvVmFsdWU6Ci0gICAgICAgIGNhc2UgSW50NTJUb0RvdWJsZToK
ICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgogICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoK
LSAgICAgICAgY2FzZSBIYXJkUGhhbnRvbTogeworICAgICAgICBjYXNlIEhhcmRQaGFudG9tOgor
ICAgICAgICBjYXNlIERvdWJsZVJlcDoKKyAgICAgICAgY2FzZSBJbnQ1MlJlcDoKKyAgICAgICAg
Y2FzZSBWYWx1ZVJlcDoKKyAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICAgICAgY2Fz
ZSBJbnQ1MkNvbnN0YW50OiB7CiAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVy
IGJlIHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxhdGlvbi4gSXQgaXMKICAgICAgICAg
ICAgIC8vIGluc2VydGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZvbGxvd3MgdGhpcyBwaGFzZS4KICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTY3MjA0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDcgKzQ2LDkgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKGVkZ2UudXNl
S2luZCgpKSB7CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAgICAgY2FzZSBJbnQzMlVz
ZToKLSAgICAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVz
ZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgorICAgICAgICBjYXNlIEludDUyUmVw
VXNlOgogICAgICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgog
ICAgICAgICBjYXNlIENlbGxVc2U6CkBAIC02MSw3ICs2Myw2IEBAIHB1YmxpYzoKICAgICAgICAg
Y2FzZSBOb3RDZWxsVXNlOgogICAgICAgICBjYXNlIE90aGVyVXNlOgogICAgICAgICBjYXNlIE1p
c2NVc2U6Ci0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6CkBAIC02OSwxMSArNzAs
NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbV9yZXN1bHQgPSBmYWxzZTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgot
ICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiB+U3BlY0Z1bGxO
dW1iZXIpCi0gICAgICAgICAgICAgICAgbV9yZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIAogICAgICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICAgICAg
ICAgIGlmIChtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgflNwZWNDZWxsKQogICAgICAg
ICAgICAgICAgIG1fcmVzdWx0ID0gZmFsc2U7CkBAIC0xMTEsNiArMTA3LDggQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogCiAgICAgc3dpdGNoIChub2RlLT5vcCgp
KSB7CiAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAg
Y2FzZSBJbnQ1MkNvbnN0YW50OgogICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgY2FzZSBJ
ZGVudGl0eToKICAgICBjYXNlIFRvVGhpczoKQEAgLTEzNyw3ICsxMzUsNiBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBCaXRVUlNoaWZ0OgogICAg
IGNhc2UgVmFsdWVUb0ludDMyOgogICAgIGNhc2UgVUludDMyVG9OdW1iZXI6Ci0gICAgY2FzZSBJ
bnQzMlRvRG91YmxlOgogICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKICAgICBjYXNlIEFyaXRoQWRk
OgogICAgIGNhc2UgQXJpdGhTdWI6CkBAIC0yNDIsOCArMjM5LDYgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoK
ICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgY2FzZSBMb29wSGludDoKLSAg
ICBjYXNlIEludDUyVG9Eb3VibGU6Ci0gICAgY2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgY2FzZSBT
dG9yZUJhcnJpZXI6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXJXaXRoTnVsbENoZWNrOgogICAgIGNh
c2UgSW52YWxpZGF0aW9uUG9pbnQ6CkBAIC0yNTUsNiArMjUwLDkgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBNdWx0
aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKKyAgICBjYXNlIFZhbHVl
UmVwOgorICAgIGNhc2UgRG91YmxlUmVwOgorICAgIGNhc2UgSW50NTJSZXA6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAKICAgICBjYXNlIEdldEJ5VmFsOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lv
biAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMjEgKzEwNiw5IEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdElu
dDUyOgotICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKLSAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBib3hJbnQ1MihncHIsIGdwciwgc3BpbGxGb3Jt
YXQpOwotICAgICAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIG1faml0Lmxv
YWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAg
ICAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gYm94IHRoZSBkb3VibGUsIHNpbmNlIHdlIHdhbnQg
YSBKU1ZhbHVlLgotICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdWI2NChHUFJJbmZvOjp0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIsIGdwcik7Ci0gICAgICAgICAgICAgICAgICAgIHNwaWxsRm9ybWF0
ID0gRGF0YUZvcm1hdEpTRG91YmxlOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUyk7Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaW5m
by5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwpAQCAtMTQzLDI4ICsx
MzEsNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAg
IHJldHVybiBncHI7CiAgICAgfQogCi0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7Ci0gICAg
ICAgIEZQUlJlZyBmcHIgPSBpbmZvLmZwcigpOwotICAgICAgICBHUFJSZWcgZ3ByID0gYm94RG91
YmxlKGZwcik7Ci0KLSAgICAgICAgLy8gVXBkYXRlIGFsbCBpbmZvCi0gICAgICAgIGluZm8uZmls
bEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0RvdWJsZSk7Ci0gICAgICAgIG1f
ZnBycy5yZWxlYXNlKGZwcik7Ci0gICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVn
aXN0ZXIsIFNwaWxsT3JkZXJKUyk7Ci0KLSAgICAgICAgcmV0dXJuIGdwcjsKLSAgICB9Ci0gICAg
ICAgIAotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0cmlj
dEludDUyOiB7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBsb2Nr
KGdwcik7Ci0gICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBhbGxvY2F0ZSgpOwotICAgICAgICBi
b3hJbnQ1MihncHIsIHJlc3VsdEdQUiwgaW5mby5yZWdpc3RlckZvcm1hdCgpKTsKLSAgICAgICAg
dW5sb2NrKGdwcik7Ci0gICAgICAgIHJldHVybiByZXN1bHRHUFI7Ci0gICAgfQotCiAgICAgY2Fz
ZSBEYXRhRm9ybWF0Q2VsbDoKICAgICAgICAgLy8gTm8gcmV0YWcgcmVxdWlyZWQgb24gSlNWQUxV
RTY0IQogICAgIGNhc2UgRGF0YUZvcm1hdEpTOgpAQCAtMTc5LDYgKzE0NSw4IEBAIEdQUlJlZyBT
cGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgCiAgICAgY2FzZSBEYXRh
Rm9ybWF0Qm9vbGVhbjoKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0
YUZvcm1hdERvdWJsZToKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICAgICAgLy8gdGhp
cyB0eXBlIGN1cnJlbnRseSBuZXZlciBvY2N1cnMKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgCkBAIC03NjksMTIgKzczNyw2IEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0
ZXJGb3JtYXQoKSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgaWYgKGlu
Zm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICB0ZXJt
aW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7
Ci0gICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7Ci0gICAgICAgICAg
ICByZXR1cm4gYWxsb2NhdGUoKTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgR1BSUmVn
IGdwciA9IGFsbG9jYXRlKCk7CiAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsK
QEAgLTc4OCw3ICs3NTAsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJ
bnQzCiAgICAgICAgIAogICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGls
bEZvcm1hdCgpOwogICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0
ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIgfHwgc3Bp
bGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRT
dHJpY3RJbnQ1Mik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFG
b3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKTsKICAgICAgICAgCiAg
ICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGls
bGVkKTsKICAgICAgICAgCkBAIC04MDksMzYgKzc3MSw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3Jt
YXRKU0ludDMyOwogICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAgICAgICAgfQotICAgICAgICBp
ZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFG
b3JtYXRTdHJpY3RJbnQ1MikgewotICAgICAgICAgICAgLy8gR2VuZXJhbGx5LCB0aGlzIGNhbiBv
bmx5IGhhcHBlbiBpZiB3ZSd2ZSBhbHJlYWR5IHByb3ZlZCB0aGF0IHRoZQotICAgICAgICAgICAg
Ly8gdmFsdWUgaXMgYW4gaW50MzIuIFRoYXQncyBiZWNhdXNlIGlmIGEgdmFsdWUgb3JpZ2luYXRl
ZCBhcyBhIEpTVmFsdWUKLSAgICAgICAgICAgIC8vIHRoZW4gd2Ugd291bGQgc3BlY3VsYXRlIHRo
YXQgaXQncyBhbiBpbnQzMiBiZWZvcmUgcmVwcmVzZW50aW5nIGl0IGFzCi0gICAgICAgICAgICAv
LyBhbiBpbnQ1Mi4gT3RoZXJ3aXNlLCBpZiB3ZSBrbm93aW5nbHkgcHJvZHVjZWQgYW4gaW50NTIs
IHRoZW4gd2Ugd291bGQKLSAgICAgICAgICAgIC8vIGJlIGJveGluZyBpdCBpbnRvIGEgdmFsdWUg
dXNpbmcgSW50NTJUb1ZhbHVlLiBUaGlzIGFzc2VydGlvbiBpcyB2YWxpZAotICAgICAgICAgICAg
Ly8gb25seSBiZWNhdXNlIEludDUyIGlzIHNvbWV0aGluZyB0aGF0IHdlIGludHJvZHVjZSBhdCBw
cmVkaWN0aW9uIHRpbWUuCi0gICAgICAgICAgICAvLyBIb3dldmVyOiB3ZSBtYXkgaGF2ZSBhbiBp
bnQzMi1wcm9kdWNpbmcgbm9kZSByZXBsYWNlZCBieSBhbgotICAgICAgICAgICAgLy8gaW50NTIt
cHJvZHVjaW5nIG5vZGUgZHVlIHRvIENTRS4gU28gd2UgbXVzdCBkbyBhIGNoZWNrLgotICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNNYWNoaW5lSW50KSk7Ci0gICAgICAg
ICAgICBpZiAodHlwZSAmIFNwZWNJbnQ1MikgewotICAgICAgICAgICAgICAgIEdQUlJlZyB0ZW1w
ID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihn
cHIsIHRlbXApOwotICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2UgY2FuJ3Qgc3VwcGx5
IHZhbHVlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBoZXJlLiA6LS8KLSAgICAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVn
cygpLCAwLAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIGdwciwgdGVtcCkpOwotICAgICAgICAgICAgICAgIHVubG9jayh0ZW1wKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0
U3RyaWN0SW50NTIpCi0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVh
bFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIGdwcik7Ci0gICAgICAgICAgICAgICAg
bV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoZ3ByLCBncHIpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaW5mby5maWxsSW50MzIoKm1fc3RyZWFtLCBncHIpOwotICAgICAgICAgICAgcmV0dXJu
Rm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOwotICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAg
ICAgfQogICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVh
bFJlZ2lzdGVyKSwgZ3ByKTsKIAogICAgICAgICAvLyBGaWxsIGFzIEpTVmFsdWUsIGFuZCBmYWxs
IHRocm91Z2guCkBAIC04OTcsNDcgKzgyOSw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUludDMKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CiAgICAgICAgIAotICAg
IGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOiB7
Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBHUFJSZWcgcmVzdWx0
OwotICAgICAgICBEYXRhRm9ybWF0IG9sZEZvcm1hdCA9IGluZm8ucmVnaXN0ZXJGb3JtYXQoKTsK
LSAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7Ci0gICAgICAgICAgICByZXN1bHQg
PSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2NrKGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZp
bGxJbnQzMigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICByZXN1bHQgPSBncHI7Ci0gICAg
ICAgIH0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNNYWNoaW5lSW50KSk7
Ci0gICAgICAgIGlmIChvbGRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQotICAgICAgICAgICAg
bV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBy
ZXN1bHQpOwotICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ1MikgewotICAgICAgICAgICAgR1BS
UmVnIHRlbXAgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9Q
dHIocmVzdWx0LCB0ZW1wKTsKLSAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2UgY2FuJ3Qgc3Vw
cGx5IHZhbHVlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBoZXJlLiA6LS8KLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwg
MCwKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIHJlc3VsdCwgdGVtcCkpOwotICAgICAgICAgICAgdW5sb2NrKHRlbXApOwotICAgICAgICB9
Ci0gICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHJlc3VsdCwgcmVzdWx0KTsKLSAgICAg
ICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOwotICAgICAgICByZXR1cm4gZ3ByOwot
ICAgIH0KLQotICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXRK
U0RvdWJsZTogewotICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSAmJiBpc0ludDMyQ29u
c3RhbnQoZWRnZS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUo
KTsKLSAgICAgICAgICAgIEFTU0VSVChpc0ludDMyQ29uc3RhbnQoZWRnZS5ub2RlKCkpKTsKLSAg
ICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTMyKHZhbHVlT2ZJbnQzMkNv
bnN0YW50KGVkZ2Uubm9kZSgpKSksIGdwcik7Ci0gICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBE
YXRhRm9ybWF0SW50MzI7Ci0gICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICB9Ci0gICAg
ICAgIEZBTExUSFJPVUdIOwotICAgIH0KKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAg
ICBjYXNlIERhdGFGb3JtYXRDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNDZWxsOgpAQCAtOTQ3LDcgKzgzOSwxMCBAQCBHUFJSZWcgU3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwog
ICAgIH0KIAorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRT
dG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0
cmljdEludDUyOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAKICAgICBkZWZhdWx0OgpAQCAtOTc2LDE0ICs4NzEsMTMgQEAgR1BSUmVnIFNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY3VsYXRlSW50NQogewogICAgIEFTU0VSVChkZXNpcmVkRm9ybWF0ID09IERh
dGFGb3JtYXRJbnQ1MiB8fCBkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7
CiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7Ci0gICAg
U3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKICAgICBtX2ludGVycHJldGVyLmZp
bHRlcih2YWx1ZSwgU3BlY01hY2hpbmVJbnQpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFs
UmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYg
aW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIp
OwogCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFG
b3JtYXROb25lOiB7Ci0gICAgICAgIGlmICgoZWRnZS0+aGFzQ29uc3RhbnQoKSAmJiAhdmFsdWVP
ZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpLmlzTWFjaGluZUludCgpKSB8fCBpbmZvLnNwaWxsRm9y
bWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgeworICAgICAgICBpZiAoKGVkZ2UtPmhhc0NvbnN0
YW50KCkgJiYgIXZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKS5pc01hY2hpbmVJbnQoKSkp
IHsKICAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxl
LCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAg
ICAgICB9CkBAIC0xMDA0LDgyICs4OTgsMjEgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlSW50NQogICAgICAgICAKICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9
IGluZm8uc3BpbGxGb3JtYXQoKTsKICAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKChz
cGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdElu
dDMyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MiB8fCBzcGlsbEZvcm1hdCA9PSBE
YXRhRm9ybWF0U3RyaWN0SW50NTIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1h
dCA9PSBEYXRhRm9ybWF0SW50NTIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdElu
dDUyKTsKICAgICAgICAgCiAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0
ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKICAgICAgICAgCi0gICAgICAgIGlmIChzcGlsbEZvcm1h
dCA9PSBEYXRhRm9ybWF0SlNJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIp
IHsKLSAgICAgICAgICAgIC8vIElmIHdlIGtub3cgdGhpcyB3YXMgc3BpbGxlZCBhcyBhbiBpbnRl
Z2VyIHdlIGNhbiBmaWxsIHdpdGhvdXQgY2hlY2tpbmcuCi0gICAgICAgICAgICBtX2ppdC5sb2Fk
MzIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAg
ICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGdwciwgZ3ByKTsKLSAgICAgICAgICAgIGlm
IChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewotICAgICAgICAgICAg
ICAgIGluZm8uZmlsbFN0cmljdEludDUyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZ3ByOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQo
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBncHIpOwotICAgICAgICAg
ICAgaW5mby5maWxsSW50NTIoKm1fc3RyZWFtLCBncHIpOwotICAgICAgICAgICAgcmV0dXJuIGdw
cjsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUy
IHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewotICAgICAgICAgICAg
bV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdw
cik7Ci0gICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50
NTIpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUy
KQotICAgICAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6aW50NTJTaGlmdEFtb3VudCksIGdwcik7Ci0gICAgICAgICAgICAgICAgaW5mby5maWxsU3Ry
aWN0SW50NTIoKm1fc3RyZWFtLCBncHIpOwotICAgICAgICAgICAgICAgIHJldHVybiBncHI7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0
cmljdEludDUyKQotICAgICAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbElu
dDUyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgIH0K
ICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdp
c3RlciksIGdwcik7Ci0KLSAgICAgICAgLy8gRmlsbCBhcyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJv
dWdoLgotICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0
SlNJbnQzMik7Ci0gICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKLSAgICAgICAgRkFMTFRIUk9V
R0g7Ci0gICAgfQotCi0gICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsKLSAgICAgICAgLy8gQ2hlY2sg
dGhlIHZhbHVlIGlzIGFuIGludGVnZXIuIE5vdGUgdGhhdCB3ZSB3b3VsZCAqbGlrZSogdG8gdW5i
b3ggYW4gSW50NTIKLSAgICAgICAgLy8gYXQgdGhpcyBwb2ludCBidXQgdGhpcyBpcyB0b28gY29z
dGx5LiBXZSBvbmx5ICpwcm92ZSogdGhhdCB0aGlzIGlzIGFuIEludDUyCi0gICAgICAgIC8vIGV2
ZW4gdGhvdWdoIHdlIGNoZWNrIGlmIGl0J3MgYW4gaW50MzIuCi0gICAgICAgIEdQUlJlZyBncHIg
PSBpbmZvLmdwcigpOwotICAgICAgICBHUFJSZWcgcmVzdWx0OwotICAgICAgICBpZiAobV9ncHJz
LmlzTG9ja2VkKGdwcikpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGFsbG9jYXRlKCk7Ci0gICAg
ICAgICAgICBtX2ppdC5tb3ZlKGdwciwgcmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgICAgICByZXN1bHQgPSBncHI7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0ludDMyKQotICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhyZXN1bHQpLCBlZGdlLCBtX2ppdC5icmFu
Y2g2NChNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIHJlc3VsdCwgR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKSk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gZ3ByKSAvLyBUaGUgbm90LWFscmVh
ZHktbG9ja2VkLCBzbyBmaWxsIGluLXBsYWNlLCBjYXNlLgotICAgICAgICAgICAgaW5mby5maWxs
SW50NTIoKm1fc3RyZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOwotICAgICAgICBtX2ppdC5zaWdu
RXh0ZW5kMzJUb1B0cihyZXN1bHQsIHJlc3VsdCk7Ci0gICAgICAgIGlmIChkZXNpcmVkRm9ybWF0
ID09IERhdGFGb3JtYXRJbnQ1MikKLSAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0KLSAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKLSAgICBjYXNlIERh
dGFGb3JtYXRKU0ludDMyOiB7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAg
ICAgICBHUFJSZWcgcmVzdWx0OwotICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGdwcikpIHsK
LSAgICAgICAgICAgIHJlc3VsdCA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2ppdC5tb3Zl
KGdwciwgcmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fZ3Bycy5sb2Nr
KGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0sIGdwciwgZGVzaXJl
ZEZvcm1hdCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBncHI7CisgICAgICAgIGlmIChkZXNpcmVk
Rm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgeworICAgICAgICAgICAgaWYgKHNwaWxs
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikKKyAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2
NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIGdwcik7CisgICAgICAg
ICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ1MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgICAgICBy
ZXR1cm4gZ3ByOwogICAgICAgICB9Ci0gICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJl
c3VsdCwgcmVzdWx0KTsKLSAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdElu
dDUyKQotICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6Omlu
dDUyU2hpZnRBbW91bnQpLCByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAg
ICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKQorICAgICAgICAgICAg
bV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBn
cHIpOworICAgICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgIHJl
dHVybiBncHI7CiAgICAgfQogCiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKQEAg
LTExMTYsMzEgKzk0OSw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUlu
dDUKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CiAKLSAgICBjYXNlIERhdGFGb3JtYXREb3Vi
bGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0gICAgICAgIGlmIChlZGdlLT5oYXND
b25zdGFudCgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB2YWx1ZU9mSlNDb25z
dGFudChlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoanNWYWx1ZS5pc01hY2hpbmVJbnQo
KSkgewotICAgICAgICAgICAgICAgIGludDY0X3QgdmFsdWUgPSBqc1ZhbHVlLmFzTWFjaGluZUlu
dCgpOwotICAgICAgICAgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1
MikKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA8PCBKU1ZhbHVlOjppbnQ1MlNo
aWZ0QW1vdW50OwotICAgICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAg
ICAgICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHZhbHVlKSwgZ3By
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Ci0gICAgY2Fz
ZSBEYXRhRm9ybWF0Qm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Ci0gICAgY2Fz
ZSBEYXRhRm9ybWF0SlNCb29sZWFuOiB7Ci0gICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhl
Y3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKLSAgICAgICAgcmV0dXJuIGFs
bG9jYXRlKCk7Ci0gICAgfQotCi0gICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEludmFs
aWRHUFJSZWc7CkBAIC0xMTUwLDggKzk1OCw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUludDUKIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJs
ZShFZGdlIGVkZ2UpCiB7CiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5v
ZGUoZWRnZSk7Ci0gICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKLSAgICBB
U1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25OdW1iZXJVc2UgfHwgISh2YWx1ZS5tX3R5cGUg
JiB+U3BlY0Z1bGxOdW1iZXIpKTsKKyAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gRG91Ymxl
UmVwVXNlIHx8IGVkZ2UudXNlS2luZCgpID09IERvdWJsZVJlcFJlYWxVc2UpOworICAgIEFTU0VS
VChlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSk7CiAgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFs
dWUsIFNwZWNGdWxsTnVtYmVyKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVy
ID0gZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7CiAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBn
ZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKQEAgLTEx
NjAsMTcgKzk2OCw2IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIK
ICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgIEdQUlJlZyBn
cHIgPSBhbGxvY2F0ZSgpOwogCi0gICAgICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KGVkZ2Uu
bm9kZSgpKSkgewotICAgICAgICAgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwot
ICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHJlaW50ZXJw
cmV0RG91YmxlVG9JbnQ2NChzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlT2ZJbnQzMkNvbnN0YW50
KGVkZ2Uubm9kZSgpKSkpKSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlNjRUb0Rv
dWJsZShncHIsIGZwcik7Ci0gICAgICAgICAgICAgICAgdW5sb2NrKGdwcik7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBEb24ndCBmaWxsIGRvdWJsZSBoZXJlIHNpbmNlIHRoYXQgd2lsbCBsZWFkIHRv
IGNvbmZ1c2lvbjogdGhlCi0gICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgYWxsb2NhdG9yIHdp
bGwgbm93IHRoaW5rIHRoYXQgdGhpcyBpcyBhIGRvdWJsZSB3aGlsZQotICAgICAgICAgICAgICAg
IC8vIGV2ZXJ5b25lIGVsc2UgdGhpbmtzIGl0J3MgYW4gaW50ZWdlci4KLSAgICAgICAgICAgICAg
ICByZXR1cm4gZnByOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlzTnVtYmVyQ29u
c3RhbnQoZWRnZS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFs
bG9jYXRlKCk7CiAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1t
NjQocmVpbnRlcnByZXREb3VibGVUb0ludDY0KHZhbHVlT2ZOdW1iZXJDb25zdGFudChlZGdlLm5v
ZGUoKSkpKSwgZ3ByKTsKQEAgLTExODYsMTU5ICs5ODMsMTggQEAgRlBSUmVnIFNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY3VsYXRlRG91YgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBEYXRh
Rm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwotICAgICAgICBzd2l0Y2gg
KHNwaWxsRm9ybWF0KSB7Ci0gICAgICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZTogewotICAgICAg
ICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2Fk
RG91YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7Ci0g
ICAgICAgICAgICBtX2ZwcnMucmV0YWluKGZwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVy
RG91YmxlKTsKLSAgICAgICAgICAgIGluZm8uZmlsbERvdWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0g
ICAgICAgICAgICByZXR1cm4gZnByOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAg
Y2FzZSBEYXRhRm9ybWF0SW50MzI6IHsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0
ZSgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVh
bFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAg
ICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHVubG9jayhn
cHIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAg
ICBjYXNlIERhdGFGb3JtYXRJbnQ1MjogewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9j
YXRlKCk7Ci0gICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBT
cGlsbE9yZGVyU3BpbGxlZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmls
bEludDUyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIERhdGFG
b3JtYXRTdHJpY3RJbnQ1MjogewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7
Ci0gICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9y
ZGVyU3BpbGxlZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbFN0cmlj
dEludDUyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
R1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNw
aWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3By
LCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAgICAgICAgIG1faml0
LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwot
ICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQp
OwotICAgICAgICAgICAgdW5sb2NrKGdwcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7Ci0gICAgY2Fz
ZSBEYXRhRm9ybWF0Tm9uZTogLy8gU2hvdWxkIGhhdmUgZmlsbGVkLCBhYm92ZS4KLSAgICBjYXNl
IERhdGFGb3JtYXRCb29sZWFuOiAvLyBUaGlzIHR5cGUgbmV2ZXIgb2NjdXJzLgotICAgIGNhc2Ug
RGF0YUZvcm1hdFN0b3JhZ2U6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0KLSAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgotICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2
ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgIHJldHVy
biBmcHJBbGxvY2F0ZSgpOwotCi0gICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2Ug
RGF0YUZvcm1hdEpTOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogewotICAgICAgICBH
UFJSZWcganNWYWx1ZUdwciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGpzVmFs
dWVHcHIpOwotICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BS
UmVnIHRlbXBHcHIgPSBhbGxvY2F0ZSgpOwotCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlz
SW50ZWdlciA9IG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGpz
VmFsdWVHcHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0KLSAgICAgICAgaWYg
KHR5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVSZWdzKGpzVmFsdWVHcHIpLCBlZGdlLCBtX2ppdC5icmFuY2hUZXN0NjQo
TWFjcm9Bc3NlbWJsZXI6Olplcm8sIGpzVmFsdWVHcHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3RlcikpOwotCi0gICAgICAgIC8vIEZpcnN0LCBpZiB3ZSBnZXQgaGVyZSB3ZSBoYXZlIGEg
ZG91YmxlIGVuY29kZWQgYXMgYSBKU1ZhbHVlCi0gICAgICAgIG1faml0Lm1vdmUoanNWYWx1ZUdw
ciwgdGVtcEdwcik7Ci0gICAgICAgIHVuYm94RG91YmxlKHRlbXBHcHIsIGZwcik7Ci0gICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGhhc1VuYm94ZWREb3VibGUgPSBtX2ppdC5qdW1wKCk7Ci0KLSAg
ICAgICAgLy8gRmluYWxseSwgaGFuZGxlIGludGVnZXJzLgotICAgICAgICBpc0ludGVnZXIubGlu
aygmbV9qaXQpOwotICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShqc1ZhbHVlR3By
LCBmcHIpOwotICAgICAgICBoYXNVbmJveGVkRG91YmxlLmxpbmsoJm1faml0KTsKLQotICAgICAg
ICBtX2dwcnMucmVsZWFzZShqc1ZhbHVlR3ByKTsKLSAgICAgICAgbV9ncHJzLnVubG9jayhqc1Zh
bHVlR3ByKTsKLSAgICAgICAgbV9ncHJzLnVubG9jayh0ZW1wR3ByKTsKLSAgICAgICAgbV9mcHJz
LnJldGFpbihmcHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7Ci0gICAgICAg
IGluZm8uZmlsbERvdWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgIGluZm8ua2lsbFNwaWxs
ZWQoKTsKLSAgICAgICAgcmV0dXJuIGZwcjsKLSAgICB9Ci0KLSAgICBjYXNlIERhdGFGb3JtYXRK
U0ludDMyOgotICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOiB7Ci0gICAgICAgIEZQUlJlZyBmcHIg
PSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAg
ICAgbV9ncHJzLmxvY2soZ3ByKTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUo
Z3ByLCBmcHIpOwotICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0gICAgICAgIHJldHVybiBm
cHI7Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjogeworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKTsKICAgICAg
ICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZv
LmdwcigpOwotICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICBHUFJSZWcgdGVtcCA9
IGFsbG9jYXRlKCk7Ci0gICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1wKTsKLSAgICAgICAgbV9q
aXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCB0ZW1w
KTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUodGVtcCwgZnByKTsKLSAgICAg
ICAgdW5sb2NrKHRlbXApOwotICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0gICAgICAgIHJl
dHVybiBmcHI7Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1
MjogewotICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BSUmVn
IGdwciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgIG1f
aml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKGdwciwgZnByKTsKLSAgICAgICAgbV9ncHJzLnVubG9j
ayhncHIpOwotICAgICAgICByZXR1cm4gZnByOwotICAgIH0KLQotICAgIC8vIFVuYm94IHRoZSBk
b3VibGUKLSAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZTogewotICAgICAgICBHUFJSZWcgZ3By
ID0gaW5mby5ncHIoKTsKLSAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAg
ICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgewotICAgICAgICAgICAgLy8gTWFrZSBzdXJl
IHdlIGRvbid0IHRyYW1wbGUgZ3ByIGlmIGl0IGlzIGluIHVzZS4KLSAgICAgICAgICAgIEdQUlJl
ZyB0ZW1wID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1wKTsK
LSAgICAgICAgICAgIHVuYm94RG91YmxlKHRlbXAsIGZwcik7Ci0gICAgICAgICAgICB1bmxvY2so
dGVtcCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdW5ib3hEb3VibGUoZ3ByLCBmcHIp
OwotCi0gICAgICAgIG1fZ3Bycy5yZWxlYXNlKGdwcik7CisgICAgICAgIG1faml0LmxvYWREb3Vi
bGUoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZnByKTsKICAgICAg
ICAgbV9mcHJzLnJldGFpbihmcHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7
Ci0KICAgICAgICAgaW5mby5maWxsRG91YmxlKCptX3N0cmVhbSwgZnByKTsKICAgICAgICAgcmV0
dXJuIGZwcjsKICAgICB9CiAKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6IHsKLSAgICAgICAg
RlBSUmVnIGZwciA9IGluZm8uZnByKCk7Ci0gICAgICAgIG1fZnBycy5sb2NrKGZwcik7Ci0gICAg
ICAgIHJldHVybiBmcHI7Ci0gICAgfQotICAgICAgICAKLSAgICBkZWZhdWx0OgotICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gSW52YWxpZEZQUlJl
ZzsKLSAgICB9CisgICAgUkVMRUFTRV9BU1NFUlQoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERh
dGFGb3JtYXREb3VibGUpOworICAgIEZQUlJlZyBmcHIgPSBpbmZvLmZwcigpOworICAgIG1fZnBy
cy5sb2NrKGZwcik7CisgICAgcmV0dXJuIGZwcjsKIH0KIAogR1BSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsU3BlY3VsYXRlQ2VsbChFZGdlIGVkZ2UpCkBAIC0xMzUyLDExICsxMDA4LDYgQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogCiAgICAgc3dpdGNoIChpbmZv
LnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAgICAg
IGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyIHx8IGluZm8uc3BpbGxG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVj
dWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm4gYWxsb2NhdGUoKTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgR1BS
UmVnIGdwciA9IGFsbG9jYXRlKCk7CiAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkp
IHsKQEAgLTE0MDUsMTYgKzEwNTYsMTYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlQ2VsbAogICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9y
bWF0SW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9y
bWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKLSAgICBjYXNlIERhdGFG
b3JtYXRCb29sZWFuOgotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAgIGNhc2UgRGF0YUZv
cm1hdFN0cmljdEludDUyOiB7CisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjogewogICAgICAg
ICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgMCk7CiAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KIAorICAgIGNhc2UgRGF0
YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0
YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAt
MTQzMyw3ICsxMDg0LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9v
bAogCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFG
b3JtYXROb25lOiB7Ci0gICAgICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1h
dEludDMyIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7CisgICAg
ICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyKSB7CiAgICAgICAg
ICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICAgICAgfQpAQCAt
MTQ4NywxNiArMTEzOCwxNSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVC
b29sCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQz
MjoKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXREb3Vi
bGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6
Ci0gICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50
NTI6IHsKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUs
IEpTVmFsdWVSZWdzKCksIDApOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKLSAgICB9CiAg
ICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRT
dG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0
cmljdEludDUyOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAKICAgICBkZWZhdWx0OgpAQCAtMTUwNSwyNiArMTE1NSw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICB9CiB9CiAKLUpJVENvbXBpbGVyOjpKdW1wIFNw
ZWN1bGF0aXZlSklUOjpjb252ZXJ0VG9Eb3VibGUoR1BSUmVnIHZhbHVlLCBGUFJSZWcgcmVzdWx0
LCBHUFJSZWcgdG1wKQotewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0
LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHZhbHVlLCBHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdE51
bWJlciA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgdmFsdWUsIEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgCi0gICAgbV9qaXQubW92ZSh2YWx1
ZSwgdG1wKTsKLSAgICB1bmJveERvdWJsZSh0bXAsIHJlc3VsdCk7Ci0gICAgCi0gICAgSklUQ29t
cGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLSAgICAKLSAgICBpc0ludGVnZXIubGlu
aygmbV9qaXQpOwotICAgIAotICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHZhbHVlLCBy
ZXN1bHQpOwotICAgIAotICAgIGRvbmUubGluaygmbV9qaXQpOwotCi0gICAgcmV0dXJuIG5vdE51
bWJlcjsKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJhc2VWYWx1ZVN0b3JlQmFy
cmllcihFZGdlJiBiYXNlRWRnZSwgRWRnZSYgdmFsdWVFZGdlKQogewogI2lmIEVOQUJMRShHR0Mp
CkBAIC0yMTUzLDYgKzE3ODMsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAKICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgIGNh
c2UgRG91YmxlQ29uc3RhbnQ6CisgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICBpbml0
Q29uc3RhbnRJbmZvKG5vZGUpOwogICAgICAgICBicmVhazsKIApAQCAtMjQwMCwyNCArMjAzMiwy
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7Ci0gICAgICAg
IGNvbXBpbGVJbnQzMlRvRG91YmxlKG5vZGUpOworICAgIGNhc2UgRG91YmxlUmVwOiB7CisgICAg
ICAgIGNvbXBpbGVEb3VibGVSZXAobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgCi0gICAgY2FzZSBJbnQ1MlRvVmFsdWU6IHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3Bl
cmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcywgUmV1c2UsIG9wZXJhbmQpOwotICAgICAgICBtX2ppdC5tb3ZlKG9wZXJhbmQuZ3ByKCks
IHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBub2Rl
KTsKKyAgICBjYXNlIFZhbHVlUmVwOiB7CisgICAgICAgIGNvbXBpbGVWYWx1ZVJlcChub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEludDUyVG9Eb3VibGU6
IHsKLSAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcGVyYW5kKTsKLSAg
ICAgICAgbV9qaXQubW92ZURvdWJsZShvcGVyYW5kLmZwcigpLCByZXN1bHQuZnByKCkpOwotICAg
ICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKKyAgICBjYXNlIEludDUyUmVw
OiB7CisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3BlcmFu
ZCk7CisgICAgICAgIAorICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihvcGVyYW5kLmdw
cigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAKKyAgICAgICAgc3RyaWN0SW50NTJSZXN1bHQo
cmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDggKzMzMiw2IEBAIFNpbGVudFJl
Z2lzdGVyU2F2ZVBsYW4gU3BlY3VsYXRpdmVKSVQ6OnMKICAgICB9IGVsc2UgaWYgKHJlZ2lzdGVy
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikgewogICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3Rh
bnQoKSkKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRJbnQ1MkNvbnN0YW50OwotICAgICAg
ICBlbHNlIGlmIChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8fCBpbmZvLnNwaWxsRm9y
bWF0KCkgPT0gRGF0YUZvcm1hdEpTKQotICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQzMlBh
eWxvYWRDb252ZXJ0VG9JbnQ1MjsKICAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgp
ID09IERhdGFGb3JtYXRJbnQ1MikKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CiAg
ICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50
NTIpCkBAIC0zNDEsMTcgKzMzOSwxMiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0
aXZlSklUOjpzCiAgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0Tm9uZSkKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CiAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi4gQW55dGhpbmcgdGhhdCBxdWFs
aWZpZXMgYXMgYW4gaW50MzIgd2lsbCBuZXZlcgotICAgICAgICAgICAgLy8gYmUgdHVybmVkIGlu
dG8gYSBjZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRvdWJsZSAodG8tZG91YmxlCi0g
ICAgICAgICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9kZSkuCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgZmlsbEFj
dGlvbiA9IExvYWQ2NDsgLy8gTWFrZSBHQ0MgaGFwcHkuCiAgICAgICAgIH0KICAgICB9IGVsc2Ug
aWYgKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewogICAgICAgICBp
ZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRTdHJp
Y3RJbnQ1MkNvbnN0YW50OwotICAgICAgICBlbHNlIGlmIChpc0pTSW50MzIoaW5mby5zcGlsbEZv
cm1hdCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKQotICAgICAgICAg
ICAgZmlsbEFjdGlvbiA9IExvYWQzMlBheWxvYWRTaWduRXh0ZW5kOwogICAgICAgICBlbHNlIGlm
IChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDUyKQogICAgICAgICAgICAgZmls
bEFjdGlvbiA9IExvYWQ2NFNoaWZ0SW50NTJSaWdodDsKICAgICAgICAgZWxzZSBpZiAoaW5mby5z
cGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKQEAgLTM1OSw5ICszNTIsNiBA
QCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAgIGVsc2Ug
aWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkKICAgICAgICAgICAgIGZp
bGxBY3Rpb24gPSBMb2FkNjQ7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gU2hvdWxk
IG5ldmVyIGhhcHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMgYW4gaW50MzIgd2lsbCBu
ZXZlcgotICAgICAgICAgICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxsIChpbW1lZGlhdGUgc3Bl
YyBmYWlsKSBvciBhIGRvdWJsZSAodG8tZG91YmxlCi0gICAgICAgICAgICAvLyBjb252ZXJzaW9u
cyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9kZSkuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsgLy8gTWFrZSBH
Q0MgaGFwcHkuCiAgICAgICAgIH0KQEAgLTM3Niw5ICszNjYsNiBAQCBTaWxlbnRSZWdpc3RlclNh
dmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAgIH0gZWxzZSBpZiAoaW5mby5zcGlsbEZv
cm1hdCgpID09IERhdGFGb3JtYXRJbnQzMikgewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVy
Rm9ybWF0ID09IERhdGFGb3JtYXRKU0ludDMyKTsKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBM
b2FkMzJQYXlsb2FkQm94SW50OwotICAgICAgICB9IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQo
KSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnaXN0ZXJGb3Jt
YXQgPT0gRGF0YUZvcm1hdEpTRG91YmxlKTsKLSAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2Fk
RG91YmxlQm94RG91YmxlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGZpbGxBY3Rpb24g
PSBMb2FkNjQ7CiAjZWxzZQpAQCAtNDM0LDE0ICs0MjEsMTIgQEAgU2lsZW50UmVnaXN0ZXJTYXZl
UGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKSB7CiAg
ICAgICAgIEFTU0VSVChpc051bWJlckNvbnN0YW50KG5vZGUpKTsKICAgICAgICAgZmlsbEFjdGlv
biA9IFNldERvdWJsZUNvbnN0YW50OwotICAgIH0gZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgp
ICE9IERhdGFGb3JtYXROb25lICYmIGluZm8uc3BpbGxGb3JtYXQoKSAhPSBEYXRhRm9ybWF0RG91
YmxlKSB7Ci0gICAgICAgIC8vIGl0IHdhcyBhbHJlYWR5IHNwaWxsZWQgcHJldmlvdXNseSBhbmQg
bm90IGFzIGEgZG91YmxlLCB3aGljaCBtZWFucyB3ZSBuZWVkIHVuYm94aW5nLgotICAgICAgICBB
U1NFUlQoaW5mby5zcGlsbEZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgZmlsbEFj
dGlvbiA9IExvYWRKU1VuYm94RG91YmxlOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CisgICAg
ICAgIEFTU0VSVChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUgfHwgaW5mby5z
cGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpOwogICAgICAgICBmaWxsQWN0aW9uID0g
TG9hZERvdWJsZTsKKyAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIEFTU0VSVChp
bmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSB8fCBpbmZvLnJlZ2lzdGVy
Rm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTRG91YmxlKTsKKyAgICBBU1NFUlQoaW5mby5yZWdpc3Rl
ckZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpOwogICAgIGlmIChub2RlLT5oYXNDb25zdGFu
dCgpKSB7CiAgICAgICAgIEFTU0VSVChpc051bWJlckNvbnN0YW50KG5vZGUpKTsKICAgICAgICAg
ZmlsbEFjdGlvbiA9IFNldERvdWJsZUNvbnN0YW50OwpAQCAtNTI4LDE0ICs1MTMsNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgICAgIG1faml0LmxvYWQz
MihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkp
LCBwbGFuLmdwcigpKTsKICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocGxhbi5ncHIo
KSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTG9hZERvdWJsZUJveERv
dWJsZToKLSAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4u
bm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwotICAgICAgICBtX2ppdC5z
dWI2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHBsYW4uZ3ByKCkpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIExvYWRKU1VuYm94RG91YmxlOgotICAgICAgICBtX2ppdC5sb2Fk
NjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3Rlcigp
KSwgY2FuVHJhbXBsZSk7Ci0gICAgICAgIHVuYm94RG91YmxlKGNhblRyYW1wbGUsIHBsYW4uZnBy
KCkpOwotICAgICAgICBicmVhazsKICNlbHNlCiAgICAgY2FzZSBTZXRKU0NvbnN0YW50VGFnOgog
ICAgICAgICBtX2ppdC5tb3ZlKEltbTMyKHZhbHVlT2ZKU0NvbnN0YW50KHBsYW4ubm9kZSgpKS50
YWcoKSksIHBsYW4uZ3ByKCkpOwpAQCAtMTAzOSw2ICsxMDE2LDI5IEBAIEdQUlRlbXBvcmFyeTo6
R1BSVGVtcG9yYXJ5KAogfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKK0pTVmFsdWVS
ZWdzVGVtcG9yYXJ5OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeSgpIHsgfQorCitKU1ZhbHVlUmVnc1Rl
bXBvcmFyeTo6SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqIGppdCkKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIDogbV9ncHIoaml0KQorI2Vsc2UKKyAgICA6IG1fcGF5bG9hZEdQ
UihqaXQpCisgICAgLCBtX3RhZ0dQUihqaXQpCisjZW5kaWYKK3sKK30KKworSlNWYWx1ZVJlZ3NU
ZW1wb3Jhcnk6On5KU1ZhbHVlUmVnc1RlbXBvcmFyeSgpIHsgfQorCitKU1ZhbHVlUmVncyBKU1Zh
bHVlUmVnc1RlbXBvcmFyeTo6cmVncygpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1
cm4gSlNWYWx1ZVJlZ3MobV9ncHIuZ3ByKCkpOworI2Vsc2UKKyAgICByZXR1cm4gSlNWYWx1ZVJl
Z3MobV90YWdHUFIuZ3ByKCksIG1fcGF5bG9hZEdQUi5ncHIoKSk7CisjZW5kaWYKK30KKwogdm9p
ZCBHUFJUZW1wb3Jhcnk6OmFkb3B0KEdQUlRlbXBvcmFyeSYgb3RoZXIpCiB7CiAgICAgQVNTRVJU
KCFtX2ppdCk7CkBAIC0xMjU4LDEwICsxMjU4LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQZWVwSG9sZUJyYW4KICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQz
MlVzZSkpCiAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFu
Y2hOb2RlLCBjb25kaXRpb24pOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGVsc2UgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgZWxzZSBpZiAo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQ
ZWVwSG9sZUludDUyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CiAjZW5kaWYg
Ly8gVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE51bWJlclVzZSkpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChEb3Vi
bGVSZXBVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKG5vZGUs
IGJyYW5jaE5vZGUsIGRvdWJsZUNvbmRpdGlvbik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9w
KCkgPT0gQ29tcGFyZUVxKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KFN0cmluZ1VzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkgewpA
QCAtMTgxNywxNiArMTgxNywxMyBAQCBHZW5lcmF0ZWRPcGVyYW5kVHlwZSBTcGVjdWxhdGl2ZUpJ
VDo6Y2hlCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdEpT
OgogICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0Rv
dWJsZToKICAgICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRKU1ZhbHVlOwogCiAgICAgY2Fz
ZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICAgICAg
cmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRJbnRlZ2VyOwogCi0gICAgY2FzZSBEYXRhRm9ybWF0SlNE
b3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgotICAgICAgICByZXR1cm4gR2VuZXJh
dGVkT3BlcmFuZERvdWJsZTsKLSAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRU
eXBlVW5rbm93bjsKQEAgLTE4NDUsNyArMTg0Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZVRvSW50MzIKICAgICB9CiAgICAgICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAg
ICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsKICAgICAgICAg
R1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKQEAgLTE4NTUsNiArMTg1MiwxOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgCisgICAgY2FzZSBEb3VibGVSZXBV
c2U6IHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgU3BlY3Vs
YXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBGUFJS
ZWcgZnByID0gb3AxLmZwcigpOworICAgICAgICBHUFJSZWcgZ3ByID0gcmVzdWx0LmdwcigpOwor
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RUcnVuY2F0ZWRUb0ludGVnZXIgPSBtX2ppdC5i
cmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoZnByLCBncHIsIEpJVENvbXBpbGVyOjpCcmFuY2hJ
ZlRydW5jYXRlRmFpbGVkKTsKKyAgICAgICAgCisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHNsb3dQYXRoQ2FsbChub3RUcnVuY2F0ZWRUb0ludGVnZXIsIHRoaXMsIHRvSW50MzIsIGdwciwg
ZnByKSk7CisgICAgICAgIAorICAgICAgICBpbnQzMlJlc3VsdChncHIsIG5vZGUpOworICAgICAg
ICByZXR1cm47CisgICAgfQogICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgTm90
Q2VsbFVzZTogewpAQCAtMTg2NiwxOCArMTg3Niw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZVRvSW50MzIKICAgICAgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwg
bm9kZSwgb3AxLmZvcm1hdCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICBjYXNlIEdlbmVyYXRlZE9wZXJhbmREb3VibGU6IHsKLSAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9w
MSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAg
ICAgICAgIEZQUlJlZyBmcHIgPSBvcDEuZnByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0g
cmVzdWx0LmdwcigpOwotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90VHJ1bmNhdGVk
VG9JbnRlZ2VyID0gbV9qaXQuYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKGZwciwgZ3ByLCBK
SVRDb21waWxlcjo6QnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChub3RUcnVuY2F0ZWRUb0lu
dGVnZXIsIHRoaXMsIHRvSW50MzIsIGdwciwgZnByKSk7Ci0KLSAgICAgICAgICAgIGludDMyUmVz
dWx0KGdwciwgbm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KICAgICAgICAg
Y2FzZSBHZW5lcmF0ZWRPcGVyYW5kSlNWYWx1ZTogewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMjA2Niw3MCArMjA2NCwxMzEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUFzSW50MwogICAgIGludDMyUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bnQzMlRvRG91YmxlKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91
YmxlUmVwKE5vZGUqIG5vZGUpCiB7Ci0gICAgQVNTRVJUKCFpc0ludDMyQ29uc3RhbnQobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKSk7IC8vIFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBjb25zdGFudCBmb2xk
ZWQuCisgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIE51
bWJlclVzZTogeworICAgICAgICBBU1NFUlQoIWlzSW50MzJDb25zdGFudChub2RlLT5jaGlsZDEo
KS5ub2RlKCkpKTsgLy8gVGhpcyBzaG91bGQgaGF2ZSBiZWVuIGNvbnN0YW50IGZvbGRlZC4KICAg
ICAKLSAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkubV90eXBlKSkgewotICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwotICAgICAgICBGUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJs
ZShvcDEuZ3ByKCksIHJlc3VsdC5mcHIoKSk7Ci0gICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQu
ZnByKCksIG5vZGUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgICAgICBpZiAoaXNJbnQz
MlNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSkgewor
ICAgICAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEo
KSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIEZQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CisgICAgICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcDEu
Z3ByKCksIHJlc3VsdC5mcHIoKSk7CisgICAgICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZw
cigpLCBub2RlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIAotICAgIEpT
VmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uKTsKLSAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
bik7CisgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgCiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9y
YXJ5IHRlbXAodGhpcyk7CiAKLSAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOwotICAgIEdQ
UlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKLSAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0
LmZwcigpOworICAgICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAgICAgICBHUFJS
ZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1
bHQuZnByKCk7CiAgICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQu
YnJhbmNoNjQoCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMUdQUiwg
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWJvdmVPckVxdWFsLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7
CiAgICAgCi0gICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51
bWJlcikpIHsKLSAgICAgICAgdHlwZUNoZWNrKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3Ax
R1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAotICAgICAgICAgICAgbV9qaXQu
YnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5
cGVOdW1iZXJSZWdpc3RlcikpOwotICAgIH0KKyAgICAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5v
ZGUtPmNoaWxkMSgpLCBTcGVjQnl0ZWNvZGVOdW1iZXIpKSB7CisgICAgICAgICAgICB0eXBlQ2hl
Y2soCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCks
IFNwZWNCeXRlY29kZU51bWJlciwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQo
TWFjcm9Bc3NlbWJsZXI6Olplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyKSk7CisgICAgICAgIH0KICAgICAKLSAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgdGVtcEdQUik7
Ci0gICAgdW5ib3hEb3VibGUodGVtcEdQUiwgcmVzdWx0RlBSKTsKLSAgICBKSVRDb21waWxlcjo6
SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgdGVt
cEdQUik7CisgICAgICAgIHVuYm94RG91YmxlKHRlbXBHUFIsIHJlc3VsdEZQUik7CisgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgCi0gICAgaXNJbnRl
Z2VyLmxpbmsoJm1faml0KTsKLSAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcDFHUFIs
IHJlc3VsdEZQUik7Ci0gICAgZG9uZS5saW5rKCZtX2ppdCk7Ci0jZWxzZQotICAgIEZQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBpc0ludGVnZXIubGluaygmbV9qaXQpOworICAgICAg
ICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcDFHUFIsIHJlc3VsdEZQUik7CisgICAgICAg
IGRvbmUubGluaygmbV9qaXQpOworI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkgLT4gdGhpcyBpcyB0
aGUgMzJfNjQgY2FzZQorICAgICAgICBGUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAKLSAg
ICBHUFJSZWcgb3AxVGFnR1BSID0gb3AxLnRhZ0dQUigpOwotICAgIEdQUlJlZyBvcDFQYXlsb2Fk
R1BSID0gb3AxLnBheWxvYWRHUFIoKTsKLSAgICBGUFJSZWcgdGVtcEZQUiA9IHRlbXAuZnByKCk7
Ci0gICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKKyAgICAgICAgR1BSUmVnIG9w
MVRhZ0dQUiA9IG9wMS50YWdHUFIoKTsKKyAgICAgICAgR1BSUmVnIG9wMVBheWxvYWRHUFIgPSBv
cDEucGF5bG9hZEdQUigpOworICAgICAgICBGUFJSZWcgdGVtcEZQUiA9IHRlbXAuZnByKCk7Cisg
ICAgICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CiAgICAgCi0gICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoMzIoCi0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcp
KTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoMzIo
CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CiAgICAgCi0gICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5v
ZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlcikpIHsKLSAgICAgICAgdHlwZUNoZWNrKAotICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS0+Y2hp
bGQxKCksIFNwZWNGdWxsTnVtYmVyLAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
TG93ZXN0VGFnKSkpOwotICAgIH0KKyAgICAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNo
aWxkMSgpLCBTcGVjQnl0ZWNvZGVOdW1iZXIpKSB7CisgICAgICAgICAgICB0eXBlQ2hlY2soCisg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9k
ZS0+Y2hpbGQxKCksIFNwZWNCeXRlY29kZU51bWJlciwKKyAgICAgICAgICAgICAgICBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CisgICAgICAgIH0KICAgICAKLSAgICB1bmJveERv
dWJsZShvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIsIHJlc3VsdEZQUiwgdGVtcEZQUik7Ci0gICAg
SklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgdW5ib3hEb3Vi
bGUob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSLCByZXN1bHRGUFIsIHRlbXBGUFIpOworICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgIAotICAgIGlzSW50
ZWdlci5saW5rKCZtX2ppdCk7Ci0gICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxUGF5
bG9hZEdQUiwgcmVzdWx0RlBSKTsKLSAgICBkb25lLmxpbmsoJm1faml0KTsKLSNlbmRpZgorICAg
ICAgICBpc0ludGVnZXIubGluaygmbV9qaXQpOworICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJU
b0RvdWJsZShvcDFQYXlsb2FkR1BSLCByZXN1bHRGUFIpOworICAgICAgICBkb25lLmxpbmsoJm1f
aml0KTsKKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgIAotICAgIGRvdWJsZVJlc3VsdChy
ZXN1bHRGUFIsIG5vZGUpOworICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0RlBSLCBub2RlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7CisgICAgICAgIAorICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIo
KTsKKyAgICAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKKworICAgICAgICBt
X2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZSh2YWx1ZUdQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAg
CisgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHRGUFIsIG5vZGUpOworICAgICAgICByZXR1cm47
CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIAorICAgIGRlZmF1bHQ6
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVJlcChOb2RlKiBu
b2RlKQoreworICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgY2Fz
ZSBEb3VibGVSZXBVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIEZQUlJlZyB2YWx1ZUZQUiA9IHZhbHVlLmZwcigp
OworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKyAgICAg
ICAgCisgICAgICAgIGJveERvdWJsZSh2YWx1ZUZQUiwgcmVzdWx0UmVncyk7CisgICAgICAgIAor
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgSW50NTJSZXBV
c2U6IHsKKyAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHZhbHVlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAg
ICAgCisgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICAKKyAgICAgICAgYm94SW50NTIo
dmFsdWVHUFIsIHJlc3VsdEdQUiwgRGF0YUZvcm1hdEludDUyKTsKKyAgICAgICAgCisgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorICAgICAgICAKKyAgICBkZWZhdWx0OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQog
fQogCiBzdGF0aWMgZG91YmxlIGNsYW1wRG91YmxlVG9CeXRlKGRvdWJsZSBkKQpAQCAtMjMyMCw3
ICsyMzc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySQogICAg
ICAgICB9CiAgICAgICAgICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6IHsKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICAgICAg
U3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVVc2UpOwogICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgICAgICBHUFJSZWcg
c2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CkBAIC0yMzQ0LDcgKzI0MDMsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJCiAgICAgICAgIH0KICNlbmRpZiAvLyBV
U0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7Cisg
ICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBpZiAoaXNDbGFtcGVkKHR5
cGUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnRTaXplKHR5cGUpID09IDEpOwog
ICAgICAgICAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFsdWVPcCh0aGlzLCB2YWx1
ZVVzZSk7CkBAIC0yNDQwLDEwICsyNDk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEJ5VmFsT25GbAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3ROYU4gPSBtX2ppdC5icmFuY2hE
b3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsLCByZXN1bHRSZWcsIHJlc3VsdFJlZyk7
Ci0gICAgc3RhdGljIGNvbnN0IGRvdWJsZSBOYU4gPSBRTmFOOwotICAgIG1faml0LmxvYWREb3Vi
bGUoJk5hTiwgcmVzdWx0UmVnKTsKLSAgICBub3ROYU4ubGluaygmbV9qaXQpOworICAgIG1faml0
LnNhbml0aXplRG91YmxlKHJlc3VsdFJlZyk7CiAgICAgCiAgICAgZG91YmxlUmVzdWx0KHJlc3Vs
dFJlZywgbm9kZSk7CiB9CkBAIC0yNjQxLDcgKzI2OTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQWRkKE5vZGUqIG5vCiAgICAgfQogICAgICAgICAKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAg
ICAgICAgQVNTRVJUKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKTsKICAg
ICAgICAgQVNTRVJUKCFzaG91bGRDaGVja05lZ2F0aXZlWmVybyhub2RlLT5hcml0aE1vZGUoKSkp
OwogCkBAIC0yNjcwLDcgKzI3MjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWRk
KE5vZGUqIG5vCiAgICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgCi0gICAgY2Fz
ZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1
bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgRlBS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEsIG9wMik7CkBAIC0yODA3LDcgKzI4NjMsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIoTm9kCiAgICAgfQogICAgICAgICAK
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgIGNhc2Ug
SW50NTJSZXBVc2U6IHsKICAgICAgICAgQVNTRVJUKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+
YXJpdGhNb2RlKCkpKTsKICAgICAgICAgQVNTRVJUKCFzaG91bGRDaGVja05lZ2F0aXZlWmVybyhu
b2RlLT5hcml0aE1vZGUoKSkpOwogCkBAIC0yODM2LDcgKzI4OTIsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQXJpdGhTdWIoTm9kCiAgICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVF
NjQpCiAKLSAgICBjYXNlIE51bWJlclVzZTogeworICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAg
ICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OwogICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7CkBAIC0yODgxLDcgKzI5
MzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhOZWdhdGUoCiAgICAgfQog
CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICBjYXNl
IEludDUyUmVwVXNlOiB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDaGVja092ZXJmbG93KG5vZGUt
PmFyaXRoTW9kZSgpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyKSkgewpAQCAtMjkxOCw3ICsyOTc0
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKAogICAgIH0KICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICAKLSAgICBjYXNlIE51bWJlclVzZTogewor
ICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgCkBAIC0yOTY5LDcgKzMwMjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQXJpdGhNdWwoTm9kCiAgICAgfQogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpICAg
Ci0gICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAg
ICAgICBBU1NFUlQoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpOwogICAg
ICAgICAKICAgICAgICAgLy8gVGhpcyBpcyBzdXBlciBjbGV2ZXIuIFdlIHdhbnQgdG8gZG8gYW4g
aW50NTIgbXVsdGlwbGljYXRpb24gYW5kIGNoZWNrIHRoZQpAQCAtMzAyNiw3ICszMDgyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTXVsKE5vZAogICAgIH0KICNlbmRpZiAv
LyBVU0UoSlNWQUxVRTY0KQogICAgICAgICAKLSAgICBjYXNlIE51bWJlclVzZTogeworICAgIGNh
c2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMs
IG9wMSwgb3AyKTsKQEAgLTMxOTAsNyArMzI0Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcml0aERpdihOb2QKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBj
YXNlIE51bWJlclVzZTogeworICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgIFNwZWN1
bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3Bl
Y3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBG
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7CkBAIC0zNDk1LDcgKzM1NTEsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNb2QoTm9kCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgICAgIAotICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgY2FzZSBEb3VibGVSZXBV
c2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CiAgICAgICAgIApAQCAtMzUzMCwxMyArMzU4NiwxMyBAQCBib29sIFNwZWN1bGF0
aXZlSklUOjpjb21wYXJlKE5vZGUqIG5vZGUsCiAgICAgfQogICAgIAogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkgeworICAg
IGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7CiAgICAgICAgIGNvbXBp
bGVJbnQ1MkNvbXBhcmUobm9kZSwgY29uZGl0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgIAotICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkgeworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
RG91YmxlUmVwVXNlKSkgewogICAgICAgICBjb21waWxlRG91YmxlQ29tcGFyZShub2RlLCBkb3Vi
bGVDb25kaXRpb24pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzYxMCw3ICsz
NjY2LDcgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZAogICAgIH0K
ICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KSAgIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoTWFjaGluZUludFVzZSkpIHsKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUy
UmVwVXNlKSkgewogICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRlY3RQ
ZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJTlRf
TUFYKSB7CiAgICAgICAgICAgICBOb2RlKiBicmFuY2hOb2RlID0gbV9ibG9jay0+YXQoYnJhbmNo
SW5kZXhJbkJsb2NrKTsKQEAgLTM2MjYsNyArMzY4Miw3IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTdHJpY3RFcShOb2QKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAot
ICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkgeworICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKSkgewogICAgICAgICB1bnNpZ25lZCBicmFu
Y2hJbmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJh
bmNoSW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7CiAgICAgICAgICAgICBOb2RlKiBicmFuY2hO
b2RlID0gbV9ibG9jay0+YXQoYnJhbmNoSW5kZXhJbkJsb2NrKTsKQEAgLTQ0ODcsMzYgKzQ1NDMs
MzcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlSW50MzIoRWRnZQogICAgIChTcGVj
dWxhdGVJbnQzMk9wZXJhbmQodGhpcywgZWRnZSkpLmdwcigpOwogfQogCi12b2lkIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVNYWNoaW5lSW50KEVkZ2UgZWRnZSkKLXsKLSNpZiBVU0UoSlNWQUxV
RTY0KQotICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY01hY2hpbmVJbnQpKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgKFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCh0
aGlzLCBlZGdlKSkuZ3ByKCk7Ci0jZWxzZSAvLyBVU0UoSlNWQUxVRTY0KQotICAgIFVOVVNFRF9Q
QVJBTShlZGdlKTsKLSAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSNlbmRpZiAvLyBV
U0UoSlNWQUxVRTY0KQotfQotCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOdW1iZXIo
RWRnZSBlZGdlKQogewotICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0Z1bGxOdW1i
ZXIpKQorICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0J5dGVjb2RlTnVtYmVyKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIChTcGVjdWxhdGVEb3VibGVPcGVyYW5kKHRoaXMs
IGVkZ2UpKS5mcHIoKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBlZGdlKTsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgIEdQUlJlZyBncHIgPSB2YWx1ZS5ncHIoKTsKKyAgICB0eXBl
Q2hlY2soCisgICAgICAgIEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIFNwZWNCeXRlY29kZU51bWJl
ciwKKyAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBncHIs
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworI2Vsc2UKKyAgICBHUFJSZWcgdGFn
R1BSID0gdmFsdWUudGFnR1BSKCk7CisgICAgREZHX1RZUEVfQ0hFQ0soCisgICAgICAgIHZhbHVl
LmpzVmFsdWVSZWdzKCksIGVkZ2UsIH5TcGVjSW50MzIsCisgICAgICAgIG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50
MzJUYWcpKSk7CisgICAgREZHX1RZUEVfQ0hFQ0soCisgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdz
KCksIGVkZ2UsIFNwZWNCeXRlY29kZU51bWJlciwKKyAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
TG93ZXN0VGFnKSkpOworI2VuZGlmCiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZVJlYWxOdW1iZXIoRWRnZSBlZGdlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRG91
YmxlUmVhbChFZGdlIGVkZ2UpCiB7Ci0gICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVj
RnVsbFJlYWxOdW1iZXIpKQorICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0RvdWJs
ZVJlYWwpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFu
ZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwogICAgIEZQUlJlZyBmcHIgPSBvcGVyYW5kLmZwcigpOwot
ICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjRnVs
bFJlYWxOdW1iZXIsCisgICAgdHlwZUNoZWNrKAorICAgICAgICBKU1ZhbHVlUmVncygpLCBlZGdl
LCBTcGVjRG91YmxlUmVhbCwKICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIGZwciwgZnByKSk7
CiB9CkBAIC00NzY4LDggKzQ4MjUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
KE5vZGUqLCBFZAogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAgQVNTRVJUKCFuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjSW50MzIpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBL
bm93bk51bWJlclVzZToKLSAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVj
RnVsbE51bWJlcikpOworICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBBU1NFUlQoIW5l
ZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNEb3VibGUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVj
TWFjaGluZUludCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAg
ICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCkpOwpAQCAtNDc4MCwx
NSArNDg0MCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkCiAg
ICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgc3BlY3VsYXRlSW50MzIoZWRnZSk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgTWFjaGluZUludFVzZToKLSAgICAgICAgc3BlY3VsYXRlTWFjaGlu
ZUludChlZGdlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAg
ICAgICBzcGVjdWxhdGVSZWFsTnVtYmVyKGVkZ2UpOwotICAgICAgICBicmVhazsKICAgICBjYXNl
IE51bWJlclVzZToKICAgICAgICAgc3BlY3VsYXRlTnVtYmVyKGVkZ2UpOwogICAgICAgICBicmVh
azsKKyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgICAgIHNwZWN1bGF0ZURvdWJsZVJl
YWwoZWRnZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAg
c3BlY3VsYXRlQm9vbGVhbihlZGdlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNjcyMDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgU3BlY3VsYXRlRG91YmxlT3BlcmFuZDsK
IGNsYXNzIFNwZWN1bGF0ZUNlbGxPcGVyYW5kOwogY2xhc3MgU3BlY3VsYXRlQm9vbGVhbk9wZXJh
bmQ7CiAKLWVudW0gR2VuZXJhdGVkT3BlcmFuZFR5cGUgeyBHZW5lcmF0ZWRPcGVyYW5kVHlwZVVu
a25vd24sIEdlbmVyYXRlZE9wZXJhbmRJbnRlZ2VyLCBHZW5lcmF0ZWRPcGVyYW5kRG91YmxlLCBH
ZW5lcmF0ZWRPcGVyYW5kSlNWYWx1ZX07CitlbnVtIEdlbmVyYXRlZE9wZXJhbmRUeXBlIHsgR2Vu
ZXJhdGVkT3BlcmFuZFR5cGVVbmtub3duLCBHZW5lcmF0ZWRPcGVyYW5kSW50ZWdlciwgR2VuZXJh
dGVkT3BlcmFuZEpTVmFsdWV9OwogCiBpbmxpbmUgR1BSUmVnIGV4dHJhY3RSZXN1bHQoR1BSUmVn
IHJlc3VsdCkgeyByZXR1cm4gcmVzdWx0OyB9CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTQ1OSw2
ICs0NTksMTAgQEAgcHVibGljOgogICAgICAgICBtX2ppdC51bmJveERvdWJsZSh0YWdHUFIsIHBh
eWxvYWRHUFIsIGZwciwgc2NyYXRjaEZQUik7CiAgICAgfQogI2VuZGlmCisgICAgdm9pZCBib3hE
b3VibGUoRlBSUmVnIGZwciwgSlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7CisgICAgICAgIG1faml0
LmJveERvdWJsZShmcHIsIHJlZ3MpOworICAgIH0KIAogICAgIC8vIFNwaWxsIGEgVmlydHVhbFJl
Z2lzdGVyIHRvIHRoZSBKU1N0YWNrLgogICAgIHZvaWQgc3BpbGwoVmlydHVhbFJlZ2lzdGVyIHNw
aWxsTWUpCkBAIC05MjUsNiArOTI5LDE0IEBAIHB1YmxpYzoKICAgICAgICAganNWYWx1ZVJlc3Vs
dCh0YWcsIHBheWxvYWQsIG5vZGUsIERhdGFGb3JtYXRKUywgbW9kZSk7CiAgICAgfQogI2VuZGlm
CisgICAgdm9pZCBqc1ZhbHVlUmVzdWx0KEpTVmFsdWVSZWdzIHJlZ3MsIE5vZGUqIG5vZGUsIERh
dGFGb3JtYXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbk1vZGUgbW9kZSA9IENh
bGxVc2VDaGlsZHJlbikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAganNWYWx1
ZVJlc3VsdChyZWdzLmdwcigpLCBub2RlLCBmb3JtYXQsIG1vZGUpOworI2Vsc2UKKyAgICAgICAg
anNWYWx1ZVJlc3VsdChyZWdzLnRhZ0dQUigpLCByZWdzLnBheWxvYWRHUFIoKSwgbm9kZSwgZm9y
bWF0LCBtb2RlKTsKKyNlbmRpZgorICAgIH0KICAgICB2b2lkIHN0b3JhZ2VSZXN1bHQoR1BSUmVn
IHJlZywgTm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRyZW4p
CiAgICAgewogICAgICAgICBpZiAobW9kZSA9PSBDYWxsVXNlQ2hpbGRyZW4pCkBAIC0yMDgwLDEw
ICsyMDkyLDEyIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0
aChOb2RlKik7CiAgICAgCisgICAgdm9pZCBjb21waWxlVmFsdWVSZXAoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZURvdWJsZVJlcChOb2RlKik7CisgICAgCiAgICAgdm9pZCBjb21waWxlVmFsdWVU
b0ludDMyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVVSW50MzJUb051bWJlcihOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlRG91YmxlQXNJbnQzMihOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlSW50
MzJUb0RvdWJsZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQWRkKE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVNYWtlUm9wZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhTdWIoTm9kZSop
OwpAQCAtMjE4NSwxMiArMjE5OSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW1pdEFsbG9jYXRl
SlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwg
dW5zaWduZWQgbnVtRWxlbWVudHMpOwogCi0jaWYgVVNFKEpTVkFMVUU2NCkgCi0gICAgSklUQ29t
cGlsZXI6Okp1bXAgY29udmVydFRvRG91YmxlKEdQUlJlZyB2YWx1ZSwgRlBSUmVnIHJlc3VsdCwg
R1BSUmVnIHRtcCk7Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIEpJVENvbXBpbGVyOjpK
dW1wIGNvbnZlcnRUb0RvdWJsZShKU1ZhbHVlT3BlcmFuZCYsIEZQUlJlZyByZXN1bHQpOwotI2Vu
ZGlmCi0gICAgCiAgICAgLy8gQWRkIGEgc3BlY3VsYXRpb24gY2hlY2suCiAgICAgdm9pZCBzcGVj
dWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBOb2RlKiwgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAganVtcFRvRmFpbCk7CiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5k
LCBKU1ZhbHVlU291cmNlLCBOb2RlKiwgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBq
dW1wc1RvRmFpbCk7CkBAIC0yMjE3LDcgKzIyMjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzcGVj
dWxhdGVJbnQzMihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSk7CiAg
ICAgdm9pZCBzcGVjdWxhdGVOdW1iZXIoRWRnZSk7Ci0gICAgdm9pZCBzcGVjdWxhdGVSZWFsTnVt
YmVyKEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlRG91YmxlUmVhbChFZGdlKTsKICAgICB2b2lk
IHNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVDZWxsKEVkZ2UpOwog
ICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0KEVkZ2UpOwpAQCAtMjU2NSw2ICsyNTczLDIzIEBAIHBy
aXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwogfTsKIAorY2xhc3MgSlNWYWx1ZVJlZ3NUZW1wb3Jh
cnkgeworcHVibGljOgorICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5KCk7CisgICAgSlNWYWx1ZVJl
Z3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqKTsKKyAgICB+SlNWYWx1ZVJlZ3NUZW1wb3Jhcnko
KTsKKyAgICAKKyAgICBKU1ZhbHVlUmVncyByZWdzKCk7CisKK3ByaXZhdGU6CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBHUFJUZW1wb3JhcnkgbV9ncHI7CisjZWxzZQorICAgIEdQUlRlbXBvcmFy
eSBtX3BheWxvYWRHUFI7CisgICAgR1BSVGVtcG9yYXJ5IG1fdGFnR1BSOworI2VuZGlmCit9Owor
CiBjbGFzcyBGUFJUZW1wb3JhcnkgewogcHVibGljOgogICAgIEZQUlRlbXBvcmFyeShTcGVjdWxh
dGl2ZUpJVCopOwpAQCAtMjc1NCwxMiArMjc3OSwxMiBAQCBwcml2YXRlOgogLy8gR2l2ZXMgeW91
IGEgY2Fub25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDE2LCBsb3cgYml0
cyB6ZXJvKS4KIGNsYXNzIFNwZWN1bGF0ZUludDUyT3BlcmFuZCB7CiBwdWJsaWM6Ci0gICAgZXhw
bGljaXQgU3BlY3VsYXRlSW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRn
ZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0
aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCog
aml0LCBFZGdlIGVkZ2UpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fZWRnZShl
ZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgewotICAg
ICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
IHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlz
RmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CkBAIC0yODAxLDEyICsy
ODI2LDEyIEBAIHByaXZhdGU6CiAvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4gdGhl
IHBheWxvYWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMgYXJlIHNpZ24tZXh0
ZW5kZWQpLgogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGpp
dCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVy
YW5kU3BlY3VsYXRpb24pCisgICAgZXhwbGljaXQgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5k
KFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSkKICAgICAgICAgOiBtX2ppdChqaXQpCiAg
ICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQ
UlJlZykKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKTsKICAg
ICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKICAgICAgICAgICAgIGdwcigpOwogICAg
IH0KQEAgLTI4NDksMzUgKzI4NzQsMzUgQEAgZW51bSBPcHBvc2l0ZVNoaWZ0VGFnIHsgT3Bwb3Np
dGVTaGlmdCB9OwogCiBjbGFzcyBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQgewogcHVi
bGljOgotICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZChTcGVjdWxh
dGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1
dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2
ZXJJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlKQogICAgICAgICA6
IG1faml0KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkKICAgICAgICAgLCBtX2dwck9ySW52
YWxpZChJbnZhbGlkR1BSUmVnKQogICAgICAgICAsIG1fc3RyaWN0KGppdC0+YmV0dGVyVXNlU3Ry
aWN0SW50NTIoZWRnZSkpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUg
PT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJ
bnRVc2UpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJl
cFVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBn
cHIoKTsKICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NTJP
cGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgY29uc3QgU3BlY3VsYXRlV2hp
Y2hldmVySW50NTJPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0g
QXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNo
ZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIGNvbnN0IFNw
ZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCYgb3RoZXIpCiAgICAgICAgIDogbV9qaXQoaml0
KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFs
aWRHUFJSZWcpCiAgICAgICAgICwgbV9zdHJpY3Qob3RoZXIubV9zdHJpY3QpCiAgICAgewotICAg
ICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
IHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlz
RmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CiAgICAgCi0gICAgZXhw
bGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQs
IEVkZ2UgZWRnZSwgT3Bwb3NpdGVTaGlmdFRhZywgY29uc3QgU3BlY3VsYXRlV2hpY2hldmVySW50
NTJPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGlj
T3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUy
T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wcG9zaXRlU2hpZnRUYWcs
IGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCYgb3RoZXIpCiAgICAgICAgIDog
bV9qaXQoaml0KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZh
bGlkKEludmFsaWRHUFJSZWcpCiAgICAgICAgICwgbV9zdHJpY3QoIW90aGVyLm1fc3RyaWN0KQog
ICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpOwogICAgICAgICBp
ZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQogICAgICAgICAgICAgZ3ByKCk7CiAgICAgfQpAQCAt
MjkyNiwxMyArMjk1MSwxMyBAQCBwcml2YXRlOgogCiBjbGFzcyBTcGVjdWxhdGVEb3VibGVPcGVy
YW5kIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVEb3VibGVPcGVyYW5kKFNwZWN1
bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0g
QXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZURvdWJs
ZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlKQogICAgICAgICA6IG1faml0
KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkKICAgICAgICAgLCBtX2Zwck9ySW52YWxpZChJ
bnZhbGlkRlBSUmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faml0KTsKLSAgICAgICAgQVNT
RVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBpc0Rv
dWJsZShlZGdlLnVzZUtpbmQoKSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0RvdWJsZShl
ZGdlLnVzZUtpbmQoKSkpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQogICAg
ICAgICAgICAgZnByKCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdVc2VLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1VzZUtpbmQuY3BwCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNyArNDYsMTcgQEAgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2UgS25vd25JbnQz
MlVzZToKICAgICAgICAgb3V0LnByaW50KCJLbm93bkludDMyIik7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTWFjaGluZUludFVzZToKLSAgICAgICAgb3V0LnByaW50KCJNYWNoaW5lSW50Iik7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgb3V0LnBy
aW50KCJSZWFsTnVtYmVyIik7CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgb3V0LnBy
aW50KCJJbnQ1MlJlcCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE51bWJlclVzZToKICAg
ICAgICAgb3V0LnByaW50KCJOdW1iZXIiKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBLbm93
bk51bWJlclVzZToKLSAgICAgICAgb3V0LnByaW50KCJLbm93bk51bWJlciIpOworICAgIGNhc2Ug
RG91YmxlUmVwVXNlOgorICAgICAgICBvdXQucHJpbnQoIkRvdWJsZVJlcCIpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgICAgIG91dC5wcmludCgiRG91
YmxlUmVwUmVhbCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAg
ICAgIG91dC5wcmludCgiQm9vbGVhbiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdVc2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdVc2VLaW5kLmgJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVXNlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMCArMzcsMTAgQEAgZW51bSBV
c2VLaW5kIHsKICAgICBVbnR5cGVkVXNlLAogICAgIEludDMyVXNlLAogICAgIEtub3duSW50MzJV
c2UsCi0gICAgTWFjaGluZUludFVzZSwKLSAgICBSZWFsTnVtYmVyVXNlLAorICAgIEludDUyUmVw
VXNlLAogICAgIE51bWJlclVzZSwKLSAgICBLbm93bk51bWJlclVzZSwKKyAgICBEb3VibGVSZXBV
c2UsCisgICAgRG91YmxlUmVwUmVhbFVzZSwKICAgICBCb29sZWFuVXNlLAogICAgIENlbGxVc2Us
CiAgICAgS25vd25DZWxsVXNlLApAQCAtNjcsMTMgKzY3LDE0IEBAIEFMV0FZU19JTkxJTkUgU3Bl
Y3VsYXRlZFR5cGUgdHlwZUZpbHRlckYKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25v
d25JbnQzMlVzZToKICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKLSAgICBjYXNlIE1hY2hpbmVJ
bnRVc2U6CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNNYWNoaW5l
SW50OwotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgcmV0dXJuIFNwZWNGdWxsUmVh
bE51bWJlcjsKICAgICBjYXNlIE51bWJlclVzZToKLSAgICBjYXNlIEtub3duTnVtYmVyVXNlOgot
ICAgICAgICByZXR1cm4gU3BlY0Z1bGxOdW1iZXI7CisgICAgICAgIHJldHVybiBTcGVjQnl0ZWNv
ZGVOdW1iZXI7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgIHJldHVybiBTcGVjRG91
YmxlOworICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNEb3Vi
bGVSZWFsOwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCb29sZWFu
OwogICAgIGNhc2UgQ2VsbFVzZToKQEAgLTExMyw5ICsxMTQsMTAgQEAgQUxXQVlTX0lOTElORSBi
b29sIHNob3VsZE5vdEhhdmVUeXBlQ2hlYwogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2Ug
VW50eXBlZFVzZToKICAgICBjYXNlIEtub3duSW50MzJVc2U6Ci0gICAgY2FzZSBLbm93bk51bWJl
clVzZToKICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgor
ICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMiwx
MCArMTM0LDEwIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGsKICAg
ICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQz
MlVzZToKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgog
ICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CisgICAgY2FzZSBJ
bnQ1MlJlcFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFJl
YWxVc2U6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTE0NSw5ICsxNDcsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOdW1lcmlj
YWwoVXNlS2luZCBrCiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEb3VibGUoVXNlS2luZCBraW5kKQog
ewogICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICBjYXNl
IE51bWJlclVzZToKLSAgICBjYXNlIEtub3duTnVtYmVyVXNlOgorICAgIGNhc2UgRG91YmxlUmVw
VXNlOgorICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEx
NSw2ICsxMTUsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICBtX215UmVmQ291bnRzLmZpbmQoZWRnZS5ub2RlKCkpLT52YWx1ZSsrOwogICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2Up
LCBlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSA9PSAoZWRnZS51c2VLaW5kKCkgPT0gRG91YmxlUmVw
VXNlIHx8IGVkZ2UudXNlS2luZCgpID09IERvdWJsZVJlcFJlYWxVc2UpKTsKKyAgICAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpID09
IChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSkpOworICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gSW4gU1NBLCBhbGwgZWRnZXMgbXVzdCBoYXNSZXN1bHQoKS4K
ICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+aGFz
UmVzdWx0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw2IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIEFyaXRoRlJv
dW5kOgogICAgIGNhc2UgQXJpdGhOZWdhdGU6CiAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKLSAg
ICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAgY2FzZSBDb21wYXJlRXFDb25zdGFudDoKICAgICBj
YXNlIEp1bXA6CiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CkBAIC0xMDMsNyArMTAyLDYgQEAgaW5s
aW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgR2V0Q2xvc3Vy
ZVJlZ2lzdGVyczoKICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgY2FzZSBQdXRDbG9zdXJl
VmFyOgotICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6
CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgpAQCAtMTUy
LDYgKzE1MCwxMSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAg
ICAgY2FzZSBJc0Z1bmN0aW9uOgogICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZToKICAgICBjYXNl
IEluc3RhbmNlT2Y6CisgICAgY2FzZSBEb3VibGVSZXA6CisgICAgY2FzZSBWYWx1ZVJlcDoKKyAg
ICBjYXNlIEludDUyUmVwOgorICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAgY2FzZSBJbnQ1
MkNvbnN0YW50OgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUHV0QnlJZERpcmVjdDoKQEAgLTIzNSw5ICsyMzgsOSBAQCBpbmxpbmUgQ2FwYWJpbGl0
eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBDb21wYXJlRXE6CiAgICAgICAgIGlm
IChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpCisgICAgICAg
IGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKQogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkKKyAgICAg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpKQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2Up
KQogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNTUsOSArMjU4LDkgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAg
ICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSkKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKQor
ICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkp
CisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lk
ZW50VXNlKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgwLDkgKzI4Myw5IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIENvbXBhcmVHcmVhdGVy
RXE6CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUlu
dFVzZSkpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKQog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVt
YmVyVXNlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2Up
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
VW50eXBlZFVzZSkpCiAgICAgICAgICAgICBicmVhazsKQEAgLTM1MCwxMCArMzUzLDEwIEBAIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBj
YXNlIFVudHlwZWRVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAg
ICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBNYWNoaW5l
SW50VXNlOgorICAgICAgICAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICAg
ICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBLbm93bk51bWJlclVzZToK
LSAgICAgICAgICAgICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CisgICAgICAgICAgICAgICAgY2Fz
ZSBEb3VibGVSZXBVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgog
ICAgICAgICAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgICAgICAgICBjYXNlIENl
bGxVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBLbm93bkNlbGxVc2U6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24g
MTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw3ICsxODYsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBMVHlwZSB0eXBlOwogICAgICAg
ICAgICAgICAgIHN3aXRjaCAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVSZXN1bHRNYXNrKSB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0TnVtYmVyOgorICAgICAgICAgICAgICAgIGNhc2Ug
Tm9kZVJlc3VsdERvdWJsZToKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IG1fb3V0LmRvdWJs
ZVR5cGU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2Ug
Tm9kZVJlc3VsdEludDMyOgpAQCAtMjgyLDEyICsyODIsMzAgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICAgICAgICAgIGNvbXBpbGVEb3VibGVD
b25zdGFudCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFu
dDoKKyAgICAgICAgICAgIGNvbXBpbGVJbnQ1MkNvbnN0YW50KCk7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAgICAgICAgICAgIGNvbXBpbGVXZWFr
SlNDb25zdGFudCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGhhbnRvbUFy
Z3VtZW50czoKICAgICAgICAgICAgIGNvbXBpbGVQaGFudG9tQXJndW1lbnRzKCk7CiAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEb3VibGVSZXA6CisgICAgICAgICAgICBjb21waWxl
RG91YmxlUmVwKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWYWx1ZVJlcDoK
KyAgICAgICAgICAgIGNvbXBpbGVWYWx1ZVJlcCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgSW50NTJSZXA6CisgICAgICAgICAgICBjb21waWxlSW50NTJSZXAoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAgICAgICAgICAgIGNv
bXBpbGVWYWx1ZVRvSW50MzIoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdl
dEFyZ3VtZW50OgogICAgICAgICAgICAgY29tcGlsZUdldEFyZ3VtZW50KCk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTM3OCw5ICszOTYsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFVJbnQz
MlRvTnVtYmVyOgogICAgICAgICAgICAgY29tcGlsZVVJbnQzMlRvTnVtYmVyKCk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgotICAgICAgICAgICAgY29t
cGlsZUludDMyVG9Eb3VibGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENo
ZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgY29tcGlsZUNoZWNrU3RydWN0dXJlKCk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTU2OSwxMiArNTg0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICAgICAgICAgIGNvbXBpbGVJbnZhbGlkYXRpb25Qb2lu
dCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgotICAg
ICAgICAgICAgY29tcGlsZVZhbHVlVG9JbnQzMigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgSW50NTJUb1ZhbHVlOgotICAgICAgICAgICAgY29tcGlsZUludDUyVG9WYWx1ZSgp
OwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVh
dGVkOgogICAgICAgICAgICAgY29tcGlsZUNoZWNrQXJndW1lbnRzTm90Q3JlYXRlZCgpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC02MzMsNzMgKzY0MiwxOCBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBpbGVWYWx1ZVRvSW50MzIoKQotICAg
IHsKLSAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewotICAgICAg
ICBjYXNlIEludDMyVXNlOgotICAgICAgICAgICAgc2V0SW50MzIobG93SW50MzIobV9ub2RlLT5j
aGlsZDEoKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2Fz
ZSBNYWNoaW5lSW50VXNlOgotICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIo
bG93U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSkpKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAgICAgICBjYXNlIE5vdENl
bGxVc2U6IHsKLSAgICAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2ludDMyVmFs
dWVzLmdldChtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoaXNWYWxp
ZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMih2YWx1ZS52YWx1ZSgpKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgp
KTsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgICAgIHNl
dEludDMyKG51bWJlck9yTm90Q2VsbFRvSW50MzIobV9ub2RlLT5jaGlsZDEoKSwgdmFsdWUudmFs
dWUoKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgCi0gICAgICAgICAgICB2YWx1ZSA9IG1fZG91YmxlVmFsdWVzLmdldChtX25vZGUtPmNoaWxk
MSgpLm5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAg
ICAgICAgICBzZXRJbnQzMihkb3VibGVUb0ludDMyKHZhbHVlLnZhbHVlKCkpKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAg
Ly8gV2UnbGwgYmFzaWNhbGx5IGp1c3QgZ2V0IGhlcmUgZm9yIGNvbnN0YW50cy4gQnV0IGl0J3Mg
Z29vZCB0byBoYXZlIHRoaXMKLSAgICAgICAgICAgIC8vIGNhdGNoLWFsbCBzaW5jZSB3ZSBvZnRl
biBhZGQgbmV3IHJlcHJlc2VudGF0aW9ucyBpbnRvIHRoZSBtaXguCi0gICAgICAgICAgICBzZXRJ
bnQzMigKLSAgICAgICAgICAgICAgICBudW1iZXJPck5vdENlbGxUb0ludDMyKAotICAgICAgICAg
ICAgICAgICAgICBtX25vZGUtPmNoaWxkMSgpLAotICAgICAgICAgICAgICAgICAgICBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbikpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBCb29s
ZWFuVXNlOgotICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuemVyb0V4dChsb3dCb29sZWFuKG1f
bm9kZS0+Y2hpbGQxKCkpLCBtX291dC5pbnQzMikpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHZvaWQgY29tcGlsZUludDUyVG9WYWx1ZSgpCi0gICAgewotICAgICAgICBzZXRKU1ZhbHVlKGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSkpOwotICAgIH0KLQogICAgIHZvaWQgY29tcGlsZVVw
c2lsb24oKQogICAgIHsKICAgICAgICAgTFZhbHVlIGRlc3RpbmF0aW9uID0gbV9waGlzLmdldCht
X25vZGUtPnBoaSgpKTsKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkpIHsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91
YmxlUmVwVXNlOgogICAgICAgICAgICAgbV9vdXQuc2V0KGxvd0RvdWJsZShtX25vZGUtPmNoaWxk
MSgpKSwgZGVzdGluYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW50
MzJVc2U6CiAgICAgICAgICAgICBtX291dC5zZXQobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSks
IGRlc3RpbmF0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hY2hpbmVJ
bnRVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICBtX291dC5zZXQo
bG93SW50NTIobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0aW9uKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CkBAIC03MjIsNyArNjc2LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgTFZhbHVlIHNvdXJjZSA9IG1fcGhpcy5nZXQobV9ub2RlKTsKICAgICAgICAg
CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5mbGFncygpICYgTm9kZVJlc3VsdE1hc2spIHsKLSAg
ICAgICAgY2FzZSBOb2RlUmVzdWx0TnVtYmVyOgorICAgICAgICBjYXNlIE5vZGVSZXN1bHREb3Vi
bGU6CiAgICAgICAgICAgICBzZXREb3VibGUobV9vdXQuZ2V0KHNvdXJjZSkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgpAQCAtNzQyLDE3ICs2OTYs
MTIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKyAg
ICAKKyAgICB2b2lkIGNvbXBpbGVEb3VibGVDb25zdGFudCgpCisgICAgeworICAgICAgICBzZXRE
b3VibGUobV9vdXQuY29uc3REb3VibGUobV9ncmFwaC52YWx1ZU9mTnVtYmVyQ29uc3RhbnQobV9u
b2RlKSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVJbnQ1MkNvbnN0YW50KCkKKyAg
ICB7CisgICAgICAgIGludDY0X3QgdmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG1f
bm9kZSkuYXNNYWNoaW5lSW50KCk7CisgICAgICAgIAorICAgICAgICBzZXRJbnQ1MihtX291dC5j
b25zdEludDY0KHZhbHVlIDw8IEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpKTsKKyAgICAgICAg
c2V0U3RyaWN0SW50NTIobV9vdXQuY29uc3RJbnQ2NCh2YWx1ZSkpOworICAgIH0KIAorICAgIHZv
aWQgY29tcGlsZVdlYWtKU0NvbnN0YW50KCkKKyAgICB7CisgICAgICAgIHNldEpTVmFsdWUod2Vh
a1BvaW50ZXIobV9ub2RlLT53ZWFrQ29uc3RhbnQoKSkpOworICAgIH0KKyAgICAKICAgICB2b2lk
IGNvbXBpbGVQaGFudG9tQXJndW1lbnRzKCkKICAgICB7CiAgICAgICAgIHNldEpTVmFsdWUobV9v
dXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKSkpOwogICAgIH0KICAgICAK
LSAgICB2b2lkIGNvbXBpbGVXZWFrSlNDb25zdGFudCgpCisgICAgdm9pZCBjb21waWxlRG91Ymxl
UmVwKCkKICAgICB7Ci0gICAgICAgIHNldEpTVmFsdWUod2Vha1BvaW50ZXIobV9ub2RlLT53ZWFr
Q29uc3RhbnQoKSkpOworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
KSB7CisgICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgdmFsdWUg
PSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
CisgICAgICAgICAgICBzZXREb3VibGUoanNWYWx1ZVRvRG91YmxlKG1fbm9kZS0+Y2hpbGQxKCks
IHZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAgICAgICAgICBzZXREb3VibGUoc3RyaWN0
SW50NTJUb0RvdWJsZShsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgCisgICAgdm9pZCBjb21waWxlVmFsdWVSZXAoKQorICAgIHsKKyAgICAgICAgc3dp
dGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIERvdWJsZVJl
cFVzZTogeworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hEb3VibGUobG93RG91YmxlKG1fbm9k
ZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAgICAgICAgICBzZXRKU1ZhbHVl
KHN0cmljdEludDUyVG9KU1ZhbHVlKGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hpbGQxKCkpKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgfQogICAgIH0KICAgICAKKyAgICB2b2lkIGNvbXBpbGVJbnQ1MlJlcCgpCisgICAgeworICAg
ICAgICBzZXRTdHJpY3RJbnQ1MihtX291dC5zaWduRXh0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQx
KCkpLCBtX291dC5pbnQ2NCkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVWYWx1ZVRv
SW50MzIoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSkgeworICAgICAgICBjYXNlIEludDMyVXNlOgorICAgICAgICAgICAgc2V0SW50MzIobG93SW50
MzIobV9ub2RlLT5jaGlsZDEoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
KyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgICAgIHNldEludDMyKG1fb3V0LmNh
c3RUb0ludDMyKGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAg
ICAgICAgIHNldEludDMyKGRvdWJsZVRvSW50MzIobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkp
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIE51bWJl
clVzZToKKyAgICAgICAgY2FzZSBOb3RDZWxsVXNlOiB7CisgICAgICAgICAgICBMb3dlcmVkTm9k
ZVZhbHVlIHZhbHVlID0gbV9pbnQzMlZhbHVlcy5nZXQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICAgICAgc2V0
SW50MzIodmFsdWUudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdl
dChtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1
ZSkpIHsKKyAgICAgICAgICAgICAgICBzZXRJbnQzMihudW1iZXJPck5vdENlbGxUb0ludDMyKG1f
bm9kZS0+Y2hpbGQxKCksIHZhbHVlLnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gV2UnbGwgYmFzaWNh
bGx5IGp1c3QgZ2V0IGhlcmUgZm9yIGNvbnN0YW50cy4gQnV0IGl0J3MgZ29vZCB0byBoYXZlIHRo
aXMKKyAgICAgICAgICAgIC8vIGNhdGNoLWFsbCBzaW5jZSB3ZSBvZnRlbiBhZGQgbmV3IHJlcHJl
c2VudGF0aW9ucyBpbnRvIHRoZSBtaXguCisgICAgICAgICAgICBzZXRJbnQzMigKKyAgICAgICAg
ICAgICAgICBudW1iZXJPck5vdENlbGxUb0ludDMyKAorICAgICAgICAgICAgICAgICAgICBtX25v
ZGUtPmNoaWxkMSgpLAorICAgICAgICAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbikpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBCb29sZWFuVXNlOgorICAgICAg
ICAgICAgc2V0SW50MzIobV9vdXQuemVyb0V4dChsb3dCb29sZWFuKG1fbm9kZS0+Y2hpbGQxKCkp
LCBtX291dC5pbnQzMikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUdl
dEFyZ3VtZW50KCkKICAgICB7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUg
PSBtX25vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwpAQCAtOTY2LDcgKzEwMjMsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAg
ICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAg
ICAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5
cGUoU3BlY0ludDUyKQogICAgICAgICAgICAgICAgICYmICFtX3N0YXRlLmZvck5vZGUobV9ub2Rl
LT5jaGlsZDIoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyKSkgewogICAgICAgICAgICAgICAgIElu
dDUyS2luZCBraW5kOwpAQCAtMTAxNiw3ICsxMDczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6
IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIExWYWx1ZSBDMSA9
IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSBDMiA9IGxv
d0RvdWJsZShtX25vZGUtPmNoaWxkMigpKTsKIApAQCAtMTA2NSw3ICsxMTIyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAg
Y2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAgICAg
ICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dXaGlj
aGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBraW5kKTsKICAgICAgICAgICAgIExWYWx1ZSBy
aWdodCA9IGxvd0ludDUyKG1fbm9kZS0+Y2hpbGQyKCksIG9wcG9zaXRlKGtpbmQpKTsKQEAgLTEw
OTIsNyArMTE0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91
YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBzZXREb3VibGUoCiAgICAgICAgICAgICAgICAgbV9v
dXQuZG91YmxlTXVsKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9k
ZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExOTUsNyArMTI1Miw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0g
ICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAg
ICAgICAgICAgICBzZXREb3VibGUobV9vdXQuZG91YmxlRGl2KAogICAgICAgICAgICAgICAgIGxv
d0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyOTMsNyArMTM1MCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVt
YmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBzZXRE
b3VibGUoCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlUmVtKGxvd0RvdWJsZShtX25vZGUt
PmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTEzMjEsNyArMTM3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAg
ICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0Rv
dWJsZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0Rv
dWJsZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIApAQCAtMTM3MSw3ICsxNDI4LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
LSAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsK
ICAgICAgICAgICAgIHNldERvdWJsZShtX291dC5kb3VibGVBYnMobG93RG91YmxlKG1fbm9kZS0+
Y2hpbGQxKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTQxOCw3ICsx
NDc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIGNhc2UgSW50NTJS
ZXBVc2U6IHsKICAgICAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQx
KCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1MikpIHsKICAgICAgICAgICAgICAgICBJbnQ1MktpbmQg
a2luZDsKICAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dXaGljaGV2ZXJJbnQ1Miht
X25vZGUtPmNoaWxkMSgpLCBraW5kKTsKQEAgLTE0MzgsNyArMTQ5NSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2Ug
TnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBz
ZXREb3VibGUobV9vdXQuZG91YmxlTmVnKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0OTgsMTEgKzE1NTUsNiBAQCBwcml2
YXRlOgogICAgICAgICBzZXRJbnQzMih2YWx1ZSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgY29t
cGlsZUludDMyVG9Eb3VibGUoKQotICAgIHsKLSAgICAgICAgc2V0RG91YmxlKGxvd0RvdWJsZSht
X25vZGUtPmNoaWxkMSgpKSk7Ci0gICAgfQotICAgIAogICAgIHZvaWQgY29tcGlsZUNoZWNrU3Ry
dWN0dXJlKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKTsKQEAgLTIyMTMsNyArMjI2NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
aWYgKGlzSW50KHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBpbnRWYWx1ZTsK
ICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjaGlsZDMudXNlS2luZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMy51c2VLaW5kKCkgPT0gSW50MzJVc2UpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50VmFsdWUgPSBsb3dJbnQzMihjaGlsZDMpOwpA
QCAtMjI0Niw3ICsyMjk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBkb3Vi
bGVWYWx1ZSA9IGxvd0RvdWJsZShjaGlsZDMpOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNDbGFtcGVkKHR5cGUpKSB7CkBAIC0zMzI4LDgg
KzMzODAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUNvbXBhcmVFcSgpCiAgICAgewog
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpCi0gICAgICAgICAg
ICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKQotICAgICAgICAgICAg
fHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKQorICAgICAgICAgICAgfHwgbV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpCisgICAgICAgICAgICB8fCBtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChPYmplY3RVc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChCb29sZWFuVXNlKQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoU3RyaW5nSWRlbnRVc2UpKSB7CkBAIC0zMzcxLDcgKzM0MjMsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsKKyAgICAgICAgaWYgKG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICAgICAgSW50NTJLaW5kIGtp
bmQ7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+
Y2hpbGQxKCksIGtpbmQpOwogICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NTIobV9u
b2RlLT5jaGlsZDIoKSwga2luZCk7CkBAIC0zMzc5LDcgKzM0MzEsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkgeworICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKSkgewogICAgICAgICAgICAgc2V0Qm9vbGVhbigKICAg
ICAgICAgICAgICAgICBtX291dC5kb3VibGVFcXVhbChsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEo
KSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtNDEyMyw3ICs0MTc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hp
bmVJbnRVc2UpKSB7CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJl
cFVzZSkpIHsKICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAgICAgICAgTFZhbHVl
IGxlZnQgPSBsb3dXaGljaGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBraW5kKTsKICAgICAg
ICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0ludDUyKG1fbm9kZS0+Y2hpbGQyKCksIGtpbmQpOwpA
QCAtNDEzMSw3ICs0MTgzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJl
clVzZSkpIHsKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVz
ZSkpIHsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5mY21wKHJlYWxDb25kaXRpb24sIGxl
ZnQsIHJpZ2h0KSk7CkBAIC00Mzg4LDcgKzQ0NDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cmV0dXJuIGxvd0Jvb2xlYW4obV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGNhc2UgSW50MzJV
c2U6CiAgICAgICAgICAgICByZXR1cm4gbV9vdXQubm90WmVybzMyKGxvd0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpKTsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91Ymxl
UmVwVXNlOgogICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmRvdWJsZU5vdEVxdWFsKGxvd0RvdWJs
ZShlZGdlKSwgbV9vdXQuZG91YmxlWmVybyk7CiAgICAgICAgIGNhc2UgT2JqZWN0T3JPdGhlclVz
ZToKICAgICAgICAgICAgIHJldHVybiBtX291dC5iaXROb3QoCkBAIC00NzM0LDIxICs0Nzg2LDkg
QEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgZW51bSBJbnQ1MktpbmQgeyBTdHJpY3RJbnQ1
MiwgSW50NTIgfTsKLSAgICBMVmFsdWUgbG93SW50NTIoRWRnZSBlZGdlLCBJbnQ1MktpbmQga2lu
ZCwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0
aW9uKQorICAgIExWYWx1ZSBsb3dJbnQ1MihFZGdlIGVkZ2UsIEludDUyS2luZCBraW5kKQogICAg
IHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKLSAgICAgICAgCi0g
ICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAg
ICBpZiAoIXZhbHVlLmlzTWFjaGluZUludCgpKSB7Ci0gICAgICAgICAgICAgICAgdGVybWluYXRl
KFVuY291bnRhYmxlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuaW50NjRaZXJvOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaW50NjRfdCByZXN1bHQgPSB2YWx1ZS5hc01hY2hp
bmVJbnQoKTsKLSAgICAgICAgICAgIGlmIChraW5kID09IEludDUyKQotICAgICAgICAgICAgICAg
IHJlc3VsdCA8PD0gSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudDsKLSAgICAgICAgICAgIHJldHVy
biBtX291dC5jb25zdEludDY0KHJlc3VsdCk7Ci0gICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpOwogICAgICAgICAKICAgICAgICAg
TG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZTsKICAgICAgICAgCkBAIC00NzczLDM3ICs0ODEzLDIwIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludDUyVG9TdHJpY3RJbnQ1Mih2YWx1
ZS52YWx1ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICB2YWx1ZSA9IG1faW50MzJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYg
KGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAgICByZXR1cm4gc2V0SW50NTJXaXRoU3RyaWN0
VmFsdWUoCi0gICAgICAgICAgICAgICAgZWRnZS5ub2RlKCksIG1fb3V0LnNpZ25FeHQodmFsdWUu
dmFsdWUoKSwgbV9vdXQuaW50NjQpLCBraW5kKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIShtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgU3BlY0lu
dDUyKSk7Ci0gICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQoZWRn
ZS5ub2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgIExW
YWx1ZSBib3hlZFJlc3VsdCA9IHZhbHVlLnZhbHVlKCk7Ci0gICAgICAgICAgICBGVExfVFlQRV9D
SEVDSygKLSAgICAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoYm94ZWRSZXN1bHQpLCBlZGdlLCBT
cGVjTWFjaGluZUludCwgaXNOb3RJbnQzMihib3hlZFJlc3VsdCkpOwotICAgICAgICAgICAgcmV0
dXJuIHNldEludDUyV2l0aFN0cmljdFZhbHVlKAotICAgICAgICAgICAgICAgIGVkZ2Uubm9kZSgp
LCBtX291dC5zaWduRXh0KHVuYm94SW50MzIoYm94ZWRSZXN1bHQpLCBtX291dC5pbnQ2NCksIGtp
bmQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fc3Rh
dGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiBTcGVjTWFjaGluZUludCkpOworCisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlKTsKICAgICAgICAgdGVy
bWluYXRlKFVuY291bnRhYmxlKTsKICAgICAgICAgcmV0dXJuIG1fb3V0LmludDY0WmVybzsKICAg
ICB9CiAgICAgCi0gICAgTFZhbHVlIGxvd0ludDUyKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0
aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIExWYWx1ZSBs
b3dJbnQ1MihFZGdlIGVkZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gbG93SW50NTIoZWRnZSwg
SW50NTIsIG1vZGUpOworICAgICAgICByZXR1cm4gbG93SW50NTIoZWRnZSwgSW50NTIpOwogICAg
IH0KICAgICAKLSAgICBMVmFsdWUgbG93U3RyaWN0SW50NTIoRWRnZSBlZGdlLCBPcGVyYW5kU3Bl
Y3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgTFZh
bHVlIGxvd1N0cmljdEludDUyKEVkZ2UgZWRnZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBsb3dJ
bnQ1MihlZGdlLCBTdHJpY3RJbnQ1MiwgbW9kZSk7CisgICAgICAgIHJldHVybiBsb3dJbnQ1Mihl
ZGdlLCBTdHJpY3RJbnQ1Mik7CiAgICAgfQogICAgIAogICAgIGJvb2wgYmV0dGVyVXNlU3RyaWN0
SW50NTIoTm9kZSogbm9kZSkKQEAgLTQ4MzAsMTAgKzQ4NTMsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVl
IGxvd1doaWNoZXZlckludDUyKEVkZ2UgZWRnZSwgSW50NTJLaW5kJiBraW5kLCBPcGVyYW5kU3Bl
Y3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgTFZh
bHVlIGxvd1doaWNoZXZlckludDUyKEVkZ2UgZWRnZSwgSW50NTJLaW5kJiBraW5kKQogICAgIHsK
ICAgICAgICAga2luZCA9IGJlc3RJbnQ1MktpbmQoZWRnZSk7Ci0gICAgICAgIHJldHVybiBsb3dJ
bnQ1MihlZGdlLCBraW5kLCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIGxvd0ludDUyKGVkZ2UsIGtp
bmQpOwogICAgIH0KICAgICAKICAgICBMVmFsdWUgbG93Q2VsbChFZGdlIGVkZ2UsIE9wZXJhbmRT
cGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKQEAgLTQ5
MzEsNzEgKzQ5NTQsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fb3V0LmJvb2xlYW5G
YWxzZTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIGxvd0RvdWJsZShFZGdlIGVkZ2UsIE9wZXJh
bmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAg
ICBMVmFsdWUgbG93RG91YmxlKEVkZ2UgZWRnZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVT
RUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgaXNEb3VibGUoZWRn
ZS51c2VLaW5kKCkpKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgp
KSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFu
dChlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpIHsKLSAg
ICAgICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwotICAgICAgICAgICAgICAgIHJl
dHVybiBtX291dC5kb3VibGVaZXJvOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
IG1fb3V0LmNvbnN0RG91YmxlKHZhbHVlLmFzTnVtYmVyKCkpOwotICAgICAgICB9CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGlzRG91YmxlKGVkZ2UudXNlS2luZCgpKSk7CiAgICAgICAgIAogICAg
ICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlID0gbV9kb3VibGVWYWx1ZXMuZ2V0KGVkZ2Uubm9k
ZSgpKTsKICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHZh
bHVlLnZhbHVlKCk7CiAgICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1faW50MzJWYWx1ZXMuZ2V0
KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuaW50VG9Eb3VibGUodmFsdWUudmFsdWUoKSk7Ci0gICAg
ICAgICAgICBzZXREb3VibGUoZWRnZS5ub2RlKCksIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0
SW50NTJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUp
KQotICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDUyVG9Eb3VibGUoZWRnZSwgdmFsdWUudmFs
dWUoKSk7Ci0gICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1faW50NTJWYWx1ZXMuZ2V0KGVkZ2Uu
bm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJu
IHN0cmljdEludDUyVG9Eb3VibGUoZWRnZSwgaW50NTJUb1N0cmljdEludDUyKHZhbHVlLnZhbHVl
KCkpKTsKLSAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdl
Lm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgTFZh
bHVlIGJveGVkUmVzdWx0ID0gdmFsdWUudmFsdWUoKTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgaW50Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRG91YmxlIHVu
Ym94aW5nIGludCBjYXNlIikpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgZG91YmxlQ2FzZSA9
IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRG91YmxlIHVuYm94aW5nIGRvdWJsZSBjYXNlIikpOwot
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291
dCwgKCJEb3VibGUgdW5ib3hpbmcgY29udGludWF0aW9uIikpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBtX291dC5icmFuY2goaXNOb3RJbnQzMihib3hlZFJlc3VsdCksIHVuc3VyZShkb3Vi
bGVDYXNlKSwgdW5zdXJlKGludENhc2UpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpbnRDYXNlLCBkb3VibGVDYXNlKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaW50VG9Eb3VibGUgPSBt
X291dC5hbmNob3IoCi0gICAgICAgICAgICAgICAgbV9vdXQuaW50VG9Eb3VibGUodW5ib3hJbnQz
Mihib3hlZFJlc3VsdCkpKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgY29u
dGludWF0aW9uKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0g
ICAgICAgICAgICAgICAganNWYWx1ZVZhbHVlKGJveGVkUmVzdWx0KSwgZWRnZSwgU3BlY0Z1bGxO
dW1iZXIsIGlzQ2VsbE9yTWlzYyhib3hlZFJlc3VsdCkpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBWYWx1ZUZyb21CbG9jayB1bmJveGVkRG91YmxlID0gbV9vdXQuYW5jaG9yKHVuYm94RG91
YmxlKGJveGVkUmVzdWx0KSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9v
dXQucGhpKG1fb3V0LmRvdWJsZVR5cGUsIGludFRvRG91YmxlLCB1bmJveGVkRG91YmxlKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgc2V0RG91YmxlKGVkZ2Uubm9kZSgpLCByZXN1bHQpOwot
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIShtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgU3BlY0Z1bGxO
dW1iZXIpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5t
X3R5cGUpOwogICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwogICAgICAgICByZXR1cm4g
bV9vdXQuZG91YmxlWmVybzsKICAgICB9CkBAIC01MDAzLDYgKzQ5NzAsOCBAQCBwcml2YXRlOgog
ICAgIExWYWx1ZSBsb3dKU1ZhbHVlKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBt
b2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVz
ZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzRG91Ymxl
KGVkZ2UudXNlS2luZCgpKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgp
ICE9IEludDUyUmVwVXNlKTsKICAgICAgICAgCiAgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFu
dCgpKQogICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2Rl
KG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpKSk7CkBAIC01MDE4LDE0ICs0
OTg3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9zdHJpY3RJbnQ1MlZhbHVlcy5nZXQoZWRnZS5u
b2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4g
c3RyaWN0SW50NTJUb0pTVmFsdWUodmFsdWUudmFsdWUoKSk7Ci0gICAgICAgIAotICAgICAgICB2
YWx1ZSA9IG1faW50NTJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFs
aWQodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDUyVG9KU1ZhbHVlKGludDUy
VG9TdHJpY3RJbnQ1Mih2YWx1ZS52YWx1ZSgpKSk7Ci0gICAgICAgIAogICAgICAgICB2YWx1ZSA9
IG1fYm9vbGVhblZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2
YWx1ZSkpIHsKICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBib3hCb29sZWFuKHZhbHVlLnZh
bHVlKCkpOwpAQCAtNTAzMywxMyArNDk5NCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1fZG91Ymxl
VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewot
ICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGJveERvdWJsZSh2YWx1ZS52YWx1ZSgpKTsKLSAg
ICAgICAgICAgIHNldEpTVmFsdWUoZWRnZS5ub2RlKCksIHJlc3VsdCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC01MDY1LDExICs1
MDE5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0g
ICAgTFZhbHVlIHN0cmljdEludDUyVG9Eb3VibGUoRWRnZSBlZGdlLCBMVmFsdWUgdmFsdWUpCisg
ICAgTFZhbHVlIHN0cmljdEludDUyVG9Eb3VibGUoTFZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmludFRvRG91YmxlKHZhbHVlKTsKLSAgICAgICAgc2V0
RG91YmxlKGVkZ2Uubm9kZSgpLCByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICByZXR1cm4gbV9vdXQuaW50VG9Eb3VibGUodmFsdWUpOwogICAgIH0KICAgICAKICAgICBM
VmFsdWUgc3RyaWN0SW50NTJUb0pTVmFsdWUoTFZhbHVlIHZhbHVlKQpAQCAtNTA5OSwyMyArNTA1
MSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX291dC5waGkobV9vdXQuaW50NjQsIHJl
c3VsdHMpOwogICAgIH0KICAgICAKLSAgICBMVmFsdWUgc2V0SW50NTJXaXRoU3RyaWN0VmFsdWUo
Tm9kZSogbm9kZSwgTFZhbHVlIHZhbHVlLCBJbnQ1MktpbmQga2luZCkKLSAgICB7Ci0gICAgICAg
IHN3aXRjaCAoa2luZCkgewotICAgICAgICBjYXNlIFN0cmljdEludDUyOgotICAgICAgICAgICAg
c2V0U3RyaWN0SW50NTIobm9kZSwgdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwot
ICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgSW50NTI6Ci0gICAgICAgICAgICB2YWx1ZSA9IHN0
cmljdEludDUyVG9JbnQ1Mih2YWx1ZSk7Ci0gICAgICAgICAgICBzZXRJbnQ1Mihub2RlLCB2YWx1
ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLQogICAgIExWYWx1ZSBzdHJpY3RJbnQ1MlRvSW50NTIoTFZhbHVlIHZhbHVlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fb3V0LnNobCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVl
OjppbnQ1MlNoaWZ0QW1vdW50KSk7CkBAIC01MTQ3LDYgKzUwODIsNyBAQCBwcml2YXRlOgogICAg
IHsKICAgICAgICAgcmV0dXJuIG1fb3V0LnRlc3ROb25aZXJvNjQoanNWYWx1ZSwgbV90YWdUeXBl
TnVtYmVyKTsKICAgICB9CisgICAgCiAgICAgTFZhbHVlIHVuYm94RG91YmxlKExWYWx1ZSBqc1Zh
bHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmJpdENhc3QobV9vdXQuYWRkKGpzVmFs
dWUsIG1fdGFnVHlwZU51bWJlciksIG1fb3V0LmRvdWJsZVR5cGUpOwpAQCAtNTE1NSw2ICs1MDkx
LDM5IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuc3ViKG1fb3V0LmJp
dENhc3QoZG91YmxlVmFsdWUsIG1fb3V0LmludDY0KSwgbV90YWdUeXBlTnVtYmVyKTsKICAgICB9
CisgICAgTFZhbHVlIGpzVmFsdWVUb0RvdWJsZShFZGdlIGVkZ2UsIExWYWx1ZSBib3hlZFZhbHVl
KQorICAgIHsKKyAgICAgICAgTEJhc2ljQmxvY2sgaW50Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9v
dXQsICgiRG91YmxlUmVwIHVuYm94aW5nIGludCBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9j
ayBkb3VibGVDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGVSZXAgdW5ib3hpbmcg
ZG91YmxlIGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9O
RVdfQkxPQ0sobV9vdXQsICgiRG91YmxlUmVwIHVuYm94aW5nIGNvbnRpbnVhdGlvbiIpKTsKKyAg
ICAgICAgICAgIAorICAgICAgICBMVmFsdWUgaXNOb3RJbnQzMjsKKyAgICAgICAgaWYgKCFtX2lu
dGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNJbnQzMikpCisgICAgICAgICAgICBp
c05vdEludDMyID0gbV9vdXQuYm9vbGVhbkZhbHNlOworICAgICAgICBlbHNlIGlmICghbV9pbnRl
cnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlLCB+U3BlY0ludDMyKSkKKyAgICAgICAgICAgIGlz
Tm90SW50MzIgPSBtX291dC5ib29sZWFuVHJ1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
aXNOb3RJbnQzMiA9IHRoaXMtPmlzTm90SW50MzIoYm94ZWRWYWx1ZSk7CisgICAgICAgIG1fb3V0
LmJyYW5jaChpc05vdEludDMyLCB1bnN1cmUoZG91YmxlQ2FzZSksIHVuc3VyZShpbnRDYXNlKSk7
CisgICAgICAgICAgICAKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBl
bmRUbyhpbnRDYXNlLCBkb3VibGVDYXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICBWYWx1ZUZy
b21CbG9jayBpbnRUb0RvdWJsZSA9IG1fb3V0LmFuY2hvcigKKyAgICAgICAgICAgIG1fb3V0Lmlu
dFRvRG91YmxlKHVuYm94SW50MzIoYm94ZWRWYWx1ZSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworICAgICAgICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGRvdWJs
ZUNhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAKKyAgICAgICAgRlRMX1RZUEVfQ0hF
Q0soCisgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoYm94ZWRWYWx1ZSksIGVkZ2UsIFNwZWNCeXRl
Y29kZU51bWJlciwgaXNDZWxsT3JNaXNjKGJveGVkVmFsdWUpKTsKKyAgICAgICAgICAgIAorICAg
ICAgICBWYWx1ZUZyb21CbG9jayB1bmJveGVkRG91YmxlID0gbV9vdXQuYW5jaG9yKHVuYm94RG91
YmxlKGJveGVkVmFsdWUpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAg
ICAgICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OworICAgICAgICAgICAgCisgICAgICAgIHJldHVybiBtX291dC5waGkobV9vdXQuZG91YmxlVHlw
ZSwgaW50VG9Eb3VibGUsIHVuYm94ZWREb3VibGUpOworICAgIH0KICAgICAKICAgICBMVmFsdWUg
aXNOdW1iZXIoTFZhbHVlIGpzVmFsdWUpCiAgICAgewpAQCAtNTIyNiw4ICs1MTk1LDkgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgS25vd25JbnQzMlVzZToKLSAgICAgICAgY2FzZSBLbm93bk51bWJlclVzZToKICAg
ICAgICAgY2FzZSBLbm93blN0cmluZ1VzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6Cisg
ICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICBBU1NFUlQoIW1faW50ZXJwcmV0
ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgSW50MzJVc2U6CkBAIC01MjYwLDE0ICs1MjMwLDExIEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmdP
clN0cmluZ09iamVjdChlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJl
YWxOdW1iZXJVc2U6Ci0gICAgICAgICAgICBzcGVjdWxhdGVSZWFsTnVtYmVyKGVkZ2UpOwotICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAgc3Bl
Y3VsYXRlTnVtYmVyKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWFj
aGluZUludFVzZToKLSAgICAgICAgICAgIHNwZWN1bGF0ZU1hY2hpbmVJbnQoZWRnZSk7CisgICAg
ICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZURvdWJsZVJl
YWwoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgog
ICAgICAgICAgICAgc3BlY3VsYXRlQm9vbGVhbihlZGdlKTsKQEAgLTU1MjksMTQgKzU0OTYsMTEg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIHNwZWN1bGF0ZU51bWJlcihFZGdlIGVkZ2UpCiAg
ICAgewotICAgICAgICAvLyBEbyBhbiBlYXJseSByZXR1cm4gaGVyZSBiZWNhdXNlIGxvd0RvdWJs
ZSgpIGNhbiBjcmVhdGUgYSBsb3Qgb2YgY29udHJvbCBmbG93LgotICAgICAgICBpZiAoIW1faW50
ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIAotICAgICAgICBsb3dEb3VibGUoZWRnZSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxv
d0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgRlRMX1RZ
UEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0J5dGVjb2RlTnVtYmVyLCBp
c05vdE51bWJlcih2YWx1ZSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNwZWN1bGF0ZVJlYWxO
dW1iZXIoRWRnZSBlZGdlKQorICAgIHZvaWQgc3BlY3VsYXRlRG91YmxlUmVhbChFZGdlIGVkZ2Up
CiAgICAgewogICAgICAgICAvLyBEbyBhbiBlYXJseSByZXR1cm4gaGVyZSBiZWNhdXNlIGxvd0Rv
dWJsZSgpIGNhbiBjcmVhdGUgYSBsb3Qgb2YgY29udHJvbCBmbG93LgogICAgICAgICBpZiAoIW1f
aW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSkpCkBAIC01NTQ0LDE5ICs1NTA4LDEwIEBA
IHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dEb3VibGUoZWRn
ZSk7CiAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAotICAgICAgICAgICAgZG91YmxlVmFsdWUodmFs
dWUpLCBlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCisgICAgICAgICAgICBkb3VibGVWYWx1ZSh2
YWx1ZSksIGVkZ2UsIFNwZWNEb3VibGVSZWFsLAogICAgICAgICAgICAgbV9vdXQuZG91YmxlTm90
RXF1YWxPclVub3JkZXJlZCh2YWx1ZSwgdmFsdWUpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBz
cGVjdWxhdGVNYWNoaW5lSW50KEVkZ2UgZWRnZSkKLSAgICB7Ci0gICAgICAgIGlmICghbV9pbnRl
cnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgCi0gICAgICAgIEludDUyS2luZCBraW5kOwotICAgICAgICBsb3dXaGljaGV2ZXJJbnQ1Mihl
ZGdlLCBraW5kKTsKLSAgICB9Ci0gICAgCiAgICAgdm9pZCBzcGVjdWxhdGVCb29sZWFuKEVkZ2Ug
ZWRnZSkKICAgICB7CiAgICAgICAgIGxvd0Jvb2xlYW4oZWRnZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmNwcAkocmV2aXNpb24gMTY3MjA0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTcxLDYgKzcxLDcgQEAgdm9pZCByZWJveEFjY29yZGluZ1RvRm9ybWF0KAogICAgIGNh
c2UgVmFsdWVGb3JtYXREb3VibGU6IHsKICAgICAgICAgaml0Lm1vdmVEb3VibGVUbzY0KEZQUklu
Zm86OmZwUmVnVDAsIHNjcmF0Y2gxKTsKICAgICAgICAgaml0Lm1vdmU2NFRvRG91YmxlKHZhbHVl
LCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgaml0LnNhbml0aXplRG91YmxlKEZQUkluZm86
OmZwUmVnVDApOwogICAgICAgICBqaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIHZhbHVl
KTsKICAgICAgICAgaml0Lm1vdmU2NFRvRG91YmxlKHNjcmF0Y2gxLCBGUFJJbmZvOjpmcFJlZ1Qw
KTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMywgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTU0LDYgKzU0LDE0IEBAIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+JiBBc3NlbWIK
ICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAordm9pZCBBc3NlbWJseUhl
bHBlcnM6OnNhbml0aXplRG91YmxlKEZQUlJlZyBmcHIpCit7CisgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgbm90TmFOID0gYnJhbmNoRG91YmxlKERvdWJsZUVxdWFsLCBmcHIsIGZwcik7CisgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSBOYU4gPSBRTmFOOworICAgIGxvYWREb3VibGUoJk5hTiwgZnBy
KTsKKyAgICBub3ROYU4ubGluayh0aGlzKTsKK30KKwogI2lmIEVOQUJMRShTQU1QTElOR19GTEFH
UykKIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpzZXRTYW1wbGluZ0ZsYWcoaW50MzJfdCBmbGFnKQog
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShy
ZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MTcsNiArNDE3LDggQEAgcHVibGlj
OgogICAgIHZvaWQgaml0QXNzZXJ0VGFnc0luUGxhY2UoKSB7IH0KICAgICB2b2lkIGppdEFzc2Vy
dEFyZ3VtZW50Q291bnRTYW5lKCkgeyB9CiAjZW5kaWYKKyAgICAKKyAgICB2b2lkIHNhbml0aXpl
RG91YmxlKEZQUlJlZyBmcHIpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBjb252ZXJ0IGJldHdl
ZW4gZG91YmxlcywgYW5kIGRvdWJsZXMgYm94ZWQgYW5kIEpTVmFsdWVzLgogI2lmIFVTRShKU1ZB
TFVFNjQpCkBAIC00MzUsNiArNDM3LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZwcjsK
ICAgICB9CiAgICAgCisgICAgdm9pZCBib3hEb3VibGUoRlBSUmVnIGZwciwgSlNWYWx1ZVJlZ3Mg
cmVncykKKyAgICB7CisgICAgICAgIGJveERvdWJsZShmcHIsIHJlZ3MuZ3ByKCkpOworICAgIH0K
KyAgICAKICAgICAvLyBIZXJlIGFyZSBwb3NzaWJsZSBhcnJhbmdlbWVudHMgb2Ygc291cmNlLCB0
YXJnZXQsIHNjcmF0Y2g6CiAgICAgLy8gLSBzb3VyY2UsIHRhcmdldCwgc2NyYXRjaCBjYW4gYWxs
IGJlIHNlcGFyYXRlIHJlZ2lzdGVycy4KICAgICAvLyAtIHNvdXJjZSBhbmQgdGFyZ2V0IGNhbiBi
ZSB0aGUgc2FtZSBidXQgc2NyYXRjaCBpcyBzZXBhcmF0ZS4KQEAgLTQ2Nyw2ICs0NzQsMTEgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgbW92ZUludHNUb0RvdWJsZShwYXlsb2FkR1BSLCB0YWdH
UFIsIGZwciwgc2NyYXRjaEZQUik7CiAgICAgfQorICAgIAorICAgIHZvaWQgYm94RG91YmxlKEZQ
UlJlZyBmcHIsIEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgeworICAgICAgICBib3hEb3VibGUoZnBy
LCByZWdzLnRhZ0dQUigpLCByZWdzLnBheWxvYWRHUFIoKSk7CisgICAgfQogI2VuZGlmCiAgICAg
CiAgICAgZW51bSBFeGNlcHRpb25DaGVja0tpbmQgeyBOb3JtYWxFeGNlcHRpb25DaGVjaywgSW52
ZXJ0ZWRFeGNlcHRpb25DaGVjayB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229267</attachid>
            <date>2014-04-13 23:59:42 -0700</date>
            <delta_ts>2014-04-14 13:36:41 -0700</delta_ts>
            <desc>it ran something</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>158047</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3MjA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MSBA
QAorMjAxNC0wNC0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBJUiBzaG91bGQga2VlcCB0aGUgZGF0YSBmbG93IG9mIGRvdWJsZXMgYW5kIGludDUyJ3Mg
c2VwYXJhdGUgZnJvbSB0aGUgZGF0YSBmbG93IG9mIEpTVmFsdWUncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBXb3JrIGluIHByb2dyZXNz
LgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OnNldENvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0VmFsdWUuaDoKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkNTRVBoYXNlOjpjb25zdGFudENTRSk6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhh
c2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6aW50MzJU
b0RvdWJsZUNTRSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJl
cml6ZSk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6Zml4dXBTZXRMb2NhbHNJbkJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpvYnNlcnZlVXNlS2luZE9uTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
Zml4SW50RWRnZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRvTWFr
ZUludGVnZXJBZGQpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmluamVjdFR5cGVD
b252ZXJzaW9uc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnRyeVRv
UmVsYXhSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6aW5q
ZWN0VHlwZUNvbnZlcnNpb25zRm9yRWRnZSk6CisgICAgICAgICogZGZnL0RGR0ZsdXNoRm9ybWF0
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6cmVzdWx0Rm9yKToKKyAgICAgICAgKEpTQzo6REZHOjp1
c2VLaW5kRm9yKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OnNldFJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ29uc3RhbnQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb0NvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpoYXNJbnQ1MlJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6aGFzRG91YmxlUmVzdWx0KToKKyAgICAgICAgKiBkZmcvREZHTm9kZUZsYWdzLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpkdW1wTm9kZUZsYWdzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZUZs
YWdzLmg6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGls
ZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAg
ICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTYWZlVG9FeGVj
dXRlRWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50U2F2ZVBsYW5Gb3JHUFIpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpzaWxlbnRTYXZlUGxhbkZvckZQUik6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwpOgorICAgICAgICAoSlNDOjpERkc6OkpT
VmFsdWVSZWdzVGVtcG9yYXJ5OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeSk6CisgICAgICAgIChKU0M6
OkRGRzo6SlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6On5KU1ZhbHVlUmVnc1RlbXBvcmFyeSk6CisgICAg
ICAgIChKU0M6OkRGRzo6SlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6OnJlZ3MpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2gpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXApOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVSZXApOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBl
ZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsT25GbG9hdFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQWRkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUFyaXRoU3ViKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFy
aXRoTmVnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFy
aXRoTXVsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRo
RGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9k
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcik6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZURvdWJsZVJlYWwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW50MzJUb0RvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU1hY2hpbmVJbnQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVSZWFsTnVtYmVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Ym94RG91YmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6anNWYWx1ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRlSW50NTJPcGVyYW5kOjpTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZDo6U3BlY3VsYXRlU3RyaWN0SW50NTJPcGVy
YW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQ6
OlNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRlRG91YmxlT3BlcmFuZDo6U3BlY3VsYXRlRG91YmxlT3BlcmFuZCk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpmaWxsSlNWYWx1ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29udmVydFRvRG91YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5jcHA6
CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdVc2VLaW5k
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6CisgICAgICAgIChKU0M6OkRG
Rzo6c2hvdWxkTm90SGF2ZVR5cGVDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6aXNOdW1lcmlj
YWwpOgorICAgICAgICAoSlNDOjpERkc6OmlzRG91YmxlKToKKyAgICAgICAgKiBkZmcvREZHVmFs
aWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6CisgICAg
ICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29t
cGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y3JlYXRlUGhpVmFyaWFibGVzKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6
Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVXBzaWxvbik6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVQaGkpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlRG91YmxlQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlSW50NTJDb25zdGFudCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVXZWFrSlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVEb3VibGVSZXApOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjpjb21waWxlVmFsdWVSZXApOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlSW50NTJSZXApOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlVmFsdWVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZUFyaXRoQWRkT3JTdWIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlQXJpdGhNdWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlQXJpdGhEaXYpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlQXJpdGhNb2QpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlQXJpdGhNaW5Pck1heCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OmNvbXBpbGVBcml0aEFicyk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNv
bXBpbGVBcml0aE5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNv
bXBpbGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVDb21wYXJlRXEpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
Q29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGFyZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmJvb2xpZnkpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dJbnQ1Mik6CisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd1N0cmljdEludDUyKToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6bG93V2hpY2hldmVySW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6
Okxvd2VyREZHVG9MTFZNOjpsb3dEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpsb3dKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
c3RyaWN0SW50NTJUb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OmpzVmFsdWVUb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNw
ZWN1bGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZU51
bWJlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZURvdWJs
ZVJlYWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlSW50NTJU
b1ZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZUludDMyVG9Eb3VibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpzZXRJbnQ1MldpdGhTdHJpY3RWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZVJlYWxOdW1iZXIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVNYWNoaW5lSW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBmdGwvRlRMVmFsdWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OnJlYm94QWNjb3JkaW5nVG9Gb3JtYXQpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnNhbml0aXplRG91YmxlKToK
KyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5
SGVscGVyczo6Ym94RG91YmxlKToKKwogMjAxNC0wNC0wOCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFJld3JpdGUgRnVuY3Rpb24uYmluZCBhcyBhIGJ1aWx0aW4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkRGR0Nv
bW1vbi5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIK
LSNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRl
ICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNjcyMDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDEwICs0NSw2IEBACiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZH
Q29tbW9uRGF0YS5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCi0jaW5jbHVkZSAiREZH
TWluaWZpZWRHcmFwaC5oIgotI2luY2x1ZGUgIkRGR09TUkVudHJ5LmgiCi0jaW5jbHVkZSAiREZH
T1NSRXhpdC5oIgotI2luY2x1ZGUgIkRGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaCIKICNpbmNsdWRl
ICJEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJFdmFsQ29kZUNhY2hl
LmgiCiAjaW5jbHVkZSAiRXhlY3V0aW9uQ291bnRlci5oIgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDE2
NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xNTksNyArMTU5LDkgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIHNldENvbnN0YW50KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCB2YWx1ZSk7CisgICAgICAgIEFic3RyYWN0VmFs
dWUmIGFic3RyYWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUpOworICAgICAgICBhYnN0cmFjdFZhbHVl
LnNldChtX2dyYXBoLCB2YWx1ZSk7CisgICAgICAgIGFic3RyYWN0VmFsdWUuZml4VHlwZUZvclJl
cHJlc2VudGF0aW9uKG5vZGUpOwogICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRy
dWUpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE2NzIw
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw4IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkp
IHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBj
YXNlIEludDUyQ29uc3RhbnQ6CiAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAgICBjYXNlIFBo
YW50b21Bcmd1bWVudHM6IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9n
cmFwaC52YWx1ZU9mSlNDb25zdGFudChub2RlKSk7CkBAIC0zMDcsMzkgKzMwOSwzOSBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICAgICAgCi0gICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7CisgICAgY2FzZSBEb3VibGVS
ZXA6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZh
bHVlKCk7CiAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7Ci0gICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCBj
aGlsZC5hc051bWJlcigpKSk7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJs
ZU51bWJlcihjaGlsZC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fdHlwZSkpCi0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZVJl
YWwpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3Bl
Y0RvdWJsZSk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShmb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKS5tX3R5cGUpOworICAgICAgICBmb3JOb2RlKG5vZGUpLmZpeFR5cGVGb3JSZXByZXNl
bnRhdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNl
IEludDUyVG9Eb3VibGU6IHsKKyAgICBjYXNlIEludDUyUmVwOiB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSk7CisgICAgICAgIAog
ICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsK
LSAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgaWYgKGNo
aWxkICYmIGNoaWxkLmlzSW50MzIoKSkgewogICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwg
Y2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAgICAKKyAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0g
ICAgY2FzZSBJbnQ1MlRvVmFsdWU6IHsKLSAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051
bWJlcigpKSB7Ci0gICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBjaGlsZCk7CisgICAgY2Fz
ZSBWYWx1ZVJlcDogeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICBzZXRDb25z
dGFudChub2RlLCB2YWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlOwot
ICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ1MikKLSAgICAgICAgICAgIHR5cGUgPSAodHlwZSB8
IFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91YmxlKSAmIH5TcGVjSW50NTI7Ci0gICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0VHlwZSh0eXBlKTsKKyAgICAgICAgCisgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpOworICAgICAgICBmb3JO
b2RlKG5vZGUpLmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKQEAgLTM3MCw3ICszNzIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2hlY2tPdmVyZmxv
dyhub2RlLT5hcml0aE1vZGUoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0
cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Cisg
ICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAm
JiBsZWZ0LmlzTWFjaGluZUludCgpICYmIHJpZ2h0LmlzTWFjaGluZUludCgpKSB7CiAgICAgICAg
ICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihsZWZ0LmFzTWFjaGluZUludCgpICsg
cmlnaHQuYXNNYWNoaW5lSW50KCkpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNNYWNo
aW5lSW50KCkpIHsKQEAgLTM4Myw3ICszODUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hpbGQy
KCkpLmlzVHlwZShTcGVjSW50MzIpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQo
dHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAg
ICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYg
bGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgICAgICBz
ZXRDb25zdGFudChub2RlLCBqc051bWJlcihsZWZ0LmFzTnVtYmVyKCkgKyByaWdodC5hc051bWJl
cigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00MjYsNyArNDI4LDcgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNob3Vs
ZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKQogICAgICAgICAgICAgICAgIG5vZGUt
PnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNo
aW5lSW50VXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxl
ZnQgJiYgcmlnaHQgJiYgbGVmdC5pc01hY2hpbmVJbnQoKSAmJiByaWdodC5pc01hY2hpbmVJbnQo
KSkgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIobGVmdC5hc01h
Y2hpbmVJbnQoKSAtIHJpZ2h0LmFzTWFjaGluZUludCgpKTsKICAgICAgICAgICAgICAgICBpZiAo
cmVzdWx0LmlzTWFjaGluZUludCgpIHx8ICFzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRo
TW9kZSgpKSkgewpAQCAtNDM5LDcgKzQ0MSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICB8fCAhZm9yTm9kZShub2RlLT5jaGlsZDIo
KSkuaXNUeXBlKFNwZWNJbnQzMikpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0
cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAg
ICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBs
ZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgICAgIHNl
dENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGxlZnQuYXNOdW1iZXIoKSAtIHJpZ2h0LmFzTnVtYmVy
KCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQ3Nyw3ICs0NzksNyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoc2hvdWxk
Q2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+
c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hY2hp
bmVJbnRVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICBpZiAoY2hp
bGQgJiYgY2hpbGQuaXNNYWNoaW5lSW50KCkpIHsKICAgICAgICAgICAgICAgICBkb3VibGUgZG91
YmxlUmVzdWx0OwogICAgICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja05lZ2F0aXZlWmVybyhu
b2RlLT5hcml0aE1vZGUoKSkpCkBAIC00OTYsNyArNDk4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrTmVnYXRp
dmVaZXJvKG5vZGUtPmFyaXRoTW9kZSgpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5F
eGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgor
ICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGls
ZC5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1i
ZXIoLWNoaWxkLmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTUzMyw3
ICs1MzUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgICAgICBpZiAoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpCiAgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAg
ICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTWFjaGluZUludCgpICYmIHJp
Z2h0LmlzTWFjaGluZUludCgpKSB7CiAgICAgICAgICAgICAgICAgZG91YmxlIGRvdWJsZVJlc3Vs
dCA9IGxlZnQuYXNOdW1iZXIoKSAqIHJpZ2h0LmFzTnVtYmVyKCk7CiAgICAgICAgICAgICAgICAg
aWYgKCFzaG91bGRDaGVja05lZ2F0aXZlWmVybyhub2RlLT5hcml0aE1vZGUoKSkpCkBAIC01NDcs
NyArNTQ5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ1Mik7CiAgICAgICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
TnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChs
ZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CiAg
ICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIobGVmdC5hc051bWJlcigp
ICogcmlnaHQuYXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDcg
KzU4Nyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICAgICAgbm9k
ZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51
bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVm
dCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgewogICAg
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGxlZnQuYXNOdW1iZXIoKSAv
IHJpZ2h0LmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTYxOSw3ICs2
MjEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIG5vZGUt
PnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1i
ZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQg
JiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKICAgICAg
ICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihmbW9kKGxlZnQuYXNOdW1iZXIo
KSwgcmlnaHQuYXNOdW1iZXIoKSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTY0NSw3
ICs2NDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIG5v
ZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBO
dW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxl
ZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKICAg
ICAgICAgICAgICAgICBkb3VibGUgYSA9IGxlZnQuYXNOdW1iZXIoKTsKICAgICAgICAgICAgICAg
ICBkb3VibGUgYiA9IHJpZ2h0LmFzTnVtYmVyKCk7CkBAIC02NzMsNyArNjc1LDcgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRy
dWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAg
ICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxl
ZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgZG91
YmxlIGEgPSBsZWZ0LmFzTnVtYmVyKCk7CiAgICAgICAgICAgICAgICAgZG91YmxlIGIgPSByaWdo
dC5hc051bWJlcigpOwpAQCAtNzAzLDcgKzcwNSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVj
SW50MzIpOwogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBV
c2U6CiAgICAgICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewogICAgICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGNoaWxkLmFzTnVtYmVyKCkpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTc2OSw3ICs3NzEsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAg
ICAgICAgY2FzZSBJbnQzMlVzZToKLSAgICAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAg
ICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAg
ICAgICAgICAgICBjYXNlIFN0cmluZ1VzZToKICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkocmV2
aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjcsOCArNjcsNiBAQCB2b2lkIEFic3RyYWN0VmFsdWU6
OnNldChHcmFwaCYgZ3JhcGgsIEpTCiAgICAgfQogICAgIAogICAgIG1fdHlwZSA9IHNwZWN1bGF0
aW9uRnJvbVZhbHVlKHZhbHVlKTsKLSAgICBpZiAobV90eXBlID09IFNwZWNJbnQ1MkFzRG91Ymxl
KQotICAgICAgICBtX3R5cGUgPSBTcGVjSW50NTI7CiAgICAgbV92YWx1ZSA9IHZhbHVlOwogICAg
IAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTg1LDYgKzgzLDMzIEBAIHZvaWQgQWJzdHJh
Y3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgU3QKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiB9
CiAKK3ZvaWQgQWJzdHJhY3RWYWx1ZTo6Zml4VHlwZUZvclJlcHJlc2VudGF0aW9uKE5vZGUqIG5v
ZGUpCit7CisgICAgaWYgKG5vZGUtPmhhc0RvdWJsZVJlc3VsdCgpKSB7CisgICAgICAgIGlmICht
X3R5cGUgJiBTcGVjTWFjaGluZUludCkgeworICAgICAgICAgICAgbV90eXBlICY9IH5TcGVjTWFj
aGluZUludDsKKyAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTJBc0RvdWJsZTsKKyAgICAg
ICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fdHlwZSAmIH5TcGVjRG91YmxlKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKG5vZGUtPmhhc0ludDUyUmVzdWx0
KCkpIHsKKyAgICAgICAgaWYgKG1fdHlwZSAmIFNwZWNJbnQ1MkFzRG91YmxlKSB7CisgICAgICAg
ICAgICBtX3R5cGUgJj0gflNwZWNJbnQ1MkFzRG91YmxlOworICAgICAgICAgICAgbV90eXBlIHw9
IFNwZWNJbnQ1MjsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fdHlwZSAm
IH5TcGVjTWFjaGluZUludCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlm
IChtX3R5cGUgJiBTcGVjSW50NTIpIHsKKyAgICAgICAgbV90eXBlICY9IH5TcGVjSW50NTI7Cisg
ICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTJBc0RvdWJsZTsKKyAgICB9CisgICAgUkVMRUFTRV9B
U1NFUlQoIShtX3R5cGUgJiB+U3BlY0hlYXBUb3ApKTsKK30KKwogRmlsdHJhdGlvblJlc3VsdCBB
YnN0cmFjdFZhbHVlOjpmaWx0ZXIoR3JhcGgmIGdyYXBoLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIG90
aGVyKQogewogICAgIGlmIChpc0NsZWFyKCkpCkBAIC0yNDQsNiArMjY5LDggQEAgdm9pZCBBYnN0
cmFjdFZhbHVlOjpjaGVja0NvbnNpc3RlbmN5KCkgYwogICAgIAogICAgIGlmICghIW1fdmFsdWUp
IHsKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IG1fdHlwZTsKKyAgICAgICAgLy8gVGhp
cyByZWxheGVzIHRoZSBhc3NlcnRpb24gYmVsb3cgYSBiaXQsIHNpbmNlIHdlIGRvbid0IGtub3cg
dGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZQorICAgICAgICAvLyBub2RlLgogICAgICAgICBpZiAo
dHlwZSAmIFNwZWNJbnQ1MikKICAgICAgICAgICAgIHR5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7
CiAgICAgICAgIEFTU0VSVChtZXJnZVNwZWN1bGF0aW9ucyh0eXBlLCBzcGVjdWxhdGlvbkZyb21W
YWx1ZShtX3ZhbHVlKSkgPT0gdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMywg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM5LDYgKzM5LDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAogY2xhc3MgR3JhcGg7CitzdHJ1Y3QgTm9kZTsKIAogc3RydWN0IEFic3RyYWN0VmFs
dWUgewogICAgIEFic3RyYWN0VmFsdWUoKQpAQCAtMTI5LDYgKzEzMCw4IEBAIHN0cnVjdCBBYnN0
cmFjdFZhbHVlIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0KICAgICAKKyAg
ICB2b2lkIGZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihOb2RlKik7CisgICAgCiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTYxLDI5ICsxNjEsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIAotICAgIE5vZGUqIGludDMyVG9Eb3VibGVDU0UoTm9kZSogbm9kZSkK
LSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7
Ci0gICAgICAgICAgICBOb2RlKiBvdGhlck5vZGUgPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7Ci0g
ICAgICAgICAgICBpZiAob3RoZXJOb2RlID09IG5vZGUtPmNoaWxkMSgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICAgICAgc3dpdGNoIChvdGhlck5vZGUtPm9wKCkpIHsKLSAg
ICAgICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKLSAgICAgICAgICAgICAgICBpZiAob3RoZXJO
b2RlLT5jaGlsZDEoKS5zYW5pdGl6ZWQoKSA9PSBub2RlLT5jaGlsZDEoKS5zYW5pdGl6ZWQoKSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyTm9kZTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAogICAg
IE5vZGUqIGNvbnN0YW50Q1NFKE5vZGUqIG5vZGUpCiAgICAgewogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBlbmRJbmRleEZvclB1cmVDU0UoKTsgaS0tOykgewogICAgICAgICAgICAgTm9kZSog
b3RoZXJOb2RlID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwotICAgICAgICAgICAgaWYgKG90aGVy
Tm9kZS0+b3AoKSAhPSBKU0NvbnN0YW50KQorICAgICAgICAgICAgaWYgKG90aGVyTm9kZS0+b3Ao
KSAhPSBub2RlLT5vcCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5jb25zdGFudE51bWJlcigpICE9IG5vZGUtPmNv
bnN0YW50TnVtYmVyKCkpCkBAIC0xMTQ4LDggKzExMzAsOSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIENvbXBhcmVFcUNvbnN0YW50OgogICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICAg
ICAgY2FzZSBNYWtlUm9wZToKLSAgICAgICAgY2FzZSBJbnQ1MlRvRG91YmxlOgotICAgICAgICBj
YXNlIEludDUyVG9WYWx1ZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXA6CisgICAgICAgIGNhc2Ug
VmFsdWVSZXA6CisgICAgICAgIGNhc2UgSW50NTJSZXA6CiAgICAgICAgICAgICBpZiAoY3NlTW9k
ZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgc2V0UmVwbGFjZW1lbnQocHVyZUNTRShub2RlKSk7CkBAIC0xMTc3LDEyICsxMTYwLDYgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAg
ICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgotICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3Rv
cmVFbGltaW5hdGlvbikKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHNldFJl
cGxhY2VtZW50KGludDMyVG9Eb3VibGVDU0Uobm9kZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgICAgICAgICBpZiAoY3Nl
TW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI2
OCw2ICsxMjQ1LDggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgSlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICAgICAg
Y2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGlt
aW5hdGlvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIC8vIFRoaXMgaXMg
c3RyYW5nZSwgYnV0IG5lY2Vzc2FyeS4gU29tZSBwaGFzZXMgd2lsbCBjb252ZXJ0IG5vZGVzIHRv
IGNvbnN0YW50cywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuaAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29t
bW9uLmgiCi0jaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE2NzIwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04Myw2ICs4Myw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUKICAgICAKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNlIEpTQ29uc3Rh
bnQ6CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAg
ICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAgICBjYXNlIElkZW50aXR5OgogICAgIGNhc2UgUGhh
bnRvbToKQEAgLTEyMywxNSArMTI1LDE1IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUKICAgICBjYXNlIElzTnVtYmVyOgogICAgIGNhc2UgSXNTdHJpbmc6CiAgICAg
Y2FzZSBMb2dpY2FsTm90OgotICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICBjYXNlIEV4dHJh
Y3RPU1JFbnRyeUxvY2FsOgotICAgIGNhc2UgSW50NTJUb0RvdWJsZToKLSAgICBjYXNlIEludDUy
VG9WYWx1ZToKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgY2FzZSBDb25zdGFudFN0b3Jh
Z2VQb2ludGVyOgogICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAgY2FzZSBEb3VibGVBc0lu
dDMyOgogICAgIGNhc2UgQ2hlY2s6CisgICAgY2FzZSBEb3VibGVSZXA6CisgICAgY2FzZSBWYWx1
ZVJlcDoKKyAgICBjYXNlIEludDUyUmVwOgogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAg
IGNhc2UgTW92SGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjk5LDYgKzI5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBBYnN0cmFj
dFZhbHVlIG9sZFZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUpOwogICAgICAgICAgICAgQWJz
dHJhY3RWYWx1ZSBjb25zdGFudFZhbHVlOwogICAgICAgICAgICAgY29uc3RhbnRWYWx1ZS5zZXQo
bV9ncmFwaCwgdmFsdWUpOworICAgICAgICAgICAgY29uc3RhbnRWYWx1ZS5maXhUeXBlRm9yUmVw
cmVzZW50YXRpb24obm9kZSk7CiAgICAgICAgICAgICBpZiAob2xkVmFsdWUubWVyZ2UoY29uc3Rh
bnRWYWx1ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlz
aW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9uc1tpXS5tZXJnZUFyZ3VtZW50VW5ib3hpbmdB
d2FyZW5lc3MoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJs
b2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0lu
ZGV4KQotICAgICAgICAgICAgICAgIGZpeHVwU2V0TG9jYWxzSW5CbG9jayhtX2dyYXBoLmJsb2Nr
KGJsb2NrSW5kZXgpKTsKKyAgICAgICAgICAgICAgICBmaXh1cEdldEFuZFNldExvY2Fsc0luQmxv
Y2sobV9ncmFwaC5ibG9jayhibG9ja0luZGV4KSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgu
bnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkKQEAgLTEyMyw4ICsxMjMsMTAgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAg
ZWxzZSBpZiAobm9kZUNhblNwZWN1bGF0ZUludDMyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQog
ICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7
Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBu
b2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkRvT3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIG5v
ZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTEzNSwxMCArMTM3LDExIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyRXhwZWN0aW5nRGVmaW5lZChub2Rl
LT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAg
ICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUt
PnNldE9wKEFyaXRoQWRkKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCk7CisgICAgICAgICAgICAgICAgbm9kZS0+
c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0xNzcsOCArMTgwLDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBBcml0aFN1YjogewogICAgICAgICAgICAgaWYgKGF0dGVtcHRUb01ha2VJbnRl
Z2VyQWRkKG5vZGUpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZml4RWRn
ZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVy
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91Ymxl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE5NCwx
NCArMTk4LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAobV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGlmIChieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZl
WmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVy
Zmxvd0FuZE5lZ2F0aXZlWmVybyk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5v
ZGVSZXN1bHRJbnQ1Mik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5v
ZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKQEAgLTIxOCwxNiArMjI0LDE4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobV9ncmFw
aC5tdWxTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBpZiAo
Ynl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAg
ICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxv
dyk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRB
cml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3dBbmROZWdhdGl2ZVplcm8pOworICAgICAgICAg
ICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKQEAgLTI0NiwyNCArMjU0LDI2IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZs
b3dBbmROZWdhdGl2ZVplcm8pOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsK
IAogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gcmVmJ2luZyBvbiB0aGUg
Y2hpbGRyZW4gYmVjYXVzZSB3ZSdyZSBzdGVhbGluZyB0aGVtIGZyb20KICAgICAgICAgICAgICAg
ICAvLyB0aGUgb3JpZ2luYWwgZGl2aXNpb24uCiAgICAgICAgICAgICAgICAgTm9kZSogbmV3RGl2
aXNpb24gPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY0RvdWJsZSwgKm5vZGUpOworICAgICAgICAgICAgICAgIG5ld0Rp
dmlzaW9uLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0T3AoRG91YmxlQXNJbnQzMik7Ci0gICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGRyZW4uaW5pdGlhbGl6ZShFZGdlKG5ld0RpdmlzaW9uLCBLbm93bk51bWJl
clVzZSksIEVkZ2UoKSwgRWRnZSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5p
bml0aWFsaXplKEVkZ2UobmV3RGl2aXNpb24sIERvdWJsZVJlcFVzZSksIEVkZ2UoKSwgRWRnZSgp
KTsKICAgICAgICAgICAgICAgICBpZiAoYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9k
ZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRo
TW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3dBbmRO
ZWdhdGl2ZVplcm8pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
IGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdl
PERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3Vi
bGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChO
b2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKQEAgLTI3NSw4ICsyODUsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBu
b2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAgICAgCkBAIC0yODYsNyArMjk3LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91
YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTI5
NCw3ICszMDYsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEFyaXRoRlJvdW5kOgogICAgICAg
ICBjYXNlIEFyaXRoU2luOgogICAgICAgICBjYXNlIEFyaXRoQ29zOiB7Ci0gICAgICAgICAgICBm
aXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxE
b3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3Vs
dChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTMwNiw3ICszMTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZWxzZSBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgZWxzZSBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKQotICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGVsc2Ug
aWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0zMzcsMTQgKzM1MCwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKGVuYWJsZUludDUyKCkKICAgICAgICAgICAgICAgICAmJiBOb2RlOjpzaG91bGRT
cGVjdWxhdGVNYWNoaW5lSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCku
bm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZUNsb2JiZXJzV29ybGQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihub2RlLT5j
aGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNs
ZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQwMiwxMyArNDE1LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZW5hYmxlSW50NTIoKQogICAgICAg
ICAgICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hpbGQx
KCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4
RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4
RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1i
ZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAg
ICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3Bl
Y3VsYXRlU3RyaW5nSWRlbnQoKSkgewpAQCAtNTAxLDcgKzUxNCw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CisgICAgICAgICAgICBhcnJh
eU1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2Rl
LnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9u
czoKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVucHJvZmlsZWQ6CiAgICAgICAgICAgICBjYXNl
IEFycmF5OjpVbmRlY2lkZWQ6CkBAIC01MjAsNiArNTM0LDI0IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgICAg
IHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91
YmxlOgorICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQzMkFycmF5OgorICAgICAgICAgICAg
Y2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5OgorICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3Vs
dChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgorICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpCisgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3Vi
bGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtNTU5LDE0ICs1OTEs
MTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDIp
OwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMyk7CiAgICAgICAgICAg
ICAgICAgaWYgKGNoaWxkMy0+cHJlZGljdGlvbigpICYgU3BlY0ludDUyKQotICAgICAgICAgICAg
ICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KGNoaWxkMyk7CisgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDMpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxSZWFsTnVt
YmVyVXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwUmVhbFVz
ZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJy
YXk6OkludDhBcnJheToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6CkBAIC01
ODAsMTUgKzYxMiwxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChjaGlsZDMtPnNo
b3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJV
c2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQzLT5zaG91bGRTcGVj
dWxhdGVNYWNoaW5lSW50KCkpCi0gICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUlu
dFVzZT4oY2hpbGQzKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4o
Y2hpbGQzKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZpeEVk
Z2U8TnVtYmVyVXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJs
ZVJlcFVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkZsb2F0MzJBcnJheToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRB
cnJheToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4oY2hpbGQxKTsKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDIpOwotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8TnVtYmVyVXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91
YmxlUmVwVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBBcnJheTo6Q29udGlndW91czoKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkFycmF5U3Rv
cmFnZToKQEAgLTYzMCw3ICs2NjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFJl
YWxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERv
dWJsZVJlcFJlYWxVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAgICAgICBjYXNlIEFy
cmF5OjpBcnJheVN0b3JhZ2U6CkBAIC02NjMsNyArNjk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
ICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAKICAgICAg
ICAgICAgIE5vZGUqIGxvZ2ljYWxOb3QgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAg
ICAgICBpZiAobG9naWNhbE5vdC0+b3AoKSA9PSBMb2dpY2FsTm90KSB7CkBAIC03NjAsNyArNzky
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
QUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IG9wZXJhbmRJbmRleCA9IDA7IG9wZXJhbmRJbmRleCA8IG5vZGUtPm51bUNoaWxkcmVuKCk7ICsr
b3BlcmFuZEluZGV4KQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPFJlYWxOdW1iZXJVc2U+
KG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyBvcGVyYW5kSW5k
ZXhdKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBSZWFsVXNlPihtX2dy
YXBoLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgb3BlcmFuZEluZGV4XSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VT
X0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgY2FzZSBBTExfQVJSQVlfU1RPUkFHRV9JTkRF
WElOR19UWVBFUzoKQEAgLTk2MSwxNiArOTkzLDE4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
Q2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAg
ICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgotICAgICAgICBjYXNlIEludDUyVG9E
b3VibGU6Ci0gICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgICAgICBjYXNlIEludmFsaWRh
dGlvblBvaW50OgogICAgICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgIGNhc2UgQ2hlY2tJ
bkJvdW5kczoKICAgICAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgICAgICBj
YXNlIERvdWJsZUFzSW50MzI6Ci0gICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICAgICAg
Y2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgICAgIGNhc2UgSGFyZFBoYW50b206IC8vIEhhcmRQaGFu
dG9tIHdvdWxkIGJlIHRyaXZpYWwgdG8gaGFuZGxlIGJ1dCBhbnl3YXkgd2UgYXNzZXJ0IHRoYXQg
d2Ugd29uJ3Qgc2VlIGl0IGhlcmUgeWV0LgorICAgICAgICBjYXNlIERvdWJsZVJlcDoKKyAgICAg
ICAgY2FzZSBJbnQ1MlJlcDoKKyAgICAgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICAgICAgY2FzZSBE
b3VibGVDb25zdGFudDoKKyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICAgICAg
Ly8gVGhlc2UgYXJlIGp1c3Qgbm9kZXMgdGhhdCB3ZSBkb24ndCBjdXJyZW50bHkgZXhwZWN0IHRv
IHNlZSBkdXJpbmcgZml4dXAuCiAgICAgICAgICAgICAvLyBJZiB3ZSBldmVyIHdhbnRlZCB0byBp
bnNlcnQgdGhlbSBwcmlvciB0byBmaXh1cCwgdGhlbiB3ZSBqdXN0IGhhdmUgdG8gY3JlYXRlCiAg
ICAgICAgICAgICAvLyBmaXh1cCBydWxlcyBmb3IgdGhlbS4KQEAgLTEzMTIsNyArMTM0Niw3IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICB2b2lkIGZp
eHVwU2V0TG9jYWxzSW5CbG9jayhCYXNpY0Jsb2NrKiBibG9jaykKKyAgICB2b2lkIGZpeHVwR2V0
QW5kU2V0TG9jYWxzSW5CbG9jayhCYXNpY0Jsb2NrKiBibG9jaykKICAgICB7CiAgICAgICAgIGlm
ICghYmxvY2spCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzIwLDI4ICsxMzU0LDQ5IEBAIHBy
aXZhdGU6CiAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAgICAgZm9yIChtX2luZGV4SW5C
bG9jayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKyttX2luZGV4SW5CbG9j
aykgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudE5vZGUgPSBibG9jay0+YXQo
bV9pbmRleEluQmxvY2spOwotICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gU2V0TG9jYWwp
CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSAhPSBTZXRMb2NhbCAmJiBub2RlLT5vcCgpICE9
IEdldExvY2FsKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHZhcmlhYmxlLT5mbHVzaEZvcm1hdCgpKSB7
Ci0gICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgotICAgICAgICAgICAgICAgIGZpeEVk
Z2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDMyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIEZsdXNoZWRJbnQ1MjoKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJ
bnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAg
ICAgICAgIGNhc2UgR2V0TG9jYWw6CisgICAgICAgICAgICAgICAgc3dpdGNoICh2YXJpYWJsZS0+
Zmx1c2hGb3JtYXQoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgRmx1c2hlZERvdWJsZToKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQ1
MjoKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAgICAg
ICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICBjYXNlIFNldExvY2FsOgorICAgICAgICAgICAgICAgIHN3aXRjaCAo
dmFyaWFibGUtPmZsdXNoRm9ybWF0KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZsdXNoZWRK
U1ZhbHVlOgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IEZsdXNoZWREb3VibGU6CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDUyOgorICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CisgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgorICAgICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEJvb2xlYW5Vc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ2
Nyw3ICsxNTIyLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlD
aGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgICAgIGNhc2UgUmVh
bE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgIGNhc2UgRG91
YmxlUmVwUmVhbFVzZToKICAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+ZG91YmxlRm9ybWF0U3Rh
dGUoKSA9PSBVc2luZ0RvdWJsZUZvcm1hdCkKICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxp
dHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTE0NzYsNyArMTUzMiw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgfHwgaXNCb29sZWFuU3BlY3VsYXRpb24odmFyaWFibGUtPnByZWRpY3Rpb24oKSkp
CiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVy
Z2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAg
ICAgIGlmIChpc01hY2hpbmVJbnRTcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkK
ICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJn
ZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1MTks
OSArMTU3NSw5IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBVc2VLaW5kIHVzZUtpbmQ7
CiAgICAgICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpCi0gICAgICAg
ICAgICB1c2VLaW5kID0gTWFjaGluZUludFVzZTsKKyAgICAgICAgICAgIHVzZUtpbmQgPSBJbnQ1
MlJlcFVzZTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkp
Ci0gICAgICAgICAgICB1c2VLaW5kID0gTnVtYmVyVXNlOworICAgICAgICAgICAgdXNlS2luZCA9
IERvdWJsZVJlcFVzZTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlQm9v
bGVhbigpKQogICAgICAgICAgICAgdXNlS2luZCA9IEJvb2xlYW5Vc2U7CiAgICAgICAgIGVsc2UK
QEAgLTE1ODksOSArMTY0NSwxMCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7Ci0g
ICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4
RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgbm9kZS0+c2V0
QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJl
c3VsdChOb2RlUmVzdWx0SW50NTIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgCkBAIC0xNzI2LDk1ICsxNzgzLDEwNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYWRkUGhhbnRvbXNJZk5lY2Vzc2FyeSgpOwogICAgICAgICAgICAgaWYgKG1fY3VycmVudE5v
ZGUtPmNvbnRhaW5zTW92SGludCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgaWYgKHRyeVRvUmVsYXhSZXByZXNlbnRhdGlvbihtX2N1cnJlbnROb2RlKSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVO
KG1fZ3JhcGgsIG1fY3VycmVudE5vZGUsIGluamVjdFR5cGVDb252ZXJzaW9uc0ZvckVkZ2UpOwog
ICAgICAgICB9CiAgICAgICAgIGNsZWFyUGhhbnRvbXNBdEVuZCgpOwogICAgICAgICBtX2luc2Vy
dGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICB9CiAgICAgCisgICAgYm9vbCB0cnlUb1JlbGF4
UmVwcmVzZW50YXRpb24oTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIC8vIFNvbWUgb3BlcmF0
aW9ucyBtYXkgYmUgYWJsZSB0byBvcGVyYXRlIG1vcmUgZWZmaWNpZW50bHkgb3ZlciBsb29zZXIg
cmVwcmVzZW50YXRpb25zLgorICAgICAgICAvLyBJZGVudGlmeSB0aG9zZSBoZXJlLiBUaGlzIGF2
b2lkcyBpbnNlcnRpbmcgYSByZWR1bmRhbnQgcmVwcmVzZW50YXRpb24gY29udmVyc2lvbi4KKyAg
ICAgICAgCisgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICBjYXNlIFZhbHVl
VG9JbnQzMjoKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gRG91
YmxlUmVwVXNlCisgICAgICAgICAgICAgICAgJiYgIW5vZGUtPmNoaWxkMSgpLT5oYXNEb3VibGVS
ZXN1bHQoKSkgeworICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLnNldFVzZUtpbmQoTnVt
YmVyVXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IAogICAgIHZvaWQgaW5qZWN0VHlwZUNvbnZlcnNpb25zRm9yRWRnZShOb2RlKiBub2RlLCBFZGdl
JiBlZGdlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5vZGUgPT0gbV9jdXJyZW50Tm9kZSk7CiAg
ICAgICAgIAotICAgICAgICBpZiAoaXNEb3VibGUoZWRnZS51c2VLaW5kKCkpKSB7Ci0gICAgICAg
ICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGljKCkpIHsKLSAg
ICAgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NTJB
c0RvdWJsZSwgSW50MzJUb0RvdWJsZSwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2lu
LCBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBlZGdlLnNldE5vZGUocmVzdWx0KTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoZWRnZS51c2VLaW5kKCkpIHsKKyAgICAg
ICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZTogewor
ICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKQorICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoZW5hYmxlSW50NTIoKSAmJiBl
ZGdlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBN
YWtlIGFsbCBkb3VibGUgdXNlcyBvZiBpbnQ1MiB2YWx1ZXMgaGF2ZSBhbiBpbnRlcm1lZGlhdGUg
SW50NTJUb0RvdWJsZS4KLSAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciB0aGUgc2FtZSBy
ZWFzb24gYXMgSW50NTJUb1ZhbHVlIChzZWUgYmVsb3cpIGV4Y2VwdCB0aGF0Ci0gICAgICAgICAg
ICAgICAgLy8gSW50OFRvRG91YmxlIHdpbGwgY29udmVydCBpbnQ1MidzIHRoYXQgZml0IGluIGFu
IGludDMyIGludG8gYSBkb3VibGUKLSAgICAgICAgICAgICAgICAvLyByYXRoZXIgdGhhbiB0cnlp
bmcgdG8gY3JlYXRlIGEgYm94ZWQgaW50MzIgbGlrZSBJbnQ1MlRvVmFsdWUgZG9lcy4KLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2Rl
KCkpOwotICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NTJBc0Rv
dWJsZSwgSW50NTJUb0RvdWJsZSwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLCBF
ZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKLSAgICAgICAgICAgICAgICBlZGdlLnNldE5v
ZGUocmVzdWx0KTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBhZGRSZXF1
aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOworCisgICAgICAgICAgICBOb2RlKiByZXN1bHQ7Cisg
ICAgICAgICAgICBpZiAoZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkgeworICAgICAgICAgICAgICAg
IHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAg
IG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NTJBc0RvdWJsZSwgRG91YmxlUmVwLCBub2RlLT5vcmln
aW4sCisgICAgICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIEludDUyUmVwVXNlKSk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjRG91YmxlLCBEb3VibGVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAg
RWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYmIGVkZ2UudXNlS2luZCgpICE9
IE1hY2hpbmVJbnRVc2UKLSAgICAgICAgICAgICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU1hY2hp
bmVJbnQoKSAmJiAhZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkgewotICAgICAgICAgICAg
Ly8gV2UgbWFrZSBhbGwgbm9uLWludDUyIHVzZXMgb2YgaW50NTIgdmFsdWVzIGhhdmUgYW4gaW50
ZXJtZWRpYXRlIEludDUyVG9WYWx1ZQotICAgICAgICAgICAgLy8gbm9kZSB0byBlbnN1cmUgdGhh
dCB3ZSBoYW5kbGUgdGhpcyBwcm9wZXJseToKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAv
LyBhOiBTb21lSW50NTIKLSAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEBhLCAuLi4pCi0gICAg
ICAgICAgICAvLyBjOiBDYWxsKC4uLiwgQGEpCi0gICAgICAgICAgICAvLyBkOiBBcml0aEFkZChA
YSwgLi4uKQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIFdpdGhvdXQgYW4gaW50ZXJt
ZWRpYXRlIG5vZGUgYW5kIGp1c3QgbGFiZWxpbmcgdGhlIHVzZXMsIHdlIHdpbGwgZ2V0OgotICAg
ICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ1MgotICAgICAgICAgICAgLy8g
YjogQXJpdGhBZGQoSW50NTI6QGEsIC4uLikKLSAgICAgICAgICAgIC8vIGM6IENhbGwoLi4uLCBV
bnR5cGVkOkBhKQotICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoSW50NTI6QGEsIC4uLikKLSAg
ICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBBbmQgbm93IHRoZSBjLT5VbnR5cGVkOkBhIGVk
Z2Ugd2lsbCBib3ggdGhlIHZhbHVlIG9mIEBhIGludG8gYSBkb3VibGUuIFRoaXMKLSAgICAgICAg
ICAgIC8vIGlzIGJhZCwgYmVjYXVzZSBub3cgdGhlIGQtPkludDUyOkBhIGVkZ2Ugd2lsbCBlaXRo
ZXIgaGF2ZSB0byBkbyBkb3VibGUtdG8taW50Ci0gICAgICAgICAgICAvLyBjb252ZXJzaW9ucywg
b3Igd2lsbCBoYXZlIHRvIE9TUiBleGl0IHVuY29uZGl0aW9uYWxseS4gQWx0ZXJuYXRpdmVseSB3
ZSBjb3VsZAotICAgICAgICAgICAgLy8gaGF2ZSB0aGUgYy0+VW50eXBlZDpAYSBlZGdlIGJveCB0
aGUgdmFsdWUgYnkgY29weWluZyByYXRoZXIgdGhhbiBpbi1wbGFjZS4KLSAgICAgICAgICAgIC8v
IEJ1dCB0aGVzZSBib3hpbmdzIGFyZSBhbHNvIGNvc3RseSBzbyB0aGlzIHdvdWxkbid0IGJlIGdy
ZWF0LgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIFRoZSBzb2x1dGlvbiB3ZSB1c2Ug
aXMgdG8gYWx3YXlzIGhhdmUgbm9uLUludDUyIHVzZXMgb2YgcHJlZGljdGVkIEludDUyJ3MgdXNl
Ci0gICAgICAgICAgICAvLyBhbiBpbnRlcnZlbmluZyBJbnQ1MlRvVmFsdWUgbm9kZToKLSAgICAg
ICAgICAgIC8vCi0gICAgICAgICAgICAvLyBhOiBTb21lSW50NTIKLSAgICAgICAgICAgIC8vIGI6
IEFyaXRoQWRkKEludDUyOkBhLCAuLi4pCi0gICAgICAgICAgICAvLyB4OiBJbnQ1MlRvVmFsdWUo
SW50NTI6QGEpCi0gICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgVW50eXBlZDpAeCkKLSAgICAg
ICAgICAgIC8vIGQ6IEFyaXRoQWRkKEludDUyOkBhLCAuLi4pCi0gICAgICAgICAgICAvLwotICAg
ICAgICAgICAgLy8gTm90ZSB0aGF0IGV2ZW4gaWYgd2UgaGFkIG11bHRpcGxlIG5vbi1pbnQ1MiB1
c2VzIG9mIEBhLCB0aGUgbXVsdGlwbGUKLSAgICAgICAgICAgIC8vIEludDUyVG9WYWx1ZSdzIHdv
dWxkIGdldCBDU0UnZCB0b2dldGhlci4gU28gdGhlIGJveGluZyB3b3VsZCBvbmx5IGhhcHBlbiBv
bmNlLgotICAgICAgICAgICAgLy8gQXQgdGhlIHNhbWUgdGltZSwgQGEgd291bGQgY29udGludWUg
dG8gYmUgcmVwcmVzZW50ZWQgYXMgYSBuYXRpdmUgaW50NTIuCi0gICAgICAgICAgICAvLwotICAg
ICAgICAgICAgLy8gQW4gYWx0ZXJuYXRpdmUgd291bGQgaGF2ZSBiZWVuIHRvIGluc2VydCBUb05h
dGl2ZUludDUyIG5vZGVzIG9uIGludDUyIHVzZXMgb2YKLSAgICAgICAgICAgIC8vIGludDUyJ3Mu
IFRoaXMgd291bGQgaGF2ZSBoYW5kbGVkIHRoZSBhYm92ZSBleGFtcGxlIGJ1dCB3b3VsZCBmYWxs
IG92ZXIgZm9yOgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ1Mgot
ICAgICAgICAgICAgLy8gYjogQ2FsbCguLi4sIEBhKQotICAgICAgICAgICAgLy8gYzogQXJpdGhB
ZGQoQGEsIC4uLikKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBCdXQgdGhlIHNvbHV0
aW9uIHdlIHVzZSBoYW5kbGVzIHRoZSBhYm92ZSBncmFjZWZ1bGx5LgorICAgICAgICAgICAgCisg
ICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKKyAgICAgICAgICAgIGlmIChlZGdlLT5oYXNJbnQ1
MlJlc3VsdCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOwotICAgICAgICAgICAgTm9kZSog
cmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICBtX2lu
ZGV4SW5CbG9jaywgU3BlY0ludDUyLCBJbnQ1MlRvVmFsdWUsCi0gICAgICAgICAgICAgICAgbm9k
ZS0+b3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBVbnR5cGVkVXNlKSk7CisKKyAgICAgICAgICAg
IE5vZGUqIHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSkg
eworICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBuZXZlciBoYXBwZW4uCisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGljKCkpIHsKKyAgICAgICAg
ICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMyLCBJbnQ1MlJlcCwgbm9kZS0+b3JpZ2lu
LAorICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBJbnQzMlVzZSkpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG9ubHkgaGVyZSBm
b3IgZGVhbGluZyB3aXRoIGNvbnN0YW50cy4KKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChlZGdlLT5vcCgpID09IEpTQ29uc3RhbnQpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJs
b2NrLCBTcGVjTWFjaGluZUludCwgSW50NTJDb25zdGFudCwgbm9kZS0+b3JpZ2luLAorICAgICAg
ICAgICAgICAgICAgICBPcEluZm8oZWRnZS0+Y29uc3RhbnROdW1iZXIoKSkpOworICAgICAgICAg
ICAgfQorCiAgICAgICAgICAgICBlZGdlLnNldE5vZGUocmVzdWx0KTsKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgZGVmYXVsdDogeworICAgICAgICAgICAgaWYgKCFlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSAm
JiAhZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9kZSgpKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKGVk
Z2UtPmhhc0RvdWJsZVJlc3VsdCgpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNEb3VibGUsIFZhbHVlUmVwLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAg
IEVkZ2UoZWRnZS5ub2RlKCksIERvdWJsZVJlcFVzZSkpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAg
ICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMyIHwgU3BlY0ludDUyQXNE
b3VibGUsIFZhbHVlUmVwLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIEVkZ2Uo
ZWRnZS5ub2RlKCksIEludDUyUmVwVXNlKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0gfQogICAgIH0KICAgICAKICAgICB2b2lkIGFkZFJlcXVpcmVkUGhhbnRvbShOb2Rl
KiBub2RlKQpAQCAtMTg0MSw5ICsxOTEwLDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3JlcXVpcmVkUGhhbnRv
bXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9yZXF1aXJlZFBo
YW50b21zW2ldOworICAgICAgICAgICAgVXNlS2luZCBraW5kOworICAgICAgICAgICAgaWYgKG5v
ZGUtPmhhc0RvdWJsZVJlc3VsdCgpKQorICAgICAgICAgICAgICAgIGtpbmQgPSBEb3VibGVSZXBV
c2U7CisgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAg
ICAgICAgICAgIGtpbmQgPSBJbnQ1MlJlcFVzZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBraW5kID0gVW50eXBlZFVzZTsKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCiAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFu
dG9tLCBOb2RlT3JpZ2luKG1fY29kZU9yaWdpbk9mUGhhbnRvbXMpLAotICAgICAgICAgICAgICAg
IEVkZ2UobV9yZXF1aXJlZFBoYW50b21zW2ldLCBVbnR5cGVkVXNlKSk7CisgICAgICAgICAgICAg
ICAgRWRnZShub2RlLCBraW5kKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fcmVx
dWlyZWRQaGFudG9tcy5yZXNpemUoMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYyLDcgKzYyLDcgQEAg
aW5saW5lIE5vZGVGbGFncyByZXN1bHRGb3IoRmx1c2hGb3JtYXQgZgogICAgIGNhc2UgRmx1c2hl
ZEludDUyOgogICAgICAgICByZXR1cm4gTm9kZVJlc3VsdEludDUyOwogICAgIGNhc2UgRmx1c2hl
ZERvdWJsZToKLSAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHROdW1iZXI7CisgICAgICAgIHJldHVy
biBOb2RlUmVzdWx0RG91YmxlOwogICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CiAgICAgICAgIHJl
dHVybiBOb2RlUmVzdWx0Qm9vbGVhbjsKICAgICB9CkBAIC04Myw5ICs4Myw5IEBAIGlubGluZSBV
c2VLaW5kIHVzZUtpbmRGb3IoRmx1c2hGb3JtYXQgZm8KICAgICBjYXNlIEZsdXNoZWRJbnQzMjoK
ICAgICAgICAgcmV0dXJuIEludDMyVXNlOwogICAgIGNhc2UgRmx1c2hlZEludDUyOgotICAgICAg
ICByZXR1cm4gTWFjaGluZUludFVzZTsKKyAgICAgICAgcmV0dXJuIEludDUyUmVwVXNlOwogICAg
IGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAgICAgcmV0dXJuIE51bWJlclVzZTsKKyAgICAgICAg
cmV0dXJuIERvdWJsZVJlcFVzZTsKICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgogICAgICAgICBy
ZXR1cm4gQm9vbGVhblVzZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5jcHAJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsMTAgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE5vZAogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIG91dC5wcmludCgiQCIsIG5vZGUtPmluZGV4KCkpOwotICAgIG91dC5wcmludChBYmJyZXZp
YXRlZFNwZWN1bGF0aW9uRHVtcChub2RlLT5wcmVkaWN0aW9uKCkpKTsKKyAgICBpZiAobm9kZS0+
aGFzRG91YmxlUmVzdWx0KCkpCisgICAgICAgIG91dC5wcmludCgiPERvdWJsZT4iKTsKKyAgICBl
bHNlIGlmIChub2RlLT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAgICBvdXQucHJpbnQoIjxJbnQ1
Mj4iKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsMTMgQEAgc3RydWN0IE5v
ZGUgewogICAgICAgICByZXR1cm4gZmlsdGVyRmxhZ3MofmZsYWdzKTsKICAgICB9CiAgICAgCisg
ICAgdm9pZCBzZXRSZXN1bHQoTm9kZUZsYWdzIHJlc3VsdCkKKyAgICB7CisgICAgICAgIEFTU0VS
VCghKHJlc3VsdCAmIH5Ob2RlUmVzdWx0TWFzaykpOworICAgICAgICBjbGVhckZsYWdzKE5vZGVS
ZXN1bHRNYXNrKTsKKyAgICAgICAgbWVyZ2VGbGFncyhyZXN1bHQpOworICAgIH0KKyAgICAKICAg
ICB2b2lkIHNldE9wQW5kRGVmYXVsdEZsYWdzKE5vZGVUeXBlIG9wKQogICAgIHsKICAgICAgICAg
bV9vcCA9IG9wOwpAQCAtMzY4LDcgKzM3NSwxNCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgCiAgICAg
Ym9vbCBpc0NvbnN0YW50KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvcCgpID09IEpTQ29uc3Rh
bnQ7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6Cisg
ICAgICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNXZWFrQ29u
c3RhbnQoKQpAQCAtMzg1LDYgKzM5OSw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICB7CiAgICAgICAg
IHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGNhc2Ug
RG91YmxlQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgY2Fz
ZSBXZWFrSlNDb25zdGFudDoKICAgICAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC00MDEsNyArNDE3LDEyIEBAIHN0cnVjdCBOb2RlIHsKICAg
ICAKICAgICB2b2lkIGNvbnZlcnRUb0NvbnN0YW50KHVuc2lnbmVkIGNvbnN0YW50TnVtYmVyKQog
ICAgIHsKLSAgICAgICAgbV9vcCA9IEpTQ29uc3RhbnQ7CisgICAgICAgIGlmIChoYXNEb3VibGVS
ZXN1bHQoKSkKKyAgICAgICAgICAgIG1fb3AgPSBEb3VibGVDb25zdGFudDsKKyAgICAgICAgZWxz
ZSBpZiAoaGFzSW50NTJSZXN1bHQoKSkKKyAgICAgICAgICAgIG1fb3AgPSBJbnQ1MkNvbnN0YW50
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX29wID0gSlNDb25zdGFudDsKICAgICAgICAg
bV9mbGFncyAmPSB+KE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9iYmVyIHwgTm9kZUNs
b2JiZXJzV29ybGQpOwogICAgICAgICBtX29wSW5mbyA9IGNvbnN0YW50TnVtYmVyOwogICAgICAg
ICBjaGlsZHJlbi5yZXNldCgpOwpAQCAtNTAyLDYgKzUyMyw4IEBAIHN0cnVjdCBOb2RlIHsKICAg
ICAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKHdl
YWtDb25zdGFudCgpKTsKICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgICAgICBjYXNlIERv
dWJsZUNvbnN0YW50OgorICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgICAgICBy
ZXR1cm4gY29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4ICsgY29uc3RhbnROdW1iZXIoKSkuZ2V0KCk7CiAgICAgICAgIGNhc2UgUGhhbnRvbUFyZ3Vt
ZW50czoKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CkBAIC04MDUsMTEgKzgyOCwyMSBA
QCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiAobV9mbGFncyAmIE5vZGVSZXN1bHRNYXNr
KSA9PSBOb2RlUmVzdWx0SW50MzI7CiAgICAgfQogICAgIAorICAgIGJvb2wgaGFzSW50NTJSZXN1
bHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09
IE5vZGVSZXN1bHRJbnQ1MjsKKyAgICB9CisgICAgCiAgICAgYm9vbCBoYXNOdW1iZXJSZXN1bHQo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5v
ZGVSZXN1bHROdW1iZXI7CiAgICAgfQogICAgIAorICAgIGJvb2wgaGFzRG91YmxlUmVzdWx0KCkK
KyAgICB7CisgICAgICAgIHJldHVybiAobV9mbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2Rl
UmVzdWx0RG91YmxlOworICAgIH0KKyAgICAKICAgICBib29sIGhhc0pTUmVzdWx0KCkKICAgICB7
CiAgICAgICAgIHJldHVybiAobV9mbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0
SlM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuY3BwCShy
ZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFn
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDYgKzQ3LDkgQEAgdm9pZCBkdW1w
Tm9kZUZsYWdzKFByaW50U3RyZWFtJiBhY3R1YWxPdQogICAgICAgICBjYXNlIE5vZGVSZXN1bHRO
dW1iZXI6CiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJOdW1iZXIiKTsKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIE5vZGVSZXN1bHREb3VibGU6CisgICAgICAgICAgICBv
dXQucHJpbnQoY29tbWEsICJEb3VibGUiKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIE5vZGVSZXN1bHRJbnQzMjoKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgIkludDMy
Iik7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZUZsYWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlRmxhZ3MuaAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlRmxhZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsMTAgKzM4
LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICNkZWZpbmUgTm9kZVJlc3Vs
dE1hc2sgICAgICAgICAgICAgICAgICAgMHgwMDA3CiAjZGVmaW5lIE5vZGVSZXN1bHRKUyAgICAg
ICAgICAgICAgICAgICAgIDB4MDAwMQogI2RlZmluZSBOb2RlUmVzdWx0TnVtYmVyICAgICAgICAg
ICAgICAgICAweDAwMDIKLSNkZWZpbmUgTm9kZVJlc3VsdEludDMyICAgICAgICAgICAgICAgICAg
MHgwMDAzCi0jZGVmaW5lIE5vZGVSZXN1bHRJbnQ1MiAgICAgICAgICAgICAgICAgIDB4MDAwNAot
I2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAgICAgICAgICAgICAweDAwMDUKLSNkZWZpbmUg
Tm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgICAgICAgMHgwMDA2CisjZGVmaW5lIE5vZGVSZXN1
bHREb3VibGUgICAgICAgICAgICAgICAgIDB4MDAwMworI2RlZmluZSBOb2RlUmVzdWx0SW50MzIg
ICAgICAgICAgICAgICAgICAweDAwMDQKKyNkZWZpbmUgTm9kZVJlc3VsdEludDUyICAgICAgICAg
ICAgICAgICAgMHgwMDA1CisjZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAgICAg
IDB4MDAwNgorI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAgICAgICAweDAwMDcK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAjZGVmaW5lIE5vZGVNdXN0R2VuZXJh
dGUgICAgICAgICAgICAgICAgIDB4MDAwOCAvLyBzZXQgb24gbm9kZXMgdGhhdCBoYXZlIHNpZGUg
ZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlhbGx5IGJlIHJlbW92ZWQgYnkgRENFLgogI2RlZmlu
ZSBOb2RlSGFzVmFyQXJncyAgICAgICAgICAgICAgICAgICAweDAwMTAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIEEgY29u
c3RhbnQgaW4gdGhlIENvZGVCbG9jaydzIGNvbnN0YW50IHBvb2wuICovXAogICAgIG1hY3JvKEpT
Q29uc3RhbnQsIE5vZGVSZXN1bHRKUyB8IE5vZGVEb2VzTm90RXhpdCkgXAogICAgIFwKKyAgICAv
KiBDb25zdGFudHMgd2l0aCBzcGVjaWZpYyByZXByZXNlbnRhdGlvbnMuICovXAorICAgIG1hY3Jv
KERvdWJsZUNvbnN0YW50LCBOb2RlUmVzdWx0RG91YmxlIHwgTm9kZURvZXNOb3RFeGl0KSBcCisg
ICAgbWFjcm8oSW50NTJDb25zdGFudCwgTm9kZVJlc3VsdEludDUyIHwgTm9kZURvZXNOb3RFeGl0
KSBcCisgICAgXAogICAgIC8qIEEgY29uc3RhbnQgbm90IGluIHRoZSBDb2RlQmxvY2sncyBjb25z
dGFudCBwb29sLiBVc2VzIGdldCBwYXRjaGVkIHRvIGp1bXBzIHRoYXQgZXhpdCB0aGUgKi9cCiAg
ICAgLyogY29kZSBibG9jay4gKi9cCiAgICAgbWFjcm8oV2Vha0pTQ29uc3RhbnQsIE5vZGVSZXN1
bHRKUyB8IE5vZGVEb2VzTm90RXhpdCkgXApAQCAtMTA2LDE1ICsxMTAsMTMgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIFVzZWQgdG8gYm94IHRoZSByZXN1bHQgb2Yg
VVJTaGlmdCBub2RlcyAocmVzdWx0IGhhcyByYW5nZSAwLi4yXjMyLTEpLiAqL1wKICAgICBtYWNy
byhVSW50MzJUb051bWJlciwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIFwKLSAgICAvKiBVc2Vk
IHRvIGNhc3Qga25vd24gaW50ZWdlcnMgdG8gZG91Ymxlcywgc28gYXMgdG8gc2VwYXJhdGUgdGhl
IGRvdWJsZSBmb3JtICovXAotICAgIC8qIG9mIHRoZSB2YWx1ZSBmcm9tIHRoZSBpbnRlZ2VyIGZv
cm0uICovXAotICAgIG1hY3JvKEludDMyVG9Eb3VibGUsIE5vZGVSZXN1bHROdW1iZXIpIFwKLSAg
ICAvKiBVc2VkIHRvIHNwZWN1bGF0ZSB0aGF0IGEgZG91YmxlIHZhbHVlIGlzIGFjdHVhbGx5IGFu
IGludGVnZXIuICovXAorICAgIC8qIEF0dGVtcHQgdG8gdHJ1bmNhdGUgYSBkb3VibGUgdG8gaW50
MzI7IHRoaXMgd2lsbCBleGl0IGlmIGl0IGNhbid0IGRvIGl0LiAqL1wKICAgICBtYWNybyhEb3Vi
bGVBc0ludDMyLCBOb2RlUmVzdWx0SW50MzIpIFwKLSAgICAvKiBVc2VkIHRvIHNlcGFyYXRlIHJl
cHJlc2VudGF0aW9uIGFuZCByZWdpc3RlciBhbGxvY2F0aW9uIG9mIEludDUyJ3MgcmVwcmVzZW50
ZWQgKi9cCi0gICAgLyogYXMgdmFsdWVzLiAqL1wKLSAgICBtYWNybyhJbnQ1MlRvVmFsdWUsIE5v
ZGVSZXN1bHRKUykgXAotICAgIG1hY3JvKEludDUyVG9Eb3VibGUsIE5vZGVSZXN1bHROdW1iZXIp
IFwKKyAgICBcCisgICAgLyogQ2hhbmdlIHRoZSByZXByZXNlbnRhdGlvbiBvZiBhIHZhbHVlLiAq
L1wKKyAgICBtYWNybyhEb3VibGVSZXAsIE5vZGVSZXN1bHREb3VibGUpIFwKKyAgICBtYWNybyhJ
bnQ1MlJlcCwgTm9kZVJlc3VsdEludDUyKSBcCisgICAgbWFjcm8oVmFsdWVSZXAsIE5vZGVSZXN1
bHRKUykgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zLiAq
L1wKICAgICBtYWNybyhBcml0aEFkZCwgTm9kZVJlc3VsdE51bWJlcikgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5j
cHAJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjksOSArMjY5LDcgQEAg
dm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAKICAgICAg
ICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIEluUGFpcjoK
LSAgICAgICAgY2FzZSBJbkZQUjoKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6Ci0g
ICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgbV9qaXQu
bG9hZDMyKAogICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3Jp
cHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50YWcsCiAgICAgICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDApOwpAQCAtMjg2LDYgKzI4NCwxNCBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6
Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXls
b2FkRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgSW5GUFI6CisgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgor
ICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2Ny
YXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgbV9qaXQubG9hZERv
dWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBtX2pp
dC5zYW5pdGl6ZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LnN0
b3JlRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihv
cGVyYW5kKSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIFVuYm94ZWRJbnQz
MkluR1BSOgogICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTcsNiArMjk3LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNv
bnN0IAogICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAg
IG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRl
eCksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoR1BSSW5m
bzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgbV9qaXQuc2FuaXRpemVE
b3VibGUoRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBtX2ppdC5ib3hEb3VibGUoRlBS
SW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgbV9qaXQuc3RvcmU2
NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTAsNyArNDkwLDYgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgogICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgotICAgICAgICBjYXNl
IEludDMyVG9Eb3VibGU6CiAgICAgICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKICAgICAgICAgY2Fz
ZSBHZXRMb2NhbFVubGlua2VkOgogICAgICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoOgpA
QCAtNTA0LDExICs1MDMsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEF0
UmV0dXJuOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgICAgIGNh
c2UgSW52YWxpZGF0aW9uUG9pbnQ6Ci0gICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgotICAgICAg
ICBjYXNlIEludDUyVG9Eb3VibGU6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICAg
ICAgY2FzZSBWYWx1ZVRvSW50MzI6Ci0gICAgICAgIGNhc2UgSGFyZFBoYW50b206IHsKKyAgICAg
ICAgY2FzZSBIYXJkUGhhbnRvbToKKyAgICAgICAgY2FzZSBEb3VibGVSZXA6CisgICAgICAgIGNh
c2UgSW50NTJSZXA6CisgICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgIGNhc2UgRG91Ymxl
Q29uc3RhbnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDogewogICAgICAgICAgICAgLy8g
VGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRoaXMgc3RhZ2Ugb2YgY29tcGls
YXRpb24uIEl0IGlzCiAgICAgICAgICAgICAvLyBpbnNlcnRlZCBieSBmaXh1cCgpLCB3aGljaCBm
b2xsb3dzIHRoaXMgcGhhc2UuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw5IEBAIHB1YmxpYzoKICAg
ICAgICAgc3dpdGNoIChlZGdlLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIFVudHlwZWRVc2U6
CiAgICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgICAgIGNhc2UgUmVhbE51bWJlclVzZToKKyAg
ICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToK
KyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAg
ICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgY2FzZSBDZWxsVXNlOgpAQCAtNjEsNyArNjMs
NiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgTm90Q2VsbFVzZToKICAgICAgICAgY2FzZSBPdGhl
clVzZToKICAgICAgICAgY2FzZSBNaXNjVXNlOgotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBLbm93bklu
dDMyVXNlOgpAQCAtNjksMTEgKzcwLDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1fcmVz
dWx0ID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKLSAgICAgICAg
Y2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUoZWRn
ZSkubV90eXBlICYgflNwZWNGdWxsTnVtYmVyKQotICAgICAgICAgICAgICAgIG1fcmVzdWx0ID0g
ZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKICAgICAgICAgY2FzZSBL
bm93bkNlbGxVc2U6CiAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlw
ZSAmIH5TcGVjQ2VsbCkKICAgICAgICAgICAgICAgICBtX3Jlc3VsdCA9IGZhbHNlOwpAQCAtMTEx
LDYgKzEwNyw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKIAog
ICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICBjYXNl
IERvdWJsZUNvbnN0YW50OgorICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICBjYXNlIFdlYWtK
U0NvbnN0YW50OgogICAgIGNhc2UgSWRlbnRpdHk6CiAgICAgY2FzZSBUb1RoaXM6CkBAIC0xMzcs
NyArMTM1LDYgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAg
IGNhc2UgQml0VVJTaGlmdDoKICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICBjYXNlIFVJbnQz
MlRvTnVtYmVyOgotICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICBjYXNlIERvdWJsZUFzSW50
MzI6CiAgICAgY2FzZSBBcml0aEFkZDoKICAgICBjYXNlIEFyaXRoU3ViOgpAQCAtMjQyLDggKzIz
OSw2IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNl
IENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgog
ICAgIGNhc2UgTG9vcEhpbnQ6Ci0gICAgY2FzZSBJbnQ1MlRvRG91YmxlOgotICAgIGNhc2UgSW50
NTJUb1ZhbHVlOgogICAgIGNhc2UgU3RvcmVCYXJyaWVyOgogICAgIGNhc2UgU3RvcmVCYXJyaWVy
V2l0aE51bGxDaGVjazoKICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgpAQCAtMjU1LDYgKzI1
MCw5IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNl
IENoZWNrOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlP
ZmZzZXQ6CisgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICBjYXNlIERvdWJsZVJlcDoKKyAgICBjYXNl
IEludDUyUmVwOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBHZXRC
eVZhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDIxICsx
MDYsOSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKLSAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0
cmljdEludDUyOiB7Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICAgICAgYm94SW50
NTIoZ3ByLCBncHIsIHNwaWxsRm9ybWF0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVh
bFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0
YUZvcm1hdERvdWJsZSkgewotICAgICAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGJveCB0aGUg
ZG91YmxlLCBzaW5jZSB3ZSB3YW50IGEgSlNWYWx1ZS4KLSAgICAgICAgICAgICAgICAgICAgbV9q
aXQuc3ViNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBncHIpOwotICAgICAgICAg
ICAgICAgICAgICBzcGlsbEZvcm1hdCA9IERhdGFGb3JtYXRKU0RvdWJsZTsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3BpbGxGb3Jt
YXQgJiBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNwaWxs
Rm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIHNwaWxs
Rm9ybWF0KTsKQEAgLTE0MywyOCArMTMxLDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
SlNWYWx1ZShFZGdlIAogICAgICAgICByZXR1cm4gZ3ByOwogICAgIH0KIAotICAgIGNhc2UgRGF0
YUZvcm1hdERvdWJsZTogewotICAgICAgICBGUFJSZWcgZnByID0gaW5mby5mcHIoKTsKLSAgICAg
ICAgR1BSUmVnIGdwciA9IGJveERvdWJsZShmcHIpOwotCi0gICAgICAgIC8vIFVwZGF0ZSBhbGwg
aW5mbwotICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0
SlNEb3VibGUpOwotICAgICAgICBtX2ZwcnMucmVsZWFzZShmcHIpOwotICAgICAgICBtX2dwcnMu
cmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySlMpOwotCi0gICAgICAgIHJl
dHVybiBncHI7Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKLSAg
ICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjogewotICAgICAgICBHUFJSZWcgZ3ByID0gaW5m
by5ncHIoKTsKLSAgICAgICAgbG9jayhncHIpOwotICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
YWxsb2NhdGUoKTsKLSAgICAgICAgYm94SW50NTIoZ3ByLCByZXN1bHRHUFIsIGluZm8ucmVnaXN0
ZXJGb3JtYXQoKSk7Ci0gICAgICAgIHVubG9jayhncHIpOwotICAgICAgICByZXR1cm4gcmVzdWx0
R1BSOwotICAgIH0KLQogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CiAgICAgICAgIC8vIE5vIHJl
dGFnIHJlcXVpcmVkIG9uIEpTVkFMVUU2NCEKICAgICBjYXNlIERhdGFGb3JtYXRKUzoKQEAgLTE3
OSw2ICsxNDUsOCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAg
ICAgICAgIAogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CiAgICAgY2FzZSBEYXRhRm9ybWF0
U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CisgICAgY2FzZSBEYXRhRm9ybWF0
SW50NTI6CiAgICAgICAgIC8vIHRoaXMgdHlwZSBjdXJyZW50bHkgbmV2ZXIgb2NjdXJzCiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIApAQCAtNzY5LDEyICs3
MzcsNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgCiAg
ICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXRO
b25lOiB7Ci0gICAgICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJs
ZSkgewotICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIDApOwotICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZv
cm1hdEludDMyOwotICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgCiAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwogCiAgICAgICAgIGlmIChl
ZGdlLT5oYXNDb25zdGFudCgpKSB7CkBAIC03ODgsNyArNzUwLDcgQEAgR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICAKICAgICAgICAgRGF0YUZvcm1hdCBz
cGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAgICAgICAgCi0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0g
RGF0YUZvcm1hdEludDMyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MiB8fCBzcGls
bEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3Jt
YXRJbnQzMik7CiAgICAgICAgIAogICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJl
Z2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAgICAgICAgIApAQCAtODA5LDM2ICs3NzEsNiBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgICAgICBy
ZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SlNJbnQzMjsKICAgICAgICAgICAgIHJldHVybiBncHI7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MiB8
fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpIHsKLSAgICAgICAgICAgIC8v
IEdlbmVyYWxseSwgdGhpcyBjYW4gb25seSBoYXBwZW4gaWYgd2UndmUgYWxyZWFkeSBwcm92ZWQg
dGhhdCB0aGUKLSAgICAgICAgICAgIC8vIHZhbHVlIGlzIGFuIGludDMyLiBUaGF0J3MgYmVjYXVz
ZSBpZiBhIHZhbHVlIG9yaWdpbmF0ZWQgYXMgYSBKU1ZhbHVlCi0gICAgICAgICAgICAvLyB0aGVu
IHdlIHdvdWxkIHNwZWN1bGF0ZSB0aGF0IGl0J3MgYW4gaW50MzIgYmVmb3JlIHJlcHJlc2VudGlu
ZyBpdCBhcwotICAgICAgICAgICAgLy8gYW4gaW50NTIuIE90aGVyd2lzZSwgaWYgd2Uga25vd2lu
Z2x5IHByb2R1Y2VkIGFuIGludDUyLCB0aGVuIHdlIHdvdWxkCi0gICAgICAgICAgICAvLyBiZSBi
b3hpbmcgaXQgaW50byBhIHZhbHVlIHVzaW5nIEludDUyVG9WYWx1ZS4gVGhpcyBhc3NlcnRpb24g
aXMgdmFsaWQKLSAgICAgICAgICAgIC8vIG9ubHkgYmVjYXVzZSBJbnQ1MiBpcyBzb21ldGhpbmcg
dGhhdCB3ZSBpbnRyb2R1Y2UgYXQgcHJlZGljdGlvbiB0aW1lLgotICAgICAgICAgICAgLy8gSG93
ZXZlcjogd2UgbWF5IGhhdmUgYW4gaW50MzItcHJvZHVjaW5nIG5vZGUgcmVwbGFjZWQgYnkgYW4K
LSAgICAgICAgICAgIC8vIGludDUyLXByb2R1Y2luZyBub2RlIGR1ZSB0byBDU0UuIFNvIHdlIG11
c3QgZG8gYSBjaGVjay4KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEodHlwZSAmIH5TcGVj
TWFjaGluZUludCkpOwotICAgICAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NTIpIHsKLSAgICAg
ICAgICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICAgICAgbV9q
aXQuc2lnbkV4dGVuZDMyVG9QdHIoZ3ByLCB0ZW1wKTsKLSAgICAgICAgICAgICAgICAvLyBDdXJy
ZW50bHksIHdlIGNhbid0IHN1cHBseSB2YWx1ZSBwcm9maWxpbmcgaW5mb3JtYXRpb24gaGVyZS4g
Oi0vCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgICAgICAg
ICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBncHIsIHRlbXApKTsKLSAgICAgICAg
ICAgICAgICB1bmxvY2sodGVtcCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc3Bp
bGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKQotICAgICAgICAgICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwot
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICAgICAg
bV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBn
cHIpOwotICAgICAgICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwciwgZ3ByKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwgZ3By
KTsKLSAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKLSAgICAgICAg
ICAgIHJldHVybiBncHI7Ci0gICAgICAgIH0KICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CiAKICAgICAgICAgLy8gRmls
bCBhcyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJvdWdoLgpAQCAtODk3LDQ3ICs4MjksNyBAQCBHUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIHJldHVybiBncHI7
CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKLSAgICBj
YXNlIERhdGFGb3JtYXRJbnQ1MjogewotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsK
LSAgICAgICAgR1BSUmVnIHJlc3VsdDsKLSAgICAgICAgRGF0YUZvcm1hdCBvbGRGb3JtYXQgPSBp
bmZvLnJlZ2lzdGVyRm9ybWF0KCk7Ci0gICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkg
ewotICAgICAgICAgICAgcmVzdWx0ID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgIG1faml0Lm1v
dmUoZ3ByLCByZXN1bHQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9jayhncHIp
OwotICAgICAgICAgICAgaW5mby5maWxsSW50MzIoKm1fc3RyZWFtLCBncHIpOwotICAgICAgICAg
ICAgcmVzdWx0ID0gZ3ByOwotICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCEodHlw
ZSAmIH5TcGVjTWFjaGluZUludCkpOwotICAgICAgICBpZiAob2xkRm9ybWF0ID09IERhdGFGb3Jt
YXRJbnQ1MikKLSAgICAgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjppbnQ1MlNoaWZ0QW1vdW50KSwgcmVzdWx0KTsKLSAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50
NTIpIHsKLSAgICAgICAgICAgIEdQUlJlZyB0ZW1wID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAg
IG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdCwgdGVtcCk7Ci0gICAgICAgICAgICAvLyBD
dXJyZW50bHksIHdlIGNhbid0IHN1cHBseSB2YWx1ZSBwcm9maWxpbmcgaW5mb3JtYXRpb24gaGVy
ZS4gOi0vCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgICAgIEJh
ZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZXN1bHQsIHRlbXApKTsKLSAgICAgICAgICAgIHVu
bG9jayh0ZW1wKTsKLSAgICAgICAgfQotICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihy
ZXN1bHQsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsK
LSAgICAgICAgcmV0dXJuIGdwcjsKLSAgICB9Ci0KLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6
Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6IHsKLSAgICAgICAgaWYgKGVkZ2UtPmhhc0Nv
bnN0YW50KCkgJiYgaXNJbnQzMkNvbnN0YW50KGVkZ2Uubm9kZSgpKSkgewotICAgICAgICAgICAg
R1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBBU1NFUlQoaXNJbnQzMkNvbnN0
YW50KGVkZ2Uubm9kZSgpKSk7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVy
OjpJbW0zMih2YWx1ZU9mSW50MzJDb25zdGFudChlZGdlLm5vZGUoKSkpLCBncHIpOwotICAgICAg
ICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOwotICAgICAgICAgICAgcmV0dXJu
IGdwcjsKLSAgICAgICAgfQotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICB9CisgICAgY2FzZSBE
YXRhRm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKICAgICBjYXNlIERh
dGFGb3JtYXRCb29sZWFuOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKQEAgLTk0Nyw3ICs4
MzksMTAgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAg
ICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CiAKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6
CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoK
KyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTk3NiwxNCArODcxLDEz
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDUKIHsKICAgICBBU1NF
UlQoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIgfHwgZGVzaXJlZEZvcm1hdCA9PSBE
YXRhRm9ybWF0U3RyaWN0SW50NTIpOwogICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0
ZS5mb3JOb2RlKGVkZ2UpOwotICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7
CiAgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNNYWNoaW5lSW50KTsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7
CiAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVn
aXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1h
dCgpKSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewotICAgICAgICBpZiAoKGVkZ2UtPmhh
c0NvbnN0YW50KCkgJiYgIXZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKS5pc01hY2hpbmVJ
bnQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKKyAgICAg
ICAgaWYgKChlZGdlLT5oYXNDb25zdGFudCgpICYmICF2YWx1ZU9mSlNDb25zdGFudChlZGdlLm5v
ZGUoKSkuaXNNYWNoaW5lSW50KCkpKSB7CiAgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2
ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAgICAgICBy
ZXR1cm4gYWxsb2NhdGUoKTsKICAgICAgICAgfQpAQCAtMTAwNCw4MiArODk4LDIxIEBAIEdQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDUKICAgICAgICAgCiAgICAgICAgIERh
dGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CiAgICAgICAgIAotICAg
ICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNwaWxs
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50
NTIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0
ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7CiAgICAgICAgIAogICAgICAgICBtX2dwcnMucmV0
YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAgICAgICAgIAot
ICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEpTSW50MzIgfHwgc3BpbGxGb3Jt
YXQgPT0gRGF0YUZvcm1hdEludDMyKSB7Ci0gICAgICAgICAgICAvLyBJZiB3ZSBrbm93IHRoaXMg
d2FzIHNwaWxsZWQgYXMgYW4gaW50ZWdlciB3ZSBjYW4gZmlsbCB3aXRob3V0IGNoZWNraW5nLgot
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxS
ZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihncHIs
IGdwcik7Ci0gICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0
SW50NTIpIHsKLSAgICAgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ1MigqbV9zdHJlYW0s
IGdwcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1v
dW50KSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbEludDUyKCptX3N0cmVhbSwgZ3ByKTsK
LSAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNwaWxsRm9y
bWF0ID09IERhdGFGb3JtYXRJbnQ1MiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0
SW50NTIpIHsKLSAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQg
PT0gRGF0YUZvcm1hdFN0cmljdEludDUyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNwaWxsRm9y
bWF0ID09IERhdGFGb3JtYXRJbnQ1MikKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0
NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBncHIpOwotICAgICAg
ICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDUyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHNwaWxs
Rm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKLSAgICAgICAgICAgICAgICBtX2ppdC5s
c2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIGdwcik7Ci0g
ICAgICAgICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICBy
ZXR1cm4gZ3ByOwotICAgICAgICB9CiAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotCi0gICAgICAgIC8vIEZpbGwgYXMg
SlNWYWx1ZSwgYW5kIGZhbGwgdGhyb3VnaC4KLSAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9z
dHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTSW50MzIpOwotICAgICAgICBtX2dwcnMudW5sb2NrKGdw
cik7Ci0gICAgICAgIEZBTExUSFJPVUdIOwotICAgIH0KLQotICAgIGNhc2UgRGF0YUZvcm1hdEpT
OiB7Ci0gICAgICAgIC8vIENoZWNrIHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2VyLiBOb3RlIHRoYXQg
d2Ugd291bGQgKmxpa2UqIHRvIHVuYm94IGFuIEludDUyCi0gICAgICAgIC8vIGF0IHRoaXMgcG9p
bnQgYnV0IHRoaXMgaXMgdG9vIGNvc3RseS4gV2Ugb25seSAqcHJvdmUqIHRoYXQgdGhpcyBpcyBh
biBJbnQ1MgotICAgICAgICAvLyBldmVuIHRob3VnaCB3ZSBjaGVjayBpZiBpdCdzIGFuIGludDMy
LgotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJlc3Vs
dDsKLSAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7Ci0gICAgICAgICAgICByZXN1
bHQgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICAg
ICAgcmVzdWx0ID0gZ3ByOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0eXBlICYgflNwZWNJbnQz
MikKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MocmVz
dWx0KSwgZWRnZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCByZXN1bHQs
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwotICAgICAgICBpZiAocmVzdWx0ID09
IGdwcikgLy8gVGhlIG5vdC1hbHJlYWR5LWxvY2tlZCwgc28gZmlsbCBpbi1wbGFjZSwgY2FzZS4K
LSAgICAgICAgICAgIGluZm8uZmlsbEludDUyKCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0
KTsKLSAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0LCByZXN1bHQpOwotICAg
ICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCi0gICAgICAgICAgICBt
X2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIHJl
c3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgY2FzZSBEYXRhRm9y
bWF0SW50MzI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjogewotICAgICAgICBHUFJSZWcg
Z3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJlc3VsdDsKLSAgICAgICAgaWYgKG1f
Z3Bycy5pc0xvY2tlZChncHIpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgpOwot
ICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICAgICAgaW5mby5maWxsSW50NTIo
Km1fc3RyZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOwotICAgICAgICAgICAgcmVzdWx0ID0gZ3By
OworICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpIHsK
KyAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCisgICAgICAg
ICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRB
bW91bnQpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NTIoKm1fc3RyZWFt
LCBncHIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAgICAgICAgfQotICAgICAgICBtX2pp
dC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHQsIHJlc3VsdCk7Ci0gICAgICAgIGlmIChkZXNpcmVk
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikKLSAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgcmVzdWx0KTsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJp
Y3RJbnQ1MikKKyAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjppbnQ1MlNoaWZ0QW1vdW50KSwgZ3ByKTsKKyAgICAgICAgaW5mby5maWxsSW50NTIoKm1fc3Ry
ZWFtLCBncHIpOworICAgICAgICByZXR1cm4gZ3ByOwogICAgIH0KIAogICAgIGNhc2UgRGF0YUZv
cm1hdFN0cmljdEludDUyOiB7CkBAIC0xMTE2LDMxICs5NDksNiBAQCBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ1CiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQogCi0g
ICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgot
ICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewotICAgICAgICAgICAgSlNWYWx1ZSBq
c1ZhbHVlID0gdmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpOwotICAgICAgICAgICAgaWYg
KGpzVmFsdWUuaXNNYWNoaW5lSW50KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVl
ID0ganNWYWx1ZS5hc01hY2hpbmVJbnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoZGVzaXJlZEZv
cm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFs
dWUgPDwgSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudDsKLSAgICAgICAgICAgICAgICBHUFJSZWcg
Z3ByID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1i
bGVyOjpJbW02NCh2YWx1ZSksIGdwcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIERh
dGFGb3JtYXRDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46Ci0gICAgY2FzZSBEYXRh
Rm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogewotICAgICAgICB0
ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwg
MCk7Ci0gICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwotICAgIH0KLQotICAgIGNhc2UgRGF0YUZv
cm1hdFN0b3JhZ2U6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOwpAQCAtMTE1MCw4ICs5NTgsOCBAQCBHUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ1CiBGUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUoRWRnZSBlZGdlKQogewogICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwotICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSB2YWx1ZS5tX3R5cGU7Ci0gICAgQVNTRVJUKGVkZ2UudXNlS2luZCgpICE9IEtub3duTnVtYmVy
VXNlIHx8ICEodmFsdWUubV90eXBlICYgflNwZWNGdWxsTnVtYmVyKSk7CisgICAgQVNTRVJUKGVk
Z2UudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSB8fCBlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVS
ZXBSZWFsVXNlKTsKKyAgICBBU1NFUlQoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpOwogICAgIG1f
aW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjRnVsbE51bWJlcik7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOwogICAgIEdl
bmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZp
cnR1YWxSZWdpc3Rlcik7CkBAIC0xMTYwLDE3ICs5NjgsNiBAQCBGUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7
CiAgICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKIAotICAgICAgICAgICAgaWYg
KGlzSW50MzJDb25zdGFudChlZGdlLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBGUFJSZWcg
ZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNz
ZW1ibGVyOjpJbW02NChyZWludGVycHJldERvdWJsZVRvSW50NjQoc3RhdGljX2Nhc3Q8ZG91Ymxl
Pih2YWx1ZU9mSW50MzJDb25zdGFudChlZGdlLm5vZGUoKSkpKSksIGdwcik7Ci0gICAgICAgICAg
ICAgICAgbV9qaXQubW92ZTY0VG9Eb3VibGUoZ3ByLCBmcHIpOwotICAgICAgICAgICAgICAgIHVu
bG9jayhncHIpOwotCi0gICAgICAgICAgICAgICAgLy8gRG9uJ3QgZmlsbCBkb3VibGUgaGVyZSBz
aW5jZSB0aGF0IHdpbGwgbGVhZCB0byBjb25mdXNpb246IHRoZQotICAgICAgICAgICAgICAgIC8v
IHJlZ2lzdGVyIGFsbG9jYXRvciB3aWxsIG5vdyB0aGluayB0aGF0IHRoaXMgaXMgYSBkb3VibGUg
d2hpbGUKLSAgICAgICAgICAgICAgICAvLyBldmVyeW9uZSBlbHNlIHRoaW5rcyBpdCdzIGFuIGlu
dGVnZXIuCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZwcjsKLSAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmIChpc051bWJlckNvbnN0YW50KGVkZ2Uubm9kZSgpKSkgewogICAgICAgICAgICAg
ICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwogICAgICAgICAgICAgICAgIG1faml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHJlaW50ZXJwcmV0RG91YmxlVG9JbnQ2NCh2YWx1ZU9m
TnVtYmVyQ29uc3RhbnQoZWRnZS5ub2RlKCkpKSksIGdwcik7CkBAIC0xMTg2LDE1OSArOTgzLDE4
IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3Jt
YXQoKTsKLSAgICAgICAgc3dpdGNoIChzcGlsbEZvcm1hdCkgewotICAgICAgICBjYXNlIERhdGFG
b3JtYXREb3VibGU6IHsKLSAgICAgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwot
ICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCBmcHIpOwotICAgICAgICAgICAgbV9mcHJzLnJldGFpbihmcHIsIHZpcnR1
YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7Ci0gICAgICAgICAgICBpbmZvLmZpbGxEb3Vi
bGUoKm1fc3RyZWFtLCBmcHIpOwotICAgICAgICAgICAgcmV0dXJuIGZwcjsKLSAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOiB7Ci0gICAgICAgICAg
ICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9n
cHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwotICAg
ICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdp
c3RlciksIGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQzMigqbV9zdHJlYW0sIGdwcik7
Ci0gICAgICAgICAgICB1bmxvY2soZ3ByKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6IHsKLSAgICAgICAg
ICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9ncHJzLnJldGFpbihn
cHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwotICAgICAgICAgICAgbV9q
aXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7
Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAg
ICB1bmxvY2soZ3ByKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAg
ICAKLSAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKLSAgICAgICAgICAgIEdQ
UlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZp
cnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwotICAgICAgICAgICAgbV9qaXQubG9h
ZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAg
ICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ1MigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAg
ICB1bmxvY2soZ3ByKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotCi0gICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUyk7Ci0gICAgICAg
ICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxl
ZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3Ry
ZWFtLCBncHIsIHNwaWxsRm9ybWF0KTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKGluZm8ucmVnaXN0
ZXJGb3JtYXQoKSkgewotICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IC8vIFNob3VsZCBoYXZlIGZp
bGxlZCwgYWJvdmUuCi0gICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjogLy8gVGhpcyB0eXBlIG5l
dmVyIG9jY3Vycy4KLSAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgotICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKLSAgICAg
ICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdz
KCksIDApOwotICAgICAgICByZXR1cm4gZnByQWxsb2NhdGUoKTsKLQotICAgIGNhc2UgRGF0YUZv
cm1hdEpTQ2VsbDoKLSAgICBjYXNlIERhdGFGb3JtYXRKUzoKLSAgICBjYXNlIERhdGFGb3JtYXRK
U0Jvb2xlYW46IHsKLSAgICAgICAgR1BSUmVnIGpzVmFsdWVHcHIgPSBpbmZvLmdwcigpOwotICAg
ICAgICBtX2dwcnMubG9jayhqc1ZhbHVlR3ByKTsKLSAgICAgICAgRlBSUmVnIGZwciA9IGZwckFs
bG9jYXRlKCk7Ci0gICAgICAgIEdQUlJlZyB0ZW1wR3ByID0gYWxsb2NhdGUoKTsKLQotICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLCBqc1ZhbHVlR3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIpOwotCi0gICAgICAgIGlmICh0eXBlICYgflNwZWNGdWxsTnVtYmVyKQotICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhqc1ZhbHVlR3ByKSwgZWRn
ZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBqc1ZhbHVlR3ByLCBH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKLQotICAgICAgICAvLyBGaXJzdCwgaWYg
d2UgZ2V0IGhlcmUgd2UgaGF2ZSBhIGRvdWJsZSBlbmNvZGVkIGFzIGEgSlNWYWx1ZQotICAgICAg
ICBtX2ppdC5tb3ZlKGpzVmFsdWVHcHIsIHRlbXBHcHIpOwotICAgICAgICB1bmJveERvdWJsZSh0
ZW1wR3ByLCBmcHIpOwotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBoYXNVbmJveGVkRG91Ymxl
ID0gbV9qaXQuanVtcCgpOwotCi0gICAgICAgIC8vIEZpbmFsbHksIGhhbmRsZSBpbnRlZ2Vycy4K
LSAgICAgICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQuY29udmVydElu
dDMyVG9Eb3VibGUoanNWYWx1ZUdwciwgZnByKTsKLSAgICAgICAgaGFzVW5ib3hlZERvdWJsZS5s
aW5rKCZtX2ppdCk7Ci0KLSAgICAgICAgbV9ncHJzLnJlbGVhc2UoanNWYWx1ZUdwcik7Ci0gICAg
ICAgIG1fZ3Bycy51bmxvY2soanNWYWx1ZUdwcik7Ci0gICAgICAgIG1fZ3Bycy51bmxvY2sodGVt
cEdwcik7Ci0gICAgICAgIG1fZnBycy5yZXRhaW4oZnByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxs
T3JkZXJEb3VibGUpOwotICAgICAgICBpbmZvLmZpbGxEb3VibGUoKm1fc3RyZWFtLCBmcHIpOwot
ICAgICAgICBpbmZvLmtpbGxTcGlsbGVkKCk7Ci0gICAgICAgIHJldHVybiBmcHI7Ci0gICAgfQot
Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjog
ewotICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BSUmVnIGdw
ciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgIG1faml0
LmNvbnZlcnRJbnQzMlRvRG91YmxlKGdwciwgZnByKTsKLSAgICAgICAgbV9ncHJzLnVubG9jayhn
cHIpOwotICAgICAgICByZXR1cm4gZnByOwotICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBEYXRh
Rm9ybWF0SW50NTI6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgPT0gRGF0
YUZvcm1hdERvdWJsZSk7CiAgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAg
ICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsK
LSAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOwotICAgICAgICBtX2ppdC5tb3ZlKGdw
ciwgdGVtcCk7Ci0gICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpp
bnQ1MlNoaWZ0QW1vdW50KSwgdGVtcCk7Ci0gICAgICAgIG1faml0LmNvbnZlcnRJbnQ2NFRvRG91
YmxlKHRlbXAsIGZwcik7Ci0gICAgICAgIHVubG9jayh0ZW1wKTsKLSAgICAgICAgbV9ncHJzLnVu
bG9jayhncHIpOwotICAgICAgICByZXR1cm4gZnByOwotICAgIH0KLSAgICAgICAgCi0gICAgY2Fz
ZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKLSAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9j
YXRlKCk7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBtX2dwcnMu
bG9jayhncHIpOwotICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZShncHIsIGZwcik7
Ci0gICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKLSAgICAgICAgcmV0dXJuIGZwcjsKLSAgICB9
Ci0KLSAgICAvLyBVbmJveCB0aGUgZG91YmxlCi0gICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6
IHsKLSAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIEZQUlJlZyBmcHIg
PSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGdwcikpIHsKLSAg
ICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCB0cmFtcGxlIGdwciBpZiBpdCBpcyBpbiB1
c2UuCi0gICAgICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBt
X2ppdC5tb3ZlKGdwciwgdGVtcCk7Ci0gICAgICAgICAgICB1bmJveERvdWJsZSh0ZW1wLCBmcHIp
OwotICAgICAgICAgICAgdW5sb2NrKHRlbXApOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IHVuYm94RG91YmxlKGdwciwgZnByKTsKLQotICAgICAgICBtX2dwcnMucmVsZWFzZShncHIpOwor
ICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxS
ZWdpc3RlciksIGZwcik7CiAgICAgICAgIG1fZnBycy5yZXRhaW4oZnByLCB2aXJ0dWFsUmVnaXN0
ZXIsIFNwaWxsT3JkZXJEb3VibGUpOwotCiAgICAgICAgIGluZm8uZmlsbERvdWJsZSgqbV9zdHJl
YW0sIGZwcik7CiAgICAgICAgIHJldHVybiBmcHI7CiAgICAgfQogCi0gICAgY2FzZSBEYXRhRm9y
bWF0RG91YmxlOiB7Ci0gICAgICAgIEZQUlJlZyBmcHIgPSBpbmZvLmZwcigpOwotICAgICAgICBt
X2ZwcnMubG9jayhmcHIpOwotICAgICAgICByZXR1cm4gZnByOwotICAgIH0KLSAgICAgICAgCi0g
ICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIEludmFsaWRGUFJSZWc7Ci0gICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKGluZm8u
cmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKTsKKyAgICBGUFJSZWcgZnByID0g
aW5mby5mcHIoKTsKKyAgICBtX2ZwcnMubG9jayhmcHIpOworICAgIHJldHVybiBmcHI7CiB9CiAK
IEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSBlZGdlKQpAQCAt
MTM1MiwxMSArMTAwOCw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNl
bGwKIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2FzZSBEYXRh
Rm9ybWF0Tm9uZTogewotICAgICAgICBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3Jt
YXRJbnQzMiB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAg
ICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIDApOwotICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7Ci0gICAgICAgIH0K
LSAgICAgICAgCiAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwogCiAgICAgICAgIGlm
IChlZGdlLT5oYXNDb25zdGFudCgpKSB7CkBAIC0xNDA1LDE2ICsxMDU2LDE2IEBAIEdQUlJlZyBT
cGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICBjYXNlIERhdGFGb3JtYXRKU0lu
dDMyOgogICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91
YmxlOgotICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0Jv
b2xlYW46Ci0gICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRJ
bnQ1MjoKLSAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjogeworICAgIGNhc2UgRGF0YUZv
cm1hdEJvb2xlYW46IHsKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5j
b3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsK
ICAgICB9CiAKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0
U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRT
dHJpY3RJbnQ1MjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgCiAgICAgZGVmYXVsdDoKQEAgLTE0MzMsNyArMTA4NCw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1h
dCgpKSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewotICAgICAgICBpZiAoaW5mby5zcGls
bEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMiB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0
YUZvcm1hdERvdWJsZSkgeworICAgICAgICBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFG
b3JtYXRJbnQzMikgewogICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24o
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAgICAgICAgcmV0dXJuIGFsbG9j
YXRlKCk7CiAgICAgICAgIH0KQEAgLTE0ODcsMTYgKzExMzgsMTUgQEAgR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAg
ICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0g
ICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKICAg
ICBjYXNlIERhdGFGb3JtYXRDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAgIGNh
c2UgRGF0YUZvcm1hdFN0cmljdEludDUyOiB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZl
RXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJu
IGFsbG9jYXRlKCk7Ci0gICAgfQogICAgICAgICAKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6
CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoK
KyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTE1MDUsMjYgKzExNTUs
NiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAgICAgfQogfQog
Ci1KSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6Y29udmVydFRvRG91YmxlKEdQUlJl
ZyB2YWx1ZSwgRlBSUmVnIHJlc3VsdCwgR1BSUmVnIHRtcCkKLXsKLSAgICBKSVRDb21waWxlcjo6
SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVx
dWFsLCB2YWx1ZSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAKLSAgICBK
SVRDb21waWxlcjo6SnVtcCBub3ROdW1iZXIgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIHZhbHVlLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAg
IAotICAgIG1faml0Lm1vdmUodmFsdWUsIHRtcCk7Ci0gICAgdW5ib3hEb3VibGUodG1wLCByZXN1
bHQpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7Ci0g
ICAgCi0gICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsKLSAgICAKLSAgICBtX2ppdC5jb252ZXJ0
SW50MzJUb0RvdWJsZSh2YWx1ZSwgcmVzdWx0KTsKLSAgICAKLSAgICBkb25lLmxpbmsoJm1faml0
KTsKLQotICAgIHJldHVybiBub3ROdW1iZXI7Ci19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVCYXNlVmFsdWVTdG9yZUJhcnJpZXIoRWRnZSYgYmFzZUVkZ2UsIEVkZ2UmIHZhbHVlRWRn
ZSkKIHsKICNpZiBFTkFCTEUoR0dDKQpAQCAtMTkyMSw3ICsxNTUxLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTgogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
ICAgICAKLSAgICBjYXNlIE51bWJlclVzZTogeworICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAg
ICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTIwNjAsNyArMTY5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRCcmFuY2goTm9kZSogbm8KICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgSW50MzJV
c2U6Ci0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEludDMyVXNlKSB7CiAgICAgICAg
ICAgICBib29sIGludmVydCA9IGZhbHNlOwogICAgICAgICAgICAgCkBAIC0yMTUzLDYgKzE3ODMs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBzd2l0
Y2ggKG9wKSB7CiAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6
CisgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICBpbml0Q29uc3RhbnRJbmZvKG5vZGUp
OwogICAgICAgICBicmVhazsKIApAQCAtMjQwMCwyNCArMjAzMiwyMyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgCi0gICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7Ci0gICAgICAgIGNvbXBpbGVJbnQzMlRvRG91
YmxlKG5vZGUpOworICAgIGNhc2UgRG91YmxlUmVwOiB7CisgICAgICAgIGNvbXBpbGVEb3VibGVS
ZXAobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBJbnQ1
MlRvVmFsdWU6IHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIG9wZXJh
bmQpOwotICAgICAgICBtX2ppdC5tb3ZlKG9wZXJhbmQuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0g
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKKyAgICBjYXNlIFZhbHVl
UmVwOiB7CisgICAgICAgIGNvbXBpbGVWYWx1ZVJlcChub2RlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAKLSAgICBjYXNlIEludDUyVG9Eb3VibGU6IHsKLSAgICAgICAgU3BlY3Vs
YXRlRG91YmxlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
RlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcGVyYW5kKTsKLSAgICAgICAgbV9qaXQubW92ZURv
dWJsZShvcGVyYW5kLmZwcigpLCByZXN1bHQuZnByKCkpOwotICAgICAgICBkb3VibGVSZXN1bHQo
cmVzdWx0LmZwcigpLCBub2RlKTsKKyAgICBjYXNlIEludDUyUmVwOiB7CisgICAgICAgIFNwZWN1
bGF0ZUludDMyT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3BlcmFuZCk7CisgICAgICAgIAorICAg
ICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihvcGVyYW5kLmdwcigpLCByZXN1bHQuZ3ByKCkp
OworICAgICAgICAKKyAgICAgICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0LmdwcigpLCBub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTI0ODYsNyArMjExNyw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAg
ICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3Bl
cmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgRlBSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIApAQCAtMjUyNCw3ICsyMTU1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNh
c2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9w
MSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVy
YW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBGUFJUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMsIG9wMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
Miw4ICszMzIsNiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAg
ICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpIHsKICAgICAg
ICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpCiAgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0
SW50NTJDb25zdGFudDsKLSAgICAgICAgZWxzZSBpZiAoaXNKU0ludDMyKGluZm8uc3BpbGxGb3Jt
YXQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRKUykKLSAgICAgICAgICAg
IGZpbGxBY3Rpb24gPSBMb2FkMzJQYXlsb2FkQ29udmVydFRvSW50NTI7CiAgICAgICAgIGVsc2Ug
aWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50NTIpCiAgICAgICAgICAgICBm
aWxsQWN0aW9uID0gTG9hZDY0OwogICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdFN0cmljdEludDUyKQpAQCAtMzQxLDE3ICszMzksMTIgQEAgU2lsZW50UmVn
aXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgICAgICBlbHNlIGlmIChpbmZvLnNw
aWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUpCiAgICAgICAgICAgICBmaWxsQWN0aW9uID0g
TG9hZDY0OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBw
ZW4uIEFueXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFzIGFuIGludDMyIHdpbGwgbmV2ZXIKLSAgICAg
ICAgICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEgY2VsbCAoaW1tZWRpYXRlIHNwZWMgZmFpbCkgb3Ig
YSBkb3VibGUgKHRvLWRvdWJsZQotICAgICAgICAgICAgLy8gY29udmVyc2lvbnMgaW52b2x2ZSBh
IHNlcGFyYXRlIG5vZGUpLgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7IC8vIE1ha2UgR0NDIGhhcHB5Lgog
ICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3Ry
aWN0SW50NTIpIHsKICAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpCiAgICAgICAgICAg
ICBmaWxsQWN0aW9uID0gU2V0U3RyaWN0SW50NTJDb25zdGFudDsKLSAgICAgICAgZWxzZSBpZiAo
aXNKU0ludDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERh
dGFGb3JtYXRKUykKLSAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkMzJQYXlsb2FkU2lnbkV4
dGVuZDsKICAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJ
bnQ1MikKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjRTaGlmdEludDUyUmlnaHQ7CiAg
ICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50
NTIpCkBAIC0zNTksOSArMzUyLDYgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2
ZUpJVDo6cwogICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1h
dE5vbmUpCiAgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OwogICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uIEFueXRoaW5nIHRoYXQgcXVhbGlm
aWVzIGFzIGFuIGludDMyIHdpbGwgbmV2ZXIKLSAgICAgICAgICAgIC8vIGJlIHR1cm5lZCBpbnRv
IGEgY2VsbCAoaW1tZWRpYXRlIHNwZWMgZmFpbCkgb3IgYSBkb3VibGUgKHRvLWRvdWJsZQotICAg
ICAgICAgICAgLy8gY29udmVyc2lvbnMgaW52b2x2ZSBhIHNlcGFyYXRlIG5vZGUpLgogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGZpbGxBY3Rp
b24gPSBMb2FkNjQ7IC8vIE1ha2UgR0NDIGhhcHB5LgogICAgICAgICB9CkBAIC0zNzYsOSArMzY2
LDYgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgICAgICB9
IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50MzIpIHsKICAgICAg
ICAgICAgIEFTU0VSVChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0SlNJbnQzMik7CiAgICAg
ICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDMyUGF5bG9hZEJveEludDsKLSAgICAgICAgfSBlbHNl
IGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAgICAgICAg
ICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRKU0RvdWJsZSk7Ci0gICAgICAg
ICAgICBmaWxsQWN0aW9uID0gTG9hZERvdWJsZUJveERvdWJsZTsKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OwogI2Vsc2UKQEAgLTQzNCwxNCArNDIxLDEy
IEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4gU3BlY3VsYXRpdmVKSVQ6OnMKICAgICBpZiAobm9k
ZS0+aGFzQ29uc3RhbnQoKSkgewogICAgICAgICBBU1NFUlQoaXNOdW1iZXJDb25zdGFudChub2Rl
KSk7CiAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXREb3VibGVDb25zdGFudDsKLSAgICB9IGVsc2Ug
aWYgKGluZm8uc3BpbGxGb3JtYXQoKSAhPSBEYXRhRm9ybWF0Tm9uZSAmJiBpbmZvLnNwaWxsRm9y
bWF0KCkgIT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAgICAgICAvLyBpdCB3YXMgYWxyZWFkeSBz
cGlsbGVkIHByZXZpb3VzbHkgYW5kIG5vdCBhcyBhIGRvdWJsZSwgd2hpY2ggbWVhbnMgd2UgbmVl
ZCB1bmJveGluZy4KLSAgICAgICAgQVNTRVJUKGluZm8uc3BpbGxGb3JtYXQoKSAmIERhdGFGb3Jt
YXRKUyk7Ci0gICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkSlNVbmJveERvdWJsZTsKLSAgICB9IGVs
c2UKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoaW5mby5zcGlsbEZvcm1hdCgpID09IERh
dGFGb3JtYXROb25lIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKTsK
ICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWREb3VibGU7CisgICAgfQogI2VsaWYgVVNFKEpTVkFM
VUUzMl82NCkKLSAgICBBU1NFUlQoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXRE
b3VibGUgfHwgaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXRKU0RvdWJsZSk7Cisg
ICAgQVNTRVJUKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKTsKICAg
ICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkgewogICAgICAgICBBU1NFUlQoaXNOdW1iZXJDb25z
dGFudChub2RlKSk7CiAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXREb3VibGVDb25zdGFudDsKQEAg
LTUyOCwxNCArNTEzLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25zdCBT
aQogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IocGxhbi5ub2Rl
KCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIG1faml0LnNpZ25F
eHRlbmQzMlRvUHRyKHBsYW4uZ3ByKCksIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIExvYWREb3VibGVCb3hEb3VibGU6Ci0gICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21w
aWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdw
cigpKTsKLSAgICAgICAgbV9qaXQuc3ViNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
LCBwbGFuLmdwcigpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMb2FkSlNVbmJveERvdWJs
ZToKLSAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9k
ZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIGNhblRyYW1wbGUpOwotICAgICAgICB1bmJveERvdWJs
ZShjYW5UcmFtcGxlLCBwbGFuLmZwcigpKTsKLSAgICAgICAgYnJlYWs7CiAjZWxzZQogICAgIGNh
c2UgU2V0SlNDb25zdGFudFRhZzoKICAgICAgICAgbV9qaXQubW92ZShJbW0zMih2YWx1ZU9mSlND
b25zdGFudChwbGFuLm5vZGUoKSkudGFnKCkpLCBwbGFuLmdwcigpKTsKQEAgLTEwMzksNiArMTAx
NiwyOSBAQCBHUFJUZW1wb3Jhcnk6OkdQUlRlbXBvcmFyeSgKIH0KICNlbmRpZiAvLyBVU0UoSlNW
QUxVRTMyXzY0KQogCitKU1ZhbHVlUmVnc1RlbXBvcmFyeTo6SlNWYWx1ZVJlZ3NUZW1wb3Jhcnko
KSB7IH0KKworSlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6OkpTVmFsdWVSZWdzVGVtcG9yYXJ5KFNwZWN1
bGF0aXZlSklUKiBqaXQpCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICA6IG1fZ3ByKGppdCkKKyNl
bHNlCisgICAgOiBtX3BheWxvYWRHUFIoaml0KQorICAgICwgbV90YWdHUFIoaml0KQorI2VuZGlm
Cit7Cit9CisKK0pTVmFsdWVSZWdzVGVtcG9yYXJ5Ojp+SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoKSB7
IH0KKworSlNWYWx1ZVJlZ3MgSlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6OnJlZ3MoKQoreworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIEpTVmFsdWVSZWdzKG1fZ3ByLmdwcigpKTsKKyNlbHNl
CisgICAgcmV0dXJuIEpTVmFsdWVSZWdzKG1fdGFnR1BSLmdwcigpLCBtX3BheWxvYWRHUFIuZ3By
KCkpOworI2VuZGlmCit9CisKIHZvaWQgR1BSVGVtcG9yYXJ5OjphZG9wdChHUFJUZW1wb3Jhcnkm
IG90aGVyKQogewogICAgIEFTU0VSVCghbV9qaXQpOwpAQCAtMTI1OCwxMCArMTI1OCwxMCBAQCBi
b29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuCiAgICAgICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xl
SW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKICNpZiBVU0UoSlNWQUxV
RTY0KQotICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVz
ZSkpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkp
CiAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQ1MkJyYW5jaChub2RlLCBicmFuY2hOb2Rl
LCBjb25kaXRpb24pOwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGVsc2UgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKQorICAgICAgICBlbHNlIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQZWVw
SG9sZURvdWJsZUJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBkb3VibGVDb25kaXRpb24pOwogICAg
ICAgICBlbHNlIGlmIChub2RlLT5vcCgpID09IENvbXBhcmVFcSkgewogICAgICAgICAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChTdHJpbmdJZGVudFVzZSkpIHsKQEAgLTE4MTcsMTYgKzE4MTcsMTMgQEAgR2VuZXJhdGVkT3Bl
cmFuZFR5cGUgU3BlY3VsYXRpdmVKSVQ6OmNoZQogICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoK
ICAgICBjYXNlIERhdGFGb3JtYXRKUzoKICAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46Cisg
ICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAgICAgICAgIHJldHVybiBHZW5lcmF0ZWRPcGVy
YW5kSlNWYWx1ZTsKIAogICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRh
Rm9ybWF0SW50MzI6CiAgICAgICAgIHJldHVybiBHZW5lcmF0ZWRPcGVyYW5kSW50ZWdlcjsKIAot
ICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgotICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToK
LSAgICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmREb3VibGU7Ci0gICAgICAgIAogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybiBHZW5lcmF0ZWRPcGVyYW5kVHlwZVVua25vd247CkBAIC0xODQ1LDcgKzE4NDIsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAgICAgfQogICAgICAgICAK
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgIGNhc2Ug
SW50NTJSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIG9wMSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywg
UmV1c2UsIG9wMSk7CiAgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CkBAIC0xODU1
LDYgKzE4NTIsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgog
ICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
IAorICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgRlBSUmVnIGZwciA9IG9wMS5mcHIoKTsKKyAgICAgICAgR1BSUmVn
IGdwciA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90VHJ1bmNh
dGVkVG9JbnRlZ2VyID0gbV9qaXQuYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKGZwciwgZ3By
LCBKSVRDb21waWxlcjo6QnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCk7CisgICAgICAgIAorICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobm90VHJ1bmNhdGVkVG9JbnRlZ2Vy
LCB0aGlzLCB0b0ludDMyLCBncHIsIGZwcikpOworICAgICAgICAKKyAgICAgICAgaW50MzJSZXN1
bHQoZ3ByLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAKICAgICBjYXNlIE51
bWJlclVzZToKICAgICBjYXNlIE5vdENlbGxVc2U6IHsKQEAgLTE4NjYsMTggKzE4NzYsNiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAgICAgICAgICAgICBpbnQz
MlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIG9wMS5mb3JtYXQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBHZW5lcmF0ZWRPcGVyYW5kRG91YmxlOiB7
Ci0gICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgU3Bl
Y3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7Ci0gICAgICAgICAgICBGUFJSZWcgZnByID0gb3AxLmZwcigpOwotICAg
ICAgICAgICAgR1BSUmVnIGdwciA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIG5vdFRydW5jYXRlZFRvSW50ZWdlciA9IG1faml0LmJyYW5jaFRydW5jYXRlRG91
YmxlVG9JbnQzMihmcHIsIGdwciwgSklUQ29tcGlsZXI6OkJyYW5jaElmVHJ1bmNhdGVGYWlsZWQp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwobm90VHJ1bmNhdGVkVG9JbnRlZ2VyLCB0aGlzLCB0b0ludDMyLCBncHIsIGZwcikpOwot
Ci0gICAgICAgICAgICBpbnQzMlJlc3VsdChncHIsIG5vZGUpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9CiAgICAgICAgIGNhc2UgR2VuZXJhdGVkT3BlcmFuZEpTVmFsdWU6IHsKICAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
QEAgLTIwNjYsNzAgKzIwNjQsMTMxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3Vi
bGVBc0ludDMKICAgICBpbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW50MzJUb0RvdWJsZShOb2RlKiBub2RlKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcChOb2RlKiBub2RlKQogewotICAgIEFTU0VSVCgh
aXNJbnQzMkNvbnN0YW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpOyAvLyBUaGlzIHNob3VsZCBo
YXZlIGJlZW4gY29uc3RhbnQgZm9sZGVkLgorICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpKSB7CisgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgQVNTRVJUKCFpc051bWJl
ckNvbnN0YW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpOyAvLyBUaGlzIHNob3VsZCBoYXZlIGJl
ZW4gY29uc3RhbnQgZm9sZGVkLgogICAgIAotICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKSB7Ci0gICAgICAgIFNwZWN1bGF0
ZUludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7Ci0gICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgIG1f
aml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMS5ncHIoKSwgcmVzdWx0LmZwcigpKTsKLSAgICAg
ICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5tX3R5cGUpKSB7CisgICAgICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
ICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAgIG1faml0LmNv
bnZlcnRJbnQzMlRvRG91YmxlKG9wMS5ncHIoKSwgcmVzdWx0LmZwcigpKTsKKyAgICAgICAgICAg
IGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAgICAgCi0gICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxk
MSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwotICAgIEZQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRo
aXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKIAotICAgIEdQUlJlZyBvcDFH
UFIgPSBvcDEuZ3ByKCk7Ci0gICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwotICAgIEZQ
UlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CisgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBv
cDEuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICAgICAg
RlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKICAgICAKLSAgICBKSVRDb21waWxlcjo6
SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwor
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NCgKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMUdQUiwgR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAgICAKLSAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9k
ZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyKSkgewotICAgICAgICB0eXBlQ2hlY2soCi0gICAg
ICAgICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1i
ZXIsCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7Ci0gICAgfQorICAgICAg
ICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNCeXRlY29kZU51bWJlcikp
IHsKKyAgICAgICAgICAgIHR5cGVDaGVjaygKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhv
cDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0J5dGVjb2RlTnVtYmVyLAorICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgb3AxR1BSLCBHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgfQogICAgIAotICAgIG1faml0
Lm1vdmUob3AxR1BSLCB0ZW1wR1BSKTsKLSAgICB1bmJveERvdWJsZSh0ZW1wR1BSLCByZXN1bHRG
UFIpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAg
IG1faml0Lm1vdmUob3AxR1BSLCB0ZW1wR1BSKTsKKyAgICAgICAgdW5ib3hEb3VibGUodGVtcEdQ
UiwgcmVzdWx0RlBSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1
bXAoKTsKICAgICAKLSAgICBpc0ludGVnZXIubGluaygmbV9qaXQpOwotICAgIG1faml0LmNvbnZl
cnRJbnQzMlRvRG91YmxlKG9wMUdQUiwgcmVzdWx0RlBSKTsKLSAgICBkb25lLmxpbmsoJm1faml0
KTsKLSNlbHNlCi0gICAgRlBSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIGlzSW50ZWdl
ci5saW5rKCZtX2ppdCk7CisgICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMUdQ
UiwgcmVzdWx0RlBSKTsKKyAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisjZWxzZSAvLyBVU0Uo
SlNWQUxVRTY0KSAtPiB0aGlzIGlzIHRoZSAzMl82NCBjYXNlCisgICAgICAgIEZQUlRlbXBvcmFy
eSB0ZW1wKHRoaXMpOwogICAgIAotICAgIEdQUlJlZyBvcDFUYWdHUFIgPSBvcDEudGFnR1BSKCk7
Ci0gICAgR1BSUmVnIG9wMVBheWxvYWRHUFIgPSBvcDEucGF5bG9hZEdQUigpOwotICAgIEZQUlJl
ZyB0ZW1wRlBSID0gdGVtcC5mcHIoKTsKLSAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZw
cigpOworICAgICAgICBHUFJSZWcgb3AxVGFnR1BSID0gb3AxLnRhZ0dQUigpOworICAgICAgICBH
UFJSZWcgb3AxUGF5bG9hZEdQUiA9IG9wMS5wYXlsb2FkR1BSKCk7CisgICAgICAgIEZQUlJlZyB0
ZW1wRlBSID0gdGVtcC5mcHIoKTsKKyAgICAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5m
cHIoKTsKICAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFu
Y2gzMigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0lu
dGVnZXIgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKICAgICAKLSAg
ICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyKSkgewot
ICAgICAgICB0eXBlQ2hlY2soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9w
MVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCi0gICAgICAgICAg
ICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcDFUYWdHUFIs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7Ci0gICAgfQorICAgICAgICBpZiAo
bmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNCeXRlY29kZU51bWJlcikpIHsKKyAg
ICAgICAgICAgIHR5cGVDaGVjaygKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFUYWdH
UFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0J5dGVjb2RlTnVtYmVyLAor
ICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1
YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKKyAgICAg
ICAgfQogICAgIAotICAgIHVuYm94RG91YmxlKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiwgcmVz
dWx0RlBSLCB0ZW1wRlBSKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVt
cCgpOworICAgICAgICB1bmJveERvdWJsZShvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIsIHJlc3Vs
dEZQUiwgdGVtcEZQUik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5q
dW1wKCk7CiAgICAgCi0gICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsKLSAgICBtX2ppdC5jb252
ZXJ0SW50MzJUb0RvdWJsZShvcDFQYXlsb2FkR1BSLCByZXN1bHRGUFIpOwotICAgIGRvbmUubGlu
aygmbV9qaXQpOwotI2VuZGlmCisgICAgICAgIGlzSW50ZWdlci5saW5rKCZtX2ppdCk7CisgICAg
ICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMVBheWxvYWRHUFIsIHJlc3VsdEZQUik7
CisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAg
ICAgCi0gICAgZG91YmxlUmVzdWx0KHJlc3VsdEZQUiwgbm9kZSk7CisgICAgICAgIGRvdWJsZVJl
c3VsdChyZXN1bHRGUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKKyAgICAgICAgU3Bl
Y3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIEdQUlJl
ZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVz
dWx0LmZwcigpOworCisgICAgICAgIG1faml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHZhbHVlR1BS
LCByZXN1bHRGUFIpOworICAgICAgICAKKyAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdEZQUiwg
bm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVZhbHVlUmVwKE5vZGUqIG5vZGUpCit7CisgICAgc3dpdGNoIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTogeworICAgICAgICBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNW
YWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAKKyAgICAgICAgRlBSUmVn
IHZhbHVlRlBSID0gdmFsdWUuZnByKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOworICAgICAgICAKKyAgICAgICAgYm94RG91YmxlKHZhbHVlRlBSLCBy
ZXN1bHRSZWdzKTsKKyAgICAgICAgCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1
Mk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOworICAgICAgICAKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFs
dWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAg
ICAgIAorICAgICAgICBib3hJbnQ1Mih2YWx1ZUdQUiwgcmVzdWx0R1BSLCBEYXRhRm9ybWF0SW50
NTIpOworICAgICAgICAKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
IAorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiB9CiAKIHN0YXRpYyBkb3VibGUgY2xhbXBEb3VibGVUb0J5
dGUoZG91YmxlIGQpCkBAIC0yMzIwLDcgKzIzNzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlWYWxGb3JJCiAgICAgICAgIH0KICAgICAgICAgICAgIAogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICBjYXNlIEludDUy
UmVwVXNlOiB7CiAgICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgdmFsdWVP
cCh0aGlzLCB2YWx1ZVVzZSk7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKQEAgLTIz
NDQsNyArMjQwMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckkK
ICAgICAgICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAg
ICAgICAgIGlmIChpc0NsYW1wZWQodHlwZSkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZWxl
bWVudFNpemUodHlwZSkgPT0gMSk7CiAgICAgICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3Bl
cmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNlKTsKQEAgLTI0NDAsMTAgKzI0OTksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkZsCiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IG5vdE5hTiA9IG1faml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWws
IHJlc3VsdFJlZywgcmVzdWx0UmVnKTsKLSAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9IFFO
YU47Ci0gICAgbV9qaXQubG9hZERvdWJsZSgmTmFOLCByZXN1bHRSZWcpOwotICAgIG5vdE5hTi5s
aW5rKCZtX2ppdCk7CisgICAgbV9qaXQuc2FuaXRpemVEb3VibGUocmVzdWx0UmVnKTsKICAgICAK
ICAgICBkb3VibGVSZXN1bHQocmVzdWx0UmVnLCBub2RlKTsKIH0KQEAgLTI2NDEsNyArMjY5Nyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQoTm9kZSogbm8KICAgICB9CiAgICAg
ICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAg
Y2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICBBU1NFUlQoc2hvdWxkQ2hlY2tPdmVyZmxvdyhu
b2RlLT5hcml0aE1vZGUoKSkpOwogICAgICAgICBBU1NFUlQoIXNob3VsZENoZWNrTmVnYXRpdmVa
ZXJvKG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAKQEAgLTI2NzAsNyArMjcyNiw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQoTm9kZSogbm8KICAgICB9CiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKICAgICAKLSAgICBjYXNlIE51bWJlclVzZTogeworICAgIGNhc2UgRG91YmxlUmVw
VXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOwogICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSwgb3AyKTsK
QEAgLTI4MDcsNyArMjg2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1
YihOb2QKICAgICB9CiAgICAgICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY2FzZSBNYWNo
aW5lSW50VXNlOiB7CisgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICBBU1NFUlQoc2hv
dWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpOwogICAgICAgICBBU1NFUlQoIXNo
b3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAKQEAgLTI4MzYsNyAr
Mjg5Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2QKICAgICB9
CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAg
Y2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9w
Mih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhp
cywgb3AxKTsKQEAgLTI4ODEsNyArMjkzNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcml0aE5lZ2F0ZSgKICAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGNhc2UgTWFj
aGluZUludFVzZTogeworICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAgICAgICAgQVNTRVJUKHNo
b3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKTsKICAgICAgICAgCiAgICAgICAg
IGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50
NTIpKSB7CkBAIC0yOTE4LDcgKzI5NzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJpdGhOZWdhdGUoCiAgICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIAot
ICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAg
U3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAKQEAgLTI5NjksNyArMzAyNSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE11bChOb2QKICAgICB9CiAgICAg
CiAjaWYgVVNFKEpTVkFMVUU2NCkgICAKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICBj
YXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDaGVja092ZXJmbG93KG5v
ZGUtPmFyaXRoTW9kZSgpKSk7CiAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGlzIHN1cGVyIGNs
ZXZlci4gV2Ugd2FudCB0byBkbyBhbiBpbnQ1MiBtdWx0aXBsaWNhdGlvbiBhbmQgY2hlY2sgdGhl
CkBAIC0zMDI2LDcgKzMwODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhN
dWwoTm9kCiAgICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIAotICAgIGNh
c2UgTnVtYmVyVXNlOiB7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3BlY3Vs
YXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVj
dWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEZQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIpOwpAQCAtMzE5MCw3ICszMjQ2LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KE5vZAogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgY2FzZSBEb3VibGVS
ZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKQEAg
LTM0OTUsNyArMzU1MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZChO
b2QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBOdW1iZXJVc2U6
IHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9w
ZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgCkBAIC0zNTMwLDEzICsz
NTg2LDEzIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSogbm9kZSwKICAgICB9
CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE1hY2hpbmVJbnRVc2UpKSB7CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJl
cFVzZSkpIHsKICAgICAgICAgY29tcGlsZUludDUyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAg
ICAgCi0gICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CisgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVE
b3VibGVDb21wYXJlKG5vZGUsIGRvdWJsZUNvbmRpdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CkBAIC0zNjEwLDcgKzM2NjYsNyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlU3RyaWN0RXEoTm9kCiAgICAgfQogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpICAgCi0gICAg
aWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkgeworICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5j
aEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAgICAgIGlmIChicmFu
Y2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKICAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5v
ZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOwpAQCAtMzYyNiw3ICszNjgyLDcg
QEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZAogICAgIH0KICNlbmRp
ZiAvLyBVU0UoSlNWQUxVRTY0KQogCi0gICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1i
ZXJVc2UpKSB7CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpKSB7
CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJh
bmNoKCk7CiAgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKICAg
ICAgICAgICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxv
Y2spOwpAQCAtNDQ4NywzNiArNDU0MywzNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGVJbnQzMihFZGdlCiAgICAgKFNwZWN1bGF0ZUludDMyT3BlcmFuZCh0aGlzLCBlZGdlKSkuZ3By
KCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSBl
ZGdlKQotewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdl
LCBTcGVjTWFjaGluZUludCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICAoU3BlY3VsYXRl
V2hpY2hldmVySW50NTJPcGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKLSNlbHNlIC8vIFVTRShK
U1ZBTFVFNjQpCi0gICAgVU5VU0VEX1BBUkFNKGVkZ2UpOwotICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOwotI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCi19Ci0KIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZU51bWJlcihFZGdlIGVkZ2UpCiB7Ci0gICAgaWYgKCFuZWVkc1R5cGVD
aGVjayhlZGdlLCBTcGVjRnVsbE51bWJlcikpCisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdl
LCBTcGVjQnl0ZWNvZGVOdW1iZXIpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgKFNwZWN1
bGF0ZURvdWJsZU9wZXJhbmQodGhpcywgZWRnZSkpLmZwcigpOworICAgIEpTVmFsdWVPcGVyYW5k
IHZhbHVlKHRoaXMsIGVkZ2UpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgR1BSUmVnIGdwciA9
IHZhbHVlLmdwcigpOworICAgIHR5cGVDaGVjaygKKyAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwg
ZWRnZSwgU3BlY0J5dGVjb2RlTnVtYmVyLAorICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFj
cm9Bc3NlbWJsZXI6Olplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7
CisjZWxzZQorICAgIEdQUlJlZyB0YWdHUFIgPSB2YWx1ZS50YWdHUFIoKTsKKyAgICBERkdfVFlQ
RV9DSEVDSygKKyAgICAgICAgdmFsdWUuanNWYWx1ZVJlZ3MoKSwgZWRnZSwgflNwZWNJbnQzMiwK
KyAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB0YWdHUFIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKKyAgICBERkdfVFlQRV9DSEVDSygKKyAg
ICAgICAgdmFsdWUuanNWYWx1ZVJlZ3MoKSwgZWRnZSwgU3BlY0J5dGVjb2RlTnVtYmVyLAorICAg
ICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0YWdHUFIs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CisjZW5kaWYKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlUmVhbE51bWJlcihFZGdlIGVkZ2UpCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVEb3VibGVSZWFsKEVkZ2UgZWRnZSkKIHsKLSAgICBpZiAoIW5l
ZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNGdWxsUmVhbE51bWJlcikpCisgICAgaWYgKCFuZWVkc1R5
cGVDaGVjayhlZGdlLCBTcGVjRG91YmxlUmVhbCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CiAgICAgRlBSUmVn
IGZwciA9IG9wZXJhbmQuZnByKCk7Ci0gICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFs
dWVSZWdzKCksIGVkZ2UsIFNwZWNGdWxsUmVhbE51bWJlciwKKyAgICB0eXBlQ2hlY2soCisgICAg
ICAgIEpTVmFsdWVSZWdzKCksIGVkZ2UsIFNwZWNEb3VibGVSZWFsLAogICAgICAgICBtX2ppdC5i
cmFuY2hEb3VibGUoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxP
clVub3JkZXJlZCwgZnByLCBmcHIpKTsKIH0KQEAgLTQ3NjgsOCArNDgyNSwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkCiAgICAgY2FzZSBLbm93bkludDMyVXNl
OgogICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNJbnQzMikpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEtub3duTnVtYmVyVXNlOgotICAgICAgICBBU1NFUlQoIW5l
ZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNGdWxsTnVtYmVyKSk7CisgICAgY2FzZSBEb3VibGVSZXBV
c2U6CisgICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0RvdWJsZSkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICBBU1NFUlQoIW5l
ZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNNYWNoaW5lSW50KSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgS25vd25DZWxsVXNlOgogICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNoZWNrKGVkZ2Us
IFNwZWNDZWxsKSk7CkBAIC00NzgwLDE1ICs0ODQwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZShOb2RlKiwgRWQKICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBzcGVjdWxh
dGVJbnQzMihlZGdlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNYWNoaW5lSW50VXNlOgot
ICAgICAgICBzcGVjdWxhdGVNYWNoaW5lSW50KGVkZ2UpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFJlYWxOdW1iZXJVc2U6Ci0gICAgICAgIHNwZWN1bGF0ZVJlYWxOdW1iZXIoZWRnZSk7Ci0g
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICBzcGVjdWxhdGVOdW1i
ZXIoZWRnZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAg
ICAgICAgc3BlY3VsYXRlRG91YmxlUmVhbChlZGdlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBCb29sZWFuVXNlOgogICAgICAgICBzcGVjdWxhdGVCb29sZWFuKGVkZ2UpOwogICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBT
cGVjdWxhdGVEb3VibGVPcGVyYW5kOwogY2xhc3MgU3BlY3VsYXRlQ2VsbE9wZXJhbmQ7CiBjbGFz
cyBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZDsKIAotZW51bSBHZW5lcmF0ZWRPcGVyYW5kVHlwZSB7
IEdlbmVyYXRlZE9wZXJhbmRUeXBlVW5rbm93biwgR2VuZXJhdGVkT3BlcmFuZEludGVnZXIsIEdl
bmVyYXRlZE9wZXJhbmREb3VibGUsIEdlbmVyYXRlZE9wZXJhbmRKU1ZhbHVlfTsKK2VudW0gR2Vu
ZXJhdGVkT3BlcmFuZFR5cGUgeyBHZW5lcmF0ZWRPcGVyYW5kVHlwZVVua25vd24sIEdlbmVyYXRl
ZE9wZXJhbmRJbnRlZ2VyLCBHZW5lcmF0ZWRPcGVyYW5kSlNWYWx1ZX07CiAKIGlubGluZSBHUFJS
ZWcgZXh0cmFjdFJlc3VsdChHUFJSZWcgcmVzdWx0KSB7IHJldHVybiByZXN1bHQ7IH0KICNpZiBV
U0UoSlNWQUxVRTY0KQpAQCAtNDU5LDYgKzQ1OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0
LnVuYm94RG91YmxlKHRhZ0dQUiwgcGF5bG9hZEdQUiwgZnByLCBzY3JhdGNoRlBSKTsKICAgICB9
CiAjZW5kaWYKKyAgICB2b2lkIGJveERvdWJsZShGUFJSZWcgZnByLCBKU1ZhbHVlUmVncyByZWdz
KQorICAgIHsKKyAgICAgICAgbV9qaXQuYm94RG91YmxlKGZwciwgcmVncyk7CisgICAgfQogCiAg
ICAgLy8gU3BpbGwgYSBWaXJ0dWFsUmVnaXN0ZXIgdG8gdGhlIEpTU3RhY2suCiAgICAgdm9pZCBz
cGlsbChWaXJ0dWFsUmVnaXN0ZXIgc3BpbGxNZSkKQEAgLTkyNSw2ICs5MjksMTQgQEAgcHVibGlj
OgogICAgICAgICBqc1ZhbHVlUmVzdWx0KHRhZywgcGF5bG9hZCwgbm9kZSwgRGF0YUZvcm1hdEpT
LCBtb2RlKTsKICAgICB9CiAjZW5kaWYKKyAgICB2b2lkIGpzVmFsdWVSZXN1bHQoSlNWYWx1ZVJl
Z3MgcmVncywgTm9kZSogbm9kZSwgRGF0YUZvcm1hdCBmb3JtYXQgPSBEYXRhRm9ybWF0SlMsIFVz
ZUNoaWxkcmVuTW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxkcmVuKQorICAgIHsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlZ3MuZ3ByKCksIG5vZGUsIGZvcm1hdCwg
bW9kZSk7CisjZWxzZQorICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlZ3MudGFnR1BSKCksIHJlZ3Mu
cGF5bG9hZEdQUigpLCBub2RlLCBmb3JtYXQsIG1vZGUpOworI2VuZGlmCisgICAgfQogICAgIHZv
aWQgc3RvcmFnZVJlc3VsdChHUFJSZWcgcmVnLCBOb2RlKiBub2RlLCBVc2VDaGlsZHJlbk1vZGUg
bW9kZSA9IENhbGxVc2VDaGlsZHJlbikKICAgICB7CiAgICAgICAgIGlmIChtb2RlID09IENhbGxV
c2VDaGlsZHJlbikKQEAgLTIwODAsMTAgKzIwOTIsMTIgQEAgcHVibGljOgogICAgIAogICAgIHZv
aWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqKTsKICAgICAKKyAgICB2b2lkIGNvbXBpbGVW
YWx1ZVJlcChOb2RlKik7CisgICAgdm9pZCBjb21waWxlRG91YmxlUmVwKE5vZGUqKTsKKyAgICAK
ICAgICB2b2lkIGNvbXBpbGVWYWx1ZVRvSW50MzIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVVJ
bnQzMlRvTnVtYmVyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVEb3VibGVBc0ludDMyKE5vZGUq
KTsKLSAgICB2b2lkIGNvbXBpbGVJbnQzMlRvRG91YmxlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVBZGQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU1ha2VSb3BlKE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVBcml0aFN1YihOb2RlKik7CkBAIC0yMTg1LDEyICsyMTk5LDYgQEAgcHVibGljOgog
CiAgICAgdm9pZCBlbWl0QWxsb2NhdGVKU0FycmF5KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVy
ZSosIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cyk7CiAKLSNpZiBVU0Uo
SlNWQUxVRTY0KSAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBjb252ZXJ0VG9Eb3VibGUoR1BSUmVn
IHZhbHVlLCBGUFJSZWcgcmVzdWx0LCBHUFJSZWcgdG1wKTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJf
NjQpCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgY29udmVydFRvRG91YmxlKEpTVmFsdWVPcGVyYW5k
JiwgRlBSUmVnIHJlc3VsdCk7Ci0jZW5kaWYKLSAgICAKICAgICAvLyBBZGQgYSBzcGVjdWxhdGlv
biBjaGVjay4KICAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpTVmFsdWVTb3Vy
Y2UsIE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsKTsKICAgICB2b2lkIHNw
ZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIE5vZGUqLCBjb25zdCBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBzVG9GYWlsKTsKQEAgLTIyMTcsNyArMjIyNSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNwZWN1bGF0ZUludDMyKEVkZ2UpOwogICAgIHZvaWQgc3BlY3Vs
YXRlTWFjaGluZUludChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU51bWJlcihFZGdlKTsKLSAg
ICB2b2lkIHNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVEb3Vi
bGVSZWFsKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlQm9vbGVhbihFZGdlKTsKICAgICB2b2lk
IHNwZWN1bGF0ZUNlbGwoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVPYmplY3QoRWRnZSk7CkBA
IC0yNTY1LDYgKzI1NzMsMjMgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHI7CiB9OwogCitj
bGFzcyBKU1ZhbHVlUmVnc1RlbXBvcmFyeSB7CitwdWJsaWM6CisgICAgSlNWYWx1ZVJlZ3NUZW1w
b3JhcnkoKTsKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeShTcGVjdWxhdGl2ZUpJVCopOworICAg
IH5KU1ZhbHVlUmVnc1RlbXBvcmFyeSgpOworICAgIAorICAgIEpTVmFsdWVSZWdzIHJlZ3MoKTsK
KworcHJpdmF0ZToKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEdQUlRlbXBvcmFyeSBtX2dwcjsK
KyNlbHNlCisgICAgR1BSVGVtcG9yYXJ5IG1fcGF5bG9hZEdQUjsKKyAgICBHUFJUZW1wb3Jhcnkg
bV90YWdHUFI7CisjZW5kaWYKK307CisKIGNsYXNzIEZQUlRlbXBvcmFyeSB7CiBwdWJsaWM6CiAg
ICAgRlBSVGVtcG9yYXJ5KFNwZWN1bGF0aXZlSklUKik7CkBAIC0yNzU0LDEyICsyNzc5LDEyIEBA
IHByaXZhdGU6CiAvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0
LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgogY2xhc3MgU3BlY3VsYXRlSW50NTJPcGVy
YW5kIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQoU3BlY3Vs
YXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBB
dXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgZXhwbGljaXQgU3BlY3VsYXRlSW50NTJP
cGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSkKICAgICAgICAgOiBtX2ppdChq
aXQpCiAgICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52
YWxpZEdQUlJlZykKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVz
ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNl
KTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKICAgICAgICAgICAgIGdwcigp
OwogICAgIH0KQEAgLTI4MDEsMTIgKzI4MjYsMTIgQEAgcHJpdmF0ZToKIC8vIEdpdmVzIHlvdSBh
IHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhp
Z2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQ1
Mk9wZXJhbmQgewogcHVibGljOgotICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVN0cmljdEludDUyT3Bl
cmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1v
ZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBleHBsaWNpdCBTcGVj
dWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlKQog
ICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkKICAgICAgICAgLCBt
X2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNF
RChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQo
KSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZWRnZS51c2VLaW5k
KCkgPT0gSW50NTJSZXBVc2UpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQog
ICAgICAgICAgICAgZ3ByKCk7CiAgICAgfQpAQCAtMjg0OSwzNSArMjg3NCwzNSBAQCBlbnVtIE9w
cG9zaXRlU2hpZnRUYWcgeyBPcHBvc2l0ZVNoaWZ0IH07CiAKIGNsYXNzIFNwZWN1bGF0ZVdoaWNo
ZXZlckludDUyT3BlcmFuZCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hl
dmVySW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNw
ZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4
cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0
LCBFZGdlIGVkZ2UpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fZWRnZShlZGdl
KQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgICAgICwgbV9z
dHJpY3Qoaml0LT5iZXR0ZXJVc2VTdHJpY3RJbnQ1MihlZGdlKSkKICAgICB7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRn
ZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVk
Z2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQo
bm9kZSgpKSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0KICAgICAKLSAgICBleHBsaWNpdCBT
cGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBl
ZGdlLCBjb25zdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQmIG90aGVyLCBPcGVyYW5k
U3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAg
ZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBq
aXQsIEVkZ2UgZWRnZSwgY29uc3QgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kJiBvdGhl
cikKICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAgICAg
ICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKICAgICAgICAgLCBtX3N0cmljdChvdGhl
ci5tX3N0cmljdCkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVz
ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNl
KTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKICAgICAgICAgICAgIGdwcigp
OwogICAgIH0KICAgICAKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJh
bmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcHBvc2l0ZVNoaWZ0VGFnLCBjb25z
dCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQmIG90aGVyLCBPcGVyYW5kU3BlY3VsYXRp
b25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgZXhwbGljaXQg
U3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2Ug
ZWRnZSwgT3Bwb3NpdGVTaGlmdFRhZywgY29uc3QgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVy
YW5kJiBvdGhlcikKICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9lZGdlKGVkZ2Up
CiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKICAgICAgICAgLCBtX3N0
cmljdCghb3RoZXIubV9zdHJpY3QpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUs
IG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1h
Y2hpbmVJbnRVc2UpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJ
bnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAg
ICAgICBncHIoKTsKICAgICB9CkBAIC0yOTI2LDEzICsyOTUxLDEzIEBAIHByaXZhdGU6CiAKIGNs
YXNzIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgewogcHVibGljOgotICAgIGV4cGxpY2l0IFNwZWN1
bGF0ZURvdWJsZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5k
U3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAg
ZXhwbGljaXQgU3BlY3VsYXRlRG91YmxlT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdl
IGVkZ2UpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAg
ICAgICAsIG1fZnByT3JJbnZhbGlkKEludmFsaWRGUFJSZWcpCiAgICAgewogICAgICAgICBBU1NF
UlQobV9qaXQpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uIHx8IGlzRG91YmxlKGVkZ2UudXNlS2luZCgpKSk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGlzRG91YmxlKGVkZ2UudXNlS2luZCgpKSk7CiAgICAgICAgIGlmIChqaXQt
PmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBmcHIoKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHJldmlzaW9uIDE2NzIwNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDE3ICs0NiwxNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
VXNlCiAgICAgY2FzZSBLbm93bkludDMyVXNlOgogICAgICAgICBvdXQucHJpbnQoIktub3duSW50
MzIiKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNYWNoaW5lSW50VXNlOgotICAgICAgICBv
dXQucHJpbnQoIk1hY2hpbmVJbnQiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFsTnVt
YmVyVXNlOgotICAgICAgICBvdXQucHJpbnQoIlJlYWxOdW1iZXIiKTsKKyAgICBjYXNlIEludDUy
UmVwVXNlOgorICAgICAgICBvdXQucHJpbnQoIkludDUyUmVwIik7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICBvdXQucHJpbnQoIk51bWJlciIpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEtub3duTnVtYmVyVXNlOgotICAgICAgICBvdXQucHJpbnQoIktu
b3duTnVtYmVyIik7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgIG91dC5wcmludCgi
RG91YmxlUmVwIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToK
KyAgICAgICAgb3V0LnByaW50KCJEb3VibGVSZXBSZWFsIik7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgb3V0LnByaW50KCJCb29sZWFuIik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkocmV2aXNpb24gMTY3MjA0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDEwICszNywxMCBAQCBlbnVtIFVzZUtpbmQgewogICAgIFVudHlwZWRVc2UsCiAgICAgSW50
MzJVc2UsCiAgICAgS25vd25JbnQzMlVzZSwKLSAgICBNYWNoaW5lSW50VXNlLAotICAgIFJlYWxO
dW1iZXJVc2UsCisgICAgSW50NTJSZXBVc2UsCiAgICAgTnVtYmVyVXNlLAotICAgIEtub3duTnVt
YmVyVXNlLAorICAgIERvdWJsZVJlcFVzZSwKKyAgICBEb3VibGVSZXBSZWFsVXNlLAogICAgIEJv
b2xlYW5Vc2UsCiAgICAgQ2VsbFVzZSwKICAgICBLbm93bkNlbGxVc2UsCkBAIC02NywxMyArNjcs
MTQgQEAgQUxXQVlTX0lOTElORSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRgogICAgIGNhc2Ug
SW50MzJVc2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNlOgogICAgICAgICByZXR1cm4gU3BlY0lu
dDMyOwotICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICBjYXNlIEludDUyUmVwVXNlOgogICAg
ICAgICByZXR1cm4gU3BlY01hY2hpbmVJbnQ7Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAg
ICAgICByZXR1cm4gU3BlY0Z1bGxSZWFsTnVtYmVyOwogICAgIGNhc2UgTnVtYmVyVXNlOgotICAg
IGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgIHJldHVybiBTcGVjRnVsbE51bWJlcjsKKyAg
ICAgICAgcmV0dXJuIFNwZWNCeXRlY29kZU51bWJlcjsKKyAgICBjYXNlIERvdWJsZVJlcFVzZToK
KyAgICAgICAgcmV0dXJuIFNwZWNEb3VibGU7CisgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgor
ICAgICAgICByZXR1cm4gU3BlY0RvdWJsZVJlYWw7CiAgICAgY2FzZSBCb29sZWFuVXNlOgogICAg
ICAgICByZXR1cm4gU3BlY0Jvb2xlYW47CiAgICAgY2FzZSBDZWxsVXNlOgpAQCAtMTEzLDkgKzEx
NCwxMCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgc2hvdWxkTm90SGF2ZVR5cGVDaGVjCiAgICAgc3dp
dGNoIChraW5kKSB7CiAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVz
ZToKLSAgICBjYXNlIEtub3duTnVtYmVyVXNlOgogICAgIGNhc2UgS25vd25DZWxsVXNlOgogICAg
IGNhc2UgS25vd25TdHJpbmdVc2U6CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICBjYXNlIERv
dWJsZVJlcFVzZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTMyLDEwICsxMzQsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIGlz
TnVtZXJpY2FsKFVzZUtpbmQgawogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgSW50MzJV
c2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNlOgotICAgIGNhc2UgTWFjaGluZUludFVzZToKLSAg
ICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAgICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgY2FzZSBLbm93
bk51bWJlclVzZToKKyAgICBjYXNlIEludDUyUmVwVXNlOgorICAgIGNhc2UgRG91YmxlUmVwVXNl
OgorICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ1LDkgKzE0Nyw4IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGsKIEFMV0FZU19JTkxJTkUgYm9vbCBp
c0RvdWJsZShVc2VLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBS
ZWFsTnVtYmVyVXNlOgotICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgS25vd25OdW1iZXJV
c2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNp
b24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTE1LDYgKzExNSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG1fbXlSZWZDb3VudHMuZmluZChlZGdlLm5v
ZGUoKSktPnZhbHVlKys7CiAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICBWQUxJREFURSgobm9kZSwgZWRnZSksIG5vZGUtPmNvbnRhaW5zTW92SGludCgpIHx8IGVkZ2Ut
Pmhhc0RvdWJsZVJlc3VsdCgpID09IChlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UgfHwg
ZWRnZS51c2VLaW5kKCkgPT0gRG91YmxlUmVwUmVhbFVzZSkpOworICAgICAgICAgICAgICAgICAg
ICBWQUxJREFURSgobm9kZSwgZWRnZSksIG5vZGUtPmNvbnRhaW5zTW92SGludCgpIHx8IGVkZ2Ut
Pmhhc0ludDUyUmVzdWx0KCkgPT0gKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zv
cm0gPT0gU1NBKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiBTU0EsIGFsbCBlZGdl
cyBtdXN0IGhhc1Jlc3VsdCgpLgogICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5v
ZGUsIGVkZ2UpLCBlZGdlLT5oYXNSZXN1bHQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkwLDcgKzkwLDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IAogICAgIGNhc2UgQXJpdGhGUm91bmQ6CiAgICAgY2FzZSBBcml0aE5lZ2F0ZToKICAgICBjYXNl
IFVJbnQzMlRvTnVtYmVyOgotICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICBjYXNlIENvbXBh
cmVFcUNvbnN0YW50OgogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKQEAg
LTEwMyw3ICsxMDIsNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
CiAgICAgY2FzZSBHZXRDbG9zdXJlUmVnaXN0ZXJzOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoK
ICAgICBjYXNlIFB1dENsb3N1cmVWYXI6Ci0gICAgY2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgY2Fz
ZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICBjYXNlIENo
ZWNrRnVuY3Rpb246CkBAIC0xNTIsNiArMTUwLDExIEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAgY2FzZSBDaGVja0hh
c0luc3RhbmNlOgogICAgIGNhc2UgSW5zdGFuY2VPZjoKKyAgICBjYXNlIERvdWJsZVJlcDoKKyAg
ICBjYXNlIFZhbHVlUmVwOgorICAgIGNhc2UgSW50NTJSZXA6CisgICAgY2FzZSBEb3VibGVDb25z
dGFudDoKKyAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4K
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgpAQCAtMjM1LDkgKzIzOCw5
IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIENv
bXBhcmVFcToKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNo
aW5lSW50VXNlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVz
ZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChOdW1iZXJVc2UpKQorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJl
cFVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChTdHJpbmdJZGVudFVzZSkpCiAgICAgICAgICAgICBicmVhazsKQEAgLTI1NSw5ICsyNTgs
OSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBD
b21wYXJlU3RyaWN0RXE6CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJV
c2UpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoTWFjaGluZUludFVzZSkpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50
NTJSZXBVc2UpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoTnVtYmVyVXNlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChE
b3VibGVSZXBVc2UpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0yODAs
OSArMjgzLDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAg
IGNhc2UgQ29tcGFyZUdyZWF0ZXJFcToKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChJbnQ1MlJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKQorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKERvdWJsZVJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MzUwLDEwICszNTMsMTAgQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoR3JhcGgmIGdyYXBo
KQogICAgICAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAgICAgICAgICAgICBjYXNl
IEludDMyVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25vd25JbnQzMlVzZToKLSAgICAgICAg
ICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBJbnQ1MlJl
cFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE51bWJlclVzZToKLSAgICAgICAgICAgICAgICBj
YXNlIEtub3duTnVtYmVyVXNlOgotICAgICAgICAgICAgICAgIGNhc2UgUmVhbE51bWJlclVzZToK
KyAgICAgICAgICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgICAgICAgICBjYXNl
IERvdWJsZVJlcFJlYWxVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgogICAg
ICAgICAgICAgICAgIGNhc2UgQ2VsbFVzZToKICAgICAgICAgICAgICAgICBjYXNlIEtub3duQ2Vs
bFVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDcgKzE4Niw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAg
IExUeXBlIHR5cGU7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5mbGFncygpICYgTm9k
ZVJlc3VsdE1hc2spIHsKLSAgICAgICAgICAgICAgICBjYXNlIE5vZGVSZXN1bHROdW1iZXI6Cisg
ICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0RG91YmxlOgogICAgICAgICAgICAgICAgICAg
ICB0eXBlID0gbV9vdXQuZG91YmxlVHlwZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6CkBAIC0yODIsMTIgKzI4MiwzMCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSlNDb25zdGFudDoK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERvdWJsZUNvbnN0YW50OgorICAgICAg
ICAgICAgY29tcGlsZURvdWJsZUNvbnN0YW50KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBJbnQ1MkNvbnN0YW50OgorICAgICAgICAgICAgY29tcGlsZUludDUyQ29uc3RhbnQo
KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYWtKU0NvbnN0YW50OgogICAg
ICAgICAgICAgY29tcGlsZVdlYWtKU0NvbnN0YW50KCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgogICAgICAgICAgICAgY29tcGlsZVBoYW50b21B
cmd1bWVudHMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERvdWJsZVJlcDoK
KyAgICAgICAgICAgIGNvbXBpbGVEb3VibGVSZXAoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFZhbHVlUmVwOgorICAgICAgICAgICAgY29tcGlsZVZhbHVlUmVwKCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnQ1MlJlcDoKKyAgICAgICAgICAgIGNvbXBp
bGVJbnQ1MlJlcCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVUb0lu
dDMyOgorICAgICAgICAgICAgY29tcGlsZVZhbHVlVG9JbnQzMigpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJn
dW1lbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzc4LDkgKzM5Niw2IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAgICAgICAgICBjb21waWxlVUludDMy
VG9OdW1iZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludDMyVG9Eb3Vi
bGU6Ci0gICAgICAgICAgICBjb21waWxlSW50MzJUb0RvdWJsZSgpOwotICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlQ2hl
Y2tTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTY5LDEyICs1ODQsNiBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgICAgICAgICAgY29t
cGlsZUludmFsaWRhdGlvblBvaW50KCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBWYWx1ZVRvSW50MzI6Ci0gICAgICAgICAgICBjb21waWxlVmFsdWVUb0ludDMyKCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnQ1MlRvVmFsdWU6Ci0gICAgICAgICAgICBj
b21waWxlSW50NTJUb1ZhbHVlKCk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
aGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tBcmd1bWVu
dHNOb3RDcmVhdGVkKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTYzMyw3MyArNjQyLDE4IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHZvaWQgY29tcGls
ZVZhbHVlVG9JbnQzMigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpKSB7Ci0gICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgICAgICAgICBzZXRJbnQz
Mihsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIAotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Ci0gICAgICAgICAgICBzZXRJbnQz
MihtX291dC5jYXN0VG9JbnQzMihsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKSkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6
Ci0gICAgICAgIGNhc2UgTm90Q2VsbFVzZTogewotICAgICAgICAgICAgTG93ZXJlZE5vZGVWYWx1
ZSB2YWx1ZSA9IG1faW50MzJWYWx1ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKLSAg
ICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgICAgIHNldEludDMy
KHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgICAgICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQobV9u
b2RlLT5jaGlsZDEoKS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7
Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIobnVtYmVyT3JOb3RDZWxsVG9JbnQzMihtX25vZGUt
PmNoaWxkMSgpLCB2YWx1ZS52YWx1ZSgpKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZhbHVlID0gbV9kb3VibGVWYWx1
ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlk
KHZhbHVlKSkgewotICAgICAgICAgICAgICAgIHNldEludDMyKGRvdWJsZVRvSW50MzIodmFsdWUu
dmFsdWUoKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgCi0gICAgICAgICAgICAvLyBXZSdsbCBiYXNpY2FsbHkganVzdCBnZXQgaGVyZSBmb3Ig
Y29uc3RhbnRzLiBCdXQgaXQncyBnb29kIHRvIGhhdmUgdGhpcwotICAgICAgICAgICAgLy8gY2F0
Y2gtYWxsIHNpbmNlIHdlIG9mdGVuIGFkZCBuZXcgcmVwcmVzZW50YXRpb25zIGludG8gdGhlIG1p
eC4KLSAgICAgICAgICAgIHNldEludDMyKAotICAgICAgICAgICAgICAgIG51bWJlck9yTm90Q2Vs
bFRvSW50MzIoCi0gICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQxKCksCi0gICAgICAg
ICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAg
IAotICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6Ci0gICAgICAgICAgICBzZXRJbnQzMihtX291dC56
ZXJvRXh0KGxvd0Jvb2xlYW4obV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmludDMyKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBjb21waWxlSW50NTJUb1ZhbHVlKCkKLSAgICB7Ci0g
ICAgICAgIHNldEpTVmFsdWUobG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSk7Ci0gICAgfQot
CiAgICAgdm9pZCBjb21waWxlVXBzaWxvbigpCiAgICAgewogICAgICAgICBMVmFsdWUgZGVzdGlu
YXRpb24gPSBtX3BoaXMuZ2V0KG1fbm9kZS0+cGhpKCkpOwogICAgICAgICAKICAgICAgICAgc3dp
dGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewotICAgICAgICBjYXNlIE51bWJlclVz
ZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBtX291dC5zZXQobG93
RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBkZXN0aW5hdGlvbik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgICAgIG1fb3V0LnNldChsb3dJbnQz
MihtX25vZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAg
ICAgICAgICAgIG1fb3V0LnNldChsb3dJbnQ1MihtX25vZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRp
b24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKQEAgLTcy
Miw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgc291cmNlID0gbV9waGlzLmdl
dChtX25vZGUpOwogICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmZsYWdzKCkgJiBO
b2RlUmVzdWx0TWFzaykgewotICAgICAgICBjYXNlIE5vZGVSZXN1bHROdW1iZXI6CisgICAgICAg
IGNhc2UgTm9kZVJlc3VsdERvdWJsZToKICAgICAgICAgICAgIHNldERvdWJsZShtX291dC5nZXQo
c291cmNlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50
MzI6CkBAIC03NDIsMTcgKzY5NiwxMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHZvaWQgY29tcGlsZURvdWJsZUNvbnN0YW50KCkK
KyAgICB7CisgICAgICAgIHNldERvdWJsZShtX291dC5jb25zdERvdWJsZShtX2dyYXBoLnZhbHVl
T2ZOdW1iZXJDb25zdGFudChtX25vZGUpKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgY29tcGls
ZUludDUyQ29uc3RhbnQoKQorICAgIHsKKyAgICAgICAgaW50NjRfdCB2YWx1ZSA9IG1fZ3JhcGgu
dmFsdWVPZkpTQ29uc3RhbnQobV9ub2RlKS5hc01hY2hpbmVJbnQoKTsKKyAgICAgICAgCisgICAg
ICAgIHNldEludDUyKG1fb3V0LmNvbnN0SW50NjQodmFsdWUgPDwgSlNWYWx1ZTo6aW50NTJTaGlm
dEFtb3VudCkpOworICAgICAgICBzZXRTdHJpY3RJbnQ1MihtX291dC5jb25zdEludDY0KHZhbHVl
KSk7CisgICAgfQogCisgICAgdm9pZCBjb21waWxlV2Vha0pTQ29uc3RhbnQoKQorICAgIHsKKyAg
ICAgICAgc2V0SlNWYWx1ZSh3ZWFrUG9pbnRlcihtX25vZGUtPndlYWtDb25zdGFudCgpKSk7Cisg
ICAgfQorICAgIAogICAgIHZvaWQgY29tcGlsZVBoYW50b21Bcmd1bWVudHMoKQogICAgIHsKICAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShKU1ZhbHVl
KCkpKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZVdlYWtKU0NvbnN0YW50KCkKKyAg
ICB2b2lkIGNvbXBpbGVEb3VibGVSZXAoKQogICAgIHsKLSAgICAgICAgc2V0SlNWYWx1ZSh3ZWFr
UG9pbnRlcihtX25vZGUtPndlYWtDb25zdGFudCgpKSk7CisgICAgICAgIHN3aXRjaCAobV9ub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAg
ICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHNldERvdWJsZShqc1ZhbHVlVG9Eb3Vi
bGUobV9ub2RlLT5jaGlsZDEoKSwgdmFsdWUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKKyAgICAgICAg
ICAgIHNldERvdWJsZShzdHJpY3RJbnQ1MlRvRG91YmxlKGxvd1N0cmljdEludDUyKG1fbm9kZS0+
Y2hpbGQxKCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVWYWx1ZVJlcCgp
CisgICAgeworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7Cisg
ICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKGJveERv
dWJsZShsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKKyAg
ICAgICAgICAgIHNldEpTVmFsdWUoc3RyaWN0SW50NTJUb0pTVmFsdWUobG93U3RyaWN0SW50NTIo
bV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZUlu
dDUyUmVwKCkKKyAgICB7CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LnNpZ25FeHQobG93
SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmludDY0KSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgY29tcGlsZVZhbHVlVG9JbnQzMigpCisgICAgeworICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAg
ICAgICBzZXRJbnQzMihsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICAg
ICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobG93U3RyaWN0SW50NTIobV9ub2RlLT5jaGls
ZDEoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
RG91YmxlUmVwVXNlOgorICAgICAgICAgICAgc2V0SW50MzIoZG91YmxlVG9JbnQzMihsb3dEb3Vi
bGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIE5vdENlbGxVc2U6IHsKKyAg
ICAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2ludDMyVmFsdWVzLmdldChtX25v
ZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsK
KyAgICAgICAgICAgICAgICBzZXRJbnQzMih2YWx1ZS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFsdWUg
PSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAg
ICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgeworICAgICAgICAgICAgICAgIHNldEludDMyKG51bWJl
ck9yTm90Q2VsbFRvSW50MzIobV9ub2RlLT5jaGlsZDEoKSwgdmFsdWUudmFsdWUoKSkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
ICAgICAvLyBXZSdsbCBiYXNpY2FsbHkganVzdCBnZXQgaGVyZSBmb3IgY29uc3RhbnRzLiBCdXQg
aXQncyBnb29kIHRvIGhhdmUgdGhpcworICAgICAgICAgICAgLy8gY2F0Y2gtYWxsIHNpbmNlIHdl
IG9mdGVuIGFkZCBuZXcgcmVwcmVzZW50YXRpb25zIGludG8gdGhlIG1peC4KKyAgICAgICAgICAg
IHNldEludDMyKAorICAgICAgICAgICAgICAgIG51bWJlck9yTm90Q2VsbFRvSW50MzIoCisgICAg
ICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQxKCksCisgICAgICAgICAgICAgICAgICAgIGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IEJvb2xlYW5Vc2U6CisgICAgICAgICAgICBzZXRJbnQzMihtX291dC56ZXJvRXh0KGxvd0Jvb2xl
YW4obV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmludDMyKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
CiAgICAgdm9pZCBjb21waWxlR2V0QXJndW1lbnQoKQogICAgIHsKICAgICAgICAgVmFyaWFibGVB
Y2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1fbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CkBAIC05
NjYsNyArMTAyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICBjYXNl
IEludDUyUmVwVXNlOiB7CiAgICAgICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShtX25vZGUt
PmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NTIpCiAgICAgICAgICAgICAgICAgJiYgIW1f
c3RhdGUuZm9yTm9kZShtX25vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVjSW50NTIpKSB7
CiAgICAgICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CkBAIC0xMDE2LDcgKzEwNzMsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAg
ICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAg
ICAgICAgICAgTFZhbHVlIEMxID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgTFZhbHVlIEMyID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpOwogCkBAIC0xMDY1
LDcgKzExMjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIAotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgY2FzZSBJ
bnQ1MlJlcFVzZTogewogICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CiAgICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQpOwog
ICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NTIobV9ub2RlLT5jaGlsZDIoKSwgb3Bw
b3NpdGUoa2luZCkpOwpAQCAtMTA5Miw3ICsxMTQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6
IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIHNldERvdWJsZSgK
ICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVNdWwobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQx
KCkpLCBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTE5NSw3ICsxMjUyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2Fz
ZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIHNldERvdWJsZShtX291dC5kb3VibGVEaXYo
CiAgICAgICAgICAgICAgICAgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUo
bV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI5Myw3ICsxMzUw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6
IHsKICAgICAgICAgICAgIHNldERvdWJsZSgKICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVS
ZW0obG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIo
KSkpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMyMSw3ICsxMzc4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2Fz
ZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAg
IExWYWx1ZSBsZWZ0ID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
CkBAIC0xMzcxLDcgKzE0MjgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBj
YXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0LmRvdWJsZUFi
cyhsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC0xNDE4LDcgKzE0NzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsK
KyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICAgICAgaWYgKCFtX3N0YXRlLmZv
ck5vZGUobV9ub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyKSkgewogICAgICAg
ICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQpOwpAQCAtMTQzOCw3ICsx
NDk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBV
c2U6IHsKICAgICAgICAgICAgIHNldERvdWJsZShtX291dC5kb3VibGVOZWcobG93RG91YmxlKG1f
bm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTQ5
OCwxMSArMTU1NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHNldEludDMyKHZhbHVlKTsKICAgICB9
CiAgICAgCi0gICAgdm9pZCBjb21waWxlSW50MzJUb0RvdWJsZSgpCi0gICAgewotICAgICAgICBz
ZXREb3VibGUobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKTsKLSAgICB9Ci0gICAgCiAgICAg
dm9pZCBjb21waWxlQ2hlY2tTdHJ1Y3R1cmUoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGNlbGwg
PSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMjIxMyw3ICsyMjY1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBpZiAoaXNJbnQodHlwZSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgTFZhbHVlIGludFZhbHVlOwogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNoaWxkMy51
c2VLaW5kKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAg
ICAgICAgICAgICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgICAgICAgICBj
YXNlIEludDMyVXNlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQzLnVzZUtp
bmQoKSA9PSBJbnQzMlVzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRWYWx1ZSA9
IGxvd0ludDMyKGNoaWxkMyk7CkBAIC0yMjQ2LDcgKzIyOTgsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIE51bWJlclVzZTogewor
ICAgICAgICAgICAgICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgICAg
ICAgICAgICAgTFZhbHVlIGRvdWJsZVZhbHVlID0gbG93RG91YmxlKGNoaWxkMyk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0NsYW1wZWQo
dHlwZSkpIHsKQEAgLTMzMjgsOCArMzM4MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxl
Q29tcGFyZUVxKCkKICAgICB7CiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChJ
bnQzMlVzZSkKLSAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJ
bnRVc2UpCi0gICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2Up
CisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkKKyAg
ICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkKICAgICAg
ICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkKICAgICAgICAgICAg
IHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpCiAgICAgICAgICAgICB8fCBt
X25vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpIHsKQEAgLTMzNzEsNyArMzQy
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkgewor
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7CiAgICAg
ICAgICAgICBJbnQ1MktpbmQga2luZDsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93V2hp
Y2hldmVySW50NTIobV9ub2RlLT5jaGlsZDEoKSwga2luZCk7CiAgICAgICAgICAgICBMVmFsdWUg
cmlnaHQgPSBsb3dJbnQ1MihtX25vZGUtPmNoaWxkMigpLCBraW5kKTsKQEAgLTMzNzksNyArMzQz
MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CisgICAg
ICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpKSB7CiAgICAgICAg
ICAgICBzZXRCb29sZWFuKAogICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUVxdWFsKGxvd0Rv
dWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC00MTIzLDcgKzQxNzUsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobV9ub2RlLT5p
c0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7
CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hp
bGQxKCksIGtpbmQpOwogICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NTIobV9ub2Rl
LT5jaGlsZDIoKSwga2luZCk7CkBAIC00MTMxLDcgKzQxODMsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobV9ub2RlLT5p
c0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkgeworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoRG91YmxlUmVwVXNlKSkgewogICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dE
b3VibGUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dE
b3VibGUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0LmZj
bXAocmVhbENvbmRpdGlvbiwgbGVmdCwgcmlnaHQpKTsKQEAgLTQzODgsNyArNDQ0MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gbG93Qm9vbGVhbihtX25vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgICAgIHJldHVybiBtX291dC5ub3RaZXJv
MzIobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSkpOwotICAgICAgICBjYXNlIE51bWJlclVzZToK
KyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICByZXR1cm4gbV9vdXQuZG91
YmxlTm90RXF1YWwobG93RG91YmxlKGVkZ2UpLCBtX291dC5kb3VibGVaZXJvKTsKICAgICAgICAg
Y2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmJpdE5vdCgK
QEAgLTQ3MzQsMjEgKzQ3ODYsOSBAQCBwcml2YXRlOgogICAgIH0KICAgICAKICAgICBlbnVtIElu
dDUyS2luZCB7IFN0cmljdEludDUyLCBJbnQ1MiB9OwotICAgIExWYWx1ZSBsb3dJbnQ1MihFZGdl
IGVkZ2UsIEludDUyS2luZCBraW5kLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRv
bWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgTFZhbHVlIGxvd0ludDUyKEVkZ2UgZWRnZSwg
SW50NTJLaW5kIGtpbmQpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUg
PT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJ
bnRVc2UpOwotICAgICAgICAKLSAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKLSAg
ICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uu
bm9kZSgpKTsKLSAgICAgICAgICAgIGlmICghdmFsdWUuaXNNYWNoaW5lSW50KCkpIHsKLSAgICAg
ICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwotICAgICAgICAgICAgICAgIHJldHVy
biBtX291dC5pbnQ2NFplcm87Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQ2NF90IHJl
c3VsdCA9IHZhbHVlLmFzTWFjaGluZUludCgpOwotICAgICAgICAgICAgaWYgKGtpbmQgPT0gSW50
NTIpCi0gICAgICAgICAgICAgICAgcmVzdWx0IDw8PSBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50
OwotICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0SW50NjQocmVzdWx0KTsKLSAgICAgICAg
fQorICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7
CiAgICAgICAgIAogICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlOwogICAgICAgICAKQEAg
LTQ3NzMsMzcgKzQ4MTMsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXR1cm4gaW50
NTJUb1N0cmljdEludDUyKHZhbHVlLnZhbHVlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9pbnQzMlZhbHVlcy5nZXQoZWRnZS5u
b2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgIHJldHVy
biBzZXRJbnQ1MldpdGhTdHJpY3RWYWx1ZSgKLSAgICAgICAgICAgICAgICBlZGdlLm5vZGUoKSwg
bV9vdXQuc2lnbkV4dCh2YWx1ZS52YWx1ZSgpLCBtX291dC5pbnQ2NCksIGtpbmQpOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fc3RhdGUuZm9yTm9kZShl
ZGdlKS5tX3R5cGUgJiBTcGVjSW50NTIpKTsKLSAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9q
c1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVl
KSkgewotICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gdmFsdWUudmFsdWUoKTsKLSAg
ICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShi
b3hlZFJlc3VsdCksIGVkZ2UsIFNwZWNNYWNoaW5lSW50LCBpc05vdEludDMyKGJveGVkUmVzdWx0
KSk7Ci0gICAgICAgICAgICByZXR1cm4gc2V0SW50NTJXaXRoU3RyaWN0VmFsdWUoCi0gICAgICAg
ICAgICAgICAgZWRnZS5ub2RlKCksIG1fb3V0LnNpZ25FeHQodW5ib3hJbnQzMihib3hlZFJlc3Vs
dCksIG1fb3V0LmludDY0KSwga2luZCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKCEobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIFNwZWNNYWNoaW5l
SW50KSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5t
X3R5cGUpOwogICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwogICAgICAgICByZXR1cm4g
bV9vdXQuaW50NjRaZXJvOwogICAgIH0KICAgICAKLSAgICBMVmFsdWUgbG93SW50NTIoRWRnZSBl
ZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3Vs
YXRpb24pCisgICAgTFZhbHVlIGxvd0ludDUyKEVkZ2UgZWRnZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBsb3dJbnQ1MihlZGdlLCBJbnQ1MiwgbW9kZSk7CisgICAgICAgIHJldHVybiBsb3dJbnQ1
MihlZGdlLCBJbnQ1Mik7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBsb3dTdHJpY3RJbnQ1MihF
ZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRT
cGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93U3RyaWN0SW50NTIoRWRnZSBlZGdlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGxvd0ludDUyKGVkZ2UsIFN0cmljdEludDUyLCBtb2RlKTsKKyAgICAg
ICAgcmV0dXJuIGxvd0ludDUyKGVkZ2UsIFN0cmljdEludDUyKTsKICAgICB9CiAgICAgCiAgICAg
Ym9vbCBiZXR0ZXJVc2VTdHJpY3RJbnQ1MihOb2RlKiBub2RlKQpAQCAtNDgzMCwxMCArNDg1Mywx
MCBAQCBwcml2YXRlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KICAgICAKLSAgICBMVmFsdWUgbG93V2hpY2hldmVySW50NTIoRWRnZSBlZGdlLCBJbnQ1Mktp
bmQmIGtpbmQsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRT
cGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93V2hpY2hldmVySW50NTIoRWRnZSBlZGdlLCBJbnQ1
MktpbmQmIGtpbmQpCiAgICAgewogICAgICAgICBraW5kID0gYmVzdEludDUyS2luZChlZGdlKTsK
LSAgICAgICAgcmV0dXJuIGxvd0ludDUyKGVkZ2UsIGtpbmQsIG1vZGUpOworICAgICAgICByZXR1
cm4gbG93SW50NTIoZWRnZSwga2luZCk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBsb3dDZWxs
KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFu
ZFNwZWN1bGF0aW9uKQpAQCAtNDkzMSw3MSArNDk1NCwxNSBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gbV9vdXQuYm9vbGVhbkZhbHNlOwogICAgIH0KICAgICAKLSAgICBMVmFsdWUgbG93RG91
YmxlKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3Bl
cmFuZFNwZWN1bGF0aW9uKQorICAgIExWYWx1ZSBsb3dEb3VibGUoRWRnZSBlZGdlKQogICAgIHsK
LSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbiB8fCBpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOwotICAgICAgICAKLSAgICAgICAgaWYg
KGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2dy
YXBoLnZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgICAgIGlmICghdmFs
dWUuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmRvdWJsZVplcm87Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3REb3VibGUodmFsdWUuYXNOdW1iZXIoKSk7
Ci0gICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNEb3VibGUoZWRnZS51c2VLaW5k
KCkpKTsKICAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2RvdWJs
ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCiAg
ICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsKICAgICAgICAgCi0gICAgICAgIHZhbHVl
ID0gbV9pbnQzMlZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2
YWx1ZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5pbnRUb0RvdWJsZSh2
YWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgICAgIHNldERvdWJsZShlZGdlLm5vZGUoKSwgcmVzdWx0
KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIHZhbHVlID0gbV9zdHJpY3RJbnQ1MlZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAg
ICBpZiAoaXNWYWxpZCh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gc3RyaWN0SW50NTJUb0Rv
dWJsZShlZGdlLCB2YWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9p
bnQ1MlZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkp
Ci0gICAgICAgICAgICByZXR1cm4gc3RyaWN0SW50NTJUb0RvdWJsZShlZGdlLCBpbnQ1MlRvU3Ry
aWN0SW50NTIodmFsdWUudmFsdWUoKSkpOwotICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX2pz
VmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUp
KSB7Ci0gICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSB2YWx1ZS52YWx1ZSgpOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBpbnRDYXNlID0gRlRMX05FV19CTE9D
SyhtX291dCwgKCJEb3VibGUgdW5ib3hpbmcgaW50IGNhc2UiKSk7Ci0gICAgICAgICAgICBMQmFz
aWNCbG9jayBkb3VibGVDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGUgdW5ib3hp
bmcgZG91YmxlIGNhc2UiKSk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24g
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZSB1bmJveGluZyBjb250aW51YXRpb24iKSk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc05vdEludDMyKGJveGVk
UmVzdWx0KSwgdW5zdXJlKGRvdWJsZUNhc2UpLCB1bnN1cmUoaW50Q2FzZSkpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlu
dENhc2UsIGRvdWJsZUNhc2UpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayBpbnRUb0RvdWJsZSA9IG1fb3V0LmFuY2hvcigKLSAgICAgICAgICAgICAgICBtX291dC5p
bnRUb0RvdWJsZSh1bmJveEludDMyKGJveGVkUmVzdWx0KSkpOwotICAgICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhkb3VibGVDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBGVExfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoYm94ZWRSZXN1
bHQpLCBlZGdlLCBTcGVjRnVsbE51bWJlciwgaXNDZWxsT3JNaXNjKGJveGVkUmVzdWx0KSk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHVuYm94ZWREb3VibGUgPSBt
X291dC5hbmNob3IodW5ib3hEb3VibGUoYm94ZWRSZXN1bHQpKTsKLSAgICAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSBtX291dC5waGkobV9vdXQuZG91YmxlVHlwZSwgaW50VG9Eb3VibGUs
IHVuYm94ZWREb3VibGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzZXREb3VibGUoZWRn
ZS5ub2RlKCksIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fc3RhdGUuZm9yTm9kZShlZGdl
KS5tX3R5cGUgJiBTcGVjRnVsbE51bWJlcikpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9z
dGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSk7CiAgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJs
ZSk7CiAgICAgICAgIHJldHVybiBtX291dC5kb3VibGVaZXJvOwogICAgIH0KQEAgLTUwMDMsNiAr
NDk3MCw4IEBAIHByaXZhdGU6CiAgICAgTFZhbHVlIGxvd0pTVmFsdWUoRWRnZSBlZGdlLCBPcGVy
YW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAg
ICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IFVudHlwZWRVc2UpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVCghaXNEb3VibGUoZWRnZS51c2VLaW5kKCkpKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gSW50NTJSZXBVc2UpOwogICAgICAgICAKICAgICAgICAg
aWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpCiAgICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJ
bnQ2NChKU1ZhbHVlOjplbmNvZGUobV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUo
KSkpKTsKQEAgLTUwMTgsMTQgKzQ5ODcsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX3N0cmljdElu
dDUyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkK
LSAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ1MlRvSlNWYWx1ZSh2YWx1ZS52YWx1ZSgpKTsK
LSAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9pbnQ1MlZhbHVlcy5nZXQoZWRnZS5ub2RlKCkp
OwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gc3RyaWN0
SW50NTJUb0pTVmFsdWUoaW50NTJUb1N0cmljdEludDUyKHZhbHVlLnZhbHVlKCkpKTsKLSAgICAg
ICAgCiAgICAgICAgIHZhbHVlID0gbV9ib29sZWFuVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAg
ICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewogICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IGJveEJvb2xlYW4odmFsdWUudmFsdWUoKSk7CkBAIC01MDMzLDEzICs0OTk0LDYgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIHZhbHVlID0gbV9kb3VibGVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYg
KGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gYm94RG91Ymxl
KHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShlZGdlLm5vZGUoKSwgcmVz
dWx0KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KQEAgLTUwNjUsMTEgKzUwMTksOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KICAgICAKLSAgICBMVmFsdWUgc3RyaWN0SW50NTJUb0RvdWJsZShFZGdlIGVk
Z2UsIExWYWx1ZSB2YWx1ZSkKKyAgICBMVmFsdWUgc3RyaWN0SW50NTJUb0RvdWJsZShMVmFsdWUg
dmFsdWUpCiAgICAgewotICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuaW50VG9Eb3VibGUo
dmFsdWUpOwotICAgICAgICBzZXREb3VibGUoZWRnZS5ub2RlKCksIHJlc3VsdCk7Ci0gICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBtX291dC5pbnRUb0RvdWJsZSh2YWx1ZSk7
CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBzdHJpY3RJbnQ1MlRvSlNWYWx1ZShMVmFsdWUgdmFs
dWUpCkBAIC01MDk5LDIzICs1MDUxLDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fb3V0
LnBoaShtX291dC5pbnQ2NCwgcmVzdWx0cyk7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBzZXRJ
bnQ1MldpdGhTdHJpY3RWYWx1ZShOb2RlKiBub2RlLCBMVmFsdWUgdmFsdWUsIEludDUyS2luZCBr
aW5kKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgIGNhc2UgU3RyaWN0
SW50NTI6Ci0gICAgICAgICAgICBzZXRTdHJpY3RJbnQ1Mihub2RlLCB2YWx1ZSk7Ci0gICAgICAg
ICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBJbnQ1MjoKLSAg
ICAgICAgICAgIHZhbHVlID0gc3RyaWN0SW50NTJUb0ludDUyKHZhbHVlKTsKLSAgICAgICAgICAg
IHNldEludDUyKG5vZGUsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgTFZhbHVlIHN0cmljdEludDUyVG9JbnQ1MihM
VmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuc2hsKHZhbHVlLCBtX291
dC5jb25zdEludDY0KEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpKTsKQEAgLTUxNDcsNiArNTA4
Miw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQudGVzdE5vblplcm82
NChqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpOwogICAgIH0KKyAgICAKICAgICBMVmFsdWUgdW5i
b3hEb3VibGUoTFZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuYml0
Q2FzdChtX291dC5hZGQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKSwgbV9vdXQuZG91YmxlVHlw
ZSk7CkBAIC01MTU1LDYgKzUwOTEsMzkgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVy
biBtX291dC5zdWIobV9vdXQuYml0Q2FzdChkb3VibGVWYWx1ZSwgbV9vdXQuaW50NjQpLCBtX3Rh
Z1R5cGVOdW1iZXIpOwogICAgIH0KKyAgICBMVmFsdWUganNWYWx1ZVRvRG91YmxlKEVkZ2UgZWRn
ZSwgTFZhbHVlIGJveGVkVmFsdWUpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBpbnRDYXNl
ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGVSZXAgdW5ib3hpbmcgaW50IGNhc2UiKSk7
CisgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAo
IkRvdWJsZVJlcCB1bmJveGluZyBkb3VibGUgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sg
Y29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGVSZXAgdW5ib3hpbmcg
Y29udGludWF0aW9uIikpOworICAgICAgICAgICAgCisgICAgICAgIExWYWx1ZSBpc05vdEludDMy
OworICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0lu
dDMyKSkKKyAgICAgICAgICAgIGlzTm90SW50MzIgPSBtX291dC5ib29sZWFuRmFsc2U7CisgICAg
ICAgIGVsc2UgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UsIH5TcGVjSW50
MzIpKQorICAgICAgICAgICAgaXNOb3RJbnQzMiA9IG1fb3V0LmJvb2xlYW5UcnVlOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBpc05vdEludDMyID0gdGhpcy0+aXNOb3RJbnQzMihib3hlZFZh
bHVlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIsIHVuc3VyZShkb3VibGVDYXNl
KSwgdW5zdXJlKGludENhc2UpKTsKKyAgICAgICAgICAgIAorICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGludENhc2UsIGRvdWJsZUNhc2UpOworICAgICAgICAg
ICAgCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGludFRvRG91YmxlID0gbV9vdXQuYW5jaG9yKAor
ICAgICAgICAgICAgbV9vdXQuaW50VG9Eb3VibGUodW5ib3hJbnQzMihib3hlZFZhbHVlKSkpOwor
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAKKyAgICAgICAg
bV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIAor
ICAgICAgICBGVExfVFlQRV9DSEVDSygKKyAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShib3hlZFZh
bHVlKSwgZWRnZSwgU3BlY0J5dGVjb2RlTnVtYmVyLCBpc0NlbGxPck1pc2MoYm94ZWRWYWx1ZSkp
OworICAgICAgICAgICAgCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHVuYm94ZWREb3VibGUgPSBt
X291dC5hbmNob3IodW5ib3hEb3VibGUoYm94ZWRWYWx1ZSkpOworICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIG1fb3V0
LnBoaShtX291dC5kb3VibGVUeXBlLCBpbnRUb0RvdWJsZSwgdW5ib3hlZERvdWJsZSk7CisgICAg
fQogICAgIAogICAgIExWYWx1ZSBpc051bWJlcihMVmFsdWUganNWYWx1ZSkKICAgICB7CkBAIC01
MjI2LDggKzUxOTUsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBLbm93bkludDMyVXNlOgotICAgICAgICBjYXNl
IEtub3duTnVtYmVyVXNlOgogICAgICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgorICAgICAgICBj
YXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAg
IEFTU0VSVCghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKQEAgLTUyNjAsMTQgKzUyMzAsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICAgICAg
ICAgIHNwZWN1bGF0ZVN0cmluZ09yU3RyaW5nT2JqZWN0KGVkZ2UpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgICAgIHNwZWN1bGF0ZVJl
YWxOdW1iZXIoZWRnZSk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJV
c2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVOdW1iZXIoZWRnZSk7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgotICAgICAgICAgICAgc3BlY3VsYXRlTWFj
aGluZUludChlZGdlKTsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgorICAgICAgICAg
ICAgc3BlY3VsYXRlRG91YmxlUmVhbChlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVCb29sZWFuKGVkZ2UpOwpA
QCAtNTUyOSwxNCArNTQ5NiwxMSBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgc3BlY3VsYXRl
TnVtYmVyKEVkZ2UgZWRnZSkKICAgICB7Ci0gICAgICAgIC8vIERvIGFuIGVhcmx5IHJldHVybiBo
ZXJlIGJlY2F1c2UgbG93RG91YmxlKCkgY2FuIGNyZWF0ZSBhIGxvdCBvZiBjb250cm9sIGZsb3cu
Ci0gICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGxvd0RvdWJsZShlZGdlKTsKKyAgICAg
ICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBT
cGVjQnl0ZWNvZGVOdW1iZXIsIGlzTm90TnVtYmVyKHZhbHVlKSk7CiAgICAgfQogICAgIAotICAg
IHZvaWQgc3BlY3VsYXRlUmVhbE51bWJlcihFZGdlIGVkZ2UpCisgICAgdm9pZCBzcGVjdWxhdGVE
b3VibGVSZWFsKEVkZ2UgZWRnZSkKICAgICB7CiAgICAgICAgIC8vIERvIGFuIGVhcmx5IHJldHVy
biBoZXJlIGJlY2F1c2UgbG93RG91YmxlKCkgY2FuIGNyZWF0ZSBhIGxvdCBvZiBjb250cm9sIGZs
b3cuCiAgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSkKQEAg
LTU1NDQsMTkgKzU1MDgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSB2
YWx1ZSA9IGxvd0RvdWJsZShlZGdlKTsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAg
ICAgICBkb3VibGVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNGdWxsUmVhbE51bWJlciwKKyAgICAg
ICAgICAgIGRvdWJsZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0RvdWJsZVJlYWwsCiAgICAgICAg
ICAgICBtX291dC5kb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKHZhbHVlLCB2YWx1ZSkpOwogICAg
IH0KICAgICAKLSAgICB2b2lkIHNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSBlZGdlKQotICAgIHsK
LSAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgSW50NTJLaW5kIGtpbmQ7Ci0gICAgICAg
IGxvd1doaWNoZXZlckludDUyKGVkZ2UsIGtpbmQpOwotICAgIH0KLSAgICAKICAgICB2b2lkIHNw
ZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAgIHsKICAgICAgICAgbG93Qm9vbGVhbihlZGdl
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGb3JtYXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGb3JtYXQuY3Bw
CShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVl
Rm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzEsNiArNzEsNyBAQCB2b2lkIHJlYm94QWNjb3Jk
aW5nVG9Gb3JtYXQoCiAgICAgY2FzZSBWYWx1ZUZvcm1hdERvdWJsZTogewogICAgICAgICBqaXQu
bW92ZURvdWJsZVRvNjQoRlBSSW5mbzo6ZnBSZWdUMCwgc2NyYXRjaDEpOwogICAgICAgICBqaXQu
bW92ZTY0VG9Eb3VibGUodmFsdWUsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICBqaXQuc2Fu
aXRpemVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgIGppdC5ib3hEb3VibGUoRlBS
SW5mbzo6ZnBSZWdUMCwgdmFsdWUpOwogICAgICAgICBqaXQubW92ZTY0VG9Eb3VibGUoc2NyYXRj
aDEsIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDE2NzIwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNiArNTQsMTQgQEAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFj
aGluZU9mZnNldD4mIEFzc2VtYgogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwog
fQogCit2b2lkIEFzc2VtYmx5SGVscGVyczo6c2FuaXRpemVEb3VibGUoRlBSUmVnIGZwcikKK3sK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3ROYU4gPSBicmFuY2hEb3VibGUoRG91YmxlRXF1
YWwsIGZwciwgZnByKTsKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9IFFOYU47CisgICAg
bG9hZERvdWJsZSgmTmFOLCBmcHIpOworICAgIG5vdE5hTi5saW5rKHRoaXMpOworfQorCiAjaWYg
RU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQogdm9pZCBBc3NlbWJseUhlbHBlcnM6OnNldFNhbXBsaW5n
RmxhZyhpbnQzMl90IGZsYWcpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQx
Nyw2ICs0MTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBqaXRBc3NlcnRUYWdzSW5QbGFjZSgpIHsg
fQogICAgIHZvaWQgaml0QXNzZXJ0QXJndW1lbnRDb3VudFNhbmUoKSB7IH0KICNlbmRpZgorICAg
IAorICAgIHZvaWQgc2FuaXRpemVEb3VibGUoRlBSUmVnIGZwcik7CiAKICAgICAvLyBUaGVzZSBt
ZXRob2RzIGNvbnZlcnQgYmV0d2VlbiBkb3VibGVzLCBhbmQgZG91YmxlcyBib3hlZCBhbmQgSlNW
YWx1ZXMuCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTQzNSw2ICs0MzcsMTEgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gZnByOwogICAgIH0KICAgICAKKyAgICB2b2lkIGJveERvdWJsZShGUFJS
ZWcgZnByLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyAgICAgICAgYm94RG91YmxlKGZwciwg
cmVncy5ncHIoKSk7CisgICAgfQorICAgIAogICAgIC8vIEhlcmUgYXJlIHBvc3NpYmxlIGFycmFu
Z2VtZW50cyBvZiBzb3VyY2UsIHRhcmdldCwgc2NyYXRjaDoKICAgICAvLyAtIHNvdXJjZSwgdGFy
Z2V0LCBzY3JhdGNoIGNhbiBhbGwgYmUgc2VwYXJhdGUgcmVnaXN0ZXJzLgogICAgIC8vIC0gc291
cmNlIGFuZCB0YXJnZXQgY2FuIGJlIHRoZSBzYW1lIGJ1dCBzY3JhdGNoIGlzIHNlcGFyYXRlLgpA
QCAtNDY3LDYgKzQ3NCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtb3ZlSW50c1RvRG91
YmxlKHBheWxvYWRHUFIsIHRhZ0dQUiwgZnByLCBzY3JhdGNoRlBSKTsKICAgICB9CisgICAgCisg
ICAgdm9pZCBib3hEb3VibGUoRlBSUmVnIGZwciwgSlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7Cisg
ICAgICAgIGJveERvdWJsZShmcHIsIHJlZ3MudGFnR1BSKCksIHJlZ3MucGF5bG9hZEdQUigpKTsK
KyAgICB9CiAjZW5kaWYKICAgICAKICAgICBlbnVtIEV4Y2VwdGlvbkNoZWNrS2luZCB7IE5vcm1h
bEV4Y2VwdGlvbkNoZWNrLCBJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229303</attachid>
            <date>2014-04-14 13:36:41 -0700</date>
            <delta_ts>2014-04-14 15:31:26 -0700</delta_ts>
            <desc>it sometimes passes some tests</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>171045</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3MjA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwMCBA
QAorMjAxNC0wNC0xNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBJUiBzaG91bGQga2VlcCB0aGUgZGF0YSBmbG93IG9mIGRvdWJsZXMgYW5kIGludDUyJ3Mg
c2VwYXJhdGUgZnJvbSB0aGUgZGF0YSBmbG93IG9mIEpTVmFsdWUncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBXb3JrIGluIHByb2dyZXNz
LgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OnNldEJ1aWx0SW5Db25zdGFu
dCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjo6c2V0Q29uc3RhbnQp
OgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RWYWx1ZTo6Zml4VHlwZUZvclJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKEpTQzo6REZH
OjpBYnN0cmFjdFZhbHVlOjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RWYWx1ZS5oOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Q1NFUGhhc2U6OmNvbnN0YW50Q1NFKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQ
aGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjppbnQz
MlRvRG91YmxlQ1NFKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6
CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9i
YmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAg
ICAgICAgKiBkZmcvREZHRENFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRDRVBoYXNl
OjpmaXh1cEJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHRWRnZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkVkZ2U6OndpbGxOb3RIYXZlQ2hlY2spOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpydW4pOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQ
aGFzZTo6Zml4dXBHZXRBbmRTZXRMb2NhbHNJbkJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpG
aXh1cFBoYXNlOjpvYnNlcnZlVXNlS2luZE9uTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4
dXBQaGFzZTo6Zml4SW50RWRnZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0
ZW1wdFRvTWFrZUludGVnZXJBZGQpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6Omlu
amVjdFR5cGVDb252ZXJzaW9uc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6OnRyeVRvUmVsYXhSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQ
aGFzZTo6Zml4RWRnZVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjppbmplY3RUeXBlQ29udmVyc2lvbnNGb3JFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpG
aXh1cFBoYXNlOjphZGRQaGFudG9tc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpG
aXh1cFBoYXNlOjpmaXh1cFNldExvY2Fsc0luQmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIGRm
Zy9ERkdGbHVzaEZvcm1hdC5oOgorICAgICAgICAoSlNDOjpERkc6OnJlc3VsdEZvcik6CisgICAg
ICAgIChKU0M6OkRGRzo6dXNlS2luZEZvcik6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0luUGxh
Y2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RT
dGF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAo
V1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OnNldFJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6cmVz
dWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0NvbnN0YW50KToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29u
dmVydFRvQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnZhbHVlT2ZKU0NvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNSZXN1bHQpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6Omhhc0ludDMyUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNJbnQ1MlJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzTnVtYmVyUmVzdWx0
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNEb3VibGVSZXN1bHQpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0pTUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNCb29sZWFuUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdG9yYWdlUmVz
dWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpkZWZhdWx0VXNlS2luZCk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6ZGVmYXVsdEVkZ2UpOgorICAgICAgICAqIGRmZy9ERkdOb2RlRmxh
Z3MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmR1bXBOb2RlRmxhZ3MpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlRmxhZ3MuaDoKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9T
UkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29t
cGlsZXI2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxl
RXhpdCk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRl
KToKKyAgICAgICAgKiBkZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2U6OnJ1bik6
CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9F
eGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9y
KCkpOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OnNpbGVudFNhdmVQbGFuRm9yR1BSKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6c2lsZW50U2F2ZVBsYW5Gb3JGUFIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpzaWxlbnRGaWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpKU1ZhbHVlUmVnc1RlbXBvcmFy
eTo6SlNWYWx1ZVJlZ3NUZW1wb3JhcnkpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVSZWdz
VGVtcG9yYXJ5Ojp+SlNWYWx1ZVJlZ3NUZW1wb3JhcnkpOgorICAgICAgICAoSlNDOjpERkc6OkpT
VmFsdWVSZWdzVGVtcG9yYXJ5OjpyZWdzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2hlY2tHZW5lcmF0ZWRUeXBlRm9yVG9JbnQzMik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUmVwKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFy
cmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFkZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1Yik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE11bCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aERpdik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGVEb3VibGVSZWFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUludDMyVG9Eb3VibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVNYWNoaW5lSW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlUmVhbE51bWJlcik6IERlbGV0ZWQuCisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmJveERvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Ompz
VmFsdWVSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUludDUyT3BlcmFuZDo6
U3BlY3VsYXRlSW50NTJPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVTdHJp
Y3RJbnQ1Mk9wZXJhbmQ6OlNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kOjpTcGVjdWxhdGVXaGljaGV2
ZXJJbnQ1Mk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQ6OlNwZWN1bGF0ZURvdWJsZU9wZXJhbmQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFs
dWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50
MzJJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVJbnQ1Mik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVEb3VibGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVCb29sZWFuKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QnJh
bmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRUb0RvdWJsZSk6IERlbGV0ZWQu
CisgICAgICAgICogZGZnL0RGR1VzZUtpbmQuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVy
bmFsKToKKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5
cGVGaWx0ZXJGb3IpOgorICAgICAgICAoSlNDOjpERkc6OnNob3VsZE5vdEhhdmVUeXBlQ2hlY2sp
OgorICAgICAgICAoSlNDOjpERkc6Om1heUhhdmVUeXBlQ2hlY2spOgorICAgICAgICAoSlNDOjpE
Rkc6OmlzTnVtZXJpY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjppc0RvdWJsZSk6CisgICAgICAg
IChKU0M6OkRGRzo6aXNDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjp1c2VzU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6REZHOjp1c2VLaW5kRm9yUmVzdWx0KToKKyAgICAgICAgKiBkZmcvREZH
VmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6Cisg
ICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2Fu
Q29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y3JlYXRlUGhpVmFyaWFibGVzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVXBzaWxvbik6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQaGkpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlRG91YmxlQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjpjb21waWxlSW50NTJDb25zdGFudCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVXZWFrSlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVEb3VibGVSZXApOgorICAgICAgICAoSlNDOjpGVEw6Okxv
d2VyREZHVG9MTFZNOjpjb21waWxlVmFsdWVSZXApOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjpjb21waWxlSW50NTJSZXApOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlVmFsdWVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUFyaXRoQWRkT3JTdWIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjpjb21waWxlQXJpdGhNdWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlQXJpdGhEaXYpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlQXJpdGhNb2QpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlQXJpdGhNaW5Pck1heCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVBcml0aEFicyk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OmNvbXBpbGVBcml0aE5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OmNvbXBpbGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNv
bXBpbGVDb21wYXJlRXEpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21w
aWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
Y29tcGFyZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmJvb2xpZnkpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dJbnQ1Mik6CisgICAgICAgIChK
U0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd1N0cmljdEludDUyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6bG93V2hpY2hldmVySW50NTIpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpsb3dEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjpsb3dKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExW
TTo6c3RyaWN0SW50NTJUb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OmpzVmFsdWVUb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OnNwZWN1bGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0
ZU51bWJlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZURv
dWJsZVJlYWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlSW50
NTJUb1ZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
Y29tcGlsZUludDMyVG9Eb3VibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjpzZXRJbnQ1MldpdGhTdHJpY3RWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZVJlYWxOdW1iZXIpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVNYWNoaW5lSW50KTog
RGVsZXRlZC4KKyAgICAgICAgKiBmdGwvRlRMVmFsdWVGb3JtYXQuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OnJlYm94QWNjb3JkaW5nVG9Gb3JtYXQpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnNhbml0aXplRG91Ymxl
KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6Ym94RG91YmxlKToKKwogMjAxNC0wNC0wOCAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJld3JpdGUgRnVuY3Rpb24uYmluZCBhcyBhIGJ1aWx0
aW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkRG
R0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUu
aCIKLSNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNs
dWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNjcyMDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDEwICs0NSw2IEBACiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAi
REZHQ29tbW9uRGF0YS5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCi0jaW5jbHVkZSAi
REZHTWluaWZpZWRHcmFwaC5oIgotI2luY2x1ZGUgIkRGR09TUkVudHJ5LmgiCi0jaW5jbHVkZSAi
REZHT1NSRXhpdC5oIgotI2luY2x1ZGUgIkRGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaCIKICNpbmNs
dWRlICJEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJFdmFsQ29kZUNh
Y2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0aW9uQ291bnRlci5oIgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9u
IDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTcsOSArMTU3LDE2IEBAIHByaXZhdGU6CiAgICAgfTsK
ICAgICBCb29sZWFuUmVzdWx0IGJvb2xlYW5SZXN1bHQoTm9kZSosIEFic3RyYWN0VmFsdWUmKTsK
ICAgICAKKyAgICB2b2lkIHNldEJ1aWx0SW5Db25zdGFudChOb2RlKiBub2RlLCBKU1ZhbHVlIHZh
bHVlKQorICAgIHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgYWJzdHJhY3RWYWx1ZSA9IGZvck5v
ZGUobm9kZSk7CisgICAgICAgIGFic3RyYWN0VmFsdWUuc2V0KG1fZ3JhcGgsIHZhbHVlKTsKKyAg
ICAgICAgYWJzdHJhY3RWYWx1ZS5maXhUeXBlRm9yUmVwcmVzZW50YXRpb24obm9kZSk7CisgICAg
fQorICAgIAogICAgIHZvaWQgc2V0Q29uc3RhbnQoTm9kZSogbm9kZSwgSlNWYWx1ZSB2YWx1ZSkK
ICAgICB7Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIHZhbHVlKTsKKyAgICAg
ICAgc2V0QnVpbHRJbkNvbnN0YW50KG5vZGUsIHZhbHVlKTsKICAgICAgICAgbV9zdGF0ZS5zZXRG
b3VuZENvbnN0YW50cyh0cnVlKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw5ICsxMjYsMTEg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIAogICAgIHN3
aXRjaCAobm9kZS0+b3AoKSkgewogICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICBjYXNlIERvdWJs
ZUNvbnN0YW50OgorICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICBjYXNlIFdlYWtKU0NvbnN0
YW50OgogICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czogewotICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldChtX2dyYXBoLCBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG5vZGUpKTsKKyAgICAgICAg
c2V0QnVpbHRJbkNvbnN0YW50KG5vZGUsIG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobm9kZSkp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMzA3LDM5ICszMDksMzkgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50MzJUb0RvdWJsZTogeworICAgIGNhc2UgRG91
YmxlUmVwOiB7CiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS52YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJs
ZSwgY2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNE
b3VibGVOdW1iZXIoY2hpbGQuYXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3Vi
bGVSZWFsKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNEb3VibGUpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5maXhUeXBlRm9yUmVw
cmVzZW50YXRpb24obm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAg
Y2FzZSBJbnQ1MlRvRG91YmxlOiB7CisgICAgY2FzZSBJbnQ1MlJlcDogeworICAgICAgICBSRUxF
QVNFX0FTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSW50MzJVc2UpOworICAgICAg
ICAKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVl
KCk7Ci0gICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgIGlm
IChjaGlsZCAmJiBjaGlsZC5pc0ludDMyKCkpIHsKICAgICAgICAgICAgIHNldENvbnN0YW50KG5v
ZGUsIGNoaWxkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgCisgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAg
IAotICAgIGNhc2UgSW50NTJUb1ZhbHVlOiB7Ci0gICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQu
aXNOdW1iZXIoKSkgewotICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQpOworICAg
IGNhc2UgVmFsdWVSZXA6IHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgc2V0
Q29uc3RhbnQobm9kZSwgdmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlw
ZTsKLSAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NTIpCi0gICAgICAgICAgICB0eXBlID0gKHR5
cGUgfCBTcGVjSW50MzIgfCBTcGVjSW50NTJBc0RvdWJsZSkgJiB+U3BlY0ludDUyOwotICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUodHlwZSk7CisgICAgICAgIAorICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKTsKKyAgICAgICAg
Zm9yTm9kZShub2RlKS5maXhUeXBlRm9yUmVwcmVzZW50YXRpb24obm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0zNzAsNyArMzcyLDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrT3Zl
cmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4
aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNl
OgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmln
aHQgJiYgbGVmdC5pc01hY2hpbmVJbnQoKSAmJiByaWdodC5pc01hY2hpbmVJbnQoKSkgewogICAg
ICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIobGVmdC5hc01hY2hpbmVJbnQo
KSArIHJpZ2h0LmFzTWFjaGluZUludCgpKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmlz
TWFjaGluZUludCgpKSB7CkBAIC0zODMsNyArMzg1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIHx8ICFmb3JOb2RlKG5vZGUtPmNo
aWxkMigpKS5pc1R5cGUoU3BlY0ludDMyKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5F
eGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgor
ICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0
ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIobGVmdC5hc051bWJlcigpICsgcmlnaHQuYXNO
dW1iZXIoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDI2LDcgKzQyOCw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGlmIChz
aG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSkKICAgICAgICAgICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
TWFjaGluZUludFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAgIGlm
IChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNNYWNoaW5lSW50KCkgJiYgcmlnaHQuaXNNYWNoaW5l
SW50KCkpIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGxlZnQu
YXNNYWNoaW5lSW50KCkgLSByaWdodC5hc01hY2hpbmVJbnQoKSk7CiAgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdC5pc01hY2hpbmVJbnQoKSB8fCAhc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5h
cml0aE1vZGUoKSkpIHsKQEAgLTQzOSw3ICs0NDEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hp
bGQyKCkpLmlzVHlwZShTcGVjSW50MzIpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4
aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6Cisg
ICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQg
JiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihsZWZ0LmFzTnVtYmVyKCkgLSByaWdodC5hc051
bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00NzcsNyArNDc5LDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNo
b3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKQogICAgICAgICAgICAgICAgIG5v
ZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBN
YWNoaW5lSW50VXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgaWYg
KGNoaWxkICYmIGNoaWxkLmlzTWFjaGluZUludCgpKSB7CiAgICAgICAgICAgICAgICAgZG91Ymxl
IGRvdWJsZVJlc3VsdDsKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQ2hlY2tOZWdhdGl2ZVpl
cm8obm9kZS0+YXJpdGhNb2RlKCkpKQpAQCAtNDk2LDcgKzQ5OCw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja05l
Z2F0aXZlWmVybyhub2RlLT5hcml0aE1vZGUoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0
Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVz
ZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAoY2hpbGQgJiYg
Y2hpbGQuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
TnVtYmVyKC1jaGlsZC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01
MzMsNyArNTM1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKQog
ICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNl
OgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc01hY2hpbmVJbnQoKSAm
JiByaWdodC5pc01hY2hpbmVJbnQoKSkgewogICAgICAgICAgICAgICAgIGRvdWJsZSBkb3VibGVS
ZXN1bHQgPSBsZWZ0LmFzTnVtYmVyKCkgKiByaWdodC5hc051bWJlcigpOwogICAgICAgICAgICAg
ICAgIGlmICghc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhNb2RlKCkpKQpAQCAt
NTQ3LDcgKzU0OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkK
ICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NTIpOwogICAgICAgICAg
ICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBp
ZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkg
ewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGxlZnQuYXNOdW1i
ZXIoKSAqIHJpZ2h0LmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTU4
NSw3ICs1ODcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAg
IG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYg
KGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsK
ICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihsZWZ0LmFzTnVtYmVy
KCkgLyByaWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC02MTks
NyArNjIxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
TnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChs
ZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CiAg
ICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoZm1vZChsZWZ0LmFzTnVt
YmVyKCksIHJpZ2h0LmFzTnVtYmVyKCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC02
NDUsNyArNjQ3LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAg
ICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlm
IChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7
CiAgICAgICAgICAgICAgICAgZG91YmxlIGEgPSBsZWZ0LmFzTnVtYmVyKCk7CiAgICAgICAgICAg
ICAgICAgZG91YmxlIGIgPSByaWdodC5hc051bWJlcigpOwpAQCAtNjczLDcgKzY3NSw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhp
dCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVzZToKKyAg
ICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAm
JiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgICAg
IGRvdWJsZSBhID0gbGVmdC5hc051bWJlcigpOwogICAgICAgICAgICAgICAgIGRvdWJsZSBiID0g
cmlnaHQuYXNOdW1iZXIoKTsKQEAgLTcwMyw3ICs3MDUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0ludDMyKTsKICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91Ymxl
UmVwVXNlOgogICAgICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKICAg
ICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihjaGlsZC5hc051bWJlcigp
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03NjksNyArNzcxLDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAg
ICAgICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgICAgICAgICBjYXNlIE51bWJlclVzZToKKyAg
ICAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgY2FzZSBVbnR5cGVkVXNl
OgogICAgICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJ
KHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY3LDggKzY3LDYgQEAgdm9pZCBBYnN0cmFjdFZh
bHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBKUwogICAgIH0KICAgICAKICAgICBtX3R5cGUgPSBzcGVj
dWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSk7Ci0gICAgaWYgKG1fdHlwZSA9PSBTcGVjSW50NTJBc0Rv
dWJsZSkKLSAgICAgICAgbV90eXBlID0gU3BlY0ludDUyOwogICAgIG1fdmFsdWUgPSB2YWx1ZTsK
ICAgICAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC04NSw2ICs4MywzOCBAQCB2b2lkIEFi
c3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIFN0CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgp
OwogfQogCit2b2lkIEFic3RyYWN0VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihOb2Rl
RmxhZ3MgcmVwcmVzZW50YXRpb24pCit7CisgICAgaWYgKHJlcHJlc2VudGF0aW9uID09IE5vZGVS
ZXN1bHREb3VibGUpIHsKKyAgICAgICAgaWYgKG1fdHlwZSAmIFNwZWNNYWNoaW5lSW50KSB7Cisg
ICAgICAgICAgICBtX3R5cGUgJj0gflNwZWNNYWNoaW5lSW50OworICAgICAgICAgICAgbV90eXBl
IHw9IFNwZWNJbnQ1MkFzRG91YmxlOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCEobV90eXBlICYgflNwZWNEb3VibGUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
KyAgICBpZiAocmVwcmVzZW50YXRpb24gPT0gTm9kZVJlc3VsdEludDUyKSB7CisgICAgICAgIGlm
IChtX3R5cGUgJiBTcGVjSW50NTJBc0RvdWJsZSkgeworICAgICAgICAgICAgbV90eXBlICY9IH5T
cGVjSW50NTJBc0RvdWJsZTsKKyAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTI7CisgICAg
ICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3R5cGUgJiB+U3BlY01hY2hpbmVJbnQp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAobV90eXBlICYgU3BlY0lu
dDUyKSB7CisgICAgICAgIG1fdHlwZSAmPSB+U3BlY0ludDUyOworICAgICAgICBtX3R5cGUgfD0g
U3BlY0ludDUyQXNEb3VibGU7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKCEobV90eXBlICYg
flNwZWNCeXRlY29kZVRvcCkpOworfQorCit2b2lkIEFic3RyYWN0VmFsdWU6OmZpeFR5cGVGb3JS
ZXByZXNlbnRhdGlvbihOb2RlKiBub2RlKQoreworICAgIGZpeFR5cGVGb3JSZXByZXNlbnRhdGlv
bihub2RlLT5yZXN1bHQoKSk7Cit9CisKIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6
ZmlsdGVyKEdyYXBoJiBncmFwaCwgY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikKIHsKICAgICBp
ZiAoaXNDbGVhcigpKQpAQCAtMjQ0LDYgKzI3NCw4IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6Y2hl
Y2tDb25zaXN0ZW5jeSgpIGMKICAgICAKICAgICBpZiAoISFtX3ZhbHVlKSB7CiAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIHR5cGUgPSBtX3R5cGU7CisgICAgICAgIC8vIFRoaXMgcmVsYXhlcyB0aGUg
YXNzZXJ0aW9uIGJlbG93IGEgYml0LCBzaW5jZSB3ZSBkb24ndCBrbm93IHRoZSByZXByZXNlbnRh
dGlvbiBvZiB0aGUKKyAgICAgICAgLy8gbm9kZS4KICAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50
NTIpCiAgICAgICAgICAgICB0eXBlIHw9IFNwZWNJbnQ1MkFzRG91YmxlOwogICAgICAgICBBU1NF
UlQobWVyZ2VTcGVjdWxhdGlvbnModHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUobV92YWx1ZSkp
ID09IHR5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFZhbHVlLmgJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJE
RkdGaWx0cmF0aW9uUmVzdWx0LmgiCisjaW5jbHVkZSAiREZHTm9kZUZsYWdzLmgiCiAjaW5jbHVk
ZSAiREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2lu
Y2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCkBAIC0zOSw2ICs0MCw3IEBACiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIEdyYXBoOworc3RydWN0IE5vZGU7CiAKIHN0cnVj
dCBBYnN0cmFjdFZhbHVlIHsKICAgICBBYnN0cmFjdFZhbHVlKCkKQEAgLTEyOSw2ICsxMzEsOSBA
QCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAg
ICB9CiAgICAgCisgICAgdm9pZCBmaXhUeXBlRm9yUmVwcmVzZW50YXRpb24oTm9kZUZsYWdzIHJl
cHJlc2VudGF0aW9uKTsKKyAgICB2b2lkIGZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihOb2RlKik7
CisgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFic3RyYWN0VmFsdWUmIG90aGVyKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGUKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxNjcy
MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYxLDI5ICsxNjEsMTEgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIAotICAgIE5vZGUqIGludDMyVG9Eb3Vi
bGVDU0UoTm9kZSogbm9kZSkKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5k
ZXhJbkJsb2NrOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBvdGhlck5vZGUgPSBtX2N1cnJl
bnRCbG9jay0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAob3RoZXJOb2RlID09IG5vZGUtPmNoaWxk
MSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgc3dpdGNoIChvdGhl
ck5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKLSAgICAgICAg
ICAgICAgICBpZiAob3RoZXJOb2RlLT5jaGlsZDEoKS5zYW5pdGl6ZWQoKSA9PSBub2RlLT5jaGls
ZDEoKS5zYW5pdGl6ZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyTm9kZTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotICAgIAogICAgIE5vZGUqIGNvbnN0YW50Q1NFKE5vZGUqIG5vZGUpCiAgICAgewog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBlbmRJbmRleEZvclB1cmVDU0UoKTsgaS0tOykgewog
ICAgICAgICAgICAgTm9kZSogb3RoZXJOb2RlID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwotICAg
ICAgICAgICAgaWYgKG90aGVyTm9kZS0+b3AoKSAhPSBKU0NvbnN0YW50KQorICAgICAgICAgICAg
aWYgKG90aGVyTm9kZS0+b3AoKSAhPSBub2RlLT5vcCgpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5jb25zdGFudE51
bWJlcigpICE9IG5vZGUtPmNvbnN0YW50TnVtYmVyKCkpCkBAIC0xMTQ4LDggKzExMzAsOSBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIENvbXBhcmVFcUNvbnN0YW50OgogICAgICAgICBjYXNlIFZh
bHVlVG9JbnQzMjoKICAgICAgICAgY2FzZSBNYWtlUm9wZToKLSAgICAgICAgY2FzZSBJbnQ1MlRv
RG91YmxlOgotICAgICAgICBjYXNlIEludDUyVG9WYWx1ZToKKyAgICAgICAgY2FzZSBEb3VibGVS
ZXA6CisgICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgIGNhc2UgSW50NTJSZXA6CiAgICAg
ICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQocHVyZUNTRShub2RlKSk7CkBAIC0x
MTc3LDEyICsxMTYwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgotICAgICAgICAgICAg
aWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KGludDMyVG9Eb3VibGVDU0Uobm9kZSkpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRDYWxsZWU6CiAg
ICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTI2MSwxMyArMTIzOCwxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
bm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOwogICAgICAgICAgICAgTm9kZSogZGF0YU5vZGUgPSBy
ZXBsYWNlbWVudC0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICAgICAgQVNTRVJUKGRhdGFOb2Rl
LT5oYXNSZXN1bHQoKSk7Ci0gICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IEVkZ2UoZGF0YU5v
ZGUpOworICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkgPSBkYXRhTm9kZS0+ZGVmYXVsdEVkZ2Uo
KTsKICAgICAgICAgICAgIG1fZ3JhcGguZGV0aHJlYWQoKTsKICAgICAgICAgICAgIG1fY2hhbmdl
ZCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAg
ICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3Rv
cmVFbGltaW5hdGlvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIC8vIFRo
aXMgaXMgc3RyYW5nZSwgYnV0IG5lY2Vzc2FyeS4gU29tZSBwaGFzZXMgd2lsbCBjb252ZXJ0IG5v
ZGVzIHRvIGNvbnN0YW50cywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
REZHQ29tbW9uLmgiCi0jaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUu
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE2
NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUKICAgICAKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNlIEpT
Q29uc3RhbnQ6CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBjYXNlIEludDUyQ29uc3Rh
bnQ6CiAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAgICBjYXNlIElkZW50aXR5OgogICAgIGNh
c2UgUGhhbnRvbToKQEAgLTEyMywxNSArMTI1LDE1IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIElzTnVtYmVyOgogICAgIGNhc2UgSXNTdHJpbmc6
CiAgICAgY2FzZSBMb2dpY2FsTm90OgotICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOgotICAgIGNhc2UgSW50NTJUb0RvdWJsZToKLSAgICBjYXNl
IEludDUyVG9WYWx1ZToKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgY2FzZSBDb25zdGFu
dFN0b3JhZ2VQb2ludGVyOgogICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAgY2FzZSBEb3Vi
bGVBc0ludDMyOgogICAgIGNhc2UgQ2hlY2s6CisgICAgY2FzZSBEb3VibGVSZXA6CisgICAgY2Fz
ZSBWYWx1ZVJlcDoKKyAgICBjYXNlIEludDUyUmVwOgogICAgICAgICByZXR1cm47CiAgICAgICAg
IAogICAgIGNhc2UgTW92SGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNjcyMDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjk5LDYgKzI5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBB
YnN0cmFjdFZhbHVlIG9sZFZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUpOwogICAgICAgICAg
ICAgQWJzdHJhY3RWYWx1ZSBjb25zdGFudFZhbHVlOwogICAgICAgICAgICAgY29uc3RhbnRWYWx1
ZS5zZXQobV9ncmFwaCwgdmFsdWUpOworICAgICAgICAgICAgY29uc3RhbnRWYWx1ZS5maXhUeXBl
Rm9yUmVwcmVzZW50YXRpb24obm9kZSk7CiAgICAgICAgICAgICBpZiAob2xkVmFsdWUubWVyZ2Uo
Y29uc3RhbnRWYWx1ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2
aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NCwxMyArMTk0LDEyIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAg
IGNhc2UgTW92SGludDogewotICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBub2RlLT5jaGlsZDEoKS0+ZGVmYXVsdFVzZUtpbmQoKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKS0+c2hvdWxkR2VuZXJhdGUoKSkgewog
ICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhab21iaWVIaW50
KTsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkgPSBFZGdlKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBu
b2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhNb3ZIaW50KTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRWRnZS5oCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0VkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTIyLDcgKzEyMiw3
IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHdpbGxOb3RIYXZlQ2hlY2soKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIGlzUHJvdmVkKCkgfHwgdXNlS2luZCgpID09IFVudHlwZWRVc2U7
CisgICAgICAgIHJldHVybiBpc1Byb3ZlZCgpIHx8IHNob3VsZE5vdEhhdmVUeXBlQ2hlY2sodXNl
S2luZCgpKTsKICAgICB9CiAgICAgYm9vbCB3aWxsSGF2ZUNoZWNrKCkgY29uc3QKICAgICB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlz
aW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9uc1tpXS5tZXJnZUFyZ3VtZW50VW5ib3hpbmdB
d2FyZW5lc3MoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJs
b2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0lu
ZGV4KQotICAgICAgICAgICAgICAgIGZpeHVwU2V0TG9jYWxzSW5CbG9jayhtX2dyYXBoLmJsb2Nr
KGJsb2NrSW5kZXgpKTsKKyAgICAgICAgICAgICAgICBmaXh1cEdldEFuZFNldExvY2Fsc0luQmxv
Y2sobV9ncmFwaC5ibG9jayhibG9ja0luZGV4KSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgu
bnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkKQEAgLTEyMyw4ICsxMjMsMTAgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAg
ZWxzZSBpZiAobm9kZUNhblNwZWN1bGF0ZUludDMyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQog
ICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7
Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBu
b2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkRvT3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIG5v
ZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTEzNSwxMCArMTM3LDExIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyRXhwZWN0aW5nRGVmaW5lZChub2Rl
LT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAg
ICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUt
PnNldE9wKEFyaXRoQWRkKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCk7CisgICAgICAgICAgICAgICAgbm9kZS0+
c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0xNzcsOCArMTgwLDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBBcml0aFN1YjogewogICAgICAgICAgICAgaWYgKGF0dGVtcHRUb01ha2VJbnRl
Z2VyQWRkKG5vZGUpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZml4RWRn
ZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVy
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91Ymxl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE5NCwx
NCArMTk4LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAobV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGlmIChieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZl
WmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVy
Zmxvd0FuZE5lZ2F0aXZlWmVybyk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5v
ZGVSZXN1bHRJbnQ1Mik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5v
ZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKQEAgLTIxOCwxNiArMjI0LDE4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobV9ncmFw
aC5tdWxTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBpZiAo
Ynl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAg
ICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxv
dyk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRB
cml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3dBbmROZWdhdGl2ZVplcm8pOworICAgICAgICAg
ICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKQEAgLTI0NiwyNCArMjU0LDI2IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZs
b3dBbmROZWdhdGl2ZVplcm8pOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsK
IAogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gcmVmJ2luZyBvbiB0aGUg
Y2hpbGRyZW4gYmVjYXVzZSB3ZSdyZSBzdGVhbGluZyB0aGVtIGZyb20KICAgICAgICAgICAgICAg
ICAvLyB0aGUgb3JpZ2luYWwgZGl2aXNpb24uCiAgICAgICAgICAgICAgICAgTm9kZSogbmV3RGl2
aXNpb24gPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY0RvdWJsZSwgKm5vZGUpOworICAgICAgICAgICAgICAgIG5ld0Rp
dmlzaW9uLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0T3AoRG91YmxlQXNJbnQzMik7Ci0gICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGRyZW4uaW5pdGlhbGl6ZShFZGdlKG5ld0RpdmlzaW9uLCBLbm93bk51bWJl
clVzZSksIEVkZ2UoKSwgRWRnZSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5p
bml0aWFsaXplKEVkZ2UobmV3RGl2aXNpb24sIERvdWJsZVJlcFVzZSksIEVkZ2UoKSwgRWRnZSgp
KTsKICAgICAgICAgICAgICAgICBpZiAoYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9k
ZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRo
TW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3dBbmRO
ZWdhdGl2ZVplcm8pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
IGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdl
PERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3Vi
bGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChO
b2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKQEAgLTI3NSw4ICsyODUsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBu
b2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAgICAgCkBAIC0yODYsNyArMjk3LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91
YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTI5
NCw3ICszMDYsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEFyaXRoRlJvdW5kOgogICAgICAg
ICBjYXNlIEFyaXRoU2luOgogICAgICAgICBjYXNlIEFyaXRoQ29zOiB7Ci0gICAgICAgICAgICBm
aXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxE
b3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3Vs
dChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTMwNiw3ICszMTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZWxzZSBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgZWxzZSBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKQotICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGVsc2Ug
aWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0zMzcsMTQgKzM1MCwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKGVuYWJsZUludDUyKCkKICAgICAgICAgICAgICAgICAmJiBOb2RlOjpzaG91bGRT
cGVjdWxhdGVNYWNoaW5lSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCku
bm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZUNsb2JiZXJzV29ybGQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihub2RlLT5j
aGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNs
ZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQwMiwxMyArNDE1LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZW5hYmxlSW50NTIoKQogICAgICAg
ICAgICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hpbGQx
KCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4
RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4
RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1i
ZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAg
ICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3Bl
Y3VsYXRlU3RyaW5nSWRlbnQoKSkgewpAQCAtNTAxLDcgKzUxNCw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CisgICAgICAgICAgICBhcnJh
eU1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2Rl
LnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9u
czoKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVucHJvZmlsZWQ6CiAgICAgICAgICAgICBjYXNl
IEFycmF5OjpVbmRlY2lkZWQ6CkBAIC01MjAsNiArNTM0LDMwIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgICAg
IHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91
YmxlOgorICAgICAgICAgICAgICAgIGlmICghYXJyYXlNb2RlLmlzT3V0T2ZCb3VuZHMoKSkKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBB
cnJheTo6RmxvYXQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5
OgorICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2Ug
QXJyYXk6OlVpbnQzMkFycmF5OgorICAgICAgICAgICAgICAgIGlmIChub2RlLT5zaG91bGRTcGVj
dWxhdGVJbnQzMigpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQorICAgICAgICAgICAgICAg
ICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91Ymxl
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTU1OSwxNCArNTk3LDE0
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDMpOwogICAgICAgICAgICAg
ICAgIGlmIChjaGlsZDMtPnByZWRpY3Rpb24oKSAmIFNwZWNJbnQ1MikKLSAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEludDUyUmVwVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQzKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihjaGlsZDIpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8UmVhbE51bWJl
clVzZT4oY2hpbGQzKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFJlYWxVc2U+
KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5
OjpJbnQ4QXJyYXk6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQxNkFycmF5OgpAQCAtNTgw
LDE1ICs2MTgsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQzLT5zaG91
bGRTcGVjdWxhdGVJbnQzMigpKQogICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNl
PihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkMy0+c2hvdWxkU3BlY3Vs
YXRlTWFjaGluZUludCgpKQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRV
c2U+KGNoaWxkMyk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGNo
aWxkMyk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdl
PE51bWJlclVzZT4oY2hpbGQzKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVS
ZXBVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IEFycmF5OjpGbG9hdDMyQXJyYXk6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJy
YXk6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KGNoaWxkMSk7CiAgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPE51bWJlclVzZT4oY2hpbGQzKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJs
ZVJlcFVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3Jh
Z2U6CkBAIC02MzAsNyArNjY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdl
PEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxSZWFs
TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3Vi
bGVSZXBSZWFsVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAgICAgICAgY2FzZSBBcnJh
eTo6QXJyYXlTdG9yYWdlOgpAQCAtNjYzLDcgKzcwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAg
ICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpCi0gICAg
ICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogCiAgICAgICAg
ICAgICBOb2RlKiBsb2dpY2FsTm90ID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICAg
ICAgaWYgKGxvZ2ljYWxOb3QtPm9wKCkgPT0gTG9naWNhbE5vdCkgewpAQCAtNzYwLDcgKzc5OCw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFM
TF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBv
cGVyYW5kSW5kZXggPSAwOyBvcGVyYW5kSW5kZXggPCBub2RlLT5udW1DaGlsZHJlbigpOyArK29w
ZXJhbmRJbmRleCkKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxSZWFsTnVtYmVyVXNlPiht
X2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgb3BlcmFuZEluZGV4
XSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwUmVhbFVzZT4obV9ncmFw
aC5tX3ZhckFyZ0NoaWxkcmVuW25vZGUtPmZpcnN0Q2hpbGQoKSArIG9wZXJhbmRJbmRleF0pOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19J
TkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfSU5ERVhJ
TkdfVFlQRVM6CkBAIC05NjEsMTYgKzk5OSwxOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENo
ZWNrVGllclVwSW5Mb29wOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAg
ICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKLSAgICAgICAgY2FzZSBJbnQ1MlRvRG91
YmxlOgotICAgICAgICBjYXNlIEludDUyVG9WYWx1ZToKICAgICAgICAgY2FzZSBJbnZhbGlkYXRp
b25Qb2ludDoKICAgICAgICAgY2FzZSBDaGVja0FycmF5OgogICAgICAgICBjYXNlIENoZWNrSW5C
b3VuZHM6CiAgICAgICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICAgICAgY2Fz
ZSBEb3VibGVBc0ludDMyOgotICAgICAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAgICAgIGNh
c2UgVmFsdWVUb0ludDMyOgogICAgICAgICBjYXNlIEhhcmRQaGFudG9tOiAvLyBIYXJkUGhhbnRv
bSB3b3VsZCBiZSB0cml2aWFsIHRvIGhhbmRsZSBidXQgYW55d2F5IHdlIGFzc2VydCB0aGF0IHdl
IHdvbid0IHNlZSBpdCBoZXJlIHlldC4KKyAgICAgICAgY2FzZSBEb3VibGVSZXA6CisgICAgICAg
IGNhc2UgSW50NTJSZXA6CisgICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgIGNhc2UgRG91
YmxlQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgICAgIC8v
IFRoZXNlIGFyZSBqdXN0IG5vZGVzIHRoYXQgd2UgZG9uJ3QgY3VycmVudGx5IGV4cGVjdCB0byBz
ZWUgZHVyaW5nIGZpeHVwLgogICAgICAgICAgICAgLy8gSWYgd2UgZXZlciB3YW50ZWQgdG8gaW5z
ZXJ0IHRoZW0gcHJpb3IgdG8gZml4dXAsIHRoZW4gd2UganVzdCBoYXZlIHRvIGNyZWF0ZQogICAg
ICAgICAgICAgLy8gZml4dXAgcnVsZXMgZm9yIHRoZW0uCkBAIC0xMzEyLDcgKzEzNTIsNyBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBmaXh1
cFNldExvY2Fsc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCisgICAgdm9pZCBmaXh1cEdldEFu
ZFNldExvY2Fsc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCiAgICAgewogICAgICAgICBpZiAo
IWJsb2NrKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMyMCwyOCArMTM2MCw0OSBAQCBwcml2
YXRlOgogICAgICAgICBtX2Jsb2NrID0gYmxvY2s7CiAgICAgICAgIGZvciAobV9pbmRleEluQmxv
Y2sgPSAwOyBtX2luZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbmRleEluQmxvY2sp
IHsKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1cnJlbnROb2RlID0gYmxvY2stPmF0KG1f
aW5kZXhJbkJsb2NrKTsKLSAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFNldExvY2FsKQor
ICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gU2V0TG9jYWwgJiYgbm9kZS0+b3AoKSAhPSBH
ZXRMb2NhbCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpOwotICAgICAgICAgICAgc3dpdGNoICh2YXJpYWJsZS0+Zmx1c2hGb3JtYXQoKSkgewot
ICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBGbHVzaGVkSW50NTI6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIEZsdXNoZWRDZWxsOgotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAg
ICAgICBjYXNlIEdldExvY2FsOgorICAgICAgICAgICAgICAgIHN3aXRjaCAodmFyaWFibGUtPmZs
dXNoRm9ybWF0KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZsdXNoZWREb3VibGU6CisgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50NTI6
CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHZh
cmlhYmxlLT5mbHVzaEZvcm1hdCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNW
YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBG
bHVzaGVkRG91YmxlOgorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQ1MjoKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgorICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE0Njcs
NyArMTUyOCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hh
bmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAgICAgICBjYXNlIFJlYWxO
dW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBjYXNlIERvdWJs
ZVJlcFJlYWxVc2U6CiAgICAgICAgICAgICBpZiAodmFyaWFibGUtPmRvdWJsZUZvcm1hdFN0YXRl
KCkgPT0gVXNpbmdEb3VibGVGb3JtYXQpCiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5
Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xNDc2LDcgKzE1MzgsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIHx8IGlzQm9vbGVhblNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQog
ICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdl
SXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAg
ICBpZiAoaXNNYWNoaW5lSW50U3BlY3VsYXRpb24odmFyaWFibGUtPnByZWRpY3Rpb24oKSkpCiAg
ICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJ
c1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTE5LDkg
KzE1ODEsOSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgVXNlS2luZCB1c2VLaW5kOwog
ICAgICAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQotICAgICAgICAg
ICAgdXNlS2luZCA9IE1hY2hpbmVJbnRVc2U7CisgICAgICAgICAgICB1c2VLaW5kID0gSW50NTJS
ZXBVc2U7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKQot
ICAgICAgICAgICAgdXNlS2luZCA9IE51bWJlclVzZTsKKyAgICAgICAgICAgIHVzZUtpbmQgPSBE
b3VibGVSZXBVc2U7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZUJvb2xl
YW4oKSkKICAgICAgICAgICAgIHVzZUtpbmQgPSBCb29sZWFuVXNlOwogICAgICAgICBlbHNlCkBA
IC0xNTg5LDkgKzE2NTEsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkgewotICAg
ICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
IGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldEFy
aXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1
bHQoTm9kZVJlc3VsdEludDUyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgICAgIApAQCAtMTcyNCw5NyArMTc4NywxNDUgQEAgcHJpdmF0ZToKICAgICAgICAgZm9y
IChtX2luZGV4SW5CbG9jayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKytt
X2luZGV4SW5CbG9jaykgewogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJsb2NrLT5hdCht
X2luZGV4SW5CbG9jayk7CiAgICAgICAgICAgICBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCk7Ci0g
ICAgICAgICAgICBpZiAobV9jdXJyZW50Tm9kZS0+Y29udGFpbnNNb3ZIaW50KCkpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0cnlUb1JlbGF4UmVwcmVzZW50YXRpb24o
bV9jdXJyZW50Tm9kZSk7CiAgICAgICAgICAgICBERkdfTk9ERV9ET19UT19DSElMRFJFTihtX2dy
YXBoLCBtX2N1cnJlbnROb2RlLCBpbmplY3RUeXBlQ29udmVyc2lvbnNGb3JFZGdlKTsKICAgICAg
ICAgfQogICAgICAgICBjbGVhclBoYW50b21zQXRFbmQoKTsKICAgICAgICAgbV9pbnNlcnRpb25T
ZXQuZXhlY3V0ZShibG9jayk7CiAgICAgfQogICAgIAorICAgIHZvaWQgdHJ5VG9SZWxheFJlcHJl
c2VudGF0aW9uKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICAvLyBTb21lIG9wZXJhdGlvbnMg
bWF5IGJlIGFibGUgdG8gb3BlcmF0ZSBtb3JlIGVmZmljaWVudGx5IG92ZXIgbG9vc2VyIHJlcHJl
c2VudGF0aW9ucy4KKyAgICAgICAgLy8gSWRlbnRpZnkgdGhvc2UgaGVyZS4gVGhpcyBhdm9pZHMg
aW5zZXJ0aW5nIGEgcmVkdW5kYW50IHJlcHJlc2VudGF0aW9uIGNvbnZlcnNpb24uCisgICAgICAg
IC8vIEFsc28sIGZvciBzb21lIG9wZXJhdGlvbnMsIGxpa2UgTW92SGludCwgdGhpcyBpcyBhIG5l
Y2Vzc2FyeSBvcHRpbWl6YXRpb246IGluc2VydGluZworICAgICAgICAvLyBhbiBvdGhlcndpc2Ut
ZGVhZCBjb252ZXJzaW9uIGp1c3QgZm9yIGEgTW92SGludCB3b3VsZCBicmVhayBPU1IncyB1bmRl
cnN0YW5kaW5nIG9mCisgICAgICAgIC8vIHRoZSBJUi4KKyAgICAgICAgCisgICAgICAgIHN3aXRj
aCAobm9kZS0+b3AoKSkgeworICAgICAgICBjYXNlIE1vdkhpbnQ6CisgICAgICAgIGNhc2UgUGhh
bnRvbToKKyAgICAgICAgY2FzZSBDaGVjazoKKyAgICAgICAgY2FzZSBIYXJkUGhhbnRvbToKKyAg
ICAgICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG1fY3VycmVudE5vZGUs
IGZpeEVkZ2VSZXByZXNlbnRhdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNlCisgICAgICAgICAgICAgICAgJiYgIW5vZGUt
PmNoaWxkMSgpLT5oYXNEb3VibGVSZXN1bHQoKSkgeworICAgICAgICAgICAgICAgIG5vZGUtPmNo
aWxkMSgpLnNldFVzZUtpbmQoTnVtYmVyVXNlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2
b2lkIGZpeEVkZ2VSZXByZXNlbnRhdGlvbihOb2RlKiwgRWRnZSYgZWRnZSkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAoZWRnZS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6
CisgICAgICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICAgICAgICAgIGlmIChlZGdlLT5o
YXNEb3VibGVSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpCisgICAgICAgICAgICAgICAg
ZWRnZS5zZXRVc2VLaW5kKEludDUyUmVwVXNlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVkZ2Uu
dXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkKKyAgICAgICAgICAgICAgICBlZGdlLnNldFVzZUtp
bmQoTnVtYmVyVXNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgICAgICAvLyBOb3RoaW5nIHdlIGNhbiByZWFsbHkg
ZG8uCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFVudHlw
ZWRVc2U6CisgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpCisgICAgICAg
ICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKERvdWJsZVJlcFVzZSk7CisgICAgICAgICAgICBlbHNl
IGlmIChlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAgICAgICAgICAgIGVkZ2Uuc2V0VXNl
S2luZChJbnQ1MlJlcFVzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAg
CiAgICAgdm9pZCBpbmplY3RUeXBlQ29udmVyc2lvbnNGb3JFZGdlKE5vZGUqIG5vZGUsIEVkZ2Um
IGVkZ2UpCiAgICAgewogICAgICAgICBBU1NFUlQobm9kZSA9PSBtX2N1cnJlbnROb2RlKTsKICAg
ICAgICAgCi0gICAgICAgIGlmIChpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpIHsKLSAgICAgICAg
ICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgewotICAg
ICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MkFz
RG91YmxlLCBJbnQzMlRvRG91YmxlLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4s
IEVkZ2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChlZGdlLnVzZUtpbmQoKSkgeworICAgICAg
ICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOiB7Cisg
ICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpCisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYmIGVk
Z2UtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkgewotICAgICAgICAgICAgICAgIC8vIE1h
a2UgYWxsIGRvdWJsZSB1c2VzIG9mIGludDUyIHZhbHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJ
bnQ1MlRvRG91YmxlLgotICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBzYW1lIHJl
YXNvbiBhcyBJbnQ1MlRvVmFsdWUgKHNlZSBiZWxvdykgZXhjZXB0IHRoYXQKLSAgICAgICAgICAg
ICAgICAvLyBJbnQ4VG9Eb3VibGUgd2lsbCBjb252ZXJ0IGludDUyJ3MgdGhhdCBmaXQgaW4gYW4g
aW50MzIgaW50byBhIGRvdWJsZQotICAgICAgICAgICAgICAgIC8vIHJhdGhlciB0aGFuIHRyeWlu
ZyB0byBjcmVhdGUgYSBib3hlZCBpbnQzMiBsaWtlIEludDUyVG9WYWx1ZSBkb2VzLgotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUo
KSk7Ci0gICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MkFzRG91
YmxlLCBJbnQ1MlRvRG91YmxlLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4sIEVk
Z2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwotICAgICAgICAgICAgICAgIGVkZ2Uuc2V0Tm9k
ZShyZXN1bHQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGFkZFJlcXVp
cmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7CisKKyAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKKyAg
ICAgICAgICAgIGlmIChlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKSB7CisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAg
bV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MkFzRG91YmxlLCBEb3VibGVSZXAsIG5vZGUtPm9yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgSW50NTJSZXBVc2UpKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNw
ZWNEb3VibGUsIERvdWJsZVJlcCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBF
ZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgaWYgKGVuYWJsZUludDUyKCkgJiYgZWRnZS51c2VLaW5kKCkgIT0g
TWFjaGluZUludFVzZQotICAgICAgICAgICAgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGlu
ZUludCgpICYmICFlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7Ci0gICAgICAgICAgICAv
LyBXZSBtYWtlIGFsbCBub24taW50NTIgdXNlcyBvZiBpbnQ1MiB2YWx1ZXMgaGF2ZSBhbiBpbnRl
cm1lZGlhdGUgSW50NTJUb1ZhbHVlCi0gICAgICAgICAgICAvLyBub2RlIHRvIGVuc3VyZSB0aGF0
IHdlIGhhbmRsZSB0aGlzIHByb3Blcmx5OgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8v
IGE6IFNvbWVJbnQ1MgotICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoQGEsIC4uLikKLSAgICAg
ICAgICAgIC8vIGM6IENhbGwoLi4uLCBAYSkKLSAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEBh
LCAuLi4pCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gV2l0aG91dCBhbiBpbnRlcm1l
ZGlhdGUgbm9kZSBhbmQganVzdCBsYWJlbGluZyB0aGUgdXNlcywgd2Ugd2lsbCBnZXQ6Ci0gICAg
ICAgICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29tZUludDUyCi0gICAgICAgICAgICAvLyBi
OiBBcml0aEFkZChJbnQ1MjpAYSwgLi4uKQotICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIFVu
dHlwZWQ6QGEpCi0gICAgICAgICAgICAvLyBkOiBBcml0aEFkZChJbnQ1MjpAYSwgLi4uKQotICAg
ICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIEFuZCBub3cgdGhlIGMtPlVudHlwZWQ6QGEgZWRn
ZSB3aWxsIGJveCB0aGUgdmFsdWUgb2YgQGEgaW50byBhIGRvdWJsZS4gVGhpcwotICAgICAgICAg
ICAgLy8gaXMgYmFkLCBiZWNhdXNlIG5vdyB0aGUgZC0+SW50NTI6QGEgZWRnZSB3aWxsIGVpdGhl
ciBoYXZlIHRvIGRvIGRvdWJsZS10by1pbnQKLSAgICAgICAgICAgIC8vIGNvbnZlcnNpb25zLCBv
ciB3aWxsIGhhdmUgdG8gT1NSIGV4aXQgdW5jb25kaXRpb25hbGx5LiBBbHRlcm5hdGl2ZWx5IHdl
IGNvdWxkCi0gICAgICAgICAgICAvLyBoYXZlIHRoZSBjLT5VbnR5cGVkOkBhIGVkZ2UgYm94IHRo
ZSB2YWx1ZSBieSBjb3B5aW5nIHJhdGhlciB0aGFuIGluLXBsYWNlLgotICAgICAgICAgICAgLy8g
QnV0IHRoZXNlIGJveGluZ3MgYXJlIGFsc28gY29zdGx5IHNvIHRoaXMgd291bGRuJ3QgYmUgZ3Jl
YXQuCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gVGhlIHNvbHV0aW9uIHdlIHVzZSBp
cyB0byBhbHdheXMgaGF2ZSBub24tSW50NTIgdXNlcyBvZiBwcmVkaWN0ZWQgSW50NTIncyB1c2UK
LSAgICAgICAgICAgIC8vIGFuIGludGVydmVuaW5nIEludDUyVG9WYWx1ZSBub2RlOgotICAgICAg
ICAgICAgLy8KLSAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ1MgotICAgICAgICAgICAgLy8gYjog
QXJpdGhBZGQoSW50NTI6QGEsIC4uLikKLSAgICAgICAgICAgIC8vIHg6IEludDUyVG9WYWx1ZShJ
bnQ1MjpAYSkKLSAgICAgICAgICAgIC8vIGM6IENhbGwoLi4uLCBVbnR5cGVkOkB4KQotICAgICAg
ICAgICAgLy8gZDogQXJpdGhBZGQoSW50NTI6QGEsIC4uLikKLSAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICAvLyBOb3RlIHRoYXQgZXZlbiBpZiB3ZSBoYWQgbXVsdGlwbGUgbm9uLWludDUyIHVz
ZXMgb2YgQGEsIHRoZSBtdWx0aXBsZQotICAgICAgICAgICAgLy8gSW50NTJUb1ZhbHVlJ3Mgd291
bGQgZ2V0IENTRSdkIHRvZ2V0aGVyLiBTbyB0aGUgYm94aW5nIHdvdWxkIG9ubHkgaGFwcGVuIG9u
Y2UuCi0gICAgICAgICAgICAvLyBBdCB0aGUgc2FtZSB0aW1lLCBAYSB3b3VsZCBjb250aW51ZSB0
byBiZSByZXByZXNlbnRlZCBhcyBhIG5hdGl2ZSBpbnQ1Mi4KLSAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICAvLyBBbiBhbHRlcm5hdGl2ZSB3b3VsZCBoYXZlIGJlZW4gdG8gaW5zZXJ0IFRvTmF0
aXZlSW50NTIgbm9kZXMgb24gaW50NTIgdXNlcyBvZgotICAgICAgICAgICAgLy8gaW50NTIncy4g
VGhpcyB3b3VsZCBoYXZlIGhhbmRsZWQgdGhlIGFib3ZlIGV4YW1wbGUgYnV0IHdvdWxkIGZhbGwg
b3ZlciBmb3I6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29tZUludDUyCi0g
ICAgICAgICAgICAvLyBiOiBDYWxsKC4uLiwgQGEpCi0gICAgICAgICAgICAvLyBjOiBBcml0aEFk
ZChAYSwgLi4uKQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIEJ1dCB0aGUgc29sdXRp
b24gd2UgdXNlIGhhbmRsZXMgdGhlIGFib3ZlIGdyYWNlZnVsbHkuCisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0ludDUy
UmVzdWx0KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAgICBOb2RlKiBy
ZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgIG1faW5k
ZXhJbkJsb2NrLCBTcGVjSW50NTIsIEludDUyVG9WYWx1ZSwKLSAgICAgICAgICAgICAgICBub2Rl
LT5vcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIFVudHlwZWRVc2UpKTsKKworICAgICAgICAgICAg
Tm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKSB7
CisgICAgICAgICAgICAgICAgLy8gVGhpcyB3aWxsIG5ldmVyIGhhcHBlbi4KKyAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfSBlbHNlIGlm
IChlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgeworICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAg
ICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIsIEludDUyUmVwLCBub2RlLT5vcmlnaW4s
CisgICAgICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIEludDMyVXNlKSk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgb25seSBoZXJlIGZv
ciBkZWFsaW5nIHdpdGggY29uc3RhbnRzLgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGVkZ2UtPm9wKCkgPT0gSlNDb25zdGFudCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxv
Y2ssIFNwZWNNYWNoaW5lSW50LCBJbnQ1MkNvbnN0YW50LCBub2RlLT5vcmlnaW4sCisgICAgICAg
ICAgICAgICAgICAgIE9wSW5mbyhlZGdlLT5jb25zdGFudE51bWJlcigpKSk7CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOwotICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICBkZWZhdWx0OiB7CisgICAgICAgICAgICBpZiAoIWVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpICYm
ICFlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBOb2RlKiByZXN1bHQ7CisgICAgICAgICAgICBpZiAoZWRn
ZS0+aGFzRG91YmxlUmVzdWx0KCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywg
U3BlY0RvdWJsZSwgVmFsdWVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAg
RWRnZShlZGdlLm5vZGUoKSwgRG91YmxlUmVwVXNlKSk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAg
ICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIgfCBTcGVjSW50NTJBc0Rv
dWJsZSwgVmFsdWVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShl
ZGdlLm5vZGUoKSwgSW50NTJSZXBVc2UpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfSB9CiAgICAgfQogICAgIAogICAgIHZvaWQgYWRkUmVxdWlyZWRQaGFudG9tKE5vZGUq
IG5vZGUpCkBAIC0xODQxLDkgKzE5NTIsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcmVxdWlyZWRQaGFudG9t
cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX3JlcXVpcmVkUGhh
bnRvbXNbaV07CiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgTm9kZU9yaWdpbiht
X2NvZGVPcmlnaW5PZlBoYW50b21zKSwKLSAgICAgICAgICAgICAgICBFZGdlKG1fcmVxdWlyZWRQ
aGFudG9tc1tpXSwgVW50eXBlZFVzZSkpOworICAgICAgICAgICAgICAgIG5vZGUtPmRlZmF1bHRF
ZGdlKCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX3JlcXVpcmVkUGhhbnRvbXMu
cmVzaXplKDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1h
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3Jt
YXQuaAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
bHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Miw3ICs2Miw3IEBAIGlubGluZSBOb2RlRmxh
Z3MgcmVzdWx0Rm9yKEZsdXNoRm9ybWF0IGYKICAgICBjYXNlIEZsdXNoZWRJbnQ1MjoKICAgICAg
ICAgcmV0dXJuIE5vZGVSZXN1bHRJbnQ1MjsKICAgICBjYXNlIEZsdXNoZWREb3VibGU6Ci0gICAg
ICAgIHJldHVybiBOb2RlUmVzdWx0TnVtYmVyOworICAgICAgICByZXR1cm4gTm9kZVJlc3VsdERv
dWJsZTsKICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgogICAgICAgICByZXR1cm4gTm9kZVJlc3Vs
dEJvb2xlYW47CiAgICAgfQpAQCAtODMsOSArODMsOSBAQCBpbmxpbmUgVXNlS2luZCB1c2VLaW5k
Rm9yKEZsdXNoRm9ybWF0IGZvCiAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIHJldHVy
biBJbnQzMlVzZTsKICAgICBjYXNlIEZsdXNoZWRJbnQ1MjoKLSAgICAgICAgcmV0dXJuIE1hY2hp
bmVJbnRVc2U7CisgICAgICAgIHJldHVybiBJbnQ1MlJlcFVzZTsKICAgICBjYXNlIEZsdXNoZWRE
b3VibGU6Ci0gICAgICAgIHJldHVybiBOdW1iZXJVc2U7CisgICAgICAgIHJldHVybiBEb3VibGVS
ZXBVc2U7CiAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKICAgICAgICAgcmV0dXJuIEJvb2xlYW5V
c2U7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJl
dmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChK
U1ZhbHVlKG5vZGUtPnR5cGVkQXJyYXkoKSksIGNvbnRleHQpKTsKICAgICBpZiAobm9kZS0+aGFz
U3RvcmFnZVBvaW50ZXIoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBSYXdQb2ludGVyKG5v
ZGUtPnN0b3JhZ2VQb2ludGVyKCkpKTsKLSAgICBpZiAob3AgPT0gSlNDb25zdGFudCkgeworICAg
IGlmIChub2RlLT5pc0NvbnN0YW50KCkpIHsKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiJCIs
IG5vZGUtPmNvbnN0YW50TnVtYmVyKCkpOwogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gdmFsdWVP
ZkpTQ29uc3RhbnQobm9kZSk7CiAgICAgICAgIG91dC5wcmludCgiID0gIiwgaW5Db250ZXh0KHZh
bHVlLCBjb250ZXh0KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxh
Y2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTY3MjA0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1NSwxNCArMTU1LDIyIEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6
OmluaXRpYWxpemUoKQogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5j
bGVhcigpOwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigp
OwogICAgICAgICB9CisgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCisgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGJsb2NrLT5ieXRlY29kZUJlZ2luICE9IG1fZ3Jh
cGgubV9wbGFuLm9zckVudHJ5Qnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ3JhcGgubV9tdXN0SGFuZGxlQWJzdHJh
Y3RWYWx1ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUg
PSBtX2dyYXBoLm1fbXVzdEhhbmRsZUFic3RyYWN0VmFsdWVzW2ldOwogICAgICAgICAgICAgaW50
IG9wZXJhbmQgPSBtX2dyYXBoLm1fbXVzdEhhbmRsZUFic3RyYWN0VmFsdWVzLm9wZXJhbmRGb3JJ
bmRleChpKTsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQub3BlcmFuZChvcGVyYW5k
KS5tZXJnZSh2YWx1ZSk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPnZhcmlhYmxl
c0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpOworICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZSA9IG1f
Z3JhcGgubV9tdXN0SGFuZGxlQWJzdHJhY3RWYWx1ZXNbaV07CisgICAgICAgICAgICBBYnN0cmFj
dFZhbHVlJiBhYnN0cmFjdFZhbHVlID0gYmxvY2stPnZhbHVlc0F0SGVhZC5vcGVyYW5kKG9wZXJh
bmQpOworICAgICAgICAgICAgYWJzdHJhY3RWYWx1ZS5tZXJnZSh2YWx1ZSk7CisgICAgICAgICAg
ICBhYnN0cmFjdFZhbHVlLmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbigKKyAgICAgICAgICAgICAg
ICByZXN1bHRGb3Iobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkpKTsK
ICAgICAgICAgfQogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7CiAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCShyZXZpc2lvbiAxNjcy
MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjEsNyArMTIxLDEwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBOb2QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBvdXQucHJpbnQoIkAiLCBub2Rl
LT5pbmRleCgpKTsKLSAgICBvdXQucHJpbnQoQWJicmV2aWF0ZWRTcGVjdWxhdGlvbkR1bXAobm9k
ZS0+cHJlZGljdGlvbigpKSk7CisgICAgaWYgKG5vZGUtPmhhc0RvdWJsZVJlc3VsdCgpKQorICAg
ICAgICBvdXQucHJpbnQoIjxEb3VibGU+Iik7CisgICAgZWxzZSBpZiAobm9kZS0+aGFzSW50NTJS
ZXN1bHQoKSkKKyAgICAgICAgb3V0LnByaW50KCI8SW50NTI+Iik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE2
NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiREZHTm9kZUZsYWdzLmgiCiAjaW5jbHVk
ZSAiREZHTm9kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkRGR05vZGVUeXBlLmgiCisjaW5jbHVkZSAi
REZHVXNlS2luZC5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIgogI2luY2x1
ZGUgIkdldEJ5SWRWYXJpYW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgpAQCAtMzI1LDYg
KzMyNiwxOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBmaWx0ZXJGbGFncyh+Zmxh
Z3MpOwogICAgIH0KICAgICAKKyAgICB2b2lkIHNldFJlc3VsdChOb2RlRmxhZ3MgcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCEocmVzdWx0ICYgfk5vZGVSZXN1bHRNYXNrKSk7CisgICAg
ICAgIGNsZWFyRmxhZ3MoTm9kZVJlc3VsdE1hc2spOworICAgICAgICBtZXJnZUZsYWdzKHJlc3Vs
dCk7CisgICAgfQorICAgIAorICAgIE5vZGVGbGFncyByZXN1bHQoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGZsYWdzKCkgJiBOb2RlUmVzdWx0TWFzazsKKyAgICB9CisgICAgCiAgICAg
dm9pZCBzZXRPcEFuZERlZmF1bHRGbGFncyhOb2RlVHlwZSBvcCkKICAgICB7CiAgICAgICAgIG1f
b3AgPSBvcDsKQEAgLTM2OCw3ICszODEsMTQgQEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIGJv
b2wgaXNDb25zdGFudCgpCiAgICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBKU0NvbnN0YW50
OworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBKU0NvbnN0YW50OgorICAg
ICAgICBjYXNlIERvdWJsZUNvbnN0YW50OgorICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICBib29sIGlzV2Vha0NvbnN0
YW50KCkKQEAgLTM4NSw2ICs0MDUsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICBz
d2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgICAgICBjYXNlIERv
dWJsZUNvbnN0YW50OgorICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgIGNhc2Ug
V2Vha0pTQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtNDAxLDcgKzQyMywxMiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
CiAgICAgdm9pZCBjb252ZXJ0VG9Db25zdGFudCh1bnNpZ25lZCBjb25zdGFudE51bWJlcikKICAg
ICB7Ci0gICAgICAgIG1fb3AgPSBKU0NvbnN0YW50OworICAgICAgICBpZiAoaGFzRG91YmxlUmVz
dWx0KCkpCisgICAgICAgICAgICBtX29wID0gRG91YmxlQ29uc3RhbnQ7CisgICAgICAgIGVsc2Ug
aWYgKGhhc0ludDUyUmVzdWx0KCkpCisgICAgICAgICAgICBtX29wID0gSW50NTJDb25zdGFudDsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9vcCA9IEpTQ29uc3RhbnQ7CiAgICAgICAgIG1f
ZmxhZ3MgJj0gfihOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlciB8IE5vZGVDbG9i
YmVyc1dvcmxkKTsKICAgICAgICAgbV9vcEluZm8gPSBjb25zdGFudE51bWJlcjsKICAgICAgICAg
Y2hpbGRyZW4ucmVzZXQoKTsKQEAgLTUwMiw2ICs1MjksOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSh3ZWFr
Q29uc3RhbnQoKSk7CiAgICAgICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBEb3Vi
bGVDb25zdGFudDoKKyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICAgICAgcmV0
dXJuIGNvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCArIGNvbnN0YW50TnVtYmVyKCkpLmdldCgpOwogICAgICAgICBjYXNlIFBoYW50b21Bcmd1bWVu
dHM6CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtNzk3LDMyICs4MjYsNTIgQEAg
c3RydWN0IE5vZGUgewogICAgIAogICAgIGJvb2wgaGFzUmVzdWx0KCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2s7CisgICAgICAgIHJldHVybiAhIXJlc3Vs
dCgpOwogICAgIH0KIAogICAgIGJvb2wgaGFzSW50MzJSZXN1bHQoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRJbnQzMjsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdCgpID09IE5vZGVSZXN1bHRJbnQzMjsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBoYXNJbnQ1MlJlc3VsdCgpCisgICAgeworICAgICAgICByZXR1cm4gcmVzdWx0KCkg
PT0gTm9kZVJlc3VsdEludDUyOwogICAgIH0KICAgICAKICAgICBib29sIGhhc051bWJlclJlc3Vs
dCgpCiAgICAgewotICAgICAgICByZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0g
Tm9kZVJlc3VsdE51bWJlcjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdCgpID09IE5vZGVSZXN1bHRO
dW1iZXI7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzRG91YmxlUmVzdWx0KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiByZXN1bHQoKSA9PSBOb2RlUmVzdWx0RG91YmxlOwogICAgIH0KICAgICAK
ICAgICBib29sIGhhc0pTUmVzdWx0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiAobV9mbGFncyAm
IE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0SlM7CisgICAgICAgIHJldHVybiByZXN1bHQo
KSA9PSBOb2RlUmVzdWx0SlM7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzQm9vbGVhblJlc3Vs
dCgpCiAgICAgewotICAgICAgICByZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0g
Tm9kZVJlc3VsdEJvb2xlYW47CisgICAgICAgIHJldHVybiByZXN1bHQoKSA9PSBOb2RlUmVzdWx0
Qm9vbGVhbjsKICAgICB9CiAKICAgICBib29sIGhhc1N0b3JhZ2VSZXN1bHQoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRTdG9y
YWdlOworICAgICAgICByZXR1cm4gcmVzdWx0KCkgPT0gTm9kZVJlc3VsdFN0b3JhZ2U7CisgICAg
fQorICAgIAorICAgIFVzZUtpbmQgZGVmYXVsdFVzZUtpbmQoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHVzZUtpbmRGb3JSZXN1bHQocmVzdWx0KCkpOworICAgIH0KKyAgICAKKyAgICBFZGdlIGRl
ZmF1bHRFZGdlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBFZGdlKHRoaXMsIGRlZmF1bHRVc2VL
aW5kKCkpOwogICAgIH0KIAogICAgIGJvb2wgaXNKdW1wKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5jcHAJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDcsNiArNDcsOSBAQCB2b2lkIGR1bXBOb2RlRmxhZ3MoUHJpbnRTdHJlYW0mIGFj
dHVhbE91CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdE51bWJlcjoKICAgICAgICAgICAgIG91dC5w
cmludChjb21tYSwgIk51bWJlciIpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Tm9kZVJlc3VsdERvdWJsZToKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgIkRvdWJsZSIp
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgogICAg
ICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiSW50MzIiKTsKICAgICAgICAgICAgIGJyZWFrOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCShyZXZpc2lvbiAx
NjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwxMCArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogI2RlZmluZSBOb2RlUmVzdWx0TWFzayAgICAgICAgICAgICAgICAgICAw
eDAwMDcKICNkZWZpbmUgTm9kZVJlc3VsdEpTICAgICAgICAgICAgICAgICAgICAgMHgwMDAxCiAj
ZGVmaW5lIE5vZGVSZXN1bHROdW1iZXIgICAgICAgICAgICAgICAgIDB4MDAwMgotI2RlZmluZSBO
b2RlUmVzdWx0SW50MzIgICAgICAgICAgICAgICAgICAweDAwMDMKLSNkZWZpbmUgTm9kZVJlc3Vs
dEludDUyICAgICAgICAgICAgICAgICAgMHgwMDA0Ci0jZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFu
ICAgICAgICAgICAgICAgIDB4MDAwNQotI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAg
ICAgICAgICAweDAwMDYKKyNkZWZpbmUgTm9kZVJlc3VsdERvdWJsZSAgICAgICAgICAgICAgICAg
MHgwMDAzCisjZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAgICAgICAgICAgICAgIDB4MDAwNAor
I2RlZmluZSBOb2RlUmVzdWx0SW50NTIgICAgICAgICAgICAgICAgICAweDAwMDUKKyNkZWZpbmUg
Tm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAgICAgICAgMHgwMDA2CisjZGVmaW5lIE5vZGVSZXN1
bHRTdG9yYWdlICAgICAgICAgICAgICAgIDB4MDAwNwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKICNkZWZpbmUgTm9kZU11c3RHZW5lcmF0ZSAgICAgICAgICAgICAgICAgMHgwMDA4
IC8vIHNldCBvbiBub2RlcyB0aGF0IGhhdmUgc2lkZSBlZmZlY3RzLCBhbmQgbWF5IG5vdCB0cml2
aWFsbHkgYmUgcmVtb3ZlZCBieSBEQ0UuCiAjZGVmaW5lIE5vZGVIYXNWYXJBcmdzICAgICAgICAg
ICAgICAgICAgIDB4MDAxMApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogQSBjb25zdGFudCBpbiB0aGUgQ29kZUJsb2NrJ3Mg
Y29uc3RhbnQgcG9vbC4gKi9cCiAgICAgbWFjcm8oSlNDb25zdGFudCwgTm9kZVJlc3VsdEpTIHwg
Tm9kZURvZXNOb3RFeGl0KSBcCiAgICAgXAorICAgIC8qIENvbnN0YW50cyB3aXRoIHNwZWNpZmlj
IHJlcHJlc2VudGF0aW9ucy4gKi9cCisgICAgbWFjcm8oRG91YmxlQ29uc3RhbnQsIE5vZGVSZXN1
bHREb3VibGUgfCBOb2RlRG9lc05vdEV4aXQpIFwKKyAgICBtYWNybyhJbnQ1MkNvbnN0YW50LCBO
b2RlUmVzdWx0SW50NTIgfCBOb2RlRG9lc05vdEV4aXQpIFwKKyAgICBcCiAgICAgLyogQSBjb25z
dGFudCBub3QgaW4gdGhlIENvZGVCbG9jaydzIGNvbnN0YW50IHBvb2wuIFVzZXMgZ2V0IHBhdGNo
ZWQgdG8ganVtcHMgdGhhdCBleGl0IHRoZSAqL1wKICAgICAvKiBjb2RlIGJsb2NrLiAqL1wKICAg
ICBtYWNybyhXZWFrSlNDb25zdGFudCwgTm9kZVJlc3VsdEpTIHwgTm9kZURvZXNOb3RFeGl0KSBc
CkBAIC0xMDYsMTUgKzExMCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgLyogVXNlZCB0byBib3ggdGhlIHJlc3VsdCBvZiBVUlNoaWZ0IG5vZGVzIChyZXN1bHQgaGFz
IHJhbmdlIDAuLjJeMzItMSkuICovXAogICAgIG1hY3JvKFVJbnQzMlRvTnVtYmVyLCBOb2RlUmVz
dWx0TnVtYmVyKSBcCiAgICAgXAotICAgIC8qIFVzZWQgdG8gY2FzdCBrbm93biBpbnRlZ2VycyB0
byBkb3VibGVzLCBzbyBhcyB0byBzZXBhcmF0ZSB0aGUgZG91YmxlIGZvcm0gKi9cCi0gICAgLyog
b2YgdGhlIHZhbHVlIGZyb20gdGhlIGludGVnZXIgZm9ybS4gKi9cCi0gICAgbWFjcm8oSW50MzJU
b0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlcikgXAotICAgIC8qIFVzZWQgdG8gc3BlY3VsYXRlIHRo
YXQgYSBkb3VibGUgdmFsdWUgaXMgYWN0dWFsbHkgYW4gaW50ZWdlci4gKi9cCisgICAgLyogQXR0
ZW1wdCB0byB0cnVuY2F0ZSBhIGRvdWJsZSB0byBpbnQzMjsgdGhpcyB3aWxsIGV4aXQgaWYgaXQg
Y2FuJ3QgZG8gaXQuICovXAogICAgIG1hY3JvKERvdWJsZUFzSW50MzIsIE5vZGVSZXN1bHRJbnQz
MikgXAotICAgIC8qIFVzZWQgdG8gc2VwYXJhdGUgcmVwcmVzZW50YXRpb24gYW5kIHJlZ2lzdGVy
IGFsbG9jYXRpb24gb2YgSW50NTIncyByZXByZXNlbnRlZCAqL1wKLSAgICAvKiBhcyB2YWx1ZXMu
ICovXAotICAgIG1hY3JvKEludDUyVG9WYWx1ZSwgTm9kZVJlc3VsdEpTKSBcCi0gICAgbWFjcm8o
SW50NTJUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlcikgXAorICAgIFwKKyAgICAvKiBDaGFuZ2Ug
dGhlIHJlcHJlc2VudGF0aW9uIG9mIGEgdmFsdWUuICovXAorICAgIG1hY3JvKERvdWJsZVJlcCwg
Tm9kZVJlc3VsdERvdWJsZSkgXAorICAgIG1hY3JvKEludDUyUmVwLCBOb2RlUmVzdWx0SW50NTIp
IFwKKyAgICBtYWNybyhWYWx1ZVJlcCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIE5v
ZGVzIGZvciBhcml0aG1ldGljIG9wZXJhdGlvbnMuICovXAogICAgIG1hY3JvKEFyaXRoQWRkLCBO
b2RlUmVzdWx0TnVtYmVyKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlcjMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAkocmV2aXNpb24gMTY3MjA0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2OSw5ICsyNjksNyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29t
cGlsZUV4aXQoY29uc3QgCiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2hu
aXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgSW5QYWlyOgotICAgICAgICBjYXNlIEluRlBSOgogICAg
ICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFj
ZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCiAgICAgICAgICAgICAgICAg
JmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+
YXNCaXRzLnRhZywKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CkBAIC0yODYsNiAr
Mjg0LDE0IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAg
ICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbkZQUjoKKyAgICAgICAg
Y2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBtX2ppdC5tb3ZlKEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpy
ZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJ
bmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LnNhbml0aXplRG91YmxlKEZQUkluZm86
OmZwUmVnVDApOworICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdU
MCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworCiAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CiAgICAgICAgIGNhc2UgSW50
MzJEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNw
cAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsNyBAQCB2b2lk
IE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIGNhc2UgRG91Ymxl
RGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwogICAg
ICAgICAgICAgbV9qaXQubG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdU
MCk7CisgICAgICAgICAgICBtX2ppdC5zYW5pdGl6ZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwKTsK
ICAgICAgICAgICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpy
ZWdUMCk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJs
eUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5MCw3ICs0OTAsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5VmFs
QWxpYXM6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQ6Ci0gICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICAgICAg
Y2FzZSBEb3VibGVBc0ludDMyOgogICAgICAgICBjYXNlIEdldExvY2FsVW5saW5rZWQ6CiAgICAg
ICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6CkBAIC01MDQsMTEgKzUwMywxNCBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgICAgIGNhc2UgQ2hl
Y2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKLSAg
ICAgICAgY2FzZSBJbnQ1MlRvVmFsdWU6Ci0gICAgICAgIGNhc2UgSW50NTJUb0RvdWJsZToKICAg
ICAgICAgY2FzZSBDaGVja0luQm91bmRzOgogICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKLSAg
ICAgICAgY2FzZSBIYXJkUGhhbnRvbTogeworICAgICAgICBjYXNlIEhhcmRQaGFudG9tOgorICAg
ICAgICBjYXNlIERvdWJsZVJlcDoKKyAgICAgICAgY2FzZSBJbnQ1MlJlcDoKKyAgICAgICAgY2Fz
ZSBWYWx1ZVJlcDoKKyAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICAgICAgY2FzZSBJ
bnQ1MkNvbnN0YW50OiB7CiAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJl
IHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxhdGlvbi4gSXQgaXMKICAgICAgICAgICAg
IC8vIGluc2VydGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZvbGxvd3MgdGhpcyBwaGFzZS4KICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxp
ZGF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghbm9kZS0+
aGFzUmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
ICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBub2RlSW5k
ZXggKyAxLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBFZGdlKG5vZGUpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwgU3BlY05vbmUsIFBoYW50b20sIG5vZGUt
Pm9yaWdpbiwgbm9kZS0+ZGVmYXVsdEVkZ2UoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29u
dmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5Miw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMCwgU3BlY05vbmUsIE1vdkhpbnQsIE5vZGVPcmlnaW4oKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHZhcmlhYmxlLT5sb2NhbCgpLm9mZnNldCgp
KSwgRWRnZShub2RlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyh2
YXJpYWJsZS0+bG9jYWwoKS5vZmZzZXQoKSksIG5vZGUtPmRlZmF1bHRFZGdlKCkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQpAQCAtMzUwLDcgKzM1MCw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUtPmlzQ2FwdHVyZWQoKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEo
KS5zZXROb2RlKGJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwo
KSkpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IFVudHlwZWRVc2UpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9Cisg
ICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmQodmFy
aWFibGUtPmxvY2FsKCkpLT5kZWZhdWx0RWRnZSgpOwogICAgICAgICAgICAgICAgICAgICBub2Rl
LT5jb252ZXJ0VG9QaGFudG9tKCk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgb25s
eSBmb3IgVXBzaWxvbnMuIEFuIFVwc2lsb24gd2lsbCBvbmx5IHJlZmVyIHRvIGEKICAgICAgICAg
ICAgICAgICAgICAgLy8gUGhhbnRvbUxvY2FsIGlmIHRoZXJlIHdlcmUgbm8gU2V0TG9jYWxzIG9y
IEdldExvY2FscyBpbiB0aGUgYmxvY2suCkBAIC0zNjMsNyArMzY1LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUtPmlzQ2FwdHVyZWQoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERl
ZmF1bHRGbGFncyhHZXRBcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdl
RmxhZ3MocmVzdWx0Rm9yKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgp
KSk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChyZXN1bHRGb3Iobm9kZS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkpKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDcgKzQ2LDkgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKGVkZ2UudXNlS2luZCgpKSB7
CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAgICAgY2FzZSBJbnQzMlVzZToKLSAgICAg
ICAgY2FzZSBSZWFsTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAg
ICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAg
ICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICBj
YXNlIENlbGxVc2U6CkBAIC02MSw3ICs2Myw2IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBOb3RD
ZWxsVXNlOgogICAgICAgICBjYXNlIE90aGVyVXNlOgogICAgICAgICBjYXNlIE1pc2NVc2U6Ci0g
ICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6CkBAIC02OSwxMSArNzAsNiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgbV9yZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgotICAgICAgICAg
ICAgaWYgKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpCi0g
ICAgICAgICAgICAgICAgbV9yZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIAogICAgICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICAgICAgICAgIGlmICht
X3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgflNwZWNDZWxsKQogICAgICAgICAgICAgICAg
IG1fcmVzdWx0ID0gZmFsc2U7CkBAIC0xMTEsNiArMTA3LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdAogCiAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAg
Y2FzZSBKU0NvbnN0YW50OgorICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAgY2FzZSBJbnQ1
MkNvbnN0YW50OgogICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgY2FzZSBJZGVudGl0eToK
ICAgICBjYXNlIFRvVGhpczoKQEAgLTEzNyw3ICsxMzUsNiBAQCBib29sIHNhZmVUb0V4ZWN1dGUo
QWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBCaXRVUlNoaWZ0OgogICAgIGNhc2UgVmFs
dWVUb0ludDMyOgogICAgIGNhc2UgVUludDMyVG9OdW1iZXI6Ci0gICAgY2FzZSBJbnQzMlRvRG91
YmxlOgogICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKICAgICBjYXNlIEFyaXRoQWRkOgogICAgIGNh
c2UgQXJpdGhTdWI6CkBAIC0yNDIsOCArMjM5LDYgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICBjYXNl
IENoZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgY2FzZSBMb29wSGludDoKLSAgICBjYXNlIElu
dDUyVG9Eb3VibGU6Ci0gICAgY2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgY2FzZSBTdG9yZUJhcnJp
ZXI6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXJXaXRoTnVsbENoZWNrOgogICAgIGNhc2UgSW52YWxp
ZGF0aW9uUG9pbnQ6CkBAIC0yNTUsNiArMjUwLDkgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zm
c2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKKyAgICBjYXNlIFZhbHVlUmVwOgorICAg
IGNhc2UgRG91YmxlUmVwOgorICAgIGNhc2UgSW50NTJSZXA6CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAKICAgICBjYXNlIEdldEJ5VmFsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNjcyMDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDYsMjEgKzEwNiw5IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAg
ICAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKLSAgICAgICAgICAgICAgICBt
X2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3By
KTsKLSAgICAgICAgICAgICAgICBib3hJbnQ1MihncHIsIGdwciwgc3BpbGxGb3JtYXQpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRD
b21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAg
ICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIE5lZWQgdG8gYm94IHRoZSBkb3VibGUsIHNpbmNlIHdlIHdhbnQgYSBKU1ZhbHVl
LgotICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdWI2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIsIGdwcik7Ci0gICAgICAgICAgICAgICAgICAgIHNwaWxsRm9ybWF0ID0gRGF0YUZv
cm1hdEpTRG91YmxlOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaW5mby5maWxsSlNW
YWx1ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwpAQCAtMTQzLDI4ICsxMzEsNiBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAgIHJldHVybiBn
cHI7CiAgICAgfQogCi0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7Ci0gICAgICAgIEZQUlJl
ZyBmcHIgPSBpbmZvLmZwcigpOwotICAgICAgICBHUFJSZWcgZ3ByID0gYm94RG91YmxlKGZwcik7
Ci0KLSAgICAgICAgLy8gVXBkYXRlIGFsbCBpbmZvCi0gICAgICAgIGluZm8uZmlsbEpTVmFsdWUo
Km1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0RvdWJsZSk7Ci0gICAgICAgIG1fZnBycy5yZWxl
YXNlKGZwcik7Ci0gICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNw
aWxsT3JkZXJKUyk7Ci0KLSAgICAgICAgcmV0dXJuIGdwcjsKLSAgICB9Ci0gICAgICAgIAotICAg
IGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOiB7
Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBsb2NrKGdwcik7Ci0g
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBhbGxvY2F0ZSgpOwotICAgICAgICBib3hJbnQ1Mihn
cHIsIHJlc3VsdEdQUiwgaW5mby5yZWdpc3RlckZvcm1hdCgpKTsKLSAgICAgICAgdW5sb2NrKGdw
cik7Ci0gICAgICAgIHJldHVybiByZXN1bHRHUFI7Ci0gICAgfQotCiAgICAgY2FzZSBEYXRhRm9y
bWF0Q2VsbDoKICAgICAgICAgLy8gTm8gcmV0YWcgcmVxdWlyZWQgb24gSlNWQUxVRTY0IQogICAg
IGNhc2UgRGF0YUZvcm1hdEpTOgpAQCAtMTc5LDYgKzE0NSw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgCiAgICAgY2FzZSBEYXRhRm9ybWF0Qm9v
bGVhbjoKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdERv
dWJsZToKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICAgICAgLy8gdGhpcyB0eXBlIGN1
cnJlbnRseSBuZXZlciBvY2N1cnMKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgCkBAIC03NjksMTIgKzczNyw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUludDMKICAgICAKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQo
KSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgaWYgKGluZm8uc3BpbGxG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVj
dWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7Ci0gICAgICAgICAgICByZXR1cm4g
YWxsb2NhdGUoKTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgR1BSUmVnIGdwciA9IGFs
bG9jYXRlKCk7CiAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKQEAgLTc4OCw3
ICs3NTAsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAg
ICAgIAogICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgp
OwogICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZv
cm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIgfHwgc3BpbGxGb3JtYXQg
PT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1
Mik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykg
fHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKTsKICAgICAgICAgCiAgICAgICAgIG1f
Z3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKICAg
ICAgICAgCkBAIC04MDksMzYgKzc3MSw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNw
ZWN1bGF0ZUludDMKICAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRKU0ludDMy
OwogICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAgICAgICAgfQotICAgICAgICBpZiAoc3BpbGxG
b3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJp
Y3RJbnQ1MikgewotICAgICAgICAgICAgLy8gR2VuZXJhbGx5LCB0aGlzIGNhbiBvbmx5IGhhcHBl
biBpZiB3ZSd2ZSBhbHJlYWR5IHByb3ZlZCB0aGF0IHRoZQotICAgICAgICAgICAgLy8gdmFsdWUg
aXMgYW4gaW50MzIuIFRoYXQncyBiZWNhdXNlIGlmIGEgdmFsdWUgb3JpZ2luYXRlZCBhcyBhIEpT
VmFsdWUKLSAgICAgICAgICAgIC8vIHRoZW4gd2Ugd291bGQgc3BlY3VsYXRlIHRoYXQgaXQncyBh
biBpbnQzMiBiZWZvcmUgcmVwcmVzZW50aW5nIGl0IGFzCi0gICAgICAgICAgICAvLyBhbiBpbnQ1
Mi4gT3RoZXJ3aXNlLCBpZiB3ZSBrbm93aW5nbHkgcHJvZHVjZWQgYW4gaW50NTIsIHRoZW4gd2Ug
d291bGQKLSAgICAgICAgICAgIC8vIGJlIGJveGluZyBpdCBpbnRvIGEgdmFsdWUgdXNpbmcgSW50
NTJUb1ZhbHVlLiBUaGlzIGFzc2VydGlvbiBpcyB2YWxpZAotICAgICAgICAgICAgLy8gb25seSBi
ZWNhdXNlIEludDUyIGlzIHNvbWV0aGluZyB0aGF0IHdlIGludHJvZHVjZSBhdCBwcmVkaWN0aW9u
IHRpbWUuCi0gICAgICAgICAgICAvLyBIb3dldmVyOiB3ZSBtYXkgaGF2ZSBhbiBpbnQzMi1wcm9k
dWNpbmcgbm9kZSByZXBsYWNlZCBieSBhbgotICAgICAgICAgICAgLy8gaW50NTItcHJvZHVjaW5n
IG5vZGUgZHVlIHRvIENTRS4gU28gd2UgbXVzdCBkbyBhIGNoZWNrLgotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNNYWNoaW5lSW50KSk7Ci0gICAgICAgICAgICBpZiAo
dHlwZSAmIFNwZWNJbnQ1MikgewotICAgICAgICAgICAgICAgIEdQUlJlZyB0ZW1wID0gYWxsb2Nh
dGUoKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihncHIsIHRlbXAp
OwotICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2UgY2FuJ3Qgc3VwcGx5IHZhbHVlIHBy
b2ZpbGluZyBpbmZvcm1hdGlvbiBoZXJlLiA6LS8KLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKAotICAgICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCAwLAot
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIGdwciwgdGVtcCkpOwotICAgICAgICAgICAgICAgIHVubG9jayh0ZW1wKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50
NTIpCi0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIGdwcik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuemVy
b0V4dGVuZDMyVG9QdHIoZ3ByLCBncHIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5m
by5maWxsSW50MzIoKm1fc3RyZWFtLCBncHIpOwotICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0g
RGF0YUZvcm1hdEludDMyOwotICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgfQogICAg
ICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgZ3ByKTsKIAogICAgICAgICAvLyBGaWxsIGFzIEpTVmFsdWUsIGFuZCBmYWxsIHRocm91Z2gu
CkBAIC04OTcsNDcgKzgyOSw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZUludDMKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgRGF0
YUZvcm1hdFN0cmljdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOiB7Ci0gICAgICAg
IEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBHUFJSZWcgcmVzdWx0OwotICAgICAg
ICBEYXRhRm9ybWF0IG9sZEZvcm1hdCA9IGluZm8ucmVnaXN0ZXJGb3JtYXQoKTsKLSAgICAgICAg
aWYgKG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0
ZSgpOwotICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBsb2NrKGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQzMigq
bV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICByZXN1bHQgPSBncHI7Ci0gICAgICAgIH0KLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNNYWNoaW5lSW50KSk7Ci0gICAgICAg
IGlmIChvbGRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQotICAgICAgICAgICAgbV9qaXQucnNo
aWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCByZXN1bHQpOwot
ICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ1MikgewotICAgICAgICAgICAgR1BSUmVnIHRlbXAg
PSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0
LCB0ZW1wKTsKLSAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2UgY2FuJ3Qgc3VwcGx5IHZhbHVl
IHByb2ZpbGluZyBpbmZvcm1hdGlvbiBoZXJlLiA6LS8KLSAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soCi0gICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAg
ICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHJlc3Vs
dCwgdGVtcCkpOwotICAgICAgICAgICAgdW5sb2NrKHRlbXApOwotICAgICAgICB9Ci0gICAgICAg
IG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHJlc3VsdCwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJu
Rm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOwotICAgICAgICByZXR1cm4gZ3ByOwotICAgIH0KLQot
ICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZTog
ewotICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSAmJiBpc0ludDMyQ29uc3RhbnQoZWRn
ZS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKLSAgICAg
ICAgICAgIEFTU0VSVChpc0ludDMyQ29uc3RhbnQoZWRnZS5ub2RlKCkpKTsKLSAgICAgICAgICAg
IG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTMyKHZhbHVlT2ZJbnQzMkNvbnN0YW50KGVk
Z2Uubm9kZSgpKSksIGdwcik7Ci0gICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0
SW50MzI7Ci0gICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICB9Ci0gICAgICAgIEZBTExU
SFJPVUdIOwotICAgIH0KKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAgICBjYXNlIERh
dGFGb3JtYXRDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CiAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNDZWxsOgpAQCAtOTQ3LDcgKzgzOSwxMCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KIAor
ICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgor
ICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUy
OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAKICAgICBk
ZWZhdWx0OgpAQCAtOTc2LDE0ICs4NzEsMTMgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlSW50NQogewogICAgIEFTU0VSVChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJ
bnQ1MiB8fCBkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7CiAgICAgQWJz
dHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7Ci0gICAgU3BlY3VsYXRl
ZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKICAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1
ZSwgU3BlY01hY2hpbmVJbnQpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIg
PSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdl
bmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogCiAgICAg
c3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25l
OiB7Ci0gICAgICAgIGlmICgoZWRnZS0+aGFzQ29uc3RhbnQoKSAmJiAhdmFsdWVPZkpTQ29uc3Rh
bnQoZWRnZS5ub2RlKCkpLmlzTWFjaGluZUludCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0g
RGF0YUZvcm1hdERvdWJsZSkgeworICAgICAgICBpZiAoKGVkZ2UtPmhhc0NvbnN0YW50KCkgJiYg
IXZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKS5pc01hY2hpbmVJbnQoKSkpIHsKICAgICAg
ICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCAwKTsKICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgICAgICB9CkBA
IC0xMDA0LDgyICs4OTgsMjEgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRl
SW50NQogICAgICAgICAKICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3Bp
bGxGb3JtYXQoKTsKICAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1h
dCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyIHx8IHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0
U3RyaWN0SW50NTIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCA9PSBEYXRh
Rm9ybWF0SW50NTIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKTsKICAg
ICAgICAgCiAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxs
T3JkZXJTcGlsbGVkKTsKICAgICAgICAgCi0gICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRh
Rm9ybWF0SlNJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpIHsKLSAgICAg
ICAgICAgIC8vIElmIHdlIGtub3cgdGhpcyB3YXMgc3BpbGxlZCBhcyBhbiBpbnRlZ2VyIHdlIGNh
biBmaWxsIHdpdGhvdXQgY2hlY2tpbmcuCi0gICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIG1f
aml0LnNpZ25FeHRlbmQzMlRvUHRyKGdwciwgZ3ByKTsKLSAgICAgICAgICAgIGlmIChkZXNpcmVk
Rm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewotICAgICAgICAgICAgICAgIGluZm8u
ZmlsbFN0cmljdEludDUyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
Z3ByOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBncHIpOwotICAgICAgICAgICAgaW5mby5m
aWxsSW50NTIoKm1fc3RyZWFtLCBncHIpOwotICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxs
Rm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewotICAgICAgICAgICAgbV9qaXQubG9h
ZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAg
ICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQotICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJT
aGlmdEFtb3VudCksIGdwcik7Ci0gICAgICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NTIo
Km1fc3RyZWFtLCBncHIpOwotICAgICAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUy
KQotICAgICAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpp
bnQ1MlNoaWZ0QW1vdW50KSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbEludDUyKCptX3N0
cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgIH0KICAgICAgICAg
bV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdw
cik7Ci0KLSAgICAgICAgLy8gRmlsbCBhcyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJvdWdoLgotICAg
ICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNJbnQzMik7
Ci0gICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAg
fQotCi0gICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsKLSAgICAgICAgLy8gQ2hlY2sgdGhlIHZhbHVl
IGlzIGFuIGludGVnZXIuIE5vdGUgdGhhdCB3ZSB3b3VsZCAqbGlrZSogdG8gdW5ib3ggYW4gSW50
NTIKLSAgICAgICAgLy8gYXQgdGhpcyBwb2ludCBidXQgdGhpcyBpcyB0b28gY29zdGx5LiBXZSBv
bmx5ICpwcm92ZSogdGhhdCB0aGlzIGlzIGFuIEludDUyCi0gICAgICAgIC8vIGV2ZW4gdGhvdWdo
IHdlIGNoZWNrIGlmIGl0J3MgYW4gaW50MzIuCi0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdw
cigpOwotICAgICAgICBHUFJSZWcgcmVzdWx0OwotICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2Vk
KGdwcikpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBt
X2ppdC5tb3ZlKGdwciwgcmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1f
Z3Bycy5sb2NrKGdwcik7Ci0gICAgICAgICAgICByZXN1bHQgPSBncHI7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKHR5cGUgJiB+U3BlY0ludDMyKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhyZXN1bHQpLCBlZGdlLCBtX2ppdC5icmFuY2g2NChNYWNy
b0Fzc2VtYmxlcjo6QmVsb3csIHJlc3VsdCwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
KSk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gZ3ByKSAvLyBUaGUgbm90LWFscmVhZHktbG9ja2Vk
LCBzbyBmaWxsIGluLXBsYWNlLCBjYXNlLgotICAgICAgICAgICAgaW5mby5maWxsSW50NTIoKm1f
c3RyZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOwotICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJU
b1B0cihyZXN1bHQsIHJlc3VsdCk7Ci0gICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFG
b3JtYXRJbnQ1MikKLSAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICB9Ci0KLSAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKLSAgICBjYXNlIERhdGFGb3JtYXRK
U0ludDMyOiB7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBHUFJS
ZWcgcmVzdWx0OwotICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGdwcikpIHsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKGdwciwgcmVz
dWx0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0g
ICAgICAgICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0sIGdwciwgZGVzaXJlZEZvcm1hdCk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBncHI7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09
IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgeworICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09
IERhdGFGb3JtYXRJbnQ1MikKKyAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIGdwcik7CisgICAgICAgICAgICBpbmZv
LmZpbGxTdHJpY3RJbnQ1MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgICAgICByZXR1cm4gZ3By
OwogICAgICAgICB9Ci0gICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdCwgcmVz
dWx0KTsKLSAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQotICAg
ICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRB
bW91bnQpLCByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBpZiAoc3Bp
bGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKQorICAgICAgICAgICAgbV9qaXQubHNo
aWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBncHIpOworICAg
ICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgIHJldHVybiBncHI7
CiAgICAgfQogCiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKQEAgLTExMTYsMzEg
Kzk0OSw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDUKICAgICAg
ICAgcmV0dXJuIGdwcjsKICAgICB9CiAKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6Ci0gICAg
Y2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0gICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgp
KSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB2YWx1ZU9mSlNDb25zdGFudChlZGdl
Lm5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoanNWYWx1ZS5pc01hY2hpbmVJbnQoKSkgewotICAg
ICAgICAgICAgICAgIGludDY0X3QgdmFsdWUgPSBqc1ZhbHVlLmFzTWFjaGluZUludCgpOwotICAg
ICAgICAgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikKLSAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA8PCBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50
OwotICAgICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAg
ICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHZhbHVlKSwgZ3ByKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IEZBTExUSFJPVUdIOwotICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Ci0gICAgY2FzZSBEYXRhRm9y
bWF0Qm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9y
bWF0SlNCb29sZWFuOiB7Ci0gICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7
Ci0gICAgfQotCi0gICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7
CkBAIC0xMTUwLDggKzk1OCw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZUludDUKIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlIGVk
Z2UpCiB7CiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7
Ci0gICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKLSAgICBBU1NFUlQoZWRn
ZS51c2VLaW5kKCkgIT0gS25vd25OdW1iZXJVc2UgfHwgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY0Z1
bGxOdW1iZXIpKTsKKyAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNlIHx8
IGVkZ2UudXNlS2luZCgpID09IERvdWJsZVJlcFJlYWxVc2UpOworICAgIEFTU0VSVChlZGdlLT5o
YXNEb3VibGVSZXN1bHQoKSk7CiAgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNG
dWxsTnVtYmVyKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gZWRnZS0+
dmlydHVhbFJlZ2lzdGVyKCk7CiAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9u
SW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKQEAgLTExNjAsMTcgKzk2
OCw2IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAgICAgICAg
aWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxv
Y2F0ZSgpOwogCi0gICAgICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KGVkZ2Uubm9kZSgpKSkg
ewotICAgICAgICAgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICAg
ICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHJlaW50ZXJwcmV0RG91Ymxl
VG9JbnQ2NChzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlT2ZJbnQzMkNvbnN0YW50KGVkZ2Uubm9k
ZSgpKSkpKSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlNjRUb0RvdWJsZShncHIs
IGZwcik7Ci0gICAgICAgICAgICAgICAgdW5sb2NrKGdwcik7Ci0KLSAgICAgICAgICAgICAgICAv
LyBEb24ndCBmaWxsIGRvdWJsZSBoZXJlIHNpbmNlIHRoYXQgd2lsbCBsZWFkIHRvIGNvbmZ1c2lv
bjogdGhlCi0gICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgYWxsb2NhdG9yIHdpbGwgbm93IHRo
aW5rIHRoYXQgdGhpcyBpcyBhIGRvdWJsZSB3aGlsZQotICAgICAgICAgICAgICAgIC8vIGV2ZXJ5
b25lIGVsc2UgdGhpbmtzIGl0J3MgYW4gaW50ZWdlci4KLSAgICAgICAgICAgICAgICByZXR1cm4g
ZnByOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlzTnVtYmVyQ29uc3RhbnQoZWRn
ZS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7
CiAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tNjQocmVpbnRl
cnByZXREb3VibGVUb0ludDY0KHZhbHVlT2ZOdW1iZXJDb25zdGFudChlZGdlLm5vZGUoKSkpKSwg
Z3ByKTsKQEAgLTExODYsMTU5ICs5ODMsMTggQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlRG91YgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBEYXRhRm9ybWF0IHNw
aWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwotICAgICAgICBzd2l0Y2ggKHNwaWxsRm9y
bWF0KSB7Ci0gICAgICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZTogewotICAgICAgICAgICAgRlBS
UmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJ
VENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7Ci0gICAgICAgICAg
ICBtX2ZwcnMucmV0YWluKGZwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyRG91YmxlKTsK
LSAgICAgICAgICAgIGluZm8uZmlsbERvdWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgICAg
ICByZXR1cm4gZnByOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBEYXRh
Rm9ybWF0SW50MzI6IHsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVy
LCBTcGlsbE9yZGVyU3BpbGxlZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8u
ZmlsbEludDMyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIERh
dGFGb3JtYXRJbnQ1MjogewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0g
ICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVy
U3BpbGxlZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbEludDUyKCpt
X3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIERhdGFGb3JtYXRTdHJp
Y3RJbnQ1MjogewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0gICAgICAg
ICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxl
ZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDUyKCpt
X3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgR1BSUmVnIGdw
ciA9IGFsbG9jYXRlKCk7Ci0KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNwaWxsRm9ybWF0
ICYgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFs
UmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAgICAgICAgIG1faml0LmxvYWQ2NChK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAg
ICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwotICAgICAg
ICAgICAgdW5sb2NrKGdwcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7Ci0gICAgY2FzZSBEYXRhRm9y
bWF0Tm9uZTogLy8gU2hvdWxkIGhhdmUgZmlsbGVkLCBhYm92ZS4KLSAgICBjYXNlIERhdGFGb3Jt
YXRCb29sZWFuOiAvLyBUaGlzIHR5cGUgbmV2ZXIgb2NjdXJzLgotICAgIGNhc2UgRGF0YUZvcm1h
dFN0b3JhZ2U6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBj
YXNlIERhdGFGb3JtYXRDZWxsOgotICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlv
bihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgIHJldHVybiBmcHJBbGxv
Y2F0ZSgpOwotCi0gICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1h
dEpTOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogewotICAgICAgICBHUFJSZWcganNW
YWx1ZUdwciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGpzVmFsdWVHcHIpOwot
ICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BSUmVnIHRlbXBH
cHIgPSBhbGxvY2F0ZSgpOwotCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9
IG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGpzVmFsdWVHcHIs
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0KLSAgICAgICAgaWYgKHR5cGUgJiB+
U3BlY0Z1bGxOdW1iZXIpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpT
VmFsdWVSZWdzKGpzVmFsdWVHcHIpLCBlZGdlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIGpzVmFsdWVHcHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcikp
OwotCi0gICAgICAgIC8vIEZpcnN0LCBpZiB3ZSBnZXQgaGVyZSB3ZSBoYXZlIGEgZG91YmxlIGVu
Y29kZWQgYXMgYSBKU1ZhbHVlCi0gICAgICAgIG1faml0Lm1vdmUoanNWYWx1ZUdwciwgdGVtcEdw
cik7Ci0gICAgICAgIHVuYm94RG91YmxlKHRlbXBHcHIsIGZwcik7Ci0gICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGhhc1VuYm94ZWREb3VibGUgPSBtX2ppdC5qdW1wKCk7Ci0KLSAgICAgICAgLy8g
RmluYWxseSwgaGFuZGxlIGludGVnZXJzLgotICAgICAgICBpc0ludGVnZXIubGluaygmbV9qaXQp
OwotICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShqc1ZhbHVlR3ByLCBmcHIpOwot
ICAgICAgICBoYXNVbmJveGVkRG91YmxlLmxpbmsoJm1faml0KTsKLQotICAgICAgICBtX2dwcnMu
cmVsZWFzZShqc1ZhbHVlR3ByKTsKLSAgICAgICAgbV9ncHJzLnVubG9jayhqc1ZhbHVlR3ByKTsK
LSAgICAgICAgbV9ncHJzLnVubG9jayh0ZW1wR3ByKTsKLSAgICAgICAgbV9mcHJzLnJldGFpbihm
cHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7Ci0gICAgICAgIGluZm8uZmls
bERvdWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgIGluZm8ua2lsbFNwaWxsZWQoKTsKLSAg
ICAgICAgcmV0dXJuIGZwcjsKLSAgICB9Ci0KLSAgICBjYXNlIERhdGFGb3JtYXRKU0ludDMyOgot
ICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOiB7Ci0gICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxv
Y2F0ZSgpOwotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgbV9ncHJz
LmxvY2soZ3ByKTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUoZ3ByLCBmcHIp
OwotICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0gICAgICAgIHJldHVybiBmcHI7Ci0gICAg
fQotICAgICAgICAKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjogeworICAgICAgICBSRUxFQVNF
X0FTU0VSVChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKTsKICAgICAgICAgRlBSUmVn
IGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwot
ICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9jYXRl
KCk7Ci0gICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1wKTsKLSAgICAgICAgbV9qaXQucnNoaWZ0
NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCB0ZW1wKTsKLSAgICAg
ICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUodGVtcCwgZnByKTsKLSAgICAgICAgdW5sb2Nr
KHRlbXApOwotICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0gICAgICAgIHJldHVybiBmcHI7
Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjogewotICAg
ICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BSUmVnIGdwciA9IGlu
Zm8uZ3ByKCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgIG1faml0LmNvbnZl
cnRJbnQ2NFRvRG91YmxlKGdwciwgZnByKTsKLSAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwot
ICAgICAgICByZXR1cm4gZnByOwotICAgIH0KLQotICAgIC8vIFVuYm94IHRoZSBkb3VibGUKLSAg
ICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZTogewotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5n
cHIoKTsKLSAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgIGlmICht
X2dwcnMuaXNMb2NrZWQoZ3ByKSkgewotICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0
IHRyYW1wbGUgZ3ByIGlmIGl0IGlzIGluIHVzZS4KLSAgICAgICAgICAgIEdQUlJlZyB0ZW1wID0g
YWxsb2NhdGUoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1wKTsKLSAgICAgICAg
ICAgIHVuYm94RG91YmxlKHRlbXAsIGZwcik7Ci0gICAgICAgICAgICB1bmxvY2sodGVtcCk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdW5ib3hEb3VibGUoZ3ByLCBmcHIpOwotCi0gICAg
ICAgIG1fZ3Bycy5yZWxlYXNlKGdwcik7CisgICAgICAgIG1faml0LmxvYWREb3VibGUoSklUQ29t
cGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZnByKTsKICAgICAgICAgbV9mcHJz
LnJldGFpbihmcHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7Ci0KICAgICAg
ICAgaW5mby5maWxsRG91YmxlKCptX3N0cmVhbSwgZnByKTsKICAgICAgICAgcmV0dXJuIGZwcjsK
ICAgICB9CiAKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6IHsKLSAgICAgICAgRlBSUmVnIGZw
ciA9IGluZm8uZnByKCk7Ci0gICAgICAgIG1fZnBycy5sb2NrKGZwcik7Ci0gICAgICAgIHJldHVy
biBmcHI7Ci0gICAgfQotICAgICAgICAKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gSW52YWxpZEZQUlJlZzsKLSAgICB9
CisgICAgUkVMRUFTRV9BU1NFUlQoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXRE
b3VibGUpOworICAgIEZQUlJlZyBmcHIgPSBpbmZvLmZwcigpOworICAgIG1fZnBycy5sb2NrKGZw
cik7CisgICAgcmV0dXJuIGZwcjsKIH0KIAogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlQ2VsbChFZGdlIGVkZ2UpCkBAIC0xMzUyLDExICsxMDA4LDYgQEAgR1BSUmVnIFNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVy
Rm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAgICAgIGlmIChpbmZv
LnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9
PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4
ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgICAgICByZXR1
cm4gYWxsb2NhdGUoKTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgR1BSUmVnIGdwciA9
IGFsbG9jYXRlKCk7CiAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKQEAgLTE0
MDUsMTYgKzEwNTYsMTYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2Vs
bAogICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6
CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91Ymxl
OgogICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRCb29s
ZWFuOgotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0cmlj
dEludDUyOiB7CisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjogewogICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAg
ICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KIAorICAgIGNhc2UgRGF0YUZvcm1hdERv
dWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdElu
dDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgogICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTQzMyw3ICsx
MDg0LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogCiAgICAg
c3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25l
OiB7Ci0gICAgICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyIHx8
IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7CisgICAgICAgIGlmIChp
bmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyKSB7CiAgICAgICAgICAgICB0ZXJt
aW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7
CiAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICAgICAgfQpAQCAtMTQ4NywxNiAr
MTEzOCwxNSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICBj
YXNlIERhdGFGb3JtYXRKU0RvdWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Ci0gICAgY2Fz
ZSBEYXRhRm9ybWF0SW50NTI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKICAg
ICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIDApOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKLSAgICB9CiAgICAgICAgIAor
ICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgor
ICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUy
OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAKICAgICBk
ZWZhdWx0OgpAQCAtMTUwNSwyNiArMTE1NSw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUJvb2wKICAgICB9CiB9CiAKLUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZl
SklUOjpjb252ZXJ0VG9Eb3VibGUoR1BSUmVnIHZhbHVlLCBGUFJSZWcgcmVzdWx0LCBHUFJSZWcg
dG1wKQotewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDY0
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHZhbHVlLCBHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdE51bWJlciA9IG1f
aml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgdmFsdWUsIEdQUkluZm86OnRh
Z1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgCi0gICAgbV9qaXQubW92ZSh2YWx1ZSwgdG1wKTsK
LSAgICB1bmJveERvdWJsZSh0bXAsIHJlc3VsdCk7Ci0gICAgCi0gICAgSklUQ29tcGlsZXI6Okp1
bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLSAgICAKLSAgICBpc0ludGVnZXIubGluaygmbV9qaXQp
OwotICAgIAotICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHZhbHVlLCByZXN1bHQpOwot
ICAgIAotICAgIGRvbmUubGluaygmbV9qaXQpOwotCi0gICAgcmV0dXJuIG5vdE51bWJlcjsKLX0K
LQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJhc2VWYWx1ZVN0b3JlQmFycmllcihFZGdl
JiBiYXNlRWRnZSwgRWRnZSYgdmFsdWVFZGdlKQogewogI2lmIEVOQUJMRShHR0MpCkBAIC0xOTIx
LDcgKzE1NTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdChOCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgTnVtYmVyVXNlOiB7Cisg
ICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwpAQCAtMjA2MCw3ICsx
NjkwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlKiBubwogICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBJbnQzMlVzZToKLSAgICBjYXNlIE51bWJlclVzZTogeworICAg
IGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gSW50MzJVc2UpIHsKICAgICAgICAgICAgIGJvb2wgaW52ZXJ0ID0gZmFsc2U7CiAgICAg
ICAgICAgICAKQEAgLTIxNTMsNiArMTc4Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6
CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAg
ICAgIGluaXRDb25zdGFudEluZm8obm9kZSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0yNDAwLDI0
ICsyMDMyLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEludDMyVG9Eb3VibGU6IHsK
LSAgICAgICAgY29tcGlsZUludDMyVG9Eb3VibGUobm9kZSk7CisgICAgY2FzZSBEb3VibGVSZXA6
IHsKKyAgICAgICAgY29tcGlsZURvdWJsZVJlcChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgICAgICAKLSAgICBjYXNlIEludDUyVG9WYWx1ZTogewotICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3BlcmFuZCk7Ci0gICAgICAgIG1faml0Lm1vdmUob3BlcmFu
ZC5ncHIoKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3By
KCksIG5vZGUpOworICAgIGNhc2UgVmFsdWVSZXA6IHsKKyAgICAgICAgY29tcGlsZVZhbHVlUmVw
KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50NTJU
b0RvdWJsZTogewotICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJhbmQodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wZXJh
bmQpOwotICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKG9wZXJhbmQuZnByKCksIHJlc3VsdC5mcHIo
KSk7Ci0gICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOworICAgIGNhc2Ug
SW50NTJSZXA6IHsKKyAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wZXJhbmQodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNl
LCBvcGVyYW5kKTsKKyAgICAgICAgCisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKG9w
ZXJhbmQuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIAorICAgICAgICBzdHJpY3RJbnQ1
MlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
ICAgIApAQCAtMjQ4Niw3ICsyMTE3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAg
ICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgCkBA
IC0yNTI0LDcgKzIxNTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY2Fz
ZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAg
IFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
ICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lv
biAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDggKzMzMiw2IEBAIFNpbGVudFJlZ2lzdGVyU2F2
ZVBsYW4gU3BlY3VsYXRpdmVKSVQ6OnMKICAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09
IERhdGFGb3JtYXRJbnQ1MikgewogICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkKICAg
ICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRJbnQ1MkNvbnN0YW50OwotICAgICAgICBlbHNlIGlm
IChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0g
RGF0YUZvcm1hdEpTKQotICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQzMlBheWxvYWRDb252
ZXJ0VG9JbnQ1MjsKICAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFG
b3JtYXRJbnQ1MikKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CiAgICAgICAgIGVs
c2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpCkBAIC0z
NDEsMTcgKzMzOSwxMiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpz
CiAgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkK
ICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CiAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMg
YW4gaW50MzIgd2lsbCBuZXZlcgotICAgICAgICAgICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxs
IChpbW1lZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRvdWJsZSAodG8tZG91YmxlCi0gICAgICAgICAg
ICAvLyBjb252ZXJzaW9ucyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9kZSkuCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExv
YWQ2NDsgLy8gTWFrZSBHQ0MgaGFwcHkuCiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHJlZ2lz
dGVyRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewogICAgICAgICBpZiAobm9kZS0+
aGFzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRTdHJpY3RJbnQ1MkNv
bnN0YW50OwotICAgICAgICBlbHNlIGlmIChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8
fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKQotICAgICAgICAgICAgZmlsbEFj
dGlvbiA9IExvYWQzMlBheWxvYWRTaWduRXh0ZW5kOwogICAgICAgICBlbHNlIGlmIChpbmZvLnNw
aWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDUyKQogICAgICAgICAgICAgZmlsbEFjdGlvbiA9
IExvYWQ2NFNoaWZ0SW50NTJSaWdodDsKICAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1h
dCgpID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKQEAgLTM1OSw5ICszNTIsNiBAQCBTaWxlbnRS
ZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAgIGVsc2UgaWYgKGluZm8u
c3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkKICAgICAgICAgICAgIGZpbGxBY3Rpb24g
PSBMb2FkNjQ7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhh
cHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMgYW4gaW50MzIgd2lsbCBuZXZlcgotICAg
ICAgICAgICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBv
ciBhIGRvdWJsZSAodG8tZG91YmxlCi0gICAgICAgICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZl
IGEgc2VwYXJhdGUgbm9kZSkuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsgLy8gTWFrZSBHQ0MgaGFwcHku
CiAgICAgICAgIH0KQEAgLTM3Niw5ICszNjYsNiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNw
ZWN1bGF0aXZlSklUOjpzCiAgICAgICAgIH0gZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09
IERhdGFGb3JtYXRJbnQzMikgewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ID09
IERhdGFGb3JtYXRKU0ludDMyKTsKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkMzJQYXls
b2FkQm94SW50OwotICAgICAgICB9IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRh
Rm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnaXN0ZXJGb3JtYXQgPT0gRGF0
YUZvcm1hdEpTRG91YmxlKTsKLSAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkRG91YmxlQm94
RG91YmxlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7
CiAjZWxzZQpAQCAtNDM0LDE0ICs0MjEsMTIgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVj
dWxhdGl2ZUpJVDo6cwogICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgIEFT
U0VSVChpc051bWJlckNvbnN0YW50KG5vZGUpKTsKICAgICAgICAgZmlsbEFjdGlvbiA9IFNldERv
dWJsZUNvbnN0YW50OwotICAgIH0gZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpICE9IERhdGFG
b3JtYXROb25lICYmIGluZm8uc3BpbGxGb3JtYXQoKSAhPSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0g
ICAgICAgIC8vIGl0IHdhcyBhbHJlYWR5IHNwaWxsZWQgcHJldmlvdXNseSBhbmQgbm90IGFzIGEg
ZG91YmxlLCB3aGljaCBtZWFucyB3ZSBuZWVkIHVuYm94aW5nLgotICAgICAgICBBU1NFUlQoaW5m
by5zcGlsbEZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgZmlsbEFjdGlvbiA9IExv
YWRKU1VuYm94RG91YmxlOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VS
VChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUgfHwgaW5mby5zcGlsbEZvcm1h
dCgpID09IERhdGFGb3JtYXREb3VibGUpOwogICAgICAgICBmaWxsQWN0aW9uID0gTG9hZERvdWJs
ZTsKKyAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIEFTU0VSVChpbmZvLnJlZ2lz
dGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSB8fCBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdEpTRG91YmxlKTsKKyAgICBBU1NFUlQoaW5mby5yZWdpc3RlckZvcm1hdCgp
ID09IERhdGFGb3JtYXREb3VibGUpOwogICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKSB7CiAg
ICAgICAgIEFTU0VSVChpc051bWJlckNvbnN0YW50KG5vZGUpKTsKICAgICAgICAgZmlsbEFjdGlv
biA9IFNldERvdWJsZUNvbnN0YW50OwpAQCAtNTI4LDE0ICs1MTMsNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdw
cigpKTsKICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocGxhbi5ncHIoKSwgcGxhbi5n
cHIoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTG9hZERvdWJsZUJveERvdWJsZToKLSAg
ICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52
aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwotICAgICAgICBtX2ppdC5zdWI2NChHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHBsYW4uZ3ByKCkpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIExvYWRKU1VuYm94RG91YmxlOgotICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29t
cGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgY2FuVHJh
bXBsZSk7Ci0gICAgICAgIHVuYm94RG91YmxlKGNhblRyYW1wbGUsIHBsYW4uZnByKCkpOwotICAg
ICAgICBicmVhazsKICNlbHNlCiAgICAgY2FzZSBTZXRKU0NvbnN0YW50VGFnOgogICAgICAgICBt
X2ppdC5tb3ZlKEltbTMyKHZhbHVlT2ZKU0NvbnN0YW50KHBsYW4ubm9kZSgpKS50YWcoKSksIHBs
YW4uZ3ByKCkpOwpAQCAtMTAzOSw2ICsxMDE2LDI5IEBAIEdQUlRlbXBvcmFyeTo6R1BSVGVtcG9y
YXJ5KAogfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKK0pTVmFsdWVSZWdzVGVtcG9y
YXJ5OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeSgpIHsgfQorCitKU1ZhbHVlUmVnc1RlbXBvcmFyeTo6
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqIGppdCkKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIDogbV9ncHIoaml0KQorI2Vsc2UKKyAgICA6IG1fcGF5bG9hZEdQUihqaXQpCisg
ICAgLCBtX3RhZ0dQUihqaXQpCisjZW5kaWYKK3sKK30KKworSlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6
On5KU1ZhbHVlUmVnc1RlbXBvcmFyeSgpIHsgfQorCitKU1ZhbHVlUmVncyBKU1ZhbHVlUmVnc1Rl
bXBvcmFyeTo6cmVncygpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gSlNWYWx1
ZVJlZ3MobV9ncHIuZ3ByKCkpOworI2Vsc2UKKyAgICByZXR1cm4gSlNWYWx1ZVJlZ3MobV90YWdH
UFIuZ3ByKCksIG1fcGF5bG9hZEdQUi5ncHIoKSk7CisjZW5kaWYKK30KKwogdm9pZCBHUFJUZW1w
b3Jhcnk6OmFkb3B0KEdQUlRlbXBvcmFyeSYgb3RoZXIpCiB7CiAgICAgQVNTRVJUKCFtX2ppdCk7
CkBAIC0xMjU4LDEwICsxMjU4LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVw
SG9sZUJyYW4KICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAg
ICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBj
b25kaXRpb24pOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGVsc2UgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUlu
dDUyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVz
ZSkpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2Up
KQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKG5vZGUsIGJyYW5jaE5v
ZGUsIGRvdWJsZUNvbmRpdGlvbik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQ29t
cGFyZUVxKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1Vz
ZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkgewpAQCAtMTgxNywx
NiArMTgxNywxMyBAQCBHZW5lcmF0ZWRPcGVyYW5kVHlwZSBTcGVjdWxhdGl2ZUpJVDo6Y2hlCiAg
ICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTOgogICAgIGNh
c2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAg
ICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRKU1ZhbHVlOwogCiAgICAgY2FzZSBEYXRhRm9y
bWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICAgICAgcmV0dXJuIEdl
bmVyYXRlZE9wZXJhbmRJbnRlZ2VyOwogCi0gICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0g
ICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgotICAgICAgICByZXR1cm4gR2VuZXJhdGVkT3BlcmFu
ZERvdWJsZTsKLSAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRUeXBlVW5rbm93
bjsKQEAgLTE4NDUsNyArMTg0Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZVRvSW50MzIKICAgICB9CiAgICAgICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY2FzZSBN
YWNoaW5lSW50VXNlOiB7CisgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICBTcGVjdWxh
dGVTdHJpY3RJbnQ1Mk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsKICAgICAgICAgR1BSUmVnIG9w
MUdQUiA9IG9wMS5ncHIoKTsKQEAgLTE4NTUsNiArMTg1MiwxOSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYg
Ly8gVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgCisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBGUFJSZWcgZnByID0g
b3AxLmZwcigpOworICAgICAgICBHUFJSZWcgZ3ByID0gcmVzdWx0LmdwcigpOworICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RUcnVuY2F0ZWRUb0ludGVnZXIgPSBtX2ppdC5icmFuY2hUcnVu
Y2F0ZURvdWJsZVRvSW50MzIoZnByLCBncHIsIEpJVENvbXBpbGVyOjpCcmFuY2hJZlRydW5jYXRl
RmFpbGVkKTsKKyAgICAgICAgCisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChub3RUcnVuY2F0ZWRUb0ludGVnZXIsIHRoaXMsIHRvSW50MzIsIGdwciwgZnByKSk7Cisg
ICAgICAgIAorICAgICAgICBpbnQzMlJlc3VsdChncHIsIG5vZGUpOworICAgICAgICByZXR1cm47
CisgICAgfQogICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgTm90Q2VsbFVzZTog
ewpAQCAtMTg2NiwxOCArMTg3Niw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZVRvSW50MzIKICAgICAgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSwgb3Ax
LmZvcm1hdCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBjYXNl
IEdlbmVyYXRlZE9wZXJhbmREb3VibGU6IHsKLSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgICAgIEZQ
UlJlZyBmcHIgPSBvcDEuZnByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gcmVzdWx0Lmdw
cigpOwotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90VHJ1bmNhdGVkVG9JbnRlZ2Vy
ID0gbV9qaXQuYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKGZwciwgZ3ByLCBKSVRDb21waWxl
cjo6QnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChub3RUcnVuY2F0ZWRUb0ludGVnZXIsIHRo
aXMsIHRvSW50MzIsIGdwciwgZnByKSk7Ci0KLSAgICAgICAgICAgIGludDMyUmVzdWx0KGdwciwg
bm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBHZW5l
cmF0ZWRPcGVyYW5kSlNWYWx1ZTogewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMjA2Niw3MCArMjA2NCwxMzEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUFzSW50MwogICAgIGludDMyUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91
YmxlKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKE5v
ZGUqIG5vZGUpCiB7Ci0gICAgQVNTRVJUKCFpc0ludDMyQ29uc3RhbnQobm9kZS0+Y2hpbGQxKCku
bm9kZSgpKSk7IC8vIFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBjb25zdGFudCBmb2xkZWQuCisgICAg
c3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIE51bWJlclVzZTog
eworICAgICAgICBBU1NFUlQoIWlzTnVtYmVyQ29uc3RhbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7IC8vIFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBjb25zdGFudCBmb2xkZWQuCiAgICAgCi0gICAg
aWYgKGlzSW50MzJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dHlwZSkpIHsKLSAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5j
aGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgRlBSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxLmdw
cigpLCByZXN1bHQuZnByKCkpOwotICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBu
b2RlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxh
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkpIHsKKyAgICAgICAg
ICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOworICAgICAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxLmdwcigpLCBy
ZXN1bHQuZnByKCkpOworICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9k
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAKLSAgICBKU1ZhbHVlT3Bl
cmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
Ci0gICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
ICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOwogCi0gICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKLSAgICBHUFJSZWcgdGVt
cEdQUiA9IHRlbXAuZ3ByKCk7Ci0gICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsK
KyAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHRlbXBH
UFIgPSB0ZW1wLmdwcigpOworICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigp
OwogICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDY0
KAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcDFHUFIsIEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50
ZWdlciA9IG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogICAgIAot
ICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIpKSB7
Ci0gICAgICAgIHR5cGVDaGVjaygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5v
ZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFRl
c3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIpKTsKLSAgICB9CisgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGls
ZDEoKSwgU3BlY0J5dGVjb2RlTnVtYmVyKSkgeworICAgICAgICAgICAgdHlwZUNoZWNrKAorICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjQnl0
ZWNvZGVOdW1iZXIsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwor
ICAgICAgICB9CiAgICAgCi0gICAgbV9qaXQubW92ZShvcDFHUFIsIHRlbXBHUFIpOwotICAgIHVu
Ym94RG91YmxlKHRlbXBHUFIsIHJlc3VsdEZQUik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9u
ZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHRlbXBHUFIpOwor
ICAgICAgICB1bmJveERvdWJsZSh0ZW1wR1BSLCByZXN1bHRGUFIpOworICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgIAotICAgIGlzSW50ZWdlci5saW5r
KCZtX2ppdCk7Ci0gICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxR1BSLCByZXN1bHRG
UFIpOwotICAgIGRvbmUubGluaygmbV9qaXQpOwotI2Vsc2UKLSAgICBGUFJUZW1wb3JhcnkgdGVt
cCh0aGlzKTsKKyAgICAgICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsKKyAgICAgICAgbV9qaXQu
Y29udmVydEludDMyVG9Eb3VibGUob3AxR1BSLCByZXN1bHRGUFIpOworICAgICAgICBkb25lLmxp
bmsoJm1faml0KTsKKyNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpIC0+IHRoaXMgaXMgdGhlIDMyXzY0
IGNhc2UKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgCi0gICAgR1BSUmVn
IG9wMVRhZ0dQUiA9IG9wMS50YWdHUFIoKTsKLSAgICBHUFJSZWcgb3AxUGF5bG9hZEdQUiA9IG9w
MS5wYXlsb2FkR1BSKCk7Ci0gICAgRlBSUmVnIHRlbXBGUFIgPSB0ZW1wLmZwcigpOwotICAgIEZQ
UlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CisgICAgICAgIEdQUlJlZyBvcDFUYWdHUFIg
PSBvcDEudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyBvcDFQYXlsb2FkR1BSID0gb3AxLnBheWxv
YWRHUFIoKTsKKyAgICAgICAgRlBSUmVnIHRlbXBGUFIgPSB0ZW1wLmZwcigpOworICAgICAgICBG
UFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigpOwogICAgIAotICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKAorICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpJbnQzMlRhZykpOwogICAgIAotICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGls
ZDEoKSwgU3BlY0Z1bGxOdW1iZXIpKSB7Ci0gICAgICAgIHR5cGVDaGVjaygKLSAgICAgICAgICAg
IEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBT
cGVjRnVsbE51bWJlciwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRh
ZykpKTsKLSAgICB9CisgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwg
U3BlY0J5dGVjb2RlTnVtYmVyKSkgeworICAgICAgICAgICAgdHlwZUNoZWNrKAorICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxk
MSgpLCBTcGVjQnl0ZWNvZGVOdW1iZXIsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6TG93ZXN0VGFnKSkpOworICAgICAgICB9CiAgICAgCi0gICAgdW5ib3hEb3VibGUob3Ax
VGFnR1BSLCBvcDFQYXlsb2FkR1BSLCByZXN1bHRGUFIsIHRlbXBGUFIpOwotICAgIEpJVENvbXBp
bGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgIHVuYm94RG91YmxlKG9wMVRh
Z0dQUiwgb3AxUGF5bG9hZEdQUiwgcmVzdWx0RlBSLCB0ZW1wRlBSKTsKKyAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAKLSAgICBpc0ludGVnZXIubGlu
aygmbV9qaXQpOwotICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMVBheWxvYWRHUFIs
IHJlc3VsdEZQUik7Ci0gICAgZG9uZS5saW5rKCZtX2ppdCk7Ci0jZW5kaWYKKyAgICAgICAgaXNJ
bnRlZ2VyLmxpbmsoJm1faml0KTsKKyAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUo
b3AxUGF5bG9hZEdQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7Cisj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAKLSAgICBkb3VibGVSZXN1bHQocmVzdWx0RlBS
LCBub2RlKTsKKyAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdEZQUiwgbm9kZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBJ
bnQ1MlJlcFVzZTogeworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OworICAgICAgICAKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAg
ICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CisKKyAgICAgICAgbV9qaXQuY29u
dmVydEludDY0VG9Eb3VibGUodmFsdWVHUFIsIHJlc3VsdEZQUik7CisgICAgICAgIAorICAgICAg
ICBkb3VibGVSZXN1bHQocmVzdWx0RlBSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorICAgICAgICAKKyAgICBkZWZhdWx0OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
fQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVSZXAoTm9kZSogbm9kZSkKK3sK
KyAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNhc2UgRG91Ymxl
UmVwVXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7
CisgICAgICAgIAorICAgICAgICBGUFJSZWcgdmFsdWVGUFIgPSB2YWx1ZS5mcHIoKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgICAgIAorICAg
ICAgICBib3hEb3VibGUodmFsdWVGUFIsIHJlc3VsdFJlZ3MpOworICAgICAgICAKKyAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIEludDUyUmVwVXNlOiB7Cisg
ICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIAorICAg
ICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgCisgICAgICAgIGJveEludDUyKHZhbHVlR1BS
LCByZXN1bHRHUFIsIERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7CisgICAgICAgIAorICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIH0K
IAogc3RhdGljIGRvdWJsZSBjbGFtcERvdWJsZVRvQnl0ZShkb3VibGUgZCkKQEAgLTIzMjAsNyAr
MjM3OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckkKICAgICAg
ICAgfQogICAgICAgICAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgY2FzZSBNYWNo
aW5lSW50VXNlOiB7CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAgICAgICAgICAgIFNw
ZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNlKTsKICAgICAg
ICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICAgICAgR1BSUmVnIHNj
cmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOwpAQCAtMjM0NCw3ICsyNDAzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySQogICAgICAgICB9CiAjZW5kaWYgLy8gVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAg
ICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBl
KSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50U2l6ZSh0eXBlKSA9PSAxKTsKICAg
ICAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVV
c2UpOwpAQCAtMjQ0MCwxMCArMjQ5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRCeVZhbE9uRmwKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90TmFOID0gbV9qaXQuYnJhbmNoRG91
YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbCwgcmVzdWx0UmVnLCByZXN1bHRSZWcpOwot
ICAgIHN0YXRpYyBjb25zdCBkb3VibGUgTmFOID0gUU5hTjsKLSAgICBtX2ppdC5sb2FkRG91Ymxl
KCZOYU4sIHJlc3VsdFJlZyk7Ci0gICAgbm90TmFOLmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5z
YW5pdGl6ZURvdWJsZShyZXN1bHRSZWcpOwogICAgIAogICAgIGRvdWJsZVJlc3VsdChyZXN1bHRS
ZWcsIG5vZGUpOwogfQpAQCAtMjY0MSw3ICsyNjk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUFkZChOb2RlKiBubwogICAgIH0KICAgICAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAg
ICAgIEFTU0VSVChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAgICAg
ICAgIEFTU0VSVCghc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhNb2RlKCkpKTsK
IApAQCAtMjY3MCw3ICsyNzI2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFkZChO
b2RlKiBubwogICAgIH0KICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgIAotICAgIGNhc2Ug
TnVtYmVyVXNlOiB7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRl
RG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEZQUlRl
bXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIpOwpAQCAtMjgwNyw3ICsyODYzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZAogICAgIH0KICAgICAgICAgCiAj
aWYgVVNFKEpTVkFMVUU2NCkKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICBjYXNlIElu
dDUyUmVwVXNlOiB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFy
aXRoTW9kZSgpKSk7CiAgICAgICAgIEFTU0VSVCghc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9k
ZS0+YXJpdGhNb2RlKCkpKTsKIApAQCAtMjgzNiw3ICsyODkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZAogICAgIH0KICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQogCi0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAg
ICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
ICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwpAQCAtMjg4MSw3ICsyOTM3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKAogICAgIH0KIAog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgY2FzZSBJ
bnQ1MlJlcFVzZTogewogICAgICAgICBBU1NFUlQoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5h
cml0aE1vZGUoKSkpOwogICAgICAgICAKICAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1MikpIHsKQEAgLTI5MTgsNyArMjk3NCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSgKICAgICB9CiAjZW5k
aWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAgICAgCi0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAg
ICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9w
MSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CiAgICAgICAgIApAQCAtMjk2OSw3ICszMDI1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUFyaXRoTXVsKE5vZAogICAgIH0KICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KSAgIAot
ICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAgICAg
ICAgQVNTRVJUKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKTsKICAgICAg
ICAgCiAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgY2xldmVyLiBXZSB3YW50IHRvIGRvIGFuIGlu
dDUyIG11bHRpcGxpY2F0aW9uIGFuZCBjaGVjayB0aGUKQEAgLTMwMjYsNyArMzA4Miw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE11bChOb2QKICAgICB9CiAjZW5kaWYgLy8g
VVNFKEpTVkFMVUU2NCkKICAgICAgICAgCi0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNl
IERvdWJsZVJlcFVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBv
cDEsIG9wMik7CkBAIC0zMTkwLDcgKzMyNDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQXJpdGhEaXYoTm9kCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2Fz
ZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1
bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgRlBS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwpAQCAtMzQ5NSw3ICszNTUxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKE5vZAogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgICAgICAKLSAgICBjYXNlIE51bWJlclVzZTogeworICAgIGNhc2UgRG91YmxlUmVwVXNl
OiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOwogICAgICAgICAKQEAgLTM1MzAsMTMgKzM1ODYsMTMgQEAgYm9vbCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLAogICAgIH0KICAgICAKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsKKyAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICBjb21waWxl
SW50NTJDb21wYXJlKG5vZGUsIGNvbmRpdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAKLSAgICBpZiAobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKE51bWJlclVzZSkpIHsKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKERv
dWJsZVJlcFVzZSkpIHsKICAgICAgICAgY29tcGlsZURvdWJsZUNvbXBhcmUobm9kZSwgZG91Ymxl
Q29uZGl0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTM2MTAsNyArMzY2
Niw3IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2QKICAgICB9CiAg
ICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkgICAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE1hY2hpbmVJbnRVc2UpKSB7CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJl
cFVzZSkpIHsKICAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVl
cEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAhPSBVSU5UX01B
WCkgewogICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9IG1fYmxvY2stPmF0KGJyYW5jaElu
ZGV4SW5CbG9jayk7CkBAIC0zNjI2LDcgKzM2ODIsNyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlU3RyaWN0RXEoTm9kCiAgICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKLSAg
ICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsKKyAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkpIHsKICAgICAgICAgdW5zaWduZWQgYnJhbmNo
SW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYgKGJyYW5j
aEluZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgewogICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9k
ZSA9IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CkBAIC00NDg3LDM2ICs0NTQzLDM3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUludDMyKEVkZ2UKICAgICAoU3BlY3Vs
YXRlSW50MzJPcGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlTWFjaGluZUludChFZGdlIGVkZ2UpCi17Ci0jaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNNYWNoaW5lSW50KSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIChTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQodGhp
cywgZWRnZSkpLmdwcigpOwotI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKLSAgICBVTlVTRURfUEFS
QU0oZWRnZSk7Ci0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYgLy8gVVNF
KEpTVkFMVUU2NCkKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTnVtYmVyKEVk
Z2UgZWRnZSkKIHsKLSAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNGdWxsTnVtYmVy
KSkKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNCeXRlY29kZU51bWJlcikpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICAoU3BlY3VsYXRlRG91YmxlT3BlcmFuZCh0aGlzLCBl
ZGdlKSkuZnByKCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgZWRnZSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEdQUlJlZyBncHIg
PSB2YWx1ZS5ncHIoKTsKKyAgICB0eXBlQ2hlY2soCisgICAgICAgIEpTVmFsdWVSZWdzKGdwciks
IGVkZ2UsIFNwZWNCeXRlY29kZU51bWJlciwKKyAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcikp
OworI2Vsc2UKKyAgICBHUFJSZWcgdGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CisgICAgREZHX1RZ
UEVfQ0hFQ0soCisgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksIGVkZ2UsIH5TcGVjSW50MzIs
CisgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdGFnR1BSLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAgREZHX1RZUEVfQ0hFQ0soCisg
ICAgICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksIGVkZ2UsIFNwZWNCeXRlY29kZU51bWJlciwKKyAg
ICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdGFnR1BS
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOworI2VuZGlmCiB9CiAKLXZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRnZSBlZGdlKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlRG91YmxlUmVhbChFZGdlIGVkZ2UpCiB7Ci0gICAgaWYgKCFu
ZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIpKQorICAgIGlmICghbmVlZHNU
eXBlQ2hlY2soZWRnZSwgU3BlY0RvdWJsZVJlYWwpKQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwogICAgIEZQUlJl
ZyBmcHIgPSBvcGVyYW5kLmZwcigpOwotICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICBKU1Zh
bHVlUmVncygpLCBlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCisgICAgdHlwZUNoZWNrKAorICAg
ICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjRG91YmxlUmVhbCwKICAgICAgICAgbV9qaXQu
YnJhbmNoRG91YmxlKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFs
T3JVbm9yZGVyZWQsIGZwciwgZnByKSk7CiB9CkBAIC00NzY4LDggKzQ4MjUsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogICAgIGNhc2UgS25vd25JbnQzMlVz
ZToKICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50MzIpKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgQVNTRVJUKCFu
ZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbE51bWJlcikpOworICAgIGNhc2UgRG91YmxlUmVw
VXNlOgorICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNEb3VibGUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgQVNTRVJUKCFu
ZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTWFjaGluZUludCkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEtub3duQ2VsbFVzZToKICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdl
LCBTcGVjQ2VsbCkpOwpAQCAtNDc4MCwxNSArNDg0MCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGUoTm9kZSosIEVkCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgc3BlY3Vs
YXRlSW50MzIoZWRnZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWFjaGluZUludFVzZToK
LSAgICAgICAgc3BlY3VsYXRlTWFjaGluZUludChlZGdlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBSZWFsTnVtYmVyVXNlOgotICAgICAgICBzcGVjdWxhdGVSZWFsTnVtYmVyKGVkZ2UpOwot
ICAgICAgICBicmVhazsKICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgc3BlY3VsYXRlTnVt
YmVyKGVkZ2UpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6Cisg
ICAgICAgIHNwZWN1bGF0ZURvdWJsZVJlYWwoZWRnZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQm9vbGVhblVzZToKICAgICAgICAgc3BlY3VsYXRlQm9vbGVhbihlZGdlKTsKICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCShyZXZpc2lvbiAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3Mg
U3BlY3VsYXRlRG91YmxlT3BlcmFuZDsKIGNsYXNzIFNwZWN1bGF0ZUNlbGxPcGVyYW5kOwogY2xh
c3MgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ7CiAKLWVudW0gR2VuZXJhdGVkT3BlcmFuZFR5cGUg
eyBHZW5lcmF0ZWRPcGVyYW5kVHlwZVVua25vd24sIEdlbmVyYXRlZE9wZXJhbmRJbnRlZ2VyLCBH
ZW5lcmF0ZWRPcGVyYW5kRG91YmxlLCBHZW5lcmF0ZWRPcGVyYW5kSlNWYWx1ZX07CitlbnVtIEdl
bmVyYXRlZE9wZXJhbmRUeXBlIHsgR2VuZXJhdGVkT3BlcmFuZFR5cGVVbmtub3duLCBHZW5lcmF0
ZWRPcGVyYW5kSW50ZWdlciwgR2VuZXJhdGVkT3BlcmFuZEpTVmFsdWV9OwogCiBpbmxpbmUgR1BS
UmVnIGV4dHJhY3RSZXN1bHQoR1BSUmVnIHJlc3VsdCkgeyByZXR1cm4gcmVzdWx0OyB9CiAjaWYg
VVNFKEpTVkFMVUU2NCkKQEAgLTQ1OSw2ICs0NTksMTAgQEAgcHVibGljOgogICAgICAgICBtX2pp
dC51bmJveERvdWJsZSh0YWdHUFIsIHBheWxvYWRHUFIsIGZwciwgc2NyYXRjaEZQUik7CiAgICAg
fQogI2VuZGlmCisgICAgdm9pZCBib3hEb3VibGUoRlBSUmVnIGZwciwgSlNWYWx1ZVJlZ3MgcmVn
cykKKyAgICB7CisgICAgICAgIG1faml0LmJveERvdWJsZShmcHIsIHJlZ3MpOworICAgIH0KIAog
ICAgIC8vIFNwaWxsIGEgVmlydHVhbFJlZ2lzdGVyIHRvIHRoZSBKU1N0YWNrLgogICAgIHZvaWQg
c3BpbGwoVmlydHVhbFJlZ2lzdGVyIHNwaWxsTWUpCkBAIC05MjUsNiArOTI5LDE0IEBAIHB1Ymxp
YzoKICAgICAgICAganNWYWx1ZVJlc3VsdCh0YWcsIHBheWxvYWQsIG5vZGUsIERhdGFGb3JtYXRK
UywgbW9kZSk7CiAgICAgfQogI2VuZGlmCisgICAgdm9pZCBqc1ZhbHVlUmVzdWx0KEpTVmFsdWVS
ZWdzIHJlZ3MsIE5vZGUqIG5vZGUsIERhdGFGb3JtYXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTLCBV
c2VDaGlsZHJlbk1vZGUgbW9kZSA9IENhbGxVc2VDaGlsZHJlbikKKyAgICB7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZWdzLmdwcigpLCBub2RlLCBmb3JtYXQs
IG1vZGUpOworI2Vsc2UKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZWdzLnRhZ0dQUigpLCByZWdz
LnBheWxvYWRHUFIoKSwgbm9kZSwgZm9ybWF0LCBtb2RlKTsKKyNlbmRpZgorICAgIH0KICAgICB2
b2lkIHN0b3JhZ2VSZXN1bHQoR1BSUmVnIHJlZywgTm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5Nb2Rl
IG1vZGUgPSBDYWxsVXNlQ2hpbGRyZW4pCiAgICAgewogICAgICAgICBpZiAobW9kZSA9PSBDYWxs
VXNlQ2hpbGRyZW4pCkBAIC0yMDgwLDEwICsyMDkyLDEyIEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKik7CiAgICAgCisgICAgdm9pZCBjb21waWxl
VmFsdWVSZXAoTm9kZSopOworICAgIHZvaWQgY29tcGlsZURvdWJsZVJlcChOb2RlKik7CisgICAg
CiAgICAgdm9pZCBjb21waWxlVmFsdWVUb0ludDMyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVV
SW50MzJUb051bWJlcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlRG91YmxlQXNJbnQzMihOb2Rl
Kik7Ci0gICAgdm9pZCBjb21waWxlSW50MzJUb0RvdWJsZShOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlQWRkKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVNYWtlUm9wZShOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlQXJpdGhTdWIoTm9kZSopOwpAQCAtMjE4NSwxMiArMjE5OSw2IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1
cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOwogCi0jaWYgVVNF
KEpTVkFMVUU2NCkgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgY29udmVydFRvRG91YmxlKEdQUlJl
ZyB2YWx1ZSwgRlBSUmVnIHJlc3VsdCwgR1BSUmVnIHRtcCk7Ci0jZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQotICAgIEpJVENvbXBpbGVyOjpKdW1wIGNvbnZlcnRUb0RvdWJsZShKU1ZhbHVlT3BlcmFu
ZCYsIEZQUlJlZyByZXN1bHQpOwotI2VuZGlmCi0gICAgCiAgICAgLy8gQWRkIGEgc3BlY3VsYXRp
b24gY2hlY2suCiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291
cmNlLCBOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCk7CiAgICAgdm9pZCBz
cGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBOb2RlKiwgY29uc3QgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wc1RvRmFpbCk7CkBAIC0yMjE3LDcgKzIyMjUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzcGVjdWxhdGVJbnQzMihFZGdlKTsKICAgICB2b2lkIHNwZWN1
bGF0ZU1hY2hpbmVJbnQoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVOdW1iZXIoRWRnZSk7Ci0g
ICAgdm9pZCBzcGVjdWxhdGVSZWFsTnVtYmVyKEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlRG91
YmxlUmVhbChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CiAgICAgdm9p
ZCBzcGVjdWxhdGVDZWxsKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0KEVkZ2UpOwpA
QCAtMjU2NSw2ICsyNTczLDIzIEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwogfTsKIAor
Y2xhc3MgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgeworcHVibGljOgorICAgIEpTVmFsdWVSZWdzVGVt
cG9yYXJ5KCk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqKTsKKyAg
ICB+SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoKTsKKyAgICAKKyAgICBKU1ZhbHVlUmVncyByZWdzKCk7
CisKK3ByaXZhdGU6CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBHUFJUZW1wb3JhcnkgbV9ncHI7
CisjZWxzZQorICAgIEdQUlRlbXBvcmFyeSBtX3BheWxvYWRHUFI7CisgICAgR1BSVGVtcG9yYXJ5
IG1fdGFnR1BSOworI2VuZGlmCit9OworCiBjbGFzcyBGUFJUZW1wb3JhcnkgewogcHVibGljOgog
ICAgIEZQUlRlbXBvcmFyeShTcGVjdWxhdGl2ZUpJVCopOwpAQCAtMjc1NCwxMiArMjc3OSwxMiBA
QCBwcml2YXRlOgogLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVm
dC1zaGlmdGVkIGJ5IDE2LCBsb3cgYml0cyB6ZXJvKS4KIGNsYXNzIFNwZWN1bGF0ZUludDUyT3Bl
cmFuZCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU3BlY3VsYXRlSW50NTJPcGVyYW5kKFNwZWN1
bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0g
QXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUludDUy
T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UpCiAgICAgICAgIDogbV9qaXQo
aml0KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKElu
dmFsaWRHUFJSZWcpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0g
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRV
c2UpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVz
ZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIo
KTsKICAgICB9CkBAIC0yODAxLDEyICsyODI2LDEyIEBAIHByaXZhdGU6CiAvLyBHaXZlcyB5b3Ug
YSBzdHJpY3QgSW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBo
aWdoIDE2IGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50
NTJPcGVyYW5kIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9w
ZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25N
b2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgZXhwbGljaXQgU3Bl
Y3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSkK
ICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAgICAgICwg
bV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVT
RUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5k
KCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2lu
ZCgpID09IEludDUyUmVwVXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkK
ICAgICAgICAgICAgIGdwcigpOwogICAgIH0KQEAgLTI4NDksMzUgKzI4NzQsMzUgQEAgZW51bSBP
cHBvc2l0ZVNoaWZ0VGFnIHsgT3Bwb3NpdGVTaGlmdCB9OwogCiBjbGFzcyBTcGVjdWxhdGVXaGlj
aGV2ZXJJbnQ1Mk9wZXJhbmQgewogcHVibGljOgotICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNo
ZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRT
cGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBl
eHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGpp
dCwgRWRnZSBlZGdlKQogICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRn
ZSkKICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQogICAgICAgICAsIG1f
c3RyaWN0KGppdC0+YmV0dGVyVXNlU3RyaWN0SW50NTIoZWRnZSkpCiAgICAgewotICAgICAgICBB
U1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVk
Z2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChl
ZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVk
KG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQg
U3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2Ug
ZWRnZSwgY29uc3QgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kJiBvdGhlciwgT3BlcmFu
ZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAg
IGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCog
aml0LCBFZGdlIGVkZ2UsIGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCYgb3Ro
ZXIpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAg
ICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgICAgICwgbV9zdHJpY3Qob3Ro
ZXIubV9zdHJpY3QpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0g
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRV
c2UpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVz
ZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIo
KTsKICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVy
YW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3Bwb3NpdGVTaGlmdFRhZywgY29u
c3QgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0
aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0
IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdl
IGVkZ2UsIE9wcG9zaXRlU2hpZnRUYWcsIGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3Bl
cmFuZCYgb3RoZXIpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fZWRnZShlZGdl
KQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgICAgICwgbV9z
dHJpY3QoIW90aGVyLm1fc3RyaWN0KQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2Rl
LCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBN
YWNoaW5lSW50VXNlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0g
SW50NTJSZXBVc2UpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQogICAgICAg
ICAgICAgZ3ByKCk7CiAgICAgfQpAQCAtMjkyNiwxMyArMjk1MSwxMyBAQCBwcml2YXRlOgogCiBj
bGFzcyBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVj
dWxhdGVEb3VibGVPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFu
ZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAg
IGV4cGxpY2l0IFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRn
ZSBlZGdlKQogICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkKICAg
ICAgICAgLCBtX2Zwck9ySW52YWxpZChJbnZhbGlkRlBSUmVnKQogICAgIHsKICAgICAgICAgQVNT
RVJUKG1faml0KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbiB8fCBpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOwogICAgICAgICBpZiAoaml0
LT5pc0ZpbGxlZChub2RlKCkpKQogICAgICAgICAgICAgZnByKCk7CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCShyZXZpc2lvbiAxNjcyMDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NiwxNyArNDYsMTcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IFVzZQogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAgb3V0LnByaW50KCJLbm93bklu
dDMyIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWFjaGluZUludFVzZToKLSAgICAgICAg
b3V0LnByaW50KCJNYWNoaW5lSW50Iik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbE51
bWJlclVzZToKLSAgICAgICAgb3V0LnByaW50KCJSZWFsTnVtYmVyIik7CisgICAgY2FzZSBJbnQ1
MlJlcFVzZToKKyAgICAgICAgb3V0LnByaW50KCJJbnQ1MlJlcCIpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgb3V0LnByaW50KCJOdW1iZXIiKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgb3V0LnByaW50KCJL
bm93bk51bWJlciIpOworICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBvdXQucHJpbnQo
IkRvdWJsZVJlcCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6
CisgICAgICAgIG91dC5wcmludCgiRG91YmxlUmVwUmVhbCIpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIG91dC5wcmludCgiQm9vbGVhbiIpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHJldmlzaW9uIDE2NzIwNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR05v
ZGVGbGFncy5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1By
aW50U3RyZWFtLmg+CiAKQEAgLTM3LDEwICszOCwxMCBAQCBlbnVtIFVzZUtpbmQgewogICAgIFVu
dHlwZWRVc2UsCiAgICAgSW50MzJVc2UsCiAgICAgS25vd25JbnQzMlVzZSwKLSAgICBNYWNoaW5l
SW50VXNlLAotICAgIFJlYWxOdW1iZXJVc2UsCisgICAgSW50NTJSZXBVc2UsCiAgICAgTnVtYmVy
VXNlLAotICAgIEtub3duTnVtYmVyVXNlLAorICAgIERvdWJsZVJlcFVzZSwKKyAgICBEb3VibGVS
ZXBSZWFsVXNlLAogICAgIEJvb2xlYW5Vc2UsCiAgICAgQ2VsbFVzZSwKICAgICBLbm93bkNlbGxV
c2UsCkBAIC01OSw3ICs2MCw3IEBAIGVudW0gVXNlS2luZCB7CiAgICAgTGFzdFVzZUtpbmQgLy8g
TXVzdCBhbHdheXMgYmUgdGhlIGxhc3QgZW50cnkgaW4gdGhlIGVudW0sIGFzIGl0IGlzIHVzZWQg
dG8gZGVub3RlIHRoZSBudW1iZXIgb2YgZW51bSBlbGVtZW50cy4KIH07CiAKLUFMV0FZU19JTkxJ
TkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVzZUtpbmQpCitpbmxpbmUg
U3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVzZUtpbmQpCiB7CiAgICAgc3dp
dGNoICh1c2VLaW5kKSB7CiAgICAgY2FzZSBVbnR5cGVkVXNlOgpAQCAtNjcsMTMgKzY4LDE0IEBA
IEFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckYKICAgICBjYXNlIEludDMy
VXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsK
LSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAg
cmV0dXJuIFNwZWNNYWNoaW5lSW50OwotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAg
cmV0dXJuIFNwZWNGdWxsUmVhbE51bWJlcjsKICAgICBjYXNlIE51bWJlclVzZToKLSAgICBjYXNl
IEtub3duTnVtYmVyVXNlOgotICAgICAgICByZXR1cm4gU3BlY0Z1bGxOdW1iZXI7CisgICAgICAg
IHJldHVybiBTcGVjQnl0ZWNvZGVOdW1iZXI7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAg
ICAgIHJldHVybiBTcGVjRG91YmxlOworICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICAg
ICAgcmV0dXJuIFNwZWNEb3VibGVSZWFsOwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAg
cmV0dXJuIFNwZWNCb29sZWFuOwogICAgIGNhc2UgQ2VsbFVzZToKQEAgLTEwOCw1MyArMTEwLDUz
IEBAIEFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckYKICAgICB9CiB9CiAK
LUFMV0FZU19JTkxJTkUgYm9vbCBzaG91bGROb3RIYXZlVHlwZUNoZWNrKFVzZUtpbmQga2luZCkK
K2lubGluZSBib29sIHNob3VsZE5vdEhhdmVUeXBlQ2hlY2soVXNlS2luZCBraW5kKQogewogICAg
IHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgVW50eXBlZFVzZToKICAgICBjYXNlIEtub3duSW50
MzJVc2U6Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKICAgICBjYXNlIEtub3duQ2VsbFVzZToK
ICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgorICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgY2Fz
ZSBEb3VibGVSZXBVc2U6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBtYXlIYXZl
VHlwZUNoZWNrKFVzZUtpbmQga2luZCkKK2lubGluZSBib29sIG1heUhhdmVUeXBlQ2hlY2soVXNl
S2luZCBraW5kKQogewogICAgIHJldHVybiAhc2hvdWxkTm90SGF2ZVR5cGVDaGVjayhraW5kKTsK
IH0KIAotQUxXQVlTX0lOTElORSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQga2luZCkKK2lubGlu
ZSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsK
ICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKLSAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgIGNhc2UgTnVtYmVyVXNl
OgotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICBj
YXNlIERvdWJsZVJlcFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9
CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBpc0RvdWJsZShVc2VLaW5kIGtpbmQpCitpbmxpbmUgYm9v
bCBpc0RvdWJsZShVc2VLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2Fz
ZSBSZWFsTnVtYmVyVXNlOgotICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgS25vd25OdW1i
ZXJVc2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNl
OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgaXNDZWxsKFVzZUtpbmQga2luZCkK
K2lubGluZSBib29sIGlzQ2VsbChVc2VLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7
CiAgICAgY2FzZSBDZWxsVXNlOgpAQCAtMTc0LDcgKzE3Niw3IEBAIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0NlbGwoVXNlS2luZCBraW5kKQogCiAvLyBSZXR1cm5zIHRydWUgaWYgaXQgdXNlcyBzdHJ1
Y3R1cmUgaW4gYSB3YXkgdGhhdCBjb3VsZCBiZSBjbG9iYmVyZWQgYnkKIC8vIHRoaW5ncyB0aGF0
IGNoYW5nZSB0aGUgc3RydWN0dXJlLgotQUxXQVlTX0lOTElORSBib29sIHVzZXNTdHJ1Y3R1cmUo
VXNlS2luZCBraW5kKQoraW5saW5lIGJvb2wgdXNlc1N0cnVjdHVyZShVc2VLaW5kIGtpbmQpCiB7
CiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CkBAIC0xODUs
NiArMTg3LDE5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCB1c2VzU3RydWN0dXJlKFVzZUtpbmQKICAg
ICB9CiB9CiAKK2lubGluZSBVc2VLaW5kIHVzZUtpbmRGb3JSZXN1bHQoTm9kZUZsYWdzIHJlc3Vs
dCkKK3sKKyAgICBBU1NFUlQoIShyZXN1bHQgJiB+Tm9kZVJlc3VsdE1hc2spKTsKKyAgICBzd2l0
Y2ggKHJlc3VsdCkgeworICAgIGNhc2UgTm9kZVJlc3VsdEludDUyOgorICAgICAgICByZXR1cm4g
SW50NTJSZXBVc2U7CisgICAgY2FzZSBOb2RlUmVzdWx0RG91YmxlOgorICAgICAgICByZXR1cm4g
RG91YmxlUmVwVXNlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBVbnR5cGVkVXNlOwor
ICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiBuYW1lc3BhY2UgV1RGIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lv
biAxNjcyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMTUsNiArMTE1LDkgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbV9teVJlZkNvdW50cy5maW5kKGVkZ2Uubm9k
ZSgpKS0+dmFsdWUrKzsKICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkgPT0gKGVkZ2Uu
dXNlS2luZCgpID09IERvdWJsZVJlcFVzZSB8fCBlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBS
ZWFsVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRn
ZS0+aGFzSW50NTJSZXN1bHQoKSA9PSAoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpKTsK
KyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1f
Zm9ybSA9PSBTU0EpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIFNTQSwgYWxsIGVk
Z2VzIG11c3QgaGFzUmVzdWx0KCkuCiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgo
bm9kZSwgZWRnZSksIGVkZ2UtPmhhc1Jlc3VsdCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTAsNyArOTAsNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9k
ZSogCiAgICAgY2FzZSBBcml0aEZSb3VuZDoKICAgICBjYXNlIEFyaXRoTmVnYXRlOgogICAgIGNh
c2UgVUludDMyVG9OdW1iZXI6Ci0gICAgY2FzZSBJbnQzMlRvRG91YmxlOgogICAgIGNhc2UgQ29t
cGFyZUVxQ29uc3RhbnQ6CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgpA
QCAtMTAzLDcgKzEwMiw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiAKICAgICBjYXNlIEdldENsb3N1cmVSZWdpc3RlcnM6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFy
OgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKLSAgICBjYXNlIEludDUyVG9WYWx1ZToKICAgICBj
YXNlIEludmFsaWRhdGlvblBvaW50OgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgogICAgIGNhc2Ug
Q2hlY2tGdW5jdGlvbjoKQEAgLTE1Miw2ICsxNTAsMTEgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICBjYXNlIENoZWNr
SGFzSW5zdGFuY2U6CiAgICAgY2FzZSBJbnN0YW5jZU9mOgorICAgIGNhc2UgRG91YmxlUmVwOgor
ICAgIGNhc2UgVmFsdWVSZXA6CisgICAgY2FzZSBJbnQ1MlJlcDoKKyAgICBjYXNlIERvdWJsZUNv
bnN0YW50OgorICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgLy8gVGhlc2UgYXJlIE9L
LgogICAgICAgICBicmVhazsKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CkBAIC0yMzUsOSArMjM4
LDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2Ug
Q29tcGFyZUVxOgogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSkK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1h
Y2hpbmVJbnRVc2UpKQorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVw
VXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE51bWJlclVzZSkpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91Ymxl
UmVwVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFN0cmluZ0lkZW50VXNlKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjU1LDkgKzI1
OCw5IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNl
IENvbXBhcmVTdHJpY3RFcToKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQz
MlVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJ
bnQ1MlJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChOdW1iZXJVc2UpKQorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KERvdWJsZVJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpCiAgICAgICAgICAgICBicmVhazsKQEAgLTI4
MCw5ICsyODMsOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAg
ICAgY2FzZSBDb21wYXJlR3JlYXRlckVxOgogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEludDMyVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKQorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoRG91YmxlUmVwVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKQogICAgICAgICAgICAgYnJlYWs7CkBA
IC0zNTAsMTAgKzM1MywxMCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3Jh
cGgpCiAgICAgICAgICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICAgICAgICAgIGNh
c2UgSW50MzJVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBLbm93bkludDMyVXNlOgotICAgICAg
ICAgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgICAgICBjYXNlIEludDUy
UmVwVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAgICAgICAgICAgICAg
IGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBSZWFsTnVtYmVyVXNl
OgorICAgICAgICAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICAgICAgICAgIGNh
c2UgRG91YmxlUmVwUmVhbFVzZToKICAgICAgICAgICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBDZWxsVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25vd25D
ZWxsVXNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExW
TS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvTExWTS5jcHAJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNyArMTg2LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICAgTFR5cGUgdHlwZTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmZsYWdzKCkgJiBO
b2RlUmVzdWx0TWFzaykgewotICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdE51bWJlcjoK
KyAgICAgICAgICAgICAgICBjYXNlIE5vZGVSZXN1bHREb3VibGU6CiAgICAgICAgICAgICAgICAg
ICAgIHR5cGUgPSBtX291dC5kb3VibGVUeXBlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICBjYXNlIE5vZGVSZXN1bHRJbnQzMjoKQEAgLTI4MiwxMiArMjgyLDMw
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBKU0NvbnN0YW50
OgogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAg
ICAgICAgICBjb21waWxlRG91YmxlQ29uc3RhbnQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CisgICAgICAgICAgICBjb21waWxlSW50NTJDb25zdGFu
dCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAg
ICAgICAgICAgICBjb21waWxlV2Vha0pTQ29uc3RhbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFBoYW50b21Bcmd1bWVudHM6CiAgICAgICAgICAgICBjb21waWxlUGhhbnRv
bUFyZ3VtZW50cygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRG91YmxlUmVw
OgorICAgICAgICAgICAgY29tcGlsZURvdWJsZVJlcCgpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgICAgICBjb21waWxlVmFsdWVSZXAoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEludDUyUmVwOgorICAgICAgICAgICAgY29t
cGlsZUludDUyUmVwKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWYWx1ZVRv
SW50MzI6CisgICAgICAgICAgICBjb21waWxlVmFsdWVUb0ludDMyKCk7CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRB
cmd1bWVudCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNzgsOSArMzk2LDYgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKICAgICAgICAgICAgIGNvbXBpbGVVSW50
MzJUb051bWJlcigpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW50MzJUb0Rv
dWJsZToKLSAgICAgICAgICAgIGNvbXBpbGVJbnQzMlRvRG91YmxlKCk7Ci0gICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgIGNvbXBpbGVD
aGVja1N0cnVjdHVyZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01NjksMTIgKzU4NCw2IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAgICAgICAgICAgICBj
b21waWxlSW52YWxpZGF0aW9uUG9pbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFZhbHVlVG9JbnQzMjoKLSAgICAgICAgICAgIGNvbXBpbGVWYWx1ZVRvSW50MzIoKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludDUyVG9WYWx1ZToKLSAgICAgICAgICAg
IGNvbXBpbGVJbnQ1MlRvVmFsdWUoKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKICAgICAgICAgICAgIGNvbXBpbGVDaGVja0FyZ3Vt
ZW50c05vdENyZWF0ZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjMzLDczICs2NDIsMTgg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdm9pZCBjb21w
aWxlVmFsdWVUb0ludDMyKCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkpIHsKLSAgICAgICAgY2FzZSBJbnQzMlVzZToKLSAgICAgICAgICAgIHNldElu
dDMyKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgCi0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKLSAgICAgICAgICAgIHNldElu
dDMyKG1fb3V0LmNhc3RUb0ludDMyKGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hpbGQxKCkpKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVz
ZToKLSAgICAgICAgY2FzZSBOb3RDZWxsVXNlOiB7Ci0gICAgICAgICAgICBMb3dlcmVkTm9kZVZh
bHVlIHZhbHVlID0gbV9pbnQzMlZhbHVlcy5nZXQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwot
ICAgICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SW50
MzIodmFsdWUudmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldCht
X25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkp
IHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMihudW1iZXJPck5vdENlbGxUb0ludDMyKG1fbm9k
ZS0+Y2hpbGQxKCksIHZhbHVlLnZhbHVlKCkpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFsdWUgPSBtX2RvdWJsZVZh
bHVlcy5nZXQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKGlzVmFs
aWQodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIoZG91YmxlVG9JbnQzMih2YWx1
ZS52YWx1ZSgpKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIC8vIFdlJ2xsIGJhc2ljYWxseSBqdXN0IGdldCBoZXJlIGZv
ciBjb25zdGFudHMuIEJ1dCBpdCdzIGdvb2QgdG8gaGF2ZSB0aGlzCi0gICAgICAgICAgICAvLyBj
YXRjaC1hbGwgc2luY2Ugd2Ugb2Z0ZW4gYWRkIG5ldyByZXByZXNlbnRhdGlvbnMgaW50byB0aGUg
bWl4LgotICAgICAgICAgICAgc2V0SW50MzIoCi0gICAgICAgICAgICAgICAgbnVtYmVyT3JOb3RD
ZWxsVG9JbnQzMigKLSAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDEoKSwKLSAgICAg
ICAgICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAg
ICAgCi0gICAgICAgIGNhc2UgQm9vbGVhblVzZToKLSAgICAgICAgICAgIHNldEludDMyKG1fb3V0
Lnplcm9FeHQobG93Qm9vbGVhbihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuaW50MzIpKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIGNvbXBpbGVJbnQ1MlRvVmFsdWUoKQotICAgIHsK
LSAgICAgICAgc2V0SlNWYWx1ZShsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpKTsKLSAgICB9
Ci0KICAgICB2b2lkIGNvbXBpbGVVcHNpbG9uKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBkZXN0
aW5hdGlvbiA9IG1fcGhpcy5nZXQobV9ub2RlLT5waGkoKSk7CiAgICAgICAgIAogICAgICAgICBz
d2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7Ci0gICAgICAgIGNhc2UgTnVtYmVy
VXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIG1fb3V0LnNldChs
b3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0aW9uKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgbV9vdXQuc2V0KGxvd0lu
dDMyKG1fbm9kZS0+Y2hpbGQxKCkpLCBkZXN0aW5hdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgog
ICAgICAgICAgICAgbV9vdXQuc2V0KGxvd0ludDUyKG1fbm9kZS0+Y2hpbGQxKCkpLCBkZXN0aW5h
dGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgpAQCAt
NzIyLDcgKzY3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBzb3VyY2UgPSBtX3BoaXMu
Z2V0KG1fbm9kZSk7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+ZmxhZ3MoKSAm
IE5vZGVSZXN1bHRNYXNrKSB7Ci0gICAgICAgIGNhc2UgTm9kZVJlc3VsdE51bWJlcjoKKyAgICAg
ICAgY2FzZSBOb2RlUmVzdWx0RG91YmxlOgogICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0Lmdl
dChzb3VyY2UpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vZGVSZXN1bHRJ
bnQzMjoKQEAgLTc0MiwxNyArNjk2LDEyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9pZCBjb21waWxlRG91YmxlQ29uc3RhbnQo
KQorICAgIHsKKyAgICAgICAgc2V0RG91YmxlKG1fb3V0LmNvbnN0RG91YmxlKG1fZ3JhcGgudmFs
dWVPZk51bWJlckNvbnN0YW50KG1fbm9kZSkpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjb21w
aWxlSW50NTJDb25zdGFudCgpCisgICAgeworICAgICAgICBpbnQ2NF90IHZhbHVlID0gbV9ncmFw
aC52YWx1ZU9mSlNDb25zdGFudChtX25vZGUpLmFzTWFjaGluZUludCgpOworICAgICAgICAKKyAg
ICAgICAgc2V0SW50NTIobV9vdXQuY29uc3RJbnQ2NCh2YWx1ZSA8PCBKU1ZhbHVlOjppbnQ1MlNo
aWZ0QW1vdW50KSk7CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmNvbnN0SW50NjQodmFs
dWUpKTsKKyAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVXZWFrSlNDb25zdGFudCgpCisgICAgewor
ICAgICAgICBzZXRKU1ZhbHVlKHdlYWtQb2ludGVyKG1fbm9kZS0+d2Vha0NvbnN0YW50KCkpKTsK
KyAgICB9CisgICAgCiAgICAgdm9pZCBjb21waWxlUGhhbnRvbUFyZ3VtZW50cygpCiAgICAgewog
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFs
dWUoKSkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlV2Vha0pTQ29uc3RhbnQoKQor
ICAgIHZvaWQgY29tcGlsZURvdWJsZVJlcCgpCiAgICAgewotICAgICAgICBzZXRKU1ZhbHVlKHdl
YWtQb2ludGVyKG1fbm9kZS0+d2Vha0NvbnN0YW50KCkpKTsKKyAgICAgICAgc3dpdGNoIChtX25v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAg
ICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgc2V0RG91YmxlKGpzVmFsdWVUb0Rv
dWJsZShtX25vZGUtPmNoaWxkMSgpLCB2YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAg
ICAgICAgc2V0RG91YmxlKHN0cmljdEludDUyVG9Eb3VibGUobG93U3RyaWN0SW50NTIobV9ub2Rl
LT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgY29tcGlsZVZhbHVlUmVw
KCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsK
KyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94
RG91YmxlKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogewor
ICAgICAgICAgICAgc2V0SlNWYWx1ZShzdHJpY3RJbnQ1MlRvSlNWYWx1ZShsb3dTdHJpY3RJbnQ1
MihtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgdm9pZCBjb21waWxl
SW50NTJSZXAoKQorICAgIHsKKyAgICAgICAgc2V0U3RyaWN0SW50NTIobV9vdXQuc2lnbkV4dChs
b3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuaW50NjQpKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBjb21waWxlVmFsdWVUb0ludDMyKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9u
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBJbnQzMlVzZToKKyAgICAg
ICAgICAgIHNldEludDMyKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAg
ICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNo
aWxkMSgpKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBEb3VibGVSZXBVc2U6CisgICAgICAgICAgICBzZXRJbnQzMihkb3VibGVUb0ludDMyKGxvd0Rv
dWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAKKyAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgTm90Q2VsbFVzZTogewor
ICAgICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1faW50MzJWYWx1ZXMuZ2V0KG1f
bm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkg
eworICAgICAgICAgICAgICAgIHNldEludDMyKHZhbHVlLnZhbHVlKCkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB2YWx1
ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAg
ICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICAgICAgc2V0SW50MzIobnVt
YmVyT3JOb3RDZWxsVG9JbnQzMihtX25vZGUtPmNoaWxkMSgpLCB2YWx1ZS52YWx1ZSgpKSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIC8vIFdlJ2xsIGJhc2ljYWxseSBqdXN0IGdldCBoZXJlIGZvciBjb25zdGFudHMuIEJ1
dCBpdCdzIGdvb2QgdG8gaGF2ZSB0aGlzCisgICAgICAgICAgICAvLyBjYXRjaC1hbGwgc2luY2Ug
d2Ugb2Z0ZW4gYWRkIG5ldyByZXByZXNlbnRhdGlvbnMgaW50byB0aGUgbWl4LgorICAgICAgICAg
ICAgc2V0SW50MzIoCisgICAgICAgICAgICAgICAgbnVtYmVyT3JOb3RDZWxsVG9JbnQzMigKKyAg
ICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDEoKSwKKyAgICAgICAgICAgICAgICAgICAg
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNh
c2UgQm9vbGVhblVzZToKKyAgICAgICAgICAgIHNldEludDMyKG1fb3V0Lnplcm9FeHQobG93Qm9v
bGVhbihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuaW50MzIpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
CisKICAgICB2b2lkIGNvbXBpbGVHZXRBcmd1bWVudCgpCiAgICAgewogICAgICAgICBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbV9ub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKQEAg
LTk2Niw3ICsxMDIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIGNh
c2UgSW50NTJSZXBVc2U6IHsKICAgICAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG1fbm9k
ZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1MikKICAgICAgICAgICAgICAgICAmJiAh
bV9zdGF0ZS5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQyKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1Mikp
IHsKICAgICAgICAgICAgICAgICBJbnQ1MktpbmQga2luZDsKQEAgLTEwMTYsNyArMTA3Myw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0g
ICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAg
ICAgICAgICAgICBMVmFsdWUgQzEgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICBMVmFsdWUgQzIgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSk7CiAKQEAgLTEw
NjUsNyArMTEyMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICBjYXNl
IEludDUyUmVwVXNlOiB7CiAgICAgICAgICAgICBJbnQ1MktpbmQga2luZDsKICAgICAgICAgICAg
IExWYWx1ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5jaGlsZDEoKSwga2luZCk7
CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQ1MihtX25vZGUtPmNoaWxkMigpLCBv
cHBvc2l0ZShraW5kKSk7CkBAIC0xMDkyLDcgKzExNDksNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVz
ZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgc2V0RG91Ymxl
KAogICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZU11bChsb3dEb3VibGUobV9ub2RlLT5jaGls
ZDEoKSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xMTk1LDcgKzEyNTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBj
YXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0LmRvdWJsZURp
digKICAgICAgICAgICAgICAgICBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJs
ZShtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjkzLDcgKzEz
NTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVz
ZTogewogICAgICAgICAgICAgc2V0RG91YmxlKAogICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJs
ZVJlbShsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxk
MigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzIxLDcgKzEzNzgsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBj
YXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAg
ICBMVmFsdWUgcmlnaHQgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAg
ICAKQEAgLTEzNzEsNyArMTQyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAg
IGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBzZXREb3VibGUobV9vdXQuZG91Ymxl
QWJzKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTE0MTgsNyArMTQ3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZTog
eworICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAgICAgICBpZiAoIW1fc3RhdGUu
Zm9yTm9kZShtX25vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NTIpKSB7CiAgICAg
ICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CiAgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVl
ID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5jaGlsZDEoKSwga2luZCk7CkBAIC0xNDM4LDcg
KzE0OTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJl
cFVzZTogewogICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0LmRvdWJsZU5lZyhsb3dEb3VibGUo
bV9ub2RlLT5jaGlsZDEoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0x
NDk4LDExICsxNTU1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0SW50MzIodmFsdWUpOwogICAg
IH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVJbnQzMlRvRG91YmxlKCkKLSAgICB7Ci0gICAgICAg
IHNldERvdWJsZShsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpOwotICAgIH0KLSAgICAKICAg
ICB2b2lkIGNvbXBpbGVDaGVja1N0cnVjdHVyZSgpCiAgICAgewogICAgICAgICBMVmFsdWUgY2Vs
bCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CkBAIC0yMjEzLDcgKzIyNjUsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAgICAgICAgICAgICAg
ICAgICBMVmFsdWUgaW50VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY2hpbGQz
LnVzZUtpbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZDMudXNl
S2luZCgpID09IEludDMyVXNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludFZhbHVl
ID0gbG93SW50MzIoY2hpbGQzKTsKQEAgLTIyNDYsNyArMjI5OCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBMVmFsdWUgZG91YmxlVmFsdWUgPSBsb3dEb3VibGUoY2hpbGQzKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ2xhbXBl
ZCh0eXBlKSkgewpAQCAtMzMyOCw4ICszMzgwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBp
bGVDb21wYXJlRXEoKQogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEludDMyVXNlKQotICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGlu
ZUludFVzZSkKLSAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVz
ZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKQor
ICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKQogICAg
ICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKQogICAgICAgICAg
ICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVhblVzZSkKICAgICAgICAgICAgIHx8
IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkgewpAQCAtMzM3MSw3ICsz
NDIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7
CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpIHsKICAg
ICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dX
aGljaGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBraW5kKTsKICAgICAgICAgICAgIExWYWx1
ZSByaWdodCA9IGxvd0ludDUyKG1fbm9kZS0+Y2hpbGQyKCksIGtpbmQpOwpAQCAtMzM3OSw3ICsz
NDMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsKKyAg
ICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkpIHsKICAgICAg
ICAgICAgIHNldEJvb2xlYW4oCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlRXF1YWwobG93
RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTQxMjMsNyArNDE3NSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkgeworICAgICAgICBpZiAobV9ub2RlLT5p
c0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7CiAgICAgICAgICAgICBJbnQ1MktpbmQga2lu
ZDsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5j
aGlsZDEoKSwga2luZCk7CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQ1MihtX25v
ZGUtPmNoaWxkMigpLCBraW5kKTsKQEAgLTQxMzEsNyArNDE4Myw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CisgICAgICAgIGlmIChtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChEb3VibGVSZXBVc2UpKSB7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxv
d0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0RvdWJsZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQu
ZmNtcChyZWFsQ29uZGl0aW9uLCBsZWZ0LCByaWdodCkpOwpAQCAtNDM4OCw3ICs0NDQwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBsb3dCb29sZWFuKG1fbm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdFpl
cm8zMihsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNl
OgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIHJldHVybiBtX291dC5k
b3VibGVOb3RFcXVhbChsb3dEb3VibGUoZWRnZSksIG1fb3V0LmRvdWJsZVplcm8pOwogICAgICAg
ICBjYXNlIE9iamVjdE9yT3RoZXJVc2U6CiAgICAgICAgICAgICByZXR1cm4gbV9vdXQuYml0Tm90
KApAQCAtNDczNCwyMSArNDc4Niw5IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAogICAgIGVudW0g
SW50NTJLaW5kIHsgU3RyaWN0SW50NTIsIEludDUyIH07Ci0gICAgTFZhbHVlIGxvd0ludDUyKEVk
Z2UgZWRnZSwgSW50NTJLaW5kIGtpbmQsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1
dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93SW50NTIoRWRnZSBlZGdl
LCBJbnQ1MktpbmQga2luZCkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9k
ZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGlu
ZUludFVzZSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewot
ICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQoZWRn
ZS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc01hY2hpbmVJbnQoKSkgewotICAg
ICAgICAgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG1fb3V0LmludDY0WmVybzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludDY0X3Qg
cmVzdWx0ID0gdmFsdWUuYXNNYWNoaW5lSW50KCk7Ci0gICAgICAgICAgICBpZiAoa2luZCA9PSBJ
bnQ1MikKLSAgICAgICAgICAgICAgICByZXN1bHQgPDw9IEpTVmFsdWU6OmludDUyU2hpZnRBbW91
bnQ7Ci0gICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnQ2NChyZXN1bHQpOwotICAgICAg
ICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNl
KTsKICAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWU7CiAgICAgICAgIApA
QCAtNDc3MywzNyArNDgxMywyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBp
bnQ1MlRvU3RyaWN0SW50NTIodmFsdWUudmFsdWUoKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX2ludDMyVmFsdWVzLmdldChlZGdl
Lm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgcmV0
dXJuIHNldEludDUyV2l0aFN0cmljdFZhbHVlKAotICAgICAgICAgICAgICAgIGVkZ2Uubm9kZSgp
LCBtX291dC5zaWduRXh0KHZhbHVlLnZhbHVlKCksIG1fb3V0LmludDY0KSwga2luZCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCEobV9zdGF0ZS5mb3JOb2Rl
KGVkZ2UpLm1fdHlwZSAmIFNwZWNJbnQ1MikpOwotICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBt
X2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFs
dWUpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSB2YWx1ZS52YWx1ZSgpOwot
ICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAganNWYWx1ZVZhbHVl
KGJveGVkUmVzdWx0KSwgZWRnZSwgU3BlY01hY2hpbmVJbnQsIGlzTm90SW50MzIoYm94ZWRSZXN1
bHQpKTsKLSAgICAgICAgICAgIHJldHVybiBzZXRJbnQ1MldpdGhTdHJpY3RWYWx1ZSgKLSAgICAg
ICAgICAgICAgICBlZGdlLm5vZGUoKSwgbV9vdXQuc2lnbkV4dCh1bmJveEludDMyKGJveGVkUmVz
dWx0KSwgbV9vdXQuaW50NjQpLCBraW5kKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIShtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgU3BlY01hY2hp
bmVJbnQpKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9zdGF0ZS5mb3JOb2RlKGVkZ2Up
Lm1fdHlwZSk7CiAgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7CiAgICAgICAgIHJldHVy
biBtX291dC5pbnQ2NFplcm87CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBsb3dJbnQ1MihFZGdl
IGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVj
dWxhdGlvbikKKyAgICBMVmFsdWUgbG93SW50NTIoRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGxvd0ludDUyKGVkZ2UsIEludDUyLCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIGxvd0lu
dDUyKGVkZ2UsIEludDUyKTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIGxvd1N0cmljdEludDUy
KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFu
ZFNwZWN1bGF0aW9uKQorICAgIExWYWx1ZSBsb3dTdHJpY3RJbnQ1MihFZGdlIGVkZ2UpCiAgICAg
ewotICAgICAgICByZXR1cm4gbG93SW50NTIoZWRnZSwgU3RyaWN0SW50NTIsIG1vZGUpOworICAg
ICAgICByZXR1cm4gbG93SW50NTIoZWRnZSwgU3RyaWN0SW50NTIpOwogICAgIH0KICAgICAKICAg
ICBib29sIGJldHRlclVzZVN0cmljdEludDUyKE5vZGUqIG5vZGUpCkBAIC00ODMwLDEwICs0ODUz
LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogICAgIAotICAgIExWYWx1ZSBsb3dXaGljaGV2ZXJJbnQ1MihFZGdlIGVkZ2UsIEludDUy
S2luZCYga2luZCwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFu
ZFNwZWN1bGF0aW9uKQorICAgIExWYWx1ZSBsb3dXaGljaGV2ZXJJbnQ1MihFZGdlIGVkZ2UsIElu
dDUyS2luZCYga2luZCkKICAgICB7CiAgICAgICAgIGtpbmQgPSBiZXN0SW50NTJLaW5kKGVkZ2Up
OwotICAgICAgICByZXR1cm4gbG93SW50NTIoZWRnZSwga2luZCwgbW9kZSk7CisgICAgICAgIHJl
dHVybiBsb3dJbnQ1MihlZGdlLCBraW5kKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGxvd0Nl
bGwoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVy
YW5kU3BlY3VsYXRpb24pCkBAIC00OTMxLDcxICs0OTU0LDE1IEBAIHByaXZhdGU6CiAgICAgICAg
IHJldHVybiBtX291dC5ib29sZWFuRmFsc2U7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBsb3dE
b3VibGUoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNP
cGVyYW5kU3BlY3VsYXRpb24pCisgICAgTFZhbHVlIGxvd0RvdWJsZShFZGdlIGVkZ2UpCiAgICAg
ewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uIHx8IGlzRG91YmxlKGVkZ2UudXNlS2luZCgpKSk7Ci0gICAgICAgIAotICAgICAgICBp
ZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewotICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1f
Z3JhcGgudmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKCF2
YWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxl
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuZG91YmxlWmVybzsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiBtX291dC5jb25zdERvdWJsZSh2YWx1ZS5hc051bWJlcigp
KTsKLSAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0RvdWJsZShlZGdlLnVzZUtp
bmQoKSkpOwogICAgICAgICAKICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1fZG91
YmxlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkK
ICAgICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZSgpOwogICAgICAgICAKLSAgICAgICAgdmFs
dWUgPSBtX2ludDMyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlk
KHZhbHVlKSkgewotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmludFRvRG91Ymxl
KHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAgICAgc2V0RG91YmxlKGVkZ2Uubm9kZSgpLCByZXN1
bHQpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgdmFsdWUgPSBtX3N0cmljdEludDUyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAg
ICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ1MlRv
RG91YmxlKGVkZ2UsIHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBt
X2ludDUyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVl
KSkKLSAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ1MlRvRG91YmxlKGVkZ2UsIGludDUyVG9T
dHJpY3RJbnQ1Mih2YWx1ZS52YWx1ZSgpKSk7Ci0gICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1f
anNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1
ZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IHZhbHVlLnZhbHVlKCk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGludENhc2UgPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoIkRvdWJsZSB1bmJveGluZyBpbnQgY2FzZSIpKTsKLSAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZSB1bmJv
eGluZyBkb3VibGUgY2FzZSIpKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlv
biA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRG91YmxlIHVuYm94aW5nIGNvbnRpbnVhdGlvbiIp
KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIoYm94
ZWRSZXN1bHQpLCB1bnN1cmUoZG91YmxlQ2FzZSksIHVuc3VyZShpbnRDYXNlKSk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8o
aW50Q2FzZSwgZG91YmxlQ2FzZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGludFRvRG91YmxlID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIG1fb3V0
LmludFRvRG91YmxlKHVuYm94SW50MzIoYm94ZWRSZXN1bHQpKSk7Ci0gICAgICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGRvdWJsZUNhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIEZUTF9UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShib3hlZFJl
c3VsdCksIGVkZ2UsIFNwZWNGdWxsTnVtYmVyLCBpc0NlbGxPck1pc2MoYm94ZWRSZXN1bHQpKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgdW5ib3hlZERvdWJsZSA9
IG1fb3V0LmFuY2hvcih1bmJveERvdWJsZShib3hlZFJlc3VsdCkpOwotICAgICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnBoaShtX291dC5kb3VibGVUeXBlLCBpbnRUb0RvdWJs
ZSwgdW5ib3hlZERvdWJsZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHNldERvdWJsZShl
ZGdlLm5vZGUoKSwgcmVzdWx0KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCEobV9zdGF0ZS5mb3JOb2RlKGVk
Z2UpLm1fdHlwZSAmIFNwZWNGdWxsTnVtYmVyKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFt
X3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlKTsKICAgICAgICAgdGVybWluYXRlKFVuY291bnRh
YmxlKTsKICAgICAgICAgcmV0dXJuIG1fb3V0LmRvdWJsZVplcm87CiAgICAgfQpAQCAtNTAwMyw2
ICs0OTcwLDggQEAgcHJpdmF0ZToKICAgICBMVmFsdWUgbG93SlNWYWx1ZShFZGdlIGVkZ2UsIE9w
ZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikK
ICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChlZGdlLnVzZUtpbmQoKSAhPSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIAogICAgICAg
ICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIHJldHVybiBtX291dC5jb25z
dEludDY0KEpTVmFsdWU6OmVuY29kZShtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9k
ZSgpKSkpOwpAQCAtNTAxOCwxNCArNDk4Nyw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0
SW50NTJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUp
KQotICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDUyVG9KU1ZhbHVlKHZhbHVlLnZhbHVlKCkp
OwotICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX2ludDUyVmFsdWVzLmdldChlZGdlLm5vZGUo
KSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBzdHJp
Y3RJbnQ1MlRvSlNWYWx1ZShpbnQ1MlRvU3RyaWN0SW50NTIodmFsdWUudmFsdWUoKSkpOwotICAg
ICAgICAKICAgICAgICAgdmFsdWUgPSBtX2Jvb2xlYW5WYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsK
ICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CiAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gYm94Qm9vbGVhbih2YWx1ZS52YWx1ZSgpKTsKQEAgLTUwMzMsMTMgKzQ5OTQsNiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgdmFsdWUgPSBtX2RvdWJsZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBp
ZiAoaXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBib3hEb3Vi
bGUodmFsdWUudmFsdWUoKSk7Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKGVkZ2Uubm9kZSgpLCBy
ZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgICAgICAK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQpAQCAtNTA2NSwxMSArNTAxOSw5IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBzdHJpY3RJbnQ1MlRvRG91YmxlKEVkZ2Ug
ZWRnZSwgTFZhbHVlIHZhbHVlKQorICAgIExWYWx1ZSBzdHJpY3RJbnQ1MlRvRG91YmxlKExWYWx1
ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5pbnRUb0RvdWJs
ZSh2YWx1ZSk7Ci0gICAgICAgIHNldERvdWJsZShlZGdlLm5vZGUoKSwgcmVzdWx0KTsKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmludFRvRG91YmxlKHZhbHVl
KTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIHN0cmljdEludDUyVG9KU1ZhbHVlKExWYWx1ZSB2
YWx1ZSkKQEAgLTUwOTksMjMgKzUwNTEsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9v
dXQucGhpKG1fb3V0LmludDY0LCByZXN1bHRzKTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIHNl
dEludDUyV2l0aFN0cmljdFZhbHVlKE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1ZSwgSW50NTJLaW5k
IGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgY2FzZSBTdHJp
Y3RJbnQ1MjoKLSAgICAgICAgICAgIHNldFN0cmljdEludDUyKG5vZGUsIHZhbHVlKTsKLSAgICAg
ICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIEludDUyOgot
ICAgICAgICAgICAgdmFsdWUgPSBzdHJpY3RJbnQ1MlRvSW50NTIodmFsdWUpOwotICAgICAgICAg
ICAgc2V0SW50NTIobm9kZSwgdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBMVmFsdWUgc3RyaWN0SW50NTJUb0ludDUy
KExWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5zaGwodmFsdWUsIG1f
b3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCkpOwpAQCAtNTE0Nyw2ICs1
MDgyLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC50ZXN0Tm9uWmVy
bzY0KGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlcik7CiAgICAgfQorICAgIAogICAgIExWYWx1ZSB1
bmJveERvdWJsZShMVmFsdWUganNWYWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5i
aXRDYXN0KG1fb3V0LmFkZChqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpLCBtX291dC5kb3VibGVU
eXBlKTsKQEAgLTUxNTUsNiArNTA5MSwzOSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fb3V0LnN1YihtX291dC5iaXRDYXN0KGRvdWJsZVZhbHVlLCBtX291dC5pbnQ2NCksIG1f
dGFnVHlwZU51bWJlcik7CiAgICAgfQorICAgIExWYWx1ZSBqc1ZhbHVlVG9Eb3VibGUoRWRnZSBl
ZGdlLCBMVmFsdWUgYm94ZWRWYWx1ZSkKKyAgICB7CisgICAgICAgIExCYXNpY0Jsb2NrIGludENh
c2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZVJlcCB1bmJveGluZyBpbnQgY2FzZSIp
KTsKKyAgICAgICAgTEJhc2ljQmxvY2sgZG91YmxlQ2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQs
ICgiRG91YmxlUmVwIHVuYm94aW5nIGRvdWJsZSBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9j
ayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZVJlcCB1bmJveGlu
ZyBjb250aW51YXRpb24iKSk7CisgICAgICAgICAgICAKKyAgICAgICAgTFZhbHVlIGlzTm90SW50
MzI7CisgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVj
SW50MzIpKQorICAgICAgICAgICAgaXNOb3RJbnQzMiA9IG1fb3V0LmJvb2xlYW5GYWxzZTsKKyAg
ICAgICAgZWxzZSBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSwgflNwZWNJ
bnQzMikpCisgICAgICAgICAgICBpc05vdEludDMyID0gbV9vdXQuYm9vbGVhblRydWU7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGlzTm90SW50MzIgPSB0aGlzLT5pc05vdEludDMyKGJveGVk
VmFsdWUpOworICAgICAgICBtX291dC5icmFuY2goaXNOb3RJbnQzMiwgdW5zdXJlKGRvdWJsZUNh
c2UpLCB1bnN1cmUoaW50Q2FzZSkpOworICAgICAgICAgICAgCisgICAgICAgIExCYXNpY0Jsb2Nr
IGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW50Q2FzZSwgZG91YmxlQ2FzZSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgaW50VG9Eb3VibGUgPSBtX291dC5hbmNob3Io
CisgICAgICAgICAgICBtX291dC5pbnRUb0RvdWJsZSh1bmJveEludDMyKGJveGVkVmFsdWUpKSk7
CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICBtX291dC5hcHBlbmRUbyhkb3VibGVDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICAgICAg
CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKAorICAgICAgICAgICAganNWYWx1ZVZhbHVlKGJveGVk
VmFsdWUpLCBlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIsIGlzQ2VsbE9yTWlzYyhib3hlZFZhbHVl
KSk7CisgICAgICAgICAgICAKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgdW5ib3hlZERvdWJsZSA9
IG1fb3V0LmFuY2hvcih1bmJveERvdWJsZShib3hlZFZhbHVlKSk7CisgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIAorICAgICAgICByZXR1cm4gbV9v
dXQucGhpKG1fb3V0LmRvdWJsZVR5cGUsIGludFRvRG91YmxlLCB1bmJveGVkRG91YmxlKTsKKyAg
ICB9CiAgICAgCiAgICAgTFZhbHVlIGlzTnVtYmVyKExWYWx1ZSBqc1ZhbHVlKQogICAgIHsKQEAg
LTUyMjYsOCArNTE5NSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6Ci0gICAgICAgIGNh
c2UgS25vd25OdW1iZXJVc2U6CiAgICAgICAgIGNhc2UgS25vd25TdHJpbmdVc2U6CisgICAgICAg
IGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAg
ICAgQVNTRVJUKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEludDMyVXNlOgpAQCAtNTI2MCwxNCArNTIzMCwxMSBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAg
ICAgICAgc3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QoZWRnZSk7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgICAgICAgICAgc3BlY3VsYXRl
UmVhbE51bWJlcihlZGdlKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51bWJl
clVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZU51bWJlcihlZGdlKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Ci0gICAgICAgICAgICBzcGVjdWxhdGVN
YWNoaW5lSW50KGVkZ2UpOworICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgICAg
ICAgICBzcGVjdWxhdGVEb3VibGVSZWFsKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZUJvb2xlYW4oZWRnZSk7
CkBAIC01NTI5LDE0ICs1NDk2LDExIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBzcGVjdWxh
dGVOdW1iZXIoRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAgLy8gRG8gYW4gZWFybHkgcmV0dXJu
IGhlcmUgYmVjYXVzZSBsb3dEb3VibGUoKSBjYW4gY3JlYXRlIGEgbG90IG9mIGNvbnRyb2wgZmxv
dy4KLSAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgbG93RG91YmxlKGVkZ2UpOworICAg
ICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2Us
IFNwZWNCeXRlY29kZU51bWJlciwgaXNOb3ROdW1iZXIodmFsdWUpKTsKICAgICB9CiAgICAgCi0g
ICAgdm9pZCBzcGVjdWxhdGVSZWFsTnVtYmVyKEVkZ2UgZWRnZSkKKyAgICB2b2lkIHNwZWN1bGF0
ZURvdWJsZVJlYWwoRWRnZSBlZGdlKQogICAgIHsKICAgICAgICAgLy8gRG8gYW4gZWFybHkgcmV0
dXJuIGhlcmUgYmVjYXVzZSBsb3dEb3VibGUoKSBjYW4gY3JlYXRlIGEgbG90IG9mIGNvbnRyb2wg
Zmxvdy4KICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQpA
QCAtNTU0NCwxOSArNTUwOCwxMCBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgTFZhbHVl
IHZhbHVlID0gbG93RG91YmxlKGVkZ2UpOwogICAgICAgICBGVExfVFlQRV9DSEVDSygKLSAgICAg
ICAgICAgIGRvdWJsZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAorICAg
ICAgICAgICAgZG91YmxlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjRG91YmxlUmVhbCwKICAgICAg
ICAgICAgIG1fb3V0LmRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQodmFsdWUsIHZhbHVlKSk7CiAg
ICAgfQogICAgIAotICAgIHZvaWQgc3BlY3VsYXRlTWFjaGluZUludChFZGdlIGVkZ2UpCi0gICAg
ewotICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSkpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBJbnQ1MktpbmQga2luZDsKLSAgICAg
ICAgbG93V2hpY2hldmVySW50NTIoZWRnZSwga2luZCk7Ci0gICAgfQotICAgIAogICAgIHZvaWQg
c3BlY3VsYXRlQm9vbGVhbihFZGdlIGVkZ2UpCiAgICAgewogICAgICAgICBsb3dCb29sZWFuKGVk
Z2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5j
cHAJKHJldmlzaW9uIDE2NzIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFs
dWVGb3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MSw2ICs3MSw3IEBAIHZvaWQgcmVib3hBY2Nv
cmRpbmdUb0Zvcm1hdCgKICAgICBjYXNlIFZhbHVlRm9ybWF0RG91YmxlOiB7CiAgICAgICAgIGpp
dC5tb3ZlRG91YmxlVG82NChGUFJJbmZvOjpmcFJlZ1QwLCBzY3JhdGNoMSk7CiAgICAgICAgIGpp
dC5tb3ZlNjRUb0RvdWJsZSh2YWx1ZSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgIGppdC5z
YW5pdGl6ZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgaml0LmJveERvdWJsZShG
UFJJbmZvOjpmcFJlZ1QwLCB2YWx1ZSk7CiAgICAgICAgIGppdC5tb3ZlNjRUb0RvdWJsZShzY3Jh
dGNoMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMTY3MjA0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw2ICs1NCwxNCBAQCBWZWN0b3I8Qnl0ZWNvZGVBbmRN
YWNoaW5lT2Zmc2V0PiYgQXNzZW1iCiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7
CiB9CiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpzYW5pdGl6ZURvdWJsZShGUFJSZWcgZnByKQor
eworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdE5hTiA9IGJyYW5jaERvdWJsZShEb3VibGVF
cXVhbCwgZnByLCBmcHIpOworICAgIHN0YXRpYyBjb25zdCBkb3VibGUgTmFOID0gUU5hTjsKKyAg
ICBsb2FkRG91YmxlKCZOYU4sIGZwcik7CisgICAgbm90TmFOLmxpbmsodGhpcyk7Cit9CisKICNp
ZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6c2V0U2FtcGxp
bmdGbGFnKGludDMyX3QgZmxhZykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTY3MjA0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDE3LDYgKzQxNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGppdEFzc2VydFRhZ3NJblBsYWNlKCkg
eyB9CiAgICAgdm9pZCBqaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpIHsgfQogI2VuZGlmCisg
ICAgCisgICAgdm9pZCBzYW5pdGl6ZURvdWJsZShGUFJSZWcgZnByKTsKIAogICAgIC8vIFRoZXNl
IG1ldGhvZHMgY29udmVydCBiZXR3ZWVuIGRvdWJsZXMsIGFuZCBkb3VibGVzIGJveGVkIGFuZCBK
U1ZhbHVlcy4KICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNDM1LDYgKzQzNywxMSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBmcHI7CiAgICAgfQogICAgIAorICAgIHZvaWQgYm94RG91YmxlKEZQ
UlJlZyBmcHIsIEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgeworICAgICAgICBib3hEb3VibGUoZnBy
LCByZWdzLmdwcigpKTsKKyAgICB9CisgICAgCiAgICAgLy8gSGVyZSBhcmUgcG9zc2libGUgYXJy
YW5nZW1lbnRzIG9mIHNvdXJjZSwgdGFyZ2V0LCBzY3JhdGNoOgogICAgIC8vIC0gc291cmNlLCB0
YXJnZXQsIHNjcmF0Y2ggY2FuIGFsbCBiZSBzZXBhcmF0ZSByZWdpc3RlcnMuCiAgICAgLy8gLSBz
b3VyY2UgYW5kIHRhcmdldCBjYW4gYmUgdGhlIHNhbWUgYnV0IHNjcmF0Y2ggaXMgc2VwYXJhdGUu
CkBAIC00NjcsNiArNDc0LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1vdmVJbnRzVG9E
b3VibGUocGF5bG9hZEdQUiwgdGFnR1BSLCBmcHIsIHNjcmF0Y2hGUFIpOwogICAgIH0KKyAgICAK
KyAgICB2b2lkIGJveERvdWJsZShGUFJSZWcgZnByLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsK
KyAgICAgICAgYm94RG91YmxlKGZwciwgcmVncy50YWdHUFIoKSwgcmVncy5wYXlsb2FkR1BSKCkp
OworICAgIH0KICNlbmRpZgogICAgIAogICAgIGVudW0gRXhjZXB0aW9uQ2hlY2tLaW5kIHsgTm9y
bWFsRXhjZXB0aW9uQ2hlY2ssIEludmVydGVkRXhjZXB0aW9uQ2hlY2sgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229312</attachid>
            <date>2014-04-14 15:31:26 -0700</date>
            <delta_ts>2014-04-14 21:58:37 -0700</delta_ts>
            <desc>passing tests on 64-bit</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>206823</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxOCBA
QAorMjAxNC0wNC0xNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBJUiBzaG91bGQga2VlcCB0aGUgZGF0YSBmbG93IG9mIGRvdWJsZXMgYW5kIGludDUyJ3Mg
c2VwYXJhdGUgZnJvbSB0aGUgZGF0YSBmbG93IG9mIEpTVmFsdWUncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBXb3JrIGluIHByb2dyZXNz
LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjo6c2V0QnVpbHRJbkNvbnN0YW50KToK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyOjpzZXRDb25zdGFudCk6Cisg
ICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6c2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFj
dFZhbHVlOjpmaXhUeXBlRm9yUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0VmFsdWU6OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dFZhbHVlLmg6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suaDoKKyAgICAgICAgKiBkZmcv
REZHQmFzaWNCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjph
cHBlbmROb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjphcHBlbmROb25UZXJt
aW5hbCk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpDU0VQaGFzZTo6Y29uc3RhbnRDU0UpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpw
ZXJmb3JtTm9kZUNTRSk6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OmludDMyVG9Eb3Vi
bGVDU0UpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAg
ICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUp
OgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAq
IGRmZy9ERkdEQ0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RENFUGhhc2U6OmZpeHVw
QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdFZGdlLmg6CisgICAgICAgIChKU0M6OkRGRzo6RWRn
ZTo6d2lsbE5vdEhhdmVDaGVjayk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6
Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cEdldEFuZFNldExvY2Fsc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6Om9ic2VydmVVc2VLaW5kT25Ob2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXhJbnRFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjphdHRlbXB0VG9N
YWtlSW50ZWdlckFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6aW5qZWN0VHlw
ZUNvbnZlcnNpb25zSW5CbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6dHJ5
VG9SZWxheFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXhFZGdlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6Omlu
amVjdFR5cGVDb252ZXJzaW9uc0ZvckVkZ2UpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6OmFkZFBoYW50b21zSWZOZWNlc3NhcnkpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6OmZpeHVwU2V0TG9jYWxzSW5CbG9jayk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0Zs
dXNoRm9ybWF0Lmg6CisgICAgICAgIChKU0M6OkRGRzo6cmVzdWx0Rm9yKToKKyAgICAgICAgKEpT
Qzo6REZHOjp1c2VLaW5kRm9yKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YWRkTm9kZSk6CisgICAgICAgICogZGZnL0RGR0luUGxh
Y2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RT
dGF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogZGZnL0RGR0luc2VydGlvblNldC5oOgorICAg
ICAgICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6aW5zZXJ0Tm9kZSk6CisgICAgICAgIChKU0M6
OkRGRzo6SW5zZXJ0aW9uU2V0OjppbnNlcnRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6
SW5zZXJ0aW9uU2V0OjppbnNlcnRDb25zdGFudEZvclVzZSk6CisgICAgICAgICogZGZnL0RGR0lu
dGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJbnRlZ2Vy
Q2hlY2tDb21iaW5pbmdQaGFzZTo6aW5zZXJ0QWRkKToKKyAgICAgICAgKEpTQzo6REZHOjpJbnRl
Z2VyQ2hlY2tDb21iaW5pbmdQaGFzZTo6aW5zZXJ0TXVzdEFkZCk6CisgICAgICAgICogZGZnL0RG
R05vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb0lkZW50aXR5KToK
KyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpzZXRSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnJlc3VsdCk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aXNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
aGFzQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb0NvbnN0YW50
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjp2YWx1ZU9mSlNDb25zdGFudCk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNJbnQzMlJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSW50NTJSZXN1bHQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc051bWJlclJlc3VsdCk6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6aGFzRG91YmxlUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNKU1Jlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQm9vbGVhblJlc3Vs
dCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU3RvcmFnZVJlc3VsdCk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6ZGVmYXVsdFVzZUtpbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmRlZmF1bHRFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9JZGVu
dGl0eSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR05vZGVGbGFncy5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6ZHVtcE5vZGVGbGFncyk6CisgICAgICAgICogZGZnL0RGR05vZGVGbGFncy5o
OgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpj
b21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAg
KiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRm
Zy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlJlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcv
REZHU1NBQ29udmVyc2lvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTU0FDb252ZXJz
aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChK
U0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50U2F2ZVBsYW5G
b3JHUFIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzaWxlbnRTYXZlUGxh
bkZvckZQUik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVSZWdzVGVtcG9yYXJ5OjpKU1ZhbHVlUmVnc1Rl
bXBvcmFyeSk6CisgICAgICAgIChKU0M6OkRGRzo6SlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6On5KU1Zh
bHVlUmVnc1RlbXBvcmFyeSk6CisgICAgICAgIChKU0M6OkRGRzo6SlNWYWx1ZVJlZ3NUZW1wb3Jh
cnk6OnJlZ3MpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVl
cEhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0dl
bmVyYXRlZFR5cGVGb3JUb0ludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEb3VibGVSZXApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVmFsdWVSZXApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQWRkKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTXVsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZU51bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZURv
dWJsZVJlYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50MzJUb0RvdWJs
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZU1hY2hpbmVJbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVSZWFsTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Ym94RG91Ymxl
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6anNWYWx1ZVJlc3VsdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlSW50NTJPcGVyYW5kOjpTcGVjdWxhdGVJbnQ1Mk9w
ZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZDo6
U3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQ6OlNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlRG91YmxlT3BlcmFuZDo6U3BlY3VsYXRlRG91
YmxlT3BlcmFuZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDUyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29udmVydFRvRG91YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcv
REZHVXNlS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6Cisg
ICAgICAgIChKU0M6OkRGRzo6c2hvdWxkTm90SGF2ZVR5cGVDaGVjayk6CisgICAgICAgIChKU0M6
OkRGRzo6bWF5SGF2ZVR5cGVDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6aXNOdW1lcmljYWwp
OgorICAgICAgICAoSlNDOjpERkc6OmlzRG91YmxlKToKKyAgICAgICAgKEpTQzo6REZHOjppc0Nl
bGwpOgorICAgICAgICAoSlNDOjpERkc6OnVzZXNTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpE
Rkc6OnVzZUtpbmRGb3JSZXN1bHQpOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6OnZhbGlkYXRlKToKKyAgICAgICAgKiBkZmcvREZH
VmFyaWFkaWNGdW5jdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OmNyZWF0ZVBoaVZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZVVwc2lsb24pOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlUGhp
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZURvdWJsZUNvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUludDUyQ29u
c3RhbnQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlV2Vha0pT
Q29uc3RhbnQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlRG91
YmxlUmVwKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVZhbHVl
UmVwKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUludDUyUmVw
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVZhbHVlVG9JbnQz
Mik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcml0aEFkZE9y
U3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTXVs
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoRGl2KToK
KyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTW9kKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTWluT3JNYXgpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJpdGhBYnMpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJpdGhOZWdhdGUpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlUHV0QnlWYWwpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29tcGFyZUVxKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBhcmUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpib29saWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6bG93SW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjps
b3dTdHJpY3RJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd1do
aWNoZXZlckludDUyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6bG93RG91
YmxlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6bG93SlNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnN0cmljdEludDUyVG9Eb3VibGUpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpqc1ZhbHVlVG9Eb3VibGUpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVEb3VibGVSZWFsKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUludDUyVG9WYWx1ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVJbnQzMlRvRG91YmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c2V0SW50NTJXaXRoU3Ry
aWN0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpz
cGVjdWxhdGVSZWFsTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6c3BlY3VsYXRlTWFjaGluZUludCk6IERlbGV0ZWQuCisgICAgICAgICogZnRsL0ZU
TFZhbHVlRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpyZWJveEFjY29yZGluZ1RvRm9y
bWF0KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpzYW5pdGl6ZURvdWJsZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5
SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJveERvdWJsZSk6CisK
IDIwMTQtMDQtMTQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBG
dW5jdGlvbi5iaW5kIGl0c2VsZiBpcyB0b28gc2xvdwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02
MTAsNyArNjEwLDYgQEAKIAkJMEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxv
Y2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QjRCNTFGMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdOb2RlQWxsb2NhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGQjkyMUMxNkQwMkYxMTAw
NTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTg3RjJDMTY3RkU4NEIwMDNDMkY4RCAvKiBE
RkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGQjkyMUQxNkQwMkYzMDAwNTVBNURCIC8qIERGR1Nsb3dQ
YXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjFFM0E1MDE1MzdDMkNCMDAwRjk0NTYgLyogREZHU2xvd1BhdGhHZW5lcmF0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkZCOTIx
RTE2RDAyRjQ3MDA1NUE1REIgLyogREZHVmFyaWFkaWNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NUEzMUUxNkFCNzZBRTAwNzc1NzFF
IC8qIERGR1ZhcmlhZGljRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIgLyogTm9kZUNvbnN0
cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTMwREFEMDMwRkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZDOTlEMTE4NEVDOEFE
MDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkZDOTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2Rl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZG
Qzk5RDQxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZDOTlE
MjE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcCAq
LzsgfTsKQEAgLTg5NCw3ICs4OTMsNyBAQAogCQk1NTQwNzcyMDE4REE1OEFEMDBFRkY3RjIgLyog
SlNBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkI2NkJCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlldy5o
ICovOyB9OwogCQk1NTQwNzcyMTE4REE1OEFEMDBFRkY3RjIgLyogSlNBcnJheUJ1ZmZlclZpZXdJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjJCNjZCQzE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggKi87
IH07CiAJCTU1NDA3NzIyMThEQTU4QUQwMEVGRjdGMiAvKiBKU0FycmF5SXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QkRBRUM1MTdGNEVB
MTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuaCAqLzsgfTsKLQkJNTU0MDc3MjUxOERBNThB
RDAwRUZGN0YyIC8qIEpTQm91bmRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRG
dW5jdGlvbi5oICovOyB9OworCQk1NTQwNzcyNTE4REE1OEFEMDBFRkY3RjIgLyogKG51bGwpIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyB9OwogCQk1NTQwNzcyQjE4REE1OEFE
MDBFRkY3RjIgLyogSlNDZWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzExNjdEODBFMTlCQ0M5MDA4MDY2REQgLyogSlNDZWxsLmggKi87IH07CiAJ
CTU1NDA3NzJDMThEQTU4QUQwMEVGRjdGMiAvKiBKU0NlbGxJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk3NDk2RjE2ODdBREUyMDBBNEZG
NkEgLyogSlNDZWxsSW5saW5lcy5oICovOyB9OwogCQk1NTQwNzcyRDE4REE1OEFEMDBFRkY3RjIg
LyogSlNDSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYxREQ4NDkxOEE5NDVCRTAwMjZGM0ZBIC8qIEpTQ0lubGluZXMuaCAqLzsgfTsKQEAg
LTEwNDMsNTEgKzEwNDIsMTAgQEAKIAkJNTU0MDc4ODgxOERBNThBRDAwRUZGN0YyIC8qIFdlYWtS
YW5kb20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggKi87IH07CiAJCTU1NDA3ODhE
MThEQTU4QUQwMEVGRjdGMiAvKiBXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0
ZUJhcnJpZXIuaCAqLzsgfTsKIAkJNTU0MDc4OEYxOERBNThBRDAwRUZGN0YyIC8qIFdyaXRlQmFy
cmllcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJhcnJpZXJJbmxpbmVzLmggKi87
IH07Ci0JCTU1NDA3ODlFMThEQTU4QUQwMEVGRjdGMiAvKiBBcmd1bWVudHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNTdERTUwRTFGNTFDNTAw
MTZCNkM5IC8qIEFyZ3VtZW50cy5jcHAgKi87IH07Ci0JCTU1NDA3OEEwMThEQTU4QUQwMEVGRjdG
MiAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzYxNDBDOTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJn
dW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwICovOyB9OwogCQk1NTQwNzhBQjE4REE1OEFEMDBF
RkY3RjIgLyogQXJyYXlDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc5NTIwNjBFMTVFOEE4MDBBODk4QUIgLyogQXJyYXlDb25z
dHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1NDA3OEFEMThEQTU4QUQwMEVGRjdGMiAvKiBBcnJheUl0
ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3QkRBRUMyMTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJvdG90
eXBlLmNwcCAqLzsgfTsKIAkJNTU0MDc4QUYxOERBNThBRDAwRUZGN0YyIC8qIEFycmF5UHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2
OTJBODREMDI1NTU5N0QwMUZGNjBGNyAvKiBBcnJheVByb3RvdHlwZS5jcHAgKi87IH07Ci0JCTU1
NDA3OEIyMThEQTU4QUQwMEVGRjdGMiAvKiBCb29sZWFuQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3OTUyMzIwRTE1RUI1NjAw
QTg5OEFCIC8qIEJvb2xlYW5Db25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1NDA3OEI0MThEQTU4
QUQwMEVGRjdGMiAvKiBCb29sZWFuUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzk1MjM0MEUxNUVCNTYwMEE4OThBQiAvKiBCb29s
ZWFuUHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDc4RDUxOERBNThBRDAwRUZGN0YyIC8qIERh
dGVDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0QyMDM0NTBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZUNvbnN0cnVjdG9yLmNwcCAq
LzsgfTsKLQkJNTU0MDc4RDgxOERBNThBRDAwRUZGN0YyIC8qIERhdGVQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMjAzNDcwRTE3
MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwNzk0QjE4REE1
OEFEMDBFRkY3RjIgLyogRXJyb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAyRTkwNDBFMTgzOURCMDAwRjkyOTcgLyogRXJy
b3JDb25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1NDA3OTRFMThEQTU4QUQwMEVGRjdGMiAvKiBF
cnJvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzAyRTkwNjBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JQcm90b3R5cGUuY3BwICov
OyB9OwotCQk1NTQwNzk3RDE4REE1OEFEMDBFRkY3RjIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBD
MDBFMTZENEU5MDBBMDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1
NDA3OTdGMThEQTU4QUQwMEVGRjdGMiAvKiBGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg1QzAyNTU1OTdEMDFG
RjYwRjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwNzlDMjE4REE1OEFE
MDBFRkY3RjIgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkI2MTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwICovOyB9OwotCQk1NTQwNzlDMzE4REE1OEFE
MDBFRkY3RjIgLyogSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCODE3QjZCNUFCMDBBN0FFM0YgLyog
SlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAgKi87IH07Ci0JCTU1NDA3OUM1MThEQTU4QUQwMEVG
RjdGMiAvKiBKU0FycmF5SXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdCREFFQzQxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVy
YXRvci5jcHAgKi87IH07Ci0JCTU1NDA3OUM3MThEQTU4QUQwMEVGRjdGMiAvKiBKU0JvdW5kRnVu
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi87IH07Ci0J
CTU1NDA3OUQzMThEQTU4QUQwMEVGRjdGMiAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkJGMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDc5RDUx
OERBNThBRDAwRUZGN0YyIC8qIEpTRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NUUwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVu
Y3Rpb24uY3BwICovOyB9OwotCQk1NTQwNzlEQTE4REE1OEFEMDBFRkY3RjIgLyogSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM3NTZGQzYwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcCAqLzsgfTsKLQkJNTU0MDc5RUIxOERBNThBRDAwRUZGN0YyIC8qIEpTT05PYmplY3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGOTkz
NUUwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3BwICovOyB9OwotCQk1NTQwNzlFRTE4
REE1OEFEMDBFRkY3RjIgLyogSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxODRFMjAxN0JFRTI0MDAwN0NCNjNB
IC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDc5RjAxOERBNThBRDAw
RUZGN0YyIC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEMDE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9t
aXNlRnVuY3Rpb25zLmNwcCAqLzsgfTsKLQkJNTU0MDc5RjExOERBNThBRDAwRUZGN0YyIC8qIEpT
UHJvbWlzZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzE4NEUxQzE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBl
LmNwcCAqLzsgfTsKLQkJNTU0MDdBMjIxOERBNThBRDAwRUZGN0YyIC8qIENvbnNvbGVQcm90b3R5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUz
Q0UwODExOEJDMUE1NjAwQkVERjc2IC8qIENvbnNvbGVQcm90b3R5cGUuY3BwICovOyB9OwotCQk1
NTQwN0EyNTE4REE1OEFEMDBFRkY3RjIgLyogTWFwQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3MzcxN0NCRTg1MzAwQzNF
NjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDdBMjgxOERBNThBRDAwRUZG
N0YyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NERFRjhEMTgyRDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVy
YXRvclByb3RvdHlwZS5jcHAgKi87IH07Ci0JCTU1NDA3QTI5MThEQTU4QUQwMEVGRjdGMiAvKiBN
YXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi87IH07
Ci0JCTU1NDA3QTJFMThEQTU4QUQwMEVGRjdGMiAvKiBNYXRoT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODZBMDI1NTU5N0QwMUZG
NjBGNyAvKiBNYXRoT2JqZWN0LmNwcCAqLzsgfTsKLQkJNTU0MDdBMzExOERBNThBRDAwRUZGN0Yy
IC8qIE5hbWVDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkVCRjJGOTE1NjBGMDM2MDA4RTkyMjIgLyogTmFtZUNvbnN0cnVjdG9y
LmNwcCAqLzsgfTsKLQkJNTU0MDdBMzMxOERBNThBRDAwRUZGN0YyIC8qIE5hbWVQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQkYy
RkQxNTYwRjAzNjAwOEU5MjIyIC8qIE5hbWVQcm90b3R5cGUuY3BwICovOyB9OwogCQk1NTQwN0Ez
ODE4REE1OEFEMDBFRkY3RjIgLyogTnVtYmVyQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjgwQzIwRTE2RDRFOTAwQTA2RTky
IC8qIE51bWJlckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNTU0MDdBM0ExOERBNThBRDAwRUZG
N0YyIC8qIE51bWJlclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBDNDBFMTZENEU5MDBBMDZFOTIgLyogTnVtYmVyUHJvdG90
eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDdBM0MxOERBNThBRDAwRUZGN0YyIC8qIE9iamVjdENvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjY4MEM2MEUxNkQ0RTkwMEEwNkU5MiAvKiBPYmplY3RDb25zdHJ1Y3Rvci5jcHAgKi87IH07
Ci0JCTU1NDA3QTNEMThEQTU4QUQwMEVGRjdGMiAvKiBPYmplY3RQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjgwQzgwRTE2RDRF
OTAwQTA2RTkyIC8qIE9iamVjdFByb3RvdHlwZS5jcHAgKi87IH07Ci0JCTU1NDA3QTYzMThEQTU4
QUQwMEVGRjdGMiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0QyMDJCRDBFMTcwNkE3MDAyQzdFODIgLyogUmVn
RXhwQ29uc3RydWN0b3IuY3BwICovOyB9OwotCQk1NTQwN0E2NjE4REE1OEFEMDBFRkY3RjIgLyog
UmVnRXhwUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRDIwMkJGMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBQcm90b3R5cGUuY3Bw
ICovOyB9OwotCQk1NTQwN0E3QjE4REE1OEFEMDBFRkY3RjIgLyogU2V0SXRlcmF0b3JQcm90b3R5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5
MERENjcxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsK
LQkJNTU0MDdBN0MxOERBNThBRDAwRUZGN0YyIC8qIFNldFByb3RvdHlwZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI5OUQ5RjE3RDEyODQ4MDA1
RjVGRjkgLyogU2V0UHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDdBODgxOERBNThBRDAwRUZG
N0YyIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDM0MwMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdDb25z
dHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1NDA3QThBMThEQTU4QUQwMEVGRjdGMiAvKiBTdHJpbmdQ
cm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMxOEMzQzUwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5jcHAgKi87IH07
Ci0JCTU1NDA3QUFDMThEQTU4QUQwMEVGRjdGMiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBREQxN0RB
NDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1NDA3QUFF
MThEQTU4QUQwMEVGRjdGMiAvKiBXZWFrTWFwUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQURGMTdEQTQxQUUwMDY1MzhBRiAv
KiBXZWFrTWFwUHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTVGMTM4MEIxOEVGNUY1MDAwOTgyMDE1
IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMkU5MDgwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IuY3BwICovOyB9OwotCQk1NUYxMzgwQzE4RUY1RkI5MDA5ODIwMTUgLyog
U2V0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTcyOTlEQTMxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmNwcCAq
LzsgfTsKIAkJNUQ1MzcyNkYwRTFDNTQ4ODAwMjFFNTQ5IC8qIFRyYWNpbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVENTM3MjZFMEUxQzU0ODgwMDIx
RTU0OSAvKiBUcmFjaW5nLmggKi87IH07CiAJCTVENUQ4QUQxMEUwRDBFQkUwMEY5QzY5MiAvKiBs
aWJlZGl0LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgKi87IH07CiAJ
CTVEQkIxNTFCMTMxRDBCMzEwMDU2QUQzNiAvKiB0ZXN0YXBpLmpzIGluIENvcHkgU3VwcG9ydCBT
Y3JpcHQgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREODU3NzQwQTQ2OTZD
ODAwMzIxNDZDIC8qIHRlc3RhcGkuanMgKi87IH07CkBAIC0yMTgzLDcgKzIxNDEsNiBAQAogCQkw
RjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0
M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0JyYW5jaERpcmVjdGlvbi5oOyBw
YXRoID0gZGZnL0RGR0JyYW5jaERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjg1QTMxRTE2QUI3NkFFMDA3NzU3MUUgLyogREZHVmFyaWFkaWNGdW5jdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdWYXJpYWRpY0Z1bmN0aW9uLmg7IHBh
dGggPSBkZmcvREZHVmFyaWFkaWNGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVVc2VEZWYuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4RjJCOTMxNzJFMDQ5RTAwN0RCREE1IC8qIEZUTExpbmsuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gRlRMTGluay5jcHA7IHBhdGggPSBmdGwvRlRMTGluay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOEYyQjk0MTcyRTA0OUUwMDdEQkRBNSAv
KiBGVExMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTExpbmsuaDsgcGF0aCA9IGZ0bC9GVExMaW5r
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00ODQzLDcgKzQ4MDAsNiBAQAogCQkJ
CTBGMkJEQzQxMTUyMjgwMTcwMENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50LmggKi8sCiAJCQkJ
MEYyQkRDNDIxNTIyODAxNzAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwICov
LAogCQkJCTBGMkJEQzQzMTUyMjgwMTcwMENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50U3RyZWFt
LmggKi8sCi0JCQkJMEY4NUEzMUUxNkFCNzZBRTAwNzc1NzFFIC8qIERGR1ZhcmlhZGljRnVuY3Rp
b24uaCAqLywKIAkJCQkwRkZGQzk1MzE0RUY5MDk1MDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lz
dGVyQWxsb2NhdGlvblBoYXNlLmNwcCAqLywKIAkJCQkwRkZGQzk1NDE0RUY5MDk1MDBDNzI1MzIg
LyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmggKi8sCiAJCQkJMEZDOTdGM0Ix
ODIwMjExOTAwMkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwICovLApA
QCAtNTI3MCw3ICs1MjI2LDcgQEAKIAkJCQk1NTQwNzcxODE4REE1OEFEMDBFRkY3RjIgLyogSlNB
Y3RpdmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTQwNzcxQjE4REE1OEFEMDBFRkY3RjIg
LyogSlNBcmd1bWVudHNJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTU0MDc3MjIxOERB
NThBRDAwRUZGN0YyIC8qIEpTQXJyYXlJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTU0
MDc3MjUxOERBNThBRDAwRUZGN0YyIC8qIEpTQm91bmRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTU0MDc3MjUxOERBNThBRDAwRUZGN0YyIC8qIChudWxsKSBpbiBIZWFkZXJzICovLAog
CQkJCTU1NDA3NzQ4MThEQTU4QUQwMEVGRjdGMiAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU1NDA3NzRBMThEQTU4QUQwMEVGRjdGMiAvKiBKU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTU0MDc3NTkxOERBNThBRDAw
RUZGN0YyIC8qIEpTTWFwSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtNTc0NCw3ICs1NzAw
LDYgQEAKIAkJCQkwRkREQkZCNjE2NjZFRURBMDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NE
YXRhRHVtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkRDNDkxNTIyODA5NjAwQ0Q4OTEwIC8q
IERGR1ZhcmlhYmxlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkJEQzRCMTUyMjgwOUQw
MENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKLQkJCQkw
RkZCOTIxRTE2RDAyRjQ3MDA1NUE1REIgLyogREZHVmFyaWFkaWNGdW5jdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZGRkM5NjAxNEVGOTBCRDAwQzcyNTMyIC8qIERGR1ZpcnR1YWxSZWdpc3Rl
ckFsbG9jYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDOTdGNDIxODIwMjExOTAw
MkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGREIyQ0U4MTc0ODMwQTIwMDdCM0MxQiAvKiBERkdXb3JrbGlzdC5oIGluIEhlYWRlcnMg
Ki8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJE
RkdDb21tb24uaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJERkdKSVRDb2Rl
LmgiCi0jaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5j
bHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTY3MjcyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NSwxMCArNDUsNiBAQAogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUg
IkRGR0NvbW1vbkRhdGEuaCIKICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgotI2luY2x1ZGUg
IkRGR01pbmlmaWVkR3JhcGguaCIKLSNpbmNsdWRlICJERkdPU1JFbnRyeS5oIgotI2luY2x1ZGUg
IkRGR09TUkV4aXQuaCIKLSNpbmNsdWRlICJERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmgiCiAjaW5j
bHVkZSAiRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXZhbENvZGVD
YWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGlvbkNvdW50ZXIuaCIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCShyZXZpc2lv
biAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU3LDkgKzE1NywxNiBAQCBwcml2YXRlOgogICAgIH07
CiAgICAgQm9vbGVhblJlc3VsdCBib29sZWFuUmVzdWx0KE5vZGUqLCBBYnN0cmFjdFZhbHVlJik7
CiAgICAgCisgICAgdm9pZCBzZXRCdWlsdEluQ29uc3RhbnQoTm9kZSogbm9kZSwgSlNWYWx1ZSB2
YWx1ZSkKKyAgICB7CisgICAgICAgIEFic3RyYWN0VmFsdWUmIGFic3RyYWN0VmFsdWUgPSBmb3JO
b2RlKG5vZGUpOworICAgICAgICBhYnN0cmFjdFZhbHVlLnNldChtX2dyYXBoLCB2YWx1ZSk7Cisg
ICAgICAgIGFic3RyYWN0VmFsdWUuZml4VHlwZUZvclJlcHJlc2VudGF0aW9uKG5vZGUpOworICAg
IH0KKyAgICAKICAgICB2b2lkIHNldENvbnN0YW50KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFsdWUp
CiAgICAgewotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCB2YWx1ZSk7CisgICAg
ICAgIHNldEJ1aWx0SW5Db25zdGFudChub2RlLCB2YWx1ZSk7CiAgICAgICAgIG1fc3RhdGUuc2V0
Rm91bmRDb25zdGFudHModHJ1ZSk7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsOSArMTI2LDEx
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAKICAgICBz
d2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgY2FzZSBEb3Vi
bGVDb25zdGFudDoKKyAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgY2FzZSBXZWFrSlNDb25z
dGFudDoKICAgICBjYXNlIFBoYW50b21Bcmd1bWVudHM6IHsKLSAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXQobV9ncmFwaCwgbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChub2RlKSk7CisgICAgICAg
IHNldEJ1aWx0SW5Db25zdGFudChub2RlLCBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG5vZGUp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTMwNywzOSArMzA5LDM5IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEludDMyVG9Eb3VibGU6IHsKKyAgICBjYXNlIERv
dWJsZVJlcDogewogICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkudmFsdWUoKTsKICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKLSAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3Vi
bGUsIGNoaWxkLmFzTnVtYmVyKCkpKTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
RG91YmxlTnVtYmVyKGNoaWxkLmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91
YmxlUmVhbCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjRG91YmxlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLm1fdHlwZSk7CisgICAgICAgIGZvck5vZGUobm9kZSkuZml4VHlwZUZvclJl
cHJlc2VudGF0aW9uKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAg
IGNhc2UgSW50NTJUb0RvdWJsZTogeworICAgIGNhc2UgSW50NTJSZXA6IHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEludDMyVXNlKTsKKyAgICAg
ICAgCiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1
ZSgpOwotICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgeworICAgICAgICBp
ZiAoY2hpbGQgJiYgY2hpbGQuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBjaGlsZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CisgICAgICAgIAorICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAg
ICAKLSAgICBjYXNlIEludDUyVG9WYWx1ZTogewotICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxk
LmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsKKyAg
ICBjYXNlIFZhbHVlUmVwOiB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgIHNl
dENvbnN0YW50KG5vZGUsIHZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5
cGU7Ci0gICAgICAgIGlmICh0eXBlICYgU3BlY0ludDUyKQotICAgICAgICAgICAgdHlwZSA9ICh0
eXBlIHwgU3BlY0ludDMyIHwgU3BlY0ludDUyQXNEb3VibGUpICYgflNwZWNJbnQ1MjsKLSAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKHR5cGUpOworICAgICAgICAKKyAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSk7CisgICAgICAg
IGZvck5vZGUobm9kZSkuZml4VHlwZUZvclJlcHJlc2VudGF0aW9uKG5vZGUpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMzcwLDcgKzM3Miw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja092
ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5F
eGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWFjaGluZUludFVz
ZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJp
Z2h0ICYmIGxlZnQuaXNNYWNoaW5lSW50KCkgJiYgcmlnaHQuaXNNYWNoaW5lSW50KCkpIHsKICAg
ICAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGxlZnQuYXNNYWNoaW5lSW50
KCkgKyByaWdodC5hc01hY2hpbmVJbnQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5p
c01hY2hpbmVJbnQoKSkgewpAQCAtMzgzLDkgKzM4NSw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICB8fCAhZm9yTm9kZShub2RlLT5j
aGlsZDIoKSkuaXNUeXBlKFNwZWNJbnQzMikpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2Fu
RXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVzZToK
KyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdo
dCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAg
ICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGxlZnQuYXNOdW1iZXIoKSArIHJpZ2h0LmFz
TnVtYmVyKCkpKTsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51
bWJlcihsZWZ0LmFzTnVtYmVyKCkgKyByaWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaXNGdWxsUmVhbE51bWJl
clNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKQEAgLTQyNiw3ICs0
MjgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAg
ICAgICBpZiAoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpCiAgICAgICAg
ICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAg
ICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTWFjaGluZUludCgpICYmIHJpZ2h0
LmlzTWFjaGluZUludCgpKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihsZWZ0LmFzTWFjaGluZUludCgpIC0gcmlnaHQuYXNNYWNoaW5lSW50KCkpOwogICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQuaXNNYWNoaW5lSW50KCkgfHwgIXNob3VsZENoZWNrT3ZlcmZs
b3cobm9kZS0+YXJpdGhNb2RlKCkpKSB7CkBAIC00MzksOSArNDQxLDkgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIHx8ICFmb3JOb2Rl
KG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY0ludDMyKSkKICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVt
YmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0
ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7Ci0gICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIobGVmdC5hc051bWJlcigpIC0g
cmlnaHQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
RG91YmxlTnVtYmVyKGxlZnQuYXNOdW1iZXIoKSAtIHJpZ2h0LmFzTnVtYmVyKCkpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAgLTQ3Nyw3ICs0NzksNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2hlY2tP
dmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2Fu
RXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hY2hpbmVJbnRV
c2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICBpZiAoY2hpbGQgJiYg
Y2hpbGQuaXNNYWNoaW5lSW50KCkpIHsKICAgICAgICAgICAgICAgICBkb3VibGUgZG91YmxlUmVz
dWx0OwogICAgICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja05lZ2F0aXZlWmVybyhub2RlLT5h
cml0aE1vZGUoKSkpCkBAIC00OTYsOSArNDk4LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrTmVnYXRpdmVaZXJv
KG5vZGUtPmFyaXRoTW9kZSgpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRy
dWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAg
ICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051
bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoLWNo
aWxkLmFzTnVtYmVyKCkpKTsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Rv
dWJsZU51bWJlcigtY2hpbGQuYXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3Vi
bGUpOwpAQCAtNTMzLDcgKzUzNSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHkKICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRo
TW9kZSgpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgY2FzZSBJ
bnQ1MlJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNNYWNo
aW5lSW50KCkgJiYgcmlnaHQuaXNNYWNoaW5lSW50KCkpIHsKICAgICAgICAgICAgICAgICBkb3Vi
bGUgZG91YmxlUmVzdWx0ID0gbGVmdC5hc051bWJlcigpICogcmlnaHQuYXNOdW1iZXIoKTsKICAg
ICAgICAgICAgICAgICBpZiAoIXNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTW9k
ZSgpKSkKQEAgLTU0Nyw5ICs1NDksOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDUyKTsK
ICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAg
ICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0Lmlz
TnVtYmVyKCkpIHsKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihs
ZWZ0LmFzTnVtYmVyKCkgKiByaWdodC5hc051bWJlcigpKSk7CisgICAgICAgICAgICAgICAgc2V0
Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIobGVmdC5hc051bWJlcigpICogcmlnaHQuYXNO
dW1iZXIoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKGlzRnVsbFJlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3R5cGUpCkBAIC01ODUsOSArNTg3LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJ
bnQzMik7CiAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVz
ZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiBy
aWdodC5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNO
dW1iZXIobGVmdC5hc051bWJlcigpIC8gcmlnaHQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAg
ICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGxlZnQuYXNOdW1iZXIoKSAvIHJp
Z2h0LmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAgLTYxOSw5
ICs2MjEsOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIG5v
ZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBO
dW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxl
ZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKLSAg
ICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihmbW9kKGxlZnQuYXNOdW1i
ZXIoKSwgcmlnaHQuYXNOdW1iZXIoKSkpKTsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc0RvdWJsZU51bWJlcihmbW9kKGxlZnQuYXNOdW1iZXIoKSwgcmlnaHQuYXNOdW1iZXIo
KSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAgLTY0NSwxMSArNjQ3LDExIEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICAgICAgbm9kZS0+c2V0Q2Fu
RXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVzZToK
KyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdo
dCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAg
ICAgIGRvdWJsZSBhID0gbGVmdC5hc051bWJlcigpOwogICAgICAgICAgICAgICAgIGRvdWJsZSBi
ID0gcmlnaHQuYXNOdW1iZXIoKTsKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBq
c051bWJlcihhIDwgYiA/IGEgOiAoYiA8PSBhID8gYiA6IGEgKyBiKSkpOworICAgICAgICAgICAg
ICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGEgPCBiID8gYSA6IChiIDw9IGEg
PyBiIDogYSArIGIpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC02NzMsMTEg
KzY3NSwxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIG5v
ZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBO
dW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxl
ZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKICAg
ICAgICAgICAgICAgICBkb3VibGUgYSA9IGxlZnQuYXNOdW1iZXIoKTsKICAgICAgICAgICAgICAg
ICBkb3VibGUgYiA9IHJpZ2h0LmFzTnVtYmVyKCk7Ci0gICAgICAgICAgICAgICAgc2V0Q29uc3Rh
bnQobm9kZSwganNOdW1iZXIoYSA+IGIgPyBhIDogKGIgPj0gYSA/IGIgOiBhICsgYikpKTsKKyAg
ICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihhID4gYiA/IGEg
OiAoYiA+PSBhID8gYiA6IGEgKyBiKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpA
QCAtNzAzLDkgKzcwNSw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAg
ICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAg
ICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzTnVtYmVyKGNoaWxkLmFzTnVtYmVyKCkpKTsKKyAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihjaGlsZC5hc051bWJlcigpKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC03MjAsNyArNzIyLDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgQXJpdGhTcXJ0OiB7CiAg
ICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwog
ICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgc2V0
Q29uc3RhbnQobm9kZSwganNOdW1iZXIoc3FydChjaGlsZC5hc051bWJlcigpKSkpOworICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoc3FydChjaGlsZC5hc051bWJl
cigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpAQCAtNzMwLDcgKzczMiw3IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIEFyaXRoRlJvdW5kOiB7CiAg
ICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwog
ICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgc2V0
Q29uc3RhbnQobm9kZSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNoaWxkLmFzTnVtYmVy
KCkpKSk7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihzdGF0
aWNfY2FzdDxmbG9hdD4oY2hpbGQuYXNOdW1iZXIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAg
LTc0MCw3ICs3NDIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgY2FzZSBBcml0aFNpbjogewogICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTnVt
YmVyKCkpIHsKLSAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHNpbihjaGls
ZC5hc051bWJlcigpKSkpOworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVO
dW1iZXIoc2luKGNoaWxkLmFzTnVtYmVyKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC03NTAs
NyArNzUyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
IGNhc2UgQXJpdGhDb3M6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigp
KSB7Ci0gICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihjb3MoY2hpbGQuYXNO
dW1iZXIoKSkpKTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVy
KGNvcyhjaGlsZC5hc051bWJlcigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpAQCAtNzY5LDcgKzc3
MSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAg
ICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgICAgICBjYXNl
IEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICBjYXNlIEludDMyVXNlOgotICAgICAgICAgICAgY2Fz
ZSBOdW1iZXJVc2U6CisgICAgICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAg
IGNhc2UgVW50eXBlZFVzZToKICAgICAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgogICAgICAgICAg
ICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0VmFsdWUuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Nyw4ICs2Nyw2IEBA
IHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgSlMKICAgICB9CiAgICAgCiAg
ICAgbV90eXBlID0gc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpOwotICAgIGlmIChtX3R5cGUg
PT0gU3BlY0ludDUyQXNEb3VibGUpCi0gICAgICAgIG1fdHlwZSA9IFNwZWNJbnQ1MjsKICAgICBt
X3ZhbHVlID0gdmFsdWU7CiAgICAgCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtODUsNiAr
ODMsNDEgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBTdAogICAgIGNo
ZWNrQ29uc2lzdGVuY3koKTsKIH0KIAordm9pZCBBYnN0cmFjdFZhbHVlOjpmaXhUeXBlRm9yUmVw
cmVzZW50YXRpb24oTm9kZUZsYWdzIHJlcHJlc2VudGF0aW9uKQoreworICAgIGlmIChyZXByZXNl
bnRhdGlvbiA9PSBOb2RlUmVzdWx0RG91YmxlKSB7CisgICAgICAgIGlmIChtX3ZhbHVlKSB7Cisg
ICAgICAgICAgICBBU1NFUlQobV92YWx1ZS5pc051bWJlcigpKTsKKyAgICAgICAgICAgIGlmICht
X3ZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICBtX3ZhbHVlID0ganNEb3VibGVOdW1i
ZXIobV92YWx1ZS5hc051bWJlcigpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobV90eXBlICYg
U3BlY01hY2hpbmVJbnQpIHsKKyAgICAgICAgICAgIG1fdHlwZSAmPSB+U3BlY01hY2hpbmVJbnQ7
CisgICAgICAgICAgICBtX3R5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7CisgICAgICAgIH0KKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3R5cGUgJiB+U3BlY0RvdWJsZSkpOworICAgIH0gZWxz
ZSBpZiAocmVwcmVzZW50YXRpb24gPT0gTm9kZVJlc3VsdEludDUyKSB7CisgICAgICAgIGlmICht
X3R5cGUgJiBTcGVjSW50NTJBc0RvdWJsZSkgeworICAgICAgICAgICAgbV90eXBlICY9IH5TcGVj
SW50NTJBc0RvdWJsZTsKKyAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTI7CisgICAgICAg
IH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3R5cGUgJiB+U3BlY01hY2hpbmVJbnQpKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBpZiAobV90eXBlICYgU3BlY0ludDUyKSB7CisgICAgICAg
ICAgICBtX3R5cGUgJj0gflNwZWNJbnQ1MjsKKyAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50
NTJBc0RvdWJsZTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fdHlwZSAm
IH5TcGVjQnl0ZWNvZGVUb3ApKTsKKyAgICB9CisgICAgCisgICAgY2hlY2tDb25zaXN0ZW5jeSgp
OworfQorCit2b2lkIEFic3RyYWN0VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihOb2Rl
KiBub2RlKQoreworICAgIGZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihub2RlLT5yZXN1bHQoKSk7
Cit9CisKIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKEdyYXBoJiBncmFw
aCwgY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikKIHsKICAgICBpZiAoaXNDbGVhcigpKQpAQCAt
MjQ0LDYgKzI3Nyw4IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0ZW5jeSgpIGMK
ICAgICAKICAgICBpZiAoISFtX3ZhbHVlKSB7CiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSBtX3R5cGU7CisgICAgICAgIC8vIFRoaXMgcmVsYXhlcyB0aGUgYXNzZXJ0aW9uIGJlbG93IGEg
Yml0LCBzaW5jZSB3ZSBkb24ndCBrbm93IHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUKKyAgICAg
ICAgLy8gbm9kZS4KICAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NTIpCiAgICAgICAgICAgICB0
eXBlIHw9IFNwZWNJbnQ1MkFzRG91YmxlOwogICAgICAgICBBU1NFUlQobWVyZ2VTcGVjdWxhdGlv
bnModHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUobV92YWx1ZSkpID09IHR5cGUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9u
IDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJERkdGaWx0cmF0aW9uUmVzdWx0
LmgiCisjaW5jbHVkZSAiREZHTm9kZUZsYWdzLmgiCiAjaW5jbHVkZSAiREZHU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRU
eXBlLmgiCkBAIC0zOSw2ICs0MCw3IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKIGNsYXNzIEdyYXBoOworc3RydWN0IE5vZGU7CiAKIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsK
ICAgICBBYnN0cmFjdFZhbHVlKCkKQEAgLTEyOSw2ICsxMzEsOSBAQCBzdHJ1Y3QgQWJzdHJhY3RW
YWx1ZSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCisgICAgdm9p
ZCBmaXhUeXBlRm9yUmVwcmVzZW50YXRpb24oTm9kZUZsYWdzIHJlcHJlc2VudGF0aW9uKTsKKyAg
ICB2b2lkIGZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihOb2RlKik7CisgICAgCiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgIkRGR0JyYW5jaERpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkRGR0Zs
dXNoZWRBdC5oIgogI2luY2x1ZGUgIkRGR05vZGUuaCIKLSNpbmNsdWRlICJERkdWYXJpYWRpY0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC05OCwxNSArOTcsMTEgQEAgc3RydWN0IEJh
c2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIHZvaWQgcmVtb3ZlUHJlZGVjZXNz
b3IoQmFzaWNCbG9jayogYmxvY2spOwogICAgIHZvaWQgcmVwbGFjZVByZWRlY2Vzc29yKEJhc2lj
QmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKTsKIAotI2RlZmluZSBERkdfREVGSU5FX0FQUEVO
RF9OT0RFKHRlbXBsYXRlUHJlLCB0ZW1wbGF0ZVBvc3QsIHR5cGVQYXJhbXMsIHZhbHVlUGFyYW1z
Q29tbWEsIHZhbHVlUGFyYW1zLCB2YWx1ZUFyZ3MpIFwKLSAgICB0ZW1wbGF0ZVByZSB0eXBlUGFy
YW1zIHRlbXBsYXRlUG9zdCBOb2RlKiBhcHBlbmROb2RlKEdyYXBoJiwgU3BlY3VsYXRlZFR5cGUg
dmFsdWVQYXJhbXNDb21tYSB2YWx1ZVBhcmFtcyk7Ci0gICAgREZHX1ZBUklBRElDX1RFTVBMQVRF
X0ZVTkNUSU9OKERGR19ERUZJTkVfQVBQRU5EX05PREUpCi0jdW5kZWYgREZHX0RFRklORV9BUFBF
TkRfTk9ERQotICAgIAotI2RlZmluZSBERkdfREVGSU5FX0FQUEVORF9OT0RFKHRlbXBsYXRlUHJl
LCB0ZW1wbGF0ZVBvc3QsIHR5cGVQYXJhbXMsIHZhbHVlUGFyYW1zQ29tbWEsIHZhbHVlUGFyYW1z
LCB2YWx1ZUFyZ3MpIFwKLSAgICB0ZW1wbGF0ZVByZSB0eXBlUGFyYW1zIHRlbXBsYXRlUG9zdCBO
b2RlKiBhcHBlbmROb25UZXJtaW5hbChHcmFwaCYsIFNwZWN1bGF0ZWRUeXBlIHZhbHVlUGFyYW1z
Q29tbWEgdmFsdWVQYXJhbXMpOwotICAgIERGR19WQVJJQURJQ19URU1QTEFURV9GVU5DVElPTihE
RkdfREVGSU5FX0FQUEVORF9OT0RFKQotI3VuZGVmIERGR19ERUZJTkVfQVBQRU5EX05PREUKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJhbXM+CisgICAgTm9kZSogYXBwZW5kTm9kZShHcmFw
aCYsIFNwZWN1bGF0ZWRUeXBlLCBQYXJhbXMuLi4pOworICAgIAorICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIFBhcmFtcz4KKyAgICBOb2RlKiBhcHBlbmROb25UZXJtaW5hbChHcmFwaCYsIFNwZWN1
bGF0ZWRUeXBlLCBQYXJhbXMuLi4pOwogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFz
aWNCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2tJbmxpbmVzLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMs
MjUgKzMzLDIxIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotI2RlZmlu
ZSBERkdfREVGSU5FX0FQUEVORF9OT0RFKHRlbXBsYXRlUHJlLCB0ZW1wbGF0ZVBvc3QsIHR5cGVQ
YXJhbXMsIHZhbHVlUGFyYW1zQ29tbWEsIHZhbHVlUGFyYW1zLCB2YWx1ZUFyZ3MpIFwKLSAgICB0
ZW1wbGF0ZVByZSB0eXBlUGFyYW1zIHRlbXBsYXRlUG9zdCBpbmxpbmUgTm9kZSogQmFzaWNCbG9j
azo6YXBwZW5kTm9kZShHcmFwaCYgZ3JhcGgsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgdmFsdWVQYXJh
bXNDb21tYSB2YWx1ZVBhcmFtcykgXAotICAgIHsgXAotICAgICAgICBOb2RlKiByZXN1bHQgPSBn
cmFwaC5hZGROb2RlKHR5cGUgdmFsdWVQYXJhbXNDb21tYSB2YWx1ZUFyZ3MpOyBcCi0gICAgICAg
IGFwcGVuZChyZXN1bHQpOyBcCi0gICAgICAgIHJldHVybiByZXN1bHQ7IFwKLSAgICB9Ci0gICAg
REZHX1ZBUklBRElDX1RFTVBMQVRFX0ZVTkNUSU9OKERGR19ERUZJTkVfQVBQRU5EX05PREUpCi0j
dW5kZWYgREZHX0RFRklORV9BUFBFTkRfTk9ERQotCi0jZGVmaW5lIERGR19ERUZJTkVfQVBQRU5E
X05PREUodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXND
b21tYSwgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykgXAotICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJh
bXMgdGVtcGxhdGVQb3N0IGlubGluZSBOb2RlKiBCYXNpY0Jsb2NrOjphcHBlbmROb25UZXJtaW5h
bChHcmFwaCYgZ3JhcGgsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgdmFsdWVQYXJhbXNDb21tYSB2YWx1
ZVBhcmFtcykgXAotICAgIHsgXAotICAgICAgICBOb2RlKiByZXN1bHQgPSBncmFwaC5hZGROb2Rl
KHR5cGUgdmFsdWVQYXJhbXNDb21tYSB2YWx1ZUFyZ3MpOyBcCi0gICAgICAgIGluc2VydEJlZm9y
ZUxhc3QocmVzdWx0KTsgXAotICAgICAgICByZXR1cm4gcmVzdWx0OyBcCi0gICAgfQotICAgIERG
R19WQVJJQURJQ19URU1QTEFURV9GVU5DVElPTihERkdfREVGSU5FX0FQUEVORF9OT0RFKQotI3Vu
ZGVmIERGR19ERUZJTkVfQVBQRU5EX05PREUKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFtcz4K
K05vZGUqIEJhc2ljQmxvY2s6OmFwcGVuZE5vZGUoR3JhcGgmIGdyYXBoLCBTcGVjdWxhdGVkVHlw
ZSB0eXBlLCBQYXJhbXMuLi4gcGFyYW1zKQoreworICAgIE5vZGUqIHJlc3VsdCA9IGdyYXBoLmFk
ZE5vZGUodHlwZSwgcGFyYW1zLi4uKTsKKyAgICBhcHBlbmQocmVzdWx0KTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJhbXM+CitOb2RlKiBCYXNpY0Js
b2NrOjphcHBlbmROb25UZXJtaW5hbChHcmFwaCYgZ3JhcGgsIFNwZWN1bGF0ZWRUeXBlIHR5cGUs
IFBhcmFtcy4uLiBwYXJhbXMpCit7CisgICAgTm9kZSogcmVzdWx0ID0gZ3JhcGguYWRkTm9kZSh0
eXBlLCBwYXJhbXMuLi4pOworICAgIGluc2VydEJlZm9yZUxhc3QocmVzdWx0KTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYxLDI5ICsxNjEsMTEgQEAgcHJpdmF0ZToKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIAotICAgIE5vZGUqIGludDMyVG9Eb3VibGVDU0Uo
Tm9kZSogbm9kZSkKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJs
b2NrOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBvdGhlck5vZGUgPSBtX2N1cnJlbnRCbG9j
ay0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAob3RoZXJOb2RlID09IG5vZGUtPmNoaWxkMSgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgc3dpdGNoIChvdGhlck5vZGUt
Pm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKLSAgICAgICAgICAgICAg
ICBpZiAob3RoZXJOb2RlLT5jaGlsZDEoKS5zYW5pdGl6ZWQoKSA9PSBub2RlLT5jaGlsZDEoKS5z
YW5pdGl6ZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyTm9kZTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotICAgIAogICAgIE5vZGUqIGNvbnN0YW50Q1NFKE5vZGUqIG5vZGUpCiAgICAgewogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBlbmRJbmRleEZvclB1cmVDU0UoKTsgaS0tOykgewogICAgICAg
ICAgICAgTm9kZSogb3RoZXJOb2RlID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwotICAgICAgICAg
ICAgaWYgKG90aGVyTm9kZS0+b3AoKSAhPSBKU0NvbnN0YW50KQorICAgICAgICAgICAgaWYgKG90
aGVyTm9kZS0+b3AoKSAhPSBub2RlLT5vcCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5jb25zdGFudE51bWJlcigp
ICE9IG5vZGUtPmNvbnN0YW50TnVtYmVyKCkpCkBAIC0xMTQ4LDggKzExMzAsOSBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIENvbXBhcmVFcUNvbnN0YW50OgogICAgICAgICBjYXNlIFZhbHVlVG9J
bnQzMjoKICAgICAgICAgY2FzZSBNYWtlUm9wZToKLSAgICAgICAgY2FzZSBJbnQ1MlRvRG91Ymxl
OgotICAgICAgICBjYXNlIEludDUyVG9WYWx1ZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXA6Cisg
ICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgIGNhc2UgSW50NTJSZXA6CiAgICAgICAgICAg
ICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQocHVyZUNTRShub2RlKSk7CkBAIC0xMTc3LDEy
ICsxMTYwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKLSAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgotICAgICAgICAgICAgaWYgKGNz
ZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIHNldFJlcGxhY2VtZW50KGludDMyVG9Eb3VibGVDU0Uobm9kZSkpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgICAg
ICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTI2MSwxMyArMTIzOCwxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvUGhhbnRvbSgpOwogICAgICAgICAgICAgTm9kZSogZGF0YU5vZGUgPSByZXBsYWNl
bWVudC0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICAgICAgQVNTRVJUKGRhdGFOb2RlLT5oYXNS
ZXN1bHQoKSk7Ci0gICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IEVkZ2UoZGF0YU5vZGUpOwor
ICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkgPSBkYXRhTm9kZS0+ZGVmYXVsdEVkZ2UoKTsKICAg
ICAgICAgICAgIG1fZ3JhcGguZGV0aHJlYWQoKTsKICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRy
dWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgSlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICAgICAg
Y2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGlt
aW5hdGlvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIC8vIFRoaXMgaXMg
c3RyYW5nZSwgYnV0IG5lY2Vzc2FyeS4gU29tZSBwaGFzZXMgd2lsbCBjb252ZXJ0IG5vZGVzIHRv
IGNvbnN0YW50cywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29t
bW9uLmgiCi0jaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE2NzI3MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04Myw2ICs4Myw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUKICAgICAKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNlIEpTQ29uc3Rh
bnQ6CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAg
ICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAgICBjYXNlIElkZW50aXR5OgogICAgIGNhc2UgUGhh
bnRvbToKQEAgLTEyMywxNSArMTI1LDE1IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUKICAgICBjYXNlIElzTnVtYmVyOgogICAgIGNhc2UgSXNTdHJpbmc6CiAgICAg
Y2FzZSBMb2dpY2FsTm90OgotICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICBjYXNlIEV4dHJh
Y3RPU1JFbnRyeUxvY2FsOgotICAgIGNhc2UgSW50NTJUb0RvdWJsZToKLSAgICBjYXNlIEludDUy
VG9WYWx1ZToKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgY2FzZSBDb25zdGFudFN0b3Jh
Z2VQb2ludGVyOgogICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAgY2FzZSBEb3VibGVBc0lu
dDMyOgogICAgIGNhc2UgQ2hlY2s6CisgICAgY2FzZSBEb3VibGVSZXA6CisgICAgY2FzZSBWYWx1
ZVJlcDoKKyAgICBjYXNlIEludDUyUmVwOgogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAg
IGNhc2UgTW92SGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjk5LDYgKzI5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBBYnN0cmFj
dFZhbHVlIG9sZFZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUpOwogICAgICAgICAgICAgQWJz
dHJhY3RWYWx1ZSBjb25zdGFudFZhbHVlOwogICAgICAgICAgICAgY29uc3RhbnRWYWx1ZS5zZXQo
bV9ncmFwaCwgdmFsdWUpOworICAgICAgICAgICAgY29uc3RhbnRWYWx1ZS5maXhUeXBlRm9yUmVw
cmVzZW50YXRpb24obm9kZSk7CiAgICAgICAgICAgICBpZiAob2xkVmFsdWUubWVyZ2UoY29uc3Rh
bnRWYWx1ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24g
MTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5NCwxMyArMTk0LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIGNhc2Ug
TW92SGludDogewotICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBub2RlLT5jaGlsZDEoKS0+ZGVmYXVsdFVzZUtpbmQoKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKS0+c2hvdWxkR2VuZXJhdGUoKSkgewogICAgICAg
ICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhab21iaWVIaW50KTsKICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkgPSBFZGdlKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBub2RlLT5z
ZXRPcEFuZERlZmF1bHRGbGFncyhNb3ZIaW50KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRWRnZS5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0VkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1
YmxpYzoKICAgICAKICAgICBib29sIHdpbGxOb3RIYXZlQ2hlY2soKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGlzUHJvdmVkKCkgfHwgdXNlS2luZCgpID09IFVudHlwZWRVc2U7CisgICAg
ICAgIHJldHVybiBpc1Byb3ZlZCgpIHx8IHNob3VsZE5vdEhhdmVUeXBlQ2hlY2sodXNlS2luZCgp
KTsKICAgICB9CiAgICAgYm9vbCB3aWxsSGF2ZUNoZWNrKCkgY29uc3QKICAgICB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE2
NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1f
Z3JhcGgubV9hcmd1bWVudFBvc2l0aW9uc1tpXS5tZXJnZUFyZ3VtZW50VW5ib3hpbmdBd2FyZW5l
c3MoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5k
ZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KQot
ICAgICAgICAgICAgICAgIGZpeHVwU2V0TG9jYWxzSW5CbG9jayhtX2dyYXBoLmJsb2NrKGJsb2Nr
SW5kZXgpKTsKKyAgICAgICAgICAgICAgICBmaXh1cEdldEFuZFNldExvY2Fsc0luQmxvY2sobV9n
cmFwaC5ibG9jayhibG9ja0luZGV4KSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZv
ciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxv
Y2tzKCk7ICsrYmxvY2tJbmRleCkKQEAgLTEyMyw4ICsxMjMsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgZWxzZSBp
ZiAobm9kZUNhblNwZWN1bGF0ZUludDMyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAg
ICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7Ci0gICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBub2RlLT5z
ZXRBcml0aE1vZGUoQXJpdGg6OkRvT3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIG5vZGUtPnNl
dFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTEzNSwxMCArMTM3LDExIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyRXhwZWN0aW5nRGVmaW5lZChub2RlLT5jaGls
ZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVk
Z2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxE
b3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERv
dWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPnNldE9w
KEFyaXRoQWRkKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVz
dWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCkBAIC0xNzcsOCArMTgwLDkgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBBcml0aFN1YjogewogICAgICAgICAgICAgaWYgKGF0dGVtcHRUb01ha2VJbnRlZ2VyQWRk
KG5vZGUpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZml4RWRnZTxOdW1i
ZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE5NCwxNCArMTk4
LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAobV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5v
ZGUpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICAgICAgICAgIGlmIChieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhu
b2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJp
dGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvd0Fu
ZE5lZ2F0aXZlWmVybyk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1
bHRJbnQ1Mik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4
RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPnNl
dFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKQEAgLTIxOCwxNiArMjI0LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobV9ncmFwaC5tdWxT
aG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRn
ZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRn
ZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBpZiAoYnl0ZWNv
ZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1v
ZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3dBbmROZWdhdGl2ZVplcm8pOworICAgICAgICAgICAgICAg
IG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKQEAgLTI0NiwyNCArMjU0LDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3dBbmRO
ZWdhdGl2ZVplcm8pOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKIAogICAg
ICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gcmVmJ2luZyBvbiB0aGUgY2hpbGRy
ZW4gYmVjYXVzZSB3ZSdyZSBzdGVhbGluZyB0aGVtIGZyb20KICAgICAgICAgICAgICAgICAvLyB0
aGUgb3JpZ2luYWwgZGl2aXNpb24uCiAgICAgICAgICAgICAgICAgTm9kZSogbmV3RGl2aXNpb24g
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBtX2luZGV4
SW5CbG9jaywgU3BlY0RvdWJsZSwgKm5vZGUpOworICAgICAgICAgICAgICAgIG5ld0RpdmlzaW9u
LT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgbm9kZS0+c2V0T3AoRG91YmxlQXNJbnQzMik7Ci0gICAgICAgICAgICAgICAgbm9k
ZS0+Y2hpbGRyZW4uaW5pdGlhbGl6ZShFZGdlKG5ld0RpdmlzaW9uLCBLbm93bk51bWJlclVzZSks
IEVkZ2UoKSwgRWRnZSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5pbml0aWFs
aXplKEVkZ2UobmV3RGl2aXNpb24sIERvdWJsZVJlcFVzZSksIEVkZ2UoKSwgRWRnZSgpKTsKICAg
ICAgICAgICAgICAgICBpZiAoYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJp
dGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShB
cml0aDo6Q2hlY2tPdmVyZmxvdyk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3dBbmROZWdhdGl2
ZVplcm8pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVk
Z2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJs
ZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVz
dWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
QEAgLTI3NSw4ICsyODUsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZp
eEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2RlLT5z
ZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICAgICAgCkBAIC0yODYsNyArMjk3LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTI5NCw3ICsz
MDYsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEFyaXRoRlJvdW5kOgogICAgICAgICBjYXNl
IEFyaXRoU2luOgogICAgICAgICBjYXNlIEFyaXRoQ29zOiB7Ci0gICAgICAgICAgICBmaXhFZGdl
PE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVS
ZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2Rl
UmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKQEAgLTMwNiw3ICszMTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZWxzZSBpZiAobm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKQotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKICAgICAgICAgICAgICAgICBm
aXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0zMzcsMTQgKzM1MCwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKGVuYWJsZUludDUyKCkKICAgICAgICAgICAgICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxh
dGVNYWNoaW5lSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgp
KSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQx
KCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZUNsb2JiZXJzV29ybGQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihub2RlLT5jaGlsZDEo
KS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3Vi
bGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJs
ZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxh
Z3MoTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQwMiwxMyArNDE1LDEzIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZW5hYmxlSW50NTIoKQogICAgICAgICAgICAg
ICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hpbGQxKCkubm9k
ZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxN
YWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxN
YWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9k
ZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlU3RyaW5nSWRlbnQoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRl
U3RyaW5nSWRlbnQoKSkgewpAQCAtNTAxLDcgKzUxNCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHN3
aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CisgICAgICAgICAgICBhcnJheU1vZGUg
PSBub2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUo
KSkgewogICAgICAgICAgICAgY2FzZSBBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9uczoKICAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OlVucHJvZmlsZWQ6CiAgICAgICAgICAgICBjYXNlIEFycmF5
OjpVbmRlY2lkZWQ6CkBAIC01MjAsNiArNTM0LDMwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRj
aCAoYXJyYXlNb2RlLnR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgor
ICAgICAgICAgICAgICAgIGlmICghYXJyYXlNb2RlLmlzT3V0T2ZCb3VuZHMoKSkKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBBcnJheTo6
RmxvYXQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5OgorICAg
ICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6
OlVpbnQzMkFycmF5OgorICAgICAgICAgICAgICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVJ
bnQzMigpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQorICAgICAgICAgICAgICAgICAgICBu
b2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTU1OSwxNCArNTk3LDE0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGlm
IChjaGlsZDMtPnByZWRpY3Rpb24oKSAmIFNwZWNJbnQ1MikKLSAgICAgICAgICAgICAgICAgICAg
Zml4RWRnZTxNYWNoaW5lSW50VXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDUyUmVwVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgICAgICAgICBm
aXhFZGdlPEtub3duQ2VsbFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDMyVXNlPihjaGlsZDIpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8UmVhbE51bWJlclVzZT4o
Y2hpbGQzKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFJlYWxVc2U+KGNoaWxk
Myk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4
QXJyYXk6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQxNkFycmF5OgpAQCAtNTgwLDE1ICs2
MTgsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQzLT5zaG91bGRTcGVj
dWxhdGVJbnQzMigpKQogICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGls
ZDMpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkMy0+c2hvdWxkU3BlY3VsYXRlTWFj
aGluZUludCgpKQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KGNo
aWxkMyk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGNoaWxkMyk7
CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJl
clVzZT4oY2hpbGQzKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+
KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5
OjpGbG9hdDMyQXJyYXk6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CiAg
ICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KGNoaWxkMSk7CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PE51bWJlclVzZT4oY2hpbGQzKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVz
ZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJy
YXk6OkNvbnRpZ3VvdXM6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CkBA
IC02MzAsNyArNjY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxSZWFsTnVtYmVy
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBS
ZWFsVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6QXJy
YXlTdG9yYWdlOgpAQCAtNjYzLDcgKzcwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBlbHNl
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBlbHNl
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpCi0gICAgICAgICAg
ICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogCiAgICAgICAgICAgICBO
b2RlKiBsb2dpY2FsTm90ID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICAgICAgaWYg
KGxvZ2ljYWxOb3QtPm9wKCkgPT0gTG9naWNhbE5vdCkgewpAQCAtNzYwLDcgKzc5OCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFMTF9ET1VC
TEVfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBvcGVyYW5k
SW5kZXggPSAwOyBvcGVyYW5kSW5kZXggPCBub2RlLT5udW1DaGlsZHJlbigpOyArK29wZXJhbmRJ
bmRleCkKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxSZWFsTnVtYmVyVXNlPihtX2dyYXBo
Lm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgb3BlcmFuZEluZGV4XSk7Cisg
ICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwUmVhbFVzZT4obV9ncmFwaC5tX3Zh
ckFyZ0NoaWxkcmVuW25vZGUtPmZpcnN0Q2hpbGQoKSArIG9wZXJhbmRJbmRleF0pOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElO
R19UWVBFUzoKICAgICAgICAgICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfSU5ERVhJTkdfVFlQ
RVM6CkBAIC05NjEsMTYgKzk5OSwxOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVGll
clVwSW5Mb29wOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgICAgIGNh
c2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKLSAgICAgICAgY2FzZSBJbnQ1MlRvRG91YmxlOgot
ICAgICAgICBjYXNlIEludDUyVG9WYWx1ZToKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2lu
dDoKICAgICAgICAgY2FzZSBDaGVja0FycmF5OgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6
CiAgICAgICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICAgICAgY2FzZSBEb3Vi
bGVBc0ludDMyOgotICAgICAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAgICAgIGNhc2UgVmFs
dWVUb0ludDMyOgogICAgICAgICBjYXNlIEhhcmRQaGFudG9tOiAvLyBIYXJkUGhhbnRvbSB3b3Vs
ZCBiZSB0cml2aWFsIHRvIGhhbmRsZSBidXQgYW55d2F5IHdlIGFzc2VydCB0aGF0IHdlIHdvbid0
IHNlZSBpdCBoZXJlIHlldC4KKyAgICAgICAgY2FzZSBEb3VibGVSZXA6CisgICAgICAgIGNhc2Ug
SW50NTJSZXA6CisgICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgIGNhc2UgRG91YmxlQ29u
c3RhbnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgICAgIC8vIFRoZXNl
IGFyZSBqdXN0IG5vZGVzIHRoYXQgd2UgZG9uJ3QgY3VycmVudGx5IGV4cGVjdCB0byBzZWUgZHVy
aW5nIGZpeHVwLgogICAgICAgICAgICAgLy8gSWYgd2UgZXZlciB3YW50ZWQgdG8gaW5zZXJ0IHRo
ZW0gcHJpb3IgdG8gZml4dXAsIHRoZW4gd2UganVzdCBoYXZlIHRvIGNyZWF0ZQogICAgICAgICAg
ICAgLy8gZml4dXAgcnVsZXMgZm9yIHRoZW0uCkBAIC0xMzEyLDcgKzEzNTIsNyBAQCBwcml2YXRl
OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBmaXh1cFNldExv
Y2Fsc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCisgICAgdm9pZCBmaXh1cEdldEFuZFNldExv
Y2Fsc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCiAgICAgewogICAgICAgICBpZiAoIWJsb2Nr
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMyMCwyOCArMTM2MCw0OSBAQCBwcml2YXRlOgog
ICAgICAgICBtX2Jsb2NrID0gYmxvY2s7CiAgICAgICAgIGZvciAobV9pbmRleEluQmxvY2sgPSAw
OyBtX2luZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbmRleEluQmxvY2spIHsKICAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1cnJlbnROb2RlID0gYmxvY2stPmF0KG1faW5kZXhJ
bkJsb2NrKTsKLSAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFNldExvY2FsKQorICAgICAg
ICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gU2V0TG9jYWwgJiYgbm9kZS0+b3AoKSAhPSBHZXRMb2Nh
bCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgp
OwotICAgICAgICAgICAgc3dpdGNoICh2YXJpYWJsZS0+Zmx1c2hGb3JtYXQoKSkgewotICAgICAg
ICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJl
clVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4o
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBGbHVzaGVkSW50NTI6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihu
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IEZsdXNoZWRDZWxsOgotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAgICBj
YXNlIEdldExvY2FsOgorICAgICAgICAgICAgICAgIHN3aXRjaCAodmFyaWFibGUtPmZsdXNoRm9y
bWF0KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZsdXNoZWREb3VibGU6CisgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50NTI6CisgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgY2FzZSBTZXRMb2NhbDoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhcmlhYmxl
LT5mbHVzaEZvcm1hdCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVk
RG91YmxlOgorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIEZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIEZsdXNoZWRJbnQ1MjoKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1
MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgorICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAgICAgICAg
ICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE0NjcsNyArMTUy
OCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZCB8
PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAgICAgICBjYXNlIFJlYWxOdW1iZXJV
c2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFJl
YWxVc2U6CiAgICAgICAgICAgICBpZiAodmFyaWFibGUtPmRvdWJsZUZvcm1hdFN0YXRlKCkgPT0g
VXNpbmdEb3VibGVGb3JtYXQpCiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdl
ZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xNDc2LDcgKzE1MzgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IHx8IGlzQm9vbGVhblNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQogICAgICAg
ICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9m
aXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICBpZiAo
aXNNYWNoaW5lSW50U3BlY3VsYXRpb24odmFyaWFibGUtPnByZWRpY3Rpb24oKSkpCiAgICAgICAg
ICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2Zp
dGFibGVUb1VuYm94KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTE5LDkgKzE1ODEs
OSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgVXNlS2luZCB1c2VLaW5kOwogICAgICAg
ICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQotICAgICAgICAgICAgdXNl
S2luZCA9IE1hY2hpbmVJbnRVc2U7CisgICAgICAgICAgICB1c2VLaW5kID0gSW50NTJSZXBVc2U7
CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKQotICAgICAg
ICAgICAgdXNlS2luZCA9IE51bWJlclVzZTsKKyAgICAgICAgICAgIHVzZUtpbmQgPSBEb3VibGVS
ZXBVc2U7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKSkK
ICAgICAgICAgICAgIHVzZUtpbmQgPSBCb29sZWFuVXNlOwogICAgICAgICBlbHNlCkBAIC0xNTg5
LDkgKzE2NTEsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYg
KG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkgewotICAgICAgICAg
ICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBm
aXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50
NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9k
ZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9k
ZVJlc3VsdEludDUyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAg
ICAgIApAQCAtMTcyNCw5NyArMTc4NywxNDUgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yIChtX2lu
ZGV4SW5CbG9jayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKyttX2luZGV4
SW5CbG9jaykgewogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJsb2NrLT5hdChtX2luZGV4
SW5CbG9jayk7CiAgICAgICAgICAgICBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCk7Ci0gICAgICAg
ICAgICBpZiAobV9jdXJyZW50Tm9kZS0+Y29udGFpbnNNb3ZIaW50KCkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB0cnlUb1JlbGF4UmVwcmVzZW50YXRpb24obV9jdXJy
ZW50Tm9kZSk7CiAgICAgICAgICAgICBERkdfTk9ERV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBt
X2N1cnJlbnROb2RlLCBpbmplY3RUeXBlQ29udmVyc2lvbnNGb3JFZGdlKTsKICAgICAgICAgfQog
ICAgICAgICBjbGVhclBoYW50b21zQXRFbmQoKTsKICAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhl
Y3V0ZShibG9jayk7CiAgICAgfQogICAgIAorICAgIHZvaWQgdHJ5VG9SZWxheFJlcHJlc2VudGF0
aW9uKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICAvLyBTb21lIG9wZXJhdGlvbnMgbWF5IGJl
IGFibGUgdG8gb3BlcmF0ZSBtb3JlIGVmZmljaWVudGx5IG92ZXIgbG9vc2VyIHJlcHJlc2VudGF0
aW9ucy4KKyAgICAgICAgLy8gSWRlbnRpZnkgdGhvc2UgaGVyZS4gVGhpcyBhdm9pZHMgaW5zZXJ0
aW5nIGEgcmVkdW5kYW50IHJlcHJlc2VudGF0aW9uIGNvbnZlcnNpb24uCisgICAgICAgIC8vIEFs
c28sIGZvciBzb21lIG9wZXJhdGlvbnMsIGxpa2UgTW92SGludCwgdGhpcyBpcyBhIG5lY2Vzc2Fy
eSBvcHRpbWl6YXRpb246IGluc2VydGluZworICAgICAgICAvLyBhbiBvdGhlcndpc2UtZGVhZCBj
b252ZXJzaW9uIGp1c3QgZm9yIGEgTW92SGludCB3b3VsZCBicmVhayBPU1IncyB1bmRlcnN0YW5k
aW5nIG9mCisgICAgICAgIC8vIHRoZSBJUi4KKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAobm9k
ZS0+b3AoKSkgeworICAgICAgICBjYXNlIE1vdkhpbnQ6CisgICAgICAgIGNhc2UgUGhhbnRvbToK
KyAgICAgICAgY2FzZSBDaGVjazoKKyAgICAgICAgY2FzZSBIYXJkUGhhbnRvbToKKyAgICAgICAg
ICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG1fY3VycmVudE5vZGUsIGZpeEVk
Z2VSZXByZXNlbnRhdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNlCisgICAgICAgICAgICAgICAgJiYgIW5vZGUtPmNoaWxk
MSgpLT5oYXNEb3VibGVSZXN1bHQoKSkgeworICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgp
LnNldFVzZUtpbmQoTnVtYmVyVXNlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGZp
eEVkZ2VSZXByZXNlbnRhdGlvbihOb2RlKiwgRWRnZSYgZWRnZSkKKyAgICB7CisgICAgICAgIHN3
aXRjaCAoZWRnZS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAg
ICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3Vi
bGVSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpCisgICAgICAgICAgICAgICAgZWRnZS5z
ZXRVc2VLaW5kKEludDUyUmVwVXNlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVkZ2UudXNlS2lu
ZCgpID09IERvdWJsZVJlcFVzZSkKKyAgICAgICAgICAgICAgICBlZGdlLnNldFVzZUtpbmQoTnVt
YmVyVXNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
SW50NTJSZXBVc2U6CisgICAgICAgICAgICAvLyBOb3RoaW5nIHdlIGNhbiByZWFsbHkgZG8uCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFVudHlwZWRVc2U6
CisgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpCisgICAgICAgICAgICAg
ICAgZWRnZS5zZXRVc2VLaW5kKERvdWJsZVJlcFVzZSk7CisgICAgICAgICAgICBlbHNlIGlmIChl
ZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAgICAgICAgICAgIGVkZ2Uuc2V0VXNlS2luZChJ
bnQ1MlJlcFVzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAg
dm9pZCBpbmplY3RUeXBlQ29udmVyc2lvbnNGb3JFZGdlKE5vZGUqIG5vZGUsIEVkZ2UmIGVkZ2Up
CiAgICAgewogICAgICAgICBBU1NFUlQobm9kZSA9PSBtX2N1cnJlbnROb2RlKTsKICAgICAgICAg
Ci0gICAgICAgIGlmIChpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpIHsKLSAgICAgICAgICAgIGlm
IChlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgewotICAgICAgICAg
ICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MkFzRG91Ymxl
LCBJbnQzMlRvRG91YmxlLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4sIEVkZ2Uo
ZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChlZGdlLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNl
IERvdWJsZVJlcFVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOiB7CisgICAgICAg
ICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYmIGVkZ2UtPnNo
b3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkgewotICAgICAgICAgICAgICAgIC8vIE1ha2UgYWxs
IGRvdWJsZSB1c2VzIG9mIGludDUyIHZhbHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJbnQ1MlRv
RG91YmxlLgotICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBzYW1lIHJlYXNvbiBh
cyBJbnQ1MlRvVmFsdWUgKHNlZSBiZWxvdykgZXhjZXB0IHRoYXQKLSAgICAgICAgICAgICAgICAv
LyBJbnQ4VG9Eb3VibGUgd2lsbCBjb252ZXJ0IGludDUyJ3MgdGhhdCBmaXQgaW4gYW4gaW50MzIg
aW50byBhIGRvdWJsZQotICAgICAgICAgICAgICAgIC8vIHJhdGhlciB0aGFuIHRyeWluZyB0byBj
cmVhdGUgYSBib3hlZCBpbnQzMiBsaWtlIEludDUyVG9WYWx1ZSBkb2VzLgotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0g
ICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
LSAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MkFzRG91YmxlLCBJ
bnQ1MlRvRG91YmxlLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4sIEVkZ2UoZWRn
ZS5ub2RlKCksIE51bWJlclVzZSkpOwotICAgICAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1
bHQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhh
bnRvbShlZGdlLm5vZGUoKSk7CisKKyAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKKyAgICAgICAg
ICAgIGlmIChlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2ssIFNwZWNJbnQ1MkFzRG91YmxlLCBEb3VibGVSZXAsIG5vZGUtPm9yaWdpbiwKKyAg
ICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgSW50NTJSZXBVc2UpKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNEb3Vi
bGUsIERvdWJsZVJlcCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBFZGdlKGVk
Z2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZWRn
ZS5zZXROb2RlKHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgaWYgKGVuYWJsZUludDUyKCkgJiYgZWRnZS51c2VLaW5kKCkgIT0gTWFjaGlu
ZUludFVzZQotICAgICAgICAgICAgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgp
ICYmICFlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBt
YWtlIGFsbCBub24taW50NTIgdXNlcyBvZiBpbnQ1MiB2YWx1ZXMgaGF2ZSBhbiBpbnRlcm1lZGlh
dGUgSW50NTJUb1ZhbHVlCi0gICAgICAgICAgICAvLyBub2RlIHRvIGVuc3VyZSB0aGF0IHdlIGhh
bmRsZSB0aGlzIHByb3Blcmx5OgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIGE6IFNv
bWVJbnQ1MgotICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoQGEsIC4uLikKLSAgICAgICAgICAg
IC8vIGM6IENhbGwoLi4uLCBAYSkKLSAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEBhLCAuLi4p
Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gV2l0aG91dCBhbiBpbnRlcm1lZGlhdGUg
bm9kZSBhbmQganVzdCBsYWJlbGluZyB0aGUgdXNlcywgd2Ugd2lsbCBnZXQ6Ci0gICAgICAgICAg
ICAvLwotICAgICAgICAgICAgLy8gYTogU29tZUludDUyCi0gICAgICAgICAgICAvLyBiOiBBcml0
aEFkZChJbnQ1MjpAYSwgLi4uKQotICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIFVudHlwZWQ6
QGEpCi0gICAgICAgICAgICAvLyBkOiBBcml0aEFkZChJbnQ1MjpAYSwgLi4uKQotICAgICAgICAg
ICAgLy8KLSAgICAgICAgICAgIC8vIEFuZCBub3cgdGhlIGMtPlVudHlwZWQ6QGEgZWRnZSB3aWxs
IGJveCB0aGUgdmFsdWUgb2YgQGEgaW50byBhIGRvdWJsZS4gVGhpcwotICAgICAgICAgICAgLy8g
aXMgYmFkLCBiZWNhdXNlIG5vdyB0aGUgZC0+SW50NTI6QGEgZWRnZSB3aWxsIGVpdGhlciBoYXZl
IHRvIGRvIGRvdWJsZS10by1pbnQKLSAgICAgICAgICAgIC8vIGNvbnZlcnNpb25zLCBvciB3aWxs
IGhhdmUgdG8gT1NSIGV4aXQgdW5jb25kaXRpb25hbGx5LiBBbHRlcm5hdGl2ZWx5IHdlIGNvdWxk
Ci0gICAgICAgICAgICAvLyBoYXZlIHRoZSBjLT5VbnR5cGVkOkBhIGVkZ2UgYm94IHRoZSB2YWx1
ZSBieSBjb3B5aW5nIHJhdGhlciB0aGFuIGluLXBsYWNlLgotICAgICAgICAgICAgLy8gQnV0IHRo
ZXNlIGJveGluZ3MgYXJlIGFsc28gY29zdGx5IHNvIHRoaXMgd291bGRuJ3QgYmUgZ3JlYXQuCi0g
ICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gVGhlIHNvbHV0aW9uIHdlIHVzZSBpcyB0byBh
bHdheXMgaGF2ZSBub24tSW50NTIgdXNlcyBvZiBwcmVkaWN0ZWQgSW50NTIncyB1c2UKLSAgICAg
ICAgICAgIC8vIGFuIGludGVydmVuaW5nIEludDUyVG9WYWx1ZSBub2RlOgotICAgICAgICAgICAg
Ly8KLSAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ1MgotICAgICAgICAgICAgLy8gYjogQXJpdGhB
ZGQoSW50NTI6QGEsIC4uLikKLSAgICAgICAgICAgIC8vIHg6IEludDUyVG9WYWx1ZShJbnQ1MjpA
YSkKLSAgICAgICAgICAgIC8vIGM6IENhbGwoLi4uLCBVbnR5cGVkOkB4KQotICAgICAgICAgICAg
Ly8gZDogQXJpdGhBZGQoSW50NTI6QGEsIC4uLikKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAg
ICAvLyBOb3RlIHRoYXQgZXZlbiBpZiB3ZSBoYWQgbXVsdGlwbGUgbm9uLWludDUyIHVzZXMgb2Yg
QGEsIHRoZSBtdWx0aXBsZQotICAgICAgICAgICAgLy8gSW50NTJUb1ZhbHVlJ3Mgd291bGQgZ2V0
IENTRSdkIHRvZ2V0aGVyLiBTbyB0aGUgYm94aW5nIHdvdWxkIG9ubHkgaGFwcGVuIG9uY2UuCi0g
ICAgICAgICAgICAvLyBBdCB0aGUgc2FtZSB0aW1lLCBAYSB3b3VsZCBjb250aW51ZSB0byBiZSBy
ZXByZXNlbnRlZCBhcyBhIG5hdGl2ZSBpbnQ1Mi4KLSAgICAgICAgICAgIC8vCi0gICAgICAgICAg
ICAvLyBBbiBhbHRlcm5hdGl2ZSB3b3VsZCBoYXZlIGJlZW4gdG8gaW5zZXJ0IFRvTmF0aXZlSW50
NTIgbm9kZXMgb24gaW50NTIgdXNlcyBvZgotICAgICAgICAgICAgLy8gaW50NTIncy4gVGhpcyB3
b3VsZCBoYXZlIGhhbmRsZWQgdGhlIGFib3ZlIGV4YW1wbGUgYnV0IHdvdWxkIGZhbGwgb3ZlciBm
b3I6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29tZUludDUyCi0gICAgICAg
ICAgICAvLyBiOiBDYWxsKC4uLiwgQGEpCi0gICAgICAgICAgICAvLyBjOiBBcml0aEFkZChAYSwg
Li4uKQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIEJ1dCB0aGUgc29sdXRpb24gd2Ug
dXNlIGhhbmRsZXMgdGhlIGFib3ZlIGdyYWNlZnVsbHkuCisgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0ludDUyUmVzdWx0
KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGFk
ZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAgICBOb2RlKiByZXN1bHQg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgIG1faW5kZXhJbkJs
b2NrLCBTcGVjSW50NTIsIEludDUyVG9WYWx1ZSwKLSAgICAgICAgICAgICAgICBub2RlLT5vcmln
aW4sIEVkZ2UoZWRnZS5ub2RlKCksIFVudHlwZWRVc2UpKTsKKworICAgICAgICAgICAgTm9kZSog
cmVzdWx0OworICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKSB7CisgICAg
ICAgICAgICAgICAgLy8gVGhpcyB3aWxsIG5ldmVyIGhhcHBlbi4KKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChlZGdl
LT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgeworICAgICAgICAgICAgICAg
IHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAg
IG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIsIEludDUyUmVwLCBub2RlLT5vcmlnaW4sCisgICAg
ICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIEludDMyVXNlKSk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgb25seSBoZXJlIGZvciBkZWFs
aW5nIHdpdGggY29uc3RhbnRzLgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2Ut
Pm9wKCkgPT0gSlNDb25zdGFudCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNw
ZWNNYWNoaW5lSW50LCBJbnQ1MkNvbnN0YW50LCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAg
ICAgICAgIE9wSW5mbyhlZGdlLT5jb25zdGFudE51bWJlcigpKSk7CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZh
dWx0OiB7CisgICAgICAgICAgICBpZiAoIWVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpICYmICFlZGdl
LT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
CisgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBOb2RlKiByZXN1bHQ7CisgICAgICAgICAgICBpZiAoZWRnZS0+aGFz
RG91YmxlUmVzdWx0KCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0Rv
dWJsZSwgVmFsdWVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShl
ZGdlLm5vZGUoKSwgRG91YmxlUmVwVXNlKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIgfCBTcGVjSW50NTJBc0RvdWJsZSwg
VmFsdWVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5v
ZGUoKSwgSW50NTJSZXBVc2UpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fSB9CiAgICAgfQogICAgIAogICAgIHZvaWQgYWRkUmVxdWlyZWRQaGFudG9tKE5vZGUqIG5vZGUp
CkBAIC0xODQxLDkgKzE5NTIsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcmVxdWlyZWRQaGFudG9tcy5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX3JlcXVpcmVkUGhhbnRvbXNb
aV07CiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAg
ICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgTm9kZU9yaWdpbihtX2NvZGVP
cmlnaW5PZlBoYW50b21zKSwKLSAgICAgICAgICAgICAgICBFZGdlKG1fcmVxdWlyZWRQaGFudG9t
c1tpXSwgVW50eXBlZFVzZSkpOworICAgICAgICAgICAgICAgIG5vZGUtPmRlZmF1bHRFZGdlKCkp
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX3JlcXVpcmVkUGhhbnRvbXMucmVzaXpl
KDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAko
cmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZv
cm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC02Miw3ICs2Miw3IEBAIGlubGluZSBOb2RlRmxhZ3MgcmVz
dWx0Rm9yKEZsdXNoRm9ybWF0IGYKICAgICBjYXNlIEZsdXNoZWRJbnQ1MjoKICAgICAgICAgcmV0
dXJuIE5vZGVSZXN1bHRJbnQ1MjsKICAgICBjYXNlIEZsdXNoZWREb3VibGU6Ci0gICAgICAgIHJl
dHVybiBOb2RlUmVzdWx0TnVtYmVyOworICAgICAgICByZXR1cm4gTm9kZVJlc3VsdERvdWJsZTsK
ICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgogICAgICAgICByZXR1cm4gTm9kZVJlc3VsdEJvb2xl
YW47CiAgICAgfQpAQCAtODMsOSArODMsOSBAQCBpbmxpbmUgVXNlS2luZCB1c2VLaW5kRm9yKEZs
dXNoRm9ybWF0IGZvCiAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIHJldHVybiBJbnQz
MlVzZTsKICAgICBjYXNlIEZsdXNoZWRJbnQ1MjoKLSAgICAgICAgcmV0dXJuIE1hY2hpbmVJbnRV
c2U7CisgICAgICAgIHJldHVybiBJbnQ1MlJlcFVzZTsKICAgICBjYXNlIEZsdXNoZWREb3VibGU6
Ci0gICAgICAgIHJldHVybiBOdW1iZXJVc2U7CisgICAgICAgIHJldHVybiBEb3VibGVSZXBVc2U7
CiAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKICAgICAgICAgcmV0dXJuIEJvb2xlYW5Vc2U7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9u
IDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0LCBjb25zdAogICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChKU1ZhbHVl
KG5vZGUtPnR5cGVkQXJyYXkoKSksIGNvbnRleHQpKTsKICAgICBpZiAobm9kZS0+aGFzU3RvcmFn
ZVBvaW50ZXIoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBSYXdQb2ludGVyKG5vZGUtPnN0
b3JhZ2VQb2ludGVyKCkpKTsKLSAgICBpZiAob3AgPT0gSlNDb25zdGFudCkgeworICAgIGlmIChu
b2RlLT5pc0NvbnN0YW50KCkpIHsKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiJCIsIG5vZGUt
PmNvbnN0YW50TnVtYmVyKCkpOwogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gdmFsdWVPZkpTQ29u
c3RhbnQobm9kZSk7CiAgICAgICAgIG91dC5wcmludCgiID0gIiwgaW5Db250ZXh0KHZhbHVlLCBj
b250ZXh0KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lv
biAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJERkdOb2RlQWxsb2NhdG9yLmgi
CiAjaW5jbHVkZSAiREZHUGxhbi5oIgogI2luY2x1ZGUgIkRGR1NjYW5uYWJsZS5oIgotI2luY2x1
ZGUgIkRGR1ZhcmlhZGljRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbmxpbmVDYWxsRnJhbWVTZXQu
aCIKICNpbmNsdWRlICJKU1N0YWNrLmgiCiAjaW5jbHVkZSAiTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5oIgpAQCAtMTM2LDE1ICsxMzUsMTMgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQo
IWNoaWxkLT5taXNjLnJlcGxhY2VtZW50KTsKICAgICB9CiAgICAgCi0jZGVmaW5lIERGR19ERUZJ
TkVfQUREX05PREUodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQ
YXJhbXNDb21tYSwgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykgXAotICAgIHRlbXBsYXRlUHJlIHR5
cGVQYXJhbXMgdGVtcGxhdGVQb3N0IE5vZGUqIGFkZE5vZGUoU3BlY3VsYXRlZFR5cGUgdHlwZSB2
YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1zKSBcCi0gICAgeyBcCi0gICAgICAgIE5vZGUqIG5v
ZGUgPSBuZXcgKG1fYWxsb2NhdG9yKSBOb2RlKHZhbHVlQXJncyk7IFwKLSAgICAgICAgbm9kZS0+
cHJlZGljdCh0eXBlKTsgXAotICAgICAgICByZXR1cm4gbm9kZTsgXAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIFBhcmFtcz4KKyAgICBOb2RlKiBhZGROb2RlKFNwZWN1bGF0ZWRUeXBlIHR5cGUs
IFBhcmFtcy4uLiBwYXJhbXMpCisgICAgeworICAgICAgICBOb2RlKiBub2RlID0gbmV3IChtX2Fs
bG9jYXRvcikgTm9kZShwYXJhbXMuLi4pOworICAgICAgICBub2RlLT5wcmVkaWN0KHR5cGUpOwor
ICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9Ci0gICAgREZHX1ZBUklBRElDX1RFTVBMQVRFX0ZV
TkNUSU9OKERGR19ERUZJTkVfQUREX05PREUpCi0jdW5kZWYgREZHX0RFRklORV9BRERfTk9ERQog
CiAgICAgdm9pZCBkZXRocmVhZCgpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDE2
NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3Rh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsMTQgKzE1NSwyMyBAQCB2b2lkIEluUGxhY2VB
YnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhl
YWQubG9jYWwoaSkuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWwubG9j
YWwoaSkuY2xlYXIoKTsKICAgICAgICAgfQorICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0g
U1NBKQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFy
Z2V0KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChibG9jay0+Ynl0ZWNvZGVC
ZWdpbiAhPSBtX2dyYXBoLm1fcGxhbi5vc3JFbnRyeUJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2dyYXBoLm1fbXVz
dEhhbmRsZUFic3RyYWN0VmFsdWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBBYnN0cmFj
dFZhbHVlIHZhbHVlID0gbV9ncmFwaC5tX211c3RIYW5kbGVBYnN0cmFjdFZhbHVlc1tpXTsKICAg
ICAgICAgICAgIGludCBvcGVyYW5kID0gbV9ncmFwaC5tX211c3RIYW5kbGVBYnN0cmFjdFZhbHVl
cy5vcGVyYW5kRm9ySW5kZXgoaSk7Ci0gICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLm9w
ZXJhbmQob3BlcmFuZCkubWVyZ2UodmFsdWUpOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJs
b2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgIGlmICgh
bm9kZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEFic3RyYWN0VmFs
dWUgdmFsdWUgPSBtX2dyYXBoLm1fbXVzdEhhbmRsZUFic3RyYWN0VmFsdWVzW2ldOworICAgICAg
ICAgICAgQWJzdHJhY3RWYWx1ZSYgYWJzdHJhY3RWYWx1ZSA9IGJsb2NrLT52YWx1ZXNBdEhlYWQu
b3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFi
bGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgIEZsdXNoRm9ybWF0
IGZvcm1hdCA9IHZhcmlhYmxlLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgYWJzdHJhY3RW
YWx1ZS5tZXJnZSh2YWx1ZSk7CisgICAgICAgICAgICBhYnN0cmFjdFZhbHVlLmZpeFR5cGVGb3JS
ZXByZXNlbnRhdGlvbihyZXN1bHRGb3IoZm9ybWF0KSk7CiAgICAgICAgIH0KICAgICAgICAgYmxv
Y2stPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTQsMjcgKzU0LDQ2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVy
biBpbnNlcnQoSW5zZXJ0aW9uKGluZGV4LCBlbGVtZW50KSk7CiAgICAgfQotICAgIAotI2RlZmlu
ZSBERkdfREVGSU5FX0lOU0VSVF9OT0RFKHRlbXBsYXRlUHJlLCB0ZW1wbGF0ZVBvc3QsIHR5cGVQ
YXJhbXMsIHZhbHVlUGFyYW1zQ29tbWEsIHZhbHVlUGFyYW1zLCB2YWx1ZUFyZ3MpIFwKLSAgICB0
ZW1wbGF0ZVByZSB0eXBlUGFyYW1zIHRlbXBsYXRlUG9zdCBOb2RlKiBpbnNlcnROb2RlKHNpemVf
dCBpbmRleCwgU3BlY3VsYXRlZFR5cGUgdHlwZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1z
KSBcCi0gICAgeyBcCi0gICAgICAgIHJldHVybiBpbnNlcnQoaW5kZXgsIG1fZ3JhcGguYWRkTm9k
ZSh0eXBlIHZhbHVlUGFyYW1zQ29tbWEgdmFsdWVBcmdzKSk7IFwKKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIFBhcmFtcz4KKyAgICBOb2RlKiBpbnNlcnROb2RlKHNpemVfdCBpbmRleCwgU3Bl
Y3VsYXRlZFR5cGUgdHlwZSwgUGFyYW1zLi4uIHBhcmFtcykKKyAgICB7CisgICAgICAgIHJldHVy
biBpbnNlcnQoaW5kZXgsIG1fZ3JhcGguYWRkTm9kZSh0eXBlLCBwYXJhbXMuLi4pKTsKICAgICB9
Ci0gICAgREZHX1ZBUklBRElDX1RFTVBMQVRFX0ZVTkNUSU9OKERGR19ERUZJTkVfSU5TRVJUX05P
REUpCi0jdW5kZWYgREZHX0RFRklORV9JTlNFUlRfTk9ERQogICAgIAotICAgIE5vZGUqIGluc2Vy
dENvbnN0YW50KHNpemVfdCBpbmRleCwgTm9kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWUgdmFsdWUp
CisgICAgTm9kZSogaW5zZXJ0Q29uc3RhbnQoCisgICAgICAgIHNpemVfdCBpbmRleCwgTm9kZU9y
aWdpbiBvcmlnaW4sIEpTVmFsdWUgdmFsdWUsCisgICAgICAgIE5vZGVUeXBlIG9wID0gSlNDb25z
dGFudCkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGNvbnN0YW50UmVnID0KICAgICAgICAgICAg
IG1fZ3JhcGguY29uc3RhbnRSZWdpc3RlckZvckNvbnN0YW50KHZhbHVlKTsKICAgICAgICAgcmV0
dXJuIGluc2VydE5vZGUoCi0gICAgICAgICAgICBpbmRleCwgc3BlY3VsYXRpb25Gcm9tVmFsdWUo
dmFsdWUpLCBKU0NvbnN0YW50LCBvcmlnaW4sCi0gICAgICAgICAgICBPcEluZm8oY29uc3RhbnRS
ZWcpKTsKKyAgICAgICAgICAgIGluZGV4LCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSksIG9w
LCBvcmlnaW4sIE9wSW5mbyhjb25zdGFudFJlZykpOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBp
bnNlcnRDb25zdGFudCgKKyAgICAgICAgc2l6ZV90IGluZGV4LCBDb2RlT3JpZ2luIG9yaWdpbiwg
SlNWYWx1ZSB2YWx1ZSwgTm9kZVR5cGUgb3AgPSBKU0NvbnN0YW50KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGluc2VydENvbnN0YW50KGluZGV4LCBOb2RlT3JpZ2luKG9yaWdpbiksIHZhbHVlLCBv
cCk7CisgICAgfQorICAgIAorICAgIEVkZ2UgaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAg
IHNpemVfdCBpbmRleCwgTm9kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWUgdmFsdWUsIFVzZUtpbmQg
dXNlS2luZCkKKyAgICB7CisgICAgICAgIE5vZGVUeXBlIG9wOworICAgICAgICBpZiAoaXNEb3Vi
bGUodXNlS2luZCkpCisgICAgICAgICAgICBvcCA9IERvdWJsZUNvbnN0YW50OworICAgICAgICBl
bHNlIGlmICh1c2VLaW5kID09IEludDUyUmVwVXNlKQorICAgICAgICAgICAgb3AgPSBJbnQ1MkNv
bnN0YW50OworICAgICAgICBlbHNlCisgICAgICAgICAgICBvcCA9IEpTQ29uc3RhbnQ7CisgICAg
ICAgIHJldHVybiBFZGdlKGluc2VydENvbnN0YW50KGluZGV4LCBvcmlnaW4sIHZhbHVlLCBvcCks
IHVzZUtpbmQpOwogICAgIH0KICAgICAKLSAgICBOb2RlKiBpbnNlcnRDb25zdGFudChzaXplX3Qg
aW5kZXgsIENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlIHZhbHVlKQorICAgIEVkZ2UgaW5zZXJ0
Q29uc3RhbnRGb3JVc2UoCisgICAgICAgIHNpemVfdCBpbmRleCwgQ29kZU9yaWdpbiBvcmlnaW4s
IEpTVmFsdWUgdmFsdWUsIFVzZUtpbmQgdXNlS2luZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBp
bnNlcnRDb25zdGFudChpbmRleCwgTm9kZU9yaWdpbihvcmlnaW4pLCB2YWx1ZSk7CisgICAgICAg
IHJldHVybiBpbnNlcnRDb25zdGFudEZvclVzZShpbmRleCwgTm9kZU9yaWdpbihvcmlnaW4pLCB2
YWx1ZSwgdXNlS2luZCk7CiAgICAgfQogCiAgICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqIGJs
b2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21i
aW5pbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNzAsMTAgKzM3MCwxMCBAQCBwcml2YXRlOgogICAgICAgICBp
ZiAoIWFkZGVuZCkKICAgICAgICAgICAgIHJldHVybiBzb3VyY2Uubm9kZSgpOwogICAgICAgICBy
ZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG5vZGVJbmRleCwg
c291cmNlLT5wcmVkaWN0aW9uKCksIEFyaXRoQWRkLCBvcmlnaW4sIE9wSW5mbyhhcml0aE1vZGUp
LAotICAgICAgICAgICAgc291cmNlLCBFZGdlKAotICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydENvbnN0YW50KG5vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihhZGRlbmQpKSwK
LSAgICAgICAgICAgICAgICBzb3VyY2UudXNlS2luZCgpKSk7CisgICAgICAgICAgICBub2RlSW5k
ZXgsIHNvdXJjZS0+cHJlZGljdGlvbigpLCBzb3VyY2UtPnJlc3VsdCgpLAorICAgICAgICAgICAg
QXJpdGhBZGQsIG9yaWdpbiwgT3BJbmZvKGFyaXRoTW9kZSksIHNvdXJjZSwKKyAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgIG5v
ZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihhZGRlbmQpLCBzb3VyY2UudXNlS2luZCgpKSk7CiAg
ICAgfQogICAgIAogICAgIE5vZGUqIGluc2VydE11c3RBZGQoCkBAIC0zODEsNyArMzgxLDcgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIE5vZGUqIHJlc3VsdCA9IGluc2VydEFkZChub2RlSW5k
ZXgsIG9yaWdpbiwgc291cmNlLCBhZGRlbmQpOwogICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAotICAgICAgICAgICAgbm9kZUluZGV4LCBTcGVjTm9uZSwgSGFyZFBoYW50b20sIG9y
aWdpbiwgRWRnZShyZXN1bHQsIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgIG5vZGVJbmRleCwg
U3BlY05vbmUsIEhhcmRQaGFudG9tLCBvcmlnaW4sIHJlc3VsdC0+ZGVmYXVsdEVkZ2UoKSk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSwyMiBAQCBi
b29sIE5vZGU6Omhhc1ZhcmlhYmxlQWNjZXNzRGF0YShHcmFwaCYgCiAgICAgfQogfQogCit2b2lk
IE5vZGU6OmNvbnZlcnRUb0lkZW50aXR5KCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChjaGlsZDEo
KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWNoaWxkMigpKTsKKyAgICAvLyBDYW5vbmljYWxpemUg
dGhlIHJlc3VsdCB0eXBlLgorICAgIE5vZGVGbGFncyByZXN1bHQ7CisgICAgaWYgKGhhc0RvdWJs
ZVJlc3VsdCgpKQorICAgICAgICByZXN1bHQgPSBOb2RlUmVzdWx0RG91YmxlOworICAgIGVsc2Ug
aWYgKGhhc0ludDUyUmVzdWx0KCkpCisgICAgICAgIHJlc3VsdCA9IE5vZGVSZXN1bHRJbnQ1MjsK
KyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IE5vZGVSZXN1bHRKUzsKKyAgICBzZXRPcEFuZERl
ZmF1bHRGbGFncyhJZGVudGl0eSk7CisgICAgc2V0UmVzdWx0KHJlc3VsdCk7Cit9CisKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMjEsNyArMTM3LDEw
IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBOb2QKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBvdXQucHJpbnQoIkAiLCBub2RlLT5pbmRleCgpKTsKLSAgICBvdXQu
cHJpbnQoQWJicmV2aWF0ZWRTcGVjdWxhdGlvbkR1bXAobm9kZS0+cHJlZGljdGlvbigpKSk7Cisg
ICAgaWYgKG5vZGUtPmhhc0RvdWJsZVJlc3VsdCgpKQorICAgICAgICBvdXQucHJpbnQoIjxEb3Vi
bGU+Iik7CisgICAgZWxzZSBpZiAobm9kZS0+aGFzSW50NTJSZXN1bHQoKSkKKyAgICAgICAgb3V0
LnByaW50KCI8SW50NTI+Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBA
CiAjaW5jbHVkZSAiREZHTm9kZUZsYWdzLmgiCiAjaW5jbHVkZSAiREZHTm9kZU9yaWdpbi5oIgog
I2luY2x1ZGUgIkRGR05vZGVUeXBlLmgiCisjaW5jbHVkZSAiREZHVXNlS2luZC5oIgogI2luY2x1
ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIgogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50Lmgi
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgpAQCAtMjM5LDYgKzI0MCwyMiBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgICAgIEFTU0VSVCghKG1fZmxhZ3MgJiBOb2RlSGFzVmFyQXJncykpOwogICAgIH0K
IAorICAgIC8vIENvbnN0cnVjdCBhIG5vZGUgd2l0aCB1cCB0byAzIGNoaWxkcmVuLCBubyBpbW1l
ZGlhdGUgdmFsdWUuCisgICAgTm9kZShOb2RlRmxhZ3MgcmVzdWx0LCBOb2RlVHlwZSBvcCwgTm9k
ZU9yaWdpbiBub2RlT3JpZ2luLCBFZGdlIGNoaWxkMSA9IEVkZ2UoKSwgRWRnZSBjaGlsZDIgPSBF
ZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQorICAgICAgICA6IG9yaWdpbihub2RlT3JpZ2lu
KQorICAgICAgICAsIGNoaWxkcmVuKEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBjaGlsZDEsIGNoaWxk
MiwgY2hpbGQzKQorICAgICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcigp
KQorICAgICAgICAsIG1fcmVmQ291bnQoMSkKKyAgICAgICAgLCBtX3ByZWRpY3Rpb24oU3BlY05v
bmUpCisgICAgICAgICwgbV9vcEluZm8oMCkKKyAgICAgICAgLCBtX29wSW5mbzIoMCkKKyAgICB7
CisgICAgICAgIG1pc2MucmVwbGFjZW1lbnQgPSAwOworICAgICAgICBzZXRPcEFuZERlZmF1bHRG
bGFncyhvcCk7CisgICAgICAgIHNldFJlc3VsdChyZXN1bHQpOworICAgICAgICBBU1NFUlQoISht
X2ZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpKTsKKyAgICB9CisKICAgICAvLyBDb25zdHJ1Y3QgYSBu
b2RlIHdpdGggdXAgdG8gMyBjaGlsZHJlbiBhbmQgYW4gaW1tZWRpYXRlIHZhbHVlLgogICAgIE5v
ZGUoTm9kZVR5cGUgb3AsIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwgT3BJbmZvIGltbSwgRWRnZSBj
aGlsZDEgPSBFZGdlKCksIEVkZ2UgY2hpbGQyID0gRWRnZSgpLCBFZGdlIGNoaWxkMyA9IEVkZ2Uo
KSkKICAgICAgICAgOiBvcmlnaW4obm9kZU9yaWdpbikKQEAgLTI1NCw2ICsyNzEsMjIgQEAgc3Ry
dWN0IE5vZGUgewogICAgICAgICBBU1NFUlQoIShtX2ZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpKTsK
ICAgICB9CiAKKyAgICAvLyBDb25zdHJ1Y3QgYSBub2RlIHdpdGggdXAgdG8gMyBjaGlsZHJlbiBh
bmQgYW4gaW1tZWRpYXRlIHZhbHVlLgorICAgIE5vZGUoTm9kZUZsYWdzIHJlc3VsdCwgTm9kZVR5
cGUgb3AsIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwgT3BJbmZvIGltbSwgRWRnZSBjaGlsZDEgPSBF
ZGdlKCksIEVkZ2UgY2hpbGQyID0gRWRnZSgpLCBFZGdlIGNoaWxkMyA9IEVkZ2UoKSkKKyAgICAg
ICAgOiBvcmlnaW4obm9kZU9yaWdpbikKKyAgICAgICAgLCBjaGlsZHJlbihBZGphY2VuY3lMaXN0
OjpGaXhlZCwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMykKKyAgICAgICAgLCBtX3ZpcnR1YWxSZWdp
c3RlcihWaXJ0dWFsUmVnaXN0ZXIoKSkKKyAgICAgICAgLCBtX3JlZkNvdW50KDEpCisgICAgICAg
ICwgbV9wcmVkaWN0aW9uKFNwZWNOb25lKQorICAgICAgICAsIG1fb3BJbmZvKGltbS5tX3ZhbHVl
KQorICAgICAgICAsIG1fb3BJbmZvMigwKQorICAgIHsKKyAgICAgICAgbWlzYy5yZXBsYWNlbWVu
dCA9IDA7CisgICAgICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKG9wKTsKKyAgICAgICAgc2V0UmVz
dWx0KHJlc3VsdCk7CisgICAgICAgIEFTU0VSVCghKG1fZmxhZ3MgJiBOb2RlSGFzVmFyQXJncykp
OworICAgIH0KKwogICAgIC8vIENvbnN0cnVjdCBhIG5vZGUgd2l0aCB1cCB0byAzIGNoaWxkcmVu
IGFuZCB0d28gaW1tZWRpYXRlIHZhbHVlcy4KICAgICBOb2RlKE5vZGVUeXBlIG9wLCBOb2RlT3Jp
Z2luIG5vZGVPcmlnaW4sIE9wSW5mbyBpbW0xLCBPcEluZm8gaW1tMiwgRWRnZSBjaGlsZDEgPSBF
ZGdlKCksIEVkZ2UgY2hpbGQyID0gRWRnZSgpLCBFZGdlIGNoaWxkMyA9IEVkZ2UoKSkKICAgICAg
ICAgOiBvcmlnaW4obm9kZU9yaWdpbikKQEAgLTMyNSw2ICszNTgsMTggQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICByZXR1cm4gZmlsdGVyRmxhZ3MofmZsYWdzKTsKICAgICB9CiAgICAgCisgICAg
dm9pZCBzZXRSZXN1bHQoTm9kZUZsYWdzIHJlc3VsdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
KHJlc3VsdCAmIH5Ob2RlUmVzdWx0TWFzaykpOworICAgICAgICBjbGVhckZsYWdzKE5vZGVSZXN1
bHRNYXNrKTsKKyAgICAgICAgbWVyZ2VGbGFncyhyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBO
b2RlRmxhZ3MgcmVzdWx0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBmbGFncygpICYg
Tm9kZVJlc3VsdE1hc2s7CisgICAgfQorICAgIAogICAgIHZvaWQgc2V0T3BBbmREZWZhdWx0Rmxh
Z3MoTm9kZVR5cGUgb3ApCiAgICAgewogICAgICAgICBtX29wID0gb3A7CkBAIC0zNDEsMTIgKzM4
Niw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoUGhhbnRv
bSk7CiAgICAgfQogCi0gICAgdm9pZCBjb252ZXJ0VG9JZGVudGl0eSgpCi0gICAgewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChjaGlsZDEoKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFjaGls
ZDIoKSk7Ci0gICAgICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKElkZW50aXR5KTsKLSAgICB9Cisg
ICAgdm9pZCBjb252ZXJ0VG9JZGVudGl0eSgpOwogCiAgICAgYm9vbCBtdXN0R2VuZXJhdGUoKQog
ICAgIHsKQEAgLTM2OCw3ICs0MDgsMTQgQEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIGJvb2wg
aXNDb25zdGFudCgpCiAgICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBKU0NvbnN0YW50Owor
ICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgICAg
ICBjYXNlIERvdWJsZUNvbnN0YW50OgorICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICBib29sIGlzV2Vha0NvbnN0YW50
KCkKQEAgLTM4NSw2ICs0MzIsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICBzd2l0
Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgICAgICBjYXNlIERvdWJs
ZUNvbnN0YW50OgorICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgV2Vh
a0pTQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtNDAxLDcgKzQ1MCwxMiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgCiAg
ICAgdm9pZCBjb252ZXJ0VG9Db25zdGFudCh1bnNpZ25lZCBjb25zdGFudE51bWJlcikKICAgICB7
Ci0gICAgICAgIG1fb3AgPSBKU0NvbnN0YW50OworICAgICAgICBpZiAoaGFzRG91YmxlUmVzdWx0
KCkpCisgICAgICAgICAgICBtX29wID0gRG91YmxlQ29uc3RhbnQ7CisgICAgICAgIGVsc2UgaWYg
KGhhc0ludDUyUmVzdWx0KCkpCisgICAgICAgICAgICBtX29wID0gSW50NTJDb25zdGFudDsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV9vcCA9IEpTQ29uc3RhbnQ7CiAgICAgICAgIG1fZmxh
Z3MgJj0gfihOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlciB8IE5vZGVDbG9iYmVy
c1dvcmxkKTsKICAgICAgICAgbV9vcEluZm8gPSBjb25zdGFudE51bWJlcjsKICAgICAgICAgY2hp
bGRyZW4ucmVzZXQoKTsKQEAgLTUwMiw2ICs1NTYsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAg
IGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSh3ZWFrQ29u
c3RhbnQoKSk7CiAgICAgICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBEb3VibGVD
b25zdGFudDoKKyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICAgICAgcmV0dXJu
IGNvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCAr
IGNvbnN0YW50TnVtYmVyKCkpLmdldCgpOwogICAgICAgICBjYXNlIFBoYW50b21Bcmd1bWVudHM6
CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtNzk3LDMyICs4NTMsNTIgQEAgc3Ry
dWN0IE5vZGUgewogICAgIAogICAgIGJvb2wgaGFzUmVzdWx0KCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2s7CisgICAgICAgIHJldHVybiAhIXJlc3VsdCgp
OwogICAgIH0KIAogICAgIGJvb2wgaGFzSW50MzJSZXN1bHQoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRJbnQzMjsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdCgpID09IE5vZGVSZXN1bHRJbnQzMjsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBoYXNJbnQ1MlJlc3VsdCgpCisgICAgeworICAgICAgICByZXR1cm4gcmVzdWx0KCkgPT0g
Tm9kZVJlc3VsdEludDUyOwogICAgIH0KICAgICAKICAgICBib29sIGhhc051bWJlclJlc3VsdCgp
CiAgICAgewotICAgICAgICByZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9k
ZVJlc3VsdE51bWJlcjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdCgpID09IE5vZGVSZXN1bHROdW1i
ZXI7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzRG91YmxlUmVzdWx0KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiByZXN1bHQoKSA9PSBOb2RlUmVzdWx0RG91YmxlOwogICAgIH0KICAgICAKICAg
ICBib29sIGhhc0pTUmVzdWx0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiAobV9mbGFncyAmIE5v
ZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0SlM7CisgICAgICAgIHJldHVybiByZXN1bHQoKSA9
PSBOb2RlUmVzdWx0SlM7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzQm9vbGVhblJlc3VsdCgp
CiAgICAgewotICAgICAgICByZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9k
ZVJlc3VsdEJvb2xlYW47CisgICAgICAgIHJldHVybiByZXN1bHQoKSA9PSBOb2RlUmVzdWx0Qm9v
bGVhbjsKICAgICB9CiAKICAgICBib29sIGhhc1N0b3JhZ2VSZXN1bHQoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRTdG9yYWdl
OworICAgICAgICByZXR1cm4gcmVzdWx0KCkgPT0gTm9kZVJlc3VsdFN0b3JhZ2U7CisgICAgfQor
ICAgIAorICAgIFVzZUtpbmQgZGVmYXVsdFVzZUtpbmQoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHVzZUtpbmRGb3JSZXN1bHQocmVzdWx0KCkpOworICAgIH0KKyAgICAKKyAgICBFZGdlIGRlZmF1
bHRFZGdlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBFZGdlKHRoaXMsIGRlZmF1bHRVc2VLaW5k
KCkpOwogICAgIH0KIAogICAgIGJvb2wgaXNKdW1wKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVGbGFncy5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDcsNiArNDcsOSBAQCB2b2lkIGR1bXBOb2RlRmxhZ3MoUHJpbnRTdHJlYW0mIGFjdHVh
bE91CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdE51bWJlcjoKICAgICAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIk51bWJlciIpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTm9k
ZVJlc3VsdERvdWJsZToKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgIkRvdWJsZSIpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgogICAgICAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiSW50MzIiKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCShyZXZpc2lvbiAxNjcy
NzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zOCwxMCArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogI2RlZmluZSBOb2RlUmVzdWx0TWFzayAgICAgICAgICAgICAgICAgICAweDAw
MDcKICNkZWZpbmUgTm9kZVJlc3VsdEpTICAgICAgICAgICAgICAgICAgICAgMHgwMDAxCiAjZGVm
aW5lIE5vZGVSZXN1bHROdW1iZXIgICAgICAgICAgICAgICAgIDB4MDAwMgotI2RlZmluZSBOb2Rl
UmVzdWx0SW50MzIgICAgICAgICAgICAgICAgICAweDAwMDMKLSNkZWZpbmUgTm9kZVJlc3VsdElu
dDUyICAgICAgICAgICAgICAgICAgMHgwMDA0Ci0jZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAg
ICAgICAgICAgICAgIDB4MDAwNQotI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAg
ICAgICAweDAwMDYKKyNkZWZpbmUgTm9kZVJlc3VsdERvdWJsZSAgICAgICAgICAgICAgICAgMHgw
MDAzCisjZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAgICAgICAgICAgICAgIDB4MDAwNAorI2Rl
ZmluZSBOb2RlUmVzdWx0SW50NTIgICAgICAgICAgICAgICAgICAweDAwMDUKKyNkZWZpbmUgTm9k
ZVJlc3VsdEJvb2xlYW4gICAgICAgICAgICAgICAgMHgwMDA2CisjZGVmaW5lIE5vZGVSZXN1bHRT
dG9yYWdlICAgICAgICAgICAgICAgIDB4MDAwNwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICNkZWZpbmUgTm9kZU11c3RHZW5lcmF0ZSAgICAgICAgICAgICAgICAgMHgwMDA4IC8v
IHNldCBvbiBub2RlcyB0aGF0IGhhdmUgc2lkZSBlZmZlY3RzLCBhbmQgbWF5IG5vdCB0cml2aWFs
bHkgYmUgcmVtb3ZlZCBieSBEQ0UuCiAjZGVmaW5lIE5vZGVIYXNWYXJBcmdzICAgICAgICAgICAg
ICAgICAgIDB4MDAxMApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgLyogQSBjb25zdGFudCBpbiB0aGUgQ29kZUJsb2NrJ3MgY29u
c3RhbnQgcG9vbC4gKi9cCiAgICAgbWFjcm8oSlNDb25zdGFudCwgTm9kZVJlc3VsdEpTIHwgTm9k
ZURvZXNOb3RFeGl0KSBcCiAgICAgXAorICAgIC8qIENvbnN0YW50cyB3aXRoIHNwZWNpZmljIHJl
cHJlc2VudGF0aW9ucy4gKi9cCisgICAgbWFjcm8oRG91YmxlQ29uc3RhbnQsIE5vZGVSZXN1bHRE
b3VibGUgfCBOb2RlRG9lc05vdEV4aXQpIFwKKyAgICBtYWNybyhJbnQ1MkNvbnN0YW50LCBOb2Rl
UmVzdWx0SW50NTIgfCBOb2RlRG9lc05vdEV4aXQpIFwKKyAgICBcCiAgICAgLyogQSBjb25zdGFu
dCBub3QgaW4gdGhlIENvZGVCbG9jaydzIGNvbnN0YW50IHBvb2wuIFVzZXMgZ2V0IHBhdGNoZWQg
dG8ganVtcHMgdGhhdCBleGl0IHRoZSAqL1wKICAgICAvKiBjb2RlIGJsb2NrLiAqL1wKICAgICBt
YWNybyhXZWFrSlNDb25zdGFudCwgTm9kZVJlc3VsdEpTIHwgTm9kZURvZXNOb3RFeGl0KSBcCkBA
IC0xMDYsMTUgKzExMCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
LyogVXNlZCB0byBib3ggdGhlIHJlc3VsdCBvZiBVUlNoaWZ0IG5vZGVzIChyZXN1bHQgaGFzIHJh
bmdlIDAuLjJeMzItMSkuICovXAogICAgIG1hY3JvKFVJbnQzMlRvTnVtYmVyLCBOb2RlUmVzdWx0
TnVtYmVyKSBcCiAgICAgXAotICAgIC8qIFVzZWQgdG8gY2FzdCBrbm93biBpbnRlZ2VycyB0byBk
b3VibGVzLCBzbyBhcyB0byBzZXBhcmF0ZSB0aGUgZG91YmxlIGZvcm0gKi9cCi0gICAgLyogb2Yg
dGhlIHZhbHVlIGZyb20gdGhlIGludGVnZXIgZm9ybS4gKi9cCi0gICAgbWFjcm8oSW50MzJUb0Rv
dWJsZSwgTm9kZVJlc3VsdE51bWJlcikgXAotICAgIC8qIFVzZWQgdG8gc3BlY3VsYXRlIHRoYXQg
YSBkb3VibGUgdmFsdWUgaXMgYWN0dWFsbHkgYW4gaW50ZWdlci4gKi9cCisgICAgLyogQXR0ZW1w
dCB0byB0cnVuY2F0ZSBhIGRvdWJsZSB0byBpbnQzMjsgdGhpcyB3aWxsIGV4aXQgaWYgaXQgY2Fu
J3QgZG8gaXQuICovXAogICAgIG1hY3JvKERvdWJsZUFzSW50MzIsIE5vZGVSZXN1bHRJbnQzMikg
XAotICAgIC8qIFVzZWQgdG8gc2VwYXJhdGUgcmVwcmVzZW50YXRpb24gYW5kIHJlZ2lzdGVyIGFs
bG9jYXRpb24gb2YgSW50NTIncyByZXByZXNlbnRlZCAqL1wKLSAgICAvKiBhcyB2YWx1ZXMuICov
XAotICAgIG1hY3JvKEludDUyVG9WYWx1ZSwgTm9kZVJlc3VsdEpTKSBcCi0gICAgbWFjcm8oSW50
NTJUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlcikgXAorICAgIFwKKyAgICAvKiBDaGFuZ2UgdGhl
IHJlcHJlc2VudGF0aW9uIG9mIGEgdmFsdWUuICovXAorICAgIG1hY3JvKERvdWJsZVJlcCwgTm9k
ZVJlc3VsdERvdWJsZSkgXAorICAgIG1hY3JvKEludDUyUmVwLCBOb2RlUmVzdWx0SW50NTIpIFwK
KyAgICBtYWNybyhWYWx1ZVJlcCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIE5vZGVz
IGZvciBhcml0aG1ldGljIG9wZXJhdGlvbnMuICovXAogICAgIG1hY3JvKEFyaXRoQWRkLCBOb2Rl
UmVzdWx0TnVtYmVyKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlcjMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2OSw5ICsyNjksNyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGls
ZUV4aXQoY29uc3QgCiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1
ZSgpKSB7CiAgICAgICAgIGNhc2UgSW5QYWlyOgotICAgICAgICBjYXNlIEluRlBSOgogICAgICAg
ICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJ
bkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCiAgICAgICAgICAgICAgICAgJmJp
dHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNC
aXRzLnRhZywKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CkBAIC0yODYsNiArMjg0
LDE0IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbkZQUjoKKyAgICAgICAgY2Fz
ZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdU
MCk7CisgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZv
OjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LnNhbml0aXplRG91YmxlKEZQUkluZm86OmZw
UmVnVDApOworICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwg
QXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CiAgICAgICAgIGNhc2UgSW50MzJE
aXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAko
cmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsNyBAQCB2b2lkIE9T
UkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIGNhc2UgRG91YmxlRGlz
cGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAg
ICAgICAgbV9qaXQubG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7
CisgICAgICAgICAgICBtX2ppdC5zYW5pdGl6ZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwKTsKICAg
ICAgICAgICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdU
MCk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhl
bHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5MCw3ICs0OTAsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5VmFsQWxp
YXM6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQ6Ci0gICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICAgICAgY2Fz
ZSBEb3VibGVBc0ludDMyOgogICAgICAgICBjYXNlIEdldExvY2FsVW5saW5rZWQ6CiAgICAgICAg
IGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6CkBAIC01MDQsMTEgKzUwMywxNCBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgICAgIGNhc2UgQ2hlY2tU
aWVyVXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKLSAgICAg
ICAgY2FzZSBJbnQ1MlRvVmFsdWU6Ci0gICAgICAgIGNhc2UgSW50NTJUb0RvdWJsZToKICAgICAg
ICAgY2FzZSBDaGVja0luQm91bmRzOgogICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKLSAgICAg
ICAgY2FzZSBIYXJkUGhhbnRvbTogeworICAgICAgICBjYXNlIEhhcmRQaGFudG9tOgorICAgICAg
ICBjYXNlIERvdWJsZVJlcDoKKyAgICAgICAgY2FzZSBJbnQ1MlJlcDoKKyAgICAgICAgY2FzZSBW
YWx1ZVJlcDoKKyAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICAgICAgY2FzZSBJbnQ1
MkNvbnN0YW50OiB7CiAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZp
c2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxhdGlvbi4gSXQgaXMKICAgICAgICAgICAgIC8v
IGluc2VydGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZvbGxvd3MgdGhpcyBwaGFzZS4KICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghbm9kZS0+aGFz
UmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAg
IGluc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXgg
KyAxLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBFZGdlKG5vZGUpKTsKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9y
aWdpbiwgbm9kZS0+ZGVmYXVsdEVkZ2UoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVy
c2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5Miw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgU3BlY05vbmUsIE1vdkhpbnQsIE5vZGVPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHZhcmlhYmxlLT5sb2NhbCgpLm9mZnNldCgpKSwg
RWRnZShub2RlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyh2YXJp
YWJsZS0+bG9jYWwoKS5vZmZzZXQoKSksIG5vZGUtPmRlZmF1bHRFZGdlKCkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQpAQCAtMzUwLDcgKzM1MCw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgVmFyaWFi
bGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUtPmlzQ2FwdHVyZWQoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS5z
ZXROb2RlKGJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkp
OworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IFVudHlwZWRVc2UpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9CisgICAg
ICAgICAgICAgICAgICAgICAgICBibG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmQodmFyaWFi
bGUtPmxvY2FsKCkpLT5kZWZhdWx0RWRnZSgpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9QaGFudG9tKCk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgb25seSBm
b3IgVXBzaWxvbnMuIEFuIFVwc2lsb24gd2lsbCBvbmx5IHJlZmVyIHRvIGEKICAgICAgICAgICAg
ICAgICAgICAgLy8gUGhhbnRvbUxvY2FsIGlmIHRoZXJlIHdlcmUgbm8gU2V0TG9jYWxzIG9yIEdl
dExvY2FscyBpbiB0aGUgYmxvY2suCkBAIC0zNjMsNyArMzY1LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICBpZiAodmFyaWFibGUtPmlzQ2FwdHVyZWQoKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1
bHRGbGFncyhHZXRBcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MocmVzdWx0Rm9yKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpKSk7
CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChyZXN1bHRGb3Iobm9kZS0+dmFy
aWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkpKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDkgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKGVkZ2UudXNlS2luZCgpKSB7CiAg
ICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAgICAgY2FzZSBJbnQzMlVzZToKLSAgICAgICAg
Y2FzZSBSZWFsTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAg
Y2FzZSBEb3VibGVSZXBSZWFsVXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAg
ICBjYXNlIE51bWJlclVzZToKICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICBjYXNl
IENlbGxVc2U6CkBAIC02MSw3ICs2Myw2IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBOb3RDZWxs
VXNlOgogICAgICAgICBjYXNlIE90aGVyVXNlOgogICAgICAgICBjYXNlIE1pc2NVc2U6Ci0gICAg
ICAgIGNhc2UgTWFjaGluZUludFVzZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6CkBAIC02OSwxMSArNzAsNiBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgbV9yZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgotICAgICAgICAgICAg
aWYgKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpCi0gICAg
ICAgICAgICAgICAgbV9yZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICAgICAgICAgIGlmIChtX3N0
YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgflNwZWNDZWxsKQogICAgICAgICAgICAgICAgIG1f
cmVzdWx0ID0gZmFsc2U7CkBAIC0xMTEsNiArMTA3LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFi
c3RyYWN0U3RhdGVUeXBlJiBzdAogCiAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgY2Fz
ZSBKU0NvbnN0YW50OgorICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAgY2FzZSBJbnQ1MkNv
bnN0YW50OgogICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgY2FzZSBJZGVudGl0eToKICAg
ICBjYXNlIFRvVGhpczoKQEAgLTEzNyw3ICsxMzUsNiBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBCaXRVUlNoaWZ0OgogICAgIGNhc2UgVmFsdWVU
b0ludDMyOgogICAgIGNhc2UgVUludDMyVG9OdW1iZXI6Ci0gICAgY2FzZSBJbnQzMlRvRG91Ymxl
OgogICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKICAgICBjYXNlIEFyaXRoQWRkOgogICAgIGNhc2Ug
QXJpdGhTdWI6CkBAIC0yNDIsOCArMjM5LDYgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICBjYXNlIENo
ZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgY2FzZSBMb29wSGludDoKLSAgICBjYXNlIEludDUy
VG9Eb3VibGU6Ci0gICAgY2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6
CiAgICAgY2FzZSBTdG9yZUJhcnJpZXJXaXRoTnVsbENoZWNrOgogICAgIGNhc2UgSW52YWxpZGF0
aW9uUG9pbnQ6CkBAIC0yNTUsNiArMjUwLDkgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0
OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKKyAgICBjYXNlIFZhbHVlUmVwOgorICAgIGNh
c2UgRG91YmxlUmVwOgorICAgIGNhc2UgSW50NTJSZXA6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAKICAgICBjYXNlIEdldEJ5VmFsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDYsMjEgKzEwNiw5IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bEpTVmFsdWUoRWRnZSAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAgICAg
ICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKLSAgICAgICAgICAgICAgICBtX2pp
dC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsK
LSAgICAgICAgICAgICAgICBib3hJbnQ1MihncHIsIGdwciwgc3BpbGxGb3JtYXQpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21w
aWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgICAg
IGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIE5lZWQgdG8gYm94IHRoZSBkb3VibGUsIHNpbmNlIHdlIHdhbnQgYSBKU1ZhbHVlLgot
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdWI2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIsIGdwcik7Ci0gICAgICAgICAgICAgICAgICAgIHNwaWxsRm9ybWF0ID0gRGF0YUZvcm1h
dEpTRG91YmxlOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1
ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwpAQCAtMTQzLDI4ICsxMzEsNiBAQCBHUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAgIHJldHVybiBncHI7
CiAgICAgfQogCi0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7Ci0gICAgICAgIEZQUlJlZyBm
cHIgPSBpbmZvLmZwcigpOwotICAgICAgICBHUFJSZWcgZ3ByID0gYm94RG91YmxlKGZwcik7Ci0K
LSAgICAgICAgLy8gVXBkYXRlIGFsbCBpbmZvCi0gICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1f
c3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0RvdWJsZSk7Ci0gICAgICAgIG1fZnBycy5yZWxlYXNl
KGZwcik7Ci0gICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxs
T3JkZXJKUyk7Ci0KLSAgICAgICAgcmV0dXJuIGdwcjsKLSAgICB9Ci0gICAgICAgIAotICAgIGNh
c2UgRGF0YUZvcm1hdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOiB7Ci0g
ICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBsb2NrKGdwcik7Ci0gICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSBhbGxvY2F0ZSgpOwotICAgICAgICBib3hJbnQ1MihncHIs
IHJlc3VsdEdQUiwgaW5mby5yZWdpc3RlckZvcm1hdCgpKTsKLSAgICAgICAgdW5sb2NrKGdwcik7
Ci0gICAgICAgIHJldHVybiByZXN1bHRHUFI7Ci0gICAgfQotCiAgICAgY2FzZSBEYXRhRm9ybWF0
Q2VsbDoKICAgICAgICAgLy8gTm8gcmV0YWcgcmVxdWlyZWQgb24gSlNWQUxVRTY0IQogICAgIGNh
c2UgRGF0YUZvcm1hdEpTOgpAQCAtMTc5LDYgKzE0NSw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgCiAgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVh
bjoKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJs
ZToKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICAgICAgLy8gdGhpcyB0eXBlIGN1cnJl
bnRseSBuZXZlciBvY2N1cnMKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgCkBAIC03NjksMTIgKzczNyw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUludDMKICAgICAKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkg
ewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgaWYgKGluZm8uc3BpbGxGb3Jt
YXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxh
dGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgICAg
ICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7Ci0gICAgICAgICAgICByZXR1cm4gYWxs
b2NhdGUoKTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9j
YXRlKCk7CiAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKQEAgLTc4OCw3ICs3
NTAsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAg
IAogICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwog
ICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1h
dEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIgfHwgc3BpbGxGb3JtYXQgPT0g
RGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwg
c3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKTsKICAgICAgICAgCiAgICAgICAgIG1fZ3By
cy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKICAgICAg
ICAgCkBAIC04MDksMzYgKzc3MSw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZUludDMKICAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRKU0ludDMyOwog
ICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAgICAgICAgfQotICAgICAgICBpZiAoc3BpbGxGb3Jt
YXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJ
bnQ1MikgewotICAgICAgICAgICAgLy8gR2VuZXJhbGx5LCB0aGlzIGNhbiBvbmx5IGhhcHBlbiBp
ZiB3ZSd2ZSBhbHJlYWR5IHByb3ZlZCB0aGF0IHRoZQotICAgICAgICAgICAgLy8gdmFsdWUgaXMg
YW4gaW50MzIuIFRoYXQncyBiZWNhdXNlIGlmIGEgdmFsdWUgb3JpZ2luYXRlZCBhcyBhIEpTVmFs
dWUKLSAgICAgICAgICAgIC8vIHRoZW4gd2Ugd291bGQgc3BlY3VsYXRlIHRoYXQgaXQncyBhbiBp
bnQzMiBiZWZvcmUgcmVwcmVzZW50aW5nIGl0IGFzCi0gICAgICAgICAgICAvLyBhbiBpbnQ1Mi4g
T3RoZXJ3aXNlLCBpZiB3ZSBrbm93aW5nbHkgcHJvZHVjZWQgYW4gaW50NTIsIHRoZW4gd2Ugd291
bGQKLSAgICAgICAgICAgIC8vIGJlIGJveGluZyBpdCBpbnRvIGEgdmFsdWUgdXNpbmcgSW50NTJU
b1ZhbHVlLiBUaGlzIGFzc2VydGlvbiBpcyB2YWxpZAotICAgICAgICAgICAgLy8gb25seSBiZWNh
dXNlIEludDUyIGlzIHNvbWV0aGluZyB0aGF0IHdlIGludHJvZHVjZSBhdCBwcmVkaWN0aW9uIHRp
bWUuCi0gICAgICAgICAgICAvLyBIb3dldmVyOiB3ZSBtYXkgaGF2ZSBhbiBpbnQzMi1wcm9kdWNp
bmcgbm9kZSByZXBsYWNlZCBieSBhbgotICAgICAgICAgICAgLy8gaW50NTItcHJvZHVjaW5nIG5v
ZGUgZHVlIHRvIENTRS4gU28gd2UgbXVzdCBkbyBhIGNoZWNrLgotICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoISh0eXBlICYgflNwZWNNYWNoaW5lSW50KSk7Ci0gICAgICAgICAgICBpZiAodHlw
ZSAmIFNwZWNJbnQ1MikgewotICAgICAgICAgICAgICAgIEdQUlJlZyB0ZW1wID0gYWxsb2NhdGUo
KTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihncHIsIHRlbXApOwot
ICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2UgY2FuJ3Qgc3VwcGx5IHZhbHVlIHByb2Zp
bGluZyBpbmZvcm1hdGlvbiBoZXJlLiA6LS8KLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAotICAgICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCAwLAotICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IGdwciwgdGVtcCkpOwotICAgICAgICAgICAgICAgIHVubG9jayh0ZW1wKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIp
Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwg
Z3ByKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6aW50NTJTaGlmdEFtb3VudCksIGdwcik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuemVyb0V4
dGVuZDMyVG9QdHIoZ3ByLCBncHIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5mby5m
aWxsSW50MzIoKm1fc3RyZWFtLCBncHIpOwotICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0
YUZvcm1hdEludDMyOwotICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgfQogICAgICAg
ICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwg
Z3ByKTsKIAogICAgICAgICAvLyBGaWxsIGFzIEpTVmFsdWUsIGFuZCBmYWxsIHRocm91Z2guCkBA
IC04OTcsNDcgKzgyOSw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUlu
dDMKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgRGF0YUZv
cm1hdFN0cmljdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOiB7Ci0gICAgICAgIEdQ
UlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBHUFJSZWcgcmVzdWx0OwotICAgICAgICBE
YXRhRm9ybWF0IG9sZEZvcm1hdCA9IGluZm8ucmVnaXN0ZXJGb3JtYXQoKTsKLSAgICAgICAgaWYg
KG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgp
OwotICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBsb2NrKGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQzMigqbV9z
dHJlYW0sIGdwcik7Ci0gICAgICAgICAgICByZXN1bHQgPSBncHI7Ci0gICAgICAgIH0KLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNNYWNoaW5lSW50KSk7Ci0gICAgICAgIGlm
IChvbGRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQotICAgICAgICAgICAgbV9qaXQucnNoaWZ0
NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCByZXN1bHQpOwotICAg
ICAgICBpZiAodHlwZSAmIFNwZWNJbnQ1MikgewotICAgICAgICAgICAgR1BSUmVnIHRlbXAgPSBh
bGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0LCB0
ZW1wKTsKLSAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2UgY2FuJ3Qgc3VwcGx5IHZhbHVlIHBy
b2ZpbGluZyBpbmZvcm1hdGlvbiBoZXJlLiA6LS8KLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soCi0gICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAgICAg
ICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHJlc3VsdCwg
dGVtcCkpOwotICAgICAgICAgICAgdW5sb2NrKHRlbXApOwotICAgICAgICB9Ci0gICAgICAgIG1f
aml0Lnplcm9FeHRlbmQzMlRvUHRyKHJlc3VsdCwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuRm9y
bWF0ID0gRGF0YUZvcm1hdEludDMyOwotICAgICAgICByZXR1cm4gZ3ByOwotICAgIH0KLQotICAg
IGNhc2UgRGF0YUZvcm1hdERvdWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZTogewot
ICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSAmJiBpc0ludDMyQ29uc3RhbnQoZWRnZS5u
b2RlKCkpKSB7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKLSAgICAgICAg
ICAgIEFTU0VSVChpc0ludDMyQ29uc3RhbnQoZWRnZS5ub2RlKCkpKTsKLSAgICAgICAgICAgIG1f
aml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTMyKHZhbHVlT2ZJbnQzMkNvbnN0YW50KGVkZ2Uu
bm9kZSgpKSksIGdwcik7Ci0gICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50
MzI7Ci0gICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICB9Ci0gICAgICAgIEZBTExUSFJP
VUdIOwotICAgIH0KKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAgICBjYXNlIERhdGFG
b3JtYXRDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CiAgICAgY2FzZSBEYXRhRm9y
bWF0SlNDZWxsOgpAQCAtOTQ3LDcgKzgzOSwxMCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KIAorICAg
IGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAg
IGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAKICAgICBkZWZh
dWx0OgpAQCAtOTc2LDE0ICs4NzEsMTMgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlSW50NQogewogICAgIEFTU0VSVChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1
MiB8fCBkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7CiAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7Ci0gICAgU3BlY3VsYXRlZFR5
cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKICAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwg
U3BlY01hY2hpbmVJbnQpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBl
ZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVy
YXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogCiAgICAgc3dp
dGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7
Ci0gICAgICAgIGlmICgoZWRnZS0+aGFzQ29uc3RhbnQoKSAmJiAhdmFsdWVPZkpTQ29uc3RhbnQo
ZWRnZS5ub2RlKCkpLmlzTWFjaGluZUludCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0
YUZvcm1hdERvdWJsZSkgeworICAgICAgICBpZiAoKGVkZ2UtPmhhc0NvbnN0YW50KCkgJiYgIXZh
bHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKS5pc01hY2hpbmVJbnQoKSkpIHsKICAgICAgICAg
ICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCAwKTsKICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgICAgICB9CkBAIC0x
MDA0LDgyICs4OTgsMjEgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50
NQogICAgICAgICAKICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxG
b3JtYXQoKTsKICAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAm
IERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyIHx8IHNwaWxs
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3Ry
aWN0SW50NTIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCA9PSBEYXRhRm9y
bWF0SW50NTIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKTsKICAgICAg
ICAgCiAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3Jk
ZXJTcGlsbGVkKTsKICAgICAgICAgCi0gICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9y
bWF0SlNJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpIHsKLSAgICAgICAg
ICAgIC8vIElmIHdlIGtub3cgdGhpcyB3YXMgc3BpbGxlZCBhcyBhbiBpbnRlZ2VyIHdlIGNhbiBm
aWxsIHdpdGhvdXQgY2hlY2tpbmcuCi0gICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIG1faml0
LnNpZ25FeHRlbmQzMlRvUHRyKGdwciwgZ3ByKTsKLSAgICAgICAgICAgIGlmIChkZXNpcmVkRm9y
bWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewotICAgICAgICAgICAgICAgIGluZm8uZmls
bFN0cmljdEludDUyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ3By
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBncHIpOwotICAgICAgICAgICAgaW5mby5maWxs
SW50NTIoKm1fc3RyZWFtLCBncHIpOwotICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAg
fQotICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9y
bWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewotICAgICAgICAgICAgbV9qaXQubG9hZDY0
KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAg
ICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQotICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlm
dEFtb3VudCksIGdwcik7Ci0gICAgICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NTIoKm1f
c3RyZWFtLCBncHIpOwotICAgICAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKQot
ICAgICAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1
MlNoaWZ0QW1vdW50KSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbEludDUyKCptX3N0cmVh
bSwgZ3ByKTsKLSAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgIH0KICAgICAgICAgbV9q
aXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7
Ci0KLSAgICAgICAgLy8gRmlsbCBhcyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJvdWdoLgotICAgICAg
ICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNJbnQzMik7Ci0g
ICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgfQot
Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsKLSAgICAgICAgLy8gQ2hlY2sgdGhlIHZhbHVlIGlz
IGFuIGludGVnZXIuIE5vdGUgdGhhdCB3ZSB3b3VsZCAqbGlrZSogdG8gdW5ib3ggYW4gSW50NTIK
LSAgICAgICAgLy8gYXQgdGhpcyBwb2ludCBidXQgdGhpcyBpcyB0b28gY29zdGx5LiBXZSBvbmx5
ICpwcm92ZSogdGhhdCB0aGlzIGlzIGFuIEludDUyCi0gICAgICAgIC8vIGV2ZW4gdGhvdWdoIHdl
IGNoZWNrIGlmIGl0J3MgYW4gaW50MzIuCi0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigp
OwotICAgICAgICBHUFJSZWcgcmVzdWx0OwotICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGdw
cikpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2pp
dC5tb3ZlKGdwciwgcmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fZ3By
cy5sb2NrKGdwcik7Ci0gICAgICAgICAgICByZXN1bHQgPSBncHI7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKHR5cGUgJiB+U3BlY0ludDMyKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlUmVncyhyZXN1bHQpLCBlZGdlLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fz
c2VtYmxlcjo6QmVsb3csIHJlc3VsdCwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7
Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gZ3ByKSAvLyBUaGUgbm90LWFscmVhZHktbG9ja2VkLCBz
byBmaWxsIGluLXBsYWNlLCBjYXNlLgotICAgICAgICAgICAgaW5mby5maWxsSW50NTIoKm1fc3Ry
ZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOwotICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0
cihyZXN1bHQsIHJlc3VsdCk7Ci0gICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3Jt
YXRJbnQ1MikKLSAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjppbnQ1MlNoaWZ0QW1vdW50KSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9Ci0KLSAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKLSAgICBjYXNlIERhdGFGb3JtYXRKU0lu
dDMyOiB7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBHUFJSZWcg
cmVzdWx0OwotICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGdwcikpIHsKLSAgICAgICAgICAg
IHJlc3VsdCA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKGdwciwgcmVzdWx0
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAg
ICAgICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0sIGdwciwgZGVzaXJlZEZvcm1hdCk7Ci0g
ICAgICAgICAgICByZXN1bHQgPSBncHI7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERh
dGFGb3JtYXRTdHJpY3RJbnQ1MikgeworICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERh
dGFGb3JtYXRJbnQ1MikKKyAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZp
bGxTdHJpY3RJbnQ1MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgICAgICByZXR1cm4gZ3ByOwog
ICAgICAgICB9Ci0gICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdCwgcmVzdWx0
KTsKLSAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQotICAgICAg
ICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91
bnQpLCByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBpZiAoc3BpbGxG
b3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKQorICAgICAgICAgICAgbV9qaXQubHNoaWZ0
NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBncHIpOworICAgICAg
ICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgIHJldHVybiBncHI7CiAg
ICAgfQogCiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKQEAgLTExMTYsMzEgKzk0
OSw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDUKICAgICAgICAg
cmV0dXJuIGdwcjsKICAgICB9CiAKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6Ci0gICAgY2Fz
ZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0gICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7
Ci0gICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB2YWx1ZU9mSlNDb25zdGFudChlZGdlLm5v
ZGUoKSk7Ci0gICAgICAgICAgICBpZiAoanNWYWx1ZS5pc01hY2hpbmVJbnQoKSkgewotICAgICAg
ICAgICAgICAgIGludDY0X3QgdmFsdWUgPSBqc1ZhbHVlLmFzTWFjaGluZUludCgpOwotICAgICAg
ICAgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikKLSAgICAgICAg
ICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA8PCBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50Owot
ICAgICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgICAg
IG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHZhbHVlKSwgZ3ByKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEZB
TExUSFJPVUdIOwotICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0
Qm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0
SlNCb29sZWFuOiB7Ci0gICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7Ci0g
ICAgfQotCi0gICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CkBA
IC0xMTUwLDggKzk1OCw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUlu
dDUKIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlIGVkZ2Up
CiB7CiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7Ci0g
ICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKLSAgICBBU1NFUlQoZWRnZS51
c2VLaW5kKCkgIT0gS25vd25OdW1iZXJVc2UgfHwgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY0Z1bGxO
dW1iZXIpKTsKKyAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNlIHx8IGVk
Z2UudXNlS2luZCgpID09IERvdWJsZVJlcFJlYWxVc2UpOworICAgIEFTU0VSVChlZGdlLT5oYXNE
b3VibGVSZXN1bHQoKSk7CiAgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNGdWxs
TnVtYmVyKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gZWRnZS0+dmly
dHVhbFJlZ2lzdGVyKCk7CiAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5m
b0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKQEAgLTExNjAsMTcgKzk2OCw2
IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAgICAgICAgaWYg
KGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0
ZSgpOwogCi0gICAgICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KGVkZ2Uubm9kZSgpKSkgewot
ICAgICAgICAgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICAgICAg
ICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHJlaW50ZXJwcmV0RG91YmxlVG9J
bnQ2NChzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlT2ZJbnQzMkNvbnN0YW50KGVkZ2Uubm9kZSgp
KSkpKSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlNjRUb0RvdWJsZShncHIsIGZw
cik7Ci0gICAgICAgICAgICAgICAgdW5sb2NrKGdwcik7Ci0KLSAgICAgICAgICAgICAgICAvLyBE
b24ndCBmaWxsIGRvdWJsZSBoZXJlIHNpbmNlIHRoYXQgd2lsbCBsZWFkIHRvIGNvbmZ1c2lvbjog
dGhlCi0gICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgYWxsb2NhdG9yIHdpbGwgbm93IHRoaW5r
IHRoYXQgdGhpcyBpcyBhIGRvdWJsZSB3aGlsZQotICAgICAgICAgICAgICAgIC8vIGV2ZXJ5b25l
IGVsc2UgdGhpbmtzIGl0J3MgYW4gaW50ZWdlci4KLSAgICAgICAgICAgICAgICByZXR1cm4gZnBy
OwotICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlzTnVtYmVyQ29uc3RhbnQoZWRnZS5u
b2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7CiAg
ICAgICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tNjQocmVpbnRlcnBy
ZXREb3VibGVUb0ludDY0KHZhbHVlT2ZOdW1iZXJDb25zdGFudChlZGdlLm5vZGUoKSkpKSwgZ3By
KTsKQEAgLTExODYsMTU5ICs5ODMsMTggQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlRG91YgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBEYXRhRm9ybWF0IHNwaWxs
Rm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwotICAgICAgICBzd2l0Y2ggKHNwaWxsRm9ybWF0
KSB7Ci0gICAgICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZTogewotICAgICAgICAgICAgRlBSUmVn
IGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7Ci0gICAgICAgICAgICBt
X2ZwcnMucmV0YWluKGZwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyRG91YmxlKTsKLSAg
ICAgICAgICAgIGluZm8uZmlsbERvdWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgICAgICBy
ZXR1cm4gZnByOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBEYXRhRm9y
bWF0SW50MzI6IHsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBT
cGlsbE9yZGVyU3BpbGxlZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmls
bEludDMyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIERhdGFG
b3JtYXRJbnQ1MjogewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0gICAg
ICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3Bp
bGxlZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbEludDUyKCptX3N0
cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJ
bnQ1MjogewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAg
ICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7
Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVh
bFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDUyKCptX3N0
cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgR1BSUmVnIGdwciA9
IGFsbG9jYXRlKCk7Ci0KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNwaWxsRm9ybWF0ICYg
RGF0YUZvcm1hdEpTKTsKLSAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVn
aXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRD
b21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAg
aW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwotICAgICAgICAg
ICAgdW5sb2NrKGdwcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7Ci0gICAgY2FzZSBEYXRhRm9ybWF0
Tm9uZTogLy8gU2hvdWxkIGhhdmUgZmlsbGVkLCBhYm92ZS4KLSAgICBjYXNlIERhdGFGb3JtYXRC
b29sZWFuOiAvLyBUaGlzIHR5cGUgbmV2ZXIgb2NjdXJzLgotICAgIGNhc2UgRGF0YUZvcm1hdFN0
b3JhZ2U6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBjYXNl
IERhdGFGb3JtYXRDZWxsOgotICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgIHJldHVybiBmcHJBbGxvY2F0
ZSgpOwotCi0gICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEpT
OgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogewotICAgICAgICBHUFJSZWcganNWYWx1
ZUdwciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGpzVmFsdWVHcHIpOwotICAg
ICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BSUmVnIHRlbXBHcHIg
PSBhbGxvY2F0ZSgpOwotCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1f
aml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGpzVmFsdWVHcHIsIEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0KLSAgICAgICAgaWYgKHR5cGUgJiB+U3Bl
Y0Z1bGxOdW1iZXIpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVSZWdzKGpzVmFsdWVHcHIpLCBlZGdlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJs
ZXI6Olplcm8sIGpzVmFsdWVHcHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwot
Ci0gICAgICAgIC8vIEZpcnN0LCBpZiB3ZSBnZXQgaGVyZSB3ZSBoYXZlIGEgZG91YmxlIGVuY29k
ZWQgYXMgYSBKU1ZhbHVlCi0gICAgICAgIG1faml0Lm1vdmUoanNWYWx1ZUdwciwgdGVtcEdwcik7
Ci0gICAgICAgIHVuYm94RG91YmxlKHRlbXBHcHIsIGZwcik7Ci0gICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGhhc1VuYm94ZWREb3VibGUgPSBtX2ppdC5qdW1wKCk7Ci0KLSAgICAgICAgLy8gRmlu
YWxseSwgaGFuZGxlIGludGVnZXJzLgotICAgICAgICBpc0ludGVnZXIubGluaygmbV9qaXQpOwot
ICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShqc1ZhbHVlR3ByLCBmcHIpOwotICAg
ICAgICBoYXNVbmJveGVkRG91YmxlLmxpbmsoJm1faml0KTsKLQotICAgICAgICBtX2dwcnMucmVs
ZWFzZShqc1ZhbHVlR3ByKTsKLSAgICAgICAgbV9ncHJzLnVubG9jayhqc1ZhbHVlR3ByKTsKLSAg
ICAgICAgbV9ncHJzLnVubG9jayh0ZW1wR3ByKTsKLSAgICAgICAgbV9mcHJzLnJldGFpbihmcHIs
IHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7Ci0gICAgICAgIGluZm8uZmlsbERv
dWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgIGluZm8ua2lsbFNwaWxsZWQoKTsKLSAgICAg
ICAgcmV0dXJuIGZwcjsKLSAgICB9Ci0KLSAgICBjYXNlIERhdGFGb3JtYXRKU0ludDMyOgotICAg
IGNhc2UgRGF0YUZvcm1hdEludDMyOiB7Ci0gICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0
ZSgpOwotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgbV9ncHJzLmxv
Y2soZ3ByKTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUoZ3ByLCBmcHIpOwot
ICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0gICAgICAgIHJldHVybiBmcHI7Ci0gICAgfQot
ICAgICAgICAKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjogeworICAgICAgICBSRUxFQVNFX0FT
U0VSVChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKTsKICAgICAgICAgRlBSUmVnIGZw
ciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAg
ICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9jYXRlKCk7
Ci0gICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1wKTsKLSAgICAgICAgbV9qaXQucnNoaWZ0NjQo
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCB0ZW1wKTsKLSAgICAgICAg
bV9qaXQuY29udmVydEludDY0VG9Eb3VibGUodGVtcCwgZnByKTsKLSAgICAgICAgdW5sb2NrKHRl
bXApOwotICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0gICAgICAgIHJldHVybiBmcHI7Ci0g
ICAgfQotICAgICAgICAKLSAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjogewotICAgICAg
ICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BSUmVnIGdwciA9IGluZm8u
Z3ByKCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgIG1faml0LmNvbnZlcnRJ
bnQ2NFRvRG91YmxlKGdwciwgZnByKTsKLSAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwotICAg
ICAgICByZXR1cm4gZnByOwotICAgIH0KLQotICAgIC8vIFVuYm94IHRoZSBkb3VibGUKLSAgICBj
YXNlIERhdGFGb3JtYXRKU0RvdWJsZTogewotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIo
KTsKLSAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgIGlmIChtX2dw
cnMuaXNMb2NrZWQoZ3ByKSkgewotICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IHRy
YW1wbGUgZ3ByIGlmIGl0IGlzIGluIHVzZS4KLSAgICAgICAgICAgIEdQUlJlZyB0ZW1wID0gYWxs
b2NhdGUoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1wKTsKLSAgICAgICAgICAg
IHVuYm94RG91YmxlKHRlbXAsIGZwcik7Ci0gICAgICAgICAgICB1bmxvY2sodGVtcCk7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgdW5ib3hEb3VibGUoZ3ByLCBmcHIpOwotCi0gICAgICAg
IG1fZ3Bycy5yZWxlYXNlKGdwcik7CisgICAgICAgIG1faml0LmxvYWREb3VibGUoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZnByKTsKICAgICAgICAgbV9mcHJzLnJl
dGFpbihmcHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7Ci0KICAgICAgICAg
aW5mby5maWxsRG91YmxlKCptX3N0cmVhbSwgZnByKTsKICAgICAgICAgcmV0dXJuIGZwcjsKICAg
ICB9CiAKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6IHsKLSAgICAgICAgRlBSUmVnIGZwciA9
IGluZm8uZnByKCk7Ci0gICAgICAgIG1fZnBycy5sb2NrKGZwcik7Ci0gICAgICAgIHJldHVybiBm
cHI7Ci0gICAgfQotICAgICAgICAKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gSW52YWxpZEZQUlJlZzsKLSAgICB9Cisg
ICAgUkVMRUFTRV9BU1NFUlQoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3Vi
bGUpOworICAgIEZQUlJlZyBmcHIgPSBpbmZvLmZwcigpOworICAgIG1fZnBycy5sb2NrKGZwcik7
CisgICAgcmV0dXJuIGZwcjsKIH0KIAogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlQ2VsbChFZGdlIGVkZ2UpCkBAIC0xMzUyLDExICsxMDA4LDYgQEAgR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9y
bWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAgICAgIGlmIChpbmZvLnNw
aWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBE
YXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1
dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgICAgICByZXR1cm4g
YWxsb2NhdGUoKTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgR1BSUmVnIGdwciA9IGFs
bG9jYXRlKCk7CiAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKQEAgLTE0MDUs
MTYgKzEwNTYsMTYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAog
ICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CiAg
ICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgog
ICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFu
OgotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdElu
dDUyOiB7CisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjogewogICAgICAgICB0ZXJtaW5hdGVT
cGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAg
ICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KIAorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJs
ZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUy
OgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTQzMyw3ICsxMDg0
LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogCiAgICAgc3dp
dGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7
Ci0gICAgICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyIHx8IGlu
Zm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7CisgICAgICAgIGlmIChpbmZv
LnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyKSB7CiAgICAgICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAg
ICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICAgICAgfQpAQCAtMTQ4NywxNiArMTEz
OCwxNSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAgICAgY2Fz
ZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICBjYXNl
IERhdGFGb3JtYXRKU0RvdWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2Fz
ZSBEYXRhRm9ybWF0SlNDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Ci0gICAgY2FzZSBE
YXRhRm9ybWF0SW50NTI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKICAgICAg
ICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdz
KCksIDApOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKLSAgICB9CiAgICAgICAgIAorICAg
IGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAg
IGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAKICAgICBkZWZh
dWx0OgpAQCAtMTUwNSwyNiArMTE1NSw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNw
ZWN1bGF0ZUJvb2wKICAgICB9CiB9CiAKLUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklU
Ojpjb252ZXJ0VG9Eb3VibGUoR1BSUmVnIHZhbHVlLCBGUFJSZWcgcmVzdWx0LCBHUFJSZWcgdG1w
KQotewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDY0KE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHZhbHVlLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdE51bWJlciA9IG1faml0
LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgdmFsdWUsIEdQUkluZm86OnRhZ1R5
cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgCi0gICAgbV9qaXQubW92ZSh2YWx1ZSwgdG1wKTsKLSAg
ICB1bmJveERvdWJsZSh0bXAsIHJlc3VsdCk7Ci0gICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAg
ZG9uZSA9IG1faml0Lmp1bXAoKTsKLSAgICAKLSAgICBpc0ludGVnZXIubGluaygmbV9qaXQpOwot
ICAgIAotICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHZhbHVlLCByZXN1bHQpOwotICAg
IAotICAgIGRvbmUubGluaygmbV9qaXQpOwotCi0gICAgcmV0dXJuIG5vdE51bWJlcjsKLX0KLQog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJhc2VWYWx1ZVN0b3JlQmFycmllcihFZGdlJiBi
YXNlRWRnZSwgRWRnZSYgdmFsdWVFZGdlKQogewogI2lmIEVOQUJMRShHR0MpCkBAIC0xOTIxLDcg
KzE1NTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdChOCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAg
Y2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwpAQCAtMjA2MCw3ICsxNjkw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlKiBubwogICAgIH0KICAg
ICAgICAgCiAgICAgY2FzZSBJbnQzMlVzZToKLSAgICBjYXNlIE51bWJlclVzZTogeworICAgIGNh
c2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gSW50MzJVc2UpIHsKICAgICAgICAgICAgIGJvb2wgaW52ZXJ0ID0gZmFsc2U7CiAgICAgICAg
ICAgICAKQEAgLTIxNTMsNiArMTc4Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6Cisg
ICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAg
IGluaXRDb25zdGFudEluZm8obm9kZSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0yNDAwLDI0ICsy
MDMyLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEludDMyVG9Eb3VibGU6IHsKLSAg
ICAgICAgY29tcGlsZUludDMyVG9Eb3VibGUobm9kZSk7CisgICAgY2FzZSBEb3VibGVSZXA6IHsK
KyAgICAgICAgY29tcGlsZURvdWJsZVJlcChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgICAgICAKLSAgICBjYXNlIEludDUyVG9WYWx1ZTogewotICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzLCBSZXVzZSwgb3BlcmFuZCk7Ci0gICAgICAgIG1faml0Lm1vdmUob3BlcmFuZC5n
cHIoKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCks
IG5vZGUpOworICAgIGNhc2UgVmFsdWVSZXA6IHsKKyAgICAgICAgY29tcGlsZVZhbHVlUmVwKG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50NTJUb0Rv
dWJsZTogewotICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJhbmQodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wZXJhbmQp
OwotICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKG9wZXJhbmQuZnByKCksIHJlc3VsdC5mcHIoKSk7
Ci0gICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOworICAgIGNhc2UgSW50
NTJSZXA6IHsKKyAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wZXJhbmQodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBv
cGVyYW5kKTsKKyAgICAgICAgCisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKG9wZXJh
bmQuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIAorICAgICAgICBzdHJpY3RJbnQ1MlJl
c3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAg
IApAQCAtMjQ4Niw3ICsyMTE3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAg
ICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgCkBAIC0y
NTI0LDcgKzIxNTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY2FzZSBO
dW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIFNw
ZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
ICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAx
NjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDggKzMzMiw2IEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBs
YW4gU3BlY3VsYXRpdmVKSVQ6OnMKICAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09IERh
dGFGb3JtYXRJbnQ1MikgewogICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkKICAgICAg
ICAgICAgIGZpbGxBY3Rpb24gPSBTZXRJbnQ1MkNvbnN0YW50OwotICAgICAgICBlbHNlIGlmIChp
c0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0
YUZvcm1hdEpTKQotICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQzMlBheWxvYWRDb252ZXJ0
VG9JbnQ1MjsKICAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3Jt
YXRJbnQ1MikKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CiAgICAgICAgIGVsc2Ug
aWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpCkBAIC0zNDEs
MTcgKzMzOSwxMiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAg
ICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkKICAg
ICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMgYW4g
aW50MzIgd2lsbCBuZXZlcgotICAgICAgICAgICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxsIChp
bW1lZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRvdWJsZSAodG8tZG91YmxlCi0gICAgICAgICAgICAv
LyBjb252ZXJzaW9ucyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9kZSkuCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2
NDsgLy8gTWFrZSBHQ0MgaGFwcHkuCiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHJlZ2lzdGVy
Rm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewogICAgICAgICBpZiAobm9kZS0+aGFz
Q29uc3RhbnQoKSkKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRTdHJpY3RJbnQ1MkNvbnN0
YW50OwotICAgICAgICBlbHNlIGlmIChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8fCBp
bmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKQotICAgICAgICAgICAgZmlsbEFjdGlv
biA9IExvYWQzMlBheWxvYWRTaWduRXh0ZW5kOwogICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxs
Rm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDUyKQogICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExv
YWQ2NFNoaWZ0SW50NTJSaWdodDsKICAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgp
ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKQEAgLTM1OSw5ICszNTIsNiBAQCBTaWxlbnRSZWdp
c3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAgIGVsc2UgaWYgKGluZm8uc3Bp
bGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBM
b2FkNjQ7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBl
bi4gQW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMgYW4gaW50MzIgd2lsbCBuZXZlcgotICAgICAg
ICAgICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBvciBh
IGRvdWJsZSAodG8tZG91YmxlCi0gICAgICAgICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZlIGEg
c2VwYXJhdGUgbm9kZSkuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsgLy8gTWFrZSBHQ0MgaGFwcHkuCiAg
ICAgICAgIH0KQEAgLTM3Niw5ICszNjYsNiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1
bGF0aXZlSklUOjpzCiAgICAgICAgIH0gZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERh
dGFGb3JtYXRJbnQzMikgewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ID09IERh
dGFGb3JtYXRKU0ludDMyKTsKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkMzJQYXlsb2Fk
Qm94SW50OwotICAgICAgICB9IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0RG91YmxlKSB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZv
cm1hdEpTRG91YmxlKTsKLSAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkRG91YmxlQm94RG91
YmxlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CiAj
ZWxzZQpAQCAtNDM0LDE0ICs0MjEsMTIgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxh
dGl2ZUpJVDo6cwogICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgIEFTU0VS
VChpc051bWJlckNvbnN0YW50KG5vZGUpKTsKICAgICAgICAgZmlsbEFjdGlvbiA9IFNldERvdWJs
ZUNvbnN0YW50OwotICAgIH0gZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpICE9IERhdGFGb3Jt
YXROb25lICYmIGluZm8uc3BpbGxGb3JtYXQoKSAhPSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAg
ICAgIC8vIGl0IHdhcyBhbHJlYWR5IHNwaWxsZWQgcHJldmlvdXNseSBhbmQgbm90IGFzIGEgZG91
YmxlLCB3aGljaCBtZWFucyB3ZSBuZWVkIHVuYm94aW5nLgotICAgICAgICBBU1NFUlQoaW5mby5z
cGlsbEZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgZmlsbEFjdGlvbiA9IExvYWRK
U1VuYm94RG91YmxlOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChp
bmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUgfHwgaW5mby5zcGlsbEZvcm1hdCgp
ID09IERhdGFGb3JtYXREb3VibGUpOwogICAgICAgICBmaWxsQWN0aW9uID0gTG9hZERvdWJsZTsK
KyAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIEFTU0VSVChpbmZvLnJlZ2lzdGVy
Rm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSB8fCBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0g
RGF0YUZvcm1hdEpTRG91YmxlKTsKKyAgICBBU1NFUlQoaW5mby5yZWdpc3RlckZvcm1hdCgpID09
IERhdGFGb3JtYXREb3VibGUpOwogICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKSB7CiAgICAg
ICAgIEFTU0VSVChpc051bWJlckNvbnN0YW50KG5vZGUpKTsKICAgICAgICAgZmlsbEFjdGlvbiA9
IFNldERvdWJsZUNvbnN0YW50OwpAQCAtNTI4LDE0ICs1MTMsNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxl
cjo6cGF5bG9hZEZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigp
KTsKICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocGxhbi5ncHIoKSwgcGxhbi5ncHIo
KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTG9hZERvdWJsZUJveERvdWJsZToKLSAgICAg
ICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0
dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwotICAgICAgICBtX2ppdC5zdWI2NChHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHBsYW4uZ3ByKCkpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIExvYWRKU1VuYm94RG91YmxlOgotICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgY2FuVHJhbXBs
ZSk7Ci0gICAgICAgIHVuYm94RG91YmxlKGNhblRyYW1wbGUsIHBsYW4uZnByKCkpOwotICAgICAg
ICBicmVhazsKICNlbHNlCiAgICAgY2FzZSBTZXRKU0NvbnN0YW50VGFnOgogICAgICAgICBtX2pp
dC5tb3ZlKEltbTMyKHZhbHVlT2ZKU0NvbnN0YW50KHBsYW4ubm9kZSgpKS50YWcoKSksIHBsYW4u
Z3ByKCkpOwpAQCAtMTAzOSw2ICsxMDE2LDI5IEBAIEdQUlRlbXBvcmFyeTo6R1BSVGVtcG9yYXJ5
KAogfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKK0pTVmFsdWVSZWdzVGVtcG9yYXJ5
OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeSgpIHsgfQorCitKU1ZhbHVlUmVnc1RlbXBvcmFyeTo6SlNW
YWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqIGppdCkKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIDogbV9ncHIoaml0KQorI2Vsc2UKKyAgICA6IG1fcGF5bG9hZEdQUihqaXQpCisgICAg
LCBtX3RhZ0dQUihqaXQpCisjZW5kaWYKK3sKK30KKworSlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6On5K
U1ZhbHVlUmVnc1RlbXBvcmFyeSgpIHsgfQorCitKU1ZhbHVlUmVncyBKU1ZhbHVlUmVnc1RlbXBv
cmFyeTo6cmVncygpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gSlNWYWx1ZVJl
Z3MobV9ncHIuZ3ByKCkpOworI2Vsc2UKKyAgICByZXR1cm4gSlNWYWx1ZVJlZ3MobV90YWdHUFIu
Z3ByKCksIG1fcGF5bG9hZEdQUi5ncHIoKSk7CisjZW5kaWYKK30KKwogdm9pZCBHUFJUZW1wb3Jh
cnk6OmFkb3B0KEdQUlRlbXBvcmFyeSYgb3RoZXIpCiB7CiAgICAgQVNTRVJUKCFtX2ppdCk7CkBA
IC0xMjU4LDEwICsxMjU4LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9s
ZUJyYW4KICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAg
ICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25k
aXRpb24pOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUludDUy
QnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CiAjZW5kaWYgLy8gVVNFKEpTVkFM
VUU2NCkKLSAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkp
CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpKQog
ICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUs
IGRvdWJsZUNvbmRpdGlvbik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQ29tcGFy
ZUVxKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkg
fHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkgewpAQCAtMTgxNywxNiAr
MTgxNywxMyBAQCBHZW5lcmF0ZWRPcGVyYW5kVHlwZSBTcGVjdWxhdGl2ZUpJVDo6Y2hlCiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTOgogICAgIGNhc2Ug
RGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAgICAg
ICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRKU1ZhbHVlOwogCiAgICAgY2FzZSBEYXRhRm9ybWF0
SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICAgICAgcmV0dXJuIEdlbmVy
YXRlZE9wZXJhbmRJbnRlZ2VyOwogCi0gICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0gICAg
Y2FzZSBEYXRhRm9ybWF0RG91YmxlOgotICAgICAgICByZXR1cm4gR2VuZXJhdGVkT3BlcmFuZERv
dWJsZTsKLSAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRUeXBlVW5rbm93bjsK
QEAgLTE4NDUsNyArMTg0Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRv
SW50MzIKICAgICB9CiAgICAgICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY2FzZSBNYWNo
aW5lSW50VXNlOiB7CisgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICBTcGVjdWxhdGVT
dHJpY3RJbnQ1Mk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsKICAgICAgICAgR1BSUmVnIG9wMUdQ
UiA9IG9wMS5ncHIoKTsKQEAgLTE4NTUsNiArMTg1MiwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVmFsdWVUb0ludDMyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8g
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgCisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgU3BlY3VsYXRlRG91YmxlT3Bl
cmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBGUFJSZWcgZnByID0gb3Ax
LmZwcigpOworICAgICAgICBHUFJSZWcgZ3ByID0gcmVzdWx0LmdwcigpOworICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBub3RUcnVuY2F0ZWRUb0ludGVnZXIgPSBtX2ppdC5icmFuY2hUcnVuY2F0
ZURvdWJsZVRvSW50MzIoZnByLCBncHIsIEpJVENvbXBpbGVyOjpCcmFuY2hJZlRydW5jYXRlRmFp
bGVkKTsKKyAgICAgICAgCisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChub3RUcnVuY2F0ZWRUb0ludGVnZXIsIHRoaXMsIHRvSW50MzIsIGdwciwgZnByKSk7CisgICAg
ICAgIAorICAgICAgICBpbnQzMlJlc3VsdChncHIsIG5vZGUpOworICAgICAgICByZXR1cm47Cisg
ICAgfQogICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgTm90Q2VsbFVzZTogewpA
QCAtMTg2NiwxOCArMTg3Niw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRv
SW50MzIKICAgICAgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSwgb3AxLmZv
cm1hdCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBjYXNlIEdl
bmVyYXRlZE9wZXJhbmREb3VibGU6IHsKLSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgICAgIEZQUlJl
ZyBmcHIgPSBvcDEuZnByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gcmVzdWx0Lmdwcigp
OwotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90VHJ1bmNhdGVkVG9JbnRlZ2VyID0g
bV9qaXQuYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKGZwciwgZ3ByLCBKSVRDb21waWxlcjo6
QnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChub3RUcnVuY2F0ZWRUb0ludGVnZXIsIHRoaXMs
IHRvSW50MzIsIGdwciwgZnByKSk7Ci0KLSAgICAgICAgICAgIGludDMyUmVzdWx0KGdwciwgbm9k
ZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBHZW5lcmF0
ZWRPcGVyYW5kSlNWYWx1ZTogewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
KTsKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMjA2Niw3MCArMjA2NCwxMzEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUFzSW50MwogICAgIGludDMyUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91Ymxl
KE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKE5vZGUq
IG5vZGUpCiB7Ci0gICAgQVNTRVJUKCFpc0ludDMyQ29uc3RhbnQobm9kZS0+Y2hpbGQxKCkubm9k
ZSgpKSk7IC8vIFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBjb25zdGFudCBmb2xkZWQuCisgICAgc3dp
dGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIE51bWJlclVzZTogewor
ICAgICAgICBBU1NFUlQoIWlzTnVtYmVyQ29uc3RhbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpKSk7
IC8vIFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBjb25zdGFudCBmb2xkZWQuCiAgICAgCi0gICAgaWYg
KGlzSW50MzJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlw
ZSkpIHsKLSAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGls
ZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgRlBSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxLmdwcigp
LCByZXN1bHQuZnByKCkpOwotICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2Rl
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlv
bihtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkpIHsKKyAgICAgICAgICAg
IFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OworICAgICAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxLmdwcigpLCByZXN1
bHQuZnByKCkpOworICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAKLSAgICBKU1ZhbHVlT3BlcmFu
ZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0g
ICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAg
ICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRo
aXMpOwogCi0gICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKLSAgICBHUFJSZWcgdGVtcEdQ
UiA9IHRlbXAuZ3ByKCk7Ci0gICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKKyAg
ICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIg
PSB0ZW1wLmdwcigpOworICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigpOwog
ICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDY0KAot
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcDFHUFIsIEdQUkluZm86OnRh
Z1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdl
ciA9IG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JF
cXVhbCwgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogICAgIAotICAg
IGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIpKSB7Ci0g
ICAgICAgIHR5cGVDaGVjaygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUt
PmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2
NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIpKTsKLSAgICB9CisgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEo
KSwgU3BlY0J5dGVjb2RlTnVtYmVyKSkgeworICAgICAgICAgICAgdHlwZUNoZWNrKAorICAgICAg
ICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjQnl0ZWNv
ZGVOdW1iZXIsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1i
bGVyOjpaZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAg
ICAgICB9CiAgICAgCi0gICAgbV9qaXQubW92ZShvcDFHUFIsIHRlbXBHUFIpOwotICAgIHVuYm94
RG91YmxlKHRlbXBHUFIsIHJlc3VsdEZQUik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9
IG1faml0Lmp1bXAoKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHRlbXBHUFIpOworICAg
ICAgICB1bmJveERvdWJsZSh0ZW1wR1BSLCByZXN1bHRGUFIpOworICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgIAotICAgIGlzSW50ZWdlci5saW5rKCZt
X2ppdCk7Ci0gICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxR1BSLCByZXN1bHRGUFIp
OwotICAgIGRvbmUubGluaygmbV9qaXQpOwotI2Vsc2UKLSAgICBGUFJUZW1wb3JhcnkgdGVtcCh0
aGlzKTsKKyAgICAgICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsKKyAgICAgICAgbV9qaXQuY29u
dmVydEludDMyVG9Eb3VibGUob3AxR1BSLCByZXN1bHRGUFIpOworICAgICAgICBkb25lLmxpbmso
Jm1faml0KTsKKyNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpIC0+IHRoaXMgaXMgdGhlIDMyXzY0IGNh
c2UKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgCi0gICAgR1BSUmVnIG9w
MVRhZ0dQUiA9IG9wMS50YWdHUFIoKTsKLSAgICBHUFJSZWcgb3AxUGF5bG9hZEdQUiA9IG9wMS5w
YXlsb2FkR1BSKCk7Ci0gICAgRlBSUmVnIHRlbXBGUFIgPSB0ZW1wLmZwcigpOwotICAgIEZQUlJl
ZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CisgICAgICAgIEdQUlJlZyBvcDFUYWdHUFIgPSBv
cDEudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyBvcDFQYXlsb2FkR1BSID0gb3AxLnBheWxvYWRH
UFIoKTsKKyAgICAgICAgRlBSUmVnIHRlbXBGUFIgPSB0ZW1wLmZwcigpOworICAgICAgICBGUFJS
ZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigpOwogICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1w
IGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CisgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpJbnQzMlRhZykpOwogICAgIAotICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEo
KSwgU3BlY0Z1bGxOdW1iZXIpKSB7Ci0gICAgICAgIHR5cGVDaGVjaygKLSAgICAgICAgICAgIEpT
VmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVj
RnVsbE51bWJlciwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZU9yRXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykp
KTsKLSAgICB9CisgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3Bl
Y0J5dGVjb2RlTnVtYmVyKSkgeworICAgICAgICAgICAgdHlwZUNoZWNrKAorICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgp
LCBTcGVjQnl0ZWNvZGVOdW1iZXIsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6TG93ZXN0VGFnKSkpOworICAgICAgICB9CiAgICAgCi0gICAgdW5ib3hEb3VibGUob3AxVGFn
R1BSLCBvcDFQYXlsb2FkR1BSLCByZXN1bHRGUFIsIHRlbXBGUFIpOwotICAgIEpJVENvbXBpbGVy
OjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgIHVuYm94RG91YmxlKG9wMVRhZ0dQ
Uiwgb3AxUGF5bG9hZEdQUiwgcmVzdWx0RlBSLCB0ZW1wRlBSKTsKKyAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAKLSAgICBpc0ludGVnZXIubGluaygm
bV9qaXQpOwotICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMVBheWxvYWRHUFIsIHJl
c3VsdEZQUik7Ci0gICAgZG9uZS5saW5rKCZtX2ppdCk7Ci0jZW5kaWYKKyAgICAgICAgaXNJbnRl
Z2VyLmxpbmsoJm1faml0KTsKKyAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3Ax
UGF5bG9hZEdQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisjZW5k
aWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAKLSAgICBkb3VibGVSZXN1bHQocmVzdWx0RlBSLCBu
b2RlKTsKKyAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdEZQUiwgbm9kZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBJbnQ1
MlJlcFVzZTogeworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwor
ICAgICAgICAKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAgICAg
IEZQUlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CisKKyAgICAgICAgbV9qaXQuY29udmVy
dEludDY0VG9Eb3VibGUodmFsdWVHUFIsIHJlc3VsdEZQUik7CisgICAgICAgIAorICAgICAgICBk
b3VibGVSZXN1bHQocmVzdWx0RlBSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorICAgICAgICAKKyAgICBkZWZhdWx0OgorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorfQor
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVSZXAoTm9kZSogbm9kZSkKK3sKKyAg
ICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNhc2UgRG91YmxlUmVw
VXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7Cisg
ICAgICAgIAorICAgICAgICBGUFJSZWcgdmFsdWVGUFIgPSB2YWx1ZS5mcHIoKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgICAgIAorICAgICAg
ICBib3hEb3VibGUodmFsdWVGUFIsIHJlc3VsdFJlZ3MpOworICAgICAgICAKKyAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAg
ICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIAorICAgICAg
ICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgCisgICAgICAgIGJveEludDUyKHZhbHVlR1BSLCBy
ZXN1bHRHUFIsIERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7CisgICAgICAgIAorICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYgLy8gVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIH0KIAog
c3RhdGljIGRvdWJsZSBjbGFtcERvdWJsZVRvQnl0ZShkb3VibGUgZCkKQEAgLTIzMjAsNyArMjM3
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckkKICAgICAgICAg
fQogICAgICAgICAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgY2FzZSBNYWNoaW5l
SW50VXNlOiB7CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAgICAgICAgICAgIFNwZWN1
bGF0ZVN0cmljdEludDUyT3BlcmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNlKTsKICAgICAgICAg
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICAgICAgR1BSUmVnIHNjcmF0
Y2hSZWcgPSBzY3JhdGNoLmdwcigpOwpAQCAtMjM0NCw3ICsyNDAzLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySQogICAgICAgICB9CiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAg
ICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkg
ewogICAgICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50U2l6ZSh0eXBlKSA9PSAxKTsKICAgICAg
ICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVVc2Up
OwpAQCAtMjQ0MCwxMCArMjQ5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbE9uRmwKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAg
ICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90TmFOID0gbV9qaXQuYnJhbmNoRG91Ymxl
KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbCwgcmVzdWx0UmVnLCByZXN1bHRSZWcpOwotICAg
IHN0YXRpYyBjb25zdCBkb3VibGUgTmFOID0gUU5hTjsKLSAgICBtX2ppdC5sb2FkRG91YmxlKCZO
YU4sIHJlc3VsdFJlZyk7Ci0gICAgbm90TmFOLmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5zYW5p
dGl6ZURvdWJsZShyZXN1bHRSZWcpOwogICAgIAogICAgIGRvdWJsZVJlc3VsdChyZXN1bHRSZWcs
IG5vZGUpOwogfQpAQCAtMjY0MSw3ICsyNjk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFkZChOb2RlKiBubwogICAgIH0KICAgICAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAg
IEFTU0VSVChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAgICAgICAg
IEFTU0VSVCghc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhNb2RlKCkpKTsKIApA
QCAtMjY3MCw3ICsyNzI2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFkZChOb2Rl
KiBubwogICAgIH0KICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgIAotICAgIGNhc2UgTnVt
YmVyVXNlOiB7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91
YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVE
b3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEZQUlRlbXBv
cmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIpOwpAQCAtMjgwNyw3ICsyODYzLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZAogICAgIH0KICAgICAgICAgCiAjaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICBjYXNlIEludDUy
UmVwVXNlOiB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRo
TW9kZSgpKSk7CiAgICAgICAgIEFTU0VSVCghc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+
YXJpdGhNb2RlKCkpKTsKIApAQCAtMjgzNiw3ICsyODkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUFyaXRoU3ViKE5vZAogICAgIH0KICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQog
Ci0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwpAQCAtMjg4MSw3ICsyOTM3LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKAogICAgIH0KIAogI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgY2FzZSBJbnQ1
MlJlcFVzZTogewogICAgICAgICBBU1NFUlQoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0
aE1vZGUoKSkpOwogICAgICAgICAKICAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1MikpIHsKQEAgLTI5MTgsNyArMjk3NCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSgKICAgICB9CiAjZW5kaWYg
Ly8gVVNFKEpTVkFMVUU2NCkKICAgICAgICAgCi0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICBj
YXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CiAgICAgICAgIApAQCAtMjk2OSw3ICszMDI1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFyaXRoTXVsKE5vZAogICAgIH0KICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KSAgIAotICAg
IGNhc2UgTWFjaGluZUludFVzZTogeworICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAgICAgICAg
QVNTRVJUKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKTsKICAgICAgICAg
CiAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgY2xldmVyLiBXZSB3YW50IHRvIGRvIGFuIGludDUy
IG11bHRpcGxpY2F0aW9uIGFuZCBjaGVjayB0aGUKQEAgLTMwMjYsNyArMzA4Miw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE11bChOb2QKICAgICB9CiAjZW5kaWYgLy8gVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgCi0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNlIERv
dWJsZVJlcFVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEs
IG9wMik7CkBAIC0zMTkwLDcgKzMyNDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJpdGhEaXYoTm9kCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBO
dW1iZXJVc2U6IHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICBTcGVjdWxhdGVE
b3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0
ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgRlBSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwpAQCAtMzQ5NSw3ICszNTUxLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKE5vZAogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgICAgICAKLSAgICBjYXNlIE51bWJlclVzZTogeworICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7
CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICAKQEAgLTM1MzAsMTMgKzM1ODYsMTMgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGFyZShOb2RlKiBub2RlLAogICAgIH0KICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsKKyAgICBpZiAo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICBjb21waWxlSW50
NTJDb21wYXJlKG5vZGUsIGNvbmRpdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKE51bWJlclVzZSkpIHsKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJs
ZVJlcFVzZSkpIHsKICAgICAgICAgY29tcGlsZURvdWJsZUNvbXBhcmUobm9kZSwgZG91YmxlQ29u
ZGl0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTM2MTAsNyArMzY2Niw3
IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2QKICAgICB9CiAgICAg
CiAjaWYgVVNFKEpTVkFMVUU2NCkgICAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1h
Y2hpbmVJbnRVc2UpKSB7CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVz
ZSkpIHsKICAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhv
bGVCcmFuY2goKTsKICAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAhPSBVSU5UX01BWCkg
ewogICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4
SW5CbG9jayk7CkBAIC0zNjI2LDcgKzM2ODIsNyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlU3RyaWN0RXEoTm9kCiAgICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKLSAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsKKyAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkpIHsKICAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5k
ZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYgKGJyYW5jaElu
ZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgewogICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9
IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CkBAIC00NDg3LDM2ICs0NTQzLDM3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUludDMyKEVkZ2UKICAgICAoU3BlY3VsYXRl
SW50MzJPcGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlTWFjaGluZUludChFZGdlIGVkZ2UpCi17Ci0jaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNNYWNoaW5lSW50KSkKLSAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIChTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQodGhpcywg
ZWRnZSkpLmdwcigpOwotI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKLSAgICBVTlVTRURfUEFSQU0o
ZWRnZSk7Ci0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTnVtYmVyKEVkZ2Ug
ZWRnZSkKIHsKLSAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNGdWxsTnVtYmVyKSkK
KyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNCeXRlY29kZU51bWJlcikpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICAoU3BlY3VsYXRlRG91YmxlT3BlcmFuZCh0aGlzLCBlZGdl
KSkuZnByKCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgZWRnZSwgTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEdQUlJlZyBncHIgPSB2
YWx1ZS5ncHIoKTsKKyAgICB0eXBlQ2hlY2soCisgICAgICAgIEpTVmFsdWVSZWdzKGdwciksIGVk
Z2UsIFNwZWNCeXRlY29kZU51bWJlciwKKyAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3Jv
QXNzZW1ibGVyOjpaZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwor
I2Vsc2UKKyAgICBHUFJSZWcgdGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CisgICAgREZHX1RZUEVf
Q0hFQ0soCisgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksIGVkZ2UsIH5TcGVjSW50MzIsCisg
ICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdGFnR1BSLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAgREZHX1RZUEVfQ0hFQ0soCisgICAg
ICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksIGVkZ2UsIFNwZWNCeXRlY29kZU51bWJlciwKKyAgICAg
ICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdGFnR1BSLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOworI2VuZGlmCiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRnZSBlZGdlKQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlRG91YmxlUmVhbChFZGdlIGVkZ2UpCiB7Ci0gICAgaWYgKCFuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIpKQorICAgIGlmICghbmVlZHNUeXBl
Q2hlY2soZWRnZSwgU3BlY0RvdWJsZVJlYWwpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
U3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwogICAgIEZQUlJlZyBm
cHIgPSBvcGVyYW5kLmZwcigpOwotICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVl
UmVncygpLCBlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCisgICAgdHlwZUNoZWNrKAorICAgICAg
ICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjRG91YmxlUmVhbCwKICAgICAgICAgbV9qaXQuYnJh
bmNoRG91YmxlKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JV
bm9yZGVyZWQsIGZwciwgZnByKSk7CiB9CkBAIC00NzY4LDggKzQ4MjUsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogICAgIGNhc2UgS25vd25JbnQzMlVzZToK
ICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50MzIpKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgQVNTRVJUKCFuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbE51bWJlcikpOworICAgIGNhc2UgRG91YmxlUmVwVXNl
OgorICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNEb3VibGUpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgQVNTRVJUKCFuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjTWFjaGluZUludCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEtub3duQ2VsbFVzZToKICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBT
cGVjQ2VsbCkpOwpAQCAtNDc4MCwxNSArNDg0MCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGUoTm9kZSosIEVkCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgc3BlY3VsYXRl
SW50MzIoZWRnZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWFjaGluZUludFVzZToKLSAg
ICAgICAgc3BlY3VsYXRlTWFjaGluZUludChlZGdlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBSZWFsTnVtYmVyVXNlOgotICAgICAgICBzcGVjdWxhdGVSZWFsTnVtYmVyKGVkZ2UpOwotICAg
ICAgICBicmVhazsKICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgc3BlY3VsYXRlTnVtYmVy
KGVkZ2UpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAg
ICAgIHNwZWN1bGF0ZURvdWJsZVJlYWwoZWRnZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Qm9vbGVhblVzZToKICAgICAgICAgc3BlY3VsYXRlQm9vbGVhbihlZGdlKTsKICAgICAgICAgYnJl
YWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgU3Bl
Y3VsYXRlRG91YmxlT3BlcmFuZDsKIGNsYXNzIFNwZWN1bGF0ZUNlbGxPcGVyYW5kOwogY2xhc3Mg
U3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ7CiAKLWVudW0gR2VuZXJhdGVkT3BlcmFuZFR5cGUgeyBH
ZW5lcmF0ZWRPcGVyYW5kVHlwZVVua25vd24sIEdlbmVyYXRlZE9wZXJhbmRJbnRlZ2VyLCBHZW5l
cmF0ZWRPcGVyYW5kRG91YmxlLCBHZW5lcmF0ZWRPcGVyYW5kSlNWYWx1ZX07CitlbnVtIEdlbmVy
YXRlZE9wZXJhbmRUeXBlIHsgR2VuZXJhdGVkT3BlcmFuZFR5cGVVbmtub3duLCBHZW5lcmF0ZWRP
cGVyYW5kSW50ZWdlciwgR2VuZXJhdGVkT3BlcmFuZEpTVmFsdWV9OwogCiBpbmxpbmUgR1BSUmVn
IGV4dHJhY3RSZXN1bHQoR1BSUmVnIHJlc3VsdCkgeyByZXR1cm4gcmVzdWx0OyB9CiAjaWYgVVNF
KEpTVkFMVUU2NCkKQEAgLTQ1OSw2ICs0NTksMTAgQEAgcHVibGljOgogICAgICAgICBtX2ppdC51
bmJveERvdWJsZSh0YWdHUFIsIHBheWxvYWRHUFIsIGZwciwgc2NyYXRjaEZQUik7CiAgICAgfQog
I2VuZGlmCisgICAgdm9pZCBib3hEb3VibGUoRlBSUmVnIGZwciwgSlNWYWx1ZVJlZ3MgcmVncykK
KyAgICB7CisgICAgICAgIG1faml0LmJveERvdWJsZShmcHIsIHJlZ3MpOworICAgIH0KIAogICAg
IC8vIFNwaWxsIGEgVmlydHVhbFJlZ2lzdGVyIHRvIHRoZSBKU1N0YWNrLgogICAgIHZvaWQgc3Bp
bGwoVmlydHVhbFJlZ2lzdGVyIHNwaWxsTWUpCkBAIC05MjUsNiArOTI5LDE0IEBAIHB1YmxpYzoK
ICAgICAgICAganNWYWx1ZVJlc3VsdCh0YWcsIHBheWxvYWQsIG5vZGUsIERhdGFGb3JtYXRKUywg
bW9kZSk7CiAgICAgfQogI2VuZGlmCisgICAgdm9pZCBqc1ZhbHVlUmVzdWx0KEpTVmFsdWVSZWdz
IHJlZ3MsIE5vZGUqIG5vZGUsIERhdGFGb3JtYXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTLCBVc2VD
aGlsZHJlbk1vZGUgbW9kZSA9IENhbGxVc2VDaGlsZHJlbikKKyAgICB7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZWdzLmdwcigpLCBub2RlLCBmb3JtYXQsIG1v
ZGUpOworI2Vsc2UKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZWdzLnRhZ0dQUigpLCByZWdzLnBh
eWxvYWRHUFIoKSwgbm9kZSwgZm9ybWF0LCBtb2RlKTsKKyNlbmRpZgorICAgIH0KICAgICB2b2lk
IHN0b3JhZ2VSZXN1bHQoR1BSUmVnIHJlZywgTm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5Nb2RlIG1v
ZGUgPSBDYWxsVXNlQ2hpbGRyZW4pCiAgICAgewogICAgICAgICBpZiAobW9kZSA9PSBDYWxsVXNl
Q2hpbGRyZW4pCkBAIC0yMDgwLDEwICsyMDkyLDEyIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lk
IGNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKik7CiAgICAgCisgICAgdm9pZCBjb21waWxlVmFs
dWVSZXAoTm9kZSopOworICAgIHZvaWQgY29tcGlsZURvdWJsZVJlcChOb2RlKik7CisgICAgCiAg
ICAgdm9pZCBjb21waWxlVmFsdWVUb0ludDMyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVVSW50
MzJUb051bWJlcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlRG91YmxlQXNJbnQzMihOb2RlKik7
Ci0gICAgdm9pZCBjb21waWxlSW50MzJUb0RvdWJsZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
QWRkKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVNYWtlUm9wZShOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlQXJpdGhTdWIoTm9kZSopOwpAQCAtMjE4NSwxMiArMjE5OSw2IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUq
LCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOwogCi0jaWYgVVNFKEpT
VkFMVUU2NCkgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgY29udmVydFRvRG91YmxlKEdQUlJlZyB2
YWx1ZSwgRlBSUmVnIHJlc3VsdCwgR1BSUmVnIHRtcCk7Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0
KQotICAgIEpJVENvbXBpbGVyOjpKdW1wIGNvbnZlcnRUb0RvdWJsZShKU1ZhbHVlT3BlcmFuZCYs
IEZQUlJlZyByZXN1bHQpOwotI2VuZGlmCi0gICAgCiAgICAgLy8gQWRkIGEgc3BlY3VsYXRpb24g
Y2hlY2suCiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNl
LCBOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCk7CiAgICAgdm9pZCBzcGVj
dWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBOb2RlKiwgY29uc3QgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wc1RvRmFpbCk7CkBAIC0yMjE3LDcgKzIyMjUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzcGVjdWxhdGVJbnQzMihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0
ZU1hY2hpbmVJbnQoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVOdW1iZXIoRWRnZSk7Ci0gICAg
dm9pZCBzcGVjdWxhdGVSZWFsTnVtYmVyKEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlRG91Ymxl
UmVhbChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CiAgICAgdm9pZCBz
cGVjdWxhdGVDZWxsKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0KEVkZ2UpOwpAQCAt
MjU2NSw2ICsyNTczLDIzIEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwogfTsKIAorY2xh
c3MgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgeworcHVibGljOgorICAgIEpTVmFsdWVSZWdzVGVtcG9y
YXJ5KCk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqKTsKKyAgICB+
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoKTsKKyAgICAKKyAgICBKU1ZhbHVlUmVncyByZWdzKCk7CisK
K3ByaXZhdGU6CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBHUFJUZW1wb3JhcnkgbV9ncHI7Cisj
ZWxzZQorICAgIEdQUlRlbXBvcmFyeSBtX3BheWxvYWRHUFI7CisgICAgR1BSVGVtcG9yYXJ5IG1f
dGFnR1BSOworI2VuZGlmCit9OworCiBjbGFzcyBGUFJUZW1wb3JhcnkgewogcHVibGljOgogICAg
IEZQUlRlbXBvcmFyeShTcGVjdWxhdGl2ZUpJVCopOwpAQCAtMjc1NCwxMiArMjc3OSwxMiBAQCBw
cml2YXRlOgogLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVmdC1z
aGlmdGVkIGJ5IDE2LCBsb3cgYml0cyB6ZXJvKS4KIGNsYXNzIFNwZWN1bGF0ZUludDUyT3BlcmFu
ZCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU3BlY3VsYXRlSW50NTJPcGVyYW5kKFNwZWN1bGF0
aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUludDUyT3Bl
cmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UpCiAgICAgICAgIDogbV9qaXQoaml0
KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFs
aWRHUFJSZWcpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2Up
OworICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7
CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsK
ICAgICB9CkBAIC0yODAxLDEyICsyODI2LDEyIEBAIHByaXZhdGU6CiAvLyBHaXZlcyB5b3UgYSBz
dHJpY3QgSW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdo
IDE2IGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NTJP
cGVyYW5kIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJh
bmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2Rl
IG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgZXhwbGljaXQgU3BlY3Vs
YXRlU3RyaWN0SW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSkKICAg
ICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAgICAgICwgbV9n
cHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQo
bW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkg
PT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgp
ID09IEludDUyUmVwVXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKICAg
ICAgICAgICAgIGdwcigpOwogICAgIH0KQEAgLTI4NDksMzUgKzI4NzQsMzUgQEAgZW51bSBPcHBv
c2l0ZVNoaWZ0VGFnIHsgT3Bwb3NpdGVTaGlmdCB9OwogCiBjbGFzcyBTcGVjdWxhdGVXaGljaGV2
ZXJJbnQ1Mk9wZXJhbmQgewogcHVibGljOgotICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZl
ckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVj
dWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBleHBs
aWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwg
RWRnZSBlZGdlKQogICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkK
ICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQogICAgICAgICAsIG1fc3Ry
aWN0KGppdC0+YmV0dGVyVXNlU3RyaWN0SW50NTIoZWRnZSkpCiAgICAgewotICAgICAgICBBU1NF
UlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2Uu
dXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdl
LnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5v
ZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQgU3Bl
Y3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRn
ZSwgY29uc3QgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNw
ZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4
cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0
LCBFZGdlIGVkZ2UsIGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCYgb3RoZXIp
CiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAs
IG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgICAgICwgbV9zdHJpY3Qob3RoZXIu
bV9zdHJpY3QpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2Up
OworICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7
CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsK
ICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5k
KFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3Bwb3NpdGVTaGlmdFRhZywgY29uc3Qg
U3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9u
TW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNw
ZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVk
Z2UsIE9wcG9zaXRlU2hpZnRUYWcsIGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFu
ZCYgb3RoZXIpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fZWRnZShlZGdlKQog
ICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgICAgICwgbV9zdHJp
Y3QoIW90aGVyLm1fc3RyaWN0KQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBt
b2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNo
aW5lSW50VXNlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gSW50
NTJSZXBVc2UpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQogICAgICAgICAg
ICAgZ3ByKCk7CiAgICAgfQpAQCAtMjkyNiwxMyArMjk1MSwxMyBAQCBwcml2YXRlOgogCiBjbGFz
cyBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNw
ZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4
cGxpY2l0IFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBl
ZGdlKQogICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkKICAgICAg
ICAgLCBtX2Zwck9ySW52YWxpZChJbnZhbGlkRlBSUmVnKQogICAgIHsKICAgICAgICAgQVNTRVJU
KG1faml0KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbiB8fCBpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOwogICAgICAgICBpZiAoaml0LT5p
c0ZpbGxlZChub2RlKCkpKQogICAgICAgICAgICAgZnByKCk7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NiwxNyArNDYsMTcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVz
ZQogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAgb3V0LnByaW50KCJLbm93bkludDMy
Iik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWFjaGluZUludFVzZToKLSAgICAgICAgb3V0
LnByaW50KCJNYWNoaW5lSW50Iik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbE51bWJl
clVzZToKLSAgICAgICAgb3V0LnByaW50KCJSZWFsTnVtYmVyIik7CisgICAgY2FzZSBJbnQ1MlJl
cFVzZToKKyAgICAgICAgb3V0LnByaW50KCJJbnQ1MlJlcCIpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE51bWJlclVzZToKICAgICAgICAgb3V0LnByaW50KCJOdW1iZXIiKTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgb3V0LnByaW50KCJLbm93
bk51bWJlciIpOworICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBvdXQucHJpbnQoIkRv
dWJsZVJlcCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6Cisg
ICAgICAgIG91dC5wcmludCgiRG91YmxlUmVwUmVhbCIpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIG91dC5wcmludCgiQm9vbGVhbiIpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR05vZGVG
bGFncy5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+CiAKQEAgLTM3LDEwICszOCwxMCBAQCBlbnVtIFVzZUtpbmQgewogICAgIFVudHlw
ZWRVc2UsCiAgICAgSW50MzJVc2UsCiAgICAgS25vd25JbnQzMlVzZSwKLSAgICBNYWNoaW5lSW50
VXNlLAotICAgIFJlYWxOdW1iZXJVc2UsCisgICAgSW50NTJSZXBVc2UsCiAgICAgTnVtYmVyVXNl
LAotICAgIEtub3duTnVtYmVyVXNlLAorICAgIERvdWJsZVJlcFVzZSwKKyAgICBEb3VibGVSZXBS
ZWFsVXNlLAogICAgIEJvb2xlYW5Vc2UsCiAgICAgQ2VsbFVzZSwKICAgICBLbm93bkNlbGxVc2Us
CkBAIC01OSw3ICs2MCw3IEBAIGVudW0gVXNlS2luZCB7CiAgICAgTGFzdFVzZUtpbmQgLy8gTXVz
dCBhbHdheXMgYmUgdGhlIGxhc3QgZW50cnkgaW4gdGhlIGVudW0sIGFzIGl0IGlzIHVzZWQgdG8g
ZGVub3RlIHRoZSBudW1iZXIgb2YgZW51bSBlbGVtZW50cy4KIH07CiAKLUFMV0FZU19JTkxJTkUg
U3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVzZUtpbmQpCitpbmxpbmUgU3Bl
Y3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVzZUtpbmQpCiB7CiAgICAgc3dpdGNo
ICh1c2VLaW5kKSB7CiAgICAgY2FzZSBVbnR5cGVkVXNlOgpAQCAtNjcsMTMgKzY4LDE0IEBAIEFM
V0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckYKICAgICBjYXNlIEludDMyVXNl
OgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKLSAg
ICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgcmV0
dXJuIFNwZWNNYWNoaW5lSW50OwotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgcmV0
dXJuIFNwZWNGdWxsUmVhbE51bWJlcjsKICAgICBjYXNlIE51bWJlclVzZToKLSAgICBjYXNlIEtu
b3duTnVtYmVyVXNlOgotICAgICAgICByZXR1cm4gU3BlY0Z1bGxOdW1iZXI7CisgICAgICAgIHJl
dHVybiBTcGVjQnl0ZWNvZGVOdW1iZXI7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAg
IHJldHVybiBTcGVjRG91YmxlOworICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICAgICAg
cmV0dXJuIFNwZWNEb3VibGVSZWFsOwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgcmV0
dXJuIFNwZWNCb29sZWFuOwogICAgIGNhc2UgQ2VsbFVzZToKQEAgLTEwOCw1MyArMTEwLDUzIEBA
IEFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckYKICAgICB9CiB9CiAKLUFM
V0FZU19JTkxJTkUgYm9vbCBzaG91bGROb3RIYXZlVHlwZUNoZWNrKFVzZUtpbmQga2luZCkKK2lu
bGluZSBib29sIHNob3VsZE5vdEhhdmVUeXBlQ2hlY2soVXNlS2luZCBraW5kKQogewogICAgIHN3
aXRjaCAoa2luZCkgewogICAgIGNhc2UgVW50eXBlZFVzZToKICAgICBjYXNlIEtub3duSW50MzJV
c2U6Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAg
ICBjYXNlIEtub3duU3RyaW5nVXNlOgorICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgY2FzZSBE
b3VibGVSZXBVc2U6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBtYXlIYXZlVHlw
ZUNoZWNrKFVzZUtpbmQga2luZCkKK2lubGluZSBib29sIG1heUhhdmVUeXBlQ2hlY2soVXNlS2lu
ZCBraW5kKQogewogICAgIHJldHVybiAhc2hvdWxkTm90SGF2ZVR5cGVDaGVjayhraW5kKTsKIH0K
IAotQUxXQVlTX0lOTElORSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQga2luZCkKK2lubGluZSBi
b29sIGlzTnVtZXJpY2FsKFVzZUtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAg
ICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKLSAgICBjYXNlIE1hY2hp
bmVJbnRVc2U6Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgIGNhc2UgTnVtYmVyVXNlOgot
ICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICBjYXNl
IERvdWJsZVJlcFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAK
LUFMV0FZU19JTkxJTkUgYm9vbCBpc0RvdWJsZShVc2VLaW5kIGtpbmQpCitpbmxpbmUgYm9vbCBp
c0RvdWJsZShVc2VLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBS
ZWFsTnVtYmVyVXNlOgotICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgS25vd25OdW1iZXJV
c2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgaXNDZWxsKFVzZUtpbmQga2luZCkKK2lu
bGluZSBib29sIGlzQ2VsbChVc2VLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CiAg
ICAgY2FzZSBDZWxsVXNlOgpAQCAtMTc0LDcgKzE3Niw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBp
c0NlbGwoVXNlS2luZCBraW5kKQogCiAvLyBSZXR1cm5zIHRydWUgaWYgaXQgdXNlcyBzdHJ1Y3R1
cmUgaW4gYSB3YXkgdGhhdCBjb3VsZCBiZSBjbG9iYmVyZWQgYnkKIC8vIHRoaW5ncyB0aGF0IGNo
YW5nZSB0aGUgc3RydWN0dXJlLgotQUxXQVlTX0lOTElORSBib29sIHVzZXNTdHJ1Y3R1cmUoVXNl
S2luZCBraW5kKQoraW5saW5lIGJvb2wgdXNlc1N0cnVjdHVyZShVc2VLaW5kIGtpbmQpCiB7CiAg
ICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CkBAIC0xODUsNiAr
MTg3LDE5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCB1c2VzU3RydWN0dXJlKFVzZUtpbmQKICAgICB9
CiB9CiAKK2lubGluZSBVc2VLaW5kIHVzZUtpbmRGb3JSZXN1bHQoTm9kZUZsYWdzIHJlc3VsdCkK
K3sKKyAgICBBU1NFUlQoIShyZXN1bHQgJiB+Tm9kZVJlc3VsdE1hc2spKTsKKyAgICBzd2l0Y2gg
KHJlc3VsdCkgeworICAgIGNhc2UgTm9kZVJlc3VsdEludDUyOgorICAgICAgICByZXR1cm4gSW50
NTJSZXBVc2U7CisgICAgY2FzZSBOb2RlUmVzdWx0RG91YmxlOgorICAgICAgICByZXR1cm4gRG91
YmxlUmVwVXNlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBVbnR5cGVkVXNlOworICAg
IH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiBuYW1lc3BhY2UgV1RGIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAx
NjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xMTUsNiArMTE1LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgbV9teVJlZkNvdW50cy5maW5kKGVkZ2Uubm9kZSgp
KS0+dmFsdWUrKzsKICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFZB
TElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkgPT0gKGVkZ2UudXNl
S2luZCgpID09IERvdWJsZVJlcFVzZSB8fCBlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBSZWFs
VXNlKSk7CisgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+
aGFzSW50NTJSZXN1bHQoKSA9PSAoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpKTsKKyAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9y
bSA9PSBTU0EpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIFNTQSwgYWxsIGVkZ2Vz
IG11c3QgaGFzUmVzdWx0KCkuCiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9k
ZSwgZWRnZSksIGVkZ2UtPmhhc1Jlc3VsdCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFyaWFkaWNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFyaWFkaWNGdW5jdGlvbi5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhZGljRnVuY3Rpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpZm5kZWYgREZHVmFyaWFkaWNGdW5jdGlvbl9oCi0jZGVmaW5lIERGR1Zh
cmlhZGljRnVuY3Rpb25faAotCi0jZGVmaW5lIERGR19DT01NQSAsCi0KLS8vIFRoZSBzaWduYXR1
cmUgb2YgdiBpcyAodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQ
YXJhbXMsIHZhbHVlQXJncykKLS8vCi0vLyBZb3Ugd291bGQgdXNlIGl0IGxpa2U6Ci0vLyAjZGVm
aW5lIERFRklORV9GVU5DVElPTih0ZW1wbGF0ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1z
LCB2YWx1ZVBhcmFtc0NvbW1hLCB2YWx1ZVBhcmFtcywgdmFsdWVBcmdzKQotLy8gICAgIHRlbXBs
YXRlUHJlIHR5cGVQYXJhbXMgdGVtcGxhdGVQb3N0IHZvaWQgZih2YWx1ZVBhcmFtcykgeyBnKHZh
bHVlQXJncyk7IH0KLS8vIERGR19WQVJJQURJQ19URU1QTEFURV9GVU5DVElPTihERUZJTkVfRlVO
Q1RJT04pCi0vLyAjdW5kZWYgREVGSU5FX0ZVTkNUSU9OCi0vLwotLy8gT3IgaWYgeW91IHdhbnRl
ZCB0aGUgZGVmaW5lZCBmdW5jdGlvbiB0byB0YWtlIGFuIGFkZGl0aW9uYWwgdGVtcGxhdGUgYXJn
LCB5b3Ugd291bGQgZG86Ci0vLyAjZGVmaW5lIERFRklORV9GVU5DVElPTih0ZW1wbGF0ZVByZSwg
dGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1zLCB2YWx1ZVBhcmFtc0NvbW1hLCB2YWx1ZVBhcmFtcywg
dmFsdWVBcmdzKQotLy8gICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgdmFsdWVQYXJhbXNDb21tYSB0
eXBlUGFyYW1zPiB2b2lkIGYoVCB2YWx1ZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1zKSB7
IGcodmFsdWUsIHZhbHVlQXJncyk7IH0KLS8vIERGR19WQVJJQURJQ19URU1QTEFURV9GVU5DVElP
TihERUZJTkVfRlVOQ1RJT04pCi0vLyAjdW5kZWYgREVGSU5FX0ZVTkNUSU9OCi0KLSNkZWZpbmUg
REZHX1ZBUklBRElDX1RFTVBMQVRFX0ZVTkNUSU9OKHYpIFwKLSAgICB2KCwgLCAsICwgLCApIFwK
LSAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSwgREZHX0NPTU1BLCBjb25zdCBf
REZHX1QxJiBfREZHX3ZhbHVlMSwgX0RGR192YWx1ZTEpIFwKLSAgICB2KHRlbXBsYXRlPCwgPiwg
dHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMiwgREZHX0NPTU1BLCBj
b25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RGR192
YWx1ZTIsIF9ERkdfdmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVlMikgXAotICAgIHYodGVtcGxh
dGU8LCA+LCB0eXBlbmFtZSBfREZHX1QxIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1QyIERGR19D
T01NQSB0eXBlbmFtZSBfREZHX1QzLCBERkdfQ09NTUEsIGNvbnN0IF9ERkdfVDEmIF9ERkdfdmFs
dWUxIERGR19DT01NQSBjb25zdCBfREZHX1QyJiBfREZHX3ZhbHVlMiBERkdfQ09NTUEgY29uc3Qg
X0RGR19UMyYgX0RGR192YWx1ZTMsIF9ERkdfdmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVlMiBE
RkdfQ09NTUEgX0RGR192YWx1ZTMpIFwKLSAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RG
R19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19U
MyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNCwgREZHX0NPTU1BLCBjb25zdCBfREZHX1QxJiBf
REZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIgREZHX0NPTU1B
IGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzIERGR19DT01NQSBjb25zdCBfREZHX1Q0JiBfREZH
X3ZhbHVlNCwgX0RGR192YWx1ZTEgREZHX0NPTU1BIF9ERkdfdmFsdWUyIERGR19DT01NQSBfREZH
X3ZhbHVlMyBERkdfQ09NTUEgX0RGR192YWx1ZTQpIFwKLSAgICB2KHRlbXBsYXRlPCwgPiwgdHlw
ZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMiBERkdfQ09NTUEgdHlwZW5h
bWUgX0RGR19UMyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNCBERkdfQ09NTUEgdHlwZW5hbWUg
X0RGR19UNSwgREZHX0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEg
Y29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdf
dmFsdWUzIERGR19DT01NQSBjb25zdCBfREZHX1Q0JiBfREZHX3ZhbHVlNCBERkdfQ09NTUEgY29u
c3QgX0RGR19UNSYgX0RGR192YWx1ZTUsIF9ERkdfdmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVl
MiBERkdfQ09NTUEgX0RGR192YWx1ZTMgREZHX0NPTU1BIF9ERkdfdmFsdWU0IERGR19DT01NQSBf
REZHX3ZhbHVlNSkgXAotICAgIHYodGVtcGxhdGU8LCA+LCB0eXBlbmFtZSBfREZHX1QxIERGR19D
T01NQSB0eXBlbmFtZSBfREZHX1QyIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1QzIERGR19DT01N
QSB0eXBlbmFtZSBfREZHX1Q0IERGR19DT01NQSB0eXBlbmFtZSBfREZHX1Q1IERGR19DT01NQSB0
eXBlbmFtZSBfREZHX1Q2LCBERkdfQ09NTUEsIGNvbnN0IF9ERkdfVDEmIF9ERkdfdmFsdWUxIERG
R19DT01NQSBjb25zdCBfREZHX1QyJiBfREZHX3ZhbHVlMiBERkdfQ09NTUEgY29uc3QgX0RGR19U
MyYgX0RGR192YWx1ZTMgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDQmIF9ERkdfdmFsdWU0IERGR19D
T01NQSBjb25zdCBfREZHX1Q1JiBfREZHX3ZhbHVlNSBERkdfQ09NTUEgY29uc3QgX0RGR19UNiYg
X0RGR192YWx1ZTYsIF9ERkdfdmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09NTUEg
X0RGR192YWx1ZTMgREZHX0NPTU1BIF9ERkdfdmFsdWU0IERGR19DT01NQSBfREZHX3ZhbHVlNSBE
RkdfQ09NTUEgX0RGR192YWx1ZTYpIFwKLSAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RG
R19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19U
MyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNCBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNSBE
RkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNywgREZH
X0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19U
MiYgX0RGR192YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzIERGR19D
T01NQSBjb25zdCBfREZHX1Q0JiBfREZHX3ZhbHVlNCBERkdfQ09NTUEgY29uc3QgX0RGR19UNSYg
X0RGR192YWx1ZTUgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDYmIF9ERkdfdmFsdWU2IERGR19DT01N
QSBjb25zdCBfREZHX1Q3JiBfREZHX3ZhbHVlNywgX0RGR192YWx1ZTEgREZHX0NPTU1BIF9ERkdf
dmFsdWUyIERGR19DT01NQSBfREZHX3ZhbHVlMyBERkdfQ09NTUEgX0RGR192YWx1ZTQgREZHX0NP
TU1BIF9ERkdfdmFsdWU1IERGR19DT01NQSBfREZHX3ZhbHVlNiBERkdfQ09NTUEgX0RGR192YWx1
ZTcpIFwKLSAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlw
ZW5hbWUgX0RGR19UMiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMyBERkdfQ09NTUEgdHlwZW5h
bWUgX0RGR19UNCBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNSBERkdfQ09NTUEgdHlwZW5hbWUg
X0RGR19UNiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNyBERkdfQ09NTUEgdHlwZW5hbWUgX0RG
R19UOCwgREZHX0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29u
c3QgX0RGR19UMiYgX0RGR192YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFs
dWUzIERGR19DT01NQSBjb25zdCBfREZHX1Q0JiBfREZHX3ZhbHVlNCBERkdfQ09NTUEgY29uc3Qg
X0RGR19UNSYgX0RGR192YWx1ZTUgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDYmIF9ERkdfdmFsdWU2
IERGR19DT01NQSBjb25zdCBfREZHX1Q3JiBfREZHX3ZhbHVlNyBERkdfQ09NTUEgX0RGR19UOCYg
X0RGR192YWx1ZTgsIF9ERkdfdmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09NTUEg
X0RGR192YWx1ZTMgREZHX0NPTU1BIF9ERkdfdmFsdWU0IERGR19DT01NQSBfREZHX3ZhbHVlNSBE
RkdfQ09NTUEgX0RGR192YWx1ZTYgREZHX0NPTU1BIF9ERkdfdmFsdWU3IERGR19DT01NQSBfREZH
X3ZhbHVlOCkKLQotI2VuZGlmIC8vIERGR1ZhcmlhZGljRnVuY3Rpb25faAotCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAx
NjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQXJpdGhGUm91bmQ6CiAgICAgY2FzZSBBcml0aE5l
Z2F0ZToKICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgotICAgIGNhc2UgSW50MzJUb0RvdWJsZToK
ICAgICBjYXNlIENvbXBhcmVFcUNvbnN0YW50OgogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEZv
cmNlT1NSRXhpdDoKQEAgLTEwMyw3ICsxMDIsNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNh
bkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBHZXRDbG9zdXJlUmVnaXN0ZXJzOgogICAgIGNhc2Ug
R2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6Ci0gICAgY2FzZSBJbnQ1MlRv
VmFsdWU6CiAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICBjYXNlIFN0cmluZ0NoYXJB
dDoKICAgICBjYXNlIENoZWNrRnVuY3Rpb246CkBAIC0xNTIsOCArMTUwLDE5IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIElzRnVuY3Rpb246CiAg
ICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOgogICAgIGNhc2UgSW5zdGFuY2VPZjoKKyAgICBjYXNl
IERvdWJsZVJlcDoKKyAgICBjYXNlIFZhbHVlUmVwOgorICAgIGNhc2UgSW50NTJSZXA6CisgICAg
Y2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgIC8v
IFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJZGVudGl0eToKKyAgICAg
ICAgLy8gTm8gYmFja2VuZCBoYW5kbGVzIHRoaXMgYmVjYXVzZSBpdCB3aWxsIGJlIG9wdGltaXpl
ZCBvdXQuIEJ1dCB3ZSBtYXkgY2hlY2sKKyAgICAgICAgLy8gZm9yIGNhcGFiaWxpdGllcyBiZWZv
cmUgb3B0aW1pemF0aW9uLiBJdCB3b3VsZCBiZSBhIGRlZXAgZXJyb3IgdG8gcmVtb3ZlIHRoaXMK
KyAgICAgICAgLy8gY2FzZSBiZWNhdXNlIGl0IHdvdWxkIHByZXZlbnQgdXMgZnJvbSBjYXRjaGlu
ZyBidWdzIHdoZXJlIHRoZSBGVEwgYmFja2VuZAorICAgICAgICAvLyBwaXBlbGluZSBmYWlsZWQg
dG8gb3B0aW1pemUgb3V0IGFuIElkZW50aXR5LgorICAgICAgICBicmVhazsKICAgICBjYXNlIFB1
dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IENlbGxVc2UpCkBAIC0yMzUsOSArMjQ0LDkgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQ29tcGFyZUVxOgogICAgICAg
ICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSkKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKQorICAg
ICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpCisg
ICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50
VXNlKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjU1LDkgKzI2NCw5IEBAIGlubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToK
ICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNl
KSkKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpCiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJV
c2UpKQorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkpCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJp
bmdJZGVudFVzZSkpCiAgICAgICAgICAgICBicmVhazsKQEAgLTI4MCw5ICsyODksOSBAQCBpbmxp
bmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBDb21wYXJlR3Jl
YXRlckVxOgogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSkKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hp
bmVJbnRVc2UpKQorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNl
KSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE51bWJlclVzZSkpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVw
VXNlKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKFVudHlwZWRVc2UpKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNTAsMTAgKzM1OSwxMCBA
QCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICAg
ICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAg
ICAgICAgICAgICAgY2FzZSBLbm93bkludDMyVXNlOgotICAgICAgICAgICAgICAgIGNhc2UgTWFj
aGluZUludFVzZToKKyAgICAgICAgICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAg
ICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAgICAgICAgICAgICAgIGNhc2UgS25vd25OdW1iZXJV
c2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgorICAgICAgICAgICAgICAg
IGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICAgICAgICAgIGNhc2UgRG91YmxlUmVwUmVhbFVz
ZToKICAgICAgICAgICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBDZWxsVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25vd25DZWxsVXNlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlz
aW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNyArMTg2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgTFR5cGUgdHlwZTsKICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmZsYWdzKCkgJiBOb2RlUmVzdWx0TWFzaykgewot
ICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdE51bWJlcjoKKyAgICAgICAgICAgICAgICBj
YXNlIE5vZGVSZXN1bHREb3VibGU6CiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBtX291dC5k
b3VibGVUeXBlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBj
YXNlIE5vZGVSZXN1bHRJbnQzMjoKQEAgLTI4MiwxMiArMjgyLDMwIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAgICAgICAgICBjb21waWxlRG91
YmxlQ29uc3RhbnQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEludDUyQ29u
c3RhbnQ6CisgICAgICAgICAgICBjb21waWxlSW50NTJDb25zdGFudCgpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgICAgICAgICBjb21waWxl
V2Vha0pTQ29uc3RhbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBoYW50
b21Bcmd1bWVudHM6CiAgICAgICAgICAgICBjb21waWxlUGhhbnRvbUFyZ3VtZW50cygpOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRG91YmxlUmVwOgorICAgICAgICAgICAgY29t
cGlsZURvdWJsZVJlcCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVS
ZXA6CisgICAgICAgICAgICBjb21waWxlVmFsdWVSZXAoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEludDUyUmVwOgorICAgICAgICAgICAgY29tcGlsZUludDUyUmVwKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CisgICAgICAgICAg
ICBjb21waWxlVmFsdWVUb0ludDMyKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBHZXRBcmd1bWVudDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRBcmd1bWVudCgpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0zNzgsOSArMzk2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBV
SW50MzJUb051bWJlcjoKICAgICAgICAgICAgIGNvbXBpbGVVSW50MzJUb051bWJlcigpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKLSAgICAgICAgICAg
IGNvbXBpbGVJbnQzMlRvRG91YmxlKCk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgIGNvbXBpbGVDaGVja1N0cnVjdHVyZSgpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC01NjksMTIgKzU4NCw2IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAgICAgICAgICAgICBjb21waWxlSW52YWxpZGF0aW9u
UG9pbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoK
LSAgICAgICAgICAgIGNvbXBpbGVWYWx1ZVRvSW50MzIoKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEludDUyVG9WYWx1ZToKLSAgICAgICAgICAgIGNvbXBpbGVJbnQ1MlRvVmFs
dWUoKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90
Q3JlYXRlZDoKICAgICAgICAgICAgIGNvbXBpbGVDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQoKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjMzLDczICs2NDIsMTggQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdm9pZCBjb21waWxlVmFsdWVUb0ludDMyKCkK
LSAgICB7Ci0gICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKLSAg
ICAgICAgY2FzZSBJbnQzMlVzZToKLSAgICAgICAgICAgIHNldEludDMyKGxvd0ludDMyKG1fbm9k
ZS0+Y2hpbGQxKCkpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAg
IGNhc2UgTWFjaGluZUludFVzZToKLSAgICAgICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0lu
dDMyKGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hpbGQxKCkpKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZToKLSAgICAgICAgY2FzZSBO
b3RDZWxsVXNlOiB7Ci0gICAgICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlID0gbV9pbnQz
MlZhbHVlcy5nZXQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKGlz
VmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIodmFsdWUudmFsdWUoKSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChtX25vZGUtPmNoaWxkMSgpLm5v
ZGUoKSk7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAg
ICBzZXRJbnQzMihudW1iZXJPck5vdENlbGxUb0ludDMyKG1fbm9kZS0+Y2hpbGQxKCksIHZhbHVl
LnZhbHVlKCkpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgdmFsdWUgPSBtX2RvdWJsZVZhbHVlcy5nZXQobV9ub2RlLT5j
aGlsZDEoKS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7Ci0gICAg
ICAgICAgICAgICAgc2V0SW50MzIoZG91YmxlVG9JbnQzMih2YWx1ZS52YWx1ZSgpKSk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIC8vIFdlJ2xsIGJhc2ljYWxseSBqdXN0IGdldCBoZXJlIGZvciBjb25zdGFudHMuIEJ1dCBp
dCdzIGdvb2QgdG8gaGF2ZSB0aGlzCi0gICAgICAgICAgICAvLyBjYXRjaC1hbGwgc2luY2Ugd2Ug
b2Z0ZW4gYWRkIG5ldyByZXByZXNlbnRhdGlvbnMgaW50byB0aGUgbWl4LgotICAgICAgICAgICAg
c2V0SW50MzIoCi0gICAgICAgICAgICAgICAgbnVtYmVyT3JOb3RDZWxsVG9JbnQzMigKLSAgICAg
ICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDEoKSwKLSAgICAgICAgICAgICAgICAgICAgbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNhc2Ug
Qm9vbGVhblVzZToKLSAgICAgICAgICAgIHNldEludDMyKG1fb3V0Lnplcm9FeHQobG93Qm9vbGVh
bihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuaW50MzIpKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICB2b2lkIGNvbXBpbGVJbnQ1MlRvVmFsdWUoKQotICAgIHsKLSAgICAgICAgc2V0SlNWYWx1
ZShsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpKTsKLSAgICB9Ci0KICAgICB2b2lkIGNvbXBp
bGVVcHNpbG9uKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBkZXN0aW5hdGlvbiA9IG1fcGhpcy5n
ZXQobV9ub2RlLT5waGkoKSk7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpKSB7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNl
IERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIG1fb3V0LnNldChsb3dEb3VibGUobV9ub2RlLT5j
aGlsZDEoKSksIGRlc3RpbmF0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEludDMyVXNlOgogICAgICAgICAgICAgbV9vdXQuc2V0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQx
KCkpLCBkZXN0aW5hdGlvbik7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNo
aW5lSW50VXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgbV9vdXQu
c2V0KGxvd0ludDUyKG1fbm9kZS0+Y2hpbGQxKCkpLCBkZXN0aW5hdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgpAQCAtNzIyLDcgKzY3Niw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIExWYWx1ZSBzb3VyY2UgPSBtX3BoaXMuZ2V0KG1fbm9kZSk7CiAgICAg
ICAgIAogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+ZmxhZ3MoKSAmIE5vZGVSZXN1bHRNYXNrKSB7
Ci0gICAgICAgIGNhc2UgTm9kZVJlc3VsdE51bWJlcjoKKyAgICAgICAgY2FzZSBOb2RlUmVzdWx0
RG91YmxlOgogICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0LmdldChzb3VyY2UpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vZGVSZXN1bHRJbnQzMjoKQEAgLTc0MiwxNyAr
Njk2LDEyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9
CisgICAgCisgICAgdm9pZCBjb21waWxlRG91YmxlQ29uc3RhbnQoKQorICAgIHsKKyAgICAgICAg
c2V0RG91YmxlKG1fb3V0LmNvbnN0RG91YmxlKG1fZ3JhcGgudmFsdWVPZk51bWJlckNvbnN0YW50
KG1fbm9kZSkpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjb21waWxlSW50NTJDb25zdGFudCgp
CisgICAgeworICAgICAgICBpbnQ2NF90IHZhbHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFu
dChtX25vZGUpLmFzTWFjaGluZUludCgpOworICAgICAgICAKKyAgICAgICAgc2V0SW50NTIobV9v
dXQuY29uc3RJbnQ2NCh2YWx1ZSA8PCBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSk7CisgICAg
ICAgIHNldFN0cmljdEludDUyKG1fb3V0LmNvbnN0SW50NjQodmFsdWUpKTsKKyAgICB9CiAKKyAg
ICB2b2lkIGNvbXBpbGVXZWFrSlNDb25zdGFudCgpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVl
KHdlYWtQb2ludGVyKG1fbm9kZS0+d2Vha0NvbnN0YW50KCkpKTsKKyAgICB9CisgICAgCiAgICAg
dm9pZCBjb21waWxlUGhhbnRvbUFyZ3VtZW50cygpCiAgICAgewogICAgICAgICBzZXRKU1ZhbHVl
KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpKTsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCBjb21waWxlV2Vha0pTQ29uc3RhbnQoKQorICAgIHZvaWQgY29tcGlsZURv
dWJsZVJlcCgpCiAgICAgewotICAgICAgICBzZXRKU1ZhbHVlKHdlYWtQb2ludGVyKG1fbm9kZS0+
d2Vha0NvbnN0YW50KCkpKTsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSkgeworICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICAgICAgTFZhbHVlIHZh
bHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOworICAgICAgICAgICAgc2V0RG91YmxlKGpzVmFsdWVUb0RvdWJsZShtX25vZGUtPmNoaWxk
MSgpLCB2YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgc2V0RG91YmxlKHN0
cmljdEludDUyVG9Eb3VibGUobG93U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIHZvaWQgY29tcGlsZVZhbHVlUmVwKCkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6IHsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94RG91YmxlKGxvd0RvdWJsZSht
X25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgc2V0SlNW
YWx1ZShzdHJpY3RJbnQ1MlRvSlNWYWx1ZShsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgp
KSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgCisgICAgdm9pZCBjb21waWxlSW50NTJSZXAoKQorICAgIHsK
KyAgICAgICAgc2V0U3RyaWN0SW50NTIobV9vdXQuc2lnbkV4dChsb3dJbnQzMihtX25vZGUtPmNo
aWxkMSgpKSwgbV9vdXQuaW50NjQpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjb21waWxlVmFs
dWVUb0ludDMyKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkpIHsKKyAgICAgICAgY2FzZSBJbnQzMlVzZToKKyAgICAgICAgICAgIHNldEludDMyKGxv
d0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgICAgICBzZXRJbnQzMihtX291
dC5jYXN0VG9JbnQzMihsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6Cisg
ICAgICAgICAgICBzZXRJbnQzMihkb3VibGVUb0ludDMyKGxvd0RvdWJsZShtX25vZGUtPmNoaWxk
MSgpKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBO
dW1iZXJVc2U6CisgICAgICAgIGNhc2UgTm90Q2VsbFVzZTogeworICAgICAgICAgICAgTG93ZXJl
ZE5vZGVWYWx1ZSB2YWx1ZSA9IG1faW50MzJWYWx1ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9k
ZSgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgeworICAgICAgICAgICAgICAg
IHNldEludDMyKHZhbHVlLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVl
cy5nZXQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWQo
dmFsdWUpKSB7CisgICAgICAgICAgICAgICAgc2V0SW50MzIobnVtYmVyT3JOb3RDZWxsVG9JbnQz
MihtX25vZGUtPmNoaWxkMSgpLCB2YWx1ZS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFdlJ2xsIGJh
c2ljYWxseSBqdXN0IGdldCBoZXJlIGZvciBjb25zdGFudHMuIEJ1dCBpdCdzIGdvb2QgdG8gaGF2
ZSB0aGlzCisgICAgICAgICAgICAvLyBjYXRjaC1hbGwgc2luY2Ugd2Ugb2Z0ZW4gYWRkIG5ldyBy
ZXByZXNlbnRhdGlvbnMgaW50byB0aGUgbWl4LgorICAgICAgICAgICAgc2V0SW50MzIoCisgICAg
ICAgICAgICAgICAgbnVtYmVyT3JOb3RDZWxsVG9JbnQzMigKKyAgICAgICAgICAgICAgICAgICAg
bV9ub2RlLT5jaGlsZDEoKSwKKyAgICAgICAgICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQm9vbGVhblVzZToKKyAg
ICAgICAgICAgIHNldEludDMyKG1fb3V0Lnplcm9FeHQobG93Qm9vbGVhbihtX25vZGUtPmNoaWxk
MSgpKSwgbV9vdXQuaW50MzIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGNvbXBp
bGVHZXRBcmd1bWVudCgpCiAgICAgewogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlh
YmxlID0gbV9ub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKQEAgLTk2Niw3ICsxMDIzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAg
ICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsK
ICAgICAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQxKCkpLmNvdWxk
QmVUeXBlKFNwZWNJbnQ1MikKICAgICAgICAgICAgICAgICAmJiAhbV9zdGF0ZS5mb3JOb2RlKG1f
bm9kZS0+Y2hpbGQyKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1MikpIHsKICAgICAgICAgICAgICAg
ICBJbnQ1MktpbmQga2luZDsKQEAgLTEwMTYsNyArMTA3Myw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVy
VXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBMVmFsdWUg
QzEgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFsdWUgQzIg
PSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSk7CiAKQEAgLTEwNjUsNyArMTEyMiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAg
ICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAg
ICAgICAgICAgICBJbnQ1MktpbmQga2luZDsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
V2hpY2hldmVySW50NTIobV9ub2RlLT5jaGlsZDEoKSwga2luZCk7CiAgICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dJbnQ1MihtX25vZGUtPmNoaWxkMigpLCBvcHBvc2l0ZShraW5kKSk7CkBA
IC0xMDkyLDcgKzExNDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNl
IERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgc2V0RG91YmxlKAogICAgICAgICAgICAgICAg
IG1fb3V0LmRvdWJsZU11bChsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZSht
X25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTk1LDcgKzEyNTIs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAg
IAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTog
ewogICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0LmRvdWJsZURpdigKICAgICAgICAgICAgICAg
ICBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigp
KSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjkzLDcgKzEzNTAsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNl
IE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAg
c2V0RG91YmxlKAogICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZVJlbShsb3dEb3VibGUobV9u
b2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xMzIxLDcgKzEzNzgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogewor
ICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBs
b3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBs
b3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKQEAgLTEzNzEsNyArMTQy
OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAg
ICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OiB7CiAgICAgICAgICAgICBzZXREb3VibGUobV9vdXQuZG91YmxlQWJzKGxvd0RvdWJsZShtX25v
ZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0MTgs
NyArMTQ3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICBjYXNlIElu
dDUyUmVwVXNlOiB7CiAgICAgICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShtX25vZGUtPmNo
aWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NTIpKSB7CiAgICAgICAgICAgICAgICAgSW50NTJL
aW5kIGtpbmQ7CiAgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93V2hpY2hldmVySW50
NTIobV9ub2RlLT5jaGlsZDEoKSwga2luZCk7CkBAIC0xNDM4LDcgKzE0OTUsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBj
YXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAg
ICAgc2V0RG91YmxlKG1fb3V0LmRvdWJsZU5lZyhsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNDk4LDExICsxNTU1LDYgQEAg
cHJpdmF0ZToKICAgICAgICAgc2V0SW50MzIodmFsdWUpOwogICAgIH0KICAgICAKLSAgICB2b2lk
IGNvbXBpbGVJbnQzMlRvRG91YmxlKCkKLSAgICB7Ci0gICAgICAgIHNldERvdWJsZShsb3dEb3Vi
bGUobV9ub2RlLT5jaGlsZDEoKSkpOwotICAgIH0KLSAgICAKICAgICB2b2lkIGNvbXBpbGVDaGVj
a1N0cnVjdHVyZSgpCiAgICAgewogICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7CkBAIC0yMjEzLDcgKzIyNjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGlmIChpc0ludCh0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICBMVmFsdWUgaW50VmFs
dWU7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY2hpbGQzLnVzZUtpbmQoKSkgewotICAg
ICAgICAgICAgICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZDMudXNlS2luZCgpID09IEludDMyVXNl
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludFZhbHVlID0gbG93SW50MzIoY2hpbGQz
KTsKQEAgLTIyNDYsNyArMjI5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBMVmFsdWUg
ZG91YmxlVmFsdWUgPSBsb3dEb3VibGUoY2hpbGQzKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewpAQCAtMzMy
OCw4ICszMzgwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVDb21wYXJlRXEoKQogICAg
IHsKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKQotICAgICAg
ICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkKLSAgICAgICAg
ICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkKKyAgICAgICAgICAgIHx8
IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKQorICAgICAgICAgICAgfHwgbV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKQogICAgICAgICAgICAgfHwgbV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQm9vbGVhblVzZSkKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFN0cmluZ0lkZW50VXNlKSkgewpAQCAtMzM3MSw3ICszNDIzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1f
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7CisgICAgICAgIGlmIChtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgICAgIEludDUyS2lu
ZCBraW5kOwogICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dXaGljaGV2ZXJJbnQ1MihtX25v
ZGUtPmNoaWxkMSgpLCBraW5kKTsKICAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0ludDUy
KG1fbm9kZS0+Y2hpbGQyKCksIGtpbmQpOwpAQCAtMzM3OSw3ICszNDMxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1f
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsKKyAgICAgICAgaWYgKG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkpIHsKICAgICAgICAgICAgIHNldEJvb2xlYW4o
CiAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlRXF1YWwobG93RG91YmxlKG1fbm9kZS0+Y2hp
bGQxKCkpLCBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTQxMjMsNyArNDE3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChN
YWNoaW5lSW50VXNlKSkgeworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50
NTJSZXBVc2UpKSB7CiAgICAgICAgICAgICBJbnQ1MktpbmQga2luZDsKICAgICAgICAgICAgIExW
YWx1ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5jaGlsZDEoKSwga2luZCk7CiAg
ICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQ1MihtX25vZGUtPmNoaWxkMigpLCBraW5k
KTsKQEAgLTQxMzEsNyArNDE4Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChO
dW1iZXJVc2UpKSB7CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVS
ZXBVc2UpKSB7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0RvdWJsZShtX25vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0RvdWJsZShtX25vZGUtPmNo
aWxkMigpKTsKICAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQuZmNtcChyZWFsQ29uZGl0aW9u
LCBsZWZ0LCByaWdodCkpOwpAQCAtNDM4OCw3ICs0NDQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHJldHVybiBsb3dCb29sZWFuKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBjYXNlIElu
dDMyVXNlOgogICAgICAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdFplcm8zMihsb3dJbnQzMihtX25v
ZGUtPmNoaWxkMSgpKSk7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERv
dWJsZVJlcFVzZToKICAgICAgICAgICAgIHJldHVybiBtX291dC5kb3VibGVOb3RFcXVhbChsb3dE
b3VibGUoZWRnZSksIG1fb3V0LmRvdWJsZVplcm8pOwogICAgICAgICBjYXNlIE9iamVjdE9yT3Ro
ZXJVc2U6CiAgICAgICAgICAgICByZXR1cm4gbV9vdXQuYml0Tm90KApAQCAtNDczNCwyMSArNDc4
Niw5IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAogICAgIGVudW0gSW50NTJLaW5kIHsgU3RyaWN0
SW50NTIsIEludDUyIH07Ci0gICAgTFZhbHVlIGxvd0ludDUyKEVkZ2UgZWRnZSwgSW50NTJLaW5k
IGtpbmQsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVj
dWxhdGlvbikKKyAgICBMVmFsdWUgbG93SW50NTIoRWRnZSBlZGdlLCBJbnQ1MktpbmQga2luZCkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7Ci0gICAgICAg
IAotICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewotICAgICAgICAgICAgSlNWYWx1
ZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpOwotICAgICAg
ICAgICAgaWYgKCF2YWx1ZS5pc01hY2hpbmVJbnQoKSkgewotICAgICAgICAgICAgICAgIHRlcm1p
bmF0ZShVbmNvdW50YWJsZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmludDY0WmVy
bzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludDY0X3QgcmVzdWx0ID0gdmFsdWUuYXNN
YWNoaW5lSW50KCk7Ci0gICAgICAgICAgICBpZiAoa2luZCA9PSBJbnQ1MikKLSAgICAgICAgICAg
ICAgICByZXN1bHQgPDw9IEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQ7Ci0gICAgICAgICAgICBy
ZXR1cm4gbV9vdXQuY29uc3RJbnQ2NChyZXN1bHQpOwotICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKTsKICAgICAgICAgCiAgICAg
ICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWU7CiAgICAgICAgIApAQCAtNDc3MywzNyArNDgxMywy
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBpbnQ1MlRvU3RyaWN0SW50NTIo
dmFsdWUudmFsdWUoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgdmFsdWUgPSBtX2ludDMyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAg
IGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgcmV0dXJuIHNldEludDUyV2l0aFN0
cmljdFZhbHVlKAotICAgICAgICAgICAgICAgIGVkZ2Uubm9kZSgpLCBtX291dC5zaWduRXh0KHZh
bHVlLnZhbHVlKCksIG1fb3V0LmludDY0KSwga2luZCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCEobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIFNw
ZWNJbnQ1MikpOwotICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0
KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAg
ICBMVmFsdWUgYm94ZWRSZXN1bHQgPSB2YWx1ZS52YWx1ZSgpOwotICAgICAgICAgICAgRlRMX1RZ
UEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAganNWYWx1ZVZhbHVlKGJveGVkUmVzdWx0KSwgZWRn
ZSwgU3BlY01hY2hpbmVJbnQsIGlzTm90SW50MzIoYm94ZWRSZXN1bHQpKTsKLSAgICAgICAgICAg
IHJldHVybiBzZXRJbnQ1MldpdGhTdHJpY3RWYWx1ZSgKLSAgICAgICAgICAgICAgICBlZGdlLm5v
ZGUoKSwgbV9vdXQuc2lnbkV4dCh1bmJveEludDMyKGJveGVkUmVzdWx0KSwgbV9vdXQuaW50NjQp
LCBraW5kKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoISht
X3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgU3BlY01hY2hpbmVJbnQpKTsKKworICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSk7CiAgICAgICAg
IHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7CiAgICAgICAgIHJldHVybiBtX291dC5pbnQ2NFplcm87
CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBsb3dJbnQ1MihFZGdlIGVkZ2UsIE9wZXJhbmRTcGVj
dWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFs
dWUgbG93SW50NTIoRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGxvd0ludDUyKGVk
Z2UsIEludDUyLCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIGxvd0ludDUyKGVkZ2UsIEludDUyKTsK
ICAgICB9CiAgICAgCi0gICAgTFZhbHVlIGxvd1N0cmljdEludDUyKEVkZ2UgZWRnZSwgT3BlcmFu
ZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAg
IExWYWx1ZSBsb3dTdHJpY3RJbnQ1MihFZGdlIGVkZ2UpCiAgICAgewotICAgICAgICByZXR1cm4g
bG93SW50NTIoZWRnZSwgU3RyaWN0SW50NTIsIG1vZGUpOworICAgICAgICByZXR1cm4gbG93SW50
NTIoZWRnZSwgU3RyaWN0SW50NTIpOwogICAgIH0KICAgICAKICAgICBib29sIGJldHRlclVzZVN0
cmljdEludDUyKE5vZGUqIG5vZGUpCkBAIC00ODMwLDEwICs0ODUzLDEwIEBAIHByaXZhdGU6CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIExW
YWx1ZSBsb3dXaGljaGV2ZXJJbnQ1MihFZGdlIGVkZ2UsIEludDUyS2luZCYga2luZCwgT3BlcmFu
ZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAg
IExWYWx1ZSBsb3dXaGljaGV2ZXJJbnQ1MihFZGdlIGVkZ2UsIEludDUyS2luZCYga2luZCkKICAg
ICB7CiAgICAgICAgIGtpbmQgPSBiZXN0SW50NTJLaW5kKGVkZ2UpOwotICAgICAgICByZXR1cm4g
bG93SW50NTIoZWRnZSwga2luZCwgbW9kZSk7CisgICAgICAgIHJldHVybiBsb3dJbnQ1MihlZGdl
LCBraW5kKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGxvd0NlbGwoRWRnZSBlZGdlLCBPcGVy
YW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCkBA
IC00OTMxLDcxICs0OTU0LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX291dC5ib29s
ZWFuRmFsc2U7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBsb3dEb3VibGUoRWRnZSBlZGdlLCBP
cGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24p
CisgICAgTFZhbHVlIGxvd0RvdWJsZShFZGdlIGVkZ2UpCiAgICAgewotICAgICAgICBBU1NFUlRf
VU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGlzRG91Ymxl
KGVkZ2UudXNlS2luZCgpKSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3Rh
bnQoKSkgewotICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZkpTQ29u
c3RhbnQoZWRnZS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc051bWJlcigpKSB7
Ci0gICAgICAgICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbV9vdXQuZG91YmxlWmVybzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiBtX291dC5jb25zdERvdWJsZSh2YWx1ZS5hc051bWJlcigpKTsKLSAgICAgICAgfQorICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOwogICAgICAgICAK
ICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1fZG91YmxlVmFsdWVzLmdldChlZGdl
Lm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVy
biB2YWx1ZS52YWx1ZSgpOwogICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX2ludDMyVmFsdWVz
LmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmludFRvRG91YmxlKHZhbHVlLnZhbHVlKCkpOwot
ICAgICAgICAgICAgc2V0RG91YmxlKGVkZ2Uubm9kZSgpLCByZXN1bHQpOwotICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX3N0
cmljdEludDUyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZh
bHVlKSkKLSAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ1MlRvRG91YmxlKGVkZ2UsIHZhbHVl
LnZhbHVlKCkpOwotICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX2ludDUyVmFsdWVzLmdldChl
ZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKLSAgICAgICAgICAgIHJl
dHVybiBzdHJpY3RJbnQ1MlRvRG91YmxlKGVkZ2UsIGludDUyVG9TdHJpY3RJbnQ1Mih2YWx1ZS52
YWx1ZSgpKSk7Ci0gICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQo
ZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAg
IExWYWx1ZSBib3hlZFJlc3VsdCA9IHZhbHVlLnZhbHVlKCk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGludENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJs
ZSB1bmJveGluZyBpbnQgY2FzZSIpKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNh
c2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZSB1bmJveGluZyBkb3VibGUgY2FzZSIp
KTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0so
bV9vdXQsICgiRG91YmxlIHVuYm94aW5nIGNvbnRpbnVhdGlvbiIpKTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIoYm94ZWRSZXN1bHQpLCB1bnN1cmUo
ZG91YmxlQ2FzZSksIHVuc3VyZShpbnRDYXNlKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW50Q2FzZSwgZG91YmxlQ2Fz
ZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGludFRvRG91Ymxl
ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIG1fb3V0LmludFRvRG91YmxlKHVuYm94
SW50MzIoYm94ZWRSZXN1bHQpKSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGRvdWJsZUNhc2Us
IGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNL
KAotICAgICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShib3hlZFJlc3VsdCksIGVkZ2UsIFNwZWNG
dWxsTnVtYmVyLCBpc0NlbGxPck1pc2MoYm94ZWRSZXN1bHQpKTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgVmFsdWVGcm9tQmxvY2sgdW5ib3hlZERvdWJsZSA9IG1fb3V0LmFuY2hvcih1bmJv
eERvdWJsZShib3hlZFJlc3VsdCkpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IG1fb3V0LnBoaShtX291dC5kb3VibGVUeXBlLCBpbnRUb0RvdWJsZSwgdW5ib3hlZERvdWJsZSk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHNldERvdWJsZShlZGdlLm5vZGUoKSwgcmVzdWx0
KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCEobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIFNwZWNG
dWxsTnVtYmVyKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3N0YXRlLmZvck5vZGUoZWRn
ZSkubV90eXBlKTsKICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKICAgICAgICAgcmV0
dXJuIG1fb3V0LmRvdWJsZVplcm87CiAgICAgfQpAQCAtNTAwMyw2ICs0OTcwLDggQEAgcHJpdmF0
ZToKICAgICBMVmFsdWUgbG93SlNWYWx1ZShFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1v
ZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKICAgICB7CiAgICAgICAgIEFT
U0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRn
ZS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0Rv
dWJsZShlZGdlLnVzZUtpbmQoKSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtp
bmQoKSAhPSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIAogICAgICAgICBpZiAoZWRnZS0+aGFzQ29u
c3RhbnQoKSkKICAgICAgICAgICAgIHJldHVybiBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVu
Y29kZShtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKSkpOwpAQCAtNTAxOCwx
NCArNDk4Nyw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0SW50NTJWYWx1ZXMuZ2V0KGVk
Z2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQotICAgICAgICAgICAgcmV0
dXJuIHN0cmljdEludDUyVG9KU1ZhbHVlKHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAKLSAgICAg
ICAgdmFsdWUgPSBtX2ludDUyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChp
c1ZhbGlkKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ1MlRvSlNWYWx1ZShp
bnQ1MlRvU3RyaWN0SW50NTIodmFsdWUudmFsdWUoKSkpOwotICAgICAgICAKICAgICAgICAgdmFs
dWUgPSBtX2Jvb2xlYW5WYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlzVmFs
aWQodmFsdWUpKSB7CiAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gYm94Qm9vbGVhbih2YWx1
ZS52YWx1ZSgpKTsKQEAgLTUwMzMsMTMgKzQ5OTQsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX2Rv
dWJsZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkp
IHsKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBib3hEb3VibGUodmFsdWUudmFsdWUoKSk7
Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKGVkZ2Uubm9kZSgpLCByZXN1bHQpOwotICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNTA2NSwx
MSArNTAxOSw5IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAotICAgIExWYWx1ZSBzdHJpY3RJbnQ1MlRvRG91YmxlKEVkZ2UgZWRnZSwgTFZhbHVlIHZhbHVl
KQorICAgIExWYWx1ZSBzdHJpY3RJbnQ1MlRvRG91YmxlKExWYWx1ZSB2YWx1ZSkKICAgICB7Ci0g
ICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5pbnRUb0RvdWJsZSh2YWx1ZSk7Ci0gICAgICAg
IHNldERvdWJsZShlZGdlLm5vZGUoKSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgcmV0dXJuIG1fb3V0LmludFRvRG91YmxlKHZhbHVlKTsKICAgICB9CiAgICAgCiAg
ICAgTFZhbHVlIHN0cmljdEludDUyVG9KU1ZhbHVlKExWYWx1ZSB2YWx1ZSkKQEAgLTUwOTksMjMg
KzUwNTEsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9vdXQucGhpKG1fb3V0LmludDY0
LCByZXN1bHRzKTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIHNldEludDUyV2l0aFN0cmljdFZh
bHVlKE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1ZSwgSW50NTJLaW5kIGtpbmQpCi0gICAgewotICAg
ICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MjoKLSAgICAgICAg
ICAgIHNldFN0cmljdEludDUyKG5vZGUsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1
ZTsKLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIEludDUyOgotICAgICAgICAgICAgdmFsdWUg
PSBzdHJpY3RJbnQ1MlRvSW50NTIodmFsdWUpOwotICAgICAgICAgICAgc2V0SW50NTIobm9kZSwg
dmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsK
LSAgICB9Ci0KICAgICBMVmFsdWUgc3RyaWN0SW50NTJUb0ludDUyKExWYWx1ZSB2YWx1ZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX291dC5zaGwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6aW50NTJTaGlmdEFtb3VudCkpOwpAQCAtNTE0Nyw2ICs1MDgyLDcgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC50ZXN0Tm9uWmVybzY0KGpzVmFsdWUsIG1fdGFn
VHlwZU51bWJlcik7CiAgICAgfQorICAgIAogICAgIExWYWx1ZSB1bmJveERvdWJsZShMVmFsdWUg
anNWYWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5iaXRDYXN0KG1fb3V0LmFkZChq
c1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpLCBtX291dC5kb3VibGVUeXBlKTsKQEAgLTUxNTUsNiAr
NTA5MSwzOSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LnN1YihtX291
dC5iaXRDYXN0KGRvdWJsZVZhbHVlLCBtX291dC5pbnQ2NCksIG1fdGFnVHlwZU51bWJlcik7CiAg
ICAgfQorICAgIExWYWx1ZSBqc1ZhbHVlVG9Eb3VibGUoRWRnZSBlZGdlLCBMVmFsdWUgYm94ZWRW
YWx1ZSkKKyAgICB7CisgICAgICAgIExCYXNpY0Jsb2NrIGludENhc2UgPSBGVExfTkVXX0JMT0NL
KG1fb3V0LCAoIkRvdWJsZVJlcCB1bmJveGluZyBpbnQgY2FzZSIpKTsKKyAgICAgICAgTEJhc2lj
QmxvY2sgZG91YmxlQ2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRG91YmxlUmVwIHVuYm94
aW5nIGRvdWJsZSBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBG
VExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZVJlcCB1bmJveGluZyBjb250aW51YXRpb24iKSk7
CisgICAgICAgICAgICAKKyAgICAgICAgTFZhbHVlIGlzTm90SW50MzI7CisgICAgICAgIGlmICgh
bV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50MzIpKQorICAgICAgICAg
ICAgaXNOb3RJbnQzMiA9IG1fb3V0LmJvb2xlYW5GYWxzZTsKKyAgICAgICAgZWxzZSBpZiAoIW1f
aW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSwgflNwZWNJbnQzMikpCisgICAgICAgICAg
ICBpc05vdEludDMyID0gbV9vdXQuYm9vbGVhblRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGlzTm90SW50MzIgPSB0aGlzLT5pc05vdEludDMyKGJveGVkVmFsdWUpOworICAgICAgICBt
X291dC5icmFuY2goaXNOb3RJbnQzMiwgdW5zdXJlKGRvdWJsZUNhc2UpLCB1bnN1cmUoaW50Q2Fz
ZSkpOworICAgICAgICAgICAgCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQu
YXBwZW5kVG8oaW50Q2FzZSwgZG91YmxlQ2FzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgVmFs
dWVGcm9tQmxvY2sgaW50VG9Eb3VibGUgPSBtX291dC5hbmNob3IoCisgICAgICAgICAgICBtX291
dC5pbnRUb0RvdWJsZSh1bmJveEludDMyKGJveGVkVmFsdWUpKSk7CisgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAgICBtX291dC5hcHBlbmRUbyhk
b3VibGVDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICAgICAgCisgICAgICAgIEZUTF9UWVBF
X0NIRUNLKAorICAgICAgICAgICAganNWYWx1ZVZhbHVlKGJveGVkVmFsdWUpLCBlZGdlLCBTcGVj
Qnl0ZWNvZGVOdW1iZXIsIGlzQ2VsbE9yTWlzYyhib3hlZFZhbHVlKSk7CisgICAgICAgICAgICAK
KyAgICAgICAgVmFsdWVGcm9tQmxvY2sgdW5ib3hlZERvdWJsZSA9IG1fb3V0LmFuY2hvcih1bmJv
eERvdWJsZShib3hlZFZhbHVlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
KyAgICAgICAgICAgIAorICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKKyAgICAgICAgICAgIAorICAgICAgICByZXR1cm4gbV9vdXQucGhpKG1fb3V0LmRvdWJs
ZVR5cGUsIGludFRvRG91YmxlLCB1bmJveGVkRG91YmxlKTsKKyAgICB9CiAgICAgCiAgICAgTFZh
bHVlIGlzTnVtYmVyKExWYWx1ZSBqc1ZhbHVlKQogICAgIHsKQEAgLTUyMjYsOCArNTE5NSw5IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6Ci0gICAgICAgIGNhc2UgS25vd25OdW1iZXJVc2U6
CiAgICAgICAgIGNhc2UgS25vd25TdHJpbmdVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgQVNTRVJUKCFtX2ludGVy
cHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEludDMyVXNlOgpAQCAtNTI2MCwxNCArNTIzMCwxMSBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlU3Ry
aW5nT3JTdHJpbmdPYmplY3QoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBSZWFsTnVtYmVyVXNlOgotICAgICAgICAgICAgc3BlY3VsYXRlUmVhbE51bWJlcihlZGdlKTsK
LSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgICAg
IHNwZWN1bGF0ZU51bWJlcihlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IE1hY2hpbmVJbnRVc2U6Ci0gICAgICAgICAgICBzcGVjdWxhdGVNYWNoaW5lSW50KGVkZ2UpOwor
ICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVEb3Vi
bGVSZWFsKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQm9vbGVhblVz
ZToKICAgICAgICAgICAgIHNwZWN1bGF0ZUJvb2xlYW4oZWRnZSk7CkBAIC01NTI5LDE0ICs1NDk2
LDExIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVOdW1iZXIoRWRnZSBlZGdl
KQogICAgIHsKLSAgICAgICAgLy8gRG8gYW4gZWFybHkgcmV0dXJuIGhlcmUgYmVjYXVzZSBsb3dE
b3VibGUoKSBjYW4gY3JlYXRlIGEgbG90IG9mIGNvbnRyb2wgZmxvdy4KLSAgICAgICAgaWYgKCFt
X2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKLSAgICAgICAgbG93RG91YmxlKGVkZ2UpOworICAgICAgICBMVmFsdWUgdmFsdWUg
PSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZU
TF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNCeXRlY29kZU51bWJl
ciwgaXNOb3ROdW1iZXIodmFsdWUpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzcGVjdWxhdGVS
ZWFsTnVtYmVyKEVkZ2UgZWRnZSkKKyAgICB2b2lkIHNwZWN1bGF0ZURvdWJsZVJlYWwoRWRnZSBl
ZGdlKQogICAgIHsKICAgICAgICAgLy8gRG8gYW4gZWFybHkgcmV0dXJuIGhlcmUgYmVjYXVzZSBs
b3dEb3VibGUoKSBjYW4gY3JlYXRlIGEgbG90IG9mIGNvbnRyb2wgZmxvdy4KICAgICAgICAgaWYg
KCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQpAQCAtNTU0NCwxOSArNTUwOCwx
MCBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93RG91Ymxl
KGVkZ2UpOwogICAgICAgICBGVExfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIGRvdWJsZVZhbHVl
KHZhbHVlKSwgZWRnZSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAorICAgICAgICAgICAgZG91YmxlVmFs
dWUodmFsdWUpLCBlZGdlLCBTcGVjRG91YmxlUmVhbCwKICAgICAgICAgICAgIG1fb3V0LmRvdWJs
ZU5vdEVxdWFsT3JVbm9yZGVyZWQodmFsdWUsIHZhbHVlKSk7CiAgICAgfQogICAgIAotICAgIHZv
aWQgc3BlY3VsYXRlTWFjaGluZUludChFZGdlIGVkZ2UpCi0gICAgewotICAgICAgICBpZiAoIW1f
aW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIAotICAgICAgICBJbnQ1MktpbmQga2luZDsKLSAgICAgICAgbG93V2hpY2hldmVySW50
NTIoZWRnZSwga2luZCk7Ci0gICAgfQotICAgIAogICAgIHZvaWQgc3BlY3VsYXRlQm9vbGVhbihF
ZGdlIGVkZ2UpCiAgICAgewogICAgICAgICBsb3dCb29sZWFuKGVkZ2UpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5jcHAJKHJldmlzaW9uIDE2NzI3
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGb3JtYXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC03MSw2ICs3MSw3IEBAIHZvaWQgcmVib3hBY2NvcmRpbmdUb0Zvcm1hdCgKICAg
ICBjYXNlIFZhbHVlRm9ybWF0RG91YmxlOiB7CiAgICAgICAgIGppdC5tb3ZlRG91YmxlVG82NChG
UFJJbmZvOjpmcFJlZ1QwLCBzY3JhdGNoMSk7CiAgICAgICAgIGppdC5tb3ZlNjRUb0RvdWJsZSh2
YWx1ZSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgIGppdC5zYW5pdGl6ZURvdWJsZShGUFJJ
bmZvOjpmcFJlZ1QwKTsKICAgICAgICAgaml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCB2
YWx1ZSk7CiAgICAgICAgIGppdC5tb3ZlNjRUb0RvdWJsZShzY3JhdGNoMSwgRlBSSW5mbzo6ZnBS
ZWdUMCk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC01NCw2ICs1NCwxNCBAQCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNz
ZW1iCiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKK3ZvaWQgQXNzZW1i
bHlIZWxwZXJzOjpzYW5pdGl6ZURvdWJsZShGUFJSZWcgZnByKQoreworICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIG5vdE5hTiA9IGJyYW5jaERvdWJsZShEb3VibGVFcXVhbCwgZnByLCBmcHIpOwor
ICAgIHN0YXRpYyBjb25zdCBkb3VibGUgTmFOID0gUU5hTjsKKyAgICBsb2FkRG91YmxlKCZOYU4s
IGZwcik7CisgICAgbm90TmFOLmxpbmsodGhpcyk7Cit9CisKICNpZiBFTkFCTEUoU0FNUExJTkdf
RkxBR1MpCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6c2V0U2FtcGxpbmdGbGFnKGludDMyX3QgZmxh
ZykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDE3LDYgKzQxNyw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGppdEFzc2VydFRhZ3NJblBsYWNlKCkgeyB9CiAgICAgdm9pZCBqaXRB
c3NlcnRBcmd1bWVudENvdW50U2FuZSgpIHsgfQogI2VuZGlmCisgICAgCisgICAgdm9pZCBzYW5p
dGl6ZURvdWJsZShGUFJSZWcgZnByKTsKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgY29udmVydCBi
ZXR3ZWVuIGRvdWJsZXMsIGFuZCBkb3VibGVzIGJveGVkIGFuZCBKU1ZhbHVlcy4KICNpZiBVU0Uo
SlNWQUxVRTY0KQpAQCAtNDM1LDYgKzQzNywxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBm
cHI7CiAgICAgfQogICAgIAorICAgIHZvaWQgYm94RG91YmxlKEZQUlJlZyBmcHIsIEpTVmFsdWVS
ZWdzIHJlZ3MpCisgICAgeworICAgICAgICBib3hEb3VibGUoZnByLCByZWdzLmdwcigpKTsKKyAg
ICB9CisgICAgCiAgICAgLy8gSGVyZSBhcmUgcG9zc2libGUgYXJyYW5nZW1lbnRzIG9mIHNvdXJj
ZSwgdGFyZ2V0LCBzY3JhdGNoOgogICAgIC8vIC0gc291cmNlLCB0YXJnZXQsIHNjcmF0Y2ggY2Fu
IGFsbCBiZSBzZXBhcmF0ZSByZWdpc3RlcnMuCiAgICAgLy8gLSBzb3VyY2UgYW5kIHRhcmdldCBj
YW4gYmUgdGhlIHNhbWUgYnV0IHNjcmF0Y2ggaXMgc2VwYXJhdGUuCkBAIC00NjcsNiArNDc0LDEx
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1vdmVJbnRzVG9Eb3VibGUocGF5bG9hZEdQUiwg
dGFnR1BSLCBmcHIsIHNjcmF0Y2hGUFIpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGJveERvdWJs
ZShGUFJSZWcgZnByLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyAgICAgICAgYm94RG91Ymxl
KGZwciwgcmVncy50YWdHUFIoKSwgcmVncy5wYXlsb2FkR1BSKCkpOworICAgIH0KICNlbmRpZgog
ICAgIAogICAgIGVudW0gRXhjZXB0aW9uQ2hlY2tLaW5kIHsgTm9ybWFsRXhjZXB0aW9uQ2hlY2ss
IEludmVydGVkRXhjZXB0aW9uQ2hlY2sgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229345</attachid>
            <date>2014-04-14 21:58:37 -0700</date>
            <delta_ts>2014-04-14 23:30:53 -0700</delta_ts>
            <desc>passes all tests</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>225778</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3Mjk0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1MSBA
QAorMjAxNC0wNC0xNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBJUiBzaG91bGQga2VlcCB0aGUgZGF0YSBmbG93IG9mIGRvdWJsZXMgYW5kIGludDUyJ3Mg
c2VwYXJhdGUgZnJvbSB0aGUgZGF0YSBmbG93IG9mIEpTVmFsdWUncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGludHJvZHVjZXMg
bW9yZSBzdGF0aWMgdHlwaW5nIGludG8gREZHIElSLiBQcmV2aW91c2x5IHdlIGp1c3QgaGFkIHRo
ZSBub3Rpb24gb2YKKyAgICAgICAgSlNWYWx1ZXMgYW5kIFN0b3JhZ2UuIFRoaXMgd2FzIHdlaXJk
IGJlY2F1c2UgZG91YmxlcyB3ZXJlbid0IGFsd2F5cyBjb252ZXJ0aWJsZSB0bworICAgICAgICBK
U1ZhbHVlcywgYW5kIEludDUycyB3ZXJlbid0IGFsd2F5cyBjb252ZXJ0aWJsZSB0byBlaXRoZXIg
ZG91YmxlcyBvciBKU1ZhbHVlcy4gV2Ugd291bGQKKyAgICAgICAgc29ydCBvZiBpbnNlcnQgZXhw
bGljaXQgY29udmVyc2lvbiBub2RlcyBqdXN0IGZvciB0aGUgcGxhY2VzIHdoZXJlIHdlIGtuZXcg
dGhhdCBhbgorICAgICAgICBpbXBsaWNpdCBjb252ZXJzaW9uIHdvdWxkbid0IGhhdmUgYmVlbiBw
b3NzaWJsZSAtLSBidXQgdGhlcmUgd2FzIG5vIGhhcmQgYW5kIGZhc3QgcnVsZSBzbworICAgICAg
ICB3ZSdkIGdldCBidWdzIGZyb20gZm9yZ2V0dGluZyB0byBkbyB0aGUgcmlnaHQgY29udmVyc2lv
bi4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmQgYW5kIGZh
c3QgcnVsZTogZG91YmxlcyBjYW4gbmV2ZXIgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8KKyAg
ICAgICAgYW55dGhpbmcgYnV0IGRvdWJsZXMsIGFuZCBsaWtld2lzZSBJbnQ1MidzIGNhbiBuZXZl
ciBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZC4gQ29udmVyc2lvbgorICAgICAgICBub2RlcyBhcmUg
dXNlZCBmb3IgYWxsIG9mIHRoZSBjb252ZXJzaW9ucy4KKyAgICAgICAgCisgICAgICAgIEluIGFk
ZGl0aW9uIHRvIHNpbXBsaWZ5aW5nIGEgYnVuY2ggb2YgcnVsZXMgaW4gdGhlIElSIGFuZCBtYWtp
bmcgdGhlIElSIG1vcmUgdmVyaWZpYWJsZSwKKyAgICAgICAgdGhpcyBhbHNvIG1ha2VzIGl0IGVh
c2llciB0byBpbnRyb2R1Y2Ugb3B0aW1pemF0aW9ucyBpbiB0aGUgZnV0dXJlLiBJdCdzIG5vdyBw
b3NzaWJsZSBmb3IKKyAgICAgICAgQUkgdG8gbW9kZWwgd2hlbi9ob3cgY29udmVyc2lvbiB0YWtl
IHBsYWNlLiBGb3IgZXhhbXBsZSBpZiBkb2luZyBhIGNvbnZlcnNpb24gcmVzdWx0cyBpbgorICAg
ICAgICBOYU4gc2FuaXRpemF0aW9uLCB0aGVuIEFJIGNhbiBtb2RlbCB0aGlzIGFuZCBjYW4gYWxs
b3cgdXMgdG8gc2luayBzYW5pdGl6YXRpb25zLiBUaGF0J3MKKyAgICAgICAgd2hhdCBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDE5IHdpbGwgYmUgYWxsIGFib3V0
LgorICAgICAgICAKKyAgICAgICAgVGhpcyB3YXMgYSBiaWcgY2hhbmdlLCBzbyBJIGhhZCB0byBk
byBzb21lIGludGVyZXN0aW5nIHRoaW5ncywgbGlrZSBmaW5hbGx5IGdldCByaWQgb2YKKyAgICAg
ICAgdGhlIERGRydzIHdlaXJkIHZhcmlhZGljIHRlbXBsYXRlIG1hY3JvIGhhY2tzIGFuZCB1c2Ug
cmVhbCBDKysxMSB2YXJpYWRpYyB0ZW1wbGF0ZXMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICogZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVy
cHJldGVyOjpzZXRCdWlsdEluQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI6OnNldENvbnN0YW50KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpzZXQp
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRh
dGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0ZW5j
eSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKiBkZmcvREZH
QmFzaWNCbG9jay5oOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkJhc2ljQmxvY2s6OmFwcGVuZE5vZGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJhc2ljQmxvY2s6OmFwcGVuZE5vblRlcm1pbmFsKToKKyAgICAgICAgKiBkZmcvREZHQ1NF
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpjb25zdGFudENTRSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKEpT
Qzo6REZHOjpDU0VQaGFzZTo6aW50MzJUb0RvdWJsZUNTRSk6IERlbGV0ZWQuCisgICAgICAgICog
ZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFz
ZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RDRVBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpEQ0VQaGFzZTo6Zml4dXBCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Vk
Z2UuaDoKKyAgICAgICAgKEpTQzo6REZHOjpFZGdlOjp3aWxsTm90SGF2ZUNoZWNrKToKKyAgICAg
ICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwR2V0QW5kU2V0TG9jYWxzSW5CbG9jayk6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6b2JzZXJ2ZVVzZUtpbmRPbk5vZGUpOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeEludEVkZ2UpOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01ha2VJbnRlZ2VyQWRkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjppbmplY3RUeXBlQ29udmVyc2lvbnNJbkJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjp0cnlUb1JlbGF4UmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeEVkZ2VSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6aW5qZWN0VHlwZUNvbnZlcnNpb25zRm9yRWRnZSk6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YWRkUmVxdWlyZWRQaGFudG9tKToKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjphZGRQaGFudG9tc0lmTmVjZXNzYXJ5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpjbGVhclBoYW50b21zQXRFbmQpOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwU2V0TG9jYWxzSW5CbG9jayk6IERlbGV0ZWQu
CisgICAgICAgICogZGZnL0RGR0ZsdXNoRm9ybWF0Lmg6CisgICAgICAgIChKU0M6OkRGRzo6cmVz
dWx0Rm9yKToKKyAgICAgICAgKEpTQzo6REZHOjp1c2VLaW5kRm9yKToKKyAgICAgICAgKiBkZmcv
REZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAg
KiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YWRkTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogZGZnL0RG
R0luc2VydGlvblNldC5oOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6aW5zZXJ0
Tm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjppbnNlcnRDb25zdGFudCk6
CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjppbnNlcnRDb25zdGFudEZvclVzZSk6
CisgICAgICAgICogZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZTo6aW5zZXJ0QWRkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZTo6aW5zZXJ0TXVzdEFk
ZCk6CisgICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OmNvbnZlcnRUb0lkZW50aXR5KToKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAg
ICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpOb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpzZXRSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OnJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmNvbnZlcnRUb0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjp2YWx1ZU9m
SlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzUmVzdWx0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpoYXNJbnQzMlJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6aGFzSW50NTJSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc051bWJl
clJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzRG91YmxlUmVzdWx0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNKU1Jlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6aGFzQm9vbGVhblJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU3Rv
cmFnZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZGVmYXVsdFVzZUtpbmQpOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmRlZmF1bHRFZGdlKToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9JZGVudGl0eSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR05v
ZGVGbGFncy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZHVtcE5vZGVGbGFncyk6CisgICAgICAg
ICogZGZnL0RGR05vZGVGbGFncy5oOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAg
ICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNv
bXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9w
YWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlJlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZTo6
cnVuKToKKyAgICAgICAgKiBkZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTU0FDb252ZXJzaW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6b3Bl
cmF0b3IoKSk6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6c2lsZW50U2F2ZVBsYW5Gb3JHUFIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpzaWxlbnRTYXZlUGxhbkZvckZQUik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OnNpbGVudEZpbGwpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVSZWdzVGVt
cG9yYXJ5OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeSk6CisgICAgICAgIChKU0M6OkRGRzo6SlNWYWx1
ZVJlZ3NUZW1wb3Jhcnk6On5KU1ZhbHVlUmVnc1RlbXBvcmFyeSk6CisgICAgICAgIChKU0M6OkRG
Rzo6SlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6OnJlZ3MpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXApOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVSZXApOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5
cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQWRk
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTXVsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZURvdWJsZVJlYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSW50MzJUb0RvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU1hY2hpbmVJbnQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVSZWFsTnVtYmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojp1c2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpib3hEb3VibGUpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGlsbCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmpzVmFsdWVSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0ZUludDUyT3BlcmFuZDo6U3BlY3VsYXRlSW50NTJPcGVyYW5kKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQ6OlNwZWN1bGF0ZVN0cmljdElu
dDUyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlV2hpY2hldmVySW50NTJP
cGVyYW5kOjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0ZURvdWJsZU9wZXJhbmQ6OlNwZWN1bGF0ZURvdWJsZU9wZXJhbmQpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbnZlcnRUb0RvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQz
MkludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZUludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZUJvb2xlYW4pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
TG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFu
Y2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29udmVydFRvRG91YmxlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJu
YWwpOgorICAgICAgICAqIGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlw
ZUZpbHRlckZvcik6CisgICAgICAgIChKU0M6OkRGRzo6c2hvdWxkTm90SGF2ZVR5cGVDaGVjayk6
CisgICAgICAgIChKU0M6OkRGRzo6bWF5SGF2ZVR5cGVDaGVjayk6CisgICAgICAgIChKU0M6OkRG
Rzo6aXNOdW1lcmljYWwpOgorICAgICAgICAoSlNDOjpERkc6OmlzRG91YmxlKToKKyAgICAgICAg
KEpTQzo6REZHOjppc0NlbGwpOgorICAgICAgICAoSlNDOjpERkc6OnVzZXNTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpERkc6OnVzZUtpbmRGb3JSZXN1bHQpOgorICAgICAgICAqIGRmZy9ERkdW
YWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6OnZhbGlkYXRlKToKKyAg
ICAgICAgKiBkZmcvREZHVmFyaWFkaWNGdW5jdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIGZ0
bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmNyZWF0ZVBoaVZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZVVwc2lsb24pOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlUGhpKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZURvdWJsZUNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
Y29tcGlsZUludDUyQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlV2Vha0pTQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlRG91YmxlUmVwKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExW
TTo6Y29tcGlsZVZhbHVlUmVwKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
Y29tcGlsZUludDUyUmVwKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZVZhbHVlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNv
bXBpbGVBcml0aEFkZE9yU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
Y29tcGlsZUFyaXRoTXVsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZUFyaXRoRGl2KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZUFyaXRoTW9kKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFy
aXRoTWluT3JNYXgpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
QXJpdGhBYnMpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJp
dGhOZWdhdGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlUHV0
QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29tcGFy
ZUVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNvbXBhcmVT
dHJpY3RFcSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBhcmUpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpib29saWZ5KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6bG93SW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6Okxv
d2VyREZHVG9MTFZNOjpsb3dTdHJpY3RJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJE
RkdUb0xMVk06Omxvd1doaWNoZXZlckludDUyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6bG93RG91YmxlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
bG93SlNWYWx1ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnN0cmljdElu
dDUyVG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpqc1ZhbHVl
VG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGUp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVOdW1iZXIpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVEb3VibGVSZWFsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUludDUyVG9WYWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVJbnQz
MlRvRG91YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
c2V0SW50NTJXaXRoU3RyaWN0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Okxv
d2VyREZHVG9MTFZNOjpzcGVjdWxhdGVSZWFsTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlTWFjaGluZUludCk6IERlbGV0ZWQuCisg
ICAgICAgICogZnRsL0ZUTFZhbHVlRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpyZWJv
eEFjY29yZGluZ1RvRm9ybWF0KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzYW5pdGl6ZURvdWJsZSk6CisgICAgICAg
ICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OmJveERvdWJsZSk6CisKIDIwMTQtMDQtMTQgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBBU1NFUlQgd2hlbiBmaXJpbmcgbG93IG1lbW9yeSB3YXJuaW5nCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY3MjcyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTYxMCw3ICs2MTAsNiBAQAogCQkwRkZCOTIxQjE2RDAyRjAx
MDA1NUE1REIgLyogREZHTm9kZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEI1MUYxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR05vZGVB
bGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5ODdG
MkMxNjdGRTg0QjAwM0MyRjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZCOTIxRDE2RDAy
RjMwMDA1NUE1REIgLyogREZHU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMUUzQTUwMTUzN0MyQ0IwMDBGOTQ1NiAvKiBE
RkdTbG93UGF0aEdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTBGRkI5MjFFMTZEMDJGNDcwMDU1QTVEQiAvKiBERkdWYXJpYWRpY0Z1
bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
Rjg1QTMxRTE2QUI3NkFFMDA3NzU3MUUgLyogREZHVmFyaWFkaWNGdW5jdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkI5MjIwMTZEMDMz
QjcwMDU1QTVEQiAvKiBOb2RlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUgLyogTm9kZUNv
bnN0cnVjdG9ycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGRkM5OUQxMTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQwMTg0RUM4QUQw
MDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkZDOTlENDE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQyMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQuY3BwICovOyB9OwpAQCAtODk0LDcgKzg5Myw3IEBACiAJCTU1NDA3
NzIwMThEQTU4QUQwMEVGRjdGMiAvKiBKU0FycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QkIxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggKi87IH07CiAJCTU1NDA3NzIxMThEQTU4QUQwMEVGRjdG
MiAvKiBKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkJDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5
QnVmZmVyVmlld0lubGluZXMuaCAqLzsgfTsKIAkJNTU0MDc3MjIxOERBNThBRDAwRUZGN0YyIC8q
IEpTQXJyYXlJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5oICov
OyB9OwotCQk1NTQwNzcyNTE4REE1OEFEMDBFRkY3RjIgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJC
QjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggKi87IH07CisJCTU1NDA3NzI1MThEQTU4
QUQwMEVGRjdGMiAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IH07CiAJCTU1NDA3NzJCMThEQTU4QUQwMEVGRjdGMiAvKiBKU0NlbGwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTE2N0Q4MEUxOUJDQzkwMDgwNjZE
RCAvKiBKU0NlbGwuaCAqLzsgfTsKIAkJNTU0MDc3MkMxOERBNThBRDAwRUZGN0YyIC8qIEpTQ2Vs
bElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGOTc0OTZGMTY4N0FERTIwMEE0RkY2QSAvKiBKU0NlbGxJbmxpbmVzLmggKi87IH07CiAJCTU1
NDA3NzJEMThEQTU4QUQwMEVGRjdGMiAvKiBKU0NJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFERDg0OTE4QTk0NUJFMDAyNkYzRkEgLyog
SlNDSW5saW5lcy5oICovOyB9OwpAQCAtMTA0Myw1MSArMTA0MiwxMCBAQAogCQk1NTQwNzg4ODE4
REE1OEFEMDBFRkY3RjIgLyogV2Vha1JhbmRvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyMEJFN0ExMEFBNkREQjAwRjQ1NUQyIC8qIFdlYWtSYW5k
b20uaCAqLzsgfTsKIAkJNTU0MDc4OEQxOERBNThBRDAwRUZGN0YyIC8qIFdyaXRlQmFycmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEQ0I3Nzkx
MkUzRDkwNTAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oICovOyB9OwogCQk1NTQwNzg4RjE4REE1
OEFEMDBFRkY3RjIgLyogV3JpdGVCYXJyaWVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdy
aXRlQmFycmllcklubGluZXMuaCAqLzsgfTsKLQkJNTU0MDc4OUUxOERBNThBRDAwRUZGN0YyIC8q
IEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmNwcCAqLzsgfTsKLQkJ
NTU0MDc4QTAxOERBNThBRDAwRUZGN0YyIC8qIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NjE0MEM5
MTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgKi87IH07
CiAJCTU1NDA3OEFCMThEQTU4QUQwMEVGRjdGMiAvKiBBcnJheUNvbnN0cnVjdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzk1MjA2MEUxNUU4
QTgwMEE4OThBQiAvKiBBcnJheUNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDc4QUQxOERB
NThBRDAwRUZGN0YyIC8qIEFycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCREFFQzIxN0Y0RUExNDAwRjYxNDBD
IC8qIEFycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwICovOyB9OwogCQk1NTQwNzhBRjE4REE1OEFE
MDBFRkY3RjIgLyogQXJyYXlQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NEQwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJv
dG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDc4QjIxOERBNThBRDAwRUZGN0YyIC8qIEJvb2xlYW5D
b25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzc5NTIzMjBFMTVFQjU2MDBBODk4QUIgLyogQm9vbGVhbkNvbnN0cnVjdG9yLmNwcCAq
LzsgfTsKLQkJNTU0MDc4QjQxOERBNThBRDAwRUZGN0YyIC8qIEJvb2xlYW5Qcm90b3R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3OTUyMzQw
RTE1RUI1NjAwQTg5OEFCIC8qIEJvb2xlYW5Qcm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwNzhE
NTE4REE1OEFEMDBFRkY3RjIgLyogRGF0ZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDIwMzQ1MEUxNzEzNUUwMDJDN0U4MiAv
KiBEYXRlQ29uc3RydWN0b3IuY3BwICovOyB9OwotCQk1NTQwNzhEODE4REE1OEFEMDBFRkY3RjIg
LyogRGF0ZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0QyMDM0NzBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5jcHAg
Ki87IH07Ci0JCTU1NDA3OTRCMThEQTU4QUQwMEVGRjdGMiAvKiBFcnJvckNvbnN0cnVjdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDJFOTA0
MEUxODM5REIwMDBGOTI5NyAvKiBFcnJvckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDc5
NEUxOERBNThBRDAwRUZGN0YyIC8qIEVycm9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDJFOTA2MEUxODM5REIwMDBGOTI5NyAv
KiBFcnJvclByb3RvdHlwZS5jcHAgKi87IH07Ci0JCTU1NDA3OTdEMThEQTU4QUQwMEVGRjdGMiAv
KiBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMjY4MEMwMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDc5N0YxOERBNThBRDAwRUZGN0YyIC8qIEZ1bmN0aW9u
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY2OTJBODVDMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87
IH07Ci0JCTU1NDA3OUMyMThEQTU4QUQwMEVGRjdGMiAvKiBKU0FycmF5QnVmZmVyQ29uc3RydWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
QjY2QjYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAgKi87
IH07Ci0JCTU1NDA3OUMzMThEQTU4QUQwMEVGRjdGMiAvKiBKU0FycmF5QnVmZmVyUHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2
NkI4MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCAqLzsgfTsK
LQkJNTU0MDc5QzUxOERBNThBRDAwRUZGN0YyIC8qIEpTQXJyYXlJdGVyYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0JEQUVDNDE3RjRFQTE0
MDBGNjE0MEMgLyogSlNBcnJheUl0ZXJhdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDc5QzcxOERBNThB
RDAwRUZGN0YyIC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkZBOUU4RjE0MkJCQjJEMDAxNzczQjcgLyogSlNCb3Vu
ZEZ1bmN0aW9uLmNwcCAqLzsgfTsKLQkJNTU0MDc5RDMxOERBNThBRDAwRUZGN0YyIC8qIEpTRGF0
YVZpZXdQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQjY2QkYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXdQcm90b3R5cGUu
Y3BwICovOyB9OwotCQk1NTQwNzlENTE4REE1OEFEMDBFRkY3RjIgLyogSlNGdW5jdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg1RTAy
NTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5jcHAgKi87IH07Ci0JCTU1NDA3OURBMThEQTU4
QUQwMEVGRjdGMiAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc1NkZDNjBFMjAzMUIyMDBERTdEMTIg
LyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwICovOyB9OwotCQk1NTQwNzlFQjE4REE1OEFE
MDBFRkY3RjIgLyogSlNPTk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0Y5OTM1RTBGRDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVjdC5j
cHAgKi87IH07Ci0JCTU1NDA3OUVFMThEQTU4QUQwMEVGRjdGMiAvKiBKU1Byb21pc2VDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzE4NEUyMDE3QkVFMjQwMDA3Q0I2M0EgLyogSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwICovOyB9
OwotCQk1NTQwNzlGMDE4REE1OEFEMDBFRkY3RjIgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0QwMTg2
RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwICovOyB9OwotCQk1NTQwNzlG
MTE4REE1OEFEMDBFRkY3RjIgLyogSlNQcm9taXNlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTFDMTdCRUUyMkUwMDdDQjYz
QSAvKiBKU1Byb21pc2VQcm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwN0EyMjE4REE1OEFEMDBF
RkY3RjIgLyogQ29uc29sZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTNDRTA4MTE4QkMxQTU2MDBCRURGNzYgLyogQ29uc29sZVBy
b3RvdHlwZS5jcHAgKi87IH07Ci0JCTU1NDA3QTI1MThEQTU4QUQwMEVGRjdGMiAvKiBNYXBDb25z
dHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzAwODczNzE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwICovOyB9Owot
CQk1NTQwN0EyODE4REE1OEFEMDBFRkY3RjIgLyogTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0REVGOEQxODJE
OTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDdB
MjkxOERBNThBRDAwRUZGN0YyIC8qIE1hcFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczQjE3Q0JFOEQzMDBDM0U2NDMgLyog
TWFwUHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDdBMkUxOERBNThBRDAwRUZGN0YyIC8qIE1h
dGhPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjY5MkE4NkEwMjU1NTk3RDAxRkY2MEY3IC8qIE1hdGhPYmplY3QuY3BwICovOyB9OwotCQk1
NTQwN0EzMTE4REE1OEFEMDBFRkY3RjIgLyogTmFtZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUJGMkY5MTU2MEYwMzYwMDhF
OTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuY3BwICovOyB9OwotCQk1NTQwN0EzMzE4REE1OEFEMDBF
RkY3RjIgLyogTmFtZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkVCRjJGRDE1NjBGMDM2MDA4RTkyMjIgLyogTmFtZVByb3RvdHlw
ZS5jcHAgKi87IH07CiAJCTU1NDA3QTM4MThEQTU4QUQwMEVGRjdGMiAvKiBOdW1iZXJDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzI2ODBDMjBFMTZENEU5MDBBMDZFOTIgLyogTnVtYmVyQ29uc3RydWN0b3IuY3BwICovOyB9Owog
CQk1NTQwN0EzQTE4REE1OEFEMDBFRkY3RjIgLyogTnVtYmVyUHJvdG90eXBlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjY4MEM0MEUxNkQ0RTkw
MEEwNkU5MiAvKiBOdW1iZXJQcm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwN0EzQzE4REE1OEFE
MDBFRkY3RjIgLyogT2JqZWN0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjgwQzYwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVj
dENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDdBM0QxOERBNThBRDAwRUZGN0YyIC8qIE9i
amVjdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzI2ODBDODBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0UHJvdG90eXBlLmNwcCAq
LzsgfTsKLQkJNTU0MDdBNjMxOERBNThBRDAwRUZGN0YyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDIwMkJE
MEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1NDA3
QTY2MThEQTU4QUQwMEVGRjdGMiAvKiBSZWdFeHBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMjAyQkYwRTE3MDZBNzAwMkM3RTgy
IC8qIFJlZ0V4cFByb3RvdHlwZS5jcHAgKi87IH07Ci0JCTU1NDA3QTdCMThEQTU4QUQwMEVGRjdG
MiAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzkwREQ2NzE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0
b3JQcm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwN0E3QzE4REE1OEFEMDBFRkY3RjIgLyogU2V0
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3Mjk5RDlGMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuY3BwICovOyB9Owot
CQk1NTQwN0E4ODE4REE1OEFEMDBFRkY3RjIgLyogU3RyaW5nQ29uc3RydWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEMzQzAwRTE2RUUz
MzAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDdBOEExOERB
NThBRDAwRUZGN0YyIC8qIFN0cmluZ1Byb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzNDNTBFMTZFRTMzMDBCMzQ0NjAgLyogU3Ry
aW5nUHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDdBQUMxOERBNThBRDAwRUZGN0YyIC8qIFdl
YWtNYXBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0NBM0FERDE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcENvbnN0cnVjdG9y
LmNwcCAqLzsgfTsKLQkJNTU0MDdBQUUxOERBNThBRDAwRUZGN0YyIC8qIFdlYWtNYXBQcm90b3R5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdD
QTNBREYxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuY3BwICovOyB9OwotCQk1
NUYxMzgwQjE4RUY1RjUwMDA5ODIwMTUgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAyRTkwODBFMTgz
OURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1RjEz
ODBDMThFRjVGQjkwMDk4MjAxNSAvKiBTZXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI5OURBMzE3RDEyODU4MDA1RjVGRjkg
LyogU2V0Q29uc3RydWN0b3IuY3BwICovOyB9OwogCQk1RDUzNzI2RjBFMUM1NDg4MDAyMUU1NDkg
LyogVHJhY2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUQ1MzcyNkUwRTFDNTQ4ODAwMjFFNTQ5IC8qIFRyYWNpbmcuaCAqLzsgfTsKIAkJNUQ1RDhB
RDEwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyog
bGliZWRpdC5keWxpYiAqLzsgfTsKIAkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3Rh
cGkuanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLzsgfTsKQEAg
LTIxODMsNyArMjE0MSw2IEBACiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAv
KiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHQnJhbmNoRGlyZWN0aW9uLmg7IHBhdGggPSBkZmcvREZHQnJhbmNoRGlyZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGODVBMzFFMTZBQjc2QUUwMDc3NTcxRSAvKiBE
RkdWYXJpYWRpY0Z1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R1ZhcmlhZGljRnVuY3Rpb24uaDsgcGF0aCA9IGRmZy9ERkdWYXJpYWRpY0Z1bmN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBC
eXRlY29kZVVzZURlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29k
ZVVzZURlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhGMkI5MzE3MkUwNDlF
MDA3REJEQTUgLyogRlRMTGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExMaW5rLmNwcDsg
cGF0aCA9IGZ0bC9GVExMaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4
RjJCOTQxNzJFMDQ5RTAwN0RCREE1IC8qIEZUTExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMTGlu
ay5oOyBwYXRoID0gZnRsL0ZUTExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQ4NDMsNyArNDgwMCw2IEBACiAJCQkJMEYyQkRDNDExNTIyODAxNzAwQ0Q4OTEwIC8qIERGR1Zh
cmlhYmxlRXZlbnQuaCAqLywKIAkJCQkwRjJCREM0MjE1MjI4MDE3MDBDRDg5MTAgLyogREZHVmFy
aWFibGVFdmVudFN0cmVhbS5jcHAgKi8sCiAJCQkJMEYyQkRDNDMxNTIyODAxNzAwQ0Q4OTEwIC8q
IERGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaCAqLywKLQkJCQkwRjg1QTMxRTE2QUI3NkFFMDA3NzU3
MUUgLyogREZHVmFyaWFkaWNGdW5jdGlvbi5oICovLAogCQkJCTBGRkZDOTUzMTRFRjkwOTUwMEM3
MjUzMiAvKiBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwICovLAogCQkJCTBG
RkZDOTU0MTRFRjkwOTUwMEM3MjUzMiAvKiBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhh
c2UuaCAqLywKIAkJCQkwRkM5N0YzQjE4MjAyMTE5MDAyQzlCMjYgLyogREZHV2F0Y2hwb2ludENv
bGxlY3Rpb25QaGFzZS5jcHAgKi8sCkBAIC01MjcwLDcgKzUyMjYsNyBAQAogCQkJCTU1NDA3NzE4
MThEQTU4QUQwMEVGRjdGMiAvKiBKU0FjdGl2YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU1
NDA3NzFCMThEQTU4QUQwMEVGRjdGMiAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1NTQwNzcyMjE4REE1OEFEMDBFRkY3RjIgLyogSlNBcnJheUl0ZXJhdG9yLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk1NTQwNzcyNTE4REE1OEFEMDBFRkY3RjIgLyogSlNCb3VuZEZ1
bmN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzcyNTE4REE1OEFEMDBFRkY3RjIgLyog
KG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJNTU0MDc3NDgxOERBNThBRDAwRUZGN0YyIC8qIEpT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTU0MDc3NEExOERB
NThBRDAwRUZGN0YyIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1NTQwNzc1OTE4REE1OEFEMDBFRkY3RjIgLyogSlNNYXBJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCkBAIC01NzQ0LDcgKzU3MDAsNiBAQAogCQkJCTBGRERCRkI2MTY2NkVFREEwMEM1NUZF
RiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
REM0OTE1MjI4MDk2MDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyQkRDNEIxNTIyODA5RDAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnRTdHJlYW0u
aCBpbiBIZWFkZXJzICovLAotCQkJCTBGRkI5MjFFMTZEMDJGNDcwMDU1QTVEQiAvKiBERkdWYXJp
YWRpY0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk2MDE0RUY5MEJEMDBDNzI1
MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkM5N0Y0MjE4MjAyMTE5MDAyQzlCMjYgLyogREZHV2F0Y2hwb2ludENvbGxlY3Rpb25Q
aGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQjJDRTgxNzQ4MzBBMjAwN0IzQzFCIC8qIERG
R1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NyArMzcsNiBAQAogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5o
IgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKLSNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVk
ZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSw2IEBACiAjaW5jbHVkZSAi
REZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uRGF0YS5oIgogI2luY2x1ZGUgIkRGR0V4
aXRQcm9maWxlLmgiCi0jaW5jbHVkZSAiREZHTWluaWZpZWRHcmFwaC5oIgotI2luY2x1ZGUgIkRG
R09TUkVudHJ5LmgiCi0jaW5jbHVkZSAiREZHT1NSRXhpdC5oIgotI2luY2x1ZGUgIkRGR1Zhcmlh
YmxlRXZlbnRTdHJlYW0uaCIKICNpbmNsdWRlICJEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJFdmFsQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0aW9uQ291bnRl
ci5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVyLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTcsOSArMTU3
LDE2IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBCb29sZWFuUmVzdWx0IGJvb2xlYW5SZXN1bHQo
Tm9kZSosIEFic3RyYWN0VmFsdWUmKTsKICAgICAKKyAgICB2b2lkIHNldEJ1aWx0SW5Db25zdGFu
dChOb2RlKiBub2RlLCBKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgQWJzdHJhY3RWYWx1
ZSYgYWJzdHJhY3RWYWx1ZSA9IGZvck5vZGUobm9kZSk7CisgICAgICAgIGFic3RyYWN0VmFsdWUu
c2V0KG1fZ3JhcGgsIHZhbHVlKTsKKyAgICAgICAgYWJzdHJhY3RWYWx1ZS5maXhUeXBlRm9yUmVw
cmVzZW50YXRpb24obm9kZSk7CisgICAgfQorICAgIAogICAgIHZvaWQgc2V0Q29uc3RhbnQoTm9k
ZSogbm9kZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0
KG1fZ3JhcGgsIHZhbHVlKTsKKyAgICAgICAgc2V0QnVpbHRJbkNvbnN0YW50KG5vZGUsIHZhbHVl
KTsKICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAgICB9CiAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNiw5ICsxMjYsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgIAogICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgIGNhc2UgSlND
b25zdGFudDoKKyAgICBjYXNlIERvdWJsZUNvbnN0YW50OgorICAgIGNhc2UgSW50NTJDb25zdGFu
dDoKICAgICBjYXNlIFdlYWtKU0NvbnN0YW50OgogICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czog
ewotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLnZhbHVlT2ZKU0Nv
bnN0YW50KG5vZGUpKTsKKyAgICAgICAgc2V0QnVpbHRJbkNvbnN0YW50KG5vZGUsIG1fZ3JhcGgu
dmFsdWVPZkpTQ29uc3RhbnQobm9kZSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAg
IApAQCAtMzA3LDM5ICszMDksMzkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50MzJU
b0RvdWJsZTogeworICAgIGNhc2UgRG91YmxlUmVwOiB7CiAgICAgICAgIEpTVmFsdWUgY2hpbGQg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGQgJiYg
Y2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgSlNWYWx1
ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgY2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoY2hpbGQuYXNOdW1iZXIoKSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxh
dGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGVSZWFsKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldFR5cGUoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKTsKKyAgICAgICAgZm9y
Tm9kZShub2RlKS5maXhUeXBlRm9yUmVwcmVzZW50YXRpb24obm9kZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBJbnQ1MlRvRG91YmxlOiB7CisgICAgY2FzZSBJ
bnQ1MlJlcDogeworICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gSW50MzJVc2UpOworICAgICAgICAKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5p
c051bWJlcigpKSB7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc0ludDMyKCkpIHsKICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAg
ICAgICAgCisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50NTJUb1ZhbHVlOiB7Ci0gICAg
ICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAg
ICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgc2V0Q29u
c3RhbnQobm9kZSwgY2hpbGQpOworICAgIGNhc2UgVmFsdWVSZXA6IHsKKyAgICAgICAgSlNWYWx1
ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmICh2
YWx1ZSkgeworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgdmFsdWUpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZTsKLSAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NTIp
Ci0gICAgICAgICAgICB0eXBlID0gKHR5cGUgfCBTcGVjSW50MzIgfCBTcGVjSW50NTJBc0RvdWJs
ZSkgJiB+U3BlY0ludDUyOwotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUodHlwZSk7Cisg
ICAgICAgIAorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkubV90eXBlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5maXhUeXBlRm9yUmVwcmVzZW50
YXRpb24obm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0zNzAsNyAr
MzcyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKQogICAgICAg
ICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAg
ICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc01hY2hpbmVJbnQoKSAmJiByaWdo
dC5pc01hY2hpbmVJbnQoKSkgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIobGVmdC5hc01hY2hpbmVJbnQoKSArIHJpZ2h0LmFzTWFjaGluZUludCgpKTsKICAgICAg
ICAgICAgICAgICBpZiAocmVzdWx0LmlzTWFjaGluZUludCgpKSB7CkBAIC0zODMsOSArMzg1LDkg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAg
ICAgIHx8ICFmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY0ludDMyKSkKICAgICAg
ICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAg
ICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051
bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIobGVm
dC5hc051bWJlcigpICsgcmlnaHQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGxlZnQuYXNOdW1iZXIoKSArIHJpZ2h0LmFzTnVt
YmVyKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkubV90eXBlKQpAQCAtNDI2LDcgKzQyOCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja092ZXJmbG93KG5vZGUt
PmFyaXRoTW9kZSgpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAg
Y2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQu
aXNNYWNoaW5lSW50KCkgJiYgcmlnaHQuaXNNYWNoaW5lSW50KCkpIHsKICAgICAgICAgICAgICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGxlZnQuYXNNYWNoaW5lSW50KCkgLSByaWdodC5h
c01hY2hpbmVJbnQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc01hY2hpbmVJbnQo
KSB8fCAhc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpIHsKQEAgLTQzOSw5
ICs0NDEsOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgICAgICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjSW50MzIp
KQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJp
Z2h0LmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051
bWJlcihsZWZ0LmFzTnVtYmVyKCkgLSByaWdodC5hc051bWJlcigpKSk7CisgICAgICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIobGVmdC5hc051bWJlcigpIC0gcmln
aHQuYXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpAQCAtNDc3LDcg
KzQ3OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgICAgIGlmIChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSkKICAgICAg
ICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAg
ICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc01hY2hpbmVJbnQoKSkgewogICAgICAgICAg
ICAgICAgIGRvdWJsZSBkb3VibGVSZXN1bHQ7CiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZENo
ZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTW9kZSgpKSkKQEAgLTQ5Niw5ICs0OTgsOSBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAo
c2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhNb2RlKCkpKQogICAgICAgICAgICAg
ICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAg
aWYgKGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgICAgICBzZXRDb25z
dGFudChub2RlLCBqc051bWJlcigtY2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgICAg
IHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKC1jaGlsZC5hc051bWJlcigpKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC01MzMsNyArNTM1LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNob3VsZENo
ZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNl
dENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5l
SW50VXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQg
JiYgcmlnaHQgJiYgbGVmdC5pc01hY2hpbmVJbnQoKSAmJiByaWdodC5pc01hY2hpbmVJbnQoKSkg
ewogICAgICAgICAgICAgICAgIGRvdWJsZSBkb3VibGVSZXN1bHQgPSBsZWZ0LmFzTnVtYmVyKCkg
KiByaWdodC5hc051bWJlcigpOwogICAgICAgICAgICAgICAgIGlmICghc2hvdWxkQ2hlY2tOZWdh
dGl2ZVplcm8obm9kZS0+YXJpdGhNb2RlKCkpKQpAQCAtNTQ3LDkgKzU0OSw5IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjSW50NTIpOwogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVl
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAg
Y2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0
LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzTnVtYmVyKGxlZnQuYXNOdW1iZXIoKSAqIHJpZ2h0LmFzTnVtYmVyKCkp
KTsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihsZWZ0
LmFzTnVtYmVyKCkgKiByaWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0
aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKQEAgLTU4NSw5ICs1ODcsOSBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4
aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6Cisg
ICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQg
JiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihsZWZ0LmFzTnVtYmVyKCkgLyByaWdodC5hc051
bWJlcigpKSk7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1i
ZXIobGVmdC5hc051bWJlcigpIC8gcmlnaHQuYXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNEb3VibGUpOwpAQCAtNjE5LDkgKzYyMSw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVj
SW50MzIpOwogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBV
c2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYg
cmlnaHQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
TnVtYmVyKGZtb2QobGVmdC5hc051bWJlcigpLCByaWdodC5hc051bWJlcigpKSkpOworICAgICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGZtb2QobGVmdC5hc051
bWJlcigpLCByaWdodC5hc051bWJlcigpKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUp
OwpAQCAtNjQ1LDExICs2NDcsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAg
ICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAg
ICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051
bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgZG91YmxlIGEgPSBsZWZ0LmFzTnVtYmVyKCk7CiAg
ICAgICAgICAgICAgICAgZG91YmxlIGIgPSByaWdodC5hc051bWJlcigpOwotICAgICAgICAgICAg
ICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGEgPCBiID8gYSA6IChiIDw9IGEgPyBiIDog
YSArIGIpKSk7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1i
ZXIoYSA8IGIgPyBhIDogKGIgPD0gYSA/IGIgOiBhICsgYikpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShT
cGVjRG91YmxlKTsKQEAgLTY3MywxMSArNjc1LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVj
SW50MzIpOwogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBV
c2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYg
cmlnaHQuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgICAgIGRvdWJsZSBhID0gbGVmdC5hc051
bWJlcigpOwogICAgICAgICAgICAgICAgIGRvdWJsZSBiID0gcmlnaHQuYXNOdW1iZXIoKTsKLSAg
ICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihhID4gYiA/IGEgOiAoYiA+
PSBhID8gYiA6IGEgKyBiKSkpOworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
RG91YmxlTnVtYmVyKGEgPiBiID8gYSA6IChiID49IGEgPyBiIDogYSArIGIpKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC03MDMsOSArNzA1LDkgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRU
eXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERv
dWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7
Ci0gICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoY2hpbGQuYXNOdW1i
ZXIoKSkpOworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVy
KGNoaWxkLmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAgLTcy
MCw3ICs3MjIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgY2FzZSBBcml0aFNxcnQ6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJl
cigpKSB7Ci0gICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihzcXJ0KGNoaWxk
LmFzTnVtYmVyKCkpKSk7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51
bWJlcihzcXJ0KGNoaWxkLmFzTnVtYmVyKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC03MzAs
NyArNzMyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
IGNhc2UgQXJpdGhGUm91bmQ6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJl
cigpKSB7Ci0gICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxmbG9hdD4oY2hpbGQuYXNOdW1iZXIoKSkpKTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5v
ZGUsIGpzRG91YmxlTnVtYmVyKHN0YXRpY19jYXN0PGZsb2F0PihjaGlsZC5hc051bWJlcigpKSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXRUeXBlKFNwZWNEb3VibGUpOwpAQCAtNzQwLDcgKzc0Miw3IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIEFyaXRoU2luOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNOdW1iZXIoc2luKGNoaWxkLmFzTnVtYmVyKCkpKSk7CisgICAgICAgICAgICBzZXRD
b25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihzaW4oY2hpbGQuYXNOdW1iZXIoKSkpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjRG91YmxlKTsKQEAgLTc1MCw3ICs3NTIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBBcml0aENvczogewogICAgICAgICBKU1ZhbHVl
IGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAgaWYgKGNo
aWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUs
IGpzTnVtYmVyKGNvcyhjaGlsZC5hc051bWJlcigpKSkpOworICAgICAgICAgICAgc2V0Q29uc3Rh
bnQobm9kZSwganNEb3VibGVOdW1iZXIoY29zKGNoaWxkLmFzTnVtYmVyKCkpKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3Bl
Y0RvdWJsZSk7CkBAIC03NjksNyArNzcxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkpIHsKICAgICAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgICAgIGNhc2UgSW50
MzJVc2U6Ci0gICAgICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgICAgIGNhc2UgRG91
YmxlUmVwVXNlOgogICAgICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICAgICAgY2Fz
ZSBTdHJpbmdVc2U6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9uIDE2NzI3MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTY3LDggKzY3LDYgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdy
YXBoLCBKUwogICAgIH0KICAgICAKICAgICBtX3R5cGUgPSBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2
YWx1ZSk7Ci0gICAgaWYgKG1fdHlwZSA9PSBTcGVjSW50NTJBc0RvdWJsZSkKLSAgICAgICAgbV90
eXBlID0gU3BlY0ludDUyOwogICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAKICAgICBjaGVja0Nv
bnNpc3RlbmN5KCk7CkBAIC04NSw2ICs4Myw0MSBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OnNldChH
cmFwaCYgZ3JhcGgsIFN0CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogfQogCit2b2lkIEFic3Ry
YWN0VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihOb2RlRmxhZ3MgcmVwcmVzZW50YXRp
b24pCit7CisgICAgaWYgKHJlcHJlc2VudGF0aW9uID09IE5vZGVSZXN1bHREb3VibGUpIHsKKyAg
ICAgICAgaWYgKG1fdmFsdWUpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3ZhbHVlLmlzTnVtYmVy
KCkpOworICAgICAgICAgICAgaWYgKG1fdmFsdWUuaXNJbnQzMigpKQorICAgICAgICAgICAgICAg
IG1fdmFsdWUgPSBqc0RvdWJsZU51bWJlcihtX3ZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICB9
CisgICAgICAgIGlmIChtX3R5cGUgJiBTcGVjTWFjaGluZUludCkgeworICAgICAgICAgICAgbV90
eXBlICY9IH5TcGVjTWFjaGluZUludDsKKyAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTJB
c0RvdWJsZTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fdHlwZSAmIH5T
cGVjRG91YmxlKSk7CisgICAgfSBlbHNlIGlmIChyZXByZXNlbnRhdGlvbiA9PSBOb2RlUmVzdWx0
SW50NTIpIHsKKyAgICAgICAgaWYgKG1fdHlwZSAmIFNwZWNJbnQ1MkFzRG91YmxlKSB7CisgICAg
ICAgICAgICBtX3R5cGUgJj0gflNwZWNJbnQ1MkFzRG91YmxlOworICAgICAgICAgICAgbV90eXBl
IHw9IFNwZWNJbnQ1MjsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fdHlw
ZSAmIH5TcGVjTWFjaGluZUludCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX3R5cGUg
JiBTcGVjSW50NTIpIHsKKyAgICAgICAgICAgIG1fdHlwZSAmPSB+U3BlY0ludDUyOworICAgICAg
ICAgICAgbV90eXBlIHw9IFNwZWNJbnQ1MkFzRG91YmxlOworICAgICAgICB9CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCEobV90eXBlICYgflNwZWNCeXRlY29kZVRvcCkpOworICAgIH0KKyAgICAK
KyAgICBjaGVja0NvbnNpc3RlbmN5KCk7Cit9CisKK3ZvaWQgQWJzdHJhY3RWYWx1ZTo6Zml4VHlw
ZUZvclJlcHJlc2VudGF0aW9uKE5vZGUqIG5vZGUpCit7CisgICAgZml4VHlwZUZvclJlcHJlc2Vu
dGF0aW9uKG5vZGUtPnJlc3VsdCgpKTsKK30KKwogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZh
bHVlOjpmaWx0ZXIoR3JhcGgmIGdyYXBoLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQogewog
ICAgIGlmIChpc0NsZWFyKCkpCkBAIC0yNDQsNiArMjc3LDggQEAgdm9pZCBBYnN0cmFjdFZhbHVl
OjpjaGVja0NvbnNpc3RlbmN5KCkgYwogICAgIAogICAgIGlmICghIW1fdmFsdWUpIHsKICAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IG1fdHlwZTsKKyAgICAgICAgLy8gVGhpcyByZWxheGVz
IHRoZSBhc3NlcnRpb24gYmVsb3cgYSBiaXQsIHNpbmNlIHdlIGRvbid0IGtub3cgdGhlIHJlcHJl
c2VudGF0aW9uIG9mIHRoZQorICAgICAgICAvLyBub2RlLgogICAgICAgICBpZiAodHlwZSAmIFNw
ZWNJbnQ1MikKICAgICAgICAgICAgIHR5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7CiAgICAgICAg
IEFTU0VSVChtZXJnZVNwZWN1bGF0aW9ucyh0eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZShtX3Zh
bHVlKSkgPT0gdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgogI2luY2x1
ZGUgIkRGR0ZpbHRyYXRpb25SZXN1bHQuaCIKKyNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIKICNp
bmNsdWRlICJERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgi
CiAjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKQEAgLTM5LDYgKzQwLDcgQEAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgR3JhcGg7CitzdHJ1Y3QgTm9kZTsKIAog
c3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIEFic3RyYWN0VmFsdWUoKQpAQCAtMTI5LDYgKzEz
MSw5IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgp
OwogICAgIH0KICAgICAKKyAgICB2b2lkIGZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihOb2RlRmxh
Z3MgcmVwcmVzZW50YXRpb24pOworICAgIHZvaWQgZml4VHlwZUZvclJlcHJlc2VudGF0aW9uKE5v
ZGUqKTsKKyAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWJzdHJhY3RWYWx1ZSYgb3Ro
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV90eXBlID09IG90aGVyLm1fdHlwZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9u
IDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiREZHQnJhbmNoRGlyZWN0
aW9uLmgiCiAjaW5jbHVkZSAiREZHRmx1c2hlZEF0LmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgot
I2luY2x1ZGUgIkRGR1ZhcmlhZGljRnVuY3Rpb24uaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTk4
LDE1ICs5NywxMSBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAg
ICAgdm9pZCByZW1vdmVQcmVkZWNlc3NvcihCYXNpY0Jsb2NrKiBibG9jayk7CiAgICAgdm9pZCBy
ZXBsYWNlUHJlZGVjZXNzb3IoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pOwogCi0j
ZGVmaW5lIERGR19ERUZJTkVfQVBQRU5EX05PREUodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwg
dHlwZVBhcmFtcywgdmFsdWVQYXJhbXNDb21tYSwgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykgXAot
ICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJhbXMgdGVtcGxhdGVQb3N0IE5vZGUqIGFwcGVuZE5vZGUo
R3JhcGgmLCBTcGVjdWxhdGVkVHlwZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1zKTsKLSAg
ICBERkdfVkFSSUFESUNfVEVNUExBVEVfRlVOQ1RJT04oREZHX0RFRklORV9BUFBFTkRfTk9ERSkK
LSN1bmRlZiBERkdfREVGSU5FX0FQUEVORF9OT0RFCi0gICAgCi0jZGVmaW5lIERGR19ERUZJTkVf
QVBQRU5EX05PREUodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQ
YXJhbXNDb21tYSwgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykgXAotICAgIHRlbXBsYXRlUHJlIHR5
cGVQYXJhbXMgdGVtcGxhdGVQb3N0IE5vZGUqIGFwcGVuZE5vblRlcm1pbmFsKEdyYXBoJiwgU3Bl
Y3VsYXRlZFR5cGUgdmFsdWVQYXJhbXNDb21tYSB2YWx1ZVBhcmFtcyk7Ci0gICAgREZHX1ZBUklB
RElDX1RFTVBMQVRFX0ZVTkNUSU9OKERGR19ERUZJTkVfQVBQRU5EX05PREUpCi0jdW5kZWYgREZH
X0RFRklORV9BUFBFTkRfTk9ERQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFtcz4KKyAg
ICBOb2RlKiBhcHBlbmROb2RlKEdyYXBoJiwgU3BlY3VsYXRlZFR5cGUsIFBhcmFtcy4uLik7Cisg
ICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gUGFyYW1zPgorICAgIE5vZGUqIGFwcGVuZE5v
blRlcm1pbmFsKEdyYXBoJiwgU3BlY3VsYXRlZFR5cGUsIFBhcmFtcy4uLik7CiAgICAgCiAgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9ja0lubGluZXMuaAkocmV2aXNpb24g
MTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMywyNSArMzMsMjEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCi0jZGVmaW5lIERGR19ERUZJTkVfQVBQRU5EX05PREUodGVtcGxhdGVQ
cmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXNDb21tYSwgdmFsdWVQYXJh
bXMsIHZhbHVlQXJncykgXAotICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJhbXMgdGVtcGxhdGVQb3N0
IGlubGluZSBOb2RlKiBCYXNpY0Jsb2NrOjphcHBlbmROb2RlKEdyYXBoJiBncmFwaCwgU3BlY3Vs
YXRlZFR5cGUgdHlwZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1zKSBcCi0gICAgeyBcCi0g
ICAgICAgIE5vZGUqIHJlc3VsdCA9IGdyYXBoLmFkZE5vZGUodHlwZSB2YWx1ZVBhcmFtc0NvbW1h
IHZhbHVlQXJncyk7IFwKLSAgICAgICAgYXBwZW5kKHJlc3VsdCk7IFwKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsgXAotICAgIH0KLSAgICBERkdfVkFSSUFESUNfVEVNUExBVEVfRlVOQ1RJT04oREZH
X0RFRklORV9BUFBFTkRfTk9ERSkKLSN1bmRlZiBERkdfREVGSU5FX0FQUEVORF9OT0RFCi0KLSNk
ZWZpbmUgREZHX0RFRklORV9BUFBFTkRfTk9ERSh0ZW1wbGF0ZVByZSwgdGVtcGxhdGVQb3N0LCB0
eXBlUGFyYW1zLCB2YWx1ZVBhcmFtc0NvbW1hLCB2YWx1ZVBhcmFtcywgdmFsdWVBcmdzKSBcCi0g
ICAgdGVtcGxhdGVQcmUgdHlwZVBhcmFtcyB0ZW1wbGF0ZVBvc3QgaW5saW5lIE5vZGUqIEJhc2lj
QmxvY2s6OmFwcGVuZE5vblRlcm1pbmFsKEdyYXBoJiBncmFwaCwgU3BlY3VsYXRlZFR5cGUgdHlw
ZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1zKSBcCi0gICAgeyBcCi0gICAgICAgIE5vZGUq
IHJlc3VsdCA9IGdyYXBoLmFkZE5vZGUodHlwZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlQXJncyk7
IFwKLSAgICAgICAgaW5zZXJ0QmVmb3JlTGFzdChyZXN1bHQpOyBcCi0gICAgICAgIHJldHVybiBy
ZXN1bHQ7IFwKLSAgICB9Ci0gICAgREZHX1ZBUklBRElDX1RFTVBMQVRFX0ZVTkNUSU9OKERGR19E
RUZJTkVfQVBQRU5EX05PREUpCi0jdW5kZWYgREZHX0RFRklORV9BUFBFTkRfTk9ERQordGVtcGxh
dGU8dHlwZW5hbWUuLi4gUGFyYW1zPgorTm9kZSogQmFzaWNCbG9jazo6YXBwZW5kTm9kZShHcmFw
aCYgZ3JhcGgsIFNwZWN1bGF0ZWRUeXBlIHR5cGUsIFBhcmFtcy4uLiBwYXJhbXMpCit7CisgICAg
Tm9kZSogcmVzdWx0ID0gZ3JhcGguYWRkTm9kZSh0eXBlLCBwYXJhbXMuLi4pOworICAgIGFwcGVu
ZChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4u
IFBhcmFtcz4KK05vZGUqIEJhc2ljQmxvY2s6OmFwcGVuZE5vblRlcm1pbmFsKEdyYXBoJiBncmFw
aCwgU3BlY3VsYXRlZFR5cGUgdHlwZSwgUGFyYW1zLi4uIHBhcmFtcykKK3sKKyAgICBOb2RlKiBy
ZXN1bHQgPSBncmFwaC5hZGROb2RlKHR5cGUsIHBhcmFtcy4uLik7CisgICAgaW5zZXJ0QmVmb3Jl
TGFzdChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpERkcKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5j
cHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NF
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjEsMjkg
KzE2MSwxMSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgCi0gICAg
Tm9kZSogaW50MzJUb0RvdWJsZUNTRShOb2RlKiBub2RlKQotICAgIHsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG90
aGVyTm9kZSA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgIGlmIChvdGhlck5v
ZGUgPT0gbm9kZS0+Y2hpbGQxKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAg
ICAgICBzd2l0Y2ggKG90aGVyTm9kZS0+b3AoKSkgewotICAgICAgICAgICAgY2FzZSBJbnQzMlRv
RG91YmxlOgotICAgICAgICAgICAgICAgIGlmIChvdGhlck5vZGUtPmNoaWxkMSgpLnNhbml0aXpl
ZCgpID09IG5vZGUtPmNoaWxkMSgpLnNhbml0aXplZCgpKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gb3RoZXJOb2RlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgCiAgICAgTm9kZSogY29uc3RhbnRDU0UoTm9k
ZSogbm9kZSkKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGVuZEluZGV4Rm9yUHVy
ZUNTRSgpOyBpLS07KSB7CiAgICAgICAgICAgICBOb2RlKiBvdGhlck5vZGUgPSBtX2N1cnJlbnRC
bG9jay0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5vcCgpICE9IEpTQ29uc3Rh
bnQpCisgICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5vcCgpICE9IG5vZGUtPm9wKCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChvdGhl
ck5vZGUtPmNvbnN0YW50TnVtYmVyKCkgIT0gbm9kZS0+Y29uc3RhbnROdW1iZXIoKSkKQEAgLTEx
NDgsOCArMTEzMCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ29tcGFyZUVxQ29uc3RhbnQ6
CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgICAgICBjYXNlIE1ha2VSb3BlOgotICAg
ICAgICBjYXNlIEludDUyVG9Eb3VibGU6Ci0gICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgorICAg
ICAgICBjYXNlIERvdWJsZVJlcDoKKyAgICAgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICAgICAgY2Fz
ZSBJbnQ1MlJlcDoKICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24p
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChwdXJl
Q1NFKG5vZGUpKTsKQEAgLTExNzcsMTIgKzExNjAsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEludDMyVG9Eb3Vi
bGU6Ci0gICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQoaW50MzJUb0RvdWJs
ZUNTRShub2RlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAogICAgICAgICBj
YXNlIEdldENhbGxlZToKICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRp
b24pCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjYxLDEzICsxMjM4LDE1IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CiAgICAgICAgICAgICBO
b2RlKiBkYXRhTm9kZSA9IHJlcGxhY2VtZW50LT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgICAg
ICBBU1NFUlQoZGF0YU5vZGUtPmhhc1Jlc3VsdCgpKTsKLSAgICAgICAgICAgIG5vZGUtPmNoaWxk
MSgpID0gRWRnZShkYXRhTm9kZSk7CisgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IGRhdGFO
b2RlLT5kZWZhdWx0RWRnZSgpOwogICAgICAgICAgICAgbV9ncmFwaC5kZXRocmVhZCgpOwogICAg
ICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgICAgICBjYXNlIERv
dWJsZUNvbnN0YW50OgorICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgICAgICBp
ZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgLy8gVGhpcyBpcyBzdHJhbmdlLCBidXQgbmVjZXNzYXJ5LiBTb21lIHBoYXNl
cyB3aWxsIGNvbnZlcnQgbm9kZXMgdG8gY29uc3RhbnRzLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIs
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKLSNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5j
bHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAi
SW50cmluc2ljLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDggQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIAogICAgIHN3aXRjaCAobm9kZS0+b3Ao
KSkgewogICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICBjYXNlIERvdWJsZUNvbnN0YW50OgorICAg
IGNhc2UgSW50NTJDb25zdGFudDoKICAgICBjYXNlIFdlYWtKU0NvbnN0YW50OgogICAgIGNhc2Ug
SWRlbnRpdHk6CiAgICAgY2FzZSBQaGFudG9tOgpAQCAtMTIzLDE1ICsxMjUsMTUgQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgSXNOdW1iZXI6CiAg
ICAgY2FzZSBJc1N0cmluZzoKICAgICBjYXNlIExvZ2ljYWxOb3Q6Ci0gICAgY2FzZSBJbnQzMlRv
RG91YmxlOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6Ci0gICAgY2FzZSBJbnQ1MlRv
RG91YmxlOgotICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoK
ICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgY2FzZSBVSW50MzJUb051bWJl
cjoKICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgY2FzZSBDaGVjazoKKyAgICBjYXNlIERv
dWJsZVJlcDoKKyAgICBjYXNlIFZhbHVlUmVwOgorICAgIGNhc2UgSW50NTJSZXA6CiAgICAgICAg
IHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBNb3ZIaW50OgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJl
dmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNiArMjk5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgb2xkVmFsdWUgPSBtX3N0YXRlLmZvck5vZGUo
bm9kZSk7CiAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIGNvbnN0YW50VmFsdWU7CiAgICAgICAg
ICAgICBjb25zdGFudFZhbHVlLnNldChtX2dyYXBoLCB2YWx1ZSk7CisgICAgICAgICAgICBjb25z
dGFudFZhbHVlLmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihub2RlKTsKICAgICAgICAgICAgIGlm
IChvbGRWYWx1ZS5tZXJnZShjb25zdGFudFZhbHVlKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RENFUGhhc2UuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0LDEzICsxOTQsMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3Ao
KSkgewogICAgICAgICAgICAgY2FzZSBNb3ZIaW50OiB7Ci0gICAgICAgICAgICAgICAgQVNTRVJU
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IG5vZGUtPmNoaWxkMSgpLT5kZWZh
dWx0VXNlS2luZCgpKTsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpLT5zaG91
bGRHZW5lcmF0ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVs
dEZsYWdzKFpvbWJpZUhpbnQpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9
IEVkZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKE1vdkhpbnQpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgd2lsbE5vdEhhdmVD
aGVjaygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gaXNQcm92ZWQoKSB8fCB1c2VLaW5k
KCkgPT0gVW50eXBlZFVzZTsKKyAgICAgICAgcmV0dXJuIGlzUHJvdmVkKCkgfHwgc2hvdWxkTm90
SGF2ZVR5cGVDaGVjayh1c2VLaW5kKCkpOwogICAgIH0KICAgICBib29sIHdpbGxIYXZlQ2hlY2so
KSBjb25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zW2ldLm1lcmdl
QXJndW1lbnRVbmJveGluZ0F3YXJlbmVzcygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBm
b3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJs
b2NrcygpOyArK2Jsb2NrSW5kZXgpCi0gICAgICAgICAgICAgICAgZml4dXBTZXRMb2NhbHNJbkJs
b2NrKG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCkpOworICAgICAgICAgICAgICAgIGZpeHVwR2V0
QW5kU2V0TG9jYWxzSW5CbG9jayhtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpKTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9j
a0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KQpAQCAtMTIzLDggKzEy
MywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5
KCk7CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlQ2FuU3BlY3VsYXRlSW50MzIobm9kZS0+YXJp
dGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRo
OjpDaGVja092ZXJmbG93KTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6RG9PdmVyZmxvdyk7Cisg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAt
MTM1LDEwICsxMzcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXJFeHBl
Y3RpbmdEZWZpbmVkKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgp
KSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0T3AoQXJpdGhBZGQpOwogICAgICAgICAgICAgICAgIG5vZGUt
PmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKKyAgICAg
ICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE3Nyw4ICsxODAs
OSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEFyaXRoU3ViOiB7CiAgICAgICAgICAgICBpZiAo
YXR0ZW1wdFRvTWFrZUludGVnZXJBZGQobm9kZSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVk
Z2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERv
dWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0
KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIApAQCAtMTk0LDE0ICsxOTgsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX2dyYXBoLm5lZ2F0ZVNob3Vs
ZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1h
Y2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGJ5dGVjb2Rl
Q2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAg
ICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOwogICAg
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2Rl
KEFyaXRoOjpDaGVja092ZXJmbG93QW5kTmVnYXRpdmVaZXJvKTsKKyAgICAgICAgICAgICAgICBu
b2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjE4LDE2ICsyMjQsMTgg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLm11bFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICAgICAgICAgIGlmIChieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0
aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFy
aXRoOjpDaGVja092ZXJmbG93KTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZl
WmVybyk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhF
ZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxOdW1i
ZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3Vi
bGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjQ2LDI0ICsyNTQsMzQg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShB
cml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJl
clVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNl
Pihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8g
VGhpcyB3aWxsIGNhdXNlIGNvbnZlcnNpb24gbm9kZXMgdG8gYmUgaW5zZXJ0ZWQgbGF0ZXIuCisg
ICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIEJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3Vy
ZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgcGhhbnRvbSdkIHVudGlsIGFmdGVyIHRoZQorICAgICAgICAg
ICAgICAgIC8vIERvdWJsZUFzSW50NDIgbm9kZSwgd2hpY2ggb2NjdXJzIGFmdGVyIHRoZSBEaXYv
TW9kIG5vZGUgdGhhdCB0aGUgY29udmVyc2lvbnMKKyAgICAgICAgICAgICAgICAvLyB3aWxsIGJl
IGluc2VyZWQgb24uCisgICAgICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKG5vZGUt
PmNoaWxkMigpLm5vZGUoKSk7CiAKICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRv
IGRvIHJlZidpbmcgb24gdGhlIGNoaWxkcmVuIGJlY2F1c2Ugd2UncmUgc3RlYWxpbmcgdGhlbSBm
cm9tCiAgICAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIGRpdmlzaW9uLgogICAgICAgICAg
ICAgICAgIE5vZGUqIG5ld0RpdmlzaW9uID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAg
ICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNEb3VibGUsICpub2RlKTsKKyAg
ICAgICAgICAgICAgICBuZXdEaXZpc2lvbi0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKERvdWJsZUFzSW50
MzIpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLmluaXRpYWxpemUoRWRnZShuZXdE
aXZpc2lvbiwgS25vd25OdW1iZXJVc2UpLCBFZGdlKCksIEVkZ2UoKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGRyZW4uaW5pdGlhbGl6ZShFZGdlKG5ld0RpdmlzaW9uLCBEb3VibGVSZXBV
c2UpLCBFZGdlKCksIEVkZ2UoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuSWdu
b3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAg
ICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOwogICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRo
OjpDaGVja092ZXJmbG93QW5kTmVnYXRpdmVaZXJvKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yNzUsOCArMjkzLDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJl
clVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjg2LDcgKzMwNSw4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVk
Z2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRS
ZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCkBAIC0yOTQsNyArMzE0LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBB
cml0aEZSb3VuZDoKICAgICAgICAgY2FzZSBBcml0aFNpbjoKICAgICAgICAgY2FzZSBBcml0aENv
czogewotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0zMDYsNyArMzI3LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQz
MigpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1i
ZXIoKSkKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3Ry
aW5nKCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzM3LDE0ICszNTgsMTQgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpCiAgICAgICAgICAgICAg
ICAgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1h
Y2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1h
Y2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1
MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxh
Z3MoTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkp
KSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJl
cnNXb3JsZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00MDIs
MTMgKzQyMywxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGVu
YWJsZUludDUyKCkKICAgICAgICAgICAgICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNo
aW5lSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6
c2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQy
KCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+
Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKQEAgLTUwMSw3ICs1MjIs
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkg
eworICAgICAgICAgICAgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CisgICAgICAgICAg
ICBzd2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlNl
bGVjdFVzaW5nUHJlZGljdGlvbnM6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpVbnByb2ZpbGVk
OgogICAgICAgICAgICAgY2FzZSBBcnJheTo6VW5kZWNpZGVkOgpAQCAtNTIwLDYgKzU0MiwzMCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCisgICAgICAgICAgICBzd2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKKyAgICAgICAg
ICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKKyAgICAgICAgICAgICAgICBpZiAoIWFycmF5TW9kZS5p
c091dE9mQm91bmRzKCkpCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2Rl
UmVzdWx0RG91YmxlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKKyAgICAgICAgICAgIGNhc2Ug
QXJyYXk6OkZsb2F0NjRBcnJheToKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9k
ZVJlc3VsdERvdWJsZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJBcnJheToKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQo
KSAmJiBlbmFibGVJbnQ1MigpKQorICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQo
Tm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKQEAgLTU1OSwxNCArNjA1LDE0IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGlmIChjaGlsZDMtPnByZWRp
Y3Rpb24oKSAmIFNwZWNJbnQ1MikKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5l
SW50VXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNl
PihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2Vs
bFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDIp
OwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8UmVhbE51bWJlclVzZT4oY2hpbGQzKTsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFJlYWxVc2U+KGNoaWxkMyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CiAgICAgICAg
ICAgICBjYXNlIEFycmF5OjpJbnQxNkFycmF5OgpAQCAtNTgwLDE1ICs2MjYsMTUgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQzLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQog
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDMpOwogICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGNoaWxkMy0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQotICAg
ICAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KGNoaWxkMyk7CisgICAgICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4oY2hpbGQzKTsK
KyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KGNoaWxkMyk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6
CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxLbm93bkNlbGxVc2U+KGNoaWxkMSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQzMlVzZT4oY2hpbGQyKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4oY2hp
bGQzKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4oY2hpbGQzKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6
CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CkBAIC02MzAsNyArNjc2LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpE
b3VibGU6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxSZWFsTnVtYmVyVXNlPihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBSZWFsVXNlPihub2RlLT5j
aGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5
OjpDb250aWd1b3VzOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgpAQCAt
NjYzLDcgKzcwOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgZml4RWRnZTxO
dW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJs
ZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogCiAgICAgICAgICAgICBOb2RlKiBsb2dpY2FsTm90
ID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICAgICAgaWYgKGxvZ2ljYWxOb3QtPm9w
KCkgPT0gTG9naWNhbE5vdCkgewpAQCAtNzYwLDcgKzgwNiw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQ
RVM6CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBvcGVyYW5kSW5kZXggPSAwOyBvcGVy
YW5kSW5kZXggPCBub2RlLT5udW1DaGlsZHJlbigpOyArK29wZXJhbmRJbmRleCkKLSAgICAgICAg
ICAgICAgICAgICAgZml4RWRnZTxSZWFsTnVtYmVyVXNlPihtX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgb3BlcmFuZEluZGV4XSk7CisgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8RG91YmxlUmVwUmVhbFVzZT4obV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW25v
ZGUtPmZpcnN0Q2hpbGQoKSArIG9wZXJhbmRJbmRleF0pOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKICAgICAg
ICAgICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfSU5ERVhJTkdfVFlQRVM6CkBAIC05NjEsMTYg
KzEwMDcsMTggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAg
ICAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgICAgICBjYXNlIENoZWNrVGllclVw
QW5kT1NSRW50ZXI6Ci0gICAgICAgIGNhc2UgSW50NTJUb0RvdWJsZToKLSAgICAgICAgY2FzZSBJ
bnQ1MlRvVmFsdWU6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAgICAgICAgIGNh
c2UgQ2hlY2tBcnJheToKICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgogICAgICAgICBjYXNl
IENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKLSAg
ICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgogICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAg
ICAgICAgY2FzZSBIYXJkUGhhbnRvbTogLy8gSGFyZFBoYW50b20gd291bGQgYmUgdHJpdmlhbCB0
byBoYW5kbGUgYnV0IGFueXdheSB3ZSBhc3NlcnQgdGhhdCB3ZSB3b24ndCBzZWUgaXQgaGVyZSB5
ZXQuCisgICAgICAgIGNhc2UgRG91YmxlUmVwOgorICAgICAgICBjYXNlIEludDUyUmVwOgorICAg
ICAgICBjYXNlIFZhbHVlUmVwOgorICAgICAgICBjYXNlIERvdWJsZUNvbnN0YW50OgorICAgICAg
ICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgICAgICAvLyBUaGVzZSBhcmUganVzdCBub2Rl
cyB0aGF0IHdlIGRvbid0IGN1cnJlbnRseSBleHBlY3QgdG8gc2VlIGR1cmluZyBmaXh1cC4KICAg
ICAgICAgICAgIC8vIElmIHdlIGV2ZXIgd2FudGVkIHRvIGluc2VydCB0aGVtIHByaW9yIHRvIGZp
eHVwLCB0aGVuIHdlIGp1c3QgaGF2ZSB0byBjcmVhdGUKICAgICAgICAgICAgIC8vIGZpeHVwIHJ1
bGVzIGZvciB0aGVtLgpAQCAtMTMxMiw3ICsxMzYwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIHZvaWQgZml4dXBTZXRMb2NhbHNJbkJsb2NrKEJh
c2ljQmxvY2sqIGJsb2NrKQorICAgIHZvaWQgZml4dXBHZXRBbmRTZXRMb2NhbHNJbkJsb2NrKEJh
c2ljQmxvY2sqIGJsb2NrKQogICAgIHsKICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTEzMjAsMjggKzEzNjgsNDkgQEAgcHJpdmF0ZToKICAgICAgICAgbV9ibG9j
ayA9IGJsb2NrOwogICAgICAgICBmb3IgKG1faW5kZXhJbkJsb2NrID0gMDsgbV9pbmRleEluQmxv
Y2sgPCBibG9jay0+c2l6ZSgpOyArK21faW5kZXhJbkJsb2NrKSB7CiAgICAgICAgICAgICBOb2Rl
KiBub2RlID0gbV9jdXJyZW50Tm9kZSA9IGJsb2NrLT5hdChtX2luZGV4SW5CbG9jayk7Ci0gICAg
ICAgICAgICBpZiAobm9kZS0+b3AoKSAhPSBTZXRMb2NhbCkKKyAgICAgICAgICAgIGlmIChub2Rl
LT5vcCgpICE9IFNldExvY2FsICYmIG5vZGUtPm9wKCkgIT0gR2V0TG9jYWwpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAg
IHN3aXRjaCAodmFyaWFibGUtPmZsdXNoRm9ybWF0KCkpIHsKLSAgICAgICAgICAgIGNhc2UgRmx1
c2hlZEpTVmFsdWU6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEZs
dXNoZWREb3VibGU6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgRmx1c2hl
ZEludDMyOgotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDUy
OgotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDoK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhcmlhYmxlLT5mbHVzaEZvcm1hdCgpKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgorICAgICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDUyOgorICAgICAgICAgICAgICAgICAg
ICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xlYW5V
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2Ug
U2V0TG9jYWw6CisgICAgICAgICAgICAgICAgc3dpdGNoICh2YXJpYWJsZS0+Zmx1c2hGb3JtYXQo
KSkgeworICAgICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRmx1c2hlZERvdWJsZToKKyAgICAg
ICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50
MzI6CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVz
aGVkSW50NTI6CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9v
bGVhblVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDY3LDcgKzE1MzYsOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1l
cmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIE51bWJlclVzZToKLSAgICAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgorICAgICAgICBj
YXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgogICAgICAg
ICAgICAgaWYgKHZhcmlhYmxlLT5kb3VibGVGb3JtYXRTdGF0ZSgpID09IFVzaW5nRG91YmxlRm9y
bWF0KQogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUt
Pm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTQ3Niw3ICsxNTQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB8fCBpc0Jvb2xlYW5T
cGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkKICAgICAgICAgICAgICAgICBtX3By
b2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3go
dHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgor
ICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgaWYgKGlzTWFjaGluZUludFNw
ZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQogICAgICAgICAgICAgICAgIG1fcHJv
Zml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0
cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTUxOSw5ICsxNTg5LDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgCiAgICAgICAgIFVzZUtpbmQgdXNlS2luZDsKICAgICAgICAgaWYgKG5vZGUtPnNo
b3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkKLSAgICAgICAgICAgIHVzZUtpbmQgPSBNYWNoaW5l
SW50VXNlOworICAgICAgICAgICAgdXNlS2luZCA9IEludDUyUmVwVXNlOwogICAgICAgICBlbHNl
IGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkKLSAgICAgICAgICAgIHVzZUtpbmQg
PSBOdW1iZXJVc2U7CisgICAgICAgICAgICB1c2VLaW5kID0gRG91YmxlUmVwVXNlOwogICAgICAg
ICBlbHNlIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpCiAgICAgICAgICAgICB1
c2VLaW5kID0gQm9vbGVhblVzZTsKICAgICAgICAgZWxzZQpAQCAtMTU4OSw5ICsxNjU5LDEwIEBA
IHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNo
b3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAgICAgICAgICAgIGZpeEVkZ2U8TWFj
aGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5l
SW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2Rl
LT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNr
T3ZlcmZsb3cpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTE3MjQs
MTA5ICsxNzk1LDE0OSBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKG1faW5kZXhJbkJsb2NrID0g
MDsgbV9pbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK21faW5kZXhJbkJsb2NrKSB7CiAg
ICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gYmxvY2stPmF0KG1faW5kZXhJbkJsb2NrKTsKICAg
ICAgICAgICAgIGFkZFBoYW50b21zSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIGlmIChtX2N1
cnJlbnROb2RlLT5jb250YWluc01vdkhpbnQoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIHRyeVRvUmVsYXhSZXByZXNlbnRhdGlvbihtX2N1cnJlbnROb2RlKTsKICAg
ICAgICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG1fY3VycmVudE5vZGUs
IGluamVjdFR5cGVDb252ZXJzaW9uc0ZvckVkZ2UpOwogICAgICAgICB9CiAgICAgICAgIGNsZWFy
UGhhbnRvbXNBdEVuZCgpOwogICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsK
ICAgICB9CiAgICAgCisgICAgdm9pZCB0cnlUb1JlbGF4UmVwcmVzZW50YXRpb24oTm9kZSogbm9k
ZSkKKyAgICB7CisgICAgICAgIC8vIFNvbWUgb3BlcmF0aW9ucyBtYXkgYmUgYWJsZSB0byBvcGVy
YXRlIG1vcmUgZWZmaWNpZW50bHkgb3ZlciBsb29zZXIgcmVwcmVzZW50YXRpb25zLgorICAgICAg
ICAvLyBJZGVudGlmeSB0aG9zZSBoZXJlLiBUaGlzIGF2b2lkcyBpbnNlcnRpbmcgYSByZWR1bmRh
bnQgcmVwcmVzZW50YXRpb24gY29udmVyc2lvbi4KKyAgICAgICAgLy8gQWxzbywgZm9yIHNvbWUg
b3BlcmF0aW9ucywgbGlrZSBNb3ZIaW50LCB0aGlzIGlzIGEgbmVjZXNzYXJ5IG9wdGltaXphdGlv
bjogaW5zZXJ0aW5nCisgICAgICAgIC8vIGFuIG90aGVyd2lzZS1kZWFkIGNvbnZlcnNpb24ganVz
dCBmb3IgYSBNb3ZIaW50IHdvdWxkIGJyZWFrIE9TUidzIHVuZGVyc3RhbmRpbmcgb2YKKyAgICAg
ICAgLy8gdGhlIElSLgorICAgICAgICAKKyAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Cisg
ICAgICAgIGNhc2UgTW92SGludDoKKyAgICAgICAgY2FzZSBQaGFudG9tOgorICAgICAgICBjYXNl
IENoZWNrOgorICAgICAgICBjYXNlIEhhcmRQaGFudG9tOgorICAgICAgICAgICAgREZHX05PREVf
RE9fVE9fQ0hJTERSRU4obV9ncmFwaCwgbV9jdXJyZW50Tm9kZSwgZml4RWRnZVJlcHJlc2VudGF0
aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgVmFs
dWVUb0ludDMyOgorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBE
b3VibGVSZXBVc2UKKyAgICAgICAgICAgICAgICAmJiAhbm9kZS0+Y2hpbGQxKCktPmhhc0RvdWJs
ZVJlc3VsdCgpKSB7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkuc2V0VXNlS2luZChO
dW1iZXJVc2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgZml4RWRnZVJlcHJlc2Vu
dGF0aW9uKE5vZGUqLCBFZGdlJiBlZGdlKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChlZGdlLnVz
ZUtpbmQoKSkgeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgY2FzZSBEb3Vi
bGVSZXBSZWFsVXNlOgorICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZWRn
ZS0+aGFzSW50NTJSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBlZGdlLnNldFVzZUtpbmQoSW50
NTJSZXBVc2UpOworICAgICAgICAgICAgZWxzZSBpZiAoZWRnZS51c2VLaW5kKCkgPT0gRG91Ymxl
UmVwVXNlKQorICAgICAgICAgICAgICAgIGVkZ2Uuc2V0VXNlS2luZChOdW1iZXJVc2UpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToK
KyAgICAgICAgICAgIC8vIE5vdGhpbmcgd2UgY2FuIHJlYWxseSBkby4KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgVW50eXBlZFVzZToKKyAgICAgICAgICAg
IGlmIChlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBlZGdlLnNldFVz
ZUtpbmQoRG91YmxlUmVwVXNlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVkZ2UtPmhhc0ludDUy
UmVzdWx0KCkpCisgICAgICAgICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKEludDUyUmVwVXNlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAKICAgICB2b2lkIGluamVjdFR5
cGVDb252ZXJzaW9uc0ZvckVkZ2UoTm9kZSogbm9kZSwgRWRnZSYgZWRnZSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChub2RlID09IG1fY3VycmVudE5vZGUpOwogICAgICAgICAKLSAgICAgICAgaWYg
KGlzRG91YmxlKGVkZ2UudXNlS2luZCgpKSkgewotICAgICAgICAgICAgaWYgKGVkZ2UtPnNob3Vs
ZFNwZWN1bGF0ZUludDMyRm9yQXJpdGhtZXRpYygpKSB7Ci0gICAgICAgICAgICAgICAgYWRkUmVx
dWlyZWRQaGFudG9tKGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAg
ICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDUyQXNEb3VibGUsIEludDMyVG9Eb3Vi
bGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwg
TnVtYmVyVXNlKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZWRnZS5zZXRO
b2RlKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAg
ICAgICBzd2l0Y2ggKGVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OgorICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6IHsKKyAgICAgICAgICAgIGlmIChlZGdl
LT5oYXNEb3VibGVSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRl
TWFjaGluZUludCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gTWFrZSBhbGwgZG91YmxlIHVzZXMg
b2YgaW50NTIgdmFsdWVzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIEludDUyVG9Eb3VibGUuCi0gICAg
ICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIEludDUyVG9WYWx1
ZSAoc2VlIGJlbG93KSBleGNlcHQgdGhhdAotICAgICAgICAgICAgICAgIC8vIEludDhUb0RvdWJs
ZSB3aWxsIGNvbnZlcnQgaW50NTIncyB0aGF0IGZpdCBpbiBhbiBpbnQzMiBpbnRvIGEgZG91Ymxl
Ci0gICAgICAgICAgICAgICAgLy8gcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGNyZWF0ZSBhIGJveGVk
IGludDMyIGxpa2UgSW50NTJUb1ZhbHVlIGRvZXMuCi0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgICAgICAg
ICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDUyQXNEb3VibGUsIEludDUyVG9Eb3VibGUs
Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTnVt
YmVyVXNlKSk7Ci0gICAgICAgICAgICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9k
ZSgpKTsKKworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKGVkZ2Ut
Pmhhc0ludDUyUmVzdWx0KCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y0ludDUyQXNEb3VibGUsIERvdWJsZVJlcCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBJbnQ1MlJlcFVzZSkpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAor
ICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0RvdWJsZSwgRG91YmxlUmVw
LCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIE51
bWJlclVzZSkpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlZGdlLnNldE5vZGUocmVz
dWx0KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBp
ZiAoZW5hYmxlSW50NTIoKSAmJiBlZGdlLnVzZUtpbmQoKSAhPSBNYWNoaW5lSW50VXNlCi0gICAg
ICAgICAgICAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkgJiYgIWVkZ2UtPnNo
b3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIG1ha2UgYWxsIG5vbi1p
bnQ1MiB1c2VzIG9mIGludDUyIHZhbHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJbnQ1MlRvVmFs
dWUKLSAgICAgICAgICAgIC8vIG5vZGUgdG8gZW5zdXJlIHRoYXQgd2UgaGFuZGxlIHRoaXMgcHJv
cGVybHk6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29tZUludDUyCi0gICAg
ICAgICAgICAvLyBiOiBBcml0aEFkZChAYSwgLi4uKQotICAgICAgICAgICAgLy8gYzogQ2FsbCgu
Li4sIEBhKQotICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoQGEsIC4uLikKLSAgICAgICAgICAg
IC8vCi0gICAgICAgICAgICAvLyBXaXRob3V0IGFuIGludGVybWVkaWF0ZSBub2RlIGFuZCBqdXN0
IGxhYmVsaW5nIHRoZSB1c2VzLCB3ZSB3aWxsIGdldDoKLSAgICAgICAgICAgIC8vCi0gICAgICAg
ICAgICAvLyBhOiBTb21lSW50NTIKLSAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEludDUyOkBh
LCAuLi4pCi0gICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgVW50eXBlZDpAYSkKLSAgICAgICAg
ICAgIC8vIGQ6IEFyaXRoQWRkKEludDUyOkBhLCAuLi4pCi0gICAgICAgICAgICAvLwotICAgICAg
ICAgICAgLy8gQW5kIG5vdyB0aGUgYy0+VW50eXBlZDpAYSBlZGdlIHdpbGwgYm94IHRoZSB2YWx1
ZSBvZiBAYSBpbnRvIGEgZG91YmxlLiBUaGlzCi0gICAgICAgICAgICAvLyBpcyBiYWQsIGJlY2F1
c2Ugbm93IHRoZSBkLT5JbnQ1MjpAYSBlZGdlIHdpbGwgZWl0aGVyIGhhdmUgdG8gZG8gZG91Ymxl
LXRvLWludAotICAgICAgICAgICAgLy8gY29udmVyc2lvbnMsIG9yIHdpbGwgaGF2ZSB0byBPU1Ig
ZXhpdCB1bmNvbmRpdGlvbmFsbHkuIEFsdGVybmF0aXZlbHkgd2UgY291bGQKLSAgICAgICAgICAg
IC8vIGhhdmUgdGhlIGMtPlVudHlwZWQ6QGEgZWRnZSBib3ggdGhlIHZhbHVlIGJ5IGNvcHlpbmcg
cmF0aGVyIHRoYW4gaW4tcGxhY2UuCi0gICAgICAgICAgICAvLyBCdXQgdGhlc2UgYm94aW5ncyBh
cmUgYWxzbyBjb3N0bHkgc28gdGhpcyB3b3VsZG4ndCBiZSBncmVhdC4KLSAgICAgICAgICAgIC8v
Ci0gICAgICAgICAgICAvLyBUaGUgc29sdXRpb24gd2UgdXNlIGlzIHRvIGFsd2F5cyBoYXZlIG5v
bi1JbnQ1MiB1c2VzIG9mIHByZWRpY3RlZCBJbnQ1MidzIHVzZQotICAgICAgICAgICAgLy8gYW4g
aW50ZXJ2ZW5pbmcgSW50NTJUb1ZhbHVlIG5vZGU6Ci0gICAgICAgICAgICAvLwotICAgICAgICAg
ICAgLy8gYTogU29tZUludDUyCi0gICAgICAgICAgICAvLyBiOiBBcml0aEFkZChJbnQ1MjpAYSwg
Li4uKQotICAgICAgICAgICAgLy8geDogSW50NTJUb1ZhbHVlKEludDUyOkBhKQotICAgICAgICAg
ICAgLy8gYzogQ2FsbCguLi4sIFVudHlwZWQ6QHgpCi0gICAgICAgICAgICAvLyBkOiBBcml0aEFk
ZChJbnQ1MjpAYSwgLi4uKQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIE5vdGUgdGhh
dCBldmVuIGlmIHdlIGhhZCBtdWx0aXBsZSBub24taW50NTIgdXNlcyBvZiBAYSwgdGhlIG11bHRp
cGxlCi0gICAgICAgICAgICAvLyBJbnQ1MlRvVmFsdWUncyB3b3VsZCBnZXQgQ1NFJ2QgdG9nZXRo
ZXIuIFNvIHRoZSBib3hpbmcgd291bGQgb25seSBoYXBwZW4gb25jZS4KLSAgICAgICAgICAgIC8v
IEF0IHRoZSBzYW1lIHRpbWUsIEBhIHdvdWxkIGNvbnRpbnVlIHRvIGJlIHJlcHJlc2VudGVkIGFz
IGEgbmF0aXZlIGludDUyLgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIEFuIGFsdGVy
bmF0aXZlIHdvdWxkIGhhdmUgYmVlbiB0byBpbnNlcnQgVG9OYXRpdmVJbnQ1MiBub2RlcyBvbiBp
bnQ1MiB1c2VzIG9mCi0gICAgICAgICAgICAvLyBpbnQ1MidzLiBUaGlzIHdvdWxkIGhhdmUgaGFu
ZGxlZCB0aGUgYWJvdmUgZXhhbXBsZSBidXQgd291bGQgZmFsbCBvdmVyIGZvcjoKLSAgICAgICAg
ICAgIC8vCi0gICAgICAgICAgICAvLyBhOiBTb21lSW50NTIKLSAgICAgICAgICAgIC8vIGI6IENh
bGwoLi4uLCBAYSkKLSAgICAgICAgICAgIC8vIGM6IEFyaXRoQWRkKEBhLCAuLi4pCi0gICAgICAg
ICAgICAvLwotICAgICAgICAgICAgLy8gQnV0IHRoZSBzb2x1dGlvbiB3ZSB1c2UgaGFuZGxlcyB0
aGUgYWJvdmUgZ3JhY2VmdWxseS4KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEludDUyUmVw
VXNlOiB7CisgICAgICAgICAgICBpZiAoZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFu
dG9tKGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1
MiwgSW50NTJUb1ZhbHVlLAotICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbiwgRWRnZShlZGdl
Lm5vZGUoKSwgVW50eXBlZFVzZSkpOworCisgICAgICAgICAgICBOb2RlKiByZXN1bHQ7CisgICAg
ICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpIHsKKyAgICAgICAgICAgICAgICAv
LyBUaGlzIHdpbGwgbmV2ZXIgaGFwcGVuLgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGVkZ2UtPnNob3VsZFNwZWN1
bGF0ZUludDMyRm9yQXJpdGhtZXRpYygpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxv
Y2ssIFNwZWNJbnQzMiwgSW50NTJSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgRWRnZShlZGdlLm5vZGUoKSwgSW50MzJVc2UpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGhlcmUgZm9yIGRlYWxpbmcgd2l0aCBjb25z
dGFudHMuCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZWRnZS0+b3AoKSA9PSBKU0Nv
bnN0YW50KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY01hY2hpbmVJbnQs
IEludDUyQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZv
KGVkZ2UtPmNvbnN0YW50TnVtYmVyKCkpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
ZWRnZS5zZXROb2RlKHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAg
ICAgICAgIGlmICghZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkgJiYgIWVkZ2UtPmhhc0ludDUyUmVz
dWx0KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIE5vZGUqIHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1bHQo
KSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjRG91YmxlLCBWYWx1ZVJl
cCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBE
b3VibGVSZXBVc2UpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVz
dWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9p
bmRleEluQmxvY2ssIFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91YmxlLCBWYWx1ZVJlcCwgbm9k
ZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBJbnQ1MlJl
cFVzZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBlZGdlLnNl
dE5vZGUocmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IH0KICAgICB9CiAg
ICAgCiAgICAgdm9pZCBhZGRSZXF1aXJlZFBoYW50b20oTm9kZSogbm9kZSkKICAgICB7Ci0gICAg
ICAgIGlmICghbV9jb2RlT3JpZ2luT2ZQaGFudG9tcykgewotICAgICAgICAgICAgQVNTRVJUKG1f
cmVxdWlyZWRQaGFudG9tcy5pc0VtcHR5KCkpOwotICAgICAgICAgICAgbV9jb2RlT3JpZ2luT2ZQ
aGFudG9tcyA9IG1fY3VycmVudE5vZGUtPm9yaWdpbi5mb3JFeGl0OwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgQVNTRVJUKCFtX3JlcXVpcmVkUGhhbnRvbXMuaXNFbXB0eSgpKTsKLSAg
ICAgICAgICAgIEFTU0VSVChtX2NvZGVPcmlnaW5PZlBoYW50b21zID09IG1fY3VycmVudE5vZGUt
Pm9yaWdpbi5mb3JFeGl0KTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgbV9yZXF1aXJl
ZFBoYW50b21zLmFwcGVuZChub2RlKTsKICAgICB9CiAKQEAgLTE4MzUsMTkgKzE5NDYsMTQgQEAg
cHJpdmF0ZToKICAgICAgICAgaWYgKG1fcmVxdWlyZWRQaGFudG9tcy5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCghIW1fY29k
ZU9yaWdpbk9mUGhhbnRvbXMpOwotICAgICAgICAKLSAgICAgICAgaWYgKG1fY3VycmVudE5vZGUt
Pm9yaWdpbi5mb3JFeGl0ID09IG1fY29kZU9yaWdpbk9mUGhhbnRvbXMpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3JlcXVpcmVkUGhh
bnRvbXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9yZXF1aXJl
ZFBoYW50b21zW2ldOwogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAg
ICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIE5vZGVPcmln
aW4obV9jb2RlT3JpZ2luT2ZQaGFudG9tcyksCi0gICAgICAgICAgICAgICAgRWRnZShtX3JlcXVp
cmVkUGhhbnRvbXNbaV0sIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2luZGV4SW5C
bG9jaywgU3BlY05vbmUsIFBoYW50b20sIG1fY3VycmVudE5vZGUtPm9yaWdpbiwKKyAgICAgICAg
ICAgICAgICBub2RlLT5kZWZhdWx0RWRnZSgpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgbV9yZXF1aXJlZFBoYW50b21zLnJlc2l6ZSgwKTsKLSAgICAgICAgbV9jb2RlT3JpZ2luT2ZQ
aGFudG9tcyA9IENvZGVPcmlnaW4oKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjbGVhclBoYW50
b21zQXRFbmQoKQpAQCAtMTg2Myw3ICsxOTY5LDYgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjc3OAogICAgICAgICAKICAg
ICAgICAgbV9yZXF1aXJlZFBoYW50b21zLnJlc2l6ZSgwKTsKLSAgICAgICAgbV9jb2RlT3JpZ2lu
T2ZQaGFudG9tcyA9IENvZGVPcmlnaW4oKTsKICAgICB9CiAgICAgCiAgICAgQmFzaWNCbG9jayog
bV9ibG9jazsKQEAgLTE4NzEsNyArMTk3Niw2IEBAIHByaXZhdGU6CiAgICAgTm9kZSogbV9jdXJy
ZW50Tm9kZTsKICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CiAgICAgYm9vbCBtX3By
b2ZpdGFiaWxpdHlDaGFuZ2VkOwotICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luT2ZQaGFudG9t
czsKICAgICBWZWN0b3I8Tm9kZSosIDM+IG1fcmVxdWlyZWRQaGFudG9tczsKIH07CiAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZpc2lv
biAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTYyLDcgKzYyLDcgQEAgaW5saW5lIE5vZGVGbGFncyByZXN1bHRGb3Io
Rmx1c2hGb3JtYXQgZgogICAgIGNhc2UgRmx1c2hlZEludDUyOgogICAgICAgICByZXR1cm4gTm9k
ZVJlc3VsdEludDUyOwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAgICAgcmV0dXJuIE5v
ZGVSZXN1bHROdW1iZXI7CisgICAgICAgIHJldHVybiBOb2RlUmVzdWx0RG91YmxlOwogICAgIGNh
c2UgRmx1c2hlZEJvb2xlYW46CiAgICAgICAgIHJldHVybiBOb2RlUmVzdWx0Qm9vbGVhbjsKICAg
ICB9CkBAIC04Myw5ICs4Myw5IEBAIGlubGluZSBVc2VLaW5kIHVzZUtpbmRGb3IoRmx1c2hGb3Jt
YXQgZm8KICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgcmV0dXJuIEludDMyVXNlOwog
ICAgIGNhc2UgRmx1c2hlZEludDUyOgotICAgICAgICByZXR1cm4gTWFjaGluZUludFVzZTsKKyAg
ICAgICAgcmV0dXJuIEludDUyUmVwVXNlOwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAg
ICAgcmV0dXJuIE51bWJlclVzZTsKKyAgICAgICAgcmV0dXJuIERvdWJsZVJlcFVzZTsKICAgICBj
YXNlIEZsdXNoZWRCb29sZWFuOgogICAgICAgICByZXR1cm4gQm9vbGVhblVzZTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTY3Mjcy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQs
IGNvbnN0CiAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KEpTVmFsdWUobm9kZS0+
dHlwZWRBcnJheSgpKSwgY29udGV4dCkpOwogICAgIGlmIChub2RlLT5oYXNTdG9yYWdlUG9pbnRl
cigpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIFJhd1BvaW50ZXIobm9kZS0+c3RvcmFnZVBv
aW50ZXIoKSkpOwotICAgIGlmIChvcCA9PSBKU0NvbnN0YW50KSB7CisgICAgaWYgKG5vZGUtPmlz
Q29uc3RhbnQoKSkgewogICAgICAgICBvdXQucHJpbnQoY29tbWEsICIkIiwgbm9kZS0+Y29uc3Rh
bnROdW1iZXIoKSk7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSB2YWx1ZU9mSlNDb25zdGFudChu
b2RlKTsKICAgICAgICAgb3V0LnByaW50KCIgPSAiLCBpbkNvbnRleHQodmFsdWUsIGNvbnRleHQp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE2NzI3
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5
KQpAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkRGR05vZGVBbGxvY2F0b3IuaCIKICNpbmNs
dWRlICJERkdQbGFuLmgiCiAjaW5jbHVkZSAiREZHU2Nhbm5hYmxlLmgiCi0jaW5jbHVkZSAiREZH
VmFyaWFkaWNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIklubGluZUNhbGxGcmFtZVNldC5oIgogI2lu
Y2x1ZGUgIkpTU3RhY2suaCIKICNpbmNsdWRlICJNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmgiCkBAIC0xMzYsMTUgKzEzNSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCghY2hpbGQt
Pm1pc2MucmVwbGFjZW1lbnQpOwogICAgIH0KICAgICAKLSNkZWZpbmUgREZHX0RFRklORV9BRERf
Tk9ERSh0ZW1wbGF0ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1zLCB2YWx1ZVBhcmFtc0Nv
bW1hLCB2YWx1ZVBhcmFtcywgdmFsdWVBcmdzKSBcCi0gICAgdGVtcGxhdGVQcmUgdHlwZVBhcmFt
cyB0ZW1wbGF0ZVBvc3QgTm9kZSogYWRkTm9kZShTcGVjdWxhdGVkVHlwZSB0eXBlIHZhbHVlUGFy
YW1zQ29tbWEgdmFsdWVQYXJhbXMpIFwKLSAgICB7IFwKLSAgICAgICAgTm9kZSogbm9kZSA9IG5l
dyAobV9hbGxvY2F0b3IpIE5vZGUodmFsdWVBcmdzKTsgXAotICAgICAgICBub2RlLT5wcmVkaWN0
KHR5cGUpOyBcCi0gICAgICAgIHJldHVybiBub2RlOyBcCisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gUGFyYW1zPgorICAgIE5vZGUqIGFkZE5vZGUoU3BlY3VsYXRlZFR5cGUgdHlwZSwgUGFyYW1z
Li4uIHBhcmFtcykKKyAgICB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBuZXcgKG1fYWxsb2NhdG9y
KSBOb2RlKHBhcmFtcy4uLik7CisgICAgICAgIG5vZGUtPnByZWRpY3QodHlwZSk7CisgICAgICAg
IHJldHVybiBub2RlOwogICAgIH0KLSAgICBERkdfVkFSSUFESUNfVEVNUExBVEVfRlVOQ1RJT04o
REZHX0RFRklORV9BRERfTk9ERSkKLSN1bmRlZiBERkdfREVGSU5FX0FERF9OT0RFCiAKICAgICB2
b2lkIGRldGhyZWFkKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTY3MjcyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1NSwxNCArMTU1LDIzIEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0
U3RhdGU6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5sb2Nh
bChpKS5jbGVhcigpOwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5j
bGVhcigpOwogICAgICAgICB9CisgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCisg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGJsb2NrLT5ieXRlY29kZUJlZ2luICE9
IG1fZ3JhcGgubV9wbGFuLm9zckVudHJ5Qnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ3JhcGgubV9tdXN0SGFuZGxl
QWJzdHJhY3RWYWx1ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIEFic3RyYWN0VmFsdWUg
dmFsdWUgPSBtX2dyYXBoLm1fbXVzdEhhbmRsZUFic3RyYWN0VmFsdWVzW2ldOwogICAgICAgICAg
ICAgaW50IG9wZXJhbmQgPSBtX2dyYXBoLm1fbXVzdEhhbmRsZUFic3RyYWN0VmFsdWVzLm9wZXJh
bmRGb3JJbmRleChpKTsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQub3BlcmFuZChv
cGVyYW5kKS5tZXJnZSh2YWx1ZSk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPnZh
cmlhYmxlc0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpOworICAgICAgICAgICAgaWYgKCFub2RlKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1
ZSA9IG1fZ3JhcGgubV9tdXN0SGFuZGxlQWJzdHJhY3RWYWx1ZXNbaV07CisgICAgICAgICAgICBB
YnN0cmFjdFZhbHVlJiBhYnN0cmFjdFZhbHVlID0gYmxvY2stPnZhbHVlc0F0SGVhZC5vcGVyYW5k
KG9wZXJhbmQpOworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5v
ZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0
ID0gdmFyaWFibGUtPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICBhYnN0cmFjdFZhbHVlLm1l
cmdlKHZhbHVlKTsKKyAgICAgICAgICAgIGFic3RyYWN0VmFsdWUuZml4VHlwZUZvclJlcHJlc2Vu
dGF0aW9uKHJlc3VsdEZvcihmb3JtYXQpKTsKICAgICAgICAgfQogICAgICAgICBibG9jay0+Y2Zh
U2hvdWxkUmV2aXNpdCA9IHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0luc2VydGlvblNldC5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC01NCwyNyArNTQsNDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGluc2Vy
dChJbnNlcnRpb24oaW5kZXgsIGVsZW1lbnQpKTsKICAgICB9Ci0gICAgCi0jZGVmaW5lIERGR19E
RUZJTkVfSU5TRVJUX05PREUodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywg
dmFsdWVQYXJhbXNDb21tYSwgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykgXAotICAgIHRlbXBsYXRl
UHJlIHR5cGVQYXJhbXMgdGVtcGxhdGVQb3N0IE5vZGUqIGluc2VydE5vZGUoc2l6ZV90IGluZGV4
LCBTcGVjdWxhdGVkVHlwZSB0eXBlIHZhbHVlUGFyYW1zQ29tbWEgdmFsdWVQYXJhbXMpIFwKLSAg
ICB7IFwKLSAgICAgICAgcmV0dXJuIGluc2VydChpbmRleCwgbV9ncmFwaC5hZGROb2RlKHR5cGUg
dmFsdWVQYXJhbXNDb21tYSB2YWx1ZUFyZ3MpKTsgXAorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gUGFyYW1zPgorICAgIE5vZGUqIGluc2VydE5vZGUoc2l6ZV90IGluZGV4LCBTcGVjdWxhdGVk
VHlwZSB0eXBlLCBQYXJhbXMuLi4gcGFyYW1zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2Vy
dChpbmRleCwgbV9ncmFwaC5hZGROb2RlKHR5cGUsIHBhcmFtcy4uLikpOwogICAgIH0KLSAgICBE
RkdfVkFSSUFESUNfVEVNUExBVEVfRlVOQ1RJT04oREZHX0RFRklORV9JTlNFUlRfTk9ERSkKLSN1
bmRlZiBERkdfREVGSU5FX0lOU0VSVF9OT0RFCiAgICAgCi0gICAgTm9kZSogaW5zZXJ0Q29uc3Rh
bnQoc2l6ZV90IGluZGV4LCBOb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZSB2YWx1ZSkKKyAgICBO
b2RlKiBpbnNlcnRDb25zdGFudCgKKyAgICAgICAgc2l6ZV90IGluZGV4LCBOb2RlT3JpZ2luIG9y
aWdpbiwgSlNWYWx1ZSB2YWx1ZSwKKyAgICAgICAgTm9kZVR5cGUgb3AgPSBKU0NvbnN0YW50KQog
ICAgIHsKICAgICAgICAgdW5zaWduZWQgY29uc3RhbnRSZWcgPQogICAgICAgICAgICAgbV9ncmFw
aC5jb25zdGFudFJlZ2lzdGVyRm9yQ29uc3RhbnQodmFsdWUpOwogICAgICAgICByZXR1cm4gaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgIGluZGV4LCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSks
IEpTQ29uc3RhbnQsIG9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyhjb25zdGFudFJlZykpOwor
ICAgICAgICAgICAgaW5kZXgsIHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKSwgb3AsIG9yaWdp
biwgT3BJbmZvKGNvbnN0YW50UmVnKSk7CisgICAgfQorICAgIAorICAgIE5vZGUqIGluc2VydENv
bnN0YW50KAorICAgICAgICBzaXplX3QgaW5kZXgsIENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVl
IHZhbHVlLCBOb2RlVHlwZSBvcCA9IEpTQ29uc3RhbnQpCisgICAgeworICAgICAgICByZXR1cm4g
aW5zZXJ0Q29uc3RhbnQoaW5kZXgsIE5vZGVPcmlnaW4ob3JpZ2luKSwgdmFsdWUsIG9wKTsKKyAg
ICB9CisgICAgCisgICAgRWRnZSBpbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgc2l6ZV90
IGluZGV4LCBOb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZSB2YWx1ZSwgVXNlS2luZCB1c2VLaW5k
KQorICAgIHsKKyAgICAgICAgTm9kZVR5cGUgb3A7CisgICAgICAgIGlmIChpc0RvdWJsZSh1c2VL
aW5kKSkKKyAgICAgICAgICAgIG9wID0gRG91YmxlQ29uc3RhbnQ7CisgICAgICAgIGVsc2UgaWYg
KHVzZUtpbmQgPT0gSW50NTJSZXBVc2UpCisgICAgICAgICAgICBvcCA9IEludDUyQ29uc3RhbnQ7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG9wID0gSlNDb25zdGFudDsKKyAgICAgICAgcmV0
dXJuIEVkZ2UoaW5zZXJ0Q29uc3RhbnQoaW5kZXgsIG9yaWdpbiwgdmFsdWUsIG9wKSwgdXNlS2lu
ZCk7CiAgICAgfQogICAgIAotICAgIE5vZGUqIGluc2VydENvbnN0YW50KHNpemVfdCBpbmRleCwg
Q29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWUgdmFsdWUpCisgICAgRWRnZSBpbnNlcnRDb25zdGFu
dEZvclVzZSgKKyAgICAgICAgc2l6ZV90IGluZGV4LCBDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1
ZSB2YWx1ZSwgVXNlS2luZCB1c2VLaW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGluc2VydENv
bnN0YW50KGluZGV4LCBOb2RlT3JpZ2luKG9yaWdpbiksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IGluc2VydENvbnN0YW50Rm9yVXNlKGluZGV4LCBOb2RlT3JpZ2luKG9yaWdpbiksIHZhbHVlLCB1
c2VLaW5kKTsKICAgICB9CiAKICAgICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1Bo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3MCwxMCArMzcwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghYWRk
ZW5kKQogICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5ub2RlKCk7CiAgICAgICAgIHJldHVybiBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbm9kZUluZGV4LCBzb3VyY2Ut
PnByZWRpY3Rpb24oKSwgQXJpdGhBZGQsIG9yaWdpbiwgT3BJbmZvKGFyaXRoTW9kZSksCi0gICAg
ICAgICAgICBzb3VyY2UsIEVkZ2UoCi0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Q29uc3RhbnQobm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKGFkZGVuZCkpLAotICAgICAg
ICAgICAgICAgIHNvdXJjZS51c2VLaW5kKCkpKTsKKyAgICAgICAgICAgIG5vZGVJbmRleCwgc291
cmNlLT5wcmVkaWN0aW9uKCksIHNvdXJjZS0+cmVzdWx0KCksCisgICAgICAgICAgICBBcml0aEFk
ZCwgb3JpZ2luLCBPcEluZm8oYXJpdGhNb2RlKSwgc291cmNlLAorICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgbm9kZUluZGV4
LCBvcmlnaW4sIGpzTnVtYmVyKGFkZGVuZCksIHNvdXJjZS51c2VLaW5kKCkpKTsKICAgICB9CiAg
ICAgCiAgICAgTm9kZSogaW5zZXJ0TXVzdEFkZCgKQEAgLTM4MSw3ICszODEsNyBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gaW5zZXJ0QWRkKG5vZGVJbmRleCwgb3Jp
Z2luLCBzb3VyY2UsIGFkZGVuZCk7CiAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
Ci0gICAgICAgICAgICBub2RlSW5kZXgsIFNwZWNOb25lLCBIYXJkUGhhbnRvbSwgb3JpZ2luLCBF
ZGdlKHJlc3VsdCwgVW50eXBlZFVzZSkpOworICAgICAgICAgICAgbm9kZUluZGV4LCBTcGVjTm9u
ZSwgSGFyZFBoYW50b20sIG9yaWdpbiwgcmVzdWx0LT5kZWZhdWx0RWRnZSgpKTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDIyIEBAIGJvb2wgTm9k
ZTo6aGFzVmFyaWFibGVBY2Nlc3NEYXRhKEdyYXBoJiAKICAgICB9CiB9CiAKK3ZvaWQgTm9kZTo6
Y29udmVydFRvSWRlbnRpdHkoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGNoaWxkMSgpKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVCghY2hpbGQyKCkpOworICAgIC8vIENhbm9uaWNhbGl6ZSB0aGUgcmVz
dWx0IHR5cGUuCisgICAgTm9kZUZsYWdzIHJlc3VsdDsKKyAgICBpZiAoaGFzRG91YmxlUmVzdWx0
KCkpCisgICAgICAgIHJlc3VsdCA9IE5vZGVSZXN1bHREb3VibGU7CisgICAgZWxzZSBpZiAoaGFz
SW50NTJSZXN1bHQoKSkKKyAgICAgICAgcmVzdWx0ID0gTm9kZVJlc3VsdEludDUyOworICAgIGVs
c2UKKyAgICAgICAgcmVzdWx0ID0gTm9kZVJlc3VsdEpTOworICAgIHNldE9wQW5kRGVmYXVsdEZs
YWdzKElkZW50aXR5KTsKKyAgICBzZXRSZXN1bHQocmVzdWx0KTsKK30KKwogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEyMSw3ICsxMzcsMTAgQEAgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE5vZAogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIG91dC5wcmludCgiQCIsIG5vZGUtPmluZGV4KCkpOwotICAgIG91dC5wcmludChB
YmJyZXZpYXRlZFNwZWN1bGF0aW9uRHVtcChub2RlLT5wcmVkaWN0aW9uKCkpKTsKKyAgICBpZiAo
bm9kZS0+aGFzRG91YmxlUmVzdWx0KCkpCisgICAgICAgIG91dC5wcmludCgiPERvdWJsZT4iKTsK
KyAgICBlbHNlIGlmIChub2RlLT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAgICBvdXQucHJpbnQo
IjxJbnQ1Mj4iKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNs
dWRlICJERkdOb2RlRmxhZ3MuaCIKICNpbmNsdWRlICJERkdOb2RlT3JpZ2luLmgiCiAjaW5jbHVk
ZSAiREZHTm9kZVR5cGUuaCIKKyNpbmNsdWRlICJERkdVc2VLaW5kLmgiCiAjaW5jbHVkZSAiREZH
VmFyaWFibGVBY2Nlc3NEYXRhLmgiCiAjaW5jbHVkZSAiR2V0QnlJZFZhcmlhbnQuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCkBAIC0yMzksNiArMjQwLDIyIEBAIHN0cnVjdCBOb2RlIHsKICAg
ICAgICAgQVNTRVJUKCEobV9mbGFncyAmIE5vZGVIYXNWYXJBcmdzKSk7CiAgICAgfQogCisgICAg
Ly8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIHVwIHRvIDMgY2hpbGRyZW4sIG5vIGltbWVkaWF0ZSB2
YWx1ZS4KKyAgICBOb2RlKE5vZGVGbGFncyByZXN1bHQsIE5vZGVUeXBlIG9wLCBOb2RlT3JpZ2lu
IG5vZGVPcmlnaW4sIEVkZ2UgY2hpbGQxID0gRWRnZSgpLCBFZGdlIGNoaWxkMiA9IEVkZ2UoKSwg
RWRnZSBjaGlsZDMgPSBFZGdlKCkpCisgICAgICAgIDogb3JpZ2luKG5vZGVPcmlnaW4pCisgICAg
ICAgICwgY2hpbGRyZW4oQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIGNoaWxkMSwgY2hpbGQyLCBjaGls
ZDMpCisgICAgICAgICwgbV92aXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKCkpCisgICAg
ICAgICwgbV9yZWZDb3VudCgxKQorICAgICAgICAsIG1fcHJlZGljdGlvbihTcGVjTm9uZSkKKyAg
ICAgICAgLCBtX29wSW5mbygwKQorICAgICAgICAsIG1fb3BJbmZvMigwKQorICAgIHsKKyAgICAg
ICAgbWlzYy5yZXBsYWNlbWVudCA9IDA7CisgICAgICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKG9w
KTsKKyAgICAgICAgc2V0UmVzdWx0KHJlc3VsdCk7CisgICAgICAgIEFTU0VSVCghKG1fZmxhZ3Mg
JiBOb2RlSGFzVmFyQXJncykpOworICAgIH0KKwogICAgIC8vIENvbnN0cnVjdCBhIG5vZGUgd2l0
aCB1cCB0byAzIGNoaWxkcmVuIGFuZCBhbiBpbW1lZGlhdGUgdmFsdWUuCiAgICAgTm9kZShOb2Rl
VHlwZSBvcCwgTm9kZU9yaWdpbiBub2RlT3JpZ2luLCBPcEluZm8gaW1tLCBFZGdlIGNoaWxkMSA9
IEVkZ2UoKSwgRWRnZSBjaGlsZDIgPSBFZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQogICAg
ICAgICA6IG9yaWdpbihub2RlT3JpZ2luKQpAQCAtMjU0LDYgKzI3MSwyMiBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgICAgIEFTU0VSVCghKG1fZmxhZ3MgJiBOb2RlSGFzVmFyQXJncykpOwogICAgIH0K
IAorICAgIC8vIENvbnN0cnVjdCBhIG5vZGUgd2l0aCB1cCB0byAzIGNoaWxkcmVuIGFuZCBhbiBp
bW1lZGlhdGUgdmFsdWUuCisgICAgTm9kZShOb2RlRmxhZ3MgcmVzdWx0LCBOb2RlVHlwZSBvcCwg
Tm9kZU9yaWdpbiBub2RlT3JpZ2luLCBPcEluZm8gaW1tLCBFZGdlIGNoaWxkMSA9IEVkZ2UoKSwg
RWRnZSBjaGlsZDIgPSBFZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQorICAgICAgICA6IG9y
aWdpbihub2RlT3JpZ2luKQorICAgICAgICAsIGNoaWxkcmVuKEFkamFjZW5jeUxpc3Q6OkZpeGVk
LCBjaGlsZDEsIGNoaWxkMiwgY2hpbGQzKQorICAgICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKFZp
cnR1YWxSZWdpc3RlcigpKQorICAgICAgICAsIG1fcmVmQ291bnQoMSkKKyAgICAgICAgLCBtX3By
ZWRpY3Rpb24oU3BlY05vbmUpCisgICAgICAgICwgbV9vcEluZm8oaW1tLm1fdmFsdWUpCisgICAg
ICAgICwgbV9vcEluZm8yKDApCisgICAgeworICAgICAgICBtaXNjLnJlcGxhY2VtZW50ID0gMDsK
KyAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3Mob3ApOworICAgICAgICBzZXRSZXN1bHQocmVz
dWx0KTsKKyAgICAgICAgQVNTRVJUKCEobV9mbGFncyAmIE5vZGVIYXNWYXJBcmdzKSk7CisgICAg
fQorCiAgICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIHVwIHRvIDMgY2hpbGRyZW4gYW5kIHR3
byBpbW1lZGlhdGUgdmFsdWVzLgogICAgIE5vZGUoTm9kZVR5cGUgb3AsIE5vZGVPcmlnaW4gbm9k
ZU9yaWdpbiwgT3BJbmZvIGltbTEsIE9wSW5mbyBpbW0yLCBFZGdlIGNoaWxkMSA9IEVkZ2UoKSwg
RWRnZSBjaGlsZDIgPSBFZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQogICAgICAgICA6IG9y
aWdpbihub2RlT3JpZ2luKQpAQCAtMzI1LDYgKzM1OCwxOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIHJldHVybiBmaWx0ZXJGbGFncyh+ZmxhZ3MpOwogICAgIH0KICAgICAKKyAgICB2b2lkIHNl
dFJlc3VsdChOb2RlRmxhZ3MgcmVzdWx0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEocmVzdWx0
ICYgfk5vZGVSZXN1bHRNYXNrKSk7CisgICAgICAgIGNsZWFyRmxhZ3MoTm9kZVJlc3VsdE1hc2sp
OworICAgICAgICBtZXJnZUZsYWdzKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIE5vZGVGbGFn
cyByZXN1bHQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZsYWdzKCkgJiBOb2RlUmVz
dWx0TWFzazsKKyAgICB9CisgICAgCiAgICAgdm9pZCBzZXRPcEFuZERlZmF1bHRGbGFncyhOb2Rl
VHlwZSBvcCkKICAgICB7CiAgICAgICAgIG1fb3AgPSBvcDsKQEAgLTM0MSwxMiArMzg2LDcgQEAg
c3RydWN0IE5vZGUgewogICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhQaGFudG9tKTsKICAg
ICB9CiAKLSAgICB2b2lkIGNvbnZlcnRUb0lkZW50aXR5KCkKLSAgICB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKGNoaWxkMSgpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWNoaWxkMigpKTsK
LSAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoSWRlbnRpdHkpOwotICAgIH0KKyAgICB2b2lk
IGNvbnZlcnRUb0lkZW50aXR5KCk7CiAKICAgICBib29sIG11c3RHZW5lcmF0ZSgpCiAgICAgewpA
QCAtMzY4LDcgKzQwOCwxNCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgCiAgICAgYm9vbCBpc0NvbnN0
YW50KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvcCgpID09IEpTQ29uc3RhbnQ7CisgICAgICAg
IHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGNhc2Ug
RG91YmxlQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNXZWFrQ29uc3RhbnQoKQpAQCAt
Mzg1LDYgKzQzMiw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3Ao
KSkgewogICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgRG91YmxlQ29uc3Rh
bnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgY2FzZSBXZWFrSlNDb25z
dGFudDoKICAgICAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC00MDEsNyArNDUwLDEyIEBAIHN0cnVjdCBOb2RlIHsKICAgICAKICAgICB2b2lk
IGNvbnZlcnRUb0NvbnN0YW50KHVuc2lnbmVkIGNvbnN0YW50TnVtYmVyKQogICAgIHsKLSAgICAg
ICAgbV9vcCA9IEpTQ29uc3RhbnQ7CisgICAgICAgIGlmIChoYXNEb3VibGVSZXN1bHQoKSkKKyAg
ICAgICAgICAgIG1fb3AgPSBEb3VibGVDb25zdGFudDsKKyAgICAgICAgZWxzZSBpZiAoaGFzSW50
NTJSZXN1bHQoKSkKKyAgICAgICAgICAgIG1fb3AgPSBJbnQ1MkNvbnN0YW50OworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX29wID0gSlNDb25zdGFudDsKICAgICAgICAgbV9mbGFncyAmPSB+
KE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9iYmVyIHwgTm9kZUNsb2JiZXJzV29ybGQp
OwogICAgICAgICBtX29wSW5mbyA9IGNvbnN0YW50TnVtYmVyOwogICAgICAgICBjaGlsZHJlbi5y
ZXNldCgpOwpAQCAtNTAyLDYgKzU1Niw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBX
ZWFrSlNDb25zdGFudDoKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKHdlYWtDb25zdGFudCgp
KTsKICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgICAgICBjYXNlIERvdWJsZUNvbnN0YW50
OgorICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgICAgICByZXR1cm4gY29kZUJs
b2NrLT5jb25zdGFudFJlZ2lzdGVyKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ICsgY29uc3Rh
bnROdW1iZXIoKSkuZ2V0KCk7CiAgICAgICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CkBAIC03OTcsMzIgKzg1Myw1MiBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgCiAgICAgYm9vbCBoYXNSZXN1bHQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
ZmxhZ3MgJiBOb2RlUmVzdWx0TWFzazsKKyAgICAgICAgcmV0dXJuICEhcmVzdWx0KCk7CiAgICAg
fQogCiAgICAgYm9vbCBoYXNJbnQzMlJlc3VsdCgpCiAgICAgewotICAgICAgICByZXR1cm4gKG1f
ZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdEludDMyOworICAgICAgICByZXR1
cm4gcmVzdWx0KCkgPT0gTm9kZVJlc3VsdEludDMyOworICAgIH0KKyAgICAKKyAgICBib29sIGhh
c0ludDUyUmVzdWx0KCkKKyAgICB7CisgICAgICAgIHJldHVybiByZXN1bHQoKSA9PSBOb2RlUmVz
dWx0SW50NTI7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzTnVtYmVyUmVzdWx0KCkKICAgICB7
Ci0gICAgICAgIHJldHVybiAobV9mbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0
TnVtYmVyOworICAgICAgICByZXR1cm4gcmVzdWx0KCkgPT0gTm9kZVJlc3VsdE51bWJlcjsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBoYXNEb3VibGVSZXN1bHQoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdCgpID09IE5vZGVSZXN1bHREb3VibGU7CiAgICAgfQogICAgIAogICAgIGJvb2wg
aGFzSlNSZXN1bHQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIChtX2ZsYWdzICYgTm9kZVJlc3Vs
dE1hc2spID09IE5vZGVSZXN1bHRKUzsKKyAgICAgICAgcmV0dXJuIHJlc3VsdCgpID09IE5vZGVS
ZXN1bHRKUzsKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNCb29sZWFuUmVzdWx0KCkKICAgICB7
Ci0gICAgICAgIHJldHVybiAobV9mbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0
Qm9vbGVhbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdCgpID09IE5vZGVSZXN1bHRCb29sZWFuOwog
ICAgIH0KIAogICAgIGJvb2wgaGFzU3RvcmFnZVJlc3VsdCgpCiAgICAgewotICAgICAgICByZXR1
cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdFN0b3JhZ2U7CisgICAg
ICAgIHJldHVybiByZXN1bHQoKSA9PSBOb2RlUmVzdWx0U3RvcmFnZTsKKyAgICB9CisgICAgCisg
ICAgVXNlS2luZCBkZWZhdWx0VXNlS2luZCgpCisgICAgeworICAgICAgICByZXR1cm4gdXNlS2lu
ZEZvclJlc3VsdChyZXN1bHQoKSk7CisgICAgfQorICAgIAorICAgIEVkZ2UgZGVmYXVsdEVkZ2Uo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVkZ2UodGhpcywgZGVmYXVsdFVzZUtpbmQoKSk7CiAg
ICAgfQogCiAgICAgYm9vbCBpc0p1bXAoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlRmxhZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZUZsYWdzLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Nyw2ICs0Nyw5IEBAIHZvaWQgZHVtcE5vZGVGbGFncyhQcmludFN0cmVhbSYgYWN0dWFsT3UKICAg
ICAgICAgY2FzZSBOb2RlUmVzdWx0TnVtYmVyOgogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAiTnVtYmVyIik7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOb2RlUmVzdWx0
RG91YmxlOgorICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRG91YmxlIik7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6CiAgICAgICAgICAgICBv
dXQucHJpbnQoY29tbWEsICJJbnQzMiIpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDE2NzI3MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM4LDEwICszOCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAjZGVmaW5lIE5vZGVSZXN1bHRNYXNrICAgICAgICAgICAgICAgICAgIDB4MDAwNwogI2Rl
ZmluZSBOb2RlUmVzdWx0SlMgICAgICAgICAgICAgICAgICAgICAweDAwMDEKICNkZWZpbmUgTm9k
ZVJlc3VsdE51bWJlciAgICAgICAgICAgICAgICAgMHgwMDAyCi0jZGVmaW5lIE5vZGVSZXN1bHRJ
bnQzMiAgICAgICAgICAgICAgICAgIDB4MDAwMwotI2RlZmluZSBOb2RlUmVzdWx0SW50NTIgICAg
ICAgICAgICAgICAgICAweDAwMDQKLSNkZWZpbmUgTm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAg
ICAgICAgMHgwMDA1Ci0jZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdlICAgICAgICAgICAgICAgIDB4
MDAwNgorI2RlZmluZSBOb2RlUmVzdWx0RG91YmxlICAgICAgICAgICAgICAgICAweDAwMDMKKyNk
ZWZpbmUgTm9kZVJlc3VsdEludDMyICAgICAgICAgICAgICAgICAgMHgwMDA0CisjZGVmaW5lIE5v
ZGVSZXN1bHRJbnQ1MiAgICAgICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0
Qm9vbGVhbiAgICAgICAgICAgICAgICAweDAwMDYKKyNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2Ug
ICAgICAgICAgICAgICAgMHgwMDA3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
I2RlZmluZSBOb2RlTXVzdEdlbmVyYXRlICAgICAgICAgICAgICAgICAweDAwMDggLy8gc2V0IG9u
IG5vZGVzIHRoYXQgaGF2ZSBzaWRlIGVmZmVjdHMsIGFuZCBtYXkgbm90IHRyaXZpYWxseSBiZSBy
ZW1vdmVkIGJ5IERDRS4KICNkZWZpbmUgTm9kZUhhc1ZhckFyZ3MgICAgICAgICAgICAgICAgICAg
MHgwMDEwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZp
c2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICAgICAvKiBBIGNvbnN0YW50IGluIHRoZSBDb2RlQmxvY2sncyBjb25zdGFudCBw
b29sLiAqL1wKICAgICBtYWNybyhKU0NvbnN0YW50LCBOb2RlUmVzdWx0SlMgfCBOb2RlRG9lc05v
dEV4aXQpIFwKICAgICBcCisgICAgLyogQ29uc3RhbnRzIHdpdGggc3BlY2lmaWMgcmVwcmVzZW50
YXRpb25zLiAqL1wKKyAgICBtYWNybyhEb3VibGVDb25zdGFudCwgTm9kZVJlc3VsdERvdWJsZSB8
IE5vZGVEb2VzTm90RXhpdCkgXAorICAgIG1hY3JvKEludDUyQ29uc3RhbnQsIE5vZGVSZXN1bHRJ
bnQ1MiB8IE5vZGVEb2VzTm90RXhpdCkgXAorICAgIFwKICAgICAvKiBBIGNvbnN0YW50IG5vdCBp
biB0aGUgQ29kZUJsb2NrJ3MgY29uc3RhbnQgcG9vbC4gVXNlcyBnZXQgcGF0Y2hlZCB0byBqdW1w
cyB0aGF0IGV4aXQgdGhlICovXAogICAgIC8qIGNvZGUgYmxvY2suICovXAogICAgIG1hY3JvKFdl
YWtKU0NvbnN0YW50LCBOb2RlUmVzdWx0SlMgfCBOb2RlRG9lc05vdEV4aXQpIFwKQEAgLTEwNiwx
NSArMTEwLDEzIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBVc2Vk
IHRvIGJveCB0aGUgcmVzdWx0IG9mIFVSU2hpZnQgbm9kZXMgKHJlc3VsdCBoYXMgcmFuZ2UgMC4u
Ml4zMi0xKS4gKi9cCiAgICAgbWFjcm8oVUludDMyVG9OdW1iZXIsIE5vZGVSZXN1bHROdW1iZXIp
IFwKICAgICBcCi0gICAgLyogVXNlZCB0byBjYXN0IGtub3duIGludGVnZXJzIHRvIGRvdWJsZXMs
IHNvIGFzIHRvIHNlcGFyYXRlIHRoZSBkb3VibGUgZm9ybSAqL1wKLSAgICAvKiBvZiB0aGUgdmFs
dWUgZnJvbSB0aGUgaW50ZWdlciBmb3JtLiAqL1wKLSAgICBtYWNybyhJbnQzMlRvRG91YmxlLCBO
b2RlUmVzdWx0TnVtYmVyKSBcCi0gICAgLyogVXNlZCB0byBzcGVjdWxhdGUgdGhhdCBhIGRvdWJs
ZSB2YWx1ZSBpcyBhY3R1YWxseSBhbiBpbnRlZ2VyLiAqL1wKKyAgICAvKiBBdHRlbXB0IHRvIHRy
dW5jYXRlIGEgZG91YmxlIHRvIGludDMyOyB0aGlzIHdpbGwgZXhpdCBpZiBpdCBjYW4ndCBkbyBp
dC4gKi9cCiAgICAgbWFjcm8oRG91YmxlQXNJbnQzMiwgTm9kZVJlc3VsdEludDMyKSBcCi0gICAg
LyogVXNlZCB0byBzZXBhcmF0ZSByZXByZXNlbnRhdGlvbiBhbmQgcmVnaXN0ZXIgYWxsb2NhdGlv
biBvZiBJbnQ1MidzIHJlcHJlc2VudGVkICovXAotICAgIC8qIGFzIHZhbHVlcy4gKi9cCi0gICAg
bWFjcm8oSW50NTJUb1ZhbHVlLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNybyhJbnQ1MlRvRG91
YmxlLCBOb2RlUmVzdWx0TnVtYmVyKSBcCisgICAgXAorICAgIC8qIENoYW5nZSB0aGUgcmVwcmVz
ZW50YXRpb24gb2YgYSB2YWx1ZS4gKi9cCisgICAgbWFjcm8oRG91YmxlUmVwLCBOb2RlUmVzdWx0
RG91YmxlKSBcCisgICAgbWFjcm8oSW50NTJSZXAsIE5vZGVSZXN1bHRJbnQ1MikgXAorICAgIG1h
Y3JvKFZhbHVlUmVwLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGFy
aXRobWV0aWMgb3BlcmF0aW9ucy4gKi9cCiAgICAgbWFjcm8oQXJpdGhBZGQsIE5vZGVSZXN1bHRO
dW1iZXIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjY5LDkgKzI2OSw3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChj
b25zdCAKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsK
ICAgICAgICAgY2FzZSBJblBhaXI6Ci0gICAgICAgIGNhc2UgSW5GUFI6CiAgICAgICAgIGNhc2Ug
RGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFj
azoKICAgICAgICAgICAgIG1faml0LmxvYWQzMigKICAgICAgICAgICAgICAgICAmYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFn
LAogICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKQEAgLTI4Niw2ICsyODQsMTQgQEAg
dm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAorICAgICAgICBjYXNlIEluRlBSOgorICAgICAgICBjYXNlIERvdWJs
ZURpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKKyAg
ICAgICAgICAgIG1faml0LmxvYWREb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVn
VDApOworICAgICAgICAgICAgbV9qaXQuc2FuaXRpemVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCk7
CisgICAgICAgICAgICBtX2ppdC5zdG9yZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBBc3NlbWJs
eUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgYnJlYWs7CisKICAg
ICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKICAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNl
ZEluSlNTdGFjazoKICAgICAgICAgICAgIG1faml0LmxvYWQzMigKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCShyZXZpc2lv
biAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
cjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDYgKzI5Nyw3IEBAIHZvaWQgT1NSRXhpdENv
bXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJ
bkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBt
X2ppdC5sb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAg
ICAgICAgIG1faml0LnNhbml0aXplRG91YmxlKEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICAg
ICAgbV9qaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKICAg
ICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6
YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDkwLDcgKzQ5MCw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAg
ICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldDoKLSAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgogICAgICAgICBjYXNlIERvdWJs
ZUFzSW50MzI6CiAgICAgICAgIGNhc2UgR2V0TG9jYWxVbmxpbmtlZDoKICAgICAgICAgY2FzZSBH
ZXRNeUFyZ3VtZW50c0xlbmd0aDoKQEAgLTUwNCwxMSArNTAzLDE0IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFu
ZE9TUkVudGVyOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgotICAgICAgICBjYXNl
IEludDUyVG9WYWx1ZToKLSAgICAgICAgY2FzZSBJbnQ1MlRvRG91YmxlOgogICAgICAgICBjYXNl
IENoZWNrSW5Cb3VuZHM6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgotICAgICAgICBjYXNl
IEhhcmRQaGFudG9tOiB7CisgICAgICAgIGNhc2UgSGFyZFBoYW50b206CisgICAgICAgIGNhc2Ug
RG91YmxlUmVwOgorICAgICAgICBjYXNlIEludDUyUmVwOgorICAgICAgICBjYXNlIFZhbHVlUmVw
OgorICAgICAgICBjYXNlIERvdWJsZUNvbnN0YW50OgorICAgICAgICBjYXNlIEludDUyQ29uc3Rh
bnQ6IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2ZXIgYmUgdmlzaWJsZSBh
dCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLiBJdCBpcwogICAgICAgICAgICAgLy8gaW5zZXJ0
ZWQgYnkgZml4dXAoKSwgd2hpY2ggZm9sbG93cyB0aGlzIHBoYXNlLgogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcs
NyArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQo
KSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsIFNw
ZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sIEVkZ2Uobm9kZSkpOworICAgICAgICAgICAg
ICAgICAgICBub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBu
b2RlLT5kZWZhdWx0RWRnZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkocmV2aXNpb24g
MTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNyArMTkyLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCBTcGVjTm9uZSwgTW92SGludCwgTm9kZU9yaWdpbigpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8odmFyaWFibGUtPmxvY2FsKCkub2Zmc2V0KCkpLCBFZGdlKG5v
ZGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHZhcmlhYmxlLT5s
b2NhbCgpLm9mZnNldCgpKSwgbm9kZS0+ZGVmYXVsdEVkZ2UoKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0z
NTAsNyArMzUwLDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vz
c0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICh2YXJpYWJsZS0+aXNDYXB0dXJlZCgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLnNldE5vZGUo
YmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSk7CisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpID0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZCh2YXJpYWJsZS0+bG9j
YWwoKSktPmRlZmF1bHRFZGdlKCk7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b1BoYW50b20oKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGZvciBVcHNp
bG9ucy4gQW4gVXBzaWxvbiB3aWxsIG9ubHkgcmVmZXIgdG8gYQogICAgICAgICAgICAgICAgICAg
ICAvLyBQaGFudG9tTG9jYWwgaWYgdGhlcmUgd2VyZSBubyBTZXRMb2NhbHMgb3IgR2V0TG9jYWxz
IGluIHRoZSBibG9jay4KQEAgLTM2Myw3ICszNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgIGlmICh2YXJpYWJsZS0+aXNDYXB0dXJlZCgpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdz
KEdldEFyZ3VtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhyZXN1
bHRGb3Iobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KHJlc3VsdEZvcihub2RlLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYs
OSBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAoZWRnZS51c2VLaW5kKCkpIHsKICAgICAgICAg
Y2FzZSBVbnR5cGVkVXNlOgogICAgICAgICBjYXNlIEludDMyVXNlOgotICAgICAgICBjYXNlIFJl
YWxOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBjYXNlIERv
dWJsZVJlcFJlYWxVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgIGNhc2Ug
TnVtYmVyVXNlOgogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIGNhc2UgQ2VsbFVz
ZToKQEAgLTYxLDcgKzYzLDYgQEAgcHVibGljOgogICAgICAgICBjYXNlIE5vdENlbGxVc2U6CiAg
ICAgICAgIGNhc2UgT3RoZXJVc2U6CiAgICAgICAgIGNhc2UgTWlzY1VzZToKLSAgICAgICAgY2Fz
ZSBNYWNoaW5lSW50VXNlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAg
ICAgIGNhc2UgS25vd25JbnQzMlVzZToKQEAgLTY5LDExICs3MCw2IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBtX3Jlc3VsdCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgCi0gICAgICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgICAgICBpZiAobV9z
dGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIH5TcGVjRnVsbE51bWJlcikKLSAgICAgICAgICAg
ICAgICBtX3Jlc3VsdCA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgS25vd25DZWxsVXNlOgogICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9y
Tm9kZShlZGdlKS5tX3R5cGUgJiB+U3BlY0NlbGwpCiAgICAgICAgICAgICAgICAgbV9yZXN1bHQg
PSBmYWxzZTsKQEAgLTExMSw2ICsxMDcsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RT
dGF0ZVR5cGUmIHN0CiAKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNlIEpTQ29u
c3RhbnQ6CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBjYXNlIEludDUyQ29uc3RhbnQ6
CiAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAgICBjYXNlIElkZW50aXR5OgogICAgIGNhc2Ug
VG9UaGlzOgpAQCAtMTM3LDcgKzEzNSw2IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0
YXRlVHlwZSYgc3QKICAgICBjYXNlIEJpdFVSU2hpZnQ6CiAgICAgY2FzZSBWYWx1ZVRvSW50MzI6
CiAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKLSAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAg
Y2FzZSBEb3VibGVBc0ludDMyOgogICAgIGNhc2UgQXJpdGhBZGQ6CiAgICAgY2FzZSBBcml0aFN1
YjoKQEAgLTI0Miw4ICsyMzksNiBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVy
VXBBbmRPU1JFbnRlcjoKICAgICBjYXNlIExvb3BIaW50OgotICAgIGNhc2UgSW50NTJUb0RvdWJs
ZToKLSAgICBjYXNlIEludDUyVG9WYWx1ZToKICAgICBjYXNlIFN0b3JlQmFycmllcjoKICAgICBj
YXNlIFN0b3JlQmFycmllcldpdGhOdWxsQ2hlY2s6CiAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2lu
dDoKQEAgLTI1NSw2ICsyNTAsOSBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAg
Y2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgIGNhc2UgVmFsdWVSZXA6CisgICAgY2FzZSBEb3Vi
bGVSZXA6CisgICAgY2FzZSBJbnQ1MlJlcDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IAogICAgIGNhc2UgR2V0QnlWYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzNCwyMCArMTM0LDYgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Zmls
bEpTVmFsdWUoRWRnZSBlZAogICAgIH0KIAogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgot
ICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZTogewotICAgICAgICBGUFJSZWcgb2xkRlBSID0gaW5m
by5mcHIoKTsKLSAgICAgICAgbV9mcHJzLmxvY2sob2xkRlBSKTsKLSAgICAgICAgdGFnR1BSID0g
YWxsb2NhdGUoKTsKLSAgICAgICAgcGF5bG9hZEdQUiA9IGFsbG9jYXRlKCk7Ci0gICAgICAgIGJv
eERvdWJsZShvbGRGUFIsIHRhZ0dQUiwgcGF5bG9hZEdQUik7Ci0gICAgICAgIG1fZnBycy51bmxv
Y2sob2xkRlBSKTsKLSAgICAgICAgbV9mcHJzLnJlbGVhc2Uob2xkRlBSKTsKLSAgICAgICAgbV9n
cHJzLnJldGFpbih0YWdHUFIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckpTKTsKLSAgICAg
ICAgbV9ncHJzLnJldGFpbihwYXlsb2FkR1BSLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJK
Uyk7Ci0gICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCB0YWdHUFIsIHBheWxvYWRH
UFIsIERhdGFGb3JtYXRKUyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQogICAgIGNh
c2UgRGF0YUZvcm1hdEpTOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBE
YXRhRm9ybWF0SlNDZWxsOgpAQCAtMTYwLDYgKzE0Niw3IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxKU1ZhbHVlKEVkZ2UgZWQKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgRGF0YUZvcm1h
dFN0b3JhZ2U6CisgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgICAgICAvLyB0aGlzIHR5
cGUgY3VycmVudGx5IG5ldmVyIG9jY3VycwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogCkBAIC03NTYsMTIgKzc0Myw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUludDMKICAgICAKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkg
ewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgaWYgKGluZm8uc3BpbGxGb3Jt
YXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxh
dGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgICAg
ICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7Ci0gICAgICAgICAgICByZXR1cm4gYWxs
b2NhdGUoKTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0
YW50KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChpc0ludDMyQ29uc3RhbnQoZWRnZS5ub2RlKCkp
KTsKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwpAQCAtODEzLDcgKzc5NCw2
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgcmV0
dXJuIGdwcjsKICAgICB9CiAKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBE
YXRhRm9ybWF0Q2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgogICAgIGNhc2UgRGF0
YUZvcm1hdEpTRG91YmxlOgpAQCAtODIzLDYgKzgwMyw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdElu
dDMyOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKIAorICAgIGNhc2UgRGF0YUZvcm1hdERv
dWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgogICAgIGRlZmF1bHQ6CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04NDUsMTM2ICs4MjYsMzQgQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogCiBGUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUoRWRnZSBlZGdlKQogewotICAgIEFic3RyYWN0VmFs
dWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwotICAgIFNwZWN1bGF0ZWRUeXBlIHR5
cGUgPSB2YWx1ZS5tX3R5cGU7Ci0gICAgQVNTRVJUKGVkZ2UudXNlS2luZCgpICE9IEtub3duTnVt
YmVyVXNlIHx8ICEodmFsdWUubV90eXBlICYgflNwZWNGdWxsTnVtYmVyKSk7Ci0gICAgbV9pbnRl
cnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNGdWxsTnVtYmVyKTsKKyAgICBBU1NFUlQoaXNEb3Vi
bGUoZWRnZS51c2VLaW5kKCkpKTsKKyAgICBBU1NFUlQoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkp
OwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVn
aXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZp
cnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogCiAgICAgaWYgKGluZm8ucmVnaXN0ZXJG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkgewogCiAgICAgICAgIGlmIChlZGdlLT5oYXNDb25z
dGFudCgpKSB7Ci0gICAgICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KGVkZ2Uubm9kZSgpKSkg
ewotICAgICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAg
ICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTMyKHZhbHVlT2ZJbnQzMkNvbnN0YW50
KGVkZ2Uubm9kZSgpKSksIGdwcik7Ci0gICAgICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIs
IHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50KTsKLSAgICAgICAgICAgICAgICBp
bmZvLmZpbGxJbnQzMigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICAgICAgdW5sb2NrKGdw
cik7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyQ29uc3RhbnQoZWRnZS5ub2RlKCkp
KSB7Ci0gICAgICAgICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAg
ICAgICAgICAgbV9qaXQubG9hZERvdWJsZShhZGRyZXNzT2ZEb3VibGVDb25zdGFudChlZGdlLm5v
ZGUoKSksIGZwcik7Ci0gICAgICAgICAgICAgICAgbV9mcHJzLnJldGFpbihmcHIsIHZpcnR1YWxS
ZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50KTsKLSAgICAgICAgICAgICAgICBpbmZvLmZpbGxE
b3VibGUoKm1fc3RyZWFtLCBmcHIpOwotICAgICAgICAgICAgICAgIHJldHVybiBmcHI7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhl
Y3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7Ci0g
ICAgICAgICAgICBBU1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZv
cm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpOwotICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09
IERhdGFGb3JtYXRKU0RvdWJsZSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKSB7
Ci0gICAgICAgICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgICAg
ICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVn
aXN0ZXIpLCBmcHIpOwotICAgICAgICAgICAgICAgIG1fZnBycy5yZXRhaW4oZnByLCB2aXJ0dWFs
UmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAgICAgICAgICAgICBpbmZvLmZpbGxE
b3VibGUoKm1fc3RyZWFtLCBmcHIpOwotICAgICAgICAgICAgICAgIHJldHVybiBmcHI7Ci0gICAg
ICAgICAgICB9Ci0KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzTnVtYmVyQ29uc3RhbnQo
ZWRnZS5ub2RlKCkpKTsKICAgICAgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwot
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaGFzVW5ib3hlZERvdWJsZTsKLQotICAgICAg
ICAgICAgaWYgKHNwaWxsRm9ybWF0ICE9IERhdGFGb3JtYXRKU0ludDMyICYmIHNwaWxsRm9ybWF0
ICE9IERhdGFGb3JtYXRJbnQzMikgewotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgSklUQ29t
cGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50
MzJUYWcpKTsKLSAgICAgICAgICAgICAgICBpZiAodHlwZSAmIH5TcGVjRnVsbE51bWJlcikKLSAg
ICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlcikpLCBlZGdlLCBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBKSVRDb21waWxlcjo6dGFnRm9y
KHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7Ci0g
ICAgICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCBmcHIpOwotICAgICAgICAgICAgICAgIGhhc1VuYm94ZWREb3VibGUg
PSBtX2ppdC5qdW1wKCk7Ci0KLSAgICAgICAgICAgICAgICBpc0ludGVnZXIubGluaygmbV9qaXQp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJs
ZShKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCBmcHIpOwotCi0gICAg
ICAgICAgICBpZiAoaGFzVW5ib3hlZERvdWJsZS5pc1NldCgpKQotICAgICAgICAgICAgICAgIGhh
c1VuYm94ZWREb3VibGUubGluaygmbV9qaXQpOwotCi0gICAgICAgICAgICBtX2ZwcnMucmV0YWlu
KGZwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CisgICAgICAgICAgICBt
X2ppdC5sb2FkRG91YmxlKGFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KGVkZ2Uubm9kZSgpKSwgZnBy
KTsKKyAgICAgICAgICAgIG1fZnBycy5yZXRhaW4oZnByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxs
T3JkZXJDb25zdGFudCk7CiAgICAgICAgICAgICBpbmZvLmZpbGxEb3VibGUoKm1fc3RyZWFtLCBm
cHIpOwotICAgICAgICAgICAgaW5mby5raWxsU3BpbGxlZCgpOwogICAgICAgICAgICAgcmV0dXJu
IGZwcjsKICAgICAgICAgfQotICAgIH0KLQotICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1h
dCgpKSB7Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlM6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQz
MjogewotICAgICAgICBHUFJSZWcgdGFnR1BSID0gaW5mby50YWdHUFIoKTsKLSAgICAgICAgR1BS
UmVnIHBheWxvYWRHUFIgPSBpbmZvLnBheWxvYWRHUFIoKTsKKyAgICAgICAgCisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKTsKICAg
ICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0KLSAgICAgICAgbV9ncHJzLmxvY2so
dGFnR1BSKTsKLSAgICAgICAgbV9ncHJzLmxvY2socGF5bG9hZEdQUik7Ci0KLSAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgaGFzVW5ib3hlZERvdWJsZTsKLQotICAgICAgICBpZiAoaW5mby5yZWdp
c3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXRKU0ludDMyKSB7Ci0gICAgICAgICAgICBGUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzKTsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50
ZWdlciA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdGFnR1BSLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAgICAgICAgICAgIGlmICh0eXBlICYgflNw
ZWNGdWxsTnVtYmVyKQotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRnZSwgbV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
TG93ZXN0VGFnKSkpOwotICAgICAgICAgICAgdW5ib3hEb3VibGUodGFnR1BSLCBwYXlsb2FkR1BS
LCBmcHIsIHNjcmF0Y2guZnByKCkpOwotICAgICAgICAgICAgaGFzVW5ib3hlZERvdWJsZSA9IG1f
aml0Lmp1bXAoKTsKLSAgICAgICAgICAgIGlzSW50ZWdlci5saW5rKCZtX2ppdCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXlsb2FkR1BSLCBmcHIp
OwotCi0gICAgICAgIGlmIChoYXNVbmJveGVkRG91YmxlLmlzU2V0KCkpCi0gICAgICAgICAgICBo
YXNVbmJveGVkRG91YmxlLmxpbmsoJm1faml0KTsKLQotICAgICAgICBtX2dwcnMucmVsZWFzZSh0
YWdHUFIpOwotICAgICAgICBtX2dwcnMucmVsZWFzZShwYXlsb2FkR1BSKTsKLSAgICAgICAgbV9n
cHJzLnVubG9jayh0YWdHUFIpOwotICAgICAgICBtX2dwcnMudW5sb2NrKHBheWxvYWRHUFIpOwot
ICAgICAgICBtX2ZwcnMucmV0YWluKGZwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyRG91
YmxlKTsKKyAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCBmcHIpOworICAgICAgICBtX2ZwcnMucmV0YWluKGZwciwgdmlydHVh
bFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAgICAgICAgIGluZm8uZmlsbERvdWJsZSgq
bV9zdHJlYW0sIGZwcik7Ci0gICAgICAgIGluZm8ua2lsbFNwaWxsZWQoKTsKICAgICAgICAgcmV0
dXJuIGZwcjsKICAgICB9CiAKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjogewotICAgICAgICBG
UFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3By
KCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgIG1faml0LmNvbnZlcnRJbnQz
MlRvRG91YmxlKGdwciwgZnByKTsKLSAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwotICAgICAg
ICByZXR1cm4gZnByOwotICAgIH0KLQotICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgotICAg
IGNhc2UgRGF0YUZvcm1hdERvdWJsZTogewotICAgICAgICBGUFJSZWcgZnByID0gaW5mby5mcHIo
KTsKLSAgICAgICAgbV9mcHJzLmxvY2soZnByKTsKLSAgICAgICAgcmV0dXJuIGZwcjsKLSAgICB9
Ci0KLSAgICBjYXNlIERhdGFGb3JtYXROb25lOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBjYXNlIERhdGFG
b3JtYXRDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKLSAgICBjYXNlIERhdGFGb3Jt
YXRCb29sZWFuOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKLSAgICAgICAgdGVybWlu
YXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwot
ICAgICAgICByZXR1cm4gZnByQWxsb2NhdGUoKTsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBJbnZhbGlkRlBSUmVn
OwotICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0
YUZvcm1hdERvdWJsZSk7CisgICAgRlBSUmVnIGZwciA9IGluZm8uZnByKCk7CisgICAgbV9mcHJz
LmxvY2soZnByKTsKKyAgICByZXR1cm4gZnByOwogfQogCiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UgZWRnZSkKQEAgLTk4OCw3ICs4NjcsNyBAQCBHUFJSZWcg
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAKICAgICBzd2l0Y2ggKGluZm8ucmVn
aXN0ZXJGb3JtYXQoKSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgaWYg
KGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50MzIgfHwgaW5mby5zcGlsbEZvcm1h
dCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKKyAgICAgICAgaWYgKGluZm8uc3BpbGxGb3JtYXQo
KSA9PSBEYXRhRm9ybWF0SW50MzIpIHsKICAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZl
RXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgICAgIHJl
dHVybiBhbGxvY2F0ZSgpOwogICAgICAgICB9CkBAIC0xMDUyLDEyICs5MzEsMTIgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogICAgIGNhc2UgRGF0YUZvcm1hdEpT
SW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNE
b3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdEpT
Qm9vbGVhbjoKICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgogICAgICAgICB0ZXJtaW5hdGVT
cGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAg
ICAgIHJldHVybiBhbGxvY2F0ZSgpOwogCisgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAg
IGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAKQEAgLTEwNzcsNyArOTU2LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlQm9vbAogCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAg
ICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAgICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdEludDMyIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91
YmxlKSB7CisgICAgICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMy
KSB7CiAgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAg
ICAgICAgfQpAQCAtMTEzMywxMiArMTAxMiwxMiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVCb29sCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERh
dGFGb3JtYXRJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKLSAgICBjYXNlIERh
dGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgogICAgIGNhc2UgRGF0
YUZvcm1hdENlbGw6CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAK
KyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApAQCAtMTE0OCwyOCArMTAy
Nyw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICB9CiB9
CiAKLUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpjb252ZXJ0VG9Eb3VibGUoSlNW
YWx1ZU9wZXJhbmQmIG9wLCBGUFJSZWcgcmVzdWx0KQotewotICAgIEZQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOwotCi0gICAgR1BSUmVnIG9wUGF5bG9hZEdQUiA9IG9wLnBheWxvYWRHUFIoKTsK
LSAgICBHUFJSZWcgb3BUYWdHUFIgPSBvcC50YWdHUFIoKTsKLSAgICBGUFJSZWcgc2NyYXRjaEZQ
UiA9IHNjcmF0Y2guZnByKCk7Ci0KLSAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG9wVGFnR1BSLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBub3ROdW1iZXIg
PSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcFBheWxvYWRH
UFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKTsKLQotICAgIHVuYm94RG91Ymxl
KG9wVGFnR1BSLCBvcFBheWxvYWRHUFIsIHJlc3VsdCwgc2NyYXRjaEZQUik7Ci0gICAgSklUQ29t
cGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLQotICAgIGlzSW50ZWdlci5saW5rKCZt
X2ppdCk7Ci0gICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3BQYXlsb2FkR1BSLCByZXN1
bHQpOwotCi0gICAgZG9uZS5saW5rKCZtX2ppdCk7Ci0KLSAgICByZXR1cm4gbm90TnVtYmVyOwot
fQotCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQmFzZVZhbHVlU3RvcmVCYXJyaWVyKEVk
Z2UmIGJhc2VFZGdlLCBFZGdlJiB2YWx1ZUVkZ2UpCiB7CiAjaWYgRU5BQkxFKEdHQykKQEAgLTE1
NDcsNyArMTQwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE4K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBOdW1iZXJVc2U6IHsK
KyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgRlBSVGVtcG9yYXJ5IHNjcmF0
Y2godGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwpAQCAt
MTY3Niw3ICsxNTMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlKiBu
bwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGNhc2UgTnVtYmVyVXNlOgorICAg
IGNhc2UgRG91YmxlUmVwVXNlOgogICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSkgewogICAgICAgICAgICAgYm9vbCBp
bnZlcnQgPSBmYWxzZTsKQEAgLTE4MTcsNiArMTY3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIEpTQ29u
c3RhbnQ6CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKICAgICAgICAgaW5pdENvbnN0YW50SW5m
byhub2RlKTsKICAgICAgICAgYnJlYWs7CiAKQEAgLTE5NzgsMTQgKzE4MzYsNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAg
Y2FzZSBGbHVzaGVkSlNWYWx1ZToKICAgICAgICAgY2FzZSBGbHVzaGVkQXJndW1lbnRzOiB7Ci0g
ICAgICAgICAgICBpZiAoZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKG5vZGUtPmNo
aWxkMSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSkucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0
RG91YmxlKSB7Ci0gICAgICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAg
ICAgICAgICBtX2ppdC5zdG9yZURvdWJsZSh2YWx1ZS5mcHIoKSwgSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3Iobm9kZS0+bWFjaGluZUxvY2FsKCkpKTsKLSAgICAgICAgICAgICAgICBub1Jlc3VsdChu
b2RlKTsKLSAgICAgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChEYXRhRm9ybWF0RG91YmxlKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAogICAg
ICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5wYXlsb2FkR1BSKCksIEpJVENvbXBpbGVyOjpw
YXlsb2FkRm9yKG5vZGUtPm1hY2hpbmVMb2NhbCgpKSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9y
ZTMyKHZhbHVlLnRhZ0dQUigpLCBKSVRDb21waWxlcjo6dGFnRm9yKG5vZGUtPm1hY2hpbmVMb2Nh
bCgpKSk7CkBAIC0yMDc3LDggKzE5MjcsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2Ug
SW50MzJUb0RvdWJsZTogewotICAgICAgICBjb21waWxlSW50MzJUb0RvdWJsZShub2RlKTsKKyAg
ICBjYXNlIERvdWJsZVJlcDogeworICAgICAgICBjb21waWxlRG91YmxlUmVwKG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgVmFsdWVSZXA6IHsKKyAgICAg
ICAgY29tcGlsZVZhbHVlUmVwKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAg
IApAQCAtMjE1MSw3ICsyMDA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAgICAgCi0gICAgICAgIGNhc2Ug
TnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBT
cGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgCkBAIC0yMTkzLDcg
KzIwNDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJV
c2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIFNwZWN1bGF0
ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIFNw
ZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKQEAgLTQ3NDUsOCArNDYwMCw4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNr
VGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICBjYXNlIENo
ZWNrVGllclVwQW5kT1NSRW50ZXI6Ci0gICAgY2FzZSBJbnQ1MlRvRG91YmxlOgotICAgIGNhc2Ug
SW50NTJUb1ZhbHVlOgorICAgIGNhc2UgSW50NTJSZXA6CisgICAgY2FzZSBJbnQ1MkNvbnN0YW50
OgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICBjYXNlIEFyaXRoSU11bDoKICAgICBjYXNl
IE11bHRpR2V0QnlPZmZzZXQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNiwyMSArMTA2LDkgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShF
ZGdlIAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6Ci0gICAgICAgICAgICBjYXNl
IERhdGFGb3JtYXRTdHJpY3RJbnQ1MjogewotICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAg
ICAgICAgIGJveEludDUyKGdwciwgZ3ByLCBzcGlsbEZvcm1hdCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGdwcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICAgICAgaWYgKHNwaWxs
Rm9ybWF0ID09IERhdGFGb3JtYXREb3VibGUpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTmVl
ZCB0byBib3ggdGhlIGRvdWJsZSwgc2luY2Ugd2Ugd2FudCBhIEpTVmFsdWUuCi0gICAgICAgICAg
ICAgICAgICAgIG1faml0LnN1YjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3By
KTsKLSAgICAgICAgICAgICAgICAgICAgc3BpbGxGb3JtYXQgPSBEYXRhRm9ybWF0SlNEb3VibGU7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVh
bSwgZ3ByLCBzcGlsbEZvcm1hdCk7CkBAIC0xNDMsMjggKzEzMSw2IEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CiAK
LSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6IHsKLSAgICAgICAgRlBSUmVnIGZwciA9IGluZm8u
ZnByKCk7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBib3hEb3VibGUoZnByKTsKLQotICAgICAgICAv
LyBVcGRhdGUgYWxsIGluZm8KLSAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdw
ciwgRGF0YUZvcm1hdEpTRG91YmxlKTsKLSAgICAgICAgbV9mcHJzLnJlbGVhc2UoZnByKTsKLSAg
ICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckpTKTsK
LQotICAgICAgICByZXR1cm4gZ3ByOwotICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBEYXRhRm9y
bWF0SW50NTI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKLSAgICAgICAgR1BS
UmVnIGdwciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIGxvY2soZ3ByKTsKLSAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IGFsbG9jYXRlKCk7Ci0gICAgICAgIGJveEludDUyKGdwciwgcmVzdWx0R1BS
LCBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpOwotICAgICAgICB1bmxvY2soZ3ByKTsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdEdQUjsKLSAgICB9Ci0KICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgogICAg
ICAgICAvLyBObyByZXRhZyByZXF1aXJlZCBvbiBKU1ZBTFVFNjQhCiAgICAgY2FzZSBEYXRhRm9y
bWF0SlM6CkBAIC0xNzksNiArMTQ1LDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNW
YWx1ZShFZGdlIAogICAgICAgICAKICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgogICAgIGNh
c2UgRGF0YUZvcm1hdFN0b3JhZ2U6CisgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgorICAgIGNh
c2UgRGF0YUZvcm1hdEludDUyOgogICAgICAgICAvLyB0aGlzIHR5cGUgY3VycmVudGx5IG5ldmVy
IG9jY3VycwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAK
QEAgLTc2OSwxMiArNzM3LDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRl
SW50MwogICAgIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2Fz
ZSBEYXRhRm9ybWF0Tm9uZTogewotICAgICAgICBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERh
dGFGb3JtYXREb3VibGUpIHsKLSAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0
aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKLSAgICAgICAgICAgIHJldHVybkZv
cm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKLSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwot
ICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKIAog
ICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewpAQCAtNzg4LDcgKzc1MCw3IEBAIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgCiAgICAgICAg
IERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CiAgICAgICAgIAot
ICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0
SW50NTIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1h
dCA9PSBEYXRhRm9ybWF0SW50MzIpOwogICAgICAgICAKICAgICAgICAgbV9ncHJzLnJldGFpbihn
cHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwogICAgICAgICAKQEAgLTgw
OSwzNiArNzcxLDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50Mwog
ICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEpTSW50MzI7CiAgICAgICAgICAg
ICByZXR1cm4gZ3ByOwogICAgICAgICB9Ci0gICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRh
Rm9ybWF0SW50NTIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKSB7Ci0g
ICAgICAgICAgICAvLyBHZW5lcmFsbHksIHRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmIHdlJ3ZlIGFs
cmVhZHkgcHJvdmVkIHRoYXQgdGhlCi0gICAgICAgICAgICAvLyB2YWx1ZSBpcyBhbiBpbnQzMi4g
VGhhdCdzIGJlY2F1c2UgaWYgYSB2YWx1ZSBvcmlnaW5hdGVkIGFzIGEgSlNWYWx1ZQotICAgICAg
ICAgICAgLy8gdGhlbiB3ZSB3b3VsZCBzcGVjdWxhdGUgdGhhdCBpdCdzIGFuIGludDMyIGJlZm9y
ZSByZXByZXNlbnRpbmcgaXQgYXMKLSAgICAgICAgICAgIC8vIGFuIGludDUyLiBPdGhlcndpc2Us
IGlmIHdlIGtub3dpbmdseSBwcm9kdWNlZCBhbiBpbnQ1MiwgdGhlbiB3ZSB3b3VsZAotICAgICAg
ICAgICAgLy8gYmUgYm94aW5nIGl0IGludG8gYSB2YWx1ZSB1c2luZyBJbnQ1MlRvVmFsdWUuIFRo
aXMgYXNzZXJ0aW9uIGlzIHZhbGlkCi0gICAgICAgICAgICAvLyBvbmx5IGJlY2F1c2UgSW50NTIg
aXMgc29tZXRoaW5nIHRoYXQgd2UgaW50cm9kdWNlIGF0IHByZWRpY3Rpb24gdGltZS4KLSAgICAg
ICAgICAgIC8vIEhvd2V2ZXI6IHdlIG1heSBoYXZlIGFuIGludDMyLXByb2R1Y2luZyBub2RlIHJl
cGxhY2VkIGJ5IGFuCi0gICAgICAgICAgICAvLyBpbnQ1Mi1wcm9kdWNpbmcgbm9kZSBkdWUgdG8g
Q1NFLiBTbyB3ZSBtdXN0IGRvIGEgY2hlY2suCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
KHR5cGUgJiB+U3BlY01hY2hpbmVJbnQpKTsKLSAgICAgICAgICAgIGlmICh0eXBlICYgU3BlY0lu
dDUyKSB7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOwotICAgICAg
ICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGdwciwgdGVtcCk7Ci0gICAgICAgICAg
ICAgICAgLy8gQ3VycmVudGx5LCB3ZSBjYW4ndCBzdXBwbHkgdmFsdWUgcHJvZmlsaW5nIGluZm9y
bWF0aW9uIGhlcmUuIDotLwotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAg
ICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgZ3ByLCB0ZW1w
KSk7Ci0gICAgICAgICAgICAgICAgdW5sb2NrKHRlbXApOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKLSAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1faml0Lmxv
YWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAg
ICAgICAgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNo
aWZ0QW1vdW50KSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0
cihncHIsIGdwcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQzMigq
bV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50
MzI7Ci0gICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICB9CiAgICAgICAgIG1faml0Lmxv
YWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwogCiAg
ICAgICAgIC8vIEZpbGwgYXMgSlNWYWx1ZSwgYW5kIGZhbGwgdGhyb3VnaC4KQEAgLTg5Nyw0NyAr
ODI5LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAg
ICByZXR1cm4gZ3ByOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0
SW50NTI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6IHsKLSAgICAgICAgR1BSUmVnIGdwciA9
IGluZm8uZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyByZXN1bHQ7Ci0gICAgICAgIERhdGFGb3JtYXQg
b2xkRm9ybWF0ID0gaW5mby5yZWdpc3RlckZvcm1hdCgpOwotICAgICAgICBpZiAobV9ncHJzLmlz
TG9ja2VkKGdwcikpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGFsbG9jYXRlKCk7Ci0gICAgICAg
ICAgICBtX2ppdC5tb3ZlKGdwciwgcmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGxvY2soZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwgZ3By
KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGdwcjsKLSAgICAgICAgfQotICAgICAgICBSRUxFQVNF
X0FTU0VSVCghKHR5cGUgJiB+U3BlY01hY2hpbmVJbnQpKTsKLSAgICAgICAgaWYgKG9sZEZvcm1h
dCA9PSBEYXRhRm9ybWF0SW50NTIpCi0gICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIHJlc3VsdCk7Ci0gICAgICAgIGlmICh0
eXBlICYgU3BlY0ludDUyKSB7Ci0gICAgICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9jYXRlKCk7
Ci0gICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHQsIHRlbXApOwotICAg
ICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBjYW4ndCBzdXBwbHkgdmFsdWUgcHJvZmlsaW5nIGlu
Zm9ybWF0aW9uIGhlcmUuIDotLwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAg
ICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCAwLAotICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgcmVzdWx0LCB0ZW1wKSk7Ci0g
ICAgICAgICAgICB1bmxvY2sodGVtcCk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9qaXQuemVyb0V4
dGVuZDMyVG9QdHIocmVzdWx0LCByZXN1bHQpOwotICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRh
Rm9ybWF0SW50MzI7Ci0gICAgICAgIHJldHVybiBncHI7Ci0gICAgfQotCi0gICAgY2FzZSBEYXRh
Rm9ybWF0RG91YmxlOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOiB7Ci0gICAgICAgIGlm
IChlZGdlLT5oYXNDb25zdGFudCgpICYmIGlzSW50MzJDb25zdGFudChlZGdlLm5vZGUoKSkpIHsK
LSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgQVNTRVJU
KGlzSW50MzJDb25zdGFudChlZGdlLm5vZGUoKSkpOwotICAgICAgICAgICAgbV9qaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6SW1tMzIodmFsdWVPZkludDMyQ29uc3RhbnQoZWRnZS5ub2RlKCkpKSwg
Z3ByKTsKLSAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKLSAgICAg
ICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgIH0KLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAg
fQorICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6
CiAgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6
CkBAIC05NDcsNyArODM5LDEwIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZUludDMKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgfQogCisgICAgY2FzZSBEYXRh
Rm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CisgICAgY2FzZSBEYXRh
Rm9ybWF0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC05
NzYsMTQgKzg3MSwxMyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ1
CiB7CiAgICAgQVNTRVJUKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IGRlc2ly
ZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKTsKICAgICBBYnN0cmFjdFZhbHVlJiB2
YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKLSAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0g
dmFsdWUubV90eXBlOwogICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjTWFjaGlu
ZUludCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1
YWxSZWdpc3RlcigpOwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9G
cm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CiAKICAgICBzd2l0Y2ggKGluZm8u
cmVnaXN0ZXJGb3JtYXQoKSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAg
aWYgKChlZGdlLT5oYXNDb25zdGFudCgpICYmICF2YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUo
KSkuaXNNYWNoaW5lSW50KCkpIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91
YmxlKSB7CisgICAgICAgIGlmICgoZWRnZS0+aGFzQ29uc3RhbnQoKSAmJiAhdmFsdWVPZkpTQ29u
c3RhbnQoZWRnZS5ub2RlKCkpLmlzTWFjaGluZUludCgpKSkgewogICAgICAgICAgICAgdGVybWlu
YXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwog
ICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgICAgIH0KQEAgLTEwMDQsODIgKzg5
OCwyMSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ1CiAgICAgICAg
IAogICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwog
ICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1h
dEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIgfHwgc3BpbGxGb3JtYXQgPT0g
RGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MiB8
fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpOwogICAgICAgICAKICAgICAg
ICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQp
OwogICAgICAgICAKLSAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRKU0ludDMy
IHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMikgewotICAgICAgICAgICAgLy8gSWYg
d2Uga25vdyB0aGlzIHdhcyBzcGlsbGVkIGFzIGFuIGludGVnZXIgd2UgY2FuIGZpbGwgd2l0aG91
dCBjaGVja2luZy4KLSAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVz
c0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVu
ZDMyVG9QdHIoZ3ByLCBncHIpOwotICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0
YUZvcm1hdFN0cmljdEludDUyKSB7Ci0gICAgICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0SW50
NTIoKm1fc3RyZWFtLCBncHIpOwotICAgICAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
aW50NTJTaGlmdEFtb3VudCksIGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQ1MigqbV9z
dHJlYW0sIGdwcik7Ci0gICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0
YUZvcm1hdFN0cmljdEludDUyKSB7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGlmIChk
ZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewotICAgICAgICAgICAgICAg
IGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCi0gICAgICAgICAgICAgICAgICAg
IG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwg
Z3ByKTsKLSAgICAgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ1MigqbV9zdHJlYW0sIGdw
cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpCi0gICAgICAgICAg
ICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91
bnQpLCBncHIpOwotICAgICAgICAgICAgaW5mby5maWxsSW50NTIoKm1fc3RyZWFtLCBncHIpOwot
ICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgfQogICAgICAgICBtX2ppdC5sb2FkNjQo
SklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLQotICAgICAg
ICAvLyBGaWxsIGFzIEpTVmFsdWUsIGFuZCBmYWxsIHRocm91Z2guCi0gICAgICAgIGluZm8uZmls
bEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0ludDMyKTsKLSAgICAgICAgbV9n
cHJzLnVubG9jayhncHIpOwotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICB9Ci0KLSAgICBjYXNl
IERhdGFGb3JtYXRKUzogewotICAgICAgICAvLyBDaGVjayB0aGUgdmFsdWUgaXMgYW4gaW50ZWdl
ci4gTm90ZSB0aGF0IHdlIHdvdWxkICpsaWtlKiB0byB1bmJveCBhbiBJbnQ1MgotICAgICAgICAv
LyBhdCB0aGlzIHBvaW50IGJ1dCB0aGlzIGlzIHRvbyBjb3N0bHkuIFdlIG9ubHkgKnByb3ZlKiB0
aGF0IHRoaXMgaXMgYW4gSW50NTIKLSAgICAgICAgLy8gZXZlbiB0aG91Z2ggd2UgY2hlY2sgaWYg
aXQncyBhbiBpbnQzMi4KLSAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7Ci0gICAgICAg
IEdQUlJlZyByZXN1bHQ7Ci0gICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgewotICAg
ICAgICAgICAgcmVzdWx0ID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoZ3By
LCByZXN1bHQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9ncHJzLmxvY2soZ3By
KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGdwcjsKLSAgICAgICAgfQotICAgICAgICBpZiAodHlw
ZSAmIH5TcGVjSW50MzIpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpT
VmFsdWVSZWdzKHJlc3VsdCksIGVkZ2UsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpC
ZWxvdywgcmVzdWx0LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKLSAgICAgICAg
aWYgKHJlc3VsdCA9PSBncHIpIC8vIFRoZSBub3QtYWxyZWFkeS1sb2NrZWQsIHNvIGZpbGwgaW4t
cGxhY2UsIGNhc2UuCi0gICAgICAgICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0sIGdwciwg
ZGVzaXJlZEZvcm1hdCk7Ci0gICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdCwg
cmVzdWx0KTsKLSAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQot
ICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hp
ZnRBbW91bnQpLCByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAg
IGNhc2UgRGF0YUZvcm1hdEludDMyOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6IHsKLSAg
ICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyByZXN1bHQ7Ci0g
ICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgewotICAgICAgICAgICAgcmVzdWx0ID0g
YWxsb2NhdGUoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKLSAgICAgICAgICAgIGlu
Zm8uZmlsbEludDUyKCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKLSAgICAgICAgICAg
IHJlc3VsdCA9IGdwcjsKKyAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0
cmljdEludDUyKSB7CisgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdElu
dDUyKQorICAgICAgICAgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjppbnQ1MlNoaWZ0QW1vdW50KSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdElu
dDUyKCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAgIH0K
LSAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0LCByZXN1bHQpOwotICAgICAg
ICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCi0gICAgICAgICAgICBtX2pp
dC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIHJlc3Vs
dCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBE
YXRhRm9ybWF0U3RyaWN0SW50NTIpCisgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIGdwcik7CisgICAgICAgIGluZm8uZmls
bEludDUyKCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CiAKICAg
ICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjogewpAQCAtMTExNiwzMSArOTQ5LDYgQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50NQogICAgICAgICByZXR1cm4gZ3By
OwogICAgIH0KIAotICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKLSAgICBjYXNlIERhdGFGb3Jt
YXRKU0RvdWJsZToKLSAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKLSAgICAgICAg
ICAgIEpTVmFsdWUganNWYWx1ZSA9IHZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKLSAg
ICAgICAgICAgIGlmIChqc1ZhbHVlLmlzTWFjaGluZUludCgpKSB7Ci0gICAgICAgICAgICAgICAg
aW50NjRfdCB2YWx1ZSA9IGpzVmFsdWUuYXNNYWNoaW5lSW50KCk7Ci0gICAgICAgICAgICAgICAg
aWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQotICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSA9IHZhbHVlIDw8IEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQ7Ci0gICAgICAgICAg
ICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92
ZShNYWNyb0Fzc2VtYmxlcjo6SW1tNjQodmFsdWUpLCBncHIpOwotICAgICAgICAgICAgICAgIHJl
dHVybiBncHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgRkFMTFRIUk9VR0g7
Ci0gICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKLSAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgot
ICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKLSAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46
IHsKLSAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIDApOwotICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKLSAgICB9Ci0KLSAg
ICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKQEAgLTExNDksMTAg
Kzk1Nyw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDUKIAogRlBS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YmxlKEVkZ2UgZWRnZSkKIHsKLSAg
ICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKLSAgICBTcGVj
dWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90eXBlOwotICAgIEFTU0VSVChlZGdlLnVzZUtpbmQo
KSAhPSBLbm93bk51bWJlclVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjRnVsbE51bWJlcikp
OwotICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjRnVsbE51bWJlcik7CisgICAg
QVNTRVJUKGVkZ2UudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSB8fCBlZGdlLnVzZUtpbmQoKSA9
PSBEb3VibGVSZXBSZWFsVXNlKTsKKyAgICBBU1NFUlQoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkp
OwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVn
aXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZp
cnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogCkBAIC0xMTYwLDE3ICs5NjYsNiBAQCBG
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIGlmIChlZGdl
LT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsK
IAotICAgICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChlZGdlLm5vZGUoKSkpIHsKLSAgICAg
ICAgICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgICAgICAgICBt
X2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW02NChyZWludGVycHJldERvdWJsZVRvSW50NjQo
c3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZU9mSW50MzJDb25zdGFudChlZGdlLm5vZGUoKSkpKSks
IGdwcik7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZTY0VG9Eb3VibGUoZ3ByLCBmcHIpOwot
ICAgICAgICAgICAgICAgIHVubG9jayhncHIpOwotCi0gICAgICAgICAgICAgICAgLy8gRG9uJ3Qg
ZmlsbCBkb3VibGUgaGVyZSBzaW5jZSB0aGF0IHdpbGwgbGVhZCB0byBjb25mdXNpb246IHRoZQot
ICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGFsbG9jYXRvciB3aWxsIG5vdyB0aGluayB0aGF0
IHRoaXMgaXMgYSBkb3VibGUgd2hpbGUKLSAgICAgICAgICAgICAgICAvLyBldmVyeW9uZSBlbHNl
IHRoaW5rcyBpdCdzIGFuIGludGVnZXIuCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZwcjsKLSAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpc051bWJlckNvbnN0YW50KGVkZ2Uubm9kZSgp
KSkgewogICAgICAgICAgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwogICAgICAg
ICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHJlaW50ZXJwcmV0RG91
YmxlVG9JbnQ2NCh2YWx1ZU9mTnVtYmVyQ29uc3RhbnQoZWRnZS5ub2RlKCkpKSksIGdwcik7CkBA
IC0xMTg2LDE1OSArOTgxLDE4IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZURvdWIKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1h
dCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKLSAgICAgICAgc3dpdGNoIChzcGlsbEZvcm1hdCkgewot
ICAgICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6IHsKLSAgICAgICAgICAgIEZQUlJlZyBmcHIg
PSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBmcHIpOwotICAgICAgICAgICAgbV9mcHJz
LnJldGFpbihmcHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7Ci0gICAgICAg
ICAgICBpbmZvLmZpbGxEb3VibGUoKm1fc3RyZWFtLCBmcHIpOwotICAgICAgICAgICAgcmV0dXJu
IGZwcjsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgRGF0YUZvcm1hdElu
dDMyOiB7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxP
cmRlclNwaWxsZWQpOwotICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQz
MigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICB1bmxvY2soZ3ByKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBEYXRhRm9ybWF0
SW50NTI6IHsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAgICAg
ICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQp
OwotICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0s
IGdwcik7Ci0gICAgICAgICAgICB1bmxvY2soZ3ByKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6
IHsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9n
cHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwotICAg
ICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdp
c3RlciksIGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ1MigqbV9zdHJlYW0s
IGdwcik7Ci0gICAgICAgICAgICB1bmxvY2soZ3ByKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxv
Y2F0ZSgpOwotCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCAmIERhdGFG
b3JtYXRKUyk7Ci0gICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVy
LCBTcGlsbE9yZGVyU3BpbGxlZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8u
ZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIHNwaWxsRm9ybWF0KTsKLSAgICAgICAgICAgIHVu
bG9jayhncHIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBz
d2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgewotICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6
IC8vIFNob3VsZCBoYXZlIGZpbGxlZCwgYWJvdmUuCi0gICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVh
bjogLy8gVGhpcyB0eXBlIG5ldmVyIG9jY3Vycy4KLSAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdl
OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgY2FzZSBEYXRh
Rm9ybWF0Q2VsbDoKLSAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwotICAgICAgICByZXR1cm4gZnByQWxsb2NhdGUoKTsK
LQotICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKLSAgICBjYXNlIERhdGFGb3JtYXRKUzoKLSAg
ICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46IHsKLSAgICAgICAgR1BSUmVnIGpzVmFsdWVHcHIg
PSBpbmZvLmdwcigpOwotICAgICAgICBtX2dwcnMubG9jayhqc1ZhbHVlR3ByKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdERvdWJsZSk7CiAgICAgICAg
IEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICBHUFJSZWcgdGVtcEdwciA9IGFs
bG9jYXRlKCk7Ci0KLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQu
YnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwganNWYWx1ZUdwciwgR1BSSW5m
bzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLQotICAgICAgICBpZiAodHlwZSAmIH5TcGVjRnVs
bE51bWJlcikKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJl
Z3MoanNWYWx1ZUdwciksIGVkZ2UsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6
WmVybywganNWYWx1ZUdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7Ci0KLSAg
ICAgICAgLy8gRmlyc3QsIGlmIHdlIGdldCBoZXJlIHdlIGhhdmUgYSBkb3VibGUgZW5jb2RlZCBh
cyBhIEpTVmFsdWUKLSAgICAgICAgbV9qaXQubW92ZShqc1ZhbHVlR3ByLCB0ZW1wR3ByKTsKLSAg
ICAgICAgdW5ib3hEb3VibGUodGVtcEdwciwgZnByKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaGFzVW5ib3hlZERvdWJsZSA9IG1faml0Lmp1bXAoKTsKLQotICAgICAgICAvLyBGaW5hbGx5
LCBoYW5kbGUgaW50ZWdlcnMuCi0gICAgICAgIGlzSW50ZWdlci5saW5rKCZtX2ppdCk7Ci0gICAg
ICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKGpzVmFsdWVHcHIsIGZwcik7Ci0gICAgICAg
IGhhc1VuYm94ZWREb3VibGUubGluaygmbV9qaXQpOwotCi0gICAgICAgIG1fZ3Bycy5yZWxlYXNl
KGpzVmFsdWVHcHIpOwotICAgICAgICBtX2dwcnMudW5sb2NrKGpzVmFsdWVHcHIpOwotICAgICAg
ICBtX2dwcnMudW5sb2NrKHRlbXBHcHIpOworICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7CiAgICAgICAgIG1fZnBy
cy5yZXRhaW4oZnByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJEb3VibGUpOwogICAgICAg
ICBpbmZvLmZpbGxEb3VibGUoKm1fc3RyZWFtLCBmcHIpOwotICAgICAgICBpbmZvLmtpbGxTcGls
bGVkKCk7CiAgICAgICAgIHJldHVybiBmcHI7CiAgICAgfQogCi0gICAgY2FzZSBEYXRhRm9ybWF0
SlNJbnQzMjoKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjogewotICAgICAgICBGUFJSZWcgZnBy
ID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7Ci0gICAg
ICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91Ymxl
KGdwciwgZnByKTsKLSAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwotICAgICAgICByZXR1cm4g
ZnByOwotICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6IHsKLSAgICAg
ICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBpbmZv
LmdwcigpOwotICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICBHUFJSZWcgdGVtcCA9
IGFsbG9jYXRlKCk7Ci0gICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1wKTsKLSAgICAgICAgbV9q
aXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCB0ZW1w
KTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUodGVtcCwgZnByKTsKLSAgICAg
ICAgdW5sb2NrKHRlbXApOwotICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0gICAgICAgIHJl
dHVybiBmcHI7Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1
MjogewotICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BSUmVn
IGdwciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgIG1f
aml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKGdwciwgZnByKTsKLSAgICAgICAgbV9ncHJzLnVubG9j
ayhncHIpOwotICAgICAgICByZXR1cm4gZnByOwotICAgIH0KLQotICAgIC8vIFVuYm94IHRoZSBk
b3VibGUKLSAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZTogewotICAgICAgICBHUFJSZWcgZ3By
ID0gaW5mby5ncHIoKTsKLSAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAg
ICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgewotICAgICAgICAgICAgLy8gTWFrZSBzdXJl
IHdlIGRvbid0IHRyYW1wbGUgZ3ByIGlmIGl0IGlzIGluIHVzZS4KLSAgICAgICAgICAgIEdQUlJl
ZyB0ZW1wID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1wKTsK
LSAgICAgICAgICAgIHVuYm94RG91YmxlKHRlbXAsIGZwcik7Ci0gICAgICAgICAgICB1bmxvY2so
dGVtcCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdW5ib3hEb3VibGUoZ3ByLCBmcHIp
OwotCi0gICAgICAgIG1fZ3Bycy5yZWxlYXNlKGdwcik7Ci0gICAgICAgIG1fZnBycy5yZXRhaW4o
ZnByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJEb3VibGUpOwotCi0gICAgICAgIGluZm8u
ZmlsbERvdWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgIHJldHVybiBmcHI7Ci0gICAgfQot
Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7Ci0gICAgICAgIEZQUlJlZyBmcHIgPSBpbmZv
LmZwcigpOwotICAgICAgICBtX2ZwcnMubG9jayhmcHIpOwotICAgICAgICByZXR1cm4gZnByOwot
ICAgIH0KLSAgICAgICAgCi0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEludmFsaWRGUFJSZWc7Ci0gICAgfQorICAgIFJF
TEVBU0VfQVNTRVJUKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKTsK
KyAgICBGUFJSZWcgZnByID0gaW5mby5mcHIoKTsKKyAgICBtX2ZwcnMubG9jayhmcHIpOworICAg
IHJldHVybiBmcHI7CiB9CiAKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNl
bGwoRWRnZSBlZGdlKQpAQCAtMTM1MiwxMSArMTAwNiw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUNlbGwKIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgp
KSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewotICAgICAgICBpZiAoaW5mby5zcGlsbEZv
cm1hdCgpID09IERhdGFGb3JtYXRJbnQzMiB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZv
cm1hdERvdWJsZSkgewotICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24o
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwotICAgICAgICAgICAgcmV0dXJuIGFsbG9j
YXRlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCiAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0
ZSgpOwogCiAgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CkBAIC0xNDA1LDE2ICsx
MDU0LDE2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICBj
YXNlIERhdGFGb3JtYXRKU0ludDMyOgogICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgogICAgIGNh
c2UgRGF0YUZvcm1hdEpTRG91YmxlOgotICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBj
YXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46Ci0gICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKLSAg
ICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKLSAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1Mjog
eworICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46IHsKICAgICAgICAgdGVybWluYXRlU3BlY3Vs
YXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAgICBy
ZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CiAKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAg
ICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKKyAg
ICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTE0MzMsNyArMTA4Miw3IEBA
IEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKIAogICAgIHN3aXRjaCAo
aW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewotICAg
ICAgICBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMiB8fCBpbmZvLnNw
aWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgeworICAgICAgICBpZiAoaW5mby5zcGls
bEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMikgewogICAgICAgICAgICAgdGVybWluYXRlU3Bl
Y3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAg
ICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgICAgIH0KQEAgLTE0ODcsMTYgKzExMzYsMTUg
QEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogICAgIGNhc2UgRGF0
YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CiAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNEb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0
YUZvcm1hdEpTQ2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgotICAgIGNhc2UgRGF0YUZv
cm1hdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOiB7CiAgICAgICAgIHRl
cm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAw
KTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7Ci0gICAgfQogICAgICAgICAKKyAgICBjYXNl
IERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNl
IERhdGFGb3JtYXRJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoK
QEAgLTE1MDUsMjYgKzExNTMsNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVCb29sCiAgICAgfQogfQogCi1KSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6Y29u
dmVydFRvRG91YmxlKEdQUlJlZyB2YWx1ZSwgRlBSUmVnIHJlc3VsdCwgR1BSUmVnIHRtcCkKLXsK
LSAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NChNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCB2YWx1ZSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyKTsKLSAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBub3ROdW1iZXIgPSBtX2ppdC5icmFu
Y2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHZhbHVlLCBHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpOwotICAgIAotICAgIG1faml0Lm1vdmUodmFsdWUsIHRtcCk7Ci0gICAgdW5i
b3hEb3VibGUodG1wLCByZXN1bHQpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUg
PSBtX2ppdC5qdW1wKCk7Ci0gICAgCi0gICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsKLSAgICAK
LSAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZSh2YWx1ZSwgcmVzdWx0KTsKLSAgICAKLSAg
ICBkb25lLmxpbmsoJm1faml0KTsKLQotICAgIHJldHVybiBub3ROdW1iZXI7Ci19Ci0KIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCYXNlVmFsdWVTdG9yZUJhcnJpZXIoRWRnZSYgYmFzZUVk
Z2UsIEVkZ2UmIHZhbHVlRWRnZSkKIHsKICNpZiBFTkFCTEUoR0dDKQpAQCAtMTkyMSw3ICsxNTQ5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIE51bWJlclVzZTogeworICAgIGNhc2Ug
RG91YmxlUmVwVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsK
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTIwNjAsNyArMTY4OCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2goTm9kZSogbm8KICAgICB9CiAgICAgICAg
IAogICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNlIERv
dWJsZVJlcFVzZTogewogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IElu
dDMyVXNlKSB7CiAgICAgICAgICAgICBib29sIGludmVydCA9IGZhbHNlOwogICAgICAgICAgICAg
CkBAIC0yMTUzLDYgKzE3ODEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAKICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgIGNh
c2UgRG91YmxlQ29uc3RhbnQ6CisgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICBpbml0
Q29uc3RhbnRJbmZvKG5vZGUpOwogICAgICAgICBicmVhazsKIApAQCAtMjQwMCwyNCArMjAzMCwy
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7Ci0gICAgICAg
IGNvbXBpbGVJbnQzMlRvRG91YmxlKG5vZGUpOworICAgIGNhc2UgRG91YmxlUmVwOiB7CisgICAg
ICAgIGNvbXBpbGVEb3VibGVSZXAobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgCi0gICAgY2FzZSBJbnQ1MlRvVmFsdWU6IHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3Bl
cmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcywgUmV1c2UsIG9wZXJhbmQpOwotICAgICAgICBtX2ppdC5tb3ZlKG9wZXJhbmQuZ3ByKCks
IHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBub2Rl
KTsKKyAgICBjYXNlIFZhbHVlUmVwOiB7CisgICAgICAgIGNvbXBpbGVWYWx1ZVJlcChub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEludDUyVG9Eb3VibGU6
IHsKLSAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcGVyYW5kKTsKLSAg
ICAgICAgbV9qaXQubW92ZURvdWJsZShvcGVyYW5kLmZwcigpLCByZXN1bHQuZnByKCkpOwotICAg
ICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKKyAgICBjYXNlIEludDUyUmVw
OiB7CisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3BlcmFu
ZCk7CisgICAgICAgIAorICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihvcGVyYW5kLmdw
cigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAKKyAgICAgICAgc3RyaWN0SW50NTJSZXN1bHQo
cmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAg
LTI0ODYsNyArMjExNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBjYXNl
IE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAg
U3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIApAQCAtMjUyNCw3
ICsyMTUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVy
VXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBT
cGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTY3Mjcy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzMiw4ICszMzIsNiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNw
ZWN1bGF0aXZlSklUOjpzCiAgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9y
bWF0SW50NTIpIHsKICAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpCiAgICAgICAgICAg
ICBmaWxsQWN0aW9uID0gU2V0SW50NTJDb25zdGFudDsKLSAgICAgICAgZWxzZSBpZiAoaXNKU0lu
dDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3Jt
YXRKUykKLSAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkMzJQYXlsb2FkQ29udmVydFRvSW50
NTI7CiAgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50
NTIpCiAgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OwogICAgICAgICBlbHNlIGlmIChp
bmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKQpAQCAtMzQxLDE3ICsz
MzksMTIgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgICAg
ICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUpCiAgICAgICAg
ICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8v
IFNob3VsZCBuZXZlciBoYXBwZW4uIEFueXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFzIGFuIGludDMy
IHdpbGwgbmV2ZXIKLSAgICAgICAgICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEgY2VsbCAoaW1tZWRp
YXRlIHNwZWMgZmFpbCkgb3IgYSBkb3VibGUgKHRvLWRvdWJsZQotICAgICAgICAgICAgLy8gY29u
dmVyc2lvbnMgaW52b2x2ZSBhIHNlcGFyYXRlIG5vZGUpLgogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7IC8v
IE1ha2UgR0NDIGhhcHB5LgogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1h
dCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpIHsKICAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0
YW50KCkpCiAgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0U3RyaWN0SW50NTJDb25zdGFudDsK
LSAgICAgICAgZWxzZSBpZiAoaXNKU0ludDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwgaW5mby5z
cGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRKUykKLSAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBM
b2FkMzJQYXlsb2FkU2lnbkV4dGVuZDsKICAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1h
dCgpID09IERhdGFGb3JtYXRJbnQ1MikKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjRT
aGlmdEludDUyUmlnaHQ7CiAgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBE
YXRhRm9ybWF0U3RyaWN0SW50NTIpCkBAIC0zNTksOSArMzUyLDYgQEAgU2lsZW50UmVnaXN0ZXJT
YXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9y
bWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUpCiAgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0
OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uIEFu
eXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFzIGFuIGludDMyIHdpbGwgbmV2ZXIKLSAgICAgICAgICAg
IC8vIGJlIHR1cm5lZCBpbnRvIGEgY2VsbCAoaW1tZWRpYXRlIHNwZWMgZmFpbCkgb3IgYSBkb3Vi
bGUgKHRvLWRvdWJsZQotICAgICAgICAgICAgLy8gY29udmVyc2lvbnMgaW52b2x2ZSBhIHNlcGFy
YXRlIG5vZGUpLgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7IC8vIE1ha2UgR0NDIGhhcHB5LgogICAgICAg
ICB9CkBAIC0zNzYsOSArMzY2LDYgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2
ZUpJVDo6cwogICAgICAgICB9IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0SW50MzIpIHsKICAgICAgICAgICAgIEFTU0VSVChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9y
bWF0SlNJbnQzMik7CiAgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDMyUGF5bG9hZEJveElu
dDsKLSAgICAgICAgfSBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERv
dWJsZSkgewotICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRK
U0RvdWJsZSk7Ci0gICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZERvdWJsZUJveERvdWJsZTsK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OwogI2Vsc2UK
QEAgLTQzNCwxNCArNDIxLDEyIEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4gU3BlY3VsYXRpdmVK
SVQ6OnMKICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkgewogICAgICAgICBBU1NFUlQoaXNO
dW1iZXJDb25zdGFudChub2RlKSk7CiAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXREb3VibGVDb25z
dGFudDsKLSAgICB9IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSAhPSBEYXRhRm9ybWF0Tm9u
ZSAmJiBpbmZvLnNwaWxsRm9ybWF0KCkgIT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAgICAgICAv
LyBpdCB3YXMgYWxyZWFkeSBzcGlsbGVkIHByZXZpb3VzbHkgYW5kIG5vdCBhcyBhIGRvdWJsZSwg
d2hpY2ggbWVhbnMgd2UgbmVlZCB1bmJveGluZy4KLSAgICAgICAgQVNTRVJUKGluZm8uc3BpbGxG
b3JtYXQoKSAmIERhdGFGb3JtYXRKUyk7Ci0gICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkSlNVbmJv
eERvdWJsZTsKLSAgICB9IGVsc2UKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoaW5mby5z
cGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXROb25lIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBE
YXRhRm9ybWF0RG91YmxlKTsKICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWREb3VibGU7CisgICAg
fQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBBU1NFUlQoaW5mby5yZWdpc3RlckZvcm1h
dCgpID09IERhdGFGb3JtYXREb3VibGUgfHwgaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFG
b3JtYXRKU0RvdWJsZSk7CisgICAgQVNTRVJUKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRh
Rm9ybWF0RG91YmxlKTsKICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkgewogICAgICAgICBB
U1NFUlQoaXNOdW1iZXJDb25zdGFudChub2RlKSk7CiAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRE
b3VibGVDb25zdGFudDsKQEAgLTUyOCwxNCArNTEzLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c2lsZW50RmlsbChjb25zdCBTaQogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBh
eWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CiAg
ICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHBsYW4uZ3ByKCksIHBsYW4uZ3ByKCkpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIExvYWREb3VibGVCb3hEb3VibGU6Ci0gICAgICAgIG1f
aml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJl
Z2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKLSAgICAgICAgbV9qaXQuc3ViNjQoR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyLCBwbGFuLmdwcigpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBMb2FkSlNVbmJveERvdWJsZToKLSAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIGNhblRyYW1wbGUpOwot
ICAgICAgICB1bmJveERvdWJsZShjYW5UcmFtcGxlLCBwbGFuLmZwcigpKTsKLSAgICAgICAgYnJl
YWs7CiAjZWxzZQogICAgIGNhc2UgU2V0SlNDb25zdGFudFRhZzoKICAgICAgICAgbV9qaXQubW92
ZShJbW0zMih2YWx1ZU9mSlNDb25zdGFudChwbGFuLm5vZGUoKSkudGFnKCkpLCBwbGFuLmdwcigp
KTsKQEAgLTEwMzksNiArMTAxNiwyOSBAQCBHUFJUZW1wb3Jhcnk6OkdQUlRlbXBvcmFyeSgKIH0K
ICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQogCitKU1ZhbHVlUmVnc1RlbXBvcmFyeTo6SlNW
YWx1ZVJlZ3NUZW1wb3JhcnkoKSB7IH0KKworSlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6OkpTVmFsdWVS
ZWdzVGVtcG9yYXJ5KFNwZWN1bGF0aXZlSklUKiBqaXQpCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICA6IG1fZ3ByKGppdCkKKyNlbHNlCisgICAgOiBtX3BheWxvYWRHUFIoaml0KQorICAgICwgbV90
YWdHUFIoaml0KQorI2VuZGlmCit7Cit9CisKK0pTVmFsdWVSZWdzVGVtcG9yYXJ5Ojp+SlNWYWx1
ZVJlZ3NUZW1wb3JhcnkoKSB7IH0KKworSlNWYWx1ZVJlZ3MgSlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6
OnJlZ3MoKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIEpTVmFsdWVSZWdzKG1f
Z3ByLmdwcigpKTsKKyNlbHNlCisgICAgcmV0dXJuIEpTVmFsdWVSZWdzKG1fdGFnR1BSLmdwcigp
LCBtX3BheWxvYWRHUFIuZ3ByKCkpOworI2VuZGlmCit9CisKIHZvaWQgR1BSVGVtcG9yYXJ5Ojph
ZG9wdChHUFJUZW1wb3JhcnkmIG90aGVyKQogewogICAgIEFTU0VSVCghbV9qaXQpOwpAQCAtMTI1
OCwxMCArMTI1OCwxMCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFu
CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAgICAg
ICAgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9u
KTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoTWFjaGluZUludFVzZSkpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChJbnQ1MlJlcFVzZSkpCiAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQ1MkJyYW5j
aChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQp
Ci0gICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKQorICAg
ICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKSkKICAgICAg
ICAgICAgIGNvbXBpbGVQZWVwSG9sZURvdWJsZUJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBkb3Vi
bGVDb25kaXRpb24pOwogICAgICAgICBlbHNlIGlmIChub2RlLT5vcCgpID09IENvbXBhcmVFcSkg
ewogICAgICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpIHx8IG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpIHsKQEAgLTE4MTcsMTYgKzE4MTcs
MTMgQEAgR2VuZXJhdGVkT3BlcmFuZFR5cGUgU3BlY3VsYXRpdmVKSVQ6OmNoZQogICAgIGNhc2Ug
RGF0YUZvcm1hdEpTQ2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRKUzoKICAgICBjYXNlIERhdGFG
b3JtYXRKU0Jvb2xlYW46CisgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAgICAgICAgIHJl
dHVybiBHZW5lcmF0ZWRPcGVyYW5kSlNWYWx1ZTsKIAogICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50
MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CiAgICAgICAgIHJldHVybiBHZW5lcmF0ZWRP
cGVyYW5kSW50ZWdlcjsKIAotICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgotICAgIGNhc2Ug
RGF0YUZvcm1hdERvdWJsZToKLSAgICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmREb3VibGU7
Ci0gICAgICAgIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiBHZW5lcmF0ZWRPcGVyYW5kVHlwZVVua25vd247CkBAIC0x
ODQ1LDcgKzE4NDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMy
CiAgICAgfQogICAgICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGNhc2UgTWFjaGluZUlu
dFVzZTogeworICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0
SW50NTJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcywgUmV1c2UsIG9wMSk7CiAgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBv
cDEuZ3ByKCk7CkBAIC0xODU1LDYgKzE4NTIsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlVG9JbnQzMgogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8vIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIAorICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CisgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgRlBSUmVnIGZwciA9IG9wMS5mcHIo
KTsKKyAgICAgICAgR1BSUmVnIGdwciA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgbm90VHJ1bmNhdGVkVG9JbnRlZ2VyID0gbV9qaXQuYnJhbmNoVHJ1bmNhdGVEb3Vi
bGVUb0ludDMyKGZwciwgZ3ByLCBKSVRDb21waWxlcjo6QnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCk7
CisgICAgICAgIAorICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobm90
VHJ1bmNhdGVkVG9JbnRlZ2VyLCB0aGlzLCB0b0ludDMyLCBncHIsIGZwcikpOworICAgICAgICAK
KyAgICAgICAgaW50MzJSZXN1bHQoZ3ByLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICAKICAgICBjYXNlIE51bWJlclVzZToKICAgICBjYXNlIE5vdENlbGxVc2U6IHsKQEAgLTE4
NjYsMTggKzE4NzYsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMy
CiAgICAgICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIG9wMS5mb3JtYXQo
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBHZW5lcmF0
ZWRPcGVyYW5kRG91YmxlOiB7Ci0gICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OwotICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hp
bGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgICAgICBGUFJSZWcgZnBy
ID0gb3AxLmZwcigpOwotICAgICAgICAgICAgR1BSUmVnIGdwciA9IHJlc3VsdC5ncHIoKTsKLSAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFRydW5jYXRlZFRvSW50ZWdlciA9IG1faml0
LmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihmcHIsIGdwciwgSklUQ29tcGlsZXI6OkJyYW5j
aElmVHJ1bmNhdGVGYWlsZWQpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwobm90VHJ1bmNhdGVkVG9JbnRlZ2VyLCB0aGlzLCB0b0lu
dDMyLCBncHIsIGZwcikpOwotCi0gICAgICAgICAgICBpbnQzMlJlc3VsdChncHIsIG5vZGUpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAgICAgICAgIGNhc2UgR2VuZXJhdGVkT3Bl
cmFuZEpTVmFsdWU6IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKQEAgLTIwNjYsNzAgKzIwNjQsMTM4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVEb3VibGVBc0ludDMKICAgICBpbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50MzJUb0RvdWJsZShOb2Rl
KiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcChOb2RlKiBub2Rl
KQogewotICAgIEFTU0VSVCghaXNJbnQzMkNvbnN0YW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkp
OyAvLyBUaGlzIHNob3VsZCBoYXZlIGJlZW4gY29uc3RhbnQgZm9sZGVkLgorICAgIHN3aXRjaCAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAg
ICAgQVNTRVJUKCFpc051bWJlckNvbnN0YW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpOyAvLyBU
aGlzIHNob3VsZCBoYXZlIGJlZW4gY29uc3RhbnQgZm9sZGVkLgogICAgIAotICAgIGlmIChpc0lu
dDMyU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKSB7
Ci0gICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCks
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7Ci0gICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMS5ncHIoKSwgcmVz
dWx0LmZwcigpKTsKLSAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKSB7CisgICAgICAgICAgICBTcGVj
dWxhdGVJbnQzMk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAg
ICAgICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMS5ncHIoKSwgcmVzdWx0LmZw
cigpKTsKKyAgICAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgCi0gICAgSlNWYWx1ZU9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwotICAgIEZQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgRlBS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIEdQ
UlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsK
IAotICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7Ci0gICAgR1BSUmVnIHRlbXBHUFIgPSB0
ZW1wLmdwcigpOwotICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CisgICAgICAg
IEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVt
cC5ncHIoKTsKKyAgICAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKICAgICAK
LSAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NCgKLSAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBt
X2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAgICAKLSAgICBpZiAo
bmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyKSkgewotICAgICAg
ICB0eXBlQ2hlY2soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGls
ZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFj
cm9Bc3NlbWJsZXI6Olplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
KSk7Ci0gICAgfQorICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNw
ZWNCeXRlY29kZU51bWJlcikpIHsKKyAgICAgICAgICAgIHR5cGVDaGVjaygKKyAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0J5dGVjb2RlTnVt
YmVyLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6
WmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAg
fQogICAgIAotICAgIG1faml0Lm1vdmUob3AxR1BSLCB0ZW1wR1BSKTsKLSAgICB1bmJveERvdWJs
ZSh0ZW1wR1BSLCByZXN1bHRGUFIpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2pp
dC5qdW1wKCk7CisgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCB0ZW1wR1BSKTsKKyAgICAgICAg
dW5ib3hEb3VibGUodGVtcEdQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAKLSAgICBpc0ludGVnZXIubGluaygmbV9qaXQp
OwotICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMUdQUiwgcmVzdWx0RlBSKTsKLSAg
ICBkb25lLmxpbmsoJm1faml0KTsKLSNlbHNlCi0gICAgRlBSVGVtcG9yYXJ5IHRlbXAodGhpcyk7
CisgICAgICAgIGlzSW50ZWdlci5saW5rKCZtX2ppdCk7CisgICAgICAgIG1faml0LmNvbnZlcnRJ
bnQzMlRvRG91YmxlKG9wMUdQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgZG9uZS5saW5rKCZtX2pp
dCk7CisjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSAtPiB0aGlzIGlzIHRoZSAzMl82NCBjYXNlCisg
ICAgICAgIEZQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgIAotICAgIEdQUlJlZyBvcDFUYWdH
UFIgPSBvcDEudGFnR1BSKCk7Ci0gICAgR1BSUmVnIG9wMVBheWxvYWRHUFIgPSBvcDEucGF5bG9h
ZEdQUigpOwotICAgIEZQUlJlZyB0ZW1wRlBSID0gdGVtcC5mcHIoKTsKLSAgICBGUFJSZWcgcmVz
dWx0RlBSID0gcmVzdWx0LmZwcigpOworICAgICAgICBHUFJSZWcgb3AxVGFnR1BSID0gb3AxLnRh
Z0dQUigpOworICAgICAgICBHUFJSZWcgb3AxUGF5bG9hZEdQUiA9IG9wMS5wYXlsb2FkR1BSKCk7
CisgICAgICAgIEZQUlJlZyB0ZW1wRlBSID0gdGVtcC5mcHIoKTsKKyAgICAgICAgRlBSUmVnIHJl
c3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKICAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBpc0lu
dGVnZXIgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBv
cDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50
MzJUYWcpKTsKICAgICAKLSAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNw
ZWNGdWxsTnVtYmVyKSkgewotICAgICAgICB0eXBlQ2hlY2soCi0gICAgICAgICAgICBKU1ZhbHVl
UmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxO
dW1iZXIsCi0gICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVP
ckVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7Ci0g
ICAgfQorICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNCeXRl
Y29kZU51bWJlcikpIHsKKyAgICAgICAgICAgIHR5cGVDaGVjaygKKyAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3Bl
Y0J5dGVjb2RlTnVtYmVyLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxv
d2VzdFRhZykpKTsKKyAgICAgICAgfQogICAgIAotICAgIHVuYm94RG91YmxlKG9wMVRhZ0dQUiwg
b3AxUGF5bG9hZEdQUiwgcmVzdWx0RlBSLCB0ZW1wRlBSKTsKLSAgICBKSVRDb21waWxlcjo6SnVt
cCBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAgICB1bmJveERvdWJsZShvcDFUYWdHUFIsIG9w
MVBheWxvYWRHUFIsIHJlc3VsdEZQUiwgdGVtcEZQUik7CisgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgCi0gICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0
KTsKLSAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcDFQYXlsb2FkR1BSLCByZXN1bHRG
UFIpOwotICAgIGRvbmUubGluaygmbV9qaXQpOwotI2VuZGlmCisgICAgICAgIGlzSW50ZWdlci5s
aW5rKCZtX2ppdCk7CisgICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMVBheWxv
YWRHUFIsIHJlc3VsdEZQUik7CisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpCiAgICAgCi0gICAgZG91YmxlUmVzdWx0KHJlc3VsdEZQUiwgbm9kZSk7
CisgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHRGUFIsIG5vZGUpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgSW50NTJSZXBV
c2U6IHsKKyAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHZhbHVlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAg
ICAgCisgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICBGUFJS
ZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigpOworCisgICAgICAgIG1faml0LmNvbnZlcnRJbnQ2
NFRvRG91YmxlKHZhbHVlR1BSLCByZXN1bHRGUFIpOworICAgICAgICAKKyAgICAgICAgZG91Ymxl
UmVzdWx0KHJlc3VsdEZQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYg
Ly8gVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUmVwKE5vZGUqIG5vZGUpCit7CisgICAgc3dp
dGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTog
eworICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAg
ICAKKyAgICAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWUuZnByKCk7CisgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisjaWYgQ1BVKFg4NikKKyAgICAg
ICAgLy8gVGhpcyBpcyBwcmV0dHkgYW5ub3lpbmcgLSBib3hEb3VibGUoKSBvbiBYODYgY2xvYmJl
cnMgdGhlIHNvdXJjZS4gVGhhdCdzIGtpbmRhIGdyb3NzLgorICAgICAgICBGUFJUZW1wb3Jhcnkg
dGVtcCh0aGlzKTsKKyAgICAgICAgbV9qaXQubW92ZURvdWJsZSh2YWx1ZUZQUiwgdGVtcC5mcHIo
KSk7CisgICAgICAgIHZhbHVlRlBSID0gdGVtcC5mcHIoKTsKKyNlbmRpZgorICAgICAgICAKKyAg
ICAgICAgYm94RG91YmxlKHZhbHVlRlBSLCByZXN1bHRSZWdzKTsKKyAgICAgICAgCisgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBJbnQ1MlJlcFVzZTogewor
ICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAKKyAg
ICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBib3hJbnQ1Mih2YWx1ZUdQ
UiwgcmVzdWx0R1BSLCBEYXRhRm9ybWF0U3RyaWN0SW50NTIpOworICAgICAgICAKKyAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiB9
CiAKIHN0YXRpYyBkb3VibGUgY2xhbXBEb3VibGVUb0J5dGUoZG91YmxlIGQpCkBAIC0yMzIwLDcg
KzIzODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJCiAgICAg
ICAgIH0KICAgICAgICAgICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGNhc2UgTWFj
aGluZUludFVzZTogeworICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAgICAgICBT
cGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgdmFsdWVPcCh0aGlzLCB2YWx1ZVVzZSk7CiAgICAg
ICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKQEAgLTIzNDQsNyArMjQxMCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckkKICAgICAgICAgfQogI2VuZGlmIC8vIFVT
RShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAg
ICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIGlmIChpc0NsYW1wZWQodHlw
ZSkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZWxlbWVudFNpemUodHlwZSkgPT0gMSk7CiAg
ICAgICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVl
VXNlKTsKQEAgLTI0NDAsMTAgKzI1MDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QnlWYWxPbkZsCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdE5hTiA9IG1faml0LmJyYW5jaERv
dWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWwsIHJlc3VsdFJlZywgcmVzdWx0UmVnKTsK
LSAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9IFFOYU47Ci0gICAgbV9qaXQubG9hZERvdWJs
ZSgmTmFOLCByZXN1bHRSZWcpOwotICAgIG5vdE5hTi5saW5rKCZtX2ppdCk7CisgICAgbV9qaXQu
c2FuaXRpemVEb3VibGUocmVzdWx0UmVnKTsKICAgICAKICAgICBkb3VibGVSZXN1bHQocmVzdWx0
UmVnLCBub2RlKTsKIH0KQEAgLTI2NDEsNyArMjcwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVBZGQoTm9kZSogbm8KICAgICB9CiAgICAgICAgIAogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAg
ICAgICBBU1NFUlQoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpOwogICAg
ICAgICBBU1NFUlQoIXNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTW9kZSgpKSk7
CiAKQEAgLTI2NzAsNyArMjczMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQo
Tm9kZSogbm8KICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAKLSAgICBjYXNl
IE51bWJlclVzZTogeworICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0
ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3Vs
YXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBGUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSwgb3AyKTsKQEAgLTI4MDcsNyArMjg3MCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2QKICAgICB9CiAgICAgICAgIAog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgY2FzZSBJ
bnQ1MlJlcFVzZTogewogICAgICAgICBBU1NFUlQoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5h
cml0aE1vZGUoKSkpOwogICAgICAgICBBU1NFUlQoIXNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5v
ZGUtPmFyaXRoTW9kZSgpKSk7CiAKQEAgLTI4MzYsNyArMjg5OSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2QKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2
NCkKIAotICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAg
ICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKQEAgLTI4ODEsNyArMjk0
NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSgKICAgICB9CiAK
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgIGNhc2Ug
SW50NTJSZXBVc2U6IHsKICAgICAgICAgQVNTRVJUKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+
YXJpdGhNb2RlKCkpKTsKICAgICAgICAgCiAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NTIpKSB7CkBAIC0yOTE4LDcgKzI5ODEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhOZWdhdGUoCiAgICAgfQogI2Vu
ZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIAotICAgIGNhc2UgTnVtYmVyVXNlOiB7Cisg
ICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBv
cDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOwogICAgICAgICAKQEAgLTI5NjksNyArMzAzMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVBcml0aE11bChOb2QKICAgICB9CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkgICAK
LSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAg
ICAgIEFTU0VSVChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAgICAg
ICAgIAogICAgICAgICAvLyBUaGlzIGlzIHN1cGVyIGNsZXZlci4gV2Ugd2FudCB0byBkbyBhbiBp
bnQ1MiBtdWx0aXBsaWNhdGlvbiBhbmQgY2hlY2sgdGhlCkBAIC0zMDI2LDcgKzMwODksNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNdWwoTm9kCiAgICAgfQogI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIAotICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgY2Fz
ZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywg
b3AxLCBvcDIpOwpAQCAtMzE5MCw3ICszMjUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFyaXRoRGl2KE5vZAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNh
c2UgTnVtYmVyVXNlOiB7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3BlY3Vs
YXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVj
dWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEZQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKQEAgLTM0OTUsNyArMzU1OCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZChOb2QKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAgICAgCi0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNlIERvdWJsZVJlcFVz
ZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKICAgICAgICAgCkBAIC0zNTMwLDEzICszNTkzLDEzIEBAIGJvb2wgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBhcmUoTm9kZSogbm9kZSwKICAgICB9CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7CisgICAg
aWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgY29tcGls
ZUludDUyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgCi0gICAgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChE
b3VibGVSZXBVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVEb3VibGVDb21wYXJlKG5vZGUsIGRvdWJs
ZUNvbmRpdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0zNjEwLDcgKzM2
NzMsNyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kCiAgICAgfQog
ICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpICAgCi0gICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChNYWNoaW5lSW50VXNlKSkgeworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJS
ZXBVc2UpKSB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBl
ZXBIb2xlQnJhbmNoKCk7CiAgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9N
QVgpIHsKICAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJ
bmRleEluQmxvY2spOwpAQCAtMzYyNiw3ICszNjg5LDcgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVN0cmljdEVxKE5vZAogICAgIH0KICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi0g
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CisgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpKSB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5j
aEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAgICAgIGlmIChicmFu
Y2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKICAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5v
ZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOwpAQCAtNDQ4NywzNiArNDU1MCwz
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVJbnQzMihFZGdlCiAgICAgKFNwZWN1
bGF0ZUludDMyT3BlcmFuZCh0aGlzLCBlZGdlKSkuZ3ByKCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSBlZGdlKQotewotI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTWFjaGluZUludCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICAoU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKHRo
aXMsIGVkZ2UpKS5ncHIoKTsKLSNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCi0gICAgVU5VU0VEX1BB
UkFNKGVkZ2UpOwotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlmIC8vIFVT
RShKU1ZBTFVFNjQpCi19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcihF
ZGdlIGVkZ2UpCiB7Ci0gICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbE51bWJl
cikpCisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIpKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgKFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQodGhpcywg
ZWRnZSkpLmZwcigpOworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2UsIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBHUFJSZWcgZ3By
ID0gdmFsdWUuZ3ByKCk7CisgICAgdHlwZUNoZWNrKAorICAgICAgICBKU1ZhbHVlUmVncyhncHIp
LCBlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIsCisgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NChN
YWNyb0Fzc2VtYmxlcjo6WmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIp
KTsKKyNlbHNlCisgICAgR1BSUmVnIHRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOworICAgIERGR19U
WVBFX0NIRUNLKAorICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLCBlZGdlLCB+U3BlY0ludDMy
LAorICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHRhZ0dQUiwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOworICAgIERGR19UWVBFX0NIRUNLKAor
ICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIsCisg
ICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHRhZ0dQ
UiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKKyNlbmRpZgogfQogCi12b2lk
IFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVSZWFsTnVtYmVyKEVkZ2UgZWRnZSkKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZURvdWJsZVJlYWwoRWRnZSBlZGdlKQogewotICAgIGlmICgh
bmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0Z1bGxSZWFsTnVtYmVyKSkKKyAgICBpZiAoIW5lZWRz
VHlwZUNoZWNrKGVkZ2UsIFNwZWNEb3VibGVSZWFsKSkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKICAgICBGUFJS
ZWcgZnByID0gb3BlcmFuZC5mcHIoKTsKLSAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNW
YWx1ZVJlZ3MoKSwgZWRnZSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAorICAgIHR5cGVDaGVjaygKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MoKSwgZWRnZSwgU3BlY0RvdWJsZVJlYWwsCiAgICAgICAgIG1faml0
LmJyYW5jaERvdWJsZSgKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVh
bE9yVW5vcmRlcmVkLCBmcHIsIGZwcikpOwogfQpAQCAtNDc2OCw4ICs0ODMyLDExIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWQKICAgICBjYXNlIEtub3duSW50MzJV
c2U6CiAgICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0ludDMyKSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgIEFTU0VSVCgh
bmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0Z1bGxOdW1iZXIpKTsKKyAgICBjYXNlIERvdWJsZVJl
cFVzZToKKyAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRG91YmxlKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIEFTU0VSVCgh
bmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY01hY2hpbmVJbnQpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRn
ZSwgU3BlY0NlbGwpKTsKQEAgLTQ3ODAsMTUgKzQ4NDcsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIHNwZWN1
bGF0ZUludDMyKGVkZ2UpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6
Ci0gICAgICAgIHNwZWN1bGF0ZU1hY2hpbmVJbnQoZWRnZSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgc3BlY3VsYXRlUmVhbE51bWJlcihlZGdlKTsK
LSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgIHNwZWN1bGF0ZU51
bWJlcihlZGdlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgor
ICAgICAgICBzcGVjdWxhdGVEb3VibGVSZWFsKGVkZ2UpOworICAgICAgICBicmVhazsKICAgICBj
YXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIHNwZWN1bGF0ZUJvb2xlYW4oZWRnZSk7CiAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNz
IFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQ7CiBjbGFzcyBTcGVjdWxhdGVDZWxsT3BlcmFuZDsKIGNs
YXNzIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kOwogCi1lbnVtIEdlbmVyYXRlZE9wZXJhbmRUeXBl
IHsgR2VuZXJhdGVkT3BlcmFuZFR5cGVVbmtub3duLCBHZW5lcmF0ZWRPcGVyYW5kSW50ZWdlciwg
R2VuZXJhdGVkT3BlcmFuZERvdWJsZSwgR2VuZXJhdGVkT3BlcmFuZEpTVmFsdWV9OworZW51bSBH
ZW5lcmF0ZWRPcGVyYW5kVHlwZSB7IEdlbmVyYXRlZE9wZXJhbmRUeXBlVW5rbm93biwgR2VuZXJh
dGVkT3BlcmFuZEludGVnZXIsIEdlbmVyYXRlZE9wZXJhbmRKU1ZhbHVlfTsKIAogaW5saW5lIEdQ
UlJlZyBleHRyYWN0UmVzdWx0KEdQUlJlZyByZXN1bHQpIHsgcmV0dXJuIHJlc3VsdDsgfQogI2lm
IFVTRShKU1ZBTFVFNjQpCkBAIC0xOTAsNyArMTkwLDYgQEAgcHVibGljOgogICAgICAgICBpZiAo
c3BpbGxNZS5pc1ZhbGlkKCkpIHsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICAgICAg
R2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIo
c3BpbGxNZSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmZvLnJlZ2lzdGVyRm9ybWF0
KCkgIT0gRGF0YUZvcm1hdEpTRG91YmxlKTsKICAgICAgICAgICAgIGlmICgoaW5mby5yZWdpc3Rl
ckZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKSkKICAgICAgICAgICAgICAgICBtX2dwcnMucmVsZWFz
ZShpbmZvLnRhZ0dQUigpID09IGdwciA/IGluZm8ucGF5bG9hZEdQUigpIDogaW5mby50YWdHUFIo
KSk7CiAjZW5kaWYKQEAgLTI2NSw3ICsyNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UgaWYg
KHJlZ2lzdGVyRm9ybWF0ICE9IERhdGFGb3JtYXROb25lKQogICAgICAgICAgICAgbV9ncHJzLnJl
bGVhc2UoaW5mby5ncHIoKSk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBpZiAo
cmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdERvdWJsZSB8fCByZWdpc3RlckZvcm1hdCA9PSBE
YXRhRm9ybWF0SlNEb3VibGUpCisgICAgICAgIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9y
bWF0RG91YmxlKQogICAgICAgICAgICAgbV9mcHJzLnJlbGVhc2UoaW5mby5mcHIoKSk7CiAgICAg
ICAgIGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB7CiAgICAgICAgICAg
ICBtX2dwcnMucmVsZWFzZShpbmZvLnRhZ0dQUigpKTsKQEAgLTQ1OSw2ICs0NTgsMTAgQEAgcHVi
bGljOgogICAgICAgICBtX2ppdC51bmJveERvdWJsZSh0YWdHUFIsIHBheWxvYWRHUFIsIGZwciwg
c2NyYXRjaEZQUik7CiAgICAgfQogI2VuZGlmCisgICAgdm9pZCBib3hEb3VibGUoRlBSUmVnIGZw
ciwgSlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7CisgICAgICAgIG1faml0LmJveERvdWJsZShmcHIs
IHJlZ3MpOworICAgIH0KIAogICAgIC8vIFNwaWxsIGEgVmlydHVhbFJlZ2lzdGVyIHRvIHRoZSBK
U1N0YWNrLgogICAgIHZvaWQgc3BpbGwoVmlydHVhbFJlZ2lzdGVyIHNwaWxsTWUpCkBAIC01Mjgs
MTEgKzUzMSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6Ci0gICAgICAgIGNhc2UgRGF0YUZvcm1hdEpT
RG91YmxlOiB7CisgICAgICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZTogewogICAgICAgICAgICAg
Ly8gT24gSlNWQUxVRTMyXzY0IGJveGluZyBhIGRvdWJsZSBpcyBhIG5vLW9wLgogICAgICAgICAg
ICAgbV9qaXQuc3RvcmVEb3VibGUoaW5mby5mcHIoKSwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
c3BpbGxNZSkpOwotICAgICAgICAgICAgaW5mby5zcGlsbCgqbV9zdHJlYW0sIHNwaWxsTWUsIERh
dGFGb3JtYXRKU0RvdWJsZSk7CisgICAgICAgICAgICBpbmZvLnNwaWxsKCptX3N0cmVhbSwgc3Bp
bGxNZSwgRGF0YUZvcm1hdERvdWJsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IApAQCAtOTI1LDYgKzkyNywxNCBAQCBwdWJsaWM6CiAgICAgICAgIGpzVmFsdWVSZXN1bHQodGFn
LCBwYXlsb2FkLCBub2RlLCBEYXRhRm9ybWF0SlMsIG1vZGUpOwogICAgIH0KICNlbmRpZgorICAg
IHZvaWQganNWYWx1ZVJlc3VsdChKU1ZhbHVlUmVncyByZWdzLCBOb2RlKiBub2RlLCBEYXRhRm9y
bWF0IGZvcm1hdCA9IERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNl
Q2hpbGRyZW4pCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVncy5ncHIoKSwgbm9kZSwgZm9ybWF0LCBtb2RlKTsKKyNlbHNlCisgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVncy50YWdHUFIoKSwgcmVncy5wYXlsb2FkR1BSKCksIG5vZGUsIGZvcm1hdCwg
bW9kZSk7CisjZW5kaWYKKyAgICB9CiAgICAgdm9pZCBzdG9yYWdlUmVzdWx0KEdQUlJlZyByZWcs
IE5vZGUqIG5vZGUsIFVzZUNoaWxkcmVuTW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxkcmVuKQogICAg
IHsKICAgICAgICAgaWYgKG1vZGUgPT0gQ2FsbFVzZUNoaWxkcmVuKQpAQCAtMjA4MCwxMCArMjA5
MCwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9k
ZSopOwogICAgIAorICAgIHZvaWQgY29tcGlsZVZhbHVlUmVwKE5vZGUqKTsKKyAgICB2b2lkIGNv
bXBpbGVEb3VibGVSZXAoTm9kZSopOworICAgIAogICAgIHZvaWQgY29tcGlsZVZhbHVlVG9JbnQz
MihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVUludDMyVG9OdW1iZXIoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZURvdWJsZUFzSW50MzIoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUludDMyVG9E
b3VibGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUFkZChOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlTWFrZVJvcGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUFyaXRoU3ViKE5vZGUqKTsKQEAg
LTIxODUsMTIgKzIxOTcsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTQXJy
YXkoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2ln
bmVkIG51bUVsZW1lbnRzKTsKIAotI2lmIFVTRShKU1ZBTFVFNjQpIAotICAgIEpJVENvbXBpbGVy
OjpKdW1wIGNvbnZlcnRUb0RvdWJsZShHUFJSZWcgdmFsdWUsIEZQUlJlZyByZXN1bHQsIEdQUlJl
ZyB0bXApOwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBKSVRDb21waWxlcjo6SnVtcCBj
b252ZXJ0VG9Eb3VibGUoSlNWYWx1ZU9wZXJhbmQmLCBGUFJSZWcgcmVzdWx0KTsKLSNlbmRpZgot
ICAgIAogICAgIC8vIEFkZCBhIHNwZWN1bGF0aW9uIGNoZWNrLgogICAgIHZvaWQgc3BlY3VsYXRp
b25DaGVjayhFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGp1bXBUb0ZhaWwpOwogICAgIHZvaWQgc3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCwgSlNW
YWx1ZVNvdXJjZSwgTm9kZSosIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYganVtcHNU
b0ZhaWwpOwpAQCAtMjIxNyw3ICsyMjIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRl
SW50MzIoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVNYWNoaW5lSW50KEVkZ2UpOwogICAgIHZv
aWQgc3BlY3VsYXRlTnVtYmVyKEVkZ2UpOwotICAgIHZvaWQgc3BlY3VsYXRlUmVhbE51bWJlcihF
ZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZURvdWJsZVJlYWwoRWRnZSk7CiAgICAgdm9pZCBzcGVj
dWxhdGVCb29sZWFuKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlQ2VsbChFZGdlKTsKICAgICB2
b2lkIHNwZWN1bGF0ZU9iamVjdChFZGdlKTsKQEAgLTI1NjUsNiArMjU3MSwyMyBAQCBwcml2YXRl
OgogICAgIEdQUlJlZyBtX2dwcjsKIH07CiAKK2NsYXNzIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHsK
K3B1YmxpYzoKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSgpOworICAgIEpTVmFsdWVSZWdzVGVt
cG9yYXJ5KFNwZWN1bGF0aXZlSklUKik7CisgICAgfkpTVmFsdWVSZWdzVGVtcG9yYXJ5KCk7Cisg
ICAgCisgICAgSlNWYWx1ZVJlZ3MgcmVncygpOworCitwcml2YXRlOgorI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgR1BSVGVtcG9yYXJ5IG1fZ3ByOworI2Vsc2UKKyAgICBHUFJUZW1wb3JhcnkgbV9w
YXlsb2FkR1BSOworICAgIEdQUlRlbXBvcmFyeSBtX3RhZ0dQUjsKKyNlbmRpZgorfTsKKwogY2xh
c3MgRlBSVGVtcG9yYXJ5IHsKIHB1YmxpYzoKICAgICBGUFJUZW1wb3JhcnkoU3BlY3VsYXRpdmVK
SVQqKTsKQEAgLTI3NTQsMTIgKzI3NzcsMTIgQEAgcHJpdmF0ZToKIC8vIEdpdmVzIHlvdSBhIGNh
bm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxNiwgbG93IGJpdHMgemVy
bykuCiBjbGFzcyBTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQgewogcHVibGljOgotICAgIGV4cGxpY2l0
IFNwZWN1bGF0ZUludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9w
ZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikK
KyAgICBleHBsaWNpdCBTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwg
RWRnZSBlZGdlKQogICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkK
ICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQogICAgIHsKLSAgICAgICAg
QVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBl
ZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxl
ZChub2RlKCkpKQogICAgICAgICAgICAgZ3ByKCk7CiAgICAgfQpAQCAtMjgwMSwxMiArMjgyNCwx
MiBAQCBwcml2YXRlOgogLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRoZSBwYXls
b2FkIGlzIGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVuZGVk
KS4KIGNsYXNzIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB7CiBwdWJsaWM6Ci0gICAgZXhw
bGljaXQgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVk
Z2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNw
ZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZChTcGVj
dWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAg
ICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcp
CiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAg
IGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CkBA
IC0yODQ5LDM1ICsyODcyLDM1IEBAIGVudW0gT3Bwb3NpdGVTaGlmdFRhZyB7IE9wcG9zaXRlU2hp
ZnQgfTsKIAogY2xhc3MgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kIHsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVK
SVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0
aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50
NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSkKICAgICAgICAgOiBtX2pp
dChqaXQpCiAgICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAgICAgICwgbV9ncHJPckludmFsaWQo
SW52YWxpZEdQUlJlZykKICAgICAgICAgLCBtX3N0cmljdChqaXQtPmJldHRlclVzZVN0cmljdElu
dDUyKGVkZ2UpKQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNl
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2Up
OwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQogICAgICAgICAgICAgZ3ByKCk7
CiAgICAgfQogICAgIAotICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFu
ZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZl
ckludDUyT3BlcmFuZCYgb3RoZXIsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9t
YXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJ
bnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBjb25zdCBTcGVjdWxh
dGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQmIG90aGVyKQogICAgICAgICA6IG1faml0KGppdCkKICAg
ICAgICAgLCBtX2VkZ2UoZWRnZSkKICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BS
UmVnKQogICAgICAgICAsIG1fc3RyaWN0KG90aGVyLm1fc3RyaWN0KQogICAgIHsKLSAgICAgICAg
QVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBl
ZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxl
ZChub2RlKCkpKQogICAgICAgICAgICAgZ3ByKCk7CiAgICAgfQogICAgIAotICAgIGV4cGxpY2l0
IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdl
IGVkZ2UsIE9wcG9zaXRlU2hpZnRUYWcsIGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3Bl
cmFuZCYgb3RoZXIsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJh
bmRTcGVjdWxhdGlvbikKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJh
bmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcHBvc2l0ZVNoaWZ0VGFnLCBjb25z
dCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQmIG90aGVyKQogICAgICAgICA6IG1faml0
KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkKICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJ
bnZhbGlkR1BSUmVnKQogICAgICAgICAsIG1fc3RyaWN0KCFvdGhlci5tX3N0cmljdCkKICAgICB7
Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKTsKICAgICAgICAgaWYgKGpp
dC0+aXNGaWxsZWQobm9kZSgpKSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0KQEAgLTI5MjYs
MTMgKzI5NDksMTMgQEAgcHJpdmF0ZToKIAogY2xhc3MgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU3BlY3VsYXRlRG91YmxlT3BlcmFuZChTcGVjdWxhdGl2
ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9t
YXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVEb3VibGVPcGVy
YW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSkKICAgICAgICAgOiBtX2ppdChqaXQp
CiAgICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAgICAgICwgbV9mcHJPckludmFsaWQoSW52YWxp
ZEZQUlJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ppdCk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgaXNEb3VibGUo
ZWRnZS51c2VLaW5kKCkpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNEb3VibGUoZWRnZS51
c2VLaW5kKCkpKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKICAgICAgICAg
ICAgIGZwcigpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNl
S2luZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdVc2VLaW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTcgKzQ2LDE3IEBAIHZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBVc2UKICAgICBjYXNlIEtub3duSW50MzJVc2U6
CiAgICAgICAgIG91dC5wcmludCgiS25vd25JbnQzMiIpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIE1hY2hpbmVJbnRVc2U6Ci0gICAgICAgIG91dC5wcmludCgiTWFjaGluZUludCIpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFJlYWxOdW1iZXJVc2U6Ci0gICAgICAgIG91dC5wcmludCgi
UmVhbE51bWJlciIpOworICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIG91dC5wcmludCgi
SW50NTJSZXAiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAg
IG91dC5wcmludCgiTnVtYmVyIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgS25vd25OdW1i
ZXJVc2U6Ci0gICAgICAgIG91dC5wcmludCgiS25vd25OdW1iZXIiKTsKKyAgICBjYXNlIERvdWJs
ZVJlcFVzZToKKyAgICAgICAgb3V0LnByaW50KCJEb3VibGVSZXAiKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgorICAgICAgICBvdXQucHJpbnQoIkRvdWJsZVJl
cFJlYWwiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICBv
dXQucHJpbnQoIkJvb2xlYW4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNl
S2luZC5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1VzZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIKICNpbmNsdWRlICJTcGVjdWxh
dGVkVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCkBAIC0zNywxMCArMzgs
MTAgQEAgZW51bSBVc2VLaW5kIHsKICAgICBVbnR5cGVkVXNlLAogICAgIEludDMyVXNlLAogICAg
IEtub3duSW50MzJVc2UsCi0gICAgTWFjaGluZUludFVzZSwKLSAgICBSZWFsTnVtYmVyVXNlLAor
ICAgIEludDUyUmVwVXNlLAogICAgIE51bWJlclVzZSwKLSAgICBLbm93bk51bWJlclVzZSwKKyAg
ICBEb3VibGVSZXBVc2UsCisgICAgRG91YmxlUmVwUmVhbFVzZSwKICAgICBCb29sZWFuVXNlLAog
ICAgIENlbGxVc2UsCiAgICAgS25vd25DZWxsVXNlLApAQCAtNTksNyArNjAsNyBAQCBlbnVtIFVz
ZUtpbmQgewogICAgIExhc3RVc2VLaW5kIC8vIE11c3QgYWx3YXlzIGJlIHRoZSBsYXN0IGVudHJ5
IGluIHRoZSBlbnVtLCBhcyBpdCBpcyB1c2VkIHRvIGRlbm90ZSB0aGUgbnVtYmVyIG9mIGVudW0g
ZWxlbWVudHMuCiB9OwogCi1BTFdBWVNfSU5MSU5FIFNwZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJG
b3IoVXNlS2luZCB1c2VLaW5kKQoraW5saW5lIFNwZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGb3Io
VXNlS2luZCB1c2VLaW5kKQogewogICAgIHN3aXRjaCAodXNlS2luZCkgewogICAgIGNhc2UgVW50
eXBlZFVzZToKQEAgLTY3LDEzICs2OCwxNCBAQCBBTFdBWVNfSU5MSU5FIFNwZWN1bGF0ZWRUeXBl
IHR5cGVGaWx0ZXJGCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICBjYXNlIEtub3duSW50MzJVc2U6
CiAgICAgICAgIHJldHVybiBTcGVjSW50MzI7Ci0gICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAg
IGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgIHJldHVybiBTcGVjTWFjaGluZUludDsKLSAgICBj
YXNlIFJlYWxOdW1iZXJVc2U6Ci0gICAgICAgIHJldHVybiBTcGVjRnVsbFJlYWxOdW1iZXI7CiAg
ICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgcmV0
dXJuIFNwZWNGdWxsTnVtYmVyOworICAgICAgICByZXR1cm4gU3BlY0J5dGVjb2RlTnVtYmVyOwor
ICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICByZXR1cm4gU3BlY0RvdWJsZTsKKyAgICBj
YXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgICAgIHJldHVybiBTcGVjRG91YmxlUmVhbDsKICAg
ICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIHJldHVybiBTcGVjQm9vbGVhbjsKICAgICBjYXNl
IENlbGxVc2U6CkBAIC0xMDgsNTMgKzExMCw1MyBAQCBBTFdBWVNfSU5MSU5FIFNwZWN1bGF0ZWRU
eXBlIHR5cGVGaWx0ZXJGCiAgICAgfQogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgc2hvdWxkTm90
SGF2ZVR5cGVDaGVjayhVc2VLaW5kIGtpbmQpCitpbmxpbmUgYm9vbCBzaG91bGROb3RIYXZlVHlw
ZUNoZWNrKFVzZUtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIFVu
dHlwZWRVc2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNlOgotICAgIGNhc2UgS25vd25OdW1iZXJV
c2U6CiAgICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgY2FzZSBLbm93blN0cmluZ1VzZToKKyAg
ICBjYXNlIEludDUyUmVwVXNlOgorICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQog
Ci1BTFdBWVNfSU5MSU5FIGJvb2wgbWF5SGF2ZVR5cGVDaGVjayhVc2VLaW5kIGtpbmQpCitpbmxp
bmUgYm9vbCBtYXlIYXZlVHlwZUNoZWNrKFVzZUtpbmQga2luZCkKIHsKICAgICByZXR1cm4gIXNo
b3VsZE5vdEhhdmVUeXBlQ2hlY2soa2luZCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBpc051
bWVyaWNhbChVc2VLaW5kIGtpbmQpCitpbmxpbmUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGtp
bmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBJbnQzMlVzZToKICAgICBjYXNl
IEtub3duSW50MzJVc2U6Ci0gICAgY2FzZSBNYWNoaW5lSW50VXNlOgotICAgIGNhc2UgUmVhbE51
bWJlclVzZToKICAgICBjYXNlIE51bWJlclVzZToKLSAgICBjYXNlIEtub3duTnVtYmVyVXNlOgor
ICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgY2FzZSBE
b3VibGVSZXBSZWFsVXNlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgaXNEb3Vi
bGUoVXNlS2luZCBraW5kKQoraW5saW5lIGJvb2wgaXNEb3VibGUoVXNlS2luZCBraW5kKQogewog
ICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICBjYXNlIE51
bWJlclVzZToKLSAgICBjYXNlIEtub3duTnVtYmVyVXNlOgorICAgIGNhc2UgRG91YmxlUmVwVXNl
OgorICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIAotQUxXQVlTX0lOTElO
RSBib29sIGlzQ2VsbChVc2VLaW5kIGtpbmQpCitpbmxpbmUgYm9vbCBpc0NlbGwoVXNlS2luZCBr
aW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgQ2VsbFVzZToKQEAgLTE3NCw3
ICsxNzYsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDZWxsKFVzZUtpbmQga2luZCkKIAogLy8g
UmV0dXJucyB0cnVlIGlmIGl0IHVzZXMgc3RydWN0dXJlIGluIGEgd2F5IHRoYXQgY291bGQgYmUg
Y2xvYmJlcmVkIGJ5CiAvLyB0aGluZ3MgdGhhdCBjaGFuZ2UgdGhlIHN0cnVjdHVyZS4KLUFMV0FZ
U19JTkxJTkUgYm9vbCB1c2VzU3RydWN0dXJlKFVzZUtpbmQga2luZCkKK2lubGluZSBib29sIHVz
ZXNTdHJ1Y3R1cmUoVXNlS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNh
c2UgU3RyaW5nT2JqZWN0VXNlOgpAQCAtMTg1LDYgKzE4NywxOSBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgdXNlc1N0cnVjdHVyZShVc2VLaW5kCiAgICAgfQogfQogCitpbmxpbmUgVXNlS2luZCB1c2VL
aW5kRm9yUmVzdWx0KE5vZGVGbGFncyByZXN1bHQpCit7CisgICAgQVNTRVJUKCEocmVzdWx0ICYg
fk5vZGVSZXN1bHRNYXNrKSk7CisgICAgc3dpdGNoIChyZXN1bHQpIHsKKyAgICBjYXNlIE5vZGVS
ZXN1bHRJbnQ1MjoKKyAgICAgICAgcmV0dXJuIEludDUyUmVwVXNlOworICAgIGNhc2UgTm9kZVJl
c3VsdERvdWJsZToKKyAgICAgICAgcmV0dXJuIERvdWJsZVJlcFVzZTsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gVW50eXBlZFVzZTsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpERkcKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE1LDYgKzEx
NSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
IG1fbXlSZWZDb3VudHMuZmluZChlZGdlLm5vZGUoKSktPnZhbHVlKys7CiAgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2Ut
Pmhhc0RvdWJsZVJlc3VsdCgpID09IChlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UgfHwg
ZWRnZS51c2VLaW5kKCkgPT0gRG91YmxlUmVwUmVhbFVzZSkpOworICAgICAgICAgICAgICAgICAg
ICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkgPT0gKGVkZ2Uu
dXNlS2luZCgpID09IEludDUyUmVwVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBJbiBTU0EsIGFsbCBlZGdlcyBtdXN0IGhhc1Jlc3VsdCgpLgogICAgICAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdlLT5oYXNSZXN1bHQo
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhZGljRnVuY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhZGljRnVu
Y3Rpb24uaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYXJpYWRpY0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERGR1Zh
cmlhZGljRnVuY3Rpb25faAotI2RlZmluZSBERkdWYXJpYWRpY0Z1bmN0aW9uX2gKLQotI2RlZmlu
ZSBERkdfQ09NTUEgLAotCi0vLyBUaGUgc2lnbmF0dXJlIG9mIHYgaXMgKHRlbXBsYXRlUHJlLCB0
ZW1wbGF0ZVBvc3QsIHR5cGVQYXJhbXMsIHZhbHVlUGFyYW1zLCB2YWx1ZUFyZ3MpCi0vLwotLy8g
WW91IHdvdWxkIHVzZSBpdCBsaWtlOgotLy8gI2RlZmluZSBERUZJTkVfRlVOQ1RJT04odGVtcGxh
dGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXNDb21tYSwgdmFsdWVQ
YXJhbXMsIHZhbHVlQXJncykKLS8vICAgICB0ZW1wbGF0ZVByZSB0eXBlUGFyYW1zIHRlbXBsYXRl
UG9zdCB2b2lkIGYodmFsdWVQYXJhbXMpIHsgZyh2YWx1ZUFyZ3MpOyB9Ci0vLyBERkdfVkFSSUFE
SUNfVEVNUExBVEVfRlVOQ1RJT04oREVGSU5FX0ZVTkNUSU9OKQotLy8gI3VuZGVmIERFRklORV9G
VU5DVElPTgotLy8KLS8vIE9yIGlmIHlvdSB3YW50ZWQgdGhlIGRlZmluZWQgZnVuY3Rpb24gdG8g
dGFrZSBhbiBhZGRpdGlvbmFsIHRlbXBsYXRlIGFyZywgeW91IHdvdWxkIGRvOgotLy8gI2RlZmlu
ZSBERUZJTkVfRlVOQ1RJT04odGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywg
dmFsdWVQYXJhbXNDb21tYSwgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykKLS8vICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUIHZhbHVlUGFyYW1zQ29tbWEgdHlwZVBhcmFtcz4gdm9pZCBmKFQgdmFsdWUg
dmFsdWVQYXJhbXNDb21tYSB2YWx1ZVBhcmFtcykgeyBnKHZhbHVlLCB2YWx1ZUFyZ3MpOyB9Ci0v
LyBERkdfVkFSSUFESUNfVEVNUExBVEVfRlVOQ1RJT04oREVGSU5FX0ZVTkNUSU9OKQotLy8gI3Vu
ZGVmIERFRklORV9GVU5DVElPTgotCi0jZGVmaW5lIERGR19WQVJJQURJQ19URU1QTEFURV9GVU5D
VElPTih2KSBcCi0gICAgdigsICwgLCAsICwgKSBcCi0gICAgdih0ZW1wbGF0ZTwsID4sIHR5cGVu
YW1lIF9ERkdfVDEsIERGR19DT01NQSwgY29uc3QgX0RGR19UMSYgX0RGR192YWx1ZTEsIF9ERkdf
dmFsdWUxKSBcCi0gICAgdih0ZW1wbGF0ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEgREZHX0NPTU1B
IHR5cGVuYW1lIF9ERkdfVDIsIERGR19DT01NQSwgY29uc3QgX0RGR19UMSYgX0RGR192YWx1ZTEg
REZHX0NPTU1BIGNvbnN0IF9ERkdfVDImIF9ERkdfdmFsdWUyLCBfREZHX3ZhbHVlMSBERkdfQ09N
TUEgX0RGR192YWx1ZTIpIFwKLSAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSBE
RkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMywgREZH
X0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19U
MiYgX0RGR192YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzLCBfREZH
X3ZhbHVlMSBERkdfQ09NTUEgX0RGR192YWx1ZTIgREZHX0NPTU1BIF9ERkdfdmFsdWUzKSBcCi0g
ICAgdih0ZW1wbGF0ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEgREZHX0NPTU1BIHR5cGVuYW1lIF9E
RkdfVDIgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDMgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdf
VDQsIERGR19DT01NQSwgY29uc3QgX0RGR19UMSYgX0RGR192YWx1ZTEgREZHX0NPTU1BIGNvbnN0
IF9ERkdfVDImIF9ERkdfdmFsdWUyIERGR19DT01NQSBjb25zdCBfREZHX1QzJiBfREZHX3ZhbHVl
MyBERkdfQ09NTUEgY29uc3QgX0RGR19UNCYgX0RGR192YWx1ZTQsIF9ERkdfdmFsdWUxIERGR19D
T01NQSBfREZHX3ZhbHVlMiBERkdfQ09NTUEgX0RGR192YWx1ZTMgREZHX0NPTU1BIF9ERkdfdmFs
dWU0KSBcCi0gICAgdih0ZW1wbGF0ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEgREZHX0NPTU1BIHR5
cGVuYW1lIF9ERkdfVDIgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDMgREZHX0NPTU1BIHR5cGVu
YW1lIF9ERkdfVDQgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDUsIERGR19DT01NQSwgY29uc3Qg
X0RGR19UMSYgX0RGR192YWx1ZTEgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDImIF9ERkdfdmFsdWUy
IERGR19DT01NQSBjb25zdCBfREZHX1QzJiBfREZHX3ZhbHVlMyBERkdfQ09NTUEgY29uc3QgX0RG
R19UNCYgX0RGR192YWx1ZTQgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDUmIF9ERkdfdmFsdWU1LCBf
REZHX3ZhbHVlMSBERkdfQ09NTUEgX0RGR192YWx1ZTIgREZHX0NPTU1BIF9ERkdfdmFsdWUzIERG
R19DT01NQSBfREZHX3ZhbHVlNCBERkdfQ09NTUEgX0RGR192YWx1ZTUpIFwKLSAgICB2KHRlbXBs
YXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMiBERkdf
Q09NTUEgdHlwZW5hbWUgX0RGR19UMyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNCBERkdfQ09N
TUEgdHlwZW5hbWUgX0RGR19UNSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNiwgREZHX0NPTU1B
LCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RG
R192YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzIERGR19DT01NQSBj
b25zdCBfREZHX1Q0JiBfREZHX3ZhbHVlNCBERkdfQ09NTUEgY29uc3QgX0RGR19UNSYgX0RGR192
YWx1ZTUgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDYmIF9ERkdfdmFsdWU2LCBfREZHX3ZhbHVlMSBE
RkdfQ09NTUEgX0RGR192YWx1ZTIgREZHX0NPTU1BIF9ERkdfdmFsdWUzIERGR19DT01NQSBfREZH
X3ZhbHVlNCBERkdfQ09NTUEgX0RGR192YWx1ZTUgREZHX0NPTU1BIF9ERkdfdmFsdWU2KSBcCi0g
ICAgdih0ZW1wbGF0ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEgREZHX0NPTU1BIHR5cGVuYW1lIF9E
RkdfVDIgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDMgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdf
VDQgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDUgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDYg
REZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDcsIERGR19DT01NQSwgY29uc3QgX0RGR19UMSYgX0RG
R192YWx1ZTEgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDImIF9ERkdfdmFsdWUyIERGR19DT01NQSBj
b25zdCBfREZHX1QzJiBfREZHX3ZhbHVlMyBERkdfQ09NTUEgY29uc3QgX0RGR19UNCYgX0RGR192
YWx1ZTQgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDUmIF9ERkdfdmFsdWU1IERGR19DT01NQSBjb25z
dCBfREZHX1Q2JiBfREZHX3ZhbHVlNiBERkdfQ09NTUEgY29uc3QgX0RGR19UNyYgX0RGR192YWx1
ZTcsIF9ERkdfdmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09NTUEgX0RGR192YWx1
ZTMgREZHX0NPTU1BIF9ERkdfdmFsdWU0IERGR19DT01NQSBfREZHX3ZhbHVlNSBERkdfQ09NTUEg
X0RGR192YWx1ZTYgREZHX0NPTU1BIF9ERkdfdmFsdWU3KSBcCi0gICAgdih0ZW1wbGF0ZTwsID4s
IHR5cGVuYW1lIF9ERkdfVDEgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDIgREZHX0NPTU1BIHR5
cGVuYW1lIF9ERkdfVDMgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDQgREZHX0NPTU1BIHR5cGVu
YW1lIF9ERkdfVDUgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDYgREZHX0NPTU1BIHR5cGVuYW1l
IF9ERkdfVDcgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDgsIERGR19DT01NQSwgY29uc3QgX0RG
R19UMSYgX0RGR192YWx1ZTEgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDImIF9ERkdfdmFsdWUyIERG
R19DT01NQSBjb25zdCBfREZHX1QzJiBfREZHX3ZhbHVlMyBERkdfQ09NTUEgY29uc3QgX0RGR19U
NCYgX0RGR192YWx1ZTQgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDUmIF9ERkdfdmFsdWU1IERGR19D
T01NQSBjb25zdCBfREZHX1Q2JiBfREZHX3ZhbHVlNiBERkdfQ09NTUEgY29uc3QgX0RGR19UNyYg
X0RGR192YWx1ZTcgREZHX0NPTU1BIF9ERkdfVDgmIF9ERkdfdmFsdWU4LCBfREZHX3ZhbHVlMSBE
RkdfQ09NTUEgX0RGR192YWx1ZTIgREZHX0NPTU1BIF9ERkdfdmFsdWUzIERGR19DT01NQSBfREZH
X3ZhbHVlNCBERkdfQ09NTUEgX0RGR192YWx1ZTUgREZHX0NPTU1BIF9ERkdfdmFsdWU2IERGR19D
T01NQSBfREZHX3ZhbHVlNyBERkdfQ09NTUEgX0RGR192YWx1ZTgpCi0KLSNlbmRpZiAvLyBERkdW
YXJpYWRpY0Z1bmN0aW9uX2gKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5
MCw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNl
IEFyaXRoRlJvdW5kOgogICAgIGNhc2UgQXJpdGhOZWdhdGU6CiAgICAgY2FzZSBVSW50MzJUb051
bWJlcjoKLSAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAgY2FzZSBDb21wYXJlRXFDb25zdGFu
dDoKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CkBAIC0xMDMsNyArMTAy
LDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2Ug
R2V0Q2xvc3VyZVJlZ2lzdGVyczoKICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgY2FzZSBQ
dXRDbG9zdXJlVmFyOgotICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgIGNhc2UgSW52YWxpZGF0
aW9uUG9pbnQ6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgY2FzZSBDaGVja0Z1bmN0aW9u
OgpAQCAtMTUyLDggKzE1MCwxOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
Tm9kZSogCiAgICAgY2FzZSBJc0Z1bmN0aW9uOgogICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZToK
ICAgICBjYXNlIEluc3RhbmNlT2Y6CisgICAgY2FzZSBEb3VibGVSZXA6CisgICAgY2FzZSBWYWx1
ZVJlcDoKKyAgICBjYXNlIEludDUyUmVwOgorICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAg
Y2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSWRlbnRpdHk6CisgICAgICAgIC8vIE5vIGJhY2tlbmQgaGFuZGxlcyB0
aGlzIGJlY2F1c2UgaXQgd2lsbCBiZSBvcHRpbWl6ZWQgb3V0LiBCdXQgd2UgbWF5IGNoZWNrCisg
ICAgICAgIC8vIGZvciBjYXBhYmlsaXRpZXMgYmVmb3JlIG9wdGltaXphdGlvbi4gSXQgd291bGQg
YmUgYSBkZWVwIGVycm9yIHRvIHJlbW92ZSB0aGlzCisgICAgICAgIC8vIGNhc2UgYmVjYXVzZSBp
dCB3b3VsZCBwcmV2ZW50IHVzIGZyb20gY2F0Y2hpbmcgYnVncyB3aGVyZSB0aGUgRlRMIGJhY2tl
bmQKKyAgICAgICAgLy8gcGlwZWxpbmUgZmFpbGVkIHRvIG9wdGltaXplIG91dCBhbiBJZGVudGl0
eS4KKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgIGNhc2UgUHV0
QnlJZDoKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKQpA
QCAtMjM1LDkgKzI0NCw5IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiAKICAgICBjYXNlIENvbXBhcmVFcToKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChJbnQ1MlJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKQorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKERvdWJsZVJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpCiAgICAgICAgICAgICBicmVhazsK
QEAgLTI1NSw5ICsyNjQsOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9k
ZSogCiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpCisgICAgICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlm
IChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpKQogICAgICAgICAgICAg
YnJlYWs7CkBAIC0yODAsOSArMjg5LDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIAogICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXJFcToKICAgICAgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
aWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKQorICAgICAgICBpZiAo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSkKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMzUwLDEwICszNTksMTAgQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAg
ICAgICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25vd25JbnQz
MlVzZToKLSAgICAgICAgICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICAg
ICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE51bWJlclVzZToKLSAg
ICAgICAgICAgICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgotICAgICAgICAgICAgICAgIGNhc2Ug
UmVhbE51bWJlclVzZToKKyAgICAgICAgICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAg
ICAgICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBC
b29sZWFuVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgQ2VsbFVzZToKICAgICAgICAgICAgICAg
ICBjYXNlIEtub3duQ2VsbFVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTg2LDcgKzE4Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgIExUeXBlIHR5cGU7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5mbGFncygpICYgTm9kZVJlc3VsdE1hc2spIHsKLSAgICAgICAgICAgICAgICBjYXNlIE5vZGVS
ZXN1bHROdW1iZXI6CisgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0RG91YmxlOgogICAg
ICAgICAgICAgICAgICAgICB0eXBlID0gbV9vdXQuZG91YmxlVHlwZTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6CkBAIC0y
ODIsMTIgKzI4MiwzMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgSlNDb25zdGFudDoKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERvdWJsZUNv
bnN0YW50OgorICAgICAgICAgICAgY29tcGlsZURvdWJsZUNvbnN0YW50KCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgorICAgICAgICAgICAgY29tcGls
ZUludDUyQ29uc3RhbnQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYWtK
U0NvbnN0YW50OgogICAgICAgICAgICAgY29tcGlsZVdlYWtKU0NvbnN0YW50KCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgogICAgICAgICAgICAg
Y29tcGlsZVBoYW50b21Bcmd1bWVudHMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIERvdWJsZVJlcDoKKyAgICAgICAgICAgIGNvbXBpbGVEb3VibGVSZXAoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlUmVwOgorICAgICAgICAgICAgY29tcGlsZVZh
bHVlUmVwKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnQ1MlJlcDoKKyAg
ICAgICAgICAgIGNvbXBpbGVJbnQ1MlJlcCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgVmFsdWVUb0ludDMyOgorICAgICAgICAgICAgY29tcGlsZVZhbHVlVG9JbnQzMigpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CiAgICAgICAgICAg
ICBjb21waWxlR2V0QXJndW1lbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzc4LDkgKzM5
Niw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAgICAgICAg
ICBjb21waWxlVUludDMyVG9OdW1iZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEludDMyVG9Eb3VibGU6Ci0gICAgICAgICAgICBjb21waWxlSW50MzJUb0RvdWJsZSgpOwot
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAg
ICAgICBjb21waWxlQ2hlY2tTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTY5
LDEyICs1ODQsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50Ogog
ICAgICAgICAgICAgY29tcGlsZUludmFsaWRhdGlvblBvaW50KCk7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6Ci0gICAgICAgICAgICBjb21waWxlVmFsdWVU
b0ludDMyKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnQ1MlRvVmFsdWU6
Ci0gICAgICAgICAgICBjb21waWxlSW50NTJUb1ZhbHVlKCk7Ci0gICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6CiAgICAgICAgICAgICBjb21w
aWxlQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTYz
Myw3MyArNjQyLDE4IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAot
ICAgIHZvaWQgY29tcGlsZVZhbHVlVG9JbnQzMigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG1f
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7Ci0gICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAg
ICAgICAgICBzZXRJbnQzMihsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Ci0gICAg
ICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihsb3dTdHJpY3RJbnQ1MihtX25vZGUt
PmNoaWxkMSgpKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAg
Y2FzZSBOdW1iZXJVc2U6Ci0gICAgICAgIGNhc2UgTm90Q2VsbFVzZTogewotICAgICAgICAgICAg
TG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1faW50MzJWYWx1ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQx
KCkubm9kZSgpKTsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAg
ICAgICAgIHNldEludDMyKHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICB2YWx1ZSA9IG1fanNWYWx1
ZVZhbHVlcy5nZXQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKGlz
VmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIobnVtYmVyT3JOb3RDZWxs
VG9JbnQzMihtX25vZGUtPmNoaWxkMSgpLCB2YWx1ZS52YWx1ZSgpKSk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZhbHVl
ID0gbV9kb3VibGVWYWx1ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKLSAgICAgICAg
ICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgICAgIHNldEludDMyKGRvdWJs
ZVRvSW50MzIodmFsdWUudmFsdWUoKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBXZSdsbCBiYXNpY2FsbHkganVz
dCBnZXQgaGVyZSBmb3IgY29uc3RhbnRzLiBCdXQgaXQncyBnb29kIHRvIGhhdmUgdGhpcwotICAg
ICAgICAgICAgLy8gY2F0Y2gtYWxsIHNpbmNlIHdlIG9mdGVuIGFkZCBuZXcgcmVwcmVzZW50YXRp
b25zIGludG8gdGhlIG1peC4KLSAgICAgICAgICAgIHNldEludDMyKAotICAgICAgICAgICAgICAg
IG51bWJlck9yTm90Q2VsbFRvSW50MzIoCi0gICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hp
bGQxKCksCi0gICAgICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6Ci0gICAgICAgICAgICBz
ZXRJbnQzMihtX291dC56ZXJvRXh0KGxvd0Jvb2xlYW4obV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0
LmludDMyKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBjb21waWxlSW50NTJUb1Zh
bHVlKCkKLSAgICB7Ci0gICAgICAgIHNldEpTVmFsdWUobG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpKSk7Ci0gICAgfQotCiAgICAgdm9pZCBjb21waWxlVXBzaWxvbigpCiAgICAgewogICAgICAg
ICBMVmFsdWUgZGVzdGluYXRpb24gPSBtX3BoaXMuZ2V0KG1fbm9kZS0+cGhpKCkpOwogICAgICAg
ICAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewotICAgICAg
ICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAg
ICBtX291dC5zZXQobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBkZXN0aW5hdGlvbik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgICAgIG1f
b3V0LnNldChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRpb24pOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgY2FzZSBJ
bnQ1MlJlcFVzZToKICAgICAgICAgICAgIG1fb3V0LnNldChsb3dJbnQ1MihtX25vZGUtPmNoaWxk
MSgpKSwgZGVzdGluYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQm9v
bGVhblVzZToKQEAgLTcyMiw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgc291
cmNlID0gbV9waGlzLmdldChtX25vZGUpOwogICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX25v
ZGUtPmZsYWdzKCkgJiBOb2RlUmVzdWx0TWFzaykgewotICAgICAgICBjYXNlIE5vZGVSZXN1bHRO
dW1iZXI6CisgICAgICAgIGNhc2UgTm9kZVJlc3VsdERvdWJsZToKICAgICAgICAgICAgIHNldERv
dWJsZShtX291dC5nZXQoc291cmNlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBOb2RlUmVzdWx0SW50MzI6CkBAIC03NDIsMTcgKzY5NiwxMjAgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHZvaWQgY29tcGlsZURv
dWJsZUNvbnN0YW50KCkKKyAgICB7CisgICAgICAgIHNldERvdWJsZShtX291dC5jb25zdERvdWJs
ZShtX2dyYXBoLnZhbHVlT2ZOdW1iZXJDb25zdGFudChtX25vZGUpKSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgY29tcGlsZUludDUyQ29uc3RhbnQoKQorICAgIHsKKyAgICAgICAgaW50NjRfdCB2
YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobV9ub2RlKS5hc01hY2hpbmVJbnQoKTsK
KyAgICAgICAgCisgICAgICAgIHNldEludDUyKG1fb3V0LmNvbnN0SW50NjQodmFsdWUgPDwgSlNW
YWx1ZTo6aW50NTJTaGlmdEFtb3VudCkpOworICAgICAgICBzZXRTdHJpY3RJbnQ1MihtX291dC5j
b25zdEludDY0KHZhbHVlKSk7CisgICAgfQogCisgICAgdm9pZCBjb21waWxlV2Vha0pTQ29uc3Rh
bnQoKQorICAgIHsKKyAgICAgICAgc2V0SlNWYWx1ZSh3ZWFrUG9pbnRlcihtX25vZGUtPndlYWtD
b25zdGFudCgpKSk7CisgICAgfQorICAgIAogICAgIHZvaWQgY29tcGlsZVBoYW50b21Bcmd1bWVu
dHMoKQogICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5jb25zdEludDY0KEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKCkpKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZVdlYWtK
U0NvbnN0YW50KCkKKyAgICB2b2lkIGNvbXBpbGVEb3VibGVSZXAoKQogICAgIHsKLSAgICAgICAg
c2V0SlNWYWx1ZSh3ZWFrUG9pbnRlcihtX25vZGUtPndlYWtDb25zdGFudCgpKSk7CisgICAgICAg
IHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBOdW1i
ZXJVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHNldERvdWJs
ZShqc1ZhbHVlVG9Eb3VibGUobV9ub2RlLT5jaGlsZDEoKSwgdmFsdWUpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSW50NTJSZXBV
c2U6IHsKKyAgICAgICAgICAgIHNldERvdWJsZShzdHJpY3RJbnQ1MlRvRG91YmxlKGxvd1N0cmlj
dEludDUyKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGNv
bXBpbGVWYWx1ZVJlcCgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CisgICAgICAgICAgICBz
ZXRKU1ZhbHVlKGJveERvdWJsZShsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSW50
NTJSZXBVc2U6IHsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoc3RyaWN0SW50NTJUb0pTVmFsdWUo
bG93U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CiAgICAgfQogICAgIAorICAg
IHZvaWQgY29tcGlsZUludDUyUmVwKCkKKyAgICB7CisgICAgICAgIHNldFN0cmljdEludDUyKG1f
b3V0LnNpZ25FeHQobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmludDY0KSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgY29tcGlsZVZhbHVlVG9JbnQzMigpCisgICAgeworICAgICAg
ICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgSW50
MzJVc2U6CisgICAgICAgICAgICBzZXRJbnQzMihsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEludDUyUmVw
VXNlOgorICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobG93U3RyaWN0SW50
NTIobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICAgICAgc2V0SW50MzIoZG91Ymxl
VG9JbnQzMihsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIE5v
dENlbGxVc2U6IHsKKyAgICAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2ludDMy
VmFsdWVzLmdldChtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoaXNW
YWxpZCh2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBzZXRJbnQzMih2YWx1ZS52YWx1ZSgpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9k
ZSgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgeworICAgICAgICAgICAgICAg
IHNldEludDMyKG51bWJlck9yTm90Q2VsbFRvSW50MzIobV9ub2RlLT5jaGlsZDEoKSwgdmFsdWUu
dmFsdWUoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICAvLyBXZSdsbCBiYXNpY2FsbHkganVzdCBnZXQgaGVyZSBmb3Ig
Y29uc3RhbnRzLiBCdXQgaXQncyBnb29kIHRvIGhhdmUgdGhpcworICAgICAgICAgICAgLy8gY2F0
Y2gtYWxsIHNpbmNlIHdlIG9mdGVuIGFkZCBuZXcgcmVwcmVzZW50YXRpb25zIGludG8gdGhlIG1p
eC4KKyAgICAgICAgICAgIHNldEludDMyKAorICAgICAgICAgICAgICAgIG51bWJlck9yTm90Q2Vs
bFRvSW50MzIoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQxKCksCisgICAgICAg
ICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CisgICAgICAgICAgICBzZXRJbnQzMihtX291dC56
ZXJvRXh0KGxvd0Jvb2xlYW4obV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmludDMyKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlR2V0QXJndW1lbnQoKQogICAgIHsKICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1fbm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCk7CkBAIC05NjYsNyArMTAyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZTog
eworICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAgICAgICBpZiAoIW1fc3RhdGUu
Zm9yTm9kZShtX25vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NTIpCiAgICAgICAg
ICAgICAgICAgJiYgIW1fc3RhdGUuZm9yTm9kZShtX25vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlw
ZShTcGVjSW50NTIpKSB7CiAgICAgICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CkBAIC0xMDE2
LDcgKzEwNzMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJs
ZVJlcFVzZTogewogICAgICAgICAgICAgTFZhbHVlIEMxID0gbG93RG91YmxlKG1fbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgTFZhbHVlIEMyID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQy
KCkpOwogCkBAIC0xMDY1LDcgKzExMjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsK
KyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7
CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hp
bGQxKCksIGtpbmQpOwogICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NTIobV9ub2Rl
LT5jaGlsZDIoKSwgb3Bwb3NpdGUoa2luZCkpOwpAQCAtMTA5Miw3ICsxMTQ5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAg
Y2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAg
ICAgIHNldERvdWJsZSgKICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVNdWwobG93RG91Ymxl
KG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTE5NSw3ICsxMjUyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6
IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIHNldERvdWJsZSht
X291dC5kb3VibGVEaXYoCiAgICAgICAgICAgICAgICAgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQx
KCkpLCBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTI5Myw3ICsxMzUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2Fz
ZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIHNldERvdWJsZSgKICAgICAgICAgICAgICAg
ICBtX291dC5kb3VibGVSZW0obG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUo
bV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMyMSw3ICsxMzc4
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6
IHsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkp
OwogICAgICAgICAgICAgCkBAIC0xMzcxLDcgKzE0MjgsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVz
ZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgc2V0RG91Ymxl
KG1fb3V0LmRvdWJsZUFicyhsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNDE4LDcgKzE0NzUsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6IHsKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICAgICAg
aWYgKCFtX3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0lu
dDUyKSkgewogICAgICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAgICAgICAgICAg
IExWYWx1ZSB2YWx1ZSA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQp
OwpAQCAtMTQzOCw3ICsxNDk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAg
Y2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIHNldERvdWJsZShtX291dC5kb3VibGVO
ZWcobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtMTQ5OCwxMSArMTU1NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHNldEludDMy
KHZhbHVlKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlSW50MzJUb0RvdWJsZSgpCi0g
ICAgewotICAgICAgICBzZXREb3VibGUobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKTsKLSAg
ICB9Ci0gICAgCiAgICAgdm9pZCBjb21waWxlQ2hlY2tTdHJ1Y3R1cmUoKQogICAgIHsKICAgICAg
ICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMjIxMyw3ICsy
MjY1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoaXNJbnQodHlwZSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgTFZhbHVlIGludFZhbHVlOwogICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKGNoaWxkMy51c2VLaW5kKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBNYWNo
aW5lSW50VXNlOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAg
ICAgICAgICAgICAgICBjYXNlIEludDMyVXNlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoY2hpbGQzLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnRWYWx1ZSA9IGxvd0ludDMyKGNoaWxkMyk7CkBAIC0yMjQ2LDcgKzIyOTgsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNl
IE51bWJlclVzZTogeworICAgICAgICAgICAgICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewog
ICAgICAgICAgICAgICAgICAgICAgICAgTFZhbHVlIGRvdWJsZVZhbHVlID0gbG93RG91YmxlKGNo
aWxkMyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChpc0NsYW1wZWQodHlwZSkpIHsKQEAgLTMzMjgsOCArMzM4MCw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21waWxlQ29tcGFyZUVxKCkKICAgICB7CiAgICAgICAgIGlmIChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChJbnQzMlVzZSkKLSAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKE1hY2hpbmVJbnRVc2UpCi0gICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChOdW1iZXJVc2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChJ
bnQ1MlJlcFVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJs
ZVJlcFVzZSkKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVz
ZSkKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpCiAg
ICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpIHsK
QEAgLTMzNzEsNyArMzQyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNo
aW5lSW50VXNlKSkgeworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJS
ZXBVc2UpKSB7CiAgICAgICAgICAgICBJbnQ1MktpbmQga2luZDsKICAgICAgICAgICAgIExWYWx1
ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5jaGlsZDEoKSwga2luZCk7CiAgICAg
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQ1MihtX25vZGUtPmNoaWxkMigpLCBraW5kKTsK
QEAgLTMzNzksNyArMzQzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1i
ZXJVc2UpKSB7CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBV
c2UpKSB7CiAgICAgICAgICAgICBzZXRCb29sZWFuKAogICAgICAgICAgICAgICAgIG1fb3V0LmRv
dWJsZUVxdWFsKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+
Y2hpbGQyKCkpKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00MTIzLDcgKzQxNzUsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsKKyAgICAgICAg
aWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICAgICAg
SW50NTJLaW5kIGtpbmQ7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZlcklu
dDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQpOwogICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0g
bG93SW50NTIobV9ub2RlLT5jaGlsZDIoKSwga2luZCk7CkBAIC00MTMxLDcgKzQxODMsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkgeworICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKSkgewogICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBzZXRC
b29sZWFuKG1fb3V0LmZjbXAocmVhbENvbmRpdGlvbiwgbGVmdCwgcmlnaHQpKTsKQEAgLTQzODgs
NyArNDQ0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gbG93Qm9vbGVhbihtX25v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgICAgIHJldHVy
biBtX291dC5ub3RaZXJvMzIobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSkpOwotICAgICAgICBj
YXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBy
ZXR1cm4gbV9vdXQuZG91YmxlTm90RXF1YWwobG93RG91YmxlKGVkZ2UpLCBtX291dC5kb3VibGVa
ZXJvKTsKICAgICAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICAgICAgcmV0dXJu
IG1fb3V0LmJpdE5vdCgKQEAgLTQ3MzQsMjEgKzQ3ODYsOSBAQCBwcml2YXRlOgogICAgIH0KICAg
ICAKICAgICBlbnVtIEludDUyS2luZCB7IFN0cmljdEludDUyLCBJbnQ1MiB9OwotICAgIExWYWx1
ZSBsb3dJbnQ1MihFZGdlIGVkZ2UsIEludDUyS2luZCBraW5kLCBPcGVyYW5kU3BlY3VsYXRpb25N
b2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgTFZhbHVlIGxvd0lu
dDUyKEVkZ2UgZWRnZSwgSW50NTJLaW5kIGtpbmQpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5V
U0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2lu
ZCgpID09IE1hY2hpbmVJbnRVc2UpOwotICAgICAgICAKLSAgICAgICAgaWYgKGVkZ2UtPmhhc0Nv
bnN0YW50KCkpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZK
U0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgICAgIGlmICghdmFsdWUuaXNNYWNoaW5l
SW50KCkpIHsKLSAgICAgICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBtX291dC5pbnQ2NFplcm87Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpbnQ2NF90IHJlc3VsdCA9IHZhbHVlLmFzTWFjaGluZUludCgpOwotICAgICAgICAgICAg
aWYgKGtpbmQgPT0gSW50NTIpCi0gICAgICAgICAgICAgICAgcmVzdWx0IDw8PSBKU1ZhbHVlOjpp
bnQ1MlNoaWZ0QW1vdW50OwotICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0SW50NjQocmVz
dWx0KTsKLSAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9
PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIAogICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVl
OwogICAgICAgICAKQEAgLTQ3NzMsMzcgKzQ4MTMsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICByZXR1cm4gaW50NTJUb1N0cmljdEludDUyKHZhbHVlLnZhbHVlKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9pbnQzMlZh
bHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKLSAg
ICAgICAgICAgIHJldHVybiBzZXRJbnQ1MldpdGhTdHJpY3RWYWx1ZSgKLSAgICAgICAgICAgICAg
ICBlZGdlLm5vZGUoKSwgbV9vdXQuc2lnbkV4dCh2YWx1ZS52YWx1ZSgpLCBtX291dC5pbnQ2NCks
IGtpbmQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1f
c3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiBTcGVjSW50NTIpKTsKLSAgICAgICAgCi0gICAg
ICAgIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlm
IChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gdmFs
dWUudmFsdWUoKTsKLSAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAg
IGpzVmFsdWVWYWx1ZShib3hlZFJlc3VsdCksIGVkZ2UsIFNwZWNNYWNoaW5lSW50LCBpc05vdElu
dDMyKGJveGVkUmVzdWx0KSk7Ci0gICAgICAgICAgICByZXR1cm4gc2V0SW50NTJXaXRoU3RyaWN0
VmFsdWUoCi0gICAgICAgICAgICAgICAgZWRnZS5ub2RlKCksIG1fb3V0LnNpZ25FeHQodW5ib3hJ
bnQzMihib3hlZFJlc3VsdCksIG1fb3V0LmludDY0KSwga2luZCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCEobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlw
ZSAmIFNwZWNNYWNoaW5lSW50KSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fc3RhdGUu
Zm9yTm9kZShlZGdlKS5tX3R5cGUpOwogICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwog
ICAgICAgICByZXR1cm4gbV9vdXQuaW50NjRaZXJvOwogICAgIH0KICAgICAKLSAgICBMVmFsdWUg
bG93SW50NTIoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0
aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgTFZhbHVlIGxvd0ludDUyKEVkZ2UgZWRnZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBsb3dJbnQ1MihlZGdlLCBJbnQ1MiwgbW9kZSk7CisgICAgICAg
IHJldHVybiBsb3dJbnQ1MihlZGdlLCBJbnQ1Mik7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBs
b3dTdHJpY3RJbnQ1MihFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1
dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93U3RyaWN0SW50NTIoRWRn
ZSBlZGdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGxvd0ludDUyKGVkZ2UsIFN0cmljdEludDUy
LCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIGxvd0ludDUyKGVkZ2UsIFN0cmljdEludDUyKTsKICAg
ICB9CiAgICAgCiAgICAgYm9vbCBiZXR0ZXJVc2VTdHJpY3RJbnQ1MihOb2RlKiBub2RlKQpAQCAt
NDgzMCwxMCArNDg1MywxMCBAQCBwcml2YXRlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KICAgICAKLSAgICBMVmFsdWUgbG93V2hpY2hldmVySW50NTIoRWRn
ZSBlZGdlLCBJbnQ1MktpbmQmIGtpbmQsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1
dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93V2hpY2hldmVySW50NTIo
RWRnZSBlZGdlLCBJbnQ1MktpbmQmIGtpbmQpCiAgICAgewogICAgICAgICBraW5kID0gYmVzdElu
dDUyS2luZChlZGdlKTsKLSAgICAgICAgcmV0dXJuIGxvd0ludDUyKGVkZ2UsIGtpbmQsIG1vZGUp
OworICAgICAgICByZXR1cm4gbG93SW50NTIoZWRnZSwga2luZCk7CiAgICAgfQogICAgIAogICAg
IExWYWx1ZSBsb3dDZWxsKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0g
QXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQpAQCAtNDkzMSw3MSArNDk1NCwxNSBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gbV9vdXQuYm9vbGVhbkZhbHNlOwogICAgIH0KICAgICAKLSAg
ICBMVmFsdWUgbG93RG91YmxlKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2Rl
ID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIExWYWx1ZSBsb3dEb3VibGUoRWRn
ZSBlZGdlKQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOwotICAgICAg
ICAKLSAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKLSAgICAgICAgICAgIEpTVmFs
dWUgdmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKLSAgICAg
ICAgICAgIGlmICghdmFsdWUuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgIHRlcm1pbmF0
ZShVbmNvdW50YWJsZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmRvdWJsZVplcm87
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3REb3VibGUodmFs
dWUuYXNOdW1iZXIoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNEb3Vi
bGUoZWRnZS51c2VLaW5kKCkpKTsKICAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUg
dmFsdWUgPSBtX2RvdWJsZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAoaXNW
YWxpZCh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsKICAgICAgICAg
Ci0gICAgICAgIHZhbHVlID0gbV9pbnQzMlZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAg
ICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291
dC5pbnRUb0RvdWJsZSh2YWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgICAgIHNldERvdWJsZShlZGdl
Lm5vZGUoKSwgcmVzdWx0KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9zdHJpY3RJbnQ1MlZhbHVlcy5nZXQoZWRnZS5u
b2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4g
c3RyaWN0SW50NTJUb0RvdWJsZShlZGdlLCB2YWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgCi0gICAg
ICAgIHZhbHVlID0gbV9pbnQ1MlZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAo
aXNWYWxpZCh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gc3RyaWN0SW50NTJUb0RvdWJsZShl
ZGdlLCBpbnQ1MlRvU3RyaWN0SW50NTIodmFsdWUudmFsdWUoKSkpOwotICAgICAgICAKLSAgICAg
ICAgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYg
KGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSB2YWx1
ZS52YWx1ZSgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBpbnRDYXNl
ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGUgdW5ib3hpbmcgaW50IGNhc2UiKSk7Ci0g
ICAgICAgICAgICBMQmFzaWNCbG9jayBkb3VibGVDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwg
KCJEb3VibGUgdW5ib3hpbmcgZG91YmxlIGNhc2UiKSk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9j
ayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZSB1bmJveGluZyBj
b250aW51YXRpb24iKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fb3V0LmJyYW5jaChp
c05vdEludDMyKGJveGVkUmVzdWx0KSwgdW5zdXJlKGRvdWJsZUNhc2UpLCB1bnN1cmUoaW50Q2Fz
ZSkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1f
b3V0LmFwcGVuZFRvKGludENhc2UsIGRvdWJsZUNhc2UpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBWYWx1ZUZyb21CbG9jayBpbnRUb0RvdWJsZSA9IG1fb3V0LmFuY2hvcigKLSAgICAgICAg
ICAgICAgICBtX291dC5pbnRUb0RvdWJsZSh1bmJveEludDMyKGJveGVkUmVzdWx0KSkpOwotICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhkb3VibGVDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBGVExfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICBqc1ZhbHVl
VmFsdWUoYm94ZWRSZXN1bHQpLCBlZGdlLCBTcGVjRnVsbE51bWJlciwgaXNDZWxsT3JNaXNjKGJv
eGVkUmVzdWx0KSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHVu
Ym94ZWREb3VibGUgPSBtX291dC5hbmNob3IodW5ib3hEb3VibGUoYm94ZWRSZXN1bHQpKTsKLSAg
ICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5waGkobV9vdXQuZG91YmxlVHlw
ZSwgaW50VG9Eb3VibGUsIHVuYm94ZWREb3VibGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBzZXREb3VibGUoZWRnZS5ub2RlKCksIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fc3Rh
dGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiBTcGVjRnVsbE51bWJlcikpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVCghbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSk7CiAgICAgICAgIHRlcm1p
bmF0ZShVbmNvdW50YWJsZSk7CiAgICAgICAgIHJldHVybiBtX291dC5kb3VibGVaZXJvOwogICAg
IH0KQEAgLTUwMDMsNiArNDk3MCw4IEBAIHByaXZhdGU6CiAgICAgTFZhbHVlIGxvd0pTVmFsdWUo
RWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5k
U3BlY3VsYXRpb24pCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0g
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IFVudHlwZWRVc2Up
OworICAgICAgICBSRUxFQVNFX0FTU0VSVCghaXNEb3VibGUoZWRnZS51c2VLaW5kKCkpKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gSW50NTJSZXBVc2UpOwogICAg
ICAgICAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpCiAgICAgICAgICAgICByZXR1
cm4gbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUobV9ncmFwaC52YWx1ZU9mSlNDb25z
dGFudChlZGdlLm5vZGUoKSkpKTsKQEAgLTUwMTgsMTQgKzQ5ODcsNiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdmFs
dWUgPSBtX3N0cmljdEludDUyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChp
c1ZhbGlkKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ1MlRvSlNWYWx1ZSh2
YWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9pbnQ1MlZhbHVlcy5n
ZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCi0gICAgICAgICAg
ICByZXR1cm4gc3RyaWN0SW50NTJUb0pTVmFsdWUoaW50NTJUb1N0cmljdEludDUyKHZhbHVlLnZh
bHVlKCkpKTsKLSAgICAgICAgCiAgICAgICAgIHZhbHVlID0gbV9ib29sZWFuVmFsdWVzLmdldChl
ZGdlLm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewogICAgICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IGJveEJvb2xlYW4odmFsdWUudmFsdWUoKSk7CkBAIC01MDMzLDEzICs0
OTk0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9kb3VibGVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgp
KTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gYm94RG91YmxlKHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShl
ZGdlLm5vZGUoKSwgcmVzdWx0KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAg
IH0KLSAgICAgICAgCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KQEAgLTUwNjUsMTEgKzUwMTksOSBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBMVmFsdWUgc3RyaWN0SW50NTJU
b0RvdWJsZShFZGdlIGVkZ2UsIExWYWx1ZSB2YWx1ZSkKKyAgICBMVmFsdWUgc3RyaWN0SW50NTJU
b0RvdWJsZShMVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9v
dXQuaW50VG9Eb3VibGUodmFsdWUpOwotICAgICAgICBzZXREb3VibGUoZWRnZS5ub2RlKCksIHJl
c3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBtX291dC5pbnRU
b0RvdWJsZSh2YWx1ZSk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBzdHJpY3RJbnQ1MlRvSlNW
YWx1ZShMVmFsdWUgdmFsdWUpCkBAIC01MDk5LDIzICs1MDUxLDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIG1fb3V0LnBoaShtX291dC5pbnQ2NCwgcmVzdWx0cyk7CiAgICAgfQogICAgIAot
ICAgIExWYWx1ZSBzZXRJbnQ1MldpdGhTdHJpY3RWYWx1ZShOb2RlKiBub2RlLCBMVmFsdWUgdmFs
dWUsIEludDUyS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAg
ICAgIGNhc2UgU3RyaWN0SW50NTI6Ci0gICAgICAgICAgICBzZXRTdHJpY3RJbnQ1Mihub2RlLCB2
YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgICAgICAKLSAgICAgICAg
Y2FzZSBJbnQ1MjoKLSAgICAgICAgICAgIHZhbHVlID0gc3RyaWN0SW50NTJUb0ludDUyKHZhbHVl
KTsKLSAgICAgICAgICAgIHNldEludDUyKG5vZGUsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgTFZhbHVlIHN0cmlj
dEludDUyVG9JbnQ1MihMVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQu
c2hsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpKTsK
QEAgLTUxNDcsNiArNTA4Miw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4gbV9v
dXQudGVzdE5vblplcm82NChqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpOwogICAgIH0KKyAgICAK
ICAgICBMVmFsdWUgdW5ib3hEb3VibGUoTFZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbV9vdXQuYml0Q2FzdChtX291dC5hZGQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKSwg
bV9vdXQuZG91YmxlVHlwZSk7CkBAIC01MTU1LDYgKzUwOTEsMzkgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgICAgIHJldHVybiBtX291dC5zdWIobV9vdXQuYml0Q2FzdChkb3VibGVWYWx1ZSwgbV9v
dXQuaW50NjQpLCBtX3RhZ1R5cGVOdW1iZXIpOwogICAgIH0KKyAgICBMVmFsdWUganNWYWx1ZVRv
RG91YmxlKEVkZ2UgZWRnZSwgTFZhbHVlIGJveGVkVmFsdWUpCisgICAgeworICAgICAgICBMQmFz
aWNCbG9jayBpbnRDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGVSZXAgdW5ib3hp
bmcgaW50IGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBGVExfTkVX
X0JMT0NLKG1fb3V0LCAoIkRvdWJsZVJlcCB1bmJveGluZyBkb3VibGUgY2FzZSIpKTsKKyAgICAg
ICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3Vi
bGVSZXAgdW5ib3hpbmcgY29udGludWF0aW9uIikpOworICAgICAgICAgICAgCisgICAgICAgIExW
YWx1ZSBpc05vdEludDMyOworICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hl
Y2soZWRnZSwgU3BlY0ludDMyKSkKKyAgICAgICAgICAgIGlzTm90SW50MzIgPSBtX291dC5ib29s
ZWFuRmFsc2U7CisgICAgICAgIGVsc2UgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNr
KGVkZ2UsIH5TcGVjSW50MzIpKQorICAgICAgICAgICAgaXNOb3RJbnQzMiA9IG1fb3V0LmJvb2xl
YW5UcnVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpc05vdEludDMyID0gdGhpcy0+aXNO
b3RJbnQzMihib3hlZFZhbHVlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIsIHVu
c3VyZShkb3VibGVDYXNlKSwgdW5zdXJlKGludENhc2UpKTsKKyAgICAgICAgICAgIAorICAgICAg
ICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGludENhc2UsIGRvdWJsZUNh
c2UpOworICAgICAgICAgICAgCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGludFRvRG91YmxlID0g
bV9vdXQuYW5jaG9yKAorICAgICAgICAgICAgbV9vdXQuaW50VG9Eb3VibGUodW5ib3hJbnQzMihi
b3hlZFZhbHVlKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAg
ICAgICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsK
KyAgICAgICAgICAgIAorICAgICAgICBGVExfVFlQRV9DSEVDSygKKyAgICAgICAgICAgIGpzVmFs
dWVWYWx1ZShib3hlZFZhbHVlKSwgZWRnZSwgU3BlY0J5dGVjb2RlTnVtYmVyLCBpc0NlbGxPck1p
c2MoYm94ZWRWYWx1ZSkpOworICAgICAgICAgICAgCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHVu
Ym94ZWREb3VibGUgPSBtX291dC5hbmNob3IodW5ib3hEb3VibGUoYm94ZWRWYWx1ZSkpOworICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAKKyAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAKKyAgICAg
ICAgcmV0dXJuIG1fb3V0LnBoaShtX291dC5kb3VibGVUeXBlLCBpbnRUb0RvdWJsZSwgdW5ib3hl
ZERvdWJsZSk7CisgICAgfQogICAgIAogICAgIExWYWx1ZSBpc051bWJlcihMVmFsdWUganNWYWx1
ZSkKICAgICB7CkBAIC01MjI2LDggKzUxOTUsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFVu
dHlwZWRVc2U6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBLbm93bkludDMyVXNl
OgotICAgICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgogICAgICAgICBjYXNlIEtub3duU3RyaW5n
VXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVz
ZToKICAgICAgICAgICAgIEFTU0VSVCghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdl
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKQEAgLTUyNjAs
MTQgKzUyMzAsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVj
dFVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09yU3RyaW5nT2JqZWN0KGVkZ2UpOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAg
ICAgIHNwZWN1bGF0ZVJlYWxOdW1iZXIoZWRnZSk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVOdW1iZXIoZWRnZSk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgotICAgICAgICAg
ICAgc3BlY3VsYXRlTWFjaGluZUludChlZGdlKTsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFs
VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlRG91YmxlUmVhbChlZGdlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVC
b29sZWFuKGVkZ2UpOwpAQCAtNTUyOSwxNCArNTQ5NiwxMSBAQCBwcml2YXRlOgogICAgIAogICAg
IHZvaWQgc3BlY3VsYXRlTnVtYmVyKEVkZ2UgZWRnZSkKICAgICB7Ci0gICAgICAgIC8vIERvIGFu
IGVhcmx5IHJldHVybiBoZXJlIGJlY2F1c2UgbG93RG91YmxlKCkgY2FuIGNyZWF0ZSBhIGxvdCBv
ZiBjb250cm9sIGZsb3cuCi0gICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVj
ayhlZGdlKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGxvd0RvdWJs
ZShlZGdlKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUo
dmFsdWUpLCBlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIsIGlzTm90TnVtYmVyKHZhbHVlKSk7CiAg
ICAgfQogICAgIAotICAgIHZvaWQgc3BlY3VsYXRlUmVhbE51bWJlcihFZGdlIGVkZ2UpCisgICAg
dm9pZCBzcGVjdWxhdGVEb3VibGVSZWFsKEVkZ2UgZWRnZSkKICAgICB7CiAgICAgICAgIC8vIERv
IGFuIGVhcmx5IHJldHVybiBoZXJlIGJlY2F1c2UgbG93RG91YmxlKCkgY2FuIGNyZWF0ZSBhIGxv
dCBvZiBjb250cm9sIGZsb3cuCiAgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVD
aGVjayhlZGdlKSkKQEAgLTU1NDQsMTkgKzU1MDgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0RvdWJsZShlZGdlKTsKICAgICAgICAgRlRMX1RZUEVf
Q0hFQ0soCi0gICAgICAgICAgICBkb3VibGVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNGdWxsUmVh
bE51bWJlciwKKyAgICAgICAgICAgIGRvdWJsZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0RvdWJs
ZVJlYWwsCiAgICAgICAgICAgICBtX291dC5kb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKHZhbHVl
LCB2YWx1ZSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRn
ZSBlZGdlKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNr
KGVkZ2UpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgSW50NTJLaW5k
IGtpbmQ7Ci0gICAgICAgIGxvd1doaWNoZXZlckludDUyKGVkZ2UsIGtpbmQpOwotICAgIH0KLSAg
ICAKICAgICB2b2lkIHNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAgIHsKICAgICAgICAg
bG93Qm9vbGVhbihlZGdlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFs
dWVGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VmFsdWVGb3JtYXQuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzEsNiArNzEsNyBAQCB2
b2lkIHJlYm94QWNjb3JkaW5nVG9Gb3JtYXQoCiAgICAgY2FzZSBWYWx1ZUZvcm1hdERvdWJsZTog
ewogICAgICAgICBqaXQubW92ZURvdWJsZVRvNjQoRlBSSW5mbzo6ZnBSZWdUMCwgc2NyYXRjaDEp
OwogICAgICAgICBqaXQubW92ZTY0VG9Eb3VibGUodmFsdWUsIEZQUkluZm86OmZwUmVnVDApOwor
ICAgICAgICBqaXQuc2FuaXRpemVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgIGpp
dC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgdmFsdWUpOwogICAgICAgICBqaXQubW92ZTY0
VG9Eb3VibGUoc2NyYXRjaDEsIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICBicmVhazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJl
dmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNiArNTQsMTQgQEAgVmVjdG9y
PEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIEFzc2VtYgogICAgIHJldHVybiByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlOwogfQogCit2b2lkIEFzc2VtYmx5SGVscGVyczo6c2FuaXRpemVEb3VibGUo
RlBSUmVnIGZwcikKK3sKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3ROYU4gPSBicmFuY2hE
b3VibGUoRG91YmxlRXF1YWwsIGZwciwgZnByKTsKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5h
TiA9IFFOYU47CisgICAgbG9hZERvdWJsZSgmTmFOLCBmcHIpOworICAgIG5vdE5hTi5saW5rKHRo
aXMpOworfQorCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQogdm9pZCBBc3NlbWJseUhlbHBl
cnM6OnNldFNhbXBsaW5nRmxhZyhpbnQzMl90IGZsYWcpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQxNyw2ICs0MTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBqaXRBc3NlcnRU
YWdzSW5QbGFjZSgpIHsgfQogICAgIHZvaWQgaml0QXNzZXJ0QXJndW1lbnRDb3VudFNhbmUoKSB7
IH0KICNlbmRpZgorICAgIAorICAgIHZvaWQgc2FuaXRpemVEb3VibGUoRlBSUmVnIGZwcik7CiAK
ICAgICAvLyBUaGVzZSBtZXRob2RzIGNvbnZlcnQgYmV0d2VlbiBkb3VibGVzLCBhbmQgZG91Ymxl
cyBib3hlZCBhbmQgSlNWYWx1ZXMuCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTQzNSw2ICs0Mzcs
MTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZnByOwogICAgIH0KICAgICAKKyAgICB2b2lk
IGJveERvdWJsZShGUFJSZWcgZnByLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyAgICAgICAg
Ym94RG91YmxlKGZwciwgcmVncy5ncHIoKSk7CisgICAgfQorICAgIAogICAgIC8vIEhlcmUgYXJl
IHBvc3NpYmxlIGFycmFuZ2VtZW50cyBvZiBzb3VyY2UsIHRhcmdldCwgc2NyYXRjaDoKICAgICAv
LyAtIHNvdXJjZSwgdGFyZ2V0LCBzY3JhdGNoIGNhbiBhbGwgYmUgc2VwYXJhdGUgcmVnaXN0ZXJz
LgogICAgIC8vIC0gc291cmNlIGFuZCB0YXJnZXQgY2FuIGJlIHRoZSBzYW1lIGJ1dCBzY3JhdGNo
IGlzIHNlcGFyYXRlLgpAQCAtNDY3LDYgKzQ3NCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBtb3ZlSW50c1RvRG91YmxlKHBheWxvYWRHUFIsIHRhZ0dQUiwgZnByLCBzY3JhdGNoRlBSKTsK
ICAgICB9CisgICAgCisgICAgdm9pZCBib3hEb3VibGUoRlBSUmVnIGZwciwgSlNWYWx1ZVJlZ3Mg
cmVncykKKyAgICB7CisgICAgICAgIGJveERvdWJsZShmcHIsIHJlZ3MudGFnR1BSKCksIHJlZ3Mu
cGF5bG9hZEdQUigpKTsKKyAgICB9CiAjZW5kaWYKICAgICAKICAgICBlbnVtIEV4Y2VwdGlvbkNo
ZWNrS2luZCB7IE5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrIH07
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229354</attachid>
            <date>2014-04-14 23:30:53 -0700</date>
            <delta_ts>2014-04-14 23:33:35 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>233410</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3Mjk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2MiBA
QAorMjAxNC0wNC0xNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBJUiBzaG91bGQga2VlcCB0aGUgZGF0YSBmbG93IG9mIGRvdWJsZXMgYW5kIGludDUyJ3Mg
c2VwYXJhdGUgZnJvbSB0aGUgZGF0YSBmbG93IG9mIEpTVmFsdWUncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGludHJvZHVjZXMg
bW9yZSBzdGF0aWMgdHlwaW5nIGludG8gREZHIElSLiBQcmV2aW91c2x5IHdlIGp1c3QgaGFkIHRo
ZSBub3Rpb24gb2YKKyAgICAgICAgSlNWYWx1ZXMgYW5kIFN0b3JhZ2UuIFRoaXMgd2FzIHdlaXJk
IGJlY2F1c2UgZG91YmxlcyB3ZXJlbid0IGFsd2F5cyBjb252ZXJ0aWJsZSB0bworICAgICAgICBK
U1ZhbHVlcywgYW5kIEludDUycyB3ZXJlbid0IGFsd2F5cyBjb252ZXJ0aWJsZSB0byBlaXRoZXIg
ZG91YmxlcyBvciBKU1ZhbHVlcy4gV2Ugd291bGQKKyAgICAgICAgc29ydCBvZiBpbnNlcnQgZXhw
bGljaXQgY29udmVyc2lvbiBub2RlcyBqdXN0IGZvciB0aGUgcGxhY2VzIHdoZXJlIHdlIGtuZXcg
dGhhdCBhbgorICAgICAgICBpbXBsaWNpdCBjb252ZXJzaW9uIHdvdWxkbid0IGhhdmUgYmVlbiBw
b3NzaWJsZSAtLSBidXQgdGhlcmUgd2FzIG5vIGhhcmQgYW5kIGZhc3QgcnVsZSBzbworICAgICAg
ICB3ZSdkIGdldCBidWdzIGZyb20gZm9yZ2V0dGluZyB0byBkbyB0aGUgcmlnaHQgY29udmVyc2lv
bi4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmQgYW5kIGZh
c3QgcnVsZTogZG91YmxlcyBjYW4gbmV2ZXIgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8KKyAg
ICAgICAgYW55dGhpbmcgYnV0IGRvdWJsZXMsIGFuZCBsaWtld2lzZSBJbnQ1MidzIGNhbiBuZXZl
ciBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZC4gQ29udmVyc2lvbgorICAgICAgICBub2RlcyBhcmUg
dXNlZCBmb3IgYWxsIG9mIHRoZSBjb252ZXJzaW9ucy4KKyAgICAgICAgCisgICAgICAgIEluIGFk
ZGl0aW9uIHRvIHNpbXBsaWZ5aW5nIGEgYnVuY2ggb2YgcnVsZXMgaW4gdGhlIElSIGFuZCBtYWtp
bmcgdGhlIElSIG1vcmUgdmVyaWZpYWJsZSwKKyAgICAgICAgdGhpcyBhbHNvIG1ha2VzIGl0IGVh
c2llciB0byBpbnRyb2R1Y2Ugb3B0aW1pemF0aW9ucyBpbiB0aGUgZnV0dXJlLiBJdCdzIG5vdyBw
b3NzaWJsZSBmb3IKKyAgICAgICAgQUkgdG8gbW9kZWwgd2hlbi9ob3cgY29udmVyc2lvbiB0YWtl
IHBsYWNlLiBGb3IgZXhhbXBsZSBpZiBkb2luZyBhIGNvbnZlcnNpb24gcmVzdWx0cyBpbgorICAg
ICAgICBOYU4gc2FuaXRpemF0aW9uLCB0aGVuIEFJIGNhbiBtb2RlbCB0aGlzIGFuZCBjYW4gYWxs
b3cgdXMgdG8gc2luayBzYW5pdGl6YXRpb25zLiBUaGF0J3MKKyAgICAgICAgd2hhdCBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDE5IHdpbGwgYmUgYWxsIGFib3V0
LgorICAgICAgICAKKyAgICAgICAgVGhpcyB3YXMgYSBiaWcgY2hhbmdlLCBzbyBJIGhhZCB0byBk
byBzb21lIGludGVyZXN0aW5nIHRoaW5ncywgbGlrZSBmaW5hbGx5IGdldCByaWQgb2YKKyAgICAg
ICAgdGhlIERGRydzIHdlaXJkIHZhcmlhZGljIHRlbXBsYXRlIG1hY3JvIGhhY2tzIGFuZCB1c2Ug
cmVhbCBDKysxMSB2YXJpYWRpYyB0ZW1wbGF0ZXMuIEFsc28KKyAgICAgICAgdGhlIEJ5dGVDb2Rl
UGFyc2VyIG5vIGxvbmdlciBlbWl0cyBJZGVudGl0eSBub2RlcyBzaW5jZSB0aGF0IHdhcyBhbHdh
eXMgcG9pbnRsZXNzLgorICAgICAgICAKKyAgICAgICAgTm8gcGVyZm9ybWFuY2UgY2hhbmdlIGJl
Y2F1c2UgdGhpcyBtb3N0bHkganVzdCByYXRpb25hbGl6ZXMgcHJlZXhpc3RpbmcgYmVoYXZpb3Iu
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyOjpzZXRCdWlsdEluQ29uc3RhbnQpOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OnNldENvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
VmFsdWUuaDoKKyAgICAgICAgKiBkZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRl
KToKKyAgICAgICAgKiBkZmcvREZHQmFzaWNCbG9jay5oOgorICAgICAgICAqIGRmZy9ERkdCYXNp
Y0Jsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkJhc2ljQmxvY2s6OmFwcGVuZE5v
ZGUpOgorICAgICAgICAoSlNDOjpERkc6OkJhc2ljQmxvY2s6OmFwcGVuZE5vblRlcm1pbmFsKToK
KyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpjb25zdGFudENTRSk6CisgICAgICAg
IChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKEpTQzo6REZH
OjpDU0VQaGFzZTo6aW50MzJUb0RvdWJsZUNTRSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RG
R0NhcGFiaWxpdGllcy5oOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9s
ZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RDRVBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpEQ0VQaGFzZTo6Zml4dXBCbG9jayk6CisgICAgICAgICogZGZnL0RGR0VkZ2UuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpFZGdlOjp3aWxsTm90SGF2ZUNoZWNrKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6cnVu
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAo
SlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwR2V0QW5kU2V0TG9jYWxzSW5CbG9jayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6b2JzZXJ2ZVVzZUtpbmRPbk5vZGUpOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeEludEVkZ2UpOgorICAgICAgICAoSlNDOjpERkc6
OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01ha2VJbnRlZ2VyQWRkKToKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjppbmplY3RUeXBlQ29udmVyc2lvbnNJbkJsb2NrKToKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjp0cnlUb1JlbGF4UmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
SlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeEVkZ2VSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChK
U0M6OkRGRzo6Rml4dXBQaGFzZTo6aW5qZWN0VHlwZUNvbnZlcnNpb25zRm9yRWRnZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YWRkUmVxdWlyZWRQaGFudG9tKToKKyAgICAgICAg
KEpTQzo6REZHOjpGaXh1cFBoYXNlOjphZGRQaGFudG9tc0lmTmVjZXNzYXJ5KToKKyAgICAgICAg
KEpTQzo6REZHOjpGaXh1cFBoYXNlOjpjbGVhclBoYW50b21zQXRFbmQpOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwU2V0TG9jYWxzSW5CbG9jayk6IERlbGV0ZWQuCisgICAg
ICAgICogZGZnL0RGR0ZsdXNoRm9ybWF0Lmg6CisgICAgICAgIChKU0M6OkRGRzo6cmVzdWx0Rm9y
KToKKyAgICAgICAgKEpTQzo6REZHOjp1c2VLaW5kRm9yKToKKyAgICAgICAgKiBkZmcvREZHR3Jh
cGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKiBkZmcv
REZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YWRkTm9kZSk6CisgICAgICAg
ICogZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJ
blBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogZGZnL0RGR0luc2Vy
dGlvblNldC5oOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6aW5zZXJ0Tm9kZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjppbnNlcnRDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjppbnNlcnRDb25zdGFudEZvclVzZSk6CisgICAg
ICAgICogZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZTo6aW5zZXJ0QWRkKToKKyAgICAgICAg
KEpTQzo6REZHOjpJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZTo6aW5zZXJ0TXVzdEFkZCk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZl
cnRUb0lkZW50aXR5KToKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICog
ZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpOb2RlKToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpzZXRSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnJl
c3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNDb25zdGFudCk6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6aGFzQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNv
bnZlcnRUb0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjp2YWx1ZU9mSlNDb25z
dGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzUmVzdWx0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNJbnQzMlJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
aGFzSW50NTJSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc051bWJlclJlc3Vs
dCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzRG91YmxlUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpoYXNKU1Jlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
aGFzQm9vbGVhblJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU3RvcmFnZVJl
c3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZGVmYXVsdFVzZUtpbmQpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmRlZmF1bHRFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
Ojpjb252ZXJ0VG9JZGVudGl0eSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR05vZGVGbGFn
cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZHVtcE5vZGVGbGFncyk6CisgICAgICAgICogZGZn
L0RGR05vZGVGbGFncy5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbm9uaWNhbFJlc3VsdFJlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcv
REZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRD
b21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6
CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAg
ICAgICAgKiBkZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2U6OnJ1bik6CisgICAg
ICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkpOgor
ICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNpbGVu
dFNhdmVQbGFuRm9yR1BSKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c2ls
ZW50U2F2ZVBsYW5Gb3JGUFIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
aWxlbnRGaWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpKU1ZhbHVlUmVnc1RlbXBvcmFyeTo6SlNW
YWx1ZVJlZ3NUZW1wb3JhcnkpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVSZWdzVGVtcG9y
YXJ5Ojp+SlNWYWx1ZVJlZ3NUZW1wb3JhcnkpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVS
ZWdzVGVtcG9yYXJ5OjpyZWdzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVBlZXBIb2xlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2hlY2tHZW5lcmF0ZWRUeXBlRm9yVG9JbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUmVwKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFkZCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1Yik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE11bCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aERpdik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVEb3VibGVSZWFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlu
dDMyVG9Eb3VibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVNYWNoaW5lSW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlUmVhbE51bWJlcik6IERlbGV0ZWQuCisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6dXNlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Ym94RG91YmxlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BpbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpqc1ZhbHVlUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVJ
bnQ1Mk9wZXJhbmQ6OlNwZWN1bGF0ZUludDUyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kOjpTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZDo6U3Bl
Y3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGVEb3VibGVPcGVyYW5kOjpTcGVjdWxhdGVEb3VibGVPcGVyYW5kKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmZpbGxKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdEJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb252ZXJ0VG9E
b3VibGUpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ1Mik6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFu
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3Qp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRUb0RvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgICog
ZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0
cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OlN0
cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmZvbGRJZGVudGl0eSk6CisgICAgICAgICogZGZnL0RGR1Vz
ZUtpbmQuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcv
REZHVXNlS2luZC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5cGVGaWx0ZXJGb3IpOgorICAgICAg
ICAoSlNDOjpERkc6OnNob3VsZE5vdEhhdmVUeXBlQ2hlY2spOgorICAgICAgICAoSlNDOjpERkc6
Om1heUhhdmVUeXBlQ2hlY2spOgorICAgICAgICAoSlNDOjpERkc6OmlzTnVtZXJpY2FsKToKKyAg
ICAgICAgKEpTQzo6REZHOjppc0RvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6aXNDZWxsKToK
KyAgICAgICAgKEpTQzo6REZHOjp1c2VzU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjp1
c2VLaW5kRm9yUmVzdWx0KToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6CisgICAgICAgICogZGZnL0RGR1Zhcmlh
ZGljRnVuY3Rpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjcmVh
dGVQaGlWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21w
aWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVVcHNp
bG9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVBoaSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVEb3VibGVDb25zdGFudCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVJbnQ1MkNvbnN0YW50
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVdlYWtKU0NvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZURvdWJsZVJl
cCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVWYWx1ZVJlcCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVJbnQ1MlJlcCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVWYWx1ZVRvSW50MzIpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJpdGhBZGRPclN1Yik6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcml0aE11bCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcml0aERpdik6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcml0aE1vZCk6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcml0aE1pbk9yTWF4KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoQWJzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTmVnYXRlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNvbXBhcmVFcSk6CisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21wYXJlKToKKyAgICAgICAgKEpTQzo6RlRMOjpM
b3dlckRGR1RvTExWTTo6Ym9vbGlmeSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06Omxvd0ludDUyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6bG93U3Ry
aWN0SW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dXaGljaGV2
ZXJJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd0RvdWJsZSk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd0pTVmFsdWUpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzdHJpY3RJbnQ1MlRvRG91YmxlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6anNWYWx1ZVRvRG91YmxlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpM
b3dlckRGR1RvTExWTTo6c3BlY3VsYXRlRG91YmxlUmVhbCk6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVJbnQ1MlRvVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlSW50MzJUb0RvdWJsZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNldEludDUyV2l0aFN0cmljdFZh
bHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3Vs
YXRlUmVhbE51bWJlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OnNwZWN1bGF0ZU1hY2hpbmVJbnQpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExWYWx1
ZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6cmVib3hBY2NvcmRpbmdUb0Zvcm1hdCk6
CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6c2FuaXRpemVEb3VibGUpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBl
cnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpib3hEb3VibGUpOgorCiAyMDE0
LTA0LTE0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTY3MjcyLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC02MTAsNyArNjEwLDYgQEAKIAkJMEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVB
bGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQjRCNTFGMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdOb2RlQWxsb2NhdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGQjkyMUMxNkQwMkYx
MTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTg3RjJDMTY3RkU4NEIwMDNDMkY4RCAv
KiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGQjkyMUQxNkQwMkYzMDAwNTVBNURCIC8qIERGR1Ns
b3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjFFM0E1MDE1MzdDMkNCMDAwRjk0NTYgLyogREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkZC
OTIxRTE2RDAyRjQ3MDA1NUE1REIgLyogREZHVmFyaWFkaWNGdW5jdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NUEzMUUxNkFCNzZBRTAwNzc1
NzFFIC8qIERGR1ZhcmlhZGljRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIgLyogTm9kZUNv
bnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTMwREFEMDMwRkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZDOTlEMTE4NEVD
OEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZDOTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRN
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEZGQzk5RDQxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZD
OTlEMjE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNw
cCAqLzsgfTsKQEAgLTg5NCw3ICs4OTMsNyBAQAogCQk1NTQwNzcyMDE4REE1OEFEMDBFRkY3RjIg
LyogSlNBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMkI2NkJCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmll
dy5oICovOyB9OwogCQk1NTQwNzcyMTE4REE1OEFEMDBFRkY3RjIgLyogSlNBcnJheUJ1ZmZlclZp
ZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJCNjZCQzE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgg
Ki87IH07CiAJCTU1NDA3NzIyMThEQTU4QUQwMEVGRjdGMiAvKiBKU0FycmF5SXRlcmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QkRBRUM1MTdG
NEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuaCAqLzsgfTsKLQkJNTU0MDc3MjUxOERB
NThBRDAwRUZGN0YyIC8qIEpTQm91bmRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91
bmRGdW5jdGlvbi5oICovOyB9OworCQk1NTQwNzcyNTE4REE1OEFEMDBFRkY3RjIgLyogKG51bGwp
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyB9OwogCQk1NTQwNzcyQjE4REE1
OEFEMDBFRkY3RjIgLyogSlNDZWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzExNjdEODBFMTlCQ0M5MDA4MDY2REQgLyogSlNDZWxsLmggKi87IH07
CiAJCTU1NDA3NzJDMThEQTU4QUQwMEVGRjdGMiAvKiBKU0NlbGxJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk3NDk2RjE2ODdBREUyMDBB
NEZGNkEgLyogSlNDZWxsSW5saW5lcy5oICovOyB9OwogCQk1NTQwNzcyRDE4REE1OEFEMDBFRkY3
RjIgLyogSlNDSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYxREQ4NDkxOEE5NDVCRTAwMjZGM0ZBIC8qIEpTQ0lubGluZXMuaCAqLzsgfTsK
QEAgLTEwNDMsNTEgKzEwNDIsMTAgQEAKIAkJNTU0MDc4ODgxOERBNThBRDAwRUZGN0YyIC8qIFdl
YWtSYW5kb20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggKi87IH07CiAJCTU1NDA3
ODhEMThEQTU4QUQwMEVGRjdGMiAvKiBXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBX
cml0ZUJhcnJpZXIuaCAqLzsgfTsKIAkJNTU0MDc4OEYxOERBNThBRDAwRUZGN0YyIC8qIFdyaXRl
QmFycmllcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJhcnJpZXJJbmxpbmVzLmgg
Ki87IH07Ci0JCTU1NDA3ODlFMThEQTU4QUQwMEVGRjdGMiAvKiBBcmd1bWVudHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNTdERTUwRTFGNTFD
NTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5jcHAgKi87IH07Ci0JCTU1NDA3OEEwMThEQTU4QUQwMEVG
RjdGMiAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzYxNDBDOTE4Mjk4MkNCMDA3NTA2MjQgLyog
QXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwICovOyB9OwogCQk1NTQwNzhBQjE4REE1OEFE
MDBFRkY3RjIgLyogQXJyYXlDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc5NTIwNjBFMTVFOEE4MDBBODk4QUIgLyogQXJyYXlD
b25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1NDA3OEFEMThEQTU4QUQwMEVGRjdGMiAvKiBBcnJh
eUl0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3QkRBRUMyMTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJv
dG90eXBlLmNwcCAqLzsgfTsKIAkJNTU0MDc4QUYxOERBNThBRDAwRUZGN0YyIC8qIEFycmF5UHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY2OTJBODREMDI1NTU5N0QwMUZGNjBGNyAvKiBBcnJheVByb3RvdHlwZS5jcHAgKi87IH07Ci0J
CTU1NDA3OEIyMThEQTU4QUQwMEVGRjdGMiAvKiBCb29sZWFuQ29uc3RydWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3OTUyMzIwRTE1RUI1
NjAwQTg5OEFCIC8qIEJvb2xlYW5Db25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1NDA3OEI0MThE
QTU4QUQwMEVGRjdGMiAvKiBCb29sZWFuUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzk1MjM0MEUxNUVCNTYwMEE4OThBQiAvKiBC
b29sZWFuUHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDc4RDUxOERBNThBRDAwRUZGN0YyIC8q
IERhdGVDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0QyMDM0NTBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZUNvbnN0cnVjdG9yLmNw
cCAqLzsgfTsKLQkJNTU0MDc4RDgxOERBNThBRDAwRUZGN0YyIC8qIERhdGVQcm90b3R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMjAzNDcw
RTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwNzk0QjE4
REE1OEFEMDBFRkY3RjIgLyogRXJyb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAyRTkwNDBFMTgzOURCMDAwRjkyOTcgLyog
RXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1NDA3OTRFMThEQTU4QUQwMEVGRjdGMiAv
KiBFcnJvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzAyRTkwNjBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JQcm90b3R5cGUuY3Bw
ICovOyB9OwotCQk1NTQwNzk3RDE4REE1OEFEMDBFRkY3RjIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2
ODBDMDBFMTZENEU5MDBBMDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0J
CTU1NDA3OTdGMThEQTU4QUQwMEVGRjdGMiAvKiBGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg1QzAyNTU1OTdE
MDFGRjYwRjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwNzlDMjE4REE1
OEFEMDBFRkY3RjIgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkI2MTdCNkI1QUIwMEE3QUUz
RiAvKiBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwICovOyB9OwotCQk1NTQwNzlDMzE4REE1
OEFEMDBFRkY3RjIgLyogSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCODE3QjZCNUFCMDBBN0FFM0Yg
LyogSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAgKi87IH07Ci0JCTU1NDA3OUM1MThEQTU4QUQw
MEVGRjdGMiAvKiBKU0FycmF5SXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCREFFQzQxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJ
dGVyYXRvci5jcHAgKi87IH07Ci0JCTU1NDA3OUM3MThEQTU4QUQwMEVGRjdGMiAvKiBKU0JvdW5k
RnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi87IH07
Ci0JCTU1NDA3OUQzMThEQTU4QUQwMEVGRjdGMiAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkJGMTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDc5
RDUxOERBNThBRDAwRUZGN0YyIC8qIEpTRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NUUwMjU1NTk3RDAxRkY2MEY3IC8qIEpT
RnVuY3Rpb24uY3BwICovOyB9OwotCQk1NTQwNzlEQTE4REE1OEFEMDBFRkY3RjIgLyogSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM3NTZGQzYwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmNwcCAqLzsgfTsKLQkJNTU0MDc5RUIxOERBNThBRDAwRUZGN0YyIC8qIEpTT05PYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdG
OTkzNUUwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3BwICovOyB9OwotCQk1NTQwNzlF
RTE4REE1OEFEMDBFRkY3RjIgLyogSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxODRFMjAxN0JFRTI0MDAwN0NC
NjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDc5RjAxOERBNThB
RDAwRUZGN0YyIC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEMDE4NkY4QTkzMDA5NTVDMjQgLyogSlNQ
cm9taXNlRnVuY3Rpb25zLmNwcCAqLzsgfTsKLQkJNTU0MDc5RjExOERBNThBRDAwRUZGN0YyIC8q
IEpTUHJvbWlzZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzE4NEUxQzE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90
eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDdBMjIxOERBNThBRDAwRUZGN0YyIC8qIENvbnNvbGVQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUzQ0UwODExOEJDMUE1NjAwQkVERjc2IC8qIENvbnNvbGVQcm90b3R5cGUuY3BwICovOyB9Owot
CQk1NTQwN0EyNTE4REE1OEFEMDBFRkY3RjIgLyogTWFwQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3MzcxN0NCRTg1MzAw
QzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDdBMjgxOERBNThBRDAw
RUZGN0YyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NERFRjhEMTgyRDk5MTQwMDUyMkMyMiAvKiBNYXBJ
dGVyYXRvclByb3RvdHlwZS5jcHAgKi87IH07Ci0JCTU1NDA3QTI5MThEQTU4QUQwMEVGRjdGMiAv
KiBNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi87
IH07Ci0JCTU1NDA3QTJFMThEQTU4QUQwMEVGRjdGMiAvKiBNYXRoT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODZBMDI1NTU5N0Qw
MUZGNjBGNyAvKiBNYXRoT2JqZWN0LmNwcCAqLzsgfTsKLQkJNTU0MDdBMzExOERBNThBRDAwRUZG
N0YyIC8qIE5hbWVDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkVCRjJGOTE1NjBGMDM2MDA4RTkyMjIgLyogTmFtZUNvbnN0cnVj
dG9yLmNwcCAqLzsgfTsKLQkJNTU0MDdBMzMxOERBNThBRDAwRUZGN0YyIC8qIE5hbWVQcm90b3R5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZF
QkYyRkQxNTYwRjAzNjAwOEU5MjIyIC8qIE5hbWVQcm90b3R5cGUuY3BwICovOyB9OwogCQk1NTQw
N0EzODE4REE1OEFEMDBFRkY3RjIgLyogTnVtYmVyQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjgwQzIwRTE2RDRFOTAwQTA2
RTkyIC8qIE51bWJlckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNTU0MDdBM0ExOERBNThBRDAw
RUZGN0YyIC8qIE51bWJlclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBDNDBFMTZENEU5MDBBMDZFOTIgLyogTnVtYmVyUHJv
dG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDdBM0MxOERBNThBRDAwRUZGN0YyIC8qIE9iamVjdENv
bnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMjY4MEM2MEUxNkQ0RTkwMEEwNkU5MiAvKiBPYmplY3RDb25zdHJ1Y3Rvci5jcHAgKi87
IH07Ci0JCTU1NDA3QTNEMThEQTU4QUQwMEVGRjdGMiAvKiBPYmplY3RQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjgwQzgwRTE2
RDRFOTAwQTA2RTkyIC8qIE9iamVjdFByb3RvdHlwZS5jcHAgKi87IH07Ci0JCTU1NDA3QTYzMThE
QTU4QUQwMEVGRjdGMiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0QyMDJCRDBFMTcwNkE3MDAyQzdFODIgLyog
UmVnRXhwQ29uc3RydWN0b3IuY3BwICovOyB9OwotCQk1NTQwN0E2NjE4REE1OEFEMDBFRkY3RjIg
LyogUmVnRXhwUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRDIwMkJGMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBQcm90b3R5cGUu
Y3BwICovOyB9OwotCQk1NTQwN0E3QjE4REE1OEFEMDBFRkY3RjIgLyogU2V0SXRlcmF0b3JQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTc5MERENjcxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsg
fTsKLQkJNTU0MDdBN0MxOERBNThBRDAwRUZGN0YyIC8qIFNldFByb3RvdHlwZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI5OUQ5RjE3RDEyODQ4
MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDdBODgxOERBNThBRDAw
RUZGN0YyIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDM0MwMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdD
b25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1NDA3QThBMThEQTU4QUQwMEVGRjdGMiAvKiBTdHJp
bmdQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMxOEMzQzUwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5jcHAgKi87
IH07Ci0JCTU1NDA3QUFDMThEQTU4QUQwMEVGRjdGMiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBREQx
N0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1NDA3
QUFFMThEQTU4QUQwMEVGRjdGMiAvKiBXZWFrTWFwUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQURGMTdEQTQxQUUwMDY1MzhB
RiAvKiBXZWFrTWFwUHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTVGMTM4MEIxOEVGNUY1MDAwOTgy
MDE1IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMkU5MDgwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IuY3BwICovOyB9OwotCQk1NUYxMzgwQzE4RUY1RkI5MDA5ODIwMTUg
LyogU2V0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTcyOTlEQTMxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmNw
cCAqLzsgfTsKIAkJNUQ1MzcyNkYwRTFDNTQ4ODAwMjFFNTQ5IC8qIFRyYWNpbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVENTM3MjZFMEUxQzU0ODgw
MDIxRTU0OSAvKiBUcmFjaW5nLmggKi87IH07CiAJCTVENUQ4QUQxMEUwRDBFQkUwMEY5QzY5MiAv
KiBsaWJlZGl0LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgKi87IH07
CiAJCTVEQkIxNTFCMTMxRDBCMzEwMDU2QUQzNiAvKiB0ZXN0YXBpLmpzIGluIENvcHkgU3VwcG9y
dCBTY3JpcHQgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREODU3NzQwQTQ2
OTZDODAwMzIxNDZDIC8qIHRlc3RhcGkuanMgKi87IH07CkBAIC0yMTgzLDcgKzIxNDEsNiBAQAog
CQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAw
MTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0JyYW5jaERpcmVjdGlvbi5o
OyBwYXRoID0gZGZnL0RGR0JyYW5jaERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwRjg1QTMxRTE2QUI3NkFFMDA3NzU3MUUgLyogREZHVmFyaWFkaWNGdW5jdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdWYXJpYWRpY0Z1bmN0aW9uLmg7
IHBhdGggPSBkZmcvREZHVmFyaWFkaWNGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVVc2VEZWYuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4RjJCOTMxNzJFMDQ5RTAwN0RCREE1IC8qIEZUTExpbmsu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMTGluay5jcHA7IHBhdGggPSBmdGwvRlRMTGluay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOEYyQjk0MTcyRTA0OUUwMDdEQkRB
NSAvKiBGVExMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTExpbmsuaDsgcGF0aCA9IGZ0bC9GVExM
aW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00ODQzLDcgKzQ4MDAsNiBAQAog
CQkJCTBGMkJEQzQxMTUyMjgwMTcwMENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50LmggKi8sCiAJ
CQkJMEYyQkRDNDIxNTIyODAxNzAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3Bw
ICovLAogCQkJCTBGMkJEQzQzMTUyMjgwMTcwMENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50U3Ry
ZWFtLmggKi8sCi0JCQkJMEY4NUEzMUUxNkFCNzZBRTAwNzc1NzFFIC8qIERGR1ZhcmlhZGljRnVu
Y3Rpb24uaCAqLywKIAkJCQkwRkZGQzk1MzE0RUY5MDk1MDBDNzI1MzIgLyogREZHVmlydHVhbFJl
Z2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcCAqLywKIAkJCQkwRkZGQzk1NDE0RUY5MDk1MDBDNzI1
MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmggKi8sCiAJCQkJMEZDOTdG
M0IxODIwMjExOTAwMkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwICov
LApAQCAtNTI3MCw3ICs1MjI2LDcgQEAKIAkJCQk1NTQwNzcxODE4REE1OEFEMDBFRkY3RjIgLyog
SlNBY3RpdmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTQwNzcxQjE4REE1OEFEMDBFRkY3
RjIgLyogSlNBcmd1bWVudHNJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTU0MDc3MjIx
OERBNThBRDAwRUZGN0YyIC8qIEpTQXJyYXlJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NTU0MDc3MjUxOERBNThBRDAwRUZGN0YyIC8qIEpTQm91bmRGdW5jdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTU0MDc3MjUxOERBNThBRDAwRUZGN0YyIC8qIChudWxsKSBpbiBIZWFkZXJzICov
LAogCQkJCTU1NDA3NzQ4MThEQTU4QUQwMEVGRjdGMiAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1NDA3NzRBMThEQTU4QUQwMEVGRjdGMiAvKiBKU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTU0MDc3NTkxOERBNThB
RDAwRUZGN0YyIC8qIEpTTWFwSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtNTc0NCw3ICs1
NzAwLDYgQEAKIAkJCQkwRkREQkZCNjE2NjZFRURBMDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nl
c3NEYXRhRHVtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkRDNDkxNTIyODA5NjAwQ0Q4OTEw
IC8qIERGR1ZhcmlhYmxlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkJEQzRCMTUyMjgw
OUQwMENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwRkZCOTIxRTE2RDAyRjQ3MDA1NUE1REIgLyogREZHVmFyaWFkaWNGdW5jdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGRkM5NjAxNEVGOTBCRDAwQzcyNTMyIC8qIERGR1ZpcnR1YWxSZWdp
c3RlckFsbG9jYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDOTdGNDIxODIwMjEx
OTAwMkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGREIyQ0U4MTc0ODMwQTIwMDdCM0MxQiAvKiBERkdXb3JrbGlzdC5oIGluIEhlYWRl
cnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRl
ICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJERkdKSVRD
b2RlLmgiCi0jaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAj
aW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTY3Mjcy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSwxMCArNDUsNiBAQAogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1
ZGUgIkRGR0NvbW1vbkRhdGEuaCIKICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgotI2luY2x1
ZGUgIkRGR01pbmlmaWVkR3JhcGguaCIKLSNpbmNsdWRlICJERkdPU1JFbnRyeS5oIgotI2luY2x1
ZGUgIkRGR09TUkV4aXQuaCIKLSNpbmNsdWRlICJERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmgiCiAj
aW5jbHVkZSAiRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXZhbENv
ZGVDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGlvbkNvdW50ZXIuaCIKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCShyZXZp
c2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU3LDkgKzE1NywxNiBAQCBwcml2YXRlOgogICAg
IH07CiAgICAgQm9vbGVhblJlc3VsdCBib29sZWFuUmVzdWx0KE5vZGUqLCBBYnN0cmFjdFZhbHVl
Jik7CiAgICAgCisgICAgdm9pZCBzZXRCdWlsdEluQ29uc3RhbnQoTm9kZSogbm9kZSwgSlNWYWx1
ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFic3RyYWN0VmFsdWUmIGFic3RyYWN0VmFsdWUgPSBm
b3JOb2RlKG5vZGUpOworICAgICAgICBhYnN0cmFjdFZhbHVlLnNldChtX2dyYXBoLCB2YWx1ZSk7
CisgICAgICAgIGFic3RyYWN0VmFsdWUuZml4VHlwZUZvclJlcHJlc2VudGF0aW9uKG5vZGUpOwor
ICAgIH0KKyAgICAKICAgICB2b2lkIHNldENvbnN0YW50KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFs
dWUpCiAgICAgewotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCB2YWx1ZSk7Cisg
ICAgICAgIHNldEJ1aWx0SW5Db25zdGFudChub2RlLCB2YWx1ZSk7CiAgICAgICAgIG1fc3RhdGUu
c2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsOSArMTI2
LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAKICAg
ICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgY2FzZSBE
b3VibGVDb25zdGFudDoKKyAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgY2FzZSBXZWFrSlND
b25zdGFudDoKICAgICBjYXNlIFBoYW50b21Bcmd1bWVudHM6IHsKLSAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXQobV9ncmFwaCwgbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChub2RlKSk7CisgICAg
ICAgIHNldEJ1aWx0SW5Db25zdGFudChub2RlLCBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG5v
ZGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTMwNywzOSArMzA5LDM5
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEludDMyVG9Eb3VibGU6IHsKKyAgICBjYXNl
IERvdWJsZVJlcDogewogICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkudmFsdWUoKTsKICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsK
LSAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNE
b3VibGUsIGNoaWxkLmFzTnVtYmVyKCkpKTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUs
IGpzRG91YmxlTnVtYmVyKGNoaWxkLmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVj
RG91YmxlUmVhbCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKGZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSk7CisgICAgICAgIGZvck5vZGUobm9kZSkuZml4VHlwZUZv
clJlcHJlc2VudGF0aW9uKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAot
ICAgIGNhc2UgSW50NTJUb0RvdWJsZTogeworICAgIGNhc2UgSW50NTJSZXA6IHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEludDMyVXNlKTsKKyAg
ICAgICAgCiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52
YWx1ZSgpOwotICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgeworICAgICAg
ICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCBjaGlsZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CisgICAgICAgIAorICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
ICAgICAKLSAgICBjYXNlIEludDUyVG9WYWx1ZTogewotICAgICAgICBKU1ZhbHVlIGNoaWxkID0g
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICAgICAgaWYgKGNoaWxkICYmIGNo
aWxkLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsK
KyAgICBjYXNlIFZhbHVlUmVwOiB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAg
IHNldENvbnN0YW50KG5vZGUsIHZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0gICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5t
X3R5cGU7Ci0gICAgICAgIGlmICh0eXBlICYgU3BlY0ludDUyKQotICAgICAgICAgICAgdHlwZSA9
ICh0eXBlIHwgU3BlY0ludDMyIHwgU3BlY0ludDUyQXNEb3VibGUpICYgflNwZWNJbnQ1MjsKLSAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKHR5cGUpOworICAgICAgICAKKyAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXRUeXBlKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSk7CisgICAg
ICAgIGZvck5vZGUobm9kZSkuZml4VHlwZUZvclJlcHJlc2VudGF0aW9uKG5vZGUpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMzcwLDcgKzM3Miw3IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGlmIChzaG91bGRDaGVj
a092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRD
YW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWFjaGluZUlu
dFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYm
IHJpZ2h0ICYmIGxlZnQuaXNNYWNoaW5lSW50KCkgJiYgcmlnaHQuaXNNYWNoaW5lSW50KCkpIHsK
ICAgICAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGxlZnQuYXNNYWNoaW5l
SW50KCkgKyByaWdodC5hc01hY2hpbmVJbnQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dC5pc01hY2hpbmVJbnQoKSkgewpAQCAtMzgzLDkgKzM4NSw5IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICB8fCAhZm9yTm9kZShub2Rl
LT5jaGlsZDIoKSkuaXNUeXBlKFNwZWNJbnQzMikpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0
Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVz
ZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiBy
aWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgewotICAgICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGxlZnQuYXNOdW1iZXIoKSArIHJpZ2h0
LmFzTnVtYmVyKCkpKTsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJs
ZU51bWJlcihsZWZ0LmFzTnVtYmVyKCkgKyByaWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaXNGdWxsUmVhbE51
bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKQEAgLTQyNiw3
ICs0MjgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgICAgICBpZiAoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpCiAgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAg
ICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTWFjaGluZUludCgpICYmIHJp
Z2h0LmlzTWFjaGluZUludCgpKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihsZWZ0LmFzTWFjaGluZUludCgpIC0gcmlnaHQuYXNNYWNoaW5lSW50KCkpOwogICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNNYWNoaW5lSW50KCkgfHwgIXNob3VsZENoZWNrT3Zl
cmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKSB7CkBAIC00MzksOSArNDQxLDkgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIHx8ICFmb3JO
b2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY0ludDMyKSkKICAgICAgICAgICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
TnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChs
ZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7Ci0g
ICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIobGVmdC5hc051bWJlcigp
IC0gcmlnaHQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUs
IGpzRG91YmxlTnVtYmVyKGxlZnQuYXNOdW1iZXIoKSAtIHJpZ2h0LmFzTnVtYmVyKCkpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAgLTQ3Nyw3ICs0NzksNyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2hl
Y2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0
Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hY2hpbmVJ
bnRVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICBpZiAoY2hpbGQg
JiYgY2hpbGQuaXNNYWNoaW5lSW50KCkpIHsKICAgICAgICAgICAgICAgICBkb3VibGUgZG91Ymxl
UmVzdWx0OwogICAgICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja05lZ2F0aXZlWmVybyhub2Rl
LT5hcml0aE1vZGUoKSkpCkBAIC00OTYsOSArNDk4LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrTmVnYXRpdmVa
ZXJvKG5vZGUtPmFyaXRoTW9kZSgpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0
KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAg
ICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5p
c051bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIo
LWNoaWxkLmFzTnVtYmVyKCkpKTsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBq
c0RvdWJsZU51bWJlcigtY2hpbGQuYXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNE
b3VibGUpOwpAQCAtNTMzLDcgKzUzNSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFy
aXRoTW9kZSgpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgY2Fz
ZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNN
YWNoaW5lSW50KCkgJiYgcmlnaHQuaXNNYWNoaW5lSW50KCkpIHsKICAgICAgICAgICAgICAgICBk
b3VibGUgZG91YmxlUmVzdWx0ID0gbGVmdC5hc051bWJlcigpICogcmlnaHQuYXNOdW1iZXIoKTsK
ICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRo
TW9kZSgpKSkKQEAgLTU0Nyw5ICs1NDksOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDUy
KTsKICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgog
ICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0
LmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJl
cihsZWZ0LmFzTnVtYmVyKCkgKiByaWdodC5hc051bWJlcigpKSk7CisgICAgICAgICAgICAgICAg
c2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIobGVmdC5hc051bWJlcigpICogcmlnaHQu
YXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKGlzRnVsbFJlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKS5tX3R5cGUpCkBAIC01ODUsOSArNTg3LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNJbnQzMik7CiAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJl
cFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAm
JiByaWdodC5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwg
anNOdW1iZXIobGVmdC5hc051bWJlcigpIC8gcmlnaHQuYXNOdW1iZXIoKSkpOworICAgICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGxlZnQuYXNOdW1iZXIoKSAv
IHJpZ2h0LmFzTnVtYmVyKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAgLTYx
OSw5ICs2MjEsOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAg
IG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYg
KGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsK
LSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihmbW9kKGxlZnQuYXNO
dW1iZXIoKSwgcmlnaHQuYXNOdW1iZXIoKSkpKTsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCBqc0RvdWJsZU51bWJlcihmbW9kKGxlZnQuYXNOdW1iZXIoKSwgcmlnaHQuYXNOdW1i
ZXIoKSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAgLTY0NSwxMSArNjQ3LDEx
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICAgICAgbm9kZS0+c2V0
Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVz
ZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiBy
aWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgewogICAgICAgICAg
ICAgICAgIGRvdWJsZSBhID0gbGVmdC5hc051bWJlcigpOwogICAgICAgICAgICAgICAgIGRvdWJs
ZSBiID0gcmlnaHQuYXNOdW1iZXIoKTsKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2Rl
LCBqc051bWJlcihhIDwgYiA/IGEgOiAoYiA8PSBhID8gYiA6IGEgKyBiKSkpOworICAgICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGEgPCBiID8gYSA6IChiIDw9
IGEgPyBiIDogYSArIGIpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC02NzMs
MTEgKzY3NSwxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAg
IG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYg
KGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsK
ICAgICAgICAgICAgICAgICBkb3VibGUgYSA9IGxlZnQuYXNOdW1iZXIoKTsKICAgICAgICAgICAg
ICAgICBkb3VibGUgYiA9IHJpZ2h0LmFzTnVtYmVyKCk7Ci0gICAgICAgICAgICAgICAgc2V0Q29u
c3RhbnQobm9kZSwganNOdW1iZXIoYSA+IGIgPyBhIDogKGIgPj0gYSA/IGIgOiBhICsgYikpKTsK
KyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihhID4gYiA/
IGEgOiAoYiA+PSBhID8gYiA6IGEgKyBiKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUp
OwpAQCAtNzAzLDkgKzcwNSw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHkKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAg
ICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAg
ICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgIHNl
dENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGNoaWxkLmFzTnVtYmVyKCkpKTsKKyAgICAgICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihjaGlsZC5hc051bWJlcigpKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC03MjAsNyArNzIyLDcgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgQXJpdGhTcXJ0OiB7
CiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgp
OwogICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAg
c2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoc3FydChjaGlsZC5hc051bWJlcigpKSkpOworICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoc3FydChjaGlsZC5hc051
bWJlcigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpAQCAtNzMwLDcgKzczMiw3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIEFyaXRoRlJvdW5kOiB7
CiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgp
OwogICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAg
c2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNoaWxkLmFzTnVt
YmVyKCkpKSk7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihz
dGF0aWNfY2FzdDxmbG9hdD4oY2hpbGQuYXNOdW1iZXIoKSkpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsK
QEAgLTc0MCw3ICs3NDIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5CiAgICAgY2FzZSBBcml0aFNpbjogewogICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlz
TnVtYmVyKCkpIHsKLSAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHNpbihj
aGlsZC5hc051bWJlcigpKSkpOworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3Vi
bGVOdW1iZXIoc2luKGNoaWxkLmFzTnVtYmVyKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC03
NTAsNyArNzUyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgIGNhc2UgQXJpdGhDb3M6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJl
cigpKSB7Ci0gICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihjb3MoY2hpbGQu
YXNOdW1iZXIoKSkpKTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVt
YmVyKGNvcyhjaGlsZC5hc051bWJlcigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpAQCAtNzY5LDcg
Kzc3MSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgICAgICBj
YXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICBjYXNlIEludDMyVXNlOgotICAgICAgICAgICAg
Y2FzZSBOdW1iZXJVc2U6CisgICAgICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAg
ICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgogICAgICAg
ICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0VmFsdWUuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Nyw4ICs2Nyw2
IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgSlMKICAgICB9CiAgICAg
CiAgICAgbV90eXBlID0gc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpOwotICAgIGlmIChtX3R5
cGUgPT0gU3BlY0ludDUyQXNEb3VibGUpCi0gICAgICAgIG1fdHlwZSA9IFNwZWNJbnQ1MjsKICAg
ICBtX3ZhbHVlID0gdmFsdWU7CiAgICAgCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtODUs
NiArODMsNDEgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBTdAogICAg
IGNoZWNrQ29uc2lzdGVuY3koKTsKIH0KIAordm9pZCBBYnN0cmFjdFZhbHVlOjpmaXhUeXBlRm9y
UmVwcmVzZW50YXRpb24oTm9kZUZsYWdzIHJlcHJlc2VudGF0aW9uKQoreworICAgIGlmIChyZXBy
ZXNlbnRhdGlvbiA9PSBOb2RlUmVzdWx0RG91YmxlKSB7CisgICAgICAgIGlmIChtX3ZhbHVlKSB7
CisgICAgICAgICAgICBBU1NFUlQobV92YWx1ZS5pc051bWJlcigpKTsKKyAgICAgICAgICAgIGlm
IChtX3ZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICBtX3ZhbHVlID0ganNEb3VibGVO
dW1iZXIobV92YWx1ZS5hc051bWJlcigpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobV90eXBl
ICYgU3BlY01hY2hpbmVJbnQpIHsKKyAgICAgICAgICAgIG1fdHlwZSAmPSB+U3BlY01hY2hpbmVJ
bnQ7CisgICAgICAgICAgICBtX3R5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7CisgICAgICAgIH0K
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3R5cGUgJiB+U3BlY0RvdWJsZSkpOworICAgIH0g
ZWxzZSBpZiAocmVwcmVzZW50YXRpb24gPT0gTm9kZVJlc3VsdEludDUyKSB7CisgICAgICAgIGlm
IChtX3R5cGUgJiBTcGVjSW50NTJBc0RvdWJsZSkgeworICAgICAgICAgICAgbV90eXBlICY9IH5T
cGVjSW50NTJBc0RvdWJsZTsKKyAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTI7CisgICAg
ICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3R5cGUgJiB+U3BlY01hY2hpbmVJbnQp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobV90eXBlICYgU3BlY0ludDUyKSB7CisgICAg
ICAgICAgICBtX3R5cGUgJj0gflNwZWNJbnQ1MjsKKyAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVj
SW50NTJBc0RvdWJsZTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fdHlw
ZSAmIH5TcGVjQnl0ZWNvZGVUb3ApKTsKKyAgICB9CisgICAgCisgICAgY2hlY2tDb25zaXN0ZW5j
eSgpOworfQorCit2b2lkIEFic3RyYWN0VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihO
b2RlKiBub2RlKQoreworICAgIGZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihub2RlLT5yZXN1bHQo
KSk7Cit9CisKIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKEdyYXBoJiBn
cmFwaCwgY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikKIHsKICAgICBpZiAoaXNDbGVhcigpKQpA
QCAtMjQ0LDYgKzI3Nyw4IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0ZW5jeSgp
IGMKICAgICAKICAgICBpZiAoISFtX3ZhbHVlKSB7CiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5
cGUgPSBtX3R5cGU7CisgICAgICAgIC8vIFRoaXMgcmVsYXhlcyB0aGUgYXNzZXJ0aW9uIGJlbG93
IGEgYml0LCBzaW5jZSB3ZSBkb24ndCBrbm93IHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUKKyAg
ICAgICAgLy8gbm9kZS4KICAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NTIpCiAgICAgICAgICAg
ICB0eXBlIHw9IFNwZWNJbnQ1MkFzRG91YmxlOwogICAgICAgICBBU1NFUlQobWVyZ2VTcGVjdWxh
dGlvbnModHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUobV92YWx1ZSkpID09IHR5cGUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJldmlz
aW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBA
CiAKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJERkdGaWx0cmF0aW9uUmVz
dWx0LmgiCisjaW5jbHVkZSAiREZHTm9kZUZsYWdzLmgiCiAjaW5jbHVkZSAiREZHU3RydWN0dXJl
QWJzdHJhY3RWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIlNwZWN1bGF0
ZWRUeXBlLmgiCkBAIC0zOSw2ICs0MCw3IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKIGNsYXNzIEdyYXBoOworc3RydWN0IE5vZGU7CiAKIHN0cnVjdCBBYnN0cmFjdFZhbHVl
IHsKICAgICBBYnN0cmFjdFZhbHVlKCkKQEAgLTEyOSw2ICsxMzEsOSBAQCBzdHJ1Y3QgQWJzdHJh
Y3RWYWx1ZSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCisgICAg
dm9pZCBmaXhUeXBlRm9yUmVwcmVzZW50YXRpb24oTm9kZUZsYWdzIHJlcHJlc2VudGF0aW9uKTsK
KyAgICB2b2lkIGZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihOb2RlKik7CisgICAgCiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGUKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
YWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjEwLDcgKzIxMCw2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAg
Ci0gICAgICAgIGNhc2UgSWRlbnRpdHk6IAogICAgICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOiB7
CiAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhmbGFncyk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTM3OCw2ICszNzcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBJZGVudGl0eTog
CisgICAgICAgICAgICAvLyBUaGlzIHdvdWxkIGJlIHRyaXZpYWwgdG8gaGFuZGxlIGJ1dCB3ZSBq
dXN0IGFzc2VydCB0aGF0IHdlIGNhbm5vdCBzZWUgdGhlc2UgeWV0LgorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgCiAgICAgICAgIC8vIE5vdGU6IEFyaXRoU3FydCwgQXJpdGhTaW4sIGFuZCBBcml0aENvcyBh
bmQgb3RoZXIgbWF0aCBpbnRyaW5zaWNzIGRvbid0IGhhdmUgc3BlY2lhbAogICAgICAgICAvLyBy
dWxlcyBpbiBoZXJlIGJlY2F1c2UgdGhleSBhcmUgYWx3YXlzIGZvbGxvd2VkIGJ5IFBoYW50b21z
IHRvIHNpZ25pZnkgdGhhdCBpZiB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAog
I2luY2x1ZGUgIkRGR0JyYW5jaERpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkRGR0ZsdXNoZWRBdC5o
IgogI2luY2x1ZGUgIkRGR05vZGUuaCIKLSNpbmNsdWRlICJERkdWYXJpYWRpY0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC05OCwxNSArOTcsMTEgQEAgc3RydWN0IEJhc2ljQmxvY2sg
OiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIHZvaWQgcmVtb3ZlUHJlZGVjZXNzb3IoQmFzaWNC
bG9jayogYmxvY2spOwogICAgIHZvaWQgcmVwbGFjZVByZWRlY2Vzc29yKEJhc2ljQmxvY2sqIGZy
b20sIEJhc2ljQmxvY2sqIHRvKTsKIAotI2RlZmluZSBERkdfREVGSU5FX0FQUEVORF9OT0RFKHRl
bXBsYXRlUHJlLCB0ZW1wbGF0ZVBvc3QsIHR5cGVQYXJhbXMsIHZhbHVlUGFyYW1zQ29tbWEsIHZh
bHVlUGFyYW1zLCB2YWx1ZUFyZ3MpIFwKLSAgICB0ZW1wbGF0ZVByZSB0eXBlUGFyYW1zIHRlbXBs
YXRlUG9zdCBOb2RlKiBhcHBlbmROb2RlKEdyYXBoJiwgU3BlY3VsYXRlZFR5cGUgdmFsdWVQYXJh
bXNDb21tYSB2YWx1ZVBhcmFtcyk7Ci0gICAgREZHX1ZBUklBRElDX1RFTVBMQVRFX0ZVTkNUSU9O
KERGR19ERUZJTkVfQVBQRU5EX05PREUpCi0jdW5kZWYgREZHX0RFRklORV9BUFBFTkRfTk9ERQot
ICAgIAotI2RlZmluZSBERkdfREVGSU5FX0FQUEVORF9OT0RFKHRlbXBsYXRlUHJlLCB0ZW1wbGF0
ZVBvc3QsIHR5cGVQYXJhbXMsIHZhbHVlUGFyYW1zQ29tbWEsIHZhbHVlUGFyYW1zLCB2YWx1ZUFy
Z3MpIFwKLSAgICB0ZW1wbGF0ZVByZSB0eXBlUGFyYW1zIHRlbXBsYXRlUG9zdCBOb2RlKiBhcHBl
bmROb25UZXJtaW5hbChHcmFwaCYsIFNwZWN1bGF0ZWRUeXBlIHZhbHVlUGFyYW1zQ29tbWEgdmFs
dWVQYXJhbXMpOwotICAgIERGR19WQVJJQURJQ19URU1QTEFURV9GVU5DVElPTihERkdfREVGSU5F
X0FQUEVORF9OT0RFKQotI3VuZGVmIERGR19ERUZJTkVfQVBQRU5EX05PREUKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBQYXJhbXM+CisgICAgTm9kZSogYXBwZW5kTm9kZShHcmFwaCYsIFNwZWN1
bGF0ZWRUeXBlLCBQYXJhbXMuLi4pOworICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFBh
cmFtcz4KKyAgICBOb2RlKiBhcHBlbmROb25UZXJtaW5hbChHcmFwaCYsIFNwZWN1bGF0ZWRUeXBl
LCBQYXJhbXMuLi4pOwogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9ja0lu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2lj
QmxvY2tJbmxpbmVzLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFzaWNCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMjUgKzMzLDIx
IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotI2RlZmluZSBERkdfREVG
SU5FX0FQUEVORF9OT0RFKHRlbXBsYXRlUHJlLCB0ZW1wbGF0ZVBvc3QsIHR5cGVQYXJhbXMsIHZh
bHVlUGFyYW1zQ29tbWEsIHZhbHVlUGFyYW1zLCB2YWx1ZUFyZ3MpIFwKLSAgICB0ZW1wbGF0ZVBy
ZSB0eXBlUGFyYW1zIHRlbXBsYXRlUG9zdCBpbmxpbmUgTm9kZSogQmFzaWNCbG9jazo6YXBwZW5k
Tm9kZShHcmFwaCYgZ3JhcGgsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgdmFsdWVQYXJhbXNDb21tYSB2
YWx1ZVBhcmFtcykgXAotICAgIHsgXAotICAgICAgICBOb2RlKiByZXN1bHQgPSBncmFwaC5hZGRO
b2RlKHR5cGUgdmFsdWVQYXJhbXNDb21tYSB2YWx1ZUFyZ3MpOyBcCi0gICAgICAgIGFwcGVuZChy
ZXN1bHQpOyBcCi0gICAgICAgIHJldHVybiByZXN1bHQ7IFwKLSAgICB9Ci0gICAgREZHX1ZBUklB
RElDX1RFTVBMQVRFX0ZVTkNUSU9OKERGR19ERUZJTkVfQVBQRU5EX05PREUpCi0jdW5kZWYgREZH
X0RFRklORV9BUFBFTkRfTk9ERQotCi0jZGVmaW5lIERGR19ERUZJTkVfQVBQRU5EX05PREUodGVt
cGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXNDb21tYSwgdmFs
dWVQYXJhbXMsIHZhbHVlQXJncykgXAotICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJhbXMgdGVtcGxh
dGVQb3N0IGlubGluZSBOb2RlKiBCYXNpY0Jsb2NrOjphcHBlbmROb25UZXJtaW5hbChHcmFwaCYg
Z3JhcGgsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgdmFsdWVQYXJhbXNDb21tYSB2YWx1ZVBhcmFtcykg
XAotICAgIHsgXAotICAgICAgICBOb2RlKiByZXN1bHQgPSBncmFwaC5hZGROb2RlKHR5cGUgdmFs
dWVQYXJhbXNDb21tYSB2YWx1ZUFyZ3MpOyBcCi0gICAgICAgIGluc2VydEJlZm9yZUxhc3QocmVz
dWx0KTsgXAotICAgICAgICByZXR1cm4gcmVzdWx0OyBcCi0gICAgfQotICAgIERGR19WQVJJQURJ
Q19URU1QTEFURV9GVU5DVElPTihERkdfREVGSU5FX0FQUEVORF9OT0RFKQotI3VuZGVmIERGR19E
RUZJTkVfQVBQRU5EX05PREUKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFtcz4KK05vZGUqIEJh
c2ljQmxvY2s6OmFwcGVuZE5vZGUoR3JhcGgmIGdyYXBoLCBTcGVjdWxhdGVkVHlwZSB0eXBlLCBQ
YXJhbXMuLi4gcGFyYW1zKQoreworICAgIE5vZGUqIHJlc3VsdCA9IGdyYXBoLmFkZE5vZGUodHlw
ZSwgcGFyYW1zLi4uKTsKKyAgICBhcHBlbmQocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJhbXM+CitOb2RlKiBCYXNpY0Jsb2NrOjphcHBl
bmROb25UZXJtaW5hbChHcmFwaCYgZ3JhcGgsIFNwZWN1bGF0ZWRUeXBlIHR5cGUsIFBhcmFtcy4u
LiBwYXJhbXMpCit7CisgICAgTm9kZSogcmVzdWx0ID0gZ3JhcGguYWRkTm9kZSh0eXBlLCBwYXJh
bXMuLi4pOworICAgIGluc2VydEJlZm9yZUxhc3QocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNjcyNzIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzI2Myw4ICszMjYzLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF90b19udW1iZXI6
IHsKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCksCi0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChJZGVudGl0eSwgRWRnZShn
ZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSwgTnVt
YmVyVXNlKSkpOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgYWRkVG9HcmFw
aChQaGFudG9tLCBFZGdlKG5vZGUsIE51bWJlclVzZSkpOworICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgbm9kZSk7CiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF90b19udW1iZXIpOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZp
c2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYxLDI5ICsxNjEsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIAotICAgIE5vZGUqIGlu
dDMyVG9Eb3VibGVDU0UoTm9kZSogbm9kZSkKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBvdGhlck5vZGUg
PSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAob3RoZXJOb2RlID09IG5v
ZGUtPmNoaWxkMSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgc3dp
dGNoIChvdGhlck5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToK
LSAgICAgICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5jaGlsZDEoKS5zYW5pdGl6ZWQoKSA9PSBu
b2RlLT5jaGlsZDEoKS5zYW5pdGl6ZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90
aGVyTm9kZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotICAgIAogICAgIE5vZGUqIGNvbnN0YW50Q1NFKE5vZGUqIG5vZGUp
CiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBlbmRJbmRleEZvclB1cmVDU0UoKTsg
aS0tOykgewogICAgICAgICAgICAgTm9kZSogb3RoZXJOb2RlID0gbV9jdXJyZW50QmxvY2stPmF0
KGkpOwotICAgICAgICAgICAgaWYgKG90aGVyTm9kZS0+b3AoKSAhPSBKU0NvbnN0YW50KQorICAg
ICAgICAgICAgaWYgKG90aGVyTm9kZS0+b3AoKSAhPSBub2RlLT5vcCgpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5j
b25zdGFudE51bWJlcigpICE9IG5vZGUtPmNvbnN0YW50TnVtYmVyKCkpCkBAIC0xMTQ4LDggKzEx
MzAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENvbXBhcmVFcUNvbnN0YW50OgogICAgICAg
ICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICAgICAgY2FzZSBNYWtlUm9wZToKLSAgICAgICAgY2Fz
ZSBJbnQ1MlRvRG91YmxlOgotICAgICAgICBjYXNlIEludDUyVG9WYWx1ZToKKyAgICAgICAgY2Fz
ZSBEb3VibGVSZXA6CisgICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgIGNhc2UgSW50NTJS
ZXA6CiAgICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQocHVyZUNTRShub2Rl
KSk7CkBAIC0xMTc3LDEyICsxMTYwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgotICAg
ICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KGludDMyVG9Eb3VibGVDU0Uobm9k
ZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRD
YWxsZWU6CiAgICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI2MSwxMyArMTIzOCwxNSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOwogICAgICAgICAgICAgTm9kZSogZGF0
YU5vZGUgPSByZXBsYWNlbWVudC0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICAgICAgQVNTRVJU
KGRhdGFOb2RlLT5oYXNSZXN1bHQoKSk7Ci0gICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IEVk
Z2UoZGF0YU5vZGUpOworICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkgPSBkYXRhTm9kZS0+ZGVm
YXVsdEVkZ2UoKTsKICAgICAgICAgICAgIG1fZ3JhcGguZGV0aHJlYWQoKTsKICAgICAgICAgICAg
IG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBEb3VibGVDb25z
dGFudDoKKyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICAgICAgaWYgKGNzZU1v
ZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIC8vIFRoaXMgaXMgc3RyYW5nZSwgYnV0IG5lY2Vzc2FyeS4gU29tZSBwaGFzZXMgd2lsbCBj
b252ZXJ0IG5vZGVzIHRvIGNvbnN0YW50cywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSAiREZHQ29tbW9uLmgiCi0jaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgIkV4
ZWN1dGFibGUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkludHJpbnNp
Yy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJl
dmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAg
ICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBjYXNlIElu
dDUyQ29uc3RhbnQ6CiAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAgICBjYXNlIElkZW50aXR5
OgogICAgIGNhc2UgUGhhbnRvbToKQEAgLTEyMywxNSArMTI1LDE1IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIElzTnVtYmVyOgogICAgIGNhc2Ug
SXNTdHJpbmc6CiAgICAgY2FzZSBMb2dpY2FsTm90OgotICAgIGNhc2UgSW50MzJUb0RvdWJsZToK
ICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgotICAgIGNhc2UgSW50NTJUb0RvdWJsZToK
LSAgICBjYXNlIEludDUyVG9WYWx1ZToKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgY2Fz
ZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAg
Y2FzZSBEb3VibGVBc0ludDMyOgogICAgIGNhc2UgQ2hlY2s6CisgICAgY2FzZSBEb3VibGVSZXA6
CisgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICBjYXNlIEludDUyUmVwOgogICAgICAgICByZXR1cm47
CiAgICAgICAgIAogICAgIGNhc2UgTW92SGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAx
NjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk5LDYgKzI5OSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBBYnN0cmFjdFZhbHVlIG9sZFZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUpOwog
ICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSBjb25zdGFudFZhbHVlOwogICAgICAgICAgICAgY29u
c3RhbnRWYWx1ZS5zZXQobV9ncmFwaCwgdmFsdWUpOworICAgICAgICAgICAgY29uc3RhbnRWYWx1
ZS5maXhUeXBlRm9yUmVwcmVzZW50YXRpb24obm9kZSk7CiAgICAgICAgICAgICBpZiAob2xkVmFs
dWUubWVyZ2UoY29uc3RhbnRWYWx1ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNl
LmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
Q0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NCwxMyArMTk0LDEyIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAg
ICAgICAgICAgIGNhc2UgTW92SGludDogewotICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBub2RlLT5jaGlsZDEoKS0+ZGVmYXVsdFVzZUtp
bmQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKS0+c2hvdWxkR2VuZXJh
dGUoKSkgewogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyha
b21iaWVIaW50KTsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkgPSBFZGdlKCk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhNb3ZIaW50KTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTIy
LDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHdpbGxOb3RIYXZlQ2hlY2soKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzUHJvdmVkKCkgfHwgdXNlS2luZCgpID09IFVu
dHlwZWRVc2U7CisgICAgICAgIHJldHVybiBpc1Byb3ZlZCgpIHx8IHNob3VsZE5vdEhhdmVUeXBl
Q2hlY2sodXNlS2luZCgpKTsKICAgICB9CiAgICAgYm9vbCB3aWxsSGF2ZUNoZWNrKCkgY29uc3QK
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9uc1tpXS5tZXJnZUFyZ3VtZW50
VW5ib3hpbmdBd2FyZW5lc3MoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yIChCbG9j
a0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsg
KytibG9ja0luZGV4KQotICAgICAgICAgICAgICAgIGZpeHVwU2V0TG9jYWxzSW5CbG9jayhtX2dy
YXBoLmJsb2NrKGJsb2NrSW5kZXgpKTsKKyAgICAgICAgICAgICAgICBmaXh1cEdldEFuZFNldExv
Y2Fsc0luQmxvY2sobV9ncmFwaC5ibG9jayhibG9ja0luZGV4KSk7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8
IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkKQEAgLTEyMyw4ICsxMjMsMTAgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAg
ICAgICAgICAgZWxzZSBpZiAobm9kZUNhblNwZWN1bGF0ZUludDMyKG5vZGUtPmFyaXRoTm9kZUZs
YWdzKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tP
dmVyZmxvdyk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkRvT3ZlcmZsb3cpOworICAgICAgICAg
ICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTEzNSwxMCAr
MTM3LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyRXhwZWN0aW5nRGVm
aW5lZChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
ICAgIG5vZGUtPnNldE9wKEFyaXRoQWRkKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZs
YWdzKE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0xNzcsOCArMTgwLDkgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBBcml0aFN1YjogewogICAgICAgICAgICAgaWYgKGF0dGVtcHRU
b01ha2VJbnRlZ2VyQWRkKG5vZGUpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVk
Z2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJs
ZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVz
dWx0RG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
QEAgLTE5NCwxNCArMTk4LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxh
dGVNYWNoaW5lSW50KG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGlmIChieXRlY29kZUNhbklnbm9y
ZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6
Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0
UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIxOCwxNiArMjI0LDE4IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAobV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAg
ICAgICBpZiAoYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxh
Z3MoKSkpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hl
Y2tPdmVyZmxvdyk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBu
b2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3dBbmROZWdhdGl2ZVplcm8pOwor
ICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZml4RWRnZTxOdW1i
ZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTI0NiwyNCArMjU0LDM0IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNo
ZWNrT3ZlcmZsb3dBbmROZWdhdGl2ZVplcm8pOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRoaXMgd2ls
bCBjYXVzZSBjb252ZXJzaW9uIG5vZGVzIHRvIGJlIGluc2VydGVkIGxhdGVyLgorICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAvLyBCdXQgd2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBl
dmVyeXRoaW5nIGlzIHBoYW50b20nZCB1bnRpbCBhZnRlciB0aGUKKyAgICAgICAgICAgICAgICAv
LyBEb3VibGVBc0ludDQyIG5vZGUsIHdoaWNoIG9jY3VycyBhZnRlciB0aGUgRGl2L01vZCBub2Rl
IHRoYXQgdGhlIGNvbnZlcnNpb25zCisgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBpbnNlcmVk
IG9uLgorICAgICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShub2RlLT5jaGlsZDEoKS5u
b2RlKCkpOworICAgICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShub2RlLT5jaGlsZDIo
KS5ub2RlKCkpOwogCiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBkbyByZWYn
aW5nIG9uIHRoZSBjaGlsZHJlbiBiZWNhdXNlIHdlJ3JlIHN0ZWFsaW5nIHRoZW0gZnJvbQogICAg
ICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBkaXZpc2lvbi4KICAgICAgICAgICAgICAgICBO
b2RlKiBuZXdEaXZpc2lvbiA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjRG91YmxlLCAqbm9kZSk7CisgICAgICAgICAg
ICAgICAgbmV3RGl2aXNpb24tPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChEb3VibGVBc0ludDMyKTsKLSAg
ICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5pbml0aWFsaXplKEVkZ2UobmV3RGl2aXNpb24s
IEtub3duTnVtYmVyVXNlKSwgRWRnZSgpLCBFZGdlKCkpOworICAgICAgICAgICAgICAgIG5vZGUt
PmNoaWxkcmVuLmluaXRpYWxpemUoRWRnZShuZXdEaXZpc2lvbiwgRG91YmxlUmVwVXNlKSwgRWRn
ZSgpLCBFZGdlKCkpOwogICAgICAgICAgICAgICAgIGlmIChieXRlY29kZUNhbklnbm9yZU5lZ2F0
aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tP
dmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBm
aXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+
c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgICAgIApAQCAtMjc1LDggKzI5Myw5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTI4Niw3ICszMDUsOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVk
Z2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJs
ZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5v
ZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIApAQCAtMjk0LDcgKzMxNCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQXJpdGhGUm91
bmQ6CiAgICAgICAgIGNhc2UgQXJpdGhTaW46CiAgICAgICAgIGNhc2UgQXJpdGhDb3M6IHsKLSAg
ICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9k
ZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIApAQCAtMzA2LDcgKzMyNyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpCi0g
ICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQog
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTMzNywxNCArMzU4LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoZW5hYmxlSW50NTIoKQogICAgICAgICAgICAgICAgICYmIE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2Rl
LT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+
KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVt
YmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNDAyLDEzICs0MjMs
MTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1
MigpCiAgICAgICAgICAgICAgICAgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChu
b2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAg
ICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZU51bWJlcihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUo
KSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpICYmIG5vZGUtPmNoaWxkMigp
LT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpKSB7CkBAIC01MDEsNyArNTIyLDggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IAotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKKyAgICAg
ICAgICAgIGFycmF5TW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpOworICAgICAgICAgICAgc3dpdGNo
IChhcnJheU1vZGUudHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpTZWxlY3RVc2lu
Z1ByZWRpY3Rpb25zOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6VW5wcm9maWxlZDoKICAgICAg
ICAgICAgIGNhc2UgQXJyYXk6OlVuZGVjaWRlZDoKQEAgLTUyMCw2ICs1NDIsMzAgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAor
ICAgICAgICAgICAgc3dpdGNoIChhcnJheU1vZGUudHlwZSgpKSB7CisgICAgICAgICAgICBjYXNl
IEFycmF5OjpEb3VibGU6CisgICAgICAgICAgICAgICAgaWYgKCFhcnJheU1vZGUuaXNPdXRPZkJv
dW5kcygpKQorICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERv
dWJsZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpG
bG9hdDY0QXJyYXk6CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRE
b3VibGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkgJiYgZW5h
YmxlSW50NTIoKSkKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1
bHRJbnQ1Mik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCkBAIC01NTksMTQgKzYwNSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQzLT5wcmVkaWN0aW9uKCkg
JiBTcGVjSW50NTIpCi0gICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4o
Y2hpbGQzKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4oY2hpbGQz
KTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IEFycmF5OjpEb3VibGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KGNo
aWxkMSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKLSAgICAg
ICAgICAgICAgICBmaXhFZGdlPFJlYWxOdW1iZXJVc2U+KGNoaWxkMyk7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxEb3VibGVSZXBSZWFsVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50OEFycmF5OgogICAgICAgICAgICAgY2Fz
ZSBBcnJheTo6SW50MTZBcnJheToKQEAgLTU4MCwxNSArNjI2LDE1IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgaWYgKGNoaWxkMy0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBl
bHNlIGlmIChjaGlsZDMtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KGNoaWxkMyk7CisgICAgICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihjaGlsZDMpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQzMkFycmF5OgogICAgICAg
ICAgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5OgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8
S25vd25DZWxsVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KGNoaWxkMik7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KGNoaWxkMyk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KGNoaWxkMyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAg
ICAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgpAQCAtNjMwLDcgKzY3Niw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8UmVhbE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwUmVhbFVzZT4obm9kZS0+Y2hpbGQyKCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGln
dW91czoKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZToKQEAgLTY2Myw3ICs3
MDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4o
bm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZU51bWJlcigpKQotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKIAogICAgICAgICAgICAgTm9kZSogbG9naWNhbE5vdCA9IG5vZGUt
PmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAgICAgIGlmIChsb2dpY2FsTm90LT5vcCgpID09IExv
Z2ljYWxOb3QpIHsKQEAgLTc2MCw3ICs4MDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgb3BlcmFuZEluZGV4ID0gMDsgb3BlcmFuZEluZGV4
IDwgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgKytvcGVyYW5kSW5kZXgpCi0gICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8UmVhbE51bWJlclVzZT4obV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW25vZGUt
PmZpcnN0Q2hpbGQoKSArIG9wZXJhbmRJbmRleF0pOworICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPERvdWJsZVJlcFJlYWxVc2U+KG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJz
dENoaWxkKCkgKyBvcGVyYW5kSW5kZXhdKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBj
YXNlIEFMTF9BUlJBWV9TVE9SQUdFX0lOREVYSU5HX1RZUEVTOgpAQCAtOTM2LDcgKzk4Miw2IEBA
IHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFBoYW50b206Ci0gICAgICAgIGNh
c2UgSWRlbnRpdHk6CiAgICAgICAgIGNhc2UgQ2hlY2s6IHsKICAgICAgICAgICAgIHN3aXRjaCAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgICAgICBjYXNlIE51bWJlclVzZToK
QEAgLTk2MSwxNiArMTAwNiwxOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVGllclVw
SW5Mb29wOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgICAgIGNhc2Ug
Q2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKLSAgICAgICAgY2FzZSBJbnQ1MlRvRG91YmxlOgotICAg
ICAgICBjYXNlIEludDUyVG9WYWx1ZToKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoK
ICAgICAgICAgY2FzZSBDaGVja0FycmF5OgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAg
ICAgICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICAgICAgY2FzZSBEb3VibGVB
c0ludDMyOgotICAgICAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAgICAgIGNhc2UgVmFsdWVU
b0ludDMyOgogICAgICAgICBjYXNlIEhhcmRQaGFudG9tOiAvLyBIYXJkUGhhbnRvbSB3b3VsZCBi
ZSB0cml2aWFsIHRvIGhhbmRsZSBidXQgYW55d2F5IHdlIGFzc2VydCB0aGF0IHdlIHdvbid0IHNl
ZSBpdCBoZXJlIHlldC4KKyAgICAgICAgY2FzZSBEb3VibGVSZXA6CisgICAgICAgIGNhc2UgSW50
NTJSZXA6CisgICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgIGNhc2UgRG91YmxlQ29uc3Rh
bnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKKyAgICAgICAgY2FzZSBJZGVudGl0eTog
Ly8gVGhpcyBzaG91bGQgaGF2ZSBiZWVuIGNsZWFuZWQgdXAuCiAgICAgICAgICAgICAvLyBUaGVz
ZSBhcmUganVzdCBub2RlcyB0aGF0IHdlIGRvbid0IGN1cnJlbnRseSBleHBlY3QgdG8gc2VlIGR1
cmluZyBmaXh1cC4KICAgICAgICAgICAgIC8vIElmIHdlIGV2ZXIgd2FudGVkIHRvIGluc2VydCB0
aGVtIHByaW9yIHRvIGZpeHVwLCB0aGVuIHdlIGp1c3QgaGF2ZSB0byBjcmVhdGUKICAgICAgICAg
ICAgIC8vIGZpeHVwIHJ1bGVzIGZvciB0aGVtLgpAQCAtMTMxMiw3ICsxMzYwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIHZvaWQgZml4dXBTZXRM
b2NhbHNJbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHZvaWQgZml4dXBHZXRBbmRTZXRM
b2NhbHNJbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQogICAgIHsKICAgICAgICAgaWYgKCFibG9j
aykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMjAsMjggKzEzNjgsNDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwogICAgICAgICBmb3IgKG1faW5kZXhJbkJsb2NrID0g
MDsgbV9pbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK21faW5kZXhJbkJsb2NrKSB7CiAg
ICAgICAgICAgICBOb2RlKiBub2RlID0gbV9jdXJyZW50Tm9kZSA9IGJsb2NrLT5hdChtX2luZGV4
SW5CbG9jayk7Ci0gICAgICAgICAgICBpZiAobm9kZS0+b3AoKSAhPSBTZXRMb2NhbCkKKyAgICAg
ICAgICAgIGlmIChub2RlLT5vcCgpICE9IFNldExvY2FsICYmIG5vZGUtPm9wKCkgIT0gR2V0TG9j
YWwpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KTsKLSAgICAgICAgICAgIHN3aXRjaCAodmFyaWFibGUtPmZsdXNoRm9ybWF0KCkpIHsKLSAgICAg
ICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIEZsdXNoZWREb3VibGU6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1i
ZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgRmx1c2hlZEludDMyOgotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgRmx1c2hlZEludDUyOgotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAg
Y2FzZSBHZXRMb2NhbDoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhcmlhYmxlLT5mbHVzaEZv
cm1hdCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgorICAgICAgICAg
ICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDUyOgorICAg
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPEJvb2xlYW5Vc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGNhc2UgU2V0TG9jYWw6CisgICAgICAgICAgICAgICAgc3dpdGNoICh2YXJpYWJs
ZS0+Zmx1c2hGb3JtYXQoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRmx1c2hl
ZERvdWJsZToKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSBGbHVzaGVkSW50MzI6CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBGbHVzaGVkSW50NTI6CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAgICAgICAgZml4
RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDY3LDcgKzE1
MzYsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQg
fD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIE51bWJlclVzZToKLSAgICAgICAgY2FzZSBSZWFsTnVtYmVy
VXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBS
ZWFsVXNlOgogICAgICAgICAgICAgaWYgKHZhcmlhYmxlLT5kb3VibGVGb3JtYXRTdGF0ZSgpID09
IFVzaW5nRG91YmxlRm9ybWF0KQogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5n
ZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTQ3Niw3ICsxNTQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICB8fCBpc0Jvb2xlYW5TcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkKICAgICAg
ICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJv
Zml0YWJsZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBN
YWNoaW5lSW50VXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgaWYg
KGlzTWFjaGluZUludFNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQogICAgICAg
ICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9m
aXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTUxOSw5ICsxNTg5
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIFVzZUtpbmQgdXNlS2luZDsKICAgICAg
ICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkKLSAgICAgICAgICAgIHVz
ZUtpbmQgPSBNYWNoaW5lSW50VXNlOworICAgICAgICAgICAgdXNlS2luZCA9IEludDUyUmVwVXNl
OwogICAgICAgICBlbHNlIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkKLSAgICAg
ICAgICAgIHVzZUtpbmQgPSBOdW1iZXJVc2U7CisgICAgICAgICAgICB1c2VLaW5kID0gRG91Ymxl
UmVwVXNlOwogICAgICAgICBlbHNlIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkp
CiAgICAgICAgICAgICB1c2VLaW5kID0gQm9vbGVhblVzZTsKICAgICAgICAgZWxzZQpAQCAtMTU4
OSw5ICsxNjU5LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlm
IChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAgICAgICAg
ICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
Zml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhF
ZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPElu
dDUyUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1v
ZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5v
ZGVSZXN1bHRJbnQ1Mik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTE3MjQsMTA5ICsxNzk1LDE1MCBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKG1f
aW5kZXhJbkJsb2NrID0gMDsgbV9pbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK21faW5k
ZXhJbkJsb2NrKSB7CiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gYmxvY2stPmF0KG1faW5k
ZXhJbkJsb2NrKTsKICAgICAgICAgICAgIGFkZFBoYW50b21zSWZOZWNlc3NhcnkoKTsKLSAgICAg
ICAgICAgIGlmIChtX2N1cnJlbnROb2RlLT5jb250YWluc01vdkhpbnQoKSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHRyeVRvUmVsYXhSZXByZXNlbnRhdGlvbihtX2N1
cnJlbnROb2RlKTsKICAgICAgICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgs
IG1fY3VycmVudE5vZGUsIGluamVjdFR5cGVDb252ZXJzaW9uc0ZvckVkZ2UpOwogICAgICAgICB9
CiAgICAgICAgIGNsZWFyUGhhbnRvbXNBdEVuZCgpOwogICAgICAgICBtX2luc2VydGlvblNldC5l
eGVjdXRlKGJsb2NrKTsKICAgICB9CiAgICAgCisgICAgdm9pZCB0cnlUb1JlbGF4UmVwcmVzZW50
YXRpb24oTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIC8vIFNvbWUgb3BlcmF0aW9ucyBtYXkg
YmUgYWJsZSB0byBvcGVyYXRlIG1vcmUgZWZmaWNpZW50bHkgb3ZlciBsb29zZXIgcmVwcmVzZW50
YXRpb25zLgorICAgICAgICAvLyBJZGVudGlmeSB0aG9zZSBoZXJlLiBUaGlzIGF2b2lkcyBpbnNl
cnRpbmcgYSByZWR1bmRhbnQgcmVwcmVzZW50YXRpb24gY29udmVyc2lvbi4KKyAgICAgICAgLy8g
QWxzbywgZm9yIHNvbWUgb3BlcmF0aW9ucywgbGlrZSBNb3ZIaW50LCB0aGlzIGlzIGEgbmVjZXNz
YXJ5IG9wdGltaXphdGlvbjogaW5zZXJ0aW5nCisgICAgICAgIC8vIGFuIG90aGVyd2lzZS1kZWFk
IGNvbnZlcnNpb24ganVzdCBmb3IgYSBNb3ZIaW50IHdvdWxkIGJyZWFrIE9TUidzIHVuZGVyc3Rh
bmRpbmcgb2YKKyAgICAgICAgLy8gdGhlIElSLgorICAgICAgICAKKyAgICAgICAgc3dpdGNoIChu
b2RlLT5vcCgpKSB7CisgICAgICAgIGNhc2UgTW92SGludDoKKyAgICAgICAgY2FzZSBQaGFudG9t
OgorICAgICAgICBjYXNlIENoZWNrOgorICAgICAgICBjYXNlIEhhcmRQaGFudG9tOgorICAgICAg
ICAgICAgREZHX05PREVfRE9fVE9fQ0hJTERSRU4obV9ncmFwaCwgbV9jdXJyZW50Tm9kZSwgZml4
RWRnZVJlcHJlc2VudGF0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisg
ICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UKKyAgICAgICAgICAgICAgICAmJiAhbm9kZS0+Y2hp
bGQxKCktPmhhc0RvdWJsZVJlc3VsdCgpKSB7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQx
KCkuc2V0VXNlS2luZChOdW1iZXJVc2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQg
Zml4RWRnZVJlcHJlc2VudGF0aW9uKE5vZGUqLCBFZGdlJiBlZGdlKQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChlZGdlLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAg
ICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgorICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0Rv
dWJsZVJlc3VsdCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiAoZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBlZGdl
LnNldFVzZUtpbmQoSW50NTJSZXBVc2UpOworICAgICAgICAgICAgZWxzZSBpZiAoZWRnZS51c2VL
aW5kKCkgPT0gRG91YmxlUmVwVXNlKQorICAgICAgICAgICAgICAgIGVkZ2Uuc2V0VXNlS2luZChO
dW1iZXJVc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgd2UgY2FuIHJlYWxseSBkby4K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgVW50eXBlZFVz
ZToKKyAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91
YmxlUmVzdWx0KCkpCisgICAgICAgICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKERvdWJsZVJlcFVz
ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAg
ICAgICAgICAgIGVkZ2Uuc2V0VXNlS2luZChJbnQ1MlJlcFVzZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgdm9pZCBpbmplY3RUeXBlQ29udmVyc2lvbnNGb3JF
ZGdlKE5vZGUqIG5vZGUsIEVkZ2UmIGVkZ2UpCiAgICAgewogICAgICAgICBBU1NFUlQobm9kZSA9
PSBtX2N1cnJlbnROb2RlKTsKICAgICAgICAgCi0gICAgICAgIGlmIChpc0RvdWJsZShlZGdlLnVz
ZUtpbmQoKSkpIHsKLSAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZv
ckFyaXRobWV0aWMoKSkgewotICAgICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdl
Lm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2ssIFNwZWNJbnQ1MkFzRG91YmxlLCBJbnQzMlRvRG91YmxlLAotICAgICAgICAgICAg
ICAgICAgICBub2RlLT5vcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChlZGdl
LnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgY2FzZSBE
b3VibGVSZXBSZWFsVXNlOiB7CisgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0
KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlm
IChlbmFibGVJbnQ1MigpICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkgewot
ICAgICAgICAgICAgICAgIC8vIE1ha2UgYWxsIGRvdWJsZSB1c2VzIG9mIGludDUyIHZhbHVlcyBo
YXZlIGFuIGludGVybWVkaWF0ZSBJbnQ1MlRvRG91YmxlLgotICAgICAgICAgICAgICAgIC8vIFRo
aXMgaXMgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBJbnQ1MlRvVmFsdWUgKHNlZSBiZWxvdykgZXhj
ZXB0IHRoYXQKLSAgICAgICAgICAgICAgICAvLyBJbnQ4VG9Eb3VibGUgd2lsbCBjb252ZXJ0IGlu
dDUyJ3MgdGhhdCBmaXQgaW4gYW4gaW50MzIgaW50byBhIGRvdWJsZQotICAgICAgICAgICAgICAg
IC8vIHJhdGhlciB0aGFuIHRyeWluZyB0byBjcmVhdGUgYSBib3hlZCBpbnQzMiBsaWtlIEludDUy
VG9WYWx1ZSBkb2VzLgotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGFkZFJlcXVp
cmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNJbnQ1MkFzRG91YmxlLCBJbnQ1MlRvRG91YmxlLAotICAgICAgICAgICAgICAg
ICAgICBub2RlLT5vcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwotICAgICAg
ICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1bHQpOwotICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7CisKKyAgICAgICAg
ICAgIE5vZGUqIHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChlZGdlLT5oYXNJbnQ1MlJlc3VsdCgp
KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
KyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MkFzRG91YmxlLCBE
b3VibGVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5v
ZGUoKSwgSW50NTJSZXBVc2UpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAg
ICAgbV9pbmRleEluQmxvY2ssIFNwZWNEb3VibGUsIERvdWJsZVJlcCwgbm9kZS0+b3JpZ2luLAor
ICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGVuYWJsZUludDUyKCkg
JiYgZWRnZS51c2VLaW5kKCkgIT0gTWFjaGluZUludFVzZQotICAgICAgICAgICAgJiYgZWRnZS0+
c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpICYmICFlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQz
MigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBtYWtlIGFsbCBub24taW50NTIgdXNlcyBvZiBpbnQ1
MiB2YWx1ZXMgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgSW50NTJUb1ZhbHVlCi0gICAgICAgICAgICAv
LyBub2RlIHRvIGVuc3VyZSB0aGF0IHdlIGhhbmRsZSB0aGlzIHByb3Blcmx5OgotICAgICAgICAg
ICAgLy8KLSAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ1MgotICAgICAgICAgICAgLy8gYjogQXJp
dGhBZGQoQGEsIC4uLikKLSAgICAgICAgICAgIC8vIGM6IENhbGwoLi4uLCBAYSkKLSAgICAgICAg
ICAgIC8vIGQ6IEFyaXRoQWRkKEBhLCAuLi4pCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAg
Ly8gV2l0aG91dCBhbiBpbnRlcm1lZGlhdGUgbm9kZSBhbmQganVzdCBsYWJlbGluZyB0aGUgdXNl
cywgd2Ugd2lsbCBnZXQ6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29tZUlu
dDUyCi0gICAgICAgICAgICAvLyBiOiBBcml0aEFkZChJbnQ1MjpAYSwgLi4uKQotICAgICAgICAg
ICAgLy8gYzogQ2FsbCguLi4sIFVudHlwZWQ6QGEpCi0gICAgICAgICAgICAvLyBkOiBBcml0aEFk
ZChJbnQ1MjpAYSwgLi4uKQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIEFuZCBub3cg
dGhlIGMtPlVudHlwZWQ6QGEgZWRnZSB3aWxsIGJveCB0aGUgdmFsdWUgb2YgQGEgaW50byBhIGRv
dWJsZS4gVGhpcwotICAgICAgICAgICAgLy8gaXMgYmFkLCBiZWNhdXNlIG5vdyB0aGUgZC0+SW50
NTI6QGEgZWRnZSB3aWxsIGVpdGhlciBoYXZlIHRvIGRvIGRvdWJsZS10by1pbnQKLSAgICAgICAg
ICAgIC8vIGNvbnZlcnNpb25zLCBvciB3aWxsIGhhdmUgdG8gT1NSIGV4aXQgdW5jb25kaXRpb25h
bGx5LiBBbHRlcm5hdGl2ZWx5IHdlIGNvdWxkCi0gICAgICAgICAgICAvLyBoYXZlIHRoZSBjLT5V
bnR5cGVkOkBhIGVkZ2UgYm94IHRoZSB2YWx1ZSBieSBjb3B5aW5nIHJhdGhlciB0aGFuIGluLXBs
YWNlLgotICAgICAgICAgICAgLy8gQnV0IHRoZXNlIGJveGluZ3MgYXJlIGFsc28gY29zdGx5IHNv
IHRoaXMgd291bGRuJ3QgYmUgZ3JlYXQuCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8g
VGhlIHNvbHV0aW9uIHdlIHVzZSBpcyB0byBhbHdheXMgaGF2ZSBub24tSW50NTIgdXNlcyBvZiBw
cmVkaWN0ZWQgSW50NTIncyB1c2UKLSAgICAgICAgICAgIC8vIGFuIGludGVydmVuaW5nIEludDUy
VG9WYWx1ZSBub2RlOgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ1
MgotICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoSW50NTI6QGEsIC4uLikKLSAgICAgICAgICAg
IC8vIHg6IEludDUyVG9WYWx1ZShJbnQ1MjpAYSkKLSAgICAgICAgICAgIC8vIGM6IENhbGwoLi4u
LCBVbnR5cGVkOkB4KQotICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoSW50NTI6QGEsIC4uLikK
LSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBOb3RlIHRoYXQgZXZlbiBpZiB3ZSBoYWQg
bXVsdGlwbGUgbm9uLWludDUyIHVzZXMgb2YgQGEsIHRoZSBtdWx0aXBsZQotICAgICAgICAgICAg
Ly8gSW50NTJUb1ZhbHVlJ3Mgd291bGQgZ2V0IENTRSdkIHRvZ2V0aGVyLiBTbyB0aGUgYm94aW5n
IHdvdWxkIG9ubHkgaGFwcGVuIG9uY2UuCi0gICAgICAgICAgICAvLyBBdCB0aGUgc2FtZSB0aW1l
LCBAYSB3b3VsZCBjb250aW51ZSB0byBiZSByZXByZXNlbnRlZCBhcyBhIG5hdGl2ZSBpbnQ1Mi4K
LSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBBbiBhbHRlcm5hdGl2ZSB3b3VsZCBoYXZl
IGJlZW4gdG8gaW5zZXJ0IFRvTmF0aXZlSW50NTIgbm9kZXMgb24gaW50NTIgdXNlcyBvZgotICAg
ICAgICAgICAgLy8gaW50NTIncy4gVGhpcyB3b3VsZCBoYXZlIGhhbmRsZWQgdGhlIGFib3ZlIGV4
YW1wbGUgYnV0IHdvdWxkIGZhbGwgb3ZlciBmb3I6Ci0gICAgICAgICAgICAvLwotICAgICAgICAg
ICAgLy8gYTogU29tZUludDUyCi0gICAgICAgICAgICAvLyBiOiBDYWxsKC4uLiwgQGEpCi0gICAg
ICAgICAgICAvLyBjOiBBcml0aEFkZChAYSwgLi4uKQotICAgICAgICAgICAgLy8KLSAgICAgICAg
ICAgIC8vIEJ1dCB0aGUgc29sdXRpb24gd2UgdXNlIGhhbmRsZXMgdGhlIGFib3ZlIGdyYWNlZnVs
bHkuCisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAg
ICAgaWYgKGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7
Ci0gICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAot
ICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NTIsIEludDUyVG9WYWx1ZSwK
LSAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIFVudHlwZWRV
c2UpKTsKKworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKGVkZ2Ut
Pmhhc0RvdWJsZVJlc3VsdCgpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyB3aWxsIG5ldmVy
IGhhcHBlbi4KKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgfSBlbHNlIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRo
bWV0aWMoKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIsIElu
dDUyUmVwLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2Rl
KCksIEludDMyVXNlKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8v
IFRoaXMgaXMgb25seSBoZXJlIGZvciBkZWFsaW5nIHdpdGggY29uc3RhbnRzLgorICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UtPm9wKCkgPT0gSlNDb25zdGFudCk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAg
ICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNNYWNoaW5lSW50LCBJbnQ1MkNvbnN0YW50LCBu
b2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhlZGdlLT5jb25zdGFudE51
bWJlcigpKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShyZXN1
bHQpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OiB7CisgICAgICAgICAgICBpZiAoIWVkZ2Ut
Pmhhc0RvdWJsZVJlc3VsdCgpICYmICFlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50
b20oZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBOb2RlKiByZXN1bHQ7
CisgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpIHsKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAg
ICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0RvdWJsZSwgVmFsdWVSZXAsIG5vZGUtPm9yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgRG91YmxlUmVwVXNlKSk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVj
SW50MzIgfCBTcGVjSW50NTJBc0RvdWJsZSwgVmFsdWVSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgSW50NTJSZXBVc2UpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSB9CiAgICAgfQogICAgIAogICAgIHZvaWQgYWRk
UmVxdWlyZWRQaGFudG9tKE5vZGUqIG5vZGUpCiAgICAgewotICAgICAgICBpZiAoIW1fY29kZU9y
aWdpbk9mUGhhbnRvbXMpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3JlcXVpcmVkUGhhbnRvbXMu
aXNFbXB0eSgpKTsKLSAgICAgICAgICAgIG1fY29kZU9yaWdpbk9mUGhhbnRvbXMgPSBtX2N1cnJl
bnROb2RlLT5vcmlnaW4uZm9yRXhpdDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFT
U0VSVCghbV9yZXF1aXJlZFBoYW50b21zLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICBBU1NFUlQo
bV9jb2RlT3JpZ2luT2ZQaGFudG9tcyA9PSBtX2N1cnJlbnROb2RlLT5vcmlnaW4uZm9yRXhpdCk7
Ci0gICAgICAgIH0KLSAgICAgICAgCiAgICAgICAgIG1fcmVxdWlyZWRQaGFudG9tcy5hcHBlbmQo
bm9kZSk7CiAgICAgfQogCkBAIC0xODM1LDE5ICsxOTQ3LDE0IEBAIHByaXZhdGU6CiAgICAgICAg
IGlmIChtX3JlcXVpcmVkUGhhbnRvbXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoISFtX2NvZGVPcmlnaW5PZlBoYW50b21z
KTsKLSAgICAgICAgCi0gICAgICAgIGlmIChtX2N1cnJlbnROb2RlLT5vcmlnaW4uZm9yRXhpdCA9
PSBtX2NvZGVPcmlnaW5PZlBoYW50b21zKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9yZXF1aXJlZFBoYW50b21zLnNpemUoKTsgaS0t
OykgeworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fcmVxdWlyZWRQaGFudG9tc1tpXTsKICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgbV9p
bmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBOb2RlT3JpZ2luKG1fY29kZU9yaWdpbk9m
UGhhbnRvbXMpLAotICAgICAgICAgICAgICAgIEVkZ2UobV9yZXF1aXJlZFBoYW50b21zW2ldLCBV
bnR5cGVkVXNlKSk7CisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBQ
aGFudG9tLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgbm9kZS0+ZGVm
YXVsdEVkZ2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fcmVxdWlyZWRQaGFu
dG9tcy5yZXNpemUoMCk7Ci0gICAgICAgIG1fY29kZU9yaWdpbk9mUGhhbnRvbXMgPSBDb2RlT3Jp
Z2luKCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY2xlYXJQaGFudG9tc0F0RW5kKCkKQEAgLTE4
NjMsNyArMTk3MCw2IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY3NzgKICAgICAgICAgCiAgICAgICAgIG1fcmVxdWlyZWRQ
aGFudG9tcy5yZXNpemUoMCk7Ci0gICAgICAgIG1fY29kZU9yaWdpbk9mUGhhbnRvbXMgPSBDb2Rl
T3JpZ2luKCk7CiAgICAgfQogICAgIAogICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7CkBAIC0xODcx
LDcgKzE5NzcsNiBAQCBwcml2YXRlOgogICAgIE5vZGUqIG1fY3VycmVudE5vZGU7CiAgICAgSW5z
ZXJ0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OwogICAgIGJvb2wgbV9wcm9maXRhYmlsaXR5Q2hhbmdl
ZDsKLSAgICBDb2RlT3JpZ2luIG1fY29kZU9yaWdpbk9mUGhhbnRvbXM7CiAgICAgVmVjdG9yPE5v
ZGUqLCAzPiBtX3JlcXVpcmVkUGhhbnRvbXM7CiB9OwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02
Miw3ICs2Miw3IEBAIGlubGluZSBOb2RlRmxhZ3MgcmVzdWx0Rm9yKEZsdXNoRm9ybWF0IGYKICAg
ICBjYXNlIEZsdXNoZWRJbnQ1MjoKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRJbnQ1MjsKICAg
ICBjYXNlIEZsdXNoZWREb3VibGU6Ci0gICAgICAgIHJldHVybiBOb2RlUmVzdWx0TnVtYmVyOwor
ICAgICAgICByZXR1cm4gTm9kZVJlc3VsdERvdWJsZTsKICAgICBjYXNlIEZsdXNoZWRCb29sZWFu
OgogICAgICAgICByZXR1cm4gTm9kZVJlc3VsdEJvb2xlYW47CiAgICAgfQpAQCAtODMsOSArODMs
OSBAQCBpbmxpbmUgVXNlS2luZCB1c2VLaW5kRm9yKEZsdXNoRm9ybWF0IGZvCiAgICAgY2FzZSBG
bHVzaGVkSW50MzI6CiAgICAgICAgIHJldHVybiBJbnQzMlVzZTsKICAgICBjYXNlIEZsdXNoZWRJ
bnQ1MjoKLSAgICAgICAgcmV0dXJuIE1hY2hpbmVJbnRVc2U7CisgICAgICAgIHJldHVybiBJbnQ1
MlJlcFVzZTsKICAgICBjYXNlIEZsdXNoZWREb3VibGU6Ci0gICAgICAgIHJldHVybiBOdW1iZXJV
c2U7CisgICAgICAgIHJldHVybiBEb3VibGVSZXBVc2U7CiAgICAgY2FzZSBGbHVzaGVkQm9vbGVh
bjoKICAgICAgICAgcmV0dXJuIEJvb2xlYW5Vc2U7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsNyArMzE0
LDcgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBv
dXQucHJpbnQoY29tbWEsIGluQ29udGV4dChKU1ZhbHVlKG5vZGUtPnR5cGVkQXJyYXkoKSksIGNv
bnRleHQpKTsKICAgICBpZiAobm9kZS0+aGFzU3RvcmFnZVBvaW50ZXIoKSkKICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCBSYXdQb2ludGVyKG5vZGUtPnN0b3JhZ2VQb2ludGVyKCkpKTsKLSAgICBp
ZiAob3AgPT0gSlNDb25zdGFudCkgeworICAgIGlmIChub2RlLT5pc0NvbnN0YW50KCkpIHsKICAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiJCIsIG5vZGUtPmNvbnN0YW50TnVtYmVyKCkpOwogICAg
ICAgICBKU1ZhbHVlIHZhbHVlID0gdmFsdWVPZkpTQ29uc3RhbnQobm9kZSk7CiAgICAgICAgIG91
dC5wcmludCgiID0gIiwgaW5Db250ZXh0KHZhbHVlLCBjb250ZXh0KSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYg
QEAKICNpbmNsdWRlICJERkdOb2RlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiREZHUGxhbi5oIgog
I2luY2x1ZGUgIkRGR1NjYW5uYWJsZS5oIgotI2luY2x1ZGUgIkRGR1ZhcmlhZGljRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJJbmxpbmVDYWxsRnJhbWVTZXQuaCIKICNpbmNsdWRlICJKU1N0YWNrLmgi
CiAjaW5jbHVkZSAiTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIgpAQCAtMTM2LDE1ICsx
MzUsMTMgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoIWNoaWxkLT5taXNjLnJlcGxhY2VtZW50
KTsKICAgICB9CiAgICAgCi0jZGVmaW5lIERGR19ERUZJTkVfQUREX05PREUodGVtcGxhdGVQcmUs
IHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXNDb21tYSwgdmFsdWVQYXJhbXMs
IHZhbHVlQXJncykgXAotICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJhbXMgdGVtcGxhdGVQb3N0IE5v
ZGUqIGFkZE5vZGUoU3BlY3VsYXRlZFR5cGUgdHlwZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFy
YW1zKSBcCi0gICAgeyBcCi0gICAgICAgIE5vZGUqIG5vZGUgPSBuZXcgKG1fYWxsb2NhdG9yKSBO
b2RlKHZhbHVlQXJncyk7IFwKLSAgICAgICAgbm9kZS0+cHJlZGljdCh0eXBlKTsgXAotICAgICAg
ICByZXR1cm4gbm9kZTsgXAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFtcz4KKyAgICBO
b2RlKiBhZGROb2RlKFNwZWN1bGF0ZWRUeXBlIHR5cGUsIFBhcmFtcy4uLiBwYXJhbXMpCisgICAg
eworICAgICAgICBOb2RlKiBub2RlID0gbmV3IChtX2FsbG9jYXRvcikgTm9kZShwYXJhbXMuLi4p
OworICAgICAgICBub2RlLT5wcmVkaWN0KHR5cGUpOworICAgICAgICByZXR1cm4gbm9kZTsKICAg
ICB9Ci0gICAgREZHX1ZBUklBRElDX1RFTVBMQVRFX0ZVTkNUSU9OKERGR19ERUZJTkVfQUREX05P
REUpCi0jdW5kZWYgREZHX0RFRklORV9BRERfTk9ERQogCiAgICAgdm9pZCBkZXRocmVhZCgpOwog
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTUsMTQgKzE1NSwyMyBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXpl
KCkKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKICAg
ICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKICAgICAgICAg
fQorICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQorICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIGlmIChibG9jay0+Ynl0ZWNvZGVCZWdpbiAhPSBtX2dyYXBoLm1fcGxhbi5v
c3JFbnRyeUJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2dyYXBoLm1fbXVzdEhhbmRsZUFic3RyYWN0VmFsdWVzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVlID0gbV9ncmFwaC5t
X211c3RIYW5kbGVBYnN0cmFjdFZhbHVlc1tpXTsKICAgICAgICAgICAgIGludCBvcGVyYW5kID0g
bV9ncmFwaC5tX211c3RIYW5kbGVBYnN0cmFjdFZhbHVlcy5vcGVyYW5kRm9ySW5kZXgoaSk7Ci0g
ICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLm9wZXJhbmQob3BlcmFuZCkubWVyZ2UodmFs
dWUpOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3Bl
cmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX2dyYXBoLm1fbXVz
dEhhbmRsZUFic3RyYWN0VmFsdWVzW2ldOworICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgYWJz
dHJhY3RWYWx1ZSA9IGJsb2NrLT52YWx1ZXNBdEhlYWQub3BlcmFuZChvcGVyYW5kKTsKKyAgICAg
ICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vz
c0RhdGEoKTsKKyAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IHZhcmlhYmxlLT5mbHVz
aEZvcm1hdCgpOworICAgICAgICAgICAgYWJzdHJhY3RWYWx1ZS5tZXJnZSh2YWx1ZSk7CisgICAg
ICAgICAgICBhYnN0cmFjdFZhbHVlLmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihyZXN1bHRGb3Io
Zm9ybWF0KSk7CiAgICAgICAgIH0KICAgICAgICAgYmxvY2stPmNmYVNob3VsZFJldmlzaXQgPSB0
cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9u
U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRp
b25TZXQuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsMjcgKzU0LDQ2
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBpbnNlcnQoSW5zZXJ0aW9uKGluZGV4
LCBlbGVtZW50KSk7CiAgICAgfQotICAgIAotI2RlZmluZSBERkdfREVGSU5FX0lOU0VSVF9OT0RF
KHRlbXBsYXRlUHJlLCB0ZW1wbGF0ZVBvc3QsIHR5cGVQYXJhbXMsIHZhbHVlUGFyYW1zQ29tbWEs
IHZhbHVlUGFyYW1zLCB2YWx1ZUFyZ3MpIFwKLSAgICB0ZW1wbGF0ZVByZSB0eXBlUGFyYW1zIHRl
bXBsYXRlUG9zdCBOb2RlKiBpbnNlcnROb2RlKHNpemVfdCBpbmRleCwgU3BlY3VsYXRlZFR5cGUg
dHlwZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1zKSBcCi0gICAgeyBcCi0gICAgICAgIHJl
dHVybiBpbnNlcnQoaW5kZXgsIG1fZ3JhcGguYWRkTm9kZSh0eXBlIHZhbHVlUGFyYW1zQ29tbWEg
dmFsdWVBcmdzKSk7IFwKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFtcz4KKyAgICBO
b2RlKiBpbnNlcnROb2RlKHNpemVfdCBpbmRleCwgU3BlY3VsYXRlZFR5cGUgdHlwZSwgUGFyYW1z
Li4uIHBhcmFtcykKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoaW5kZXgsIG1fZ3JhcGgu
YWRkTm9kZSh0eXBlLCBwYXJhbXMuLi4pKTsKICAgICB9Ci0gICAgREZHX1ZBUklBRElDX1RFTVBM
QVRFX0ZVTkNUSU9OKERGR19ERUZJTkVfSU5TRVJUX05PREUpCi0jdW5kZWYgREZHX0RFRklORV9J
TlNFUlRfTk9ERQogICAgIAotICAgIE5vZGUqIGluc2VydENvbnN0YW50KHNpemVfdCBpbmRleCwg
Tm9kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWUgdmFsdWUpCisgICAgTm9kZSogaW5zZXJ0Q29uc3Rh
bnQoCisgICAgICAgIHNpemVfdCBpbmRleCwgTm9kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWUgdmFs
dWUsCisgICAgICAgIE5vZGVUeXBlIG9wID0gSlNDb25zdGFudCkKICAgICB7CiAgICAgICAgIHVu
c2lnbmVkIGNvbnN0YW50UmVnID0KICAgICAgICAgICAgIG1fZ3JhcGguY29uc3RhbnRSZWdpc3Rl
ckZvckNvbnN0YW50KHZhbHVlKTsKICAgICAgICAgcmV0dXJuIGluc2VydE5vZGUoCi0gICAgICAg
ICAgICBpbmRleCwgc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpLCBKU0NvbnN0YW50LCBvcmln
aW4sCi0gICAgICAgICAgICBPcEluZm8oY29uc3RhbnRSZWcpKTsKKyAgICAgICAgICAgIGluZGV4
LCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSksIG9wLCBvcmlnaW4sIE9wSW5mbyhjb25zdGFu
dFJlZykpOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBpbnNlcnRDb25zdGFudCgKKyAgICAgICAg
c2l6ZV90IGluZGV4LCBDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZSB2YWx1ZSwgTm9kZVR5cGUg
b3AgPSBKU0NvbnN0YW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydENvbnN0YW50KGlu
ZGV4LCBOb2RlT3JpZ2luKG9yaWdpbiksIHZhbHVlLCBvcCk7CisgICAgfQorICAgIAorICAgIEVk
Z2UgaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgIHNpemVfdCBpbmRleCwgTm9kZU9yaWdp
biBvcmlnaW4sIEpTVmFsdWUgdmFsdWUsIFVzZUtpbmQgdXNlS2luZCkKKyAgICB7CisgICAgICAg
IE5vZGVUeXBlIG9wOworICAgICAgICBpZiAoaXNEb3VibGUodXNlS2luZCkpCisgICAgICAgICAg
ICBvcCA9IERvdWJsZUNvbnN0YW50OworICAgICAgICBlbHNlIGlmICh1c2VLaW5kID09IEludDUy
UmVwVXNlKQorICAgICAgICAgICAgb3AgPSBJbnQ1MkNvbnN0YW50OworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBvcCA9IEpTQ29uc3RhbnQ7CisgICAgICAgIHJldHVybiBFZGdlKGluc2VydENv
bnN0YW50KGluZGV4LCBvcmlnaW4sIHZhbHVlLCBvcCksIHVzZUtpbmQpOwogICAgIH0KICAgICAK
LSAgICBOb2RlKiBpbnNlcnRDb25zdGFudChzaXplX3QgaW5kZXgsIENvZGVPcmlnaW4gb3JpZ2lu
LCBKU1ZhbHVlIHZhbHVlKQorICAgIEVkZ2UgaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAg
IHNpemVfdCBpbmRleCwgQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWUgdmFsdWUsIFVzZUtpbmQg
dXNlS2luZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpbnNlcnRDb25zdGFudChpbmRleCwgTm9k
ZU9yaWdpbihvcmlnaW4pLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiBpbnNlcnRDb25zdGFudEZv
clVzZShpbmRleCwgTm9kZU9yaWdpbihvcmlnaW4pLCB2YWx1ZSwgdXNlS2luZCk7CiAgICAgfQog
CiAgICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQ
aGFzZS5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzAs
MTAgKzM3MCwxMCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWFkZGVuZCkKICAgICAgICAgICAg
IHJldHVybiBzb3VyY2Uubm9kZSgpOwogICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgIG5vZGVJbmRleCwgc291cmNlLT5wcmVkaWN0aW9uKCksIEFy
aXRoQWRkLCBvcmlnaW4sIE9wSW5mbyhhcml0aE1vZGUpLAotICAgICAgICAgICAgc291cmNlLCBF
ZGdlKAotICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50KG5vZGVJ
bmRleCwgb3JpZ2luLCBqc051bWJlcihhZGRlbmQpKSwKLSAgICAgICAgICAgICAgICBzb3VyY2Uu
dXNlS2luZCgpKSk7CisgICAgICAgICAgICBub2RlSW5kZXgsIHNvdXJjZS0+cHJlZGljdGlvbigp
LCBzb3VyY2UtPnJlc3VsdCgpLAorICAgICAgICAgICAgQXJpdGhBZGQsIG9yaWdpbiwgT3BJbmZv
KGFyaXRoTW9kZSksIHNvdXJjZSwKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENv
bnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgIG5vZGVJbmRleCwgb3JpZ2luLCBqc051bWJl
cihhZGRlbmQpLCBzb3VyY2UudXNlS2luZCgpKSk7CiAgICAgfQogICAgIAogICAgIE5vZGUqIGlu
c2VydE11c3RBZGQoCkBAIC0zODEsNyArMzgxLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IE5vZGUqIHJlc3VsdCA9IGluc2VydEFkZChub2RlSW5kZXgsIG9yaWdpbiwgc291cmNlLCBhZGRl
bmQpOwogICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbm9k
ZUluZGV4LCBTcGVjTm9uZSwgSGFyZFBoYW50b20sIG9yaWdpbiwgRWRnZShyZXN1bHQsIFVudHlw
ZWRVc2UpKTsKKyAgICAgICAgICAgIG5vZGVJbmRleCwgU3BlY05vbmUsIEhhcmRQaGFudG9tLCBv
cmlnaW4sIHJlc3VsdC0+ZGVmYXVsdEVkZ2UoKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCShyZXZp
c2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSwxNSBAQCBib29sIE5vZGU6Omhhc1ZhcmlhYmxlQWNj
ZXNzRGF0YShHcmFwaCYgCiAgICAgfQogfQogCit2b2lkIE5vZGU6OmNvbnZlcnRUb0lkZW50aXR5
KCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChjaGlsZDEoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
IWNoaWxkMigpKTsKKyAgICBOb2RlRmxhZ3MgcmVzdWx0ID0gY2Fub25pY2FsUmVzdWx0UmVwcmVz
ZW50YXRpb24odGhpcy0+cmVzdWx0KCkpOworICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKElkZW50
aXR5KTsKKyAgICBzZXRSZXN1bHQocmVzdWx0KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEyMSw3ICsxMzAsMTAgQEAgdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE5vZAogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IG91dC5wcmludCgiQCIsIG5vZGUtPmluZGV4KCkpOwotICAgIG91dC5wcmludChBYmJyZXZpYXRl
ZFNwZWN1bGF0aW9uRHVtcChub2RlLT5wcmVkaWN0aW9uKCkpKTsKKyAgICBpZiAobm9kZS0+aGFz
RG91YmxlUmVzdWx0KCkpCisgICAgICAgIG91dC5wcmludCgiPERvdWJsZT4iKTsKKyAgICBlbHNl
IGlmIChub2RlLT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAgICBvdXQucHJpbnQoIjxJbnQ1Mj4i
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJERkdO
b2RlRmxhZ3MuaCIKICNpbmNsdWRlICJERkdOb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiREZHTm9k
ZVR5cGUuaCIKKyNpbmNsdWRlICJERkdVc2VLaW5kLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVB
Y2Nlc3NEYXRhLmgiCiAjaW5jbHVkZSAiR2V0QnlJZFZhcmlhbnQuaCIKICNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCkBAIC0yMzksNiArMjQwLDIyIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgQVNT
RVJUKCEobV9mbGFncyAmIE5vZGVIYXNWYXJBcmdzKSk7CiAgICAgfQogCisgICAgLy8gQ29uc3Ry
dWN0IGEgbm9kZSB3aXRoIHVwIHRvIDMgY2hpbGRyZW4sIG5vIGltbWVkaWF0ZSB2YWx1ZS4KKyAg
ICBOb2RlKE5vZGVGbGFncyByZXN1bHQsIE5vZGVUeXBlIG9wLCBOb2RlT3JpZ2luIG5vZGVPcmln
aW4sIEVkZ2UgY2hpbGQxID0gRWRnZSgpLCBFZGdlIGNoaWxkMiA9IEVkZ2UoKSwgRWRnZSBjaGls
ZDMgPSBFZGdlKCkpCisgICAgICAgIDogb3JpZ2luKG5vZGVPcmlnaW4pCisgICAgICAgICwgY2hp
bGRyZW4oQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIGNoaWxkMSwgY2hpbGQyLCBjaGlsZDMpCisgICAg
ICAgICwgbV92aXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKCkpCisgICAgICAgICwgbV9y
ZWZDb3VudCgxKQorICAgICAgICAsIG1fcHJlZGljdGlvbihTcGVjTm9uZSkKKyAgICAgICAgLCBt
X29wSW5mbygwKQorICAgICAgICAsIG1fb3BJbmZvMigwKQorICAgIHsKKyAgICAgICAgbWlzYy5y
ZXBsYWNlbWVudCA9IDA7CisgICAgICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKG9wKTsKKyAgICAg
ICAgc2V0UmVzdWx0KHJlc3VsdCk7CisgICAgICAgIEFTU0VSVCghKG1fZmxhZ3MgJiBOb2RlSGFz
VmFyQXJncykpOworICAgIH0KKwogICAgIC8vIENvbnN0cnVjdCBhIG5vZGUgd2l0aCB1cCB0byAz
IGNoaWxkcmVuIGFuZCBhbiBpbW1lZGlhdGUgdmFsdWUuCiAgICAgTm9kZShOb2RlVHlwZSBvcCwg
Tm9kZU9yaWdpbiBub2RlT3JpZ2luLCBPcEluZm8gaW1tLCBFZGdlIGNoaWxkMSA9IEVkZ2UoKSwg
RWRnZSBjaGlsZDIgPSBFZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQogICAgICAgICA6IG9y
aWdpbihub2RlT3JpZ2luKQpAQCAtMjU0LDYgKzI3MSwyMiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIEFTU0VSVCghKG1fZmxhZ3MgJiBOb2RlSGFzVmFyQXJncykpOwogICAgIH0KIAorICAgIC8v
IENvbnN0cnVjdCBhIG5vZGUgd2l0aCB1cCB0byAzIGNoaWxkcmVuIGFuZCBhbiBpbW1lZGlhdGUg
dmFsdWUuCisgICAgTm9kZShOb2RlRmxhZ3MgcmVzdWx0LCBOb2RlVHlwZSBvcCwgTm9kZU9yaWdp
biBub2RlT3JpZ2luLCBPcEluZm8gaW1tLCBFZGdlIGNoaWxkMSA9IEVkZ2UoKSwgRWRnZSBjaGls
ZDIgPSBFZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQorICAgICAgICA6IG9yaWdpbihub2Rl
T3JpZ2luKQorICAgICAgICAsIGNoaWxkcmVuKEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBjaGlsZDEs
IGNoaWxkMiwgY2hpbGQzKQorICAgICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdp
c3RlcigpKQorICAgICAgICAsIG1fcmVmQ291bnQoMSkKKyAgICAgICAgLCBtX3ByZWRpY3Rpb24o
U3BlY05vbmUpCisgICAgICAgICwgbV9vcEluZm8oaW1tLm1fdmFsdWUpCisgICAgICAgICwgbV9v
cEluZm8yKDApCisgICAgeworICAgICAgICBtaXNjLnJlcGxhY2VtZW50ID0gMDsKKyAgICAgICAg
c2V0T3BBbmREZWZhdWx0RmxhZ3Mob3ApOworICAgICAgICBzZXRSZXN1bHQocmVzdWx0KTsKKyAg
ICAgICAgQVNTRVJUKCEobV9mbGFncyAmIE5vZGVIYXNWYXJBcmdzKSk7CisgICAgfQorCiAgICAg
Ly8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIHVwIHRvIDMgY2hpbGRyZW4gYW5kIHR3byBpbW1lZGlh
dGUgdmFsdWVzLgogICAgIE5vZGUoTm9kZVR5cGUgb3AsIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwg
T3BJbmZvIGltbTEsIE9wSW5mbyBpbW0yLCBFZGdlIGNoaWxkMSA9IEVkZ2UoKSwgRWRnZSBjaGls
ZDIgPSBFZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQogICAgICAgICA6IG9yaWdpbihub2Rl
T3JpZ2luKQpAQCAtMzI1LDYgKzM1OCwxOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVy
biBmaWx0ZXJGbGFncyh+ZmxhZ3MpOwogICAgIH0KICAgICAKKyAgICB2b2lkIHNldFJlc3VsdChO
b2RlRmxhZ3MgcmVzdWx0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEocmVzdWx0ICYgfk5vZGVS
ZXN1bHRNYXNrKSk7CisgICAgICAgIGNsZWFyRmxhZ3MoTm9kZVJlc3VsdE1hc2spOworICAgICAg
ICBtZXJnZUZsYWdzKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIE5vZGVGbGFncyByZXN1bHQo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZsYWdzKCkgJiBOb2RlUmVzdWx0TWFzazsK
KyAgICB9CisgICAgCiAgICAgdm9pZCBzZXRPcEFuZERlZmF1bHRGbGFncyhOb2RlVHlwZSBvcCkK
ICAgICB7CiAgICAgICAgIG1fb3AgPSBvcDsKQEAgLTM0MSwxMiArMzg2LDcgQEAgc3RydWN0IE5v
ZGUgewogICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhQaGFudG9tKTsKICAgICB9CiAKLSAg
ICB2b2lkIGNvbnZlcnRUb0lkZW50aXR5KCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGNoaWxkMSgpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWNoaWxkMigpKTsKLSAgICAgICAg
c2V0T3BBbmREZWZhdWx0RmxhZ3MoSWRlbnRpdHkpOwotICAgIH0KKyAgICB2b2lkIGNvbnZlcnRU
b0lkZW50aXR5KCk7CiAKICAgICBib29sIG11c3RHZW5lcmF0ZSgpCiAgICAgewpAQCAtMzY4LDcg
KzQwOCwxNCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgCiAgICAgYm9vbCBpc0NvbnN0YW50KCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBvcCgpID09IEpTQ29uc3RhbnQ7CisgICAgICAgIHN3aXRjaCAo
b3AoKSkgeworICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgRG91YmxlQ29u
c3RhbnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNXZWFrQ29uc3RhbnQoKQpAQCAtMzg1LDYgKzQz
Miw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAg
ICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAg
ICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAg
ICAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC00MDEsNyArNDUwLDEyIEBAIHN0cnVjdCBOb2RlIHsKICAgICAKICAgICB2b2lkIGNvbnZlcnRU
b0NvbnN0YW50KHVuc2lnbmVkIGNvbnN0YW50TnVtYmVyKQogICAgIHsKLSAgICAgICAgbV9vcCA9
IEpTQ29uc3RhbnQ7CisgICAgICAgIGlmIChoYXNEb3VibGVSZXN1bHQoKSkKKyAgICAgICAgICAg
IG1fb3AgPSBEb3VibGVDb25zdGFudDsKKyAgICAgICAgZWxzZSBpZiAoaGFzSW50NTJSZXN1bHQo
KSkKKyAgICAgICAgICAgIG1fb3AgPSBJbnQ1MkNvbnN0YW50OworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBtX29wID0gSlNDb25zdGFudDsKICAgICAgICAgbV9mbGFncyAmPSB+KE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9iYmVyIHwgTm9kZUNsb2JiZXJzV29ybGQpOwogICAgICAg
ICBtX29wSW5mbyA9IGNvbnN0YW50TnVtYmVyOwogICAgICAgICBjaGlsZHJlbi5yZXNldCgpOwpA
QCAtNTAyLDYgKzU1Niw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBXZWFrSlNDb25z
dGFudDoKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKHdlYWtDb25zdGFudCgpKTsKICAgICAg
ICAgY2FzZSBKU0NvbnN0YW50OgorICAgICAgICBjYXNlIERvdWJsZUNvbnN0YW50OgorICAgICAg
ICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgICAgICByZXR1cm4gY29kZUJsb2NrLT5jb25z
dGFudFJlZ2lzdGVyKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ICsgY29uc3RhbnROdW1iZXIo
KSkuZ2V0KCk7CiAgICAgICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CkBAIC03OTcsMzIgKzg1Myw1MiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
CiAgICAgYm9vbCBoYXNSZXN1bHQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZmxhZ3MgJiBO
b2RlUmVzdWx0TWFzazsKKyAgICAgICAgcmV0dXJuICEhcmVzdWx0KCk7CiAgICAgfQogCiAgICAg
Ym9vbCBoYXNJbnQzMlJlc3VsdCgpCiAgICAgewotICAgICAgICByZXR1cm4gKG1fZmxhZ3MgJiBO
b2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdEludDMyOworICAgICAgICByZXR1cm4gcmVzdWx0
KCkgPT0gTm9kZVJlc3VsdEludDMyOworICAgIH0KKyAgICAKKyAgICBib29sIGhhc0ludDUyUmVz
dWx0KCkKKyAgICB7CisgICAgICAgIHJldHVybiByZXN1bHQoKSA9PSBOb2RlUmVzdWx0SW50NTI7
CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzTnVtYmVyUmVzdWx0KCkKICAgICB7Ci0gICAgICAg
IHJldHVybiAobV9mbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0TnVtYmVyOwor
ICAgICAgICByZXR1cm4gcmVzdWx0KCkgPT0gTm9kZVJlc3VsdE51bWJlcjsKKyAgICB9CisgICAg
CisgICAgYm9vbCBoYXNEb3VibGVSZXN1bHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dCgpID09IE5vZGVSZXN1bHREb3VibGU7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzSlNSZXN1
bHQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09
IE5vZGVSZXN1bHRKUzsKKyAgICAgICAgcmV0dXJuIHJlc3VsdCgpID09IE5vZGVSZXN1bHRKUzsK
ICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNCb29sZWFuUmVzdWx0KCkKICAgICB7Ci0gICAgICAg
IHJldHVybiAobV9mbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0Qm9vbGVhbjsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdCgpID09IE5vZGVSZXN1bHRCb29sZWFuOwogICAgIH0KIAog
ICAgIGJvb2wgaGFzU3RvcmFnZVJlc3VsdCgpCiAgICAgewotICAgICAgICByZXR1cm4gKG1fZmxh
Z3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdFN0b3JhZ2U7CisgICAgICAgIHJldHVy
biByZXN1bHQoKSA9PSBOb2RlUmVzdWx0U3RvcmFnZTsKKyAgICB9CisgICAgCisgICAgVXNlS2lu
ZCBkZWZhdWx0VXNlS2luZCgpCisgICAgeworICAgICAgICByZXR1cm4gdXNlS2luZEZvclJlc3Vs
dChyZXN1bHQoKSk7CisgICAgfQorICAgIAorICAgIEVkZ2UgZGVmYXVsdEVkZ2UoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEVkZ2UodGhpcywgZGVmYXVsdFVzZUtpbmQoKSk7CiAgICAgfQogCiAg
ICAgYm9vbCBpc0p1bXAoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
RmxhZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZUZsYWdzLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlRmxhZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw2ICs0Nyw5
IEBAIHZvaWQgZHVtcE5vZGVGbGFncyhQcmludFN0cmVhbSYgYWN0dWFsT3UKICAgICAgICAgY2Fz
ZSBOb2RlUmVzdWx0TnVtYmVyOgogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiTnVtYmVy
Iik7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOb2RlUmVzdWx0RG91YmxlOgor
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRG91YmxlIik7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6CiAgICAgICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICJJbnQzMiIpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM4LDEwICszOCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAjZGVm
aW5lIE5vZGVSZXN1bHRNYXNrICAgICAgICAgICAgICAgICAgIDB4MDAwNwogI2RlZmluZSBOb2Rl
UmVzdWx0SlMgICAgICAgICAgICAgICAgICAgICAweDAwMDEKICNkZWZpbmUgTm9kZVJlc3VsdE51
bWJlciAgICAgICAgICAgICAgICAgMHgwMDAyCi0jZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAg
ICAgICAgICAgICAgIDB4MDAwMwotI2RlZmluZSBOb2RlUmVzdWx0SW50NTIgICAgICAgICAgICAg
ICAgICAweDAwMDQKLSNkZWZpbmUgTm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAgICAgICAgMHgw
MDA1Ci0jZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdlICAgICAgICAgICAgICAgIDB4MDAwNgorI2Rl
ZmluZSBOb2RlUmVzdWx0RG91YmxlICAgICAgICAgICAgICAgICAweDAwMDMKKyNkZWZpbmUgTm9k
ZVJlc3VsdEludDMyICAgICAgICAgICAgICAgICAgMHgwMDA0CisjZGVmaW5lIE5vZGVSZXN1bHRJ
bnQ1MiAgICAgICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAg
ICAgICAgICAgICAgICAweDAwMDYKKyNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAg
ICAgICAgMHgwMDA3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogI2RlZmluZSBO
b2RlTXVzdEdlbmVyYXRlICAgICAgICAgICAgICAgICAweDAwMDggLy8gc2V0IG9uIG5vZGVzIHRo
YXQgaGF2ZSBzaWRlIGVmZmVjdHMsIGFuZCBtYXkgbm90IHRyaXZpYWxseSBiZSByZW1vdmVkIGJ5
IERDRS4KICNkZWZpbmUgTm9kZUhhc1ZhckFyZ3MgICAgICAgICAgICAgICAgICAgMHgwMDEwCkBA
IC0xMTQsNiArMTE1LDE4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBub2RlQ2FuU3BlY3VsYXRlSW50
NTIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGlubGluZSBOb2RlRmxhZ3MgY2Fub25p
Y2FsUmVzdWx0UmVwcmVzZW50YXRpb24oTm9kZUZsYWdzIGZsYWdzKQoreworICAgIHN3aXRjaCAo
ZmxhZ3MpIHsKKyAgICBjYXNlIE5vZGVSZXN1bHREb3VibGU6CisgICAgY2FzZSBOb2RlUmVzdWx0
SW50NTI6CisgICAgY2FzZSBOb2RlUmVzdWx0U3RvcmFnZToKKyAgICAgICAgcmV0dXJuIGZsYWdz
OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBOb2RlUmVzdWx0SlM7CisgICAgfQorfQor
CiB2b2lkIGR1bXBOb2RlRmxhZ3MoUHJpbnRTdHJlYW0mLCBOb2RlRmxhZ3MpOwogTUFLRV9QUklO
VF9BREFQVE9SKE5vZGVGbGFnc0R1bXAsIE5vZGVGbGFncywgZHVtcE5vZGVGbGFncyk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE2NzI3
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIC8qIEEgY29uc3RhbnQgaW4gdGhlIENvZGVCbG9jaydzIGNvbnN0YW50IHBvb2wuICovXAog
ICAgIG1hY3JvKEpTQ29uc3RhbnQsIE5vZGVSZXN1bHRKUyB8IE5vZGVEb2VzTm90RXhpdCkgXAog
ICAgIFwKKyAgICAvKiBDb25zdGFudHMgd2l0aCBzcGVjaWZpYyByZXByZXNlbnRhdGlvbnMuICov
XAorICAgIG1hY3JvKERvdWJsZUNvbnN0YW50LCBOb2RlUmVzdWx0RG91YmxlIHwgTm9kZURvZXNO
b3RFeGl0KSBcCisgICAgbWFjcm8oSW50NTJDb25zdGFudCwgTm9kZVJlc3VsdEludDUyIHwgTm9k
ZURvZXNOb3RFeGl0KSBcCisgICAgXAogICAgIC8qIEEgY29uc3RhbnQgbm90IGluIHRoZSBDb2Rl
QmxvY2sncyBjb25zdGFudCBwb29sLiBVc2VzIGdldCBwYXRjaGVkIHRvIGp1bXBzIHRoYXQgZXhp
dCB0aGUgKi9cCiAgICAgLyogY29kZSBibG9jay4gKi9cCiAgICAgbWFjcm8oV2Vha0pTQ29uc3Rh
bnQsIE5vZGVSZXN1bHRKUyB8IE5vZGVEb2VzTm90RXhpdCkgXApAQCAtMTA2LDE1ICsxMTAsMTMg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIFVzZWQgdG8gYm94IHRo
ZSByZXN1bHQgb2YgVVJTaGlmdCBub2RlcyAocmVzdWx0IGhhcyByYW5nZSAwLi4yXjMyLTEpLiAq
L1wKICAgICBtYWNybyhVSW50MzJUb051bWJlciwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIFwK
LSAgICAvKiBVc2VkIHRvIGNhc3Qga25vd24gaW50ZWdlcnMgdG8gZG91Ymxlcywgc28gYXMgdG8g
c2VwYXJhdGUgdGhlIGRvdWJsZSBmb3JtICovXAotICAgIC8qIG9mIHRoZSB2YWx1ZSBmcm9tIHRo
ZSBpbnRlZ2VyIGZvcm0uICovXAotICAgIG1hY3JvKEludDMyVG9Eb3VibGUsIE5vZGVSZXN1bHRO
dW1iZXIpIFwKLSAgICAvKiBVc2VkIHRvIHNwZWN1bGF0ZSB0aGF0IGEgZG91YmxlIHZhbHVlIGlz
IGFjdHVhbGx5IGFuIGludGVnZXIuICovXAorICAgIC8qIEF0dGVtcHQgdG8gdHJ1bmNhdGUgYSBk
b3VibGUgdG8gaW50MzI7IHRoaXMgd2lsbCBleGl0IGlmIGl0IGNhbid0IGRvIGl0LiAqL1wKICAg
ICBtYWNybyhEb3VibGVBc0ludDMyLCBOb2RlUmVzdWx0SW50MzIpIFwKLSAgICAvKiBVc2VkIHRv
IHNlcGFyYXRlIHJlcHJlc2VudGF0aW9uIGFuZCByZWdpc3RlciBhbGxvY2F0aW9uIG9mIEludDUy
J3MgcmVwcmVzZW50ZWQgKi9cCi0gICAgLyogYXMgdmFsdWVzLiAqL1wKLSAgICBtYWNybyhJbnQ1
MlRvVmFsdWUsIE5vZGVSZXN1bHRKUykgXAotICAgIG1hY3JvKEludDUyVG9Eb3VibGUsIE5vZGVS
ZXN1bHROdW1iZXIpIFwKKyAgICBcCisgICAgLyogQ2hhbmdlIHRoZSByZXByZXNlbnRhdGlvbiBv
ZiBhIHZhbHVlLiAqL1wKKyAgICBtYWNybyhEb3VibGVSZXAsIE5vZGVSZXN1bHREb3VibGUpIFwK
KyAgICBtYWNybyhJbnQ1MlJlcCwgTm9kZVJlc3VsdEludDUyKSBcCisgICAgbWFjcm8oVmFsdWVS
ZXAsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRpYyBv
cGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhBcml0aEFkZCwgTm9kZVJlc3VsdE51bWJlcikgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjks
OSArMjY5LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAg
ICAgICAKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewogICAgICAgICBj
YXNlIEluUGFpcjoKLSAgICAgICAgY2FzZSBJbkZQUjoKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJ
bkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKAogICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50YWcsCiAgICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwpAQCAtMjg2LDYgKzI4NCwxNCBAQCB2b2lkIE9TUkV4
aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgSW5GUFI6CisgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2Vk
SW5KU1N0YWNrOgorICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAg
bV9qaXQubG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAg
ICAgICAgICBtX2ppdC5zYW5pdGl6ZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAg
ICAgIG1faml0LnN0b3JlRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEFzc2VtYmx5SGVscGVyczo6
YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNl
IFVuYm94ZWRJbnQzMkluR1BSOgogICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNr
OgogICAgICAgICAgICAgbV9qaXQubG9hZDMyKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9uIDE2NzI3MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTcsNiArMjk3LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNv
bXBpbGVFeGl0KGNvbnN0IAogICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoK
ICAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNj
cmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIG1faml0LmxvYWRE
b3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgbV9q
aXQuc2FuaXRpemVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBtX2ppdC5i
b3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAg
bV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9y
KG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTAsNyArNDkw
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOgogICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0Ogot
ICAgICAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAgICAgIGNhc2UgRG91YmxlQXNJbnQzMjoK
ICAgICAgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgogICAgICAgICBjYXNlIEdldE15QXJndW1l
bnRzTGVuZ3RoOgpAQCAtNTA0LDExICs1MDMsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBD
aGVja1RpZXJVcEF0UmV0dXJuOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6
CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6Ci0gICAgICAgIGNhc2UgSW50NTJUb1Zh
bHVlOgotICAgICAgICBjYXNlIEludDUyVG9Eb3VibGU6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJv
dW5kczoKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6Ci0gICAgICAgIGNhc2UgSGFyZFBoYW50
b206IHsKKyAgICAgICAgY2FzZSBIYXJkUGhhbnRvbToKKyAgICAgICAgY2FzZSBEb3VibGVSZXA6
CisgICAgICAgIGNhc2UgSW50NTJSZXA6CisgICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAg
IGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKKyAgICAg
ICAgY2FzZSBJZGVudGl0eTogewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZl
ciBiZSB2aXNpYmxlIGF0IHRoaXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uIEl0IGlzCiAgICAgICAg
ICAgICAvLyBpbnNlcnRlZCBieSBmaXh1cCgpLCB3aGljaCBmb2xsb3dzIHRoaXMgcGhhc2UuCiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTM1LDEwICs1Mzgs
NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNC
b29sZWFuKTsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgSWRlbnRpdHk6Ci0g
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLT5jaGlsZDEoKS0+cHJl
ZGljdGlvbigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotCiAjaWZuZGVmIE5ERUJVRwogICAgICAg
ICAvLyBUaGVzZSBnZXQgaWdub3JlZCBiZWNhdXNlIHRoZXkgZG9uJ3QgcmV0dXJuIGFueXRoaW5n
LgogICAgICAgICBjYXNlIFN0b3JlQmFycmllcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5oYXNSZXN1
bHQoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEs
IFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sIEVkZ2Uobm9kZSkpOworICAgICAgICAg
ICAgICAgICAgICBub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2lu
LCBub2RlLT5kZWZhdWx0RWRnZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkocmV2aXNp
b24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNyArMTkyLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCBTcGVjTm9uZSwgTW92SGludCwgTm9kZU9yaWdpbigpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBPcEluZm8odmFyaWFibGUtPmxvY2FsKCkub2Zmc2V0KCkpLCBFZGdl
KG5vZGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHZhcmlhYmxl
LT5sb2NhbCgpLm9mZnNldCgpKSwgbm9kZS0+ZGVmYXVsdEVkZ2UoKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBA
IC0zNTAsNyArMzUwLDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFj
Y2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+aXNDYXB0dXJlZCgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLnNldE5v
ZGUoYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50
eXBlZFVzZSk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpID0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZCh2YXJpYWJsZS0+
bG9jYWwoKSktPmRlZmF1bHRFZGdlKCk7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb1BoYW50b20oKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGZvciBV
cHNpbG9ucy4gQW4gVXBzaWxvbiB3aWxsIG9ubHkgcmVmZXIgdG8gYQogICAgICAgICAgICAgICAg
ICAgICAvLyBQaGFudG9tTG9jYWwgaWYgdGhlcmUgd2VyZSBubyBTZXRMb2NhbHMgb3IgR2V0TG9j
YWxzIGluIHRoZSBibG9jay4KQEAgLTM2Myw3ICszNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgIGlmICh2YXJpYWJsZS0+aXNDYXB0dXJlZCgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZs
YWdzKEdldEFyZ3VtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhy
ZXN1bHRGb3Iobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KHJlc3VsdEZvcihub2RlLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKSkpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAoZWRnZS51c2VLaW5kKCkpIHsKICAgICAg
ICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICBjYXNlIEludDMyVXNlOgotICAgICAgICBjYXNl
IFJlYWxOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBjYXNl
IERvdWJsZVJlcFJlYWxVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgIGNh
c2UgTnVtYmVyVXNlOgogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIGNhc2UgQ2Vs
bFVzZToKQEAgLTYxLDcgKzYzLDYgQEAgcHVibGljOgogICAgICAgICBjYXNlIE5vdENlbGxVc2U6
CiAgICAgICAgIGNhc2UgT3RoZXJVc2U6CiAgICAgICAgIGNhc2UgTWlzY1VzZToKLSAgICAgICAg
Y2FzZSBNYWNoaW5lSW50VXNlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgS25vd25JbnQzMlVzZToKQEAgLTY5LDExICs3MCw2IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICBtX3Jlc3VsdCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgCi0gICAgICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgICAgICBpZiAo
bV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIH5TcGVjRnVsbE51bWJlcikKLSAgICAgICAg
ICAgICAgICBtX3Jlc3VsdCA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgCiAgICAgICAgIGNhc2UgS25vd25DZWxsVXNlOgogICAgICAgICAgICAgaWYgKG1fc3RhdGUu
Zm9yTm9kZShlZGdlKS5tX3R5cGUgJiB+U3BlY0NlbGwpCiAgICAgICAgICAgICAgICAgbV9yZXN1
bHQgPSBmYWxzZTsKQEAgLTExMSw2ICsxMDcsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJh
Y3RTdGF0ZVR5cGUmIHN0CiAKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNlIEpT
Q29uc3RhbnQ6CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBjYXNlIEludDUyQ29uc3Rh
bnQ6CiAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAgICBjYXNlIElkZW50aXR5OgogICAgIGNh
c2UgVG9UaGlzOgpAQCAtMTM3LDcgKzEzNSw2IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIEJpdFVSU2hpZnQ6CiAgICAgY2FzZSBWYWx1ZVRvSW50
MzI6CiAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKLSAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAg
ICAgY2FzZSBEb3VibGVBc0ludDMyOgogICAgIGNhc2UgQXJpdGhBZGQ6CiAgICAgY2FzZSBBcml0
aFN1YjoKQEAgLTI0Miw4ICsyMzksNiBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tU
aWVyVXBBbmRPU1JFbnRlcjoKICAgICBjYXNlIExvb3BIaW50OgotICAgIGNhc2UgSW50NTJUb0Rv
dWJsZToKLSAgICBjYXNlIEludDUyVG9WYWx1ZToKICAgICBjYXNlIFN0b3JlQmFycmllcjoKICAg
ICBjYXNlIFN0b3JlQmFycmllcldpdGhOdWxsQ2hlY2s6CiAgICAgY2FzZSBJbnZhbGlkYXRpb25Q
b2ludDoKQEAgLTI1NSw2ICsyNTAsOSBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAg
ICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgIGNhc2UgVmFsdWVSZXA6CisgICAgY2FzZSBE
b3VibGVSZXA6CisgICAgY2FzZSBJbnQ1MlJlcDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIAogICAgIGNhc2UgR2V0QnlWYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE2NzI3MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNCwyMCArMTM0LDYgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbEpTVmFsdWUoRWRnZSBlZAogICAgIH0KIAogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91Ymxl
OgotICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZTogewotICAgICAgICBGUFJSZWcgb2xkRlBSID0g
aW5mby5mcHIoKTsKLSAgICAgICAgbV9mcHJzLmxvY2sob2xkRlBSKTsKLSAgICAgICAgdGFnR1BS
ID0gYWxsb2NhdGUoKTsKLSAgICAgICAgcGF5bG9hZEdQUiA9IGFsbG9jYXRlKCk7Ci0gICAgICAg
IGJveERvdWJsZShvbGRGUFIsIHRhZ0dQUiwgcGF5bG9hZEdQUik7Ci0gICAgICAgIG1fZnBycy51
bmxvY2sob2xkRlBSKTsKLSAgICAgICAgbV9mcHJzLnJlbGVhc2Uob2xkRlBSKTsKLSAgICAgICAg
bV9ncHJzLnJldGFpbih0YWdHUFIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckpTKTsKLSAg
ICAgICAgbV9ncHJzLnJldGFpbihwYXlsb2FkR1BSLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3Jk
ZXJKUyk7Ci0gICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCB0YWdHUFIsIHBheWxv
YWRHUFIsIERhdGFGb3JtYXRKUyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQogICAg
IGNhc2UgRGF0YUZvcm1hdEpTOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2Fz
ZSBEYXRhRm9ybWF0SlNDZWxsOgpAQCAtMTYwLDYgKzE0Niw3IEBAIGJvb2wgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWQKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgRGF0YUZv
cm1hdFN0b3JhZ2U6CisgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgICAgICAvLyB0aGlz
IHR5cGUgY3VycmVudGx5IG5ldmVyIG9jY3VycwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogCkBAIC03NTYsMTIgKzc0Myw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUludDMKICAgICAKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQo
KSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgaWYgKGluZm8uc3BpbGxG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVj
dWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7Ci0gICAgICAgICAgICByZXR1cm4g
YWxsb2NhdGUoKTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0Nv
bnN0YW50KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChpc0ludDMyQ29uc3RhbnQoZWRnZS5ub2Rl
KCkpKTsKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwpAQCAtODEzLDcgKzc5
NCw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAg
cmV0dXJuIGdwcjsKICAgICB9CiAKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2Fz
ZSBEYXRhRm9ybWF0Q2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgogICAgIGNhc2Ug
RGF0YUZvcm1hdEpTRG91YmxlOgpAQCAtODIzLDYgKzgwMyw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1h
dEludDMyOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKIAorICAgIGNhc2UgRGF0YUZvcm1h
dERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04NDUsMTM2ICs4MjYsMzQgQEAg
R1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogCiBGUFJSZWcgU3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUoRWRnZSBlZGdlKQogewotICAgIEFic3RyYWN0
VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwotICAgIFNwZWN1bGF0ZWRUeXBl
IHR5cGUgPSB2YWx1ZS5tX3R5cGU7Ci0gICAgQVNTRVJUKGVkZ2UudXNlS2luZCgpICE9IEtub3du
TnVtYmVyVXNlIHx8ICEodmFsdWUubV90eXBlICYgflNwZWNGdWxsTnVtYmVyKSk7Ci0gICAgbV9p
bnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNGdWxsTnVtYmVyKTsKKyAgICBBU1NFUlQoaXNE
b3VibGUoZWRnZS51c2VLaW5kKCkpKTsKKyAgICBBU1NFUlQoZWRnZS0+aGFzRG91YmxlUmVzdWx0
KCkpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFs
UmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJv
bVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogCiAgICAgaWYgKGluZm8ucmVnaXN0
ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkgewogCiAgICAgICAgIGlmIChlZGdlLT5oYXND
b25zdGFudCgpKSB7Ci0gICAgICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KGVkZ2Uubm9kZSgp
KSkgewotICAgICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAgICAg
ICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTMyKHZhbHVlT2ZJbnQzMkNvbnN0
YW50KGVkZ2Uubm9kZSgpKSksIGdwcik7Ci0gICAgICAgICAgICAgICAgbV9ncHJzLnJldGFpbihn
cHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50KTsKLSAgICAgICAgICAgICAg
ICBpbmZvLmZpbGxJbnQzMigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICAgICAgdW5sb2Nr
KGdwcik7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyQ29uc3RhbnQoZWRnZS5ub2Rl
KCkpKSB7Ci0gICAgICAgICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAg
ICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShhZGRyZXNzT2ZEb3VibGVDb25zdGFudChlZGdl
Lm5vZGUoKSksIGZwcik7Ci0gICAgICAgICAgICAgICAgbV9mcHJzLnJldGFpbihmcHIsIHZpcnR1
YWxSZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50KTsKLSAgICAgICAgICAgICAgICBpbmZvLmZp
bGxEb3VibGUoKm1fc3RyZWFtLCBmcHIpOwotICAgICAgICAgICAgICAgIHJldHVybiBmcHI7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZl
RXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7
Ci0gICAgICAgICAgICBBU1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGls
bEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpOwotICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0
ID09IERhdGFGb3JtYXRKU0RvdWJsZSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91Ymxl
KSB7Ci0gICAgICAgICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAg
ICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpLCBmcHIpOwotICAgICAgICAgICAgICAgIG1fZnBycy5yZXRhaW4oZnByLCB2aXJ0
dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAgICAgICAgICAgICBpbmZvLmZp
bGxEb3VibGUoKm1fc3RyZWFtLCBmcHIpOwotICAgICAgICAgICAgICAgIHJldHVybiBmcHI7Ci0g
ICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzTnVtYmVyQ29uc3Rh
bnQoZWRnZS5ub2RlKCkpKTsKICAgICAgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgp
OwotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaGFzVW5ib3hlZERvdWJsZTsKLQotICAg
ICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ICE9IERhdGFGb3JtYXRKU0ludDMyICYmIHNwaWxsRm9y
bWF0ICE9IERhdGFGb3JtYXRJbnQzMikgewotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgSklU
Q29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
SW50MzJUYWcpKTsKLSAgICAgICAgICAgICAgICBpZiAodHlwZSAmIH5TcGVjRnVsbE51bWJlcikK
LSAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291
cmNlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlcikpLCBlZGdlLCBtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBKSVRDb21waWxlcjo6dGFn
Rm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7
Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCBmcHIpOwotICAgICAgICAgICAgICAgIGhhc1VuYm94ZWREb3Vi
bGUgPSBtX2ppdC5qdW1wKCk7Ci0KLSAgICAgICAgICAgICAgICBpc0ludGVnZXIubGluaygmbV9q
aXQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0Rv
dWJsZShKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCBmcHIpOwotCi0g
ICAgICAgICAgICBpZiAoaGFzVW5ib3hlZERvdWJsZS5pc1NldCgpKQotICAgICAgICAgICAgICAg
IGhhc1VuYm94ZWREb3VibGUubGluaygmbV9qaXQpOwotCi0gICAgICAgICAgICBtX2ZwcnMucmV0
YWluKGZwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CisgICAgICAgICAg
ICBtX2ppdC5sb2FkRG91YmxlKGFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KGVkZ2Uubm9kZSgpKSwg
ZnByKTsKKyAgICAgICAgICAgIG1fZnBycy5yZXRhaW4oZnByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNw
aWxsT3JkZXJDb25zdGFudCk7CiAgICAgICAgICAgICBpbmZvLmZpbGxEb3VibGUoKm1fc3RyZWFt
LCBmcHIpOwotICAgICAgICAgICAgaW5mby5raWxsU3BpbGxlZCgpOwogICAgICAgICAgICAgcmV0
dXJuIGZwcjsKICAgICAgICAgfQotICAgIH0KLQotICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZv
cm1hdCgpKSB7Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlM6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNJ
bnQzMjogewotICAgICAgICBHUFJSZWcgdGFnR1BSID0gaW5mby50YWdHUFIoKTsKLSAgICAgICAg
R1BSUmVnIHBheWxvYWRHUFIgPSBpbmZvLnBheWxvYWRHUFIoKTsKKyAgICAgICAgCisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKTsK
ICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0KLSAgICAgICAgbV9ncHJzLmxv
Y2sodGFnR1BSKTsKLSAgICAgICAgbV9ncHJzLmxvY2socGF5bG9hZEdQUik7Ci0KLSAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgaGFzVW5ib3hlZERvdWJsZTsKLQotICAgICAgICBpZiAoaW5mby5y
ZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXRKU0ludDMyKSB7Ci0gICAgICAgICAgICBGUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlz
SW50ZWdlciA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdGFnR1BSLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAgICAgICAgICAgIGlmICh0eXBlICYg
flNwZWNGdWxsTnVtYmVyKQotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRnZSwgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6TG93ZXN0VGFnKSkpOwotICAgICAgICAgICAgdW5ib3hEb3VibGUodGFnR1BSLCBwYXlsb2Fk
R1BSLCBmcHIsIHNjcmF0Y2guZnByKCkpOwotICAgICAgICAgICAgaGFzVW5ib3hlZERvdWJsZSA9
IG1faml0Lmp1bXAoKTsKLSAgICAgICAgICAgIGlzSW50ZWdlci5saW5rKCZtX2ppdCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXlsb2FkR1BSLCBm
cHIpOwotCi0gICAgICAgIGlmIChoYXNVbmJveGVkRG91YmxlLmlzU2V0KCkpCi0gICAgICAgICAg
ICBoYXNVbmJveGVkRG91YmxlLmxpbmsoJm1faml0KTsKLQotICAgICAgICBtX2dwcnMucmVsZWFz
ZSh0YWdHUFIpOwotICAgICAgICBtX2dwcnMucmVsZWFzZShwYXlsb2FkR1BSKTsKLSAgICAgICAg
bV9ncHJzLnVubG9jayh0YWdHUFIpOwotICAgICAgICBtX2dwcnMudW5sb2NrKHBheWxvYWRHUFIp
OwotICAgICAgICBtX2ZwcnMucmV0YWluKGZwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVy
RG91YmxlKTsKKyAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCBmcHIpOworICAgICAgICBtX2ZwcnMucmV0YWluKGZwciwgdmly
dHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAgICAgICAgIGluZm8uZmlsbERvdWJs
ZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgIGluZm8ua2lsbFNwaWxsZWQoKTsKICAgICAgICAg
cmV0dXJuIGZwcjsKICAgICB9CiAKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjogewotICAgICAg
ICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BSUmVnIGdwciA9IGluZm8u
Z3ByKCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgIG1faml0LmNvbnZlcnRJ
bnQzMlRvRG91YmxlKGdwciwgZnByKTsKLSAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwotICAg
ICAgICByZXR1cm4gZnByOwotICAgIH0KLQotICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgot
ICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZTogewotICAgICAgICBGUFJSZWcgZnByID0gaW5mby5m
cHIoKTsKLSAgICAgICAgbV9mcHJzLmxvY2soZnByKTsKLSAgICAgICAgcmV0dXJuIGZwcjsKLSAg
ICB9Ci0KLSAgICBjYXNlIERhdGFGb3JtYXROb25lOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0b3Jh
Z2U6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBjYXNlIERh
dGFGb3JtYXRDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKLSAgICBjYXNlIERhdGFG
b3JtYXRCb29sZWFuOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKLSAgICAgICAgdGVy
bWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAp
OwotICAgICAgICByZXR1cm4gZnByQWxsb2NhdGUoKTsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBJbnZhbGlkRlBS
UmVnOwotICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0g
RGF0YUZvcm1hdERvdWJsZSk7CisgICAgRlBSUmVnIGZwciA9IGluZm8uZnByKCk7CisgICAgbV9m
cHJzLmxvY2soZnByKTsKKyAgICByZXR1cm4gZnByOwogfQogCiBHUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UgZWRnZSkKQEAgLTk4OCw3ICs4NjcsNyBAQCBHUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAKICAgICBzd2l0Y2ggKGluZm8u
cmVnaXN0ZXJGb3JtYXQoKSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAg
aWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50MzIgfHwgaW5mby5zcGlsbEZv
cm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKKyAgICAgICAgaWYgKGluZm8uc3BpbGxGb3Jt
YXQoKSA9PSBEYXRhRm9ybWF0SW50MzIpIHsKICAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0
aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgICAg
IHJldHVybiBhbGxvY2F0ZSgpOwogICAgICAgICB9CkBAIC0xMDUyLDEyICs5MzEsMTIgQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogICAgIGNhc2UgRGF0YUZvcm1h
dEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0
SlNEb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1h
dEpTQm9vbGVhbjoKICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgogICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAg
ICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogCisgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgog
ICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAKQEAgLTEwNzcsNyArOTU2LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpm
aWxsU3BlY3VsYXRlQm9vbAogCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsK
ICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAgICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0
KCkgPT0gRGF0YUZvcm1hdEludDMyIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0
RG91YmxlKSB7CisgICAgICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdElu
dDMyKSB7CiAgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsK
ICAgICAgICAgfQpAQCAtMTEzMywxMiArMTAxMiwxMiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVCb29sCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAgICBjYXNl
IERhdGFGb3JtYXRJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKLSAgICBjYXNl
IERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgogICAgIGNhc2Ug
RGF0YUZvcm1hdENlbGw6CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7
CiAKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFn
ZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApAQCAtMTE0OCwyOCAr
MTAyNyw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICB9
CiB9CiAKLUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpjb252ZXJ0VG9Eb3VibGUo
SlNWYWx1ZU9wZXJhbmQmIG9wLCBGUFJSZWcgcmVzdWx0KQotewotICAgIEZQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwotCi0gICAgR1BSUmVnIG9wUGF5bG9hZEdQUiA9IG9wLnBheWxvYWRHUFIo
KTsKLSAgICBHUFJSZWcgb3BUYWdHUFIgPSBvcC50YWdHUFIoKTsKLSAgICBGUFJSZWcgc2NyYXRj
aEZQUiA9IHNjcmF0Y2guZnByKCk7Ci0KLSAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIg
PSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG9wVGFnR1BSLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBub3ROdW1i
ZXIgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcFBheWxv
YWRHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKTsKLQotICAgIHVuYm94RG91
YmxlKG9wVGFnR1BSLCBvcFBheWxvYWRHUFIsIHJlc3VsdCwgc2NyYXRjaEZQUik7Ci0gICAgSklU
Q29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLQotICAgIGlzSW50ZWdlci5saW5r
KCZtX2ppdCk7Ci0gICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3BQYXlsb2FkR1BSLCBy
ZXN1bHQpOwotCi0gICAgZG9uZS5saW5rKCZtX2ppdCk7Ci0KLSAgICByZXR1cm4gbm90TnVtYmVy
OwotfQotCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQmFzZVZhbHVlU3RvcmVCYXJyaWVy
KEVkZ2UmIGJhc2VFZGdlLCBFZGdlJiB2YWx1ZUVkZ2UpCiB7CiAjaWYgRU5BQkxFKEdHQykKQEAg
LTE1NDcsNyArMTQwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90
KE4KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBOdW1iZXJVc2U6
IHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgRlBSVGVtcG9yYXJ5IHNj
cmF0Y2godGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwpA
QCAtMTY3Niw3ICsxNTMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2Rl
KiBubwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGNhc2UgTnVtYmVyVXNlOgor
ICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSkgewogICAgICAgICAgICAgYm9v
bCBpbnZlcnQgPSBmYWxzZTsKQEAgLTE4MTcsNiArMTY3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIEpT
Q29uc3RhbnQ6CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKICAgICAgICAgaW5pdENvbnN0YW50
SW5mbyhub2RlKTsKICAgICAgICAgYnJlYWs7CiAKQEAgLTE5NzgsMTQgKzE4MzYsNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKICAgICAgICAgY2FzZSBGbHVzaGVkQXJndW1lbnRzOiB7
Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKG5vZGUt
PmNoaWxkMSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSkucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0RG91YmxlKSB7Ci0gICAgICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAg
ICAgICAgICAgICBtX2ppdC5zdG9yZURvdWJsZSh2YWx1ZS5mcHIoKSwgSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3Iobm9kZS0+bWFjaGluZUxvY2FsKCkpKTsKLSAgICAgICAgICAgICAgICBub1Jlc3Vs
dChub2RlKTsKLSAgICAgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChEYXRhRm9ybWF0RG91Ymxl
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAog
ICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5wYXlsb2FkR1BSKCksIEpJVENvbXBpbGVy
OjpwYXlsb2FkRm9yKG5vZGUtPm1hY2hpbmVMb2NhbCgpKSk7CiAgICAgICAgICAgICBtX2ppdC5z
dG9yZTMyKHZhbHVlLnRhZ0dQUigpLCBKSVRDb21waWxlcjo6dGFnRm9yKG5vZGUtPm1hY2hpbmVM
b2NhbCgpKSk7CkBAIC0yMDc3LDggKzE5MjcsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNh
c2UgSW50MzJUb0RvdWJsZTogewotICAgICAgICBjb21waWxlSW50MzJUb0RvdWJsZShub2RlKTsK
KyAgICBjYXNlIERvdWJsZVJlcDogeworICAgICAgICBjb21waWxlRG91YmxlUmVwKG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgVmFsdWVSZXA6IHsKKyAg
ICAgICAgY29tcGlsZVZhbHVlUmVwKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
ICAgIApAQCAtMjE1MSw3ICsyMDA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAgICAgCi0gICAgICAgIGNh
c2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgCkBAIC0yMTkz
LDcgKzIwNDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1i
ZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIFNwZWN1
bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAg
IFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKQEAgLTQ3NDUsOCArNDYwMCw4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENo
ZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICBjYXNl
IENoZWNrVGllclVwQW5kT1NSRW50ZXI6Ci0gICAgY2FzZSBJbnQ1MlRvRG91YmxlOgotICAgIGNh
c2UgSW50NTJUb1ZhbHVlOgorICAgIGNhc2UgSW50NTJSZXA6CisgICAgY2FzZSBJbnQ1MkNvbnN0
YW50OgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICBjYXNlIEFyaXRoSU11bDoKICAgICBj
YXNlIE11bHRpR2V0QnlPZmZzZXQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNiwyMSArMTA2LDkgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1
ZShFZGdlIAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6Ci0gICAgICAgICAgICBj
YXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjogewotICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2
NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAg
ICAgICAgICAgIGJveEludDUyKGdwciwgZ3ByLCBzcGlsbEZvcm1hdCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGdwcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICAgICAgaWYgKHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXREb3VibGUpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8g
TmVlZCB0byBib3ggdGhlIGRvdWJsZSwgc2luY2Ugd2Ugd2FudCBhIEpTVmFsdWUuCi0gICAgICAg
ICAgICAgICAgICAgIG1faml0LnN1YjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwg
Z3ByKTsKLSAgICAgICAgICAgICAgICAgICAgc3BpbGxGb3JtYXQgPSBEYXRhRm9ybWF0SlNEb3Vi
bGU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0
cmVhbSwgZ3ByLCBzcGlsbEZvcm1hdCk7CkBAIC0xNDMsMjggKzEzMSw2IEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9
CiAKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6IHsKLSAgICAgICAgRlBSUmVnIGZwciA9IGlu
Zm8uZnByKCk7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBib3hEb3VibGUoZnByKTsKLQotICAgICAg
ICAvLyBVcGRhdGUgYWxsIGluZm8KLSAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0s
IGdwciwgRGF0YUZvcm1hdEpTRG91YmxlKTsKLSAgICAgICAgbV9mcHJzLnJlbGVhc2UoZnByKTsK
LSAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckpT
KTsKLQotICAgICAgICByZXR1cm4gZ3ByOwotICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBEYXRh
Rm9ybWF0SW50NTI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKLSAgICAgICAg
R1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIGxvY2soZ3ByKTsKLSAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IGFsbG9jYXRlKCk7Ci0gICAgICAgIGJveEludDUyKGdwciwgcmVzdWx0
R1BSLCBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpOwotICAgICAgICB1bmxvY2soZ3ByKTsKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdEdQUjsKLSAgICB9Ci0KICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgog
ICAgICAgICAvLyBObyByZXRhZyByZXF1aXJlZCBvbiBKU1ZBTFVFNjQhCiAgICAgY2FzZSBEYXRh
Rm9ybWF0SlM6CkBAIC0xNzksNiArMTQ1LDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
SlNWYWx1ZShFZGdlIAogICAgICAgICAKICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgogICAg
IGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CisgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgorICAg
IGNhc2UgRGF0YUZvcm1hdEludDUyOgogICAgICAgICAvLyB0aGlzIHR5cGUgY3VycmVudGx5IG5l
dmVyIG9jY3VycwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAKQEAgLTc2OSwxMiArNzM3LDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlSW50MwogICAgIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAg
Y2FzZSBEYXRhRm9ybWF0Tm9uZTogewotICAgICAgICBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09
IERhdGFGb3JtYXREb3VibGUpIHsKLSAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhl
Y3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKLSAgICAgICAgICAgIHJldHVy
bkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKLSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgp
OwotICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsK
IAogICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewpAQCAtNzg4LDcgKzc1MCw3IEBA
IEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgCiAgICAg
ICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CiAgICAgICAg
IAotICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8
IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9y
bWF0SW50NTIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZv
cm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpOwogICAgICAgICAKICAgICAgICAgbV9ncHJzLnJldGFp
bihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwogICAgICAgICAKQEAg
LTgwOSwzNiArNzcxLDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50
MwogICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEpTSW50MzI7CiAgICAgICAg
ICAgICByZXR1cm4gZ3ByOwogICAgICAgICB9Ci0gICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBE
YXRhRm9ybWF0SW50NTIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKSB7
Ci0gICAgICAgICAgICAvLyBHZW5lcmFsbHksIHRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmIHdlJ3Zl
IGFscmVhZHkgcHJvdmVkIHRoYXQgdGhlCi0gICAgICAgICAgICAvLyB2YWx1ZSBpcyBhbiBpbnQz
Mi4gVGhhdCdzIGJlY2F1c2UgaWYgYSB2YWx1ZSBvcmlnaW5hdGVkIGFzIGEgSlNWYWx1ZQotICAg
ICAgICAgICAgLy8gdGhlbiB3ZSB3b3VsZCBzcGVjdWxhdGUgdGhhdCBpdCdzIGFuIGludDMyIGJl
Zm9yZSByZXByZXNlbnRpbmcgaXQgYXMKLSAgICAgICAgICAgIC8vIGFuIGludDUyLiBPdGhlcndp
c2UsIGlmIHdlIGtub3dpbmdseSBwcm9kdWNlZCBhbiBpbnQ1MiwgdGhlbiB3ZSB3b3VsZAotICAg
ICAgICAgICAgLy8gYmUgYm94aW5nIGl0IGludG8gYSB2YWx1ZSB1c2luZyBJbnQ1MlRvVmFsdWUu
IFRoaXMgYXNzZXJ0aW9uIGlzIHZhbGlkCi0gICAgICAgICAgICAvLyBvbmx5IGJlY2F1c2UgSW50
NTIgaXMgc29tZXRoaW5nIHRoYXQgd2UgaW50cm9kdWNlIGF0IHByZWRpY3Rpb24gdGltZS4KLSAg
ICAgICAgICAgIC8vIEhvd2V2ZXI6IHdlIG1heSBoYXZlIGFuIGludDMyLXByb2R1Y2luZyBub2Rl
IHJlcGxhY2VkIGJ5IGFuCi0gICAgICAgICAgICAvLyBpbnQ1Mi1wcm9kdWNpbmcgbm9kZSBkdWUg
dG8gQ1NFLiBTbyB3ZSBtdXN0IGRvIGEgY2hlY2suCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VCghKHR5cGUgJiB+U3BlY01hY2hpbmVJbnQpKTsKLSAgICAgICAgICAgIGlmICh0eXBlICYgU3Bl
Y0ludDUyKSB7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOwotICAg
ICAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGdwciwgdGVtcCk7Ci0gICAgICAg
ICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBjYW4ndCBzdXBwbHkgdmFsdWUgcHJvZmlsaW5nIGlu
Zm9ybWF0aW9uIGhlcmUuIDotLwotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0g
ICAgICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAg
ICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgZ3ByLCB0
ZW1wKSk7Ci0gICAgICAgICAgICAgICAgdW5sb2NrKHRlbXApOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKLSAgICAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJl
Z2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1faml0
LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwot
ICAgICAgICAgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1
MlNoaWZ0QW1vdW50KSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJU
b1B0cihncHIsIGdwcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQz
MigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0
SW50MzI7Ci0gICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICB9CiAgICAgICAgIG1faml0
LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwog
CiAgICAgICAgIC8vIEZpbGwgYXMgSlNWYWx1ZSwgYW5kIGZhbGwgdGhyb3VnaC4KQEAgLTg5Nyw0
NyArODI5LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAg
ICAgICByZXR1cm4gZ3ByOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBEYXRhRm9ybWF0U3Ry
aWN0SW50NTI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6IHsKLSAgICAgICAgR1BSUmVnIGdw
ciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyByZXN1bHQ7Ci0gICAgICAgIERhdGFGb3Jt
YXQgb2xkRm9ybWF0ID0gaW5mby5yZWdpc3RlckZvcm1hdCgpOwotICAgICAgICBpZiAobV9ncHJz
LmlzTG9ja2VkKGdwcikpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGFsbG9jYXRlKCk7Ci0gICAg
ICAgICAgICBtX2ppdC5tb3ZlKGdwciwgcmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGxvY2soZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwg
Z3ByKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGdwcjsKLSAgICAgICAgfQotICAgICAgICBSRUxF
QVNFX0FTU0VSVCghKHR5cGUgJiB+U3BlY01hY2hpbmVJbnQpKTsKLSAgICAgICAgaWYgKG9sZEZv
cm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCi0gICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIHJlc3VsdCk7Ci0gICAgICAgIGlm
ICh0eXBlICYgU3BlY0ludDUyKSB7Ci0gICAgICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9jYXRl
KCk7Ci0gICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHQsIHRlbXApOwot
ICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBjYW4ndCBzdXBwbHkgdmFsdWUgcHJvZmlsaW5n
IGluZm9ybWF0aW9uIGhlcmUuIDotLwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAg
ICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCAwLAotICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgcmVzdWx0LCB0ZW1wKSk7
Ci0gICAgICAgICAgICB1bmxvY2sodGVtcCk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9qaXQuemVy
b0V4dGVuZDMyVG9QdHIocmVzdWx0LCByZXN1bHQpOwotICAgICAgICByZXR1cm5Gb3JtYXQgPSBE
YXRhRm9ybWF0SW50MzI7Ci0gICAgICAgIHJldHVybiBncHI7Ci0gICAgfQotCi0gICAgY2FzZSBE
YXRhRm9ybWF0RG91YmxlOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOiB7Ci0gICAgICAg
IGlmIChlZGdlLT5oYXNDb25zdGFudCgpICYmIGlzSW50MzJDb25zdGFudChlZGdlLm5vZGUoKSkp
IHsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgQVNT
RVJUKGlzSW50MzJDb25zdGFudChlZGdlLm5vZGUoKSkpOwotICAgICAgICAgICAgbV9qaXQubW92
ZShNYWNyb0Fzc2VtYmxlcjo6SW1tMzIodmFsdWVPZkludDMyQ29uc3RhbnQoZWRnZS5ub2RlKCkp
KSwgZ3ByKTsKLSAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKLSAg
ICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgIH0KLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0g
ICAgfQorICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdENl
bGw6CiAgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKICAgICBjYXNlIERhdGFGb3JtYXRKU0Nl
bGw6CkBAIC05NDcsNyArODM5LDEwIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZUludDMKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgfQogCisgICAgY2FzZSBE
YXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CisgICAgY2FzZSBE
YXRhRm9ybWF0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBA
IC05NzYsMTQgKzg3MSwxMyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJ
bnQ1CiB7CiAgICAgQVNTRVJUKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IGRl
c2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKTsKICAgICBBYnN0cmFjdFZhbHVl
JiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKLSAgICBTcGVjdWxhdGVkVHlwZSB0eXBl
ID0gdmFsdWUubV90eXBlOwogICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjTWFj
aGluZUludCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZp
cnR1YWxSZWdpc3RlcigpOwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbklu
Zm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CiAKICAgICBzd2l0Y2ggKGlu
Zm8ucmVnaXN0ZXJGb3JtYXQoKSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAg
ICAgaWYgKChlZGdlLT5oYXNDb25zdGFudCgpICYmICF2YWx1ZU9mSlNDb25zdGFudChlZGdlLm5v
ZGUoKSkuaXNNYWNoaW5lSW50KCkpIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0
RG91YmxlKSB7CisgICAgICAgIGlmICgoZWRnZS0+aGFzQ29uc3RhbnQoKSAmJiAhdmFsdWVPZkpT
Q29uc3RhbnQoZWRnZS5ub2RlKCkpLmlzTWFjaGluZUludCgpKSkgewogICAgICAgICAgICAgdGVy
bWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAp
OwogICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgICAgIH0KQEAgLTEwMDQsODIg
Kzg5OCwyMSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ1CiAgICAg
ICAgIAogICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgp
OwogICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZv
cm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIgfHwgc3BpbGxGb3JtYXQg
PT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1
Mik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1
MiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpOwogICAgICAgICAKICAg
ICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxs
ZWQpOwogICAgICAgICAKLSAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRKU0lu
dDMyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMikgewotICAgICAgICAgICAgLy8g
SWYgd2Uga25vdyB0aGlzIHdhcyBzcGlsbGVkIGFzIGFuIGludGVnZXIgd2UgY2FuIGZpbGwgd2l0
aG91dCBjaGVja2luZy4KLSAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgbV9qaXQuc2lnbkV4
dGVuZDMyVG9QdHIoZ3ByLCBncHIpOwotICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0g
RGF0YUZvcm1hdFN0cmljdEludDUyKSB7Ci0gICAgICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0
SW50NTIoKm1fc3RyZWFtLCBncHIpOwotICAgICAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6aW50NTJTaGlmdEFtb3VudCksIGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQ1Migq
bV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICB9Ci0gICAg
ICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIgfHwgc3BpbGxGb3JtYXQgPT0g
RGF0YUZvcm1hdFN0cmljdEludDUyKSB7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29t
cGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGlm
IChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewotICAgICAgICAgICAg
ICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCi0gICAgICAgICAgICAgICAg
ICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50
KSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ1MigqbV9zdHJlYW0s
IGdwcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpCi0gICAgICAg
ICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRB
bW91bnQpLCBncHIpOwotICAgICAgICAgICAgaW5mby5maWxsSW50NTIoKm1fc3RyZWFtLCBncHIp
OwotICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgfQogICAgICAgICBtX2ppdC5sb2Fk
NjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLQotICAg
ICAgICAvLyBGaWxsIGFzIEpTVmFsdWUsIGFuZCBmYWxsIHRocm91Z2guCi0gICAgICAgIGluZm8u
ZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0ludDMyKTsKLSAgICAgICAg
bV9ncHJzLnVubG9jayhncHIpOwotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICB9Ci0KLSAgICBj
YXNlIERhdGFGb3JtYXRKUzogewotICAgICAgICAvLyBDaGVjayB0aGUgdmFsdWUgaXMgYW4gaW50
ZWdlci4gTm90ZSB0aGF0IHdlIHdvdWxkICpsaWtlKiB0byB1bmJveCBhbiBJbnQ1MgotICAgICAg
ICAvLyBhdCB0aGlzIHBvaW50IGJ1dCB0aGlzIGlzIHRvbyBjb3N0bHkuIFdlIG9ubHkgKnByb3Zl
KiB0aGF0IHRoaXMgaXMgYW4gSW50NTIKLSAgICAgICAgLy8gZXZlbiB0aG91Z2ggd2UgY2hlY2sg
aWYgaXQncyBhbiBpbnQzMi4KLSAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7Ci0gICAg
ICAgIEdQUlJlZyByZXN1bHQ7Ci0gICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgewot
ICAgICAgICAgICAgcmVzdWx0ID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUo
Z3ByLCByZXN1bHQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9ncHJzLmxvY2so
Z3ByKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGdwcjsKLSAgICAgICAgfQotICAgICAgICBpZiAo
dHlwZSAmIH5TcGVjSW50MzIpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKHJlc3VsdCksIGVkZ2UsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVy
OjpCZWxvdywgcmVzdWx0LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKLSAgICAg
ICAgaWYgKHJlc3VsdCA9PSBncHIpIC8vIFRoZSBub3QtYWxyZWFkeS1sb2NrZWQsIHNvIGZpbGwg
aW4tcGxhY2UsIGNhc2UuCi0gICAgICAgICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0sIGdw
ciwgZGVzaXJlZEZvcm1hdCk7Ci0gICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3Vs
dCwgcmVzdWx0KTsKLSAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUy
KQotICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUy
U2hpZnRBbW91bnQpLCByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQot
ICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6IHsK
LSAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyByZXN1bHQ7
Ci0gICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgewotICAgICAgICAgICAgcmVzdWx0
ID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKLSAgICAgICAgICAg
IGluZm8uZmlsbEludDUyKCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IGdwcjsKKyAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1h
dFN0cmljdEludDUyKSB7CisgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1h
dEludDUyKQorICAgICAgICAgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbFN0cmlj
dEludDUyKCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAg
IH0KLSAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0LCByZXN1bHQpOwotICAg
ICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCi0gICAgICAgICAgICBt
X2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIHJl
c3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9
PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpCisgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIGdwcik7CisgICAgICAgIGluZm8u
ZmlsbEludDUyKCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CiAK
ICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjogewpAQCAtMTExNiwzMSArOTQ5LDYgQEAg
R1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50NQogICAgICAgICByZXR1cm4g
Z3ByOwogICAgIH0KIAotICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKLSAgICBjYXNlIERhdGFG
b3JtYXRKU0RvdWJsZToKLSAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKLSAgICAg
ICAgICAgIEpTVmFsdWUganNWYWx1ZSA9IHZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsK
LSAgICAgICAgICAgIGlmIChqc1ZhbHVlLmlzTWFjaGluZUludCgpKSB7Ci0gICAgICAgICAgICAg
ICAgaW50NjRfdCB2YWx1ZSA9IGpzVmFsdWUuYXNNYWNoaW5lSW50KCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQotICAgICAgICAgICAgICAg
ICAgICB2YWx1ZSA9IHZhbHVlIDw8IEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQ7Ci0gICAgICAg
ICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICAgICAgbV9qaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tNjQodmFsdWUpLCBncHIpOwotICAgICAgICAgICAgICAg
IHJldHVybiBncHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgRkFMTFRIUk9V
R0g7Ci0gICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKLSAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFu
OgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKLSAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xl
YW46IHsKLSAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUs
IEpTVmFsdWVSZWdzKCksIDApOwotICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKLSAgICB9Ci0K
LSAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKQEAgLTExNDks
MTAgKzk1Nyw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDUKIAog
RlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YmxlKEVkZ2UgZWRnZSkKIHsK
LSAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKLSAgICBT
cGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90eXBlOwotICAgIEFTU0VSVChlZGdlLnVzZUtp
bmQoKSAhPSBLbm93bk51bWJlclVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjRnVsbE51bWJl
cikpOwotICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjRnVsbE51bWJlcik7Cisg
ICAgQVNTRVJUKGVkZ2UudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSB8fCBlZGdlLnVzZUtpbmQo
KSA9PSBEb3VibGVSZXBSZWFsVXNlKTsKKyAgICBBU1NFUlQoZWRnZS0+aGFzRG91YmxlUmVzdWx0
KCkpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFs
UmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJv
bVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogCkBAIC0xMTYwLDE3ICs5NjYsNiBA
QCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIGlmIChl
ZGdlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUo
KTsKIAotICAgICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChlZGdlLm5vZGUoKSkpIHsKLSAg
ICAgICAgICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgICAgICAg
ICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW02NChyZWludGVycHJldERvdWJsZVRvSW50
NjQoc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZU9mSW50MzJDb25zdGFudChlZGdlLm5vZGUoKSkp
KSksIGdwcik7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZTY0VG9Eb3VibGUoZ3ByLCBmcHIp
OwotICAgICAgICAgICAgICAgIHVubG9jayhncHIpOwotCi0gICAgICAgICAgICAgICAgLy8gRG9u
J3QgZmlsbCBkb3VibGUgaGVyZSBzaW5jZSB0aGF0IHdpbGwgbGVhZCB0byBjb25mdXNpb246IHRo
ZQotICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGFsbG9jYXRvciB3aWxsIG5vdyB0aGluayB0
aGF0IHRoaXMgaXMgYSBkb3VibGUgd2hpbGUKLSAgICAgICAgICAgICAgICAvLyBldmVyeW9uZSBl
bHNlIHRoaW5rcyBpdCdzIGFuIGludGVnZXIuCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZwcjsK
LSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpc051bWJlckNvbnN0YW50KGVkZ2Uubm9k
ZSgpKSkgewogICAgICAgICAgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwogICAg
ICAgICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHJlaW50ZXJwcmV0
RG91YmxlVG9JbnQ2NCh2YWx1ZU9mTnVtYmVyQ29uc3RhbnQoZWRnZS5ub2RlKCkpKSksIGdwcik7
CkBAIC0xMTg2LDE1OSArOTgxLDE4IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZURvdWIKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZv
cm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKLSAgICAgICAgc3dpdGNoIChzcGlsbEZvcm1hdCkg
ewotICAgICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6IHsKLSAgICAgICAgICAgIEZQUlJlZyBm
cHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21w
aWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBmcHIpOwotICAgICAgICAgICAgbV9m
cHJzLnJldGFpbihmcHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7Ci0gICAg
ICAgICAgICBpbmZvLmZpbGxEb3VibGUoKm1fc3RyZWFtLCBmcHIpOwotICAgICAgICAgICAgcmV0
dXJuIGZwcjsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgRGF0YUZvcm1h
dEludDMyOiB7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3Bp
bGxPcmRlclNwaWxsZWQpOwotICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxJ
bnQzMigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICB1bmxvY2soZ3ByKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBEYXRhRm9y
bWF0SW50NTI6IHsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAg
ICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxs
ZWQpOwotICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJl
YW0sIGdwcik7Ci0gICAgICAgICAgICB1bmxvY2soZ3ByKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50
NTI6IHsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAg
bV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwot
ICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxS
ZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ1MigqbV9zdHJl
YW0sIGdwcik7Ci0gICAgICAgICAgICB1bmxvY2soZ3ByKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBh
bGxvY2F0ZSgpOwotCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCAmIERh
dGFGb3JtYXRKUyk7Ci0gICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lz
dGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29t
cGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGlu
Zm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIHNwaWxsRm9ybWF0KTsKLSAgICAgICAgICAg
IHVubG9jayhncHIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgewotICAgIGNhc2UgRGF0YUZvcm1hdE5v
bmU6IC8vIFNob3VsZCBoYXZlIGZpbGxlZCwgYWJvdmUuCi0gICAgY2FzZSBEYXRhRm9ybWF0Qm9v
bGVhbjogLy8gVGhpcyB0eXBlIG5ldmVyIG9jY3Vycy4KLSAgICBjYXNlIERhdGFGb3JtYXRTdG9y
YWdlOgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgY2FzZSBE
YXRhRm9ybWF0Q2VsbDoKLSAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5j
b3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwotICAgICAgICByZXR1cm4gZnByQWxsb2NhdGUo
KTsKLQotICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKLSAgICBjYXNlIERhdGFGb3JtYXRKUzoK
LSAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46IHsKLSAgICAgICAgR1BSUmVnIGpzVmFsdWVH
cHIgPSBpbmZvLmdwcigpOwotICAgICAgICBtX2dwcnMubG9jayhqc1ZhbHVlR3ByKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdERvdWJsZSk7CiAgICAg
ICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICBHUFJSZWcgdGVtcEdwciA9
IGFsbG9jYXRlKCk7Ci0KLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9q
aXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwganNWYWx1ZUdwciwgR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLQotICAgICAgICBpZiAodHlwZSAmIH5TcGVj
RnVsbE51bWJlcikKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVJlZ3MoanNWYWx1ZUdwciksIGVkZ2UsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxl
cjo6WmVybywganNWYWx1ZUdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7Ci0K
LSAgICAgICAgLy8gRmlyc3QsIGlmIHdlIGdldCBoZXJlIHdlIGhhdmUgYSBkb3VibGUgZW5jb2Rl
ZCBhcyBhIEpTVmFsdWUKLSAgICAgICAgbV9qaXQubW92ZShqc1ZhbHVlR3ByLCB0ZW1wR3ByKTsK
LSAgICAgICAgdW5ib3hEb3VibGUodGVtcEdwciwgZnByKTsKLSAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgaGFzVW5ib3hlZERvdWJsZSA9IG1faml0Lmp1bXAoKTsKLQotICAgICAgICAvLyBGaW5h
bGx5LCBoYW5kbGUgaW50ZWdlcnMuCi0gICAgICAgIGlzSW50ZWdlci5saW5rKCZtX2ppdCk7Ci0g
ICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKGpzVmFsdWVHcHIsIGZwcik7Ci0gICAg
ICAgIGhhc1VuYm94ZWREb3VibGUubGluaygmbV9qaXQpOwotCi0gICAgICAgIG1fZ3Bycy5yZWxl
YXNlKGpzVmFsdWVHcHIpOwotICAgICAgICBtX2dwcnMudW5sb2NrKGpzVmFsdWVHcHIpOwotICAg
ICAgICBtX2dwcnMudW5sb2NrKHRlbXBHcHIpOworICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJ
VENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7CiAgICAgICAgIG1f
ZnBycy5yZXRhaW4oZnByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJEb3VibGUpOwogICAg
ICAgICBpbmZvLmZpbGxEb3VibGUoKm1fc3RyZWFtLCBmcHIpOwotICAgICAgICBpbmZvLmtpbGxT
cGlsbGVkKCk7CiAgICAgICAgIHJldHVybiBmcHI7CiAgICAgfQogCi0gICAgY2FzZSBEYXRhRm9y
bWF0SlNJbnQzMjoKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjogewotICAgICAgICBGUFJSZWcg
ZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7Ci0g
ICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91
YmxlKGdwciwgZnByKTsKLSAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwotICAgICAgICByZXR1
cm4gZnByOwotICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6IHsKLSAg
ICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBp
bmZvLmdwcigpOwotICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICBHUFJSZWcgdGVt
cCA9IGFsbG9jYXRlKCk7Ci0gICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1wKTsKLSAgICAgICAg
bV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCB0
ZW1wKTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUodGVtcCwgZnByKTsKLSAg
ICAgICAgdW5sb2NrKHRlbXApOwotICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0gICAgICAg
IHJldHVybiBmcHI7Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJ
bnQ1MjogewotICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BS
UmVnIGdwciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAg
IG1faml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKGdwciwgZnByKTsKLSAgICAgICAgbV9ncHJzLnVu
bG9jayhncHIpOwotICAgICAgICByZXR1cm4gZnByOwotICAgIH0KLQotICAgIC8vIFVuYm94IHRo
ZSBkb3VibGUKLSAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZTogewotICAgICAgICBHUFJSZWcg
Z3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0g
ICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgewotICAgICAgICAgICAgLy8gTWFrZSBz
dXJlIHdlIGRvbid0IHRyYW1wbGUgZ3ByIGlmIGl0IGlzIGluIHVzZS4KLSAgICAgICAgICAgIEdQ
UlJlZyB0ZW1wID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1w
KTsKLSAgICAgICAgICAgIHVuYm94RG91YmxlKHRlbXAsIGZwcik7Ci0gICAgICAgICAgICB1bmxv
Y2sodGVtcCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdW5ib3hEb3VibGUoZ3ByLCBm
cHIpOwotCi0gICAgICAgIG1fZ3Bycy5yZWxlYXNlKGdwcik7Ci0gICAgICAgIG1fZnBycy5yZXRh
aW4oZnByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJEb3VibGUpOwotCi0gICAgICAgIGlu
Zm8uZmlsbERvdWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgIHJldHVybiBmcHI7Ci0gICAg
fQotCi0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7Ci0gICAgICAgIEZQUlJlZyBmcHIgPSBp
bmZvLmZwcigpOwotICAgICAgICBtX2ZwcnMubG9jayhmcHIpOwotICAgICAgICByZXR1cm4gZnBy
OwotICAgIH0KLSAgICAgICAgCi0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEludmFsaWRGUFJSZWc7Ci0gICAgfQorICAg
IFJFTEVBU0VfQVNTRVJUKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91Ymxl
KTsKKyAgICBGUFJSZWcgZnByID0gaW5mby5mcHIoKTsKKyAgICBtX2ZwcnMubG9jayhmcHIpOwor
ICAgIHJldHVybiBmcHI7CiB9CiAKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZUNlbGwoRWRnZSBlZGdlKQpAQCAtMTM1MiwxMSArMTAwNiw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1h
dCgpKSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewotICAgICAgICBpZiAoaW5mby5zcGls
bEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMiB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0
YUZvcm1hdERvdWJsZSkgewotICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRp
b24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwotICAgICAgICAgICAgcmV0dXJuIGFs
bG9jYXRlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCiAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxv
Y2F0ZSgpOwogCiAgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CkBAIC0xNDA1LDE2
ICsxMDU0LDE2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAg
ICBjYXNlIERhdGFGb3JtYXRKU0ludDMyOgogICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgogICAg
IGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgotICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAg
ICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46Ci0gICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoK
LSAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKLSAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1
MjogeworICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46IHsKICAgICAgICAgdGVybWluYXRlU3Bl
Y3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAg
ICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CiAKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6
CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoK
KyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTE0MzMsNyArMTA4Miw3
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKIAogICAgIHN3aXRj
aCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewot
ICAgICAgICBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMiB8fCBpbmZv
LnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgeworICAgICAgICBpZiAoaW5mby5z
cGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMikgewogICAgICAgICAgICAgdGVybWluYXRl
U3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAg
ICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgICAgIH0KQEAgLTE0ODcsMTYgKzExMzYs
MTUgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogICAgIGNhc2Ug
RGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CiAgICAgY2FzZSBE
YXRhRm9ybWF0SlNEb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2Ug
RGF0YUZvcm1hdEpTQ2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgotICAgIGNhc2UgRGF0
YUZvcm1hdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOiB7CiAgICAgICAg
IHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7Ci0gICAgfQogICAgICAgICAKKyAgICBj
YXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBj
YXNlIERhdGFGb3JtYXRJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgCiAgICAgZGVmYXVs
dDoKQEAgLTE1MDUsMjYgKzExNTMsNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVCb29sCiAgICAgfQogfQogCi1KSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6
Y29udmVydFRvRG91YmxlKEdQUlJlZyB2YWx1ZSwgRlBSUmVnIHJlc3VsdCwgR1BSUmVnIHRtcCkK
LXsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NChNYWNy
b0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB2YWx1ZSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyKTsKLSAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBub3ROdW1iZXIgPSBtX2ppdC5i
cmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHZhbHVlLCBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpOwotICAgIAotICAgIG1faml0Lm1vdmUodmFsdWUsIHRtcCk7Ci0gICAg
dW5ib3hEb3VibGUodG1wLCByZXN1bHQpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRv
bmUgPSBtX2ppdC5qdW1wKCk7Ci0gICAgCi0gICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsKLSAg
ICAKLSAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZSh2YWx1ZSwgcmVzdWx0KTsKLSAgICAK
LSAgICBkb25lLmxpbmsoJm1faml0KTsKLQotICAgIHJldHVybiBub3ROdW1iZXI7Ci19Ci0KIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCYXNlVmFsdWVTdG9yZUJhcnJpZXIoRWRnZSYgYmFz
ZUVkZ2UsIEVkZ2UmIHZhbHVlRWRnZSkKIHsKICNpZiBFTkFCTEUoR0dDKQpAQCAtMTkyMSw3ICsx
NTQ5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTgogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIE51bWJlclVzZTogeworICAgIGNh
c2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTIwNjAsNyArMTY4OCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2goTm9kZSogbm8KICAgICB9CiAgICAg
ICAgIAogICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNl
IERvdWJsZVJlcFVzZTogewogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IEludDMyVXNlKSB7CiAgICAgICAgICAgICBib29sIGludmVydCA9IGZhbHNlOwogICAgICAgICAg
ICAgCkBAIC0yMTUzLDYgKzE3ODEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAKICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBKU0NvbnN0YW50OgorICAg
IGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICBp
bml0Q29uc3RhbnRJbmZvKG5vZGUpOwogICAgICAgICBicmVhazsKIApAQCAtMjQwMCwyNCArMjAz
MCwyMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7Ci0gICAg
ICAgIGNvbXBpbGVJbnQzMlRvRG91YmxlKG5vZGUpOworICAgIGNhc2UgRG91YmxlUmVwOiB7Cisg
ICAgICAgIGNvbXBpbGVEb3VibGVSZXAobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICAgICAgCi0gICAgY2FzZSBJbnQ1MlRvVmFsdWU6IHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
b3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcywgUmV1c2UsIG9wZXJhbmQpOwotICAgICAgICBtX2ppdC5tb3ZlKG9wZXJhbmQuZ3By
KCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBu
b2RlKTsKKyAgICBjYXNlIFZhbHVlUmVwOiB7CisgICAgICAgIGNvbXBpbGVWYWx1ZVJlcChub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEludDUyVG9Eb3Vi
bGU6IHsKLSAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcGVyYW5kKTsK
LSAgICAgICAgbV9qaXQubW92ZURvdWJsZShvcGVyYW5kLmZwcigpLCByZXN1bHQuZnByKCkpOwot
ICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKKyAgICBjYXNlIEludDUy
UmVwOiB7CisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3Bl
cmFuZCk7CisgICAgICAgIAorICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihvcGVyYW5k
LmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAKKyAgICAgICAgc3RyaWN0SW50NTJSZXN1
bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAK
QEAgLTI0ODYsNyArMjExNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBj
YXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAg
ICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIApAQCAtMjUy
NCw3ICsyMTUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVt
YmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBTcGVj
dWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAg
ICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTY3
MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzMiw4ICszMzIsNiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFu
IFNwZWN1bGF0aXZlSklUOjpzCiAgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRh
Rm9ybWF0SW50NTIpIHsKICAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpCiAgICAgICAg
ICAgICBmaWxsQWN0aW9uID0gU2V0SW50NTJDb25zdGFudDsKLSAgICAgICAgZWxzZSBpZiAoaXNK
U0ludDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFG
b3JtYXRKUykKLSAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkMzJQYXlsb2FkQ29udmVydFRv
SW50NTI7CiAgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0
SW50NTIpCiAgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OwogICAgICAgICBlbHNlIGlm
IChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKQpAQCAtMzQxLDE3
ICszMzksMTIgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAg
ICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUpCiAgICAg
ICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IC8vIFNob3VsZCBuZXZlciBoYXBwZW4uIEFueXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFzIGFuIGlu
dDMyIHdpbGwgbmV2ZXIKLSAgICAgICAgICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEgY2VsbCAoaW1t
ZWRpYXRlIHNwZWMgZmFpbCkgb3IgYSBkb3VibGUgKHRvLWRvdWJsZQotICAgICAgICAgICAgLy8g
Y29udmVyc2lvbnMgaW52b2x2ZSBhIHNlcGFyYXRlIG5vZGUpLgogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7
IC8vIE1ha2UgR0NDIGhhcHB5LgogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChyZWdpc3RlckZv
cm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpIHsKICAgICAgICAgaWYgKG5vZGUtPmhhc0Nv
bnN0YW50KCkpCiAgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0U3RyaWN0SW50NTJDb25zdGFu
dDsKLSAgICAgICAgZWxzZSBpZiAoaXNKU0ludDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwgaW5m
by5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRKUykKLSAgICAgICAgICAgIGZpbGxBY3Rpb24g
PSBMb2FkMzJQYXlsb2FkU2lnbkV4dGVuZDsKICAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZv
cm1hdCgpID09IERhdGFGb3JtYXRJbnQ1MikKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2Fk
NjRTaGlmdEludDUyUmlnaHQ7CiAgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9
PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpCkBAIC0zNTksOSArMzUyLDYgQEAgU2lsZW50UmVnaXN0
ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxs
Rm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUpCiAgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9h
ZDY0OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4u
IEFueXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFzIGFuIGludDMyIHdpbGwgbmV2ZXIKLSAgICAgICAg
ICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEgY2VsbCAoaW1tZWRpYXRlIHNwZWMgZmFpbCkgb3IgYSBk
b3VibGUgKHRvLWRvdWJsZQotICAgICAgICAgICAgLy8gY29udmVyc2lvbnMgaW52b2x2ZSBhIHNl
cGFyYXRlIG5vZGUpLgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7IC8vIE1ha2UgR0NDIGhhcHB5LgogICAg
ICAgICB9CkBAIC0zNzYsOSArMzY2LDYgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxh
dGl2ZUpJVDo6cwogICAgICAgICB9IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRh
Rm9ybWF0SW50MzIpIHsKICAgICAgICAgICAgIEFTU0VSVChyZWdpc3RlckZvcm1hdCA9PSBEYXRh
Rm9ybWF0SlNJbnQzMik7CiAgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDMyUGF5bG9hZEJv
eEludDsKLSAgICAgICAgfSBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1h
dERvdWJsZSkgewotICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3Jt
YXRKU0RvdWJsZSk7Ci0gICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZERvdWJsZUJveERvdWJs
ZTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OwogI2Vs
c2UKQEAgLTQzNCwxNCArNDIxLDEyIEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4gU3BlY3VsYXRp
dmVKSVQ6OnMKICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkgewogICAgICAgICBBU1NFUlQo
aXNOdW1iZXJDb25zdGFudChub2RlKSk7CiAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXREb3VibGVD
b25zdGFudDsKLSAgICB9IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSAhPSBEYXRhRm9ybWF0
Tm9uZSAmJiBpbmZvLnNwaWxsRm9ybWF0KCkgIT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAgICAg
ICAvLyBpdCB3YXMgYWxyZWFkeSBzcGlsbGVkIHByZXZpb3VzbHkgYW5kIG5vdCBhcyBhIGRvdWJs
ZSwgd2hpY2ggbWVhbnMgd2UgbmVlZCB1bmJveGluZy4KLSAgICAgICAgQVNTRVJUKGluZm8uc3Bp
bGxGb3JtYXQoKSAmIERhdGFGb3JtYXRKUyk7Ci0gICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkSlNV
bmJveERvdWJsZTsKLSAgICB9IGVsc2UKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoaW5m
by5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXROb25lIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9
PSBEYXRhRm9ybWF0RG91YmxlKTsKICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWREb3VibGU7Cisg
ICAgfQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBBU1NFUlQoaW5mby5yZWdpc3RlckZv
cm1hdCgpID09IERhdGFGb3JtYXREb3VibGUgfHwgaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERh
dGFGb3JtYXRKU0RvdWJsZSk7CisgICAgQVNTRVJUKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9PSBE
YXRhRm9ybWF0RG91YmxlKTsKICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkgewogICAgICAg
ICBBU1NFUlQoaXNOdW1iZXJDb25zdGFudChub2RlKSk7CiAgICAgICAgIGZpbGxBY3Rpb24gPSBT
ZXREb3VibGVDb25zdGFudDsKQEAgLTUyOCwxNCArNTEzLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c2lsZW50RmlsbChjb25zdCBTaQogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6
OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7
CiAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHBsYW4uZ3ByKCksIHBsYW4uZ3ByKCkp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExvYWREb3VibGVCb3hEb3VibGU6Ci0gICAgICAg
IG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVh
bFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKLSAgICAgICAgbV9qaXQuc3ViNjQoR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBwbGFuLmdwcigpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBMb2FkSlNVbmJveERvdWJsZToKLSAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIGNhblRyYW1wbGUp
OwotICAgICAgICB1bmJveERvdWJsZShjYW5UcmFtcGxlLCBwbGFuLmZwcigpKTsKLSAgICAgICAg
YnJlYWs7CiAjZWxzZQogICAgIGNhc2UgU2V0SlNDb25zdGFudFRhZzoKICAgICAgICAgbV9qaXQu
bW92ZShJbW0zMih2YWx1ZU9mSlNDb25zdGFudChwbGFuLm5vZGUoKSkudGFnKCkpLCBwbGFuLmdw
cigpKTsKQEAgLTEwMzksNiArMTAxNiwyOSBAQCBHUFJUZW1wb3Jhcnk6OkdQUlRlbXBvcmFyeSgK
IH0KICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQogCitKU1ZhbHVlUmVnc1RlbXBvcmFyeTo6
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoKSB7IH0KKworSlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6OkpTVmFs
dWVSZWdzVGVtcG9yYXJ5KFNwZWN1bGF0aXZlSklUKiBqaXQpCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICA6IG1fZ3ByKGppdCkKKyNlbHNlCisgICAgOiBtX3BheWxvYWRHUFIoaml0KQorICAgICwg
bV90YWdHUFIoaml0KQorI2VuZGlmCit7Cit9CisKK0pTVmFsdWVSZWdzVGVtcG9yYXJ5Ojp+SlNW
YWx1ZVJlZ3NUZW1wb3JhcnkoKSB7IH0KKworSlNWYWx1ZVJlZ3MgSlNWYWx1ZVJlZ3NUZW1wb3Jh
cnk6OnJlZ3MoKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIEpTVmFsdWVSZWdz
KG1fZ3ByLmdwcigpKTsKKyNlbHNlCisgICAgcmV0dXJuIEpTVmFsdWVSZWdzKG1fdGFnR1BSLmdw
cigpLCBtX3BheWxvYWRHUFIuZ3ByKCkpOworI2VuZGlmCit9CisKIHZvaWQgR1BSVGVtcG9yYXJ5
OjphZG9wdChHUFJUZW1wb3JhcnkmIG90aGVyKQogewogICAgIEFTU0VSVCghbV9qaXQpOwpAQCAt
MTI1OCwxMCArMTI1OCwxMCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVC
cmFuCiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAg
ICAgICAgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0
aW9uKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoTWFjaGluZUludFVzZSkpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChJbnQ1MlJlcFVzZSkpCiAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQ1MkJy
YW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOwogI2VuZGlmIC8vIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKQor
ICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKSkKICAg
ICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZURvdWJsZUJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBk
b3VibGVDb25kaXRpb24pOwogICAgICAgICBlbHNlIGlmIChub2RlLT5vcCgpID09IENvbXBhcmVF
cSkgewogICAgICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpIHsKQEAgLTE4MTcsMTYgKzE4
MTcsMTMgQEAgR2VuZXJhdGVkT3BlcmFuZFR5cGUgU3BlY3VsYXRpdmVKSVQ6OmNoZQogICAgIGNh
c2UgRGF0YUZvcm1hdEpTQ2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRKUzoKICAgICBjYXNlIERh
dGFGb3JtYXRKU0Jvb2xlYW46CisgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAgICAgICAg
IHJldHVybiBHZW5lcmF0ZWRPcGVyYW5kSlNWYWx1ZTsKIAogICAgIGNhc2UgRGF0YUZvcm1hdEpT
SW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CiAgICAgICAgIHJldHVybiBHZW5lcmF0
ZWRPcGVyYW5kSW50ZWdlcjsKIAotICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgotICAgIGNh
c2UgRGF0YUZvcm1hdERvdWJsZToKLSAgICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmREb3Vi
bGU7Ci0gICAgICAgIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBHZW5lcmF0ZWRPcGVyYW5kVHlwZVVua25vd247CkBA
IC0xODQ1LDcgKzE4NDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0lu
dDMyCiAgICAgfQogICAgICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGNhc2UgTWFjaGlu
ZUludFVzZTogeworICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlU3Ry
aWN0SW50NTJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIG9wMSk7CiAgICAgICAgIEdQUlJlZyBvcDFHUFIg
PSBvcDEuZ3ByKCk7CkBAIC0xODU1LDYgKzE4NTIsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVZhbHVlVG9JbnQzMgogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8vIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIAorICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CisgICAgICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgRlBSUmVnIGZwciA9IG9wMS5m
cHIoKTsKKyAgICAgICAgR1BSUmVnIGdwciA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgbm90VHJ1bmNhdGVkVG9JbnRlZ2VyID0gbV9qaXQuYnJhbmNoVHJ1bmNhdGVE
b3VibGVUb0ludDMyKGZwciwgZ3ByLCBKSVRDb21waWxlcjo6QnJhbmNoSWZUcnVuY2F0ZUZhaWxl
ZCk7CisgICAgICAgIAorICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwo
bm90VHJ1bmNhdGVkVG9JbnRlZ2VyLCB0aGlzLCB0b0ludDMyLCBncHIsIGZwcikpOworICAgICAg
ICAKKyAgICAgICAgaW50MzJSZXN1bHQoZ3ByLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KICAgICAKICAgICBjYXNlIE51bWJlclVzZToKICAgICBjYXNlIE5vdENlbGxVc2U6IHsKQEAg
LTE4NjYsMTggKzE4NzYsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0lu
dDMyCiAgICAgICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIG9wMS5mb3Jt
YXQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBHZW5l
cmF0ZWRPcGVyYW5kRG91YmxlOiB7Ci0gICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOwotICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+
Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgICAgICBGUFJSZWcg
ZnByID0gb3AxLmZwcigpOwotICAgICAgICAgICAgR1BSUmVnIGdwciA9IHJlc3VsdC5ncHIoKTsK
LSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFRydW5jYXRlZFRvSW50ZWdlciA9IG1f
aml0LmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihmcHIsIGdwciwgSklUQ29tcGlsZXI6OkJy
YW5jaElmVHJ1bmNhdGVGYWlsZWQpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobm90VHJ1bmNhdGVkVG9JbnRlZ2VyLCB0aGlzLCB0
b0ludDMyLCBncHIsIGZwcikpOwotCi0gICAgICAgICAgICBpbnQzMlJlc3VsdChncHIsIG5vZGUp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAgICAgICAgIGNhc2UgR2VuZXJhdGVk
T3BlcmFuZEpTVmFsdWU6IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTIwNjYsNzAgKzIwNjQsMTM4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVBc0ludDMKICAgICBpbnQzMlJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50MzJUb0RvdWJsZShO
b2RlKiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcChOb2RlKiBu
b2RlKQogewotICAgIEFTU0VSVCghaXNJbnQzMkNvbnN0YW50KG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSkpOyAvLyBUaGlzIHNob3VsZCBoYXZlIGJlZW4gY29uc3RhbnQgZm9sZGVkLgorICAgIHN3aXRj
aCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAg
ICAgICAgQVNTRVJUKCFpc051bWJlckNvbnN0YW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpOyAv
LyBUaGlzIHNob3VsZCBoYXZlIGJlZW4gY29uc3RhbnQgZm9sZGVkLgogICAgIAotICAgIGlmIChp
c0ludDMyU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUp
KSB7Ci0gICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQx
KCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIEZQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7Ci0gICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMS5ncHIoKSwg
cmVzdWx0LmZwcigpKTsKLSAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24o
bV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKSB7CisgICAgICAgICAgICBT
cGVjdWxhdGVJbnQzMk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KyAgICAgICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMS5ncHIoKSwgcmVzdWx0
LmZwcigpKTsKKyAgICAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgCi0gICAgSlNWYWx1ZU9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwotICAg
IEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0
aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAg
RlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAg
IEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKIAotICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7Ci0gICAgR1BSUmVnIHRlbXBHUFIg
PSB0ZW1wLmdwcigpOwotICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CisgICAg
ICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0g
dGVtcC5ncHIoKTsKKyAgICAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKICAg
ICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NCgKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxR1BSLCBHUFJJbmZvOjp0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIg
PSBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1
YWwsIG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAgICAKLSAgICBp
ZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyKSkgewotICAg
ICAgICB0eXBlQ2hlY2soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5j
aGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQo
TWFjcm9Bc3NlbWJsZXI6Olplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyKSk7Ci0gICAgfQorICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCks
IFNwZWNCeXRlY29kZU51bWJlcikpIHsKKyAgICAgICAgICAgIHR5cGVDaGVjaygKKyAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0J5dGVjb2Rl
TnVtYmVyLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxl
cjo6WmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAg
ICAgfQogICAgIAotICAgIG1faml0Lm1vdmUob3AxR1BSLCB0ZW1wR1BSKTsKLSAgICB1bmJveERv
dWJsZSh0ZW1wR1BSLCByZXN1bHRGUFIpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBt
X2ppdC5qdW1wKCk7CisgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCB0ZW1wR1BSKTsKKyAgICAg
ICAgdW5ib3hEb3VibGUodGVtcEdQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAKLSAgICBpc0ludGVnZXIubGluaygmbV9q
aXQpOwotICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMUdQUiwgcmVzdWx0RlBSKTsK
LSAgICBkb25lLmxpbmsoJm1faml0KTsKLSNlbHNlCi0gICAgRlBSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7CisgICAgICAgIGlzSW50ZWdlci5saW5rKCZtX2ppdCk7CisgICAgICAgIG1faml0LmNvbnZl
cnRJbnQzMlRvRG91YmxlKG9wMUdQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgZG9uZS5saW5rKCZt
X2ppdCk7CisjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSAtPiB0aGlzIGlzIHRoZSAzMl82NCBjYXNl
CisgICAgICAgIEZQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgIAotICAgIEdQUlJlZyBvcDFU
YWdHUFIgPSBvcDEudGFnR1BSKCk7Ci0gICAgR1BSUmVnIG9wMVBheWxvYWRHUFIgPSBvcDEucGF5
bG9hZEdQUigpOwotICAgIEZQUlJlZyB0ZW1wRlBSID0gdGVtcC5mcHIoKTsKLSAgICBGUFJSZWcg
cmVzdWx0RlBSID0gcmVzdWx0LmZwcigpOworICAgICAgICBHUFJSZWcgb3AxVGFnR1BSID0gb3Ax
LnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgb3AxUGF5bG9hZEdQUiA9IG9wMS5wYXlsb2FkR1BS
KCk7CisgICAgICAgIEZQUlJlZyB0ZW1wRlBSID0gdGVtcC5mcHIoKTsKKyAgICAgICAgRlBSUmVn
IHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKICAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBp
c0ludGVnZXIgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
SW50MzJUYWcpKTsKICAgICAKLSAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCks
IFNwZWNGdWxsTnVtYmVyKSkgewotICAgICAgICB0eXBlQ2hlY2soCi0gICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1
bGxOdW1iZXIsCi0gICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJv
dmVPckVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7
Ci0gICAgfQorICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNC
eXRlY29kZU51bWJlcikpIHsKKyAgICAgICAgICAgIHR5cGVDaGVjaygKKyAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwg
U3BlY0J5dGVjb2RlTnVtYmVyLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
Okxvd2VzdFRhZykpKTsKKyAgICAgICAgfQogICAgIAotICAgIHVuYm94RG91YmxlKG9wMVRhZ0dQ
Uiwgb3AxUGF5bG9hZEdQUiwgcmVzdWx0RlBSLCB0ZW1wRlBSKTsKLSAgICBKSVRDb21waWxlcjo6
SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAgICB1bmJveERvdWJsZShvcDFUYWdHUFIs
IG9wMVBheWxvYWRHUFIsIHJlc3VsdEZQUiwgdGVtcEZQUik7CisgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgCi0gICAgaXNJbnRlZ2VyLmxpbmsoJm1f
aml0KTsKLSAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcDFQYXlsb2FkR1BSLCByZXN1
bHRGUFIpOwotICAgIGRvbmUubGluaygmbV9qaXQpOwotI2VuZGlmCisgICAgICAgIGlzSW50ZWdl
ci5saW5rKCZtX2ppdCk7CisgICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMVBh
eWxvYWRHUFIsIHJlc3VsdEZQUik7CisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworI2VuZGlm
IC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgCi0gICAgZG91YmxlUmVzdWx0KHJlc3VsdEZQUiwgbm9k
ZSk7CisgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHRGUFIsIG5vZGUpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgSW50NTJS
ZXBVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAg
ICAgICAgCisgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICBG
UFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigpOworCisgICAgICAgIG1faml0LmNvbnZlcnRJ
bnQ2NFRvRG91YmxlKHZhbHVlR1BSLCByZXN1bHRGUFIpOworICAgICAgICAKKyAgICAgICAgZG91
YmxlUmVzdWx0KHJlc3VsdEZQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYgLy8gVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUmVwKE5vZGUqIG5vZGUpCit7CisgICAg
c3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIERvdWJsZVJlcFVz
ZTogeworICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAg
ICAgICAKKyAgICAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWUuZnByKCk7CisgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisjaWYgQ1BVKFg4NikKKyAg
ICAgICAgLy8gVGhpcyBpcyBwcmV0dHkgYW5ub3lpbmcgLSBib3hEb3VibGUoKSBvbiBYODYgY2xv
YmJlcnMgdGhlIHNvdXJjZS4gVGhhdCdzIGtpbmRhIGdyb3NzLgorICAgICAgICBGUFJUZW1wb3Jh
cnkgdGVtcCh0aGlzKTsKKyAgICAgICAgbV9qaXQubW92ZURvdWJsZSh2YWx1ZUZQUiwgdGVtcC5m
cHIoKSk7CisgICAgICAgIHZhbHVlRlBSID0gdGVtcC5mcHIoKTsKKyNlbmRpZgorICAgICAgICAK
KyAgICAgICAgYm94RG91YmxlKHZhbHVlRlBSLCByZXN1bHRSZWdzKTsKKyAgICAgICAgCisgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBJbnQ1MlJlcFVzZTog
eworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAK
KyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBib3hJbnQ1Mih2YWx1
ZUdQUiwgcmVzdWx0R1BSLCBEYXRhRm9ybWF0U3RyaWN0SW50NTIpOworICAgICAgICAKKyAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAg
fQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIAorICAgIGRlZmF1bHQ6CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiB9CiAKIHN0YXRpYyBkb3VibGUgY2xhbXBEb3VibGVUb0J5dGUoZG91YmxlIGQpCkBAIC0yMzIw
LDcgKzIzODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJCiAg
ICAgICAgIH0KICAgICAgICAgICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGNhc2Ug
TWFjaGluZUludFVzZTogeworICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAgICAg
ICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgdmFsdWVPcCh0aGlzLCB2YWx1ZVVzZSk7CiAg
ICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKQEAgLTIzNDQsNyArMjQxMCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckkKICAgICAgICAgfQogI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsK
KyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIGlmIChpc0NsYW1wZWQo
dHlwZSkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZWxlbWVudFNpemUodHlwZSkgPT0gMSk7
CiAgICAgICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZU9wKHRoaXMsIHZh
bHVlVXNlKTsKQEAgLTI0NDAsMTAgKzI1MDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0QnlWYWxPbkZsCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdE5hTiA9IG1faml0LmJyYW5j
aERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWwsIHJlc3VsdFJlZywgcmVzdWx0UmVn
KTsKLSAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9IFFOYU47Ci0gICAgbV9qaXQubG9hZERv
dWJsZSgmTmFOLCByZXN1bHRSZWcpOwotICAgIG5vdE5hTi5saW5rKCZtX2ppdCk7CisgICAgbV9q
aXQuc2FuaXRpemVEb3VibGUocmVzdWx0UmVnKTsKICAgICAKICAgICBkb3VibGVSZXN1bHQocmVz
dWx0UmVnLCBub2RlKTsKIH0KQEAgLTI2NDEsNyArMjcwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBZGQoTm9kZSogbm8KICAgICB9CiAgICAgICAgIAogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgY2FzZSBJbnQ1MlJlcFVzZTogewog
ICAgICAgICBBU1NFUlQoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpOwog
ICAgICAgICBBU1NFUlQoIXNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTW9kZSgp
KSk7CiAKQEAgLTI2NzAsNyArMjczMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
ZGQoTm9kZSogbm8KICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAKLSAgICBj
YXNlIE51bWJlclVzZTogeworICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgIFNwZWN1
bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3Bl
Y3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBG
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSwgb3AyKTsKQEAgLTI4MDcsNyArMjg3MCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2QKICAgICB9CiAgICAgICAg
IAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgY2Fz
ZSBJbnQ1MlJlcFVzZTogewogICAgICAgICBBU1NFUlQoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2Rl
LT5hcml0aE1vZGUoKSkpOwogICAgICAgICBBU1NFUlQoIXNob3VsZENoZWNrTmVnYXRpdmVaZXJv
KG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAKQEAgLTI4MzYsNyArMjg5OSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2QKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFM
VUU2NCkKIAotICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsK
ICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKQEAgLTI4ODEsNyAr
Mjk0NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSgKICAgICB9
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgIGNh
c2UgSW50NTJSZXBVc2U6IHsKICAgICAgICAgQVNTRVJUKHNob3VsZENoZWNrT3ZlcmZsb3cobm9k
ZS0+YXJpdGhNb2RlKCkpKTsKICAgICAgICAgCiAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NTIpKSB7CkBAIC0yOTE4LDcgKzI5
ODEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhOZWdhdGUoCiAgICAgfQog
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIAotICAgIGNhc2UgTnVtYmVyVXNlOiB7
CisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFu
ZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOwogICAgICAgICAKQEAgLTI5NjksNyArMzAzMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBcml0aE11bChOb2QKICAgICB9CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkg
ICAKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAg
ICAgICAgIEFTU0VSVChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAg
ICAgICAgIAogICAgICAgICAvLyBUaGlzIGlzIHN1cGVyIGNsZXZlci4gV2Ugd2FudCB0byBkbyBh
biBpbnQ1MiBtdWx0aXBsaWNhdGlvbiBhbmQgY2hlY2sgdGhlCkBAIC0zMDI2LDcgKzMwODksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNdWwoTm9kCiAgICAgfQogI2VuZGlm
IC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIAotICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAg
Y2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9w
Mih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhp
cywgb3AxLCBvcDIpOwpAQCAtMzE5MCw3ICszMjUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUFyaXRoRGl2KE5vZAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAg
IGNhc2UgTnVtYmVyVXNlOiB7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3Bl
Y3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBT
cGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
IEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKQEAgLTM0OTUsNyArMzU1OCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZChOb2QKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNlIERvdWJsZVJl
cFVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKICAgICAgICAgCkBAIC0zNTMwLDEzICszNTkzLDEzIEBAIGJvb2wgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSogbm9kZSwKICAgICB9CiAgICAgCiAjaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7Cisg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgY29t
cGlsZUludDUyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgCi0gICAgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChEb3VibGVSZXBVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVEb3VibGVDb21wYXJlKG5vZGUsIGRv
dWJsZUNvbmRpdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0zNjEwLDcg
KzM2NzMsNyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kCiAgICAg
fQogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpICAgCi0gICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChNYWNoaW5lSW50VXNlKSkgeworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50
NTJSZXBVc2UpKSB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVj
dFBlZXBIb2xlQnJhbmNoKCk7CiAgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlO
VF9NQVgpIHsKICAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChicmFu
Y2hJbmRleEluQmxvY2spOwpAQCAtMzYyNiw3ICszNjg5LDcgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVN0cmljdEVxKE5vZAogICAgIH0KICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQog
Ci0gICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CisgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpKSB7CiAgICAgICAgIHVuc2lnbmVkIGJy
YW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAgICAgIGlmIChi
cmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKICAgICAgICAgICAgIE5vZGUqIGJyYW5j
aE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOwpAQCAtNDQ4NywzNiArNDU1
MCwzNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVJbnQzMihFZGdlCiAgICAgKFNw
ZWN1bGF0ZUludDMyT3BlcmFuZCh0aGlzLCBlZGdlKSkuZ3ByKCk7CiB9CiAKLXZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSBlZGdlKQotewotI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTWFjaGluZUludCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICAKLSAgICAoU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5k
KHRoaXMsIGVkZ2UpKS5ncHIoKTsKLSNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCi0gICAgVU5VU0VE
X1BBUkFNKGVkZ2UpOwotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpCi19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJl
cihFZGdlIGVkZ2UpCiB7Ci0gICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbE51
bWJlcikpCisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIp
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgKFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQodGhp
cywgZWRnZSkpLmZwcigpOworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2UsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBHUFJSZWcg
Z3ByID0gdmFsdWUuZ3ByKCk7CisgICAgdHlwZUNoZWNrKAorICAgICAgICBKU1ZhbHVlUmVncyhn
cHIpLCBlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIsCisgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2
NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpKTsKKyNlbHNlCisgICAgR1BSUmVnIHRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOworICAgIERG
R19UWVBFX0NIRUNLKAorICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLCBlZGdlLCB+U3BlY0lu
dDMyLAorICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHRhZ0dQ
UiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOworICAgIERGR19UWVBFX0NIRUNL
KAorICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIs
CisgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHRh
Z0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKKyNlbmRpZgogfQogCi12
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVSZWFsTnVtYmVyKEVkZ2UgZWRnZSkKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZURvdWJsZVJlYWwoRWRnZSBlZGdlKQogewotICAgIGlm
ICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0Z1bGxSZWFsTnVtYmVyKSkKKyAgICBpZiAoIW5l
ZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNEb3VibGVSZWFsKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKICAgICBG
UFJSZWcgZnByID0gb3BlcmFuZC5mcHIoKTsKLSAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAg
SlNWYWx1ZVJlZ3MoKSwgZWRnZSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAorICAgIHR5cGVDaGVjaygK
KyAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgZWRnZSwgU3BlY0RvdWJsZVJlYWwsCiAgICAgICAgIG1f
aml0LmJyYW5jaERvdWJsZSgKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RF
cXVhbE9yVW5vcmRlcmVkLCBmcHIsIGZwcikpOwogfQpAQCAtNDc2OCw4ICs0ODMyLDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWQKICAgICBjYXNlIEtub3duSW50
MzJVc2U6CiAgICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0ludDMyKSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgIEFTU0VS
VCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0Z1bGxOdW1iZXIpKTsKKyAgICBjYXNlIERvdWJs
ZVJlcFVzZToKKyAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRG91Ymxl
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIEFTU0VS
VCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY01hY2hpbmVJbnQpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2so
ZWRnZSwgU3BlY0NlbGwpKTsKQEAgLTQ3ODAsMTUgKzQ4NDcsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIHNw
ZWN1bGF0ZUludDMyKGVkZ2UpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1hY2hpbmVJbnRV
c2U6Ci0gICAgICAgIHNwZWN1bGF0ZU1hY2hpbmVJbnQoZWRnZSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgc3BlY3VsYXRlUmVhbE51bWJlcihlZGdl
KTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgIHNwZWN1bGF0
ZU51bWJlcihlZGdlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNl
OgorICAgICAgICBzcGVjdWxhdGVEb3VibGVSZWFsKGVkZ2UpOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIHNwZWN1bGF0ZUJvb2xlYW4oZWRnZSk7CiAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIGNs
YXNzIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQ7CiBjbGFzcyBTcGVjdWxhdGVDZWxsT3BlcmFuZDsK
IGNsYXNzIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kOwogCi1lbnVtIEdlbmVyYXRlZE9wZXJhbmRU
eXBlIHsgR2VuZXJhdGVkT3BlcmFuZFR5cGVVbmtub3duLCBHZW5lcmF0ZWRPcGVyYW5kSW50ZWdl
ciwgR2VuZXJhdGVkT3BlcmFuZERvdWJsZSwgR2VuZXJhdGVkT3BlcmFuZEpTVmFsdWV9OworZW51
bSBHZW5lcmF0ZWRPcGVyYW5kVHlwZSB7IEdlbmVyYXRlZE9wZXJhbmRUeXBlVW5rbm93biwgR2Vu
ZXJhdGVkT3BlcmFuZEludGVnZXIsIEdlbmVyYXRlZE9wZXJhbmRKU1ZhbHVlfTsKIAogaW5saW5l
IEdQUlJlZyBleHRyYWN0UmVzdWx0KEdQUlJlZyByZXN1bHQpIHsgcmV0dXJuIHJlc3VsdDsgfQog
I2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0xOTAsNyArMTkwLDYgQEAgcHVibGljOgogICAgICAgICBp
ZiAoc3BpbGxNZS5pc1ZhbGlkKCkpIHsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICAg
ICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0
ZXIoc3BpbGxNZSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmZvLnJlZ2lzdGVyRm9y
bWF0KCkgIT0gRGF0YUZvcm1hdEpTRG91YmxlKTsKICAgICAgICAgICAgIGlmICgoaW5mby5yZWdp
c3RlckZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKSkKICAgICAgICAgICAgICAgICBtX2dwcnMucmVs
ZWFzZShpbmZvLnRhZ0dQUigpID09IGdwciA/IGluZm8ucGF5bG9hZEdQUigpIDogaW5mby50YWdH
UFIoKSk7CiAjZW5kaWYKQEAgLTI2NSw3ICsyNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2Ug
aWYgKHJlZ2lzdGVyRm9ybWF0ICE9IERhdGFGb3JtYXROb25lKQogICAgICAgICAgICAgbV9ncHJz
LnJlbGVhc2UoaW5mby5ncHIoKSk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBp
ZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdERvdWJsZSB8fCByZWdpc3RlckZvcm1hdCA9
PSBEYXRhRm9ybWF0SlNEb3VibGUpCisgICAgICAgIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRh
Rm9ybWF0RG91YmxlKQogICAgICAgICAgICAgbV9mcHJzLnJlbGVhc2UoaW5mby5mcHIoKSk7CiAg
ICAgICAgIGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB7CiAgICAgICAg
ICAgICBtX2dwcnMucmVsZWFzZShpbmZvLnRhZ0dQUigpKTsKQEAgLTQ1OSw2ICs0NTgsMTAgQEAg
cHVibGljOgogICAgICAgICBtX2ppdC51bmJveERvdWJsZSh0YWdHUFIsIHBheWxvYWRHUFIsIGZw
ciwgc2NyYXRjaEZQUik7CiAgICAgfQogI2VuZGlmCisgICAgdm9pZCBib3hEb3VibGUoRlBSUmVn
IGZwciwgSlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7CisgICAgICAgIG1faml0LmJveERvdWJsZShm
cHIsIHJlZ3MpOworICAgIH0KIAogICAgIC8vIFNwaWxsIGEgVmlydHVhbFJlZ2lzdGVyIHRvIHRo
ZSBKU1N0YWNrLgogICAgIHZvaWQgc3BpbGwoVmlydHVhbFJlZ2lzdGVyIHNwaWxsTWUpCkBAIC01
MjgsMTEgKzUzMSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6Ci0gICAgICAgIGNhc2UgRGF0YUZvcm1h
dEpTRG91YmxlOiB7CisgICAgICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZTogewogICAgICAgICAg
ICAgLy8gT24gSlNWQUxVRTMyXzY0IGJveGluZyBhIGRvdWJsZSBpcyBhIG5vLW9wLgogICAgICAg
ICAgICAgbV9qaXQuc3RvcmVEb3VibGUoaW5mby5mcHIoKSwgSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3Ioc3BpbGxNZSkpOwotICAgICAgICAgICAgaW5mby5zcGlsbCgqbV9zdHJlYW0sIHNwaWxsTWUs
IERhdGFGb3JtYXRKU0RvdWJsZSk7CisgICAgICAgICAgICBpbmZvLnNwaWxsKCptX3N0cmVhbSwg
c3BpbGxNZSwgRGF0YUZvcm1hdERvdWJsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtOTI1LDYgKzkyNywxNCBAQCBwdWJsaWM6CiAgICAgICAgIGpzVmFsdWVSZXN1bHQo
dGFnLCBwYXlsb2FkLCBub2RlLCBEYXRhRm9ybWF0SlMsIG1vZGUpOwogICAgIH0KICNlbmRpZgor
ICAgIHZvaWQganNWYWx1ZVJlc3VsdChKU1ZhbHVlUmVncyByZWdzLCBOb2RlKiBub2RlLCBEYXRh
Rm9ybWF0IGZvcm1hdCA9IERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxs
VXNlQ2hpbGRyZW4pCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVncy5ncHIoKSwgbm9kZSwgZm9ybWF0LCBtb2RlKTsKKyNlbHNlCisgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVncy50YWdHUFIoKSwgcmVncy5wYXlsb2FkR1BSKCksIG5vZGUsIGZvcm1h
dCwgbW9kZSk7CisjZW5kaWYKKyAgICB9CiAgICAgdm9pZCBzdG9yYWdlUmVzdWx0KEdQUlJlZyBy
ZWcsIE5vZGUqIG5vZGUsIFVzZUNoaWxkcmVuTW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxkcmVuKQog
ICAgIHsKICAgICAgICAgaWYgKG1vZGUgPT0gQ2FsbFVzZUNoaWxkcmVuKQpAQCAtMjA4MCwxMCAr
MjA5MCwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgo
Tm9kZSopOwogICAgIAorICAgIHZvaWQgY29tcGlsZVZhbHVlUmVwKE5vZGUqKTsKKyAgICB2b2lk
IGNvbXBpbGVEb3VibGVSZXAoTm9kZSopOworICAgIAogICAgIHZvaWQgY29tcGlsZVZhbHVlVG9J
bnQzMihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVUludDMyVG9OdW1iZXIoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZURvdWJsZUFzSW50MzIoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUludDMy
VG9Eb3VibGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUFkZChOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlTWFrZVJvcGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUFyaXRoU3ViKE5vZGUqKTsK
QEAgLTIxODUsMTIgKzIxOTcsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVtaXRBbGxvY2F0ZUpT
QXJyYXkoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVu
c2lnbmVkIG51bUVsZW1lbnRzKTsKIAotI2lmIFVTRShKU1ZBTFVFNjQpIAotICAgIEpJVENvbXBp
bGVyOjpKdW1wIGNvbnZlcnRUb0RvdWJsZShHUFJSZWcgdmFsdWUsIEZQUlJlZyByZXN1bHQsIEdQ
UlJlZyB0bXApOwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBKSVRDb21waWxlcjo6SnVt
cCBjb252ZXJ0VG9Eb3VibGUoSlNWYWx1ZU9wZXJhbmQmLCBGUFJSZWcgcmVzdWx0KTsKLSNlbmRp
ZgotICAgIAogICAgIC8vIEFkZCBhIHNwZWN1bGF0aW9uIGNoZWNrLgogICAgIHZvaWQgc3BlY3Vs
YXRpb25DaGVjayhFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTm9kZSosIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGp1bXBUb0ZhaWwpOwogICAgIHZvaWQgc3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCwg
SlNWYWx1ZVNvdXJjZSwgTm9kZSosIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYganVt
cHNUb0ZhaWwpOwpAQCAtMjIxNyw3ICsyMjIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3Vs
YXRlSW50MzIoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVNYWNoaW5lSW50KEVkZ2UpOwogICAg
IHZvaWQgc3BlY3VsYXRlTnVtYmVyKEVkZ2UpOwotICAgIHZvaWQgc3BlY3VsYXRlUmVhbE51bWJl
cihFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZURvdWJsZVJlYWwoRWRnZSk7CiAgICAgdm9pZCBz
cGVjdWxhdGVCb29sZWFuKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlQ2VsbChFZGdlKTsKICAg
ICB2b2lkIHNwZWN1bGF0ZU9iamVjdChFZGdlKTsKQEAgLTI1NjUsNiArMjU3MSwyMyBAQCBwcml2
YXRlOgogICAgIEdQUlJlZyBtX2dwcjsKIH07CiAKK2NsYXNzIEpTVmFsdWVSZWdzVGVtcG9yYXJ5
IHsKK3B1YmxpYzoKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSgpOworICAgIEpTVmFsdWVSZWdz
VGVtcG9yYXJ5KFNwZWN1bGF0aXZlSklUKik7CisgICAgfkpTVmFsdWVSZWdzVGVtcG9yYXJ5KCk7
CisgICAgCisgICAgSlNWYWx1ZVJlZ3MgcmVncygpOworCitwcml2YXRlOgorI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgR1BSVGVtcG9yYXJ5IG1fZ3ByOworI2Vsc2UKKyAgICBHUFJUZW1wb3Jhcnkg
bV9wYXlsb2FkR1BSOworICAgIEdQUlRlbXBvcmFyeSBtX3RhZ0dQUjsKKyNlbmRpZgorfTsKKwog
Y2xhc3MgRlBSVGVtcG9yYXJ5IHsKIHB1YmxpYzoKICAgICBGUFJUZW1wb3JhcnkoU3BlY3VsYXRp
dmVKSVQqKTsKQEAgLTI3NTQsMTIgKzI3NzcsMTIgQEAgcHJpdmF0ZToKIC8vIEdpdmVzIHlvdSBh
IGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxNiwgbG93IGJpdHMg
emVybykuCiBjbGFzcyBTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQgewogcHVibGljOgotICAgIGV4cGxp
Y2l0IFNwZWN1bGF0ZUludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2Us
IE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlv
bikKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGpp
dCwgRWRnZSBlZGdlKQogICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRn
ZSkKICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8
fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpOwogICAgICAgICBpZiAoaml0LT5pc0Zp
bGxlZChub2RlKCkpKQogICAgICAgICAgICAgZ3ByKCk7CiAgICAgfQpAQCAtMjgwMSwxMiArMjgy
NCwxMiBAQCBwcml2YXRlOgogLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRoZSBw
YXlsb2FkIGlzIGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVu
ZGVkKS4KIGNsYXNzIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQs
IEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFu
ZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZChT
cGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAg
ICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJS
ZWcpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CiAgICAg
ICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9
CkBAIC0yODQ5LDM1ICsyODcyLDM1IEBAIGVudW0gT3Bwb3NpdGVTaGlmdFRhZyB7IE9wcG9zaXRl
U2hpZnQgfTsKIAogY2xhc3MgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRp
dmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRv
bWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVy
SW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSkKICAgICAgICAgOiBt
X2ppdChqaXQpCiAgICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAgICAgICwgbV9ncHJPckludmFs
aWQoSW52YWxpZEdQUlJlZykKICAgICAgICAgLCBtX3N0cmljdChqaXQtPmJldHRlclVzZVN0cmlj
dEludDUyKGVkZ2UpKQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50
VXNlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBV
c2UpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQogICAgICAgICAgICAgZ3By
KCk7CiAgICAgfQogICAgIAotICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3Bl
cmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIGNvbnN0IFNwZWN1bGF0ZVdoaWNo
ZXZlckludDUyT3BlcmFuZCYgb3RoZXIsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1
dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2
ZXJJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBjb25zdCBTcGVj
dWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQmIG90aGVyKQogICAgICAgICA6IG1faml0KGppdCkK
ICAgICAgICAgLCBtX2VkZ2UoZWRnZSkKICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlk
R1BSUmVnKQogICAgICAgICAsIG1fc3RyaWN0KG90aGVyLm1fc3RyaWN0KQogICAgIHsKLSAgICAg
ICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8
fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpOwogICAgICAgICBpZiAoaml0LT5pc0Zp
bGxlZChub2RlKCkpKQogICAgICAgICAgICAgZ3ByKCk7CiAgICAgfQogICAgIAotICAgIGV4cGxp
Y2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBF
ZGdlIGVkZ2UsIE9wcG9zaXRlU2hpZnRUYWcsIGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUy
T3BlcmFuZCYgb3RoZXIsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09w
ZXJhbmRTcGVjdWxhdGlvbikKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9w
ZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcHBvc2l0ZVNoaWZ0VGFnLCBj
b25zdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQmIG90aGVyKQogICAgICAgICA6IG1f
aml0KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkKICAgICAgICAgLCBtX2dwck9ySW52YWxp
ZChJbnZhbGlkR1BSUmVnKQogICAgICAgICAsIG1fc3RyaWN0KCFvdGhlci5tX3N0cmljdCkKICAg
ICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKTsKICAgICAgICAgaWYg
KGppdC0+aXNGaWxsZWQobm9kZSgpKSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0KQEAgLTI5
MjYsMTMgKzI5NDksMTMgQEAgcHJpdmF0ZToKIAogY2xhc3MgU3BlY3VsYXRlRG91YmxlT3BlcmFu
ZCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU3BlY3VsYXRlRG91YmxlT3BlcmFuZChTcGVjdWxh
dGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1
dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSkKICAgICAgICAgOiBtX2ppdChq
aXQpCiAgICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAgICAgICwgbV9mcHJPckludmFsaWQoSW52
YWxpZEZQUlJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ppdCk7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgaXNEb3Vi
bGUoZWRnZS51c2VLaW5kKCkpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNEb3VibGUoZWRn
ZS51c2VLaW5kKCkpKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKICAgICAg
ICAgICAgIGZwcigpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTY3Mjcy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCw2MiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBW
YWx1ZVJlcDoKKyAgICAgICAgY2FzZSBJbnQ1MlJlcDoKKyAgICAgICAgY2FzZSBEb3VibGVSZXA6
IHsKKyAgICAgICAgICAgIC8vIFRoaXMgc2hvcnQtY2lyY3VpdHMgY2lyY3VpdG91cyBjb252ZXJz
aW9ucywgbGlrZSBWYWx1ZVJlcChEb3VibGVSZXAodmFsdWUpKSBvcgorICAgICAgICAgICAgLy8g
ZXZlbiBtb3JlIGNvbXBsaWNhdGVkIHRoaW5ncy4gTGlrZSwgaXQgY2FuIGhhbmRsZSBhIGJlYXN0
IGxpa2UKKyAgICAgICAgICAgIC8vIFZhbHVlUmVwKERvdWJsZVJlcChJbnQ1MlJlcCh2YWx1ZSkp
KS4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVGhlIG9ubHkgc3BlY3VsYXRpb24gdGhh
dCB3ZSB3b3VsZCBkbyBiZXlvbmQgdmFsaWRhdGluZyB0aGF0IHdlIGhhdmUgYSB0eXBlIHRoYXQK
KyAgICAgICAgICAgIC8vIGNhbiBiZSByZXByZXNlbnRlZCBhIGNlcnRhaW4gd2F5IGlzIGFuIElu
dDMyIGNoZWNrIHRoYXQgd291bGQgYXBwZWFyIG9uIEludDUyUmVwCisgICAgICAgICAgICAvLyBu
b2Rlcy4gRm9yIG5vdywgaWYgd2Ugc2VlIHRoaXMgYW5kIHRoZSBmaW5hbCB0eXBlIHdlIHdhbnQg
aXMgYW4gSW50NTIsIHdlIHVzZSBpdAorICAgICAgICAgICAgLy8gYXMgYW4gZXhjdXNlIG5vdCB0
byBmb2xkLiBUaGUgb25seSB0aGluZyB3ZSB3b3VsZCBuZWVkIGlzIGEgSW50NTJSZXBJbnQzMlVz
ZSBraW5kLgorICAgICAgICAgICAgYm9vbCBoYWRJbnQzMkNoZWNrID0gZmFsc2U7CisgICAgICAg
ICAgICBpZiAobV9ub2RlLT5vcCgpID09IEludDUyUmVwKSB7CisgICAgICAgICAgICAgICAgQVNT
RVJUKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEludDMyVXNlKTsKKyAgICAgICAgICAg
ICAgICBoYWRJbnQzMkNoZWNrID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZv
ciAoTm9kZSogbm9kZSA9IG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpOyA7IG5vZGUgPSBub2RlLT5j
aGlsZDEoKS5ub2RlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2Fub25pY2FsUmVzdWx0UmVw
cmVzZW50YXRpb24obm9kZS0+cmVzdWx0KCkpID09CisgICAgICAgICAgICAgICAgICAgIGNhbm9u
aWNhbFJlc3VsdFJlcHJlc2VudGF0aW9uKG1fbm9kZS0+cmVzdWx0KCkpKSB7CisgICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAg
ICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIFBoYW50b20sIG1fbm9kZS0+b3JpZ2luLCBtX25v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhhZEludDMyQ2hlY2spIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBhZGRpbmcgSW50NTJS
ZXBJbnQzMlVzZSBvciBldmVuIERvdWJsZVJlcEludDMyVXNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gd2hpY2ggd291bGQgYmUgc3VwZXIgd2VpcmQuIFRoZSBsYXR0ZXIgd291bGQgb25s
eSBhcmlzZSBpbiBzb21lCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXJpb3VzbHkgY2ly
Y3VpdG91cyBjb252ZXJzaW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5vbmlj
YWxSZXN1bHRSZXByZXNlbnRhdGlvbihub2RlLT5yZXN1bHQoKSkgIT0gTm9kZVJlc3VsdEpTKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRv
bSwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShub2Rl
LCBJbnQzMlVzZSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IG1fbm9kZS0+Y2hpbGQxKCkgPSBub2RlLT5kZWZhdWx0RWRnZSgpOworICAgICAgICAgICAgICAg
ICAgICBtX25vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CisgICAgICAgICAgICAgICAgICAgIG1f
Y2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9w
KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEludDUyUmVwOgorICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEludDMyVXNlKTsKKyAgICAgICAg
ICAgICAgICAgICAgaGFkSW50MzJDaGVjayA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIERvdWJs
ZVJlcDoKKyAgICAgICAgICAgICAgICBjYXNlIFZhbHVlUmVwOgorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTIzMiw2ICsyODgsMzEgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
IH0KICAgICAKKyAgICB2b2lkIGZvbGRJZGVudGl0eSgpCisgICAgeworICAgICAgICBmb3IgKE5v
ZGUqIG5vZGUgPSBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKTsgOyBub2RlID0gbm9kZS0+Y2hpbGQx
KCkubm9kZSgpKSB7CisgICAgICAgICAgICBpZiAoY2Fub25pY2FsUmVzdWx0UmVwcmVzZW50YXRp
b24obm9kZS0+cmVzdWx0KCkpID09CisgICAgICAgICAgICAgICAgY2Fub25pY2FsUmVzdWx0UmVw
cmVzZW50YXRpb24obV9ub2RlLT5yZXN1bHQoKSkpIHsKKyAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3Bl
Y05vbmUsIFBoYW50b20sIG1fbm9kZS0+b3JpZ2luLCBtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgICAgICBtX25vZGUtPmNoaWxkMSgpID0gbm9kZS0+ZGVmYXVsdEVkZ2UoKTsKKyAgICAg
ICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CisgICAgICAgICAgICAgICAg
bV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAg
ICAgICAgICAgIGNhc2UgRG91YmxlUmVwOgorICAgICAgICAgICAgY2FzZSBJbnQ1MlJlcDoKKyAg
ICAgICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKICAgICBJbnNlcnRpb25TZXQg
bV9pbnNlcnRpb25TZXQ7CiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKICAgICB1bnNpZ25lZCBt
X25vZGVJbmRleDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNw
cAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTcgKzQ2LDE3IEBAIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBVc2UKICAgICBjYXNlIEtub3duSW50MzJVc2U6CiAgICAg
ICAgIG91dC5wcmludCgiS25vd25JbnQzMiIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6Ci0gICAgICAgIG91dC5wcmludCgiTWFjaGluZUludCIpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFJlYWxOdW1iZXJVc2U6Ci0gICAgICAgIG91dC5wcmludCgiUmVhbE51
bWJlciIpOworICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIG91dC5wcmludCgiSW50NTJS
ZXAiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgIG91dC5w
cmludCgiTnVtYmVyIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6
Ci0gICAgICAgIG91dC5wcmludCgiS25vd25OdW1iZXIiKTsKKyAgICBjYXNlIERvdWJsZVJlcFVz
ZToKKyAgICAgICAgb3V0LnByaW50KCJEb3VibGVSZXAiKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBEb3VibGVSZXBSZWFsVXNlOgorICAgICAgICBvdXQucHJpbnQoIkRvdWJsZVJlcFJlYWwi
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICBvdXQucHJp
bnQoIkJvb2xlYW4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2lu
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5o
CShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtp
bmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19K
SVQpCiAKKyNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIKICNpbmNsdWRlICJTcGVjdWxhdGVkVHlw
ZS5oIgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCkBAIC0zNywxMCArMzgsMTAgQEAg
ZW51bSBVc2VLaW5kIHsKICAgICBVbnR5cGVkVXNlLAogICAgIEludDMyVXNlLAogICAgIEtub3du
SW50MzJVc2UsCi0gICAgTWFjaGluZUludFVzZSwKLSAgICBSZWFsTnVtYmVyVXNlLAorICAgIElu
dDUyUmVwVXNlLAogICAgIE51bWJlclVzZSwKLSAgICBLbm93bk51bWJlclVzZSwKKyAgICBEb3Vi
bGVSZXBVc2UsCisgICAgRG91YmxlUmVwUmVhbFVzZSwKICAgICBCb29sZWFuVXNlLAogICAgIENl
bGxVc2UsCiAgICAgS25vd25DZWxsVXNlLApAQCAtNTksNyArNjAsNyBAQCBlbnVtIFVzZUtpbmQg
ewogICAgIExhc3RVc2VLaW5kIC8vIE11c3QgYWx3YXlzIGJlIHRoZSBsYXN0IGVudHJ5IGluIHRo
ZSBlbnVtLCBhcyBpdCBpcyB1c2VkIHRvIGRlbm90ZSB0aGUgbnVtYmVyIG9mIGVudW0gZWxlbWVu
dHMuCiB9OwogCi1BTFdBWVNfSU5MSU5FIFNwZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGb3IoVXNl
S2luZCB1c2VLaW5kKQoraW5saW5lIFNwZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGb3IoVXNlS2lu
ZCB1c2VLaW5kKQogewogICAgIHN3aXRjaCAodXNlS2luZCkgewogICAgIGNhc2UgVW50eXBlZFVz
ZToKQEAgLTY3LDEzICs2OCwxNCBAQCBBTFdBWVNfSU5MSU5FIFNwZWN1bGF0ZWRUeXBlIHR5cGVG
aWx0ZXJGCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICBjYXNlIEtub3duSW50MzJVc2U6CiAgICAg
ICAgIHJldHVybiBTcGVjSW50MzI7Ci0gICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgIGNhc2Ug
SW50NTJSZXBVc2U6CiAgICAgICAgIHJldHVybiBTcGVjTWFjaGluZUludDsKLSAgICBjYXNlIFJl
YWxOdW1iZXJVc2U6Ci0gICAgICAgIHJldHVybiBTcGVjRnVsbFJlYWxOdW1iZXI7CiAgICAgY2Fz
ZSBOdW1iZXJVc2U6Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgcmV0dXJuIFNw
ZWNGdWxsTnVtYmVyOworICAgICAgICByZXR1cm4gU3BlY0J5dGVjb2RlTnVtYmVyOworICAgIGNh
c2UgRG91YmxlUmVwVXNlOgorICAgICAgICByZXR1cm4gU3BlY0RvdWJsZTsKKyAgICBjYXNlIERv
dWJsZVJlcFJlYWxVc2U6CisgICAgICAgIHJldHVybiBTcGVjRG91YmxlUmVhbDsKICAgICBjYXNl
IEJvb2xlYW5Vc2U6CiAgICAgICAgIHJldHVybiBTcGVjQm9vbGVhbjsKICAgICBjYXNlIENlbGxV
c2U6CkBAIC0xMDgsNTMgKzExMCw1MyBAQCBBTFdBWVNfSU5MSU5FIFNwZWN1bGF0ZWRUeXBlIHR5
cGVGaWx0ZXJGCiAgICAgfQogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgc2hvdWxkTm90SGF2ZVR5
cGVDaGVjayhVc2VLaW5kIGtpbmQpCitpbmxpbmUgYm9vbCBzaG91bGROb3RIYXZlVHlwZUNoZWNr
KFVzZUtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIFVudHlwZWRV
c2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNlOgotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CiAg
ICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgY2FzZSBLbm93blN0cmluZ1VzZToKKyAgICBjYXNl
IEludDUyUmVwVXNlOgorICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCi1BTFdB
WVNfSU5MSU5FIGJvb2wgbWF5SGF2ZVR5cGVDaGVjayhVc2VLaW5kIGtpbmQpCitpbmxpbmUgYm9v
bCBtYXlIYXZlVHlwZUNoZWNrKFVzZUtpbmQga2luZCkKIHsKICAgICByZXR1cm4gIXNob3VsZE5v
dEhhdmVUeXBlQ2hlY2soa2luZCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBpc051bWVyaWNh
bChVc2VLaW5kIGtpbmQpCitpbmxpbmUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGtpbmQpCiB7
CiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBJbnQzMlVzZToKICAgICBjYXNlIEtub3du
SW50MzJVc2U6Ci0gICAgY2FzZSBNYWNoaW5lSW50VXNlOgotICAgIGNhc2UgUmVhbE51bWJlclVz
ZToKICAgICBjYXNlIE51bWJlclVzZToKLSAgICBjYXNlIEtub3duTnVtYmVyVXNlOgorICAgIGNh
c2UgSW50NTJSZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgY2FzZSBEb3VibGVS
ZXBSZWFsVXNlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgaXNEb3VibGUoVXNl
S2luZCBraW5kKQoraW5saW5lIGJvb2wgaXNEb3VibGUoVXNlS2luZCBraW5kKQogewogICAgIHN3
aXRjaCAoa2luZCkgewotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICBjYXNlIE51bWJlclVz
ZToKLSAgICBjYXNlIEtub3duTnVtYmVyVXNlOgorICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAg
IGNhc2UgRG91YmxlUmVwUmVhbFVzZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIAotQUxXQVlTX0lOTElORSBib29s
IGlzQ2VsbChVc2VLaW5kIGtpbmQpCitpbmxpbmUgYm9vbCBpc0NlbGwoVXNlS2luZCBraW5kKQog
ewogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgQ2VsbFVzZToKQEAgLTE3NCw3ICsxNzYs
NyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDZWxsKFVzZUtpbmQga2luZCkKIAogLy8gUmV0dXJu
cyB0cnVlIGlmIGl0IHVzZXMgc3RydWN0dXJlIGluIGEgd2F5IHRoYXQgY291bGQgYmUgY2xvYmJl
cmVkIGJ5CiAvLyB0aGluZ3MgdGhhdCBjaGFuZ2UgdGhlIHN0cnVjdHVyZS4KLUFMV0FZU19JTkxJ
TkUgYm9vbCB1c2VzU3RydWN0dXJlKFVzZUtpbmQga2luZCkKK2lubGluZSBib29sIHVzZXNTdHJ1
Y3R1cmUoVXNlS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgU3Ry
aW5nT2JqZWN0VXNlOgpAQCAtMTg1LDYgKzE4NywxOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgdXNl
c1N0cnVjdHVyZShVc2VLaW5kCiAgICAgfQogfQogCitpbmxpbmUgVXNlS2luZCB1c2VLaW5kRm9y
UmVzdWx0KE5vZGVGbGFncyByZXN1bHQpCit7CisgICAgQVNTRVJUKCEocmVzdWx0ICYgfk5vZGVS
ZXN1bHRNYXNrKSk7CisgICAgc3dpdGNoIChyZXN1bHQpIHsKKyAgICBjYXNlIE5vZGVSZXN1bHRJ
bnQ1MjoKKyAgICAgICAgcmV0dXJuIEludDUyUmVwVXNlOworICAgIGNhc2UgTm9kZVJlc3VsdERv
dWJsZToKKyAgICAgICAgcmV0dXJuIERvdWJsZVJlcFVzZTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gVW50eXBlZFVzZTsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE1LDYgKzExNSw5IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG1fbXlS
ZWZDb3VudHMuZmluZChlZGdlLm5vZGUoKSktPnZhbHVlKys7CiAgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc0Rv
dWJsZVJlc3VsdCgpID09IChlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UgfHwgZWRnZS51
c2VLaW5kKCkgPT0gRG91YmxlUmVwUmVhbFVzZSkpOworICAgICAgICAgICAgICAgICAgICBWQUxJ
REFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkgPT0gKGVkZ2UudXNlS2lu
ZCgpID09IEludDUyUmVwVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBJbiBTU0EsIGFsbCBlZGdlcyBtdXN0IGhhc1Jlc3VsdCgpLgogICAgICAgICAgICAg
ICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdlLT5oYXNSZXN1bHQoKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhZGljRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhZGljRnVuY3Rpb24u
aAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJp
YWRpY0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERGR1ZhcmlhZGlj
RnVuY3Rpb25faAotI2RlZmluZSBERkdWYXJpYWRpY0Z1bmN0aW9uX2gKLQotI2RlZmluZSBERkdf
Q09NTUEgLAotCi0vLyBUaGUgc2lnbmF0dXJlIG9mIHYgaXMgKHRlbXBsYXRlUHJlLCB0ZW1wbGF0
ZVBvc3QsIHR5cGVQYXJhbXMsIHZhbHVlUGFyYW1zLCB2YWx1ZUFyZ3MpCi0vLwotLy8gWW91IHdv
dWxkIHVzZSBpdCBsaWtlOgotLy8gI2RlZmluZSBERUZJTkVfRlVOQ1RJT04odGVtcGxhdGVQcmUs
IHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXNDb21tYSwgdmFsdWVQYXJhbXMs
IHZhbHVlQXJncykKLS8vICAgICB0ZW1wbGF0ZVByZSB0eXBlUGFyYW1zIHRlbXBsYXRlUG9zdCB2
b2lkIGYodmFsdWVQYXJhbXMpIHsgZyh2YWx1ZUFyZ3MpOyB9Ci0vLyBERkdfVkFSSUFESUNfVEVN
UExBVEVfRlVOQ1RJT04oREVGSU5FX0ZVTkNUSU9OKQotLy8gI3VuZGVmIERFRklORV9GVU5DVElP
TgotLy8KLS8vIE9yIGlmIHlvdSB3YW50ZWQgdGhlIGRlZmluZWQgZnVuY3Rpb24gdG8gdGFrZSBh
biBhZGRpdGlvbmFsIHRlbXBsYXRlIGFyZywgeW91IHdvdWxkIGRvOgotLy8gI2RlZmluZSBERUZJ
TkVfRlVOQ1RJT04odGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQ
YXJhbXNDb21tYSwgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykKLS8vICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUIHZhbHVlUGFyYW1zQ29tbWEgdHlwZVBhcmFtcz4gdm9pZCBmKFQgdmFsdWUgdmFsdWVQ
YXJhbXNDb21tYSB2YWx1ZVBhcmFtcykgeyBnKHZhbHVlLCB2YWx1ZUFyZ3MpOyB9Ci0vLyBERkdf
VkFSSUFESUNfVEVNUExBVEVfRlVOQ1RJT04oREVGSU5FX0ZVTkNUSU9OKQotLy8gI3VuZGVmIERF
RklORV9GVU5DVElPTgotCi0jZGVmaW5lIERGR19WQVJJQURJQ19URU1QTEFURV9GVU5DVElPTih2
KSBcCi0gICAgdigsICwgLCAsICwgKSBcCi0gICAgdih0ZW1wbGF0ZTwsID4sIHR5cGVuYW1lIF9E
RkdfVDEsIERGR19DT01NQSwgY29uc3QgX0RGR19UMSYgX0RGR192YWx1ZTEsIF9ERkdfdmFsdWUx
KSBcCi0gICAgdih0ZW1wbGF0ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEgREZHX0NPTU1BIHR5cGVu
YW1lIF9ERkdfVDIsIERGR19DT01NQSwgY29uc3QgX0RGR19UMSYgX0RGR192YWx1ZTEgREZHX0NP
TU1BIGNvbnN0IF9ERkdfVDImIF9ERkdfdmFsdWUyLCBfREZHX3ZhbHVlMSBERkdfQ09NTUEgX0RG
R192YWx1ZTIpIFwKLSAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSBERkdfQ09N
TUEgdHlwZW5hbWUgX0RGR19UMiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMywgREZHX0NPTU1B
LCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RG
R192YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzLCBfREZHX3ZhbHVl
MSBERkdfQ09NTUEgX0RGR192YWx1ZTIgREZHX0NPTU1BIF9ERkdfdmFsdWUzKSBcCi0gICAgdih0
ZW1wbGF0ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDIg
REZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDMgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDQsIERG
R19DT01NQSwgY29uc3QgX0RGR19UMSYgX0RGR192YWx1ZTEgREZHX0NPTU1BIGNvbnN0IF9ERkdf
VDImIF9ERkdfdmFsdWUyIERGR19DT01NQSBjb25zdCBfREZHX1QzJiBfREZHX3ZhbHVlMyBERkdf
Q09NTUEgY29uc3QgX0RGR19UNCYgX0RGR192YWx1ZTQsIF9ERkdfdmFsdWUxIERGR19DT01NQSBf
REZHX3ZhbHVlMiBERkdfQ09NTUEgX0RGR192YWx1ZTMgREZHX0NPTU1BIF9ERkdfdmFsdWU0KSBc
Ci0gICAgdih0ZW1wbGF0ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEgREZHX0NPTU1BIHR5cGVuYW1l
IF9ERkdfVDIgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDMgREZHX0NPTU1BIHR5cGVuYW1lIF9E
RkdfVDQgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDUsIERGR19DT01NQSwgY29uc3QgX0RGR19U
MSYgX0RGR192YWx1ZTEgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDImIF9ERkdfdmFsdWUyIERGR19D
T01NQSBjb25zdCBfREZHX1QzJiBfREZHX3ZhbHVlMyBERkdfQ09NTUEgY29uc3QgX0RGR19UNCYg
X0RGR192YWx1ZTQgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDUmIF9ERkdfdmFsdWU1LCBfREZHX3Zh
bHVlMSBERkdfQ09NTUEgX0RGR192YWx1ZTIgREZHX0NPTU1BIF9ERkdfdmFsdWUzIERGR19DT01N
QSBfREZHX3ZhbHVlNCBERkdfQ09NTUEgX0RGR192YWx1ZTUpIFwKLSAgICB2KHRlbXBsYXRlPCwg
PiwgdHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMiBERkdfQ09NTUEg
dHlwZW5hbWUgX0RGR19UMyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNCBERkdfQ09NTUEgdHlw
ZW5hbWUgX0RGR19UNSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNiwgREZHX0NPTU1BLCBjb25z
dCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RGR192YWx1
ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzIERGR19DT01NQSBjb25zdCBf
REZHX1Q0JiBfREZHX3ZhbHVlNCBERkdfQ09NTUEgY29uc3QgX0RGR19UNSYgX0RGR192YWx1ZTUg
REZHX0NPTU1BIGNvbnN0IF9ERkdfVDYmIF9ERkdfdmFsdWU2LCBfREZHX3ZhbHVlMSBERkdfQ09N
TUEgX0RGR192YWx1ZTIgREZHX0NPTU1BIF9ERkdfdmFsdWUzIERGR19DT01NQSBfREZHX3ZhbHVl
NCBERkdfQ09NTUEgX0RGR192YWx1ZTUgREZHX0NPTU1BIF9ERkdfdmFsdWU2KSBcCi0gICAgdih0
ZW1wbGF0ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDIg
REZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDMgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDQgREZH
X0NPTU1BIHR5cGVuYW1lIF9ERkdfVDUgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDYgREZHX0NP
TU1BIHR5cGVuYW1lIF9ERkdfVDcsIERGR19DT01NQSwgY29uc3QgX0RGR19UMSYgX0RGR192YWx1
ZTEgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDImIF9ERkdfdmFsdWUyIERGR19DT01NQSBjb25zdCBf
REZHX1QzJiBfREZHX3ZhbHVlMyBERkdfQ09NTUEgY29uc3QgX0RGR19UNCYgX0RGR192YWx1ZTQg
REZHX0NPTU1BIGNvbnN0IF9ERkdfVDUmIF9ERkdfdmFsdWU1IERGR19DT01NQSBjb25zdCBfREZH
X1Q2JiBfREZHX3ZhbHVlNiBERkdfQ09NTUEgY29uc3QgX0RGR19UNyYgX0RGR192YWx1ZTcsIF9E
RkdfdmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09NTUEgX0RGR192YWx1ZTMgREZH
X0NPTU1BIF9ERkdfdmFsdWU0IERGR19DT01NQSBfREZHX3ZhbHVlNSBERkdfQ09NTUEgX0RGR192
YWx1ZTYgREZHX0NPTU1BIF9ERkdfdmFsdWU3KSBcCi0gICAgdih0ZW1wbGF0ZTwsID4sIHR5cGVu
YW1lIF9ERkdfVDEgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDIgREZHX0NPTU1BIHR5cGVuYW1l
IF9ERkdfVDMgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDQgREZHX0NPTU1BIHR5cGVuYW1lIF9E
RkdfVDUgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDYgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdf
VDcgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDgsIERGR19DT01NQSwgY29uc3QgX0RGR19UMSYg
X0RGR192YWx1ZTEgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDImIF9ERkdfdmFsdWUyIERGR19DT01N
QSBjb25zdCBfREZHX1QzJiBfREZHX3ZhbHVlMyBERkdfQ09NTUEgY29uc3QgX0RGR19UNCYgX0RG
R192YWx1ZTQgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDUmIF9ERkdfdmFsdWU1IERGR19DT01NQSBj
b25zdCBfREZHX1Q2JiBfREZHX3ZhbHVlNiBERkdfQ09NTUEgY29uc3QgX0RGR19UNyYgX0RGR192
YWx1ZTcgREZHX0NPTU1BIF9ERkdfVDgmIF9ERkdfdmFsdWU4LCBfREZHX3ZhbHVlMSBERkdfQ09N
TUEgX0RGR192YWx1ZTIgREZHX0NPTU1BIF9ERkdfdmFsdWUzIERGR19DT01NQSBfREZHX3ZhbHVl
NCBERkdfQ09NTUEgX0RGR192YWx1ZTUgREZHX0NPTU1BIF9ERkdfdmFsdWU2IERGR19DT01NQSBf
REZHX3ZhbHVlNyBERkdfQ09NTUEgX0RGR192YWx1ZTgpCi0KLSNlbmRpZiAvLyBERkdWYXJpYWRp
Y0Z1bmN0aW9uX2gKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw2IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIEFyaXRo
RlJvdW5kOgogICAgIGNhc2UgQXJpdGhOZWdhdGU6CiAgICAgY2FzZSBVSW50MzJUb051bWJlcjoK
LSAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAgY2FzZSBDb21wYXJlRXFDb25zdGFudDoKICAg
ICBjYXNlIEp1bXA6CiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CkBAIC0xMDMsNyArMTAyLDYgQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgR2V0Q2xv
c3VyZVJlZ2lzdGVyczoKICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgY2FzZSBQdXRDbG9z
dXJlVmFyOgotICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgIGNhc2UgSW52YWxpZGF0aW9uUG9p
bnQ6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgpAQCAt
MTUyLDggKzE1MCwxOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
CiAgICAgY2FzZSBJc0Z1bmN0aW9uOgogICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZToKICAgICBj
YXNlIEluc3RhbmNlT2Y6CisgICAgY2FzZSBEb3VibGVSZXA6CisgICAgY2FzZSBWYWx1ZVJlcDoK
KyAgICBjYXNlIEludDUyUmVwOgorICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAgY2FzZSBJ
bnQ1MkNvbnN0YW50OgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSWRlbnRpdHk6CisgICAgICAgIC8vIE5vIGJhY2tlbmQgaGFuZGxlcyB0aGlzIGJl
Y2F1c2UgaXQgd2lsbCBiZSBvcHRpbWl6ZWQgb3V0LiBCdXQgd2UgbWF5IGNoZWNrCisgICAgICAg
IC8vIGZvciBjYXBhYmlsaXRpZXMgYmVmb3JlIG9wdGltaXphdGlvbi4gSXQgd291bGQgYmUgYSBk
ZWVwIGVycm9yIHRvIHJlbW92ZSB0aGlzCisgICAgICAgIC8vIGNhc2UgYmVjYXVzZSBpdCB3b3Vs
ZCBwcmV2ZW50IHVzIGZyb20gY2F0Y2hpbmcgYnVncyB3aGVyZSB0aGUgRlRMIGJhY2tlbmQKKyAg
ICAgICAgLy8gcGlwZWxpbmUgZmFpbGVkIHRvIG9wdGltaXplIG91dCBhbiBJZGVudGl0eS4KKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgIGNhc2UgUHV0QnlJZDoK
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKQpAQCAtMjM1
LDkgKzI0NCw5IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAg
ICBjYXNlIENvbXBhcmVFcToKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQz
MlVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJ
bnQ1MlJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChOdW1iZXJVc2UpKQorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KERvdWJsZVJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpCiAgICAgICAgICAgICBicmVhazsKQEAgLTI1
NSw5ICsyNjQsOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAg
ICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSW50MzJVc2UpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoSW50NTJSZXBVc2UpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChEb3VibGVSZXBVc2UpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpKQogICAgICAgICAgICAgYnJlYWs7
CkBAIC0yODAsOSArMjg5LDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5v
ZGUqIAogICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXJFcToKICAgICAgICAgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
aWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKQorICAgICAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSkKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMzUwLDEwICszNTksMTAgQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoR3Jh
cGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAgICAgICAg
ICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25vd25JbnQzMlVzZToK
LSAgICAgICAgICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICAgICAgY2Fz
ZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE51bWJlclVzZToKLSAgICAgICAg
ICAgICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgotICAgICAgICAgICAgICAgIGNhc2UgUmVhbE51
bWJlclVzZToKKyAgICAgICAgICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgICAg
ICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBCb29sZWFu
VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgQ2VsbFVzZToKICAgICAgICAgICAgICAgICBjYXNl
IEtub3duQ2VsbFVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDcg
KzE4Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgIExUeXBlIHR5cGU7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5mbGFn
cygpICYgTm9kZVJlc3VsdE1hc2spIHsKLSAgICAgICAgICAgICAgICBjYXNlIE5vZGVSZXN1bHRO
dW1iZXI6CisgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0RG91YmxlOgogICAgICAgICAg
ICAgICAgICAgICB0eXBlID0gbV9vdXQuZG91YmxlVHlwZTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6CkBAIC0yODIsMTIg
KzI4MiwzMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSlND
b25zdGFudDoKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERvdWJsZUNvbnN0YW50
OgorICAgICAgICAgICAgY29tcGlsZURvdWJsZUNvbnN0YW50KCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgorICAgICAgICAgICAgY29tcGlsZUludDUy
Q29uc3RhbnQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYWtKU0NvbnN0
YW50OgogICAgICAgICAgICAgY29tcGlsZVdlYWtKU0NvbnN0YW50KCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgogICAgICAgICAgICAgY29tcGls
ZVBoYW50b21Bcmd1bWVudHMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERv
dWJsZVJlcDoKKyAgICAgICAgICAgIGNvbXBpbGVEb3VibGVSZXAoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFZhbHVlUmVwOgorICAgICAgICAgICAgY29tcGlsZVZhbHVlUmVw
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnQ1MlJlcDoKKyAgICAgICAg
ICAgIGNvbXBpbGVJbnQ1MlJlcCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
VmFsdWVUb0ludDMyOgorICAgICAgICAgICAgY29tcGlsZVZhbHVlVG9JbnQzMigpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CiAgICAgICAgICAgICBjb21w
aWxlR2V0QXJndW1lbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzc4LDkgKzM5Niw2IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAgICAgICAgICBjb21w
aWxlVUludDMyVG9OdW1iZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIElu
dDMyVG9Eb3VibGU6Ci0gICAgICAgICAgICBjb21waWxlSW50MzJUb0RvdWJsZSgpOwotICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgICAgICBj
b21waWxlQ2hlY2tTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTY5LDEyICs1
ODQsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgICAg
ICAgICAgY29tcGlsZUludmFsaWRhdGlvblBvaW50KCk7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6Ci0gICAgICAgICAgICBjb21waWxlVmFsdWVUb0ludDMy
KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnQ1MlRvVmFsdWU6Ci0gICAg
ICAgICAgICBjb21waWxlSW50NTJUb1ZhbHVlKCk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6CiAgICAgICAgICAgICBjb21waWxlQ2hl
Y2tBcmd1bWVudHNOb3RDcmVhdGVkKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTYzMyw3MyAr
NjQyLDE4IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHZv
aWQgY29tcGlsZVZhbHVlVG9JbnQzMigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpKSB7Ci0gICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgICAgICAg
ICBzZXRJbnQzMihsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Ci0gICAgICAgICAg
ICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxk
MSgpKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBO
dW1iZXJVc2U6Ci0gICAgICAgIGNhc2UgTm90Q2VsbFVzZTogewotICAgICAgICAgICAgTG93ZXJl
ZE5vZGVWYWx1ZSB2YWx1ZSA9IG1faW50MzJWYWx1ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9k
ZSgpKTsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgICAg
IHNldEludDMyKHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVl
cy5nZXQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWQo
dmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIobnVtYmVyT3JOb3RDZWxsVG9JbnQz
MihtX25vZGUtPmNoaWxkMSgpLCB2YWx1ZS52YWx1ZSgpKSk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZhbHVlID0gbV9k
b3VibGVWYWx1ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKLSAgICAgICAgICAgIGlm
IChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgICAgIHNldEludDMyKGRvdWJsZVRvSW50
MzIodmFsdWUudmFsdWUoKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBXZSdsbCBiYXNpY2FsbHkganVzdCBnZXQg
aGVyZSBmb3IgY29uc3RhbnRzLiBCdXQgaXQncyBnb29kIHRvIGhhdmUgdGhpcwotICAgICAgICAg
ICAgLy8gY2F0Y2gtYWxsIHNpbmNlIHdlIG9mdGVuIGFkZCBuZXcgcmVwcmVzZW50YXRpb25zIGlu
dG8gdGhlIG1peC4KLSAgICAgICAgICAgIHNldEludDMyKAotICAgICAgICAgICAgICAgIG51bWJl
ck9yTm90Q2VsbFRvSW50MzIoCi0gICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQxKCks
Ci0gICAgICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgICAgIAotICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6Ci0gICAgICAgICAgICBzZXRJbnQz
MihtX291dC56ZXJvRXh0KGxvd0Jvb2xlYW4obV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmludDMy
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBjb21waWxlSW50NTJUb1ZhbHVlKCkK
LSAgICB7Ci0gICAgICAgIHNldEpTVmFsdWUobG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSk7
Ci0gICAgfQotCiAgICAgdm9pZCBjb21waWxlVXBzaWxvbigpCiAgICAgewogICAgICAgICBMVmFs
dWUgZGVzdGluYXRpb24gPSBtX3BoaXMuZ2V0KG1fbm9kZS0+cGhpKCkpOwogICAgICAgICAKICAg
ICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewotICAgICAgICBjYXNl
IE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBtX291
dC5zZXQobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBkZXN0aW5hdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgICAgIG1fb3V0LnNl
dChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJl
cFVzZToKICAgICAgICAgICAgIG1fb3V0LnNldChsb3dJbnQ1MihtX25vZGUtPmNoaWxkMSgpKSwg
ZGVzdGluYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQm9vbGVhblVz
ZToKQEAgLTcyMiw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgc291cmNlID0g
bV9waGlzLmdldChtX25vZGUpOwogICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmZs
YWdzKCkgJiBOb2RlUmVzdWx0TWFzaykgewotICAgICAgICBjYXNlIE5vZGVSZXN1bHROdW1iZXI6
CisgICAgICAgIGNhc2UgTm9kZVJlc3VsdERvdWJsZToKICAgICAgICAgICAgIHNldERvdWJsZSht
X291dC5nZXQoc291cmNlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOb2Rl
UmVzdWx0SW50MzI6CkBAIC03NDIsMTcgKzY5NiwxMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHZvaWQgY29tcGlsZURvdWJsZUNv
bnN0YW50KCkKKyAgICB7CisgICAgICAgIHNldERvdWJsZShtX291dC5jb25zdERvdWJsZShtX2dy
YXBoLnZhbHVlT2ZOdW1iZXJDb25zdGFudChtX25vZGUpKSk7CisgICAgfQorICAgIAorICAgIHZv
aWQgY29tcGlsZUludDUyQ29uc3RhbnQoKQorICAgIHsKKyAgICAgICAgaW50NjRfdCB2YWx1ZSA9
IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobV9ub2RlKS5hc01hY2hpbmVJbnQoKTsKKyAgICAg
ICAgCisgICAgICAgIHNldEludDUyKG1fb3V0LmNvbnN0SW50NjQodmFsdWUgPDwgSlNWYWx1ZTo6
aW50NTJTaGlmdEFtb3VudCkpOworICAgICAgICBzZXRTdHJpY3RJbnQ1MihtX291dC5jb25zdElu
dDY0KHZhbHVlKSk7CisgICAgfQogCisgICAgdm9pZCBjb21waWxlV2Vha0pTQ29uc3RhbnQoKQor
ICAgIHsKKyAgICAgICAgc2V0SlNWYWx1ZSh3ZWFrUG9pbnRlcihtX25vZGUtPndlYWtDb25zdGFu
dCgpKSk7CisgICAgfQorICAgIAogICAgIHZvaWQgY29tcGlsZVBoYW50b21Bcmd1bWVudHMoKQog
ICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKCkpKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZVdlYWtKU0NvbnN0
YW50KCkKKyAgICB2b2lkIGNvbXBpbGVEb3VibGVSZXAoKQogICAgIHsKLSAgICAgICAgc2V0SlNW
YWx1ZSh3ZWFrUG9pbnRlcihtX25vZGUtPndlYWtDb25zdGFudCgpKSk7CisgICAgICAgIHN3aXRj
aCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBOdW1iZXJVc2U6
IHsKKyAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHNldERvdWJsZShqc1Zh
bHVlVG9Eb3VibGUobV9ub2RlLT5jaGlsZDEoKSwgdmFsdWUpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsK
KyAgICAgICAgICAgIHNldERvdWJsZShzdHJpY3RJbnQ1MlRvRG91YmxlKGxvd1N0cmljdEludDUy
KG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVW
YWx1ZVJlcCgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpKSB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CisgICAgICAgICAgICBzZXRKU1Zh
bHVlKGJveERvdWJsZShsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSW50NTJSZXBV
c2U6IHsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoc3RyaWN0SW50NTJUb0pTVmFsdWUobG93U3Ry
aWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CiAgICAgfQogICAgIAorICAgIHZvaWQg
Y29tcGlsZUludDUyUmVwKCkKKyAgICB7CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LnNp
Z25FeHQobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmludDY0KSk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgY29tcGlsZVZhbHVlVG9JbnQzMigpCisgICAgeworICAgICAgICBzd2l0
Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgSW50MzJVc2U6
CisgICAgICAgICAgICBzZXRJbnQzMihsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgor
ICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobG93U3RyaWN0SW50NTIobV9u
b2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICAgICAgc2V0SW50MzIoZG91YmxlVG9JbnQz
Mihsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgCisgICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIE5vdENlbGxV
c2U6IHsKKyAgICAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2ludDMyVmFsdWVz
LmdldChtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZCh2
YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBzZXRJbnQzMih2YWx1ZS52YWx1ZSgpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsK
KyAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgeworICAgICAgICAgICAgICAgIHNldElu
dDMyKG51bWJlck9yTm90Q2VsbFRvSW50MzIobV9ub2RlLT5jaGlsZDEoKSwgdmFsdWUudmFsdWUo
KSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBXZSdsbCBiYXNpY2FsbHkganVzdCBnZXQgaGVyZSBmb3IgY29uc3Rh
bnRzLiBCdXQgaXQncyBnb29kIHRvIGhhdmUgdGhpcworICAgICAgICAgICAgLy8gY2F0Y2gtYWxs
IHNpbmNlIHdlIG9mdGVuIGFkZCBuZXcgcmVwcmVzZW50YXRpb25zIGludG8gdGhlIG1peC4KKyAg
ICAgICAgICAgIHNldEludDMyKAorICAgICAgICAgICAgICAgIG51bWJlck9yTm90Q2VsbFRvSW50
MzIoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQxKCksCisgICAgICAgICAgICAg
ICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEJvb2xlYW5Vc2U6CisgICAgICAgICAgICBzZXRJbnQzMihtX291dC56ZXJvRXh0
KGxvd0Jvb2xlYW4obV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmludDMyKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlR2V0QXJndW1lbnQoKQogICAgIHsKICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1fbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRh
KCk7CkBAIC05NjYsNyArMTAyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAg
ICAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9k
ZShtX25vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NTIpCiAgICAgICAgICAgICAg
ICAgJiYgIW1fc3RhdGUuZm9yTm9kZShtX25vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVj
SW50NTIpKSB7CiAgICAgICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CkBAIC0xMDE2LDcgKzEw
NzMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVz
ZTogewogICAgICAgICAgICAgTFZhbHVlIEMxID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICAgICAgTFZhbHVlIEMyID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpOwog
CkBAIC0xMDY1LDcgKzExMjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAg
ICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CiAgICAg
ICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCks
IGtpbmQpOwogICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NTIobV9ub2RlLT5jaGls
ZDIoKSwgb3Bwb3NpdGUoa2luZCkpOwpAQCAtMTA5Miw3ICsxMTQ5LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBO
dW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIHNl
dERvdWJsZSgKICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVNdWwobG93RG91YmxlKG1fbm9k
ZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTE5NSw3ICsxMjUyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAg
ICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIHNldERvdWJsZShtX291dC5k
b3VibGVEaXYoCiAgICAgICAgICAgICAgICAgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBs
b3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI5
Myw3ICsxMzUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6IHsKICAgICAgICAgICAgIHNldERvdWJsZSgKICAgICAgICAgICAgICAgICBtX291
dC5kb3VibGVSZW0obG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUobV9ub2Rl
LT5jaGlsZDIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMyMSw3ICsxMzc4LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAg
ICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICAgICAgCkBAIC0xMzcxLDcgKzE0MjgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogewor
ICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0
LmRvdWJsZUFicyhsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC0xNDE4LDcgKzE0NzUsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE1hY2hpbmVJ
bnRVc2U6IHsKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICAgICAgaWYgKCFt
X3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyKSkg
ewogICAgICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAgICAgICAgICAgIExWYWx1
ZSB2YWx1ZSA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQpOwpAQCAt
MTQzOCw3ICsxNDk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBE
b3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIHNldERvdWJsZShtX291dC5kb3VibGVOZWcobG93
RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtMTQ5OCwxMSArMTU1NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHNldEludDMyKHZhbHVl
KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlSW50MzJUb0RvdWJsZSgpCi0gICAgewot
ICAgICAgICBzZXREb3VibGUobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKTsKLSAgICB9Ci0g
ICAgCiAgICAgdm9pZCBjb21waWxlQ2hlY2tTdHJ1Y3R1cmUoKQogICAgIHsKICAgICAgICAgTFZh
bHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMjIxMyw3ICsyMjY1LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoaXNJbnQodHlwZSkpIHsKICAgICAgICAg
ICAgICAgICAgICAgTFZhbHVlIGludFZhbHVlOwogICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KGNoaWxkMy51c2VLaW5kKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBNYWNoaW5lSW50
VXNlOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAg
ICAgICAgICBjYXNlIEludDMyVXNlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hp
bGQzLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnRWYWx1ZSA9IGxvd0ludDMyKGNoaWxkMyk7CkBAIC0yMjQ2LDcgKzIyOTgsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIE51bWJl
clVzZTogeworICAgICAgICAgICAgICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAg
ICAgICAgICAgICAgICAgICAgTFZhbHVlIGRvdWJsZVZhbHVlID0gbG93RG91YmxlKGNoaWxkMyk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
c0NsYW1wZWQodHlwZSkpIHsKQEAgLTMzMjgsOCArMzM4MCw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb21waWxlQ29tcGFyZUVxKCkKICAgICB7CiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChJbnQzMlVzZSkKLSAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE1hY2hpbmVJbnRVc2UpCi0gICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChO
dW1iZXJVc2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJl
cFVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVz
ZSkKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkKICAg
ICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpCiAgICAgICAg
ICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpIHsKQEAgLTMz
NzEsNyArMzQyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50
VXNlKSkgeworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2Up
KSB7CiAgICAgICAgICAgICBJbnQ1MktpbmQga2luZDsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0
ID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5jaGlsZDEoKSwga2luZCk7CiAgICAgICAgICAg
ICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQ1MihtX25vZGUtPmNoaWxkMigpLCBraW5kKTsKQEAgLTMz
NzksNyArMzQzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2Up
KSB7CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpKSB7
CiAgICAgICAgICAgICBzZXRCb29sZWFuKAogICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUVx
dWFsKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQy
KCkpKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00MTIzLDcgKzQxNzUsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsKKyAgICAgICAgaWYgKG1f
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICAgICAgSW50NTJL
aW5kIGtpbmQ7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZlckludDUyKG1f
bm9kZS0+Y2hpbGQxKCksIGtpbmQpOwogICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50
NTIobV9ub2RlLT5jaGlsZDIoKSwga2luZCk7CkBAIC00MTMxLDcgKzQxODMsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkgeworICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKSkgewogICAgICAgICAgICAgTFZhbHVlIGxl
ZnQgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFsdWUgcmln
aHQgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBzZXRCb29sZWFu
KG1fb3V0LmZjbXAocmVhbENvbmRpdGlvbiwgbGVmdCwgcmlnaHQpKTsKQEAgLTQzODgsNyArNDQ0
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gbG93Qm9vbGVhbihtX25vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgICAgIHJldHVybiBtX291
dC5ub3RaZXJvMzIobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSkpOwotICAgICAgICBjYXNlIE51
bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICByZXR1cm4g
bV9vdXQuZG91YmxlTm90RXF1YWwobG93RG91YmxlKGVkZ2UpLCBtX291dC5kb3VibGVaZXJvKTsK
ICAgICAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICAgICAgcmV0dXJuIG1fb3V0
LmJpdE5vdCgKQEAgLTQ3MzQsMjEgKzQ3ODYsOSBAQCBwcml2YXRlOgogICAgIH0KICAgICAKICAg
ICBlbnVtIEludDUyS2luZCB7IFN0cmljdEludDUyLCBJbnQ1MiB9OwotICAgIExWYWx1ZSBsb3dJ
bnQ1MihFZGdlIGVkZ2UsIEludDUyS2luZCBraW5kLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1v
ZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgTFZhbHVlIGxvd0ludDUyKEVk
Z2UgZWRnZSwgSW50NTJLaW5kIGtpbmQpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1v
ZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09
IE1hY2hpbmVJbnRVc2UpOwotICAgICAgICAKLSAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50
KCkpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0
YW50KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgICAgIGlmICghdmFsdWUuaXNNYWNoaW5lSW50KCkp
IHsKLSAgICAgICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBtX291dC5pbnQ2NFplcm87Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
bnQ2NF90IHJlc3VsdCA9IHZhbHVlLmFzTWFjaGluZUludCgpOwotICAgICAgICAgICAgaWYgKGtp
bmQgPT0gSW50NTIpCi0gICAgICAgICAgICAgICAgcmVzdWx0IDw8PSBKU1ZhbHVlOjppbnQ1MlNo
aWZ0QW1vdW50OwotICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0SW50NjQocmVzdWx0KTsK
LSAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1
MlJlcFVzZSk7CiAgICAgICAgIAogICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlOwogICAg
ICAgICAKQEAgLTQ3NzMsMzcgKzQ4MTMsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBy
ZXR1cm4gaW50NTJUb1N0cmljdEludDUyKHZhbHVlLnZhbHVlKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9pbnQzMlZhbHVlcy5n
ZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAg
ICAgIHJldHVybiBzZXRJbnQ1MldpdGhTdHJpY3RWYWx1ZSgKLSAgICAgICAgICAgICAgICBlZGdl
Lm5vZGUoKSwgbV9vdXQuc2lnbkV4dCh2YWx1ZS52YWx1ZSgpLCBtX291dC5pbnQ2NCksIGtpbmQp
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fc3RhdGUu
Zm9yTm9kZShlZGdlKS5tX3R5cGUgJiBTcGVjSW50NTIpKTsKLSAgICAgICAgCi0gICAgICAgIHZh
bHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1Zh
bGlkKHZhbHVlKSkgewotICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gdmFsdWUudmFs
dWUoKTsKLSAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgIGpzVmFs
dWVWYWx1ZShib3hlZFJlc3VsdCksIGVkZ2UsIFNwZWNNYWNoaW5lSW50LCBpc05vdEludDMyKGJv
eGVkUmVzdWx0KSk7Ci0gICAgICAgICAgICByZXR1cm4gc2V0SW50NTJXaXRoU3RyaWN0VmFsdWUo
Ci0gICAgICAgICAgICAgICAgZWRnZS5ub2RlKCksIG1fb3V0LnNpZ25FeHQodW5ib3hJbnQzMihi
b3hlZFJlc3VsdCksIG1fb3V0LmludDY0KSwga2luZCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCEobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIFNw
ZWNNYWNoaW5lSW50KSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fc3RhdGUuZm9yTm9k
ZShlZGdlKS5tX3R5cGUpOwogICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwogICAgICAg
ICByZXR1cm4gbV9vdXQuaW50NjRaZXJvOwogICAgIH0KICAgICAKLSAgICBMVmFsdWUgbG93SW50
NTIoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVy
YW5kU3BlY3VsYXRpb24pCisgICAgTFZhbHVlIGxvd0ludDUyKEVkZ2UgZWRnZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBsb3dJbnQ1MihlZGdlLCBJbnQ1MiwgbW9kZSk7CisgICAgICAgIHJldHVy
biBsb3dJbnQ1MihlZGdlLCBJbnQ1Mik7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBsb3dTdHJp
Y3RJbnQ1MihFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRp
Y09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93U3RyaWN0SW50NTIoRWRnZSBlZGdl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGxvd0ludDUyKGVkZ2UsIFN0cmljdEludDUyLCBtb2Rl
KTsKKyAgICAgICAgcmV0dXJuIGxvd0ludDUyKGVkZ2UsIFN0cmljdEludDUyKTsKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBiZXR0ZXJVc2VTdHJpY3RJbnQ1MihOb2RlKiBub2RlKQpAQCAtNDgzMCwx
MCArNDg1MywxMCBAQCBwcml2YXRlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KICAgICAKLSAgICBMVmFsdWUgbG93V2hpY2hldmVySW50NTIoRWRnZSBlZGdl
LCBJbnQ1MktpbmQmIGtpbmQsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRp
Y09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93V2hpY2hldmVySW50NTIoRWRnZSBl
ZGdlLCBJbnQ1MktpbmQmIGtpbmQpCiAgICAgewogICAgICAgICBraW5kID0gYmVzdEludDUyS2lu
ZChlZGdlKTsKLSAgICAgICAgcmV0dXJuIGxvd0ludDUyKGVkZ2UsIGtpbmQsIG1vZGUpOworICAg
ICAgICByZXR1cm4gbG93SW50NTIoZWRnZSwga2luZCk7CiAgICAgfQogICAgIAogICAgIExWYWx1
ZSBsb3dDZWxsKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21h
dGljT3BlcmFuZFNwZWN1bGF0aW9uKQpAQCAtNDkzMSw3MSArNDk1NCwxNSBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gbV9vdXQuYm9vbGVhbkZhbHNlOwogICAgIH0KICAgICAKLSAgICBMVmFs
dWUgbG93RG91YmxlKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIExWYWx1ZSBsb3dEb3VibGUoRWRnZSBlZGdl
KQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbiB8fCBpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOwotICAgICAgICAKLSAg
ICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgICAg
IGlmICghdmFsdWUuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgIHRlcm1pbmF0ZShVbmNv
dW50YWJsZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmRvdWJsZVplcm87Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3REb3VibGUodmFsdWUuYXNO
dW1iZXIoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNEb3VibGUoZWRn
ZS51c2VLaW5kKCkpKTsKICAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUg
PSBtX2RvdWJsZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2
YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsKICAgICAgICAgCi0gICAg
ICAgIHZhbHVlID0gbV9pbnQzMlZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAo
aXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5pbnRU
b0RvdWJsZSh2YWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgICAgIHNldERvdWJsZShlZGdlLm5vZGUo
KSwgcmVzdWx0KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIHZhbHVlID0gbV9zdHJpY3RJbnQ1MlZhbHVlcy5nZXQoZWRnZS5ub2RlKCkp
OwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gc3RyaWN0
SW50NTJUb0RvdWJsZShlZGdlLCB2YWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgCi0gICAgICAgIHZh
bHVlID0gbV9pbnQ1MlZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxp
ZCh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gc3RyaWN0SW50NTJUb0RvdWJsZShlZGdlLCBp
bnQ1MlRvU3RyaWN0SW50NTIodmFsdWUudmFsdWUoKSkpOwotICAgICAgICAKLSAgICAgICAgdmFs
dWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFs
aWQodmFsdWUpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSB2YWx1ZS52YWx1
ZSgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBpbnRDYXNlID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJEb3VibGUgdW5ib3hpbmcgaW50IGNhc2UiKSk7Ci0gICAgICAg
ICAgICBMQmFzaWNCbG9jayBkb3VibGVDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3Vi
bGUgdW5ib3hpbmcgZG91YmxlIGNhc2UiKSk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBjb250
aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZSB1bmJveGluZyBjb250aW51
YXRpb24iKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc05vdElu
dDMyKGJveGVkUmVzdWx0KSwgdW5zdXJlKGRvdWJsZUNhc2UpLCB1bnN1cmUoaW50Q2FzZSkpOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFw
cGVuZFRvKGludENhc2UsIGRvdWJsZUNhc2UpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBW
YWx1ZUZyb21CbG9jayBpbnRUb0RvdWJsZSA9IG1fb3V0LmFuY2hvcigKLSAgICAgICAgICAgICAg
ICBtX291dC5pbnRUb0RvdWJsZSh1bmJveEludDMyKGJveGVkUmVzdWx0KSkpOwotICAgICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhkb3VibGVDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBGVExfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUo
Ym94ZWRSZXN1bHQpLCBlZGdlLCBTcGVjRnVsbE51bWJlciwgaXNDZWxsT3JNaXNjKGJveGVkUmVz
dWx0KSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHVuYm94ZWRE
b3VibGUgPSBtX291dC5hbmNob3IodW5ib3hEb3VibGUoYm94ZWRSZXN1bHQpKTsKLSAgICAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5waGkobV9vdXQuZG91YmxlVHlwZSwgaW50
VG9Eb3VibGUsIHVuYm94ZWREb3VibGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzZXRE
b3VibGUoZWRnZS5ub2RlKCksIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fc3RhdGUuZm9y
Tm9kZShlZGdlKS5tX3R5cGUgJiBTcGVjRnVsbE51bWJlcikpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVCghbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSk7CiAgICAgICAgIHRlcm1pbmF0ZShV
bmNvdW50YWJsZSk7CiAgICAgICAgIHJldHVybiBtX291dC5kb3VibGVaZXJvOwogICAgIH0KQEAg
LTUwMDMsNiArNDk3MCw4IEBAIHByaXZhdGU6CiAgICAgTFZhbHVlIGxvd0pTVmFsdWUoRWRnZSBl
ZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3Vs
YXRpb24pCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IFVudHlwZWRVc2UpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghaXNEb3VibGUoZWRnZS51c2VLaW5kKCkpKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gSW50NTJSZXBVc2UpOwogICAgICAgICAK
ICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpCiAgICAgICAgICAgICByZXR1cm4gbV9v
dXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUobV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChl
ZGdlLm5vZGUoKSkpKTsKQEAgLTUwMTgsMTQgKzQ5ODcsNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBt
X3N0cmljdEludDUyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlk
KHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ1MlRvSlNWYWx1ZSh2YWx1ZS52
YWx1ZSgpKTsKLSAgICAgICAgCi0gICAgICAgIHZhbHVlID0gbV9pbnQ1MlZhbHVlcy5nZXQoZWRn
ZS5ub2RlKCkpOwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1
cm4gc3RyaWN0SW50NTJUb0pTVmFsdWUoaW50NTJUb1N0cmljdEludDUyKHZhbHVlLnZhbHVlKCkp
KTsKLSAgICAgICAgCiAgICAgICAgIHZhbHVlID0gbV9ib29sZWFuVmFsdWVzLmdldChlZGdlLm5v
ZGUoKSk7CiAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewogICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IGJveEJvb2xlYW4odmFsdWUudmFsdWUoKSk7CkBAIC01MDMzLDEzICs0OTk0LDYg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIHZhbHVlID0gbV9kb3VibGVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAg
ICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
Ym94RG91YmxlKHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShlZGdlLm5v
ZGUoKSwgcmVzdWx0KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAg
ICAgICAgCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KQEAgLTUwNjUsMTEgKzUwMTksOSBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBMVmFsdWUgc3RyaWN0SW50NTJUb0RvdWJs
ZShFZGdlIGVkZ2UsIExWYWx1ZSB2YWx1ZSkKKyAgICBMVmFsdWUgc3RyaWN0SW50NTJUb0RvdWJs
ZShMVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuaW50
VG9Eb3VibGUodmFsdWUpOwotICAgICAgICBzZXREb3VibGUoZWRnZS5ub2RlKCksIHJlc3VsdCk7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBtX291dC5pbnRUb0RvdWJs
ZSh2YWx1ZSk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBzdHJpY3RJbnQ1MlRvSlNWYWx1ZShM
VmFsdWUgdmFsdWUpCkBAIC01MDk5LDIzICs1MDUxLDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIG1fb3V0LnBoaShtX291dC5pbnQ2NCwgcmVzdWx0cyk7CiAgICAgfQogICAgIAotICAgIExW
YWx1ZSBzZXRJbnQ1MldpdGhTdHJpY3RWYWx1ZShOb2RlKiBub2RlLCBMVmFsdWUgdmFsdWUsIElu
dDUyS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgIGNh
c2UgU3RyaWN0SW50NTI6Ci0gICAgICAgICAgICBzZXRTdHJpY3RJbnQ1Mihub2RlLCB2YWx1ZSk7
Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBJ
bnQ1MjoKLSAgICAgICAgICAgIHZhbHVlID0gc3RyaWN0SW50NTJUb0ludDUyKHZhbHVlKTsKLSAg
ICAgICAgICAgIHNldEludDUyKG5vZGUsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1
ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgTFZhbHVlIHN0cmljdEludDUy
VG9JbnQ1MihMVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuc2hsKHZh
bHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpKTsKQEAgLTUx
NDcsNiArNTA4Miw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQudGVz
dE5vblplcm82NChqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpOwogICAgIH0KKyAgICAKICAgICBM
VmFsdWUgdW5ib3hEb3VibGUoTFZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4g
bV9vdXQuYml0Q2FzdChtX291dC5hZGQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKSwgbV9vdXQu
ZG91YmxlVHlwZSk7CkBAIC01MTU1LDYgKzUwOTEsMzkgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX291dC5zdWIobV9vdXQuYml0Q2FzdChkb3VibGVWYWx1ZSwgbV9vdXQuaW50
NjQpLCBtX3RhZ1R5cGVOdW1iZXIpOwogICAgIH0KKyAgICBMVmFsdWUganNWYWx1ZVRvRG91Ymxl
KEVkZ2UgZWRnZSwgTFZhbHVlIGJveGVkVmFsdWUpCisgICAgeworICAgICAgICBMQmFzaWNCbG9j
ayBpbnRDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGVSZXAgdW5ib3hpbmcgaW50
IGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBGVExfTkVXX0JMT0NL
KG1fb3V0LCAoIkRvdWJsZVJlcCB1bmJveGluZyBkb3VibGUgY2FzZSIpKTsKKyAgICAgICAgTEJh
c2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGVSZXAg
dW5ib3hpbmcgY29udGludWF0aW9uIikpOworICAgICAgICAgICAgCisgICAgICAgIExWYWx1ZSBp
c05vdEludDMyOworICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRn
ZSwgU3BlY0ludDMyKSkKKyAgICAgICAgICAgIGlzTm90SW50MzIgPSBtX291dC5ib29sZWFuRmFs
c2U7CisgICAgICAgIGVsc2UgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2Us
IH5TcGVjSW50MzIpKQorICAgICAgICAgICAgaXNOb3RJbnQzMiA9IG1fb3V0LmJvb2xlYW5UcnVl
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBpc05vdEludDMyID0gdGhpcy0+aXNOb3RJbnQz
Mihib3hlZFZhbHVlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIsIHVuc3VyZShk
b3VibGVDYXNlKSwgdW5zdXJlKGludENhc2UpKTsKKyAgICAgICAgICAgIAorICAgICAgICBMQmFz
aWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGludENhc2UsIGRvdWJsZUNhc2UpOwor
ICAgICAgICAgICAgCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGludFRvRG91YmxlID0gbV9vdXQu
YW5jaG9yKAorICAgICAgICAgICAgbV9vdXQuaW50VG9Eb3VibGUodW5ib3hJbnQzMihib3hlZFZh
bHVlKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAK
KyAgICAgICAgbV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAg
ICAgICAgIAorICAgICAgICBGVExfVFlQRV9DSEVDSygKKyAgICAgICAgICAgIGpzVmFsdWVWYWx1
ZShib3hlZFZhbHVlKSwgZWRnZSwgU3BlY0J5dGVjb2RlTnVtYmVyLCBpc0NlbGxPck1pc2MoYm94
ZWRWYWx1ZSkpOworICAgICAgICAgICAgCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHVuYm94ZWRE
b3VibGUgPSBtX291dC5hbmNob3IodW5ib3hEb3VibGUoYm94ZWRWYWx1ZSkpOworICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAKKyAgICAgICAgcmV0
dXJuIG1fb3V0LnBoaShtX291dC5kb3VibGVUeXBlLCBpbnRUb0RvdWJsZSwgdW5ib3hlZERvdWJs
ZSk7CisgICAgfQogICAgIAogICAgIExWYWx1ZSBpc051bWJlcihMVmFsdWUganNWYWx1ZSkKICAg
ICB7CkBAIC01MjI2LDggKzUxOTUsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFVudHlwZWRV
c2U6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBLbm93bkludDMyVXNlOgotICAg
ICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgogICAgICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgor
ICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAg
ICAgICAgICAgIEFTU0VSVCghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKQEAgLTUyNjAsMTQgKzUy
MzAsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToK
ICAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09yU3RyaW5nT2JqZWN0KGVkZ2UpOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgICAgIHNw
ZWN1bGF0ZVJlYWxOdW1iZXIoZWRnZSk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVOdW1iZXIoZWRnZSk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgotICAgICAgICAgICAgc3Bl
Y3VsYXRlTWFjaGluZUludChlZGdlKTsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgor
ICAgICAgICAgICAgc3BlY3VsYXRlRG91YmxlUmVhbChlZGdlKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVCb29sZWFu
KGVkZ2UpOwpAQCAtNTUyOSwxNCArNTQ5NiwxMSBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQg
c3BlY3VsYXRlTnVtYmVyKEVkZ2UgZWRnZSkKICAgICB7Ci0gICAgICAgIC8vIERvIGFuIGVhcmx5
IHJldHVybiBoZXJlIGJlY2F1c2UgbG93RG91YmxlKCkgY2FuIGNyZWF0ZSBhIGxvdCBvZiBjb250
cm9sIGZsb3cuCi0gICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdl
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGxvd0RvdWJsZShlZGdl
KTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUp
LCBlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIsIGlzTm90TnVtYmVyKHZhbHVlKSk7CiAgICAgfQog
ICAgIAotICAgIHZvaWQgc3BlY3VsYXRlUmVhbE51bWJlcihFZGdlIGVkZ2UpCisgICAgdm9pZCBz
cGVjdWxhdGVEb3VibGVSZWFsKEVkZ2UgZWRnZSkKICAgICB7CiAgICAgICAgIC8vIERvIGFuIGVh
cmx5IHJldHVybiBoZXJlIGJlY2F1c2UgbG93RG91YmxlKCkgY2FuIGNyZWF0ZSBhIGxvdCBvZiBj
b250cm9sIGZsb3cuCiAgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhl
ZGdlKSkKQEAgLTU1NDQsMTkgKzU1MDgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAg
IExWYWx1ZSB2YWx1ZSA9IGxvd0RvdWJsZShlZGdlKTsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0so
Ci0gICAgICAgICAgICBkb3VibGVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNGdWxsUmVhbE51bWJl
ciwKKyAgICAgICAgICAgIGRvdWJsZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0RvdWJsZVJlYWws
CiAgICAgICAgICAgICBtX291dC5kb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKHZhbHVlLCB2YWx1
ZSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSBlZGdl
KQotICAgIHsKLSAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2Up
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgSW50NTJLaW5kIGtpbmQ7
Ci0gICAgICAgIGxvd1doaWNoZXZlckludDUyKGVkZ2UsIGtpbmQpOwotICAgIH0KLSAgICAKICAg
ICB2b2lkIHNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAgIHsKICAgICAgICAgbG93Qm9v
bGVhbihlZGdlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGb3Jt
YXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVG
b3JtYXQuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFZhbHVlRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzEsNiArNzEsNyBAQCB2b2lkIHJl
Ym94QWNjb3JkaW5nVG9Gb3JtYXQoCiAgICAgY2FzZSBWYWx1ZUZvcm1hdERvdWJsZTogewogICAg
ICAgICBqaXQubW92ZURvdWJsZVRvNjQoRlBSSW5mbzo6ZnBSZWdUMCwgc2NyYXRjaDEpOwogICAg
ICAgICBqaXQubW92ZTY0VG9Eb3VibGUodmFsdWUsIEZQUkluZm86OmZwUmVnVDApOworICAgICAg
ICBqaXQuc2FuaXRpemVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgIGppdC5ib3hE
b3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgdmFsdWUpOwogICAgICAgICBqaXQubW92ZTY0VG9Eb3Vi
bGUoc2NyYXRjaDEsIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICBicmVhazsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9u
IDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNiArNTQsMTQgQEAgVmVjdG9yPEJ5dGVj
b2RlQW5kTWFjaGluZU9mZnNldD4mIEFzc2VtYgogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3It
PnZhbHVlOwogfQogCit2b2lkIEFzc2VtYmx5SGVscGVyczo6c2FuaXRpemVEb3VibGUoRlBSUmVn
IGZwcikKK3sKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3ROYU4gPSBicmFuY2hEb3VibGUo
RG91YmxlRXF1YWwsIGZwciwgZnByKTsKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9IFFO
YU47CisgICAgbG9hZERvdWJsZSgmTmFOLCBmcHIpOworICAgIG5vdE5hTi5saW5rKHRoaXMpOwor
fQorCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQogdm9pZCBBc3NlbWJseUhlbHBlcnM6OnNl
dFNhbXBsaW5nRmxhZyhpbnQzMl90IGZsYWcpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQxNyw2ICs0MTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBqaXRBc3NlcnRUYWdzSW5Q
bGFjZSgpIHsgfQogICAgIHZvaWQgaml0QXNzZXJ0QXJndW1lbnRDb3VudFNhbmUoKSB7IH0KICNl
bmRpZgorICAgIAorICAgIHZvaWQgc2FuaXRpemVEb3VibGUoRlBSUmVnIGZwcik7CiAKICAgICAv
LyBUaGVzZSBtZXRob2RzIGNvbnZlcnQgYmV0d2VlbiBkb3VibGVzLCBhbmQgZG91YmxlcyBib3hl
ZCBhbmQgSlNWYWx1ZXMuCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTQzNSw2ICs0MzcsMTEgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gZnByOwogICAgIH0KICAgICAKKyAgICB2b2lkIGJveERv
dWJsZShGUFJSZWcgZnByLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyAgICAgICAgYm94RG91
YmxlKGZwciwgcmVncy5ncHIoKSk7CisgICAgfQorICAgIAogICAgIC8vIEhlcmUgYXJlIHBvc3Np
YmxlIGFycmFuZ2VtZW50cyBvZiBzb3VyY2UsIHRhcmdldCwgc2NyYXRjaDoKICAgICAvLyAtIHNv
dXJjZSwgdGFyZ2V0LCBzY3JhdGNoIGNhbiBhbGwgYmUgc2VwYXJhdGUgcmVnaXN0ZXJzLgogICAg
IC8vIC0gc291cmNlIGFuZCB0YXJnZXQgY2FuIGJlIHRoZSBzYW1lIGJ1dCBzY3JhdGNoIGlzIHNl
cGFyYXRlLgpAQCAtNDY3LDYgKzQ3NCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtb3Zl
SW50c1RvRG91YmxlKHBheWxvYWRHUFIsIHRhZ0dQUiwgZnByLCBzY3JhdGNoRlBSKTsKICAgICB9
CisgICAgCisgICAgdm9pZCBib3hEb3VibGUoRlBSUmVnIGZwciwgSlNWYWx1ZVJlZ3MgcmVncykK
KyAgICB7CisgICAgICAgIGJveERvdWJsZShmcHIsIHJlZ3MudGFnR1BSKCksIHJlZ3MucGF5bG9h
ZEdQUigpKTsKKyAgICB9CiAjZW5kaWYKICAgICAKICAgICBlbnVtIEV4Y2VwdGlvbkNoZWNrS2lu
ZCB7IE5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229355</attachid>
            <date>2014-04-14 23:33:35 -0700</date>
            <delta_ts>2014-04-14 23:34:46 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>233985</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3Mjk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2OCBA
QAorMjAxNC0wNC0xNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBJUiBzaG91bGQga2VlcCB0aGUgZGF0YSBmbG93IG9mIGRvdWJsZXMgYW5kIGludDUyJ3Mg
c2VwYXJhdGUgZnJvbSB0aGUgZGF0YSBmbG93IG9mIEpTVmFsdWUncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGludHJvZHVjZXMg
bW9yZSBzdGF0aWMgdHlwaW5nIGludG8gREZHIElSLiBQcmV2aW91c2x5IHdlIGp1c3QgaGFkIHRo
ZSBub3Rpb24gb2YKKyAgICAgICAgSlNWYWx1ZXMgYW5kIFN0b3JhZ2UuIFRoaXMgd2FzIHdlaXJk
IGJlY2F1c2UgZG91YmxlcyB3ZXJlbid0IGFsd2F5cyBjb252ZXJ0aWJsZSB0bworICAgICAgICBK
U1ZhbHVlcywgYW5kIEludDUycyB3ZXJlbid0IGFsd2F5cyBjb252ZXJ0aWJsZSB0byBlaXRoZXIg
ZG91YmxlcyBvciBKU1ZhbHVlcy4gV2Ugd291bGQKKyAgICAgICAgc29ydCBvZiBpbnNlcnQgZXhw
bGljaXQgY29udmVyc2lvbiBub2RlcyBqdXN0IGZvciB0aGUgcGxhY2VzIHdoZXJlIHdlIGtuZXcg
dGhhdCBhbgorICAgICAgICBpbXBsaWNpdCBjb252ZXJzaW9uIHdvdWxkbid0IGhhdmUgYmVlbiBw
b3NzaWJsZSAtLSBidXQgdGhlcmUgd2FzIG5vIGhhcmQgYW5kIGZhc3QgcnVsZSBzbworICAgICAg
ICB3ZSdkIGdldCBidWdzIGZyb20gZm9yZ2V0dGluZyB0byBkbyB0aGUgcmlnaHQgY29udmVyc2lv
bi4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmQgYW5kIGZh
c3QgcnVsZTogZG91YmxlcyBjYW4gbmV2ZXIgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8KKyAg
ICAgICAgYW55dGhpbmcgYnV0IGRvdWJsZXMsIGFuZCBsaWtld2lzZSBJbnQ1MidzIGNhbiBuZXZl
ciBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZC4gQ29udmVyc2lvbgorICAgICAgICBub2RlcyBhcmUg
dXNlZCBmb3IgYWxsIG9mIHRoZSBjb252ZXJzaW9ucy4gSW50NTJSZXAsIERvdWJsZVJlcCwgYW5k
IFZhbHVlUmVwIGFyZSB0aGUKKyAgICAgICAgY29udmVyc2lvbnMuIFRoZXkgYXJlIGxpa2UgSWRl
bnRpdHkgYnV0IHJldHVybiB0aGUgc2FtZSB2YWx1ZSB1c2luZyBhIGRpZmZlcmVudAorICAgICAg
ICByZXByZXNlbnRhdGlvbi4gTGlrZXdpc2UsIGNvbnN0YW50cyBtYXkgbm93IGJlIHJlcHJlc2Vu
dGVkIHVzaW5nIGVpdGhlciBKU0NvbnN0YW50LAorICAgICAgICBJbnQ1MkNvbnN0YW50LCBvciBE
b3VibGVDb25zdGFudC4gVXNlS2luZHMgaGF2ZSBiZWVuIGFkanVzdGVkIGFjY29yZGluZ2x5LCBh
cyB3ZWxsLgorICAgICAgICBJbnQ1MlJlcFVzZSBhbmQgRG91YmxlUmVwVXNlIGFyZSBub2RlIHVz
ZXMgdGhhdCBtZWFuICJ0aGUgbm9kZSBtdXN0IGJlIG9mIEludDUyIChvcgorICAgICAgICBEb3Vi
bGUpIHR5cGUiLiBUaGV5IGRvbid0IGltcGx5IGNoZWNrcy4gVGhlcmUgaXMgYWxzbyBEb3VibGVS
ZXBSZWFsVXNlLCB3aGljaCBtZWFucyB0aGF0CisgICAgICAgIHdlIHNwZWN1bGF0ZSBEb3VibGVS
ZWFsIGFuZCBleHBlY3QgRG91YmxlIHJlcHJlc2VudGF0aW9uLgorICAgICAgICAKKyAgICAgICAg
SW4gYWRkaXRpb24gdG8gc2ltcGxpZnlpbmcgYSBidW5jaCBvZiBydWxlcyBpbiB0aGUgSVIgYW5k
IG1ha2luZyB0aGUgSVIgbW9yZSB2ZXJpZmlhYmxlLAorICAgICAgICB0aGlzIGFsc28gbWFrZXMg
aXQgZWFzaWVyIHRvIGludHJvZHVjZSBvcHRpbWl6YXRpb25zIGluIHRoZSBmdXR1cmUuIEl0J3Mg
bm93IHBvc3NpYmxlIGZvcgorICAgICAgICBBSSB0byBtb2RlbCB3aGVuL2hvdyBjb252ZXJzaW9u
IHRha2UgcGxhY2UuIEZvciBleGFtcGxlIGlmIGRvaW5nIGEgY29udmVyc2lvbiByZXN1bHRzIGlu
CisgICAgICAgIE5hTiBzYW5pdGl6YXRpb24sIHRoZW4gQUkgY2FuIG1vZGVsIHRoaXMgYW5kIGNh
biBhbGxvdyB1cyB0byBzaW5rIHNhbml0aXphdGlvbnMuIFRoYXQncworICAgICAgICB3aGF0IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE0MTkgd2lsbCBiZSBhbGwg
YWJvdXQuCisgICAgICAgIAorICAgICAgICBUaGlzIHdhcyBhIGJpZyBjaGFuZ2UsIHNvIEkgaGFk
IHRvIGRvIHNvbWUgaW50ZXJlc3RpbmcgdGhpbmdzLCBsaWtlIGZpbmFsbHkgZ2V0IHJpZCBvZgor
ICAgICAgICB0aGUgREZHJ3Mgd2VpcmQgdmFyaWFkaWMgdGVtcGxhdGUgbWFjcm8gaGFja3MgYW5k
IHVzZSByZWFsIEMrKzExIHZhcmlhZGljIHRlbXBsYXRlcy4gQWxzbworICAgICAgICB0aGUgQnl0
ZUNvZGVQYXJzZXIgbm8gbG9uZ2VyIGVtaXRzIElkZW50aXR5IG5vZGVzIHNpbmNlIHRoYXQgd2Fz
IGFsd2F5cyBwb2ludGxlc3MuCisgICAgICAgIAorICAgICAgICBObyBwZXJmb3JtYW5jZSBjaGFu
Z2UgYmVjYXVzZSB0aGlzIG1vc3RseSBqdXN0IHJhdGlvbmFsaXplcyBwcmVleGlzdGluZyBiZWhh
dmlvci4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OnNldEJ1aWx0SW5Db25zdGFu
dCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjo6c2V0Q29uc3RhbnQp
OgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RWYWx1ZTo6Zml4VHlwZUZvclJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKEpTQzo6REZH
OjpBYnN0cmFjdFZhbHVlOjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RWYWx1ZS5oOgorICAgICAgICAqIGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlOjpwcm9w
YWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgICogZGZnL0RG
R0Jhc2ljQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QmFzaWNCbG9jazo6YXBw
ZW5kTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6QmFzaWNCbG9jazo6YXBwZW5kTm9uVGVybWlu
YWwpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDU0VQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OmNvbnN0YW50Q1NFKToKKyAg
ICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAoSlND
OjpERkc6OkNTRVBoYXNlOjppbnQzMlRvRG91YmxlQ1NFKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNl
Ojpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRENFUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkRDRVBoYXNlOjpmaXh1cEJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHRWRn
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkVkZ2U6OndpbGxOb3RIYXZlQ2hlY2spOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBHZXRBbmRTZXRMb2NhbHNJbkJsb2NrKToK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpvYnNlcnZlVXNlS2luZE9uTm9kZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4SW50RWRnZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRvTWFrZUludGVnZXJBZGQpOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OmluamVjdFR5cGVDb252ZXJzaW9uc0luQmxvY2spOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnRyeVRvUmVsYXhSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4RWRnZVJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjppbmplY3RUeXBlQ29udmVyc2lvbnNGb3JFZGdlKToK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjphZGRSZXF1aXJlZFBoYW50b20pOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmFkZFBoYW50b21zSWZOZWNlc3NhcnkpOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNsZWFyUGhhbnRvbXNBdEVuZCk6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBTZXRMb2NhbHNJbkJsb2NrKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZmcvREZHRmx1c2hGb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpyZXN1
bHRGb3IpOgorICAgICAgICAoSlNDOjpERkc6OnVzZUtpbmRGb3IpOgorICAgICAgICAqIGRmZy9E
RkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphZGROb2RlKToKKyAg
ICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKiBkZmcvREZH
SW5zZXJ0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjppbnNlcnRO
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb25TZXQ6Omluc2VydENvbnN0YW50KToK
KyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb25TZXQ6Omluc2VydENvbnN0YW50Rm9yVXNlKToK
KyAgICAgICAgKiBkZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlOjppbnNlcnRBZGQpOgorICAg
ICAgICAoSlNDOjpERkc6OkludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlOjppbnNlcnRNdXN0QWRk
KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
Y29udmVydFRvSWRlbnRpdHkpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAg
ICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok5vZGUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OnNldFJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6cmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0NvbnN0YW50KToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6Y29udmVydFRvQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnZhbHVlT2ZK
U0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNSZXN1bHQpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6Omhhc0ludDMyUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNJbnQ1MlJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzTnVtYmVy
UmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNEb3VibGVSZXN1bHQpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0pTUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNCb29sZWFuUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdG9y
YWdlUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpkZWZhdWx0VXNlS2luZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZGVmYXVsdEVkZ2UpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmNvbnZlcnRUb0lkZW50aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9k
ZUZsYWdzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkdW1wTm9kZUZsYWdzKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZUZsYWdzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2Fub25pY2FsUmVzdWx0
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NS
RXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21w
aWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVF
eGl0KToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUp
OgorICAgICAgICAqIGRmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlJlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZTo6cnVuKToK
KyAgICAgICAgKiBkZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTU0FDb252ZXJzaW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6b3BlcmF0b3Io
KSk6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
c2lsZW50U2F2ZVBsYW5Gb3JHUFIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzaWxlbnRTYXZlUGxhbkZvckZQUik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OnNpbGVudEZpbGwpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVSZWdzVGVtcG9yYXJ5
OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeSk6CisgICAgICAgIChKU0M6OkRGRzo6SlNWYWx1ZVJlZ3NU
ZW1wb3Jhcnk6On5KU1ZhbHVlUmVnc1RlbXBvcmFyeSk6CisgICAgICAgIChKU0M6OkRGRzo6SlNW
YWx1ZVJlZ3NUZW1wb3Jhcnk6OnJlZ3MpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXApOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVSZXApOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJy
YXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQWRkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTXVsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZU51bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0ZURvdWJsZVJlYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSW50MzJUb0RvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZU1hY2hpbmVJbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVSZWFsTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp1c2Up
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpib3hEb3VibGUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGlsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmpzVmFsdWVSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0ZUludDUyT3BlcmFuZDo6U3BlY3VsYXRlSW50NTJPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQ6OlNwZWN1bGF0ZVN0cmljdEludDUyT3Bl
cmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5k
OjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0ZURvdWJsZU9wZXJhbmQ6OlNwZWN1bGF0ZURvdWJsZU9wZXJhbmQpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbnZl
cnRUb0RvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVy
bmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUlu
dDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURv
dWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVD
ZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJv
b2xlYW4pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNh
bE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29udmVydFRvRG91YmxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6Zm9sZElkZW50aXR5KToKKyAgICAgICAgKiBkZmcv
REZHVXNlS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6Cisg
ICAgICAgIChKU0M6OkRGRzo6c2hvdWxkTm90SGF2ZVR5cGVDaGVjayk6CisgICAgICAgIChKU0M6
OkRGRzo6bWF5SGF2ZVR5cGVDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6aXNOdW1lcmljYWwp
OgorICAgICAgICAoSlNDOjpERkc6OmlzRG91YmxlKToKKyAgICAgICAgKEpTQzo6REZHOjppc0Nl
bGwpOgorICAgICAgICAoSlNDOjpERkc6OnVzZXNTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpE
Rkc6OnVzZUtpbmRGb3JSZXN1bHQpOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6OnZhbGlkYXRlKToKKyAgICAgICAgKiBkZmcvREZH
VmFyaWFkaWNGdW5jdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OmNyZWF0ZVBoaVZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZVVwc2lsb24pOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlUGhp
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZURvdWJsZUNvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUludDUyQ29u
c3RhbnQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlV2Vha0pT
Q29uc3RhbnQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlRG91
YmxlUmVwKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVZhbHVl
UmVwKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUludDUyUmVw
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVZhbHVlVG9JbnQz
Mik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcml0aEFkZE9y
U3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTXVs
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoRGl2KToK
KyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTW9kKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTWluT3JNYXgpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJpdGhBYnMpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJpdGhOZWdhdGUpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlUHV0QnlWYWwpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29tcGFyZUVxKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBhcmUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpib29saWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6bG93SW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjps
b3dTdHJpY3RJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd1do
aWNoZXZlckludDUyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6bG93RG91
YmxlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6bG93SlNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnN0cmljdEludDUyVG9Eb3VibGUpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpqc1ZhbHVlVG9Eb3VibGUpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVEb3VibGVSZWFsKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUludDUyVG9WYWx1ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVJbnQzMlRvRG91YmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c2V0SW50NTJXaXRoU3Ry
aWN0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpz
cGVjdWxhdGVSZWFsTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6c3BlY3VsYXRlTWFjaGluZUludCk6IERlbGV0ZWQuCisgICAgICAgICogZnRsL0ZU
TFZhbHVlRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpyZWJveEFjY29yZGluZ1RvRm9y
bWF0KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpzYW5pdGl6ZURvdWJsZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5
SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJveERvdWJsZSk6CisK
IDIwMTQtMDQtMTQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNjcyNzIuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTYxMCw3ICs2MTAsNiBAQAogCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1REIgLyogREZH
Tm9kZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZCNEI1MUYxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR05vZGVBbGxvY2F0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZCOTIxQzE2
RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5ODdGMkMxNjdGRTg0QjAwM0My
RjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZCOTIxRDE2RDAyRjMwMDA1NUE1REIgLyog
REZHU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMUUzQTUwMTUzN0MyQ0IwMDBGOTQ1NiAvKiBERkdTbG93UGF0aEdlbmVy
YXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTBGRkI5MjFFMTZEMDJGNDcwMDU1QTVEQiAvKiBERkdWYXJpYWRpY0Z1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg1QTMxRTE2QUI3NkFF
MDA3NzU3MUUgLyogREZHVmFyaWFkaWNGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkI5MjIwMTZEMDMzQjcwMDU1QTVEQiAvKiBO
b2RlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUgLyogTm9kZUNvbnN0cnVjdG9ycy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkM5OUQx
MTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQwMTg0RUM4QUQwMDlDMTBBQiAvKiBDb25z
dGFudE1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRkZDOTlENDE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRkM5OUQyMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQuY3BwICovOyB9OwpAQCAtODk0LDcgKzg5Myw3IEBACiAJCTU1NDA3NzIwMThEQTU4QUQwMEVG
RjdGMiAvKiBKU0FycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZm
ZXJWaWV3LmggKi87IH07CiAJCTU1NDA3NzIxMThEQTU4QUQwMEVGRjdGMiAvKiBKU0FycmF5QnVm
ZmVyVmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMkI2NkJDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlld0lubGlu
ZXMuaCAqLzsgfTsKIAkJNTU0MDc3MjIxOERBNThBRDAwRUZGN0YyIC8qIEpTQXJyYXlJdGVyYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCREFF
QzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5oICovOyB9OwotCQk1NTQwNzcy
NTE4REE1OEFEMDBFRkY3RjIgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyog
SlNCb3VuZEZ1bmN0aW9uLmggKi87IH07CisJCTU1NDA3NzI1MThEQTU4QUQwMEVGRjdGMiAvKiAo
bnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CiAJCTU1NDA3NzJC
MThEQTU4QUQwMEVGRjdGMiAvKiBKU0NlbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTE2N0Q4MEUxOUJDQzkwMDgwNjZERCAvKiBKU0NlbGwuaCAq
LzsgfTsKIAkJNTU0MDc3MkMxOERBNThBRDAwRUZGN0YyIC8qIEpTQ2VsbElubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTc0OTZGMTY4N0FE
RTIwMEE0RkY2QSAvKiBKU0NlbGxJbmxpbmVzLmggKi87IH07CiAJCTU1NDA3NzJEMThEQTU4QUQw
MEVGRjdGMiAvKiBKU0NJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjFERDg0OTE4QTk0NUJFMDAyNkYzRkEgLyogSlNDSW5saW5lcy5oICov
OyB9OwpAQCAtMTA0Myw1MSArMTA0MiwxMCBAQAogCQk1NTQwNzg4ODE4REE1OEFEMDBFRkY3RjIg
LyogV2Vha1JhbmRvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQyMEJFN0ExMEFBNkREQjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLzsgfTsKIAkJ
NTU0MDc4OEQxOERBNThBRDAwRUZGN0YyIC8qIFdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQw
IC8qIFdyaXRlQmFycmllci5oICovOyB9OwogCQk1NTQwNzg4RjE4REE1OEFEMDBFRkY3RjIgLyog
V3JpdGVCYXJyaWVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRlQmFycmllcklubGlu
ZXMuaCAqLzsgfTsKLQkJNTU0MDc4OUUxOERBNThBRDAwRUZGN0YyIC8qIEFyZ3VtZW50cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1N0RFNTBF
MUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmNwcCAqLzsgfTsKLQkJNTU0MDc4QTAxOERBNThB
RDAwRUZGN0YyIC8qIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NjE0MEM5MTgyOTgyQ0IwMDc1MDYy
NCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgKi87IH07CiAJCTU1NDA3OEFCMThE
QTU4QUQwMEVGRjdGMiAvKiBBcnJheUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzk1MjA2MEUxNUU4QTgwMEE4OThBQiAvKiBB
cnJheUNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDc4QUQxOERBNThBRDAwRUZGN0YyIC8q
IEFycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdCREFFQzIxN0Y0RUExNDAwRjYxNDBDIC8qIEFycmF5SXRlcmF0
b3JQcm90b3R5cGUuY3BwICovOyB9OwogCQk1NTQwNzhBRjE4REE1OEFEMDBFRkY3RjIgLyogQXJy
YXlQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjY5MkE4NEQwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmNwcCAqLzsg
fTsKLQkJNTU0MDc4QjIxOERBNThBRDAwRUZGN0YyIC8qIEJvb2xlYW5Db25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc5NTIzMjBF
MTVFQjU2MDBBODk4QUIgLyogQm9vbGVhbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDc4
QjQxOERBNThBRDAwRUZGN0YyIC8qIEJvb2xlYW5Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3OTUyMzQwRTE1RUI1NjAwQTg5OEFC
IC8qIEJvb2xlYW5Qcm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwNzhENTE4REE1OEFEMDBFRkY3
RjIgLyogRGF0ZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRDIwMzQ1MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlQ29uc3RydWN0
b3IuY3BwICovOyB9OwotCQk1NTQwNzhEODE4REE1OEFEMDBFRkY3RjIgLyogRGF0ZVByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Qy
MDM0NzBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5jcHAgKi87IH07Ci0JCTU1NDA3
OTRCMThEQTU4QUQwMEVGRjdGMiAvKiBFcnJvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDJFOTA0MEUxODM5REIwMDBGOTI5
NyAvKiBFcnJvckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDc5NEUxOERBNThBRDAwRUZG
N0YyIC8qIEVycm9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMDJFOTA2MEUxODM5REIwMDBGOTI5NyAvKiBFcnJvclByb3RvdHlw
ZS5jcHAgKi87IH07Ci0JCTU1NDA3OTdEMThEQTU4QUQwMEVGRjdGMiAvKiBGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjY4MEMwMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsg
fTsKLQkJNTU0MDc5N0YxOERBNThBRDAwRUZGN0YyIC8qIEZ1bmN0aW9uUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODVDMDI1
NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07Ci0JCTU1NDA3OUMy
MThEQTU4QUQwMEVGRjdGMiAvKiBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QjYxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1NDA3OUMz
MThEQTU4QUQwMEVGRjdGMiAvKiBKU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkI4MTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDc5QzUxOERB
NThBRDAwRUZGN0YyIC8qIEpTQXJyYXlJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0JEQUVDNDE3RjRFQTE0MDBGNjE0MEMgLyogSlNB
cnJheUl0ZXJhdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDc5QzcxOERBNThBRDAwRUZGN0YyIC8qIEpT
Qm91bmRGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkZBOUU4RjE0MkJCQjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAq
LzsgfTsKLQkJNTU0MDc5RDMxOERBNThBRDAwRUZGN0YyIC8qIEpTRGF0YVZpZXdQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2
QkYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXdQcm90b3R5cGUuY3BwICovOyB9OwotCQk1
NTQwNzlENTE4REE1OEFEMDBFRkY3RjIgLyogSlNGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg1RTAyNTU1OTdEMDFGRjYwRjcg
LyogSlNGdW5jdGlvbi5jcHAgKi87IH07Ci0JCTU1NDA3OURBMThEQTU4QUQwMEVGRjdGMiAvKiBK
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzc1NkZDNjBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwICovOyB9OwotCQk1NTQwNzlFQjE4REE1OEFEMDBFRkY3RjIgLyogSlNP
Tk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0Y5OTM1RTBGRDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVjdC5jcHAgKi87IH07Ci0JCTU1
NDA3OUVFMThEQTU4QUQwMEVGRjdGMiAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzE4NEUyMDE3QkVFMjQw
MDA3Q0I2M0EgLyogSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwICovOyB9OwotCQk1NTQwNzlGMDE4
REE1OEFEMDBFRkY3RjIgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0QwMTg2RjhBOTMwMDk1NUMyNCAv
KiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwICovOyB9OwotCQk1NTQwNzlGMTE4REE1OEFEMDBFRkY3
RjIgLyogSlNQcm9taXNlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTFDMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQ
cm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwN0EyMjE4REE1OEFEMDBFRkY3RjIgLyogQ29uc29s
ZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTNDRTA4MTE4QkMxQTU2MDBCRURGNzYgLyogQ29uc29sZVByb3RvdHlwZS5jcHAgKi87
IH07Ci0JCTU1NDA3QTI1MThEQTU4QUQwMEVGRjdGMiAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczNzE3Q0JF
ODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwICovOyB9OwotCQk1NTQwN0EyODE4REE1
OEFEMDBFRkY3RjIgLyogTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0REVGOEQxODJEOTkxNDAwNTIyQzIyIC8q
IE1hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDdBMjkxOERBNThBRDAwRUZG
N0YyIC8qIE1hcFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzAwODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNw
cCAqLzsgfTsKLQkJNTU0MDdBMkUxOERBNThBRDAwRUZGN0YyIC8qIE1hdGhPYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NkEwMjU1
NTk3RDAxRkY2MEY3IC8qIE1hdGhPYmplY3QuY3BwICovOyB9OwotCQk1NTQwN0EzMTE4REE1OEFE
MDBFRkY3RjIgLyogTmFtZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUJGMkY5MTU2MEYwMzYwMDhFOTIyMiAvKiBOYW1lQ29u
c3RydWN0b3IuY3BwICovOyB9OwotCQk1NTQwN0EzMzE4REE1OEFEMDBFRkY3RjIgLyogTmFtZVBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkVCRjJGRDE1NjBGMDM2MDA4RTkyMjIgLyogTmFtZVByb3RvdHlwZS5jcHAgKi87IH07CiAJ
CTU1NDA3QTM4MThEQTU4QUQwMEVGRjdGMiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBDMjBFMTZENEU5
MDBBMDZFOTIgLyogTnVtYmVyQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQk1NTQwN0EzQTE4REE1
OEFEMDBFRkY3RjIgLyogTnVtYmVyUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjY4MEM0MEUxNkQ0RTkwMEEwNkU5MiAvKiBOdW1i
ZXJQcm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwN0EzQzE4REE1OEFEMDBFRkY3RjIgLyogT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMyNjgwQzYwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdENvbnN0cnVjdG9yLmNw
cCAqLzsgfTsKLQkJNTU0MDdBM0QxOERBNThBRDAwRUZGN0YyIC8qIE9iamVjdFByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBD
ODBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0UHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDdB
NjMxOERBNThBRDAwRUZGN0YyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDIwMkJEMEUxNzA2QTcwMDJDN0U4
MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1NDA3QTY2MThEQTU4QUQwMEVG
RjdGMiAvKiBSZWdFeHBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNEMjAyQkYwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cFByb3Rv
dHlwZS5jcHAgKi87IH07Ci0JCTU1NDA3QTdCMThEQTU4QUQwMEVGRjdGMiAvKiBTZXRJdGVyYXRv
clByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNzkwREQ2NzE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuY3Bw
ICovOyB9OwotCQk1NTQwN0E3QzE4REE1OEFEMDBFRkY3RjIgLyogU2V0UHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Mjk5RDlGMTdE
MTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwN0E4ODE4REE1
OEFEMDBFRkY3RjIgLyogU3RyaW5nQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEMzQzAwRTE2RUUzMzAwQjM0NDYwIC8qIFN0
cmluZ0NvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDdBOEExOERBNThBRDAwRUZGN0YyIC8q
IFN0cmluZ1Byb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzE4QzNDNTBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmNw
cCAqLzsgfTsKLQkJNTU0MDdBQUMxOERBNThBRDAwRUZGN0YyIC8qIFdlYWtNYXBDb25zdHJ1Y3Rv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NB
M0FERDE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJ
NTU0MDdBQUUxOERBNThBRDAwRUZGN0YyIC8qIFdlYWtNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBREYxN0RBNDFBRTAw
NjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuY3BwICovOyB9OwotCQk1NUYxMzgwQjE4RUY1RjUw
MDA5ODIwMTUgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAyRTkwODBFMTgzOURCMDAwRjkyOTcgLyog
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1RjEzODBDMThFRjVGQjkwMDk4
MjAxNSAvKiBTZXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzI5OURBMzE3RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0
b3IuY3BwICovOyB9OwogCQk1RDUzNzI2RjBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ1MzcyNkUwRTFD
NTQ4ODAwMjFFNTQ5IC8qIFRyYWNpbmcuaCAqLzsgfTsKIAkJNUQ1RDhBRDEwRTBEMEVCRTAwRjlD
NjkyIC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAq
LzsgfTsKIAkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3RhcGkuanMgaW4gQ29weSBT
dXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NTc3
NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLzsgfTsKQEAgLTIxODMsNyArMjE0MSw2
IEBACiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlv
blByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJl
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnJhbmNoRGlyZWN0
aW9uLmg7IHBhdGggPSBkZmcvREZHQnJhbmNoRGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTBGODVBMzFFMTZBQjc2QUUwMDc3NTcxRSAvKiBERkdWYXJpYWRpY0Z1bmN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ZhcmlhZGljRnVuY3Rp
b24uaDsgcGF0aCA9IGRmZy9ERkdWYXJpYWRpY0Z1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURlZi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZVVzZURlZi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhGMkI5MzE3MkUwNDlFMDA3REJEQTUgLyogRlRM
TGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExMaW5rLmNwcDsgcGF0aCA9IGZ0bC9GVExM
aW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4RjJCOTQxNzJFMDQ5RTAw
N0RCREE1IC8qIEZUTExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMTGluay5oOyBwYXRoID0gZnRs
L0ZUTExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ4NDMsNyArNDgwMCw2
IEBACiAJCQkJMEYyQkRDNDExNTIyODAxNzAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnQuaCAq
LywKIAkJCQkwRjJCREM0MjE1MjI4MDE3MDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudFN0cmVh
bS5jcHAgKi8sCiAJCQkJMEYyQkRDNDMxNTIyODAxNzAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZl
bnRTdHJlYW0uaCAqLywKLQkJCQkwRjg1QTMxRTE2QUI3NkFFMDA3NzU3MUUgLyogREZHVmFyaWFk
aWNGdW5jdGlvbi5oICovLAogCQkJCTBGRkZDOTUzMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdWaXJ0
dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwICovLAogCQkJCTBGRkZDOTU0MTRFRjkwOTUw
MEM3MjUzMiAvKiBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuaCAqLywKIAkJCQkw
RkM5N0YzQjE4MjAyMTE5MDAyQzlCMjYgLyogREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5j
cHAgKi8sCkBAIC01MjcwLDcgKzUyMjYsNyBAQAogCQkJCTU1NDA3NzE4MThEQTU4QUQwMEVGRjdG
MiAvKiBKU0FjdGl2YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU1NDA3NzFCMThEQTU4QUQw
MEVGRjdGMiAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTQw
NzcyMjE4REE1OEFEMDBFRkY3RjIgLyogSlNBcnJheUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
LQkJCQk1NTQwNzcyNTE4REE1OEFEMDBFRkY3RjIgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1NTQwNzcyNTE4REE1OEFEMDBFRkY3RjIgLyogKG51bGwpIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTU0MDc3NDgxOERBNThBRDAwRUZGN0YyIC8qIEpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTU0MDc3NEExOERBNThBRDAwRUZGN0YyIC8q
IEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTQwNzc1OTE4
REE1OEFEMDBFRkY3RjIgLyogSlNNYXBJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC01NzQ0
LDcgKzU3MDAsNiBAQAogCQkJCTBGRERCRkI2MTY2NkVFREEwMEM1NUZFRiAvKiBERkdWYXJpYWJs
ZUFjY2Vzc0RhdGFEdW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCREM0OTE1MjI4MDk2MDBD
RDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkRDNEIx
NTIyODA5RDAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaCBpbiBIZWFkZXJzICov
LAotCQkJCTBGRkI5MjFFMTZEMDJGNDcwMDU1QTVEQiAvKiBERkdWYXJpYWRpY0Z1bmN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk2MDE0RUY5MEJEMDBDNzI1MzIgLyogREZHVmlydHVh
bFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM5N0Y0MjE4
MjAyMTE5MDAyQzlCMjYgLyogREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEQjJDRTgxNzQ4MzBBMjAwN0IzQzFCIC8qIERGR1dvcmtsaXN0LmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2lu
Y2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkRG
R0pJVENvZGUuaCIKLSNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiREZHV29ya2xpc3Qu
aCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAx
NjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSw2IEBACiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAj
aW5jbHVkZSAiREZHQ29tbW9uRGF0YS5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCi0j
aW5jbHVkZSAiREZHTWluaWZpZWRHcmFwaC5oIgotI2luY2x1ZGUgIkRGR09TUkVudHJ5LmgiCi0j
aW5jbHVkZSAiREZHT1NSRXhpdC5oIgotI2luY2x1ZGUgIkRGR1ZhcmlhYmxlRXZlbnRTdHJlYW0u
aCIKICNpbmNsdWRlICJEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJF
dmFsQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0aW9uQ291bnRlci5oIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJ
KHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTcsOSArMTU3LDE2IEBAIHByaXZhdGU6
CiAgICAgfTsKICAgICBCb29sZWFuUmVzdWx0IGJvb2xlYW5SZXN1bHQoTm9kZSosIEFic3RyYWN0
VmFsdWUmKTsKICAgICAKKyAgICB2b2lkIHNldEJ1aWx0SW5Db25zdGFudChOb2RlKiBub2RlLCBK
U1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgYWJzdHJhY3RWYWx1
ZSA9IGZvck5vZGUobm9kZSk7CisgICAgICAgIGFic3RyYWN0VmFsdWUuc2V0KG1fZ3JhcGgsIHZh
bHVlKTsKKyAgICAgICAgYWJzdHJhY3RWYWx1ZS5maXhUeXBlRm9yUmVwcmVzZW50YXRpb24obm9k
ZSk7CisgICAgfQorICAgIAogICAgIHZvaWQgc2V0Q29uc3RhbnQoTm9kZSogbm9kZSwgSlNWYWx1
ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIHZhbHVl
KTsKKyAgICAgICAgc2V0QnVpbHRJbkNvbnN0YW50KG5vZGUsIHZhbHVlKTsKICAgICAgICAgbV9z
dGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw5
ICsxMjYsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
IAogICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICBj
YXNlIERvdWJsZUNvbnN0YW50OgorICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICBjYXNlIFdl
YWtKU0NvbnN0YW50OgogICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czogewotICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG5vZGUpKTsK
KyAgICAgICAgc2V0QnVpbHRJbkNvbnN0YW50KG5vZGUsIG1fZ3JhcGgudmFsdWVPZkpTQ29uc3Rh
bnQobm9kZSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMzA3LDM5ICsz
MDksMzkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50MzJUb0RvdWJsZTogeworICAg
IGNhc2UgRG91YmxlUmVwOiB7CiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIo
KSkgewotICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgSlNWYWx1ZShKU1ZhbHVlOjpFbmNv
ZGVBc0RvdWJsZSwgY2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNEb3VibGVOdW1iZXIoY2hpbGQuYXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNEb3VibGVSZWFsKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5maXhU
eXBlRm9yUmVwcmVzZW50YXRpb24obm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgCi0gICAgY2FzZSBJbnQ1MlRvRG91YmxlOiB7CisgICAgY2FzZSBJbnQ1MlJlcDogeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSW50MzJVc2Up
OworICAgICAgICAKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7Cisg
ICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc0ludDMyKCkpIHsKICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGNoaWxkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgCisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIAotICAgIGNhc2UgSW50NTJUb1ZhbHVlOiB7Ci0gICAgICAgIEpTVmFsdWUgY2hp
bGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAoY2hpbGQg
JiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hp
bGQpOworICAgIGNhc2UgVmFsdWVSZXA6IHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwgdmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLm1fdHlwZTsKLSAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NTIpCi0gICAgICAgICAgICB0
eXBlID0gKHR5cGUgfCBTcGVjSW50MzIgfCBTcGVjSW50NTJBc0RvdWJsZSkgJiB+U3BlY0ludDUy
OwotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUodHlwZSk7CisgICAgICAgIAorICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKTsK
KyAgICAgICAgZm9yTm9kZShub2RlKS5maXhUeXBlRm9yUmVwcmVzZW50YXRpb24obm9kZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0zNzAsNyArMzcyLDcgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNob3Vs
ZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKQogICAgICAgICAgICAgICAgIG5vZGUt
PnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNo
aW5lSW50VXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxl
ZnQgJiYgcmlnaHQgJiYgbGVmdC5pc01hY2hpbmVJbnQoKSAmJiByaWdodC5pc01hY2hpbmVJbnQo
KSkgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIobGVmdC5hc01h
Y2hpbmVJbnQoKSArIHJpZ2h0LmFzTWFjaGluZUludCgpKTsKICAgICAgICAgICAgICAgICBpZiAo
cmVzdWx0LmlzTWFjaGluZUludCgpKSB7CkBAIC0zODMsOSArMzg1LDkgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIHx8ICFmb3JOb2Rl
KG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY0ludDMyKSkKICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVt
YmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0
ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7Ci0gICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIobGVmdC5hc051bWJlcigpICsg
cmlnaHQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
RG91YmxlTnVtYmVyKGxlZnQuYXNOdW1iZXIoKSArIHJpZ2h0LmFzTnVtYmVyKCkpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpc0Z1bGxS
ZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKQpAQCAt
NDI2LDcgKzQyOCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkK
ICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSkK
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVz
ZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNNYWNoaW5lSW50KCkg
JiYgcmlnaHQuaXNNYWNoaW5lSW50KCkpIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGxlZnQuYXNNYWNoaW5lSW50KCkgLSByaWdodC5hc01hY2hpbmVJbnQoKSk7
CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc01hY2hpbmVJbnQoKSB8fCAhc2hvdWxkQ2hl
Y2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpIHsKQEAgLTQzOSw5ICs0NDEsOSBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgfHwg
IWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjSW50MzIpKQogICAgICAgICAgICAg
ICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAg
aWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkp
IHsKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihsZWZ0LmFzTnVt
YmVyKCkgLSByaWdodC5hc051bWJlcigpKSk7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNEb3VibGVOdW1iZXIobGVmdC5hc051bWJlcigpIC0gcmlnaHQuYXNOdW1iZXIoKSkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpAQCAtNDc3LDcgKzQ3OSw3IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGlmIChzaG91
bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSkKICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWFj
aGluZUludFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAgIGlmIChj
aGlsZCAmJiBjaGlsZC5pc01hY2hpbmVJbnQoKSkgewogICAgICAgICAgICAgICAgIGRvdWJsZSBk
b3VibGVSZXN1bHQ7CiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrTmVnYXRpdmVaZXJv
KG5vZGUtPmFyaXRoTW9kZSgpKSkKQEAgLTQ5Niw5ICs0OTgsOSBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2hlY2tOZWdh
dGl2ZVplcm8obm9kZS0+YXJpdGhNb2RlKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENh
bkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6
CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGNoaWxkICYmIGNo
aWxkLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051
bWJlcigtY2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5v
ZGUsIGpzRG91YmxlTnVtYmVyKC1jaGlsZC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0RvdWJsZSk7CkBAIC01MzMsNyArNTM1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3cobm9k
ZS0+YXJpdGhNb2RlKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAg
ICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVm
dC5pc01hY2hpbmVJbnQoKSAmJiByaWdodC5pc01hY2hpbmVJbnQoKSkgewogICAgICAgICAgICAg
ICAgIGRvdWJsZSBkb3VibGVSZXN1bHQgPSBsZWZ0LmFzTnVtYmVyKCkgKiByaWdodC5hc051bWJl
cigpOwogICAgICAgICAgICAgICAgIGlmICghc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+
YXJpdGhNb2RlKCkpKQpAQCAtNTQ3LDkgKzU0OSw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVj
SW50NTIpOwogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBV
c2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYg
cmlnaHQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
TnVtYmVyKGxlZnQuYXNOdW1iZXIoKSAqIHJpZ2h0LmFzTnVtYmVyKCkpKTsKKyAgICAgICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihsZWZ0LmFzTnVtYmVyKCkgKiBy
aWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLm1fdHlwZSkKQEAgLTU4NSw5ICs1ODcsOSBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91
YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJl
cigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc051bWJlcihsZWZ0LmFzTnVtYmVyKCkgLyByaWdodC5hc051bWJlcigpKSk7CisgICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIobGVmdC5hc051bWJl
cigpIC8gcmlnaHQuYXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpA
QCAtNjE5LDkgKzYyMSw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAg
ICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAg
ICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIo
KSkgewotICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGZtb2QobGVm
dC5hc051bWJlcigpLCByaWdodC5hc051bWJlcigpKSkpOworICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGZtb2QobGVmdC5hc051bWJlcigpLCByaWdodC5h
c051bWJlcigpKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpAQCAtNjQ1LDExICs2
NDcsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVt
YmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0
ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CiAgICAg
ICAgICAgICAgICAgZG91YmxlIGEgPSBsZWZ0LmFzTnVtYmVyKCk7CiAgICAgICAgICAgICAgICAg
ZG91YmxlIGIgPSByaWdodC5hc051bWJlcigpOwotICAgICAgICAgICAgICAgIHNldENvbnN0YW50
KG5vZGUsIGpzTnVtYmVyKGEgPCBiID8gYSA6IChiIDw9IGEgPyBiIDogYSArIGIpKSk7CisgICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoYSA8IGIgPyBhIDog
KGIgPD0gYSA/IGIgOiBhICsgYikpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAg
LTY3MywxMSArNjc1LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAg
ICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAg
ICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIo
KSkgewogICAgICAgICAgICAgICAgIGRvdWJsZSBhID0gbGVmdC5hc051bWJlcigpOwogICAgICAg
ICAgICAgICAgIGRvdWJsZSBiID0gcmlnaHQuYXNOdW1iZXIoKTsKLSAgICAgICAgICAgICAgICBz
ZXRDb25zdGFudChub2RlLCBqc051bWJlcihhID4gYiA/IGEgOiAoYiA+PSBhID8gYiA6IGEgKyBi
KSkpOworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGEg
PiBiID8gYSA6IChiID49IGEgPyBiIDogYSArIGIpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0Rv
dWJsZSk7CkBAIC03MDMsOSArNzA1LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7
CiAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAg
ICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoY2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGNoaWxkLmFzTnVtYmVy
KCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAgLTcyMCw3ICs3MjIsNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBBcml0aFNx
cnQ6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZh
bHVlKCk7CiAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7Ci0gICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihzcXJ0KGNoaWxkLmFzTnVtYmVyKCkpKSk7
CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihzcXJ0KGNoaWxk
LmFzTnVtYmVyKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC03MzAsNyArNzMyLDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgQXJpdGhGUm91
bmQ6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZh
bHVlKCk7CiAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7Ci0gICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihzdGF0aWNfY2FzdDxmbG9hdD4oY2hpbGQu
YXNOdW1iZXIoKSkpKTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVt
YmVyKHN0YXRpY19jYXN0PGZsb2F0PihjaGlsZC5hc051bWJlcigpKSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3Vi
bGUpOwpAQCAtNzQwLDcgKzc0Miw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHkKICAgICBjYXNlIEFyaXRoU2luOiB7CiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBm
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGQgJiYgY2hp
bGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIo
c2luKGNoaWxkLmFzTnVtYmVyKCkpKSk7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBq
c0RvdWJsZU51bWJlcihzaW4oY2hpbGQuYXNOdW1iZXIoKSkpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsK
QEAgLTc1MCw3ICs3NTIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5CiAgICAgY2FzZSBBcml0aENvczogewogICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlz
TnVtYmVyKCkpIHsKLSAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGNvcyhj
aGlsZC5hc051bWJlcigpKSkpOworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3Vi
bGVOdW1iZXIoY29zKGNoaWxkLmFzTnVtYmVyKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC03
NjksNyArNzcxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAg
ICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgICAg
ICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAg
ICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY3LDgg
KzY3LDYgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBKUwogICAgIH0K
ICAgICAKICAgICBtX3R5cGUgPSBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSk7Ci0gICAgaWYg
KG1fdHlwZSA9PSBTcGVjSW50NTJBc0RvdWJsZSkKLSAgICAgICAgbV90eXBlID0gU3BlY0ludDUy
OwogICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CkBA
IC04NSw2ICs4Myw0MSBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIFN0
CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogfQogCit2b2lkIEFic3RyYWN0VmFsdWU6OmZpeFR5
cGVGb3JSZXByZXNlbnRhdGlvbihOb2RlRmxhZ3MgcmVwcmVzZW50YXRpb24pCit7CisgICAgaWYg
KHJlcHJlc2VudGF0aW9uID09IE5vZGVSZXN1bHREb3VibGUpIHsKKyAgICAgICAgaWYgKG1fdmFs
dWUpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3ZhbHVlLmlzTnVtYmVyKCkpOworICAgICAgICAg
ICAgaWYgKG1fdmFsdWUuaXNJbnQzMigpKQorICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBqc0Rv
dWJsZU51bWJlcihtX3ZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICB9CisgICAgICAgIGlmICht
X3R5cGUgJiBTcGVjTWFjaGluZUludCkgeworICAgICAgICAgICAgbV90eXBlICY9IH5TcGVjTWFj
aGluZUludDsKKyAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTJBc0RvdWJsZTsKKyAgICAg
ICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fdHlwZSAmIH5TcGVjRG91YmxlKSk7Cisg
ICAgfSBlbHNlIGlmIChyZXByZXNlbnRhdGlvbiA9PSBOb2RlUmVzdWx0SW50NTIpIHsKKyAgICAg
ICAgaWYgKG1fdHlwZSAmIFNwZWNJbnQ1MkFzRG91YmxlKSB7CisgICAgICAgICAgICBtX3R5cGUg
Jj0gflNwZWNJbnQ1MkFzRG91YmxlOworICAgICAgICAgICAgbV90eXBlIHw9IFNwZWNJbnQ1MjsK
KyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fdHlwZSAmIH5TcGVjTWFjaGlu
ZUludCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX3R5cGUgJiBTcGVjSW50NTIpIHsK
KyAgICAgICAgICAgIG1fdHlwZSAmPSB+U3BlY0ludDUyOworICAgICAgICAgICAgbV90eXBlIHw9
IFNwZWNJbnQ1MkFzRG91YmxlOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEo
bV90eXBlICYgflNwZWNCeXRlY29kZVRvcCkpOworICAgIH0KKyAgICAKKyAgICBjaGVja0NvbnNp
c3RlbmN5KCk7Cit9CisKK3ZvaWQgQWJzdHJhY3RWYWx1ZTo6Zml4VHlwZUZvclJlcHJlc2VudGF0
aW9uKE5vZGUqIG5vZGUpCit7CisgICAgZml4VHlwZUZvclJlcHJlc2VudGF0aW9uKG5vZGUtPnJl
c3VsdCgpKTsKK30KKwogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXIoR3Jh
cGgmIGdyYXBoLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQogewogICAgIGlmIChpc0NsZWFy
KCkpCkBAIC0yNDQsNiArMjc3LDggQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpjaGVja0NvbnNpc3Rl
bmN5KCkgYwogICAgIAogICAgIGlmICghIW1fdmFsdWUpIHsKICAgICAgICAgU3BlY3VsYXRlZFR5
cGUgdHlwZSA9IG1fdHlwZTsKKyAgICAgICAgLy8gVGhpcyByZWxheGVzIHRoZSBhc3NlcnRpb24g
YmVsb3cgYSBiaXQsIHNpbmNlIHdlIGRvbid0IGtub3cgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRo
ZQorICAgICAgICAvLyBub2RlLgogICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ1MikKICAgICAg
ICAgICAgIHR5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7CiAgICAgICAgIEFTU0VSVChtZXJnZVNw
ZWN1bGF0aW9ucyh0eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZShtX3ZhbHVlKSkgPT0gdHlwZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAko
cmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgogI2luY2x1ZGUgIkRGR0ZpbHRyYXRp
b25SZXN1bHQuaCIKKyNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIKICNpbmNsdWRlICJERkdTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiU3Bl
Y3VsYXRlZFR5cGUuaCIKQEAgLTM5LDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAogY2xhc3MgR3JhcGg7CitzdHJ1Y3QgTm9kZTsKIAogc3RydWN0IEFic3RyYWN0
VmFsdWUgewogICAgIEFic3RyYWN0VmFsdWUoKQpAQCAtMTI5LDYgKzEzMSw5IEBAIHN0cnVjdCBB
YnN0cmFjdFZhbHVlIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0KICAgICAK
KyAgICB2b2lkIGZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihOb2RlRmxhZ3MgcmVwcmVzZW50YXRp
b24pOworICAgIHZvaWQgZml4VHlwZUZvclJlcHJlc2VudGF0aW9uKE5vZGUqKTsKKyAgICAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gbV90eXBlID09IG90aGVyLm1fdHlwZQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTAsNyAr
MjEwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgY2FzZSBJZGVudGl0eTogCiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1i
ZXI6IHsKICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdzKGZsYWdzKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMzc4LDYgKzM3NywxMSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIElkZW50
aXR5OiAKKyAgICAgICAgICAgIC8vIFRoaXMgd291bGQgYmUgdHJpdmlhbCB0byBoYW5kbGUgYnV0
IHdlIGp1c3QgYXNzZXJ0IHRoYXQgd2UgY2Fubm90IHNlZSB0aGVzZSB5ZXQuCisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAKICAgICAgICAgLy8gTm90ZTogQXJpdGhTcXJ0LCBBcml0aFNpbiwgYW5kIEFyaXRo
Q29zIGFuZCBvdGhlciBtYXRoIGludHJpbnNpY3MgZG9uJ3QgaGF2ZSBzcGVjaWFsCiAgICAgICAg
IC8vIHJ1bGVzIGluIGhlcmUgYmVjYXVzZSB0aGV5IGFyZSBhbHdheXMgZm9sbG93ZWQgYnkgUGhh
bnRvbXMgdG8gc2lnbmlmeSB0aGF0IGlmIHRoZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2
IEBACiAjaW5jbHVkZSAiREZHQnJhbmNoRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiREZHRmx1c2hl
ZEF0LmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgotI2luY2x1ZGUgIkRGR1ZhcmlhZGljRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTk4LDE1ICs5NywxMSBAQCBzdHJ1Y3QgQmFzaWNC
bG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgdm9pZCByZW1vdmVQcmVkZWNlc3NvcihC
YXNpY0Jsb2NrKiBibG9jayk7CiAgICAgdm9pZCByZXBsYWNlUHJlZGVjZXNzb3IoQmFzaWNCbG9j
ayogZnJvbSwgQmFzaWNCbG9jayogdG8pOwogCi0jZGVmaW5lIERGR19ERUZJTkVfQVBQRU5EX05P
REUodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXNDb21t
YSwgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykgXAotICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJhbXMg
dGVtcGxhdGVQb3N0IE5vZGUqIGFwcGVuZE5vZGUoR3JhcGgmLCBTcGVjdWxhdGVkVHlwZSB2YWx1
ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1zKTsKLSAgICBERkdfVkFSSUFESUNfVEVNUExBVEVfRlVO
Q1RJT04oREZHX0RFRklORV9BUFBFTkRfTk9ERSkKLSN1bmRlZiBERkdfREVGSU5FX0FQUEVORF9O
T0RFCi0gICAgCi0jZGVmaW5lIERGR19ERUZJTkVfQVBQRU5EX05PREUodGVtcGxhdGVQcmUsIHRl
bXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXNDb21tYSwgdmFsdWVQYXJhbXMsIHZh
bHVlQXJncykgXAotICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJhbXMgdGVtcGxhdGVQb3N0IE5vZGUq
IGFwcGVuZE5vblRlcm1pbmFsKEdyYXBoJiwgU3BlY3VsYXRlZFR5cGUgdmFsdWVQYXJhbXNDb21t
YSB2YWx1ZVBhcmFtcyk7Ci0gICAgREZHX1ZBUklBRElDX1RFTVBMQVRFX0ZVTkNUSU9OKERGR19E
RUZJTkVfQVBQRU5EX05PREUpCi0jdW5kZWYgREZHX0RFRklORV9BUFBFTkRfTk9ERQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFtcz4KKyAgICBOb2RlKiBhcHBlbmROb2RlKEdyYXBoJiwg
U3BlY3VsYXRlZFR5cGUsIFBhcmFtcy4uLik7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gUGFyYW1zPgorICAgIE5vZGUqIGFwcGVuZE5vblRlcm1pbmFsKEdyYXBoJiwgU3BlY3VsYXRl
ZFR5cGUsIFBhcmFtcy4uLik7CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywyNSAr
MzMsMjEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi0jZGVmaW5lIERG
R19ERUZJTkVfQVBQRU5EX05PREUodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFt
cywgdmFsdWVQYXJhbXNDb21tYSwgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykgXAotICAgIHRlbXBs
YXRlUHJlIHR5cGVQYXJhbXMgdGVtcGxhdGVQb3N0IGlubGluZSBOb2RlKiBCYXNpY0Jsb2NrOjph
cHBlbmROb2RlKEdyYXBoJiBncmFwaCwgU3BlY3VsYXRlZFR5cGUgdHlwZSB2YWx1ZVBhcmFtc0Nv
bW1hIHZhbHVlUGFyYW1zKSBcCi0gICAgeyBcCi0gICAgICAgIE5vZGUqIHJlc3VsdCA9IGdyYXBo
LmFkZE5vZGUodHlwZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlQXJncyk7IFwKLSAgICAgICAgYXBw
ZW5kKHJlc3VsdCk7IFwKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsgXAotICAgIH0KLSAgICBERkdf
VkFSSUFESUNfVEVNUExBVEVfRlVOQ1RJT04oREZHX0RFRklORV9BUFBFTkRfTk9ERSkKLSN1bmRl
ZiBERkdfREVGSU5FX0FQUEVORF9OT0RFCi0KLSNkZWZpbmUgREZHX0RFRklORV9BUFBFTkRfTk9E
RSh0ZW1wbGF0ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1zLCB2YWx1ZVBhcmFtc0NvbW1h
LCB2YWx1ZVBhcmFtcywgdmFsdWVBcmdzKSBcCi0gICAgdGVtcGxhdGVQcmUgdHlwZVBhcmFtcyB0
ZW1wbGF0ZVBvc3QgaW5saW5lIE5vZGUqIEJhc2ljQmxvY2s6OmFwcGVuZE5vblRlcm1pbmFsKEdy
YXBoJiBncmFwaCwgU3BlY3VsYXRlZFR5cGUgdHlwZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFy
YW1zKSBcCi0gICAgeyBcCi0gICAgICAgIE5vZGUqIHJlc3VsdCA9IGdyYXBoLmFkZE5vZGUodHlw
ZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlQXJncyk7IFwKLSAgICAgICAgaW5zZXJ0QmVmb3JlTGFz
dChyZXN1bHQpOyBcCi0gICAgICAgIHJldHVybiByZXN1bHQ7IFwKLSAgICB9Ci0gICAgREZHX1ZB
UklBRElDX1RFTVBMQVRFX0ZVTkNUSU9OKERGR19ERUZJTkVfQVBQRU5EX05PREUpCi0jdW5kZWYg
REZHX0RFRklORV9BUFBFTkRfTk9ERQordGVtcGxhdGU8dHlwZW5hbWUuLi4gUGFyYW1zPgorTm9k
ZSogQmFzaWNCbG9jazo6YXBwZW5kTm9kZShHcmFwaCYgZ3JhcGgsIFNwZWN1bGF0ZWRUeXBlIHR5
cGUsIFBhcmFtcy4uLiBwYXJhbXMpCit7CisgICAgTm9kZSogcmVzdWx0ID0gZ3JhcGguYWRkTm9k
ZSh0eXBlLCBwYXJhbXMuLi4pOworICAgIGFwcGVuZChyZXN1bHQpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFtcz4KK05vZGUqIEJhc2ljQmxvY2s6
OmFwcGVuZE5vblRlcm1pbmFsKEdyYXBoJiBncmFwaCwgU3BlY3VsYXRlZFR5cGUgdHlwZSwgUGFy
YW1zLi4uIHBhcmFtcykKK3sKKyAgICBOb2RlKiByZXN1bHQgPSBncmFwaC5hZGROb2RlKHR5cGUs
IHBhcmFtcy4uLik7CisgICAgaW5zZXJ0QmVmb3JlTGFzdChyZXN1bHQpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE2
NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMjYzLDggKzMyNjMsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX3RvX251
bWJlcjogewotICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKSwKLSAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKElkZW50aXR5LCBF
ZGdlKGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkp
LCBOdW1iZXJVc2UpKSk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gZ2V0KFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBhZGRU
b0dyYXBoKFBoYW50b20sIEVkZ2Uobm9kZSwgTnVtYmVyVXNlKSk7CisgICAgICAgICAgICBzZXQo
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBub2RlKTsK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3RvX251bWJlcik7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJ
KHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjEsMjkgKzE2
MSwxMSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgCi0gICAgTm9k
ZSogaW50MzJUb0RvdWJsZUNTRShOb2RlKiBub2RlKQotICAgIHsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG90aGVy
Tm9kZSA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgIGlmIChvdGhlck5vZGUg
PT0gbm9kZS0+Y2hpbGQxKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAg
ICBzd2l0Y2ggKG90aGVyTm9kZS0+b3AoKSkgewotICAgICAgICAgICAgY2FzZSBJbnQzMlRvRG91
YmxlOgotICAgICAgICAgICAgICAgIGlmIChvdGhlck5vZGUtPmNoaWxkMSgpLnNhbml0aXplZCgp
ID09IG5vZGUtPmNoaWxkMSgpLnNhbml0aXplZCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gb3RoZXJOb2RlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgCiAgICAgTm9kZSogY29uc3RhbnRDU0UoTm9kZSog
bm9kZSkKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGVuZEluZGV4Rm9yUHVyZUNT
RSgpOyBpLS07KSB7CiAgICAgICAgICAgICBOb2RlKiBvdGhlck5vZGUgPSBtX2N1cnJlbnRCbG9j
ay0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5vcCgpICE9IEpTQ29uc3RhbnQp
CisgICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5vcCgpICE9IG5vZGUtPm9wKCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChvdGhlck5v
ZGUtPmNvbnN0YW50TnVtYmVyKCkgIT0gbm9kZS0+Y29uc3RhbnROdW1iZXIoKSkKQEAgLTExNDgs
OCArMTEzMCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ29tcGFyZUVxQ29uc3RhbnQ6CiAg
ICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgICAgICBjYXNlIE1ha2VSb3BlOgotICAgICAg
ICBjYXNlIEludDUyVG9Eb3VibGU6Ci0gICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgorICAgICAg
ICBjYXNlIERvdWJsZVJlcDoKKyAgICAgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICAgICAgY2FzZSBJ
bnQ1MlJlcDoKICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChwdXJlQ1NF
KG5vZGUpKTsKQEAgLTExNzcsMTIgKzExNjAsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEludDMyVG9Eb3VibGU6
Ci0gICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQoaW50MzJUb0RvdWJsZUNT
RShub2RlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEdldENhbGxlZToKICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24p
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjYxLDEzICsxMjM4LDE1IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CiAgICAgICAgICAgICBOb2Rl
KiBkYXRhTm9kZSA9IHJlcGxhY2VtZW50LT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgICAgICBB
U1NFUlQoZGF0YU5vZGUtPmhhc1Jlc3VsdCgpKTsKLSAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgp
ID0gRWRnZShkYXRhTm9kZSk7CisgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IGRhdGFOb2Rl
LT5kZWZhdWx0RWRnZSgpOwogICAgICAgICAgICAgbV9ncmFwaC5kZXRocmVhZCgpOwogICAgICAg
ICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgICAgICBjYXNlIERvdWJs
ZUNvbnN0YW50OgorICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgICAgICBpZiAo
Y3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgLy8gVGhpcyBpcyBzdHJhbmdlLCBidXQgbmVjZXNzYXJ5LiBTb21lIHBoYXNlcyB3
aWxsIGNvbnZlcnQgbm9kZXMgdG8gY29uc3RhbnRzLApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKLSNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVk
ZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSW50
cmluc2ljLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDggQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIAogICAgIHN3aXRjaCAobm9kZS0+b3AoKSkg
ewogICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICBjYXNlIERvdWJsZUNvbnN0YW50OgorICAgIGNh
c2UgSW50NTJDb25zdGFudDoKICAgICBjYXNlIFdlYWtKU0NvbnN0YW50OgogICAgIGNhc2UgSWRl
bnRpdHk6CiAgICAgY2FzZSBQaGFudG9tOgpAQCAtMTIzLDE1ICsxMjUsMTUgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgSXNOdW1iZXI6CiAgICAg
Y2FzZSBJc1N0cmluZzoKICAgICBjYXNlIExvZ2ljYWxOb3Q6Ci0gICAgY2FzZSBJbnQzMlRvRG91
YmxlOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6Ci0gICAgY2FzZSBJbnQ1MlRvRG91
YmxlOgotICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAg
ICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgY2FzZSBVSW50MzJUb051bWJlcjoK
ICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgY2FzZSBDaGVjazoKKyAgICBjYXNlIERvdWJs
ZVJlcDoKKyAgICBjYXNlIFZhbHVlUmVwOgorICAgIGNhc2UgSW50NTJSZXA6CiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCiAgICAgY2FzZSBNb3ZIaW50OgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNiArMjk5LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgb2xkVmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9k
ZSk7CiAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIGNvbnN0YW50VmFsdWU7CiAgICAgICAgICAg
ICBjb25zdGFudFZhbHVlLnNldChtX2dyYXBoLCB2YWx1ZSk7CisgICAgICAgICAgICBjb25zdGFu
dFZhbHVlLmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihub2RlKTsKICAgICAgICAgICAgIGlmIChv
bGRWYWx1ZS5tZXJnZShjb25zdGFudFZhbHVlKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENF
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENF
UGhhc2UuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0LDEzICsxOTQsMTIgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkg
ewogICAgICAgICAgICAgY2FzZSBNb3ZIaW50OiB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IG5vZGUtPmNoaWxkMSgpLT5kZWZhdWx0
VXNlS2luZCgpKTsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpLT5zaG91bGRH
ZW5lcmF0ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZs
YWdzKFpvbWJpZUhpbnQpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IEVk
Z2UoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKE1vdkhpbnQpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgd2lsbE5vdEhhdmVDaGVj
aygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gaXNQcm92ZWQoKSB8fCB1c2VLaW5kKCkg
PT0gVW50eXBlZFVzZTsKKyAgICAgICAgcmV0dXJuIGlzUHJvdmVkKCkgfHwgc2hvdWxkTm90SGF2
ZVR5cGVDaGVjayh1c2VLaW5kKCkpOwogICAgIH0KICAgICBib29sIHdpbGxIYXZlQ2hlY2soKSBj
b25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zW2ldLm1lcmdlQXJn
dW1lbnRVbmJveGluZ0F3YXJlbmVzcygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3Ig
KEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2Nr
cygpOyArK2Jsb2NrSW5kZXgpCi0gICAgICAgICAgICAgICAgZml4dXBTZXRMb2NhbHNJbkJsb2Nr
KG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCkpOworICAgICAgICAgICAgICAgIGZpeHVwR2V0QW5k
U2V0TG9jYWxzSW5CbG9jayhtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpKTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0lu
ZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KQpAQCAtMTIzLDggKzEyMywx
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7
CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlQ2FuU3BlY3VsYXRlSW50MzIobm9kZS0+YXJpdGhO
b2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpD
aGVja092ZXJmbG93KTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6RG9PdmVyZmxvdyk7CisgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMTM1
LDEwICsxMzcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXJFeHBlY3Rp
bmdEZWZpbmVkKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
ewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICAgICAgbm9kZS0+c2V0T3AoQXJpdGhBZGQpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNs
ZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKKyAgICAgICAg
ICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE3Nyw4ICsxODAsOSBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIEFyaXRoU3ViOiB7CiAgICAgICAgICAgICBpZiAoYXR0
ZW1wdFRvTWFrZUludGVnZXJBZGQobm9kZSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
Zml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8
RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJs
ZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5v
ZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIApAQCAtMTk0LDE0ICsxOTgsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX2dyYXBoLm5lZ2F0ZVNob3VsZFNw
ZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hp
bmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUy
UmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGJ5dGVjb2RlQ2Fu
SWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAg
ICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOwogICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFy
aXRoOjpDaGVja092ZXJmbG93QW5kTmVnYXRpdmVaZXJvKTsKKyAgICAgICAgICAgICAgICBub2Rl
LT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjE4LDE2ICsyMjQsMTggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLm11bFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAg
ICAgICAgICAgIGlmIChieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5v
ZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRo
OjpDaGVja092ZXJmbG93KTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVy
byk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdl
PE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjQ2LDI0ICsyNTQsMzQgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0
aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGhp
cyB3aWxsIGNhdXNlIGNvbnZlcnNpb24gbm9kZXMgdG8gYmUgaW5zZXJ0ZWQgbGF0ZXIuCisgICAg
ICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIEJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB0
aGF0IGV2ZXJ5dGhpbmcgaXMgcGhhbnRvbSdkIHVudGlsIGFmdGVyIHRoZQorICAgICAgICAgICAg
ICAgIC8vIERvdWJsZUFzSW50NDIgbm9kZSwgd2hpY2ggb2NjdXJzIGFmdGVyIHRoZSBEaXYvTW9k
IG5vZGUgdGhhdCB0aGUgY29udmVyc2lvbnMKKyAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIGlu
c2VyZWQgb24uCisgICAgICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKG5vZGUtPmNoaWxk
MSgpLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKG5vZGUtPmNo
aWxkMigpLm5vZGUoKSk7CiAKICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRv
IHJlZidpbmcgb24gdGhlIGNoaWxkcmVuIGJlY2F1c2Ugd2UncmUgc3RlYWxpbmcgdGhlbSBmcm9t
CiAgICAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIGRpdmlzaW9uLgogICAgICAgICAgICAg
ICAgIE5vZGUqIG5ld0RpdmlzaW9uID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAg
ICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNEb3VibGUsICpub2RlKTsKKyAgICAg
ICAgICAgICAgICBuZXdEaXZpc2lvbi0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKERvdWJsZUFzSW50MzIp
OwotICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLmluaXRpYWxpemUoRWRnZShuZXdEaXZp
c2lvbiwgS25vd25OdW1iZXJVc2UpLCBFZGdlKCksIEVkZ2UoKSk7CisgICAgICAgICAgICAgICAg
bm9kZS0+Y2hpbGRyZW4uaW5pdGlhbGl6ZShFZGdlKG5ld0RpdmlzaW9uLCBEb3VibGVSZXBVc2Up
LCBFZGdlKCksIEVkZ2UoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuSWdub3Jl
TmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgICAg
ICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpD
aGVja092ZXJmbG93QW5kTmVnYXRpdmVaZXJvKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBu
b2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAgICAgCkBAIC0yNzUsOCArMjkzLDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjg2LDcgKzMwNSw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
Zml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8
RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1
bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCkBAIC0yOTQsNyArMzE0LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcml0
aEZSb3VuZDoKICAgICAgICAgY2FzZSBBcml0aFNpbjoKICAgICAgICAgY2FzZSBBcml0aENvczog
ewotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0zMDYsNyArMzI3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigp
KQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIo
KSkKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5n
KCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzM3LDE0ICszNTgsMTQgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpCiAgICAgICAgICAgICAgICAg
JiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCks
IG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hp
bmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hp
bmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUy
UmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJl
cFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3Mo
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNX
b3JsZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00MDIsMTMg
KzQyMywxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGVuYWJs
ZUludDUyKCkKICAgICAgICAgICAgICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hv
dWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCku
bm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+Y2hp
bGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKQEAgLTUwMSw3ICs1MjIsOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewor
ICAgICAgICAgICAgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CisgICAgICAgICAgICBz
d2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlNlbGVj
dFVzaW5nUHJlZGljdGlvbnM6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpVbnByb2ZpbGVkOgog
ICAgICAgICAgICAgY2FzZSBBcnJheTo6VW5kZWNpZGVkOgpAQCAtNTIwLDYgKzU0MiwzMCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCisgICAgICAgICAgICBzd2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKKyAgICAgICAgICAg
IGNhc2UgQXJyYXk6OkRvdWJsZToKKyAgICAgICAgICAgICAgICBpZiAoIWFycmF5TW9kZS5pc091
dE9mQm91bmRzKCkpCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVz
dWx0RG91YmxlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJy
YXk6OkZsb2F0NjRBcnJheToKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJl
c3VsdERvdWJsZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJBcnJheToKKyAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSAm
JiBlbmFibGVJbnQ1MigpKQorICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9k
ZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKQEAgLTU1OSwxNCArNjA1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKICAgICAgICAgICAgICAgICBmaXhFZGdl
PEludDMyVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGlmIChjaGlsZDMtPnByZWRpY3Rp
b24oKSAmIFNwZWNJbnQ1MikKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50
VXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihj
aGlsZDMpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVz
ZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDIpOwot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8UmVhbE51bWJlclVzZT4oY2hpbGQzKTsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFJlYWxVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CiAgICAgICAgICAg
ICBjYXNlIEFycmF5OjpJbnQxNkFycmF5OgpAQCAtNTgwLDE1ICs2MjYsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBpZiAoY2hpbGQzLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQogICAg
ICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDMpOwogICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGNoaWxkMy0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQotICAgICAg
ICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KGNoaWxkMyk7CisgICAgICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4oY2hpbGQzKTsKKyAg
ICAgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KGNoaWxkMyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6CiAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CiAgICAgICAgICAgICAgICAgZml4
RWRnZTxLbm93bkNlbGxVc2U+KGNoaWxkMSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4oY2hpbGQyKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4oY2hpbGQz
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4oY2hpbGQzKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CkBAIC02MzAsNyArNjc2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3Vi
bGU6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxSZWFsTnVtYmVyVXNlPihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBSZWFsVXNlPihub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpD
b250aWd1b3VzOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgpAQCAtNjYz
LDcgKzcwOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1i
ZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJl
cFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogCiAgICAgICAgICAgICBOb2RlKiBsb2dpY2FsTm90ID0g
bm9kZS0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICAgICAgaWYgKGxvZ2ljYWxOb3QtPm9wKCkg
PT0gTG9naWNhbE5vdCkgewpAQCAtNzYwLDcgKzgwNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBvcGVyYW5kSW5kZXggPSAwOyBvcGVyYW5k
SW5kZXggPCBub2RlLT5udW1DaGlsZHJlbigpOyArK29wZXJhbmRJbmRleCkKLSAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxSZWFsTnVtYmVyVXNlPihtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5b
bm9kZS0+Zmlyc3RDaGlsZCgpICsgb3BlcmFuZEluZGV4XSk7CisgICAgICAgICAgICAgICAgICAg
IGZpeEVkZ2U8RG91YmxlUmVwUmVhbFVzZT4obV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW25vZGUt
PmZpcnN0Q2hpbGQoKSArIG9wZXJhbmRJbmRleF0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKICAgICAgICAg
ICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfSU5ERVhJTkdfVFlQRVM6CkBAIC05MzYsNyArOTgy
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgUGhhbnRvbToKLSAgICAg
ICAgY2FzZSBJZGVudGl0eToKICAgICAgICAgY2FzZSBDaGVjazogewogICAgICAgICAgICAgc3dp
dGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgICAgIGNhc2UgTnVtYmVy
VXNlOgpAQCAtOTYxLDE2ICsxMDA2LDE5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tU
aWVyVXBJbkxvb3A6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICAgICAg
Y2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgotICAgICAgICBjYXNlIEludDUyVG9Eb3VibGU6
Ci0gICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBv
aW50OgogICAgICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5k
czoKICAgICAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgICAgICBjYXNlIERv
dWJsZUFzSW50MzI6Ci0gICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICAgICAgY2FzZSBW
YWx1ZVRvSW50MzI6CiAgICAgICAgIGNhc2UgSGFyZFBoYW50b206IC8vIEhhcmRQaGFudG9tIHdv
dWxkIGJlIHRyaXZpYWwgdG8gaGFuZGxlIGJ1dCBhbnl3YXkgd2UgYXNzZXJ0IHRoYXQgd2Ugd29u
J3Qgc2VlIGl0IGhlcmUgeWV0LgorICAgICAgICBjYXNlIERvdWJsZVJlcDoKKyAgICAgICAgY2Fz
ZSBJbnQ1MlJlcDoKKyAgICAgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICAgICAgY2FzZSBEb3VibGVD
b25zdGFudDoKKyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgorICAgICAgICBjYXNlIElkZW50
aXR5OiAvLyBUaGlzIHNob3VsZCBoYXZlIGJlZW4gY2xlYW5lZCB1cC4KICAgICAgICAgICAgIC8v
IFRoZXNlIGFyZSBqdXN0IG5vZGVzIHRoYXQgd2UgZG9uJ3QgY3VycmVudGx5IGV4cGVjdCB0byBz
ZWUgZHVyaW5nIGZpeHVwLgogICAgICAgICAgICAgLy8gSWYgd2UgZXZlciB3YW50ZWQgdG8gaW5z
ZXJ0IHRoZW0gcHJpb3IgdG8gZml4dXAsIHRoZW4gd2UganVzdCBoYXZlIHRvIGNyZWF0ZQogICAg
ICAgICAgICAgLy8gZml4dXAgcnVsZXMgZm9yIHRoZW0uCkBAIC0xMzEyLDcgKzEzNjAsNyBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBmaXh1
cFNldExvY2Fsc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCisgICAgdm9pZCBmaXh1cEdldEFu
ZFNldExvY2Fsc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCiAgICAgewogICAgICAgICBpZiAo
IWJsb2NrKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMyMCwyOCArMTM2OCw0OSBAQCBwcml2
YXRlOgogICAgICAgICBtX2Jsb2NrID0gYmxvY2s7CiAgICAgICAgIGZvciAobV9pbmRleEluQmxv
Y2sgPSAwOyBtX2luZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbmRleEluQmxvY2sp
IHsKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1cnJlbnROb2RlID0gYmxvY2stPmF0KG1f
aW5kZXhJbkJsb2NrKTsKLSAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFNldExvY2FsKQor
ICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gU2V0TG9jYWwgJiYgbm9kZS0+b3AoKSAhPSBH
ZXRMb2NhbCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpOwotICAgICAgICAgICAgc3dpdGNoICh2YXJpYWJsZS0+Zmx1c2hGb3JtYXQoKSkgewot
ICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBGbHVzaGVkSW50NTI6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIEZsdXNoZWRDZWxsOgotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAg
ICAgICBjYXNlIEdldExvY2FsOgorICAgICAgICAgICAgICAgIHN3aXRjaCAodmFyaWFibGUtPmZs
dXNoRm9ybWF0KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZsdXNoZWREb3VibGU6CisgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50NTI6
CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHZh
cmlhYmxlLT5mbHVzaEZvcm1hdCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNW
YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBG
bHVzaGVkRG91YmxlOgorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQ1MjoKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgorICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE0Njcs
NyArMTUzNiw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hh
bmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAgICAgICBjYXNlIFJlYWxO
dW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBjYXNlIERvdWJs
ZVJlcFJlYWxVc2U6CiAgICAgICAgICAgICBpZiAodmFyaWFibGUtPmRvdWJsZUZvcm1hdFN0YXRl
KCkgPT0gVXNpbmdEb3VibGVGb3JtYXQpCiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5
Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xNDc2LDcgKzE1NDYsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIHx8IGlzQm9vbGVhblNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQog
ICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdl
SXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAg
ICBpZiAoaXNNYWNoaW5lSW50U3BlY3VsYXRpb24odmFyaWFibGUtPnByZWRpY3Rpb24oKSkpCiAg
ICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJ
c1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTE5LDkg
KzE1ODksOSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgVXNlS2luZCB1c2VLaW5kOwog
ICAgICAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQotICAgICAgICAg
ICAgdXNlS2luZCA9IE1hY2hpbmVJbnRVc2U7CisgICAgICAgICAgICB1c2VLaW5kID0gSW50NTJS
ZXBVc2U7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKQot
ICAgICAgICAgICAgdXNlS2luZCA9IE51bWJlclVzZTsKKyAgICAgICAgICAgIHVzZUtpbmQgPSBE
b3VibGVSZXBVc2U7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZUJvb2xl
YW4oKSkKICAgICAgICAgICAgIHVzZUtpbmQgPSBCb29sZWFuVXNlOwogICAgICAgICBlbHNlCkBA
IC0xNTg5LDkgKzE2NTksMTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkgewotICAg
ICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
IGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldEFy
aXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1
bHQoTm9kZVJlc3VsdEludDUyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgICAgIApAQCAtMTcyNCwxMDkgKzE3OTUsMTUwIEBAIHByaXZhdGU6CiAgICAgICAgIGZv
ciAobV9pbmRleEluQmxvY2sgPSAwOyBtX2luZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsr
bV9pbmRleEluQmxvY2spIHsKICAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBibG9jay0+YXQo
bV9pbmRleEluQmxvY2spOwogICAgICAgICAgICAgYWRkUGhhbnRvbXNJZk5lY2Vzc2FyeSgpOwot
ICAgICAgICAgICAgaWYgKG1fY3VycmVudE5vZGUtPmNvbnRhaW5zTW92SGludCgpKQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdHJ5VG9SZWxheFJlcHJlc2VudGF0aW9u
KG1fY3VycmVudE5vZGUpOwogICAgICAgICAgICAgREZHX05PREVfRE9fVE9fQ0hJTERSRU4obV9n
cmFwaCwgbV9jdXJyZW50Tm9kZSwgaW5qZWN0VHlwZUNvbnZlcnNpb25zRm9yRWRnZSk7CiAgICAg
ICAgIH0KICAgICAgICAgY2xlYXJQaGFudG9tc0F0RW5kKCk7CiAgICAgICAgIG1faW5zZXJ0aW9u
U2V0LmV4ZWN1dGUoYmxvY2spOwogICAgIH0KICAgICAKKyAgICB2b2lkIHRyeVRvUmVsYXhSZXBy
ZXNlbnRhdGlvbihOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgLy8gU29tZSBvcGVyYXRpb25z
IG1heSBiZSBhYmxlIHRvIG9wZXJhdGUgbW9yZSBlZmZpY2llbnRseSBvdmVyIGxvb3NlciByZXBy
ZXNlbnRhdGlvbnMuCisgICAgICAgIC8vIElkZW50aWZ5IHRob3NlIGhlcmUuIFRoaXMgYXZvaWRz
IGluc2VydGluZyBhIHJlZHVuZGFudCByZXByZXNlbnRhdGlvbiBjb252ZXJzaW9uLgorICAgICAg
ICAvLyBBbHNvLCBmb3Igc29tZSBvcGVyYXRpb25zLCBsaWtlIE1vdkhpbnQsIHRoaXMgaXMgYSBu
ZWNlc3Nhcnkgb3B0aW1pemF0aW9uOiBpbnNlcnRpbmcKKyAgICAgICAgLy8gYW4gb3RoZXJ3aXNl
LWRlYWQgY29udmVyc2lvbiBqdXN0IGZvciBhIE1vdkhpbnQgd291bGQgYnJlYWsgT1NSJ3MgdW5k
ZXJzdGFuZGluZyBvZgorICAgICAgICAvLyB0aGUgSVIuCisgICAgICAgIAorICAgICAgICBzd2l0
Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgY2FzZSBNb3ZIaW50OgorICAgICAgICBjYXNlIFBo
YW50b206CisgICAgICAgIGNhc2UgQ2hlY2s6CisgICAgICAgIGNhc2UgSGFyZFBoYW50b206Cisg
ICAgICAgICAgICBERkdfTk9ERV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBtX2N1cnJlbnROb2Rl
LCBmaXhFZGdlUmVwcmVzZW50YXRpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAKKyAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZQorICAgICAgICAgICAgICAgICYmICFub2Rl
LT5jaGlsZDEoKS0+aGFzRG91YmxlUmVzdWx0KCkpIHsKKyAgICAgICAgICAgICAgICBub2RlLT5j
aGlsZDEoKS5zZXRVc2VLaW5kKE51bWJlclVzZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAg
dm9pZCBmaXhFZGdlUmVwcmVzZW50YXRpb24oTm9kZSosIEVkZ2UmIGVkZ2UpCisgICAgeworICAg
ICAgICBzd2l0Y2ggKGVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OgorICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgICAgICAgICBpZiAoZWRnZS0+
aGFzRG91YmxlUmVzdWx0KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGlmIChlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAgICAgICAgICAg
IGVkZ2Uuc2V0VXNlS2luZChJbnQ1MlJlcFVzZSk7CisgICAgICAgICAgICBlbHNlIGlmIChlZGdl
LnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpCisgICAgICAgICAgICAgICAgZWRnZS5zZXRVc2VL
aW5kKE51bWJlclVzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICAgICAgLy8gTm90aGluZyB3ZSBjYW4gcmVhbGx5
IGRvLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBVbnR5
cGVkVXNlOgorICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgICAgIGlmIChlZGdlLT5o
YXNEb3VibGVSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBlZGdlLnNldFVzZUtpbmQoRG91Ymxl
UmVwVXNlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpCisg
ICAgICAgICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKEludDUyUmVwVXNlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKyAgICAKICAgICB2b2lkIGluamVjdFR5cGVDb252ZXJzaW9u
c0ZvckVkZ2UoTm9kZSogbm9kZSwgRWRnZSYgZWRnZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChu
b2RlID09IG1fY3VycmVudE5vZGUpOwogICAgICAgICAKLSAgICAgICAgaWYgKGlzRG91YmxlKGVk
Z2UudXNlS2luZCgpKSkgewotICAgICAgICAgICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUlu
dDMyRm9yQXJpdGhtZXRpYygpKSB7Ci0gICAgICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9t
KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBOb2RlKiBy
ZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY0ludDUyQXNEb3VibGUsIEludDMyVG9Eb3VibGUsCi0gICAgICAg
ICAgICAgICAgICAgIG5vZGUtPm9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICBzd2l0Y2gg
KGVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBj
YXNlIERvdWJsZVJlcFJlYWxVc2U6IHsKKyAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVS
ZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgaWYgKGVuYWJsZUludDUyKCkgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgp
KSB7Ci0gICAgICAgICAgICAgICAgLy8gTWFrZSBhbGwgZG91YmxlIHVzZXMgb2YgaW50NTIgdmFs
dWVzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIEludDUyVG9Eb3VibGUuCi0gICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIEludDUyVG9WYWx1ZSAoc2VlIGJlbG93
KSBleGNlcHQgdGhhdAotICAgICAgICAgICAgICAgIC8vIEludDhUb0RvdWJsZSB3aWxsIGNvbnZl
cnQgaW50NTIncyB0aGF0IGZpdCBpbiBhbiBpbnQzMiBpbnRvIGEgZG91YmxlCi0gICAgICAgICAg
ICAgICAgLy8gcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGNyZWF0ZSBhIGJveGVkIGludDMyIGxpa2Ug
SW50NTJUb1ZhbHVlIGRvZXMuCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgYWRk
UmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgICAgICAgICBOb2RlKiByZXN1
bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBtX2lu
ZGV4SW5CbG9jaywgU3BlY0ludDUyQXNEb3VibGUsIEludDUyVG9Eb3VibGUsCi0gICAgICAgICAg
ICAgICAgICAgIG5vZGUtPm9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7Ci0g
ICAgICAgICAgICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9kZSgpKTsKKworICAg
ICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0ludDUyUmVz
dWx0KCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDUyQXNEb3Vi
bGUsIERvdWJsZVJlcCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBFZGdlKGVk
Z2Uubm9kZSgpLCBJbnQ1MlJlcFVzZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0RvdWJsZSwgRG91YmxlUmVwLCBub2RlLT5vcmln
aW4sCisgICAgICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwog
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlZGdlLnNldE5vZGUocmVzdWx0KTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoZW5hYmxlSW50
NTIoKSAmJiBlZGdlLnVzZUtpbmQoKSAhPSBNYWNoaW5lSW50VXNlCi0gICAgICAgICAgICAmJiBl
ZGdlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkgJiYgIWVkZ2UtPnNob3VsZFNwZWN1bGF0
ZUludDMyKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIG1ha2UgYWxsIG5vbi1pbnQ1MiB1c2VzIG9m
IGludDUyIHZhbHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJbnQ1MlRvVmFsdWUKLSAgICAgICAg
ICAgIC8vIG5vZGUgdG8gZW5zdXJlIHRoYXQgd2UgaGFuZGxlIHRoaXMgcHJvcGVybHk6Ci0gICAg
ICAgICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29tZUludDUyCi0gICAgICAgICAgICAvLyBi
OiBBcml0aEFkZChAYSwgLi4uKQotICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIEBhKQotICAg
ICAgICAgICAgLy8gZDogQXJpdGhBZGQoQGEsIC4uLikKLSAgICAgICAgICAgIC8vCi0gICAgICAg
ICAgICAvLyBXaXRob3V0IGFuIGludGVybWVkaWF0ZSBub2RlIGFuZCBqdXN0IGxhYmVsaW5nIHRo
ZSB1c2VzLCB3ZSB3aWxsIGdldDoKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBhOiBT
b21lSW50NTIKLSAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEludDUyOkBhLCAuLi4pCi0gICAg
ICAgICAgICAvLyBjOiBDYWxsKC4uLiwgVW50eXBlZDpAYSkKLSAgICAgICAgICAgIC8vIGQ6IEFy
aXRoQWRkKEludDUyOkBhLCAuLi4pCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gQW5k
IG5vdyB0aGUgYy0+VW50eXBlZDpAYSBlZGdlIHdpbGwgYm94IHRoZSB2YWx1ZSBvZiBAYSBpbnRv
IGEgZG91YmxlLiBUaGlzCi0gICAgICAgICAgICAvLyBpcyBiYWQsIGJlY2F1c2Ugbm93IHRoZSBk
LT5JbnQ1MjpAYSBlZGdlIHdpbGwgZWl0aGVyIGhhdmUgdG8gZG8gZG91YmxlLXRvLWludAotICAg
ICAgICAgICAgLy8gY29udmVyc2lvbnMsIG9yIHdpbGwgaGF2ZSB0byBPU1IgZXhpdCB1bmNvbmRp
dGlvbmFsbHkuIEFsdGVybmF0aXZlbHkgd2UgY291bGQKLSAgICAgICAgICAgIC8vIGhhdmUgdGhl
IGMtPlVudHlwZWQ6QGEgZWRnZSBib3ggdGhlIHZhbHVlIGJ5IGNvcHlpbmcgcmF0aGVyIHRoYW4g
aW4tcGxhY2UuCi0gICAgICAgICAgICAvLyBCdXQgdGhlc2UgYm94aW5ncyBhcmUgYWxzbyBjb3N0
bHkgc28gdGhpcyB3b3VsZG4ndCBiZSBncmVhdC4KLSAgICAgICAgICAgIC8vCi0gICAgICAgICAg
ICAvLyBUaGUgc29sdXRpb24gd2UgdXNlIGlzIHRvIGFsd2F5cyBoYXZlIG5vbi1JbnQ1MiB1c2Vz
IG9mIHByZWRpY3RlZCBJbnQ1MidzIHVzZQotICAgICAgICAgICAgLy8gYW4gaW50ZXJ2ZW5pbmcg
SW50NTJUb1ZhbHVlIG5vZGU6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29t
ZUludDUyCi0gICAgICAgICAgICAvLyBiOiBBcml0aEFkZChJbnQ1MjpAYSwgLi4uKQotICAgICAg
ICAgICAgLy8geDogSW50NTJUb1ZhbHVlKEludDUyOkBhKQotICAgICAgICAgICAgLy8gYzogQ2Fs
bCguLi4sIFVudHlwZWQ6QHgpCi0gICAgICAgICAgICAvLyBkOiBBcml0aEFkZChJbnQ1MjpAYSwg
Li4uKQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBldmVuIGlmIHdl
IGhhZCBtdWx0aXBsZSBub24taW50NTIgdXNlcyBvZiBAYSwgdGhlIG11bHRpcGxlCi0gICAgICAg
ICAgICAvLyBJbnQ1MlRvVmFsdWUncyB3b3VsZCBnZXQgQ1NFJ2QgdG9nZXRoZXIuIFNvIHRoZSBi
b3hpbmcgd291bGQgb25seSBoYXBwZW4gb25jZS4KLSAgICAgICAgICAgIC8vIEF0IHRoZSBzYW1l
IHRpbWUsIEBhIHdvdWxkIGNvbnRpbnVlIHRvIGJlIHJlcHJlc2VudGVkIGFzIGEgbmF0aXZlIGlu
dDUyLgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIEFuIGFsdGVybmF0aXZlIHdvdWxk
IGhhdmUgYmVlbiB0byBpbnNlcnQgVG9OYXRpdmVJbnQ1MiBub2RlcyBvbiBpbnQ1MiB1c2VzIG9m
Ci0gICAgICAgICAgICAvLyBpbnQ1MidzLiBUaGlzIHdvdWxkIGhhdmUgaGFuZGxlZCB0aGUgYWJv
dmUgZXhhbXBsZSBidXQgd291bGQgZmFsbCBvdmVyIGZvcjoKLSAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICAvLyBhOiBTb21lSW50NTIKLSAgICAgICAgICAgIC8vIGI6IENhbGwoLi4uLCBAYSkK
LSAgICAgICAgICAgIC8vIGM6IEFyaXRoQWRkKEBhLCAuLi4pCi0gICAgICAgICAgICAvLwotICAg
ICAgICAgICAgLy8gQnV0IHRoZSBzb2x1dGlvbiB3ZSB1c2UgaGFuZGxlcyB0aGUgYWJvdmUgZ3Jh
Y2VmdWxseS4KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAg
ICAgICAgICBpZiAoZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAogICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9k
ZSgpKTsKLSAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCi0gICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MiwgSW50NTJUb1Zh
bHVlLAotICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgVW50
eXBlZFVzZSkpOworCisgICAgICAgICAgICBOb2RlKiByZXN1bHQ7CisgICAgICAgICAgICBpZiAo
ZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwg
bmV2ZXIgaGFwcGVuLgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyRm9y
QXJpdGhtZXRpYygpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQz
MiwgSW50NTJSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdl
Lm5vZGUoKSwgSW50MzJVc2UpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgLy8gVGhpcyBpcyBvbmx5IGhlcmUgZm9yIGRlYWxpbmcgd2l0aCBjb25zdGFudHMuCisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZWRnZS0+b3AoKSA9PSBKU0NvbnN0YW50KTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAg
ICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY01hY2hpbmVJbnQsIEludDUyQ29uc3Rh
bnQsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKGVkZ2UtPmNvbnN0
YW50TnVtYmVyKCkpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZWRnZS5zZXROb2Rl
KHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgICAgIGlmICgh
ZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkgJiYgIWVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFkZFJlcXVpcmVk
UGhhbnRvbShlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGUqIHJl
c3VsdDsKKyAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSkgeworICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjRG91YmxlLCBWYWx1ZVJlcCwgbm9kZS0+b3Jp
Z2luLAorICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBEb3VibGVSZXBVc2Up
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91YmxlLCBWYWx1ZVJlcCwgbm9kZS0+b3JpZ2luLAor
ICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBJbnQ1MlJlcFVzZSkpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBlZGdlLnNldE5vZGUocmVzdWx0
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IH0KICAgICB9CiAgICAgCiAgICAgdm9p
ZCBhZGRSZXF1aXJlZFBoYW50b20oTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIGlmICghbV9j
b2RlT3JpZ2luT2ZQaGFudG9tcykgewotICAgICAgICAgICAgQVNTRVJUKG1fcmVxdWlyZWRQaGFu
dG9tcy5pc0VtcHR5KCkpOwotICAgICAgICAgICAgbV9jb2RlT3JpZ2luT2ZQaGFudG9tcyA9IG1f
Y3VycmVudE5vZGUtPm9yaWdpbi5mb3JFeGl0OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgQVNTRVJUKCFtX3JlcXVpcmVkUGhhbnRvbXMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIEFT
U0VSVChtX2NvZGVPcmlnaW5PZlBoYW50b21zID09IG1fY3VycmVudE5vZGUtPm9yaWdpbi5mb3JF
eGl0KTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgbV9yZXF1aXJlZFBoYW50b21zLmFw
cGVuZChub2RlKTsKICAgICB9CiAKQEAgLTE4MzUsMTkgKzE5NDcsMTQgQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKG1fcmVxdWlyZWRQaGFudG9tcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCghIW1fY29kZU9yaWdpbk9mUGhh
bnRvbXMpOwotICAgICAgICAKLSAgICAgICAgaWYgKG1fY3VycmVudE5vZGUtPm9yaWdpbi5mb3JF
eGl0ID09IG1fY29kZU9yaWdpbk9mUGhhbnRvbXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3JlcXVpcmVkUGhhbnRvbXMuc2l6ZSgp
OyBpLS07KSB7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9yZXF1aXJlZFBoYW50b21zW2ld
OwogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAg
ICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIE5vZGVPcmlnaW4obV9jb2RlT3Jp
Z2luT2ZQaGFudG9tcyksCi0gICAgICAgICAgICAgICAgRWRnZShtX3JlcXVpcmVkUGhhbnRvbXNb
aV0sIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05v
bmUsIFBoYW50b20sIG1fY3VycmVudE5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBub2Rl
LT5kZWZhdWx0RWRnZSgpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9yZXF1aXJl
ZFBoYW50b21zLnJlc2l6ZSgwKTsKLSAgICAgICAgbV9jb2RlT3JpZ2luT2ZQaGFudG9tcyA9IENv
ZGVPcmlnaW4oKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjbGVhclBoYW50b21zQXRFbmQoKQpA
QCAtMTg2Myw3ICsxOTcwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjc3OAogICAgICAgICAKICAgICAgICAgbV9yZXF1
aXJlZFBoYW50b21zLnJlc2l6ZSgwKTsKLSAgICAgICAgbV9jb2RlT3JpZ2luT2ZQaGFudG9tcyA9
IENvZGVPcmlnaW4oKTsKICAgICB9CiAgICAgCiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKQEAg
LTE4NzEsNyArMTk3Nyw2IEBAIHByaXZhdGU6CiAgICAgTm9kZSogbV9jdXJyZW50Tm9kZTsKICAg
ICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CiAgICAgYm9vbCBtX3Byb2ZpdGFiaWxpdHlD
aGFuZ2VkOwotICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luT2ZQaGFudG9tczsKICAgICBWZWN0
b3I8Tm9kZSosIDM+IG1fcmVxdWlyZWRQaGFudG9tczsKIH07CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAxNjcyNzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTYyLDcgKzYyLDcgQEAgaW5saW5lIE5vZGVGbGFncyByZXN1bHRGb3IoRmx1c2hGb3JtYXQg
ZgogICAgIGNhc2UgRmx1c2hlZEludDUyOgogICAgICAgICByZXR1cm4gTm9kZVJlc3VsdEludDUy
OwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHROdW1i
ZXI7CisgICAgICAgIHJldHVybiBOb2RlUmVzdWx0RG91YmxlOwogICAgIGNhc2UgRmx1c2hlZEJv
b2xlYW46CiAgICAgICAgIHJldHVybiBOb2RlUmVzdWx0Qm9vbGVhbjsKICAgICB9CkBAIC04Myw5
ICs4Myw5IEBAIGlubGluZSBVc2VLaW5kIHVzZUtpbmRGb3IoRmx1c2hGb3JtYXQgZm8KICAgICBj
YXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgcmV0dXJuIEludDMyVXNlOwogICAgIGNhc2UgRmx1
c2hlZEludDUyOgotICAgICAgICByZXR1cm4gTWFjaGluZUludFVzZTsKKyAgICAgICAgcmV0dXJu
IEludDUyUmVwVXNlOwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAgICAgcmV0dXJuIE51
bWJlclVzZTsKKyAgICAgICAgcmV0dXJuIERvdWJsZVJlcFVzZTsKICAgICBjYXNlIEZsdXNoZWRC
b29sZWFuOgogICAgICAgICByZXR1cm4gQm9vbGVhblVzZTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw3
ICszMTQsNyBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAg
ICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KEpTVmFsdWUobm9kZS0+dHlwZWRBcnJheSgp
KSwgY29udGV4dCkpOwogICAgIGlmIChub2RlLT5oYXNTdG9yYWdlUG9pbnRlcigpKQogICAgICAg
ICBvdXQucHJpbnQoY29tbWEsIFJhd1BvaW50ZXIobm9kZS0+c3RvcmFnZVBvaW50ZXIoKSkpOwot
ICAgIGlmIChvcCA9PSBKU0NvbnN0YW50KSB7CisgICAgaWYgKG5vZGUtPmlzQ29uc3RhbnQoKSkg
ewogICAgICAgICBvdXQucHJpbnQoY29tbWEsICIkIiwgbm9kZS0+Y29uc3RhbnROdW1iZXIoKSk7
CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSB2YWx1ZU9mSlNDb25zdGFudChub2RlKTsKICAgICAg
ICAgb3V0LnByaW50KCIgPSAiLCBpbkNvbnRleHQodmFsdWUsIGNvbnRleHQpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyAr
MzksNiBAQAogI2luY2x1ZGUgIkRGR05vZGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJERkdQbGFu
LmgiCiAjaW5jbHVkZSAiREZHU2Nhbm5hYmxlLmgiCi0jaW5jbHVkZSAiREZHVmFyaWFkaWNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIklubGluZUNhbGxGcmFtZVNldC5oIgogI2luY2x1ZGUgIkpTU3Rh
Y2suaCIKICNpbmNsdWRlICJNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgiCkBAIC0xMzYs
MTUgKzEzNSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCghY2hpbGQtPm1pc2MucmVwbGFj
ZW1lbnQpOwogICAgIH0KICAgICAKLSNkZWZpbmUgREZHX0RFRklORV9BRERfTk9ERSh0ZW1wbGF0
ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1zLCB2YWx1ZVBhcmFtc0NvbW1hLCB2YWx1ZVBh
cmFtcywgdmFsdWVBcmdzKSBcCi0gICAgdGVtcGxhdGVQcmUgdHlwZVBhcmFtcyB0ZW1wbGF0ZVBv
c3QgTm9kZSogYWRkTm9kZShTcGVjdWxhdGVkVHlwZSB0eXBlIHZhbHVlUGFyYW1zQ29tbWEgdmFs
dWVQYXJhbXMpIFwKLSAgICB7IFwKLSAgICAgICAgTm9kZSogbm9kZSA9IG5ldyAobV9hbGxvY2F0
b3IpIE5vZGUodmFsdWVBcmdzKTsgXAotICAgICAgICBub2RlLT5wcmVkaWN0KHR5cGUpOyBcCi0g
ICAgICAgIHJldHVybiBub2RlOyBcCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gUGFyYW1zPgor
ICAgIE5vZGUqIGFkZE5vZGUoU3BlY3VsYXRlZFR5cGUgdHlwZSwgUGFyYW1zLi4uIHBhcmFtcykK
KyAgICB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBuZXcgKG1fYWxsb2NhdG9yKSBOb2RlKHBhcmFt
cy4uLik7CisgICAgICAgIG5vZGUtPnByZWRpY3QodHlwZSk7CisgICAgICAgIHJldHVybiBub2Rl
OwogICAgIH0KLSAgICBERkdfVkFSSUFESUNfVEVNUExBVEVfRlVOQ1RJT04oREZHX0RFRklORV9B
RERfTk9ERSkKLSN1bmRlZiBERkdfREVGSU5FX0FERF9OT0RFCiAKICAgICB2b2lkIGRldGhyZWFk
KCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1NSwxNCArMTU1LDIzIEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRp
YWxpemUoKQogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigp
OwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOwogICAg
ICAgICB9CisgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCisgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgaWYgKGJsb2NrLT5ieXRlY29kZUJlZ2luICE9IG1fZ3JhcGgubV9w
bGFuLm9zckVudHJ5Qnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ3JhcGgubV9tdXN0SGFuZGxlQWJzdHJhY3RWYWx1
ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX2dy
YXBoLm1fbXVzdEhhbmRsZUFic3RyYWN0VmFsdWVzW2ldOwogICAgICAgICAgICAgaW50IG9wZXJh
bmQgPSBtX2dyYXBoLm1fbXVzdEhhbmRsZUFic3RyYWN0VmFsdWVzLm9wZXJhbmRGb3JJbmRleChp
KTsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQub3BlcmFuZChvcGVyYW5kKS5tZXJn
ZSh2YWx1ZSk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPnZhcmlhYmxlc0F0SGVh
ZC5vcGVyYW5kKG9wZXJhbmQpOworICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgu
bV9tdXN0SGFuZGxlQWJzdHJhY3RWYWx1ZXNbaV07CisgICAgICAgICAgICBBYnN0cmFjdFZhbHVl
JiBhYnN0cmFjdFZhbHVlID0gYmxvY2stPnZhbHVlc0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpOwor
ICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpOworICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0ID0gdmFyaWFibGUt
PmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICBhYnN0cmFjdFZhbHVlLm1lcmdlKHZhbHVlKTsK
KyAgICAgICAgICAgIGFic3RyYWN0VmFsdWUuZml4VHlwZUZvclJlcHJlc2VudGF0aW9uKHJlc3Vs
dEZvcihmb3JtYXQpKTsKICAgICAgICAgfQogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNp
dCA9IHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNl
cnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
c2VydGlvblNldC5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCwyNyAr
NTQsNDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGluc2VydChJbnNlcnRpb24o
aW5kZXgsIGVsZW1lbnQpKTsKICAgICB9Ci0gICAgCi0jZGVmaW5lIERGR19ERUZJTkVfSU5TRVJU
X05PREUodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXND
b21tYSwgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykgXAotICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJh
bXMgdGVtcGxhdGVQb3N0IE5vZGUqIGluc2VydE5vZGUoc2l6ZV90IGluZGV4LCBTcGVjdWxhdGVk
VHlwZSB0eXBlIHZhbHVlUGFyYW1zQ29tbWEgdmFsdWVQYXJhbXMpIFwKLSAgICB7IFwKLSAgICAg
ICAgcmV0dXJuIGluc2VydChpbmRleCwgbV9ncmFwaC5hZGROb2RlKHR5cGUgdmFsdWVQYXJhbXND
b21tYSB2YWx1ZUFyZ3MpKTsgXAorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gUGFyYW1zPgor
ICAgIE5vZGUqIGluc2VydE5vZGUoc2l6ZV90IGluZGV4LCBTcGVjdWxhdGVkVHlwZSB0eXBlLCBQ
YXJhbXMuLi4gcGFyYW1zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydChpbmRleCwgbV9n
cmFwaC5hZGROb2RlKHR5cGUsIHBhcmFtcy4uLikpOwogICAgIH0KLSAgICBERkdfVkFSSUFESUNf
VEVNUExBVEVfRlVOQ1RJT04oREZHX0RFRklORV9JTlNFUlRfTk9ERSkKLSN1bmRlZiBERkdfREVG
SU5FX0lOU0VSVF9OT0RFCiAgICAgCi0gICAgTm9kZSogaW5zZXJ0Q29uc3RhbnQoc2l6ZV90IGlu
ZGV4LCBOb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZSB2YWx1ZSkKKyAgICBOb2RlKiBpbnNlcnRD
b25zdGFudCgKKyAgICAgICAgc2l6ZV90IGluZGV4LCBOb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1
ZSB2YWx1ZSwKKyAgICAgICAgTm9kZVR5cGUgb3AgPSBKU0NvbnN0YW50KQogICAgIHsKICAgICAg
ICAgdW5zaWduZWQgY29uc3RhbnRSZWcgPQogICAgICAgICAgICAgbV9ncmFwaC5jb25zdGFudFJl
Z2lzdGVyRm9yQ29uc3RhbnQodmFsdWUpOwogICAgICAgICByZXR1cm4gaW5zZXJ0Tm9kZSgKLSAg
ICAgICAgICAgIGluZGV4LCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSksIEpTQ29uc3RhbnQs
IG9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyhjb25zdGFudFJlZykpOworICAgICAgICAgICAg
aW5kZXgsIHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKSwgb3AsIG9yaWdpbiwgT3BJbmZvKGNv
bnN0YW50UmVnKSk7CisgICAgfQorICAgIAorICAgIE5vZGUqIGluc2VydENvbnN0YW50KAorICAg
ICAgICBzaXplX3QgaW5kZXgsIENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlIHZhbHVlLCBOb2Rl
VHlwZSBvcCA9IEpTQ29uc3RhbnQpCisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0Q29uc3Rh
bnQoaW5kZXgsIE5vZGVPcmlnaW4ob3JpZ2luKSwgdmFsdWUsIG9wKTsKKyAgICB9CisgICAgCisg
ICAgRWRnZSBpbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgc2l6ZV90IGluZGV4LCBOb2Rl
T3JpZ2luIG9yaWdpbiwgSlNWYWx1ZSB2YWx1ZSwgVXNlS2luZCB1c2VLaW5kKQorICAgIHsKKyAg
ICAgICAgTm9kZVR5cGUgb3A7CisgICAgICAgIGlmIChpc0RvdWJsZSh1c2VLaW5kKSkKKyAgICAg
ICAgICAgIG9wID0gRG91YmxlQ29uc3RhbnQ7CisgICAgICAgIGVsc2UgaWYgKHVzZUtpbmQgPT0g
SW50NTJSZXBVc2UpCisgICAgICAgICAgICBvcCA9IEludDUyQ29uc3RhbnQ7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG9wID0gSlNDb25zdGFudDsKKyAgICAgICAgcmV0dXJuIEVkZ2UoaW5z
ZXJ0Q29uc3RhbnQoaW5kZXgsIG9yaWdpbiwgdmFsdWUsIG9wKSwgdXNlS2luZCk7CiAgICAgfQog
ICAgIAotICAgIE5vZGUqIGluc2VydENvbnN0YW50KHNpemVfdCBpbmRleCwgQ29kZU9yaWdpbiBv
cmlnaW4sIEpTVmFsdWUgdmFsdWUpCisgICAgRWRnZSBpbnNlcnRDb25zdGFudEZvclVzZSgKKyAg
ICAgICAgc2l6ZV90IGluZGV4LCBDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZSB2YWx1ZSwgVXNl
S2luZCB1c2VLaW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGluc2VydENvbnN0YW50KGluZGV4
LCBOb2RlT3JpZ2luKG9yaWdpbiksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGluc2VydENvbnN0
YW50Rm9yVXNlKGluZGV4LCBOb2RlT3JpZ2luKG9yaWdpbiksIHZhbHVlLCB1c2VLaW5kKTsKICAg
ICB9CiAKICAgICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJp
bmluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3MCwxMCArMzcwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghYWRkZW5kKQogICAgICAg
ICAgICAgcmV0dXJuIHNvdXJjZS5ub2RlKCk7CiAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbm9kZUluZGV4LCBzb3VyY2UtPnByZWRpY3Rpb24o
KSwgQXJpdGhBZGQsIG9yaWdpbiwgT3BJbmZvKGFyaXRoTW9kZSksCi0gICAgICAgICAgICBzb3Vy
Y2UsIEVkZ2UoCi0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQo
bm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKGFkZGVuZCkpLAotICAgICAgICAgICAgICAgIHNv
dXJjZS51c2VLaW5kKCkpKTsKKyAgICAgICAgICAgIG5vZGVJbmRleCwgc291cmNlLT5wcmVkaWN0
aW9uKCksIHNvdXJjZS0+cmVzdWx0KCksCisgICAgICAgICAgICBBcml0aEFkZCwgb3JpZ2luLCBP
cEluZm8oYXJpdGhNb2RlKSwgc291cmNlLAorICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgbm9kZUluZGV4LCBvcmlnaW4sIGpz
TnVtYmVyKGFkZGVuZCksIHNvdXJjZS51c2VLaW5kKCkpKTsKICAgICB9CiAgICAgCiAgICAgTm9k
ZSogaW5zZXJ0TXVzdEFkZCgKQEAgLTM4MSw3ICszODEsNyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgTm9kZSogcmVzdWx0ID0gaW5zZXJ0QWRkKG5vZGVJbmRleCwgb3JpZ2luLCBzb3VyY2Us
IGFkZGVuZCk7CiAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAg
ICBub2RlSW5kZXgsIFNwZWNOb25lLCBIYXJkUGhhbnRvbSwgb3JpZ2luLCBFZGdlKHJlc3VsdCwg
VW50eXBlZFVzZSkpOworICAgICAgICAgICAgbm9kZUluZGV4LCBTcGVjTm9uZSwgSGFyZFBoYW50
b20sIG9yaWdpbiwgcmVzdWx0LT5kZWZhdWx0RWRnZSgpKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJ
KHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDE1IEBAIGJvb2wgTm9kZTo6aGFzVmFyaWFi
bGVBY2Nlc3NEYXRhKEdyYXBoJiAKICAgICB9CiB9CiAKK3ZvaWQgTm9kZTo6Y29udmVydFRvSWRl
bnRpdHkoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGNoaWxkMSgpKTsKKyAgICBSRUxFQVNFX0FT
U0VSVCghY2hpbGQyKCkpOworICAgIE5vZGVGbGFncyByZXN1bHQgPSBjYW5vbmljYWxSZXN1bHRS
ZXByZXNlbnRhdGlvbih0aGlzLT5yZXN1bHQoKSk7CisgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3Mo
SWRlbnRpdHkpOworICAgIHNldFJlc3VsdChyZXN1bHQpOworfQorCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTIxLDcgKzEzMCwxMCBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTm9kCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgb3V0LnByaW50KCJAIiwgbm9kZS0+aW5kZXgoKSk7Ci0gICAgb3V0LnByaW50KEFiYnJl
dmlhdGVkU3BlY3VsYXRpb25EdW1wKG5vZGUtPnByZWRpY3Rpb24oKSkpOworICAgIGlmIChub2Rl
LT5oYXNEb3VibGVSZXN1bHQoKSkKKyAgICAgICAgb3V0LnByaW50KCI8RG91YmxlPiIpOworICAg
IGVsc2UgaWYgKG5vZGUtPmhhc0ludDUyUmVzdWx0KCkpCisgICAgICAgIG91dC5wcmludCgiPElu
dDUyPiIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUg
IkRGR05vZGVGbGFncy5oIgogI2luY2x1ZGUgIkRGR05vZGVPcmlnaW4uaCIKICNpbmNsdWRlICJE
RkdOb2RlVHlwZS5oIgorI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRlICJERkdWYXJp
YWJsZUFjY2Vzc0RhdGEuaCIKICNpbmNsdWRlICJHZXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKQEAgLTIzOSw2ICsyNDAsMjIgQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICBBU1NFUlQoIShtX2ZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpKTsKICAgICB9CiAKKyAgICAvLyBD
b25zdHJ1Y3QgYSBub2RlIHdpdGggdXAgdG8gMyBjaGlsZHJlbiwgbm8gaW1tZWRpYXRlIHZhbHVl
LgorICAgIE5vZGUoTm9kZUZsYWdzIHJlc3VsdCwgTm9kZVR5cGUgb3AsIE5vZGVPcmlnaW4gbm9k
ZU9yaWdpbiwgRWRnZSBjaGlsZDEgPSBFZGdlKCksIEVkZ2UgY2hpbGQyID0gRWRnZSgpLCBFZGdl
IGNoaWxkMyA9IEVkZ2UoKSkKKyAgICAgICAgOiBvcmlnaW4obm9kZU9yaWdpbikKKyAgICAgICAg
LCBjaGlsZHJlbihBZGphY2VuY3lMaXN0OjpGaXhlZCwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMykK
KyAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoKSkKKyAgICAgICAg
LCBtX3JlZkNvdW50KDEpCisgICAgICAgICwgbV9wcmVkaWN0aW9uKFNwZWNOb25lKQorICAgICAg
ICAsIG1fb3BJbmZvKDApCisgICAgICAgICwgbV9vcEluZm8yKDApCisgICAgeworICAgICAgICBt
aXNjLnJlcGxhY2VtZW50ID0gMDsKKyAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3Mob3ApOwor
ICAgICAgICBzZXRSZXN1bHQocmVzdWx0KTsKKyAgICAgICAgQVNTRVJUKCEobV9mbGFncyAmIE5v
ZGVIYXNWYXJBcmdzKSk7CisgICAgfQorCiAgICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIHVw
IHRvIDMgY2hpbGRyZW4gYW5kIGFuIGltbWVkaWF0ZSB2YWx1ZS4KICAgICBOb2RlKE5vZGVUeXBl
IG9wLCBOb2RlT3JpZ2luIG5vZGVPcmlnaW4sIE9wSW5mbyBpbW0sIEVkZ2UgY2hpbGQxID0gRWRn
ZSgpLCBFZGdlIGNoaWxkMiA9IEVkZ2UoKSwgRWRnZSBjaGlsZDMgPSBFZGdlKCkpCiAgICAgICAg
IDogb3JpZ2luKG5vZGVPcmlnaW4pCkBAIC0yNTQsNiArMjcxLDIyIEBAIHN0cnVjdCBOb2RlIHsK
ICAgICAgICAgQVNTRVJUKCEobV9mbGFncyAmIE5vZGVIYXNWYXJBcmdzKSk7CiAgICAgfQogCisg
ICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIHVwIHRvIDMgY2hpbGRyZW4gYW5kIGFuIGltbWVk
aWF0ZSB2YWx1ZS4KKyAgICBOb2RlKE5vZGVGbGFncyByZXN1bHQsIE5vZGVUeXBlIG9wLCBOb2Rl
T3JpZ2luIG5vZGVPcmlnaW4sIE9wSW5mbyBpbW0sIEVkZ2UgY2hpbGQxID0gRWRnZSgpLCBFZGdl
IGNoaWxkMiA9IEVkZ2UoKSwgRWRnZSBjaGlsZDMgPSBFZGdlKCkpCisgICAgICAgIDogb3JpZ2lu
KG5vZGVPcmlnaW4pCisgICAgICAgICwgY2hpbGRyZW4oQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIGNo
aWxkMSwgY2hpbGQyLCBjaGlsZDMpCisgICAgICAgICwgbV92aXJ0dWFsUmVnaXN0ZXIoVmlydHVh
bFJlZ2lzdGVyKCkpCisgICAgICAgICwgbV9yZWZDb3VudCgxKQorICAgICAgICAsIG1fcHJlZGlj
dGlvbihTcGVjTm9uZSkKKyAgICAgICAgLCBtX29wSW5mbyhpbW0ubV92YWx1ZSkKKyAgICAgICAg
LCBtX29wSW5mbzIoMCkKKyAgICB7CisgICAgICAgIG1pc2MucmVwbGFjZW1lbnQgPSAwOworICAg
ICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhvcCk7CisgICAgICAgIHNldFJlc3VsdChyZXN1bHQp
OworICAgICAgICBBU1NFUlQoIShtX2ZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpKTsKKyAgICB9CisK
ICAgICAvLyBDb25zdHJ1Y3QgYSBub2RlIHdpdGggdXAgdG8gMyBjaGlsZHJlbiBhbmQgdHdvIGlt
bWVkaWF0ZSB2YWx1ZXMuCiAgICAgTm9kZShOb2RlVHlwZSBvcCwgTm9kZU9yaWdpbiBub2RlT3Jp
Z2luLCBPcEluZm8gaW1tMSwgT3BJbmZvIGltbTIsIEVkZ2UgY2hpbGQxID0gRWRnZSgpLCBFZGdl
IGNoaWxkMiA9IEVkZ2UoKSwgRWRnZSBjaGlsZDMgPSBFZGdlKCkpCiAgICAgICAgIDogb3JpZ2lu
KG5vZGVPcmlnaW4pCkBAIC0zMjUsNiArMzU4LDE4IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAg
cmV0dXJuIGZpbHRlckZsYWdzKH5mbGFncyk7CiAgICAgfQogICAgIAorICAgIHZvaWQgc2V0UmVz
dWx0KE5vZGVGbGFncyByZXN1bHQpCisgICAgeworICAgICAgICBBU1NFUlQoIShyZXN1bHQgJiB+
Tm9kZVJlc3VsdE1hc2spKTsKKyAgICAgICAgY2xlYXJGbGFncyhOb2RlUmVzdWx0TWFzayk7Cisg
ICAgICAgIG1lcmdlRmxhZ3MocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgTm9kZUZsYWdzIHJl
c3VsdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZmxhZ3MoKSAmIE5vZGVSZXN1bHRN
YXNrOworICAgIH0KKyAgICAKICAgICB2b2lkIHNldE9wQW5kRGVmYXVsdEZsYWdzKE5vZGVUeXBl
IG9wKQogICAgIHsKICAgICAgICAgbV9vcCA9IG9wOwpAQCAtMzQxLDEyICszODYsNyBAQCBzdHJ1
Y3QgTm9kZSB7CiAgICAgICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKFBoYW50b20pOwogICAgIH0K
IAotICAgIHZvaWQgY29udmVydFRvSWRlbnRpdHkoKQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY2hpbGQxKCkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVCghY2hpbGQyKCkpOwotICAg
ICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhJZGVudGl0eSk7Ci0gICAgfQorICAgIHZvaWQgY29u
dmVydFRvSWRlbnRpdHkoKTsKIAogICAgIGJvb2wgbXVzdEdlbmVyYXRlKCkKICAgICB7CkBAIC0z
NjgsNyArNDA4LDE0IEBAIHN0cnVjdCBOb2RlIHsKICAgICAKICAgICBib29sIGlzQ29uc3RhbnQo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gSlNDb25zdGFudDsKKyAgICAgICAgc3dp
dGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBEb3Vi
bGVDb25zdGFudDoKKyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgYm9vbCBpc1dlYWtDb25zdGFudCgpCkBAIC0zODUs
NiArNDMyLDggQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7
CiAgICAgICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoK
KyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICBjYXNlIFdlYWtKU0NvbnN0YW50
OgogICAgICAgICBjYXNlIFBoYW50b21Bcmd1bWVudHM6CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTQwMSw3ICs0NTAsMTIgQEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIHZvaWQgY29u
dmVydFRvQ29uc3RhbnQodW5zaWduZWQgY29uc3RhbnROdW1iZXIpCiAgICAgewotICAgICAgICBt
X29wID0gSlNDb25zdGFudDsKKyAgICAgICAgaWYgKGhhc0RvdWJsZVJlc3VsdCgpKQorICAgICAg
ICAgICAgbV9vcCA9IERvdWJsZUNvbnN0YW50OworICAgICAgICBlbHNlIGlmIChoYXNJbnQ1MlJl
c3VsdCgpKQorICAgICAgICAgICAgbV9vcCA9IEludDUyQ29uc3RhbnQ7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1fb3AgPSBKU0NvbnN0YW50OwogICAgICAgICBtX2ZsYWdzICY9IH4oTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVNaWdodENsb2JiZXIgfCBOb2RlQ2xvYmJlcnNXb3JsZCk7CiAg
ICAgICAgIG1fb3BJbmZvID0gY29uc3RhbnROdW1iZXI7CiAgICAgICAgIGNoaWxkcmVuLnJlc2V0
KCk7CkBAIC01MDIsNiArNTU2LDggQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFdlYWtK
U0NvbnN0YW50OgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUod2Vha0NvbnN0YW50KCkpOwog
ICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6Cisg
ICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgICAgIHJldHVybiBjb2RlQmxvY2st
PmNvbnN0YW50UmVnaXN0ZXIoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggKyBjb25zdGFudE51
bWJlcigpKS5nZXQoKTsKICAgICAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTc5NywzMiArODUzLDUyIEBAIHN0cnVjdCBOb2RlIHsK
ICAgICAKICAgICBib29sIGhhc1Jlc3VsdCgpCiAgICAgewotICAgICAgICByZXR1cm4gbV9mbGFn
cyAmIE5vZGVSZXN1bHRNYXNrOworICAgICAgICByZXR1cm4gISFyZXN1bHQoKTsKICAgICB9CiAK
ICAgICBib29sIGhhc0ludDMyUmVzdWx0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiAobV9mbGFn
cyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0SW50MzI7CisgICAgICAgIHJldHVybiBy
ZXN1bHQoKSA9PSBOb2RlUmVzdWx0SW50MzI7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzSW50
NTJSZXN1bHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdCgpID09IE5vZGVSZXN1bHRJ
bnQ1MjsKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNOdW1iZXJSZXN1bHQoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHROdW1i
ZXI7CisgICAgICAgIHJldHVybiByZXN1bHQoKSA9PSBOb2RlUmVzdWx0TnVtYmVyOworICAgIH0K
KyAgICAKKyAgICBib29sIGhhc0RvdWJsZVJlc3VsdCgpCisgICAgeworICAgICAgICByZXR1cm4g
cmVzdWx0KCkgPT0gTm9kZVJlc3VsdERvdWJsZTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNK
U1Jlc3VsdCgpCiAgICAgewotICAgICAgICByZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFz
aykgPT0gTm9kZVJlc3VsdEpTOworICAgICAgICByZXR1cm4gcmVzdWx0KCkgPT0gTm9kZVJlc3Vs
dEpTOwogICAgIH0KICAgICAKICAgICBib29sIGhhc0Jvb2xlYW5SZXN1bHQoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRCb29s
ZWFuOworICAgICAgICByZXR1cm4gcmVzdWx0KCkgPT0gTm9kZVJlc3VsdEJvb2xlYW47CiAgICAg
fQogCiAgICAgYm9vbCBoYXNTdG9yYWdlUmVzdWx0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiAo
bV9mbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0U3RvcmFnZTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdCgpID09IE5vZGVSZXN1bHRTdG9yYWdlOworICAgIH0KKyAgICAKKyAgICBV
c2VLaW5kIGRlZmF1bHRVc2VLaW5kKCkKKyAgICB7CisgICAgICAgIHJldHVybiB1c2VLaW5kRm9y
UmVzdWx0KHJlc3VsdCgpKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBkZWZhdWx0RWRnZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gRWRnZSh0aGlzLCBkZWZhdWx0VXNlS2luZCgpKTsKICAgICB9
CiAKICAgICBib29sIGlzSnVtcCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVGbGFncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlRmxhZ3MuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVGbGFncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDYg
KzQ3LDkgQEAgdm9pZCBkdW1wTm9kZUZsYWdzKFByaW50U3RyZWFtJiBhY3R1YWxPdQogICAgICAg
ICBjYXNlIE5vZGVSZXN1bHROdW1iZXI6CiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJO
dW1iZXIiKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5vZGVSZXN1bHREb3Vi
bGU6CisgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJEb3VibGUiKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIE5vZGVSZXN1bHRJbnQzMjoKICAgICAgICAgICAgIG91dC5w
cmludChjb21tYSwgIkludDMyIik7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzgsMTAgKzM4LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICNkZWZpbmUgTm9kZVJlc3VsdE1hc2sgICAgICAgICAgICAgICAgICAgMHgwMDA3CiAjZGVmaW5l
IE5vZGVSZXN1bHRKUyAgICAgICAgICAgICAgICAgICAgIDB4MDAwMQogI2RlZmluZSBOb2RlUmVz
dWx0TnVtYmVyICAgICAgICAgICAgICAgICAweDAwMDIKLSNkZWZpbmUgTm9kZVJlc3VsdEludDMy
ICAgICAgICAgICAgICAgICAgMHgwMDAzCi0jZGVmaW5lIE5vZGVSZXN1bHRJbnQ1MiAgICAgICAg
ICAgICAgICAgIDB4MDAwNAotI2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAgICAgICAgICAg
ICAweDAwMDUKLSNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgICAgICAgMHgwMDA2
CisjZGVmaW5lIE5vZGVSZXN1bHREb3VibGUgICAgICAgICAgICAgICAgIDB4MDAwMworI2RlZmlu
ZSBOb2RlUmVzdWx0SW50MzIgICAgICAgICAgICAgICAgICAweDAwMDQKKyNkZWZpbmUgTm9kZVJl
c3VsdEludDUyICAgICAgICAgICAgICAgICAgMHgwMDA1CisjZGVmaW5lIE5vZGVSZXN1bHRCb29s
ZWFuICAgICAgICAgICAgICAgIDB4MDAwNgorI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAg
ICAgICAgICAgICAweDAwMDcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAjZGVm
aW5lIE5vZGVNdXN0R2VuZXJhdGUgICAgICAgICAgICAgICAgIDB4MDAwOCAvLyBzZXQgb24gbm9k
ZXMgdGhhdCBoYXZlIHNpZGUgZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlhbGx5IGJlIHJlbW92
ZWQgYnkgRENFLgogI2RlZmluZSBOb2RlSGFzVmFyQXJncyAgICAgICAgICAgICAgICAgICAweDAw
MTAKQEAgLTExNCw2ICsxMTUsMTggQEAgc3RhdGljIGlubGluZSBib29sIG5vZGVDYW5TcGVjdWxh
dGVJbnQ1MgogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgaW5saW5lIE5vZGVGbGFncyBj
YW5vbmljYWxSZXN1bHRSZXByZXNlbnRhdGlvbihOb2RlRmxhZ3MgZmxhZ3MpCit7CisgICAgc3dp
dGNoIChmbGFncykgeworICAgIGNhc2UgTm9kZVJlc3VsdERvdWJsZToKKyAgICBjYXNlIE5vZGVS
ZXN1bHRJbnQ1MjoKKyAgICBjYXNlIE5vZGVSZXN1bHRTdG9yYWdlOgorICAgICAgICByZXR1cm4g
ZmxhZ3M7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRKUzsKKyAgICB9
Cit9CisKIHZvaWQgZHVtcE5vZGVGbGFncyhQcmludFN0cmVhbSYsIE5vZGVGbGFncyk7CiBNQUtF
X1BSSU5UX0FEQVBUT1IoTm9kZUZsYWdzRHVtcCwgTm9kZUZsYWdzLCBkdW1wTm9kZUZsYWdzKTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24g
MTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgLyogQSBjb25zdGFudCBpbiB0aGUgQ29kZUJsb2NrJ3MgY29uc3RhbnQgcG9vbC4g
Ki9cCiAgICAgbWFjcm8oSlNDb25zdGFudCwgTm9kZVJlc3VsdEpTIHwgTm9kZURvZXNOb3RFeGl0
KSBcCiAgICAgXAorICAgIC8qIENvbnN0YW50cyB3aXRoIHNwZWNpZmljIHJlcHJlc2VudGF0aW9u
cy4gKi9cCisgICAgbWFjcm8oRG91YmxlQ29uc3RhbnQsIE5vZGVSZXN1bHREb3VibGUgfCBOb2Rl
RG9lc05vdEV4aXQpIFwKKyAgICBtYWNybyhJbnQ1MkNvbnN0YW50LCBOb2RlUmVzdWx0SW50NTIg
fCBOb2RlRG9lc05vdEV4aXQpIFwKKyAgICBcCiAgICAgLyogQSBjb25zdGFudCBub3QgaW4gdGhl
IENvZGVCbG9jaydzIGNvbnN0YW50IHBvb2wuIFVzZXMgZ2V0IHBhdGNoZWQgdG8ganVtcHMgdGhh
dCBleGl0IHRoZSAqL1wKICAgICAvKiBjb2RlIGJsb2NrLiAqL1wKICAgICBtYWNybyhXZWFrSlND
b25zdGFudCwgTm9kZVJlc3VsdEpTIHwgTm9kZURvZXNOb3RFeGl0KSBcCkBAIC0xMDYsMTUgKzEx
MCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogVXNlZCB0byBi
b3ggdGhlIHJlc3VsdCBvZiBVUlNoaWZ0IG5vZGVzIChyZXN1bHQgaGFzIHJhbmdlIDAuLjJeMzIt
MSkuICovXAogICAgIG1hY3JvKFVJbnQzMlRvTnVtYmVyLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAg
ICAgXAotICAgIC8qIFVzZWQgdG8gY2FzdCBrbm93biBpbnRlZ2VycyB0byBkb3VibGVzLCBzbyBh
cyB0byBzZXBhcmF0ZSB0aGUgZG91YmxlIGZvcm0gKi9cCi0gICAgLyogb2YgdGhlIHZhbHVlIGZy
b20gdGhlIGludGVnZXIgZm9ybS4gKi9cCi0gICAgbWFjcm8oSW50MzJUb0RvdWJsZSwgTm9kZVJl
c3VsdE51bWJlcikgXAotICAgIC8qIFVzZWQgdG8gc3BlY3VsYXRlIHRoYXQgYSBkb3VibGUgdmFs
dWUgaXMgYWN0dWFsbHkgYW4gaW50ZWdlci4gKi9cCisgICAgLyogQXR0ZW1wdCB0byB0cnVuY2F0
ZSBhIGRvdWJsZSB0byBpbnQzMjsgdGhpcyB3aWxsIGV4aXQgaWYgaXQgY2FuJ3QgZG8gaXQuICov
XAogICAgIG1hY3JvKERvdWJsZUFzSW50MzIsIE5vZGVSZXN1bHRJbnQzMikgXAotICAgIC8qIFVz
ZWQgdG8gc2VwYXJhdGUgcmVwcmVzZW50YXRpb24gYW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gb2Yg
SW50NTIncyByZXByZXNlbnRlZCAqL1wKLSAgICAvKiBhcyB2YWx1ZXMuICovXAotICAgIG1hY3Jv
KEludDUyVG9WYWx1ZSwgTm9kZVJlc3VsdEpTKSBcCi0gICAgbWFjcm8oSW50NTJUb0RvdWJsZSwg
Tm9kZVJlc3VsdE51bWJlcikgXAorICAgIFwKKyAgICAvKiBDaGFuZ2UgdGhlIHJlcHJlc2VudGF0
aW9uIG9mIGEgdmFsdWUuICovXAorICAgIG1hY3JvKERvdWJsZVJlcCwgTm9kZVJlc3VsdERvdWJs
ZSkgXAorICAgIG1hY3JvKEludDUyUmVwLCBOb2RlUmVzdWx0SW50NTIpIFwKKyAgICBtYWNybyhW
YWx1ZVJlcCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBhcml0aG1l
dGljIG9wZXJhdGlvbnMuICovXAogICAgIG1hY3JvKEFyaXRoQWRkLCBOb2RlUmVzdWx0TnVtYmVy
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlcjMyXzY0LmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2OSw5ICsyNjksNyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3Qg
CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAg
ICAgIGNhc2UgSW5QYWlyOgotICAgICAgICBjYXNlIEluRlBSOgogICAgICAgICBjYXNlIERpc3Bs
YWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CiAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoCiAgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZywKICAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CkBAIC0yODYsNiArMjg0LDE0IEBAIHZvaWQg
T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbkZQUjoKKyAgICAgICAgY2FzZSBEb3VibGVEaXNw
bGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAg
ICAgICBtX2ppdC5sb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QwKTsK
KyAgICAgICAgICAgIG1faml0LnNhbml0aXplRG91YmxlKEZQUkluZm86OmZwUmVnVDApOworICAg
ICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgQXNzZW1ibHlIZWxw
ZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAg
IGNhc2UgVW5ib3hlZEludDMySW5HUFI6CiAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpT
U3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24gMTY3
MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsNyBAQCB2b2lkIE9TUkV4aXRDb21waWxl
cjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0
YWNrOgogICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgbV9qaXQu
bG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAg
ICBtX2ppdC5zYW5pdGl6ZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIG1f
aml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAg
ICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJl
c3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5MCw3
ICs0OTAsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXQ6Ci0gICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICAgICAgY2FzZSBEb3VibGVBc0lu
dDMyOgogICAgICAgICBjYXNlIEdldExvY2FsVW5saW5rZWQ6CiAgICAgICAgIGNhc2UgR2V0TXlB
cmd1bWVudHNMZW5ndGg6CkBAIC01MDQsMTEgKzUwMywxNSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JF
bnRlcjoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKLSAgICAgICAgY2FzZSBJbnQ1
MlRvVmFsdWU6Ci0gICAgICAgIGNhc2UgSW50NTJUb0RvdWJsZToKICAgICAgICAgY2FzZSBDaGVj
a0luQm91bmRzOgogICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKLSAgICAgICAgY2FzZSBIYXJk
UGhhbnRvbTogeworICAgICAgICBjYXNlIEhhcmRQaGFudG9tOgorICAgICAgICBjYXNlIERvdWJs
ZVJlcDoKKyAgICAgICAgY2FzZSBJbnQ1MlJlcDoKKyAgICAgICAgY2FzZSBWYWx1ZVJlcDoKKyAg
ICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50Ogor
ICAgICAgICBjYXNlIElkZW50aXR5OiB7CiAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxk
IG5ldmVyIGJlIHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxhdGlvbi4gSXQgaXMKICAg
ICAgICAgICAgIC8vIGluc2VydGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZvbGxvd3MgdGhpcyBwaGFz
ZS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MzUsMTAg
KzUzOCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24o
U3BlY0Jvb2xlYW4pOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBJZGVudGl0
eToKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUtPmNoaWxkMSgp
LT5wcmVkaWN0aW9uKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0KICNpZm5kZWYgTkRFQlVHCiAg
ICAgICAgIC8vIFRoZXNlIGdldCBpZ25vcmVkIGJlY2F1c2UgdGhleSBkb24ndCByZXR1cm4gYW55
dGhpbmcuCiAgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRh
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmhh
c1Jlc3VsdCgpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4
ICsgMSwgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwgRWRnZShub2RlKSk7CisgICAg
ICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5v
cmlnaW4sIG5vZGUtPmRlZmF1bHRFZGdlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZl
cnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw3ICsxOTIsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsIFNwZWNOb25lLCBNb3ZIaW50LCBOb2RlT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyh2YXJpYWJsZS0+bG9jYWwoKS5vZmZzZXQoKSks
IEVkZ2Uobm9kZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8odmFy
aWFibGUtPmxvY2FsKCkub2Zmc2V0KCkpLCBub2RlLT5kZWZhdWx0RWRnZSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KQEAgLTM1MCw3ICszNTAsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIFZhcmlh
YmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlLT5pc0NhcHR1cmVkKCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCku
c2V0Tm9kZShibG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkgPQorICAg
ICAgICAgICAgICAgICAgICAgICAgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kKHZhcmlh
YmxlLT5sb2NhbCgpKS0+ZGVmYXVsdEVkZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvUGhhbnRvbSgpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG9ubHkg
Zm9yIFVwc2lsb25zLiBBbiBVcHNpbG9uIHdpbGwgb25seSByZWZlciB0byBhCiAgICAgICAgICAg
ICAgICAgICAgIC8vIFBoYW50b21Mb2NhbCBpZiB0aGVyZSB3ZXJlIG5vIFNldExvY2FscyBvciBH
ZXRMb2NhbHMgaW4gdGhlIGJsb2NrLgpAQCAtMzYzLDcgKzM2NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlLT5pc0NhcHR1cmVkKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZh
dWx0RmxhZ3MoR2V0QXJndW1lbnQpOwotICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZs
YWdzKHJlc3VsdEZvcihub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKSkp
OworICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQocmVzdWx0Rm9yKG5vZGUtPnZh
cmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpKSk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw3ICs0Niw5IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChlZGdlLnVzZUtpbmQoKSkgewog
ICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgICAg
IGNhc2UgUmVhbE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAg
IGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAg
ICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgY2Fz
ZSBDZWxsVXNlOgpAQCAtNjEsNyArNjMsNiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgTm90Q2Vs
bFVzZToKICAgICAgICAgY2FzZSBPdGhlclVzZToKICAgICAgICAgY2FzZSBNaXNjVXNlOgotICAg
ICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBLbm93bkludDMyVXNlOgpAQCAtNjksMTEgKzcwLDYgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIG1fcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgICAg
IGlmIChtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgflNwZWNGdWxsTnVtYmVyKQotICAg
ICAgICAgICAgICAgIG1fcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgICAgICBpZiAobV9z
dGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIH5TcGVjQ2VsbCkKICAgICAgICAgICAgICAgICBt
X3Jlc3VsdCA9IGZhbHNlOwpAQCAtMTExLDYgKzEwNyw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3QKIAogICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgIGNh
c2UgSlNDb25zdGFudDoKKyAgICBjYXNlIERvdWJsZUNvbnN0YW50OgorICAgIGNhc2UgSW50NTJD
b25zdGFudDoKICAgICBjYXNlIFdlYWtKU0NvbnN0YW50OgogICAgIGNhc2UgSWRlbnRpdHk6CiAg
ICAgY2FzZSBUb1RoaXM6CkBAIC0xMzcsNyArMTM1LDYgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFi
c3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQml0VVJTaGlmdDoKICAgICBjYXNlIFZhbHVl
VG9JbnQzMjoKICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgotICAgIGNhc2UgSW50MzJUb0RvdWJs
ZToKICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgY2FzZSBBcml0aEFkZDoKICAgICBjYXNl
IEFyaXRoU3ViOgpAQCAtMjQyLDggKzIzOSw2IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBD
aGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgIGNhc2UgTG9vcEhpbnQ6Ci0gICAgY2FzZSBJbnQ1
MlRvRG91YmxlOgotICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgIGNhc2UgU3RvcmVCYXJyaWVy
OgogICAgIGNhc2UgU3RvcmVCYXJyaWVyV2l0aE51bGxDaGVjazoKICAgICBjYXNlIEludmFsaWRh
dGlvblBvaW50OgpAQCAtMjU1LDYgKzI1MCw5IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNl
dDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CisgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICBj
YXNlIERvdWJsZVJlcDoKKyAgICBjYXNlIEludDUyUmVwOgogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgCiAgICAgY2FzZSBHZXRCeVZhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTY3
MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDIwICsxMzQsNiBAQCBib29sIFNwZWN1bGF0aXZl
SklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkCiAgICAgfQogCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNE
b3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7Ci0gICAgICAgIEZQUlJlZyBvbGRG
UFIgPSBpbmZvLmZwcigpOwotICAgICAgICBtX2ZwcnMubG9jayhvbGRGUFIpOwotICAgICAgICB0
YWdHUFIgPSBhbGxvY2F0ZSgpOwotICAgICAgICBwYXlsb2FkR1BSID0gYWxsb2NhdGUoKTsKLSAg
ICAgICAgYm94RG91YmxlKG9sZEZQUiwgdGFnR1BSLCBwYXlsb2FkR1BSKTsKLSAgICAgICAgbV9m
cHJzLnVubG9jayhvbGRGUFIpOwotICAgICAgICBtX2ZwcnMucmVsZWFzZShvbGRGUFIpOwotICAg
ICAgICBtX2dwcnMucmV0YWluKHRhZ0dQUiwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySlMp
OwotICAgICAgICBtX2dwcnMucmV0YWluKHBheWxvYWRHUFIsIHZpcnR1YWxSZWdpc3RlciwgU3Bp
bGxPcmRlckpTKTsKLSAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIHRhZ0dQUiwg
cGF5bG9hZEdQUiwgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
CiAgICAgY2FzZSBEYXRhRm9ybWF0SlM6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAg
ICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CkBAIC0xNjAsNiArMTQ2LDcgQEAgYm9vbCBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZAogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBE
YXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgIC8v
IHRoaXMgdHlwZSBjdXJyZW50bHkgbmV2ZXIgb2NjdXJzCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAKQEAgLTc1NiwxMiArNzQzLDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZv
cm1hdCgpKSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewotICAgICAgICBpZiAoaW5mby5z
cGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKLSAgICAgICAgICAgIHRlcm1pbmF0
ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKLSAg
ICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKLSAgICAgICAgICAgIHJl
dHVybiBhbGxvY2F0ZSgpOwotICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBpZiAoZWRnZS0+
aGFzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgQVNTRVJUKGlzSW50MzJDb25zdGFudChlZGdl
Lm5vZGUoKSkpOwogICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CkBAIC04MTMs
NyArNzk0LDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAg
ICAgICByZXR1cm4gZ3ByOwogICAgIH0KIAotICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAg
ICBjYXNlIERhdGFGb3JtYXRDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CkBAIC04MjMsNiArODAzLDcgQEAgR1BSUmVnIFNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRh
Rm9ybWF0SW50MzI7CiAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogCisgICAgY2FzZSBEYXRh
Rm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTg0NSwxMzYgKzgyNiwz
NCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAKIEZQUlJlZyBT
cGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlIGVkZ2UpCiB7Ci0gICAgQWJz
dHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7Ci0gICAgU3BlY3VsYXRl
ZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKLSAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0g
S25vd25OdW1iZXJVc2UgfHwgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpKTsKLSAg
ICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3BlY0Z1bGxOdW1iZXIpOworICAgIEFTU0VS
VChpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOworICAgIEFTU0VSVChlZGdlLT5oYXNEb3VibGVS
ZXN1bHQoKSk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZp
cnR1YWxSZWdpc3RlcigpOwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbklu
Zm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CiAKICAgICBpZiAoaW5mby5y
ZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXROb25lKSB7CiAKICAgICAgICAgaWYgKGVkZ2Ut
Pmhhc0NvbnN0YW50KCkpIHsKLSAgICAgICAgICAgIGlmIChpc0ludDMyQ29uc3RhbnQoZWRnZS5u
b2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0gICAg
ICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tMzIodmFsdWVPZkludDMy
Q29uc3RhbnQoZWRnZS5ub2RlKCkpKSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBtX2dwcnMucmV0
YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyQ29uc3RhbnQpOwotICAgICAgICAg
ICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgICAgICB1
bmxvY2soZ3ByKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOdW1iZXJDb25zdGFudChlZGdl
Lm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsK
LSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKGFkZHJlc3NPZkRvdWJsZUNvbnN0YW50
KGVkZ2Uubm9kZSgpKSwgZnByKTsKLSAgICAgICAgICAgICAgICBtX2ZwcnMucmV0YWluKGZwciwg
dmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyQ29uc3RhbnQpOwotICAgICAgICAgICAgICAgIGlu
Zm8uZmlsbERvdWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZw
cjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGVybWluYXRlU3BlY3Vs
YXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwotICAgICAgICAg
ICAgICAgIHJldHVybiBmcHJBbGxvY2F0ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3Jt
YXQoKTsKLSAgICAgICAgICAgIEFTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8
IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMik7Ci0gICAgICAgICAgICBpZiAoc3BpbGxG
b3JtYXQgPT0gRGF0YUZvcm1hdEpTRG91YmxlIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRE
b3VibGUpIHsKLSAgICAgICAgICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAg
ICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlciksIGZwcik7Ci0gICAgICAgICAgICAgICAgbV9mcHJzLnJldGFpbihmcHIs
IHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwotICAgICAgICAgICAgICAgIGlu
Zm8uZmlsbERvdWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZw
cjsKLSAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNOdW1iZXJD
b25zdGFudChlZGdlLm5vZGUoKSkpOwogICAgICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9j
YXRlKCk7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBoYXNVbmJveGVkRG91YmxlOwot
Ci0gICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgIT0gRGF0YUZvcm1hdEpTSW50MzIgJiYgc3Bp
bGxGb3JtYXQgIT0gRGF0YUZvcm1hdEludDMyKSB7Ci0gICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCBKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpJbnQzMlRhZykpOwotICAgICAgICAgICAgICAgIGlmICh0eXBlICYgflNwZWNGdWxsTnVt
YmVyKQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSksIGVkZ2Us
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIEpJVENvbXBpbGVy
Ojp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRh
ZykpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7Ci0gICAgICAgICAgICAgICAgaGFzVW5ib3hl
ZERvdWJsZSA9IG1faml0Lmp1bXAoKTsKLQotICAgICAgICAgICAgICAgIGlzSW50ZWdlci5saW5r
KCZtX2ppdCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1faml0LmNvbnZlcnRJbnQz
MlRvRG91YmxlKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7
Ci0KLSAgICAgICAgICAgIGlmIChoYXNVbmJveGVkRG91YmxlLmlzU2V0KCkpCi0gICAgICAgICAg
ICAgICAgaGFzVW5ib3hlZERvdWJsZS5saW5rKCZtX2ppdCk7Ci0KLSAgICAgICAgICAgIG1fZnBy
cy5yZXRhaW4oZnByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKKyAgICAg
ICAgICAgIG1faml0LmxvYWREb3VibGUoYWRkcmVzc09mRG91YmxlQ29uc3RhbnQoZWRnZS5ub2Rl
KCkpLCBmcHIpOworICAgICAgICAgICAgbV9mcHJzLnJldGFpbihmcHIsIHZpcnR1YWxSZWdpc3Rl
ciwgU3BpbGxPcmRlckNvbnN0YW50KTsKICAgICAgICAgICAgIGluZm8uZmlsbERvdWJsZSgqbV9z
dHJlYW0sIGZwcik7Ci0gICAgICAgICAgICBpbmZvLmtpbGxTcGlsbGVkKCk7CiAgICAgICAgICAg
ICByZXR1cm4gZnByOwogICAgICAgICB9Ci0gICAgfQotCi0gICAgc3dpdGNoIChpbmZvLnJlZ2lz
dGVyRm9ybWF0KCkpIHsKLSAgICBjYXNlIERhdGFGb3JtYXRKUzoKLSAgICBjYXNlIERhdGFGb3Jt
YXRKU0ludDMyOiB7Ci0gICAgICAgIEdQUlJlZyB0YWdHUFIgPSBpbmZvLnRhZ0dQUigpOwotICAg
ICAgICBHUFJSZWcgcGF5bG9hZEdQUiA9IGluZm8ucGF5bG9hZEdQUigpOworICAgICAgICAKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3Vi
bGUpOwogICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLQotICAgICAgICBtX2dw
cnMubG9jayh0YWdHUFIpOwotICAgICAgICBtX2dwcnMubG9jayhwYXlsb2FkR1BSKTsKLQotICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBoYXNVbmJveGVkRG91YmxlOwotCi0gICAgICAgIGlmIChp
bmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1hdEpTSW50MzIpIHsKLSAgICAgICAgICAg
IEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB0YWdH
UFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgICAgICAgICAgaWYgKHR5
cGUgJiB+U3BlY0Z1bGxOdW1iZXIpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBlZGdlLCBtX2ppdC5icmFu
Y2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpMb3dlc3RUYWcpKSk7Ci0gICAgICAgICAgICB1bmJveERvdWJsZSh0YWdHUFIsIHBh
eWxvYWRHUFIsIGZwciwgc2NyYXRjaC5mcHIoKSk7Ci0gICAgICAgICAgICBoYXNVbmJveGVkRG91
YmxlID0gbV9qaXQuanVtcCgpOwotICAgICAgICAgICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsK
LSAgICAgICAgfQotCi0gICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBheWxvYWRH
UFIsIGZwcik7Ci0KLSAgICAgICAgaWYgKGhhc1VuYm94ZWREb3VibGUuaXNTZXQoKSkKLSAgICAg
ICAgICAgIGhhc1VuYm94ZWREb3VibGUubGluaygmbV9qaXQpOwotCi0gICAgICAgIG1fZ3Bycy5y
ZWxlYXNlKHRhZ0dQUik7Ci0gICAgICAgIG1fZ3Bycy5yZWxlYXNlKHBheWxvYWRHUFIpOwotICAg
ICAgICBtX2dwcnMudW5sb2NrKHRhZ0dQUik7Ci0gICAgICAgIG1fZ3Bycy51bmxvY2socGF5bG9h
ZEdQUik7Ci0gICAgICAgIG1fZnBycy5yZXRhaW4oZnByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxs
T3JkZXJEb3VibGUpOworICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7CisgICAgICAgIG1fZnBycy5yZXRhaW4oZnBy
LCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKICAgICAgICAgaW5mby5maWxs
RG91YmxlKCptX3N0cmVhbSwgZnByKTsKLSAgICAgICAgaW5mby5raWxsU3BpbGxlZCgpOwogICAg
ICAgICByZXR1cm4gZnByOwogICAgIH0KIAotICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOiB7Ci0g
ICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICBHUFJSZWcgZ3ByID0g
aW5mby5ncHIoKTsKLSAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKLSAgICAgICAgbV9qaXQuY29u
dmVydEludDMyVG9Eb3VibGUoZ3ByLCBmcHIpOwotICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7
Ci0gICAgICAgIHJldHVybiBmcHI7Ci0gICAgfQotCi0gICAgY2FzZSBEYXRhRm9ybWF0SlNEb3Vi
bGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7Ci0gICAgICAgIEZQUlJlZyBmcHIgPSBp
bmZvLmZwcigpOwotICAgICAgICBtX2ZwcnMubG9jayhmcHIpOwotICAgICAgICByZXR1cm4gZnBy
OwotICAgIH0KLQotICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0
U3RvcmFnZToKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIGNh
c2UgRGF0YUZvcm1hdENlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2Ug
RGF0YUZvcm1hdEJvb2xlYW46Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOgotICAgICAg
ICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgMCk7Ci0gICAgICAgIHJldHVybiBmcHJBbGxvY2F0ZSgpOwotCi0gICAgZGVmYXVsdDoKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEludmFs
aWRGUFJSZWc7Ci0gICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKGluZm8ucmVnaXN0ZXJGb3JtYXQo
KSA9PSBEYXRhRm9ybWF0RG91YmxlKTsKKyAgICBGUFJSZWcgZnByID0gaW5mby5mcHIoKTsKKyAg
ICBtX2ZwcnMubG9jayhmcHIpOworICAgIHJldHVybiBmcHI7CiB9CiAKIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSBlZGdlKQpAQCAtOTg4LDcgKzg2Nyw3IEBA
IEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKIAogICAgIHN3aXRjaCAo
aW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewotICAg
ICAgICBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMiB8fCBpbmZvLnNw
aWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgeworICAgICAgICBpZiAoaW5mby5zcGls
bEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMikgewogICAgICAgICAgICAgdGVybWluYXRlU3Bl
Y3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAg
ICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgICAgIH0KQEAgLTEwNTIsMTIgKzkzMSwxMiBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICBjYXNlIERhdGFG
b3JtYXRKU0RvdWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNCb29sZWFuOgogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CiAgICAgICAgIHRl
cm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAw
KTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAKKyAgICBjYXNlIERhdGFGb3JtYXREb3Vi
bGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIApAQCAtMTA3Nyw3ICs5NTYsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQo
KSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgaWYgKGluZm8uc3BpbGxG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50MzIgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFG
b3JtYXREb3VibGUpIHsKKyAgICAgICAgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0SW50MzIpIHsKICAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0
ZSgpOwogICAgICAgICB9CkBAIC0xMTMzLDEyICsxMDEyLDEyIEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICBjYXNlIERhdGFGb3JtYXRKU0ludDMyOgogICAg
IGNhc2UgRGF0YUZvcm1hdEludDMyOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgotICAg
IGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CiAgICAg
Y2FzZSBEYXRhRm9ybWF0Q2VsbDoKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRp
b24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAgICByZXR1cm4gYWxsb2Nh
dGUoKTsKIAorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRT
dG9yYWdlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCkBAIC0xMTQ4
LDI4ICsxMDI3LDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAog
ICAgIH0KIH0KIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRUb0Rv
dWJsZShKU1ZhbHVlT3BlcmFuZCYgb3AsIEZQUlJlZyByZXN1bHQpCi17Ci0gICAgRlBSVGVtcG9y
YXJ5IHNjcmF0Y2godGhpcyk7Ci0KLSAgICBHUFJSZWcgb3BQYXlsb2FkR1BSID0gb3AucGF5bG9h
ZEdQUigpOwotICAgIEdQUlJlZyBvcFRhZ0dQUiA9IG9wLnRhZ0dQUigpOwotICAgIEZQUlJlZyBz
Y3JhdGNoRlBSID0gc2NyYXRjaC5mcHIoKTsKLQotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50
ZWdlciA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgb3BUYWdHUFIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIG5v
dE51bWJlciA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9w
UGF5bG9hZEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpOwotCi0gICAgdW5i
b3hEb3VibGUob3BUYWdHUFIsIG9wUGF5bG9hZEdQUiwgcmVzdWx0LCBzY3JhdGNoRlBSKTsKLSAg
ICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwotCi0gICAgaXNJbnRlZ2Vy
LmxpbmsoJm1faml0KTsKLSAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcFBheWxvYWRH
UFIsIHJlc3VsdCk7Ci0KLSAgICBkb25lLmxpbmsoJm1faml0KTsKLQotICAgIHJldHVybiBub3RO
dW1iZXI7Ci19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCYXNlVmFsdWVTdG9yZUJh
cnJpZXIoRWRnZSYgYmFzZUVkZ2UsIEVkZ2UmIHZhbHVlRWRnZSkKIHsKICNpZiBFTkFCTEUoR0dD
KQpAQCAtMTU0Nyw3ICsxNDA0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2lj
YWxOb3QoTgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIE51bWJl
clVzZTogeworICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJs
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBGUFJUZW1wb3Jh
cnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhp
cyk7CkBAIC0xNjc2LDcgKzE1MzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNo
KE5vZGUqIG5vCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgY2FzZSBOdW1iZXJV
c2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEludDMyVXNlKSB7CiAgICAgICAgICAg
ICBib29sIGludmVydCA9IGZhbHNlOwpAQCAtMTgxNyw2ICsxNjc0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgc3dpdGNoIChvcCkgewogICAgIGNh
c2UgSlNDb25zdGFudDoKKyAgICBjYXNlIERvdWJsZUNvbnN0YW50OgogICAgICAgICBpbml0Q29u
c3RhbnRJbmZvKG5vZGUpOwogICAgICAgICBicmVhazsKIApAQCAtMTk3OCwxNCArMTgzNiw2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgogICAgICAgICBjYXNlIEZsdXNoZWRBcmd1bWVu
dHM6IHsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIo
bm9kZS0+Y2hpbGQxKCktPnZpcnR1YWxSZWdpc3RlcigpKS5yZWdpc3RlckZvcm1hdCgpID09IERh
dGFGb3JtYXREb3VibGUpIHsKLSAgICAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwot
ICAgICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHZhbHVlLmZwcigpLCBKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcihub2RlLT5tYWNoaW5lTG9jYWwoKSkpOwotICAgICAgICAgICAgICAgIG5v
UmVzdWx0KG5vZGUpOwotICAgICAgICAgICAgICAgIHJlY29yZFNldExvY2FsKERhdGFGb3JtYXRE
b3VibGUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgCiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlLnBheWxvYWRHUFIoKSwgSklUQ29t
cGlsZXI6OnBheWxvYWRGb3Iobm9kZS0+bWFjaGluZUxvY2FsKCkpKTsKICAgICAgICAgICAgIG1f
aml0LnN0b3JlMzIodmFsdWUudGFnR1BSKCksIEpJVENvbXBpbGVyOjp0YWdGb3Iobm9kZS0+bWFj
aGluZUxvY2FsKCkpKTsKQEAgLTIwNzcsOCArMTkyNywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0g
ICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7Ci0gICAgICAgIGNvbXBpbGVJbnQzMlRvRG91YmxlKG5v
ZGUpOworICAgIGNhc2UgRG91YmxlUmVwOiB7CisgICAgICAgIGNvbXBpbGVEb3VibGVSZXAobm9k
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBWYWx1ZVJlcDog
eworICAgICAgICBjb21waWxlVmFsdWVSZXAobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICAgICAgCkBAIC0yMTUxLDcgKzIwMDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAg
ICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICAKQEAg
LTIxOTMsNyArMjA0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBjYXNl
IE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAg
U3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwpAQCAtNDc0NSw4ICs0
NjAwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNh
c2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAg
IGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKLSAgICBjYXNlIEludDUyVG9Eb3VibGU6Ci0g
ICAgY2FzZSBJbnQ1MlRvVmFsdWU6CisgICAgY2FzZSBJbnQ1MlJlcDoKKyAgICBjYXNlIEludDUy
Q29uc3RhbnQ6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgogICAgIGNhc2UgQXJpdGhJTXVsOgog
ICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA2LDIxICsxMDYsOSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxK
U1ZhbHVlKEVkZ2UgCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKLSAgICAgICAg
ICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOiB7Ci0gICAgICAgICAgICAgICAgbV9qaXQu
bG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0g
ICAgICAgICAgICAgICAgYm94SW50NTIoZ3ByLCBncHIsIHNwaWxsRm9ybWF0KTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBp
ZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAgICAgICAgICAgICAgICAg
ICAvLyBOZWVkIHRvIGJveCB0aGUgZG91YmxlLCBzaW5jZSB3ZSB3YW50IGEgSlNWYWx1ZS4KLSAg
ICAgICAgICAgICAgICAgICAgbV9qaXQuc3ViNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyLCBncHIpOwotICAgICAgICAgICAgICAgICAgICBzcGlsbEZvcm1hdCA9IERhdGFGb3JtYXRK
U0RvdWJsZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUo
Km1fc3RyZWFtLCBncHIsIHNwaWxsRm9ybWF0KTsKQEAgLTE0MywyOCArMTMxLDYgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAogICAgICAgICByZXR1cm4gZ3ByOwog
ICAgIH0KIAotICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZTogewotICAgICAgICBGUFJSZWcgZnBy
ID0gaW5mby5mcHIoKTsKLSAgICAgICAgR1BSUmVnIGdwciA9IGJveERvdWJsZShmcHIpOwotCi0g
ICAgICAgIC8vIFVwZGF0ZSBhbGwgaW5mbwotICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0
cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNEb3VibGUpOwotICAgICAgICBtX2ZwcnMucmVsZWFzZShm
cHIpOwotICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9y
ZGVySlMpOwotCi0gICAgICAgIHJldHVybiBncHI7Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNl
IERhdGFGb3JtYXRJbnQ1MjoKLSAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjogewotICAg
ICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgbG9jayhncHIpOwotICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gYWxsb2NhdGUoKTsKLSAgICAgICAgYm94SW50NTIoZ3ByLCBy
ZXN1bHRHUFIsIGluZm8ucmVnaXN0ZXJGb3JtYXQoKSk7Ci0gICAgICAgIHVubG9jayhncHIpOwot
ICAgICAgICByZXR1cm4gcmVzdWx0R1BSOwotICAgIH0KLQogICAgIGNhc2UgRGF0YUZvcm1hdENl
bGw6CiAgICAgICAgIC8vIE5vIHJldGFnIHJlcXVpcmVkIG9uIEpTVkFMVUU2NCEKICAgICBjYXNl
IERhdGFGb3JtYXRKUzoKQEAgLTE3OSw2ICsxNDUsOCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAgIAogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46
CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6
CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgICAgIC8vIHRoaXMgdHlwZSBjdXJyZW50
bHkgbmV2ZXIgb2NjdXJzCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIApAQCAtNzY5LDEyICs3MzcsNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVJbnQzCiAgICAgCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsK
ICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAgICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0
KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRp
dmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwotICAgICAgICAgICAg
cmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOwotICAgICAgICAgICAgcmV0dXJuIGFsbG9j
YXRlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCiAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0
ZSgpOwogCiAgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CkBAIC03ODgsNyArNzUw
LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICAK
ICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAg
ICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRK
UykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyIHx8IHNwaWxsRm9ybWF0ID09IERh
dGFGb3JtYXRJbnQ1MiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMik7CiAgICAgICAgIAogICAgICAgICBtX2dwcnMu
cmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAgICAgICAg
IApAQCAtODA5LDM2ICs3NzEsNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVJbnQzCiAgICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SlNJbnQzMjsKICAg
ICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHNwaWxsRm9ybWF0
ID09IERhdGFGb3JtYXRJbnQ1MiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50
NTIpIHsKLSAgICAgICAgICAgIC8vIEdlbmVyYWxseSwgdGhpcyBjYW4gb25seSBoYXBwZW4gaWYg
d2UndmUgYWxyZWFkeSBwcm92ZWQgdGhhdCB0aGUKLSAgICAgICAgICAgIC8vIHZhbHVlIGlzIGFu
IGludDMyLiBUaGF0J3MgYmVjYXVzZSBpZiBhIHZhbHVlIG9yaWdpbmF0ZWQgYXMgYSBKU1ZhbHVl
Ci0gICAgICAgICAgICAvLyB0aGVuIHdlIHdvdWxkIHNwZWN1bGF0ZSB0aGF0IGl0J3MgYW4gaW50
MzIgYmVmb3JlIHJlcHJlc2VudGluZyBpdCBhcwotICAgICAgICAgICAgLy8gYW4gaW50NTIuIE90
aGVyd2lzZSwgaWYgd2Uga25vd2luZ2x5IHByb2R1Y2VkIGFuIGludDUyLCB0aGVuIHdlIHdvdWxk
Ci0gICAgICAgICAgICAvLyBiZSBib3hpbmcgaXQgaW50byBhIHZhbHVlIHVzaW5nIEludDUyVG9W
YWx1ZS4gVGhpcyBhc3NlcnRpb24gaXMgdmFsaWQKLSAgICAgICAgICAgIC8vIG9ubHkgYmVjYXVz
ZSBJbnQ1MiBpcyBzb21ldGhpbmcgdGhhdCB3ZSBpbnRyb2R1Y2UgYXQgcHJlZGljdGlvbiB0aW1l
LgotICAgICAgICAgICAgLy8gSG93ZXZlcjogd2UgbWF5IGhhdmUgYW4gaW50MzItcHJvZHVjaW5n
IG5vZGUgcmVwbGFjZWQgYnkgYW4KLSAgICAgICAgICAgIC8vIGludDUyLXByb2R1Y2luZyBub2Rl
IGR1ZSB0byBDU0UuIFNvIHdlIG11c3QgZG8gYSBjaGVjay4KLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCEodHlwZSAmIH5TcGVjTWFjaGluZUludCkpOwotICAgICAgICAgICAgaWYgKHR5cGUg
JiBTcGVjSW50NTIpIHsKLSAgICAgICAgICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9jYXRlKCk7
Ci0gICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoZ3ByLCB0ZW1wKTsKLSAg
ICAgICAgICAgICAgICAvLyBDdXJyZW50bHksIHdlIGNhbid0IHN1cHBseSB2YWx1ZSBwcm9maWxp
bmcgaW5mb3JtYXRpb24gaGVyZS4gOi0vCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
aygKLSAgICAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBn
cHIsIHRlbXApKTsKLSAgICAgICAgICAgICAgICB1bmxvY2sodGVtcCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKQot
ICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
bV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdw
cik7Ci0gICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OmludDUyU2hpZnRBbW91bnQpLCBncHIpOwotICAgICAgICAgICAgICAgIG1faml0Lnplcm9FeHRl
bmQzMlRvUHRyKGdwciwgZ3ByKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluZm8uZmls
bEludDMyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFG
b3JtYXRJbnQzMjsKLSAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgIH0KICAgICAgICAg
bV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdw
cik7CiAKICAgICAgICAgLy8gRmlsbCBhcyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJvdWdoLgpAQCAt
ODk3LDQ3ICs4MjksNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQz
CiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIERhdGFGb3Jt
YXRTdHJpY3RJbnQ1MjoKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjogewotICAgICAgICBHUFJS
ZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJlc3VsdDsKLSAgICAgICAgRGF0
YUZvcm1hdCBvbGRGb3JtYXQgPSBpbmZvLnJlZ2lzdGVyRm9ybWF0KCk7Ci0gICAgICAgIGlmICht
X2dwcnMuaXNMb2NrZWQoZ3ByKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gYWxsb2NhdGUoKTsK
LSAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgbG9jayhncHIpOwotICAgICAgICAgICAgaW5mby5maWxsSW50MzIoKm1fc3Ry
ZWFtLCBncHIpOwotICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOwotICAgICAgICB9Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKCEodHlwZSAmIH5TcGVjTWFjaGluZUludCkpOwotICAgICAgICBpZiAo
b2xkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikKLSAgICAgICAgICAgIG1faml0LnJzaGlmdDY0
KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgcmVzdWx0KTsKLSAgICAg
ICAgaWYgKHR5cGUgJiBTcGVjSW50NTIpIHsKLSAgICAgICAgICAgIEdQUlJlZyB0ZW1wID0gYWxs
b2NhdGUoKTsKLSAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdCwgdGVt
cCk7Ci0gICAgICAgICAgICAvLyBDdXJyZW50bHksIHdlIGNhbid0IHN1cHBseSB2YWx1ZSBwcm9m
aWxpbmcgaW5mb3JtYXRpb24gaGVyZS4gOi0vCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KAotICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZXN1bHQsIHRl
bXApKTsKLSAgICAgICAgICAgIHVubG9jayh0ZW1wKTsKLSAgICAgICAgfQotICAgICAgICBtX2pp
dC56ZXJvRXh0ZW5kMzJUb1B0cihyZXN1bHQsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybkZvcm1h
dCA9IERhdGFGb3JtYXRJbnQzMjsKLSAgICAgICAgcmV0dXJuIGdwcjsKLSAgICB9Ci0KLSAgICBj
YXNlIERhdGFGb3JtYXREb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6IHsKLSAg
ICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkgJiYgaXNJbnQzMkNvbnN0YW50KGVkZ2Uubm9k
ZSgpKSkgewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAg
ICBBU1NFUlQoaXNJbnQzMkNvbnN0YW50KGVkZ2Uubm9kZSgpKSk7Ci0gICAgICAgICAgICBtX2pp
dC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW0zMih2YWx1ZU9mSW50MzJDb25zdGFudChlZGdlLm5v
ZGUoKSkpLCBncHIpOwotICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMy
OwotICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgfQotICAgICAgICBGQUxMVEhST1VH
SDsKLSAgICB9CisgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9y
bWF0Q2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgogICAgIGNhc2UgRGF0YUZvcm1h
dEpTQ2VsbDoKQEAgLTk0Nyw3ICs4MzksMTAgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlSW50MwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CiAKKyAgICBj
YXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBj
YXNlIERhdGFGb3JtYXRJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgCiAgICAgZGVmYXVs
dDoKQEAgLTk3NiwxNCArODcxLDEzIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZUludDUKIHsKICAgICBBU1NFUlQoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIg
fHwgZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpOwogICAgIEFic3RyYWN0
VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwotICAgIFNwZWN1bGF0ZWRUeXBl
IHR5cGUgPSB2YWx1ZS5tX3R5cGU7CiAgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNw
ZWNNYWNoaW5lSW50KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gZWRn
ZS0+dmlydHVhbFJlZ2lzdGVyKCk7CiAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0
aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKIAogICAgIHN3aXRj
aCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewot
ICAgICAgICBpZiAoKGVkZ2UtPmhhc0NvbnN0YW50KCkgJiYgIXZhbHVlT2ZKU0NvbnN0YW50KGVk
Z2Uubm9kZSgpKS5pc01hY2hpbmVJbnQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFG
b3JtYXREb3VibGUpIHsKKyAgICAgICAgaWYgKChlZGdlLT5oYXNDb25zdGFudCgpICYmICF2YWx1
ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSkuaXNNYWNoaW5lSW50KCkpKSB7CiAgICAgICAgICAg
ICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICAgICAgfQpAQCAtMTAw
NCw4MiArODk4LDIxIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDUK
ICAgICAgICAgCiAgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9y
bWF0KCk7CiAgICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBE
YXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMiB8fCBzcGlsbEZv
cm1hdCA9PSBEYXRhRm9ybWF0SW50NTIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmlj
dEludDUyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1h
dEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7CiAgICAgICAg
IAogICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVy
U3BpbGxlZCk7CiAgICAgICAgIAotICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1h
dEpTSW50MzIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKSB7Ci0gICAgICAgICAg
ICAvLyBJZiB3ZSBrbm93IHRoaXMgd2FzIHNwaWxsZWQgYXMgYW4gaW50ZWdlciB3ZSBjYW4gZmls
bCB3aXRob3V0IGNoZWNraW5nLgotICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBtX2ppdC5z
aWduRXh0ZW5kMzJUb1B0cihncHIsIGdwcik7Ci0gICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1h
dCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpIHsKLSAgICAgICAgICAgICAgICBpbmZvLmZpbGxT
dHJpY3RJbnQ1MigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdwcjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbElu
dDUyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MiB8fCBzcGlsbEZvcm1h
dCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpIHsKLSAgICAgICAgICAgIG1faml0LmxvYWQ2NChK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAg
ICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikKLSAgICAgICAgICAg
ICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRB
bW91bnQpLCBncHIpOwotICAgICAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDUyKCptX3N0
cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKLSAg
ICAgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJT
aGlmdEFtb3VudCksIGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0s
IGdwcik7Ci0gICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICB9CiAgICAgICAgIG1faml0
LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwot
Ci0gICAgICAgIC8vIEZpbGwgYXMgSlNWYWx1ZSwgYW5kIGZhbGwgdGhyb3VnaC4KLSAgICAgICAg
aW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTSW50MzIpOwotICAg
ICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0gICAgICAgIEZBTExUSFJPVUdIOwotICAgIH0KLQot
ICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7Ci0gICAgICAgIC8vIENoZWNrIHRoZSB2YWx1ZSBpcyBh
biBpbnRlZ2VyLiBOb3RlIHRoYXQgd2Ugd291bGQgKmxpa2UqIHRvIHVuYm94IGFuIEludDUyCi0g
ICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgYnV0IHRoaXMgaXMgdG9vIGNvc3RseS4gV2Ugb25seSAq
cHJvdmUqIHRoYXQgdGhpcyBpcyBhbiBJbnQ1MgotICAgICAgICAvLyBldmVuIHRob3VnaCB3ZSBj
aGVjayBpZiBpdCdzIGFuIGludDMyLgotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsK
LSAgICAgICAgR1BSUmVnIHJlc3VsdDsKLSAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChncHIp
KSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQu
bW92ZShncHIsIHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2dwcnMu
bG9jayhncHIpOwotICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOwotICAgICAgICB9Ci0gICAgICAg
IGlmICh0eXBlICYgflNwZWNJbnQzMikKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVJlZ3MocmVzdWx0KSwgZWRnZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3Nl
bWJsZXI6OkJlbG93LCByZXN1bHQsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwot
ICAgICAgICBpZiAocmVzdWx0ID09IGdwcikgLy8gVGhlIG5vdC1hbHJlYWR5LWxvY2tlZCwgc28g
ZmlsbCBpbi1wbGFjZSwgY2FzZS4KLSAgICAgICAgICAgIGluZm8uZmlsbEludDUyKCptX3N0cmVh
bSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKLSAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIo
cmVzdWx0LCByZXN1bHQpOwotICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0
SW50NTIpCi0gICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
aW50NTJTaGlmdEFtb3VudCksIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
fQotCi0gICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQz
MjogewotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJl
c3VsdDsKLSAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAg
ICAgICAgaW5mby5maWxsSW50NTIoKm1fc3RyZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOwotICAg
ICAgICAgICAgcmVzdWx0ID0gZ3ByOworICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRh
Rm9ybWF0U3RyaWN0SW50NTIpIHsKKyAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRh
Rm9ybWF0SW50NTIpCisgICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxs
U3RyaWN0SW50NTIoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAg
ICAgICAgfQotICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHQsIHJlc3VsdCk7
Ci0gICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikKLSAgICAgICAg
ICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50
KSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgaWYgKHNwaWxsRm9y
bWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKKyAgICAgICAgICAgIG1faml0LmxzaGlmdDY0
KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgZ3ByKTsKKyAgICAgICAg
aW5mby5maWxsSW50NTIoKm1fc3RyZWFtLCBncHIpOworICAgICAgICByZXR1cm4gZ3ByOwogICAg
IH0KIAogICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOiB7CkBAIC0xMTE2LDMxICs5NDks
NiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ1CiAgICAgICAgIHJl
dHVybiBncHI7CiAgICAgfQogCi0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgotICAgIGNhc2Ug
RGF0YUZvcm1hdEpTRG91YmxlOgotICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewot
ICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2Rl
KCkpOwotICAgICAgICAgICAgaWYgKGpzVmFsdWUuaXNNYWNoaW5lSW50KCkpIHsKLSAgICAgICAg
ICAgICAgICBpbnQ2NF90IHZhbHVlID0ganNWYWx1ZS5hc01hY2hpbmVJbnQoKTsKLSAgICAgICAg
ICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCi0gICAgICAgICAg
ICAgICAgICAgIHZhbHVlID0gdmFsdWUgPDwgSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudDsKLSAg
ICAgICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgICAgICBt
X2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW02NCh2YWx1ZSksIGdwcik7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBGQUxM
VEhST1VHSDsKLSAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEJv
b2xlYW46Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEpT
Qm9vbGVhbjogewotICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwotICAg
IH0KLQotICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOwpAQCAt
MTE0OSwxMCArOTU3LDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50
NQogCiBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUoRWRnZSBlZGdl
KQogewotICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwot
ICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7Ci0gICAgQVNTRVJUKGVkZ2Uu
dXNlS2luZCgpICE9IEtub3duTnVtYmVyVXNlIHx8ICEodmFsdWUubV90eXBlICYgflNwZWNGdWxs
TnVtYmVyKSk7Ci0gICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNGdWxsTnVtYmVy
KTsKKyAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNlIHx8IGVkZ2UudXNl
S2luZCgpID09IERvdWJsZVJlcFJlYWxVc2UpOworICAgIEFTU0VSVChlZGdlLT5oYXNEb3VibGVS
ZXN1bHQoKSk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZp
cnR1YWxSZWdpc3RlcigpOwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbklu
Zm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CiAKQEAgLTExNjAsMTcgKzk2
Niw2IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAgICAgICAg
aWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxv
Y2F0ZSgpOwogCi0gICAgICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KGVkZ2Uubm9kZSgpKSkg
ewotICAgICAgICAgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICAg
ICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHJlaW50ZXJwcmV0RG91Ymxl
VG9JbnQ2NChzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlT2ZJbnQzMkNvbnN0YW50KGVkZ2Uubm9k
ZSgpKSkpKSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlNjRUb0RvdWJsZShncHIs
IGZwcik7Ci0gICAgICAgICAgICAgICAgdW5sb2NrKGdwcik7Ci0KLSAgICAgICAgICAgICAgICAv
LyBEb24ndCBmaWxsIGRvdWJsZSBoZXJlIHNpbmNlIHRoYXQgd2lsbCBsZWFkIHRvIGNvbmZ1c2lv
bjogdGhlCi0gICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgYWxsb2NhdG9yIHdpbGwgbm93IHRo
aW5rIHRoYXQgdGhpcyBpcyBhIGRvdWJsZSB3aGlsZQotICAgICAgICAgICAgICAgIC8vIGV2ZXJ5
b25lIGVsc2UgdGhpbmtzIGl0J3MgYW4gaW50ZWdlci4KLSAgICAgICAgICAgICAgICByZXR1cm4g
ZnByOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlzTnVtYmVyQ29uc3RhbnQoZWRn
ZS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7
CiAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tNjQocmVpbnRl
cnByZXREb3VibGVUb0ludDY0KHZhbHVlT2ZOdW1iZXJDb25zdGFudChlZGdlLm5vZGUoKSkpKSwg
Z3ByKTsKQEAgLTExODYsMTU5ICs5ODEsMTggQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlRG91YgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBEYXRhRm9ybWF0IHNw
aWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwotICAgICAgICBzd2l0Y2ggKHNwaWxsRm9y
bWF0KSB7Ci0gICAgICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZTogewotICAgICAgICAgICAgRlBS
UmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJ
VENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7Ci0gICAgICAgICAg
ICBtX2ZwcnMucmV0YWluKGZwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyRG91YmxlKTsK
LSAgICAgICAgICAgIGluZm8uZmlsbERvdWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgICAg
ICByZXR1cm4gZnByOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBEYXRh
Rm9ybWF0SW50MzI6IHsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVy
LCBTcGlsbE9yZGVyU3BpbGxlZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8u
ZmlsbEludDMyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIERh
dGFGb3JtYXRJbnQ1MjogewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0g
ICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVy
U3BpbGxlZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbEludDUyKCpt
X3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIERhdGFGb3JtYXRTdHJp
Y3RJbnQ1MjogewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0gICAgICAg
ICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxl
ZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDUyKCpt
X3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgR1BSUmVnIGdw
ciA9IGFsbG9jYXRlKCk7Ci0KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNwaWxsRm9ybWF0
ICYgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFs
UmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAgICAgICAgIG1faml0LmxvYWQ2NChK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAg
ICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwotICAgICAg
ICAgICAgdW5sb2NrKGdwcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7Ci0gICAgY2FzZSBEYXRhRm9y
bWF0Tm9uZTogLy8gU2hvdWxkIGhhdmUgZmlsbGVkLCBhYm92ZS4KLSAgICBjYXNlIERhdGFGb3Jt
YXRCb29sZWFuOiAvLyBUaGlzIHR5cGUgbmV2ZXIgb2NjdXJzLgotICAgIGNhc2UgRGF0YUZvcm1h
dFN0b3JhZ2U6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBj
YXNlIERhdGFGb3JtYXRDZWxsOgotICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlv
bihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgIHJldHVybiBmcHJBbGxv
Y2F0ZSgpOwotCi0gICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1h
dEpTOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogewotICAgICAgICBHUFJSZWcganNW
YWx1ZUdwciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGpzVmFsdWVHcHIpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKTsK
ICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgIEdQUlJlZyB0ZW1w
R3ByID0gYWxsb2NhdGUoKTsKLQotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIg
PSBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBqc1ZhbHVlR3By
LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotCi0gICAgICAgIGlmICh0eXBlICYg
flNwZWNGdWxsTnVtYmVyKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBK
U1ZhbHVlUmVncyhqc1ZhbHVlR3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCBqc1ZhbHVlR3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIp
KTsKLQotICAgICAgICAvLyBGaXJzdCwgaWYgd2UgZ2V0IGhlcmUgd2UgaGF2ZSBhIGRvdWJsZSBl
bmNvZGVkIGFzIGEgSlNWYWx1ZQotICAgICAgICBtX2ppdC5tb3ZlKGpzVmFsdWVHcHIsIHRlbXBH
cHIpOwotICAgICAgICB1bmJveERvdWJsZSh0ZW1wR3ByLCBmcHIpOwotICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBoYXNVbmJveGVkRG91YmxlID0gbV9qaXQuanVtcCgpOwotCi0gICAgICAgIC8v
IEZpbmFsbHksIGhhbmRsZSBpbnRlZ2Vycy4KLSAgICAgICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0
KTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUoanNWYWx1ZUdwciwgZnByKTsK
LSAgICAgICAgaGFzVW5ib3hlZERvdWJsZS5saW5rKCZtX2ppdCk7Ci0KLSAgICAgICAgbV9ncHJz
LnJlbGVhc2UoanNWYWx1ZUdwcik7Ci0gICAgICAgIG1fZ3Bycy51bmxvY2soanNWYWx1ZUdwcik7
Ci0gICAgICAgIG1fZ3Bycy51bmxvY2sodGVtcEdwcik7CisgICAgICAgIG1faml0LmxvYWREb3Vi
bGUoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZnByKTsKICAgICAg
ICAgbV9mcHJzLnJldGFpbihmcHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7
CiAgICAgICAgIGluZm8uZmlsbERvdWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgIGluZm8u
a2lsbFNwaWxsZWQoKTsKICAgICAgICAgcmV0dXJuIGZwcjsKICAgICB9CiAKLSAgICBjYXNlIERh
dGFGb3JtYXRKU0ludDMyOgotICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOiB7Ci0gICAgICAgIEZQ
UlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIo
KTsKLSAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDMy
VG9Eb3VibGUoZ3ByLCBmcHIpOwotICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0gICAgICAg
IHJldHVybiBmcHI7Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQ1Mjog
ewotICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BSUmVnIGdw
ciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgIEdQUlJl
ZyB0ZW1wID0gYWxsb2NhdGUoKTsKLSAgICAgICAgbV9qaXQubW92ZShncHIsIHRlbXApOwotICAg
ICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3Vu
dCksIHRlbXApOwotICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZSh0ZW1wLCBmcHIp
OwotICAgICAgICB1bmxvY2sodGVtcCk7Ci0gICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKLSAg
ICAgICAgcmV0dXJuIGZwcjsKLSAgICB9Ci0gICAgICAgIAotICAgIGNhc2UgRGF0YUZvcm1hdFN0
cmljdEludDUyOiB7Ci0gICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAg
ICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKLSAg
ICAgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUoZ3ByLCBmcHIpOwotICAgICAgICBtX2dw
cnMudW5sb2NrKGdwcik7Ci0gICAgICAgIHJldHVybiBmcHI7Ci0gICAgfQotCi0gICAgLy8gVW5i
b3ggdGhlIGRvdWJsZQotICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOiB7Ci0gICAgICAgIEdQ
UlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUo
KTsKLSAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7Ci0gICAgICAgICAgICAvLyBN
YWtlIHN1cmUgd2UgZG9uJ3QgdHJhbXBsZSBncHIgaWYgaXQgaXMgaW4gdXNlLgotICAgICAgICAg
ICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQubW92ZShncHIs
IHRlbXApOwotICAgICAgICAgICAgdW5ib3hEb3VibGUodGVtcCwgZnByKTsKLSAgICAgICAgICAg
IHVubG9jayh0ZW1wKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB1bmJveERvdWJsZShn
cHIsIGZwcik7Ci0KLSAgICAgICAgbV9ncHJzLnJlbGVhc2UoZ3ByKTsKLSAgICAgICAgbV9mcHJz
LnJldGFpbihmcHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7Ci0KLSAgICAg
ICAgaW5mby5maWxsRG91YmxlKCptX3N0cmVhbSwgZnByKTsKLSAgICAgICAgcmV0dXJuIGZwcjsK
LSAgICB9Ci0KLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6IHsKLSAgICAgICAgRlBSUmVnIGZw
ciA9IGluZm8uZnByKCk7Ci0gICAgICAgIG1fZnBycy5sb2NrKGZwcik7Ci0gICAgICAgIHJldHVy
biBmcHI7Ci0gICAgfQotICAgICAgICAKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gSW52YWxpZEZQUlJlZzsKLSAgICB9
CisgICAgUkVMRUFTRV9BU1NFUlQoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXRE
b3VibGUpOworICAgIEZQUlJlZyBmcHIgPSBpbmZvLmZwcigpOworICAgIG1fZnBycy5sb2NrKGZw
cik7CisgICAgcmV0dXJuIGZwcjsKIH0KIAogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlQ2VsbChFZGdlIGVkZ2UpCkBAIC0xMzUyLDExICsxMDA2LDYgQEAgR1BSUmVnIFNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVy
Rm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAgICAgIGlmIChpbmZv
LnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9
PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4
ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgICAgICByZXR1
cm4gYWxsb2NhdGUoKTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgR1BSUmVnIGdwciA9
IGFsbG9jYXRlKCk7CiAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKQEAgLTE0
MDUsMTYgKzEwNTQsMTYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2Vs
bAogICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6
CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91Ymxl
OgogICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRCb29s
ZWFuOgotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0cmlj
dEludDUyOiB7CisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjogewogICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAg
ICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KIAorICAgIGNhc2UgRGF0YUZvcm1hdERv
dWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdElu
dDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgogICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTQzMyw3ICsx
MDgyLDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogCiAgICAg
c3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25l
OiB7Ci0gICAgICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyIHx8
IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7CisgICAgICAgIGlmIChp
bmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyKSB7CiAgICAgICAgICAgICB0ZXJt
aW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7
CiAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICAgICAgfQpAQCAtMTQ4NywxNiAr
MTEzNiwxNSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICBj
YXNlIERhdGFGb3JtYXRKU0RvdWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Ci0gICAgY2Fz
ZSBEYXRhRm9ybWF0SW50NTI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKICAg
ICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIDApOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKLSAgICB9CiAgICAgICAgIAor
ICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgor
ICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUy
OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAKICAgICBk
ZWZhdWx0OgpAQCAtMTUwNSwyNiArMTE1Myw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUJvb2wKICAgICB9CiB9CiAKLUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZl
SklUOjpjb252ZXJ0VG9Eb3VibGUoR1BSUmVnIHZhbHVlLCBGUFJSZWcgcmVzdWx0LCBHUFJSZWcg
dG1wKQotewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDY0
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHZhbHVlLCBHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdE51bWJlciA9IG1f
aml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgdmFsdWUsIEdQUkluZm86OnRh
Z1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgCi0gICAgbV9qaXQubW92ZSh2YWx1ZSwgdG1wKTsK
LSAgICB1bmJveERvdWJsZSh0bXAsIHJlc3VsdCk7Ci0gICAgCi0gICAgSklUQ29tcGlsZXI6Okp1
bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLSAgICAKLSAgICBpc0ludGVnZXIubGluaygmbV9qaXQp
OwotICAgIAotICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHZhbHVlLCByZXN1bHQpOwot
ICAgIAotICAgIGRvbmUubGluaygmbV9qaXQpOwotCi0gICAgcmV0dXJuIG5vdE51bWJlcjsKLX0K
LQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJhc2VWYWx1ZVN0b3JlQmFycmllcihFZGdl
JiBiYXNlRWRnZSwgRWRnZSYgdmFsdWVFZGdlKQogewogI2lmIEVOQUJMRShHR0MpCkBAIC0xOTIx
LDcgKzE1NDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdChOCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgTnVtYmVyVXNlOiB7Cisg
ICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwpAQCAtMjA2MCw3ICsx
Njg4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlKiBubwogICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBJbnQzMlVzZToKLSAgICBjYXNlIE51bWJlclVzZTogeworICAg
IGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gSW50MzJVc2UpIHsKICAgICAgICAgICAgIGJvb2wgaW52ZXJ0ID0gZmFsc2U7CiAgICAg
ICAgICAgICAKQEAgLTIxNTMsNiArMTc4MSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6
CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAg
ICAgIGluaXRDb25zdGFudEluZm8obm9kZSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0yNDAwLDI0
ICsyMDMwLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEludDMyVG9Eb3VibGU6IHsK
LSAgICAgICAgY29tcGlsZUludDMyVG9Eb3VibGUobm9kZSk7CisgICAgY2FzZSBEb3VibGVSZXA6
IHsKKyAgICAgICAgY29tcGlsZURvdWJsZVJlcChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgICAgICAKLSAgICBjYXNlIEludDUyVG9WYWx1ZTogewotICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3BlcmFuZCk7Ci0gICAgICAgIG1faml0Lm1vdmUob3BlcmFu
ZC5ncHIoKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3By
KCksIG5vZGUpOworICAgIGNhc2UgVmFsdWVSZXA6IHsKKyAgICAgICAgY29tcGlsZVZhbHVlUmVw
KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50NTJU
b0RvdWJsZTogewotICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJhbmQodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wZXJh
bmQpOwotICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKG9wZXJhbmQuZnByKCksIHJlc3VsdC5mcHIo
KSk7Ci0gICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOworICAgIGNhc2Ug
SW50NTJSZXA6IHsKKyAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wZXJhbmQodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNl
LCBvcGVyYW5kKTsKKyAgICAgICAgCisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKG9w
ZXJhbmQuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIAorICAgICAgICBzdHJpY3RJbnQ1
MlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
ICAgIApAQCAtMjQ4Niw3ICsyMTE1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAg
ICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgCkBA
IC0yNTI0LDcgKzIxNTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY2Fz
ZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAg
IFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
ICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lv
biAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDggKzMzMiw2IEBAIFNpbGVudFJlZ2lzdGVyU2F2
ZVBsYW4gU3BlY3VsYXRpdmVKSVQ6OnMKICAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09
IERhdGFGb3JtYXRJbnQ1MikgewogICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkKICAg
ICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRJbnQ1MkNvbnN0YW50OwotICAgICAgICBlbHNlIGlm
IChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0g
RGF0YUZvcm1hdEpTKQotICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQzMlBheWxvYWRDb252
ZXJ0VG9JbnQ1MjsKICAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFG
b3JtYXRJbnQ1MikKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CiAgICAgICAgIGVs
c2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpCkBAIC0z
NDEsMTcgKzMzOSwxMiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpz
CiAgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkK
ICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CiAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMg
YW4gaW50MzIgd2lsbCBuZXZlcgotICAgICAgICAgICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxs
IChpbW1lZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRvdWJsZSAodG8tZG91YmxlCi0gICAgICAgICAg
ICAvLyBjb252ZXJzaW9ucyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9kZSkuCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExv
YWQ2NDsgLy8gTWFrZSBHQ0MgaGFwcHkuCiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHJlZ2lz
dGVyRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewogICAgICAgICBpZiAobm9kZS0+
aGFzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRTdHJpY3RJbnQ1MkNv
bnN0YW50OwotICAgICAgICBlbHNlIGlmIChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8
fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKQotICAgICAgICAgICAgZmlsbEFj
dGlvbiA9IExvYWQzMlBheWxvYWRTaWduRXh0ZW5kOwogICAgICAgICBlbHNlIGlmIChpbmZvLnNw
aWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDUyKQogICAgICAgICAgICAgZmlsbEFjdGlvbiA9
IExvYWQ2NFNoaWZ0SW50NTJSaWdodDsKICAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1h
dCgpID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKQEAgLTM1OSw5ICszNTIsNiBAQCBTaWxlbnRS
ZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAgIGVsc2UgaWYgKGluZm8u
c3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkKICAgICAgICAgICAgIGZpbGxBY3Rpb24g
PSBMb2FkNjQ7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhh
cHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMgYW4gaW50MzIgd2lsbCBuZXZlcgotICAg
ICAgICAgICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBv
ciBhIGRvdWJsZSAodG8tZG91YmxlCi0gICAgICAgICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZl
IGEgc2VwYXJhdGUgbm9kZSkuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsgLy8gTWFrZSBHQ0MgaGFwcHku
CiAgICAgICAgIH0KQEAgLTM3Niw5ICszNjYsNiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNw
ZWN1bGF0aXZlSklUOjpzCiAgICAgICAgIH0gZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09
IERhdGFGb3JtYXRJbnQzMikgewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ID09
IERhdGFGb3JtYXRKU0ludDMyKTsKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkMzJQYXls
b2FkQm94SW50OwotICAgICAgICB9IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRh
Rm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnaXN0ZXJGb3JtYXQgPT0gRGF0
YUZvcm1hdEpTRG91YmxlKTsKLSAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkRG91YmxlQm94
RG91YmxlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7
CiAjZWxzZQpAQCAtNDM0LDE0ICs0MjEsMTIgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVj
dWxhdGl2ZUpJVDo6cwogICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgIEFT
U0VSVChpc051bWJlckNvbnN0YW50KG5vZGUpKTsKICAgICAgICAgZmlsbEFjdGlvbiA9IFNldERv
dWJsZUNvbnN0YW50OwotICAgIH0gZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpICE9IERhdGFG
b3JtYXROb25lICYmIGluZm8uc3BpbGxGb3JtYXQoKSAhPSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0g
ICAgICAgIC8vIGl0IHdhcyBhbHJlYWR5IHNwaWxsZWQgcHJldmlvdXNseSBhbmQgbm90IGFzIGEg
ZG91YmxlLCB3aGljaCBtZWFucyB3ZSBuZWVkIHVuYm94aW5nLgotICAgICAgICBBU1NFUlQoaW5m
by5zcGlsbEZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgZmlsbEFjdGlvbiA9IExv
YWRKU1VuYm94RG91YmxlOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VS
VChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUgfHwgaW5mby5zcGlsbEZvcm1h
dCgpID09IERhdGFGb3JtYXREb3VibGUpOwogICAgICAgICBmaWxsQWN0aW9uID0gTG9hZERvdWJs
ZTsKKyAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIEFTU0VSVChpbmZvLnJlZ2lz
dGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSB8fCBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdEpTRG91YmxlKTsKKyAgICBBU1NFUlQoaW5mby5yZWdpc3RlckZvcm1hdCgp
ID09IERhdGFGb3JtYXREb3VibGUpOwogICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKSB7CiAg
ICAgICAgIEFTU0VSVChpc051bWJlckNvbnN0YW50KG5vZGUpKTsKICAgICAgICAgZmlsbEFjdGlv
biA9IFNldERvdWJsZUNvbnN0YW50OwpAQCAtNTI4LDE0ICs1MTMsNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdw
cigpKTsKICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocGxhbi5ncHIoKSwgcGxhbi5n
cHIoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTG9hZERvdWJsZUJveERvdWJsZToKLSAg
ICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52
aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwotICAgICAgICBtX2ppdC5zdWI2NChHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHBsYW4uZ3ByKCkpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIExvYWRKU1VuYm94RG91YmxlOgotICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29t
cGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgY2FuVHJh
bXBsZSk7Ci0gICAgICAgIHVuYm94RG91YmxlKGNhblRyYW1wbGUsIHBsYW4uZnByKCkpOwotICAg
ICAgICBicmVhazsKICNlbHNlCiAgICAgY2FzZSBTZXRKU0NvbnN0YW50VGFnOgogICAgICAgICBt
X2ppdC5tb3ZlKEltbTMyKHZhbHVlT2ZKU0NvbnN0YW50KHBsYW4ubm9kZSgpKS50YWcoKSksIHBs
YW4uZ3ByKCkpOwpAQCAtMTAzOSw2ICsxMDE2LDI5IEBAIEdQUlRlbXBvcmFyeTo6R1BSVGVtcG9y
YXJ5KAogfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKK0pTVmFsdWVSZWdzVGVtcG9y
YXJ5OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeSgpIHsgfQorCitKU1ZhbHVlUmVnc1RlbXBvcmFyeTo6
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqIGppdCkKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIDogbV9ncHIoaml0KQorI2Vsc2UKKyAgICA6IG1fcGF5bG9hZEdQUihqaXQpCisg
ICAgLCBtX3RhZ0dQUihqaXQpCisjZW5kaWYKK3sKK30KKworSlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6
On5KU1ZhbHVlUmVnc1RlbXBvcmFyeSgpIHsgfQorCitKU1ZhbHVlUmVncyBKU1ZhbHVlUmVnc1Rl
bXBvcmFyeTo6cmVncygpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gSlNWYWx1
ZVJlZ3MobV9ncHIuZ3ByKCkpOworI2Vsc2UKKyAgICByZXR1cm4gSlNWYWx1ZVJlZ3MobV90YWdH
UFIuZ3ByKCksIG1fcGF5bG9hZEdQUi5ncHIoKSk7CisjZW5kaWYKK30KKwogdm9pZCBHUFJUZW1w
b3Jhcnk6OmFkb3B0KEdQUlRlbXBvcmFyeSYgb3RoZXIpCiB7CiAgICAgQVNTRVJUKCFtX2ppdCk7
CkBAIC0xMjU4LDEwICsxMjU4LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVw
SG9sZUJyYW4KICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAg
ICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBj
b25kaXRpb24pOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGVsc2UgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUlu
dDUyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVz
ZSkpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2Up
KQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKG5vZGUsIGJyYW5jaE5v
ZGUsIGRvdWJsZUNvbmRpdGlvbik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQ29t
cGFyZUVxKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1Vz
ZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkgewpAQCAtMTgxNywx
NiArMTgxNywxMyBAQCBHZW5lcmF0ZWRPcGVyYW5kVHlwZSBTcGVjdWxhdGl2ZUpJVDo6Y2hlCiAg
ICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTOgogICAgIGNh
c2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAg
ICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRKU1ZhbHVlOwogCiAgICAgY2FzZSBEYXRhRm9y
bWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICAgICAgcmV0dXJuIEdl
bmVyYXRlZE9wZXJhbmRJbnRlZ2VyOwogCi0gICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0g
ICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgotICAgICAgICByZXR1cm4gR2VuZXJhdGVkT3BlcmFu
ZERvdWJsZTsKLSAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRUeXBlVW5rbm93
bjsKQEAgLTE4NDUsNyArMTg0Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZVRvSW50MzIKICAgICB9CiAgICAgICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY2FzZSBN
YWNoaW5lSW50VXNlOiB7CisgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICBTcGVjdWxh
dGVTdHJpY3RJbnQ1Mk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsKICAgICAgICAgR1BSUmVnIG9w
MUdQUiA9IG9wMS5ncHIoKTsKQEAgLTE4NTUsNiArMTg1MiwxOSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYg
Ly8gVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgCisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBGUFJSZWcgZnByID0g
b3AxLmZwcigpOworICAgICAgICBHUFJSZWcgZ3ByID0gcmVzdWx0LmdwcigpOworICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RUcnVuY2F0ZWRUb0ludGVnZXIgPSBtX2ppdC5icmFuY2hUcnVu
Y2F0ZURvdWJsZVRvSW50MzIoZnByLCBncHIsIEpJVENvbXBpbGVyOjpCcmFuY2hJZlRydW5jYXRl
RmFpbGVkKTsKKyAgICAgICAgCisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChub3RUcnVuY2F0ZWRUb0ludGVnZXIsIHRoaXMsIHRvSW50MzIsIGdwciwgZnByKSk7Cisg
ICAgICAgIAorICAgICAgICBpbnQzMlJlc3VsdChncHIsIG5vZGUpOworICAgICAgICByZXR1cm47
CisgICAgfQogICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgTm90Q2VsbFVzZTog
ewpAQCAtMTg2NiwxOCArMTg3Niw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZVRvSW50MzIKICAgICAgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSwgb3Ax
LmZvcm1hdCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBjYXNl
IEdlbmVyYXRlZE9wZXJhbmREb3VibGU6IHsKLSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgICAgIEZQ
UlJlZyBmcHIgPSBvcDEuZnByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gcmVzdWx0Lmdw
cigpOwotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90VHJ1bmNhdGVkVG9JbnRlZ2Vy
ID0gbV9qaXQuYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKGZwciwgZ3ByLCBKSVRDb21waWxl
cjo6QnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChub3RUcnVuY2F0ZWRUb0ludGVnZXIsIHRo
aXMsIHRvSW50MzIsIGdwciwgZnByKSk7Ci0KLSAgICAgICAgICAgIGludDMyUmVzdWx0KGdwciwg
bm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBHZW5l
cmF0ZWRPcGVyYW5kSlNWYWx1ZTogewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMjA2Niw3MCArMjA2NCwxMzggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUFzSW50MwogICAgIGludDMyUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91
YmxlKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKE5v
ZGUqIG5vZGUpCiB7Ci0gICAgQVNTRVJUKCFpc0ludDMyQ29uc3RhbnQobm9kZS0+Y2hpbGQxKCku
bm9kZSgpKSk7IC8vIFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBjb25zdGFudCBmb2xkZWQuCisgICAg
c3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIE51bWJlclVzZTog
eworICAgICAgICBBU1NFUlQoIWlzTnVtYmVyQ29uc3RhbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7IC8vIFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBjb25zdGFudCBmb2xkZWQuCiAgICAgCi0gICAg
aWYgKGlzSW50MzJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dHlwZSkpIHsKLSAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5j
aGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgRlBSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxLmdw
cigpLCByZXN1bHQuZnByKCkpOwotICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBu
b2RlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxh
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkpIHsKKyAgICAgICAg
ICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOworICAgICAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxLmdwcigpLCBy
ZXN1bHQuZnByKCkpOworICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9k
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAKLSAgICBKU1ZhbHVlT3Bl
cmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
Ci0gICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
ICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOwogCi0gICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKLSAgICBHUFJSZWcgdGVt
cEdQUiA9IHRlbXAuZ3ByKCk7Ci0gICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsK
KyAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHRlbXBH
UFIgPSB0ZW1wLmdwcigpOworICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigp
OwogICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDY0
KAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcDFHUFIsIEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50
ZWdlciA9IG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogICAgIAot
ICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIpKSB7
Ci0gICAgICAgIHR5cGVDaGVjaygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5v
ZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFRl
c3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIpKTsKLSAgICB9CisgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGls
ZDEoKSwgU3BlY0J5dGVjb2RlTnVtYmVyKSkgeworICAgICAgICAgICAgdHlwZUNoZWNrKAorICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjQnl0
ZWNvZGVOdW1iZXIsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwor
ICAgICAgICB9CiAgICAgCi0gICAgbV9qaXQubW92ZShvcDFHUFIsIHRlbXBHUFIpOwotICAgIHVu
Ym94RG91YmxlKHRlbXBHUFIsIHJlc3VsdEZQUik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9u
ZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHRlbXBHUFIpOwor
ICAgICAgICB1bmJveERvdWJsZSh0ZW1wR1BSLCByZXN1bHRGUFIpOworICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgIAotICAgIGlzSW50ZWdlci5saW5r
KCZtX2ppdCk7Ci0gICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxR1BSLCByZXN1bHRG
UFIpOwotICAgIGRvbmUubGluaygmbV9qaXQpOwotI2Vsc2UKLSAgICBGUFJUZW1wb3JhcnkgdGVt
cCh0aGlzKTsKKyAgICAgICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsKKyAgICAgICAgbV9qaXQu
Y29udmVydEludDMyVG9Eb3VibGUob3AxR1BSLCByZXN1bHRGUFIpOworICAgICAgICBkb25lLmxp
bmsoJm1faml0KTsKKyNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpIC0+IHRoaXMgaXMgdGhlIDMyXzY0
IGNhc2UKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgCi0gICAgR1BSUmVn
IG9wMVRhZ0dQUiA9IG9wMS50YWdHUFIoKTsKLSAgICBHUFJSZWcgb3AxUGF5bG9hZEdQUiA9IG9w
MS5wYXlsb2FkR1BSKCk7Ci0gICAgRlBSUmVnIHRlbXBGUFIgPSB0ZW1wLmZwcigpOwotICAgIEZQ
UlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CisgICAgICAgIEdQUlJlZyBvcDFUYWdHUFIg
PSBvcDEudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyBvcDFQYXlsb2FkR1BSID0gb3AxLnBheWxv
YWRHUFIoKTsKKyAgICAgICAgRlBSUmVnIHRlbXBGUFIgPSB0ZW1wLmZwcigpOworICAgICAgICBG
UFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigpOwogICAgIAotICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKAorICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpJbnQzMlRhZykpOwogICAgIAotICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGls
ZDEoKSwgU3BlY0Z1bGxOdW1iZXIpKSB7Ci0gICAgICAgIHR5cGVDaGVjaygKLSAgICAgICAgICAg
IEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBT
cGVjRnVsbE51bWJlciwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRh
ZykpKTsKLSAgICB9CisgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwg
U3BlY0J5dGVjb2RlTnVtYmVyKSkgeworICAgICAgICAgICAgdHlwZUNoZWNrKAorICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxk
MSgpLCBTcGVjQnl0ZWNvZGVOdW1iZXIsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6TG93ZXN0VGFnKSkpOworICAgICAgICB9CiAgICAgCi0gICAgdW5ib3hEb3VibGUob3Ax
VGFnR1BSLCBvcDFQYXlsb2FkR1BSLCByZXN1bHRGUFIsIHRlbXBGUFIpOwotICAgIEpJVENvbXBp
bGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgIHVuYm94RG91YmxlKG9wMVRh
Z0dQUiwgb3AxUGF5bG9hZEdQUiwgcmVzdWx0RlBSLCB0ZW1wRlBSKTsKKyAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAKLSAgICBpc0ludGVnZXIubGlu
aygmbV9qaXQpOwotICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMVBheWxvYWRHUFIs
IHJlc3VsdEZQUik7Ci0gICAgZG9uZS5saW5rKCZtX2ppdCk7Ci0jZW5kaWYKKyAgICAgICAgaXNJ
bnRlZ2VyLmxpbmsoJm1faml0KTsKKyAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUo
b3AxUGF5bG9hZEdQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7Cisj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAKLSAgICBkb3VibGVSZXN1bHQocmVzdWx0RlBS
LCBub2RlKTsKKyAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdEZQUiwgbm9kZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBJ
bnQ1MlJlcFVzZTogeworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OworICAgICAgICAKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAg
ICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CisKKyAgICAgICAgbV9qaXQuY29u
dmVydEludDY0VG9Eb3VibGUodmFsdWVHUFIsIHJlc3VsdEZQUik7CisgICAgICAgIAorICAgICAg
ICBkb3VibGVSZXN1bHQocmVzdWx0RlBSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorICAgICAgICAKKyAgICBkZWZhdWx0OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
fQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVSZXAoTm9kZSogbm9kZSkKK3sK
KyAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNhc2UgRG91Ymxl
UmVwVXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7
CisgICAgICAgIAorICAgICAgICBGUFJSZWcgdmFsdWVGUFIgPSB2YWx1ZS5mcHIoKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyNpZiBDUFUoWDg2
KQorICAgICAgICAvLyBUaGlzIGlzIHByZXR0eSBhbm5veWluZyAtIGJveERvdWJsZSgpIG9uIFg4
NiBjbG9iYmVycyB0aGUgc291cmNlLiBUaGF0J3Mga2luZGEgZ3Jvc3MuCisgICAgICAgIEZQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKHZhbHVlRlBSLCB0
ZW1wLmZwcigpKTsKKyAgICAgICAgdmFsdWVGUFIgPSB0ZW1wLmZwcigpOworI2VuZGlmCisgICAg
ICAgIAorICAgICAgICBib3hEb3VibGUodmFsdWVGUFIsIHJlc3VsdFJlZ3MpOworICAgICAgICAK
KyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIEludDUyUmVw
VXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAg
ICAgIAorICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgCisgICAgICAgIGJveEludDUy
KHZhbHVlR1BSLCByZXN1bHRHUFIsIERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7CisgICAgICAgIAor
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgCisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KIH0KIAogc3RhdGljIGRvdWJsZSBjbGFtcERvdWJsZVRvQnl0ZShkb3VibGUgZCkKQEAg
LTIzMjAsNyArMjM4Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckkKICAgICAgICAgfQogICAgICAgICAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
Y2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAgICAg
ICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNl
KTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICAgICAg
R1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOwpAQCAtMjM0NCw3ICsyNDEwLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySQogICAgICAgICB9CiAjZW5k
aWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVz
ZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgaWYgKGlzQ2xh
bXBlZCh0eXBlKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50U2l6ZSh0eXBlKSA9
PSAxKTsKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlT3AodGhp
cywgdmFsdWVVc2UpOwpAQCAtMjQ0MCwxMCArMjUwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbE9uRmwKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90TmFOID0gbV9qaXQu
YnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbCwgcmVzdWx0UmVnLCByZXN1
bHRSZWcpOwotICAgIHN0YXRpYyBjb25zdCBkb3VibGUgTmFOID0gUU5hTjsKLSAgICBtX2ppdC5s
b2FkRG91YmxlKCZOYU4sIHJlc3VsdFJlZyk7Ci0gICAgbm90TmFOLmxpbmsoJm1faml0KTsKKyAg
ICBtX2ppdC5zYW5pdGl6ZURvdWJsZShyZXN1bHRSZWcpOwogICAgIAogICAgIGRvdWJsZVJlc3Vs
dChyZXN1bHRSZWcsIG5vZGUpOwogfQpAQCAtMjY0MSw3ICsyNzA0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFkZChOb2RlKiBubwogICAgIH0KICAgICAgICAgCiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICBjYXNlIEludDUyUmVwVXNl
OiB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgp
KSk7CiAgICAgICAgIEFTU0VSVCghc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhN
b2RlKCkpKTsKIApAQCAtMjY3MCw3ICsyNzMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFkZChOb2RlKiBubwogICAgIH0KICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgIAot
ICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAg
U3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAg
ICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIpOwpAQCAtMjgwNyw3ICsyODcw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZAogICAgIH0KICAg
ICAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAg
ICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDaGVja092ZXJmbG93
KG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAgICAgICAgIEFTU0VSVCghc2hvdWxkQ2hlY2tOZWdhdGl2
ZVplcm8obm9kZS0+YXJpdGhNb2RlKCkpKTsKIApAQCAtMjgzNiw3ICsyODk5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZAogICAgIH0KICNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTY0KQogCi0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNlIERvdWJsZVJlcFVz
ZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwpAQCAtMjg4
MSw3ICsyOTQ0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKAog
ICAgIH0KIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7Cisg
ICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICBBU1NFUlQoc2hvdWxkQ2hlY2tPdmVyZmxv
dyhub2RlLT5hcml0aE1vZGUoKSkpOwogICAgICAgICAKICAgICAgICAgaWYgKCFtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1MikpIHsKQEAgLTI5MTgs
NyArMjk4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSgKICAg
ICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAgICAgCi0gICAgY2FzZSBOdW1iZXJV
c2U6IHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIApAQCAtMjk2OSw3ICszMDMyLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFyaXRoTXVsKE5vZAogICAgIH0KICAgICAKICNpZiBVU0UoSlNWQUxV
RTY0KSAgIAotICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgIGNhc2UgSW50NTJSZXBVc2U6
IHsKICAgICAgICAgQVNTRVJUKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkp
KTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgY2xldmVyLiBXZSB3YW50IHRv
IGRvIGFuIGludDUyIG11bHRpcGxpY2F0aW9uIGFuZCBjaGVjayB0aGUKQEAgLTMwMjYsNyArMzA4
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE11bChOb2QKICAgICB9CiAj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAgICAgCi0gICAgY2FzZSBOdW1iZXJVc2U6IHsK
KyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
IG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBvcDEsIG9wMik7CkBAIC0zMTkwLDcgKzMyNTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQXJpdGhEaXYoTm9kCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAg
Ci0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwpAQCAtMzQ5NSw3ICszNTU4LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKE5vZAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIE51bWJlclVzZTogeworICAgIGNhc2UgRG91
YmxlUmVwVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAKQEAgLTM1MzAsMTMgKzM1OTMsMTMgQEAgYm9vbCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLAogICAgIH0KICAgICAKICNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkp
IHsKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAg
ICBjb21waWxlSW50NTJDb21wYXJlKG5vZGUsIGNvbmRpdGlvbik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAKLSAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKERvdWJsZVJlcFVzZSkpIHsKICAgICAgICAgY29tcGlsZURvdWJsZUNvbXBhcmUobm9k
ZSwgZG91YmxlQ29uZGl0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTM2
MTAsNyArMzY3Myw3IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2QK
ICAgICB9CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkgICAKLSAgICBpZiAobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0g
ZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAh
PSBVSU5UX01BWCkgewogICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9IG1fYmxvY2stPmF0
KGJyYW5jaEluZGV4SW5CbG9jayk7CkBAIC0zNjI2LDcgKzM2ODksNyBAQCBib29sIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kCiAgICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVF
NjQpCiAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsKKyAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkpIHsKICAgICAgICAgdW5zaWdu
ZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAg
aWYgKGJyYW5jaEluZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgewogICAgICAgICAgICAgTm9kZSog
YnJhbmNoTm9kZSA9IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CkBAIC00NDg3LDM2
ICs0NTUwLDM3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUludDMyKEVkZ2UKICAg
ICAoU3BlY3VsYXRlSW50MzJPcGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTWFjaGluZUludChFZGdlIGVkZ2UpCi17Ci0jaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNNYWNoaW5lSW50
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIChTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9w
ZXJhbmQodGhpcywgZWRnZSkpLmdwcigpOwotI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKLSAgICBV
TlVTRURfUEFSQU0oZWRnZSk7Ci0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5k
aWYgLy8gVVNFKEpTVkFMVUU2NCkKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
TnVtYmVyKEVkZ2UgZWRnZSkKIHsKLSAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNG
dWxsTnVtYmVyKSkKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNCeXRlY29kZU51
bWJlcikpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICAoU3BlY3VsYXRlRG91YmxlT3BlcmFu
ZCh0aGlzLCBlZGdlKSkuZnByKCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgZWRn
ZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEdQ
UlJlZyBncHIgPSB2YWx1ZS5ncHIoKTsKKyAgICB0eXBlQ2hlY2soCisgICAgICAgIEpTVmFsdWVS
ZWdzKGdwciksIGVkZ2UsIFNwZWNCeXRlY29kZU51bWJlciwKKyAgICAgICAgbV9qaXQuYnJhbmNo
VGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3RlcikpOworI2Vsc2UKKyAgICBHUFJSZWcgdGFnR1BSID0gdmFsdWUudGFnR1BSKCk7Cisg
ICAgREZHX1RZUEVfQ0hFQ0soCisgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksIGVkZ2UsIH5T
cGVjSW50MzIsCisgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
dGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAgREZHX1RZUEVf
Q0hFQ0soCisgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksIGVkZ2UsIFNwZWNCeXRlY29kZU51
bWJlciwKKyAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOworI2VuZGlmCiB9
CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRnZSBlZGdlKQor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRG91YmxlUmVhbChFZGdlIGVkZ2UpCiB7Ci0g
ICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIpKQorICAgIGlm
ICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0RvdWJsZVJlYWwpKQogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwog
ICAgIEZQUlJlZyBmcHIgPSBvcGVyYW5kLmZwcigpOwotICAgIERGR19UWVBFX0NIRUNLKAotICAg
ICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCisgICAgdHlwZUNo
ZWNrKAorICAgICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjRG91YmxlUmVhbCwKICAgICAg
ICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZU5vdEVxdWFsT3JVbm9yZGVyZWQsIGZwciwgZnByKSk7CiB9CkBAIC00NzY4LDggKzQ4MzIsMTEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogICAgIGNhc2UgS25v
d25JbnQzMlVzZToKICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50
MzIpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAg
QVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbE51bWJlcikpOworICAgIGNhc2Ug
RG91YmxlUmVwVXNlOgorICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNE
b3VibGUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAg
QVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTWFjaGluZUludCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVD
aGVjayhlZGdlLCBTcGVjQ2VsbCkpOwpAQCAtNDc4MCwxNSArNDg0NywxMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICAg
ICAgc3BlY3VsYXRlSW50MzIoZWRnZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWFjaGlu
ZUludFVzZToKLSAgICAgICAgc3BlY3VsYXRlTWFjaGluZUludChlZGdlKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgICAgICBzcGVjdWxhdGVSZWFsTnVtYmVy
KGVkZ2UpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgc3Bl
Y3VsYXRlTnVtYmVyKGVkZ2UpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIERvdWJsZVJlcFJl
YWxVc2U6CisgICAgICAgIHNwZWN1bGF0ZURvdWJsZVJlYWwoZWRnZSk7CisgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgc3BlY3VsYXRlQm9vbGVhbihlZGdlKTsK
ICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcg
QEAgY2xhc3MgU3BlY3VsYXRlRG91YmxlT3BlcmFuZDsKIGNsYXNzIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kOwogY2xhc3MgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ7CiAKLWVudW0gR2VuZXJhdGVkT3Bl
cmFuZFR5cGUgeyBHZW5lcmF0ZWRPcGVyYW5kVHlwZVVua25vd24sIEdlbmVyYXRlZE9wZXJhbmRJ
bnRlZ2VyLCBHZW5lcmF0ZWRPcGVyYW5kRG91YmxlLCBHZW5lcmF0ZWRPcGVyYW5kSlNWYWx1ZX07
CitlbnVtIEdlbmVyYXRlZE9wZXJhbmRUeXBlIHsgR2VuZXJhdGVkT3BlcmFuZFR5cGVVbmtub3du
LCBHZW5lcmF0ZWRPcGVyYW5kSW50ZWdlciwgR2VuZXJhdGVkT3BlcmFuZEpTVmFsdWV9OwogCiBp
bmxpbmUgR1BSUmVnIGV4dHJhY3RSZXN1bHQoR1BSUmVnIHJlc3VsdCkgeyByZXR1cm4gcmVzdWx0
OyB9CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTE5MCw3ICsxOTAsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmIChzcGlsbE1lLmlzVmFsaWQoKSkgewogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAg
ICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxS
ZWdpc3RlcihzcGlsbE1lKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8ucmVnaXN0
ZXJGb3JtYXQoKSAhPSBEYXRhRm9ybWF0SlNEb3VibGUpOwogICAgICAgICAgICAgaWYgKChpbmZv
LnJlZ2lzdGVyRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpKQogICAgICAgICAgICAgICAgIG1fZ3By
cy5yZWxlYXNlKGluZm8udGFnR1BSKCkgPT0gZ3ByID8gaW5mby5wYXlsb2FkR1BSKCkgOiBpbmZv
LnRhZ0dQUigpKTsKICNlbmRpZgpAQCAtMjY1LDcgKzI2NCw3IEBAIHB1YmxpYzoKICAgICAgICAg
ZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgIT0gRGF0YUZvcm1hdE5vbmUpCiAgICAgICAgICAgICBt
X2dwcnMucmVsZWFzZShpbmZvLmdwcigpKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAg
ICAgIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlIHx8IHJlZ2lzdGVyRm9y
bWF0ID09IERhdGFGb3JtYXRKU0RvdWJsZSkKKyAgICAgICAgaWYgKHJlZ2lzdGVyRm9ybWF0ID09
IERhdGFGb3JtYXREb3VibGUpCiAgICAgICAgICAgICBtX2ZwcnMucmVsZWFzZShpbmZvLmZwcigp
KTsKICAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHsKICAg
ICAgICAgICAgIG1fZ3Bycy5yZWxlYXNlKGluZm8udGFnR1BSKCkpOwpAQCAtNDU5LDYgKzQ1OCwx
MCBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnVuYm94RG91YmxlKHRhZ0dQUiwgcGF5bG9hZEdQ
UiwgZnByLCBzY3JhdGNoRlBSKTsKICAgICB9CiAjZW5kaWYKKyAgICB2b2lkIGJveERvdWJsZShG
UFJSZWcgZnByLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyAgICAgICAgbV9qaXQuYm94RG91
YmxlKGZwciwgcmVncyk7CisgICAgfQogCiAgICAgLy8gU3BpbGwgYSBWaXJ0dWFsUmVnaXN0ZXIg
dG8gdGhlIEpTU3RhY2suCiAgICAgdm9pZCBzcGlsbChWaXJ0dWFsUmVnaXN0ZXIgc3BpbGxNZSkK
QEAgLTUyOCwxMSArNTMxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKLSAgICAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNEb3VibGU6IHsKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7CiAgICAg
ICAgICAgICAvLyBPbiBKU1ZBTFVFMzJfNjQgYm94aW5nIGEgZG91YmxlIGlzIGEgbm8tb3AuCiAg
ICAgICAgICAgICBtX2ppdC5zdG9yZURvdWJsZShpbmZvLmZwcigpLCBKSVRDb21waWxlcjo6YWRk
cmVzc0ZvcihzcGlsbE1lKSk7Ci0gICAgICAgICAgICBpbmZvLnNwaWxsKCptX3N0cmVhbSwgc3Bp
bGxNZSwgRGF0YUZvcm1hdEpTRG91YmxlKTsKKyAgICAgICAgICAgIGluZm8uc3BpbGwoKm1fc3Ry
ZWFtLCBzcGlsbE1lLCBEYXRhRm9ybWF0RG91YmxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC05MjUsNiArOTI3LDE0IEBAIHB1YmxpYzoKICAgICAgICAganNWYWx1ZVJl
c3VsdCh0YWcsIHBheWxvYWQsIG5vZGUsIERhdGFGb3JtYXRKUywgbW9kZSk7CiAgICAgfQogI2Vu
ZGlmCisgICAgdm9pZCBqc1ZhbHVlUmVzdWx0KEpTVmFsdWVSZWdzIHJlZ3MsIE5vZGUqIG5vZGUs
IERhdGFGb3JtYXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbk1vZGUgbW9kZSA9
IENhbGxVc2VDaGlsZHJlbikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAganNW
YWx1ZVJlc3VsdChyZWdzLmdwcigpLCBub2RlLCBmb3JtYXQsIG1vZGUpOworI2Vsc2UKKyAgICAg
ICAganNWYWx1ZVJlc3VsdChyZWdzLnRhZ0dQUigpLCByZWdzLnBheWxvYWRHUFIoKSwgbm9kZSwg
Zm9ybWF0LCBtb2RlKTsKKyNlbmRpZgorICAgIH0KICAgICB2b2lkIHN0b3JhZ2VSZXN1bHQoR1BS
UmVnIHJlZywgTm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRy
ZW4pCiAgICAgewogICAgICAgICBpZiAobW9kZSA9PSBDYWxsVXNlQ2hpbGRyZW4pCkBAIC0yMDgw
LDEwICsyMDkwLDEyIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxl
bmd0aChOb2RlKik7CiAgICAgCisgICAgdm9pZCBjb21waWxlVmFsdWVSZXAoTm9kZSopOworICAg
IHZvaWQgY29tcGlsZURvdWJsZVJlcChOb2RlKik7CisgICAgCiAgICAgdm9pZCBjb21waWxlVmFs
dWVUb0ludDMyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVVSW50MzJUb051bWJlcihOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlRG91YmxlQXNJbnQzMihOb2RlKik7Ci0gICAgdm9pZCBjb21waWxl
SW50MzJUb0RvdWJsZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQWRkKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVNYWtlUm9wZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhTdWIoTm9k
ZSopOwpAQCAtMjE4NSwxMiArMjE5Nyw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW1pdEFsbG9j
YXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQ
UiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOwogCi0jaWYgVVNFKEpTVkFMVUU2NCkgCi0gICAgSklU
Q29tcGlsZXI6Okp1bXAgY29udmVydFRvRG91YmxlKEdQUlJlZyB2YWx1ZSwgRlBSUmVnIHJlc3Vs
dCwgR1BSUmVnIHRtcCk7Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIEpJVENvbXBpbGVy
OjpKdW1wIGNvbnZlcnRUb0RvdWJsZShKU1ZhbHVlT3BlcmFuZCYsIEZQUlJlZyByZXN1bHQpOwot
I2VuZGlmCi0gICAgCiAgICAgLy8gQWRkIGEgc3BlY3VsYXRpb24gY2hlY2suCiAgICAgdm9pZCBz
cGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBOb2RlKiwgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAganVtcFRvRmFpbCk7CiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEV4aXRL
aW5kLCBKU1ZhbHVlU291cmNlLCBOb2RlKiwgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
JiBqdW1wc1RvRmFpbCk7CkBAIC0yMjE3LDcgKzIyMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
cGVjdWxhdGVJbnQzMihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSk7
CiAgICAgdm9pZCBzcGVjdWxhdGVOdW1iZXIoRWRnZSk7Ci0gICAgdm9pZCBzcGVjdWxhdGVSZWFs
TnVtYmVyKEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlRG91YmxlUmVhbChFZGdlKTsKICAgICB2
b2lkIHNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVDZWxsKEVkZ2Up
OwogICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0KEVkZ2UpOwpAQCAtMjU2NSw2ICsyNTcxLDIzIEBA
IHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwogfTsKIAorY2xhc3MgSlNWYWx1ZVJlZ3NUZW1w
b3JhcnkgeworcHVibGljOgorICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5KCk7CisgICAgSlNWYWx1
ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqKTsKKyAgICB+SlNWYWx1ZVJlZ3NUZW1wb3Jh
cnkoKTsKKyAgICAKKyAgICBKU1ZhbHVlUmVncyByZWdzKCk7CisKK3ByaXZhdGU6CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBHUFJUZW1wb3JhcnkgbV9ncHI7CisjZWxzZQorICAgIEdQUlRlbXBv
cmFyeSBtX3BheWxvYWRHUFI7CisgICAgR1BSVGVtcG9yYXJ5IG1fdGFnR1BSOworI2VuZGlmCit9
OworCiBjbGFzcyBGUFJUZW1wb3JhcnkgewogcHVibGljOgogICAgIEZQUlRlbXBvcmFyeShTcGVj
dWxhdGl2ZUpJVCopOwpAQCAtMjc1NCwxMiArMjc3NywxMiBAQCBwcml2YXRlOgogLy8gR2l2ZXMg
eW91IGEgY2Fub25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDE2LCBsb3cg
Yml0cyB6ZXJvKS4KIGNsYXNzIFNwZWN1bGF0ZUludDUyT3BlcmFuZCB7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgU3BlY3VsYXRlSW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2Ug
ZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1
bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJ
VCogaml0LCBFZGdlIGVkZ2UpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fZWRn
ZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgewot
ICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChqaXQt
PmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CkBAIC0yODAxLDEy
ICsyODI0LDEyIEBAIHByaXZhdGU6CiAvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4g
dGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMgYXJlIHNpZ24t
ZXh0ZW5kZWQpLgogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQq
IGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNP
cGVyYW5kU3BlY3VsYXRpb24pCisgICAgZXhwbGljaXQgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVy
YW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSkKICAgICAgICAgOiBtX2ppdChqaXQp
CiAgICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxp
ZEdQUlJlZykKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKTsK
ICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKICAgICAgICAgICAgIGdwcigpOwog
ICAgIH0KQEAgLTI4NDksMzUgKzI4NzIsMzUgQEAgZW51bSBPcHBvc2l0ZVNoaWZ0VGFnIHsgT3Bw
b3NpdGVTaGlmdCB9OwogCiBjbGFzcyBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQgewog
cHVibGljOgotICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZChTcGVj
dWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9
IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGlj
aGV2ZXJJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlKQogICAgICAg
ICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkKICAgICAgICAgLCBtX2dwck9y
SW52YWxpZChJbnZhbGlkR1BSUmVnKQogICAgICAgICAsIG1fc3RyaWN0KGppdC0+YmV0dGVyVXNl
U3RyaWN0SW50NTIoZWRnZSkpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1v
ZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hp
bmVJbnRVc2UpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1
MlJlcFVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAg
ICBncHIoKTsKICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50
NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgY29uc3QgU3BlY3VsYXRl
V2hpY2hldmVySW50NTJPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2Rl
ID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdo
aWNoZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIGNvbnN0
IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCYgb3RoZXIpCiAgICAgICAgIDogbV9qaXQo
aml0KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKElu
dmFsaWRHUFJSZWcpCiAgICAgICAgICwgbV9zdHJpY3Qob3RoZXIubV9zdHJpY3QpCiAgICAgewot
ICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChqaXQt
PmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CiAgICAgCi0gICAg
ZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBq
aXQsIEVkZ2UgZWRnZSwgT3Bwb3NpdGVTaGlmdFRhZywgY29uc3QgU3BlY3VsYXRlV2hpY2hldmVy
SW50NTJPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21h
dGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlcklu
dDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wcG9zaXRlU2hpZnRU
YWcsIGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCYgb3RoZXIpCiAgICAgICAg
IDogbV9qaXQoaml0KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJ
bnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgICAgICwgbV9zdHJpY3QoIW90aGVyLm1fc3RyaWN0
KQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpOwogICAgICAg
ICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQogICAgICAgICAgICAgZ3ByKCk7CiAgICAgfQpA
QCAtMjkyNiwxMyArMjk0OSwxMyBAQCBwcml2YXRlOgogCiBjbGFzcyBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVEb3VibGVPcGVyYW5kKFNw
ZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2Rl
ID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlKQogICAgICAgICA6IG1f
aml0KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkKICAgICAgICAgLCBtX2Zwck9ySW52YWxp
ZChJbnZhbGlkRlBSUmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faml0KTsKLSAgICAgICAg
QVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBp
c0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0RvdWJs
ZShlZGdlLnVzZUtpbmQoKSkpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQog
ICAgICAgICAgICAgZnByKCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAx
NjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDYyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAgICAgICBj
YXNlIFZhbHVlUmVwOgorICAgICAgICBjYXNlIEludDUyUmVwOgorICAgICAgICBjYXNlIERvdWJs
ZVJlcDogeworICAgICAgICAgICAgLy8gVGhpcyBzaG9ydC1jaXJjdWl0cyBjaXJjdWl0b3VzIGNv
bnZlcnNpb25zLCBsaWtlIFZhbHVlUmVwKERvdWJsZVJlcCh2YWx1ZSkpIG9yCisgICAgICAgICAg
ICAvLyBldmVuIG1vcmUgY29tcGxpY2F0ZWQgdGhpbmdzLiBMaWtlLCBpdCBjYW4gaGFuZGxlIGEg
YmVhc3QgbGlrZQorICAgICAgICAgICAgLy8gVmFsdWVSZXAoRG91YmxlUmVwKEludDUyUmVwKHZh
bHVlKSkpLgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBUaGUgb25seSBzcGVjdWxhdGlv
biB0aGF0IHdlIHdvdWxkIGRvIGJleW9uZCB2YWxpZGF0aW5nIHRoYXQgd2UgaGF2ZSBhIHR5cGUg
dGhhdAorICAgICAgICAgICAgLy8gY2FuIGJlIHJlcHJlc2VudGVkIGEgY2VydGFpbiB3YXkgaXMg
YW4gSW50MzIgY2hlY2sgdGhhdCB3b3VsZCBhcHBlYXIgb24gSW50NTJSZXAKKyAgICAgICAgICAg
IC8vIG5vZGVzLiBGb3Igbm93LCBpZiB3ZSBzZWUgdGhpcyBhbmQgdGhlIGZpbmFsIHR5cGUgd2Ug
d2FudCBpcyBhbiBJbnQ1Miwgd2UgdXNlIGl0CisgICAgICAgICAgICAvLyBhcyBhbiBleGN1c2Ug
bm90IHRvIGZvbGQuIFRoZSBvbmx5IHRoaW5nIHdlIHdvdWxkIG5lZWQgaXMgYSBJbnQ1MlJlcElu
dDMyVXNlIGtpbmQuCisgICAgICAgICAgICBib29sIGhhZEludDMyQ2hlY2sgPSBmYWxzZTsKKyAg
ICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gSW50NTJSZXApIHsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSW50MzJVc2UpOworICAgICAg
ICAgICAgICAgIGhhZEludDMyQ2hlY2sgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZm9yIChOb2RlKiBub2RlID0gbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCk7IDsgbm9kZSA9IG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChjYW5vbmljYWxSZXN1
bHRSZXByZXNlbnRhdGlvbihub2RlLT5yZXN1bHQoKSkgPT0KKyAgICAgICAgICAgICAgICAgICAg
Y2Fub25pY2FsUmVzdWx0UmVwcmVzZW50YXRpb24obV9ub2RlLT5yZXN1bHQoKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9ub2RlLT5vcmlnaW4s
IG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoaGFkSW50MzJDaGVj
aykgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGFkZGluZyBJ
bnQ1MlJlcEludDMyVXNlIG9yIGV2ZW4gRG91YmxlUmVwSW50MzJVc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAvLyB3aGljaCB3b3VsZCBiZSBzdXBlciB3ZWlyZC4gVGhlIGxhdHRlciB3b3Vs
ZCBvbmx5IGFyaXNlIGluIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlcmlvdXNs
eSBjaXJjdWl0b3VzIGNvbnZlcnNpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNh
bm9uaWNhbFJlc3VsdFJlcHJlc2VudGF0aW9uKG5vZGUtPnJlc3VsdCgpKSAhPSBOb2RlUmVzdWx0
SlMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBQ
aGFudG9tLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGdl
KG5vZGUsIEludDMyVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgbV9ub2RlLT5jaGlsZDEoKSA9IG5vZGUtPmRlZmF1bHRFZGdlKCk7CisgICAgICAgICAg
ICAgICAgICAgIG1fbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN3aXRjaCAobm9k
ZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgSW50NTJSZXA6CisgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSW50MzJVc2UpOworICAg
ICAgICAgICAgICAgICAgICBoYWRJbnQzMkNoZWNrID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2Ug
RG91YmxlUmVwOgorICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpAQCAtMjMyLDYgKzI4OCwzMSBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgfQogICAgIAorICAgIHZvaWQgZm9sZElkZW50aXR5KCkKKyAgICB7CisgICAgICAgIGZv
ciAoTm9kZSogbm9kZSA9IG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpOyA7IG5vZGUgPSBub2RlLT5j
aGlsZDEoKS5ub2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChjYW5vbmljYWxSZXN1bHRSZXByZXNl
bnRhdGlvbihub2RlLT5yZXN1bHQoKSkgPT0KKyAgICAgICAgICAgICAgICBjYW5vbmljYWxSZXN1
bHRSZXByZXNlbnRhdGlvbihtX25vZGUtPnJlc3VsdCgpKSkgeworICAgICAgICAgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4
LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9ub2RlLT5vcmlnaW4sIG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQxKCkgPSBub2RlLT5kZWZhdWx0RWRnZSgpOwor
ICAgICAgICAgICAgICAgIG1fbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKKyAgICAgICAgICAg
ICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkg
eworICAgICAgICAgICAgY2FzZSBEb3VibGVSZXA6CisgICAgICAgICAgICBjYXNlIEludDUyUmVw
OgorICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAogICAgIEluc2VydGlv
blNldCBtX2luc2VydGlvblNldDsKICAgICBCYXNpY0Jsb2NrKiBtX2Jsb2NrOwogICAgIHVuc2ln
bmVkIG1fbm9kZUluZGV4OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtp
bmQuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1VzZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNyArNDYsMTcgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2UgS25vd25JbnQzMlVzZToK
ICAgICAgICAgb3V0LnByaW50KCJLbm93bkludDMyIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgTWFjaGluZUludFVzZToKLSAgICAgICAgb3V0LnByaW50KCJNYWNoaW5lSW50Iik7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgb3V0LnByaW50KCJS
ZWFsTnVtYmVyIik7CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgb3V0LnByaW50KCJJ
bnQ1MlJlcCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAg
b3V0LnByaW50KCJOdW1iZXIiKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBLbm93bk51bWJl
clVzZToKLSAgICAgICAgb3V0LnByaW50KCJLbm93bk51bWJlciIpOworICAgIGNhc2UgRG91Ymxl
UmVwVXNlOgorICAgICAgICBvdXQucHJpbnQoIkRvdWJsZVJlcCIpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgICAgIG91dC5wcmludCgiRG91YmxlUmVw
UmVhbCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIG91
dC5wcmludCgiQm9vbGVhbiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
REZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR05vZGVGbGFncy5oIgogI2luY2x1ZGUgIlNwZWN1bGF0
ZWRUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKQEAgLTM3LDEwICszOCwx
MCBAQCBlbnVtIFVzZUtpbmQgewogICAgIFVudHlwZWRVc2UsCiAgICAgSW50MzJVc2UsCiAgICAg
S25vd25JbnQzMlVzZSwKLSAgICBNYWNoaW5lSW50VXNlLAotICAgIFJlYWxOdW1iZXJVc2UsCisg
ICAgSW50NTJSZXBVc2UsCiAgICAgTnVtYmVyVXNlLAotICAgIEtub3duTnVtYmVyVXNlLAorICAg
IERvdWJsZVJlcFVzZSwKKyAgICBEb3VibGVSZXBSZWFsVXNlLAogICAgIEJvb2xlYW5Vc2UsCiAg
ICAgQ2VsbFVzZSwKICAgICBLbm93bkNlbGxVc2UsCkBAIC01OSw3ICs2MCw3IEBAIGVudW0gVXNl
S2luZCB7CiAgICAgTGFzdFVzZUtpbmQgLy8gTXVzdCBhbHdheXMgYmUgdGhlIGxhc3QgZW50cnkg
aW4gdGhlIGVudW0sIGFzIGl0IGlzIHVzZWQgdG8gZGVub3RlIHRoZSBudW1iZXIgb2YgZW51bSBl
bGVtZW50cy4KIH07CiAKLUFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZv
cihVc2VLaW5kIHVzZUtpbmQpCitpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihV
c2VLaW5kIHVzZUtpbmQpCiB7CiAgICAgc3dpdGNoICh1c2VLaW5kKSB7CiAgICAgY2FzZSBVbnR5
cGVkVXNlOgpAQCAtNjcsMTMgKzY4LDE0IEBAIEFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUg
dHlwZUZpbHRlckYKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToK
ICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAg
Y2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNNYWNoaW5lSW50OwotICAgIGNh
c2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgcmV0dXJuIFNwZWNGdWxsUmVhbE51bWJlcjsKICAg
ICBjYXNlIE51bWJlclVzZToKLSAgICBjYXNlIEtub3duTnVtYmVyVXNlOgotICAgICAgICByZXR1
cm4gU3BlY0Z1bGxOdW1iZXI7CisgICAgICAgIHJldHVybiBTcGVjQnl0ZWNvZGVOdW1iZXI7Cisg
ICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgIHJldHVybiBTcGVjRG91YmxlOworICAgIGNh
c2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVSZWFsOwogICAg
IGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCb29sZWFuOwogICAgIGNhc2Ug
Q2VsbFVzZToKQEAgLTEwOCw1MyArMTEwLDUzIEBAIEFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5
cGUgdHlwZUZpbHRlckYKICAgICB9CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBzaG91bGROb3RI
YXZlVHlwZUNoZWNrKFVzZUtpbmQga2luZCkKK2lubGluZSBib29sIHNob3VsZE5vdEhhdmVUeXBl
Q2hlY2soVXNlS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgVW50
eXBlZFVzZToKICAgICBjYXNlIEtub3duSW50MzJVc2U6Ci0gICAgY2FzZSBLbm93bk51bWJlclVz
ZToKICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgorICAg
IGNhc2UgSW50NTJSZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAK
LUFMV0FZU19JTkxJTkUgYm9vbCBtYXlIYXZlVHlwZUNoZWNrKFVzZUtpbmQga2luZCkKK2lubGlu
ZSBib29sIG1heUhhdmVUeXBlQ2hlY2soVXNlS2luZCBraW5kKQogewogICAgIHJldHVybiAhc2hv
dWxkTm90SGF2ZVR5cGVDaGVjayhraW5kKTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIGlzTnVt
ZXJpY2FsKFVzZUtpbmQga2luZCkKK2lubGluZSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQga2lu
ZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2Ug
S25vd25JbnQzMlVzZToKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Ci0gICAgY2FzZSBSZWFsTnVt
YmVyVXNlOgogICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Cisg
ICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICBjYXNlIERv
dWJsZVJlcFJlYWxVc2U6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBpc0RvdWJs
ZShVc2VLaW5kIGtpbmQpCitpbmxpbmUgYm9vbCBpc0RvdWJsZShVc2VLaW5kIGtpbmQpCiB7CiAg
ICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgIGNhc2UgTnVt
YmVyVXNlOgotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6
CisgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBk
ZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCi1BTFdBWVNfSU5MSU5F
IGJvb2wgaXNDZWxsKFVzZUtpbmQga2luZCkKK2lubGluZSBib29sIGlzQ2VsbChVc2VLaW5kIGtp
bmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBDZWxsVXNlOgpAQCAtMTc0LDcg
KzE3Niw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NlbGwoVXNlS2luZCBraW5kKQogCiAvLyBS
ZXR1cm5zIHRydWUgaWYgaXQgdXNlcyBzdHJ1Y3R1cmUgaW4gYSB3YXkgdGhhdCBjb3VsZCBiZSBj
bG9iYmVyZWQgYnkKIC8vIHRoaW5ncyB0aGF0IGNoYW5nZSB0aGUgc3RydWN0dXJlLgotQUxXQVlT
X0lOTElORSBib29sIHVzZXNTdHJ1Y3R1cmUoVXNlS2luZCBraW5kKQoraW5saW5lIGJvb2wgdXNl
c1N0cnVjdHVyZShVc2VLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2Fz
ZSBTdHJpbmdPYmplY3RVc2U6CkBAIC0xODUsNiArMTg3LDE5IEBAIEFMV0FZU19JTkxJTkUgYm9v
bCB1c2VzU3RydWN0dXJlKFVzZUtpbmQKICAgICB9CiB9CiAKK2lubGluZSBVc2VLaW5kIHVzZUtp
bmRGb3JSZXN1bHQoTm9kZUZsYWdzIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQoIShyZXN1bHQgJiB+
Tm9kZVJlc3VsdE1hc2spKTsKKyAgICBzd2l0Y2ggKHJlc3VsdCkgeworICAgIGNhc2UgTm9kZVJl
c3VsdEludDUyOgorICAgICAgICByZXR1cm4gSW50NTJSZXBVc2U7CisgICAgY2FzZSBOb2RlUmVz
dWx0RG91YmxlOgorICAgICAgICByZXR1cm4gRG91YmxlUmVwVXNlOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBVbnR5cGVkVXNlOworICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTUsNiArMTE1
LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
bV9teVJlZkNvdW50cy5maW5kKGVkZ2Uubm9kZSgpKS0+dmFsdWUrKzsKICAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+
aGFzRG91YmxlUmVzdWx0KCkgPT0gKGVkZ2UudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSB8fCBl
ZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBSZWFsVXNlKSk7CisgICAgICAgICAgICAgICAgICAg
IFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+aGFzSW50NTJSZXN1bHQoKSA9PSAoZWRnZS51
c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEluIFNTQSwgYWxsIGVkZ2VzIG11c3QgaGFzUmVzdWx0KCkuCiAgICAgICAg
ICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc1Jlc3VsdCgp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFkaWNGdW5jdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFkaWNGdW5j
dGlvbi5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhcmlhZGljRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgREZHVmFy
aWFkaWNGdW5jdGlvbl9oCi0jZGVmaW5lIERGR1ZhcmlhZGljRnVuY3Rpb25faAotCi0jZGVmaW5l
IERGR19DT01NQSAsCi0KLS8vIFRoZSBzaWduYXR1cmUgb2YgdiBpcyAodGVtcGxhdGVQcmUsIHRl
bXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykKLS8vCi0vLyBZ
b3Ugd291bGQgdXNlIGl0IGxpa2U6Ci0vLyAjZGVmaW5lIERFRklORV9GVU5DVElPTih0ZW1wbGF0
ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1zLCB2YWx1ZVBhcmFtc0NvbW1hLCB2YWx1ZVBh
cmFtcywgdmFsdWVBcmdzKQotLy8gICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJhbXMgdGVtcGxhdGVQ
b3N0IHZvaWQgZih2YWx1ZVBhcmFtcykgeyBnKHZhbHVlQXJncyk7IH0KLS8vIERGR19WQVJJQURJ
Q19URU1QTEFURV9GVU5DVElPTihERUZJTkVfRlVOQ1RJT04pCi0vLyAjdW5kZWYgREVGSU5FX0ZV
TkNUSU9OCi0vLwotLy8gT3IgaWYgeW91IHdhbnRlZCB0aGUgZGVmaW5lZCBmdW5jdGlvbiB0byB0
YWtlIGFuIGFkZGl0aW9uYWwgdGVtcGxhdGUgYXJnLCB5b3Ugd291bGQgZG86Ci0vLyAjZGVmaW5l
IERFRklORV9GVU5DVElPTih0ZW1wbGF0ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1zLCB2
YWx1ZVBhcmFtc0NvbW1hLCB2YWx1ZVBhcmFtcywgdmFsdWVBcmdzKQotLy8gICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQgdmFsdWVQYXJhbXNDb21tYSB0eXBlUGFyYW1zPiB2b2lkIGYoVCB2YWx1ZSB2
YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1zKSB7IGcodmFsdWUsIHZhbHVlQXJncyk7IH0KLS8v
IERGR19WQVJJQURJQ19URU1QTEFURV9GVU5DVElPTihERUZJTkVfRlVOQ1RJT04pCi0vLyAjdW5k
ZWYgREVGSU5FX0ZVTkNUSU9OCi0KLSNkZWZpbmUgREZHX1ZBUklBRElDX1RFTVBMQVRFX0ZVTkNU
SU9OKHYpIFwKLSAgICB2KCwgLCAsICwgLCApIFwKLSAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5h
bWUgX0RGR19UMSwgREZHX0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSwgX0RGR192
YWx1ZTEpIFwKLSAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEg
dHlwZW5hbWUgX0RGR19UMiwgREZHX0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBE
RkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIsIF9ERkdfdmFsdWUxIERGR19DT01N
QSBfREZHX3ZhbHVlMikgXAotICAgIHYodGVtcGxhdGU8LCA+LCB0eXBlbmFtZSBfREZHX1QxIERG
R19DT01NQSB0eXBlbmFtZSBfREZHX1QyIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1QzLCBERkdf
Q09NTUEsIGNvbnN0IF9ERkdfVDEmIF9ERkdfdmFsdWUxIERGR19DT01NQSBjb25zdCBfREZHX1Qy
JiBfREZHX3ZhbHVlMiBERkdfQ09NTUEgY29uc3QgX0RGR19UMyYgX0RGR192YWx1ZTMsIF9ERkdf
dmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09NTUEgX0RGR192YWx1ZTMpIFwKLSAg
ICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RG
R19UMiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19U
NCwgREZHX0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3Qg
X0RGR19UMiYgX0RGR192YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUz
IERGR19DT01NQSBjb25zdCBfREZHX1Q0JiBfREZHX3ZhbHVlNCwgX0RGR192YWx1ZTEgREZHX0NP
TU1BIF9ERkdfdmFsdWUyIERGR19DT01NQSBfREZHX3ZhbHVlMyBERkdfQ09NTUEgX0RGR192YWx1
ZTQpIFwKLSAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlw
ZW5hbWUgX0RGR19UMiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMyBERkdfQ09NTUEgdHlwZW5h
bWUgX0RGR19UNCBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNSwgREZHX0NPTU1BLCBjb25zdCBf
REZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIg
REZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzIERGR19DT01NQSBjb25zdCBfREZH
X1Q0JiBfREZHX3ZhbHVlNCBERkdfQ09NTUEgY29uc3QgX0RGR19UNSYgX0RGR192YWx1ZTUsIF9E
RkdfdmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09NTUEgX0RGR192YWx1ZTMgREZH
X0NPTU1BIF9ERkdfdmFsdWU0IERGR19DT01NQSBfREZHX3ZhbHVlNSkgXAotICAgIHYodGVtcGxh
dGU8LCA+LCB0eXBlbmFtZSBfREZHX1QxIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1QyIERGR19D
T01NQSB0eXBlbmFtZSBfREZHX1QzIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1Q0IERGR19DT01N
QSB0eXBlbmFtZSBfREZHX1Q1IERGR19DT01NQSB0eXBlbmFtZSBfREZHX1Q2LCBERkdfQ09NTUEs
IGNvbnN0IF9ERkdfVDEmIF9ERkdfdmFsdWUxIERGR19DT01NQSBjb25zdCBfREZHX1QyJiBfREZH
X3ZhbHVlMiBERkdfQ09NTUEgY29uc3QgX0RGR19UMyYgX0RGR192YWx1ZTMgREZHX0NPTU1BIGNv
bnN0IF9ERkdfVDQmIF9ERkdfdmFsdWU0IERGR19DT01NQSBjb25zdCBfREZHX1Q1JiBfREZHX3Zh
bHVlNSBERkdfQ09NTUEgY29uc3QgX0RGR19UNiYgX0RGR192YWx1ZTYsIF9ERkdfdmFsdWUxIERG
R19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09NTUEgX0RGR192YWx1ZTMgREZHX0NPTU1BIF9ERkdf
dmFsdWU0IERGR19DT01NQSBfREZHX3ZhbHVlNSBERkdfQ09NTUEgX0RGR192YWx1ZTYpIFwKLSAg
ICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RG
R19UMiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19U
NCBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNiBE
RkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNywgREZHX0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZH
X3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIgREZHX0NPTU1BIGNv
bnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzIERGR19DT01NQSBjb25zdCBfREZHX1Q0JiBfREZHX3Zh
bHVlNCBERkdfQ09NTUEgY29uc3QgX0RGR19UNSYgX0RGR192YWx1ZTUgREZHX0NPTU1BIGNvbnN0
IF9ERkdfVDYmIF9ERkdfdmFsdWU2IERGR19DT01NQSBjb25zdCBfREZHX1Q3JiBfREZHX3ZhbHVl
NywgX0RGR192YWx1ZTEgREZHX0NPTU1BIF9ERkdfdmFsdWUyIERGR19DT01NQSBfREZHX3ZhbHVl
MyBERkdfQ09NTUEgX0RGR192YWx1ZTQgREZHX0NPTU1BIF9ERkdfdmFsdWU1IERGR19DT01NQSBf
REZHX3ZhbHVlNiBERkdfQ09NTUEgX0RGR192YWx1ZTcpIFwKLSAgICB2KHRlbXBsYXRlPCwgPiwg
dHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMiBERkdfQ09NTUEgdHlw
ZW5hbWUgX0RGR19UMyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNCBERkdfQ09NTUEgdHlwZW5h
bWUgX0RGR19UNSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNiBERkdfQ09NTUEgdHlwZW5hbWUg
X0RGR19UNyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UOCwgREZHX0NPTU1BLCBjb25zdCBfREZH
X1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIgREZH
X0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzIERGR19DT01NQSBjb25zdCBfREZHX1Q0
JiBfREZHX3ZhbHVlNCBERkdfQ09NTUEgY29uc3QgX0RGR19UNSYgX0RGR192YWx1ZTUgREZHX0NP
TU1BIGNvbnN0IF9ERkdfVDYmIF9ERkdfdmFsdWU2IERGR19DT01NQSBjb25zdCBfREZHX1Q3JiBf
REZHX3ZhbHVlNyBERkdfQ09NTUEgX0RGR19UOCYgX0RGR192YWx1ZTgsIF9ERkdfdmFsdWUxIERG
R19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09NTUEgX0RGR192YWx1ZTMgREZHX0NPTU1BIF9ERkdf
dmFsdWU0IERGR19DT01NQSBfREZHX3ZhbHVlNSBERkdfQ09NTUEgX0RGR192YWx1ZTYgREZHX0NP
TU1BIF9ERkdfdmFsdWU3IERGR19DT01NQSBfREZHX3ZhbHVlOCkKLQotI2VuZGlmIC8vIERGR1Zh
cmlhZGljRnVuY3Rpb25faAotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkw
LDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2Ug
QXJpdGhGUm91bmQ6CiAgICAgY2FzZSBBcml0aE5lZ2F0ZToKICAgICBjYXNlIFVJbnQzMlRvTnVt
YmVyOgotICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICBjYXNlIENvbXBhcmVFcUNvbnN0YW50
OgogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKQEAgLTEwMyw3ICsxMDIs
NiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBH
ZXRDbG9zdXJlUmVnaXN0ZXJzOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1
dENsb3N1cmVWYXI6Ci0gICAgY2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgY2FzZSBJbnZhbGlkYXRp
b25Qb2ludDoKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICBjYXNlIENoZWNrRnVuY3Rpb246
CkBAIC0xNTIsOCArMTUwLDE5IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShO
b2RlKiAKICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOgog
ICAgIGNhc2UgSW5zdGFuY2VPZjoKKyAgICBjYXNlIERvdWJsZVJlcDoKKyAgICBjYXNlIFZhbHVl
UmVwOgorICAgIGNhc2UgSW50NTJSZXA6CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBj
YXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJZGVudGl0eToKKyAgICAgICAgLy8gTm8gYmFja2VuZCBoYW5kbGVzIHRo
aXMgYmVjYXVzZSBpdCB3aWxsIGJlIG9wdGltaXplZCBvdXQuIEJ1dCB3ZSBtYXkgY2hlY2sKKyAg
ICAgICAgLy8gZm9yIGNhcGFiaWxpdGllcyBiZWZvcmUgb3B0aW1pemF0aW9uLiBJdCB3b3VsZCBi
ZSBhIGRlZXAgZXJyb3IgdG8gcmVtb3ZlIHRoaXMKKyAgICAgICAgLy8gY2FzZSBiZWNhdXNlIGl0
IHdvdWxkIHByZXZlbnQgdXMgZnJvbSBjYXRjaGluZyBidWdzIHdoZXJlIHRoZSBGVEwgYmFja2Vu
ZAorICAgICAgICAvLyBwaXBlbGluZSBmYWlsZWQgdG8gb3B0aW1pemUgb3V0IGFuIElkZW50aXR5
LgorICAgICAgICBicmVhazsKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBQdXRC
eUlkOgogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpCkBA
IC0yMzUsOSArMjQ0LDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IAogICAgIGNhc2UgQ29tcGFyZUVxOgogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEludDMyVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKQorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoRG91YmxlUmVwVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMjU1LDkgKzI2NCw5IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiAKICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKQorICAgICAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
aWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpCiAgICAgICAgICAgICBi
cmVhazsKQEAgLTI4MCw5ICsyODksOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGUoTm9kZSogCiAgICAgY2FzZSBDb21wYXJlR3JlYXRlckVxOgogICAgICAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKQorICAgICAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpCisgICAgICAgIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKQogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0zNTAsMTAgKzM1OSwxMCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAg
ICAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBLbm93bkludDMy
VXNlOgotICAgICAgICAgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgICAg
ICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAg
ICAgICAgICAgICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBS
ZWFsTnVtYmVyVXNlOgorICAgICAgICAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAg
ICAgICAgICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKICAgICAgICAgICAgICAgICBjYXNlIEJv
b2xlYW5Vc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBDZWxsVXNlOgogICAgICAgICAgICAgICAg
IGNhc2UgS25vd25DZWxsVXNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODYsNyArMTg2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgTFR5cGUgdHlwZTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUt
PmZsYWdzKCkgJiBOb2RlUmVzdWx0TWFzaykgewotICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJl
c3VsdE51bWJlcjoKKyAgICAgICAgICAgICAgICBjYXNlIE5vZGVSZXN1bHREb3VibGU6CiAgICAg
ICAgICAgICAgICAgICAgIHR5cGUgPSBtX291dC5kb3VibGVUeXBlOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5vZGVSZXN1bHRJbnQzMjoKQEAgLTI4
MiwxMiArMjgyLDMwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBKU0NvbnN0YW50OgogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRG91YmxlQ29u
c3RhbnQ6CisgICAgICAgICAgICBjb21waWxlRG91YmxlQ29uc3RhbnQoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CisgICAgICAgICAgICBjb21waWxl
SW50NTJDb25zdGFudCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2Vha0pT
Q29uc3RhbnQ6CiAgICAgICAgICAgICBjb21waWxlV2Vha0pTQ29uc3RhbnQoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBoYW50b21Bcmd1bWVudHM6CiAgICAgICAgICAgICBj
b21waWxlUGhhbnRvbUFyZ3VtZW50cygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRG91YmxlUmVwOgorICAgICAgICAgICAgY29tcGlsZURvdWJsZVJlcCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgICAgICBjb21waWxlVmFs
dWVSZXAoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEludDUyUmVwOgorICAg
ICAgICAgICAgY29tcGlsZUludDUyUmVwKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBWYWx1ZVRvSW50MzI6CisgICAgICAgICAgICBjb21waWxlVmFsdWVUb0ludDMyKCk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudDoKICAgICAgICAgICAg
IGNvbXBpbGVHZXRBcmd1bWVudCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNzgsOSArMzk2
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKICAgICAgICAgICAg
IGNvbXBpbGVVSW50MzJUb051bWJlcigpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgSW50MzJUb0RvdWJsZToKLSAgICAgICAgICAgIGNvbXBpbGVJbnQzMlRvRG91YmxlKCk7Ci0g
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAg
ICAgIGNvbXBpbGVDaGVja1N0cnVjdHVyZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01Njks
MTIgKzU4NCw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAg
ICAgICAgICAgICBjb21waWxlSW52YWxpZGF0aW9uUG9pbnQoKTsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKLSAgICAgICAgICAgIGNvbXBpbGVWYWx1ZVRv
SW50MzIoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludDUyVG9WYWx1ZToK
LSAgICAgICAgICAgIGNvbXBpbGVJbnQ1MlRvVmFsdWUoKTsKLSAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKICAgICAgICAgICAgIGNvbXBp
bGVDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjMz
LDczICs2NDIsMTggQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgdm9pZCBjb21waWxlVmFsdWVUb0ludDMyKCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAobV9u
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKLSAgICAgICAgY2FzZSBJbnQzMlVzZToKLSAgICAg
ICAgICAgIHNldEludDMyKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKLSAgICAg
ICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0ludDMyKGxvd1N0cmljdEludDUyKG1fbm9kZS0+
Y2hpbGQxKCkpKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICBj
YXNlIE51bWJlclVzZToKLSAgICAgICAgY2FzZSBOb3RDZWxsVXNlOiB7Ci0gICAgICAgICAgICBM
b3dlcmVkTm9kZVZhbHVlIHZhbHVlID0gbV9pbnQzMlZhbHVlcy5nZXQobV9ub2RlLT5jaGlsZDEo
KS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAg
ICAgICAgc2V0SW50MzIodmFsdWUudmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZhbHVlID0gbV9qc1ZhbHVl
VmFsdWVzLmdldChtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoaXNW
YWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMihudW1iZXJPck5vdENlbGxU
b0ludDMyKG1fbm9kZS0+Y2hpbGQxKCksIHZhbHVlLnZhbHVlKCkpKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFsdWUg
PSBtX2RvdWJsZVZhbHVlcy5nZXQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwotICAgICAgICAg
ICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIoZG91Ymxl
VG9JbnQzMih2YWx1ZS52YWx1ZSgpKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFdlJ2xsIGJhc2ljYWxseSBqdXN0
IGdldCBoZXJlIGZvciBjb25zdGFudHMuIEJ1dCBpdCdzIGdvb2QgdG8gaGF2ZSB0aGlzCi0gICAg
ICAgICAgICAvLyBjYXRjaC1hbGwgc2luY2Ugd2Ugb2Z0ZW4gYWRkIG5ldyByZXByZXNlbnRhdGlv
bnMgaW50byB0aGUgbWl4LgotICAgICAgICAgICAgc2V0SW50MzIoCi0gICAgICAgICAgICAgICAg
bnVtYmVyT3JOb3RDZWxsVG9JbnQzMigKLSAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGls
ZDEoKSwKLSAgICAgICAgICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQm9vbGVhblVzZToKLSAgICAgICAgICAgIHNl
dEludDMyKG1fb3V0Lnplcm9FeHQobG93Qm9vbGVhbihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQu
aW50MzIpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIGNvbXBpbGVJbnQ1MlRvVmFs
dWUoKQotICAgIHsKLSAgICAgICAgc2V0SlNWYWx1ZShsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQx
KCkpKTsKLSAgICB9Ci0KICAgICB2b2lkIGNvbXBpbGVVcHNpbG9uKCkKICAgICB7CiAgICAgICAg
IExWYWx1ZSBkZXN0aW5hdGlvbiA9IG1fcGhpcy5nZXQobV9ub2RlLT5waGkoKSk7CiAgICAgICAg
IAogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7Ci0gICAgICAg
IGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAg
IG1fb3V0LnNldChsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgbV9v
dXQuc2V0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLCBkZXN0aW5hdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBjYXNlIElu
dDUyUmVwVXNlOgogICAgICAgICAgICAgbV9vdXQuc2V0KGxvd0ludDUyKG1fbm9kZS0+Y2hpbGQx
KCkpLCBkZXN0aW5hdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCb29s
ZWFuVXNlOgpAQCAtNzIyLDcgKzY3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBzb3Vy
Y2UgPSBtX3BoaXMuZ2V0KG1fbm9kZSk7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+ZmxhZ3MoKSAmIE5vZGVSZXN1bHRNYXNrKSB7Ci0gICAgICAgIGNhc2UgTm9kZVJlc3VsdE51
bWJlcjoKKyAgICAgICAgY2FzZSBOb2RlUmVzdWx0RG91YmxlOgogICAgICAgICAgICAgc2V0RG91
YmxlKG1fb3V0LmdldChzb3VyY2UpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IE5vZGVSZXN1bHRJbnQzMjoKQEAgLTc0MiwxNyArNjk2LDEyMCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9pZCBjb21waWxlRG91
YmxlQ29uc3RhbnQoKQorICAgIHsKKyAgICAgICAgc2V0RG91YmxlKG1fb3V0LmNvbnN0RG91Ymxl
KG1fZ3JhcGgudmFsdWVPZk51bWJlckNvbnN0YW50KG1fbm9kZSkpKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBjb21waWxlSW50NTJDb25zdGFudCgpCisgICAgeworICAgICAgICBpbnQ2NF90IHZh
bHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChtX25vZGUpLmFzTWFjaGluZUludCgpOwor
ICAgICAgICAKKyAgICAgICAgc2V0SW50NTIobV9vdXQuY29uc3RJbnQ2NCh2YWx1ZSA8PCBKU1Zh
bHVlOjppbnQ1MlNoaWZ0QW1vdW50KSk7CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmNv
bnN0SW50NjQodmFsdWUpKTsKKyAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVXZWFrSlNDb25zdGFu
dCgpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKHdlYWtQb2ludGVyKG1fbm9kZS0+d2Vha0Nv
bnN0YW50KCkpKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBjb21waWxlUGhhbnRvbUFyZ3VtZW50
cygpCiAgICAgewogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlV2Vha0pT
Q29uc3RhbnQoKQorICAgIHZvaWQgY29tcGlsZURvdWJsZVJlcCgpCiAgICAgewotICAgICAgICBz
ZXRKU1ZhbHVlKHdlYWtQb2ludGVyKG1fbm9kZS0+d2Vha0NvbnN0YW50KCkpKTsKKyAgICAgICAg
c3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIE51bWJl
clVzZTogeworICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgc2V0RG91Ymxl
KGpzVmFsdWVUb0RvdWJsZShtX25vZGUtPmNoaWxkMSgpLCB2YWx1ZSkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVz
ZTogeworICAgICAgICAgICAgc2V0RG91YmxlKHN0cmljdEludDUyVG9Eb3VibGUobG93U3RyaWN0
SW50NTIobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgY29t
cGlsZVZhbHVlUmVwKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKKyAgICAgICAgICAgIHNl
dEpTVmFsdWUoYm94RG91YmxlKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ1
MlJlcFVzZTogeworICAgICAgICAgICAgc2V0SlNWYWx1ZShzdHJpY3RJbnQ1MlRvSlNWYWx1ZShs
b3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgCisgICAg
dm9pZCBjb21waWxlSW50NTJSZXAoKQorICAgIHsKKyAgICAgICAgc2V0U3RyaWN0SW50NTIobV9v
dXQuc2lnbkV4dChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuaW50NjQpKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBjb21waWxlVmFsdWVUb0ludDMyKCkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBJbnQz
MlVzZToKKyAgICAgICAgICAgIHNldEludDMyKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSW50NTJSZXBV
c2U6CisgICAgICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihsb3dTdHJpY3RJbnQ1
MihtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
KyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgICAgICBzZXRJbnQzMihkb3VibGVU
b0ludDMyKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgTm90
Q2VsbFVzZTogeworICAgICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1faW50MzJW
YWx1ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmIChpc1Zh
bGlkKHZhbHVlKSkgeworICAgICAgICAgICAgICAgIHNldEludDMyKHZhbHVlLnZhbHVlKCkpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQobV9ub2RlLT5jaGlsZDEoKS5ub2Rl
KCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICAgICAg
c2V0SW50MzIobnVtYmVyT3JOb3RDZWxsVG9JbnQzMihtX25vZGUtPmNoaWxkMSgpLCB2YWx1ZS52
YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vIFdlJ2xsIGJhc2ljYWxseSBqdXN0IGdldCBoZXJlIGZvciBj
b25zdGFudHMuIEJ1dCBpdCdzIGdvb2QgdG8gaGF2ZSB0aGlzCisgICAgICAgICAgICAvLyBjYXRj
aC1hbGwgc2luY2Ugd2Ugb2Z0ZW4gYWRkIG5ldyByZXByZXNlbnRhdGlvbnMgaW50byB0aGUgbWl4
LgorICAgICAgICAgICAgc2V0SW50MzIoCisgICAgICAgICAgICAgICAgbnVtYmVyT3JOb3RDZWxs
VG9JbnQzMigKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDEoKSwKKyAgICAgICAg
ICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgQm9vbGVhblVzZToKKyAgICAgICAgICAgIHNldEludDMyKG1fb3V0Lnpl
cm9FeHQobG93Qm9vbGVhbihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuaW50MzIpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVHZXRBcmd1bWVudCgpCiAgICAgewogICAg
ICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbV9ub2RlLT52YXJpYWJsZUFjY2Vz
c0RhdGEoKTsKQEAgLTk2Niw3ICsxMDIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7
CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAgICAgICAgICAgIGlmICghbV9zdGF0ZS5m
b3JOb2RlKG1fbm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1MikKICAgICAgICAg
ICAgICAgICAmJiAhbV9zdGF0ZS5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQyKCkpLmNvdWxkQmVUeXBl
KFNwZWNJbnQ1MikpIHsKICAgICAgICAgICAgICAgICBJbnQ1MktpbmQga2luZDsKQEAgLTEwMTYs
NyArMTA3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91Ymxl
UmVwVXNlOiB7CiAgICAgICAgICAgICBMVmFsdWUgQzEgPSBsb3dEb3VibGUobV9ub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICBMVmFsdWUgQzIgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIo
KSk7CiAKQEAgLTEwNjUsNyArMTEyMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogewor
ICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAgICAgICBJbnQ1MktpbmQga2luZDsK
ICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5jaGls
ZDEoKSwga2luZCk7CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQ1MihtX25vZGUt
PmNoaWxkMigpLCBvcHBvc2l0ZShraW5kKSk7CkBAIC0xMDkyLDcgKzExNDksNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBj
YXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAg
ICAgc2V0RG91YmxlKAogICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZU11bChsb3dEb3VibGUo
bV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xMTk1LDcgKzEyNTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTog
eworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgc2V0RG91YmxlKG1f
b3V0LmRvdWJsZURpdigKICAgICAgICAgICAgICAgICBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEo
KSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMjkzLDcgKzEzNTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNl
IERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgc2V0RG91YmxlKAogICAgICAgICAgICAgICAg
IG1fb3V0LmRvdWJsZVJlbShsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZSht
X25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzIxLDcgKzEzNzgs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAg
IAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTog
ewogICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgICAgICAKQEAgLTEzNzEsNyArMTQyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNl
OiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBzZXREb3VibGUo
bV9vdXQuZG91YmxlQWJzKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0MTgsNyArMTQ3NSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTWFj
aGluZUludFVzZTogeworICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAgICAgICBp
ZiAoIW1fc3RhdGUuZm9yTm9kZShtX25vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50
NTIpKSB7CiAgICAgICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CiAgICAgICAgICAgICAgICAg
TFZhbHVlIHZhbHVlID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5jaGlsZDEoKSwga2luZCk7
CkBAIC0xNDM4LDcgKzE0OTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBj
YXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0LmRvdWJsZU5l
Zyhsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC0xNDk4LDExICsxNTU1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0SW50MzIo
dmFsdWUpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVJbnQzMlRvRG91YmxlKCkKLSAg
ICB7Ci0gICAgICAgIHNldERvdWJsZShsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpOwotICAg
IH0KLSAgICAKICAgICB2b2lkIGNvbXBpbGVDaGVja1N0cnVjdHVyZSgpCiAgICAgewogICAgICAg
ICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CkBAIC0yMjEzLDcgKzIy
NjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAg
ICAgICAgICAgICAgICAgICBMVmFsdWUgaW50VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAoY2hpbGQzLnVzZUtpbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIE1hY2hp
bmVJbnRVc2U6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChjaGlsZDMudXNlS2luZCgpID09IEludDMyVXNlKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludFZhbHVlID0gbG93SW50MzIoY2hpbGQzKTsKQEAgLTIyNDYsNyArMjI5OCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
TnVtYmVyVXNlOiB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBMVmFsdWUgZG91YmxlVmFsdWUgPSBsb3dEb3VibGUoY2hp
bGQzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGlzQ2xhbXBlZCh0eXBlKSkgewpAQCAtMzMyOCw4ICszMzgwLDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNvbXBpbGVDb21wYXJlRXEoKQogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEludDMyVXNlKQotICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoTWFjaGluZUludFVzZSkKLSAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE51bWJlclVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKElu
dDUyUmVwVXNlKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91Ymxl
UmVwVXNlKQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNl
KQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVhblVzZSkKICAg
ICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkgewpA
QCAtMzM3MSw3ICszNDIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hp
bmVJbnRVc2UpKSB7CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJl
cFVzZSkpIHsKICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAgICAgICAgTFZhbHVl
IGxlZnQgPSBsb3dXaGljaGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBraW5kKTsKICAgICAg
ICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0ludDUyKG1fbm9kZS0+Y2hpbGQyKCksIGtpbmQpOwpA
QCAtMzM3OSw3ICszNDMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJl
clVzZSkpIHsKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVz
ZSkpIHsKICAgICAgICAgICAgIHNldEJvb2xlYW4oCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91
YmxlRXF1YWwobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUobV9ub2RlLT5j
aGlsZDIoKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQxMjMsNyArNDE3NSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkgeworICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7CiAgICAgICAgICAgICBJ
bnQ1MktpbmQga2luZDsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50
NTIobV9ub2RlLT5jaGlsZDEoKSwga2luZCk7CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBs
b3dJbnQ1MihtX25vZGUtPmNoaWxkMigpLCBraW5kKTsKQEAgLTQxMzEsNyArNDE4Myw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CisgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpKSB7CiAgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1
ZSByaWdodCA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIHNldEJv
b2xlYW4obV9vdXQuZmNtcChyZWFsQ29uZGl0aW9uLCBsZWZ0LCByaWdodCkpOwpAQCAtNDM4OCw3
ICs0NDQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBsb3dCb29sZWFuKG1fbm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgcmV0dXJu
IG1fb3V0Lm5vdFplcm8zMihsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7Ci0gICAgICAgIGNh
c2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIHJl
dHVybiBtX291dC5kb3VibGVOb3RFcXVhbChsb3dEb3VibGUoZWRnZSksIG1fb3V0LmRvdWJsZVpl
cm8pOwogICAgICAgICBjYXNlIE9iamVjdE9yT3RoZXJVc2U6CiAgICAgICAgICAgICByZXR1cm4g
bV9vdXQuYml0Tm90KApAQCAtNDczNCwyMSArNDc4Niw5IEBAIHByaXZhdGU6CiAgICAgfQogICAg
IAogICAgIGVudW0gSW50NTJLaW5kIHsgU3RyaWN0SW50NTIsIEludDUyIH07Ci0gICAgTFZhbHVl
IGxvd0ludDUyKEVkZ2UgZWRnZSwgSW50NTJLaW5kIGtpbmQsIE9wZXJhbmRTcGVjdWxhdGlvbk1v
ZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93SW50
NTIoRWRnZSBlZGdlLCBJbnQ1MktpbmQga2luZCkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVT
RUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5k
KCkgPT0gTWFjaGluZUludFVzZSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoZWRnZS0+aGFzQ29u
c3RhbnQoKSkgewotICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZkpT
Q29uc3RhbnQoZWRnZS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc01hY2hpbmVJ
bnQoKSkgewotICAgICAgICAgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1fb3V0LmludDY0WmVybzsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGludDY0X3QgcmVzdWx0ID0gdmFsdWUuYXNNYWNoaW5lSW50KCk7Ci0gICAgICAgICAgICBp
ZiAoa2luZCA9PSBJbnQ1MikKLSAgICAgICAgICAgICAgICByZXN1bHQgPDw9IEpTVmFsdWU6Omlu
dDUyU2hpZnRBbW91bnQ7Ci0gICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnQ2NChyZXN1
bHQpOwotICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09
IEludDUyUmVwVXNlKTsKICAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWU7
CiAgICAgICAgIApAQCAtNDc3MywzNyArNDgxMywyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIHJldHVybiBpbnQ1MlRvU3RyaWN0SW50NTIodmFsdWUudmFsdWUoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX2ludDMyVmFs
dWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAg
ICAgICAgICAgcmV0dXJuIHNldEludDUyV2l0aFN0cmljdFZhbHVlKAotICAgICAgICAgICAgICAg
IGVkZ2Uubm9kZSgpLCBtX291dC5zaWduRXh0KHZhbHVlLnZhbHVlKCksIG1fb3V0LmludDY0KSwg
a2luZCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCEobV9z
dGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIFNwZWNJbnQ1MikpOwotICAgICAgICAKLSAgICAg
ICAgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYg
KGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSB2YWx1
ZS52YWx1ZSgpOwotICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAg
anNWYWx1ZVZhbHVlKGJveGVkUmVzdWx0KSwgZWRnZSwgU3BlY01hY2hpbmVJbnQsIGlzTm90SW50
MzIoYm94ZWRSZXN1bHQpKTsKLSAgICAgICAgICAgIHJldHVybiBzZXRJbnQ1MldpdGhTdHJpY3RW
YWx1ZSgKLSAgICAgICAgICAgICAgICBlZGdlLm5vZGUoKSwgbV9vdXQuc2lnbkV4dCh1bmJveElu
dDMyKGJveGVkUmVzdWx0KSwgbV9vdXQuaW50NjQpLCBraW5kKTsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBl
ICYgU3BlY01hY2hpbmVJbnQpKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9zdGF0ZS5m
b3JOb2RlKGVkZ2UpLm1fdHlwZSk7CiAgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7CiAg
ICAgICAgIHJldHVybiBtX291dC5pbnQ2NFplcm87CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBs
b3dJbnQ1MihFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRp
Y09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93SW50NTIoRWRnZSBlZGdlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGxvd0ludDUyKGVkZ2UsIEludDUyLCBtb2RlKTsKKyAgICAgICAg
cmV0dXJuIGxvd0ludDUyKGVkZ2UsIEludDUyKTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIGxv
d1N0cmljdEludDUyKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIExWYWx1ZSBsb3dTdHJpY3RJbnQ1MihFZGdl
IGVkZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gbG93SW50NTIoZWRnZSwgU3RyaWN0SW50NTIs
IG1vZGUpOworICAgICAgICByZXR1cm4gbG93SW50NTIoZWRnZSwgU3RyaWN0SW50NTIpOwogICAg
IH0KICAgICAKICAgICBib29sIGJldHRlclVzZVN0cmljdEludDUyKE5vZGUqIG5vZGUpCkBAIC00
ODMwLDEwICs0ODUzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBsb3dXaGljaGV2ZXJJbnQ1MihFZGdl
IGVkZ2UsIEludDUyS2luZCYga2luZCwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIExWYWx1ZSBsb3dXaGljaGV2ZXJJbnQ1MihF
ZGdlIGVkZ2UsIEludDUyS2luZCYga2luZCkKICAgICB7CiAgICAgICAgIGtpbmQgPSBiZXN0SW50
NTJLaW5kKGVkZ2UpOwotICAgICAgICByZXR1cm4gbG93SW50NTIoZWRnZSwga2luZCwgbW9kZSk7
CisgICAgICAgIHJldHVybiBsb3dJbnQ1MihlZGdlLCBraW5kKTsKICAgICB9CiAgICAgCiAgICAg
TFZhbHVlIGxvd0NlbGwoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBB
dXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCkBAIC00OTMxLDcxICs0OTU0LDE1IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBtX291dC5ib29sZWFuRmFsc2U7CiAgICAgfQogICAgIAotICAg
IExWYWx1ZSBsb3dEb3VibGUoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUg
PSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgTFZhbHVlIGxvd0RvdWJsZShFZGdl
IGVkZ2UpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uIHx8IGlzRG91YmxlKGVkZ2UudXNlS2luZCgpKSk7Ci0gICAgICAg
IAotICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewotICAgICAgICAgICAgSlNWYWx1
ZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpOwotICAgICAg
ICAgICAgaWYgKCF2YWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgdGVybWluYXRl
KFVuY291bnRhYmxlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuZG91YmxlWmVybzsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBtX291dC5jb25zdERvdWJsZSh2YWx1
ZS5hc051bWJlcigpKTsKLSAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0RvdWJs
ZShlZGdlLnVzZUtpbmQoKSkpOwogICAgICAgICAKICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2
YWx1ZSA9IG1fZG91YmxlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1Zh
bGlkKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZSgpOwogICAgICAgICAK
LSAgICAgICAgdmFsdWUgPSBtX2ludDMyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAg
IGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0
LmludFRvRG91YmxlKHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAgICAgc2V0RG91YmxlKGVkZ2Uu
bm9kZSgpLCByZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX3N0cmljdEludDUyVmFsdWVzLmdldChlZGdlLm5v
ZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBz
dHJpY3RJbnQ1MlRvRG91YmxlKGVkZ2UsIHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAKLSAgICAg
ICAgdmFsdWUgPSBtX2ludDUyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChp
c1ZhbGlkKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ1MlRvRG91YmxlKGVk
Z2UsIGludDUyVG9TdHJpY3RJbnQ1Mih2YWx1ZS52YWx1ZSgpKSk7Ci0gICAgICAgIAotICAgICAg
ICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAo
aXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IHZhbHVl
LnZhbHVlKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGludENhc2Ug
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZSB1bmJveGluZyBpbnQgY2FzZSIpKTsKLSAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAo
IkRvdWJsZSB1bmJveGluZyBkb3VibGUgY2FzZSIpKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRG91YmxlIHVuYm94aW5nIGNv
bnRpbnVhdGlvbiIpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlz
Tm90SW50MzIoYm94ZWRSZXN1bHQpLCB1bnN1cmUoZG91YmxlQ2FzZSksIHVuc3VyZShpbnRDYXNl
KSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8oaW50Q2FzZSwgZG91YmxlQ2FzZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGludFRvRG91YmxlID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAg
ICAgICAgIG1fb3V0LmludFRvRG91YmxlKHVuYm94SW50MzIoYm94ZWRSZXN1bHQpKSk7Ci0gICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGRvdWJsZUNhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgIGpzVmFsdWVW
YWx1ZShib3hlZFJlc3VsdCksIGVkZ2UsIFNwZWNGdWxsTnVtYmVyLCBpc0NlbGxPck1pc2MoYm94
ZWRSZXN1bHQpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgdW5i
b3hlZERvdWJsZSA9IG1fb3V0LmFuY2hvcih1bmJveERvdWJsZShib3hlZFJlc3VsdCkpOwotICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnBoaShtX291dC5kb3VibGVUeXBl
LCBpbnRUb0RvdWJsZSwgdW5ib3hlZERvdWJsZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IHNldERvdWJsZShlZGdlLm5vZGUoKSwgcmVzdWx0KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCEobV9zdGF0
ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIFNwZWNGdWxsTnVtYmVyKSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlKTsKICAgICAgICAgdGVybWlu
YXRlKFVuY291bnRhYmxlKTsKICAgICAgICAgcmV0dXJuIG1fb3V0LmRvdWJsZVplcm87CiAgICAg
fQpAQCAtNTAwMyw2ICs0OTcwLDggQEAgcHJpdmF0ZToKICAgICBMVmFsdWUgbG93SlNWYWx1ZShF
ZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRT
cGVjdWxhdGlvbikKICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSAhPSBJbnQ1MlJlcFVzZSk7CiAgICAg
ICAgIAogICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIHJldHVy
biBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0
YW50KGVkZ2Uubm9kZSgpKSkpOwpAQCAtNTAxOCwxNCArNDk4Nyw2IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2YWx1
ZSA9IG1fc3RyaWN0SW50NTJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlz
VmFsaWQodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDUyVG9KU1ZhbHVlKHZh
bHVlLnZhbHVlKCkpOwotICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX2ludDUyVmFsdWVzLmdl
dChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKLSAgICAgICAgICAg
IHJldHVybiBzdHJpY3RJbnQ1MlRvSlNWYWx1ZShpbnQ1MlRvU3RyaWN0SW50NTIodmFsdWUudmFs
dWUoKSkpOwotICAgICAgICAKICAgICAgICAgdmFsdWUgPSBtX2Jvb2xlYW5WYWx1ZXMuZ2V0KGVk
Z2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CiAgICAgICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gYm94Qm9vbGVhbih2YWx1ZS52YWx1ZSgpKTsKQEAgLTUwMzMsMTMgKzQ5
OTQsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX2RvdWJsZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkp
OwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSBib3hEb3VibGUodmFsdWUudmFsdWUoKSk7Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKGVk
Z2Uubm9kZSgpLCByZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAg
fQotICAgICAgICAKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNTA2NSwxMSArNTAxOSw5IEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBzdHJpY3RJbnQ1MlRv
RG91YmxlKEVkZ2UgZWRnZSwgTFZhbHVlIHZhbHVlKQorICAgIExWYWx1ZSBzdHJpY3RJbnQ1MlRv
RG91YmxlKExWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291
dC5pbnRUb0RvdWJsZSh2YWx1ZSk7Ci0gICAgICAgIHNldERvdWJsZShlZGdlLm5vZGUoKSwgcmVz
dWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmludFRv
RG91YmxlKHZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIHN0cmljdEludDUyVG9KU1Zh
bHVlKExWYWx1ZSB2YWx1ZSkKQEAgLTUwOTksMjMgKzUwNTEsNiBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gbV9vdXQucGhpKG1fb3V0LmludDY0LCByZXN1bHRzKTsKICAgICB9CiAgICAgCi0g
ICAgTFZhbHVlIHNldEludDUyV2l0aFN0cmljdFZhbHVlKE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1
ZSwgSW50NTJLaW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAg
ICAgY2FzZSBTdHJpY3RJbnQ1MjoKLSAgICAgICAgICAgIHNldFN0cmljdEludDUyKG5vZGUsIHZh
bHVlKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgICAgIAotICAgICAgICBj
YXNlIEludDUyOgotICAgICAgICAgICAgdmFsdWUgPSBzdHJpY3RJbnQ1MlRvSW50NTIodmFsdWUp
OwotICAgICAgICAgICAgc2V0SW50NTIobm9kZSwgdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJu
IHZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBMVmFsdWUgc3RyaWN0
SW50NTJUb0ludDUyKExWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5z
aGwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCkpOwpA
QCAtNTE0Nyw2ICs1MDgyLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX291
dC50ZXN0Tm9uWmVybzY0KGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlcik7CiAgICAgfQorICAgIAog
ICAgIExWYWx1ZSB1bmJveERvdWJsZShMVmFsdWUganNWYWx1ZSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBtX291dC5iaXRDYXN0KG1fb3V0LmFkZChqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpLCBt
X291dC5kb3VibGVUeXBlKTsKQEAgLTUxNTUsNiArNTA5MSwzOSBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fb3V0LnN1YihtX291dC5iaXRDYXN0KGRvdWJsZVZhbHVlLCBtX291
dC5pbnQ2NCksIG1fdGFnVHlwZU51bWJlcik7CiAgICAgfQorICAgIExWYWx1ZSBqc1ZhbHVlVG9E
b3VibGUoRWRnZSBlZGdlLCBMVmFsdWUgYm94ZWRWYWx1ZSkKKyAgICB7CisgICAgICAgIExCYXNp
Y0Jsb2NrIGludENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZVJlcCB1bmJveGlu
ZyBpbnQgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgZG91YmxlQ2FzZSA9IEZUTF9ORVdf
QkxPQ0sobV9vdXQsICgiRG91YmxlUmVwIHVuYm94aW5nIGRvdWJsZSBjYXNlIikpOworICAgICAg
ICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJs
ZVJlcCB1bmJveGluZyBjb250aW51YXRpb24iKSk7CisgICAgICAgICAgICAKKyAgICAgICAgTFZh
bHVlIGlzTm90SW50MzI7CisgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVj
ayhlZGdlLCBTcGVjSW50MzIpKQorICAgICAgICAgICAgaXNOb3RJbnQzMiA9IG1fb3V0LmJvb2xl
YW5GYWxzZTsKKyAgICAgICAgZWxzZSBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2so
ZWRnZSwgflNwZWNJbnQzMikpCisgICAgICAgICAgICBpc05vdEludDMyID0gbV9vdXQuYm9vbGVh
blRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlzTm90SW50MzIgPSB0aGlzLT5pc05v
dEludDMyKGJveGVkVmFsdWUpOworICAgICAgICBtX291dC5icmFuY2goaXNOb3RJbnQzMiwgdW5z
dXJlKGRvdWJsZUNhc2UpLCB1bnN1cmUoaW50Q2FzZSkpOworICAgICAgICAgICAgCisgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW50Q2FzZSwgZG91YmxlQ2Fz
ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgaW50VG9Eb3VibGUgPSBt
X291dC5hbmNob3IoCisgICAgICAgICAgICBtX291dC5pbnRUb0RvdWJsZSh1bmJveEludDMyKGJv
eGVkVmFsdWUpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAg
ICAgIAorICAgICAgICBtX291dC5hcHBlbmRUbyhkb3VibGVDYXNlLCBjb250aW51YXRpb24pOwor
ICAgICAgICAgICAgCisgICAgICAgIEZUTF9UWVBFX0NIRUNLKAorICAgICAgICAgICAganNWYWx1
ZVZhbHVlKGJveGVkVmFsdWUpLCBlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIsIGlzQ2VsbE9yTWlz
Yyhib3hlZFZhbHVlKSk7CisgICAgICAgICAgICAKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgdW5i
b3hlZERvdWJsZSA9IG1fb3V0LmFuY2hvcih1bmJveERvdWJsZShib3hlZFZhbHVlKSk7CisgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIAorICAgICAg
ICByZXR1cm4gbV9vdXQucGhpKG1fb3V0LmRvdWJsZVR5cGUsIGludFRvRG91YmxlLCB1bmJveGVk
RG91YmxlKTsKKyAgICB9CiAgICAgCiAgICAgTFZhbHVlIGlzTnVtYmVyKExWYWx1ZSBqc1ZhbHVl
KQogICAgIHsKQEAgLTUyMjYsOCArNTE5NSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVW50
eXBlZFVzZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6
Ci0gICAgICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CiAgICAgICAgIGNhc2UgS25vd25TdHJpbmdV
c2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNl
OgogICAgICAgICAgICAgQVNTRVJUKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2Up
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEludDMyVXNlOgpAQCAtNTI2MCwx
NCArNTIzMCwxMSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0
VXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QoZWRnZSk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgICAgICAg
ICAgc3BlY3VsYXRlUmVhbE51bWJlcihlZGdlKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIE51bWJlclVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZU51bWJlcihlZGdlKTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Ci0gICAgICAgICAg
ICBzcGVjdWxhdGVNYWNoaW5lSW50KGVkZ2UpOworICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxV
c2U6CisgICAgICAgICAgICBzcGVjdWxhdGVEb3VibGVSZWFsKGVkZ2UpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZUJv
b2xlYW4oZWRnZSk7CkBAIC01NTI5LDE0ICs1NDk2LDExIEBAIHByaXZhdGU6CiAgICAgCiAgICAg
dm9pZCBzcGVjdWxhdGVOdW1iZXIoRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAgLy8gRG8gYW4g
ZWFybHkgcmV0dXJuIGhlcmUgYmVjYXVzZSBsb3dEb3VibGUoKSBjYW4gY3JlYXRlIGEgbG90IG9m
IGNvbnRyb2wgZmxvdy4KLSAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNr
KGVkZ2UpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgbG93RG91Ymxl
KGVkZ2UpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2
YWx1ZSksIGVkZ2UsIFNwZWNCeXRlY29kZU51bWJlciwgaXNOb3ROdW1iZXIodmFsdWUpKTsKICAg
ICB9CiAgICAgCi0gICAgdm9pZCBzcGVjdWxhdGVSZWFsTnVtYmVyKEVkZ2UgZWRnZSkKKyAgICB2
b2lkIHNwZWN1bGF0ZURvdWJsZVJlYWwoRWRnZSBlZGdlKQogICAgIHsKICAgICAgICAgLy8gRG8g
YW4gZWFybHkgcmV0dXJuIGhlcmUgYmVjYXVzZSBsb3dEb3VibGUoKSBjYW4gY3JlYXRlIGEgbG90
IG9mIGNvbnRyb2wgZmxvdy4KICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNo
ZWNrKGVkZ2UpKQpAQCAtNTU0NCwxOSArNTUwOCwxMCBAQCBwcml2YXRlOgogICAgICAgICAKICAg
ICAgICAgTFZhbHVlIHZhbHVlID0gbG93RG91YmxlKGVkZ2UpOwogICAgICAgICBGVExfVFlQRV9D
SEVDSygKLSAgICAgICAgICAgIGRvdWJsZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0Z1bGxSZWFs
TnVtYmVyLAorICAgICAgICAgICAgZG91YmxlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjRG91Ymxl
UmVhbCwKICAgICAgICAgICAgIG1fb3V0LmRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQodmFsdWUs
IHZhbHVlKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc3BlY3VsYXRlTWFjaGluZUludChFZGdl
IGVkZ2UpCi0gICAgewotICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2so
ZWRnZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBJbnQ1MktpbmQg
a2luZDsKLSAgICAgICAgbG93V2hpY2hldmVySW50NTIoZWRnZSwga2luZCk7Ci0gICAgfQotICAg
IAogICAgIHZvaWQgc3BlY3VsYXRlQm9vbGVhbihFZGdlIGVkZ2UpCiAgICAgewogICAgICAgICBs
b3dCb29sZWFuKGVkZ2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1
ZUZvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExW
YWx1ZUZvcm1hdC5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMVmFsdWVGb3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MSw2ICs3MSw3IEBAIHZv
aWQgcmVib3hBY2NvcmRpbmdUb0Zvcm1hdCgKICAgICBjYXNlIFZhbHVlRm9ybWF0RG91YmxlOiB7
CiAgICAgICAgIGppdC5tb3ZlRG91YmxlVG82NChGUFJJbmZvOjpmcFJlZ1QwLCBzY3JhdGNoMSk7
CiAgICAgICAgIGppdC5tb3ZlNjRUb0RvdWJsZSh2YWx1ZSwgRlBSSW5mbzo6ZnBSZWdUMCk7Cisg
ICAgICAgIGppdC5zYW5pdGl6ZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgaml0
LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCB2YWx1ZSk7CiAgICAgICAgIGppdC5tb3ZlNjRU
b0RvdWJsZShzY3JhdGNoMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgIGJyZWFrOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2
aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw2ICs1NCwxNCBAQCBWZWN0b3I8
Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1iCiAgICAgcmV0dXJuIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpzYW5pdGl6ZURvdWJsZShG
UFJSZWcgZnByKQoreworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdE5hTiA9IGJyYW5jaERv
dWJsZShEb3VibGVFcXVhbCwgZnByLCBmcHIpOworICAgIHN0YXRpYyBjb25zdCBkb3VibGUgTmFO
ID0gUU5hTjsKKyAgICBsb2FkRG91YmxlKCZOYU4sIGZwcik7CisgICAgbm90TmFOLmxpbmsodGhp
cyk7Cit9CisKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCiB2b2lkIEFzc2VtYmx5SGVscGVy
czo6c2V0U2FtcGxpbmdGbGFnKGludDMyX3QgZmxhZykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDE3LDYgKzQxNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGppdEFzc2VydFRh
Z3NJblBsYWNlKCkgeyB9CiAgICAgdm9pZCBqaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpIHsg
fQogI2VuZGlmCisgICAgCisgICAgdm9pZCBzYW5pdGl6ZURvdWJsZShGUFJSZWcgZnByKTsKIAog
ICAgIC8vIFRoZXNlIG1ldGhvZHMgY29udmVydCBiZXR3ZWVuIGRvdWJsZXMsIGFuZCBkb3VibGVz
IGJveGVkIGFuZCBKU1ZhbHVlcy4KICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNDM1LDYgKzQzNywx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmcHI7CiAgICAgfQogICAgIAorICAgIHZvaWQg
Ym94RG91YmxlKEZQUlJlZyBmcHIsIEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgeworICAgICAgICBi
b3hEb3VibGUoZnByLCByZWdzLmdwcigpKTsKKyAgICB9CisgICAgCiAgICAgLy8gSGVyZSBhcmUg
cG9zc2libGUgYXJyYW5nZW1lbnRzIG9mIHNvdXJjZSwgdGFyZ2V0LCBzY3JhdGNoOgogICAgIC8v
IC0gc291cmNlLCB0YXJnZXQsIHNjcmF0Y2ggY2FuIGFsbCBiZSBzZXBhcmF0ZSByZWdpc3RlcnMu
CiAgICAgLy8gLSBzb3VyY2UgYW5kIHRhcmdldCBjYW4gYmUgdGhlIHNhbWUgYnV0IHNjcmF0Y2gg
aXMgc2VwYXJhdGUuCkBAIC00NjcsNiArNDc0LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IG1vdmVJbnRzVG9Eb3VibGUocGF5bG9hZEdQUiwgdGFnR1BSLCBmcHIsIHNjcmF0Y2hGUFIpOwog
ICAgIH0KKyAgICAKKyAgICB2b2lkIGJveERvdWJsZShGUFJSZWcgZnByLCBKU1ZhbHVlUmVncyBy
ZWdzKQorICAgIHsKKyAgICAgICAgYm94RG91YmxlKGZwciwgcmVncy50YWdHUFIoKSwgcmVncy5w
YXlsb2FkR1BSKCkpOworICAgIH0KICNlbmRpZgogICAgIAogICAgIGVudW0gRXhjZXB0aW9uQ2hl
Y2tLaW5kIHsgTm9ybWFsRXhjZXB0aW9uQ2hlY2ssIEludmVydGVkRXhjZXB0aW9uQ2hlY2sgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229357</attachid>
            <date>2014-04-14 23:34:46 -0700</date>
            <delta_ts>2014-04-15 12:25:24 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>233016</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3Mjk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2OCBA
QAorMjAxNC0wNC0xNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBJUiBzaG91bGQga2VlcCB0aGUgZGF0YSBmbG93IG9mIGRvdWJsZXMgYW5kIGludDUyJ3Mg
c2VwYXJhdGUgZnJvbSB0aGUgZGF0YSBmbG93IG9mIEpTVmFsdWUncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGludHJvZHVjZXMg
bW9yZSBzdGF0aWMgdHlwaW5nIGludG8gREZHIElSLiBQcmV2aW91c2x5IHdlIGp1c3QgaGFkIHRo
ZSBub3Rpb24gb2YKKyAgICAgICAgSlNWYWx1ZXMgYW5kIFN0b3JhZ2UuIFRoaXMgd2FzIHdlaXJk
IGJlY2F1c2UgZG91YmxlcyB3ZXJlbid0IGFsd2F5cyBjb252ZXJ0aWJsZSB0bworICAgICAgICBK
U1ZhbHVlcywgYW5kIEludDUycyB3ZXJlbid0IGFsd2F5cyBjb252ZXJ0aWJsZSB0byBlaXRoZXIg
ZG91YmxlcyBvciBKU1ZhbHVlcy4gV2Ugd291bGQKKyAgICAgICAgc29ydCBvZiBpbnNlcnQgZXhw
bGljaXQgY29udmVyc2lvbiBub2RlcyBqdXN0IGZvciB0aGUgcGxhY2VzIHdoZXJlIHdlIGtuZXcg
dGhhdCBhbgorICAgICAgICBpbXBsaWNpdCBjb252ZXJzaW9uIHdvdWxkbid0IGhhdmUgYmVlbiBw
b3NzaWJsZSAtLSBidXQgdGhlcmUgd2FzIG5vIGhhcmQgYW5kIGZhc3QgcnVsZSBzbworICAgICAg
ICB3ZSdkIGdldCBidWdzIGZyb20gZm9yZ2V0dGluZyB0byBkbyB0aGUgcmlnaHQgY29udmVyc2lv
bi4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmQgYW5kIGZh
c3QgcnVsZTogZG91YmxlcyBjYW4gbmV2ZXIgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8KKyAg
ICAgICAgYW55dGhpbmcgYnV0IGRvdWJsZXMsIGFuZCBsaWtld2lzZSBJbnQ1MidzIGNhbiBuZXZl
ciBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZC4gQ29udmVyc2lvbgorICAgICAgICBub2RlcyBhcmUg
dXNlZCBmb3IgYWxsIG9mIHRoZSBjb252ZXJzaW9ucy4gSW50NTJSZXAsIERvdWJsZVJlcCwgYW5k
IFZhbHVlUmVwIGFyZSB0aGUKKyAgICAgICAgY29udmVyc2lvbnMuIFRoZXkgYXJlIGxpa2UgSWRl
bnRpdHkgYnV0IHJldHVybiB0aGUgc2FtZSB2YWx1ZSB1c2luZyBhIGRpZmZlcmVudAorICAgICAg
ICByZXByZXNlbnRhdGlvbi4gTGlrZXdpc2UsIGNvbnN0YW50cyBtYXkgbm93IGJlIHJlcHJlc2Vu
dGVkIHVzaW5nIGVpdGhlciBKU0NvbnN0YW50LAorICAgICAgICBJbnQ1MkNvbnN0YW50LCBvciBE
b3VibGVDb25zdGFudC4gVXNlS2luZHMgaGF2ZSBiZWVuIGFkanVzdGVkIGFjY29yZGluZ2x5LCBh
cyB3ZWxsLgorICAgICAgICBJbnQ1MlJlcFVzZSBhbmQgRG91YmxlUmVwVXNlIGFyZSBub2RlIHVz
ZXMgdGhhdCBtZWFuICJ0aGUgbm9kZSBtdXN0IGJlIG9mIEludDUyIChvcgorICAgICAgICBEb3Vi
bGUpIHR5cGUiLiBUaGV5IGRvbid0IGltcGx5IGNoZWNrcy4gVGhlcmUgaXMgYWxzbyBEb3VibGVS
ZXBSZWFsVXNlLCB3aGljaCBtZWFucyB0aGF0CisgICAgICAgIHdlIHNwZWN1bGF0ZSBEb3VibGVS
ZWFsIGFuZCBleHBlY3QgRG91YmxlIHJlcHJlc2VudGF0aW9uLgorICAgICAgICAKKyAgICAgICAg
SW4gYWRkaXRpb24gdG8gc2ltcGxpZnlpbmcgYSBidW5jaCBvZiBydWxlcyBpbiB0aGUgSVIgYW5k
IG1ha2luZyB0aGUgSVIgbW9yZSB2ZXJpZmlhYmxlLAorICAgICAgICB0aGlzIGFsc28gbWFrZXMg
aXQgZWFzaWVyIHRvIGludHJvZHVjZSBvcHRpbWl6YXRpb25zIGluIHRoZSBmdXR1cmUuIEl0J3Mg
bm93IHBvc3NpYmxlIGZvcgorICAgICAgICBBSSB0byBtb2RlbCB3aGVuL2hvdyBjb252ZXJzaW9u
IHRha2UgcGxhY2UuIEZvciBleGFtcGxlIGlmIGRvaW5nIGEgY29udmVyc2lvbiByZXN1bHRzIGlu
CisgICAgICAgIE5hTiBzYW5pdGl6YXRpb24sIHRoZW4gQUkgY2FuIG1vZGVsIHRoaXMgYW5kIGNh
biBhbGxvdyB1cyB0byBzaW5rIHNhbml0aXphdGlvbnMuIFRoYXQncworICAgICAgICB3aGF0IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE0MTkgd2lsbCBiZSBhbGwg
YWJvdXQuCisgICAgICAgIAorICAgICAgICBUaGlzIHdhcyBhIGJpZyBjaGFuZ2UsIHNvIEkgaGFk
IHRvIGRvIHNvbWUgaW50ZXJlc3RpbmcgdGhpbmdzLCBsaWtlIGZpbmFsbHkgZ2V0IHJpZCBvZgor
ICAgICAgICB0aGUgREZHJ3Mgd2VpcmQgdmFyaWFkaWMgdGVtcGxhdGUgbWFjcm8gaGFja3MgYW5k
IHVzZSByZWFsIEMrKzExIHZhcmlhZGljIHRlbXBsYXRlcy4gQWxzbworICAgICAgICB0aGUgQnl0
ZUNvZGVQYXJzZXIgbm8gbG9uZ2VyIGVtaXRzIElkZW50aXR5IG5vZGVzIHNpbmNlIHRoYXQgd2Fz
IGFsd2F5cyBwb2ludGxlc3MuCisgICAgICAgIAorICAgICAgICBObyBwZXJmb3JtYW5jZSBjaGFu
Z2UgYmVjYXVzZSB0aGlzIG1vc3RseSBqdXN0IHJhdGlvbmFsaXplcyBwcmVleGlzdGluZyBiZWhh
dmlvci4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OnNldEJ1aWx0SW5Db25zdGFu
dCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjo6c2V0Q29uc3RhbnQp
OgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RWYWx1ZTo6Zml4VHlwZUZvclJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKEpTQzo6REZH
OjpBYnN0cmFjdFZhbHVlOjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RWYWx1ZS5oOgorICAgICAgICAqIGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlOjpwcm9w
YWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgICogZGZnL0RG
R0Jhc2ljQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QmFzaWNCbG9jazo6YXBw
ZW5kTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6QmFzaWNCbG9jazo6YXBwZW5kTm9uVGVybWlu
YWwpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDU0VQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OmNvbnN0YW50Q1NFKToKKyAg
ICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAoSlND
OjpERkc6OkNTRVBoYXNlOjppbnQzMlRvRG91YmxlQ1NFKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNl
Ojpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRENFUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkRDRVBoYXNlOjpmaXh1cEJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHRWRn
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkVkZ2U6OndpbGxOb3RIYXZlQ2hlY2spOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBHZXRBbmRTZXRMb2NhbHNJbkJsb2NrKToK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpvYnNlcnZlVXNlS2luZE9uTm9kZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4SW50RWRnZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRvTWFrZUludGVnZXJBZGQpOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OmluamVjdFR5cGVDb252ZXJzaW9uc0luQmxvY2spOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnRyeVRvUmVsYXhSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4RWRnZVJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjppbmplY3RUeXBlQ29udmVyc2lvbnNGb3JFZGdlKToK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjphZGRSZXF1aXJlZFBoYW50b20pOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmFkZFBoYW50b21zSWZOZWNlc3NhcnkpOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNsZWFyUGhhbnRvbXNBdEVuZCk6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBTZXRMb2NhbHNJbkJsb2NrKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZmcvREZHRmx1c2hGb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpyZXN1
bHRGb3IpOgorICAgICAgICAoSlNDOjpERkc6OnVzZUtpbmRGb3IpOgorICAgICAgICAqIGRmZy9E
RkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphZGROb2RlKToKKyAg
ICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKiBkZmcvREZH
SW5zZXJ0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjppbnNlcnRO
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb25TZXQ6Omluc2VydENvbnN0YW50KToK
KyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb25TZXQ6Omluc2VydENvbnN0YW50Rm9yVXNlKToK
KyAgICAgICAgKiBkZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlOjppbnNlcnRBZGQpOgorICAg
ICAgICAoSlNDOjpERkc6OkludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlOjppbnNlcnRNdXN0QWRk
KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
Y29udmVydFRvSWRlbnRpdHkpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAg
ICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok5vZGUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OnNldFJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6cmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0NvbnN0YW50KToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6Y29udmVydFRvQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnZhbHVlT2ZK
U0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNSZXN1bHQpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6Omhhc0ludDMyUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNJbnQ1MlJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzTnVtYmVy
UmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNEb3VibGVSZXN1bHQpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0pTUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNCb29sZWFuUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdG9y
YWdlUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpkZWZhdWx0VXNlS2luZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZGVmYXVsdEVkZ2UpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmNvbnZlcnRUb0lkZW50aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9k
ZUZsYWdzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkdW1wTm9kZUZsYWdzKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZUZsYWdzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2Fub25pY2FsUmVzdWx0
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NS
RXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21w
aWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVF
eGl0KToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUp
OgorICAgICAgICAqIGRmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlJlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZTo6cnVuKToK
KyAgICAgICAgKiBkZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTU0FDb252ZXJzaW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6b3BlcmF0b3Io
KSk6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
c2lsZW50U2F2ZVBsYW5Gb3JHUFIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzaWxlbnRTYXZlUGxhbkZvckZQUik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OnNpbGVudEZpbGwpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVSZWdzVGVtcG9yYXJ5
OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeSk6CisgICAgICAgIChKU0M6OkRGRzo6SlNWYWx1ZVJlZ3NU
ZW1wb3Jhcnk6On5KU1ZhbHVlUmVnc1RlbXBvcmFyeSk6CisgICAgICAgIChKU0M6OkRGRzo6SlNW
YWx1ZVJlZ3NUZW1wb3Jhcnk6OnJlZ3MpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXApOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVSZXApOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJy
YXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQWRkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTXVsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZU51bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0ZURvdWJsZVJlYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSW50MzJUb0RvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZU1hY2hpbmVJbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVSZWFsTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp1c2Up
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpib3hEb3VibGUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGlsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmpzVmFsdWVSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0ZUludDUyT3BlcmFuZDo6U3BlY3VsYXRlSW50NTJPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQ6OlNwZWN1bGF0ZVN0cmljdEludDUyT3Bl
cmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5k
OjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0ZURvdWJsZU9wZXJhbmQ6OlNwZWN1bGF0ZURvdWJsZU9wZXJhbmQpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbnZl
cnRUb0RvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVy
bmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUlu
dDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURv
dWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVD
ZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJv
b2xlYW4pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNh
bE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29udmVydFRvRG91YmxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6Zm9sZElkZW50aXR5KToKKyAgICAgICAgKiBkZmcv
REZHVXNlS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6Cisg
ICAgICAgIChKU0M6OkRGRzo6c2hvdWxkTm90SGF2ZVR5cGVDaGVjayk6CisgICAgICAgIChKU0M6
OkRGRzo6bWF5SGF2ZVR5cGVDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6aXNOdW1lcmljYWwp
OgorICAgICAgICAoSlNDOjpERkc6OmlzRG91YmxlKToKKyAgICAgICAgKEpTQzo6REZHOjppc0Nl
bGwpOgorICAgICAgICAoSlNDOjpERkc6OnVzZXNTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpE
Rkc6OnVzZUtpbmRGb3JSZXN1bHQpOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6OnZhbGlkYXRlKToKKyAgICAgICAgKiBkZmcvREZH
VmFyaWFkaWNGdW5jdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OmNyZWF0ZVBoaVZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZVVwc2lsb24pOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlUGhp
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZURvdWJsZUNvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUludDUyQ29u
c3RhbnQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlV2Vha0pT
Q29uc3RhbnQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlRG91
YmxlUmVwKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVZhbHVl
UmVwKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUludDUyUmVw
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVZhbHVlVG9JbnQz
Mik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcml0aEFkZE9y
U3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTXVs
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoRGl2KToK
KyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTW9kKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTWluT3JNYXgpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJpdGhBYnMpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJpdGhOZWdhdGUpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlUHV0QnlWYWwpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29tcGFyZUVxKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBhcmUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpib29saWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6bG93SW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjps
b3dTdHJpY3RJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd1do
aWNoZXZlckludDUyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6bG93RG91
YmxlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6bG93SlNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnN0cmljdEludDUyVG9Eb3VibGUpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpqc1ZhbHVlVG9Eb3VibGUpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVEb3VibGVSZWFsKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUludDUyVG9WYWx1ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVJbnQzMlRvRG91YmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c2V0SW50NTJXaXRoU3Ry
aWN0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpz
cGVjdWxhdGVSZWFsTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6c3BlY3VsYXRlTWFjaGluZUludCk6IERlbGV0ZWQuCisgICAgICAgICogZnRsL0ZU
TFZhbHVlRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpyZWJveEFjY29yZGluZ1RvRm9y
bWF0KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpzYW5pdGl6ZURvdWJsZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5
SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJveERvdWJsZSk6CisK
IDIwMTQtMDQtMTQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNjcyNzIuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTYxMCw3ICs2MTAsNiBAQAogCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1REIgLyogREZH
Tm9kZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZCNEI1MUYxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR05vZGVBbGxvY2F0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZCOTIxQzE2
RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5ODdGMkMxNjdGRTg0QjAwM0My
RjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZCOTIxRDE2RDAyRjMwMDA1NUE1REIgLyog
REZHU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMUUzQTUwMTUzN0MyQ0IwMDBGOTQ1NiAvKiBERkdTbG93UGF0aEdlbmVy
YXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTBGRkI5MjFFMTZEMDJGNDcwMDU1QTVEQiAvKiBERkdWYXJpYWRpY0Z1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg1QTMxRTE2QUI3NkFF
MDA3NzU3MUUgLyogREZHVmFyaWFkaWNGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkI5MjIwMTZEMDMzQjcwMDU1QTVEQiAvKiBO
b2RlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUgLyogTm9kZUNvbnN0cnVjdG9ycy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkM5OUQx
MTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQwMTg0RUM4QUQwMDlDMTBBQiAvKiBDb25z
dGFudE1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRkZDOTlENDE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRkM5OUQyMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQuY3BwICovOyB9OwpAQCAtODk0LDcgKzg5Myw3IEBACiAJCTU1NDA3NzIwMThEQTU4QUQwMEVG
RjdGMiAvKiBKU0FycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZm
ZXJWaWV3LmggKi87IH07CiAJCTU1NDA3NzIxMThEQTU4QUQwMEVGRjdGMiAvKiBKU0FycmF5QnVm
ZmVyVmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMkI2NkJDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlld0lubGlu
ZXMuaCAqLzsgfTsKIAkJNTU0MDc3MjIxOERBNThBRDAwRUZGN0YyIC8qIEpTQXJyYXlJdGVyYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCREFF
QzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5oICovOyB9OwotCQk1NTQwNzcy
NTE4REE1OEFEMDBFRkY3RjIgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyog
SlNCb3VuZEZ1bmN0aW9uLmggKi87IH07CisJCTU1NDA3NzI1MThEQTU4QUQwMEVGRjdGMiAvKiAo
bnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CiAJCTU1NDA3NzJC
MThEQTU4QUQwMEVGRjdGMiAvKiBKU0NlbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTE2N0Q4MEUxOUJDQzkwMDgwNjZERCAvKiBKU0NlbGwuaCAq
LzsgfTsKIAkJNTU0MDc3MkMxOERBNThBRDAwRUZGN0YyIC8qIEpTQ2VsbElubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTc0OTZGMTY4N0FE
RTIwMEE0RkY2QSAvKiBKU0NlbGxJbmxpbmVzLmggKi87IH07CiAJCTU1NDA3NzJEMThEQTU4QUQw
MEVGRjdGMiAvKiBKU0NJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjFERDg0OTE4QTk0NUJFMDAyNkYzRkEgLyogSlNDSW5saW5lcy5oICov
OyB9OwpAQCAtMTA0Myw1MSArMTA0MiwxMCBAQAogCQk1NTQwNzg4ODE4REE1OEFEMDBFRkY3RjIg
LyogV2Vha1JhbmRvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQyMEJFN0ExMEFBNkREQjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLzsgfTsKIAkJ
NTU0MDc4OEQxOERBNThBRDAwRUZGN0YyIC8qIFdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQw
IC8qIFdyaXRlQmFycmllci5oICovOyB9OwogCQk1NTQwNzg4RjE4REE1OEFEMDBFRkY3RjIgLyog
V3JpdGVCYXJyaWVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRlQmFycmllcklubGlu
ZXMuaCAqLzsgfTsKLQkJNTU0MDc4OUUxOERBNThBRDAwRUZGN0YyIC8qIEFyZ3VtZW50cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1N0RFNTBF
MUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmNwcCAqLzsgfTsKLQkJNTU0MDc4QTAxOERBNThB
RDAwRUZGN0YyIC8qIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NjE0MEM5MTgyOTgyQ0IwMDc1MDYy
NCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgKi87IH07CiAJCTU1NDA3OEFCMThE
QTU4QUQwMEVGRjdGMiAvKiBBcnJheUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzk1MjA2MEUxNUU4QTgwMEE4OThBQiAvKiBB
cnJheUNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDc4QUQxOERBNThBRDAwRUZGN0YyIC8q
IEFycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdCREFFQzIxN0Y0RUExNDAwRjYxNDBDIC8qIEFycmF5SXRlcmF0
b3JQcm90b3R5cGUuY3BwICovOyB9OwogCQk1NTQwNzhBRjE4REE1OEFEMDBFRkY3RjIgLyogQXJy
YXlQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjY5MkE4NEQwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmNwcCAqLzsg
fTsKLQkJNTU0MDc4QjIxOERBNThBRDAwRUZGN0YyIC8qIEJvb2xlYW5Db25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc5NTIzMjBF
MTVFQjU2MDBBODk4QUIgLyogQm9vbGVhbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDc4
QjQxOERBNThBRDAwRUZGN0YyIC8qIEJvb2xlYW5Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3OTUyMzQwRTE1RUI1NjAwQTg5OEFC
IC8qIEJvb2xlYW5Qcm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwNzhENTE4REE1OEFEMDBFRkY3
RjIgLyogRGF0ZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRDIwMzQ1MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlQ29uc3RydWN0
b3IuY3BwICovOyB9OwotCQk1NTQwNzhEODE4REE1OEFEMDBFRkY3RjIgLyogRGF0ZVByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Qy
MDM0NzBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5jcHAgKi87IH07Ci0JCTU1NDA3
OTRCMThEQTU4QUQwMEVGRjdGMiAvKiBFcnJvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDJFOTA0MEUxODM5REIwMDBGOTI5
NyAvKiBFcnJvckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDc5NEUxOERBNThBRDAwRUZG
N0YyIC8qIEVycm9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMDJFOTA2MEUxODM5REIwMDBGOTI5NyAvKiBFcnJvclByb3RvdHlw
ZS5jcHAgKi87IH07Ci0JCTU1NDA3OTdEMThEQTU4QUQwMEVGRjdGMiAvKiBGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjY4MEMwMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsg
fTsKLQkJNTU0MDc5N0YxOERBNThBRDAwRUZGN0YyIC8qIEZ1bmN0aW9uUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODVDMDI1
NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07Ci0JCTU1NDA3OUMy
MThEQTU4QUQwMEVGRjdGMiAvKiBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QjYxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1NDA3OUMz
MThEQTU4QUQwMEVGRjdGMiAvKiBKU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkI4MTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDc5QzUxOERB
NThBRDAwRUZGN0YyIC8qIEpTQXJyYXlJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0JEQUVDNDE3RjRFQTE0MDBGNjE0MEMgLyogSlNB
cnJheUl0ZXJhdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDc5QzcxOERBNThBRDAwRUZGN0YyIC8qIEpT
Qm91bmRGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkZBOUU4RjE0MkJCQjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAq
LzsgfTsKLQkJNTU0MDc5RDMxOERBNThBRDAwRUZGN0YyIC8qIEpTRGF0YVZpZXdQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2
QkYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXdQcm90b3R5cGUuY3BwICovOyB9OwotCQk1
NTQwNzlENTE4REE1OEFEMDBFRkY3RjIgLyogSlNGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg1RTAyNTU1OTdEMDFGRjYwRjcg
LyogSlNGdW5jdGlvbi5jcHAgKi87IH07Ci0JCTU1NDA3OURBMThEQTU4QUQwMEVGRjdGMiAvKiBK
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzc1NkZDNjBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwICovOyB9OwotCQk1NTQwNzlFQjE4REE1OEFEMDBFRkY3RjIgLyogSlNP
Tk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0Y5OTM1RTBGRDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVjdC5jcHAgKi87IH07Ci0JCTU1
NDA3OUVFMThEQTU4QUQwMEVGRjdGMiAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzE4NEUyMDE3QkVFMjQw
MDA3Q0I2M0EgLyogSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwICovOyB9OwotCQk1NTQwNzlGMDE4
REE1OEFEMDBFRkY3RjIgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0QwMTg2RjhBOTMwMDk1NUMyNCAv
KiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwICovOyB9OwotCQk1NTQwNzlGMTE4REE1OEFEMDBFRkY3
RjIgLyogSlNQcm9taXNlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTFDMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQ
cm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwN0EyMjE4REE1OEFEMDBFRkY3RjIgLyogQ29uc29s
ZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTNDRTA4MTE4QkMxQTU2MDBCRURGNzYgLyogQ29uc29sZVByb3RvdHlwZS5jcHAgKi87
IH07Ci0JCTU1NDA3QTI1MThEQTU4QUQwMEVGRjdGMiAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczNzE3Q0JF
ODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwICovOyB9OwotCQk1NTQwN0EyODE4REE1
OEFEMDBFRkY3RjIgLyogTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0REVGOEQxODJEOTkxNDAwNTIyQzIyIC8q
IE1hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDdBMjkxOERBNThBRDAwRUZG
N0YyIC8qIE1hcFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzAwODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNw
cCAqLzsgfTsKLQkJNTU0MDdBMkUxOERBNThBRDAwRUZGN0YyIC8qIE1hdGhPYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NkEwMjU1
NTk3RDAxRkY2MEY3IC8qIE1hdGhPYmplY3QuY3BwICovOyB9OwotCQk1NTQwN0EzMTE4REE1OEFE
MDBFRkY3RjIgLyogTmFtZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUJGMkY5MTU2MEYwMzYwMDhFOTIyMiAvKiBOYW1lQ29u
c3RydWN0b3IuY3BwICovOyB9OwotCQk1NTQwN0EzMzE4REE1OEFEMDBFRkY3RjIgLyogTmFtZVBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkVCRjJGRDE1NjBGMDM2MDA4RTkyMjIgLyogTmFtZVByb3RvdHlwZS5jcHAgKi87IH07CiAJ
CTU1NDA3QTM4MThEQTU4QUQwMEVGRjdGMiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBDMjBFMTZENEU5
MDBBMDZFOTIgLyogTnVtYmVyQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQk1NTQwN0EzQTE4REE1
OEFEMDBFRkY3RjIgLyogTnVtYmVyUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjY4MEM0MEUxNkQ0RTkwMEEwNkU5MiAvKiBOdW1i
ZXJQcm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwN0EzQzE4REE1OEFEMDBFRkY3RjIgLyogT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMyNjgwQzYwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdENvbnN0cnVjdG9yLmNw
cCAqLzsgfTsKLQkJNTU0MDdBM0QxOERBNThBRDAwRUZGN0YyIC8qIE9iamVjdFByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBD
ODBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0UHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNTU0MDdB
NjMxOERBNThBRDAwRUZGN0YyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDIwMkJEMEUxNzA2QTcwMDJDN0U4
MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1NDA3QTY2MThEQTU4QUQwMEVG
RjdGMiAvKiBSZWdFeHBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNEMjAyQkYwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cFByb3Rv
dHlwZS5jcHAgKi87IH07Ci0JCTU1NDA3QTdCMThEQTU4QUQwMEVGRjdGMiAvKiBTZXRJdGVyYXRv
clByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNzkwREQ2NzE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuY3Bw
ICovOyB9OwotCQk1NTQwN0E3QzE4REE1OEFEMDBFRkY3RjIgLyogU2V0UHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Mjk5RDlGMTdE
MTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuY3BwICovOyB9OwotCQk1NTQwN0E4ODE4REE1
OEFEMDBFRkY3RjIgLyogU3RyaW5nQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEMzQzAwRTE2RUUzMzAwQjM0NDYwIC8qIFN0
cmluZ0NvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJNTU0MDdBOEExOERBNThBRDAwRUZGN0YyIC8q
IFN0cmluZ1Byb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzE4QzNDNTBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmNw
cCAqLzsgfTsKLQkJNTU0MDdBQUMxOERBNThBRDAwRUZGN0YyIC8qIFdlYWtNYXBDb25zdHJ1Y3Rv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NB
M0FERDE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJ
NTU0MDdBQUUxOERBNThBRDAwRUZGN0YyIC8qIFdlYWtNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBREYxN0RBNDFBRTAw
NjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuY3BwICovOyB9OwotCQk1NUYxMzgwQjE4RUY1RjUw
MDA5ODIwMTUgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAyRTkwODBFMTgzOURCMDAwRjkyOTcgLyog
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCTU1RjEzODBDMThFRjVGQjkwMDk4
MjAxNSAvKiBTZXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzI5OURBMzE3RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0
b3IuY3BwICovOyB9OwogCQk1RDUzNzI2RjBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ1MzcyNkUwRTFD
NTQ4ODAwMjFFNTQ5IC8qIFRyYWNpbmcuaCAqLzsgfTsKIAkJNUQ1RDhBRDEwRTBEMEVCRTAwRjlD
NjkyIC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAq
LzsgfTsKIAkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3RhcGkuanMgaW4gQ29weSBT
dXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NTc3
NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLzsgfTsKQEAgLTIxODMsNyArMjE0MSw2
IEBACiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlv
blByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJl
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnJhbmNoRGlyZWN0
aW9uLmg7IHBhdGggPSBkZmcvREZHQnJhbmNoRGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTBGODVBMzFFMTZBQjc2QUUwMDc3NTcxRSAvKiBERkdWYXJpYWRpY0Z1bmN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ZhcmlhZGljRnVuY3Rp
b24uaDsgcGF0aCA9IGRmZy9ERkdWYXJpYWRpY0Z1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURlZi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZVVzZURlZi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhGMkI5MzE3MkUwNDlFMDA3REJEQTUgLyogRlRM
TGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExMaW5rLmNwcDsgcGF0aCA9IGZ0bC9GVExM
aW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4RjJCOTQxNzJFMDQ5RTAw
N0RCREE1IC8qIEZUTExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMTGluay5oOyBwYXRoID0gZnRs
L0ZUTExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ4NDMsNyArNDgwMCw2
IEBACiAJCQkJMEYyQkRDNDExNTIyODAxNzAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnQuaCAq
LywKIAkJCQkwRjJCREM0MjE1MjI4MDE3MDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudFN0cmVh
bS5jcHAgKi8sCiAJCQkJMEYyQkRDNDMxNTIyODAxNzAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZl
bnRTdHJlYW0uaCAqLywKLQkJCQkwRjg1QTMxRTE2QUI3NkFFMDA3NzU3MUUgLyogREZHVmFyaWFk
aWNGdW5jdGlvbi5oICovLAogCQkJCTBGRkZDOTUzMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdWaXJ0
dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwICovLAogCQkJCTBGRkZDOTU0MTRFRjkwOTUw
MEM3MjUzMiAvKiBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuaCAqLywKIAkJCQkw
RkM5N0YzQjE4MjAyMTE5MDAyQzlCMjYgLyogREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5j
cHAgKi8sCkBAIC01MjcwLDcgKzUyMjYsNyBAQAogCQkJCTU1NDA3NzE4MThEQTU4QUQwMEVGRjdG
MiAvKiBKU0FjdGl2YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU1NDA3NzFCMThEQTU4QUQw
MEVGRjdGMiAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTQw
NzcyMjE4REE1OEFEMDBFRkY3RjIgLyogSlNBcnJheUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
LQkJCQk1NTQwNzcyNTE4REE1OEFEMDBFRkY3RjIgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1NTQwNzcyNTE4REE1OEFEMDBFRkY3RjIgLyogKG51bGwpIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTU0MDc3NDgxOERBNThBRDAwRUZGN0YyIC8qIEpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTU0MDc3NEExOERBNThBRDAwRUZGN0YyIC8q
IEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTQwNzc1OTE4
REE1OEFEMDBFRkY3RjIgLyogSlNNYXBJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC01NzQ0
LDcgKzU3MDAsNiBAQAogCQkJCTBGRERCRkI2MTY2NkVFREEwMEM1NUZFRiAvKiBERkdWYXJpYWJs
ZUFjY2Vzc0RhdGFEdW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCREM0OTE1MjI4MDk2MDBD
RDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkRDNEIx
NTIyODA5RDAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaCBpbiBIZWFkZXJzICov
LAotCQkJCTBGRkI5MjFFMTZEMDJGNDcwMDU1QTVEQiAvKiBERkdWYXJpYWRpY0Z1bmN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk2MDE0RUY5MEJEMDBDNzI1MzIgLyogREZHVmlydHVh
bFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM5N0Y0MjE4
MjAyMTE5MDAyQzlCMjYgLyogREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEQjJDRTgxNzQ4MzBBMjAwN0IzQzFCIC8qIERGR1dvcmtsaXN0LmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2lu
Y2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkRG
R0pJVENvZGUuaCIKLSNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiREZHV29ya2xpc3Qu
aCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAx
NjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSw2IEBACiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAj
aW5jbHVkZSAiREZHQ29tbW9uRGF0YS5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCi0j
aW5jbHVkZSAiREZHTWluaWZpZWRHcmFwaC5oIgotI2luY2x1ZGUgIkRGR09TUkVudHJ5LmgiCi0j
aW5jbHVkZSAiREZHT1NSRXhpdC5oIgotI2luY2x1ZGUgIkRGR1ZhcmlhYmxlRXZlbnRTdHJlYW0u
aCIKICNpbmNsdWRlICJEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJF
dmFsQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0aW9uQ291bnRlci5oIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJ
KHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTcsOSArMTU3LDE2IEBAIHByaXZhdGU6
CiAgICAgfTsKICAgICBCb29sZWFuUmVzdWx0IGJvb2xlYW5SZXN1bHQoTm9kZSosIEFic3RyYWN0
VmFsdWUmKTsKICAgICAKKyAgICB2b2lkIHNldEJ1aWx0SW5Db25zdGFudChOb2RlKiBub2RlLCBK
U1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgYWJzdHJhY3RWYWx1
ZSA9IGZvck5vZGUobm9kZSk7CisgICAgICAgIGFic3RyYWN0VmFsdWUuc2V0KG1fZ3JhcGgsIHZh
bHVlKTsKKyAgICAgICAgYWJzdHJhY3RWYWx1ZS5maXhUeXBlRm9yUmVwcmVzZW50YXRpb24obm9k
ZSk7CisgICAgfQorICAgIAogICAgIHZvaWQgc2V0Q29uc3RhbnQoTm9kZSogbm9kZSwgSlNWYWx1
ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIHZhbHVl
KTsKKyAgICAgICAgc2V0QnVpbHRJbkNvbnN0YW50KG5vZGUsIHZhbHVlKTsKICAgICAgICAgbV9z
dGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw5
ICsxMjYsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
IAogICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICBj
YXNlIERvdWJsZUNvbnN0YW50OgorICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICBjYXNlIFdl
YWtKU0NvbnN0YW50OgogICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czogewotICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG5vZGUpKTsK
KyAgICAgICAgc2V0QnVpbHRJbkNvbnN0YW50KG5vZGUsIG1fZ3JhcGgudmFsdWVPZkpTQ29uc3Rh
bnQobm9kZSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMzA3LDM5ICsz
MDksMzkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50MzJUb0RvdWJsZTogeworICAg
IGNhc2UgRG91YmxlUmVwOiB7CiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIo
KSkgewotICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgSlNWYWx1ZShKU1ZhbHVlOjpFbmNv
ZGVBc0RvdWJsZSwgY2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNEb3VibGVOdW1iZXIoY2hpbGQuYXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNEb3VibGVSZWFsKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5maXhU
eXBlRm9yUmVwcmVzZW50YXRpb24obm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgCi0gICAgY2FzZSBJbnQ1MlRvRG91YmxlOiB7CisgICAgY2FzZSBJbnQ1MlJlcDogeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSW50MzJVc2Up
OworICAgICAgICAKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7Cisg
ICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc0ludDMyKCkpIHsKICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGNoaWxkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgCisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIAotICAgIGNhc2UgSW50NTJUb1ZhbHVlOiB7Ci0gICAgICAgIEpTVmFsdWUgY2hp
bGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAoY2hpbGQg
JiYgY2hpbGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hp
bGQpOworICAgIGNhc2UgVmFsdWVSZXA6IHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwgdmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLm1fdHlwZTsKLSAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NTIpCi0gICAgICAgICAgICB0
eXBlID0gKHR5cGUgfCBTcGVjSW50MzIgfCBTcGVjSW50NTJBc0RvdWJsZSkgJiB+U3BlY0ludDUy
OwotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUodHlwZSk7CisgICAgICAgIAorICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKTsK
KyAgICAgICAgZm9yTm9kZShub2RlKS5maXhUeXBlRm9yUmVwcmVzZW50YXRpb24obm9kZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0zNzAsNyArMzcyLDcgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNob3Vs
ZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKQogICAgICAgICAgICAgICAgIG5vZGUt
PnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNo
aW5lSW50VXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxl
ZnQgJiYgcmlnaHQgJiYgbGVmdC5pc01hY2hpbmVJbnQoKSAmJiByaWdodC5pc01hY2hpbmVJbnQo
KSkgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIobGVmdC5hc01h
Y2hpbmVJbnQoKSArIHJpZ2h0LmFzTWFjaGluZUludCgpKTsKICAgICAgICAgICAgICAgICBpZiAo
cmVzdWx0LmlzTWFjaGluZUludCgpKSB7CkBAIC0zODMsOSArMzg1LDkgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIHx8ICFmb3JOb2Rl
KG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY0ludDMyKSkKICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVt
YmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0
ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7Ci0gICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIobGVmdC5hc051bWJlcigpICsg
cmlnaHQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
RG91YmxlTnVtYmVyKGxlZnQuYXNOdW1iZXIoKSArIHJpZ2h0LmFzTnVtYmVyKCkpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpc0Z1bGxS
ZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKQpAQCAt
NDI2LDcgKzQyOCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkK
ICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSkK
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVz
ZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNNYWNoaW5lSW50KCkg
JiYgcmlnaHQuaXNNYWNoaW5lSW50KCkpIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGxlZnQuYXNNYWNoaW5lSW50KCkgLSByaWdodC5hc01hY2hpbmVJbnQoKSk7
CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc01hY2hpbmVJbnQoKSB8fCAhc2hvdWxkQ2hl
Y2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpIHsKQEAgLTQzOSw5ICs0NDEsOSBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgfHwg
IWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjSW50MzIpKQogICAgICAgICAgICAg
ICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAg
aWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkp
IHsKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihsZWZ0LmFzTnVt
YmVyKCkgLSByaWdodC5hc051bWJlcigpKSk7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNEb3VibGVOdW1iZXIobGVmdC5hc051bWJlcigpIC0gcmlnaHQuYXNOdW1iZXIoKSkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpAQCAtNDc3LDcgKzQ3OSw3IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGlmIChzaG91
bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSkKICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWFj
aGluZUludFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAgIGlmIChj
aGlsZCAmJiBjaGlsZC5pc01hY2hpbmVJbnQoKSkgewogICAgICAgICAgICAgICAgIGRvdWJsZSBk
b3VibGVSZXN1bHQ7CiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrTmVnYXRpdmVaZXJv
KG5vZGUtPmFyaXRoTW9kZSgpKSkKQEAgLTQ5Niw5ICs0OTgsOSBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2hlY2tOZWdh
dGl2ZVplcm8obm9kZS0+YXJpdGhNb2RlKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENh
bkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6
CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGNoaWxkICYmIGNo
aWxkLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051
bWJlcigtY2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5v
ZGUsIGpzRG91YmxlTnVtYmVyKC1jaGlsZC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0RvdWJsZSk7CkBAIC01MzMsNyArNTM1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3cobm9k
ZS0+YXJpdGhNb2RlKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAg
ICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVm
dC5pc01hY2hpbmVJbnQoKSAmJiByaWdodC5pc01hY2hpbmVJbnQoKSkgewogICAgICAgICAgICAg
ICAgIGRvdWJsZSBkb3VibGVSZXN1bHQgPSBsZWZ0LmFzTnVtYmVyKCkgKiByaWdodC5hc051bWJl
cigpOwogICAgICAgICAgICAgICAgIGlmICghc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+
YXJpdGhNb2RlKCkpKQpAQCAtNTQ3LDkgKzU0OSw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVj
SW50NTIpOwogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBV
c2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYg
cmlnaHQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
TnVtYmVyKGxlZnQuYXNOdW1iZXIoKSAqIHJpZ2h0LmFzTnVtYmVyKCkpKTsKKyAgICAgICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihsZWZ0LmFzTnVtYmVyKCkgKiBy
aWdodC5hc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLm1fdHlwZSkKQEAgLTU4NSw5ICs1ODcsOSBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91
YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJl
cigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc051bWJlcihsZWZ0LmFzTnVtYmVyKCkgLyByaWdodC5hc051bWJlcigpKSk7CisgICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIobGVmdC5hc051bWJl
cigpIC8gcmlnaHQuYXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpA
QCAtNjE5LDkgKzYyMSw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAg
ICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAg
ICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIo
KSkgewotICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGZtb2QobGVm
dC5hc051bWJlcigpLCByaWdodC5hc051bWJlcigpKSkpOworICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGZtb2QobGVmdC5hc051bWJlcigpLCByaWdodC5h
c051bWJlcigpKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpAQCAtNjQ1LDExICs2
NDcsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVt
YmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0
ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CiAgICAg
ICAgICAgICAgICAgZG91YmxlIGEgPSBsZWZ0LmFzTnVtYmVyKCk7CiAgICAgICAgICAgICAgICAg
ZG91YmxlIGIgPSByaWdodC5hc051bWJlcigpOwotICAgICAgICAgICAgICAgIHNldENvbnN0YW50
KG5vZGUsIGpzTnVtYmVyKGEgPCBiID8gYSA6IChiIDw9IGEgPyBiIDogYSArIGIpKSk7CisgICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoYSA8IGIgPyBhIDog
KGIgPD0gYSA/IGIgOiBhICsgYikpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAg
LTY3MywxMSArNjc1LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAg
ICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAg
ICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIo
KSkgewogICAgICAgICAgICAgICAgIGRvdWJsZSBhID0gbGVmdC5hc051bWJlcigpOwogICAgICAg
ICAgICAgICAgIGRvdWJsZSBiID0gcmlnaHQuYXNOdW1iZXIoKTsKLSAgICAgICAgICAgICAgICBz
ZXRDb25zdGFudChub2RlLCBqc051bWJlcihhID4gYiA/IGEgOiAoYiA+PSBhID8gYiA6IGEgKyBi
KSkpOworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGEg
PiBiID8gYSA6IChiID49IGEgPyBiIDogYSArIGIpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0Rv
dWJsZSk7CkBAIC03MDMsOSArNzA1LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7
CiAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAg
ICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoY2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGNoaWxkLmFzTnVtYmVy
KCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAgLTcyMCw3ICs3MjIsNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBBcml0aFNx
cnQ6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZh
bHVlKCk7CiAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7Ci0gICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihzcXJ0KGNoaWxkLmFzTnVtYmVyKCkpKSk7
CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihzcXJ0KGNoaWxk
LmFzTnVtYmVyKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC03MzAsNyArNzMyLDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgQXJpdGhGUm91
bmQ6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZh
bHVlKCk7CiAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7Ci0gICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihzdGF0aWNfY2FzdDxmbG9hdD4oY2hpbGQu
YXNOdW1iZXIoKSkpKTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVt
YmVyKHN0YXRpY19jYXN0PGZsb2F0PihjaGlsZC5hc051bWJlcigpKSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3Vi
bGUpOwpAQCAtNzQwLDcgKzc0Miw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHkKICAgICBjYXNlIEFyaXRoU2luOiB7CiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBm
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGQgJiYgY2hp
bGQuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIo
c2luKGNoaWxkLmFzTnVtYmVyKCkpKSk7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBq
c0RvdWJsZU51bWJlcihzaW4oY2hpbGQuYXNOdW1iZXIoKSkpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsK
QEAgLTc1MCw3ICs3NTIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5CiAgICAgY2FzZSBBcml0aENvczogewogICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlz
TnVtYmVyKCkpIHsKLSAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGNvcyhj
aGlsZC5hc051bWJlcigpKSkpOworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3Vi
bGVOdW1iZXIoY29zKGNoaWxkLmFzTnVtYmVyKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC03
NjksNyArNzcxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAg
ICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgICAg
ICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAg
ICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY3LDgg
KzY3LDYgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBKUwogICAgIH0K
ICAgICAKICAgICBtX3R5cGUgPSBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSk7Ci0gICAgaWYg
KG1fdHlwZSA9PSBTcGVjSW50NTJBc0RvdWJsZSkKLSAgICAgICAgbV90eXBlID0gU3BlY0ludDUy
OwogICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CkBA
IC04NSw2ICs4Myw0MSBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIFN0
CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogfQogCit2b2lkIEFic3RyYWN0VmFsdWU6OmZpeFR5
cGVGb3JSZXByZXNlbnRhdGlvbihOb2RlRmxhZ3MgcmVwcmVzZW50YXRpb24pCit7CisgICAgaWYg
KHJlcHJlc2VudGF0aW9uID09IE5vZGVSZXN1bHREb3VibGUpIHsKKyAgICAgICAgaWYgKG1fdmFs
dWUpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3ZhbHVlLmlzTnVtYmVyKCkpOworICAgICAgICAg
ICAgaWYgKG1fdmFsdWUuaXNJbnQzMigpKQorICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBqc0Rv
dWJsZU51bWJlcihtX3ZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICB9CisgICAgICAgIGlmICht
X3R5cGUgJiBTcGVjTWFjaGluZUludCkgeworICAgICAgICAgICAgbV90eXBlICY9IH5TcGVjTWFj
aGluZUludDsKKyAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTJBc0RvdWJsZTsKKyAgICAg
ICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fdHlwZSAmIH5TcGVjRG91YmxlKSk7Cisg
ICAgfSBlbHNlIGlmIChyZXByZXNlbnRhdGlvbiA9PSBOb2RlUmVzdWx0SW50NTIpIHsKKyAgICAg
ICAgaWYgKG1fdHlwZSAmIFNwZWNJbnQ1MkFzRG91YmxlKSB7CisgICAgICAgICAgICBtX3R5cGUg
Jj0gflNwZWNJbnQ1MkFzRG91YmxlOworICAgICAgICAgICAgbV90eXBlIHw9IFNwZWNJbnQ1MjsK
KyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fdHlwZSAmIH5TcGVjTWFjaGlu
ZUludCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX3R5cGUgJiBTcGVjSW50NTIpIHsK
KyAgICAgICAgICAgIG1fdHlwZSAmPSB+U3BlY0ludDUyOworICAgICAgICAgICAgbV90eXBlIHw9
IFNwZWNJbnQ1MkFzRG91YmxlOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEo
bV90eXBlICYgflNwZWNCeXRlY29kZVRvcCkpOworICAgIH0KKyAgICAKKyAgICBjaGVja0NvbnNp
c3RlbmN5KCk7Cit9CisKK3ZvaWQgQWJzdHJhY3RWYWx1ZTo6Zml4VHlwZUZvclJlcHJlc2VudGF0
aW9uKE5vZGUqIG5vZGUpCit7CisgICAgZml4VHlwZUZvclJlcHJlc2VudGF0aW9uKG5vZGUtPnJl
c3VsdCgpKTsKK30KKwogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXIoR3Jh
cGgmIGdyYXBoLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQogewogICAgIGlmIChpc0NsZWFy
KCkpCkBAIC0yNDQsNiArMjc3LDggQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpjaGVja0NvbnNpc3Rl
bmN5KCkgYwogICAgIAogICAgIGlmICghIW1fdmFsdWUpIHsKICAgICAgICAgU3BlY3VsYXRlZFR5
cGUgdHlwZSA9IG1fdHlwZTsKKyAgICAgICAgLy8gVGhpcyByZWxheGVzIHRoZSBhc3NlcnRpb24g
YmVsb3cgYSBiaXQsIHNpbmNlIHdlIGRvbid0IGtub3cgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRo
ZQorICAgICAgICAvLyBub2RlLgogICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ1MikKICAgICAg
ICAgICAgIHR5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7CiAgICAgICAgIEFTU0VSVChtZXJnZVNw
ZWN1bGF0aW9ucyh0eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZShtX3ZhbHVlKSkgPT0gdHlwZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAko
cmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgogI2luY2x1ZGUgIkRGR0ZpbHRyYXRp
b25SZXN1bHQuaCIKKyNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIKICNpbmNsdWRlICJERkdTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiU3Bl
Y3VsYXRlZFR5cGUuaCIKQEAgLTM5LDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAogY2xhc3MgR3JhcGg7CitzdHJ1Y3QgTm9kZTsKIAogc3RydWN0IEFic3RyYWN0
VmFsdWUgewogICAgIEFic3RyYWN0VmFsdWUoKQpAQCAtMTI5LDYgKzEzMSw5IEBAIHN0cnVjdCBB
YnN0cmFjdFZhbHVlIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0KICAgICAK
KyAgICB2b2lkIGZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihOb2RlRmxhZ3MgcmVwcmVzZW50YXRp
b24pOworICAgIHZvaWQgZml4VHlwZUZvclJlcHJlc2VudGF0aW9uKE5vZGUqKTsKKyAgICAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gbV90eXBlID09IG90aGVyLm1fdHlwZQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTAsNyAr
MjEwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgY2FzZSBJZGVudGl0eTogCiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1i
ZXI6IHsKICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdzKGZsYWdzKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMzc4LDYgKzM3NywxMSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIElkZW50
aXR5OiAKKyAgICAgICAgICAgIC8vIFRoaXMgd291bGQgYmUgdHJpdmlhbCB0byBoYW5kbGUgYnV0
IHdlIGp1c3QgYXNzZXJ0IHRoYXQgd2UgY2Fubm90IHNlZSB0aGVzZSB5ZXQuCisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAKICAgICAgICAgLy8gTm90ZTogQXJpdGhTcXJ0LCBBcml0aFNpbiwgYW5kIEFyaXRo
Q29zIGFuZCBvdGhlciBtYXRoIGludHJpbnNpY3MgZG9uJ3QgaGF2ZSBzcGVjaWFsCiAgICAgICAg
IC8vIHJ1bGVzIGluIGhlcmUgYmVjYXVzZSB0aGV5IGFyZSBhbHdheXMgZm9sbG93ZWQgYnkgUGhh
bnRvbXMgdG8gc2lnbmlmeSB0aGF0IGlmIHRoZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2
IEBACiAjaW5jbHVkZSAiREZHQnJhbmNoRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiREZHRmx1c2hl
ZEF0LmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgotI2luY2x1ZGUgIkRGR1ZhcmlhZGljRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTk4LDE1ICs5NywxMSBAQCBzdHJ1Y3QgQmFzaWNC
bG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgdm9pZCByZW1vdmVQcmVkZWNlc3NvcihC
YXNpY0Jsb2NrKiBibG9jayk7CiAgICAgdm9pZCByZXBsYWNlUHJlZGVjZXNzb3IoQmFzaWNCbG9j
ayogZnJvbSwgQmFzaWNCbG9jayogdG8pOwogCi0jZGVmaW5lIERGR19ERUZJTkVfQVBQRU5EX05P
REUodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXNDb21t
YSwgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykgXAotICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJhbXMg
dGVtcGxhdGVQb3N0IE5vZGUqIGFwcGVuZE5vZGUoR3JhcGgmLCBTcGVjdWxhdGVkVHlwZSB2YWx1
ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1zKTsKLSAgICBERkdfVkFSSUFESUNfVEVNUExBVEVfRlVO
Q1RJT04oREZHX0RFRklORV9BUFBFTkRfTk9ERSkKLSN1bmRlZiBERkdfREVGSU5FX0FQUEVORF9O
T0RFCi0gICAgCi0jZGVmaW5lIERGR19ERUZJTkVfQVBQRU5EX05PREUodGVtcGxhdGVQcmUsIHRl
bXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXNDb21tYSwgdmFsdWVQYXJhbXMsIHZh
bHVlQXJncykgXAotICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJhbXMgdGVtcGxhdGVQb3N0IE5vZGUq
IGFwcGVuZE5vblRlcm1pbmFsKEdyYXBoJiwgU3BlY3VsYXRlZFR5cGUgdmFsdWVQYXJhbXNDb21t
YSB2YWx1ZVBhcmFtcyk7Ci0gICAgREZHX1ZBUklBRElDX1RFTVBMQVRFX0ZVTkNUSU9OKERGR19E
RUZJTkVfQVBQRU5EX05PREUpCi0jdW5kZWYgREZHX0RFRklORV9BUFBFTkRfTk9ERQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFtcz4KKyAgICBOb2RlKiBhcHBlbmROb2RlKEdyYXBoJiwg
U3BlY3VsYXRlZFR5cGUsIFBhcmFtcy4uLik7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gUGFyYW1zPgorICAgIE5vZGUqIGFwcGVuZE5vblRlcm1pbmFsKEdyYXBoJiwgU3BlY3VsYXRl
ZFR5cGUsIFBhcmFtcy4uLik7CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywyNSAr
MzMsMjEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi0jZGVmaW5lIERG
R19ERUZJTkVfQVBQRU5EX05PREUodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFt
cywgdmFsdWVQYXJhbXNDb21tYSwgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykgXAotICAgIHRlbXBs
YXRlUHJlIHR5cGVQYXJhbXMgdGVtcGxhdGVQb3N0IGlubGluZSBOb2RlKiBCYXNpY0Jsb2NrOjph
cHBlbmROb2RlKEdyYXBoJiBncmFwaCwgU3BlY3VsYXRlZFR5cGUgdHlwZSB2YWx1ZVBhcmFtc0Nv
bW1hIHZhbHVlUGFyYW1zKSBcCi0gICAgeyBcCi0gICAgICAgIE5vZGUqIHJlc3VsdCA9IGdyYXBo
LmFkZE5vZGUodHlwZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlQXJncyk7IFwKLSAgICAgICAgYXBw
ZW5kKHJlc3VsdCk7IFwKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsgXAotICAgIH0KLSAgICBERkdf
VkFSSUFESUNfVEVNUExBVEVfRlVOQ1RJT04oREZHX0RFRklORV9BUFBFTkRfTk9ERSkKLSN1bmRl
ZiBERkdfREVGSU5FX0FQUEVORF9OT0RFCi0KLSNkZWZpbmUgREZHX0RFRklORV9BUFBFTkRfTk9E
RSh0ZW1wbGF0ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1zLCB2YWx1ZVBhcmFtc0NvbW1h
LCB2YWx1ZVBhcmFtcywgdmFsdWVBcmdzKSBcCi0gICAgdGVtcGxhdGVQcmUgdHlwZVBhcmFtcyB0
ZW1wbGF0ZVBvc3QgaW5saW5lIE5vZGUqIEJhc2ljQmxvY2s6OmFwcGVuZE5vblRlcm1pbmFsKEdy
YXBoJiBncmFwaCwgU3BlY3VsYXRlZFR5cGUgdHlwZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFy
YW1zKSBcCi0gICAgeyBcCi0gICAgICAgIE5vZGUqIHJlc3VsdCA9IGdyYXBoLmFkZE5vZGUodHlw
ZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlQXJncyk7IFwKLSAgICAgICAgaW5zZXJ0QmVmb3JlTGFz
dChyZXN1bHQpOyBcCi0gICAgICAgIHJldHVybiByZXN1bHQ7IFwKLSAgICB9Ci0gICAgREZHX1ZB
UklBRElDX1RFTVBMQVRFX0ZVTkNUSU9OKERGR19ERUZJTkVfQVBQRU5EX05PREUpCi0jdW5kZWYg
REZHX0RFRklORV9BUFBFTkRfTk9ERQordGVtcGxhdGU8dHlwZW5hbWUuLi4gUGFyYW1zPgorTm9k
ZSogQmFzaWNCbG9jazo6YXBwZW5kTm9kZShHcmFwaCYgZ3JhcGgsIFNwZWN1bGF0ZWRUeXBlIHR5
cGUsIFBhcmFtcy4uLiBwYXJhbXMpCit7CisgICAgTm9kZSogcmVzdWx0ID0gZ3JhcGguYWRkTm9k
ZSh0eXBlLCBwYXJhbXMuLi4pOworICAgIGFwcGVuZChyZXN1bHQpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFtcz4KK05vZGUqIEJhc2ljQmxvY2s6
OmFwcGVuZE5vblRlcm1pbmFsKEdyYXBoJiBncmFwaCwgU3BlY3VsYXRlZFR5cGUgdHlwZSwgUGFy
YW1zLi4uIHBhcmFtcykKK3sKKyAgICBOb2RlKiByZXN1bHQgPSBncmFwaC5hZGROb2RlKHR5cGUs
IHBhcmFtcy4uLik7CisgICAgaW5zZXJ0QmVmb3JlTGFzdChyZXN1bHQpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE2
NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMjYzLDggKzMyNjMsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX3RvX251
bWJlcjogewotICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKSwKLSAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKElkZW50aXR5LCBF
ZGdlKGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkp
LCBOdW1iZXJVc2UpKSk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gZ2V0KFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBhZGRU
b0dyYXBoKFBoYW50b20sIEVkZ2Uobm9kZSwgTnVtYmVyVXNlKSk7CisgICAgICAgICAgICBzZXQo
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBub2RlKTsK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3RvX251bWJlcik7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJ
KHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjEsMjkgKzE2
MSwxMSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgCi0gICAgTm9k
ZSogaW50MzJUb0RvdWJsZUNTRShOb2RlKiBub2RlKQotICAgIHsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG90aGVy
Tm9kZSA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgIGlmIChvdGhlck5vZGUg
PT0gbm9kZS0+Y2hpbGQxKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAg
ICBzd2l0Y2ggKG90aGVyTm9kZS0+b3AoKSkgewotICAgICAgICAgICAgY2FzZSBJbnQzMlRvRG91
YmxlOgotICAgICAgICAgICAgICAgIGlmIChvdGhlck5vZGUtPmNoaWxkMSgpLnNhbml0aXplZCgp
ID09IG5vZGUtPmNoaWxkMSgpLnNhbml0aXplZCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gb3RoZXJOb2RlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgCiAgICAgTm9kZSogY29uc3RhbnRDU0UoTm9kZSog
bm9kZSkKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGVuZEluZGV4Rm9yUHVyZUNT
RSgpOyBpLS07KSB7CiAgICAgICAgICAgICBOb2RlKiBvdGhlck5vZGUgPSBtX2N1cnJlbnRCbG9j
ay0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5vcCgpICE9IEpTQ29uc3RhbnQp
CisgICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5vcCgpICE9IG5vZGUtPm9wKCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChvdGhlck5v
ZGUtPmNvbnN0YW50TnVtYmVyKCkgIT0gbm9kZS0+Y29uc3RhbnROdW1iZXIoKSkKQEAgLTExNDgs
OCArMTEzMCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ29tcGFyZUVxQ29uc3RhbnQ6CiAg
ICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgICAgICBjYXNlIE1ha2VSb3BlOgotICAgICAg
ICBjYXNlIEludDUyVG9Eb3VibGU6Ci0gICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgorICAgICAg
ICBjYXNlIERvdWJsZVJlcDoKKyAgICAgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICAgICAgY2FzZSBJ
bnQ1MlJlcDoKICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChwdXJlQ1NF
KG5vZGUpKTsKQEAgLTExNzcsMTIgKzExNjAsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEludDMyVG9Eb3VibGU6
Ci0gICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQoaW50MzJUb0RvdWJsZUNT
RShub2RlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEdldENhbGxlZToKICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24p
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjYxLDEzICsxMjM4LDE1IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CiAgICAgICAgICAgICBOb2Rl
KiBkYXRhTm9kZSA9IHJlcGxhY2VtZW50LT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgICAgICBB
U1NFUlQoZGF0YU5vZGUtPmhhc1Jlc3VsdCgpKTsKLSAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgp
ID0gRWRnZShkYXRhTm9kZSk7CisgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IGRhdGFOb2Rl
LT5kZWZhdWx0RWRnZSgpOwogICAgICAgICAgICAgbV9ncmFwaC5kZXRocmVhZCgpOwogICAgICAg
ICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgorICAgICAgICBjYXNlIERvdWJs
ZUNvbnN0YW50OgorICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgICAgICBpZiAo
Y3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgLy8gVGhpcyBpcyBzdHJhbmdlLCBidXQgbmVjZXNzYXJ5LiBTb21lIHBoYXNlcyB3
aWxsIGNvbnZlcnQgbm9kZXMgdG8gY29uc3RhbnRzLApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKLSNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVk
ZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSW50
cmluc2ljLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDggQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIAogICAgIHN3aXRjaCAobm9kZS0+b3AoKSkg
ewogICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICBjYXNlIERvdWJsZUNvbnN0YW50OgorICAgIGNh
c2UgSW50NTJDb25zdGFudDoKICAgICBjYXNlIFdlYWtKU0NvbnN0YW50OgogICAgIGNhc2UgSWRl
bnRpdHk6CiAgICAgY2FzZSBQaGFudG9tOgpAQCAtMTIzLDE1ICsxMjUsMTUgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgSXNOdW1iZXI6CiAgICAg
Y2FzZSBJc1N0cmluZzoKICAgICBjYXNlIExvZ2ljYWxOb3Q6Ci0gICAgY2FzZSBJbnQzMlRvRG91
YmxlOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6Ci0gICAgY2FzZSBJbnQ1MlRvRG91
YmxlOgotICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAg
ICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgY2FzZSBVSW50MzJUb051bWJlcjoK
ICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgY2FzZSBDaGVjazoKKyAgICBjYXNlIERvdWJs
ZVJlcDoKKyAgICBjYXNlIFZhbHVlUmVwOgorICAgIGNhc2UgSW50NTJSZXA6CiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCiAgICAgY2FzZSBNb3ZIaW50OgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNiArMjk5LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgb2xkVmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9k
ZSk7CiAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIGNvbnN0YW50VmFsdWU7CiAgICAgICAgICAg
ICBjb25zdGFudFZhbHVlLnNldChtX2dyYXBoLCB2YWx1ZSk7CisgICAgICAgICAgICBjb25zdGFu
dFZhbHVlLmZpeFR5cGVGb3JSZXByZXNlbnRhdGlvbihub2RlKTsKICAgICAgICAgICAgIGlmIChv
bGRWYWx1ZS5tZXJnZShjb25zdGFudFZhbHVlKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENF
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENF
UGhhc2UuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0LDEzICsxOTQsMTIgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkg
ewogICAgICAgICAgICAgY2FzZSBNb3ZIaW50OiB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IG5vZGUtPmNoaWxkMSgpLT5kZWZhdWx0
VXNlS2luZCgpKTsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpLT5zaG91bGRH
ZW5lcmF0ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZs
YWdzKFpvbWJpZUhpbnQpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IEVk
Z2UoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKE1vdkhpbnQpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgd2lsbE5vdEhhdmVDaGVj
aygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gaXNQcm92ZWQoKSB8fCB1c2VLaW5kKCkg
PT0gVW50eXBlZFVzZTsKKyAgICAgICAgcmV0dXJuIGlzUHJvdmVkKCkgfHwgc2hvdWxkTm90SGF2
ZVR5cGVDaGVjayh1c2VLaW5kKCkpOwogICAgIH0KICAgICBib29sIHdpbGxIYXZlQ2hlY2soKSBj
b25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zW2ldLm1lcmdlQXJn
dW1lbnRVbmJveGluZ0F3YXJlbmVzcygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3Ig
KEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2Nr
cygpOyArK2Jsb2NrSW5kZXgpCi0gICAgICAgICAgICAgICAgZml4dXBTZXRMb2NhbHNJbkJsb2Nr
KG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCkpOworICAgICAgICAgICAgICAgIGZpeHVwR2V0QW5k
U2V0TG9jYWxzSW5CbG9jayhtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpKTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0lu
ZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KQpAQCAtMTIzLDggKzEyMywx
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7
CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlQ2FuU3BlY3VsYXRlSW50MzIobm9kZS0+YXJpdGhO
b2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpD
aGVja092ZXJmbG93KTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6RG9PdmVyZmxvdyk7CisgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMTM1
LDEwICsxMzcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXJFeHBlY3Rp
bmdEZWZpbmVkKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
ewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICAgICAgbm9kZS0+c2V0T3AoQXJpdGhBZGQpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNs
ZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKKyAgICAgICAg
ICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE3Nyw4ICsxODAsOSBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIEFyaXRoU3ViOiB7CiAgICAgICAgICAgICBpZiAoYXR0
ZW1wdFRvTWFrZUludGVnZXJBZGQobm9kZSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
Zml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8
RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJs
ZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5v
ZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIApAQCAtMTk0LDE0ICsxOTgsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX2dyYXBoLm5lZ2F0ZVNob3VsZFNw
ZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hp
bmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUy
UmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGJ5dGVjb2RlQ2Fu
SWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAg
ICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOwogICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFy
aXRoOjpDaGVja092ZXJmbG93QW5kTmVnYXRpdmVaZXJvKTsKKyAgICAgICAgICAgICAgICBub2Rl
LT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjE4LDE2ICsyMjQsMTggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLm11bFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAg
ICAgICAgICAgIGlmIChieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5v
ZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRo
OjpDaGVja092ZXJmbG93KTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVy
byk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdl
PE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjQ2LDI0ICsyNTQsMzQgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0
aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGhp
cyB3aWxsIGNhdXNlIGNvbnZlcnNpb24gbm9kZXMgdG8gYmUgaW5zZXJ0ZWQgbGF0ZXIuCisgICAg
ICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIEJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB0
aGF0IGV2ZXJ5dGhpbmcgaXMgcGhhbnRvbSdkIHVudGlsIGFmdGVyIHRoZQorICAgICAgICAgICAg
ICAgIC8vIERvdWJsZUFzSW50NDIgbm9kZSwgd2hpY2ggb2NjdXJzIGFmdGVyIHRoZSBEaXYvTW9k
IG5vZGUgdGhhdCB0aGUgY29udmVyc2lvbnMKKyAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIGlu
c2VyZWQgb24uCisgICAgICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKG5vZGUtPmNoaWxk
MSgpLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKG5vZGUtPmNo
aWxkMigpLm5vZGUoKSk7CiAKICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRv
IHJlZidpbmcgb24gdGhlIGNoaWxkcmVuIGJlY2F1c2Ugd2UncmUgc3RlYWxpbmcgdGhlbSBmcm9t
CiAgICAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIGRpdmlzaW9uLgogICAgICAgICAgICAg
ICAgIE5vZGUqIG5ld0RpdmlzaW9uID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAg
ICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNEb3VibGUsICpub2RlKTsKKyAgICAg
ICAgICAgICAgICBuZXdEaXZpc2lvbi0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKERvdWJsZUFzSW50MzIp
OwotICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLmluaXRpYWxpemUoRWRnZShuZXdEaXZp
c2lvbiwgS25vd25OdW1iZXJVc2UpLCBFZGdlKCksIEVkZ2UoKSk7CisgICAgICAgICAgICAgICAg
bm9kZS0+Y2hpbGRyZW4uaW5pdGlhbGl6ZShFZGdlKG5ld0RpdmlzaW9uLCBEb3VibGVSZXBVc2Up
LCBFZGdlKCksIEVkZ2UoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuSWdub3Jl
TmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgICAg
ICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpD
aGVja092ZXJmbG93QW5kTmVnYXRpdmVaZXJvKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBu
b2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAgICAgCkBAIC0yNzUsOCArMjkzLDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaXhFZGdlPE51bWJlclVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjg2LDcgKzMwNSw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
Zml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8
RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1
bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCkBAIC0yOTQsNyArMzE0LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcml0
aEZSb3VuZDoKICAgICAgICAgY2FzZSBBcml0aFNpbjoKICAgICAgICAgY2FzZSBBcml0aENvczog
ewotICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0zMDYsNyArMzI3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigp
KQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIo
KSkKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5n
KCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzM3LDE0ICszNTgsMTQgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpCiAgICAgICAgICAgICAgICAg
JiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCks
IG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hp
bmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hp
bmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUy
UmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJl
cFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3Mo
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNX
b3JsZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00MDIsMTMg
KzQyMywxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGVuYWJs
ZUludDUyKCkKICAgICAgICAgICAgICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hv
dWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCku
bm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+Y2hp
bGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKQEAgLTUwMSw3ICs1MjIsOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewor
ICAgICAgICAgICAgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CisgICAgICAgICAgICBz
d2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlNlbGVj
dFVzaW5nUHJlZGljdGlvbnM6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpVbnByb2ZpbGVkOgog
ICAgICAgICAgICAgY2FzZSBBcnJheTo6VW5kZWNpZGVkOgpAQCAtNTIwLDYgKzU0MiwzMCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCisgICAgICAgICAgICBzd2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKKyAgICAgICAgICAg
IGNhc2UgQXJyYXk6OkRvdWJsZToKKyAgICAgICAgICAgICAgICBpZiAoIWFycmF5TW9kZS5pc091
dE9mQm91bmRzKCkpCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVz
dWx0RG91YmxlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJy
YXk6OkZsb2F0NjRBcnJheToKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJl
c3VsdERvdWJsZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJBcnJheToKKyAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSAm
JiBlbmFibGVJbnQ1MigpKQorICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9k
ZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKQEAgLTU1OSwxNCArNjA1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKICAgICAgICAgICAgICAgICBmaXhFZGdl
PEludDMyVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGlmIChjaGlsZDMtPnByZWRpY3Rp
b24oKSAmIFNwZWNJbnQ1MikKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50
VXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihj
aGlsZDMpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVz
ZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDIpOwot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8UmVhbE51bWJlclVzZT4oY2hpbGQzKTsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFJlYWxVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CiAgICAgICAgICAg
ICBjYXNlIEFycmF5OjpJbnQxNkFycmF5OgpAQCAtNTgwLDE1ICs2MjYsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBpZiAoY2hpbGQzLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQogICAg
ICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDMpOwogICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGNoaWxkMy0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQotICAgICAg
ICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KGNoaWxkMyk7CisgICAgICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4oY2hpbGQzKTsKKyAg
ICAgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KGNoaWxkMyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6CiAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CiAgICAgICAgICAgICAgICAgZml4
RWRnZTxLbm93bkNlbGxVc2U+KGNoaWxkMSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4oY2hpbGQyKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4oY2hpbGQz
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4oY2hpbGQzKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CkBAIC02MzAsNyArNjc2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3Vi
bGU6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxSZWFsTnVtYmVyVXNlPihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBSZWFsVXNlPihub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpD
b250aWd1b3VzOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgpAQCAtNjYz
LDcgKzcwOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1i
ZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJl
cFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogCiAgICAgICAgICAgICBOb2RlKiBsb2dpY2FsTm90ID0g
bm9kZS0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICAgICAgaWYgKGxvZ2ljYWxOb3QtPm9wKCkg
PT0gTG9naWNhbE5vdCkgewpAQCAtNzYwLDcgKzgwNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBvcGVyYW5kSW5kZXggPSAwOyBvcGVyYW5k
SW5kZXggPCBub2RlLT5udW1DaGlsZHJlbigpOyArK29wZXJhbmRJbmRleCkKLSAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxSZWFsTnVtYmVyVXNlPihtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5b
bm9kZS0+Zmlyc3RDaGlsZCgpICsgb3BlcmFuZEluZGV4XSk7CisgICAgICAgICAgICAgICAgICAg
IGZpeEVkZ2U8RG91YmxlUmVwUmVhbFVzZT4obV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW25vZGUt
PmZpcnN0Q2hpbGQoKSArIG9wZXJhbmRJbmRleF0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKICAgICAgICAg
ICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfSU5ERVhJTkdfVFlQRVM6CkBAIC05MzYsNyArOTgy
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgUGhhbnRvbToKLSAgICAg
ICAgY2FzZSBJZGVudGl0eToKICAgICAgICAgY2FzZSBDaGVjazogewogICAgICAgICAgICAgc3dp
dGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgICAgIGNhc2UgTnVtYmVy
VXNlOgpAQCAtOTYxLDE2ICsxMDA2LDE5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tU
aWVyVXBJbkxvb3A6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICAgICAg
Y2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgotICAgICAgICBjYXNlIEludDUyVG9Eb3VibGU6
Ci0gICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBv
aW50OgogICAgICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5k
czoKICAgICAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgICAgICBjYXNlIERv
dWJsZUFzSW50MzI6Ci0gICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICAgICAgY2FzZSBW
YWx1ZVRvSW50MzI6CiAgICAgICAgIGNhc2UgSGFyZFBoYW50b206IC8vIEhhcmRQaGFudG9tIHdv
dWxkIGJlIHRyaXZpYWwgdG8gaGFuZGxlIGJ1dCBhbnl3YXkgd2UgYXNzZXJ0IHRoYXQgd2Ugd29u
J3Qgc2VlIGl0IGhlcmUgeWV0LgorICAgICAgICBjYXNlIERvdWJsZVJlcDoKKyAgICAgICAgY2Fz
ZSBJbnQ1MlJlcDoKKyAgICAgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICAgICAgY2FzZSBEb3VibGVD
b25zdGFudDoKKyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgorICAgICAgICBjYXNlIElkZW50
aXR5OiAvLyBUaGlzIHNob3VsZCBoYXZlIGJlZW4gY2xlYW5lZCB1cC4KICAgICAgICAgICAgIC8v
IFRoZXNlIGFyZSBqdXN0IG5vZGVzIHRoYXQgd2UgZG9uJ3QgY3VycmVudGx5IGV4cGVjdCB0byBz
ZWUgZHVyaW5nIGZpeHVwLgogICAgICAgICAgICAgLy8gSWYgd2UgZXZlciB3YW50ZWQgdG8gaW5z
ZXJ0IHRoZW0gcHJpb3IgdG8gZml4dXAsIHRoZW4gd2UganVzdCBoYXZlIHRvIGNyZWF0ZQogICAg
ICAgICAgICAgLy8gZml4dXAgcnVsZXMgZm9yIHRoZW0uCkBAIC0xMzEyLDcgKzEzNjAsNyBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBmaXh1
cFNldExvY2Fsc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCisgICAgdm9pZCBmaXh1cEdldEFu
ZFNldExvY2Fsc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCiAgICAgewogICAgICAgICBpZiAo
IWJsb2NrKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMyMCwyOCArMTM2OCw0OSBAQCBwcml2
YXRlOgogICAgICAgICBtX2Jsb2NrID0gYmxvY2s7CiAgICAgICAgIGZvciAobV9pbmRleEluQmxv
Y2sgPSAwOyBtX2luZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbmRleEluQmxvY2sp
IHsKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1cnJlbnROb2RlID0gYmxvY2stPmF0KG1f
aW5kZXhJbkJsb2NrKTsKLSAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFNldExvY2FsKQor
ICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gU2V0TG9jYWwgJiYgbm9kZS0+b3AoKSAhPSBH
ZXRMb2NhbCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpOwotICAgICAgICAgICAgc3dpdGNoICh2YXJpYWJsZS0+Zmx1c2hGb3JtYXQoKSkgewot
ICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBGbHVzaGVkSW50NTI6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIEZsdXNoZWRDZWxsOgotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAg
ICAgICBjYXNlIEdldExvY2FsOgorICAgICAgICAgICAgICAgIHN3aXRjaCAodmFyaWFibGUtPmZs
dXNoRm9ybWF0KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZsdXNoZWREb3VibGU6CisgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50NTI6
CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHZh
cmlhYmxlLT5mbHVzaEZvcm1hdCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNW
YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBG
bHVzaGVkRG91YmxlOgorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQ1MjoKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgorICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE0Njcs
NyArMTUzNiw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hh
bmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAgICAgICBjYXNlIFJlYWxO
dW1iZXJVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBjYXNlIERvdWJs
ZVJlcFJlYWxVc2U6CiAgICAgICAgICAgICBpZiAodmFyaWFibGUtPmRvdWJsZUZvcm1hdFN0YXRl
KCkgPT0gVXNpbmdEb3VibGVGb3JtYXQpCiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5
Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xNDc2LDcgKzE1NDYsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIHx8IGlzQm9vbGVhblNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQog
ICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdl
SXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAg
ICBpZiAoaXNNYWNoaW5lSW50U3BlY3VsYXRpb24odmFyaWFibGUtPnByZWRpY3Rpb24oKSkpCiAg
ICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJ
c1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTE5LDkg
KzE1ODksOSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgVXNlS2luZCB1c2VLaW5kOwog
ICAgICAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQotICAgICAgICAg
ICAgdXNlS2luZCA9IE1hY2hpbmVJbnRVc2U7CisgICAgICAgICAgICB1c2VLaW5kID0gSW50NTJS
ZXBVc2U7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKQot
ICAgICAgICAgICAgdXNlS2luZCA9IE51bWJlclVzZTsKKyAgICAgICAgICAgIHVzZUtpbmQgPSBE
b3VibGVSZXBVc2U7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZUJvb2xl
YW4oKSkKICAgICAgICAgICAgIHVzZUtpbmQgPSBCb29sZWFuVXNlOwogICAgICAgICBlbHNlCkBA
IC0xNTg5LDkgKzE2NTksMTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkgewotICAg
ICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
IGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldEFy
aXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1
bHQoTm9kZVJlc3VsdEludDUyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgICAgIApAQCAtMTcyNCwxMDkgKzE3OTUsMTUwIEBAIHByaXZhdGU6CiAgICAgICAgIGZv
ciAobV9pbmRleEluQmxvY2sgPSAwOyBtX2luZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsr
bV9pbmRleEluQmxvY2spIHsKICAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBibG9jay0+YXQo
bV9pbmRleEluQmxvY2spOwogICAgICAgICAgICAgYWRkUGhhbnRvbXNJZk5lY2Vzc2FyeSgpOwot
ICAgICAgICAgICAgaWYgKG1fY3VycmVudE5vZGUtPmNvbnRhaW5zTW92SGludCgpKQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdHJ5VG9SZWxheFJlcHJlc2VudGF0aW9u
KG1fY3VycmVudE5vZGUpOwogICAgICAgICAgICAgREZHX05PREVfRE9fVE9fQ0hJTERSRU4obV9n
cmFwaCwgbV9jdXJyZW50Tm9kZSwgaW5qZWN0VHlwZUNvbnZlcnNpb25zRm9yRWRnZSk7CiAgICAg
ICAgIH0KICAgICAgICAgY2xlYXJQaGFudG9tc0F0RW5kKCk7CiAgICAgICAgIG1faW5zZXJ0aW9u
U2V0LmV4ZWN1dGUoYmxvY2spOwogICAgIH0KICAgICAKKyAgICB2b2lkIHRyeVRvUmVsYXhSZXBy
ZXNlbnRhdGlvbihOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgLy8gU29tZSBvcGVyYXRpb25z
IG1heSBiZSBhYmxlIHRvIG9wZXJhdGUgbW9yZSBlZmZpY2llbnRseSBvdmVyIGxvb3NlciByZXBy
ZXNlbnRhdGlvbnMuCisgICAgICAgIC8vIElkZW50aWZ5IHRob3NlIGhlcmUuIFRoaXMgYXZvaWRz
IGluc2VydGluZyBhIHJlZHVuZGFudCByZXByZXNlbnRhdGlvbiBjb252ZXJzaW9uLgorICAgICAg
ICAvLyBBbHNvLCBmb3Igc29tZSBvcGVyYXRpb25zLCBsaWtlIE1vdkhpbnQsIHRoaXMgaXMgYSBu
ZWNlc3Nhcnkgb3B0aW1pemF0aW9uOiBpbnNlcnRpbmcKKyAgICAgICAgLy8gYW4gb3RoZXJ3aXNl
LWRlYWQgY29udmVyc2lvbiBqdXN0IGZvciBhIE1vdkhpbnQgd291bGQgYnJlYWsgT1NSJ3MgdW5k
ZXJzdGFuZGluZyBvZgorICAgICAgICAvLyB0aGUgSVIuCisgICAgICAgIAorICAgICAgICBzd2l0
Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgY2FzZSBNb3ZIaW50OgorICAgICAgICBjYXNlIFBo
YW50b206CisgICAgICAgIGNhc2UgQ2hlY2s6CisgICAgICAgIGNhc2UgSGFyZFBoYW50b206Cisg
ICAgICAgICAgICBERkdfTk9ERV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBtX2N1cnJlbnROb2Rl
LCBmaXhFZGdlUmVwcmVzZW50YXRpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAKKyAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZQorICAgICAgICAgICAgICAgICYmICFub2Rl
LT5jaGlsZDEoKS0+aGFzRG91YmxlUmVzdWx0KCkpIHsKKyAgICAgICAgICAgICAgICBub2RlLT5j
aGlsZDEoKS5zZXRVc2VLaW5kKE51bWJlclVzZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAg
dm9pZCBmaXhFZGdlUmVwcmVzZW50YXRpb24oTm9kZSosIEVkZ2UmIGVkZ2UpCisgICAgeworICAg
ICAgICBzd2l0Y2ggKGVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OgorICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgICAgICAgICBpZiAoZWRnZS0+
aGFzRG91YmxlUmVzdWx0KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGlmIChlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQorICAgICAgICAgICAgICAg
IGVkZ2Uuc2V0VXNlS2luZChJbnQ1MlJlcFVzZSk7CisgICAgICAgICAgICBlbHNlIGlmIChlZGdl
LnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpCisgICAgICAgICAgICAgICAgZWRnZS5zZXRVc2VL
aW5kKE51bWJlclVzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICAgICAgLy8gTm90aGluZyB3ZSBjYW4gcmVhbGx5
IGRvLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBVbnR5
cGVkVXNlOgorICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgICAgIGlmIChlZGdlLT5o
YXNEb3VibGVSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBlZGdlLnNldFVzZUtpbmQoRG91Ymxl
UmVwVXNlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpCisg
ICAgICAgICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKEludDUyUmVwVXNlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKyAgICAKICAgICB2b2lkIGluamVjdFR5cGVDb252ZXJzaW9u
c0ZvckVkZ2UoTm9kZSogbm9kZSwgRWRnZSYgZWRnZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChu
b2RlID09IG1fY3VycmVudE5vZGUpOwogICAgICAgICAKLSAgICAgICAgaWYgKGlzRG91YmxlKGVk
Z2UudXNlS2luZCgpKSkgewotICAgICAgICAgICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUlu
dDMyRm9yQXJpdGhtZXRpYygpKSB7Ci0gICAgICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9t
KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBOb2RlKiBy
ZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY0ludDUyQXNEb3VibGUsIEludDMyVG9Eb3VibGUsCi0gICAgICAg
ICAgICAgICAgICAgIG5vZGUtPm9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICBzd2l0Y2gg
KGVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBj
YXNlIERvdWJsZVJlcFJlYWxVc2U6IHsKKyAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVS
ZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgaWYgKGVuYWJsZUludDUyKCkgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgp
KSB7Ci0gICAgICAgICAgICAgICAgLy8gTWFrZSBhbGwgZG91YmxlIHVzZXMgb2YgaW50NTIgdmFs
dWVzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIEludDUyVG9Eb3VibGUuCi0gICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIEludDUyVG9WYWx1ZSAoc2VlIGJlbG93
KSBleGNlcHQgdGhhdAotICAgICAgICAgICAgICAgIC8vIEludDhUb0RvdWJsZSB3aWxsIGNvbnZl
cnQgaW50NTIncyB0aGF0IGZpdCBpbiBhbiBpbnQzMiBpbnRvIGEgZG91YmxlCi0gICAgICAgICAg
ICAgICAgLy8gcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGNyZWF0ZSBhIGJveGVkIGludDMyIGxpa2Ug
SW50NTJUb1ZhbHVlIGRvZXMuCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgYWRk
UmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgICAgICAgICBOb2RlKiByZXN1
bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBtX2lu
ZGV4SW5CbG9jaywgU3BlY0ludDUyQXNEb3VibGUsIEludDUyVG9Eb3VibGUsCi0gICAgICAgICAg
ICAgICAgICAgIG5vZGUtPm9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7Ci0g
ICAgICAgICAgICAgICAgZWRnZS5zZXROb2RlKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9kZSgpKTsKKworICAg
ICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0ludDUyUmVz
dWx0KCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDUyQXNEb3Vi
bGUsIERvdWJsZVJlcCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBFZGdlKGVk
Z2Uubm9kZSgpLCBJbnQ1MlJlcFVzZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0RvdWJsZSwgRG91YmxlUmVwLCBub2RlLT5vcmln
aW4sCisgICAgICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwog
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlZGdlLnNldE5vZGUocmVzdWx0KTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoZW5hYmxlSW50
NTIoKSAmJiBlZGdlLnVzZUtpbmQoKSAhPSBNYWNoaW5lSW50VXNlCi0gICAgICAgICAgICAmJiBl
ZGdlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkgJiYgIWVkZ2UtPnNob3VsZFNwZWN1bGF0
ZUludDMyKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIG1ha2UgYWxsIG5vbi1pbnQ1MiB1c2VzIG9m
IGludDUyIHZhbHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJbnQ1MlRvVmFsdWUKLSAgICAgICAg
ICAgIC8vIG5vZGUgdG8gZW5zdXJlIHRoYXQgd2UgaGFuZGxlIHRoaXMgcHJvcGVybHk6Ci0gICAg
ICAgICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29tZUludDUyCi0gICAgICAgICAgICAvLyBi
OiBBcml0aEFkZChAYSwgLi4uKQotICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIEBhKQotICAg
ICAgICAgICAgLy8gZDogQXJpdGhBZGQoQGEsIC4uLikKLSAgICAgICAgICAgIC8vCi0gICAgICAg
ICAgICAvLyBXaXRob3V0IGFuIGludGVybWVkaWF0ZSBub2RlIGFuZCBqdXN0IGxhYmVsaW5nIHRo
ZSB1c2VzLCB3ZSB3aWxsIGdldDoKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBhOiBT
b21lSW50NTIKLSAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEludDUyOkBhLCAuLi4pCi0gICAg
ICAgICAgICAvLyBjOiBDYWxsKC4uLiwgVW50eXBlZDpAYSkKLSAgICAgICAgICAgIC8vIGQ6IEFy
aXRoQWRkKEludDUyOkBhLCAuLi4pCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gQW5k
IG5vdyB0aGUgYy0+VW50eXBlZDpAYSBlZGdlIHdpbGwgYm94IHRoZSB2YWx1ZSBvZiBAYSBpbnRv
IGEgZG91YmxlLiBUaGlzCi0gICAgICAgICAgICAvLyBpcyBiYWQsIGJlY2F1c2Ugbm93IHRoZSBk
LT5JbnQ1MjpAYSBlZGdlIHdpbGwgZWl0aGVyIGhhdmUgdG8gZG8gZG91YmxlLXRvLWludAotICAg
ICAgICAgICAgLy8gY29udmVyc2lvbnMsIG9yIHdpbGwgaGF2ZSB0byBPU1IgZXhpdCB1bmNvbmRp
dGlvbmFsbHkuIEFsdGVybmF0aXZlbHkgd2UgY291bGQKLSAgICAgICAgICAgIC8vIGhhdmUgdGhl
IGMtPlVudHlwZWQ6QGEgZWRnZSBib3ggdGhlIHZhbHVlIGJ5IGNvcHlpbmcgcmF0aGVyIHRoYW4g
aW4tcGxhY2UuCi0gICAgICAgICAgICAvLyBCdXQgdGhlc2UgYm94aW5ncyBhcmUgYWxzbyBjb3N0
bHkgc28gdGhpcyB3b3VsZG4ndCBiZSBncmVhdC4KLSAgICAgICAgICAgIC8vCi0gICAgICAgICAg
ICAvLyBUaGUgc29sdXRpb24gd2UgdXNlIGlzIHRvIGFsd2F5cyBoYXZlIG5vbi1JbnQ1MiB1c2Vz
IG9mIHByZWRpY3RlZCBJbnQ1MidzIHVzZQotICAgICAgICAgICAgLy8gYW4gaW50ZXJ2ZW5pbmcg
SW50NTJUb1ZhbHVlIG5vZGU6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gYTogU29t
ZUludDUyCi0gICAgICAgICAgICAvLyBiOiBBcml0aEFkZChJbnQ1MjpAYSwgLi4uKQotICAgICAg
ICAgICAgLy8geDogSW50NTJUb1ZhbHVlKEludDUyOkBhKQotICAgICAgICAgICAgLy8gYzogQ2Fs
bCguLi4sIFVudHlwZWQ6QHgpCi0gICAgICAgICAgICAvLyBkOiBBcml0aEFkZChJbnQ1MjpAYSwg
Li4uKQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBldmVuIGlmIHdl
IGhhZCBtdWx0aXBsZSBub24taW50NTIgdXNlcyBvZiBAYSwgdGhlIG11bHRpcGxlCi0gICAgICAg
ICAgICAvLyBJbnQ1MlRvVmFsdWUncyB3b3VsZCBnZXQgQ1NFJ2QgdG9nZXRoZXIuIFNvIHRoZSBi
b3hpbmcgd291bGQgb25seSBoYXBwZW4gb25jZS4KLSAgICAgICAgICAgIC8vIEF0IHRoZSBzYW1l
IHRpbWUsIEBhIHdvdWxkIGNvbnRpbnVlIHRvIGJlIHJlcHJlc2VudGVkIGFzIGEgbmF0aXZlIGlu
dDUyLgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIEFuIGFsdGVybmF0aXZlIHdvdWxk
IGhhdmUgYmVlbiB0byBpbnNlcnQgVG9OYXRpdmVJbnQ1MiBub2RlcyBvbiBpbnQ1MiB1c2VzIG9m
Ci0gICAgICAgICAgICAvLyBpbnQ1MidzLiBUaGlzIHdvdWxkIGhhdmUgaGFuZGxlZCB0aGUgYWJv
dmUgZXhhbXBsZSBidXQgd291bGQgZmFsbCBvdmVyIGZvcjoKLSAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICAvLyBhOiBTb21lSW50NTIKLSAgICAgICAgICAgIC8vIGI6IENhbGwoLi4uLCBAYSkK
LSAgICAgICAgICAgIC8vIGM6IEFyaXRoQWRkKEBhLCAuLi4pCi0gICAgICAgICAgICAvLwotICAg
ICAgICAgICAgLy8gQnV0IHRoZSBzb2x1dGlvbiB3ZSB1c2UgaGFuZGxlcyB0aGUgYWJvdmUgZ3Jh
Y2VmdWxseS4KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAg
ICAgICAgICBpZiAoZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAogICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9k
ZSgpKTsKLSAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCi0gICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MiwgSW50NTJUb1Zh
bHVlLAotICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgVW50
eXBlZFVzZSkpOworCisgICAgICAgICAgICBOb2RlKiByZXN1bHQ7CisgICAgICAgICAgICBpZiAo
ZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwg
bmV2ZXIgaGFwcGVuLgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyRm9y
QXJpdGhtZXRpYygpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQz
MiwgSW50NTJSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdl
Lm5vZGUoKSwgSW50MzJVc2UpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgLy8gVGhpcyBpcyBvbmx5IGhlcmUgZm9yIGRlYWxpbmcgd2l0aCBjb25zdGFudHMuCisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZWRnZS0+b3AoKSA9PSBKU0NvbnN0YW50KTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAg
ICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY01hY2hpbmVJbnQsIEludDUyQ29uc3Rh
bnQsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKGVkZ2UtPmNvbnN0
YW50TnVtYmVyKCkpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZWRnZS5zZXROb2Rl
KHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgICAgIGlmICgh
ZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkgJiYgIWVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFkZFJlcXVpcmVk
UGhhbnRvbShlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGUqIHJl
c3VsdDsKKyAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSkgeworICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjRG91YmxlLCBWYWx1ZVJlcCwgbm9kZS0+b3Jp
Z2luLAorICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBEb3VibGVSZXBVc2Up
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91YmxlLCBWYWx1ZVJlcCwgbm9kZS0+b3JpZ2luLAor
ICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBJbnQ1MlJlcFVzZSkpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBlZGdlLnNldE5vZGUocmVzdWx0
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IH0KICAgICB9CiAgICAgCiAgICAgdm9p
ZCBhZGRSZXF1aXJlZFBoYW50b20oTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIGlmICghbV9j
b2RlT3JpZ2luT2ZQaGFudG9tcykgewotICAgICAgICAgICAgQVNTRVJUKG1fcmVxdWlyZWRQaGFu
dG9tcy5pc0VtcHR5KCkpOwotICAgICAgICAgICAgbV9jb2RlT3JpZ2luT2ZQaGFudG9tcyA9IG1f
Y3VycmVudE5vZGUtPm9yaWdpbi5mb3JFeGl0OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgQVNTRVJUKCFtX3JlcXVpcmVkUGhhbnRvbXMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIEFT
U0VSVChtX2NvZGVPcmlnaW5PZlBoYW50b21zID09IG1fY3VycmVudE5vZGUtPm9yaWdpbi5mb3JF
eGl0KTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgbV9yZXF1aXJlZFBoYW50b21zLmFw
cGVuZChub2RlKTsKICAgICB9CiAKQEAgLTE4MzUsMTkgKzE5NDcsMTQgQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKG1fcmVxdWlyZWRQaGFudG9tcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCghIW1fY29kZU9yaWdpbk9mUGhh
bnRvbXMpOwotICAgICAgICAKLSAgICAgICAgaWYgKG1fY3VycmVudE5vZGUtPm9yaWdpbi5mb3JF
eGl0ID09IG1fY29kZU9yaWdpbk9mUGhhbnRvbXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3JlcXVpcmVkUGhhbnRvbXMuc2l6ZSgp
OyBpLS07KSB7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9yZXF1aXJlZFBoYW50b21zW2ld
OwogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAg
ICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIE5vZGVPcmlnaW4obV9jb2RlT3Jp
Z2luT2ZQaGFudG9tcyksCi0gICAgICAgICAgICAgICAgRWRnZShtX3JlcXVpcmVkUGhhbnRvbXNb
aV0sIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05v
bmUsIFBoYW50b20sIG1fY3VycmVudE5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBub2Rl
LT5kZWZhdWx0RWRnZSgpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9yZXF1aXJl
ZFBoYW50b21zLnJlc2l6ZSgwKTsKLSAgICAgICAgbV9jb2RlT3JpZ2luT2ZQaGFudG9tcyA9IENv
ZGVPcmlnaW4oKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjbGVhclBoYW50b21zQXRFbmQoKQpA
QCAtMTg2Myw3ICsxOTcwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjc3OAogICAgICAgICAKICAgICAgICAgbV9yZXF1
aXJlZFBoYW50b21zLnJlc2l6ZSgwKTsKLSAgICAgICAgbV9jb2RlT3JpZ2luT2ZQaGFudG9tcyA9
IENvZGVPcmlnaW4oKTsKICAgICB9CiAgICAgCiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKQEAg
LTE4NzEsNyArMTk3Nyw2IEBAIHByaXZhdGU6CiAgICAgTm9kZSogbV9jdXJyZW50Tm9kZTsKICAg
ICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CiAgICAgYm9vbCBtX3Byb2ZpdGFiaWxpdHlD
aGFuZ2VkOwotICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luT2ZQaGFudG9tczsKICAgICBWZWN0
b3I8Tm9kZSosIDM+IG1fcmVxdWlyZWRQaGFudG9tczsKIH07CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAxNjcyNzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTYyLDcgKzYyLDcgQEAgaW5saW5lIE5vZGVGbGFncyByZXN1bHRGb3IoRmx1c2hGb3JtYXQg
ZgogICAgIGNhc2UgRmx1c2hlZEludDUyOgogICAgICAgICByZXR1cm4gTm9kZVJlc3VsdEludDUy
OwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHROdW1i
ZXI7CisgICAgICAgIHJldHVybiBOb2RlUmVzdWx0RG91YmxlOwogICAgIGNhc2UgRmx1c2hlZEJv
b2xlYW46CiAgICAgICAgIHJldHVybiBOb2RlUmVzdWx0Qm9vbGVhbjsKICAgICB9CkBAIC04Myw5
ICs4Myw5IEBAIGlubGluZSBVc2VLaW5kIHVzZUtpbmRGb3IoRmx1c2hGb3JtYXQgZm8KICAgICBj
YXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgcmV0dXJuIEludDMyVXNlOwogICAgIGNhc2UgRmx1
c2hlZEludDUyOgotICAgICAgICByZXR1cm4gTWFjaGluZUludFVzZTsKKyAgICAgICAgcmV0dXJu
IEludDUyUmVwVXNlOwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKLSAgICAgICAgcmV0dXJuIE51
bWJlclVzZTsKKyAgICAgICAgcmV0dXJuIERvdWJsZVJlcFVzZTsKICAgICBjYXNlIEZsdXNoZWRC
b29sZWFuOgogICAgICAgICByZXR1cm4gQm9vbGVhblVzZTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw3
ICszMTQsNyBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAg
ICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KEpTVmFsdWUobm9kZS0+dHlwZWRBcnJheSgp
KSwgY29udGV4dCkpOwogICAgIGlmIChub2RlLT5oYXNTdG9yYWdlUG9pbnRlcigpKQogICAgICAg
ICBvdXQucHJpbnQoY29tbWEsIFJhd1BvaW50ZXIobm9kZS0+c3RvcmFnZVBvaW50ZXIoKSkpOwot
ICAgIGlmIChvcCA9PSBKU0NvbnN0YW50KSB7CisgICAgaWYgKG5vZGUtPmlzQ29uc3RhbnQoKSkg
ewogICAgICAgICBvdXQucHJpbnQoY29tbWEsICIkIiwgbm9kZS0+Y29uc3RhbnROdW1iZXIoKSk7
CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSB2YWx1ZU9mSlNDb25zdGFudChub2RlKTsKICAgICAg
ICAgb3V0LnByaW50KCIgPSAiLCBpbkNvbnRleHQodmFsdWUsIGNvbnRleHQpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyAr
MzksNiBAQAogI2luY2x1ZGUgIkRGR05vZGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJERkdQbGFu
LmgiCiAjaW5jbHVkZSAiREZHU2Nhbm5hYmxlLmgiCi0jaW5jbHVkZSAiREZHVmFyaWFkaWNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIklubGluZUNhbGxGcmFtZVNldC5oIgogI2luY2x1ZGUgIkpTU3Rh
Y2suaCIKICNpbmNsdWRlICJNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgiCkBAIC0xMzYs
MTUgKzEzNSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCghY2hpbGQtPm1pc2MucmVwbGFj
ZW1lbnQpOwogICAgIH0KICAgICAKLSNkZWZpbmUgREZHX0RFRklORV9BRERfTk9ERSh0ZW1wbGF0
ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1zLCB2YWx1ZVBhcmFtc0NvbW1hLCB2YWx1ZVBh
cmFtcywgdmFsdWVBcmdzKSBcCi0gICAgdGVtcGxhdGVQcmUgdHlwZVBhcmFtcyB0ZW1wbGF0ZVBv
c3QgTm9kZSogYWRkTm9kZShTcGVjdWxhdGVkVHlwZSB0eXBlIHZhbHVlUGFyYW1zQ29tbWEgdmFs
dWVQYXJhbXMpIFwKLSAgICB7IFwKLSAgICAgICAgTm9kZSogbm9kZSA9IG5ldyAobV9hbGxvY2F0
b3IpIE5vZGUodmFsdWVBcmdzKTsgXAotICAgICAgICBub2RlLT5wcmVkaWN0KHR5cGUpOyBcCi0g
ICAgICAgIHJldHVybiBub2RlOyBcCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gUGFyYW1zPgor
ICAgIE5vZGUqIGFkZE5vZGUoU3BlY3VsYXRlZFR5cGUgdHlwZSwgUGFyYW1zLi4uIHBhcmFtcykK
KyAgICB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBuZXcgKG1fYWxsb2NhdG9yKSBOb2RlKHBhcmFt
cy4uLik7CisgICAgICAgIG5vZGUtPnByZWRpY3QodHlwZSk7CisgICAgICAgIHJldHVybiBub2Rl
OwogICAgIH0KLSAgICBERkdfVkFSSUFESUNfVEVNUExBVEVfRlVOQ1RJT04oREZHX0RFRklORV9B
RERfTk9ERSkKLSN1bmRlZiBERkdfREVGSU5FX0FERF9OT0RFCiAKICAgICB2b2lkIGRldGhyZWFk
KCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1NSwxNCArMTU1LDIzIEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRp
YWxpemUoKQogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigp
OwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOwogICAg
ICAgICB9CisgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCisgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgaWYgKGJsb2NrLT5ieXRlY29kZUJlZ2luICE9IG1fZ3JhcGgubV9w
bGFuLm9zckVudHJ5Qnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ3JhcGgubV9tdXN0SGFuZGxlQWJzdHJhY3RWYWx1
ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX2dy
YXBoLm1fbXVzdEhhbmRsZUFic3RyYWN0VmFsdWVzW2ldOwogICAgICAgICAgICAgaW50IG9wZXJh
bmQgPSBtX2dyYXBoLm1fbXVzdEhhbmRsZUFic3RyYWN0VmFsdWVzLm9wZXJhbmRGb3JJbmRleChp
KTsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQub3BlcmFuZChvcGVyYW5kKS5tZXJn
ZSh2YWx1ZSk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPnZhcmlhYmxlc0F0SGVh
ZC5vcGVyYW5kKG9wZXJhbmQpOworICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgu
bV9tdXN0SGFuZGxlQWJzdHJhY3RWYWx1ZXNbaV07CisgICAgICAgICAgICBBYnN0cmFjdFZhbHVl
JiBhYnN0cmFjdFZhbHVlID0gYmxvY2stPnZhbHVlc0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpOwor
ICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpOworICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0ID0gdmFyaWFibGUt
PmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICBhYnN0cmFjdFZhbHVlLm1lcmdlKHZhbHVlKTsK
KyAgICAgICAgICAgIGFic3RyYWN0VmFsdWUuZml4VHlwZUZvclJlcHJlc2VudGF0aW9uKHJlc3Vs
dEZvcihmb3JtYXQpKTsKICAgICAgICAgfQogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNp
dCA9IHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNl
cnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
c2VydGlvblNldC5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCwyNyAr
NTQsNDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGluc2VydChJbnNlcnRpb24o
aW5kZXgsIGVsZW1lbnQpKTsKICAgICB9Ci0gICAgCi0jZGVmaW5lIERGR19ERUZJTkVfSU5TRVJU
X05PREUodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXND
b21tYSwgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykgXAotICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJh
bXMgdGVtcGxhdGVQb3N0IE5vZGUqIGluc2VydE5vZGUoc2l6ZV90IGluZGV4LCBTcGVjdWxhdGVk
VHlwZSB0eXBlIHZhbHVlUGFyYW1zQ29tbWEgdmFsdWVQYXJhbXMpIFwKLSAgICB7IFwKLSAgICAg
ICAgcmV0dXJuIGluc2VydChpbmRleCwgbV9ncmFwaC5hZGROb2RlKHR5cGUgdmFsdWVQYXJhbXND
b21tYSB2YWx1ZUFyZ3MpKTsgXAorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gUGFyYW1zPgor
ICAgIE5vZGUqIGluc2VydE5vZGUoc2l6ZV90IGluZGV4LCBTcGVjdWxhdGVkVHlwZSB0eXBlLCBQ
YXJhbXMuLi4gcGFyYW1zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydChpbmRleCwgbV9n
cmFwaC5hZGROb2RlKHR5cGUsIHBhcmFtcy4uLikpOwogICAgIH0KLSAgICBERkdfVkFSSUFESUNf
VEVNUExBVEVfRlVOQ1RJT04oREZHX0RFRklORV9JTlNFUlRfTk9ERSkKLSN1bmRlZiBERkdfREVG
SU5FX0lOU0VSVF9OT0RFCiAgICAgCi0gICAgTm9kZSogaW5zZXJ0Q29uc3RhbnQoc2l6ZV90IGlu
ZGV4LCBOb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZSB2YWx1ZSkKKyAgICBOb2RlKiBpbnNlcnRD
b25zdGFudCgKKyAgICAgICAgc2l6ZV90IGluZGV4LCBOb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1
ZSB2YWx1ZSwKKyAgICAgICAgTm9kZVR5cGUgb3AgPSBKU0NvbnN0YW50KQogICAgIHsKICAgICAg
ICAgdW5zaWduZWQgY29uc3RhbnRSZWcgPQogICAgICAgICAgICAgbV9ncmFwaC5jb25zdGFudFJl
Z2lzdGVyRm9yQ29uc3RhbnQodmFsdWUpOwogICAgICAgICByZXR1cm4gaW5zZXJ0Tm9kZSgKLSAg
ICAgICAgICAgIGluZGV4LCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSksIEpTQ29uc3RhbnQs
IG9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyhjb25zdGFudFJlZykpOworICAgICAgICAgICAg
aW5kZXgsIHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKSwgb3AsIG9yaWdpbiwgT3BJbmZvKGNv
bnN0YW50UmVnKSk7CisgICAgfQorICAgIAorICAgIE5vZGUqIGluc2VydENvbnN0YW50KAorICAg
ICAgICBzaXplX3QgaW5kZXgsIENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlIHZhbHVlLCBOb2Rl
VHlwZSBvcCA9IEpTQ29uc3RhbnQpCisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0Q29uc3Rh
bnQoaW5kZXgsIE5vZGVPcmlnaW4ob3JpZ2luKSwgdmFsdWUsIG9wKTsKKyAgICB9CisgICAgCisg
ICAgRWRnZSBpbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgc2l6ZV90IGluZGV4LCBOb2Rl
T3JpZ2luIG9yaWdpbiwgSlNWYWx1ZSB2YWx1ZSwgVXNlS2luZCB1c2VLaW5kKQorICAgIHsKKyAg
ICAgICAgTm9kZVR5cGUgb3A7CisgICAgICAgIGlmIChpc0RvdWJsZSh1c2VLaW5kKSkKKyAgICAg
ICAgICAgIG9wID0gRG91YmxlQ29uc3RhbnQ7CisgICAgICAgIGVsc2UgaWYgKHVzZUtpbmQgPT0g
SW50NTJSZXBVc2UpCisgICAgICAgICAgICBvcCA9IEludDUyQ29uc3RhbnQ7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG9wID0gSlNDb25zdGFudDsKKyAgICAgICAgcmV0dXJuIEVkZ2UoaW5z
ZXJ0Q29uc3RhbnQoaW5kZXgsIG9yaWdpbiwgdmFsdWUsIG9wKSwgdXNlS2luZCk7CiAgICAgfQog
ICAgIAotICAgIE5vZGUqIGluc2VydENvbnN0YW50KHNpemVfdCBpbmRleCwgQ29kZU9yaWdpbiBv
cmlnaW4sIEpTVmFsdWUgdmFsdWUpCisgICAgRWRnZSBpbnNlcnRDb25zdGFudEZvclVzZSgKKyAg
ICAgICAgc2l6ZV90IGluZGV4LCBDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZSB2YWx1ZSwgVXNl
S2luZCB1c2VLaW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGluc2VydENvbnN0YW50KGluZGV4
LCBOb2RlT3JpZ2luKG9yaWdpbiksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGluc2VydENvbnN0
YW50Rm9yVXNlKGluZGV4LCBOb2RlT3JpZ2luKG9yaWdpbiksIHZhbHVlLCB1c2VLaW5kKTsKICAg
ICB9CiAKICAgICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJp
bmluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3MCwxMCArMzcwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghYWRkZW5kKQogICAgICAg
ICAgICAgcmV0dXJuIHNvdXJjZS5ub2RlKCk7CiAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbm9kZUluZGV4LCBzb3VyY2UtPnByZWRpY3Rpb24o
KSwgQXJpdGhBZGQsIG9yaWdpbiwgT3BJbmZvKGFyaXRoTW9kZSksCi0gICAgICAgICAgICBzb3Vy
Y2UsIEVkZ2UoCi0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQo
bm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKGFkZGVuZCkpLAotICAgICAgICAgICAgICAgIHNv
dXJjZS51c2VLaW5kKCkpKTsKKyAgICAgICAgICAgIG5vZGVJbmRleCwgc291cmNlLT5wcmVkaWN0
aW9uKCksIHNvdXJjZS0+cmVzdWx0KCksCisgICAgICAgICAgICBBcml0aEFkZCwgb3JpZ2luLCBP
cEluZm8oYXJpdGhNb2RlKSwgc291cmNlLAorICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgbm9kZUluZGV4LCBvcmlnaW4sIGpz
TnVtYmVyKGFkZGVuZCksIHNvdXJjZS51c2VLaW5kKCkpKTsKICAgICB9CiAgICAgCiAgICAgTm9k
ZSogaW5zZXJ0TXVzdEFkZCgKQEAgLTM4MSw3ICszODEsNyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgTm9kZSogcmVzdWx0ID0gaW5zZXJ0QWRkKG5vZGVJbmRleCwgb3JpZ2luLCBzb3VyY2Us
IGFkZGVuZCk7CiAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAg
ICBub2RlSW5kZXgsIFNwZWNOb25lLCBIYXJkUGhhbnRvbSwgb3JpZ2luLCBFZGdlKHJlc3VsdCwg
VW50eXBlZFVzZSkpOworICAgICAgICAgICAgbm9kZUluZGV4LCBTcGVjTm9uZSwgSGFyZFBoYW50
b20sIG9yaWdpbiwgcmVzdWx0LT5kZWZhdWx0RWRnZSgpKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJ
KHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDE1IEBAIGJvb2wgTm9kZTo6aGFzVmFyaWFi
bGVBY2Nlc3NEYXRhKEdyYXBoJiAKICAgICB9CiB9CiAKK3ZvaWQgTm9kZTo6Y29udmVydFRvSWRl
bnRpdHkoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGNoaWxkMSgpKTsKKyAgICBSRUxFQVNFX0FT
U0VSVCghY2hpbGQyKCkpOworICAgIE5vZGVGbGFncyByZXN1bHQgPSBjYW5vbmljYWxSZXN1bHRS
ZXByZXNlbnRhdGlvbih0aGlzLT5yZXN1bHQoKSk7CisgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3Mo
SWRlbnRpdHkpOworICAgIHNldFJlc3VsdChyZXN1bHQpOworfQorCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTIxLDcgKzEzMCwxMCBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTm9kCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgb3V0LnByaW50KCJAIiwgbm9kZS0+aW5kZXgoKSk7Ci0gICAgb3V0LnByaW50KEFiYnJl
dmlhdGVkU3BlY3VsYXRpb25EdW1wKG5vZGUtPnByZWRpY3Rpb24oKSkpOworICAgIGlmIChub2Rl
LT5oYXNEb3VibGVSZXN1bHQoKSkKKyAgICAgICAgb3V0LnByaW50KCI8RG91YmxlPiIpOworICAg
IGVsc2UgaWYgKG5vZGUtPmhhc0ludDUyUmVzdWx0KCkpCisgICAgICAgIG91dC5wcmludCgiPElu
dDUyPiIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUg
IkRGR05vZGVGbGFncy5oIgogI2luY2x1ZGUgIkRGR05vZGVPcmlnaW4uaCIKICNpbmNsdWRlICJE
RkdOb2RlVHlwZS5oIgorI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRlICJERkdWYXJp
YWJsZUFjY2Vzc0RhdGEuaCIKICNpbmNsdWRlICJHZXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKQEAgLTIzOSw2ICsyNDAsMjIgQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICBBU1NFUlQoIShtX2ZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpKTsKICAgICB9CiAKKyAgICAvLyBD
b25zdHJ1Y3QgYSBub2RlIHdpdGggdXAgdG8gMyBjaGlsZHJlbiwgbm8gaW1tZWRpYXRlIHZhbHVl
LgorICAgIE5vZGUoTm9kZUZsYWdzIHJlc3VsdCwgTm9kZVR5cGUgb3AsIE5vZGVPcmlnaW4gbm9k
ZU9yaWdpbiwgRWRnZSBjaGlsZDEgPSBFZGdlKCksIEVkZ2UgY2hpbGQyID0gRWRnZSgpLCBFZGdl
IGNoaWxkMyA9IEVkZ2UoKSkKKyAgICAgICAgOiBvcmlnaW4obm9kZU9yaWdpbikKKyAgICAgICAg
LCBjaGlsZHJlbihBZGphY2VuY3lMaXN0OjpGaXhlZCwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMykK
KyAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoKSkKKyAgICAgICAg
LCBtX3JlZkNvdW50KDEpCisgICAgICAgICwgbV9wcmVkaWN0aW9uKFNwZWNOb25lKQorICAgICAg
ICAsIG1fb3BJbmZvKDApCisgICAgICAgICwgbV9vcEluZm8yKDApCisgICAgeworICAgICAgICBt
aXNjLnJlcGxhY2VtZW50ID0gMDsKKyAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3Mob3ApOwor
ICAgICAgICBzZXRSZXN1bHQocmVzdWx0KTsKKyAgICAgICAgQVNTRVJUKCEobV9mbGFncyAmIE5v
ZGVIYXNWYXJBcmdzKSk7CisgICAgfQorCiAgICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIHVw
IHRvIDMgY2hpbGRyZW4gYW5kIGFuIGltbWVkaWF0ZSB2YWx1ZS4KICAgICBOb2RlKE5vZGVUeXBl
IG9wLCBOb2RlT3JpZ2luIG5vZGVPcmlnaW4sIE9wSW5mbyBpbW0sIEVkZ2UgY2hpbGQxID0gRWRn
ZSgpLCBFZGdlIGNoaWxkMiA9IEVkZ2UoKSwgRWRnZSBjaGlsZDMgPSBFZGdlKCkpCiAgICAgICAg
IDogb3JpZ2luKG5vZGVPcmlnaW4pCkBAIC0yNTQsNiArMjcxLDIyIEBAIHN0cnVjdCBOb2RlIHsK
ICAgICAgICAgQVNTRVJUKCEobV9mbGFncyAmIE5vZGVIYXNWYXJBcmdzKSk7CiAgICAgfQogCisg
ICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIHVwIHRvIDMgY2hpbGRyZW4gYW5kIGFuIGltbWVk
aWF0ZSB2YWx1ZS4KKyAgICBOb2RlKE5vZGVGbGFncyByZXN1bHQsIE5vZGVUeXBlIG9wLCBOb2Rl
T3JpZ2luIG5vZGVPcmlnaW4sIE9wSW5mbyBpbW0sIEVkZ2UgY2hpbGQxID0gRWRnZSgpLCBFZGdl
IGNoaWxkMiA9IEVkZ2UoKSwgRWRnZSBjaGlsZDMgPSBFZGdlKCkpCisgICAgICAgIDogb3JpZ2lu
KG5vZGVPcmlnaW4pCisgICAgICAgICwgY2hpbGRyZW4oQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIGNo
aWxkMSwgY2hpbGQyLCBjaGlsZDMpCisgICAgICAgICwgbV92aXJ0dWFsUmVnaXN0ZXIoVmlydHVh
bFJlZ2lzdGVyKCkpCisgICAgICAgICwgbV9yZWZDb3VudCgxKQorICAgICAgICAsIG1fcHJlZGlj
dGlvbihTcGVjTm9uZSkKKyAgICAgICAgLCBtX29wSW5mbyhpbW0ubV92YWx1ZSkKKyAgICAgICAg
LCBtX29wSW5mbzIoMCkKKyAgICB7CisgICAgICAgIG1pc2MucmVwbGFjZW1lbnQgPSAwOworICAg
ICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhvcCk7CisgICAgICAgIHNldFJlc3VsdChyZXN1bHQp
OworICAgICAgICBBU1NFUlQoIShtX2ZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpKTsKKyAgICB9CisK
ICAgICAvLyBDb25zdHJ1Y3QgYSBub2RlIHdpdGggdXAgdG8gMyBjaGlsZHJlbiBhbmQgdHdvIGlt
bWVkaWF0ZSB2YWx1ZXMuCiAgICAgTm9kZShOb2RlVHlwZSBvcCwgTm9kZU9yaWdpbiBub2RlT3Jp
Z2luLCBPcEluZm8gaW1tMSwgT3BJbmZvIGltbTIsIEVkZ2UgY2hpbGQxID0gRWRnZSgpLCBFZGdl
IGNoaWxkMiA9IEVkZ2UoKSwgRWRnZSBjaGlsZDMgPSBFZGdlKCkpCiAgICAgICAgIDogb3JpZ2lu
KG5vZGVPcmlnaW4pCkBAIC0zMjUsNiArMzU4LDE4IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAg
cmV0dXJuIGZpbHRlckZsYWdzKH5mbGFncyk7CiAgICAgfQogICAgIAorICAgIHZvaWQgc2V0UmVz
dWx0KE5vZGVGbGFncyByZXN1bHQpCisgICAgeworICAgICAgICBBU1NFUlQoIShyZXN1bHQgJiB+
Tm9kZVJlc3VsdE1hc2spKTsKKyAgICAgICAgY2xlYXJGbGFncyhOb2RlUmVzdWx0TWFzayk7Cisg
ICAgICAgIG1lcmdlRmxhZ3MocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgTm9kZUZsYWdzIHJl
c3VsdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZmxhZ3MoKSAmIE5vZGVSZXN1bHRN
YXNrOworICAgIH0KKyAgICAKICAgICB2b2lkIHNldE9wQW5kRGVmYXVsdEZsYWdzKE5vZGVUeXBl
IG9wKQogICAgIHsKICAgICAgICAgbV9vcCA9IG9wOwpAQCAtMzQxLDEyICszODYsNyBAQCBzdHJ1
Y3QgTm9kZSB7CiAgICAgICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKFBoYW50b20pOwogICAgIH0K
IAotICAgIHZvaWQgY29udmVydFRvSWRlbnRpdHkoKQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY2hpbGQxKCkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVCghY2hpbGQyKCkpOwotICAg
ICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhJZGVudGl0eSk7Ci0gICAgfQorICAgIHZvaWQgY29u
dmVydFRvSWRlbnRpdHkoKTsKIAogICAgIGJvb2wgbXVzdEdlbmVyYXRlKCkKICAgICB7CkBAIC0z
NjgsNyArNDA4LDE0IEBAIHN0cnVjdCBOb2RlIHsKICAgICAKICAgICBib29sIGlzQ29uc3RhbnQo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gSlNDb25zdGFudDsKKyAgICAgICAgc3dp
dGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBEb3Vi
bGVDb25zdGFudDoKKyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgYm9vbCBpc1dlYWtDb25zdGFudCgpCkBAIC0zODUs
NiArNDMyLDggQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7
CiAgICAgICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoK
KyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICBjYXNlIFdlYWtKU0NvbnN0YW50
OgogICAgICAgICBjYXNlIFBoYW50b21Bcmd1bWVudHM6CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTQwMSw3ICs0NTAsMTIgQEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIHZvaWQgY29u
dmVydFRvQ29uc3RhbnQodW5zaWduZWQgY29uc3RhbnROdW1iZXIpCiAgICAgewotICAgICAgICBt
X29wID0gSlNDb25zdGFudDsKKyAgICAgICAgaWYgKGhhc0RvdWJsZVJlc3VsdCgpKQorICAgICAg
ICAgICAgbV9vcCA9IERvdWJsZUNvbnN0YW50OworICAgICAgICBlbHNlIGlmIChoYXNJbnQ1MlJl
c3VsdCgpKQorICAgICAgICAgICAgbV9vcCA9IEludDUyQ29uc3RhbnQ7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1fb3AgPSBKU0NvbnN0YW50OwogICAgICAgICBtX2ZsYWdzICY9IH4oTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVNaWdodENsb2JiZXIgfCBOb2RlQ2xvYmJlcnNXb3JsZCk7CiAg
ICAgICAgIG1fb3BJbmZvID0gY29uc3RhbnROdW1iZXI7CiAgICAgICAgIGNoaWxkcmVuLnJlc2V0
KCk7CkBAIC01MDIsNiArNTU2LDggQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFdlYWtK
U0NvbnN0YW50OgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUod2Vha0NvbnN0YW50KCkpOwog
ICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6Cisg
ICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgICAgIHJldHVybiBjb2RlQmxvY2st
PmNvbnN0YW50UmVnaXN0ZXIoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggKyBjb25zdGFudE51
bWJlcigpKS5nZXQoKTsKICAgICAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTc5NywzMiArODUzLDUyIEBAIHN0cnVjdCBOb2RlIHsK
ICAgICAKICAgICBib29sIGhhc1Jlc3VsdCgpCiAgICAgewotICAgICAgICByZXR1cm4gbV9mbGFn
cyAmIE5vZGVSZXN1bHRNYXNrOworICAgICAgICByZXR1cm4gISFyZXN1bHQoKTsKICAgICB9CiAK
ICAgICBib29sIGhhc0ludDMyUmVzdWx0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiAobV9mbGFn
cyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0SW50MzI7CisgICAgICAgIHJldHVybiBy
ZXN1bHQoKSA9PSBOb2RlUmVzdWx0SW50MzI7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzSW50
NTJSZXN1bHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdCgpID09IE5vZGVSZXN1bHRJ
bnQ1MjsKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNOdW1iZXJSZXN1bHQoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHROdW1i
ZXI7CisgICAgICAgIHJldHVybiByZXN1bHQoKSA9PSBOb2RlUmVzdWx0TnVtYmVyOworICAgIH0K
KyAgICAKKyAgICBib29sIGhhc0RvdWJsZVJlc3VsdCgpCisgICAgeworICAgICAgICByZXR1cm4g
cmVzdWx0KCkgPT0gTm9kZVJlc3VsdERvdWJsZTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNK
U1Jlc3VsdCgpCiAgICAgewotICAgICAgICByZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFz
aykgPT0gTm9kZVJlc3VsdEpTOworICAgICAgICByZXR1cm4gcmVzdWx0KCkgPT0gTm9kZVJlc3Vs
dEpTOwogICAgIH0KICAgICAKICAgICBib29sIGhhc0Jvb2xlYW5SZXN1bHQoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRCb29s
ZWFuOworICAgICAgICByZXR1cm4gcmVzdWx0KCkgPT0gTm9kZVJlc3VsdEJvb2xlYW47CiAgICAg
fQogCiAgICAgYm9vbCBoYXNTdG9yYWdlUmVzdWx0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiAo
bV9mbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0U3RvcmFnZTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdCgpID09IE5vZGVSZXN1bHRTdG9yYWdlOworICAgIH0KKyAgICAKKyAgICBV
c2VLaW5kIGRlZmF1bHRVc2VLaW5kKCkKKyAgICB7CisgICAgICAgIHJldHVybiB1c2VLaW5kRm9y
UmVzdWx0KHJlc3VsdCgpKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBkZWZhdWx0RWRnZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gRWRnZSh0aGlzLCBkZWZhdWx0VXNlS2luZCgpKTsKICAgICB9
CiAKICAgICBib29sIGlzSnVtcCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVGbGFncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlRmxhZ3MuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVGbGFncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDYg
KzQ3LDkgQEAgdm9pZCBkdW1wTm9kZUZsYWdzKFByaW50U3RyZWFtJiBhY3R1YWxPdQogICAgICAg
ICBjYXNlIE5vZGVSZXN1bHROdW1iZXI6CiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJO
dW1iZXIiKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5vZGVSZXN1bHREb3Vi
bGU6CisgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJEb3VibGUiKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIE5vZGVSZXN1bHRJbnQzMjoKICAgICAgICAgICAgIG91dC5w
cmludChjb21tYSwgIkludDMyIik7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzgsMTAgKzM4LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICNkZWZpbmUgTm9kZVJlc3VsdE1hc2sgICAgICAgICAgICAgICAgICAgMHgwMDA3CiAjZGVmaW5l
IE5vZGVSZXN1bHRKUyAgICAgICAgICAgICAgICAgICAgIDB4MDAwMQogI2RlZmluZSBOb2RlUmVz
dWx0TnVtYmVyICAgICAgICAgICAgICAgICAweDAwMDIKLSNkZWZpbmUgTm9kZVJlc3VsdEludDMy
ICAgICAgICAgICAgICAgICAgMHgwMDAzCi0jZGVmaW5lIE5vZGVSZXN1bHRJbnQ1MiAgICAgICAg
ICAgICAgICAgIDB4MDAwNAotI2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAgICAgICAgICAg
ICAweDAwMDUKLSNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgICAgICAgMHgwMDA2
CisjZGVmaW5lIE5vZGVSZXN1bHREb3VibGUgICAgICAgICAgICAgICAgIDB4MDAwMworI2RlZmlu
ZSBOb2RlUmVzdWx0SW50MzIgICAgICAgICAgICAgICAgICAweDAwMDQKKyNkZWZpbmUgTm9kZVJl
c3VsdEludDUyICAgICAgICAgICAgICAgICAgMHgwMDA1CisjZGVmaW5lIE5vZGVSZXN1bHRCb29s
ZWFuICAgICAgICAgICAgICAgIDB4MDAwNgorI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAg
ICAgICAgICAgICAweDAwMDcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAjZGVm
aW5lIE5vZGVNdXN0R2VuZXJhdGUgICAgICAgICAgICAgICAgIDB4MDAwOCAvLyBzZXQgb24gbm9k
ZXMgdGhhdCBoYXZlIHNpZGUgZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlhbGx5IGJlIHJlbW92
ZWQgYnkgRENFLgogI2RlZmluZSBOb2RlSGFzVmFyQXJncyAgICAgICAgICAgICAgICAgICAweDAw
MTAKQEAgLTExNCw2ICsxMTUsMTggQEAgc3RhdGljIGlubGluZSBib29sIG5vZGVDYW5TcGVjdWxh
dGVJbnQ1MgogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgaW5saW5lIE5vZGVGbGFncyBj
YW5vbmljYWxSZXN1bHRSZXByZXNlbnRhdGlvbihOb2RlRmxhZ3MgZmxhZ3MpCit7CisgICAgc3dp
dGNoIChmbGFncykgeworICAgIGNhc2UgTm9kZVJlc3VsdERvdWJsZToKKyAgICBjYXNlIE5vZGVS
ZXN1bHRJbnQ1MjoKKyAgICBjYXNlIE5vZGVSZXN1bHRTdG9yYWdlOgorICAgICAgICByZXR1cm4g
ZmxhZ3M7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRKUzsKKyAgICB9
Cit9CisKIHZvaWQgZHVtcE5vZGVGbGFncyhQcmludFN0cmVhbSYsIE5vZGVGbGFncyk7CiBNQUtF
X1BSSU5UX0FEQVBUT1IoTm9kZUZsYWdzRHVtcCwgTm9kZUZsYWdzLCBkdW1wTm9kZUZsYWdzKTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24g
MTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgLyogQSBjb25zdGFudCBpbiB0aGUgQ29kZUJsb2NrJ3MgY29uc3RhbnQgcG9vbC4g
Ki9cCiAgICAgbWFjcm8oSlNDb25zdGFudCwgTm9kZVJlc3VsdEpTIHwgTm9kZURvZXNOb3RFeGl0
KSBcCiAgICAgXAorICAgIC8qIENvbnN0YW50cyB3aXRoIHNwZWNpZmljIHJlcHJlc2VudGF0aW9u
cy4gKi9cCisgICAgbWFjcm8oRG91YmxlQ29uc3RhbnQsIE5vZGVSZXN1bHREb3VibGUgfCBOb2Rl
RG9lc05vdEV4aXQpIFwKKyAgICBtYWNybyhJbnQ1MkNvbnN0YW50LCBOb2RlUmVzdWx0SW50NTIg
fCBOb2RlRG9lc05vdEV4aXQpIFwKKyAgICBcCiAgICAgLyogQSBjb25zdGFudCBub3QgaW4gdGhl
IENvZGVCbG9jaydzIGNvbnN0YW50IHBvb2wuIFVzZXMgZ2V0IHBhdGNoZWQgdG8ganVtcHMgdGhh
dCBleGl0IHRoZSAqL1wKICAgICAvKiBjb2RlIGJsb2NrLiAqL1wKICAgICBtYWNybyhXZWFrSlND
b25zdGFudCwgTm9kZVJlc3VsdEpTIHwgTm9kZURvZXNOb3RFeGl0KSBcCkBAIC0xMDYsMTUgKzEx
MCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogVXNlZCB0byBi
b3ggdGhlIHJlc3VsdCBvZiBVUlNoaWZ0IG5vZGVzIChyZXN1bHQgaGFzIHJhbmdlIDAuLjJeMzIt
MSkuICovXAogICAgIG1hY3JvKFVJbnQzMlRvTnVtYmVyLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAg
ICAgXAotICAgIC8qIFVzZWQgdG8gY2FzdCBrbm93biBpbnRlZ2VycyB0byBkb3VibGVzLCBzbyBh
cyB0byBzZXBhcmF0ZSB0aGUgZG91YmxlIGZvcm0gKi9cCi0gICAgLyogb2YgdGhlIHZhbHVlIGZy
b20gdGhlIGludGVnZXIgZm9ybS4gKi9cCi0gICAgbWFjcm8oSW50MzJUb0RvdWJsZSwgTm9kZVJl
c3VsdE51bWJlcikgXAotICAgIC8qIFVzZWQgdG8gc3BlY3VsYXRlIHRoYXQgYSBkb3VibGUgdmFs
dWUgaXMgYWN0dWFsbHkgYW4gaW50ZWdlci4gKi9cCisgICAgLyogQXR0ZW1wdCB0byB0cnVuY2F0
ZSBhIGRvdWJsZSB0byBpbnQzMjsgdGhpcyB3aWxsIGV4aXQgaWYgaXQgY2FuJ3QgZG8gaXQuICov
XAogICAgIG1hY3JvKERvdWJsZUFzSW50MzIsIE5vZGVSZXN1bHRJbnQzMikgXAotICAgIC8qIFVz
ZWQgdG8gc2VwYXJhdGUgcmVwcmVzZW50YXRpb24gYW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gb2Yg
SW50NTIncyByZXByZXNlbnRlZCAqL1wKLSAgICAvKiBhcyB2YWx1ZXMuICovXAotICAgIG1hY3Jv
KEludDUyVG9WYWx1ZSwgTm9kZVJlc3VsdEpTKSBcCi0gICAgbWFjcm8oSW50NTJUb0RvdWJsZSwg
Tm9kZVJlc3VsdE51bWJlcikgXAorICAgIFwKKyAgICAvKiBDaGFuZ2UgdGhlIHJlcHJlc2VudGF0
aW9uIG9mIGEgdmFsdWUuICovXAorICAgIG1hY3JvKERvdWJsZVJlcCwgTm9kZVJlc3VsdERvdWJs
ZSkgXAorICAgIG1hY3JvKEludDUyUmVwLCBOb2RlUmVzdWx0SW50NTIpIFwKKyAgICBtYWNybyhW
YWx1ZVJlcCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBhcml0aG1l
dGljIG9wZXJhdGlvbnMuICovXAogICAgIG1hY3JvKEFyaXRoQWRkLCBOb2RlUmVzdWx0TnVtYmVy
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlcjMyXzY0LmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2OSw5ICsyNjksNyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3Qg
CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAg
ICAgIGNhc2UgSW5QYWlyOgotICAgICAgICBjYXNlIEluRlBSOgogICAgICAgICBjYXNlIERpc3Bs
YWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CiAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoCiAgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZywKICAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CkBAIC0yODYsNiArMjg0LDE0IEBAIHZvaWQg
T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbkZQUjoKKyAgICAgICAgY2FzZSBEb3VibGVEaXNw
bGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAg
ICAgICBtX2ppdC5sb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QwKTsK
KyAgICAgICAgICAgIG1faml0LnNhbml0aXplRG91YmxlKEZQUkluZm86OmZwUmVnVDApOworICAg
ICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgQXNzZW1ibHlIZWxw
ZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAg
IGNhc2UgVW5ib3hlZEludDMySW5HUFI6CiAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpT
U3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24gMTY3
MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsNyBAQCB2b2lkIE9TUkV4aXRDb21waWxl
cjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0
YWNrOgogICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgbV9qaXQu
bG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAg
ICBtX2ppdC5zYW5pdGl6ZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIG1f
aml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAg
ICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJl
c3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5MCw3
ICs0OTAsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXQ6Ci0gICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICAgICAgY2FzZSBEb3VibGVBc0lu
dDMyOgogICAgICAgICBjYXNlIEdldExvY2FsVW5saW5rZWQ6CiAgICAgICAgIGNhc2UgR2V0TXlB
cmd1bWVudHNMZW5ndGg6CkBAIC01MDQsMTEgKzUwMywxNSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JF
bnRlcjoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKLSAgICAgICAgY2FzZSBJbnQ1
MlRvVmFsdWU6Ci0gICAgICAgIGNhc2UgSW50NTJUb0RvdWJsZToKICAgICAgICAgY2FzZSBDaGVj
a0luQm91bmRzOgogICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKLSAgICAgICAgY2FzZSBIYXJk
UGhhbnRvbTogeworICAgICAgICBjYXNlIEhhcmRQaGFudG9tOgorICAgICAgICBjYXNlIERvdWJs
ZVJlcDoKKyAgICAgICAgY2FzZSBJbnQ1MlJlcDoKKyAgICAgICAgY2FzZSBWYWx1ZVJlcDoKKyAg
ICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50Ogor
ICAgICAgICBjYXNlIElkZW50aXR5OiB7CiAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxk
IG5ldmVyIGJlIHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxhdGlvbi4gSXQgaXMKICAg
ICAgICAgICAgIC8vIGluc2VydGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZvbGxvd3MgdGhpcyBwaGFz
ZS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MzUsMTAg
KzUzOCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24o
U3BlY0Jvb2xlYW4pOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBJZGVudGl0
eToKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUtPmNoaWxkMSgp
LT5wcmVkaWN0aW9uKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0KICNpZm5kZWYgTkRFQlVHCiAg
ICAgICAgIC8vIFRoZXNlIGdldCBpZ25vcmVkIGJlY2F1c2UgdGhleSBkb24ndCByZXR1cm4gYW55
dGhpbmcuCiAgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRh
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmhh
c1Jlc3VsdCgpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4
ICsgMSwgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwgRWRnZShub2RlKSk7CisgICAg
ICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5v
cmlnaW4sIG5vZGUtPmRlZmF1bHRFZGdlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZl
cnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw3ICsxOTIsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsIFNwZWNOb25lLCBNb3ZIaW50LCBOb2RlT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyh2YXJpYWJsZS0+bG9jYWwoKS5vZmZzZXQoKSks
IEVkZ2Uobm9kZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8odmFy
aWFibGUtPmxvY2FsKCkub2Zmc2V0KCkpLCBub2RlLT5kZWZhdWx0RWRnZSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KQEAgLTM1MCw3ICszNTAsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIFZhcmlh
YmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlLT5pc0NhcHR1cmVkKCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCku
c2V0Tm9kZShibG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkgPQorICAg
ICAgICAgICAgICAgICAgICAgICAgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kKHZhcmlh
YmxlLT5sb2NhbCgpKS0+ZGVmYXVsdEVkZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvUGhhbnRvbSgpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG9ubHkg
Zm9yIFVwc2lsb25zLiBBbiBVcHNpbG9uIHdpbGwgb25seSByZWZlciB0byBhCiAgICAgICAgICAg
ICAgICAgICAgIC8vIFBoYW50b21Mb2NhbCBpZiB0aGVyZSB3ZXJlIG5vIFNldExvY2FscyBvciBH
ZXRMb2NhbHMgaW4gdGhlIGJsb2NrLgpAQCAtMzYzLDcgKzM2NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlLT5pc0NhcHR1cmVkKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZh
dWx0RmxhZ3MoR2V0QXJndW1lbnQpOwotICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZs
YWdzKHJlc3VsdEZvcihub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKSkp
OworICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQocmVzdWx0Rm9yKG5vZGUtPnZh
cmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpKSk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw3ICs0Niw5IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChlZGdlLnVzZUtpbmQoKSkgewog
ICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgICAg
IGNhc2UgUmVhbE51bWJlclVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAg
IGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAg
ICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgY2Fz
ZSBDZWxsVXNlOgpAQCAtNjEsNyArNjMsNiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgTm90Q2Vs
bFVzZToKICAgICAgICAgY2FzZSBPdGhlclVzZToKICAgICAgICAgY2FzZSBNaXNjVXNlOgotICAg
ICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBLbm93bkludDMyVXNlOgpAQCAtNjksMTEgKzcwLDYgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIG1fcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgICAg
IGlmIChtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgflNwZWNGdWxsTnVtYmVyKQotICAg
ICAgICAgICAgICAgIG1fcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgICAgICBpZiAobV9z
dGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIH5TcGVjQ2VsbCkKICAgICAgICAgICAgICAgICBt
X3Jlc3VsdCA9IGZhbHNlOwpAQCAtMTExLDYgKzEwNyw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3QKIAogICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgIGNh
c2UgSlNDb25zdGFudDoKKyAgICBjYXNlIERvdWJsZUNvbnN0YW50OgorICAgIGNhc2UgSW50NTJD
b25zdGFudDoKICAgICBjYXNlIFdlYWtKU0NvbnN0YW50OgogICAgIGNhc2UgSWRlbnRpdHk6CiAg
ICAgY2FzZSBUb1RoaXM6CkBAIC0xMzcsNyArMTM1LDYgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFi
c3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQml0VVJTaGlmdDoKICAgICBjYXNlIFZhbHVl
VG9JbnQzMjoKICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgotICAgIGNhc2UgSW50MzJUb0RvdWJs
ZToKICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgY2FzZSBBcml0aEFkZDoKICAgICBjYXNl
IEFyaXRoU3ViOgpAQCAtMjQyLDggKzIzOSw2IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBD
aGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgIGNhc2UgTG9vcEhpbnQ6Ci0gICAgY2FzZSBJbnQ1
MlRvRG91YmxlOgotICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgIGNhc2UgU3RvcmVCYXJyaWVy
OgogICAgIGNhc2UgU3RvcmVCYXJyaWVyV2l0aE51bGxDaGVjazoKICAgICBjYXNlIEludmFsaWRh
dGlvblBvaW50OgpAQCAtMjU1LDYgKzI1MCw5IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNl
dDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CisgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICBj
YXNlIERvdWJsZVJlcDoKKyAgICBjYXNlIEludDUyUmVwOgogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgCiAgICAgY2FzZSBHZXRCeVZhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTY3
MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDIwICsxMzQsNiBAQCBib29sIFNwZWN1bGF0aXZl
SklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkCiAgICAgfQogCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNE
b3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7Ci0gICAgICAgIEZQUlJlZyBvbGRG
UFIgPSBpbmZvLmZwcigpOwotICAgICAgICBtX2ZwcnMubG9jayhvbGRGUFIpOwotICAgICAgICB0
YWdHUFIgPSBhbGxvY2F0ZSgpOwotICAgICAgICBwYXlsb2FkR1BSID0gYWxsb2NhdGUoKTsKLSAg
ICAgICAgYm94RG91YmxlKG9sZEZQUiwgdGFnR1BSLCBwYXlsb2FkR1BSKTsKLSAgICAgICAgbV9m
cHJzLnVubG9jayhvbGRGUFIpOwotICAgICAgICBtX2ZwcnMucmVsZWFzZShvbGRGUFIpOwotICAg
ICAgICBtX2dwcnMucmV0YWluKHRhZ0dQUiwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySlMp
OwotICAgICAgICBtX2dwcnMucmV0YWluKHBheWxvYWRHUFIsIHZpcnR1YWxSZWdpc3RlciwgU3Bp
bGxPcmRlckpTKTsKLSAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIHRhZ0dQUiwg
cGF5bG9hZEdQUiwgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
CiAgICAgY2FzZSBEYXRhRm9ybWF0SlM6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAg
ICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CkBAIC0xNjAsNiArMTQ2LDcgQEAgYm9vbCBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZAogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBE
YXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgIC8v
IHRoaXMgdHlwZSBjdXJyZW50bHkgbmV2ZXIgb2NjdXJzCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAKQEAgLTc1NiwxMiArNzQzLDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZv
cm1hdCgpKSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewotICAgICAgICBpZiAoaW5mby5z
cGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKLSAgICAgICAgICAgIHRlcm1pbmF0
ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKLSAg
ICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKLSAgICAgICAgICAgIHJl
dHVybiBhbGxvY2F0ZSgpOwotICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBpZiAoZWRnZS0+
aGFzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgQVNTRVJUKGlzSW50MzJDb25zdGFudChlZGdl
Lm5vZGUoKSkpOwogICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CkBAIC04MTMs
NyArNzk0LDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAg
ICAgICByZXR1cm4gZ3ByOwogICAgIH0KIAotICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAg
ICBjYXNlIERhdGFGb3JtYXRDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CkBAIC04MjMsNiArODAzLDcgQEAgR1BSUmVnIFNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRh
Rm9ybWF0SW50MzI7CiAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogCisgICAgY2FzZSBEYXRh
Rm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTg0NSwxMzYgKzgyNiwz
NCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAKIEZQUlJlZyBT
cGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlIGVkZ2UpCiB7Ci0gICAgQWJz
dHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7Ci0gICAgU3BlY3VsYXRl
ZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKLSAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0g
S25vd25OdW1iZXJVc2UgfHwgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpKTsKLSAg
ICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3BlY0Z1bGxOdW1iZXIpOworICAgIEFTU0VS
VChpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOworICAgIEFTU0VSVChlZGdlLT5oYXNEb3VibGVS
ZXN1bHQoKSk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZp
cnR1YWxSZWdpc3RlcigpOwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbklu
Zm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CiAKICAgICBpZiAoaW5mby5y
ZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXROb25lKSB7CiAKICAgICAgICAgaWYgKGVkZ2Ut
Pmhhc0NvbnN0YW50KCkpIHsKLSAgICAgICAgICAgIGlmIChpc0ludDMyQ29uc3RhbnQoZWRnZS5u
b2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0gICAg
ICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tMzIodmFsdWVPZkludDMy
Q29uc3RhbnQoZWRnZS5ub2RlKCkpKSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBtX2dwcnMucmV0
YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyQ29uc3RhbnQpOwotICAgICAgICAg
ICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgICAgICB1
bmxvY2soZ3ByKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOdW1iZXJDb25zdGFudChlZGdl
Lm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsK
LSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKGFkZHJlc3NPZkRvdWJsZUNvbnN0YW50
KGVkZ2Uubm9kZSgpKSwgZnByKTsKLSAgICAgICAgICAgICAgICBtX2ZwcnMucmV0YWluKGZwciwg
dmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyQ29uc3RhbnQpOwotICAgICAgICAgICAgICAgIGlu
Zm8uZmlsbERvdWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZw
cjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGVybWluYXRlU3BlY3Vs
YXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwotICAgICAgICAg
ICAgICAgIHJldHVybiBmcHJBbGxvY2F0ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3Jt
YXQoKTsKLSAgICAgICAgICAgIEFTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8
IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMik7Ci0gICAgICAgICAgICBpZiAoc3BpbGxG
b3JtYXQgPT0gRGF0YUZvcm1hdEpTRG91YmxlIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRE
b3VibGUpIHsKLSAgICAgICAgICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAg
ICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlciksIGZwcik7Ci0gICAgICAgICAgICAgICAgbV9mcHJzLnJldGFpbihmcHIs
IHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwotICAgICAgICAgICAgICAgIGlu
Zm8uZmlsbERvdWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZw
cjsKLSAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNOdW1iZXJD
b25zdGFudChlZGdlLm5vZGUoKSkpOwogICAgICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9j
YXRlKCk7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBoYXNVbmJveGVkRG91YmxlOwot
Ci0gICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgIT0gRGF0YUZvcm1hdEpTSW50MzIgJiYgc3Bp
bGxGb3JtYXQgIT0gRGF0YUZvcm1hdEludDMyKSB7Ci0gICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCBKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpJbnQzMlRhZykpOwotICAgICAgICAgICAgICAgIGlmICh0eXBlICYgflNwZWNGdWxsTnVt
YmVyKQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSksIGVkZ2Us
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIEpJVENvbXBpbGVy
Ojp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRh
ZykpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7Ci0gICAgICAgICAgICAgICAgaGFzVW5ib3hl
ZERvdWJsZSA9IG1faml0Lmp1bXAoKTsKLQotICAgICAgICAgICAgICAgIGlzSW50ZWdlci5saW5r
KCZtX2ppdCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1faml0LmNvbnZlcnRJbnQz
MlRvRG91YmxlKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7
Ci0KLSAgICAgICAgICAgIGlmIChoYXNVbmJveGVkRG91YmxlLmlzU2V0KCkpCi0gICAgICAgICAg
ICAgICAgaGFzVW5ib3hlZERvdWJsZS5saW5rKCZtX2ppdCk7Ci0KLSAgICAgICAgICAgIG1fZnBy
cy5yZXRhaW4oZnByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKKyAgICAg
ICAgICAgIG1faml0LmxvYWREb3VibGUoYWRkcmVzc09mRG91YmxlQ29uc3RhbnQoZWRnZS5ub2Rl
KCkpLCBmcHIpOworICAgICAgICAgICAgbV9mcHJzLnJldGFpbihmcHIsIHZpcnR1YWxSZWdpc3Rl
ciwgU3BpbGxPcmRlckNvbnN0YW50KTsKICAgICAgICAgICAgIGluZm8uZmlsbERvdWJsZSgqbV9z
dHJlYW0sIGZwcik7Ci0gICAgICAgICAgICBpbmZvLmtpbGxTcGlsbGVkKCk7CiAgICAgICAgICAg
ICByZXR1cm4gZnByOwogICAgICAgICB9Ci0gICAgfQotCi0gICAgc3dpdGNoIChpbmZvLnJlZ2lz
dGVyRm9ybWF0KCkpIHsKLSAgICBjYXNlIERhdGFGb3JtYXRKUzoKLSAgICBjYXNlIERhdGFGb3Jt
YXRKU0ludDMyOiB7Ci0gICAgICAgIEdQUlJlZyB0YWdHUFIgPSBpbmZvLnRhZ0dQUigpOwotICAg
ICAgICBHUFJSZWcgcGF5bG9hZEdQUiA9IGluZm8ucGF5bG9hZEdQUigpOworICAgICAgICAKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3Vi
bGUpOwogICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLQotICAgICAgICBtX2dw
cnMubG9jayh0YWdHUFIpOwotICAgICAgICBtX2dwcnMubG9jayhwYXlsb2FkR1BSKTsKLQotICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBoYXNVbmJveGVkRG91YmxlOwotCi0gICAgICAgIGlmIChp
bmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1hdEpTSW50MzIpIHsKLSAgICAgICAgICAg
IEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB0YWdH
UFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgICAgICAgICAgaWYgKHR5
cGUgJiB+U3BlY0Z1bGxOdW1iZXIpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBlZGdlLCBtX2ppdC5icmFu
Y2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpMb3dlc3RUYWcpKSk7Ci0gICAgICAgICAgICB1bmJveERvdWJsZSh0YWdHUFIsIHBh
eWxvYWRHUFIsIGZwciwgc2NyYXRjaC5mcHIoKSk7Ci0gICAgICAgICAgICBoYXNVbmJveGVkRG91
YmxlID0gbV9qaXQuanVtcCgpOwotICAgICAgICAgICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsK
LSAgICAgICAgfQotCi0gICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBheWxvYWRH
UFIsIGZwcik7Ci0KLSAgICAgICAgaWYgKGhhc1VuYm94ZWREb3VibGUuaXNTZXQoKSkKLSAgICAg
ICAgICAgIGhhc1VuYm94ZWREb3VibGUubGluaygmbV9qaXQpOwotCi0gICAgICAgIG1fZ3Bycy5y
ZWxlYXNlKHRhZ0dQUik7Ci0gICAgICAgIG1fZ3Bycy5yZWxlYXNlKHBheWxvYWRHUFIpOwotICAg
ICAgICBtX2dwcnMudW5sb2NrKHRhZ0dQUik7Ci0gICAgICAgIG1fZ3Bycy51bmxvY2socGF5bG9h
ZEdQUik7Ci0gICAgICAgIG1fZnBycy5yZXRhaW4oZnByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxs
T3JkZXJEb3VibGUpOworICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7CisgICAgICAgIG1fZnBycy5yZXRhaW4oZnBy
LCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKICAgICAgICAgaW5mby5maWxs
RG91YmxlKCptX3N0cmVhbSwgZnByKTsKLSAgICAgICAgaW5mby5raWxsU3BpbGxlZCgpOwogICAg
ICAgICByZXR1cm4gZnByOwogICAgIH0KIAotICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOiB7Ci0g
ICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICBHUFJSZWcgZ3ByID0g
aW5mby5ncHIoKTsKLSAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKLSAgICAgICAgbV9qaXQuY29u
dmVydEludDMyVG9Eb3VibGUoZ3ByLCBmcHIpOwotICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7
Ci0gICAgICAgIHJldHVybiBmcHI7Ci0gICAgfQotCi0gICAgY2FzZSBEYXRhRm9ybWF0SlNEb3Vi
bGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7Ci0gICAgICAgIEZQUlJlZyBmcHIgPSBp
bmZvLmZwcigpOwotICAgICAgICBtX2ZwcnMubG9jayhmcHIpOwotICAgICAgICByZXR1cm4gZnBy
OwotICAgIH0KLQotICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0
U3RvcmFnZToKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIGNh
c2UgRGF0YUZvcm1hdENlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2Ug
RGF0YUZvcm1hdEJvb2xlYW46Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOgotICAgICAg
ICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgMCk7Ci0gICAgICAgIHJldHVybiBmcHJBbGxvY2F0ZSgpOwotCi0gICAgZGVmYXVsdDoKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEludmFs
aWRGUFJSZWc7Ci0gICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKGluZm8ucmVnaXN0ZXJGb3JtYXQo
KSA9PSBEYXRhRm9ybWF0RG91YmxlKTsKKyAgICBGUFJSZWcgZnByID0gaW5mby5mcHIoKTsKKyAg
ICBtX2ZwcnMubG9jayhmcHIpOworICAgIHJldHVybiBmcHI7CiB9CiAKIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSBlZGdlKQpAQCAtOTg4LDcgKzg2Nyw3IEBA
IEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKIAogICAgIHN3aXRjaCAo
aW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewotICAg
ICAgICBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMiB8fCBpbmZvLnNw
aWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgeworICAgICAgICBpZiAoaW5mby5zcGls
bEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMikgewogICAgICAgICAgICAgdGVybWluYXRlU3Bl
Y3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAg
ICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgICAgIH0KQEAgLTEwNTIsMTIgKzkzMSwxMiBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICBjYXNlIERhdGFG
b3JtYXRKU0RvdWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNCb29sZWFuOgogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CiAgICAgICAgIHRl
cm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAw
KTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAKKyAgICBjYXNlIERhdGFGb3JtYXREb3Vi
bGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIApAQCAtMTA3Nyw3ICs5NTYsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQo
KSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgaWYgKGluZm8uc3BpbGxG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50MzIgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFG
b3JtYXREb3VibGUpIHsKKyAgICAgICAgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0SW50MzIpIHsKICAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0
ZSgpOwogICAgICAgICB9CkBAIC0xMTMzLDEyICsxMDEyLDEyIEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICBjYXNlIERhdGFGb3JtYXRKU0ludDMyOgogICAg
IGNhc2UgRGF0YUZvcm1hdEludDMyOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgotICAg
IGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CiAgICAg
Y2FzZSBEYXRhRm9ybWF0Q2VsbDoKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRp
b24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAgICByZXR1cm4gYWxsb2Nh
dGUoKTsKIAorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRT
dG9yYWdlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCkBAIC0xMTQ4
LDI4ICsxMDI3LDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAog
ICAgIH0KIH0KIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRUb0Rv
dWJsZShKU1ZhbHVlT3BlcmFuZCYgb3AsIEZQUlJlZyByZXN1bHQpCi17Ci0gICAgRlBSVGVtcG9y
YXJ5IHNjcmF0Y2godGhpcyk7Ci0KLSAgICBHUFJSZWcgb3BQYXlsb2FkR1BSID0gb3AucGF5bG9h
ZEdQUigpOwotICAgIEdQUlJlZyBvcFRhZ0dQUiA9IG9wLnRhZ0dQUigpOwotICAgIEZQUlJlZyBz
Y3JhdGNoRlBSID0gc2NyYXRjaC5mcHIoKTsKLQotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50
ZWdlciA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgb3BUYWdHUFIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIG5v
dE51bWJlciA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9w
UGF5bG9hZEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpOwotCi0gICAgdW5i
b3hEb3VibGUob3BUYWdHUFIsIG9wUGF5bG9hZEdQUiwgcmVzdWx0LCBzY3JhdGNoRlBSKTsKLSAg
ICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwotCi0gICAgaXNJbnRlZ2Vy
LmxpbmsoJm1faml0KTsKLSAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcFBheWxvYWRH
UFIsIHJlc3VsdCk7Ci0KLSAgICBkb25lLmxpbmsoJm1faml0KTsKLQotICAgIHJldHVybiBub3RO
dW1iZXI7Ci19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCYXNlVmFsdWVTdG9yZUJh
cnJpZXIoRWRnZSYgYmFzZUVkZ2UsIEVkZ2UmIHZhbHVlRWRnZSkKIHsKICNpZiBFTkFCTEUoR0dD
KQpAQCAtMTU0Nyw3ICsxNDA0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2lj
YWxOb3QoTgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIE51bWJl
clVzZTogeworICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJs
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBGUFJUZW1wb3Jh
cnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhp
cyk7CkBAIC0xNjc2LDcgKzE1MzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNo
KE5vZGUqIG5vCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgY2FzZSBOdW1iZXJV
c2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEludDMyVXNlKSB7CiAgICAgICAgICAg
ICBib29sIGludmVydCA9IGZhbHNlOwpAQCAtMTgxNyw2ICsxNjc0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgc3dpdGNoIChvcCkgewogICAgIGNh
c2UgSlNDb25zdGFudDoKKyAgICBjYXNlIERvdWJsZUNvbnN0YW50OgogICAgICAgICBpbml0Q29u
c3RhbnRJbmZvKG5vZGUpOwogICAgICAgICBicmVhazsKIApAQCAtMTk3OCwxNCArMTgzNiw2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgogICAgICAgICBjYXNlIEZsdXNoZWRBcmd1bWVu
dHM6IHsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIo
bm9kZS0+Y2hpbGQxKCktPnZpcnR1YWxSZWdpc3RlcigpKS5yZWdpc3RlckZvcm1hdCgpID09IERh
dGFGb3JtYXREb3VibGUpIHsKLSAgICAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwot
ICAgICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHZhbHVlLmZwcigpLCBKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcihub2RlLT5tYWNoaW5lTG9jYWwoKSkpOwotICAgICAgICAgICAgICAgIG5v
UmVzdWx0KG5vZGUpOwotICAgICAgICAgICAgICAgIHJlY29yZFNldExvY2FsKERhdGFGb3JtYXRE
b3VibGUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgCiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlLnBheWxvYWRHUFIoKSwgSklUQ29t
cGlsZXI6OnBheWxvYWRGb3Iobm9kZS0+bWFjaGluZUxvY2FsKCkpKTsKICAgICAgICAgICAgIG1f
aml0LnN0b3JlMzIodmFsdWUudGFnR1BSKCksIEpJVENvbXBpbGVyOjp0YWdGb3Iobm9kZS0+bWFj
aGluZUxvY2FsKCkpKTsKQEAgLTIwNzcsOCArMTkyNywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0g
ICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7Ci0gICAgICAgIGNvbXBpbGVJbnQzMlRvRG91YmxlKG5v
ZGUpOworICAgIGNhc2UgRG91YmxlUmVwOiB7CisgICAgICAgIGNvbXBpbGVEb3VibGVSZXAobm9k
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBWYWx1ZVJlcDog
eworICAgICAgICBjb21waWxlVmFsdWVSZXAobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICAgICAgCkBAIC0yMTUxLDcgKzIwMDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAg
ICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICAKQEAg
LTIxOTMsNyArMjA0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBjYXNl
IE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAg
U3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwpAQCAtNDc0NSw4ICs0
NjAwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNh
c2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAg
IGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKLSAgICBjYXNlIEludDUyVG9Eb3VibGU6Ci0g
ICAgY2FzZSBJbnQ1MlRvVmFsdWU6CisgICAgY2FzZSBJbnQ1MlJlcDoKKyAgICBjYXNlIEludDUy
Q29uc3RhbnQ6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgogICAgIGNhc2UgQXJpdGhJTXVsOgog
ICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTY3MjcyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA2LDIxICsxMDYsOSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxK
U1ZhbHVlKEVkZ2UgCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKLSAgICAgICAg
ICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOiB7Ci0gICAgICAgICAgICAgICAgbV9qaXQu
bG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0g
ICAgICAgICAgICAgICAgYm94SW50NTIoZ3ByLCBncHIsIHNwaWxsRm9ybWF0KTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBp
ZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAgICAgICAgICAgICAgICAg
ICAvLyBOZWVkIHRvIGJveCB0aGUgZG91YmxlLCBzaW5jZSB3ZSB3YW50IGEgSlNWYWx1ZS4KLSAg
ICAgICAgICAgICAgICAgICAgbV9qaXQuc3ViNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyLCBncHIpOwotICAgICAgICAgICAgICAgICAgICBzcGlsbEZvcm1hdCA9IERhdGFGb3JtYXRK
U0RvdWJsZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUo
Km1fc3RyZWFtLCBncHIsIHNwaWxsRm9ybWF0KTsKQEAgLTE0MywyOCArMTMxLDYgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAogICAgICAgICByZXR1cm4gZ3ByOwog
ICAgIH0KIAotICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZTogewotICAgICAgICBGUFJSZWcgZnBy
ID0gaW5mby5mcHIoKTsKLSAgICAgICAgR1BSUmVnIGdwciA9IGJveERvdWJsZShmcHIpOwotCi0g
ICAgICAgIC8vIFVwZGF0ZSBhbGwgaW5mbwotICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0
cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNEb3VibGUpOwotICAgICAgICBtX2ZwcnMucmVsZWFzZShm
cHIpOwotICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9y
ZGVySlMpOwotCi0gICAgICAgIHJldHVybiBncHI7Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNl
IERhdGFGb3JtYXRJbnQ1MjoKLSAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjogewotICAg
ICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgbG9jayhncHIpOwotICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gYWxsb2NhdGUoKTsKLSAgICAgICAgYm94SW50NTIoZ3ByLCBy
ZXN1bHRHUFIsIGluZm8ucmVnaXN0ZXJGb3JtYXQoKSk7Ci0gICAgICAgIHVubG9jayhncHIpOwot
ICAgICAgICByZXR1cm4gcmVzdWx0R1BSOwotICAgIH0KLQogICAgIGNhc2UgRGF0YUZvcm1hdENl
bGw6CiAgICAgICAgIC8vIE5vIHJldGFnIHJlcXVpcmVkIG9uIEpTVkFMVUU2NCEKICAgICBjYXNl
IERhdGFGb3JtYXRKUzoKQEAgLTE3OSw2ICsxNDUsOCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAgIAogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46
CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6
CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgICAgIC8vIHRoaXMgdHlwZSBjdXJyZW50
bHkgbmV2ZXIgb2NjdXJzCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIApAQCAtNzY5LDEyICs3MzcsNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVJbnQzCiAgICAgCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsK
ICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAgICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0
KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRp
dmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwotICAgICAgICAgICAg
cmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOwotICAgICAgICAgICAgcmV0dXJuIGFsbG9j
YXRlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCiAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0
ZSgpOwogCiAgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CkBAIC03ODgsNyArNzUw
LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICAK
ICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAg
ICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRK
UykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyIHx8IHNwaWxsRm9ybWF0ID09IERh
dGFGb3JtYXRJbnQ1MiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMik7CiAgICAgICAgIAogICAgICAgICBtX2dwcnMu
cmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAgICAgICAg
IApAQCAtODA5LDM2ICs3NzEsNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVJbnQzCiAgICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SlNJbnQzMjsKICAg
ICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHNwaWxsRm9ybWF0
ID09IERhdGFGb3JtYXRJbnQ1MiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50
NTIpIHsKLSAgICAgICAgICAgIC8vIEdlbmVyYWxseSwgdGhpcyBjYW4gb25seSBoYXBwZW4gaWYg
d2UndmUgYWxyZWFkeSBwcm92ZWQgdGhhdCB0aGUKLSAgICAgICAgICAgIC8vIHZhbHVlIGlzIGFu
IGludDMyLiBUaGF0J3MgYmVjYXVzZSBpZiBhIHZhbHVlIG9yaWdpbmF0ZWQgYXMgYSBKU1ZhbHVl
Ci0gICAgICAgICAgICAvLyB0aGVuIHdlIHdvdWxkIHNwZWN1bGF0ZSB0aGF0IGl0J3MgYW4gaW50
MzIgYmVmb3JlIHJlcHJlc2VudGluZyBpdCBhcwotICAgICAgICAgICAgLy8gYW4gaW50NTIuIE90
aGVyd2lzZSwgaWYgd2Uga25vd2luZ2x5IHByb2R1Y2VkIGFuIGludDUyLCB0aGVuIHdlIHdvdWxk
Ci0gICAgICAgICAgICAvLyBiZSBib3hpbmcgaXQgaW50byBhIHZhbHVlIHVzaW5nIEludDUyVG9W
YWx1ZS4gVGhpcyBhc3NlcnRpb24gaXMgdmFsaWQKLSAgICAgICAgICAgIC8vIG9ubHkgYmVjYXVz
ZSBJbnQ1MiBpcyBzb21ldGhpbmcgdGhhdCB3ZSBpbnRyb2R1Y2UgYXQgcHJlZGljdGlvbiB0aW1l
LgotICAgICAgICAgICAgLy8gSG93ZXZlcjogd2UgbWF5IGhhdmUgYW4gaW50MzItcHJvZHVjaW5n
IG5vZGUgcmVwbGFjZWQgYnkgYW4KLSAgICAgICAgICAgIC8vIGludDUyLXByb2R1Y2luZyBub2Rl
IGR1ZSB0byBDU0UuIFNvIHdlIG11c3QgZG8gYSBjaGVjay4KLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCEodHlwZSAmIH5TcGVjTWFjaGluZUludCkpOwotICAgICAgICAgICAgaWYgKHR5cGUg
JiBTcGVjSW50NTIpIHsKLSAgICAgICAgICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9jYXRlKCk7
Ci0gICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoZ3ByLCB0ZW1wKTsKLSAg
ICAgICAgICAgICAgICAvLyBDdXJyZW50bHksIHdlIGNhbid0IHN1cHBseSB2YWx1ZSBwcm9maWxp
bmcgaW5mb3JtYXRpb24gaGVyZS4gOi0vCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
aygKLSAgICAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBn
cHIsIHRlbXApKTsKLSAgICAgICAgICAgICAgICB1bmxvY2sodGVtcCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKQot
ICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
bV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdw
cik7Ci0gICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OmludDUyU2hpZnRBbW91bnQpLCBncHIpOwotICAgICAgICAgICAgICAgIG1faml0Lnplcm9FeHRl
bmQzMlRvUHRyKGdwciwgZ3ByKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluZm8uZmls
bEludDMyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFG
b3JtYXRJbnQzMjsKLSAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgIH0KICAgICAgICAg
bV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdw
cik7CiAKICAgICAgICAgLy8gRmlsbCBhcyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJvdWdoLgpAQCAt
ODk3LDQ3ICs4MjksNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQz
CiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIERhdGFGb3Jt
YXRTdHJpY3RJbnQ1MjoKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjogewotICAgICAgICBHUFJS
ZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJlc3VsdDsKLSAgICAgICAgRGF0
YUZvcm1hdCBvbGRGb3JtYXQgPSBpbmZvLnJlZ2lzdGVyRm9ybWF0KCk7Ci0gICAgICAgIGlmICht
X2dwcnMuaXNMb2NrZWQoZ3ByKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gYWxsb2NhdGUoKTsK
LSAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgbG9jayhncHIpOwotICAgICAgICAgICAgaW5mby5maWxsSW50MzIoKm1fc3Ry
ZWFtLCBncHIpOwotICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOwotICAgICAgICB9Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKCEodHlwZSAmIH5TcGVjTWFjaGluZUludCkpOwotICAgICAgICBpZiAo
b2xkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikKLSAgICAgICAgICAgIG1faml0LnJzaGlmdDY0
KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgcmVzdWx0KTsKLSAgICAg
ICAgaWYgKHR5cGUgJiBTcGVjSW50NTIpIHsKLSAgICAgICAgICAgIEdQUlJlZyB0ZW1wID0gYWxs
b2NhdGUoKTsKLSAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdCwgdGVt
cCk7Ci0gICAgICAgICAgICAvLyBDdXJyZW50bHksIHdlIGNhbid0IHN1cHBseSB2YWx1ZSBwcm9m
aWxpbmcgaW5mb3JtYXRpb24gaGVyZS4gOi0vCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KAotICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZXN1bHQsIHRl
bXApKTsKLSAgICAgICAgICAgIHVubG9jayh0ZW1wKTsKLSAgICAgICAgfQotICAgICAgICBtX2pp
dC56ZXJvRXh0ZW5kMzJUb1B0cihyZXN1bHQsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybkZvcm1h
dCA9IERhdGFGb3JtYXRJbnQzMjsKLSAgICAgICAgcmV0dXJuIGdwcjsKLSAgICB9Ci0KLSAgICBj
YXNlIERhdGFGb3JtYXREb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6IHsKLSAg
ICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkgJiYgaXNJbnQzMkNvbnN0YW50KGVkZ2Uubm9k
ZSgpKSkgewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAg
ICBBU1NFUlQoaXNJbnQzMkNvbnN0YW50KGVkZ2Uubm9kZSgpKSk7Ci0gICAgICAgICAgICBtX2pp
dC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW0zMih2YWx1ZU9mSW50MzJDb25zdGFudChlZGdlLm5v
ZGUoKSkpLCBncHIpOwotICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMy
OwotICAgICAgICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgfQotICAgICAgICBGQUxMVEhST1VH
SDsKLSAgICB9CisgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9y
bWF0Q2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgogICAgIGNhc2UgRGF0YUZvcm1h
dEpTQ2VsbDoKQEAgLTk0Nyw3ICs4MzksMTAgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlSW50MwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CiAKKyAgICBj
YXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBj
YXNlIERhdGFGb3JtYXRJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgCiAgICAgZGVmYXVs
dDoKQEAgLTk3NiwxNCArODcxLDEzIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZUludDUKIHsKICAgICBBU1NFUlQoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIg
fHwgZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpOwogICAgIEFic3RyYWN0
VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwotICAgIFNwZWN1bGF0ZWRUeXBl
IHR5cGUgPSB2YWx1ZS5tX3R5cGU7CiAgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNw
ZWNNYWNoaW5lSW50KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gZWRn
ZS0+dmlydHVhbFJlZ2lzdGVyKCk7CiAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0
aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKIAogICAgIHN3aXRj
aCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewot
ICAgICAgICBpZiAoKGVkZ2UtPmhhc0NvbnN0YW50KCkgJiYgIXZhbHVlT2ZKU0NvbnN0YW50KGVk
Z2Uubm9kZSgpKS5pc01hY2hpbmVJbnQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFG
b3JtYXREb3VibGUpIHsKKyAgICAgICAgaWYgKChlZGdlLT5oYXNDb25zdGFudCgpICYmICF2YWx1
ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSkuaXNNYWNoaW5lSW50KCkpKSB7CiAgICAgICAgICAg
ICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICAgICAgfQpAQCAtMTAw
NCw4MiArODk4LDIxIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDUK
ICAgICAgICAgCiAgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9y
bWF0KCk7CiAgICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBE
YXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMiB8fCBzcGlsbEZv
cm1hdCA9PSBEYXRhRm9ybWF0SW50NTIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmlj
dEludDUyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1h
dEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7CiAgICAgICAg
IAogICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVy
U3BpbGxlZCk7CiAgICAgICAgIAotICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1h
dEpTSW50MzIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKSB7Ci0gICAgICAgICAg
ICAvLyBJZiB3ZSBrbm93IHRoaXMgd2FzIHNwaWxsZWQgYXMgYW4gaW50ZWdlciB3ZSBjYW4gZmls
bCB3aXRob3V0IGNoZWNraW5nLgotICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Ci0gICAgICAgICAgICBtX2ppdC5z
aWduRXh0ZW5kMzJUb1B0cihncHIsIGdwcik7Ci0gICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1h
dCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpIHsKLSAgICAgICAgICAgICAgICBpbmZvLmZpbGxT
dHJpY3RJbnQ1MigqbV9zdHJlYW0sIGdwcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdwcjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbElu
dDUyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MiB8fCBzcGlsbEZvcm1h
dCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpIHsKLSAgICAgICAgICAgIG1faml0LmxvYWQ2NChK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAg
ICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikKLSAgICAgICAgICAg
ICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRB
bW91bnQpLCBncHIpOwotICAgICAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDUyKCptX3N0
cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKLSAg
ICAgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJT
aGlmdEFtb3VudCksIGdwcik7Ci0gICAgICAgICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0s
IGdwcik7Ci0gICAgICAgICAgICByZXR1cm4gZ3ByOwotICAgICAgICB9CiAgICAgICAgIG1faml0
LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwot
Ci0gICAgICAgIC8vIEZpbGwgYXMgSlNWYWx1ZSwgYW5kIGZhbGwgdGhyb3VnaC4KLSAgICAgICAg
aW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTSW50MzIpOwotICAg
ICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0gICAgICAgIEZBTExUSFJPVUdIOwotICAgIH0KLQot
ICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7Ci0gICAgICAgIC8vIENoZWNrIHRoZSB2YWx1ZSBpcyBh
biBpbnRlZ2VyLiBOb3RlIHRoYXQgd2Ugd291bGQgKmxpa2UqIHRvIHVuYm94IGFuIEludDUyCi0g
ICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgYnV0IHRoaXMgaXMgdG9vIGNvc3RseS4gV2Ugb25seSAq
cHJvdmUqIHRoYXQgdGhpcyBpcyBhbiBJbnQ1MgotICAgICAgICAvLyBldmVuIHRob3VnaCB3ZSBj
aGVjayBpZiBpdCdzIGFuIGludDMyLgotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsK
LSAgICAgICAgR1BSUmVnIHJlc3VsdDsKLSAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChncHIp
KSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQu
bW92ZShncHIsIHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2dwcnMu
bG9jayhncHIpOwotICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOwotICAgICAgICB9Ci0gICAgICAg
IGlmICh0eXBlICYgflNwZWNJbnQzMikKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVJlZ3MocmVzdWx0KSwgZWRnZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3Nl
bWJsZXI6OkJlbG93LCByZXN1bHQsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwot
ICAgICAgICBpZiAocmVzdWx0ID09IGdwcikgLy8gVGhlIG5vdC1hbHJlYWR5LWxvY2tlZCwgc28g
ZmlsbCBpbi1wbGFjZSwgY2FzZS4KLSAgICAgICAgICAgIGluZm8uZmlsbEludDUyKCptX3N0cmVh
bSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKLSAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIo
cmVzdWx0LCByZXN1bHQpOwotICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0
SW50NTIpCi0gICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
aW50NTJTaGlmdEFtb3VudCksIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
fQotCi0gICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQz
MjogewotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJl
c3VsdDsKLSAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAg
ICAgICAgaW5mby5maWxsSW50NTIoKm1fc3RyZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOwotICAg
ICAgICAgICAgcmVzdWx0ID0gZ3ByOworICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRh
Rm9ybWF0U3RyaWN0SW50NTIpIHsKKyAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRh
Rm9ybWF0SW50NTIpCisgICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxs
U3RyaWN0SW50NTIoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAg
ICAgICAgfQotICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHQsIHJlc3VsdCk7
Ci0gICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikKLSAgICAgICAg
ICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50
KSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgaWYgKHNwaWxsRm9y
bWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKKyAgICAgICAgICAgIG1faml0LmxzaGlmdDY0
KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgZ3ByKTsKKyAgICAgICAg
aW5mby5maWxsSW50NTIoKm1fc3RyZWFtLCBncHIpOworICAgICAgICByZXR1cm4gZ3ByOwogICAg
IH0KIAogICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOiB7CkBAIC0xMTE2LDMxICs5NDks
NiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ1CiAgICAgICAgIHJl
dHVybiBncHI7CiAgICAgfQogCi0gICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgotICAgIGNhc2Ug
RGF0YUZvcm1hdEpTRG91YmxlOgotICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewot
ICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2Rl
KCkpOwotICAgICAgICAgICAgaWYgKGpzVmFsdWUuaXNNYWNoaW5lSW50KCkpIHsKLSAgICAgICAg
ICAgICAgICBpbnQ2NF90IHZhbHVlID0ganNWYWx1ZS5hc01hY2hpbmVJbnQoKTsKLSAgICAgICAg
ICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCi0gICAgICAgICAg
ICAgICAgICAgIHZhbHVlID0gdmFsdWUgPDwgSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudDsKLSAg
ICAgICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgICAgICBt
X2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW02NCh2YWx1ZSksIGdwcik7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGdwcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBGQUxM
VEhST1VHSDsKLSAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEJv
b2xlYW46Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEpT
Qm9vbGVhbjogewotICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwotICAg
IH0KLQotICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOwpAQCAt
MTE0OSwxMCArOTU3LDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50
NQogCiBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUoRWRnZSBlZGdl
KQogewotICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwot
ICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7Ci0gICAgQVNTRVJUKGVkZ2Uu
dXNlS2luZCgpICE9IEtub3duTnVtYmVyVXNlIHx8ICEodmFsdWUubV90eXBlICYgflNwZWNGdWxs
TnVtYmVyKSk7Ci0gICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNGdWxsTnVtYmVy
KTsKKyAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNlIHx8IGVkZ2UudXNl
S2luZCgpID09IERvdWJsZVJlcFJlYWxVc2UpOworICAgIEFTU0VSVChlZGdlLT5oYXNEb3VibGVS
ZXN1bHQoKSk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZp
cnR1YWxSZWdpc3RlcigpOwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbklu
Zm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CiAKQEAgLTExNjAsMTcgKzk2
Niw2IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAgICAgICAg
aWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxv
Y2F0ZSgpOwogCi0gICAgICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KGVkZ2Uubm9kZSgpKSkg
ewotICAgICAgICAgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICAg
ICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHJlaW50ZXJwcmV0RG91Ymxl
VG9JbnQ2NChzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlT2ZJbnQzMkNvbnN0YW50KGVkZ2Uubm9k
ZSgpKSkpKSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlNjRUb0RvdWJsZShncHIs
IGZwcik7Ci0gICAgICAgICAgICAgICAgdW5sb2NrKGdwcik7Ci0KLSAgICAgICAgICAgICAgICAv
LyBEb24ndCBmaWxsIGRvdWJsZSBoZXJlIHNpbmNlIHRoYXQgd2lsbCBsZWFkIHRvIGNvbmZ1c2lv
bjogdGhlCi0gICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgYWxsb2NhdG9yIHdpbGwgbm93IHRo
aW5rIHRoYXQgdGhpcyBpcyBhIGRvdWJsZSB3aGlsZQotICAgICAgICAgICAgICAgIC8vIGV2ZXJ5
b25lIGVsc2UgdGhpbmtzIGl0J3MgYW4gaW50ZWdlci4KLSAgICAgICAgICAgICAgICByZXR1cm4g
ZnByOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlzTnVtYmVyQ29uc3RhbnQoZWRn
ZS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7
CiAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tNjQocmVpbnRl
cnByZXREb3VibGVUb0ludDY0KHZhbHVlT2ZOdW1iZXJDb25zdGFudChlZGdlLm5vZGUoKSkpKSwg
Z3ByKTsKQEAgLTExODYsMTU5ICs5ODEsMTggQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlRG91YgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBEYXRhRm9ybWF0IHNw
aWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwotICAgICAgICBzd2l0Y2ggKHNwaWxsRm9y
bWF0KSB7Ci0gICAgICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZTogewotICAgICAgICAgICAgRlBS
UmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJ
VENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7Ci0gICAgICAgICAg
ICBtX2ZwcnMucmV0YWluKGZwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyRG91YmxlKTsK
LSAgICAgICAgICAgIGluZm8uZmlsbERvdWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgICAg
ICByZXR1cm4gZnByOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBEYXRh
Rm9ybWF0SW50MzI6IHsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVy
LCBTcGlsbE9yZGVyU3BpbGxlZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8u
ZmlsbEludDMyKCptX3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIERh
dGFGb3JtYXRJbnQ1MjogewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0g
ICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVy
U3BpbGxlZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbEludDUyKCpt
X3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIERhdGFGb3JtYXRTdHJp
Y3RJbnQ1MjogewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Ci0gICAgICAg
ICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxl
ZCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDUyKCpt
X3N0cmVhbSwgZ3ByKTsKLSAgICAgICAgICAgIHVubG9jayhncHIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgR1BSUmVnIGdw
ciA9IGFsbG9jYXRlKCk7Ci0KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNwaWxsRm9ybWF0
ICYgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFs
UmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAgICAgICAgIG1faml0LmxvYWQ2NChK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAg
ICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwotICAgICAg
ICAgICAgdW5sb2NrKGdwcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7Ci0gICAgY2FzZSBEYXRhRm9y
bWF0Tm9uZTogLy8gU2hvdWxkIGhhdmUgZmlsbGVkLCBhYm92ZS4KLSAgICBjYXNlIERhdGFGb3Jt
YXRCb29sZWFuOiAvLyBUaGlzIHR5cGUgbmV2ZXIgb2NjdXJzLgotICAgIGNhc2UgRGF0YUZvcm1h
dFN0b3JhZ2U6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBj
YXNlIERhdGFGb3JtYXRDZWxsOgotICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlv
bihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgIHJldHVybiBmcHJBbGxv
Y2F0ZSgpOwotCi0gICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1h
dEpTOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogewotICAgICAgICBHUFJSZWcganNW
YWx1ZUdwciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGpzVmFsdWVHcHIpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKTsK
ICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7Ci0gICAgICAgIEdQUlJlZyB0ZW1w
R3ByID0gYWxsb2NhdGUoKTsKLQotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIg
PSBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBqc1ZhbHVlR3By
LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotCi0gICAgICAgIGlmICh0eXBlICYg
flNwZWNGdWxsTnVtYmVyKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBK
U1ZhbHVlUmVncyhqc1ZhbHVlR3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCBqc1ZhbHVlR3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIp
KTsKLQotICAgICAgICAvLyBGaXJzdCwgaWYgd2UgZ2V0IGhlcmUgd2UgaGF2ZSBhIGRvdWJsZSBl
bmNvZGVkIGFzIGEgSlNWYWx1ZQotICAgICAgICBtX2ppdC5tb3ZlKGpzVmFsdWVHcHIsIHRlbXBH
cHIpOwotICAgICAgICB1bmJveERvdWJsZSh0ZW1wR3ByLCBmcHIpOwotICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBoYXNVbmJveGVkRG91YmxlID0gbV9qaXQuanVtcCgpOwotCi0gICAgICAgIC8v
IEZpbmFsbHksIGhhbmRsZSBpbnRlZ2Vycy4KLSAgICAgICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0
KTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUoanNWYWx1ZUdwciwgZnByKTsK
LSAgICAgICAgaGFzVW5ib3hlZERvdWJsZS5saW5rKCZtX2ppdCk7Ci0KLSAgICAgICAgbV9ncHJz
LnJlbGVhc2UoanNWYWx1ZUdwcik7Ci0gICAgICAgIG1fZ3Bycy51bmxvY2soanNWYWx1ZUdwcik7
Ci0gICAgICAgIG1fZ3Bycy51bmxvY2sodGVtcEdwcik7CisgICAgICAgIG1faml0LmxvYWREb3Vi
bGUoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZnByKTsKICAgICAg
ICAgbV9mcHJzLnJldGFpbihmcHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7
CiAgICAgICAgIGluZm8uZmlsbERvdWJsZSgqbV9zdHJlYW0sIGZwcik7Ci0gICAgICAgIGluZm8u
a2lsbFNwaWxsZWQoKTsKICAgICAgICAgcmV0dXJuIGZwcjsKICAgICB9CiAKLSAgICBjYXNlIERh
dGFGb3JtYXRKU0ludDMyOgotICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOiB7Ci0gICAgICAgIEZQ
UlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIo
KTsKLSAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDMy
VG9Eb3VibGUoZ3ByLCBmcHIpOwotICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7Ci0gICAgICAg
IHJldHVybiBmcHI7Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNlIERhdGFGb3JtYXRJbnQ1Mjog
ewotICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKLSAgICAgICAgR1BSUmVnIGdw
ciA9IGluZm8uZ3ByKCk7Ci0gICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgIEdQUlJl
ZyB0ZW1wID0gYWxsb2NhdGUoKTsKLSAgICAgICAgbV9qaXQubW92ZShncHIsIHRlbXApOwotICAg
ICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3Vu
dCksIHRlbXApOwotICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZSh0ZW1wLCBmcHIp
OwotICAgICAgICB1bmxvY2sodGVtcCk7Ci0gICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKLSAg
ICAgICAgcmV0dXJuIGZwcjsKLSAgICB9Ci0gICAgICAgIAotICAgIGNhc2UgRGF0YUZvcm1hdFN0
cmljdEludDUyOiB7Ci0gICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwotICAgICAg
ICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKLSAg
ICAgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUoZ3ByLCBmcHIpOwotICAgICAgICBtX2dw
cnMudW5sb2NrKGdwcik7Ci0gICAgICAgIHJldHVybiBmcHI7Ci0gICAgfQotCi0gICAgLy8gVW5i
b3ggdGhlIGRvdWJsZQotICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOiB7Ci0gICAgICAgIEdQ
UlJlZyBncHIgPSBpbmZvLmdwcigpOwotICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUo
KTsKLSAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7Ci0gICAgICAgICAgICAvLyBN
YWtlIHN1cmUgd2UgZG9uJ3QgdHJhbXBsZSBncHIgaWYgaXQgaXMgaW4gdXNlLgotICAgICAgICAg
ICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQubW92ZShncHIs
IHRlbXApOwotICAgICAgICAgICAgdW5ib3hEb3VibGUodGVtcCwgZnByKTsKLSAgICAgICAgICAg
IHVubG9jayh0ZW1wKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB1bmJveERvdWJsZShn
cHIsIGZwcik7Ci0KLSAgICAgICAgbV9ncHJzLnJlbGVhc2UoZ3ByKTsKLSAgICAgICAgbV9mcHJz
LnJldGFpbihmcHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7Ci0KLSAgICAg
ICAgaW5mby5maWxsRG91YmxlKCptX3N0cmVhbSwgZnByKTsKLSAgICAgICAgcmV0dXJuIGZwcjsK
LSAgICB9Ci0KLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6IHsKLSAgICAgICAgRlBSUmVnIGZw
ciA9IGluZm8uZnByKCk7Ci0gICAgICAgIG1fZnBycy5sb2NrKGZwcik7Ci0gICAgICAgIHJldHVy
biBmcHI7Ci0gICAgfQotICAgICAgICAKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gSW52YWxpZEZQUlJlZzsKLSAgICB9
CisgICAgUkVMRUFTRV9BU1NFUlQoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXRE
b3VibGUpOworICAgIEZQUlJlZyBmcHIgPSBpbmZvLmZwcigpOworICAgIG1fZnBycy5sb2NrKGZw
cik7CisgICAgcmV0dXJuIGZwcjsKIH0KIAogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlQ2VsbChFZGdlIGVkZ2UpCkBAIC0xMzUyLDExICsxMDA2LDYgQEAgR1BSUmVnIFNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVy
Rm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAgICAgIGlmIChpbmZv
LnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9
PSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4
ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Ci0gICAgICAgICAgICByZXR1
cm4gYWxsb2NhdGUoKTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgR1BSUmVnIGdwciA9
IGFsbG9jYXRlKCk7CiAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKQEAgLTE0
MDUsMTYgKzEwNTQsMTYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2Vs
bAogICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6
CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0gICAgY2FzZSBEYXRhRm9ybWF0RG91Ymxl
OgogICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRCb29s
ZWFuOgotICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgotICAgIGNhc2UgRGF0YUZvcm1hdFN0cmlj
dEludDUyOiB7CisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjogewogICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAg
ICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KIAorICAgIGNhc2UgRGF0YUZvcm1hdERv
dWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdElu
dDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgogICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTQzMyw3ICsx
MDgyLDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogCiAgICAg
c3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25l
OiB7Ci0gICAgICAgIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyIHx8
IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7CisgICAgICAgIGlmIChp
bmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyKSB7CiAgICAgICAgICAgICB0ZXJt
aW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7
CiAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICAgICAgfQpAQCAtMTQ4NywxNiAr
MTEzNiwxNSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICBj
YXNlIERhdGFGb3JtYXRKU0RvdWJsZToKLSAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Ci0gICAgY2Fz
ZSBEYXRhRm9ybWF0SW50NTI6Ci0gICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKICAg
ICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIDApOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKLSAgICB9CiAgICAgICAgIAor
ICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgor
ICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUy
OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAKICAgICBk
ZWZhdWx0OgpAQCAtMTUwNSwyNiArMTE1Myw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUJvb2wKICAgICB9CiB9CiAKLUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZl
SklUOjpjb252ZXJ0VG9Eb3VibGUoR1BSUmVnIHZhbHVlLCBGUFJSZWcgcmVzdWx0LCBHUFJSZWcg
dG1wKQotewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDY0
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHZhbHVlLCBHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdE51bWJlciA9IG1f
aml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgdmFsdWUsIEdQUkluZm86OnRh
Z1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgCi0gICAgbV9qaXQubW92ZSh2YWx1ZSwgdG1wKTsK
LSAgICB1bmJveERvdWJsZSh0bXAsIHJlc3VsdCk7Ci0gICAgCi0gICAgSklUQ29tcGlsZXI6Okp1
bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLSAgICAKLSAgICBpc0ludGVnZXIubGluaygmbV9qaXQp
OwotICAgIAotICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHZhbHVlLCByZXN1bHQpOwot
ICAgIAotICAgIGRvbmUubGluaygmbV9qaXQpOwotCi0gICAgcmV0dXJuIG5vdE51bWJlcjsKLX0K
LQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJhc2VWYWx1ZVN0b3JlQmFycmllcihFZGdl
JiBiYXNlRWRnZSwgRWRnZSYgdmFsdWVFZGdlKQogewogI2lmIEVOQUJMRShHR0MpCkBAIC0xOTIx
LDcgKzE1NDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdChOCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgTnVtYmVyVXNlOiB7Cisg
ICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwpAQCAtMjA2MCw3ICsx
Njg4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlKiBubwogICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBJbnQzMlVzZToKLSAgICBjYXNlIE51bWJlclVzZTogeworICAg
IGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gSW50MzJVc2UpIHsKICAgICAgICAgICAgIGJvb2wgaW52ZXJ0ID0gZmFsc2U7CiAgICAg
ICAgICAgICAKQEAgLTIxNTMsNiArMTc4MSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6
CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAg
ICAgIGluaXRDb25zdGFudEluZm8obm9kZSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0yNDAwLDI0
ICsyMDMwLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEludDMyVG9Eb3VibGU6IHsK
LSAgICAgICAgY29tcGlsZUludDMyVG9Eb3VibGUobm9kZSk7CisgICAgY2FzZSBEb3VibGVSZXA6
IHsKKyAgICAgICAgY29tcGlsZURvdWJsZVJlcChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgICAgICAKLSAgICBjYXNlIEludDUyVG9WYWx1ZTogewotICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3BlcmFuZCk7Ci0gICAgICAgIG1faml0Lm1vdmUob3BlcmFu
ZC5ncHIoKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3By
KCksIG5vZGUpOworICAgIGNhc2UgVmFsdWVSZXA6IHsKKyAgICAgICAgY29tcGlsZVZhbHVlUmVw
KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgSW50NTJU
b0RvdWJsZTogewotICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJhbmQodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wZXJh
bmQpOwotICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKG9wZXJhbmQuZnByKCksIHJlc3VsdC5mcHIo
KSk7Ci0gICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOworICAgIGNhc2Ug
SW50NTJSZXA6IHsKKyAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wZXJhbmQodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNl
LCBvcGVyYW5kKTsKKyAgICAgICAgCisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKG9w
ZXJhbmQuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIAorICAgICAgICBzdHJpY3RJbnQ1
MlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
ICAgIApAQCAtMjQ4Niw3ICsyMTE1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAg
ICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgCkBA
IC0yNTI0LDcgKzIxNTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY2Fz
ZSBOdW1iZXJVc2U6IHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAg
IFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
ICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lv
biAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDggKzMzMiw2IEBAIFNpbGVudFJlZ2lzdGVyU2F2
ZVBsYW4gU3BlY3VsYXRpdmVKSVQ6OnMKICAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09
IERhdGFGb3JtYXRJbnQ1MikgewogICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkKICAg
ICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRJbnQ1MkNvbnN0YW50OwotICAgICAgICBlbHNlIGlm
IChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0g
RGF0YUZvcm1hdEpTKQotICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQzMlBheWxvYWRDb252
ZXJ0VG9JbnQ1MjsKICAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFG
b3JtYXRJbnQ1MikKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CiAgICAgICAgIGVs
c2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpCkBAIC0z
NDEsMTcgKzMzOSwxMiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpz
CiAgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkK
ICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CiAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMg
YW4gaW50MzIgd2lsbCBuZXZlcgotICAgICAgICAgICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxs
IChpbW1lZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRvdWJsZSAodG8tZG91YmxlCi0gICAgICAgICAg
ICAvLyBjb252ZXJzaW9ucyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9kZSkuCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExv
YWQ2NDsgLy8gTWFrZSBHQ0MgaGFwcHkuCiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHJlZ2lz
dGVyRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgewogICAgICAgICBpZiAobm9kZS0+
aGFzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRTdHJpY3RJbnQ1MkNv
bnN0YW50OwotICAgICAgICBlbHNlIGlmIChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8
fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKQotICAgICAgICAgICAgZmlsbEFj
dGlvbiA9IExvYWQzMlBheWxvYWRTaWduRXh0ZW5kOwogICAgICAgICBlbHNlIGlmIChpbmZvLnNw
aWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDUyKQogICAgICAgICAgICAgZmlsbEFjdGlvbiA9
IExvYWQ2NFNoaWZ0SW50NTJSaWdodDsKICAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1h
dCgpID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKQEAgLTM1OSw5ICszNTIsNiBAQCBTaWxlbnRS
ZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAgIGVsc2UgaWYgKGluZm8u
c3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkKICAgICAgICAgICAgIGZpbGxBY3Rpb24g
PSBMb2FkNjQ7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhh
cHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMgYW4gaW50MzIgd2lsbCBuZXZlcgotICAg
ICAgICAgICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBv
ciBhIGRvdWJsZSAodG8tZG91YmxlCi0gICAgICAgICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZl
IGEgc2VwYXJhdGUgbm9kZSkuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsgLy8gTWFrZSBHQ0MgaGFwcHku
CiAgICAgICAgIH0KQEAgLTM3Niw5ICszNjYsNiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNw
ZWN1bGF0aXZlSklUOjpzCiAgICAgICAgIH0gZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09
IERhdGFGb3JtYXRJbnQzMikgewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ID09
IERhdGFGb3JtYXRKU0ludDMyKTsKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkMzJQYXls
b2FkQm94SW50OwotICAgICAgICB9IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRh
Rm9ybWF0RG91YmxlKSB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnaXN0ZXJGb3JtYXQgPT0gRGF0
YUZvcm1hdEpTRG91YmxlKTsKLSAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkRG91YmxlQm94
RG91YmxlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7
CiAjZWxzZQpAQCAtNDM0LDE0ICs0MjEsMTIgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVj
dWxhdGl2ZUpJVDo6cwogICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgIEFT
U0VSVChpc051bWJlckNvbnN0YW50KG5vZGUpKTsKICAgICAgICAgZmlsbEFjdGlvbiA9IFNldERv
dWJsZUNvbnN0YW50OwotICAgIH0gZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpICE9IERhdGFG
b3JtYXROb25lICYmIGluZm8uc3BpbGxGb3JtYXQoKSAhPSBEYXRhRm9ybWF0RG91YmxlKSB7Ci0g
ICAgICAgIC8vIGl0IHdhcyBhbHJlYWR5IHNwaWxsZWQgcHJldmlvdXNseSBhbmQgbm90IGFzIGEg
ZG91YmxlLCB3aGljaCBtZWFucyB3ZSBuZWVkIHVuYm94aW5nLgotICAgICAgICBBU1NFUlQoaW5m
by5zcGlsbEZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgZmlsbEFjdGlvbiA9IExv
YWRKU1VuYm94RG91YmxlOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VS
VChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUgfHwgaW5mby5zcGlsbEZvcm1h
dCgpID09IERhdGFGb3JtYXREb3VibGUpOwogICAgICAgICBmaWxsQWN0aW9uID0gTG9hZERvdWJs
ZTsKKyAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIEFTU0VSVChpbmZvLnJlZ2lz
dGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSB8fCBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdEpTRG91YmxlKTsKKyAgICBBU1NFUlQoaW5mby5yZWdpc3RlckZvcm1hdCgp
ID09IERhdGFGb3JtYXREb3VibGUpOwogICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKSB7CiAg
ICAgICAgIEFTU0VSVChpc051bWJlckNvbnN0YW50KG5vZGUpKTsKICAgICAgICAgZmlsbEFjdGlv
biA9IFNldERvdWJsZUNvbnN0YW50OwpAQCAtNTI4LDE0ICs1MTMsNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdw
cigpKTsKICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocGxhbi5ncHIoKSwgcGxhbi5n
cHIoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTG9hZERvdWJsZUJveERvdWJsZToKLSAg
ICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52
aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwotICAgICAgICBtX2ppdC5zdWI2NChHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHBsYW4uZ3ByKCkpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIExvYWRKU1VuYm94RG91YmxlOgotICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29t
cGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgY2FuVHJh
bXBsZSk7Ci0gICAgICAgIHVuYm94RG91YmxlKGNhblRyYW1wbGUsIHBsYW4uZnByKCkpOwotICAg
ICAgICBicmVhazsKICNlbHNlCiAgICAgY2FzZSBTZXRKU0NvbnN0YW50VGFnOgogICAgICAgICBt
X2ppdC5tb3ZlKEltbTMyKHZhbHVlT2ZKU0NvbnN0YW50KHBsYW4ubm9kZSgpKS50YWcoKSksIHBs
YW4uZ3ByKCkpOwpAQCAtMTAzOSw2ICsxMDE2LDI5IEBAIEdQUlRlbXBvcmFyeTo6R1BSVGVtcG9y
YXJ5KAogfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKK0pTVmFsdWVSZWdzVGVtcG9y
YXJ5OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeSgpIHsgfQorCitKU1ZhbHVlUmVnc1RlbXBvcmFyeTo6
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqIGppdCkKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIDogbV9ncHIoaml0KQorI2Vsc2UKKyAgICA6IG1fcGF5bG9hZEdQUihqaXQpCisg
ICAgLCBtX3RhZ0dQUihqaXQpCisjZW5kaWYKK3sKK30KKworSlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6
On5KU1ZhbHVlUmVnc1RlbXBvcmFyeSgpIHsgfQorCitKU1ZhbHVlUmVncyBKU1ZhbHVlUmVnc1Rl
bXBvcmFyeTo6cmVncygpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gSlNWYWx1
ZVJlZ3MobV9ncHIuZ3ByKCkpOworI2Vsc2UKKyAgICByZXR1cm4gSlNWYWx1ZVJlZ3MobV90YWdH
UFIuZ3ByKCksIG1fcGF5bG9hZEdQUi5ncHIoKSk7CisjZW5kaWYKK30KKwogdm9pZCBHUFJUZW1w
b3Jhcnk6OmFkb3B0KEdQUlRlbXBvcmFyeSYgb3RoZXIpCiB7CiAgICAgQVNTRVJUKCFtX2ppdCk7
CkBAIC0xMjU4LDEwICsxMjU4LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVw
SG9sZUJyYW4KICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAg
ICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBj
b25kaXRpb24pOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGVsc2UgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUlu
dDUyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVz
ZSkpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2Up
KQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKG5vZGUsIGJyYW5jaE5v
ZGUsIGRvdWJsZUNvbmRpdGlvbik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQ29t
cGFyZUVxKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1Vz
ZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkgewpAQCAtMTgxNywx
NiArMTgxNywxMyBAQCBHZW5lcmF0ZWRPcGVyYW5kVHlwZSBTcGVjdWxhdGl2ZUpJVDo6Y2hlCiAg
ICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTOgogICAgIGNh
c2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAg
ICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRKU1ZhbHVlOwogCiAgICAgY2FzZSBEYXRhRm9y
bWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICAgICAgcmV0dXJuIEdl
bmVyYXRlZE9wZXJhbmRJbnRlZ2VyOwogCi0gICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6Ci0g
ICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgotICAgICAgICByZXR1cm4gR2VuZXJhdGVkT3BlcmFu
ZERvdWJsZTsKLSAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRUeXBlVW5rbm93
bjsKQEAgLTE4NDUsNyArMTg0Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZVRvSW50MzIKICAgICB9CiAgICAgICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY2FzZSBN
YWNoaW5lSW50VXNlOiB7CisgICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICBTcGVjdWxh
dGVTdHJpY3RJbnQ1Mk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsKICAgICAgICAgR1BSUmVnIG9w
MUdQUiA9IG9wMS5ncHIoKTsKQEAgLTE4NTUsNiArMTg1MiwxOSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYg
Ly8gVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgCisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBGUFJSZWcgZnByID0g
b3AxLmZwcigpOworICAgICAgICBHUFJSZWcgZ3ByID0gcmVzdWx0LmdwcigpOworICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RUcnVuY2F0ZWRUb0ludGVnZXIgPSBtX2ppdC5icmFuY2hUcnVu
Y2F0ZURvdWJsZVRvSW50MzIoZnByLCBncHIsIEpJVENvbXBpbGVyOjpCcmFuY2hJZlRydW5jYXRl
RmFpbGVkKTsKKyAgICAgICAgCisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChub3RUcnVuY2F0ZWRUb0ludGVnZXIsIHRoaXMsIHRvSW50MzIsIGdwciwgZnByKSk7Cisg
ICAgICAgIAorICAgICAgICBpbnQzMlJlc3VsdChncHIsIG5vZGUpOworICAgICAgICByZXR1cm47
CisgICAgfQogICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgTm90Q2VsbFVzZTog
ewpAQCAtMTg2NiwxOCArMTg3Niw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZVRvSW50MzIKICAgICAgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSwgb3Ax
LmZvcm1hdCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBjYXNl
IEdlbmVyYXRlZE9wZXJhbmREb3VibGU6IHsKLSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgICAgIEZQ
UlJlZyBmcHIgPSBvcDEuZnByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gcmVzdWx0Lmdw
cigpOwotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90VHJ1bmNhdGVkVG9JbnRlZ2Vy
ID0gbV9qaXQuYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKGZwciwgZ3ByLCBKSVRDb21waWxl
cjo6QnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChub3RUcnVuY2F0ZWRUb0ludGVnZXIsIHRo
aXMsIHRvSW50MzIsIGdwciwgZnByKSk7Ci0KLSAgICAgICAgICAgIGludDMyUmVzdWx0KGdwciwg
bm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBHZW5l
cmF0ZWRPcGVyYW5kSlNWYWx1ZTogewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMjA2Niw3MCArMjA2NCwxMzggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUFzSW50MwogICAgIGludDMyUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91
YmxlKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKE5v
ZGUqIG5vZGUpCiB7Ci0gICAgQVNTRVJUKCFpc0ludDMyQ29uc3RhbnQobm9kZS0+Y2hpbGQxKCku
bm9kZSgpKSk7IC8vIFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBjb25zdGFudCBmb2xkZWQuCisgICAg
c3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIE51bWJlclVzZTog
eworICAgICAgICBBU1NFUlQoIWlzTnVtYmVyQ29uc3RhbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7IC8vIFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBjb25zdGFudCBmb2xkZWQuCiAgICAgCi0gICAg
aWYgKGlzSW50MzJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dHlwZSkpIHsKLSAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5j
aGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgRlBSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxLmdw
cigpLCByZXN1bHQuZnByKCkpOwotICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBu
b2RlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxh
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkpIHsKKyAgICAgICAg
ICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOworICAgICAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxLmdwcigpLCBy
ZXN1bHQuZnByKCkpOworICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9k
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAKLSAgICBKU1ZhbHVlT3Bl
cmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
Ci0gICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
ICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOwogCi0gICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKLSAgICBHUFJSZWcgdGVt
cEdQUiA9IHRlbXAuZ3ByKCk7Ci0gICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsK
KyAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHRlbXBH
UFIgPSB0ZW1wLmdwcigpOworICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigp
OwogICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDY0
KAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcDFHUFIsIEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50
ZWdlciA9IG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogICAgIAot
ICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIpKSB7
Ci0gICAgICAgIHR5cGVDaGVjaygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5v
ZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFRl
c3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIpKTsKLSAgICB9CisgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGls
ZDEoKSwgU3BlY0J5dGVjb2RlTnVtYmVyKSkgeworICAgICAgICAgICAgdHlwZUNoZWNrKAorICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjQnl0
ZWNvZGVOdW1iZXIsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwor
ICAgICAgICB9CiAgICAgCi0gICAgbV9qaXQubW92ZShvcDFHUFIsIHRlbXBHUFIpOwotICAgIHVu
Ym94RG91YmxlKHRlbXBHUFIsIHJlc3VsdEZQUik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9u
ZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHRlbXBHUFIpOwor
ICAgICAgICB1bmJveERvdWJsZSh0ZW1wR1BSLCByZXN1bHRGUFIpOworICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgIAotICAgIGlzSW50ZWdlci5saW5r
KCZtX2ppdCk7Ci0gICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxR1BSLCByZXN1bHRG
UFIpOwotICAgIGRvbmUubGluaygmbV9qaXQpOwotI2Vsc2UKLSAgICBGUFJUZW1wb3JhcnkgdGVt
cCh0aGlzKTsKKyAgICAgICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsKKyAgICAgICAgbV9qaXQu
Y29udmVydEludDMyVG9Eb3VibGUob3AxR1BSLCByZXN1bHRGUFIpOworICAgICAgICBkb25lLmxp
bmsoJm1faml0KTsKKyNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpIC0+IHRoaXMgaXMgdGhlIDMyXzY0
IGNhc2UKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgCi0gICAgR1BSUmVn
IG9wMVRhZ0dQUiA9IG9wMS50YWdHUFIoKTsKLSAgICBHUFJSZWcgb3AxUGF5bG9hZEdQUiA9IG9w
MS5wYXlsb2FkR1BSKCk7Ci0gICAgRlBSUmVnIHRlbXBGUFIgPSB0ZW1wLmZwcigpOwotICAgIEZQ
UlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CisgICAgICAgIEdQUlJlZyBvcDFUYWdHUFIg
PSBvcDEudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyBvcDFQYXlsb2FkR1BSID0gb3AxLnBheWxv
YWRHUFIoKTsKKyAgICAgICAgRlBSUmVnIHRlbXBGUFIgPSB0ZW1wLmZwcigpOworICAgICAgICBG
UFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigpOwogICAgIAotICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKAorICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpJbnQzMlRhZykpOwogICAgIAotICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGls
ZDEoKSwgU3BlY0Z1bGxOdW1iZXIpKSB7Ci0gICAgICAgIHR5cGVDaGVjaygKLSAgICAgICAgICAg
IEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBT
cGVjRnVsbE51bWJlciwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRh
ZykpKTsKLSAgICB9CisgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwg
U3BlY0J5dGVjb2RlTnVtYmVyKSkgeworICAgICAgICAgICAgdHlwZUNoZWNrKAorICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxk
MSgpLCBTcGVjQnl0ZWNvZGVOdW1iZXIsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6TG93ZXN0VGFnKSkpOworICAgICAgICB9CiAgICAgCi0gICAgdW5ib3hEb3VibGUob3Ax
VGFnR1BSLCBvcDFQYXlsb2FkR1BSLCByZXN1bHRGUFIsIHRlbXBGUFIpOwotICAgIEpJVENvbXBp
bGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgIHVuYm94RG91YmxlKG9wMVRh
Z0dQUiwgb3AxUGF5bG9hZEdQUiwgcmVzdWx0RlBSLCB0ZW1wRlBSKTsKKyAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAKLSAgICBpc0ludGVnZXIubGlu
aygmbV9qaXQpOwotICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMVBheWxvYWRHUFIs
IHJlc3VsdEZQUik7Ci0gICAgZG9uZS5saW5rKCZtX2ppdCk7Ci0jZW5kaWYKKyAgICAgICAgaXNJ
bnRlZ2VyLmxpbmsoJm1faml0KTsKKyAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUo
b3AxUGF5bG9hZEdQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7Cisj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAKLSAgICBkb3VibGVSZXN1bHQocmVzdWx0RlBS
LCBub2RlKTsKKyAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdEZQUiwgbm9kZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBJ
bnQ1MlJlcFVzZTogeworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OworICAgICAgICAKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAg
ICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CisKKyAgICAgICAgbV9qaXQuY29u
dmVydEludDY0VG9Eb3VibGUodmFsdWVHUFIsIHJlc3VsdEZQUik7CisgICAgICAgIAorICAgICAg
ICBkb3VibGVSZXN1bHQocmVzdWx0RlBSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorICAgICAgICAKKyAgICBkZWZhdWx0OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
fQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVSZXAoTm9kZSogbm9kZSkKK3sK
KyAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNhc2UgRG91Ymxl
UmVwVXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7
CisgICAgICAgIAorICAgICAgICBGUFJSZWcgdmFsdWVGUFIgPSB2YWx1ZS5mcHIoKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyNpZiBDUFUoWDg2
KQorICAgICAgICAvLyBUaGlzIGlzIHByZXR0eSBhbm5veWluZyAtIGJveERvdWJsZSgpIG9uIFg4
NiBjbG9iYmVycyB0aGUgc291cmNlLiBUaGF0J3Mga2luZGEgZ3Jvc3MuCisgICAgICAgIEZQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKHZhbHVlRlBSLCB0
ZW1wLmZwcigpKTsKKyAgICAgICAgdmFsdWVGUFIgPSB0ZW1wLmZwcigpOworI2VuZGlmCisgICAg
ICAgIAorICAgICAgICBib3hEb3VibGUodmFsdWVGUFIsIHJlc3VsdFJlZ3MpOworICAgICAgICAK
KyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIEludDUyUmVw
VXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAg
ICAgIAorICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgCisgICAgICAgIGJveEludDUy
KHZhbHVlR1BSLCByZXN1bHRHUFIsIERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7CisgICAgICAgIAor
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgCisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KIH0KIAogc3RhdGljIGRvdWJsZSBjbGFtcERvdWJsZVRvQnl0ZShkb3VibGUgZCkKQEAg
LTIzMjAsNyArMjM4Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckkKICAgICAgICAgfQogICAgICAgICAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
Y2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAgICAg
ICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNl
KTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICAgICAg
R1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOwpAQCAtMjM0NCw3ICsyNDEwLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySQogICAgICAgICB9CiAjZW5k
aWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVz
ZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgaWYgKGlzQ2xh
bXBlZCh0eXBlKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50U2l6ZSh0eXBlKSA9
PSAxKTsKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlT3AodGhp
cywgdmFsdWVVc2UpOwpAQCAtMjQ0MCwxMCArMjUwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbE9uRmwKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90TmFOID0gbV9qaXQu
YnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbCwgcmVzdWx0UmVnLCByZXN1
bHRSZWcpOwotICAgIHN0YXRpYyBjb25zdCBkb3VibGUgTmFOID0gUU5hTjsKLSAgICBtX2ppdC5s
b2FkRG91YmxlKCZOYU4sIHJlc3VsdFJlZyk7Ci0gICAgbm90TmFOLmxpbmsoJm1faml0KTsKKyAg
ICBtX2ppdC5zYW5pdGl6ZURvdWJsZShyZXN1bHRSZWcpOwogICAgIAogICAgIGRvdWJsZVJlc3Vs
dChyZXN1bHRSZWcsIG5vZGUpOwogfQpAQCAtMjY0MSw3ICsyNzA0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFkZChOb2RlKiBubwogICAgIH0KICAgICAgICAgCiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICBjYXNlIEludDUyUmVwVXNl
OiB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgp
KSk7CiAgICAgICAgIEFTU0VSVCghc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhN
b2RlKCkpKTsKIApAQCAtMjY3MCw3ICsyNzMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFkZChOb2RlKiBubwogICAgIH0KICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgIAot
ICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAg
U3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAg
ICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIpOwpAQCAtMjgwNyw3ICsyODcw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZAogICAgIH0KICAg
ICAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAg
ICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDaGVja092ZXJmbG93
KG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAgICAgICAgIEFTU0VSVCghc2hvdWxkQ2hlY2tOZWdhdGl2
ZVplcm8obm9kZS0+YXJpdGhNb2RlKCkpKTsKIApAQCAtMjgzNiw3ICsyODk5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZAogICAgIH0KICNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTY0KQogCi0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNlIERvdWJsZVJlcFVz
ZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwpAQCAtMjg4
MSw3ICsyOTQ0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKAog
ICAgIH0KIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7Cisg
ICAgY2FzZSBJbnQ1MlJlcFVzZTogewogICAgICAgICBBU1NFUlQoc2hvdWxkQ2hlY2tPdmVyZmxv
dyhub2RlLT5hcml0aE1vZGUoKSkpOwogICAgICAgICAKICAgICAgICAgaWYgKCFtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1MikpIHsKQEAgLTI5MTgs
NyArMjk4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSgKICAg
ICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAgICAgCi0gICAgY2FzZSBOdW1iZXJV
c2U6IHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIApAQCAtMjk2OSw3ICszMDMyLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFyaXRoTXVsKE5vZAogICAgIH0KICAgICAKICNpZiBVU0UoSlNWQUxV
RTY0KSAgIAotICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgIGNhc2UgSW50NTJSZXBVc2U6
IHsKICAgICAgICAgQVNTRVJUKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkp
KTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgY2xldmVyLiBXZSB3YW50IHRv
IGRvIGFuIGludDUyIG11bHRpcGxpY2F0aW9uIGFuZCBjaGVjayB0aGUKQEAgLTMwMjYsNyArMzA4
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE11bChOb2QKICAgICB9CiAj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAgICAgCi0gICAgY2FzZSBOdW1iZXJVc2U6IHsK
KyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
IG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBvcDEsIG9wMik7CkBAIC0zMTkwLDcgKzMyNTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQXJpdGhEaXYoTm9kCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAg
Ci0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKyAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwpAQCAtMzQ5NSw3ICszNTU4LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKE5vZAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIE51bWJlclVzZTogeworICAgIGNhc2UgRG91
YmxlUmVwVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAKQEAgLTM1MzAsMTMgKzM1OTMsMTMgQEAgYm9vbCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLAogICAgIH0KICAgICAKICNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkp
IHsKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAg
ICBjb21waWxlSW50NTJDb21wYXJlKG5vZGUsIGNvbmRpdGlvbik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAKLSAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKERvdWJsZVJlcFVzZSkpIHsKICAgICAgICAgY29tcGlsZURvdWJsZUNvbXBhcmUobm9k
ZSwgZG91YmxlQ29uZGl0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTM2
MTAsNyArMzY3Myw3IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2QK
ICAgICB9CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkgICAKLSAgICBpZiAobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0g
ZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAh
PSBVSU5UX01BWCkgewogICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9IG1fYmxvY2stPmF0
KGJyYW5jaEluZGV4SW5CbG9jayk7CkBAIC0zNjI2LDcgKzM2ODksNyBAQCBib29sIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kCiAgICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVF
NjQpCiAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsKKyAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkpIHsKICAgICAgICAgdW5zaWdu
ZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAg
aWYgKGJyYW5jaEluZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgewogICAgICAgICAgICAgTm9kZSog
YnJhbmNoTm9kZSA9IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CkBAIC00NDg3LDM2
ICs0NTUwLDM3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUludDMyKEVkZ2UKICAg
ICAoU3BlY3VsYXRlSW50MzJPcGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTWFjaGluZUludChFZGdlIGVkZ2UpCi17Ci0jaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNNYWNoaW5lSW50
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIChTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9w
ZXJhbmQodGhpcywgZWRnZSkpLmdwcigpOwotI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKLSAgICBV
TlVTRURfUEFSQU0oZWRnZSk7Ci0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5k
aWYgLy8gVVNFKEpTVkFMVUU2NCkKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
TnVtYmVyKEVkZ2UgZWRnZSkKIHsKLSAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNG
dWxsTnVtYmVyKSkKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNCeXRlY29kZU51
bWJlcikpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICAoU3BlY3VsYXRlRG91YmxlT3BlcmFu
ZCh0aGlzLCBlZGdlKSkuZnByKCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgZWRn
ZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEdQ
UlJlZyBncHIgPSB2YWx1ZS5ncHIoKTsKKyAgICB0eXBlQ2hlY2soCisgICAgICAgIEpTVmFsdWVS
ZWdzKGdwciksIGVkZ2UsIFNwZWNCeXRlY29kZU51bWJlciwKKyAgICAgICAgbV9qaXQuYnJhbmNo
VGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3RlcikpOworI2Vsc2UKKyAgICBHUFJSZWcgdGFnR1BSID0gdmFsdWUudGFnR1BSKCk7Cisg
ICAgREZHX1RZUEVfQ0hFQ0soCisgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksIGVkZ2UsIH5T
cGVjSW50MzIsCisgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
dGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAgREZHX1RZUEVf
Q0hFQ0soCisgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksIGVkZ2UsIFNwZWNCeXRlY29kZU51
bWJlciwKKyAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOworI2VuZGlmCiB9
CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRnZSBlZGdlKQor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRG91YmxlUmVhbChFZGdlIGVkZ2UpCiB7Ci0g
ICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIpKQorICAgIGlm
ICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0RvdWJsZVJlYWwpKQogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwog
ICAgIEZQUlJlZyBmcHIgPSBvcGVyYW5kLmZwcigpOwotICAgIERGR19UWVBFX0NIRUNLKAotICAg
ICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCisgICAgdHlwZUNo
ZWNrKAorICAgICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjRG91YmxlUmVhbCwKICAgICAg
ICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZU5vdEVxdWFsT3JVbm9yZGVyZWQsIGZwciwgZnByKSk7CiB9CkBAIC00NzY4LDggKzQ4MzIsMTEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogICAgIGNhc2UgS25v
d25JbnQzMlVzZToKICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50
MzIpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAg
QVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbE51bWJlcikpOworICAgIGNhc2Ug
RG91YmxlUmVwVXNlOgorICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNE
b3VibGUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAg
QVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTWFjaGluZUludCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVD
aGVjayhlZGdlLCBTcGVjQ2VsbCkpOwpAQCAtNDc4MCwxNSArNDg0NywxMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICAg
ICAgc3BlY3VsYXRlSW50MzIoZWRnZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWFjaGlu
ZUludFVzZToKLSAgICAgICAgc3BlY3VsYXRlTWFjaGluZUludChlZGdlKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgICAgICBzcGVjdWxhdGVSZWFsTnVtYmVy
KGVkZ2UpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgc3Bl
Y3VsYXRlTnVtYmVyKGVkZ2UpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIERvdWJsZVJlcFJl
YWxVc2U6CisgICAgICAgIHNwZWN1bGF0ZURvdWJsZVJlYWwoZWRnZSk7CisgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgc3BlY3VsYXRlQm9vbGVhbihlZGdlKTsK
ICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcg
QEAgY2xhc3MgU3BlY3VsYXRlRG91YmxlT3BlcmFuZDsKIGNsYXNzIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kOwogY2xhc3MgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ7CiAKLWVudW0gR2VuZXJhdGVkT3Bl
cmFuZFR5cGUgeyBHZW5lcmF0ZWRPcGVyYW5kVHlwZVVua25vd24sIEdlbmVyYXRlZE9wZXJhbmRJ
bnRlZ2VyLCBHZW5lcmF0ZWRPcGVyYW5kRG91YmxlLCBHZW5lcmF0ZWRPcGVyYW5kSlNWYWx1ZX07
CitlbnVtIEdlbmVyYXRlZE9wZXJhbmRUeXBlIHsgR2VuZXJhdGVkT3BlcmFuZFR5cGVVbmtub3du
LCBHZW5lcmF0ZWRPcGVyYW5kSW50ZWdlciwgR2VuZXJhdGVkT3BlcmFuZEpTVmFsdWV9OwogCiBp
bmxpbmUgR1BSUmVnIGV4dHJhY3RSZXN1bHQoR1BSUmVnIHJlc3VsdCkgeyByZXR1cm4gcmVzdWx0
OyB9CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTE5MCw3ICsxOTAsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmIChzcGlsbE1lLmlzVmFsaWQoKSkgewogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAg
ICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxS
ZWdpc3RlcihzcGlsbE1lKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8ucmVnaXN0
ZXJGb3JtYXQoKSAhPSBEYXRhRm9ybWF0SlNEb3VibGUpOwogICAgICAgICAgICAgaWYgKChpbmZv
LnJlZ2lzdGVyRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpKQogICAgICAgICAgICAgICAgIG1fZ3By
cy5yZWxlYXNlKGluZm8udGFnR1BSKCkgPT0gZ3ByID8gaW5mby5wYXlsb2FkR1BSKCkgOiBpbmZv
LnRhZ0dQUigpKTsKICNlbmRpZgpAQCAtMjY1LDcgKzI2NCw3IEBAIHB1YmxpYzoKICAgICAgICAg
ZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgIT0gRGF0YUZvcm1hdE5vbmUpCiAgICAgICAgICAgICBt
X2dwcnMucmVsZWFzZShpbmZvLmdwcigpKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAg
ICAgIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlIHx8IHJlZ2lzdGVyRm9y
bWF0ID09IERhdGFGb3JtYXRKU0RvdWJsZSkKKyAgICAgICAgaWYgKHJlZ2lzdGVyRm9ybWF0ID09
IERhdGFGb3JtYXREb3VibGUpCiAgICAgICAgICAgICBtX2ZwcnMucmVsZWFzZShpbmZvLmZwcigp
KTsKICAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHsKICAg
ICAgICAgICAgIG1fZ3Bycy5yZWxlYXNlKGluZm8udGFnR1BSKCkpOwpAQCAtNDU5LDYgKzQ1OCwx
MCBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnVuYm94RG91YmxlKHRhZ0dQUiwgcGF5bG9hZEdQ
UiwgZnByLCBzY3JhdGNoRlBSKTsKICAgICB9CiAjZW5kaWYKKyAgICB2b2lkIGJveERvdWJsZShG
UFJSZWcgZnByLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyAgICAgICAgbV9qaXQuYm94RG91
YmxlKGZwciwgcmVncyk7CisgICAgfQogCiAgICAgLy8gU3BpbGwgYSBWaXJ0dWFsUmVnaXN0ZXIg
dG8gdGhlIEpTU3RhY2suCiAgICAgdm9pZCBzcGlsbChWaXJ0dWFsUmVnaXN0ZXIgc3BpbGxNZSkK
QEAgLTUyOCwxMSArNTMxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKLSAgICAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNEb3VibGU6IHsKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7CiAgICAg
ICAgICAgICAvLyBPbiBKU1ZBTFVFMzJfNjQgYm94aW5nIGEgZG91YmxlIGlzIGEgbm8tb3AuCiAg
ICAgICAgICAgICBtX2ppdC5zdG9yZURvdWJsZShpbmZvLmZwcigpLCBKSVRDb21waWxlcjo6YWRk
cmVzc0ZvcihzcGlsbE1lKSk7Ci0gICAgICAgICAgICBpbmZvLnNwaWxsKCptX3N0cmVhbSwgc3Bp
bGxNZSwgRGF0YUZvcm1hdEpTRG91YmxlKTsKKyAgICAgICAgICAgIGluZm8uc3BpbGwoKm1fc3Ry
ZWFtLCBzcGlsbE1lLCBEYXRhRm9ybWF0RG91YmxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC05MjUsNiArOTI3LDE0IEBAIHB1YmxpYzoKICAgICAgICAganNWYWx1ZVJl
c3VsdCh0YWcsIHBheWxvYWQsIG5vZGUsIERhdGFGb3JtYXRKUywgbW9kZSk7CiAgICAgfQogI2Vu
ZGlmCisgICAgdm9pZCBqc1ZhbHVlUmVzdWx0KEpTVmFsdWVSZWdzIHJlZ3MsIE5vZGUqIG5vZGUs
IERhdGFGb3JtYXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbk1vZGUgbW9kZSA9
IENhbGxVc2VDaGlsZHJlbikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAganNW
YWx1ZVJlc3VsdChyZWdzLmdwcigpLCBub2RlLCBmb3JtYXQsIG1vZGUpOworI2Vsc2UKKyAgICAg
ICAganNWYWx1ZVJlc3VsdChyZWdzLnRhZ0dQUigpLCByZWdzLnBheWxvYWRHUFIoKSwgbm9kZSwg
Zm9ybWF0LCBtb2RlKTsKKyNlbmRpZgorICAgIH0KICAgICB2b2lkIHN0b3JhZ2VSZXN1bHQoR1BS
UmVnIHJlZywgTm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRy
ZW4pCiAgICAgewogICAgICAgICBpZiAobW9kZSA9PSBDYWxsVXNlQ2hpbGRyZW4pCkBAIC0yMDgw
LDEwICsyMDkwLDEyIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxl
bmd0aChOb2RlKik7CiAgICAgCisgICAgdm9pZCBjb21waWxlVmFsdWVSZXAoTm9kZSopOworICAg
IHZvaWQgY29tcGlsZURvdWJsZVJlcChOb2RlKik7CisgICAgCiAgICAgdm9pZCBjb21waWxlVmFs
dWVUb0ludDMyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVVSW50MzJUb051bWJlcihOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlRG91YmxlQXNJbnQzMihOb2RlKik7Ci0gICAgdm9pZCBjb21waWxl
SW50MzJUb0RvdWJsZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQWRkKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVNYWtlUm9wZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhTdWIoTm9k
ZSopOwpAQCAtMjE4NSwxMiArMjE5Nyw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW1pdEFsbG9j
YXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQ
UiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOwogCi0jaWYgVVNFKEpTVkFMVUU2NCkgCi0gICAgSklU
Q29tcGlsZXI6Okp1bXAgY29udmVydFRvRG91YmxlKEdQUlJlZyB2YWx1ZSwgRlBSUmVnIHJlc3Vs
dCwgR1BSUmVnIHRtcCk7Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIEpJVENvbXBpbGVy
OjpKdW1wIGNvbnZlcnRUb0RvdWJsZShKU1ZhbHVlT3BlcmFuZCYsIEZQUlJlZyByZXN1bHQpOwot
I2VuZGlmCi0gICAgCiAgICAgLy8gQWRkIGEgc3BlY3VsYXRpb24gY2hlY2suCiAgICAgdm9pZCBz
cGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBOb2RlKiwgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAganVtcFRvRmFpbCk7CiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEV4aXRL
aW5kLCBKU1ZhbHVlU291cmNlLCBOb2RlKiwgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
JiBqdW1wc1RvRmFpbCk7CkBAIC0yMjE3LDcgKzIyMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
cGVjdWxhdGVJbnQzMihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSk7
CiAgICAgdm9pZCBzcGVjdWxhdGVOdW1iZXIoRWRnZSk7Ci0gICAgdm9pZCBzcGVjdWxhdGVSZWFs
TnVtYmVyKEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlRG91YmxlUmVhbChFZGdlKTsKICAgICB2
b2lkIHNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVDZWxsKEVkZ2Up
OwogICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0KEVkZ2UpOwpAQCAtMjU2NSw2ICsyNTcxLDIzIEBA
IHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwogfTsKIAorY2xhc3MgSlNWYWx1ZVJlZ3NUZW1w
b3JhcnkgeworcHVibGljOgorICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5KCk7CisgICAgSlNWYWx1
ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqKTsKKyAgICB+SlNWYWx1ZVJlZ3NUZW1wb3Jh
cnkoKTsKKyAgICAKKyAgICBKU1ZhbHVlUmVncyByZWdzKCk7CisKK3ByaXZhdGU6CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBHUFJUZW1wb3JhcnkgbV9ncHI7CisjZWxzZQorICAgIEdQUlRlbXBv
cmFyeSBtX3BheWxvYWRHUFI7CisgICAgR1BSVGVtcG9yYXJ5IG1fdGFnR1BSOworI2VuZGlmCit9
OworCiBjbGFzcyBGUFJUZW1wb3JhcnkgewogcHVibGljOgogICAgIEZQUlRlbXBvcmFyeShTcGVj
dWxhdGl2ZUpJVCopOwpAQCAtMjc1NCwxMiArMjc3NywxMiBAQCBwcml2YXRlOgogLy8gR2l2ZXMg
eW91IGEgY2Fub25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDE2LCBsb3cg
Yml0cyB6ZXJvKS4KIGNsYXNzIFNwZWN1bGF0ZUludDUyT3BlcmFuZCB7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgU3BlY3VsYXRlSW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2Ug
ZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1
bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJ
VCogaml0LCBFZGdlIGVkZ2UpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fZWRn
ZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgewot
ICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChqaXQt
PmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CkBAIC0yODAxLDEy
ICsyODI0LDEyIEBAIHByaXZhdGU6CiAvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4g
dGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMgYXJlIHNpZ24t
ZXh0ZW5kZWQpLgogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQq
IGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNP
cGVyYW5kU3BlY3VsYXRpb24pCisgICAgZXhwbGljaXQgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVy
YW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSkKICAgICAgICAgOiBtX2ppdChqaXQp
CiAgICAgICAgICwgbV9lZGdlKGVkZ2UpCiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxp
ZEdQUlJlZykKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKTsK
ICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKICAgICAgICAgICAgIGdwcigpOwog
ICAgIH0KQEAgLTI4NDksMzUgKzI4NzIsMzUgQEAgZW51bSBPcHBvc2l0ZVNoaWZ0VGFnIHsgT3Bw
b3NpdGVTaGlmdCB9OwogCiBjbGFzcyBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQgewog
cHVibGljOgotICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZChTcGVj
dWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9
IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGlj
aGV2ZXJJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlKQogICAgICAg
ICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkKICAgICAgICAgLCBtX2dwck9y
SW52YWxpZChJbnZhbGlkR1BSUmVnKQogICAgICAgICAsIG1fc3RyaWN0KGppdC0+YmV0dGVyVXNl
U3RyaWN0SW50NTIoZWRnZSkpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1v
ZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hp
bmVJbnRVc2UpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1
MlJlcFVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAg
ICBncHIoKTsKICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50
NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgY29uc3QgU3BlY3VsYXRl
V2hpY2hldmVySW50NTJPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2Rl
ID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdo
aWNoZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIGNvbnN0
IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCYgb3RoZXIpCiAgICAgICAgIDogbV9qaXQo
aml0KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKElu
dmFsaWRHUFJSZWcpCiAgICAgICAgICwgbV9zdHJpY3Qob3RoZXIubV9zdHJpY3QpCiAgICAgewot
ICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChlZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIGlmIChqaXQt
PmlzRmlsbGVkKG5vZGUoKSkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CiAgICAgCi0gICAg
ZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBq
aXQsIEVkZ2UgZWRnZSwgT3Bwb3NpdGVTaGlmdFRhZywgY29uc3QgU3BlY3VsYXRlV2hpY2hldmVy
SW50NTJPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21h
dGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlcklu
dDUyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wcG9zaXRlU2hpZnRU
YWcsIGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCYgb3RoZXIpCiAgICAgICAg
IDogbV9qaXQoaml0KQogICAgICAgICAsIG1fZWRnZShlZGdlKQogICAgICAgICAsIG1fZ3ByT3JJ
bnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgICAgICwgbV9zdHJpY3QoIW90aGVyLm1fc3RyaWN0
KQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpOwogICAgICAg
ICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQogICAgICAgICAgICAgZ3ByKCk7CiAgICAgfQpA
QCAtMjkyNiwxMyArMjk0OSwxMyBAQCBwcml2YXRlOgogCiBjbGFzcyBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVEb3VibGVPcGVyYW5kKFNw
ZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2Rl
ID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlKQogICAgICAgICA6IG1f
aml0KGppdCkKICAgICAgICAgLCBtX2VkZ2UoZWRnZSkKICAgICAgICAgLCBtX2Zwck9ySW52YWxp
ZChJbnZhbGlkRlBSUmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faml0KTsKLSAgICAgICAg
QVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBp
c0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0RvdWJs
ZShlZGdlLnVzZUtpbmQoKSkpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQog
ICAgICAgICAgICAgZnByKCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAx
NjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDYyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAgICAgICBj
YXNlIFZhbHVlUmVwOgorICAgICAgICBjYXNlIEludDUyUmVwOgorICAgICAgICBjYXNlIERvdWJs
ZVJlcDogeworICAgICAgICAgICAgLy8gVGhpcyBzaG9ydC1jaXJjdWl0cyBjaXJjdWl0b3VzIGNv
bnZlcnNpb25zLCBsaWtlIFZhbHVlUmVwKERvdWJsZVJlcCh2YWx1ZSkpIG9yCisgICAgICAgICAg
ICAvLyBldmVuIG1vcmUgY29tcGxpY2F0ZWQgdGhpbmdzLiBMaWtlLCBpdCBjYW4gaGFuZGxlIGEg
YmVhc3QgbGlrZQorICAgICAgICAgICAgLy8gVmFsdWVSZXAoRG91YmxlUmVwKEludDUyUmVwKHZh
bHVlKSkpLgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBUaGUgb25seSBzcGVjdWxhdGlv
biB0aGF0IHdlIHdvdWxkIGRvIGJleW9uZCB2YWxpZGF0aW5nIHRoYXQgd2UgaGF2ZSBhIHR5cGUg
dGhhdAorICAgICAgICAgICAgLy8gY2FuIGJlIHJlcHJlc2VudGVkIGEgY2VydGFpbiB3YXkgaXMg
YW4gSW50MzIgY2hlY2sgdGhhdCB3b3VsZCBhcHBlYXIgb24gSW50NTJSZXAKKyAgICAgICAgICAg
IC8vIG5vZGVzLiBGb3Igbm93LCBpZiB3ZSBzZWUgdGhpcyBhbmQgdGhlIGZpbmFsIHR5cGUgd2Ug
d2FudCBpcyBhbiBJbnQ1Miwgd2UgdXNlIGl0CisgICAgICAgICAgICAvLyBhcyBhbiBleGN1c2Ug
bm90IHRvIGZvbGQuIFRoZSBvbmx5IHRoaW5nIHdlIHdvdWxkIG5lZWQgaXMgYSBJbnQ1MlJlcElu
dDMyVXNlIGtpbmQuCisgICAgICAgICAgICBib29sIGhhZEludDMyQ2hlY2sgPSBmYWxzZTsKKyAg
ICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gSW50NTJSZXApIHsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSW50MzJVc2UpOworICAgICAg
ICAgICAgICAgIGhhZEludDMyQ2hlY2sgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZm9yIChOb2RlKiBub2RlID0gbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCk7IDsgbm9kZSA9IG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChjYW5vbmljYWxSZXN1
bHRSZXByZXNlbnRhdGlvbihub2RlLT5yZXN1bHQoKSkgPT0KKyAgICAgICAgICAgICAgICAgICAg
Y2Fub25pY2FsUmVzdWx0UmVwcmVzZW50YXRpb24obV9ub2RlLT5yZXN1bHQoKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9ub2RlLT5vcmlnaW4s
IG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoaGFkSW50MzJDaGVj
aykgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGFkZGluZyBJ
bnQ1MlJlcEludDMyVXNlIG9yIGV2ZW4gRG91YmxlUmVwSW50MzJVc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAvLyB3aGljaCB3b3VsZCBiZSBzdXBlciB3ZWlyZC4gVGhlIGxhdHRlciB3b3Vs
ZCBvbmx5IGFyaXNlIGluIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlcmlvdXNs
eSBjaXJjdWl0b3VzIGNvbnZlcnNpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNh
bm9uaWNhbFJlc3VsdFJlcHJlc2VudGF0aW9uKG5vZGUtPnJlc3VsdCgpKSAhPSBOb2RlUmVzdWx0
SlMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBQ
aGFudG9tLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGdl
KG5vZGUsIEludDMyVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgbV9ub2RlLT5jaGlsZDEoKSA9IG5vZGUtPmRlZmF1bHRFZGdlKCk7CisgICAgICAgICAg
ICAgICAgICAgIG1fbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN3aXRjaCAobm9k
ZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgSW50NTJSZXA6CisgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSW50MzJVc2UpOworICAg
ICAgICAgICAgICAgICAgICBoYWRJbnQzMkNoZWNrID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2Ug
RG91YmxlUmVwOgorICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtp
bmQuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1VzZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNyArNDYsMTcgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2UgS25vd25JbnQzMlVzZToK
ICAgICAgICAgb3V0LnByaW50KCJLbm93bkludDMyIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgTWFjaGluZUludFVzZToKLSAgICAgICAgb3V0LnByaW50KCJNYWNoaW5lSW50Iik7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgb3V0LnByaW50KCJS
ZWFsTnVtYmVyIik7CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgb3V0LnByaW50KCJJ
bnQ1MlJlcCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAg
b3V0LnByaW50KCJOdW1iZXIiKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBLbm93bk51bWJl
clVzZToKLSAgICAgICAgb3V0LnByaW50KCJLbm93bk51bWJlciIpOworICAgIGNhc2UgRG91Ymxl
UmVwVXNlOgorICAgICAgICBvdXQucHJpbnQoIkRvdWJsZVJlcCIpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgICAgIG91dC5wcmludCgiRG91YmxlUmVw
UmVhbCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIG91
dC5wcmludCgiQm9vbGVhbiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmgJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
REZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR05vZGVGbGFncy5oIgogI2luY2x1ZGUgIlNwZWN1bGF0
ZWRUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKQEAgLTM3LDEwICszOCwx
MCBAQCBlbnVtIFVzZUtpbmQgewogICAgIFVudHlwZWRVc2UsCiAgICAgSW50MzJVc2UsCiAgICAg
S25vd25JbnQzMlVzZSwKLSAgICBNYWNoaW5lSW50VXNlLAotICAgIFJlYWxOdW1iZXJVc2UsCisg
ICAgSW50NTJSZXBVc2UsCiAgICAgTnVtYmVyVXNlLAotICAgIEtub3duTnVtYmVyVXNlLAorICAg
IERvdWJsZVJlcFVzZSwKKyAgICBEb3VibGVSZXBSZWFsVXNlLAogICAgIEJvb2xlYW5Vc2UsCiAg
ICAgQ2VsbFVzZSwKICAgICBLbm93bkNlbGxVc2UsCkBAIC01OSw3ICs2MCw3IEBAIGVudW0gVXNl
S2luZCB7CiAgICAgTGFzdFVzZUtpbmQgLy8gTXVzdCBhbHdheXMgYmUgdGhlIGxhc3QgZW50cnkg
aW4gdGhlIGVudW0sIGFzIGl0IGlzIHVzZWQgdG8gZGVub3RlIHRoZSBudW1iZXIgb2YgZW51bSBl
bGVtZW50cy4KIH07CiAKLUFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZv
cihVc2VLaW5kIHVzZUtpbmQpCitpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihV
c2VLaW5kIHVzZUtpbmQpCiB7CiAgICAgc3dpdGNoICh1c2VLaW5kKSB7CiAgICAgY2FzZSBVbnR5
cGVkVXNlOgpAQCAtNjcsMTMgKzY4LDE0IEBAIEFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUg
dHlwZUZpbHRlckYKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToK
ICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAg
Y2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNNYWNoaW5lSW50OwotICAgIGNh
c2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgcmV0dXJuIFNwZWNGdWxsUmVhbE51bWJlcjsKICAg
ICBjYXNlIE51bWJlclVzZToKLSAgICBjYXNlIEtub3duTnVtYmVyVXNlOgotICAgICAgICByZXR1
cm4gU3BlY0Z1bGxOdW1iZXI7CisgICAgICAgIHJldHVybiBTcGVjQnl0ZWNvZGVOdW1iZXI7Cisg
ICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgIHJldHVybiBTcGVjRG91YmxlOworICAgIGNh
c2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVSZWFsOwogICAg
IGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCb29sZWFuOwogICAgIGNhc2Ug
Q2VsbFVzZToKQEAgLTEwOCw1MyArMTEwLDUzIEBAIEFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5
cGUgdHlwZUZpbHRlckYKICAgICB9CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBzaG91bGROb3RI
YXZlVHlwZUNoZWNrKFVzZUtpbmQga2luZCkKK2lubGluZSBib29sIHNob3VsZE5vdEhhdmVUeXBl
Q2hlY2soVXNlS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgVW50
eXBlZFVzZToKICAgICBjYXNlIEtub3duSW50MzJVc2U6Ci0gICAgY2FzZSBLbm93bk51bWJlclVz
ZToKICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgorICAg
IGNhc2UgSW50NTJSZXBVc2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAK
LUFMV0FZU19JTkxJTkUgYm9vbCBtYXlIYXZlVHlwZUNoZWNrKFVzZUtpbmQga2luZCkKK2lubGlu
ZSBib29sIG1heUhhdmVUeXBlQ2hlY2soVXNlS2luZCBraW5kKQogewogICAgIHJldHVybiAhc2hv
dWxkTm90SGF2ZVR5cGVDaGVjayhraW5kKTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIGlzTnVt
ZXJpY2FsKFVzZUtpbmQga2luZCkKK2lubGluZSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQga2lu
ZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2Ug
S25vd25JbnQzMlVzZToKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Ci0gICAgY2FzZSBSZWFsTnVt
YmVyVXNlOgogICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Cisg
ICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICBjYXNlIERv
dWJsZVJlcFJlYWxVc2U6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBpc0RvdWJs
ZShVc2VLaW5kIGtpbmQpCitpbmxpbmUgYm9vbCBpc0RvdWJsZShVc2VLaW5kIGtpbmQpCiB7CiAg
ICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgIGNhc2UgTnVt
YmVyVXNlOgotICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CisgICAgY2FzZSBEb3VibGVSZXBVc2U6
CisgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBk
ZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCi1BTFdBWVNfSU5MSU5F
IGJvb2wgaXNDZWxsKFVzZUtpbmQga2luZCkKK2lubGluZSBib29sIGlzQ2VsbChVc2VLaW5kIGtp
bmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBDZWxsVXNlOgpAQCAtMTc0LDcg
KzE3Niw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NlbGwoVXNlS2luZCBraW5kKQogCiAvLyBS
ZXR1cm5zIHRydWUgaWYgaXQgdXNlcyBzdHJ1Y3R1cmUgaW4gYSB3YXkgdGhhdCBjb3VsZCBiZSBj
bG9iYmVyZWQgYnkKIC8vIHRoaW5ncyB0aGF0IGNoYW5nZSB0aGUgc3RydWN0dXJlLgotQUxXQVlT
X0lOTElORSBib29sIHVzZXNTdHJ1Y3R1cmUoVXNlS2luZCBraW5kKQoraW5saW5lIGJvb2wgdXNl
c1N0cnVjdHVyZShVc2VLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2Fz
ZSBTdHJpbmdPYmplY3RVc2U6CkBAIC0xODUsNiArMTg3LDE5IEBAIEFMV0FZU19JTkxJTkUgYm9v
bCB1c2VzU3RydWN0dXJlKFVzZUtpbmQKICAgICB9CiB9CiAKK2lubGluZSBVc2VLaW5kIHVzZUtp
bmRGb3JSZXN1bHQoTm9kZUZsYWdzIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQoIShyZXN1bHQgJiB+
Tm9kZVJlc3VsdE1hc2spKTsKKyAgICBzd2l0Y2ggKHJlc3VsdCkgeworICAgIGNhc2UgTm9kZVJl
c3VsdEludDUyOgorICAgICAgICByZXR1cm4gSW50NTJSZXBVc2U7CisgICAgY2FzZSBOb2RlUmVz
dWx0RG91YmxlOgorICAgICAgICByZXR1cm4gRG91YmxlUmVwVXNlOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBVbnR5cGVkVXNlOworICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTUsNiArMTE1
LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
bV9teVJlZkNvdW50cy5maW5kKGVkZ2Uubm9kZSgpKS0+dmFsdWUrKzsKICAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+
aGFzRG91YmxlUmVzdWx0KCkgPT0gKGVkZ2UudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSB8fCBl
ZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBSZWFsVXNlKSk7CisgICAgICAgICAgICAgICAgICAg
IFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+aGFzSW50NTJSZXN1bHQoKSA9PSAoZWRnZS51
c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEluIFNTQSwgYWxsIGVkZ2VzIG11c3QgaGFzUmVzdWx0KCkuCiAgICAgICAg
ICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc1Jlc3VsdCgp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFkaWNGdW5jdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFkaWNGdW5j
dGlvbi5oCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhcmlhZGljRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgREZHVmFy
aWFkaWNGdW5jdGlvbl9oCi0jZGVmaW5lIERGR1ZhcmlhZGljRnVuY3Rpb25faAotCi0jZGVmaW5l
IERGR19DT01NQSAsCi0KLS8vIFRoZSBzaWduYXR1cmUgb2YgdiBpcyAodGVtcGxhdGVQcmUsIHRl
bXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykKLS8vCi0vLyBZ
b3Ugd291bGQgdXNlIGl0IGxpa2U6Ci0vLyAjZGVmaW5lIERFRklORV9GVU5DVElPTih0ZW1wbGF0
ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1zLCB2YWx1ZVBhcmFtc0NvbW1hLCB2YWx1ZVBh
cmFtcywgdmFsdWVBcmdzKQotLy8gICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJhbXMgdGVtcGxhdGVQ
b3N0IHZvaWQgZih2YWx1ZVBhcmFtcykgeyBnKHZhbHVlQXJncyk7IH0KLS8vIERGR19WQVJJQURJ
Q19URU1QTEFURV9GVU5DVElPTihERUZJTkVfRlVOQ1RJT04pCi0vLyAjdW5kZWYgREVGSU5FX0ZV
TkNUSU9OCi0vLwotLy8gT3IgaWYgeW91IHdhbnRlZCB0aGUgZGVmaW5lZCBmdW5jdGlvbiB0byB0
YWtlIGFuIGFkZGl0aW9uYWwgdGVtcGxhdGUgYXJnLCB5b3Ugd291bGQgZG86Ci0vLyAjZGVmaW5l
IERFRklORV9GVU5DVElPTih0ZW1wbGF0ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1zLCB2
YWx1ZVBhcmFtc0NvbW1hLCB2YWx1ZVBhcmFtcywgdmFsdWVBcmdzKQotLy8gICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQgdmFsdWVQYXJhbXNDb21tYSB0eXBlUGFyYW1zPiB2b2lkIGYoVCB2YWx1ZSB2
YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1zKSB7IGcodmFsdWUsIHZhbHVlQXJncyk7IH0KLS8v
IERGR19WQVJJQURJQ19URU1QTEFURV9GVU5DVElPTihERUZJTkVfRlVOQ1RJT04pCi0vLyAjdW5k
ZWYgREVGSU5FX0ZVTkNUSU9OCi0KLSNkZWZpbmUgREZHX1ZBUklBRElDX1RFTVBMQVRFX0ZVTkNU
SU9OKHYpIFwKLSAgICB2KCwgLCAsICwgLCApIFwKLSAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5h
bWUgX0RGR19UMSwgREZHX0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSwgX0RGR192
YWx1ZTEpIFwKLSAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEg
dHlwZW5hbWUgX0RGR19UMiwgREZHX0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBE
RkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIsIF9ERkdfdmFsdWUxIERGR19DT01N
QSBfREZHX3ZhbHVlMikgXAotICAgIHYodGVtcGxhdGU8LCA+LCB0eXBlbmFtZSBfREZHX1QxIERG
R19DT01NQSB0eXBlbmFtZSBfREZHX1QyIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1QzLCBERkdf
Q09NTUEsIGNvbnN0IF9ERkdfVDEmIF9ERkdfdmFsdWUxIERGR19DT01NQSBjb25zdCBfREZHX1Qy
JiBfREZHX3ZhbHVlMiBERkdfQ09NTUEgY29uc3QgX0RGR19UMyYgX0RGR192YWx1ZTMsIF9ERkdf
dmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09NTUEgX0RGR192YWx1ZTMpIFwKLSAg
ICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RG
R19UMiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19U
NCwgREZHX0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3Qg
X0RGR19UMiYgX0RGR192YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUz
IERGR19DT01NQSBjb25zdCBfREZHX1Q0JiBfREZHX3ZhbHVlNCwgX0RGR192YWx1ZTEgREZHX0NP
TU1BIF9ERkdfdmFsdWUyIERGR19DT01NQSBfREZHX3ZhbHVlMyBERkdfQ09NTUEgX0RGR192YWx1
ZTQpIFwKLSAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlw
ZW5hbWUgX0RGR19UMiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMyBERkdfQ09NTUEgdHlwZW5h
bWUgX0RGR19UNCBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNSwgREZHX0NPTU1BLCBjb25zdCBf
REZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIg
REZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzIERGR19DT01NQSBjb25zdCBfREZH
X1Q0JiBfREZHX3ZhbHVlNCBERkdfQ09NTUEgY29uc3QgX0RGR19UNSYgX0RGR192YWx1ZTUsIF9E
RkdfdmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09NTUEgX0RGR192YWx1ZTMgREZH
X0NPTU1BIF9ERkdfdmFsdWU0IERGR19DT01NQSBfREZHX3ZhbHVlNSkgXAotICAgIHYodGVtcGxh
dGU8LCA+LCB0eXBlbmFtZSBfREZHX1QxIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1QyIERGR19D
T01NQSB0eXBlbmFtZSBfREZHX1QzIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1Q0IERGR19DT01N
QSB0eXBlbmFtZSBfREZHX1Q1IERGR19DT01NQSB0eXBlbmFtZSBfREZHX1Q2LCBERkdfQ09NTUEs
IGNvbnN0IF9ERkdfVDEmIF9ERkdfdmFsdWUxIERGR19DT01NQSBjb25zdCBfREZHX1QyJiBfREZH
X3ZhbHVlMiBERkdfQ09NTUEgY29uc3QgX0RGR19UMyYgX0RGR192YWx1ZTMgREZHX0NPTU1BIGNv
bnN0IF9ERkdfVDQmIF9ERkdfdmFsdWU0IERGR19DT01NQSBjb25zdCBfREZHX1Q1JiBfREZHX3Zh
bHVlNSBERkdfQ09NTUEgY29uc3QgX0RGR19UNiYgX0RGR192YWx1ZTYsIF9ERkdfdmFsdWUxIERG
R19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09NTUEgX0RGR192YWx1ZTMgREZHX0NPTU1BIF9ERkdf
dmFsdWU0IERGR19DT01NQSBfREZHX3ZhbHVlNSBERkdfQ09NTUEgX0RGR192YWx1ZTYpIFwKLSAg
ICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RG
R19UMiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19U
NCBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNiBE
RkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNywgREZHX0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZH
X3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIgREZHX0NPTU1BIGNv
bnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzIERGR19DT01NQSBjb25zdCBfREZHX1Q0JiBfREZHX3Zh
bHVlNCBERkdfQ09NTUEgY29uc3QgX0RGR19UNSYgX0RGR192YWx1ZTUgREZHX0NPTU1BIGNvbnN0
IF9ERkdfVDYmIF9ERkdfdmFsdWU2IERGR19DT01NQSBjb25zdCBfREZHX1Q3JiBfREZHX3ZhbHVl
NywgX0RGR192YWx1ZTEgREZHX0NPTU1BIF9ERkdfdmFsdWUyIERGR19DT01NQSBfREZHX3ZhbHVl
MyBERkdfQ09NTUEgX0RGR192YWx1ZTQgREZHX0NPTU1BIF9ERkdfdmFsdWU1IERGR19DT01NQSBf
REZHX3ZhbHVlNiBERkdfQ09NTUEgX0RGR192YWx1ZTcpIFwKLSAgICB2KHRlbXBsYXRlPCwgPiwg
dHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMiBERkdfQ09NTUEgdHlw
ZW5hbWUgX0RGR19UMyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNCBERkdfQ09NTUEgdHlwZW5h
bWUgX0RGR19UNSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNiBERkdfQ09NTUEgdHlwZW5hbWUg
X0RGR19UNyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UOCwgREZHX0NPTU1BLCBjb25zdCBfREZH
X1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIgREZH
X0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzIERGR19DT01NQSBjb25zdCBfREZHX1Q0
JiBfREZHX3ZhbHVlNCBERkdfQ09NTUEgY29uc3QgX0RGR19UNSYgX0RGR192YWx1ZTUgREZHX0NP
TU1BIGNvbnN0IF9ERkdfVDYmIF9ERkdfdmFsdWU2IERGR19DT01NQSBjb25zdCBfREZHX1Q3JiBf
REZHX3ZhbHVlNyBERkdfQ09NTUEgX0RGR19UOCYgX0RGR192YWx1ZTgsIF9ERkdfdmFsdWUxIERG
R19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09NTUEgX0RGR192YWx1ZTMgREZHX0NPTU1BIF9ERkdf
dmFsdWU0IERGR19DT01NQSBfREZHX3ZhbHVlNSBERkdfQ09NTUEgX0RGR192YWx1ZTYgREZHX0NP
TU1BIF9ERkdfdmFsdWU3IERGR19DT01NQSBfREZHX3ZhbHVlOCkKLQotI2VuZGlmIC8vIERGR1Zh
cmlhZGljRnVuY3Rpb25faAotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNjcyNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkw
LDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2Ug
QXJpdGhGUm91bmQ6CiAgICAgY2FzZSBBcml0aE5lZ2F0ZToKICAgICBjYXNlIFVJbnQzMlRvTnVt
YmVyOgotICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICBjYXNlIENvbXBhcmVFcUNvbnN0YW50
OgogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKQEAgLTEwMyw3ICsxMDIs
NiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBH
ZXRDbG9zdXJlUmVnaXN0ZXJzOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1
dENsb3N1cmVWYXI6Ci0gICAgY2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgY2FzZSBJbnZhbGlkYXRp
b25Qb2ludDoKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICBjYXNlIENoZWNrRnVuY3Rpb246
CkBAIC0xNTIsOCArMTUwLDE5IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShO
b2RlKiAKICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOgog
ICAgIGNhc2UgSW5zdGFuY2VPZjoKKyAgICBjYXNlIERvdWJsZVJlcDoKKyAgICBjYXNlIFZhbHVl
UmVwOgorICAgIGNhc2UgSW50NTJSZXA6CisgICAgY2FzZSBEb3VibGVDb25zdGFudDoKKyAgICBj
YXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJZGVudGl0eToKKyAgICAgICAgLy8gTm8gYmFja2VuZCBoYW5kbGVzIHRo
aXMgYmVjYXVzZSBpdCB3aWxsIGJlIG9wdGltaXplZCBvdXQuIEJ1dCB3ZSBtYXkgY2hlY2sKKyAg
ICAgICAgLy8gZm9yIGNhcGFiaWxpdGllcyBiZWZvcmUgb3B0aW1pemF0aW9uLiBJdCB3b3VsZCBi
ZSBhIGRlZXAgZXJyb3IgdG8gcmVtb3ZlIHRoaXMKKyAgICAgICAgLy8gY2FzZSBiZWNhdXNlIGl0
IHdvdWxkIHByZXZlbnQgdXMgZnJvbSBjYXRjaGluZyBidWdzIHdoZXJlIHRoZSBGVEwgYmFja2Vu
ZAorICAgICAgICAvLyBwaXBlbGluZSBmYWlsZWQgdG8gb3B0aW1pemUgb3V0IGFuIElkZW50aXR5
LgorICAgICAgICBicmVhazsKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBQdXRC
eUlkOgogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpCkBA
IC0yMzUsOSArMjQ0LDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IAogICAgIGNhc2UgQ29tcGFyZUVxOgogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEludDMyVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKQorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoRG91YmxlUmVwVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMjU1LDkgKzI2NCw5IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiAKICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKQorICAgICAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
aWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpCiAgICAgICAgICAgICBi
cmVhazsKQEAgLTI4MCw5ICsyODksOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGUoTm9kZSogCiAgICAgY2FzZSBDb21wYXJlR3JlYXRlckVxOgogICAgICAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKQorICAgICAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpCisgICAgICAgIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKQogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0zNTAsMTAgKzM1OSwxMCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAg
ICAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBLbm93bkludDMy
VXNlOgotICAgICAgICAgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgICAg
ICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAg
ICAgICAgICAgICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBS
ZWFsTnVtYmVyVXNlOgorICAgICAgICAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAg
ICAgICAgICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKICAgICAgICAgICAgICAgICBjYXNlIEJv
b2xlYW5Vc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBDZWxsVXNlOgogICAgICAgICAgICAgICAg
IGNhc2UgS25vd25DZWxsVXNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODYsNyArMTg2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgTFR5cGUgdHlwZTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUt
PmZsYWdzKCkgJiBOb2RlUmVzdWx0TWFzaykgewotICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJl
c3VsdE51bWJlcjoKKyAgICAgICAgICAgICAgICBjYXNlIE5vZGVSZXN1bHREb3VibGU6CiAgICAg
ICAgICAgICAgICAgICAgIHR5cGUgPSBtX291dC5kb3VibGVUeXBlOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5vZGVSZXN1bHRJbnQzMjoKQEAgLTI4
MiwxMiArMjgyLDMwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBKU0NvbnN0YW50OgogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRG91YmxlQ29u
c3RhbnQ6CisgICAgICAgICAgICBjb21waWxlRG91YmxlQ29uc3RhbnQoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CisgICAgICAgICAgICBjb21waWxl
SW50NTJDb25zdGFudCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2Vha0pT
Q29uc3RhbnQ6CiAgICAgICAgICAgICBjb21waWxlV2Vha0pTQ29uc3RhbnQoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBoYW50b21Bcmd1bWVudHM6CiAgICAgICAgICAgICBj
b21waWxlUGhhbnRvbUFyZ3VtZW50cygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRG91YmxlUmVwOgorICAgICAgICAgICAgY29tcGlsZURvdWJsZVJlcCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgICAgICBjb21waWxlVmFs
dWVSZXAoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEludDUyUmVwOgorICAg
ICAgICAgICAgY29tcGlsZUludDUyUmVwKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBWYWx1ZVRvSW50MzI6CisgICAgICAgICAgICBjb21waWxlVmFsdWVUb0ludDMyKCk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudDoKICAgICAgICAgICAg
IGNvbXBpbGVHZXRBcmd1bWVudCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNzgsOSArMzk2
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKICAgICAgICAgICAg
IGNvbXBpbGVVSW50MzJUb051bWJlcigpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgSW50MzJUb0RvdWJsZToKLSAgICAgICAgICAgIGNvbXBpbGVJbnQzMlRvRG91YmxlKCk7Ci0g
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAg
ICAgIGNvbXBpbGVDaGVja1N0cnVjdHVyZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01Njks
MTIgKzU4NCw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAg
ICAgICAgICAgICBjb21waWxlSW52YWxpZGF0aW9uUG9pbnQoKTsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKLSAgICAgICAgICAgIGNvbXBpbGVWYWx1ZVRv
SW50MzIoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludDUyVG9WYWx1ZToK
LSAgICAgICAgICAgIGNvbXBpbGVJbnQ1MlRvVmFsdWUoKTsKLSAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKICAgICAgICAgICAgIGNvbXBp
bGVDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjMz
LDczICs2NDIsMTggQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgdm9pZCBjb21waWxlVmFsdWVUb0ludDMyKCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAobV9u
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKLSAgICAgICAgY2FzZSBJbnQzMlVzZToKLSAgICAg
ICAgICAgIHNldEludDMyKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKLSAgICAg
ICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0ludDMyKGxvd1N0cmljdEludDUyKG1fbm9kZS0+
Y2hpbGQxKCkpKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICBj
YXNlIE51bWJlclVzZToKLSAgICAgICAgY2FzZSBOb3RDZWxsVXNlOiB7Ci0gICAgICAgICAgICBM
b3dlcmVkTm9kZVZhbHVlIHZhbHVlID0gbV9pbnQzMlZhbHVlcy5nZXQobV9ub2RlLT5jaGlsZDEo
KS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAg
ICAgICAgc2V0SW50MzIodmFsdWUudmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZhbHVlID0gbV9qc1ZhbHVl
VmFsdWVzLmdldChtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoaXNW
YWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMihudW1iZXJPck5vdENlbGxU
b0ludDMyKG1fbm9kZS0+Y2hpbGQxKCksIHZhbHVlLnZhbHVlKCkpKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFsdWUg
PSBtX2RvdWJsZVZhbHVlcy5nZXQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwotICAgICAgICAg
ICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIoZG91Ymxl
VG9JbnQzMih2YWx1ZS52YWx1ZSgpKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFdlJ2xsIGJhc2ljYWxseSBqdXN0
IGdldCBoZXJlIGZvciBjb25zdGFudHMuIEJ1dCBpdCdzIGdvb2QgdG8gaGF2ZSB0aGlzCi0gICAg
ICAgICAgICAvLyBjYXRjaC1hbGwgc2luY2Ugd2Ugb2Z0ZW4gYWRkIG5ldyByZXByZXNlbnRhdGlv
bnMgaW50byB0aGUgbWl4LgotICAgICAgICAgICAgc2V0SW50MzIoCi0gICAgICAgICAgICAgICAg
bnVtYmVyT3JOb3RDZWxsVG9JbnQzMigKLSAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGls
ZDEoKSwKLSAgICAgICAgICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQm9vbGVhblVzZToKLSAgICAgICAgICAgIHNl
dEludDMyKG1fb3V0Lnplcm9FeHQobG93Qm9vbGVhbihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQu
aW50MzIpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIGNvbXBpbGVJbnQ1MlRvVmFs
dWUoKQotICAgIHsKLSAgICAgICAgc2V0SlNWYWx1ZShsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQx
KCkpKTsKLSAgICB9Ci0KICAgICB2b2lkIGNvbXBpbGVVcHNpbG9uKCkKICAgICB7CiAgICAgICAg
IExWYWx1ZSBkZXN0aW5hdGlvbiA9IG1fcGhpcy5nZXQobV9ub2RlLT5waGkoKSk7CiAgICAgICAg
IAogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7Ci0gICAgICAg
IGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAg
IG1fb3V0LnNldChsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgbV9v
dXQuc2V0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLCBkZXN0aW5hdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBjYXNlIElu
dDUyUmVwVXNlOgogICAgICAgICAgICAgbV9vdXQuc2V0KGxvd0ludDUyKG1fbm9kZS0+Y2hpbGQx
KCkpLCBkZXN0aW5hdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCb29s
ZWFuVXNlOgpAQCAtNzIyLDcgKzY3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBzb3Vy
Y2UgPSBtX3BoaXMuZ2V0KG1fbm9kZSk7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+ZmxhZ3MoKSAmIE5vZGVSZXN1bHRNYXNrKSB7Ci0gICAgICAgIGNhc2UgTm9kZVJlc3VsdE51
bWJlcjoKKyAgICAgICAgY2FzZSBOb2RlUmVzdWx0RG91YmxlOgogICAgICAgICAgICAgc2V0RG91
YmxlKG1fb3V0LmdldChzb3VyY2UpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IE5vZGVSZXN1bHRJbnQzMjoKQEAgLTc0MiwxNyArNjk2LDEyMCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9pZCBjb21waWxlRG91
YmxlQ29uc3RhbnQoKQorICAgIHsKKyAgICAgICAgc2V0RG91YmxlKG1fb3V0LmNvbnN0RG91Ymxl
KG1fZ3JhcGgudmFsdWVPZk51bWJlckNvbnN0YW50KG1fbm9kZSkpKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBjb21waWxlSW50NTJDb25zdGFudCgpCisgICAgeworICAgICAgICBpbnQ2NF90IHZh
bHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChtX25vZGUpLmFzTWFjaGluZUludCgpOwor
ICAgICAgICAKKyAgICAgICAgc2V0SW50NTIobV9vdXQuY29uc3RJbnQ2NCh2YWx1ZSA8PCBKU1Zh
bHVlOjppbnQ1MlNoaWZ0QW1vdW50KSk7CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmNv
bnN0SW50NjQodmFsdWUpKTsKKyAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVXZWFrSlNDb25zdGFu
dCgpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKHdlYWtQb2ludGVyKG1fbm9kZS0+d2Vha0Nv
bnN0YW50KCkpKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBjb21waWxlUGhhbnRvbUFyZ3VtZW50
cygpCiAgICAgewogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlV2Vha0pT
Q29uc3RhbnQoKQorICAgIHZvaWQgY29tcGlsZURvdWJsZVJlcCgpCiAgICAgewotICAgICAgICBz
ZXRKU1ZhbHVlKHdlYWtQb2ludGVyKG1fbm9kZS0+d2Vha0NvbnN0YW50KCkpKTsKKyAgICAgICAg
c3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIE51bWJl
clVzZTogeworICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgc2V0RG91Ymxl
KGpzVmFsdWVUb0RvdWJsZShtX25vZGUtPmNoaWxkMSgpLCB2YWx1ZSkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVz
ZTogeworICAgICAgICAgICAgc2V0RG91YmxlKHN0cmljdEludDUyVG9Eb3VibGUobG93U3RyaWN0
SW50NTIobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgY29t
cGlsZVZhbHVlUmVwKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKKyAgICAgICAgICAgIHNl
dEpTVmFsdWUoYm94RG91YmxlKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ1
MlJlcFVzZTogeworICAgICAgICAgICAgc2V0SlNWYWx1ZShzdHJpY3RJbnQ1MlRvSlNWYWx1ZShs
b3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgCisgICAg
dm9pZCBjb21waWxlSW50NTJSZXAoKQorICAgIHsKKyAgICAgICAgc2V0U3RyaWN0SW50NTIobV9v
dXQuc2lnbkV4dChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuaW50NjQpKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBjb21waWxlVmFsdWVUb0ludDMyKCkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBJbnQz
MlVzZToKKyAgICAgICAgICAgIHNldEludDMyKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSW50NTJSZXBV
c2U6CisgICAgICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihsb3dTdHJpY3RJbnQ1
MihtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
KyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgICAgICBzZXRJbnQzMihkb3VibGVU
b0ludDMyKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgTm90
Q2VsbFVzZTogeworICAgICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1faW50MzJW
YWx1ZXMuZ2V0KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmIChpc1Zh
bGlkKHZhbHVlKSkgeworICAgICAgICAgICAgICAgIHNldEludDMyKHZhbHVlLnZhbHVlKCkpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQobV9ub2RlLT5jaGlsZDEoKS5ub2Rl
KCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICAgICAg
c2V0SW50MzIobnVtYmVyT3JOb3RDZWxsVG9JbnQzMihtX25vZGUtPmNoaWxkMSgpLCB2YWx1ZS52
YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vIFdlJ2xsIGJhc2ljYWxseSBqdXN0IGdldCBoZXJlIGZvciBj
b25zdGFudHMuIEJ1dCBpdCdzIGdvb2QgdG8gaGF2ZSB0aGlzCisgICAgICAgICAgICAvLyBjYXRj
aC1hbGwgc2luY2Ugd2Ugb2Z0ZW4gYWRkIG5ldyByZXByZXNlbnRhdGlvbnMgaW50byB0aGUgbWl4
LgorICAgICAgICAgICAgc2V0SW50MzIoCisgICAgICAgICAgICAgICAgbnVtYmVyT3JOb3RDZWxs
VG9JbnQzMigKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDEoKSwKKyAgICAgICAg
ICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgQm9vbGVhblVzZToKKyAgICAgICAgICAgIHNldEludDMyKG1fb3V0Lnpl
cm9FeHQobG93Qm9vbGVhbihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuaW50MzIpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVHZXRBcmd1bWVudCgpCiAgICAgewogICAg
ICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbV9ub2RlLT52YXJpYWJsZUFjY2Vz
c0RhdGEoKTsKQEAgLTk2Niw3ICsxMDIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7
CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAgICAgICAgICAgIGlmICghbV9zdGF0ZS5m
b3JOb2RlKG1fbm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1MikKICAgICAgICAg
ICAgICAgICAmJiAhbV9zdGF0ZS5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQyKCkpLmNvdWxkQmVUeXBl
KFNwZWNJbnQ1MikpIHsKICAgICAgICAgICAgICAgICBJbnQ1MktpbmQga2luZDsKQEAgLTEwMTYs
NyArMTA3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CisgICAgICAgIGNhc2UgRG91Ymxl
UmVwVXNlOiB7CiAgICAgICAgICAgICBMVmFsdWUgQzEgPSBsb3dEb3VibGUobV9ub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICBMVmFsdWUgQzIgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIo
KSk7CiAKQEAgLTEwNjUsNyArMTEyMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogewor
ICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAgICAgICBJbnQ1MktpbmQga2luZDsK
ICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5jaGls
ZDEoKSwga2luZCk7CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQ1MihtX25vZGUt
PmNoaWxkMigpLCBvcHBvc2l0ZShraW5kKSk7CkBAIC0xMDkyLDcgKzExNDksNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBj
YXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAg
ICAgc2V0RG91YmxlKAogICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZU11bChsb3dEb3VibGUo
bV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xMTk1LDcgKzEyNTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTog
eworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgc2V0RG91YmxlKG1f
b3V0LmRvdWJsZURpdigKICAgICAgICAgICAgICAgICBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEo
KSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMjkzLDcgKzEzNTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNl
IERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgc2V0RG91YmxlKAogICAgICAgICAgICAgICAg
IG1fb3V0LmRvdWJsZVJlbShsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZSht
X25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzIxLDcgKzEzNzgs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAg
IAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZTog
ewogICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgICAgICAKQEAgLTEzNzEsNyArMTQyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTnVtYmVyVXNl
OiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAgICAgICAgICAgICBzZXREb3VibGUo
bV9vdXQuZG91YmxlQWJzKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0MTgsNyArMTQ3NSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTWFj
aGluZUludFVzZTogeworICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CiAgICAgICAgICAgICBp
ZiAoIW1fc3RhdGUuZm9yTm9kZShtX25vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50
NTIpKSB7CiAgICAgICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CiAgICAgICAgICAgICAgICAg
TFZhbHVlIHZhbHVlID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5jaGlsZDEoKSwga2luZCk7
CkBAIC0xNDM4LDcgKzE0OTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE51bWJlclVzZTogeworICAgICAgICBj
YXNlIERvdWJsZVJlcFVzZTogewogICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0LmRvdWJsZU5l
Zyhsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC0xNDk4LDExICsxNTU1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0SW50MzIo
dmFsdWUpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVJbnQzMlRvRG91YmxlKCkKLSAg
ICB7Ci0gICAgICAgIHNldERvdWJsZShsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpOwotICAg
IH0KLSAgICAKICAgICB2b2lkIGNvbXBpbGVDaGVja1N0cnVjdHVyZSgpCiAgICAgewogICAgICAg
ICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CkBAIC0yMjEzLDcgKzIy
NjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAg
ICAgICAgICAgICAgICAgICBMVmFsdWUgaW50VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAoY2hpbGQzLnVzZUtpbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIE1hY2hp
bmVJbnRVc2U6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChjaGlsZDMudXNlS2luZCgpID09IEludDMyVXNlKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludFZhbHVlID0gbG93SW50MzIoY2hpbGQzKTsKQEAgLTIyNDYsNyArMjI5OCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
TnVtYmVyVXNlOiB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOiB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBMVmFsdWUgZG91YmxlVmFsdWUgPSBsb3dEb3VibGUoY2hp
bGQzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGlzQ2xhbXBlZCh0eXBlKSkgewpAQCAtMzMyOCw4ICszMzgwLDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNvbXBpbGVDb21wYXJlRXEoKQogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEludDMyVXNlKQotICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoTWFjaGluZUludFVzZSkKLSAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE51bWJlclVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKElu
dDUyUmVwVXNlKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91Ymxl
UmVwVXNlKQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNl
KQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVhblVzZSkKICAg
ICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkgewpA
QCAtMzM3MSw3ICszNDIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hp
bmVJbnRVc2UpKSB7CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJl
cFVzZSkpIHsKICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAgICAgICAgTFZhbHVl
IGxlZnQgPSBsb3dXaGljaGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBraW5kKTsKICAgICAg
ICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0ludDUyKG1fbm9kZS0+Y2hpbGQyKCksIGtpbmQpOwpA
QCAtMzM3OSw3ICszNDMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJl
clVzZSkpIHsKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVz
ZSkpIHsKICAgICAgICAgICAgIHNldEJvb2xlYW4oCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91
YmxlRXF1YWwobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUobV9ub2RlLT5j
aGlsZDIoKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQxMjMsNyArNDE3NSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkgeworICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7CiAgICAgICAgICAgICBJ
bnQ1MktpbmQga2luZDsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50
NTIobV9ub2RlLT5jaGlsZDEoKSwga2luZCk7CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBs
b3dJbnQ1MihtX25vZGUtPmNoaWxkMigpLCBraW5kKTsKQEAgLTQxMzEsNyArNDE4Myw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CisgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpKSB7CiAgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1
ZSByaWdodCA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIHNldEJv
b2xlYW4obV9vdXQuZmNtcChyZWFsQ29uZGl0aW9uLCBsZWZ0LCByaWdodCkpOwpAQCAtNDM4OCw3
ICs0NDQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBsb3dCb29sZWFuKG1fbm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgcmV0dXJu
IG1fb3V0Lm5vdFplcm8zMihsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7Ci0gICAgICAgIGNh
c2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIHJl
dHVybiBtX291dC5kb3VibGVOb3RFcXVhbChsb3dEb3VibGUoZWRnZSksIG1fb3V0LmRvdWJsZVpl
cm8pOwogICAgICAgICBjYXNlIE9iamVjdE9yT3RoZXJVc2U6CiAgICAgICAgICAgICByZXR1cm4g
bV9vdXQuYml0Tm90KApAQCAtNDczNCwyMSArNDc4Niw5IEBAIHByaXZhdGU6CiAgICAgfQogICAg
IAogICAgIGVudW0gSW50NTJLaW5kIHsgU3RyaWN0SW50NTIsIEludDUyIH07Ci0gICAgTFZhbHVl
IGxvd0ludDUyKEVkZ2UgZWRnZSwgSW50NTJLaW5kIGtpbmQsIE9wZXJhbmRTcGVjdWxhdGlvbk1v
ZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93SW50
NTIoRWRnZSBlZGdlLCBJbnQ1MktpbmQga2luZCkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVT
RUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5k
KCkgPT0gTWFjaGluZUludFVzZSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoZWRnZS0+aGFzQ29u
c3RhbnQoKSkgewotICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZkpT
Q29uc3RhbnQoZWRnZS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc01hY2hpbmVJ
bnQoKSkgewotICAgICAgICAgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1fb3V0LmludDY0WmVybzsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGludDY0X3QgcmVzdWx0ID0gdmFsdWUuYXNNYWNoaW5lSW50KCk7Ci0gICAgICAgICAgICBp
ZiAoa2luZCA9PSBJbnQ1MikKLSAgICAgICAgICAgICAgICByZXN1bHQgPDw9IEpTVmFsdWU6Omlu
dDUyU2hpZnRBbW91bnQ7Ci0gICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnQ2NChyZXN1
bHQpOwotICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVkZ2UudXNlS2luZCgpID09
IEludDUyUmVwVXNlKTsKICAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWU7
CiAgICAgICAgIApAQCAtNDc3MywzNyArNDgxMywyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIHJldHVybiBpbnQ1MlRvU3RyaWN0SW50NTIodmFsdWUudmFsdWUoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX2ludDMyVmFs
dWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAg
ICAgICAgICAgcmV0dXJuIHNldEludDUyV2l0aFN0cmljdFZhbHVlKAotICAgICAgICAgICAgICAg
IGVkZ2Uubm9kZSgpLCBtX291dC5zaWduRXh0KHZhbHVlLnZhbHVlKCksIG1fb3V0LmludDY0KSwg
a2luZCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCEobV9z
dGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIFNwZWNJbnQ1MikpOwotICAgICAgICAKLSAgICAg
ICAgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYg
KGlzVmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSB2YWx1
ZS52YWx1ZSgpOwotICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAg
anNWYWx1ZVZhbHVlKGJveGVkUmVzdWx0KSwgZWRnZSwgU3BlY01hY2hpbmVJbnQsIGlzTm90SW50
MzIoYm94ZWRSZXN1bHQpKTsKLSAgICAgICAgICAgIHJldHVybiBzZXRJbnQ1MldpdGhTdHJpY3RW
YWx1ZSgKLSAgICAgICAgICAgICAgICBlZGdlLm5vZGUoKSwgbV9vdXQuc2lnbkV4dCh1bmJveElu
dDMyKGJveGVkUmVzdWx0KSwgbV9vdXQuaW50NjQpLCBraW5kKTsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBl
ICYgU3BlY01hY2hpbmVJbnQpKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9zdGF0ZS5m
b3JOb2RlKGVkZ2UpLm1fdHlwZSk7CiAgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7CiAg
ICAgICAgIHJldHVybiBtX291dC5pbnQ2NFplcm87CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBs
b3dJbnQ1MihFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRp
Y09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93SW50NTIoRWRnZSBlZGdlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGxvd0ludDUyKGVkZ2UsIEludDUyLCBtb2RlKTsKKyAgICAgICAg
cmV0dXJuIGxvd0ludDUyKGVkZ2UsIEludDUyKTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIGxv
d1N0cmljdEludDUyKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIExWYWx1ZSBsb3dTdHJpY3RJbnQ1MihFZGdl
IGVkZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gbG93SW50NTIoZWRnZSwgU3RyaWN0SW50NTIs
IG1vZGUpOworICAgICAgICByZXR1cm4gbG93SW50NTIoZWRnZSwgU3RyaWN0SW50NTIpOwogICAg
IH0KICAgICAKICAgICBib29sIGJldHRlclVzZVN0cmljdEludDUyKE5vZGUqIG5vZGUpCkBAIC00
ODMwLDEwICs0ODUzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBsb3dXaGljaGV2ZXJJbnQ1MihFZGdl
IGVkZ2UsIEludDUyS2luZCYga2luZCwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIExWYWx1ZSBsb3dXaGljaGV2ZXJJbnQ1MihF
ZGdlIGVkZ2UsIEludDUyS2luZCYga2luZCkKICAgICB7CiAgICAgICAgIGtpbmQgPSBiZXN0SW50
NTJLaW5kKGVkZ2UpOwotICAgICAgICByZXR1cm4gbG93SW50NTIoZWRnZSwga2luZCwgbW9kZSk7
CisgICAgICAgIHJldHVybiBsb3dJbnQ1MihlZGdlLCBraW5kKTsKICAgICB9CiAgICAgCiAgICAg
TFZhbHVlIGxvd0NlbGwoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBB
dXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCkBAIC00OTMxLDcxICs0OTU0LDE1IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBtX291dC5ib29sZWFuRmFsc2U7CiAgICAgfQogICAgIAotICAg
IExWYWx1ZSBsb3dEb3VibGUoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUg
PSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgTFZhbHVlIGxvd0RvdWJsZShFZGdl
IGVkZ2UpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uIHx8IGlzRG91YmxlKGVkZ2UudXNlS2luZCgpKSk7Ci0gICAgICAg
IAotICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewotICAgICAgICAgICAgSlNWYWx1
ZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpOwotICAgICAg
ICAgICAgaWYgKCF2YWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgdGVybWluYXRl
KFVuY291bnRhYmxlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuZG91YmxlWmVybzsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBtX291dC5jb25zdERvdWJsZSh2YWx1
ZS5hc051bWJlcigpKTsKLSAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0RvdWJs
ZShlZGdlLnVzZUtpbmQoKSkpOwogICAgICAgICAKICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2
YWx1ZSA9IG1fZG91YmxlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1Zh
bGlkKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZSgpOwogICAgICAgICAK
LSAgICAgICAgdmFsdWUgPSBtX2ludDMyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAg
IGlmIChpc1ZhbGlkKHZhbHVlKSkgewotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0
LmludFRvRG91YmxlKHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAgICAgc2V0RG91YmxlKGVkZ2Uu
bm9kZSgpLCByZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX3N0cmljdEludDUyVmFsdWVzLmdldChlZGdlLm5v
ZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBz
dHJpY3RJbnQ1MlRvRG91YmxlKGVkZ2UsIHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAKLSAgICAg
ICAgdmFsdWUgPSBtX2ludDUyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChp
c1ZhbGlkKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ1MlRvRG91YmxlKGVk
Z2UsIGludDUyVG9TdHJpY3RJbnQ1Mih2YWx1ZS52YWx1ZSgpKSk7Ci0gICAgICAgIAotICAgICAg
ICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwotICAgICAgICBpZiAo
aXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IHZhbHVl
LnZhbHVlKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGludENhc2Ug
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZSB1bmJveGluZyBpbnQgY2FzZSIpKTsKLSAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAo
IkRvdWJsZSB1bmJveGluZyBkb3VibGUgY2FzZSIpKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRG91YmxlIHVuYm94aW5nIGNv
bnRpbnVhdGlvbiIpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlz
Tm90SW50MzIoYm94ZWRSZXN1bHQpLCB1bnN1cmUoZG91YmxlQ2FzZSksIHVuc3VyZShpbnRDYXNl
KSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8oaW50Q2FzZSwgZG91YmxlQ2FzZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGludFRvRG91YmxlID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAg
ICAgICAgIG1fb3V0LmludFRvRG91YmxlKHVuYm94SW50MzIoYm94ZWRSZXN1bHQpKSk7Ci0gICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGRvdWJsZUNhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgIGpzVmFsdWVW
YWx1ZShib3hlZFJlc3VsdCksIGVkZ2UsIFNwZWNGdWxsTnVtYmVyLCBpc0NlbGxPck1pc2MoYm94
ZWRSZXN1bHQpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgdW5i
b3hlZERvdWJsZSA9IG1fb3V0LmFuY2hvcih1bmJveERvdWJsZShib3hlZFJlc3VsdCkpOwotICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnBoaShtX291dC5kb3VibGVUeXBl
LCBpbnRUb0RvdWJsZSwgdW5ib3hlZERvdWJsZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IHNldERvdWJsZShlZGdlLm5vZGUoKSwgcmVzdWx0KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCEobV9zdGF0
ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIFNwZWNGdWxsTnVtYmVyKSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlKTsKICAgICAgICAgdGVybWlu
YXRlKFVuY291bnRhYmxlKTsKICAgICAgICAgcmV0dXJuIG1fb3V0LmRvdWJsZVplcm87CiAgICAg
fQpAQCAtNTAwMyw2ICs0OTcwLDggQEAgcHJpdmF0ZToKICAgICBMVmFsdWUgbG93SlNWYWx1ZShF
ZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRT
cGVjdWxhdGlvbikKICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQoKSAhPSBJbnQ1MlJlcFVzZSk7CiAgICAg
ICAgIAogICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIHJldHVy
biBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0
YW50KGVkZ2Uubm9kZSgpKSkpOwpAQCAtNTAxOCwxNCArNDk4Nyw2IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2YWx1
ZSA9IG1fc3RyaWN0SW50NTJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlz
VmFsaWQodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDUyVG9KU1ZhbHVlKHZh
bHVlLnZhbHVlKCkpOwotICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX2ludDUyVmFsdWVzLmdl
dChlZGdlLm5vZGUoKSk7Ci0gICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKLSAgICAgICAgICAg
IHJldHVybiBzdHJpY3RJbnQ1MlRvSlNWYWx1ZShpbnQ1MlRvU3RyaWN0SW50NTIodmFsdWUudmFs
dWUoKSkpOwotICAgICAgICAKICAgICAgICAgdmFsdWUgPSBtX2Jvb2xlYW5WYWx1ZXMuZ2V0KGVk
Z2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CiAgICAgICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gYm94Qm9vbGVhbih2YWx1ZS52YWx1ZSgpKTsKQEAgLTUwMzMsMTMgKzQ5
OTQsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBtX2RvdWJsZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkp
OwotICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSBib3hEb3VibGUodmFsdWUudmFsdWUoKSk7Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKGVk
Z2Uubm9kZSgpLCByZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAg
fQotICAgICAgICAKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNTA2NSwxMSArNTAxOSw5IEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBzdHJpY3RJbnQ1MlRv
RG91YmxlKEVkZ2UgZWRnZSwgTFZhbHVlIHZhbHVlKQorICAgIExWYWx1ZSBzdHJpY3RJbnQ1MlRv
RG91YmxlKExWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291
dC5pbnRUb0RvdWJsZSh2YWx1ZSk7Ci0gICAgICAgIHNldERvdWJsZShlZGdlLm5vZGUoKSwgcmVz
dWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmludFRv
RG91YmxlKHZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIHN0cmljdEludDUyVG9KU1Zh
bHVlKExWYWx1ZSB2YWx1ZSkKQEAgLTUwOTksMjMgKzUwNTEsNiBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gbV9vdXQucGhpKG1fb3V0LmludDY0LCByZXN1bHRzKTsKICAgICB9CiAgICAgCi0g
ICAgTFZhbHVlIHNldEludDUyV2l0aFN0cmljdFZhbHVlKE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1
ZSwgSW50NTJLaW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAg
ICAgY2FzZSBTdHJpY3RJbnQ1MjoKLSAgICAgICAgICAgIHNldFN0cmljdEludDUyKG5vZGUsIHZh
bHVlKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgICAgIAotICAgICAgICBj
YXNlIEludDUyOgotICAgICAgICAgICAgdmFsdWUgPSBzdHJpY3RJbnQ1MlRvSW50NTIodmFsdWUp
OwotICAgICAgICAgICAgc2V0SW50NTIobm9kZSwgdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJu
IHZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBMVmFsdWUgc3RyaWN0
SW50NTJUb0ludDUyKExWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5z
aGwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCkpOwpA
QCAtNTE0Nyw2ICs1MDgyLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX291
dC50ZXN0Tm9uWmVybzY0KGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlcik7CiAgICAgfQorICAgIAog
ICAgIExWYWx1ZSB1bmJveERvdWJsZShMVmFsdWUganNWYWx1ZSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBtX291dC5iaXRDYXN0KG1fb3V0LmFkZChqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpLCBt
X291dC5kb3VibGVUeXBlKTsKQEAgLTUxNTUsNiArNTA5MSwzOSBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fb3V0LnN1YihtX291dC5iaXRDYXN0KGRvdWJsZVZhbHVlLCBtX291
dC5pbnQ2NCksIG1fdGFnVHlwZU51bWJlcik7CiAgICAgfQorICAgIExWYWx1ZSBqc1ZhbHVlVG9E
b3VibGUoRWRnZSBlZGdlLCBMVmFsdWUgYm94ZWRWYWx1ZSkKKyAgICB7CisgICAgICAgIExCYXNp
Y0Jsb2NrIGludENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZVJlcCB1bmJveGlu
ZyBpbnQgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgZG91YmxlQ2FzZSA9IEZUTF9ORVdf
QkxPQ0sobV9vdXQsICgiRG91YmxlUmVwIHVuYm94aW5nIGRvdWJsZSBjYXNlIikpOworICAgICAg
ICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJs
ZVJlcCB1bmJveGluZyBjb250aW51YXRpb24iKSk7CisgICAgICAgICAgICAKKyAgICAgICAgTFZh
bHVlIGlzTm90SW50MzI7CisgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVj
ayhlZGdlLCBTcGVjSW50MzIpKQorICAgICAgICAgICAgaXNOb3RJbnQzMiA9IG1fb3V0LmJvb2xl
YW5GYWxzZTsKKyAgICAgICAgZWxzZSBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2so
ZWRnZSwgflNwZWNJbnQzMikpCisgICAgICAgICAgICBpc05vdEludDMyID0gbV9vdXQuYm9vbGVh
blRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlzTm90SW50MzIgPSB0aGlzLT5pc05v
dEludDMyKGJveGVkVmFsdWUpOworICAgICAgICBtX291dC5icmFuY2goaXNOb3RJbnQzMiwgdW5z
dXJlKGRvdWJsZUNhc2UpLCB1bnN1cmUoaW50Q2FzZSkpOworICAgICAgICAgICAgCisgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW50Q2FzZSwgZG91YmxlQ2Fz
ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgaW50VG9Eb3VibGUgPSBt
X291dC5hbmNob3IoCisgICAgICAgICAgICBtX291dC5pbnRUb0RvdWJsZSh1bmJveEludDMyKGJv
eGVkVmFsdWUpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAg
ICAgIAorICAgICAgICBtX291dC5hcHBlbmRUbyhkb3VibGVDYXNlLCBjb250aW51YXRpb24pOwor
ICAgICAgICAgICAgCisgICAgICAgIEZUTF9UWVBFX0NIRUNLKAorICAgICAgICAgICAganNWYWx1
ZVZhbHVlKGJveGVkVmFsdWUpLCBlZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIsIGlzQ2VsbE9yTWlz
Yyhib3hlZFZhbHVlKSk7CisgICAgICAgICAgICAKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgdW5i
b3hlZERvdWJsZSA9IG1fb3V0LmFuY2hvcih1bmJveERvdWJsZShib3hlZFZhbHVlKSk7CisgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIAorICAgICAg
ICByZXR1cm4gbV9vdXQucGhpKG1fb3V0LmRvdWJsZVR5cGUsIGludFRvRG91YmxlLCB1bmJveGVk
RG91YmxlKTsKKyAgICB9CiAgICAgCiAgICAgTFZhbHVlIGlzTnVtYmVyKExWYWx1ZSBqc1ZhbHVl
KQogICAgIHsKQEAgLTUyMjYsOCArNTE5NSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVW50
eXBlZFVzZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6
Ci0gICAgICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CiAgICAgICAgIGNhc2UgS25vd25TdHJpbmdV
c2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNl
OgogICAgICAgICAgICAgQVNTRVJUKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2Up
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEludDMyVXNlOgpAQCAtNTI2MCwx
NCArNTIzMCwxMSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0
VXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QoZWRnZSk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgICAgICAg
ICAgc3BlY3VsYXRlUmVhbE51bWJlcihlZGdlKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIE51bWJlclVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZU51bWJlcihlZGdlKTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Ci0gICAgICAgICAg
ICBzcGVjdWxhdGVNYWNoaW5lSW50KGVkZ2UpOworICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxV
c2U6CisgICAgICAgICAgICBzcGVjdWxhdGVEb3VibGVSZWFsKGVkZ2UpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZUJv
b2xlYW4oZWRnZSk7CkBAIC01NTI5LDE0ICs1NDk2LDExIEBAIHByaXZhdGU6CiAgICAgCiAgICAg
dm9pZCBzcGVjdWxhdGVOdW1iZXIoRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAgLy8gRG8gYW4g
ZWFybHkgcmV0dXJuIGhlcmUgYmVjYXVzZSBsb3dEb3VibGUoKSBjYW4gY3JlYXRlIGEgbG90IG9m
IGNvbnRyb2wgZmxvdy4KLSAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNr
KGVkZ2UpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgbG93RG91Ymxl
KGVkZ2UpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2
YWx1ZSksIGVkZ2UsIFNwZWNCeXRlY29kZU51bWJlciwgaXNOb3ROdW1iZXIodmFsdWUpKTsKICAg
ICB9CiAgICAgCi0gICAgdm9pZCBzcGVjdWxhdGVSZWFsTnVtYmVyKEVkZ2UgZWRnZSkKKyAgICB2
b2lkIHNwZWN1bGF0ZURvdWJsZVJlYWwoRWRnZSBlZGdlKQogICAgIHsKICAgICAgICAgLy8gRG8g
YW4gZWFybHkgcmV0dXJuIGhlcmUgYmVjYXVzZSBsb3dEb3VibGUoKSBjYW4gY3JlYXRlIGEgbG90
IG9mIGNvbnRyb2wgZmxvdy4KICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNo
ZWNrKGVkZ2UpKQpAQCAtNTU0NCwxOSArNTUwOCwxMCBAQCBwcml2YXRlOgogICAgICAgICAKICAg
ICAgICAgTFZhbHVlIHZhbHVlID0gbG93RG91YmxlKGVkZ2UpOwogICAgICAgICBGVExfVFlQRV9D
SEVDSygKLSAgICAgICAgICAgIGRvdWJsZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0Z1bGxSZWFs
TnVtYmVyLAorICAgICAgICAgICAgZG91YmxlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjRG91Ymxl
UmVhbCwKICAgICAgICAgICAgIG1fb3V0LmRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQodmFsdWUs
IHZhbHVlKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc3BlY3VsYXRlTWFjaGluZUludChFZGdl
IGVkZ2UpCi0gICAgewotICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2so
ZWRnZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBJbnQ1MktpbmQg
a2luZDsKLSAgICAgICAgbG93V2hpY2hldmVySW50NTIoZWRnZSwga2luZCk7Ci0gICAgfQotICAg
IAogICAgIHZvaWQgc3BlY3VsYXRlQm9vbGVhbihFZGdlIGVkZ2UpCiAgICAgewogICAgICAgICBs
b3dCb29sZWFuKGVkZ2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1
ZUZvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExW
YWx1ZUZvcm1hdC5jcHAJKHJldmlzaW9uIDE2NzI3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMVmFsdWVGb3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MSw2ICs3MSw3IEBAIHZv
aWQgcmVib3hBY2NvcmRpbmdUb0Zvcm1hdCgKICAgICBjYXNlIFZhbHVlRm9ybWF0RG91YmxlOiB7
CiAgICAgICAgIGppdC5tb3ZlRG91YmxlVG82NChGUFJJbmZvOjpmcFJlZ1QwLCBzY3JhdGNoMSk7
CiAgICAgICAgIGppdC5tb3ZlNjRUb0RvdWJsZSh2YWx1ZSwgRlBSSW5mbzo6ZnBSZWdUMCk7Cisg
ICAgICAgIGppdC5zYW5pdGl6ZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgaml0
LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCB2YWx1ZSk7CiAgICAgICAgIGppdC5tb3ZlNjRU
b0RvdWJsZShzY3JhdGNoMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgIGJyZWFrOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2
aXNpb24gMTY3MjcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw2ICs1NCwxNCBAQCBWZWN0b3I8
Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1iCiAgICAgcmV0dXJuIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpzYW5pdGl6ZURvdWJsZShG
UFJSZWcgZnByKQoreworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdE5hTiA9IGJyYW5jaERv
dWJsZShEb3VibGVFcXVhbCwgZnByLCBmcHIpOworICAgIHN0YXRpYyBjb25zdCBkb3VibGUgTmFO
ID0gUU5hTjsKKyAgICBsb2FkRG91YmxlKCZOYU4sIGZwcik7CisgICAgbm90TmFOLmxpbmsodGhp
cyk7Cit9CisKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCiB2b2lkIEFzc2VtYmx5SGVscGVy
czo6c2V0U2FtcGxpbmdGbGFnKGludDMyX3QgZmxhZykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTY3MjcyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDE3LDYgKzQxNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGppdEFzc2VydFRh
Z3NJblBsYWNlKCkgeyB9CiAgICAgdm9pZCBqaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpIHsg
fQogI2VuZGlmCisgICAgCisgICAgdm9pZCBzYW5pdGl6ZURvdWJsZShGUFJSZWcgZnByKTsKIAog
ICAgIC8vIFRoZXNlIG1ldGhvZHMgY29udmVydCBiZXR3ZWVuIGRvdWJsZXMsIGFuZCBkb3VibGVz
IGJveGVkIGFuZCBKU1ZhbHVlcy4KICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNDM1LDYgKzQzNywx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmcHI7CiAgICAgfQogICAgIAorICAgIHZvaWQg
Ym94RG91YmxlKEZQUlJlZyBmcHIsIEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgeworICAgICAgICBi
b3hEb3VibGUoZnByLCByZWdzLmdwcigpKTsKKyAgICB9CisgICAgCiAgICAgLy8gSGVyZSBhcmUg
cG9zc2libGUgYXJyYW5nZW1lbnRzIG9mIHNvdXJjZSwgdGFyZ2V0LCBzY3JhdGNoOgogICAgIC8v
IC0gc291cmNlLCB0YXJnZXQsIHNjcmF0Y2ggY2FuIGFsbCBiZSBzZXBhcmF0ZSByZWdpc3RlcnMu
CiAgICAgLy8gLSBzb3VyY2UgYW5kIHRhcmdldCBjYW4gYmUgdGhlIHNhbWUgYnV0IHNjcmF0Y2gg
aXMgc2VwYXJhdGUuCkBAIC00NjcsNiArNDc0LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IG1vdmVJbnRzVG9Eb3VibGUocGF5bG9hZEdQUiwgdGFnR1BSLCBmcHIsIHNjcmF0Y2hGUFIpOwog
ICAgIH0KKyAgICAKKyAgICB2b2lkIGJveERvdWJsZShGUFJSZWcgZnByLCBKU1ZhbHVlUmVncyBy
ZWdzKQorICAgIHsKKyAgICAgICAgYm94RG91YmxlKGZwciwgcmVncy50YWdHUFIoKSwgcmVncy5w
YXlsb2FkR1BSKCkpOworICAgIH0KICNlbmRpZgogICAgIAogICAgIGVudW0gRXhjZXB0aW9uQ2hl
Y2tLaW5kIHsgTm9ybWFsRXhjZXB0aW9uQ2hlY2ssIEludmVydGVkRXhjZXB0aW9uQ2hlY2sgfTsK
</data>
<flag name="review"
          id="253727"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>