<?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>175523</bug_id>
          
          <creation_ts>2017-08-13 10:13:28 -0700</creation_ts>
          <short_desc>[DFG] Relax arity requirement</short_desc>
          <delta_ts>2017-09-27 12:51:08 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1338245</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-13 10:13:28 -0700</bug_when>
    <thetext>When the arity fixup is needed, DFG gives up inlining.
We should perform arity fixup in DFG and allow these functions to be inlined!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338250</commentid>
    <comment_count>1</comment_count>
      <attachid>318013</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-13 12:48:36 -0700</bug_when>
    <thetext>Created attachment 318013
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339191</commentid>
    <comment_count>2</comment_count>
      <attachid>318266</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-16 09:32:28 -0700</bug_when>
    <thetext>Created attachment 318266
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339203</commentid>
    <comment_count>3</comment_count>
      <attachid>318270</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-16 10:25:10 -0700</bug_when>
    <thetext>Created attachment 318270
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339231</commentid>
    <comment_count>4</comment_count>
      <attachid>318277</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-16 11:40:19 -0700</bug_when>
    <thetext>Created attachment 318277
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339232</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-16 11:41:51 -0700</bug_when>
    <thetext>Attachment 318277 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1559:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:5995:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 18 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>1339832</commentid>
    <comment_count>6</comment_count>
      <attachid>318436</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-17 16:28:14 -0700</bug_when>
    <thetext>Created attachment 318436
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339839</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-17 16:31:13 -0700</bug_when>
    <thetext>Attachment 318436 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1559:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:5995:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 26 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>1339893</commentid>
    <comment_count>8</comment_count>
      <attachid>318456</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-17 18:30:15 -0700</bug_when>
    <thetext>Created attachment 318456
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339895</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-17 18:32:14 -0700</bug_when>
    <thetext>Attachment 318456 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1559:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:5995:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 28 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>1339993</commentid>
    <comment_count>10</comment_count>
      <attachid>318481</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-18 00:08:08 -0700</bug_when>
    <thetext>Created attachment 318481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340009</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-18 01:02:54 -0700</bug_when>
    <thetext>Performance seems neutral in SunSpider, Octane, and Kraken.

Benchmark report for SunSpider, Octane, and Kraken on sakura-trick.

VMs tested:
&quot;baseline&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/arity-tot/Release/bin/jsc
&quot;patched&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/arity/Release/bin/jsc

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

                                                 baseline                  patched                                      
SunSpider:
   3d-cube                                    8.8515+-0.6472            8.3906+-0.5052          might be 1.0549x faster
   3d-morph                                  21.9400+-3.8353           18.8490+-3.6735          might be 1.1640x faster
   3d-raytrace                                9.6133+-0.5565            9.4410+-0.6365          might be 1.0182x faster
   access-binary-trees                        4.0922+-0.2109            4.0830+-0.2836        
   access-fannkuch                           10.6515+-0.9241     ?     11.3128+-0.8015        ? might be 1.0621x slower
   access-nbody                               4.9356+-0.3269     ?      5.3178+-0.3462        ? might be 1.0774x slower
   access-nsieve                              6.4670+-0.5098     ?      6.7402+-0.5625        ? might be 1.0422x slower
   bitops-3bit-bits-in-byte                   2.2414+-0.1406     ?      2.3213+-0.1477        ? might be 1.0357x slower
   bitops-bits-in-byte                        5.4161+-0.5070            5.3651+-0.4138        
   bitops-bitwise-and                         4.4602+-0.3687            4.3406+-0.3700          might be 1.0276x faster
   bitops-nsieve-bits                         6.1618+-0.4392     ?      6.5085+-0.3864        ? might be 1.0563x slower
   controlflow-recursive                      5.0577+-0.3498            5.0148+-0.2220        
   crypto-aes                                 7.9557+-0.4993            7.8757+-0.4579          might be 1.0102x faster
   crypto-md5                                 4.8827+-0.3886            4.7478+-0.3323          might be 1.0284x faster
   crypto-sha1                                5.2459+-0.3512            5.1926+-0.3534          might be 1.0103x faster
   date-format-tofte                         12.8260+-0.8681     ?     13.3424+-0.8851        ? might be 1.0403x slower
   date-format-xparb                         10.1109+-0.6211     ?     10.2845+-0.5946        ? might be 1.0172x slower
   math-cordic                                6.0790+-0.4223            5.7125+-0.3813          might be 1.0642x faster
   math-partial-sums                         11.4365+-0.6781           10.7543+-0.7751          might be 1.0634x faster
   math-spectral-norm                         3.9795+-0.2345     ?      4.0927+-0.2551        ? might be 1.0285x slower
   regexp-dna                                12.4586+-0.9572     ?     12.7482+-0.7345        ? might be 1.0232x slower
   string-base64                              7.9979+-0.6506            7.5830+-0.5764          might be 1.0547x faster
   string-fasta                              11.4262+-0.8205           11.3134+-0.6282        
   string-tagcloud                           14.9830+-0.7134     ?     15.1685+-0.8758        ? might be 1.0124x slower
   string-unpack-code                        33.6683+-1.2289           33.2489+-1.4156          might be 1.0126x faster
   string-validate-input                      8.6673+-0.5133     ?      8.8465+-0.4592        ? might be 1.0207x slower

   &lt;arithmetic&gt;                               9.2925+-0.1752            9.1768+-0.1780          might be 1.0126x faster

                                                 baseline                  patched                                      
Octane:
   encrypt                                   0.21697+-0.00250          0.21505+-0.00222       
   decrypt                                   3.19592+-0.07732          3.15080+-0.01926         might be 1.0143x faster
   deltablue                        x2       0.17943+-0.00286          0.17899+-0.00354       
   earley                                    0.38484+-0.00581          0.38385+-0.00563       
   boyer                                     6.81272+-0.06503    ?     6.87593+-0.08935       ?
   navier-stokes                    x2       5.15583+-0.02783          5.13569+-0.01410       
   raytrace                         x2       1.08541+-0.01280    ?     1.09709+-0.02142       ? might be 1.0108x slower
   richards                         x2       0.10280+-0.00603          0.10176+-0.00341         might be 1.0102x faster
   splay                            x2       0.41644+-0.00297          0.41633+-0.00272       
   regexp                           x2      24.80921+-0.88032    ?    24.82124+-0.46774       ?
   pdfjs                            x2      53.16431+-1.21299         52.09709+-0.85814         might be 1.0205x faster
   mandreel                         x2      59.04636+-0.91564    ?    59.46426+-1.88705       ?
   gbemu                            x2      44.27448+-1.53874    ?    46.33595+-1.52696       ? might be 1.0466x slower
   closure                                   0.76323+-0.02071          0.75325+-0.01909         might be 1.0133x faster
   jquery                                   10.02756+-0.30741          9.93506+-0.29140       
   box2d                            x2      13.25011+-0.30650         13.00191+-0.33909         might be 1.0191x faster
   zlib                             x2     471.37625+-5.13116        463.36143+-5.39613         might be 1.0173x faster
   typescript                       x2     869.03813+-20.31389   ?   871.38597+-25.51990      ?

   &lt;geometric&gt;                               6.77721+-0.04307          6.76760+-0.04416         might be 1.0014x faster

                                                 baseline                  patched                                      
Kraken:
   ai-astar                                  152.440+-4.847      ?     155.918+-4.254         ? might be 1.0228x slower
   audio-beat-detection                       53.706+-2.854             53.309+-2.224         
   audio-dft                                 101.823+-2.447      ?     102.626+-2.420         ?
   audio-fft                                  38.700+-1.117      ?      38.833+-1.203         ?
   audio-oscillator                           69.622+-2.187             68.690+-3.007           might be 1.0136x faster
   imaging-darkroom                          122.502+-2.888            119.586+-2.688           might be 1.0244x faster
   imaging-desaturate                         72.576+-1.852             72.510+-2.034         
   imaging-gaussian-blur                     109.564+-3.220      ?     111.903+-4.197         ? might be 1.0214x slower
   json-parse-financial                       61.940+-1.840      ?      62.111+-1.752         ?
   json-stringify-tinderbox                   39.797+-1.070             39.068+-1.612           might be 1.0187x faster
   stanford-crypto-aes                        58.412+-2.978             56.556+-2.395           might be 1.0328x faster
   stanford-crypto-ccm                        53.473+-3.680             49.564+-2.570           might be 1.0789x faster
   stanford-crypto-pbkdf2                     93.506+-3.136             93.174+-3.229         
   stanford-crypto-sha256-iterative           33.539+-0.842             33.075+-1.714           might be 1.0140x faster

   &lt;arithmetic&gt;                               75.829+-0.821             75.495+-0.795           might be 1.0044x faster

                                                 baseline                  patched                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                           16.8333+-0.1261           16.7306+-0.1341          might be 1.0061x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343258</commentid>
    <comment_count>12</comment_count>
      <attachid>318481</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-29 15:24:53 -0700</bug_when>
    <thetext>Comment on attachment 318481
Patch

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

&gt; Source/JavaScriptCore/bytecode/InlineCallFrame.h:183
&gt; +    unsigned argumentCountIncludingThis; // Do not include fixups.

&quot;Do not include fixups&quot; =&gt;&quot;Does not include arity fixup&quot;

&gt; Source/JavaScriptCore/dfg/DFGArgumentsEliminationPhase.cpp:703
&gt; +                            safeToGetStack = index &lt; inlineCallFrame-&gt;argumentCountIncludingThis - 1;

Why does this not include fixups?

&gt; Source/JavaScriptCore/dfg/DFGArgumentsEliminationPhase.cpp:808
&gt; +                                unsigned frameArgumentCount = inlineCallFrame-&gt;argumentCountIncludingThis - 1;

Why does this not include fixup?

&gt; Source/JavaScriptCore/dfg/DFGArgumentsEliminationPhase.cpp:837
&gt; +                                    unsigned frameArgumentCount = inlineCallFrame-&gt;argumentCountIncludingThis - 1;

ditto

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1544
&gt; +    if (extraSlots != paddedStackSpace)
&gt; +        registerOffsetAfterFixup = registerOffset - (paddedStackSpace - extraSlots);

This seems wrong to me. What if you have arity fixup but extraSlots == paddedStackSpace, don&apos;t you need to change this?

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.h:53
&gt; +ALWAYS_INLINE int paddedStackSpaceFor(CodeBlock* codeBlock, int argumentCountIncludingThis)

This name reads weirdly to me. I expect it to return the total stack space including padding. But it&apos;s really just returning the padding needed. So maybe we can call this numberOfStackPaddingSlots or something similar.

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.h:-60
&gt; -    ASSERT(argumentCountIncludingThis &lt; newCodeBlock-&gt;numParameters());

You should keep this assertion since it dictates that the above function behaves like this code here used to</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343298</commentid>
    <comment_count>13</comment_count>
      <attachid>318481</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-29 16:27:38 -0700</bug_when>
    <thetext>Comment on attachment 318481
Patch

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

Thank you!

&gt;&gt; Source/JavaScriptCore/dfg/DFGArgumentsEliminationPhase.cpp:703
&gt;&gt; +                            safeToGetStack = index &lt; inlineCallFrame-&gt;argumentCountIncludingThis - 1;
&gt; 
&gt; Why does this not include fixups?

This is because this phase is considering &quot;whether this arguments[xxx] access is safe&quot;.
Consider the function, `function t(a, b, c) { }`. And we call it in the form of `t(42)`.
Then, b and c will be filled with undefined by arity fixup.
But, `arguments.length` should be 1, and `arguments` object should not include fixups.
If we access `arguments[1]` in this function, this will not be trapped in the own property phase since fixups are not included.

So, we should use `argumentCountIncludingThis - 1` instead of `argumentsWithFixups.size() - 1` here.

&gt;&gt; Source/JavaScriptCore/dfg/DFGArgumentsEliminationPhase.cpp:808
&gt;&gt; +                                unsigned frameArgumentCount = inlineCallFrame-&gt;argumentCountIncludingThis - 1;
&gt; 
&gt; Why does this not include fixup?

Ditto.

&gt;&gt; Source/JavaScriptCore/dfg/DFGArgumentsEliminationPhase.cpp:837
&gt;&gt; +                                    unsigned frameArgumentCount = inlineCallFrame-&gt;argumentCountIncludingThis - 1;
&gt; 
&gt; ditto

Ditto.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1544
&gt;&gt; +        registerOffsetAfterFixup = registerOffset - (paddedStackSpace - extraSlots);
&gt; 
&gt; This seems wrong to me. What if you have arity fixup but extraSlots == paddedStackSpace, don&apos;t you need to change this?

Yes. This is because we already have the hole for the extraSlots.
Note that this extraSlots operation is the same to what we are doing for the arity fixup in LLInt and Baseline JIT.

Consider the case,

-&gt; stack bottom
[extraSlot for stack alignment][arg2][arg1][arg0][header]

At that time, we found that this function requires 4 arguments.
Then, we will make it as is the following.

[arg3][arg2][arg1][arg0][header]

So, extraSlots is used for arg3. In this case, `registerOffset == registerOffsetAfterFixup`.
You can see extra slot use in LLInt&apos;s LowLevelInterpreter64.asm&apos;s functionArityCheck macro and Baseline&apos;s ThunkGenerators.cpp&apos;s arityFixupGenerator.

&gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.h:53
&gt;&gt; +ALWAYS_INLINE int paddedStackSpaceFor(CodeBlock* codeBlock, int argumentCountIncludingThis)
&gt; 
&gt; This name reads weirdly to me. I expect it to return the total stack space including padding. But it&apos;s really just returning the padding needed. So maybe we can call this numberOfStackPaddingSlots or something similar.

OK, I&apos;ll rename it.

&gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.h:-60
&gt;&gt; -    ASSERT(argumentCountIncludingThis &lt; newCodeBlock-&gt;numParameters());
&gt; 
&gt; You should keep this assertion since it dictates that the above function behaves like this code here used to

OK, I&apos;ve reverted it. `numberOfStackPaddingSlots` should not have this since we always call that function in DFG.
I&apos;ll keep this assertion in arityCheckFor function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343308</commentid>
    <comment_count>14</comment_count>
      <attachid>319305</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-29 16:40:07 -0700</bug_when>
    <thetext>Created attachment 319305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343834</commentid>
    <comment_count>15</comment_count>
      <attachid>319434</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-30 19:20:19 -0700</bug_when>
    <thetext>Created attachment 319434
Patch

Simple build fix for debug build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343835</commentid>
    <comment_count>16</comment_count>
      <attachid>319435</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-30 19:29:47 -0700</bug_when>
    <thetext>Created attachment 319435
Patch

Simple build fix for debug build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344700</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-01 17:48:12 -0700</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344751</commentid>
    <comment_count>18</comment_count>
      <attachid>319435</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-02 00:02:05 -0700</bug_when>
    <thetext>Comment on attachment 319435
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1583
&gt; +            for (int index = 0; index &lt; argumentCountIncludingThis; ++index)

How does this loop not overwrite itself?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344752</commentid>
    <comment_count>19</comment_count>
      <attachid>319435</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-02 00:02:55 -0700</bug_when>
    <thetext>Comment on attachment 319435
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1583
&gt;&gt; +            for (int index = 0; index &lt; argumentCountIncludingThis; ++index)
&gt; 
&gt; How does this loop not overwrite itself?

Ignore this. Yusuke and I already discussed on IRC. The math works out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344770</commentid>
    <comment_count>20</comment_count>
      <attachid>319703</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-02 01:07:46 -0700</bug_when>
    <thetext>Created attachment 319703
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344778</commentid>
    <comment_count>21</comment_count>
      <attachid>319707</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-02 01:19:42 -0700</bug_when>
    <thetext>Created attachment 319707
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344784</commentid>
    <comment_count>22</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-02 01:35:52 -0700</bug_when>
    <thetext>Committed r221528: &lt;http://trac.webkit.org/changeset/221528&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345307</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-04 20:05:05 -0700</bug_when>
    <thetext>https://arewefastyet.com/#machine=29&amp;view=single&amp;suite=six-speed&amp;subtest=defaults-es5 yay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345382</commentid>
    <comment_count>24</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-05 01:23:49 -0700</bug_when>
    <thetext>I guess that this improves Speedometer 2.0 jQuery.
https://perf.webkit.org/v3/#/charts?since=1502871591591&amp;paneList=((18-946-(1504326612417.7107-1504454348857.5935)-null-(5-2.5-500)))

I think this is because jQuery&apos;s function can take optional values as an additional argument. And before this patch, it prevents inlining.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353682</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:51:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694140&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318013</attachid>
            <date>2017-08-13 12:48:36 -0700</date>
            <delta_ts>2017-08-16 09:32:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175523-20170814044835.patch</filename>
            <type>text/plain</type>
            <size>6906</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NjgwNTUzMzQ5ZGRlOTRhMGVkNGZmYjNjOTU5MjU5YmI5OWU5MmFiLi5lZDgxY2JlNjhhMzZhYjI3
ZjVjYzA2OTM1ZDljZTE4ZjExZDAyYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nv
c3QpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50
cnkpOgorCiAyMDE3LTA4LTEyICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW0FSTTY0XSBVc2UgeDI5IGFuZCB4MzAgaW5zdGVhZCBvZiBmcCBhbmQgbHIg
dG8gbWFrZSBHQ0MgaGFwcHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKaW5kZXggYjY4YjVhZjBhZTg2MWY1NWFmYWVhMTlhZWNjNzg4YzkwOTNk
Y2JlMS4uNmIxZTM3Y2E2YzNjYzE4MmU1ZDU4MDM4MmMwOGJhNDVmOWUzODc2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTExMDks
NiArMTEwOSw4IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgSW5saW5lQ2FsbEZy
YW1lKiBtX2lubGluZUNhbGxGcmFtZTsKICAgICAgICAgCiAgICAgICAgIFNjcmlwdEV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUoKSB7IHJldHVybiBtX2NvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRh
YmxlKCk7IH0KKworICAgICAgICBpbnQgbV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKICAg
ICAgICAgCiAgICAgICAgIFF1ZXJ5YWJsZUV4aXRQcm9maWxlIG1fZXhpdFByb2ZpbGU7CiAgICAg
ICAgIApAQCAtMTQyNyw2ICsxNDI5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEFyZ3Vt
ZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEkKIAogdW5z
aWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ2FsbE1vZGUgY2FsbE1vZGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQgPSBzcGVjaWFsaXphdGlvbktpbmRGb3IoY2FsbE1vZGUpOwogICAg
IGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBj
YWxsZWUsICIgaW50byAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKQEAgLTE0NTgsMTUg
KzE0NjEsNiBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJp
YW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQogICAgICAgICByZXR1cm4gVUlOVF9N
QVg7CiAgICAgfQogCi0gICAgLy8gRG9lcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3ZSdyZSBw
YXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0PyBXZSBjdXJyZW50bHkKLSAgICAv
LyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgaXMgZ3JlYXRl
ciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKLSAgICAvLyBhcmd1bWVudHMgZXhwZWN0ZWQu
Ci0gICAgaWYgKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID4gYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nKCIg
ICAgRmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNoLlxuIik7Ci0gICAgICAgIHJldHVy
biBVSU5UX01BWDsKLSAgICB9Ci0KICAgICBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
ID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwoCiAgICAgICAgIGNvZGVCbG9jaywg
a2luZCwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CiAgICAgaWYgKHZlcmJvc2UpIHsKQEAgLTE1
NDYsOCArMTU0MCwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgIGluc2VydENoZWNr
cyhjb2RlQmxvY2spOwogCiAgICAgLy8gRklYTUU6IERvbid0IGZsdXNoIGNvbnN0YW50cyEKKwor
ICAgIGludCBhcml0eUZpeFVwQ291bnQgPSBzdGQ6Om1heDxpbnQ+KGNvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIDApOwogICAgIAotICAgIGlu
dCBpbmxpbmVDYWxsRnJhbWVTdGFydCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChW
aXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQpKS5vZmZzZXQoKSArIENhbGxGcmFtZTo6aGVh
ZGVyU2l6ZUluUmVnaXN0ZXJzOworICAgIGludCBpbmxpbmVDYWxsRnJhbWVTdGFydCA9IG1faW5s
aW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQg
LSBhcml0eUZpeFVwQ291bnQpKS5vZmZzZXQoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVn
aXN0ZXJzOwogICAgIAogICAgIGVuc3VyZUxvY2FscygKICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
KGlubGluZUNhbGxGcmFtZVN0YXJ0KS50b0xvY2FsKCkgKyAxICsKQEAgLTE1NjIsNyArMTU1OCw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUs
IGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjYWxs
ZWVWYXJpYWJsZSA9IG51bGxwdHI7CiAgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpIHsK
ICAgICAgICAgTm9kZSogY2FsbGVlU2V0ID0gc2V0KAotICAgICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgY2FsbFRhcmdldE5v
ZGUsIEltbWVkaWF0ZU5ha2VkU2V0KTsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihyZWdp
c3Rlck9mZnNldCAtIGFyaXR5Rml4VXBDb3VudCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIGNh
bGxUYXJnZXROb2RlLCBJbW1lZGlhdGVOYWtlZFNldCk7CiAgICAgICAgIAogICAgICAgICBjYWxs
ZWVWYXJpYWJsZSA9IGNhbGxlZVNldC0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIGNh
bGxlZVZhcmlhYmxlLT5tZXJnZVNob3VsZE5ldmVyVW5ib3godHJ1ZSk7CkBAIC00MTM1LDYgKzQx
MzEsMTcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
IAogICAgICAgICBjYXNlIG9wX2VudGVyOiB7CiAgICAgICAgICAgICBOb2RlKiB1bmRlZmluZWQg
PSBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50VW5kZWZpbmVkKSk7Cisg
ICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBpbiBjYWxsZXIgc2lkZS4K
KyAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUoKSAmJiBtX2lubGluZVN0YWNrVG9wLT5t
X2FyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSkgeworICAgICAgICAgICAgICAgIGludCBhcml0eUZpeFVwQ291
bnQgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gbV9p
bmxpbmVTdGFja1RvcC0+bV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKKyAgICAgICAgICAg
ICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgbV9pbmxpbmVTdGFja1RvcC0+bV9hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpbmRleCkgeworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBhcmd1bWVudCA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpbmRleCArIGFy
aXR5Rml4VXBDb3VudCkpOworICAgICAgICAgICAgICAgICAgICBzZXQodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoaW5kZXgpLCBhcmd1bWVudCwgSW1tZWRpYXRlTmFrZWRTZXQpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwg
YXJpdHlGaXhVcENvdW50OyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIHNldCh2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChtX2lubGluZVN0YWNrVG9wLT5tX2FyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzICsgaW5kZXgpLCB1bmRlZmluZWQsIEltbWVkaWF0ZU5ha2VkU2V0KTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBJbml0aWFsaXpl
IGFsbCBsb2NhbHMgdG8gdW5kZWZpbmVkLgogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bV9udW1WYXJzOyArK2kpCiAgICAgICAg
ICAgICAgICAgc2V0KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLCB1bmRlZmluZWQsIEltbWVk
aWF0ZU5ha2VkU2V0KTsKQEAgLTU5NTMsNiArNTk2MCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxp
bmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgIDogbV9ieXRlQ29kZVBhcnNlcihi
eXRlQ29kZVBhcnNlcikKICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKICAgICAsIG1fcHJv
ZmlsZWRCbG9jayhwcm9maWxlZEJsb2NrKQorICAgICwgbV9hcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyhhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKICAgICAsIG1fY2FsbHNpdGVCbG9ja0hl
YWQoY2FsbHNpdGVCbG9ja0hlYWQpCiAgICAgLCBtX3JldHVyblZhbHVlKHJldHVyblZhbHVlVlIp
CiAgICAgLCBtX2RpZFJldHVybihmYWxzZSkKQEAgLTU5NzQsOCArNTk4Miw5IEBAIEJ5dGVDb2Rl
UGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICB9CiAg
ICAgfQogICAgIAotICAgIG1fYXJndW1lbnRQb3NpdGlvbnMucmVzaXplKGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzOyArK2kpIHsKKyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRo
Rml4VXAgPSBzdGQ6Om1heDxpbnQ+KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSk7CisgICAgbV9hcmd1bWVudFBvc2l0aW9ucy5yZXNpemUoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4VXApOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4VXA7ICsraSkgewogICAgICAgICBi
eXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zLmFwcGVuZChBcmd1bWVu
dFBvc2l0aW9uKCkpOwogICAgICAgICBBcmd1bWVudFBvc2l0aW9uKiBhcmd1bWVudFBvc2l0aW9u
ID0gJmJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMubGFzdCgpOwog
ICAgICAgICBtX2FyZ3VtZW50UG9zaXRpb25zW2ldID0gYXJndW1lbnRQb3NpdGlvbjsKQEAgLTU5
OTksNyArNjAwOCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVT
dGFja0VudHJ5KAogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1l
LT5pc0Nsb3N1cmVDYWxsID0gdHJ1ZTsKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmRpcmVj
dENhbGxlciA9IGJ5dGVDb2RlUGFyc2VyLT5jdXJyZW50Q29kZU9yaWdpbigpOwotICAgICAgICBt
X2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnJlc2l6ZVRvRml0KGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKTsgLy8gU2V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGluY2x1ZGluZyB0aGlz
LCBidXQgZG9uJ3QgY29uZmlndXJlIHRoZSB2YWx1ZSByZWNvdmVyaWVzLCB5ZXQuCisgICAgICAg
IG1faW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMucmVzaXplVG9GaXQoYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXNXaXRoRml4VXApOyAvLyBTZXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgaW5j
bHVkaW5nIHRoaXMsIGJ1dCBkb24ndCBjb25maWd1cmUgdGhlIHZhbHVlIHJlY292ZXJpZXMsIHll
dC4KICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmtpbmQgPSBraW5kOwogICAgICAgICAKICAg
ICAgICAgbV9pZGVudGlmaWVyUmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlm
aWVycygpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318266</attachid>
            <date>2017-08-16 09:32:28 -0700</date>
            <delta_ts>2017-08-16 10:25:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175523-20170817013227.patch</filename>
            <type>text/plain</type>
            <size>33076</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NjgwNTUzMzQ5ZGRlOTRhMGVkNGZmYjNjOTU5MjU5YmI5OWU5MmFiLi5lODliNDYwNDQ2NjllNGNk
YjA5NjEwYTM4ZTViMDVlYWJhMTg3ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxNy0wOC0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVD
YWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OmR1bXBJbkNvbnRl
eHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oOgorICAgICAg
ICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OklubGluZUNhbGxGcmFtZSk6CisgICAgICAgICogZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAg
ICAgICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdENv
ZGVUb0dldEFyZ3VtZW50c0FycmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpmaW5kQXJndW1l
bnRQb3NpdGlvbkZvckxvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
Z2V0QXJndW1lbnRDb3VudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omlu
bGluaW5nQ29zdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNh
bGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5l
U3RhY2tFbnRyeSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6
CisgICAgICAgICogZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkxvY2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3VsYXRvcjo6ZXhlY3V0ZU5v
ZGUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpP
U1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZy
YW1lcyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldExlbmd0aCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMpOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzTGVuZ3RoKToKKyAgICAgICAgKiBmdGwv
RlRMT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uTWF0ZXJpYWxp
emVPYmplY3RJbk9TUik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpyZWFkSW5saW5lZEZyYW1lKToKKyAgICAgICAg
KiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
YXJndW1lbnRzU3RhcnQpOgorICAgICAgICAqIGppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHA6Cisg
ICAgICAgIChKU0M6OmVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50
czo6Y3JlYXRlV2l0aElubGluZUZyYW1lKToKKwogMjAxNy0wOC0xMiAgQ3NhYmEgT3N6dHJvZ29u
w6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtBUk02NF0gVXNlIHgyOSBhbmQgeDMw
IGluc3RlYWQgb2YgZnAgYW5kIGxyIHRvIG1ha2UgR0NDIGhhcHB5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCmluZGV4IDk3Y2U4NGQ2
MzU4MzAzMjA4Y2YwNjBlM2M1YzZhYmQzNmU2MjdmNjEuLjk2YzA5OTcwMTIyMjBhNWY1YmQ1YmNh
OTdiMGU4OTM4YmM2YjE4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCkBAIC03NCw3ICs3NCw4IEBAIHZvaWQgSW5saW5lQ2Fs
bEZyYW1lOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250
ZXh0KSBjb25zCiAgICAgICAgIG91dC5wcmludCgiLCBjbG9zdXJlIGNhbGwiKTsKICAgICBlbHNl
CiAgICAgICAgIG91dC5wcmludCgiLCBrbm93biBjYWxsZWU6ICIsIGluQ29udGV4dChjYWxsZWVS
ZWNvdmVyeS5jb25zdGFudCgpLCBjb250ZXh0KSk7Ci0gICAgb3V0LnByaW50KCIsIG51bUFyZ3Mr
dGhpcyA9ICIsIGFyZ3VtZW50cy5zaXplKCkpOworICAgIG91dC5wcmludCgiLCBudW1BcmdzK3Ro
aXMgPSAiLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgb3V0LnByaW50KCIsIG51
bVBhcmFtcyt0aGlzID0gIiwgYXJndW1lbnRzLnNpemUoKSk7CiAgICAgb3V0LnByaW50KCIsIHN0
YWNrT2Zmc2V0ID0gIiwgc3RhY2tPZmZzZXQpOwogICAgIG91dC5wcmludCgiICgiLCB2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbCgwKSwgIiBtYXBzIHRvICIsIHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KDApICsgc3RhY2tPZmZzZXQsICIpPiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCmluZGV4IGJlMWFmZGIxOTY3OWQ0N2EwYTBjYTVj
YWVhY2Q1ZTI1MWU5YThjNTYuLjkyMWFmNjQ4OWM0YTE2ZGViMjVmMTU2OWQzNzJhYjlhYjcwMmMy
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxs
RnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmgKQEAgLTE4MCw2ICsxODAsNyBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICBW
YWx1ZVJlY292ZXJ5IGNhbGxlZVJlY292ZXJ5OwogICAgIENvZGVPcmlnaW4gZGlyZWN0Q2FsbGVy
OwogCisgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgc2lnbmVk
IHN0YWNrT2Zmc2V0IDogMjg7CiAgICAgdW5zaWduZWQga2luZCA6IDM7IC8vIHJlYWwgdHlwZSBp
cyBLaW5kCiAgICAgYm9vbCBpc0Nsb3N1cmVDYWxsIDogMTsgLy8gSWYgZmFsc2UgdGhlbiB3ZSBr
bm93IHRoYXQgY2FsbGVlL3Njb3BlIGFyZSBjb25zdGFudHMgYW5kIHRoZSBERkcgd29uJ3QgdHJl
YXQgdGhlbSBhcyB2YXJpYWJsZXMsIGkuZS4gdGhleSBoYXZlIHRvIGJlIHJlY292ZXJlZCBtYW51
YWxseS4KQEAgLTE4OSw3ICsxOTAsOCBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICAv
LyBJbmxpbmVDYWxsRnJhbWUncyBmaWVsZHMuIFRoaXMgY29uc3RydWN0b3IgaXMgaGVyZSBqdXN0
IHRvIHJlZHVjZSBjb25mdXNpb24gaWYKICAgICAvLyB3ZSBmb3Jnb3QgdG8gaW5pdGlhbGl6ZSBl
eHBsaWNpdGx5LgogICAgIElubGluZUNhbGxGcmFtZSgpCi0gICAgICAgIDogc3RhY2tPZmZzZXQo
MCkKKyAgICAgICAgOiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygwKQorICAgICAgICAsIHN0
YWNrT2Zmc2V0KDApCiAgICAgICAgICwga2luZChDYWxsKQogICAgICAgICAsIGlzQ2xvc3VyZUNh
bGwoZmFsc2UpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGI5M2RlYmM5MmNiMmUyNWNi
Y2RkMWVlZWU0NjkxYWQ3MWViYzc4NzYuLmYzYTU4NzI3M2EwOWYyMzE1YmEzYTUwZjg1ZjM5NGI5
ZmY1ZjJlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE3MzEsNyArMTczMSw3IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHVuc2lnbmVkIGFy
Z3VtZW50SW5kZXggPSBpbmRleC5hc1VJbnQzMigpICsgbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNU
b1NraXAoKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoYXJndW1lbnRJbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUo
KSAtIDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRJbmRleCA8IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkgPSBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCiAgICAgICAg
ICAgICAgICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudEluZGV4
ICsgMSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAg
ICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKQEAgLTE3NTAsNyArMTc1MCw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgYm91bmQg
b24gdGhlIHR5cGVzIGV2ZW4gdGhvdWdoIGl0J3MgcmFuZG9tIGFjY2Vzcy4gVGFrZSBhZHZhbnRh
Z2Ugb2YgdGhpcy4KICAgICAgICAgICAgIAogICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSByZXN1
bHQ7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgbm9kZS0+bnVtYmVyT2ZBcmd1
bWVudHNUb1NraXAoKTsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgbm9kZS0+bnVtYmVyT2ZBcmd1
bWVudHNUb1NraXAoKTsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXM7ICsraSkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5tZXJnZSgKICAgICAgICAgICAg
ICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAogICAgICAgICAgICAgICAgICAg
ICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCBjM2NmODI5ZGVjZTJkNTI3Mzkx
MDk4MjZiZThjMWMxOTAyOThmMGIwLi42MGEzNDNkMzcyYTc4MTNmYzNmNTc4OWU5YzNkZTI0MjFj
NTk0ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50
c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTcwMCw3ICs3MDAsNyBAQCBjbGFzcyBB
cmd1bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYWZlVG9HZXRTdGFjazsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2FmZVRvR2V0U3RhY2sgPSBpbmRleCA8IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fm
ZVRvR2V0U3RhY2sgPSBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2FmZVRvR2V0U3RhY2sgPQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2soKS0+bnVt
UGFyYW1ldGVycygpKSAtIDE7CkBAIC04MDUsNyArODA1LDcgQEAgY2xhc3MgQXJndW1lbnRzRWxp
bWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChzcHJlYWQtPm9wKCkgPT0gUGhhbnRvbVNwcmVhZCAmJiBzcHJlYWQtPmNo
aWxkMSgpLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSBzcHJlYWQtPmNo
aWxkMSgpLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHNwcmVhZC0+Y2hp
bGQxKCktPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZnJhbWVBcmd1bWVudENvdW50ID49IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lQXJndW1lbnRDb3Vu
dCAtIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKQEAgLTgzNCw3ICs4MzQsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5h
dGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChzcHJlYWQtPm9wKCkgPT0gUGhhbnRvbVNwcmVhZCAmJiBzcHJlYWQtPmNo
aWxkMSgpLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gc3ByZWFk
LT5jaGlsZDEoKS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gc3By
ZWFkLT5jaGlsZDEoKS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9
IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmcmFtZUFyZ3VtZW50Q291bnQgPSBpbmxpbmVD
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbG9hZEluZGV4ID0gbnVtYmVyT2ZB
cmd1bWVudHNUb1NraXA7IGxvYWRJbmRleCA8IGZyYW1lQXJndW1lbnRDb3VudDsgKytsb2FkSW5k
ZXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgcmVnID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQobG9hZEluZGV4ICsgMSkgKyBp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFN0YWNrQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdGFja0FjY2Vz
c0RhdGEuYWRkKHJlZywgRmx1c2hlZEpTVmFsdWUpOwpAQCAtODg3LDcgKzg4Nyw3IEBAIGNsYXNz
IEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4gdmFyYXJnc0RhdGEtPm9mZnNldCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
LT0gdmFyYXJnc0RhdGEtPm9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CkBAIC05MDksNyArOTA5LDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiB2
YWx1ZSA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb2FkSW5kZXggPSBzdG9yZUluZGV4ICsgdmFyYXJnc0RhdGEtPm9mZnNldDsKIAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRJbmRleCArIDEgPCBpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChsb2FkSW5kZXggKyAxIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChs
b2FkSW5kZXggKyAxKSArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQ7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0gbV9n
cmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5hZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlZywgRmx1c2hlZEpTVmFsdWUpOwpAQCAtMTAzMiw3ICsxMDMyLDcg
QEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzcHJlYWQtPmNoaWxkMSgpLT5vcCgp
ID09IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBzcHJlYWQtPmNoaWxkMSgpLT5vcmln
aW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IHNwcmVhZC0+Y2hpbGQxKCkt
Pm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsr
aSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRh
KiBkYXRhID0gbV9ncmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5hZGQoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkgKyBp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZsdXNoZWRKU1ZhbHVlKTsKQEAgLTEwNjksNyArMTA2OSw3IEBAIGNsYXNz
IEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBjYW5kaWRhdGUt
Pm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPE5vZGUqPiBhcmd1bWVudHM7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIHZhcmFyZ3NE
YXRhLT5maXJzdFZhckFyZ09mZnNldDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMSArIHZhcmFyZ3NEYXRhLT5maXJzdFZhckFyZ09mZnNldDsgaSA8IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTdGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RhY2tBY2Nl
c3NEYXRhLmFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsdXNoZWRKU1ZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcApp
bmRleCAwNjFhMjg0Y2Y1ZDQ5N2M5NTk4N2U5ZjYzMDU2ZTVlOTc0M2Q2ZGQxLi42Y2VkNDU4MTBj
OTJlMGNkOWIzMzMyYWFmOTQ3OTZjZmRiNjdjOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCkBAIC03NCw3ICs3NCw3IEBA
IE5vZGUqIGVtaXRDb2RlVG9HZXRBcmd1bWVudHNBcnJheUxlbmd0aCgKICAgICAgICAgbnVtYmVy
T2ZBcmd1bWVudHNUb1NraXAgPSBhcmd1bWVudHMtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7
CiAgICAgCiAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1Zh
cmFyZ3MoKSkgewotICAgICAgICB1bnNpZ25lZCBhcmd1bWVudHNTaXplID0gaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgdW5zaWduZWQgYXJndW1lbnRzU2l6
ZSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAg
ICAgICBpZiAoYXJndW1lbnRzU2l6ZSA+PSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCkKICAgICAg
ICAgICAgIGFyZ3VtZW50c1NpemUgLT0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAg
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKaW5kZXggYjY4YjVhZjBhZTg2MWY1NWFmYWVhMTlhZWNjNzg4YzkwOTNkY2JlMS4uMjQ1ZTJj
NmMwMTFhZTRlNDkzMzdlYWM3OGY1NGIxNGQ5MGRjNzNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTU3MCw3ICs1NzAsNyBAQCBj
bGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpID49IHN0YXRpY19jYXN0PGlu
dD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50
T2Zmc2V0KCkgKyBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKQorICAgICAgICAg
ICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPj0gc3RhdGljX2Nhc3Q8aW50PihpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSArIGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gVmlydHVhbFJlZ2lzdGVyKG9w
ZXJhbmQub2Zmc2V0KCkgLSBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0FyZ3VtZW50
KCk7CiAgICAgICAgICAgICByZXR1cm4gc3RhY2stPm1fYXJndW1lbnRQb3NpdGlvbnNbYXJndW1l
bnRdOwpAQCAtMTEwOSw2ICsxMTA5LDggQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAg
ICBJbmxpbmVDYWxsRnJhbWUqIG1faW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAKICAgICAgICAg
U2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSgpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5vd25l
clNjcmlwdEV4ZWN1dGFibGUoKTsgfQorCisgICAgICAgIGludCBtX2FyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzOwogICAgICAgICAKICAgICAgICAgUXVlcnlhYmxlRXhpdFByb2ZpbGUgbV9leGl0
UHJvZmlsZTsKICAgICAgICAgCkBAIC0xNDEzLDcgKzE0MTUsNyBAQCBOb2RlKiBCeXRlQ29kZVBh
cnNlcjo6Z2V0QXJndW1lbnRDb3VudCgpCiAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5t
X2lubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCiAgICAgICAgICAgICBhcmd1bWVudENvdW50
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBqc0NvbnN0YW50KG1fZ3Jh
cGguZnJlZXplKGpzTnVtYmVyKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHMuc2l6ZSgpKSktPnZhbHVlKCkpOworICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9
IGpzQ29uc3RhbnQobV9ncmFwaC5mcmVlemUoanNOdW1iZXIobV9pbmxpbmVTdGFja1RvcC0+bV9p
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSktPnZhbHVlKCkpOwog
ICAgIH0gZWxzZQogICAgICAgICBhcmd1bWVudENvdW50ID0gYWRkVG9HcmFwaChHZXRBcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgT3BJbmZvKDApLCBPcEluZm8oU3BlY0ludDMyT25seSkpOwog
ICAgIHJldHVybiBhcmd1bWVudENvdW50OwpAQCAtMTQyNyw2ICsxNDI5LDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6ZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEkKIAogdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChD
YWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ2FsbE1v
ZGUgY2FsbE1vZGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKTsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBzcGVjaWFsaXphdGlvbktp
bmRGb3IoY2FsbE1vZGUpOwogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJDb25z
aWRlcmluZyBpbmxpbmluZyAiLCBjYWxsZWUsICIgaW50byAiLCBjdXJyZW50Q29kZU9yaWdpbigp
LCAiXG4iKTsKQEAgLTE0NTgsMTUgKzE0NjEsNiBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6
aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQog
ICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogCi0gICAgLy8gRG9lcyB0aGUgbnVtYmVy
IG9mIGFyZ3VtZW50cyB3ZSdyZSBwYXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0
PyBXZSBjdXJyZW50bHkKLSAgICAvLyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3Vt
ZW50cyBwYXNzZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKLSAgICAv
LyBhcmd1bWVudHMgZXhwZWN0ZWQuCi0gICAgaWYgKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
ID4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCi0g
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNo
LlxuIik7Ci0gICAgICAgIHJldHVybiBVSU5UX01BWDsKLSAgICB9Ci0KICAgICBDYXBhYmlsaXR5
TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwo
CiAgICAgICAgIGNvZGVCbG9jaywga2luZCwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CiAgICAg
aWYgKHZlcmJvc2UpIHsKQEAgLTE1NDYsOCArMTU0MCwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2Fs
bFZhcgogICAgIGluc2VydENoZWNrcyhjb2RlQmxvY2spOwogCiAgICAgLy8gRklYTUU6IERvbid0
IGZsdXNoIGNvbnN0YW50cyEKKworICAgIGludCBhcml0eUZpeFVwQ291bnQgPSBzdGQ6Om1heDxp
bnQ+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIDApOwogICAgIAotICAgIGludCBpbmxpbmVDYWxsRnJhbWVTdGFydCA9IG1faW5saW5lU3Rh
Y2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQpKS5vZmZz
ZXQoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOworICAgIGludCBpbmxpbmVD
YWxsRnJhbWVTdGFydCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVn
aXN0ZXIocmVnaXN0ZXJPZmZzZXQgLSBhcml0eUZpeFVwQ291bnQpKS5vZmZzZXQoKSArIENhbGxG
cmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwogICAgIAogICAgIGVuc3VyZUxvY2FscygKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZVN0YXJ0KS50b0xvY2FsKCkgKyAx
ICsKQEAgLTE1NzYsNiArMTU3MiwxNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxs
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgIHVu
c2lnbmVkIG9sZEluZGV4ID0gbV9jdXJyZW50SW5kZXg7CiAgICAgbV9jdXJyZW50SW5kZXggPSAw
OwogCisgICAgaWYgKGFyaXR5Rml4VXBDb3VudCkgeworICAgICAgICBtX2V4aXRPSyA9IGZhbHNl
OworICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgbV9pbmxpbmVTdGFja1RvcC0+
bV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpbmRleCkgeworICAgICAgICAgICAgTm9k
ZSogYXJndW1lbnQgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaW5kZXggKyBhcml0
eUZpeFVwQ291bnQpKTsKKyAgICAgICAgICAgIHNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dChpbmRleCksIGFyZ3VtZW50LCBJbW1lZGlhdGVOYWtlZFNldCk7CisgICAgICAgIH0KKyAgICAg
ICAgTm9kZSogdW5kZWZpbmVkID0gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9jb25z
dGFudFVuZGVmaW5lZCkpOworICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgYXJp
dHlGaXhVcENvdW50OyArK2luZGV4KQorICAgICAgICAgICAgc2V0KHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50KG1faW5saW5lU3RhY2tUb3AtPm1fYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
KyBpbmRleCksIHVuZGVmaW5lZCwgSW1tZWRpYXRlTmFrZWRTZXQpOworICAgIH0KKwogICAgIC8v
IEF0IHRoaXMgcG9pbnQsIGl0J3MgYWdhaW4gT0sgdG8gT1NSIGV4aXQuCiAgICAgbV9leGl0T0sg
PSB0cnVlOwogCkBAIC00MTM0LDYgKzQxNDEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAvLyA9PT0gRnVuY3Rpb24gZW50cnkgb3Bj
b2RlcyA9PT0KIAogICAgICAgICBjYXNlIG9wX2VudGVyOiB7CisgICAgICAgICAgICBtX2V4aXRP
SyA9IGZhbHNlOwogICAgICAgICAgICAgTm9kZSogdW5kZWZpbmVkID0gYWRkVG9HcmFwaChKU0Nv
bnN0YW50LCBPcEluZm8obV9jb25zdGFudFVuZGVmaW5lZCkpOwogICAgICAgICAgICAgLy8gSW5p
dGlhbGl6ZSBhbGwgbG9jYWxzIHRvIHVuZGVmaW5lZC4KICAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPm1fbnVtVmFyczsgKytpKQpA
QCAtNDI3OSw3ICs0Mjg3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZCBsaW1pdCkKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gdGhpcy0+aW5saW5lQ2FsbEZyYW1lKCk7CiAgICAgICAgICAgICBOb2RlKiBsZW5ndGg7CiAg
ICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRzTGVuZ3RoID0gaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICB1bnNp
Z25lZCBhcmd1bWVudHNMZW5ndGggPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzIC0gMTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1QYXJhbXNUb1NraXAg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOwogICAgICAgICAgICAgICAg
IEpTVmFsdWUgcmVzdExlbmd0aDsKICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzTGVuZ3Ro
IDw9IG51bVBhcmFtc1RvU2tpcCkKQEAgLTU3MTQsNyArNTcyMiw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiBhcmd1
bWVudDsKICAgICAgICAgICAgIGludDMyX3QgYXJndW1lbnRJbmRleEluY2x1ZGluZ1RoaXMgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewotICAgICAgICAgICAg
ICAgIGludDMyX3QgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50cy5zaXplKCk7CisgICAgICAgICAgICAgICAgaW50MzJfdCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM7CiAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50SW5kZXhJbmNsdWRpbmdUaGlzIDwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCiAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0g
Z2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50SW5kZXhJbmNsdWRpbmdUaGlz
KSk7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtNTk1Myw2ICs1OTYxLDcgQEAgQnl0ZUNvZGVQ
YXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgOiBtX2J5dGVD
b2RlUGFyc2VyKGJ5dGVDb2RlUGFyc2VyKQogICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQog
ICAgICwgbV9wcm9maWxlZEJsb2NrKHByb2ZpbGVkQmxvY2spCisgICAgLCBtX2FyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQogICAgICwgbV9jYWxs
c2l0ZUJsb2NrSGVhZChjYWxsc2l0ZUJsb2NrSGVhZCkKICAgICAsIG1fcmV0dXJuVmFsdWUocmV0
dXJuVmFsdWVWUikKICAgICAsIG1fZGlkUmV0dXJuKGZhbHNlKQpAQCAtNTk3NCw4ICs1OTgzLDkg
QEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAg
ICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgbV9hcmd1bWVudFBvc2l0aW9ucy5yZXNpemUoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgeworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpc1dpdGhGaXhVcCA9IHN0ZDo6bWF4PGludD4oYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICBtX2FyZ3VtZW50UG9zaXRpb25z
LnJlc2l6ZShhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXhVcCk7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXhVcDsgKytpKSB7
CiAgICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuYXBw
ZW5kKEFyZ3VtZW50UG9zaXRpb24oKSk7CiAgICAgICAgIEFyZ3VtZW50UG9zaXRpb24qIGFyZ3Vt
ZW50UG9zaXRpb24gPSAmYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9u
cy5sYXN0KCk7CiAgICAgICAgIG1fYXJndW1lbnRQb3NpdGlvbnNbaV0gPSBhcmd1bWVudFBvc2l0
aW9uOwpAQCAtNTk5MywxMyArNjAwMywxNCBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tF
bnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4KICAgICAg
ICAgbV9pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLnNldFdpdGhvdXRXcml0ZUJh
cnJpZXIoY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CiAgICAgICAgIG1faW5saW5lQ2Fs
bEZyYW1lLT5zZXRTdGFja09mZnNldChpbmxpbmVDYWxsRnJhbWVTdGFydC5vZmZzZXQoKSAtIENh
bGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKTsKKyAgICAgICAgbV9pbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM7CiAgICAgICAgIGlmIChjYWxsZWUpIHsKICAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1l
LT5jYWxsZWVSZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGNhbGxlZSk7CiAgICAg
ICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCA9IGZhbHNlOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsID0g
dHJ1ZTsKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlciA9IGJ5dGVDb2Rl
UGFyc2VyLT5jdXJyZW50Q29kZU9yaWdpbigpOwotICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzLnJlc2l6ZVRvRml0KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsgLy8gU2V0
IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGluY2x1ZGluZyB0aGlzLCBidXQgZG9uJ3QgY29uZmln
dXJlIHRoZSB2YWx1ZSByZWNvdmVyaWVzLCB5ZXQuCisgICAgICAgIG1faW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMucmVzaXplVG9GaXQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4
VXApOyAvLyBTZXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgaW5jbHVkaW5nIHRoaXMsIGJ1dCBk
b24ndCBjb25maWd1cmUgdGhlIHZhbHVlIHJlY292ZXJpZXMsIHlldC4KICAgICAgICAgbV9pbmxp
bmVDYWxsRnJhbWUtPmtpbmQgPSBraW5kOwogICAgICAgICAKICAgICAgICAgbV9pZGVudGlmaWVy
UmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAK
aW5kZXggNzM0NWNkNDA2YzBhNTkyOTNjOWEyOTcyYmQ4N2I2NDU4ODVhMGJlNy4uYjU0OWQ4YmFl
Mjk0MDAxOGY0M2IxMWIzOGM3YThmYzE3M2Q4NTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTMzNSw3ICsz
MzUsNyBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgICAgICAgICAgLy8gR2V0TXlBcmd1bWVudEJ5VmFsIGluIHN1Y2ggc3RhdGljYWxseS1vdXQt
b2YtYm91bmRzIGFjY2Vzc2VzOyB3ZSBqdXN0IGxvc2UgQ0ZBIHVubGVzcwogICAgICAgICAgICAg
ICAgIC8vIEdDU0UgcmVtb3ZlcyB0aGUgYWNjZXNzIGVudGlyZWx5LgogICAgICAgICAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49
IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChpbmRleCA+PSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzIC0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBtX3N0YXRlLnZhcmlh
YmxlcygpLm51bWJlck9mQXJndW1lbnRzKCkgLSAxKQpAQCAtMzU2LDcgKzM1Niw3IEBAIGNsYXNz
IENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGluZGV4ICsgMSksIEZsdXNoZWRKU1Zh
bHVlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSAm
JiBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpICYmIGluZGV4IDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvR2V0U3RhY2so
ZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCmluZGV4IGU4YjQ1YzQ1
YTYyZmM0NDljMjE5Y2E0ZGFlZTRjZTFlNmRkZmNiODUuLjNjZGE2ODcyZTRjNzg0OTBiY2QwN2Q1
OWQ3ZjliOWVkOTgwNWM1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcApAQCAtMjQwLDcg
KzI0MCw3IEBAIHZvaWQgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjpleGVjdXRlTm9k
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9oZWFwLnNldChQcm9t
b3RlZEhlYXBMb2NhdGlvbihBcmd1bWVudHNDYWxsZWVQTG9jLCBub2RlKSwgY2FsbGVlKTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZBcmd1
bWVudHNUb1NraXA7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxOyAr
K2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7
IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsgKytp
KSB7CiAgICAgICAgICAgICBBdmFpbGFiaWxpdHkgYXJndW1lbnQgPSBtX2F2YWlsYWJpbGl0eS5t
X2xvY2Fscy5vcGVyYW5kKAogICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KGkpKTsKICAgICAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggYmQ3ODU3ZjlmZTcxZTFk
ZTBjYzc0NzZjODgzMzVlODViMzI5ZjBkNi4uM2I3M2ExMmMxMDlkODNmOTgwNTY5NThmMmE1OTVh
NWE4ZDYyNDI5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBA
IC0xMjMsNyArMTIzLDcgQEAgdm9pZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmUKICAgICAgICAgICAgICAg
ICBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBqaXQubW92
ZSgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVD
YWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpLAogICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5jcHAKaW5kZXggZjc2Y2NiODhiYjFlNGM3YTc3YTQ5NDZkNTc3ODg0Yzk3MjUwMjBhZS4u
NWE4Y2E0NzViZGMxMGFiYWJjZTA2ZTA5ZWE1ZjQzOGY5NTU2YWY5YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApA
QCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgICAgICBHUFJJbmZvOjpy
ZWdUMik7CiAKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQotICAg
ICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSwgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9y
KChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyksIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVy
KShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCkpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBqaXQuc3RvcmU2NChjYWxsZXJG
cmFtZUdQUiwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yQnl0ZU9mZnNldChpbmxpbmVDYWxs
RnJhbWUtPmNhbGxlckZyYW1lT2Zmc2V0KCkpKTsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25C
aXRzID0gQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4
IDA4ZDQzMjlmNDBlYTc0NzU5NTdkNjViOTBhMDFmNTQ2M2ZjOTcwY2MuLjIyY2QxZGJhYmRlMzAz
ZmRlY2ZlMGY4Zjg1YzQ0NDA2Y2NiYzBjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRMZW5ndGgoSW5saW5l
Q2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEdQUlJlZyBsZW5ndGhHUFIsIGJvb2wgaW5jbHVk
ZVRoaXMpCiB7CiAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5p
c1ZhcmFyZ3MoKSkKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gIWluY2x1ZGVUaGlzKSwgbGVuZ3RoR1BSKTsKKyAgICAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyAtICFpbmNsdWRlVGhpcyksIGxlbmd0aEdQUik7CiAgICAgZWxzZSB7CiAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBtX2ppdC5hcmd1
bWVudENvdW50KGlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6cGF5bG9hZEZvcihhcmd1bWVudENvdW50UmVnaXN0ZXIpLCBsZW5ndGhHUFIpOwpAQCAt
NjczMCw3ICs2NzMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVj
dEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAgIGJvb2wgbGVuZ3RoSXNLbm93bjsgLy8gaWYgZmFs
c2UsIGxlbmd0aEdQUiB3aWxsIGhhdmUgdGhlIGxlbmd0aC4KICAgICBpZiAobm9kZS0+b3JpZ2lu
LnNlbWFudGljLmlubGluZUNhbGxGcmFtZQogICAgICAgICAmJiAhbm9kZS0+b3JpZ2luLnNlbWFu
dGljLmlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKLSAgICAgICAga25vd25MZW5ndGgg
PSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgp
IC0gMTsKKyAgICAgICAga25vd25MZW5ndGggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIDE7CiAgICAgICAgIGxlbmd0
aElzS25vd24gPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGtub3duTGVuZ3RoID0gVUlO
VF9NQVg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
aW5kZXggODM0OWM1ZTBmZjA3ZmIwYjRjZmMwMDNiNmU4Mjk5NGVmNzkwZjhjMy4uMTVhOTk2MGU4
ZGU0NDUyNTk4MjNjMDUzZDg5NjQwZTEzZDQ4NGFiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMzY4Miw3ICszNjgyLDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBsaW1pdDsKICAgICAgICAg
aWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAg
ICAgICAgICAgIGxpbWl0ID0gbV9vdXQuY29uc3RJbnQzMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCkgLSAxKTsKKyAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuY29uc3RJbnQzMihp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRSZWdpc3Rl
ciA9IEFzc2VtYmx5SGVscGVyczo6YXJndW1lbnRDb3VudChpbmxpbmVDYWxsRnJhbWUpOwogICAg
ICAgICAgICAgbGltaXQgPSBtX291dC5zdWIobV9vdXQubG9hZDMyKHBheWxvYWRGb3IoYXJndW1l
bnRDb3VudFJlZ2lzdGVyKSksIG1fb3V0LmludDMyT25lKTsKQEAgLTM3MDUsNyArMzcwNSw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIAogICAgICAgICBUeXBlZFBvaW50ZXIgYmFz
ZTsKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkgewotICAgICAgICAgICAgaWYgKGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSA+IDEpCisgICAgICAgICAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+IDEpCiAgICAgICAgICAgICAg
ICAgYmFzZSA9IGFkZHJlc3NGb3IoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbMV0udmlydHVh
bFJlZ2lzdGVyKCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGJhc2UgPSBhZGRyZXNz
Rm9yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEpKTsKQEAgLTk1NjgsNyArOTU2OCw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIEFyZ3VtZW50c0xlbmd0aCBsZW5ndGg7CiAK
ICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFy
Z3MoKSkgewotICAgICAgICAgICAgbGVuZ3RoLmtub3duID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgIGxlbmd0aC5rbm93biA9IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAgICAgbGVuZ3Ro
LmlzS25vd24gPSB0cnVlOwogICAgICAgICAgICAgbGVuZ3RoLnZhbHVlID0gbV9vdXQuY29uc3RJ
bnQzMihsZW5ndGgua25vd24pOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggMTk0MGEwOGJmYTEwODk1YjFiNjk3ZjFj
MzUwYTU5YTdjN2FmNDIzOC4uMDFiNWI0NjQxYWIzNTI3Y2MzY2M4MGExM2ViYjUxOGQxOTM4NzMy
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC0y
ODgsNyArMjg4LDcgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TWF0ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBhcmd1bWVudENvdW50ID0gbWF0ZXJp
YWxpemF0aW9uLT5vcmlnaW4oKS5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7Cisg
ICAgICAgICAgICBhcmd1bWVudENvdW50ID0gbWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5pbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogICAgICAgICBSRUxFQVNF
X0FTU0VSVChhcmd1bWVudENvdW50KTsKICAgICAgICAgCiAgICAgICAgIEpTRnVuY3Rpb24qIGNh
bGxlZSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IDE3NWZmZjMxYmFmM2ExYTM3ZDQ5YjZlMWMzZTAzNmY2
MTNlYzUwZjQuLjg1ZDE0N2E0N2M3ZjE5NWFhNjNhMmIyZTU3YTQ2NzYyM2RiNmJiZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3Bw
CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBTdGFja1Zpc2l0b3I6OnJlYWRJbmxpbmVkRnJhbWUo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVPcmlnaW4qIGNvZGVPcmlnaW4KICAgICAgICAgaWYg
KGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lzdGVyLmlzVmFsaWQoKSkKICAgICAg
ICAgICAgIG1fZnJhbWUubV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFtZS0+
cihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3Rlci5vZmZzZXQoKSkudW5ib3hl
ZEludDMyKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZnJhbWUubV9hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAg
ICAgICAgICAgIG1fZnJhbWUubV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgIG1fZnJhbWUubV9j
b2RlQmxvY2sgPSBpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpOwogICAg
ICAgICBtX2ZyYW1lLm1fYnl0ZWNvZGVPZmZzZXQgPSBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA5
MzhiZDFlM2YwZDBjMTMwZmEyMzdmZGM2N2ZlMmU1ZDM3ZTA3ZDA2Li5lMjAxOTU1MDFiMDI3Njky
ZDNhZDcyNjI1Nzg1MDA1NTk4Y2UwNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgKQEAgLTEyMjAsNyArMTIyMCw3IEBAIGNsYXNzIEFzc2VtYmx5SGVs
cGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgewogICAgICAgICBpZiAoIWlubGlu
ZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
Ojphcmd1bWVudE9mZnNldCgwKSk7Ci0gICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCkgPD0gMSkKKyAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPD0gMSkKICAgICAgICAgICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbCgwKTsKICAgICAgICAgVmFsdWVSZWNvdmVyeSByZWNvdmVyeSA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzWzFdOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWNvdmVyeS50
ZWNobmlxdWUoKSA9PSBEaXNwbGFjZWRJbkpTU3RhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcAppbmRleCAwZjk2MWE2NjFmYjI0NzQ0Mjkw
ZTIyZGY2MTdhYmIyN2U1ZTRjZTIwLi45ZDMwYjNmMDg3MGRlMTAwYWUxOTYzMTZiYWYyNTM3NmY0
ZTNiYjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJn
c0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJnc0Zy
YW1lLmNwcApAQCAtMTIxLDEwICsxMjEsOSBAQCB2b2lkIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZh
c3RDYXNlKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBudW1Vc2VkU2xvdAogICAg
ICAgICAgICAgYXJndW1lbnRDb3VudFJlY292ZXJ5ID0gVmFsdWVSZWNvdmVyeTo6ZGlzcGxhY2Vk
SW5KU1N0YWNrKAogICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dFJlZ2lzdGVyLCBEYXRhRm9ybWF0SW50MzIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgYXJndW1lbnRDb3VudFJlY292ZXJ5ID0gVmFsdWVSZWNvdmVyeTo6Y29uc3RhbnQoCi0gICAg
ICAgICAgICAgICAganNOdW1iZXIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSk7
CisgICAgICAgICAgICBhcmd1bWVudENvdW50UmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5Ojpjb25z
dGFudChqc051bWJlcihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKSA+IDEpCisgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzID4gMSkKICAgICAgICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50c1sxXS52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgZmlyc3RBcmd1bWVudFJlZyA9IFZpcnR1YWxSZWdpc3RlcigwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCmluZGV4IGYw
OTc4OGI3NWYzNWVjM2U4YjZlZThiZGRkZWE4NGYxM2FiOTNjZDQuLjNmYWM0YTEyN2I3ZmZiNDBj
MGY1ODUxMTJmMDg2ODM1ZGIwMGJhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIENsb25lZEFy
Z3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVXaXRoSW5saW5lRnJhbWUoRXhlY1N0YXRl
KiBteUZyYW1lLCBFeGVjCiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50UmVnaXN0ZXIuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIGxlbmd0aCA9IHRhcmdl
dEZyYW1lLT5yKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lzdGVyKS51bmJveGVk
SW50MzIoKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsZW5ndGggPSBpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7CisgICAgICAgICAgICAgICAgbGVuZ3RoID0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKICAgICAgICAgICAg
IGxlbmd0aC0tOwogICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlRW1wdHkobXlGcmFtZSwgY2Fs
bGVlLCBsZW5ndGgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318270</attachid>
            <date>2017-08-16 10:25:10 -0700</date>
            <delta_ts>2017-08-16 11:40:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175523-20170817022508.patch</filename>
            <type>text/plain</type>
            <size>33247</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NjgwNTUzMzQ5ZGRlOTRhMGVkNGZmYjNjOTU5MjU5YmI5OWU5MmFiLi5lODliNDYwNDQ2NjllNGNk
YjA5NjEwYTM4ZTViMDVlYWJhMTg3ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxNy0wOC0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVD
YWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OmR1bXBJbkNvbnRl
eHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oOgorICAgICAg
ICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OklubGluZUNhbGxGcmFtZSk6CisgICAgICAgICogZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAg
ICAgICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdENv
ZGVUb0dldEFyZ3VtZW50c0FycmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpmaW5kQXJndW1l
bnRQb3NpdGlvbkZvckxvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
Z2V0QXJndW1lbnRDb3VudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omlu
bGluaW5nQ29zdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNh
bGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5l
U3RhY2tFbnRyeSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6
CisgICAgICAgICogZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkxvY2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3VsYXRvcjo6ZXhlY3V0ZU5v
ZGUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpP
U1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZy
YW1lcyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldExlbmd0aCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMpOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzTGVuZ3RoKToKKyAgICAgICAgKiBmdGwv
RlRMT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uTWF0ZXJpYWxp
emVPYmplY3RJbk9TUik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpyZWFkSW5saW5lZEZyYW1lKToKKyAgICAgICAg
KiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
YXJndW1lbnRzU3RhcnQpOgorICAgICAgICAqIGppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHA6Cisg
ICAgICAgIChKU0M6OmVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50
czo6Y3JlYXRlV2l0aElubGluZUZyYW1lKToKKwogMjAxNy0wOC0xMiAgQ3NhYmEgT3N6dHJvZ29u
w6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtBUk02NF0gVXNlIHgyOSBhbmQgeDMw
IGluc3RlYWQgb2YgZnAgYW5kIGxyIHRvIG1ha2UgR0NDIGhhcHB5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCmluZGV4IDk3Y2U4NGQ2
MzU4MzAzMjA4Y2YwNjBlM2M1YzZhYmQzNmU2MjdmNjEuLjk2YzA5OTcwMTIyMjBhNWY1YmQ1YmNh
OTdiMGU4OTM4YmM2YjE4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCkBAIC03NCw3ICs3NCw4IEBAIHZvaWQgSW5saW5lQ2Fs
bEZyYW1lOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250
ZXh0KSBjb25zCiAgICAgICAgIG91dC5wcmludCgiLCBjbG9zdXJlIGNhbGwiKTsKICAgICBlbHNl
CiAgICAgICAgIG91dC5wcmludCgiLCBrbm93biBjYWxsZWU6ICIsIGluQ29udGV4dChjYWxsZWVS
ZWNvdmVyeS5jb25zdGFudCgpLCBjb250ZXh0KSk7Ci0gICAgb3V0LnByaW50KCIsIG51bUFyZ3Mr
dGhpcyA9ICIsIGFyZ3VtZW50cy5zaXplKCkpOworICAgIG91dC5wcmludCgiLCBudW1BcmdzK3Ro
aXMgPSAiLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgb3V0LnByaW50KCIsIG51
bVBhcmFtcyt0aGlzID0gIiwgYXJndW1lbnRzLnNpemUoKSk7CiAgICAgb3V0LnByaW50KCIsIHN0
YWNrT2Zmc2V0ID0gIiwgc3RhY2tPZmZzZXQpOwogICAgIG91dC5wcmludCgiICgiLCB2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbCgwKSwgIiBtYXBzIHRvICIsIHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KDApICsgc3RhY2tPZmZzZXQsICIpPiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCmluZGV4IGJlMWFmZGIxOTY3OWQ0N2EwYTBjYTVj
YWVhY2Q1ZTI1MWU5YThjNTYuLjkyMWFmNjQ4OWM0YTE2ZGViMjVmMTU2OWQzNzJhYjlhYjcwMmMy
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxs
RnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmgKQEAgLTE4MCw2ICsxODAsNyBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICBW
YWx1ZVJlY292ZXJ5IGNhbGxlZVJlY292ZXJ5OwogICAgIENvZGVPcmlnaW4gZGlyZWN0Q2FsbGVy
OwogCisgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgc2lnbmVk
IHN0YWNrT2Zmc2V0IDogMjg7CiAgICAgdW5zaWduZWQga2luZCA6IDM7IC8vIHJlYWwgdHlwZSBp
cyBLaW5kCiAgICAgYm9vbCBpc0Nsb3N1cmVDYWxsIDogMTsgLy8gSWYgZmFsc2UgdGhlbiB3ZSBr
bm93IHRoYXQgY2FsbGVlL3Njb3BlIGFyZSBjb25zdGFudHMgYW5kIHRoZSBERkcgd29uJ3QgdHJl
YXQgdGhlbSBhcyB2YXJpYWJsZXMsIGkuZS4gdGhleSBoYXZlIHRvIGJlIHJlY292ZXJlZCBtYW51
YWxseS4KQEAgLTE4OSw3ICsxOTAsOCBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICAv
LyBJbmxpbmVDYWxsRnJhbWUncyBmaWVsZHMuIFRoaXMgY29uc3RydWN0b3IgaXMgaGVyZSBqdXN0
IHRvIHJlZHVjZSBjb25mdXNpb24gaWYKICAgICAvLyB3ZSBmb3Jnb3QgdG8gaW5pdGlhbGl6ZSBl
eHBsaWNpdGx5LgogICAgIElubGluZUNhbGxGcmFtZSgpCi0gICAgICAgIDogc3RhY2tPZmZzZXQo
MCkKKyAgICAgICAgOiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygwKQorICAgICAgICAsIHN0
YWNrT2Zmc2V0KDApCiAgICAgICAgICwga2luZChDYWxsKQogICAgICAgICAsIGlzQ2xvc3VyZUNh
bGwoZmFsc2UpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGI5M2RlYmM5MmNiMmUyNWNi
Y2RkMWVlZWU0NjkxYWQ3MWViYzc4NzYuLmYzYTU4NzI3M2EwOWYyMzE1YmEzYTUwZjg1ZjM5NGI5
ZmY1ZjJlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE3MzEsNyArMTczMSw3IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHVuc2lnbmVkIGFy
Z3VtZW50SW5kZXggPSBpbmRleC5hc1VJbnQzMigpICsgbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNU
b1NraXAoKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoYXJndW1lbnRJbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUo
KSAtIDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRJbmRleCA8IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkgPSBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCiAgICAgICAg
ICAgICAgICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudEluZGV4
ICsgMSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAg
ICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKQEAgLTE3NTAsNyArMTc1MCw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgYm91bmQg
b24gdGhlIHR5cGVzIGV2ZW4gdGhvdWdoIGl0J3MgcmFuZG9tIGFjY2Vzcy4gVGFrZSBhZHZhbnRh
Z2Ugb2YgdGhpcy4KICAgICAgICAgICAgIAogICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSByZXN1
bHQ7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgbm9kZS0+bnVtYmVyT2ZBcmd1
bWVudHNUb1NraXAoKTsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgbm9kZS0+bnVtYmVyT2ZBcmd1
bWVudHNUb1NraXAoKTsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXM7ICsraSkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5tZXJnZSgKICAgICAgICAgICAg
ICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAogICAgICAgICAgICAgICAgICAg
ICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCBjM2NmODI5ZGVjZTJkNTI3Mzkx
MDk4MjZiZThjMWMxOTAyOThmMGIwLi42MGEzNDNkMzcyYTc4MTNmYzNmNTc4OWU5YzNkZTI0MjFj
NTk0ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50
c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTcwMCw3ICs3MDAsNyBAQCBjbGFzcyBB
cmd1bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYWZlVG9HZXRTdGFjazsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2FmZVRvR2V0U3RhY2sgPSBpbmRleCA8IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fm
ZVRvR2V0U3RhY2sgPSBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2FmZVRvR2V0U3RhY2sgPQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2soKS0+bnVt
UGFyYW1ldGVycygpKSAtIDE7CkBAIC04MDUsNyArODA1LDcgQEAgY2xhc3MgQXJndW1lbnRzRWxp
bWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChzcHJlYWQtPm9wKCkgPT0gUGhhbnRvbVNwcmVhZCAmJiBzcHJlYWQtPmNo
aWxkMSgpLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSBzcHJlYWQtPmNo
aWxkMSgpLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHNwcmVhZC0+Y2hp
bGQxKCktPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZnJhbWVBcmd1bWVudENvdW50ID49IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lQXJndW1lbnRDb3Vu
dCAtIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKQEAgLTgzNCw3ICs4MzQsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5h
dGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChzcHJlYWQtPm9wKCkgPT0gUGhhbnRvbVNwcmVhZCAmJiBzcHJlYWQtPmNo
aWxkMSgpLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gc3ByZWFk
LT5jaGlsZDEoKS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gc3By
ZWFkLT5jaGlsZDEoKS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9
IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmcmFtZUFyZ3VtZW50Q291bnQgPSBpbmxpbmVD
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbG9hZEluZGV4ID0gbnVtYmVyT2ZB
cmd1bWVudHNUb1NraXA7IGxvYWRJbmRleCA8IGZyYW1lQXJndW1lbnRDb3VudDsgKytsb2FkSW5k
ZXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgcmVnID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQobG9hZEluZGV4ICsgMSkgKyBp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFN0YWNrQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdGFja0FjY2Vz
c0RhdGEuYWRkKHJlZywgRmx1c2hlZEpTVmFsdWUpOwpAQCAtODg3LDcgKzg4Nyw3IEBAIGNsYXNz
IEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4gdmFyYXJnc0RhdGEtPm9mZnNldCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
LT0gdmFyYXJnc0RhdGEtPm9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CkBAIC05MDksNyArOTA5LDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiB2
YWx1ZSA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb2FkSW5kZXggPSBzdG9yZUluZGV4ICsgdmFyYXJnc0RhdGEtPm9mZnNldDsKIAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRJbmRleCArIDEgPCBpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChsb2FkSW5kZXggKyAxIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChs
b2FkSW5kZXggKyAxKSArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQ7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0gbV9n
cmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5hZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlZywgRmx1c2hlZEpTVmFsdWUpOwpAQCAtMTAzMiw3ICsxMDMyLDcg
QEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzcHJlYWQtPmNoaWxkMSgpLT5vcCgp
ID09IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBzcHJlYWQtPmNoaWxkMSgpLT5vcmln
aW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IHNwcmVhZC0+Y2hpbGQxKCkt
Pm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsr
aSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRh
KiBkYXRhID0gbV9ncmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5hZGQoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkgKyBp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZsdXNoZWRKU1ZhbHVlKTsKQEAgLTEwNjksNyArMTA2OSw3IEBAIGNsYXNz
IEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBjYW5kaWRhdGUt
Pm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPE5vZGUqPiBhcmd1bWVudHM7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIHZhcmFyZ3NE
YXRhLT5maXJzdFZhckFyZ09mZnNldDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMSArIHZhcmFyZ3NEYXRhLT5maXJzdFZhckFyZ09mZnNldDsgaSA8IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTdGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RhY2tBY2Nl
c3NEYXRhLmFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsdXNoZWRKU1ZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcApp
bmRleCAwNjFhMjg0Y2Y1ZDQ5N2M5NTk4N2U5ZjYzMDU2ZTVlOTc0M2Q2ZGQxLi42Y2VkNDU4MTBj
OTJlMGNkOWIzMzMyYWFmOTQ3OTZjZmRiNjdjOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCkBAIC03NCw3ICs3NCw3IEBA
IE5vZGUqIGVtaXRDb2RlVG9HZXRBcmd1bWVudHNBcnJheUxlbmd0aCgKICAgICAgICAgbnVtYmVy
T2ZBcmd1bWVudHNUb1NraXAgPSBhcmd1bWVudHMtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7
CiAgICAgCiAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1Zh
cmFyZ3MoKSkgewotICAgICAgICB1bnNpZ25lZCBhcmd1bWVudHNTaXplID0gaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgdW5zaWduZWQgYXJndW1lbnRzU2l6
ZSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAg
ICAgICBpZiAoYXJndW1lbnRzU2l6ZSA+PSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCkKICAgICAg
ICAgICAgIGFyZ3VtZW50c1NpemUgLT0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAg
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKaW5kZXggYjY4YjVhZjBhZTg2MWY1NWFmYWVhMTlhZWNjNzg4YzkwOTNkY2JlMS4uMDlmZjky
OTI3NTZjMmJlNWNlZWUzNDM0ZjJiYzhmZjM5NDVlNWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTU3MCw3ICs1NzAsNyBAQCBj
bGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpID49IHN0YXRpY19jYXN0PGlu
dD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50
T2Zmc2V0KCkgKyBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKQorICAgICAgICAg
ICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPj0gc3RhdGljX2Nhc3Q8aW50PihpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSArIGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gVmlydHVhbFJlZ2lzdGVyKG9w
ZXJhbmQub2Zmc2V0KCkgLSBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0FyZ3VtZW50
KCk7CiAgICAgICAgICAgICByZXR1cm4gc3RhY2stPm1fYXJndW1lbnRQb3NpdGlvbnNbYXJndW1l
bnRdOwpAQCAtMTEwOSw2ICsxMTA5LDggQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAg
ICBJbmxpbmVDYWxsRnJhbWUqIG1faW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAKICAgICAgICAg
U2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSgpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5vd25l
clNjcmlwdEV4ZWN1dGFibGUoKTsgfQorCisgICAgICAgIGludCBtX2FyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzOwogICAgICAgICAKICAgICAgICAgUXVlcnlhYmxlRXhpdFByb2ZpbGUgbV9leGl0
UHJvZmlsZTsKICAgICAgICAgCkBAIC0xNDEzLDcgKzE0MTUsNyBAQCBOb2RlKiBCeXRlQ29kZVBh
cnNlcjo6Z2V0QXJndW1lbnRDb3VudCgpCiAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5t
X2lubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCiAgICAgICAgICAgICBhcmd1bWVudENvdW50
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBqc0NvbnN0YW50KG1fZ3Jh
cGguZnJlZXplKGpzTnVtYmVyKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHMuc2l6ZSgpKSktPnZhbHVlKCkpOworICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9
IGpzQ29uc3RhbnQobV9ncmFwaC5mcmVlemUoanNOdW1iZXIobV9pbmxpbmVTdGFja1RvcC0+bV9p
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSktPnZhbHVlKCkpOwog
ICAgIH0gZWxzZQogICAgICAgICBhcmd1bWVudENvdW50ID0gYWRkVG9HcmFwaChHZXRBcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgT3BJbmZvKDApLCBPcEluZm8oU3BlY0ludDMyT25seSkpOwog
ICAgIHJldHVybiBhcmd1bWVudENvdW50OwpAQCAtMTQyNyw2ICsxNDI5LDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6ZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEkKIAogdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChD
YWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ2FsbE1v
ZGUgY2FsbE1vZGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKTsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBzcGVjaWFsaXphdGlvbktp
bmRGb3IoY2FsbE1vZGUpOwogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJDb25z
aWRlcmluZyBpbmxpbmluZyAiLCBjYWxsZWUsICIgaW50byAiLCBjdXJyZW50Q29kZU9yaWdpbigp
LCAiXG4iKTsKQEAgLTE0NTgsMTUgKzE0NjEsNiBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6
aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQog
ICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogCi0gICAgLy8gRG9lcyB0aGUgbnVtYmVy
IG9mIGFyZ3VtZW50cyB3ZSdyZSBwYXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0
PyBXZSBjdXJyZW50bHkKLSAgICAvLyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3Vt
ZW50cyBwYXNzZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKLSAgICAv
LyBhcmd1bWVudHMgZXhwZWN0ZWQuCi0gICAgaWYgKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
ID4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCi0g
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNo
LlxuIik7Ci0gICAgICAgIHJldHVybiBVSU5UX01BWDsKLSAgICB9Ci0KICAgICBDYXBhYmlsaXR5
TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwo
CiAgICAgICAgIGNvZGVCbG9jaywga2luZCwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CiAgICAg
aWYgKHZlcmJvc2UpIHsKQEAgLTE1NDYsOCArMTU0MCwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2Fs
bFZhcgogICAgIGluc2VydENoZWNrcyhjb2RlQmxvY2spOwogCiAgICAgLy8gRklYTUU6IERvbid0
IGZsdXNoIGNvbnN0YW50cyEKKworICAgIGludCBhcml0eUZpeFVwQ291bnQgPSBzdGQ6Om1heDxp
bnQ+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIDApOwogICAgIAotICAgIGludCBpbmxpbmVDYWxsRnJhbWVTdGFydCA9IG1faW5saW5lU3Rh
Y2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQpKS5vZmZz
ZXQoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOworICAgIGludCBpbmxpbmVD
YWxsRnJhbWVTdGFydCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVn
aXN0ZXIocmVnaXN0ZXJPZmZzZXQgLSBhcml0eUZpeFVwQ291bnQpKS5vZmZzZXQoKSArIENhbGxG
cmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwogICAgIAogICAgIGVuc3VyZUxvY2FscygKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZVN0YXJ0KS50b0xvY2FsKCkgKyAx
ICsKQEAgLTE1NjIsMTIgKzE1NTgsMjIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2Fs
bChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIKICAgICBW
YXJpYWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlhYmxlID0gbnVsbHB0cjsKICAgICBpZiAoY2Fs
bGVlLmlzQ2xvc3VyZUNhbGwoKSkgewogICAgICAgICBOb2RlKiBjYWxsZWVTZXQgPSBzZXQoCi0g
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWVTbG90
OjpjYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQpOworICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyKChyZWdpc3Rlck9mZnNldCAtIGFyaXR5Rml4VXBDb3VudCkgKyBD
YWxsRnJhbWVTbG90OjpjYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQp
OwogICAgICAgICAKICAgICAgICAgY2FsbGVlVmFyaWFibGUgPSBjYWxsZWVTZXQtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpOwogICAgICAgICBjYWxsZWVWYXJpYWJsZS0+bWVyZ2VTaG91bGROZXZlclVu
Ym94KHRydWUpOwogICAgIH0KICAgICAKKyAgICBpZiAoYXJpdHlGaXhVcENvdW50KSB7CisgICAg
ICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
czsgKytpbmRleCkgeworICAgICAgICAgICAgTm9kZSogYXJndW1lbnQgPSBnZXQodmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoaW5kZXgsIHJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICBz
ZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaW5kZXgsIChyZWdpc3Rlck9mZnNldCAtIGFy
aXR5Rml4VXBDb3VudCkpLCBhcmd1bWVudCwgSW1tZWRpYXRlTmFrZWRTZXQpOworICAgICAgICB9
CisgICAgICAgIE5vZGUqIHVuZGVmaW5lZCA9IGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZv
KG1fY29uc3RhbnRVbmRlZmluZWQpKTsKKyAgICAgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRl
eCA8IGFyaXR5Rml4VXBDb3VudDsgKytpbmRleCkKKyAgICAgICAgICAgIHNldCh2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIGluZGV4LCAocmVn
aXN0ZXJPZmZzZXQgLSBhcml0eUZpeFVwQ291bnQpKSwgdW5kZWZpbmVkLCBJbW1lZGlhdGVOYWtl
ZFNldCk7CisgICAgfQorCiAgICAgSW5saW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFja0VudHJ5KAog
ICAgICAgICB0aGlzLCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgbV9ncmFwaC5sYXN0QmxvY2soKSwg
Y2FsbGVlLmZ1bmN0aW9uKCksIHJlc3VsdFJlZywKICAgICAgICAgKFZpcnR1YWxSZWdpc3Rlcilp
bmxpbmVDYWxsRnJhbWVTdGFydCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtpbmQpOwpA
QCAtNDI3OSw3ICs0Mjg1LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZCBsaW1pdCkKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gdGhpcy0+aW5saW5lQ2FsbEZyYW1lKCk7CiAgICAgICAgICAgICBOb2RlKiBsZW5ndGg7CiAg
ICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRzTGVuZ3RoID0gaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICB1bnNp
Z25lZCBhcmd1bWVudHNMZW5ndGggPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzIC0gMTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1QYXJhbXNUb1NraXAg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOwogICAgICAgICAgICAgICAg
IEpTVmFsdWUgcmVzdExlbmd0aDsKICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzTGVuZ3Ro
IDw9IG51bVBhcmFtc1RvU2tpcCkKQEAgLTU3MTQsNyArNTcyMCw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiBhcmd1
bWVudDsKICAgICAgICAgICAgIGludDMyX3QgYXJndW1lbnRJbmRleEluY2x1ZGluZ1RoaXMgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewotICAgICAgICAgICAg
ICAgIGludDMyX3QgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50cy5zaXplKCk7CisgICAgICAgICAgICAgICAgaW50MzJfdCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM7CiAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50SW5kZXhJbmNsdWRpbmdUaGlzIDwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCiAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0g
Z2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50SW5kZXhJbmNsdWRpbmdUaGlz
KSk7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtNTk1Myw2ICs1OTU5LDcgQEAgQnl0ZUNvZGVQ
YXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgOiBtX2J5dGVD
b2RlUGFyc2VyKGJ5dGVDb2RlUGFyc2VyKQogICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQog
ICAgICwgbV9wcm9maWxlZEJsb2NrKHByb2ZpbGVkQmxvY2spCisgICAgLCBtX2FyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQogICAgICwgbV9jYWxs
c2l0ZUJsb2NrSGVhZChjYWxsc2l0ZUJsb2NrSGVhZCkKICAgICAsIG1fcmV0dXJuVmFsdWUocmV0
dXJuVmFsdWVWUikKICAgICAsIG1fZGlkUmV0dXJuKGZhbHNlKQpAQCAtNTk3NCw4ICs1OTgxLDkg
QEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAg
ICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgbV9hcmd1bWVudFBvc2l0aW9ucy5yZXNpemUoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgeworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpc1dpdGhGaXhVcCA9IHN0ZDo6bWF4PGludD4oYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICBtX2FyZ3VtZW50UG9zaXRpb25z
LnJlc2l6ZShhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXhVcCk7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXhVcDsgKytpKSB7
CiAgICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuYXBw
ZW5kKEFyZ3VtZW50UG9zaXRpb24oKSk7CiAgICAgICAgIEFyZ3VtZW50UG9zaXRpb24qIGFyZ3Vt
ZW50UG9zaXRpb24gPSAmYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9u
cy5sYXN0KCk7CiAgICAgICAgIG1fYXJndW1lbnRQb3NpdGlvbnNbaV0gPSBhcmd1bWVudFBvc2l0
aW9uOwpAQCAtNTk5MywxMyArNjAwMSwxNCBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tF
bnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4KICAgICAg
ICAgbV9pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLnNldFdpdGhvdXRXcml0ZUJh
cnJpZXIoY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CiAgICAgICAgIG1faW5saW5lQ2Fs
bEZyYW1lLT5zZXRTdGFja09mZnNldChpbmxpbmVDYWxsRnJhbWVTdGFydC5vZmZzZXQoKSAtIENh
bGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKTsKKyAgICAgICAgbV9pbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM7CiAgICAgICAgIGlmIChjYWxsZWUpIHsKICAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1l
LT5jYWxsZWVSZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGNhbGxlZSk7CiAgICAg
ICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCA9IGZhbHNlOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsID0g
dHJ1ZTsKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlciA9IGJ5dGVDb2Rl
UGFyc2VyLT5jdXJyZW50Q29kZU9yaWdpbigpOwotICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzLnJlc2l6ZVRvRml0KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsgLy8gU2V0
IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGluY2x1ZGluZyB0aGlzLCBidXQgZG9uJ3QgY29uZmln
dXJlIHRoZSB2YWx1ZSByZWNvdmVyaWVzLCB5ZXQuCisgICAgICAgIG1faW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMucmVzaXplVG9GaXQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4
VXApOyAvLyBTZXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgaW5jbHVkaW5nIHRoaXMsIGJ1dCBk
b24ndCBjb25maWd1cmUgdGhlIHZhbHVlIHJlY292ZXJpZXMsIHlldC4KICAgICAgICAgbV9pbmxp
bmVDYWxsRnJhbWUtPmtpbmQgPSBraW5kOwogICAgICAgICAKICAgICAgICAgbV9pZGVudGlmaWVy
UmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAK
aW5kZXggNzM0NWNkNDA2YzBhNTkyOTNjOWEyOTcyYmQ4N2I2NDU4ODVhMGJlNy4uYjU0OWQ4YmFl
Mjk0MDAxOGY0M2IxMWIzOGM3YThmYzE3M2Q4NTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTMzNSw3ICsz
MzUsNyBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgICAgICAgICAgLy8gR2V0TXlBcmd1bWVudEJ5VmFsIGluIHN1Y2ggc3RhdGljYWxseS1vdXQt
b2YtYm91bmRzIGFjY2Vzc2VzOyB3ZSBqdXN0IGxvc2UgQ0ZBIHVubGVzcwogICAgICAgICAgICAg
ICAgIC8vIEdDU0UgcmVtb3ZlcyB0aGUgYWNjZXNzIGVudGlyZWx5LgogICAgICAgICAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49
IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChpbmRleCA+PSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzIC0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBtX3N0YXRlLnZhcmlh
YmxlcygpLm51bWJlck9mQXJndW1lbnRzKCkgLSAxKQpAQCAtMzU2LDcgKzM1Niw3IEBAIGNsYXNz
IENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGluZGV4ICsgMSksIEZsdXNoZWRKU1Zh
bHVlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSAm
JiBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpICYmIGluZGV4IDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvR2V0U3RhY2so
ZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCmluZGV4IGU4YjQ1YzQ1
YTYyZmM0NDljMjE5Y2E0ZGFlZTRjZTFlNmRkZmNiODUuLjNjZGE2ODcyZTRjNzg0OTBiY2QwN2Q1
OWQ3ZjliOWVkOTgwNWM1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcApAQCAtMjQwLDcg
KzI0MCw3IEBAIHZvaWQgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjpleGVjdXRlTm9k
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9oZWFwLnNldChQcm9t
b3RlZEhlYXBMb2NhdGlvbihBcmd1bWVudHNDYWxsZWVQTG9jLCBub2RlKSwgY2FsbGVlKTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZBcmd1
bWVudHNUb1NraXA7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxOyAr
K2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7
IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsgKytp
KSB7CiAgICAgICAgICAgICBBdmFpbGFiaWxpdHkgYXJndW1lbnQgPSBtX2F2YWlsYWJpbGl0eS5t
X2xvY2Fscy5vcGVyYW5kKAogICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KGkpKTsKICAgICAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggYmQ3ODU3ZjlmZTcxZTFk
ZTBjYzc0NzZjODgzMzVlODViMzI5ZjBkNi4uM2I3M2ExMmMxMDlkODNmOTgwNTY5NThmMmE1OTVh
NWE4ZDYyNDI5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBA
IC0xMjMsNyArMTIzLDcgQEAgdm9pZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmUKICAgICAgICAgICAgICAg
ICBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBqaXQubW92
ZSgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVD
YWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpLAogICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5jcHAKaW5kZXggZjc2Y2NiODhiYjFlNGM3YTc3YTQ5NDZkNTc3ODg0Yzk3MjUwMjBhZS4u
NWE4Y2E0NzViZGMxMGFiYWJjZTA2ZTA5ZWE1ZjQzOGY5NTU2YWY5YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApA
QCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgICAgICBHUFJJbmZvOjpy
ZWdUMik7CiAKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQotICAg
ICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSwgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9y
KChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyksIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVy
KShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCkpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBqaXQuc3RvcmU2NChjYWxsZXJG
cmFtZUdQUiwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yQnl0ZU9mZnNldChpbmxpbmVDYWxs
RnJhbWUtPmNhbGxlckZyYW1lT2Zmc2V0KCkpKTsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25C
aXRzID0gQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4
IDA4ZDQzMjlmNDBlYTc0NzU5NTdkNjViOTBhMDFmNTQ2M2ZjOTcwY2MuLjIyY2QxZGJhYmRlMzAz
ZmRlY2ZlMGY4Zjg1YzQ0NDA2Y2NiYzBjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRMZW5ndGgoSW5saW5l
Q2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEdQUlJlZyBsZW5ndGhHUFIsIGJvb2wgaW5jbHVk
ZVRoaXMpCiB7CiAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5p
c1ZhcmFyZ3MoKSkKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gIWluY2x1ZGVUaGlzKSwgbGVuZ3RoR1BSKTsKKyAgICAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyAtICFpbmNsdWRlVGhpcyksIGxlbmd0aEdQUik7CiAgICAgZWxzZSB7CiAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBtX2ppdC5hcmd1
bWVudENvdW50KGlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6cGF5bG9hZEZvcihhcmd1bWVudENvdW50UmVnaXN0ZXIpLCBsZW5ndGhHUFIpOwpAQCAt
NjczMCw3ICs2NzMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVj
dEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAgIGJvb2wgbGVuZ3RoSXNLbm93bjsgLy8gaWYgZmFs
c2UsIGxlbmd0aEdQUiB3aWxsIGhhdmUgdGhlIGxlbmd0aC4KICAgICBpZiAobm9kZS0+b3JpZ2lu
LnNlbWFudGljLmlubGluZUNhbGxGcmFtZQogICAgICAgICAmJiAhbm9kZS0+b3JpZ2luLnNlbWFu
dGljLmlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKLSAgICAgICAga25vd25MZW5ndGgg
PSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgp
IC0gMTsKKyAgICAgICAga25vd25MZW5ndGggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIDE7CiAgICAgICAgIGxlbmd0
aElzS25vd24gPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGtub3duTGVuZ3RoID0gVUlO
VF9NQVg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
aW5kZXggODM0OWM1ZTBmZjA3ZmIwYjRjZmMwMDNiNmU4Mjk5NGVmNzkwZjhjMy4uMTVhOTk2MGU4
ZGU0NDUyNTk4MjNjMDUzZDg5NjQwZTEzZDQ4NGFiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMzY4Miw3ICszNjgyLDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBsaW1pdDsKICAgICAgICAg
aWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAg
ICAgICAgICAgIGxpbWl0ID0gbV9vdXQuY29uc3RJbnQzMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCkgLSAxKTsKKyAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuY29uc3RJbnQzMihp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRSZWdpc3Rl
ciA9IEFzc2VtYmx5SGVscGVyczo6YXJndW1lbnRDb3VudChpbmxpbmVDYWxsRnJhbWUpOwogICAg
ICAgICAgICAgbGltaXQgPSBtX291dC5zdWIobV9vdXQubG9hZDMyKHBheWxvYWRGb3IoYXJndW1l
bnRDb3VudFJlZ2lzdGVyKSksIG1fb3V0LmludDMyT25lKTsKQEAgLTM3MDUsNyArMzcwNSw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIAogICAgICAgICBUeXBlZFBvaW50ZXIgYmFz
ZTsKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkgewotICAgICAgICAgICAgaWYgKGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSA+IDEpCisgICAgICAgICAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+IDEpCiAgICAgICAgICAgICAg
ICAgYmFzZSA9IGFkZHJlc3NGb3IoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbMV0udmlydHVh
bFJlZ2lzdGVyKCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGJhc2UgPSBhZGRyZXNz
Rm9yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEpKTsKQEAgLTk1NjgsNyArOTU2OCw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIEFyZ3VtZW50c0xlbmd0aCBsZW5ndGg7CiAK
ICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFy
Z3MoKSkgewotICAgICAgICAgICAgbGVuZ3RoLmtub3duID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgIGxlbmd0aC5rbm93biA9IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAgICAgbGVuZ3Ro
LmlzS25vd24gPSB0cnVlOwogICAgICAgICAgICAgbGVuZ3RoLnZhbHVlID0gbV9vdXQuY29uc3RJ
bnQzMihsZW5ndGgua25vd24pOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggMTk0MGEwOGJmYTEwODk1YjFiNjk3ZjFj
MzUwYTU5YTdjN2FmNDIzOC4uMDFiNWI0NjQxYWIzNTI3Y2MzY2M4MGExM2ViYjUxOGQxOTM4NzMy
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC0y
ODgsNyArMjg4LDcgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TWF0ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBhcmd1bWVudENvdW50ID0gbWF0ZXJp
YWxpemF0aW9uLT5vcmlnaW4oKS5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7Cisg
ICAgICAgICAgICBhcmd1bWVudENvdW50ID0gbWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5pbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogICAgICAgICBSRUxFQVNF
X0FTU0VSVChhcmd1bWVudENvdW50KTsKICAgICAgICAgCiAgICAgICAgIEpTRnVuY3Rpb24qIGNh
bGxlZSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IDE3NWZmZjMxYmFmM2ExYTM3ZDQ5YjZlMWMzZTAzNmY2
MTNlYzUwZjQuLjg1ZDE0N2E0N2M3ZjE5NWFhNjNhMmIyZTU3YTQ2NzYyM2RiNmJiZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3Bw
CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBTdGFja1Zpc2l0b3I6OnJlYWRJbmxpbmVkRnJhbWUo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVPcmlnaW4qIGNvZGVPcmlnaW4KICAgICAgICAgaWYg
KGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lzdGVyLmlzVmFsaWQoKSkKICAgICAg
ICAgICAgIG1fZnJhbWUubV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFtZS0+
cihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3Rlci5vZmZzZXQoKSkudW5ib3hl
ZEludDMyKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZnJhbWUubV9hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAg
ICAgICAgICAgIG1fZnJhbWUubV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgIG1fZnJhbWUubV9j
b2RlQmxvY2sgPSBpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpOwogICAg
ICAgICBtX2ZyYW1lLm1fYnl0ZWNvZGVPZmZzZXQgPSBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA5
MzhiZDFlM2YwZDBjMTMwZmEyMzdmZGM2N2ZlMmU1ZDM3ZTA3ZDA2Li5lMjAxOTU1MDFiMDI3Njky
ZDNhZDcyNjI1Nzg1MDA1NTk4Y2UwNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgKQEAgLTEyMjAsNyArMTIyMCw3IEBAIGNsYXNzIEFzc2VtYmx5SGVs
cGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgewogICAgICAgICBpZiAoIWlubGlu
ZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
Ojphcmd1bWVudE9mZnNldCgwKSk7Ci0gICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCkgPD0gMSkKKyAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPD0gMSkKICAgICAgICAgICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbCgwKTsKICAgICAgICAgVmFsdWVSZWNvdmVyeSByZWNvdmVyeSA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzWzFdOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWNvdmVyeS50
ZWNobmlxdWUoKSA9PSBEaXNwbGFjZWRJbkpTU3RhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcAppbmRleCAwZjk2MWE2NjFmYjI0NzQ0Mjkw
ZTIyZGY2MTdhYmIyN2U1ZTRjZTIwLi45ZDMwYjNmMDg3MGRlMTAwYWUxOTYzMTZiYWYyNTM3NmY0
ZTNiYjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJn
c0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJnc0Zy
YW1lLmNwcApAQCAtMTIxLDEwICsxMjEsOSBAQCB2b2lkIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZh
c3RDYXNlKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBudW1Vc2VkU2xvdAogICAg
ICAgICAgICAgYXJndW1lbnRDb3VudFJlY292ZXJ5ID0gVmFsdWVSZWNvdmVyeTo6ZGlzcGxhY2Vk
SW5KU1N0YWNrKAogICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dFJlZ2lzdGVyLCBEYXRhRm9ybWF0SW50MzIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgYXJndW1lbnRDb3VudFJlY292ZXJ5ID0gVmFsdWVSZWNvdmVyeTo6Y29uc3RhbnQoCi0gICAg
ICAgICAgICAgICAganNOdW1iZXIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSk7
CisgICAgICAgICAgICBhcmd1bWVudENvdW50UmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5Ojpjb25z
dGFudChqc051bWJlcihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKSA+IDEpCisgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzID4gMSkKICAgICAgICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50c1sxXS52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgZmlyc3RBcmd1bWVudFJlZyA9IFZpcnR1YWxSZWdpc3RlcigwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCmluZGV4IGYw
OTc4OGI3NWYzNWVjM2U4YjZlZThiZGRkZWE4NGYxM2FiOTNjZDQuLjNmYWM0YTEyN2I3ZmZiNDBj
MGY1ODUxMTJmMDg2ODM1ZGIwMGJhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIENsb25lZEFy
Z3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVXaXRoSW5saW5lRnJhbWUoRXhlY1N0YXRl
KiBteUZyYW1lLCBFeGVjCiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50UmVnaXN0ZXIuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIGxlbmd0aCA9IHRhcmdl
dEZyYW1lLT5yKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lzdGVyKS51bmJveGVk
SW50MzIoKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsZW5ndGggPSBpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7CisgICAgICAgICAgICAgICAgbGVuZ3RoID0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKICAgICAgICAgICAg
IGxlbmd0aC0tOwogICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlRW1wdHkobXlGcmFtZSwgY2Fs
bGVlLCBsZW5ndGgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318277</attachid>
            <date>2017-08-16 11:40:19 -0700</date>
            <delta_ts>2017-08-17 16:28:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175523-20170817034018.patch</filename>
            <type>text/plain</type>
            <size>37652</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZjA1Nzg3YjIyZTgxZTYwMjY0OWEzYTJjMDMyM2ZjZWNiZmRhOTU0Li4xZTc3MTJhNzAwYTFhMGRk
OTAxNDZkOWZhNzFhZWViNDYwYzhhODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxNy0wOC0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVD
YWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OmR1bXBJbkNvbnRl
eHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oOgorICAgICAg
ICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OklubGluZUNhbGxGcmFtZSk6CisgICAgICAgICogZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAg
ICAgICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdENv
ZGVUb0dldEFyZ3VtZW50c0FycmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpmaW5kQXJndW1l
bnRQb3NpdGlvbkZvckxvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
Z2V0QXJndW1lbnRDb3VudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omlu
bGluaW5nQ29zdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNh
bGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVD
YWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGlu
ZVN0YWNrRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMp
OgorICAgICAgICAqIGRmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6OmV4ZWN1dGVO
b2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
T1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OnJlaWZ5SW5saW5lZENhbGxG
cmFtZXMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKToKKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUdldE15QXJndW1lbnRCeVZhbCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEFyZ3VtZW50c0xlbmd0aCk6CisgICAgICAgICogZnRs
L0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFs
aXplT2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6
CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6cmVhZElubGluZWRGcmFtZSk6CisgICAgICAg
ICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OmFyZ3VtZW50c1N0YXJ0KToKKyAgICAgICAgKiBqaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwOgor
ICAgICAgICAoSlNDOjplbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZSk6CisgICAgICAgICog
cnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVu
dHM6OmNyZWF0ZVdpdGhJbmxpbmVGcmFtZSk6CisKIDIwMTctMDgtMTYgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggSlNDT25seSBBUk0gYnVpbGRi
b3RzIGFmdGVyIHIyMjAwNDcgYW5kIHIyMjAxODQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5jcHAKaW5kZXggOTdjZTg0ZDYzNTgzMDMyMDhj
ZjA2MGUzYzVjNmFiZDM2ZTYyN2Y2MS4uOTZjMDk5NzAxMjIyMGE1ZjViZDViY2E5N2IwZTg5Mzhi
YzZiMThiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGlu
ZUNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGlu
ZUNhbGxGcmFtZS5jcHAKQEAgLTc0LDcgKzc0LDggQEAgdm9pZCBJbmxpbmVDYWxsRnJhbWU6OmR1
bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnMK
ICAgICAgICAgb3V0LnByaW50KCIsIGNsb3N1cmUgY2FsbCIpOwogICAgIGVsc2UKICAgICAgICAg
b3V0LnByaW50KCIsIGtub3duIGNhbGxlZTogIiwgaW5Db250ZXh0KGNhbGxlZVJlY292ZXJ5LmNv
bnN0YW50KCksIGNvbnRleHQpKTsKLSAgICBvdXQucHJpbnQoIiwgbnVtQXJncyt0aGlzID0gIiwg
YXJndW1lbnRzLnNpemUoKSk7CisgICAgb3V0LnByaW50KCIsIG51bUFyZ3MrdGhpcyA9ICIsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICBvdXQucHJpbnQoIiwgbnVtUGFyYW1zK3Ro
aXMgPSAiLCBhcmd1bWVudHMuc2l6ZSgpKTsKICAgICBvdXQucHJpbnQoIiwgc3RhY2tPZmZzZXQg
PSAiLCBzdGFja09mZnNldCk7CiAgICAgb3V0LnByaW50KCIgKCIsIHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKDApLCAiIG1hcHMgdG8gIiwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoMCkgKyBzdGFj
a09mZnNldCwgIik+Iik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5saW5lQ2FsbEZyYW1lLmgKaW5kZXggYmUxYWZkYjE5Njc5ZDQ3YTBhMGNhNWNhZWFjZDVlMjUx
ZTlhOGM1Ni4uOTIxYWY2NDg5YzRhMTZkZWIyNWYxNTY5ZDM3MmFiOWFiNzAyYzIwMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaApAQCAt
MTgwLDYgKzE4MCw3IEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgIFZhbHVlUmVjb3Zl
cnkgY2FsbGVlUmVjb3Zlcnk7CiAgICAgQ29kZU9yaWdpbiBkaXJlY3RDYWxsZXI7CiAKKyAgICB1
bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKICAgICBzaWduZWQgc3RhY2tPZmZz
ZXQgOiAyODsKICAgICB1bnNpZ25lZCBraW5kIDogMzsgLy8gcmVhbCB0eXBlIGlzIEtpbmQKICAg
ICBib29sIGlzQ2xvc3VyZUNhbGwgOiAxOyAvLyBJZiBmYWxzZSB0aGVuIHdlIGtub3cgdGhhdCBj
YWxsZWUvc2NvcGUgYXJlIGNvbnN0YW50cyBhbmQgdGhlIERGRyB3b24ndCB0cmVhdCB0aGVtIGFz
IHZhcmlhYmxlcywgaS5lLiB0aGV5IGhhdmUgdG8gYmUgcmVjb3ZlcmVkIG1hbnVhbGx5LgpAQCAt
MTg5LDcgKzE5MCw4IEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgIC8vIElubGluZUNh
bGxGcmFtZSdzIGZpZWxkcy4gVGhpcyBjb25zdHJ1Y3RvciBpcyBoZXJlIGp1c3QgdG8gcmVkdWNl
IGNvbmZ1c2lvbiBpZgogICAgIC8vIHdlIGZvcmdvdCB0byBpbml0aWFsaXplIGV4cGxpY2l0bHku
CiAgICAgSW5saW5lQ2FsbEZyYW1lKCkKLSAgICAgICAgOiBzdGFja09mZnNldCgwKQorICAgICAg
ICA6IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKDApCisgICAgICAgICwgc3RhY2tPZmZzZXQo
MCkKICAgICAgICAgLCBraW5kKENhbGwpCiAgICAgICAgICwgaXNDbG9zdXJlQ2FsbChmYWxzZSkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNGQxZTBhN2UzMjhkNzU1Y2I0ODkzMDFiODdl
MmRiNTFkN2VhZDViZC4uZGE0Zjk5YWJlMmYzZjJkYTg4OWZjYmJhNzIyY2I0ZjI4ODg4NDI1MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaApAQCAtMTczMiw3ICsxNzMyLDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xv
YmJlckxpbWkKICAgICAgICAgICAgIAogICAgICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRJbmRl
eCA9IGluZGV4LmFzVUludDMyKCkgKyBub2RlLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOwog
ICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkgewotICAgICAgICAgICAgICAgIGlmIChh
cmd1bWVudEluZGV4IDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkgewor
ICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudEluZGV4IDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yTm9k
ZShub2RlKSA9IG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKICAgICAgICAgICAgICAgICAg
ICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50SW5kZXggKyAxKSArIGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICBtX3N0YXRl
LnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwpAQCAtMTc1MSw3ICsxNzUxLDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWdu
ZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBib3VuZCBvbiB0aGUgdHlw
ZXMgZXZlbiB0aG91Z2ggaXQncyByYW5kb20gYWNjZXNzLiBUYWtlIGFkdmFudGFnZSBvZiB0aGlz
LgogICAgICAgICAgICAgCiAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIHJlc3VsdDsKLSAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBub2RlLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tp
cCgpOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBub2RlLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tp
cCgpOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytp
KSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0Lm1lcmdlKAogICAgICAgICAgICAgICAgICAgICBt
X3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCiAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxp
bWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50
c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IGMzY2Y4MjlkZWNlMmQ1MjczOTEwOTgyNmJlOGMx
YzE5MDI5OGYwYjAuLjYwYTM0M2QzNzJhNzgxM2ZjM2Y1Nzg5ZTljM2RlMjQyMWM1OTRkYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNF
bGltaW5hdGlvblBoYXNlLmNwcApAQCAtNzAwLDcgKzcwMCw3IEBAIGNsYXNzIEFyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhZmVUb0dldFN0YWNrOwogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYWZlVG9HZXRTdGFjayA9IGluZGV4IDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlVG9HZXRTdGFj
ayA9IGluZGV4IDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAt
IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYWZlVG9HZXRTdGFjayA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluZGV4IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJz
KCkpIC0gMTsKQEAgLTgwNSw3ICs4MDUsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKHNwcmVhZC0+b3AoKSA9PSBQaGFudG9tU3ByZWFkICYmIHNwcmVhZC0+Y2hpbGQxKCktPm9w
KCkgPT0gUGhhbnRvbUNyZWF0ZVJlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IHNwcmVhZC0+Y2hpbGQxKCktPm51
bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gc3ByZWFkLT5jaGlsZDEoKS0+b3Jp
Z2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgZnJhbWVBcmd1bWVudENvdW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgZnJhbWVBcmd1bWVudENvdW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyAtIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmcmFt
ZUFyZ3VtZW50Q291bnQgPj0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXApCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWVBcmd1bWVudENvdW50IC0gbnVtYmVy
T2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAwOwpAQCAtODM0LDcgKzgzNCw3IEBAIGNsYXNzIEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKHNwcmVhZC0+b3AoKSA9PSBQaGFudG9tU3ByZWFkICYmIHNwcmVhZC0+Y2hpbGQxKCktPm9w
KCkgPT0gUGhhbnRvbUNyZWF0ZVJlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSBzcHJlYWQtPmNoaWxkMSgp
LT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBzcHJlYWQtPmNoaWxk
MSgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZnJhbWVBcmd1bWVudENvdW50ID0gaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBsb2FkSW5kZXggPSBudW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcDsgbG9hZEluZGV4IDwgZnJhbWVBcmd1bWVudENvdW50OyArK2xvYWRJbmRleCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcg
PSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChsb2FkSW5kZXggKyAxKSArIGlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5hZGQo
cmVnLCBGbHVzaGVkSlNWYWx1ZSk7CkBAIC04ODcsNyArODg3LDcgQEAgY2xhc3MgQXJndW1lbnRz
RWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWlu
bGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKIAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgPiB2YXJhcmdzRGF0YS0+b2Zmc2V0KQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtPSB2YXJhcmdz
RGF0YS0+b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKQEAgLTkwOSw3
ICs5MDksNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gbnVs
bHB0cjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvYWRJ
bmRleCA9IHN0b3JlSW5kZXggKyB2YXJhcmdzRGF0YS0+b2Zmc2V0OwogCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9hZEluZGV4ICsgMSA8IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGxvYWRJbmRleCArIDEgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIHJlZyA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGxvYWRJbmRleCAr
IDEpICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTdGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3Rh
Y2tBY2Nlc3NEYXRhLmFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVnLCBGbHVzaGVkSlNWYWx1ZSk7CkBAIC0xMDMyLDcgKzEwMzIsNyBAQCBjbGFzcyBB
cmd1bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHNwcmVhZC0+Y2hpbGQxKCktPm9wKCkgPT0gUGhhbnRv
bUNyZWF0ZVJlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmVDYWxs
RnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHNwcmVhZC0+Y2hpbGQxKCktPm9yaWdpbi5zZW1hbnRp
Yy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gc3ByZWFkLT5jaGlsZDEoKS0+bnVtYmVyT2ZB
cmd1bWVudHNUb1NraXAoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMSArIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOyBpIDwgaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOyBpIDwg
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBt
X2dyYXBoLm1fc3RhY2tBY2Nlc3NEYXRhLmFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSArIGlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRmx1c2hlZEpTVmFsdWUpOwpAQCAtMTA2OSw3ICsxMDY5LDcgQEAgY2xhc3MgQXJndW1lbnRz
RWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IGNhbmRpZGF0ZS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmxp
bmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWZWN0b3I8Tm9kZSo+IGFyZ3VtZW50czsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgdmFyYXJnc0RhdGEtPmZpcnN0
VmFyQXJnT2Zmc2V0OyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgdmFy
YXJnc0RhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0OyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpczsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFN0YWNrQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdGFja0FjY2Vzc0RhdGEuYWRk
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoaSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRmx1c2hlZEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCmluZGV4IDA2MWEy
ODRjZjVkNDk3Yzk1OTg3ZTlmNjMwNTZlNWU5NzQzZDZkZDEuLjZjZWQ0NTgxMGM5MmUwY2Q5YjMz
MzJhYWY5NDc5NmNmZGI2N2M4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgTm9kZSogZW1p
dENvZGVUb0dldEFyZ3VtZW50c0FycmF5TGVuZ3RoKAogICAgICAgICBudW1iZXJPZkFyZ3VtZW50
c1RvU2tpcCA9IGFyZ3VtZW50cy0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAKICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7
Ci0gICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50c1NpemUgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCkgLSAxOworICAgICAgICB1bnNpZ25lZCBhcmd1bWVudHNTaXplID0gaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIDE7CiAgICAgICAgIGlmIChh
cmd1bWVudHNTaXplID49IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKQogICAgICAgICAgICAgYXJn
dW1lbnRzU2l6ZSAtPSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsKICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA1
ZGU3ZjNhM2NjYzFiZDdlMTViOWNhNGYyYWFmMzFiZmVkN2UwYjllLi5hZTIzZDU1YWVjZWZjOGQ1
MzM2ZTFkNjE1NjU4Yjg3NDI0NzAwOGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIGNsYXNzIEJ5dGVD
b2RlUGFyc2VyIHsKICAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCwgTm9k
ZSogY2FsbFRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bW50KTsKICAgICB2b2lkIGVt
aXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKTsKICAgICBOb2RlKiBnZXRBcmd1bWVudENvdW50KCk7Ci0gICAgdW5zaWdu
ZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIENhbGxNb2RlKTsgLy8gUmV0dXJuIFVJTlRfTUFYIGlmIGl0J3Mgbm90IGFuIGlubGluaW5n
IGNhbmRpZGF0ZS4gQnkgY29udmVudGlvbiwgaW50cmluc2ljcyBoYXZlIGEgY29zdCBvZiAxLgor
ICAgIHVuc2lnbmVkIGlubGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOyAvLyBSZXR1cm4gVUlOVF9NQVgg
aWYgaXQncyBub3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5z
aWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5nLiBSZXR1cm4gdHJ1
ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgogICAg
IGJvb2wgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVy
YW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJl
Z2lzdGVyIHRoaXNBcmd1bWVudCwgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1
bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
dW5zaWduZWQgbmV4dE9mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIGVudW0gQ2FsbGVyTGlua2FiaWxp
dHkgeyBDYWxsZXJEb2VzTm9ybWFsTGlua2luZywgQ2FsbGVyTGlua3NNYW51YWxseSB9OwpAQCAt
NTcxLDcgKzU3MSw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpID09IGlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkg
Pj0gc3RhdGljX2Nhc3Q8aW50PihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZy
YW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSArIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKSkpCisgICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA+PSBzdGF0aWNfY2FzdDxp
bnQ+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVu
dE9mZnNldCgpICsgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBW
aXJ0dWFsUmVnaXN0ZXIob3BlcmFuZC5vZmZzZXQoKSAtIGlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQpLnRvQXJndW1lbnQoKTsKICAgICAgICAgICAgIHJldHVybiBzdGFjay0+bV9hcmd1bWVu
dFBvc2l0aW9uc1thcmd1bWVudF07CkBAIC0xMTEwLDYgKzExMTAsOCBAQCBjbGFzcyBCeXRlQ29k
ZVBhcnNlciB7CiAgICAgICAgIElubGluZUNhbGxGcmFtZSogbV9pbmxpbmVDYWxsRnJhbWU7CiAg
ICAgICAgIAogICAgICAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlKCkgeyByZXR1cm4g
bV9jb2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpOyB9CisKKyAgICAgICAgaW50IG1f
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgIAogICAgICAgICBRdWVyeWFibGVF
eGl0UHJvZmlsZSBtX2V4aXRQcm9maWxlOwogICAgICAgICAKQEAgLTE0MTQsNyArMTQxNiw3IEBA
IE5vZGUqIEJ5dGVDb2RlUGFyc2VyOjpnZXRBcmd1bWVudENvdW50KCkKICAgICAgICAgaWYgKG1f
aW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKICAgICAgICAg
ICAgIGFyZ3VtZW50Q291bnQgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9
IGpzQ29uc3RhbnQobV9ncmFwaC5mcmVlemUoanNOdW1iZXIobV9pbmxpbmVTdGFja1RvcC0+bV9p
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKS0+dmFsdWUoKSk7CisgICAgICAgICAg
ICBhcmd1bWVudENvdW50ID0ganNDb25zdGFudChtX2dyYXBoLmZyZWV6ZShqc051bWJlcihtX2lu
bGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKS0+dmFsdWUoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBhZGRU
b0dyYXBoKEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBPcEluZm8oMCksIE9wSW5mbyhT
cGVjSW50MzJPbmx5KSk7CiAgICAgcmV0dXJuIGFyZ3VtZW50Q291bnQ7CkBAIC0xNDI2LDkgKzE0
MjgsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJl
Z2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEkKICAgICAgICAgYWRkVG9HcmFwaChQaGFu
dG9tLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJPZmZzZXQpKSk7
CiB9CiAKLXVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQg
Y2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENhbGxNb2RlIGNhbGxNb2Rl
KQordW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxs
ZWUsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
IGtpbmQpCiB7Ci0gICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kID0gc3BlY2lhbGl6YXRp
b25LaW5kRm9yKGNhbGxNb2RlKTsKKyAgICBDYWxsTW9kZSBjYWxsTW9kZSA9IElubGluZUNhbGxG
cmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCk7CisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVj
aWFsaXphdGlvbktpbmQgPSBzcGVjaWFsaXphdGlvbktpbmRGb3IoY2FsbE1vZGUpOwogICAgIGlm
ICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxs
ZWUsICIgaW50byAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAKQEAgLTE0NTIs
MzAgKzE0NTUsMzIgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxs
VmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHUKICAgICAvLyB0byBpbmxpbmUg
aXQgaWYgd2UgaGFkIGEgc3RhdGljIHByb29mIG9mIHdoYXQgd2FzIGJlaW5nIGNhbGxlZDsgdGhp
cyBtaWdodCBoYXBwZW4gZm9yIGV4YW1wbGUKICAgICAvLyBpZiB5b3UgY2FsbCBhIGdsb2JhbCBm
dW5jdGlvbiwgd2hlcmUgd2F0Y2hwb2ludGluZyBnaXZlcyB1cyBzdGF0aWMgaW5mb3JtYXRpb24u
IE92ZXJhbGwsCiAgICAgLy8gaXQncyBhIHJhcmUgY2FzZSBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0
IGFueSBob3QgY2FsbGVlcyB3b3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjb21waWxlZC4KLSAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKGtp
bmQpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2Rl
QmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBpZiAoIWNvZGVCbG9jaykgewogICAg
ICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1
c2Ugbm8gY29kZSBibG9jayBhdmFpbGFibGUuXG4iKTsKICAgICAgICAgcmV0dXJuIFVJTlRfTUFY
OwogICAgIH0KIAotICAgIC8vIERvZXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgd2UncmUgcGFz
c2luZyBtYXRjaCB0aGUgYXJpdHkgb2YgdGhlIHRhcmdldD8gV2UgY3VycmVudGx5Ci0gICAgLy8g
aW5saW5lIG9ubHkgaWYgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIGlzIGdyZWF0ZXIg
dGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyCi0gICAgLy8gYXJndW1lbnRzIGV4cGVjdGVkLgot
ICAgIGlmIChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA+IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZygiICAg
IEZhaWxpbmcgYmVjYXVzZSBvZiBhcml0eSBtaXNtYXRjaC5cbiIpOwotICAgICAgICByZXR1cm4g
VUlOVF9NQVg7CisgICAgaWYgKElubGluZUNhbGxGcmFtZTo6aXNWYXJhcmdzKGtpbmQpKSB7Cisg
ICAgICAgIC8vIERvZXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgd2UncmUgcGFzc2luZyBtYXRj
aCB0aGUgYXJpdHkgb2YgdGhlIHRhcmdldD8gV2UgY3VycmVudGx5CisgICAgICAgIC8vIGlubGlu
ZSBvbmx5IGlmIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCBpcyBncmVhdGVyIHRoYW4g
b3IgZXF1YWwgdG8gdGhlIG51bWJlcgorICAgICAgICAvLyBhcmd1bWVudHMgZXhwZWN0ZWQuCisg
ICAgICAgIGlmIChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA+IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNoLlxuIik7CisgICAg
ICAgICAgICByZXR1cm4gVUlOVF9NQVg7CisgICAgICAgIH0KICAgICB9CiAKICAgICBDYXBhYmls
aXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2
ZWwoCi0gICAgICAgIGNvZGVCbG9jaywga2luZCwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7Cisg
ICAgICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBjYWxsZWUuaXNDbG9zdXJlQ2Fs
bCgpKTsKICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCIgICAgQ2FsbCBtb2Rl
OiAiLCBjYWxsTW9kZSwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICBJcyBjbG9zdXJlIGNh
bGw6ICIsIGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCksICJcbiIpOwogICAgICAgICBkYXRhTG9nKCIg
ICAgQ2FwYWJpbGl0eSBsZXZlbDogIiwgY2FwYWJpbGl0eUxldmVsLCAiXG4iKTsKLSAgICAgICAg
ZGF0YUxvZygiICAgIE1pZ2h0IGlubGluZSBmdW5jdGlvbjogIiwgbWlnaHRJbmxpbmVGdW5jdGlv
bkZvcihjb2RlQmxvY2ssIGtpbmQpLCAiXG4iKTsKLSAgICAgICAgZGF0YUxvZygiICAgIE1pZ2h0
IGNvbXBpbGUgZnVuY3Rpb246ICIsIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yKGNvZGVCbG9jaywg
a2luZCksICJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgTWlnaHQgaW5saW5lIGZ1bmN0aW9u
OiAiLCBtaWdodElubGluZUZ1bmN0aW9uRm9yKGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5k
KSwgIlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICBNaWdodCBjb21waWxlIGZ1bmN0aW9uOiAi
LCBtaWdodENvbXBpbGVGdW5jdGlvbkZvcihjb2RlQmxvY2ssIHNwZWNpYWxpemF0aW9uS2luZCks
ICJcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICAgSXMgc3VwcG9ydGVkIGZvciBpbmxpbmluZzog
IiwgaXNTdXBwb3J0ZWRGb3JJbmxpbmluZyhjb2RlQmxvY2spLCAiXG4iKTsKICAgICAgICAgZGF0
YUxvZygiICAgIElzIGlubGluaW5nIGNhbmRpZGF0ZTogIiwgY29kZUJsb2NrLT5vd25lclNjcmlw
dEV4ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgpLCAiXG4iKTsKICAgICB9CkBAIC0x
NTQxLDE0ICsxNTQ2LDIwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSog
Y2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiB7CiAgICAgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNw
ZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKICAgICAKLSAgICBBU1NFUlQoaW5saW5pbmdDb3N0
KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6Y2Fs
bE1vZGVGb3Ioa2luZCkpICE9IFVJTlRfTUFYKTsKKyAgICBBU1NFUlQoaW5saW5pbmdDb3N0KGNh
bGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtpbmQpICE9IFVJTlRfTUFYKTsKICAg
ICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUo
KS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBpbnNlcnRD
aGVja3MoY29kZUJsb2NrKTsKIAogICAgIC8vIEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFudHMh
CisKKyAgICBpbnQgYXJpdHlGaXhVcENvdW50ID0gc3RkOjptYXg8aW50Pihjb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCAwKTsKKyAgICAvLyBG
SVhNRTogaW50IHJlZ2lzdGVyT2Zmc2V0QWZ0ZXJGaXhVcCA9IHJlZ2lzdGVyT2Zmc2V0IC0gYXJp
dHlGaXhVcENvdW50OworICAgIGludCByZWdpc3Rlck9mZnNldEFmdGVyRml4VXAgPSAtV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mKAorICAgICAgICAgICAgICAgIHN0YWNrQWxpZ25tZW50UmVnaXN0
ZXJzKCksCisgICAgICAgICAgICAgICAgKC1yZWdpc3Rlck9mZnNldCkgKyBhcml0eUZpeFVwQ291
bnQpOwogICAgIAotICAgIGludCBpbmxpbmVDYWxsRnJhbWVTdGFydCA9IG1faW5saW5lU3RhY2tU
b3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQpKS5vZmZzZXQo
KSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOworICAgIGludCBpbmxpbmVDYWxs
RnJhbWVTdGFydCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0
ZXIocmVnaXN0ZXJPZmZzZXRBZnRlckZpeFVwKSkub2Zmc2V0KCkgKyBDYWxsRnJhbWU6OmhlYWRl
clNpemVJblJlZ2lzdGVyczsKICAgICAKICAgICBlbnN1cmVMb2NhbHMoCiAgICAgICAgIFZpcnR1
YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWVTdGFydCkudG9Mb2NhbCgpICsgMSArCkBAIC0xNTYz
LDEyICsxNTc0LDIyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgVmFyaWFibGVBY2Nl
c3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9IG51bGxwdHI7CiAgICAgaWYgKGNhbGxlZS5pc0Nsb3N1
cmVDYWxsKCkpIHsKICAgICAgICAgTm9kZSogY2FsbGVlU2V0ID0gc2V0KAotICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwg
Y2FsbFRhcmdldE5vZGUsIEltbWVkaWF0ZU5ha2VkU2V0KTsKKyAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlcihyZWdpc3Rlck9mZnNldEFmdGVyRml4VXAgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUp
LCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQpOwogICAgICAgICAKICAgICAgICAg
Y2FsbGVlVmFyaWFibGUgPSBjYWxsZWVTZXQtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAg
ICBjYWxsZWVWYXJpYWJsZS0+bWVyZ2VTaG91bGROZXZlclVuYm94KHRydWUpOwogICAgIH0KICAg
ICAKKyAgICBpZiAoYXJpdHlGaXhVcENvdW50KSB7CisgICAgICAgIGZvciAoaW50IGluZGV4ID0g
MDsgaW5kZXggPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpbmRleCkgeworICAgICAg
ICAgICAgTm9kZSogYXJndW1lbnQgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaW5k
ZXgsIHJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICBzZXQodmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoaW5kZXgsIHJlZ2lzdGVyT2Zmc2V0QWZ0ZXJGaXhVcCksIGFyZ3VtZW50LCBJbW1l
ZGlhdGVOYWtlZFNldCk7CisgICAgICAgIH0KKyAgICAgICAgTm9kZSogdW5kZWZpbmVkID0gYWRk
VG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9jb25zdGFudFVuZGVmaW5lZCkpOworICAgICAg
ICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgYXJpdHlGaXhVcENvdW50OyArK2luZGV4KQor
ICAgICAgICAgICAgc2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzICsgaW5kZXgsIHJlZ2lzdGVyT2Zmc2V0QWZ0ZXJGaXhVcCksIHVuZGVmaW5l
ZCwgSW1tZWRpYXRlTmFrZWRTZXQpOworICAgIH0KKwogICAgIElubGluZVN0YWNrRW50cnkgaW5s
aW5lU3RhY2tFbnRyeSgKICAgICAgICAgdGhpcywgY29kZUJsb2NrLCBjb2RlQmxvY2ssIG1fZ3Jh
cGgubGFzdEJsb2NrKCksIGNhbGxlZS5mdW5jdGlvbigpLCByZXN1bHRSZWcsCiAgICAgICAgIChW
aXJ0dWFsUmVnaXN0ZXIpaW5saW5lQ2FsbEZyYW1lU3RhcnQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBraW5kKTsKQEAgLTE3NjcsNyArMTc4OCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVy
YW5kCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nvc3Qg
PSBpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5l
Q2FsbEZyYW1lOjpjYWxsTW9kZUZvcihraW5kKSk7CisgICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nv
c3QgPSBpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywga2lu
ZCk7CiAgICAgaWYgKG15SW5saW5pbmdDb3N0ID4gaW5saW5pbmdCYWxhbmNlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTQyODAsNyArNDMwMSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUq
IGlubGluZUNhbGxGcmFtZSA9IHRoaXMtPmlubGluZUNhbGxGcmFtZSgpOwogICAgICAgICAgICAg
Tm9kZSogbGVuZ3RoOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5l
Q2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ3Vt
ZW50c0xlbmd0aCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAg
ICAgICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRzTGVuZ3RoID0gaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIDE7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bnVtUGFyYW1zVG9Ta2lwID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsK
ICAgICAgICAgICAgICAgICBKU1ZhbHVlIHJlc3RMZW5ndGg7CiAgICAgICAgICAgICAgICAgaWYg
KGFyZ3VtZW50c0xlbmd0aCA8PSBudW1QYXJhbXNUb1NraXApCkBAIC01NzMyLDcgKzU3NTMsNyBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAg
ICAgICAgTm9kZSogYXJndW1lbnQ7CiAgICAgICAgICAgICBpbnQzMl90IGFyZ3VtZW50SW5kZXhJ
bmNsdWRpbmdUaGlzID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGlmIChpbmxpbmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkp
IHsKLSAgICAgICAgICAgICAgICBpbnQzMl90IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOworICAgICAgICAgICAgICAgIGludDMy
X3QgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzOwogICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudEluZGV4SW5j
bHVkaW5nVGhpcyA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQogICAgICAgICAgICAgICAg
ICAgICBhcmd1bWVudCA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudElu
ZGV4SW5jbHVkaW5nVGhpcykpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTU5NzEsNiArNTk5
Miw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5
KAogICAgIDogbV9ieXRlQ29kZVBhcnNlcihieXRlQ29kZVBhcnNlcikKICAgICAsIG1fY29kZUJs
b2NrKGNvZGVCbG9jaykKICAgICAsIG1fcHJvZmlsZWRCbG9jayhwcm9maWxlZEJsb2NrKQorICAg
ICwgbV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykKICAgICAsIG1fY2FsbHNpdGVCbG9ja0hlYWQoY2FsbHNpdGVCbG9ja0hlYWQpCiAgICAgLCBt
X3JldHVyblZhbHVlKHJldHVyblZhbHVlVlIpCiAgICAgLCBtX2RpZFJldHVybihmYWxzZSkKQEAg
LTU5OTIsOCArNjAxNCw5IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxp
bmVTdGFja0VudHJ5KAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIG1fYXJndW1lbnRQb3Np
dGlvbnMucmVzaXplKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2kpIHsKKyAgICBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4VXAgPSBzdGQ6Om1heDxpbnQ+KGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisgICAgbV9h
cmd1bWVudFBvc2l0aW9ucy5yZXNpemUoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4
VXApOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNX
aXRoRml4VXA7ICsraSkgewogICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX2FyZ3Vt
ZW50UG9zaXRpb25zLmFwcGVuZChBcmd1bWVudFBvc2l0aW9uKCkpOwogICAgICAgICBBcmd1bWVu
dFBvc2l0aW9uKiBhcmd1bWVudFBvc2l0aW9uID0gJmJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLm1f
YXJndW1lbnRQb3NpdGlvbnMubGFzdCgpOwogICAgICAgICBtX2FyZ3VtZW50UG9zaXRpb25zW2ld
ID0gYXJndW1lbnRQb3NpdGlvbjsKQEAgLTYwMTEsMTMgKzYwMzQsMTQgQEAgQnl0ZUNvZGVQYXJz
ZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgICAgIC8vIHBsYW4g
ZmluaXNoZXMuCiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5z
ZXRXaXRob3V0V3JpdGVCYXJyaWVyKGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCkpOwogICAg
ICAgICBtX2lubGluZUNhbGxGcmFtZS0+c2V0U3RhY2tPZmZzZXQoaW5saW5lQ2FsbEZyYW1lU3Rh
cnQub2Zmc2V0KCkgLSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyk7CisgICAgICAg
IG1faW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzOwogICAgICAgICBpZiAoY2FsbGVlKSB7CiAgICAgICAgICAgICBt
X2lubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFu
dChjYWxsZWUpOwogICAgICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwg
PSBmYWxzZTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+
aXNDbG9zdXJlQ2FsbCA9IHRydWU7CiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RD
YWxsZXIgPSBieXRlQ29kZVBhcnNlci0+Y3VycmVudENvZGVPcmlnaW4oKTsKLSAgICAgICAgbV9p
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5yZXNpemVUb0ZpdChhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyk7IC8vIFNldCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBpbmNsdWRpbmcgdGhpcywg
YnV0IGRvbid0IGNvbmZpZ3VyZSB0aGUgdmFsdWUgcmVjb3ZlcmllcywgeWV0LgorICAgICAgICBt
X2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnJlc2l6ZVRvRml0KGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzV2l0aEZpeFVwKTsgLy8gU2V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGluY2x1
ZGluZyB0aGlzLCBidXQgZG9uJ3QgY29uZmlndXJlIHRoZSB2YWx1ZSByZWNvdmVyaWVzLCB5ZXQu
CiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5raW5kID0ga2luZDsKICAgICAgICAgCiAgICAg
ICAgIG1faWRlbnRpZmllclJlbWFwLnJlc2l6ZShjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmll
cnMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCmluZGV4IDczNDVjZDQwNmMwYTU5MjkzYzlhMjk3MmJkODdiNjQ1ODg1
YTBiZTcuLmI1NDlkOGJhZTI5NDAwMThmNDNiMTFiMzhjN2E4ZmMxNzNkODUwMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwCkBAIC0zMzUsNyArMzM1LDcgQEAgY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICAgICAgICAgIC8vIEdldE15QXJndW1lbnRCeVZhbCBpbiBzdWNo
IHN0YXRpY2FsbHktb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlczsgd2UganVzdCBsb3NlIENGQSB1bmxl
c3MKICAgICAgICAgICAgICAgICAvLyBHQ1NFIHJlbW92ZXMgdGhlIGFjY2VzcyBlbnRpcmVseS4K
ICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChpbmRleCA+PSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKQor
ICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyAtIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXgg
Pj0gbV9zdGF0ZS52YXJpYWJsZXMoKS5udW1iZXJPZkFyZ3VtZW50cygpIC0gMSkKQEAgLTM1Niw3
ICszNTYsNyBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpbmRleCAr
IDEpLCBGbHVzaGVkSlNWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFt
ZS0+aXNWYXJhcmdzKCkgJiYgaW5kZXggPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXpl
KCkgLSAxKSB7CisgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5l
Q2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSAmJiBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNv
bnZlcnRUb0dldFN0YWNrKGRhdGEpOwogICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNw
cAppbmRleCBlOGI0NWM0NWE2MmZjNDQ5YzIxOWNhNGRhZWU0Y2UxZTZkZGZjYjg1Li4zY2RhNjg3
MmU0Yzc4NDkwYmNkMDdkNTlkN2Y5YjllZDk4MDVjNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFz
ZS5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIExvY2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3Vs
YXRvcjo6ZXhlY3V0ZU5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1fYXZhaWxhYmlsaXR5
Lm1faGVhcC5zZXQoUHJvbW90ZWRIZWFwTG9jYXRpb24oQXJndW1lbnRzQ2FsbGVlUExvYywgbm9k
ZSksIGNhbGxlZSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHMuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bWJlck9m
QXJndW1lbnRzVG9Ta2lwOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyAtIDE7ICsraSkgewogICAgICAgICAgICAgQXZhaWxhYmlsaXR5IGFyZ3VtZW50ID0g
bV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZCgKICAgICAgICAgICAgICAgICBpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChpKSk7CiAg
ICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCmluZGV4
IGJkNzg1N2Y5ZmU3MWUxZGUwY2M3NDc2Yzg4MzM1ZTg1YjMyOWYwZDYuLjNiNzNhMTJjMTA5ZDgz
Zjk4MDU2OTU4ZjJhNTk1YTVhOGQ2MjQyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgT1NSRXhpdDo6ZW1pdFJlc3Rv
cmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zl
CiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgaml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSwKKyAgICAgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCmluZGV4IGY3NmNjYjg4YmIxZTRjN2E3N2E0OTQ2ZDU3
Nzg4NGM5NzI1MDIwYWUuLjVhOGNhNDc1YmRjMTBhYmFiY2UwNmUwOWVhNWY0MzhmOTU1NmFmOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlckNvbW1vbi5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxG
cmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAgICAg
ICAgICAgR1BSSW5mbzo6cmVnVDIpOwogCiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5p
c1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSksIEFzc2VtYmx5SGVs
cGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgICAgIGpp
dC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Io
KFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaml0
LnN0b3JlNjQoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVP
ZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpKSk7CiAgICAgICAgIHVp
bnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoY29kZU9yaWdpbi0+Ynl0ZWNvZGVJ
bmRleCkuYml0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAppbmRleCAxMGE0MTUzY2Y0YmJlMjEzNTZiYmFkNTI5MTVlZjllNTcwYmRkZjZh
Li5iM2JiZjlmOWIyN2FkNWVhMTliMDU0Y2NjNjE3Zjk3YmY4MzM0NDNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTcxLDcgKzE3
MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcg
cmVzdWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
R2V0TGVuZ3RoKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBHUFJSZWcgbGVuZ3Ro
R1BSLCBib29sIGluY2x1ZGVUaGlzKQogewogICAgIGlmIChpbmxpbmVDYWxsRnJhbWUgJiYgIWlu
bGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtICFpbmNsdWRlVGhpcyksIGxl
bmd0aEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAhaW5jbHVkZVRoaXMpLCBsZW5ndGhHUFIp
OwogICAgIGVsc2UgewogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRDb3VudFJlZ2lz
dGVyID0gbV9qaXQuYXJndW1lbnRDb3VudChpbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoYXJndW1lbnRDb3VudFJlZ2lzdGVyKSwg
bGVuZ3RoR1BSKTsKQEAgLTY3NDksNyArNjc0OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICBib29sIGxlbmd0aElz
S25vd247IC8vIGlmIGZhbHNlLCBsZW5ndGhHUFIgd2lsbCBoYXZlIHRoZSBsZW5ndGguCiAgICAg
aWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUKICAgICAgICAgJiYgIW5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7Ci0gICAg
ICAgIGtub3duTGVuZ3RoID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgIGtub3duTGVuZ3RoID0gbm9kZS0+b3JpZ2lu
LnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAx
OwogICAgICAgICBsZW5ndGhJc0tub3duID0gdHJ1ZTsKICAgICB9IGVsc2UgewogICAgICAgICBr
bm93bkxlbmd0aCA9IFVJTlRfTUFYOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCmluZGV4IDk2NmVkM2FhYTk5YWIxMjZmOGMwN2EwYTJkMzIxOGRhNzJl
ODk4ODIuLjc1ZDU0OGU1MGY1Y2I2Nzk5ZWM5MWY0MDk5YTc2Yjc0MjAzZWRhZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTM2ODUsNyAr
MzY4NSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUg
bGltaXQ7CiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+
aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICBsaW1pdCA9IG1fb3V0LmNvbnN0SW50MzIoaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSk7CisgICAgICAgICAgICBsaW1pdCA9IG1f
b3V0LmNvbnN0SW50MzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyAtIDEpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1
bWVudENvdW50UmVnaXN0ZXIgPSBBc3NlbWJseUhlbHBlcnM6OmFyZ3VtZW50Q291bnQoaW5saW5l
Q2FsbEZyYW1lKTsKICAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuc3ViKG1fb3V0LmxvYWQzMihw
YXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdpc3RlcikpLCBtX291dC5pbnQzMk9uZSk7CkBAIC0z
NzA4LDcgKzM3MDgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAKICAgICAgICAg
VHlwZWRQb2ludGVyIGJhc2U7CiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAg
ICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgPiAxKQorICAgICAg
ICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPiAx
KQogICAgICAgICAgICAgICAgIGJhc2UgPSBhZGRyZXNzRm9yKGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzWzFdLnZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBiYXNlID0gYWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxKSk7CkBAIC05
NTgxLDcgKzk1ODEsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBBcmd1bWVudHNM
ZW5ndGggbGVuZ3RoOwogCiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUgJiYgIWlubGluZUNh
bGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKLSAgICAgICAgICAgIGxlbmd0aC5rbm93biA9IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICBsZW5ndGgua25v
d24gPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsKICAg
ICAgICAgICAgIGxlbmd0aC5pc0tub3duID0gdHJ1ZTsKICAgICAgICAgICAgIGxlbmd0aC52YWx1
ZSA9IG1fb3V0LmNvbnN0SW50MzIobGVuZ3RoLmtub3duKTsKICAgICAgICAgfSBlbHNlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCmluZGV4IDE5NDBhMDhi
ZmExMDg5NWIxYjY5N2YxYzM1MGE1OWE3YzdhZjQyMzguLjAxYjViNDY0MWFiMzUyN2NjM2NjODBh
MTNlYmI1MThkMTkzODczMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVy
YXRpb25zLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYXJndW1l
bnRDb3VudCA9IG1hdGVyaWFsaXphdGlvbi0+b3JpZ2luKCkuaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHMuc2l6ZSgpOworICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9IG1hdGVyaWFsaXphdGlv
bi0+b3JpZ2luKCkuaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJndW1lbnRDb3VudCk7CiAgICAgICAgIAogICAgICAg
ICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCAxNzVmZmYzMWJhZjNhMWEz
N2Q0OWI2ZTFjM2UwMzZmNjEzZWM1MGY0Li44NWQxNDdhNDdjN2YxOTVhYTYzYTJiMmU1N2E0Njc2
MjNkYjZiYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgU3RhY2tWaXNpdG9yOjpy
ZWFkSW5saW5lZEZyYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlT3JpZ2luKiBjb2RlT3Jp
Z2luCiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3Rlci5p
c1ZhbGlkKCkpCiAgICAgICAgICAgICBtX2ZyYW1lLm1fYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgPSBjYWxsRnJhbWUtPnIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXIu
b2Zmc2V0KCkpLnVuYm94ZWRJbnQzMigpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Zy
YW1lLm1fYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCk7CisgICAgICAgICAgICBtX2ZyYW1lLm1fYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogICAg
ICAgICBtX2ZyYW1lLm1fY29kZUJsb2NrID0gaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVC
bG9jay5nZXQoKTsKICAgICAgICAgbV9mcmFtZS5tX2J5dGVjb2RlT2Zmc2V0ID0gY29kZU9yaWdp
bi0+Ynl0ZWNvZGVJbmRleDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmgKaW5kZXggOTM4YmQxZTNmMGQwYzEzMGZhMjM3ZmRjNjdmZTJlNWQzN2UwN2QwNi4u
ZTIwMTk1NTAxYjAyNzY5MmQzYWQ3MjYyNTc4NTAwNTU5OGNlMDY1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xMjIwLDcgKzEyMjAsNyBAQCBj
bGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAgIHsKICAg
ICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoMCkpOwotICAgICAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIDw9IDEpCisgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDw9IDEpCiAgICAgICAgICAgICByZXR1
cm4gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoMCk7CiAgICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVj
b3ZlcnkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1sxXTsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQocmVjb3ZlcnkudGVjaG5pcXVlKCkgPT0gRGlzcGxhY2VkSW5KU1N0YWNrKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAKaW5kZXggMGY5
NjFhNjYxZmIyNDc0NDI5MGUyMmRmNjE3YWJiMjdlNWU0Y2UyMC4uOWQzMGIzZjA4NzBkZTEwMGFl
MTk2MzE2YmFmMjUzNzZmNGUzYmIyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAKQEAgLTEyMSwxMCArMTIxLDkgQEAgdm9pZCBlbWl0U2V0
dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcg
bnVtVXNlZFNsb3QKICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWNvdmVyeSA9IFZhbHVlUmVj
b3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjaygKICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlciwgRGF0YUZvcm1hdEludDMyKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6
OmNvbnN0YW50KAotICAgICAgICAgICAgICAgIGpzTnVtYmVyKGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzLnNpemUoKSkpOworICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlY292ZXJ5ID0gVmFs
dWVSZWNvdmVyeTo6Y29uc3RhbnQoanNOdW1iZXIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50cy5zaXplKCkgPiAxKQorICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+IDEpCiAgICAgICAgICAgICBmaXJzdEFyZ3VtZW50
UmVnID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbMV0udmlydHVhbFJlZ2lzdGVyKCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBWaXJ0dWFsUmVnaXN0
ZXIoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRB
cmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmNwcAppbmRleCBmMDk3ODhiNzVmMzVlYzNlOGI2ZWU4YmRkZGVhODRmMTNhYjkzY2Q0Li4z
ZmFjNGExMjdiN2ZmYjQwYzBmNTg1MTEyZjA4NjgzNWRiMDBiYWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKQEAgLTEwMyw3ICsx
MDMsNyBAQCBDbG9uZWRBcmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6Y3JlYXRlV2l0aElubGlu
ZUZyYW1lKEV4ZWNTdGF0ZSogbXlGcmFtZSwgRXhlYwogICAgICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lzdGVyLmlzVmFsaWQoKSkKICAgICAgICAgICAgICAg
ICBsZW5ndGggPSB0YXJnZXRGcmFtZS0+cihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRS
ZWdpc3RlcikudW5ib3hlZEludDMyKCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbGVuZ3RoID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOworICAgICAgICAg
ICAgICAgIGxlbmd0aCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM7CiAgICAgICAgICAgICBsZW5ndGgtLTsKICAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZUVt
cHR5KG15RnJhbWUsIGNhbGxlZSwgbGVuZ3RoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318436</attachid>
            <date>2017-08-17 16:28:14 -0700</date>
            <delta_ts>2017-08-17 18:30:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175523-20170818082812.patch</filename>
            <type>text/plain</type>
            <size>50472</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZjA1Nzg3YjIyZTgxZTYwMjY0OWEzYTJjMDMyM2ZjZWNiZmRhOTU0Li4zM2NjZGFhNTVjMDMxNjkz
MzFkYzZhYTBkNWVjZmQ0NDJmZTYzYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAxNy0wOC0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVD
YWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OmR1bXBJbkNvbnRl
eHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oOgorICAgICAg
ICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OklubGluZUNhbGxGcmFtZSk6CisgICAgICAgICogZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAg
ICAgICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6YXJndW1l
bnRzSW52b2x2ZVN0YWNrU2xvdCk6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdENvZGVUb0dldEFy
Z3VtZW50c0FycmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpmaW5kQXJndW1lbnRQb3NpdGlv
bkZvckxvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Zmx1c2gpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRBcmd1bWVudENvdW50KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAg
ICogZGZnL0RGR0NvbW1vbkRhdGEuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbW1vbkRhdGE6
OnZhbGlkYXRlUmVmZXJlbmNlcyk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENv
bnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6aXNMaXZlSW5CeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmZvckFsbExvY2Fsc0xpdmVJbkJ5dGVjb2RlKToKKyAg
ICAgICAgKiBkZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6TG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjpleGVjdXRlTm9kZSk6
CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4
aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVz
KToKKyAgICAgICAgKiBkZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OlByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yOjpyZWFkVG9wKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0R2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR1N0
YWNrTGF5b3V0UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0YWNrTGF5b3V0UGhhc2U6
OnJ1bik6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzTGVuZ3Ro
KToKKyAgICAgICAgKiBmdGwvRlRMT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUik6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpyZWFkSW5saW5l
ZEZyYW1lKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6YXJndW1lbnRzU3RhcnQpOgorICAgICAgICAqIGppdC9TZXR1cFZh
cmFyZ3NGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OmVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RD
YXNlKToKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChK
U0M6OkNsb25lZEFyZ3VtZW50czo6Y3JlYXRlV2l0aElubGluZUZyYW1lKToKKwogMjAxNy0wOC0x
NiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBK
U0NPbmx5IEFSTSBidWlsZGJvdHMgYWZ0ZXIgcjIyMDA0NyBhbmQgcjIyMDE4NApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcAppbmRleCA5
N2NlODRkNjM1ODMwMzIwOGNmMDYwZTNjNWM2YWJkMzZlNjI3ZjYxLi42MjEzN2E0NTY4MTM2ZDc3
NWM2NGY4YzRiODQ4NGY1OGRmNTk0MGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcApAQCAtNzQsNyArNzQsOCBAQCB2b2lkIElu
bGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4
dCogY29udGV4dCkgY29ucwogICAgICAgICBvdXQucHJpbnQoIiwgY2xvc3VyZSBjYWxsIik7CiAg
ICAgZWxzZQogICAgICAgICBvdXQucHJpbnQoIiwga25vd24gY2FsbGVlOiAiLCBpbkNvbnRleHQo
Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKSwgY29udGV4dCkpOwotICAgIG91dC5wcmludCgiLCBu
dW1BcmdzK3RoaXMgPSAiLCBhcmd1bWVudHMuc2l6ZSgpKTsKKyAgICBvdXQucHJpbnQoIiwgbnVt
QXJncyt0aGlzID0gIiwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIG91dC5wcmlu
dCgiLCBudW1QYXJhbXMrdGhpcyA9ICIsIGFyZ3VtZW50c1dpdGhGaXhVcC5zaXplKCkpOwogICAg
IG91dC5wcmludCgiLCBzdGFja09mZnNldCA9ICIsIHN0YWNrT2Zmc2V0KTsKICAgICBvdXQucHJp
bnQoIiAoIiwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoMCksICIgbWFwcyB0byAiLCB2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbCgwKSArIHN0YWNrT2Zmc2V0LCAiKT4iKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaAppbmRleCBiZTFhZmRi
MTk2NzlkNDdhMGEwY2E1Y2FlYWNkNWUyNTFlOWE4YzU2Li4xYTdlZjFjNWJhODJiMDAxNDI1ODgw
ZWZmN2UyMTRkYTE0YjkzZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lubGluZUNhbGxGcmFtZS5oCkBAIC0xNzUsMTEgKzE3NSwxMiBAQCBzdHJ1Y3QgSW5saW5l
Q2FsbEZyYW1lIHsKICAgICAgICAgcmV0dXJuIGNhbGxlciA/IGNhbGxlci0+aW5saW5lQ2FsbEZy
YW1lIDogbnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAgVmVjdG9yPFZhbHVlUmVjb3Zlcnk+IGFy
Z3VtZW50czsgLy8gSW5jbHVkZXMgJ3RoaXMnLgorICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5PiBh
cmd1bWVudHNXaXRoRml4VXA7IC8vIEluY2x1ZGVzICd0aGlzJy4KICAgICBXcml0ZUJhcnJpZXI8
Q29kZUJsb2NrPiBiYXNlbGluZUNvZGVCbG9jazsKICAgICBWYWx1ZVJlY292ZXJ5IGNhbGxlZVJl
Y292ZXJ5OwogICAgIENvZGVPcmlnaW4gZGlyZWN0Q2FsbGVyOwogCisgICAgdW5zaWduZWQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgc2lnbmVkIHN0YWNrT2Zmc2V0IDogMjg7CiAg
ICAgdW5zaWduZWQga2luZCA6IDM7IC8vIHJlYWwgdHlwZSBpcyBLaW5kCiAgICAgYm9vbCBpc0Ns
b3N1cmVDYWxsIDogMTsgLy8gSWYgZmFsc2UgdGhlbiB3ZSBrbm93IHRoYXQgY2FsbGVlL3Njb3Bl
IGFyZSBjb25zdGFudHMgYW5kIHRoZSBERkcgd29uJ3QgdHJlYXQgdGhlbSBhcyB2YXJpYWJsZXMs
IGkuZS4gdGhleSBoYXZlIHRvIGJlIHJlY292ZXJlZCBtYW51YWxseS4KQEAgLTE4OSw3ICsxOTAs
OCBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICAvLyBJbmxpbmVDYWxsRnJhbWUncyBm
aWVsZHMuIFRoaXMgY29uc3RydWN0b3IgaXMgaGVyZSBqdXN0IHRvIHJlZHVjZSBjb25mdXNpb24g
aWYKICAgICAvLyB3ZSBmb3Jnb3QgdG8gaW5pdGlhbGl6ZSBleHBsaWNpdGx5LgogICAgIElubGlu
ZUNhbGxGcmFtZSgpCi0gICAgICAgIDogc3RhY2tPZmZzZXQoMCkKKyAgICAgICAgOiBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygwKQorICAgICAgICAsIHN0YWNrT2Zmc2V0KDApCiAgICAgICAg
ICwga2luZChDYWxsKQogICAgICAgICAsIGlzQ2xvc3VyZUNhbGwoZmFsc2UpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCmluZGV4IDRkMWUwYTdlMzI4ZDc1NWNiNDg5MzAxYjg3ZTJkYjUxZDdlYWQ1
YmQuLmRhNGY5OWFiZTJmM2YyZGE4ODlmY2JiYTcyMmNiNGYyODg4ODQyNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKQEAgLTE3MzIsNyArMTczMiw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXggPSBpbmRleC5h
c1VJbnQzMigpICsgbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRJbmRl
eCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoYXJndW1lbnRJbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkgPSBt
X3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCiAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudEluZGV4ICsgMSkgKyBpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENv
bnN0YW50cyh0cnVlKTsKQEAgLTE3NTEsNyArMTc1MSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgYm91bmQgb24gdGhlIHR5cGVzIGV2ZW4gdGhv
dWdoIGl0J3MgcmFuZG9tIGFjY2Vzcy4gVGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcy4KICAgICAgICAg
ICAgIAogICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSByZXN1bHQ7Ci0gICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAxICsgbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsgaSA8IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAxICsgbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsgaSA8IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewogICAgICAg
ICAgICAgICAgIHJlc3VsdC5tZXJnZSgKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS52YXJp
YWJsZXMoKS5vcGVyYW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoaSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcAppbmRleCBjM2NmODI5ZGVjZTJkNTI3MzkxMDk4MjZiZThjMWMxOTAyOThmMGIw
Li45NjMwYTJiMTU1ZTRkZGFjN2MzNjU2ODc1MjNhMmU3Yzc2ZjcwZTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZS5jcHAKQEAgLTQ5MCw3ICs0OTAsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0Nsb2JiZXJl
ZEJ5QmxvY2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeFVwLnNpemUoKSAtIDE7ICsraSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0KSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
YWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KGkpOwpAQCAtNzAwLDcgKzcwMCw3IEBAIGNsYXNzIEFy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhZmVUb0dldFN0YWNrOwog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzYWZlVG9HZXRTdGFjayA9IGluZGV4IDwgaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZl
VG9HZXRTdGFjayA9IGluZGV4IDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyAtIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzYWZlVG9HZXRTdGFjayA9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGV4IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jaygpLT5udW1Q
YXJhbWV0ZXJzKCkpIC0gMTsKQEAgLTgwNSw3ICs4MDUsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGlt
aW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHNwcmVhZC0+b3AoKSA9PSBQaGFudG9tU3ByZWFkICYmIHNwcmVhZC0+Y2hp
bGQxKCktPm9wKCkgPT0gUGhhbnRvbUNyZWF0ZVJlc3QpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IHNwcmVhZC0+Y2hp
bGQxKCktPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gc3ByZWFkLT5jaGls
ZDEoKS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgZnJhbWVBcmd1bWVudENvdW50ID0gaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgZnJhbWVBcmd1bWVudENvdW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyAtIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChmcmFtZUFyZ3VtZW50Q291bnQgPj0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXApCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWVBcmd1bWVudENvdW50
IC0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwOwpAQCAtODM0LDcgKzgzNCw3IEBAIGNsYXNzIEFyZ3VtZW50c0VsaW1pbmF0
aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHNwcmVhZC0+b3AoKSA9PSBQaGFudG9tU3ByZWFkICYmIHNwcmVhZC0+Y2hp
bGQxKCktPm9wKCkgPT0gUGhhbnRvbUNyZWF0ZVJlc3QpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSBzcHJlYWQt
PmNoaWxkMSgpLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBzcHJl
YWQtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZnJhbWVBcmd1bWVudENvdW50ID0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBsb2FkSW5kZXggPSBudW1iZXJPZkFy
Z3VtZW50c1RvU2tpcDsgbG9hZEluZGV4IDwgZnJhbWVBcmd1bWVudENvdW50OyArK2xvYWRJbmRl
eCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciByZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChsb2FkSW5kZXggKyAxKSArIGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX3N0YWNrQWNjZXNz
RGF0YS5hZGQocmVnLCBGbHVzaGVkSlNWYWx1ZSk7CkBAIC04ODcsNyArODg3LDcgQEAgY2xhc3Mg
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPiB2YXJhcmdzRGF0YS0+b2Zmc2V0KQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAt
PSB2YXJhcmdzRGF0YS0+b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
QEAgLTkwOSw3ICs5MDksNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZh
bHVlID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvYWRJbmRleCA9IHN0b3JlSW5kZXggKyB2YXJhcmdzRGF0YS0+b2Zmc2V0OwogCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9hZEluZGV4ICsgMSA8IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGxvYWRJbmRleCArIDEgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGxv
YWRJbmRleCArIDEpICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldDsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBtX2dy
YXBoLm1fc3RhY2tBY2Nlc3NEYXRhLmFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVnLCBGbHVzaGVkSlNWYWx1ZSk7CkBAIC0xMDMyLDcgKzEwMzIsNyBA
QCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHNwcmVhZC0+Y2hpbGQxKCktPm9wKCkg
PT0gUGhhbnRvbUNyZWF0ZVJlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHNwcmVhZC0+Y2hpbGQxKCktPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gc3ByZWFkLT5jaGlsZDEoKS0+
bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMSArIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOyBpIDwgaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIG51bWJlck9mQXJndW1lbnRzVG9T
a2lwOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFja0FjY2Vzc0RhdGEq
IGRhdGEgPSBtX2dyYXBoLm1fc3RhY2tBY2Nlc3NEYXRhLmFkZCgKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSArIGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRmx1c2hlZEpTVmFsdWUpOwpAQCAtMTA2OSw3ICsxMDY5LDcgQEAgY2xhc3Mg
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IGNhbmRpZGF0ZS0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8Tm9kZSo+IGFyZ3VtZW50czsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgdmFyYXJnc0Rh
dGEtPmZpcnN0VmFyQXJnT2Zmc2V0OyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAxICsgdmFyYXJnc0RhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0OyBpIDwgaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFN0YWNrQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdGFja0FjY2Vz
c0RhdGEuYWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoaSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmx1c2hlZEpTVmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCmlu
ZGV4IDA2MWEyODRjZjVkNDk3Yzk1OTg3ZTlmNjMwNTZlNWU5NzQzZDZkZDEuLmZmNDliYTlkZjRj
YmU3NjY3YjMzN2U1ZTYwOWJkZjgzZDA0MDU2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAg
Ym9vbCBhcmd1bWVudHNJbnZvbHZlU3RhY2tTbG90KElubGluZUNhbGxGcmFtZSogaW5saW5lQ2Fs
bEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIKICAgICAgICAgJiYgcmVnID09IFZpcnR1YWxSZWdpc3Rl
cihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIHVuc2lnbmVkIG51bUFyZ3Vt
ZW50cyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgdW5zaWdu
ZWQgbnVtQXJndW1lbnRzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4VXAuc2l6
ZSgpIC0gMTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRTdGFydCA9CiAgICAgICAgIFZp
cnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KSArIENhbGxGcmFtZTo6
YXJndW1lbnRPZmZzZXQoMCk7CiAgICAgcmV0dXJuIHJlZyA+PSBhcmd1bWVudFN0YXJ0ICYmIHJl
ZyA8IGFyZ3VtZW50U3RhcnQgKyBudW1Bcmd1bWVudHM7CkBAIC03NCw3ICs3NCw3IEBAIE5vZGUq
IGVtaXRDb2RlVG9HZXRBcmd1bWVudHNBcnJheUxlbmd0aCgKICAgICAgICAgbnVtYmVyT2ZBcmd1
bWVudHNUb1NraXAgPSBhcmd1bWVudHMtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7CiAgICAg
CiAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3Mo
KSkgewotICAgICAgICB1bnNpZ25lZCBhcmd1bWVudHNTaXplID0gaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgdW5zaWduZWQgYXJndW1lbnRzU2l6ZSA9IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICBp
ZiAoYXJndW1lbnRzU2l6ZSA+PSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCkKICAgICAgICAgICAg
IGFyZ3VtZW50c1NpemUgLT0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgIGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5k
ZXggNWRlN2YzYTNjY2MxYmQ3ZTE1YjljYTRmMmFhZjMxYmZlZDdlMGI5ZS4uOGM0MjY5Yzg4OWQy
YmM3YzJlYWU5N2JmOGNlZTYzNTg3NjgyOTMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBjbGFzcyBC
eXRlQ29kZVBhcnNlciB7CiAgICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQs
IE5vZGUqIGNhbGxUYXJnZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1udCk7CiAgICAgdm9p
ZCBlbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyk7CiAgICAgTm9kZSogZ2V0QXJndW1lbnRDb3VudCgpOwotICAgIHVu
c2lnbmVkIGlubGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBDYWxsTW9kZSk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBpdCdzIG5vdCBhbiBpbmxp
bmluZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3MgaGF2ZSBhIGNvc3Qgb2Yg
MS4KKyAgICB1bnNpZ25lZCBpbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsgLy8gUmV0dXJuIFVJTlRf
TUFYIGlmIGl0J3Mgbm90IGFuIGlubGluaW5nIGNhbmRpZGF0ZS4gQnkgY29udmVudGlvbiwgaW50
cmluc2ljcyBoYXZlIGEgY29zdCBvZiAxLgogICAgIC8vIEhhbmRsZSBpbmxpbmluZy4gUmV0dXJu
IHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4K
ICAgICBib29sIGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0
T3BlcmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1
YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVu
dCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1l
OjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICBlbnVtIENhbGxlckxpbmth
YmlsaXR5IHsgQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcsIENhbGxlckxpbmtzTWFudWFsbHkgfTsK
QEAgLTU3MSw3ICs1NzEsNyBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChvcGVyYW5kLm9mZnNl
dCgpID49IHN0YXRpY19jYXN0PGludD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENh
bGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKyBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
cy5zaXplKCkpKQorICAgICAgICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPj0gc3RhdGljX2Nh
c3Q8aW50PihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJn
dW1lbnRPZmZzZXQoKSArIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaW50IGFyZ3VtZW50
ID0gVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQub2Zmc2V0KCkgLSBpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0KS50b0FyZ3VtZW50KCk7CiAgICAgICAgICAgICByZXR1cm4gc3RhY2stPm1fYXJn
dW1lbnRQb3NpdGlvbnNbYXJndW1lbnRdOwpAQCAtNjMxLDcgKzYzMSw3IEBAIGNsYXNzIEJ5dGVD
b2RlUGFyc2VyIHsKICAgICAgICAgaW50IG51bUFyZ3VtZW50czsKICAgICAgICAgaWYgKElubGlu
ZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lU3RhY2tFbnRyeS0+bV9pbmxpbmVD
YWxsRnJhbWUpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9oYXNEZWJ1Z2dlckVuYWJsZWQpOwot
ICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6
ZSgpOworICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHNXaXRoRml4VXAuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXND
bG9zdXJlQ2FsbCkKICAgICAgICAgICAgICAgICBmbHVzaERpcmVjdChpbmxpbmVTdGFja0VudHJ5
LT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpKTsK
ICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQpAQCAtMTExMCw2
ICsxMTEwLDggQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAgICBJbmxpbmVDYWxsRnJh
bWUqIG1faW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAKICAgICAgICAgU2NyaXB0RXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSgpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFi
bGUoKTsgfQorCisgICAgICAgIGludCBtX2FyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogICAg
ICAgICAKICAgICAgICAgUXVlcnlhYmxlRXhpdFByb2ZpbGUgbV9leGl0UHJvZmlsZTsKICAgICAg
ICAgCkBAIC0xNDE0LDcgKzE0MTYsNyBAQCBOb2RlKiBCeXRlQ29kZVBhcnNlcjo6Z2V0QXJndW1l
bnRDb3VudCgpCiAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFt
ZS0+aXNWYXJhcmdzKCkpCiAgICAgICAgICAgICBhcmd1bWVudENvdW50ID0gZ2V0KFZpcnR1YWxS
ZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBqc0NvbnN0YW50KG1fZ3JhcGguZnJlZXplKGpzTnVt
YmVyKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgp
KSktPnZhbHVlKCkpOworICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9IGpzQ29uc3RhbnQobV9n
cmFwaC5mcmVlemUoanNOdW1iZXIobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSktPnZhbHVlKCkpOwogICAgIH0gZWxzZQogICAg
ICAgICBhcmd1bWVudENvdW50ID0gYWRkVG9HcmFwaChHZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgT3BJbmZvKDApLCBPcEluZm8oU3BlY0ludDMyT25seSkpOwogICAgIHJldHVybiBhcmd1
bWVudENvdW50OwpAQCAtMTQyNiw5ICsxNDI4LDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVt
aXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
CiAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KGksIHJlZ2lzdGVyT2Zmc2V0KSkpOwogfQogCi11bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6
aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBDYWxsTW9kZSBjYWxsTW9kZSkKK3Vuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxp
bmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kKQogewotICAgIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCA9IHNwZWNpYWxpemF0aW9uS2luZEZvcihjYWxsTW9kZSk7CisgICAgQ2FsbE1v
ZGUgY2FsbE1vZGUgPSBJbmxpbmVDYWxsRnJhbWU6OmNhbGxNb2RlRm9yKGtpbmQpOworICAgIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gc3BlY2lhbGl6YXRpb25L
aW5kRm9yKGNhbGxNb2RlKTsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQ29u
c2lkZXJpbmcgaW5saW5pbmcgIiwgY2FsbGVlLCAiIGludG8gIiwgY3VycmVudENvZGVPcmlnaW4o
KSwgIlxuIik7CiAgICAgCkBAIC0xNDUyLDMwICsxNDU1LDMyIEBAIHVuc2lnbmVkIEJ5dGVDb2Rl
UGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1CiAgICAgLy8gdG8gaW5saW5lIGl0IGlmIHdlIGhhZCBhIHN0YXRpYyBwcm9vZiBvZiB3
aGF0IHdhcyBiZWluZyBjYWxsZWQ7IHRoaXMgbWlnaHQgaGFwcGVuIGZvciBleGFtcGxlCiAgICAg
Ly8gaWYgeW91IGNhbGwgYSBnbG9iYWwgZnVuY3Rpb24sIHdoZXJlIHdhdGNocG9pbnRpbmcgZ2l2
ZXMgdXMgc3RhdGljIGluZm9ybWF0aW9uLiBPdmVyYWxsLAogICAgIC8vIGl0J3MgYSByYXJlIGNh
c2UgYmVjYXVzZSB3ZSBleHBlY3QgdGhhdCBhbnkgaG90IGNhbGxlZXMgd291bGQgaGF2ZSBhbHJl
YWR5IGJlZW4gY29tcGlsZWQuCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxl
LT5iYXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CiAg
ICAgaWYgKCFjb2RlQmxvY2spIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG5vIGNvZGUgYmxvY2sgYXZhaWxhYmxlLlxuIik7
CiAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAKLSAgICAvLyBEb2VzIHRoZSBudW1i
ZXIgb2YgYXJndW1lbnRzIHdlJ3JlIHBhc3NpbmcgbWF0Y2ggdGhlIGFyaXR5IG9mIHRoZSB0YXJn
ZXQ/IFdlIGN1cnJlbnRseQotICAgIC8vIGlubGluZSBvbmx5IGlmIHRoZSBudW1iZXIgb2YgYXJn
dW1lbnRzIHBhc3NlZCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlcgotICAg
IC8vIGFyZ3VtZW50cyBleHBlY3RlZC4KLSAgICBpZiAoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkgPiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgewotICAgICAgICBpZiAodmVyYm9zZSkK
LSAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2Ugb2YgYXJpdHkgbWlzbWF0
Y2guXG4iKTsKLSAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworICAgIGlmIChJbmxpbmVDYWxsRnJh
bWU6OmlzVmFyYXJncyhraW5kKSkgeworICAgICAgICAvLyBEb2VzIHRoZSBudW1iZXIgb2YgYXJn
dW1lbnRzIHdlJ3JlIHBhc3NpbmcgbWF0Y2ggdGhlIGFyaXR5IG9mIHRoZSB0YXJnZXQ/IFdlIGN1
cnJlbnRseQorICAgICAgICAvLyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50
cyBwYXNzZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKKyAgICAgICAg
Ly8gYXJndW1lbnRzIGV4cGVjdGVkLgorICAgICAgICBpZiAoY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkgPiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgeworICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBvZiBh
cml0eSBtaXNtYXRjaC5cbiIpOworICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbCA9IGlubGlu
ZUZ1bmN0aW9uRm9yQ2FwYWJpbGl0eUxldmVsKAotICAgICAgICBjb2RlQmxvY2ssIGtpbmQsIGNh
bGxlZS5pc0Nsb3N1cmVDYWxsKCkpOworICAgICAgICBjb2RlQmxvY2ssIHNwZWNpYWxpemF0aW9u
S2luZCwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CiAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAg
ICAgZGF0YUxvZygiICAgIENhbGwgbW9kZTogIiwgY2FsbE1vZGUsICJcbiIpOwogICAgICAgICBk
YXRhTG9nKCIgICAgSXMgY2xvc3VyZSBjYWxsOiAiLCBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpLCAi
XG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIENhcGFiaWxpdHkgbGV2ZWw6ICIsIGNhcGFiaWxp
dHlMZXZlbCwgIlxuIik7Ci0gICAgICAgIGRhdGFMb2coIiAgICBNaWdodCBpbmxpbmUgZnVuY3Rp
b246ICIsIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3IoY29kZUJsb2NrLCBraW5kKSwgIlxuIik7Ci0g
ICAgICAgIGRhdGFMb2coIiAgICBNaWdodCBjb21waWxlIGZ1bmN0aW9uOiAiLCBtaWdodENvbXBp
bGVGdW5jdGlvbkZvcihjb2RlQmxvY2ssIGtpbmQpLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygi
ICAgIE1pZ2h0IGlubGluZSBmdW5jdGlvbjogIiwgbWlnaHRJbmxpbmVGdW5jdGlvbkZvcihjb2Rl
QmxvY2ssIHNwZWNpYWxpemF0aW9uS2luZCksICJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAg
TWlnaHQgY29tcGlsZSBmdW5jdGlvbjogIiwgbWlnaHRDb21waWxlRnVuY3Rpb25Gb3IoY29kZUJs
b2NrLCBzcGVjaWFsaXphdGlvbktpbmQpLCAiXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIElz
IHN1cHBvcnRlZCBmb3IgaW5saW5pbmc6ICIsIGlzU3VwcG9ydGVkRm9ySW5saW5pbmcoY29kZUJs
b2NrKSwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICBJcyBpbmxpbmluZyBjYW5kaWRhdGU6
ICIsIGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmlzSW5saW5pbmdDYW5kaWRh
dGUoKSwgIlxuIik7CiAgICAgfQpAQCAtMTU0MSwxNCArMTU0NiwyMCBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFu
ZCwgQ2FsbFZhcgogewogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25L
aW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CiAgICAg
Ci0gICAgQVNTRVJUKGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBJbmxpbmVDYWxsRnJhbWU6OmNhbGxNb2RlRm9yKGtpbmQpKSAhPSBVSU5UX01BWCk7Cisg
ICAgQVNTRVJUKGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBraW5kKSAhPSBVSU5UX01BWCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
YWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxlKCktPmJhc2VsaW5lQ29kZUJsb2NrRm9yKHNwZWNpYWxp
emF0aW9uS2luZCk7CiAgICAgaW5zZXJ0Q2hlY2tzKGNvZGVCbG9jayk7CiAKICAgICAvLyBGSVhN
RTogRG9uJ3QgZmx1c2ggY29uc3RhbnRzIQorCisgICAgaW50IGFyaXR5Rml4VXBDb3VudCA9IHN0
ZDo6bWF4PGludD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgMCk7CisgICAgLy8gRklYTUU6IGludCByZWdpc3Rlck9mZnNldEFmdGVyRml4
VXAgPSByZWdpc3Rlck9mZnNldCAtIGFyaXR5Rml4VXBDb3VudDsKKyAgICBpbnQgcmVnaXN0ZXJP
ZmZzZXRBZnRlckZpeFVwID0gLVdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigKKyAgICAgICAgICAg
ICAgICBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAorICAgICAgICAgICAgICAgICgtcmVnaXN0
ZXJPZmZzZXQpICsgYXJpdHlGaXhVcENvdW50KTsKICAgICAKLSAgICBpbnQgaW5saW5lQ2FsbEZy
YW1lU3RhcnQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVy
KHJlZ2lzdGVyT2Zmc2V0KSkub2Zmc2V0KCkgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lz
dGVyczsKKyAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGluZVN0YWNrVG9wLT5y
ZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0QWZ0ZXJGaXhVcCkpLm9m
ZnNldCgpICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7CiAgICAgCiAgICAgZW5z
dXJlTG9jYWxzKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lU3RhcnQp
LnRvTG9jYWwoKSArIDEgKwpAQCAtMTU2MywxMiArMTU3NCwyMiBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwg
Q2FsbFZhcgogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogY2FsbGVlVmFyaWFibGUgPSBudWxscHRy
OwogICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CiAgICAgICAgIE5vZGUqIGNhbGxl
ZVNldCA9IHNldCgKLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCAr
IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlhdGVOYWtlZFNl
dCk7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXRBZnRlckZpeFVw
ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgY2FsbFRhcmdldE5vZGUsIEltbWVkaWF0ZU5ha2Vk
U2V0KTsKICAgICAgICAgCiAgICAgICAgIGNhbGxlZVZhcmlhYmxlID0gY2FsbGVlU2V0LT52YXJp
YWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgY2FsbGVlVmFyaWFibGUtPm1lcmdlU2hvdWxkTmV2
ZXJVbmJveCh0cnVlKTsKICAgICB9CiAgICAgCisgICAgaWYgKGFyaXR5Rml4VXBDb3VudCkgewor
ICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXM7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50ID0gZ2V0KHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KGluZGV4LCByZWdpc3Rlck9mZnNldCkpOworICAgICAgICAg
ICAgc2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGluZGV4LCByZWdpc3Rlck9mZnNldEFm
dGVyRml4VXApLCBhcmd1bWVudCwgSW1tZWRpYXRlTmFrZWRTZXQpOworICAgICAgICB9CisgICAg
ICAgIE5vZGUqIHVuZGVmaW5lZCA9IGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fY29u
c3RhbnRVbmRlZmluZWQpKTsKKyAgICAgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IGFy
aXR5Rml4VXBDb3VudDsgKytpbmRleCkKKyAgICAgICAgICAgIHNldCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIGluZGV4LCByZWdpc3Rlck9m
ZnNldEFmdGVyRml4VXApLCB1bmRlZmluZWQsIEltbWVkaWF0ZU5ha2VkU2V0KTsKKyAgICB9CisK
ICAgICBJbmxpbmVTdGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkoCiAgICAgICAgIHRoaXMsIGNv
ZGVCbG9jaywgY29kZUJsb2NrLCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxsZWUuZnVuY3Rpb24o
KSwgcmVzdWx0UmVnLAogICAgICAgICAoVmlydHVhbFJlZ2lzdGVyKWlubGluZUNhbGxGcmFtZVN0
YXJ0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywga2luZCk7CkBAIC0xNzY3LDcgKzE3ODgs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxU
YXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZAogICAgICAgICB9CiAgICAgfQogICAgIAotICAg
IHVuc2lnbmVkIG15SW5saW5pbmdDb3N0ID0gaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCkpOwor
ICAgIHVuc2lnbmVkIG15SW5saW5pbmdDb3N0ID0gaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIGtpbmQpOwogICAgIGlmIChteUlubGluaW5nQ29zdCA+IGlu
bGluaW5nQmFsYW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00MjgwLDcgKzQzMDEs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAg
ICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSB0aGlzLT5pbmxpbmVD
YWxsRnJhbWUoKTsKICAgICAgICAgICAgIE5vZGUqIGxlbmd0aDsKICAgICAgICAgICAgIGlmIChp
bmxpbmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKLSAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudHNMZW5ndGggPSBpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50cy5zaXplKCkgLSAxOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50c0xl
bmd0aCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwog
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bVBhcmFtc1RvU2tpcCA9IGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSByZXN0TGVu
Z3RoOwogICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudHNMZW5ndGggPD0gbnVtUGFyYW1zVG9T
a2lwKQpAQCAtNTczMiw3ICs1NzUzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50OwogICAgICAgICAg
ICAgaW50MzJfdCBhcmd1bWVudEluZGV4SW5jbHVkaW5nVGhpcyA9IGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxp
bmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7Ci0gICAgICAgICAgICAgICAgaW50MzJfdCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUo
KTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKICAgICAgICAgICAg
ICAgICBpZiAoYXJndW1lbnRJbmRleEluY2x1ZGluZ1RoaXMgPCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcykKICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQgPSBnZXQodmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoYXJndW1lbnRJbmRleEluY2x1ZGluZ1RoaXMpKTsKICAgICAgICAgICAg
ICAgICBlbHNlCkBAIC01OTcxLDYgKzU5OTIsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3Rh
Y2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICA6IG1fYnl0ZUNvZGVQYXJzZXIoYnl0ZUNv
ZGVQYXJzZXIpCiAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCiAgICAgLCBtX3Byb2ZpbGVk
QmxvY2socHJvZmlsZWRCbG9jaykKKyAgICAsIG1fYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCiAgICAgLCBtX2NhbGxzaXRlQmxvY2tIZWFkKGNh
bGxzaXRlQmxvY2tIZWFkKQogICAgICwgbV9yZXR1cm5WYWx1ZShyZXR1cm5WYWx1ZVZSKQogICAg
ICwgbV9kaWRSZXR1cm4oZmFsc2UpCkBAIC01OTkyLDggKzYwMTQsOSBAQCBCeXRlQ29kZVBhcnNl
cjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgfQogICAgIH0K
ICAgICAKLSAgICBtX2FyZ3VtZW50UG9zaXRpb25zLnJlc2l6ZShhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpczsgKytpKSB7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZpeFVw
ID0gc3RkOjptYXg8aW50Pihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkpOworICAgIG1fYXJndW1lbnRQb3NpdGlvbnMucmVzaXplKGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZpeFVwKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZpeFVwOyArK2kpIHsKICAgICAgICAgYnl0ZUNv
ZGVQYXJzZXItPm1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5hcHBlbmQoQXJndW1lbnRQb3Np
dGlvbigpKTsKICAgICAgICAgQXJndW1lbnRQb3NpdGlvbiogYXJndW1lbnRQb3NpdGlvbiA9ICZi
eXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zLmxhc3QoKTsKICAgICAg
ICAgbV9hcmd1bWVudFBvc2l0aW9uc1tpXSA9IGFyZ3VtZW50UG9zaXRpb247CkBAIC02MDExLDEz
ICs2MDM0LDE0IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFj
a0VudHJ5KAogICAgICAgICAvLyBwbGFuIGZpbmlzaGVzLgogICAgICAgICBtX2lubGluZUNhbGxG
cmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suc2V0V2l0aG91dFdyaXRlQmFycmllcihjb2RlQmxvY2st
PmJhc2VsaW5lVmVyc2lvbigpKTsKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPnNldFN0YWNr
T2Zmc2V0KGlubGluZUNhbGxGcmFtZVN0YXJ0Lm9mZnNldCgpIC0gQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnMpOworICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKICAgICAgICAgaWYg
KGNhbGxlZSkgewogICAgICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5
ID0gVmFsdWVSZWNvdmVyeTo6Y29uc3RhbnQoY2FsbGVlKTsKICAgICAgICAgICAgIG1faW5saW5l
Q2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwgPSB0cnVlOwogICAgICAgICBt
X2lubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyID0gYnl0ZUNvZGVQYXJzZXItPmN1cnJlbnRD
b2RlT3JpZ2luKCk7Ci0gICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMucmVzaXpl
VG9GaXQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOyAvLyBTZXQgdGhlIG51bWJlciBvZiBh
cmd1bWVudHMgaW5jbHVkaW5nIHRoaXMsIGJ1dCBkb24ndCBjb25maWd1cmUgdGhlIHZhbHVlIHJl
Y292ZXJpZXMsIHlldC4KKyAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhG
aXhVcC5yZXNpemVUb0ZpdChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXhVcCk7IC8v
IFNldCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBpbmNsdWRpbmcgdGhpcywgYnV0IGRvbid0IGNv
bmZpZ3VyZSB0aGUgdmFsdWUgcmVjb3ZlcmllcywgeWV0LgogICAgICAgICBtX2lubGluZUNhbGxG
cmFtZS0+a2luZCA9IGtpbmQ7CiAgICAgICAgIAogICAgICAgICBtX2lkZW50aWZpZXJSZW1hcC5y
ZXNpemUoY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAKaW5kZXggOTYxNDc1Y2JkM2M3NDEyMjY3Zjhj
MDc5YWIzZmNiOTBlZDMyOWJjYi4uY2YyNTEwYWJhNDliODg4MzgyMmZlODhmZjBiY2FkZGQyZTZh
YzE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRh
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwCkBA
IC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDb21tb25EYXRhOjp2YWxpZGF0ZVJlZmVyZW5jZXMoY29u
c3QgVHJhY2tlZFJlZmVyZW5jZXMmIHRyYWNrZWRSZWZlcmVuY2VzKQogewogICAgIGlmIChJbmxp
bmVDYWxsRnJhbWVTZXQqIHNldCA9IGlubGluZUNhbGxGcmFtZXMuZ2V0KCkpIHsKICAgICAgICAg
Zm9yIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA6ICpzZXQpIHsKLSAgICAgICAg
ICAgIGZvciAoVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgOiBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cykgeworICAgICAgICAgICAgZm9yIChWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA6IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeFVwKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJl
Y292ZXJ5LmlzQ29uc3RhbnQoKSkKICAgICAgICAgICAgICAgICAgICAgdHJhY2tlZFJlZmVyZW5j
ZXMuY2hlY2socmVjb3ZlcnkuY29uc3RhbnQoKSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmlu
ZGV4IDczNDVjZDQwNmMwYTU5MjkzYzlhMjk3MmJkODdiNjQ1ODg1YTBiZTcuLmI1NDlkOGJhZTI5
NDAwMThmNDNiMTFiMzhjN2E4ZmMxNzNkODUwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0zMzUsNyArMzM1
LDcgQEAgY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICAgICAgICAgIC8vIEdldE15QXJndW1lbnRCeVZhbCBpbiBzdWNoIHN0YXRpY2FsbHktb3V0LW9m
LWJvdW5kcyBhY2Nlc3Nlczsgd2UganVzdCBsb3NlIENGQSB1bmxlc3MKICAgICAgICAgICAgICAg
ICAvLyBHQ1NFIHJlbW92ZXMgdGhlIGFjY2VzcyBlbnRpcmVseS4KICAgICAgICAgICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKQorICAgICAgICAgICAgICAgICAg
ICBpZiAoaW5kZXggPj0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyAtIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gbV9zdGF0ZS52YXJpYWJs
ZXMoKS5udW1iZXJPZkFyZ3VtZW50cygpIC0gMSkKQEAgLTM1Niw3ICszNTYsNyBAQCBjbGFzcyBD
b25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpbmRleCArIDEpLCBGbHVzaGVkSlNWYWx1
ZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkgJiYg
aW5kZXggPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFy
Z3MoKSAmJiBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0dldFN0YWNrKGRh
dGEpOwogICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4
IDViOGU3MTJjYzBkZjgwNzhiMjMwYmQ3MmJhMDIzNDc0MzEyMGYwYmQuLmI0MjM1OTQ5YThjYTFj
MjMzMGNhOTIyNDJhNDc5ZDIyZmI2MWQxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCkBAIC0xMDg2LDcgKzEwODYsNyBAQCBib29sIEdyYXBoOjppc0xpdmVJbkJ5dGVj
b2RlKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiAgICAg
ICAgIC8vIEFyZ3VtZW50cyBhcmUgYWx3YXlzIGxpdmUuIFRoaXMgd291bGQgYmUgcmVkdW5kYW50
IGlmIGl0IHdhc24ndCBmb3Igb3VyCiAgICAgICAgIC8vIG9wX2NhbGxfdmFyYXJncyBpbmxpbmlu
Zy4KICAgICAgICAgaWYgKHJlZy5pc0FyZ3VtZW50KCkKLSAgICAgICAgICAgICYmIHN0YXRpY19j
YXN0PHNpemVfdD4ocmVnLnRvQXJndW1lbnQoKSkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
cy5zaXplKCkpIHsKKyAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PHNpemVfdD4ocmVnLnRvQXJn
dW1lbnQoKSkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXhVcC5zaXplKCkpIHsK
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkFyZ3Vt
ZW50IGlzIGxpdmUuXG4iKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDY2Y2E1MTE1MzlhZTc3Y2FlOTNmZjk3N2I1MWYxNmMw
ZjE5ZjAzMWYuLjNlNmJhYTY3M2VmNWNlNDk0MWZkYjJkNmRjMWRkOGY5NWI0Zjc2NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTgyOCw3ICs4MjgsNyBAQCBjbGFzcyBH
cmFwaCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAgICAgICAgICAgICAvLyBBcmd1bWVu
dHMgYXJlIGFsd2F5cyBsaXZlLiBUaGlzIHdvdWxkIGJlIHJlZHVuZGFudCBpZiBpdCB3YXNuJ3Qg
Zm9yIG91cgogICAgICAgICAgICAgLy8gb3BfY2FsbF92YXJhcmdzIGlubGluaW5nLiBTZWUgdGhl
IGNvbW1lbnQgYWJvdmUuCiAgICAgICAgICAgICBleGNsdXNpb25TdGFydCA9IHN0YWNrT2Zmc2V0
ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCk7Ci0gICAgICAgICAg
ICBleGNsdXNpb25FbmQgPSBzdGFja09mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJ
bmNsdWRpbmdUaGlzKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSk7CisgICAgICAg
ICAgICBleGNsdXNpb25FbmQgPSBzdGFja09mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZz
ZXRJbmNsdWRpbmdUaGlzKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeFVwLnNpemUo
KSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFdlIHdpbGwgYWx3YXlzIGhhdmUgYSAi
dGhpcyIgYXJndW1lbnQgYW5kIGV4Y2x1c2lvblN0YXJ0IHNob3VsZCBiZSBhIHNtYWxsZXIgc3Rh
Y2sKICAgICAgICAgICAgIC8vIG9mZnNldCB0aGFuIGV4Y2x1c2lvbkVuZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5
c2lzUGhhc2UuY3BwCmluZGV4IGU4YjQ1YzQ1YTYyZmM0NDljMjE5Y2E0ZGFlZTRjZTFlNmRkZmNi
ODUuLjNjZGE2ODcyZTRjNzg0OTBiY2QwN2Q1OWQ3ZjliOWVkOTgwNWM1MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlB
bmFseXNpc1BoYXNlLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgTG9jYWxPU1JBdmFpbGFi
aWxpdHlDYWxjdWxhdG9yOjpleGVjdXRlTm9kZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9h
dmFpbGFiaWxpdHkubV9oZWFwLnNldChQcm9tb3RlZEhlYXBMb2NhdGlvbihBcmd1bWVudHNDYWxs
ZWVQTG9jLCBub2RlKSwgY2FsbGVlKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7IGkgPCBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsgKytpKSB7CiAgICAgICAgICAgICBBdmFpbGFiaWxpdHkg
YXJndW1lbnQgPSBtX2F2YWlsYWJpbGl0eS5tX2xvY2Fscy5vcGVyYW5kKAogICAgICAgICAgICAg
ICAgIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zm
c2V0KGkpKTsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dC5jcHAKaW5kZXggYmQ3ODU3ZjlmZTcxZTFkZTBjYzc0NzZjODgzMzVlODViMzI5ZjBkNi4uM2I3
M2ExMmMxMDlkODNmOTgwNTY5NThmMmE1OTVhNWE4ZDYyNDI5NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBPU1JFeGl0
OjplbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT3BlcmFuZHM8
VmFsdWVSZWNvdmUKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBqaXQubW92ZSgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLAor
ICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLAogICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QxKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXggZjc2Y2NiODhiYjFlNGM3
YTc3YTQ5NDZkNTc3ODg0Yzk3MjUwMjBhZS4uNWE4Y2E0NzViZGMxMGFiYWJjZTA2ZTA5ZWE1ZjQz
OGY5NTU2YWY5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgcmVpZnlJ
bmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4
aXQpCiAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMik7CiAKICAgICAgICAgaWYgKCFpbmxpbmVD
YWxsRnJhbWUtPmlzVmFyYXJncygpKQotICAgICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSwg
QXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAg
ICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIEFzc2VtYmx5SGVscGVyczo6
cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgICAgICBqaXQuc3RvcmU2NChjYWxsZXJGcmFtZUdQUiwgQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yQnl0ZU9mZnNldChpbmxpbmVDYWxsRnJhbWUtPmNhbGxlckZyYW1lT2Zmc2V0KCkpKTsK
ICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2lu
LT5ieXRlY29kZUluZGV4KS5iaXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCmluZGV4IDVmMGFkYzZlNTNjZWM2MmQx
OTg2MGU0MDEwNWM2NGU0NTc5ZTlhOTAuLjFiMjEwOWZiZGJjNzA2YTM5NmY1ZGE5ZjBhODU5ZGM3
MTM0NzYzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lz
ZUxvY2FsQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
Y2lzZUxvY2FsQ2xvYmJlcml6ZS5oCkBAIC0xMTQsNyArMTE0LDcgQEAgY2xhc3MgUHJlY2lzZUxv
Y2FsQ2xvYmJlcml6ZUFkYXB0b3IgewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIG51
bWJlck9mQXJndW1lbnRzVG9Ta2lwOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6
ZSgpOyBpKyspCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgbnVtYmVyT2ZBcmd1
bWVudHNUb1NraXA7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXhVcC5zaXpl
KCk7IGkrKykKICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5vZmZz
ZXQoKSkpOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCiAg
ICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwpAQCAtMjE5LDcgKzIx
OSw3IEBAIGNsYXNzIFByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yIHsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpbmxpbmVDYWxsRnJhbWUtPmlz
VmFyYXJncygpLCAiR2V0QXJndW1lbnQgaXMgb25seSB1c2VkIGZvciBJbmxpbmVDYWxsRnJhbWUg
aWYgdGhlIGNhbGwgZnJhbWUgaXMgdmFyYXJncy4iKTsKLSAgICAgICAgICAgIGlmIChpbmRleElu
Y2x1ZGluZ1RoaXMgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpCisgICAgICAg
ICAgICBpZiAoaW5kZXhJbmNsdWRpbmdUaGlzIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNX
aXRoRml4VXAuc2l6ZSgpKQogICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIo
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KGluZGV4SW5jbHVkaW5nVGhpcykub2Zmc2V0KCkpKTsKICAgICAgICAgICAgIG1fcmVhZChWaXJ0
dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM5LDcgKzIzOSw3IEBA
IGNsYXNzIFByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yIHsKICAgICAgICAgICAgIC8vIFJl
YWQgYWxsIG9mIHRoZSBpbmxpbmUgYXJndW1lbnRzIGFuZCBjYWxsIGZyYW1lIGhlYWRlcnMgdGhh
dCB3ZSBkaWRuJ3QgYWxyZWFkeSBjYXB0dXJlLgogICAgICAgICAgICAgZm9yIChJbmxpbmVDYWxs
RnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNh
bGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJh
bWUtPmdldENhbGxlcklubGluZUZyYW1lU2tpcHBpbmdUYWlsQ2FsbHMoKSkgewogICAgICAgICAg
ICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5z
aXplKCk7IGktLSA+IDE7KQorICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXhVcC5zaXplKCk7IGktLSA+IDE7KQogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkub2Zmc2V0KCkp
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFt
ZS0+aXNDbG9zdXJlQ2FsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggMTBhNDE1M2NmNGJiZTIxMzU2YmJhZDUyOTE1ZWY5ZTU3MGJk
ZGY2YS4uYjNiYmY5ZjliMjdhZDVlYTE5YjA1NGNjYzYxN2Y5N2JmODMzNDQzYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTE3MSw3
ICsxNzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QoR1BS
UmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgR1BSUmVnIGxl
bmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcykKIHsKICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYm
ICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAhaW5jbHVkZVRoaXMp
LCBsZW5ndGhHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gIWluY2x1ZGVUaGlzKSwgbGVuZ3Ro
R1BSKTsKICAgICBlbHNlIHsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRS
ZWdpc3RlciA9IG1faml0LmFyZ3VtZW50Q291bnQoaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAg
bV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdpc3Rl
ciksIGxlbmd0aEdQUik7CkBAIC02NzQ5LDcgKzY3NDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKE5vZGUqIG5vZGUpCiAgICAgYm9vbCBsZW5n
dGhJc0tub3duOyAvLyBpZiBmYWxzZSwgbGVuZ3RoR1BSIHdpbGwgaGF2ZSB0aGUgbGVuZ3RoLgog
ICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lCiAgICAgICAgICYm
ICFub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewot
ICAgICAgICBrbm93bkxlbmd0aCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxOworICAgICAgICBrbm93bkxlbmd0aCA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
IC0gMTsKICAgICAgICAgbGVuZ3RoSXNLbm93biA9IHRydWU7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAga25vd25MZW5ndGggPSBVSU5UX01BWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCmluZGV4IDAzYzUwMmZjODgwZGNiYTgyM2M3ZTFh
NGRjOWQ4OWVhMjY3NGQ2ZGQuLjMyZDcyMDM4MDg3Nzc2MTAxZjY3YjZjZDIyNGRlY2Q0OGM3OGZl
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBo
YXNlLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIFN0YWNrTGF5b3V0UGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50ICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9
IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgYXJndW1lbnQtLSA+IDE7KSB7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHNXaXRoRml4VXAuc2l6ZSgpOyBhcmd1bWVudC0tID4gMTspIHsKICAgICAgICAgICAgICAg
ICB1c2VkTG9jYWxzLnNldChWaXJ0dWFsUmVnaXN0ZXIoCiAgICAgICAgICAgICAgICAgICAgIHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KS5vZmZzZXQoKSArCiAgICAgICAgICAg
ICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSk7CkBAIC0x
ODcsNyArMTg3LDcgQEAgY2xhc3MgU3RhY2tMYXlvdXRQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgICAgICAgICAgICAgIGFsbG9jYXRpb24sIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3Vt
ZW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOyBhcmd1bWVudC0tID4gMTsp
IHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50c1dpdGhGaXhVcC5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgewogICAgICAgICAg
ICAgICAgIEFyZ3VtZW50UG9zaXRpb24mIHBvc2l0aW9uID0gbV9ncmFwaC5tX2FyZ3VtZW50UG9z
aXRpb25zWwogICAgICAgICAgICAgICAgICAgICBkYXRhLmFyZ3VtZW50UG9zaXRpb25TdGFydCAr
IGFyZ3VtZW50XTsKICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxl
ID0gcG9zaXRpb24uc29tZVZhcmlhYmxlKCk7CkBAIC0xOTgsNyArMTk4LDcgQEAgY2xhc3MgU3Rh
Y2tMYXlvdXRQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgIHNvdXJj
ZSA9IFZhbHVlU291cmNlOjpmb3JGbHVzaEZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAg
IHZhcmlhYmxlLT5tYWNoaW5lTG9jYWwoKSwgdmFyaWFibGUtPmZsdXNoRm9ybWF0KCkpOwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
c1thcmd1bWVudF0gPSBzb3VyY2UudmFsdWVSZWNvdmVyeSgpOworICAgICAgICAgICAgICAgIGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeFVwW2FyZ3VtZW50XSA9IHNvdXJjZS52YWx1
ZVJlY292ZXJ5KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCA9PSAhIWRhdGEuY2Fs
bGVlVmFyaWFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21waWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKaW5k
ZXggZmQwOTE0NTZmNzUzZmZmMjU3NzAwZTAyNTU2ZWIxYTZiYzdiMTUxZS4uNGFlMTliNjRkYjA1
NzZhMjEyZmMwYzM4YTJiMThkNzQ5Zjc1MzZmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENvbXBpbGUuY3BwCkBAIC05OCw5ICs5OCw5IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3Rh
dGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgICAgIGlmIChpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3Rlci5pc1ZhbGlkKCkpCiAgICAgICAgICAg
ICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlciArPSBsb2NhbHNPZmZzZXQ7
CiAgICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpOyBhcmd1bWVudC0tID4gMTspIHsKLSAgICAgICAgICAgIGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzW2FyZ3VtZW50XSA9Ci0gICAgICAgICAgICAgICAgaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbYXJndW1lbnRdLndpdGhMb2NhbHNPZmZzZXQobG9jYWxz
T2Zmc2V0KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzV2l0aEZpeFVwLnNpemUoKTsgYXJndW1lbnQtLSA+IDE7KSB7CisgICAgICAg
ICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXhVcFthcmd1bWVudF0gPQorICAg
ICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeFVwW2FyZ3VtZW50
XS53aXRoTG9jYWxzT2Zmc2V0KGxvY2Fsc09mZnNldCk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA5NjZlZDNhYWE5OWFi
MTI2ZjhjMDdhMGEyZDMyMThkYTcyZTg5ODgyLi5lMWI4ODI4NGU5MmQ2MDgxNTU2NzM0MzRjMTVj
ODFlMzk1NTZmZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCkBAIC0zNjg1LDcgKzM2ODUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICAKICAgICAgICAgTFZhbHVlIGxpbWl0OwogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1l
ICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQotICAgICAgICAgICAgbGltaXQgPSBt
X291dC5jb25zdEludDMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpOwor
ICAgICAgICAgICAgbGltaXQgPSBtX291dC5jb25zdEludDMyKGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0gQXNzZW1ibHlIZWxwZXJz
Ojphcmd1bWVudENvdW50KGlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICBsaW1pdCA9IG1f
b3V0LnN1YihtX291dC5sb2FkMzIocGF5bG9hZEZvcihhcmd1bWVudENvdW50UmVnaXN0ZXIpKSwg
bV9vdXQuaW50MzJPbmUpOwpAQCAtMzcwOCw4ICszNzA4LDggQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgCiAgICAgICAgIFR5cGVkUG9pbnRlciBiYXNlOwogICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lKSB7Ci0gICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHMuc2l6ZSgpID4gMSkKLSAgICAgICAgICAgICAgICBiYXNlID0gYWRkcmVzc0ZvcihpbmxpbmVD
YWxsRnJhbWUtPmFyZ3VtZW50c1sxXS52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+IDEpCisgICAg
ICAgICAgICAgICAgYmFzZSA9IGFkZHJlc3NGb3IoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNX
aXRoRml4VXBbMV0udmlydHVhbFJlZ2lzdGVyKCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGJhc2UgPSBhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEpKTsKICAg
ICAgICAgCkBAIC05NTgxLDcgKzk1ODEsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICBBcmd1bWVudHNMZW5ndGggbGVuZ3RoOwogCiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUg
JiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKLSAgICAgICAgICAgIGxlbmd0aC5r
bm93biA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAg
ICBsZW5ndGgua25vd24gPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzIC0gMTsKICAgICAgICAgICAgIGxlbmd0aC5pc0tub3duID0gdHJ1ZTsKICAgICAgICAgICAg
IGxlbmd0aC52YWx1ZSA9IG1fb3V0LmNvbnN0SW50MzIobGVuZ3RoLmtub3duKTsKICAgICAgICAg
fSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCmlu
ZGV4IDE5NDBhMDhiZmExMDg5NWIxYjY5N2YxYzM1MGE1OWE3YzdhZjQyMzguLjAxYjViNDY0MWFi
MzUyN2NjM2NjODBhMTNlYmI1MThkMTkzODczMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPcGVyYXRpb25zLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIGV4dGVybiAiQyIgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgYXJndW1lbnRDb3VudCA9IG1hdGVyaWFsaXphdGlvbi0+b3JpZ2luKCkuaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOworICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9IG1h
dGVyaWFsaXphdGlvbi0+b3JpZ2luKCkuaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpczsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJndW1lbnRDb3VudCk7CiAgICAg
ICAgIAogICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCAxNzVm
ZmYzMWJhZjNhMWEzN2Q0OWI2ZTFjM2UwMzZmNjEzZWM1MGY0Li44NWQxNDdhNDdjN2YxOTVhYTYz
YTJiMmU1N2E0Njc2MjNkYjZiYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgU3Rh
Y2tWaXNpdG9yOjpyZWFkSW5saW5lZEZyYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlT3Jp
Z2luKiBjb2RlT3JpZ2luCiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnRSZWdpc3Rlci5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBtX2ZyYW1lLm1fYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPnIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENv
dW50UmVnaXN0ZXIub2Zmc2V0KCkpLnVuYm94ZWRJbnQzMigpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX2ZyYW1lLm1fYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7CisgICAgICAgICAgICBtX2ZyYW1lLm1fYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzOwogICAgICAgICBtX2ZyYW1lLm1fY29kZUJsb2NrID0gaW5saW5lQ2FsbEZyYW1lLT5i
YXNlbGluZUNvZGVCbG9jay5nZXQoKTsKICAgICAgICAgbV9mcmFtZS5tX2J5dGVjb2RlT2Zmc2V0
ID0gY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggOTM4YmQxZTNmMGQwYzEzMGZhMjM3ZmRjNjdmZTJl
NWQzN2UwN2QwNi4uN2Y5YWUxOGFhMzcxNTFjNDUxYWQ0NTM1Mzg3NDc4MTIwYmQ4NTBhYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xMjIwLDkg
KzEyMjAsOSBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIg
ewogICAgIHsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1
cm4gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoMCkpOwotICAgICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIDw9IDEpCisgICAgICAgIGlm
IChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDw9IDEpCiAgICAg
ICAgICAgICByZXR1cm4gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoMCk7Ci0gICAgICAgIFZhbHVl
UmVjb3ZlcnkgcmVjb3ZlcnkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1sxXTsKKyAgICAg
ICAgVmFsdWVSZWNvdmVyeSByZWNvdmVyeSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0
aEZpeFVwWzFdOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWNvdmVyeS50ZWNobmlxdWUoKSA9
PSBEaXNwbGFjZWRJbkpTU3RhY2spOwogICAgICAgICByZXR1cm4gcmVjb3ZlcnkudmlydHVhbFJl
Z2lzdGVyKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9T
ZXR1cFZhcmFyZ3NGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFy
YXJnc0ZyYW1lLmNwcAppbmRleCAwZjk2MWE2NjFmYjI0NzQ0MjkwZTIyZGY2MTdhYmIyN2U1ZTRj
ZTIwLi40MWVlNWZhZTQ2MjcxZjZmMzkxNzlkYmJiOWViODBkNTUyMGI4ZGZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcApAQCAtMTIxLDEx
ICsxMjEsMTAgQEAgdm9pZCBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShWTSYgdm0sIEND
YWxsSGVscGVycyYgaml0LCBHUFJSZWcgbnVtVXNlZFNsb3QKICAgICAgICAgICAgIGFyZ3VtZW50
Q291bnRSZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjaygKICAgICAg
ICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlciwgRGF0YUZv
cm1hdEludDMyKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFyZ3VtZW50Q291bnRS
ZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KAotICAgICAgICAgICAgICAgIGpzTnVt
YmVyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpOworICAgICAgICAgICAgYXJn
dW1lbnRDb3VudFJlY292ZXJ5ID0gVmFsdWVSZWNvdmVyeTo6Y29uc3RhbnQoanNOdW1iZXIoaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgICAgICB9Ci0g
ICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgPiAxKQotICAgICAg
ICAgICAgZmlyc3RBcmd1bWVudFJlZyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzWzFdLnZp
cnR1YWxSZWdpc3RlcigpOworICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyA+IDEpCisgICAgICAgICAgICBmaXJzdEFyZ3VtZW50UmVnID0gaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4VXBbMV0udmlydHVhbFJlZ2lzdGVyKCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBWaXJ0dWFsUmVnaXN0
ZXIoMCk7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DbG9uZWRBcmd1bWVudHMuY3BwCmluZGV4IGYwOTc4OGI3NWYzNWVjM2U4YjZlZThiZGRkZWE4
NGYxM2FiOTNjZDQuLmE3N2NjYjJiZDJkNTQ4OThkMzdhNThkY2E1ZDhlY2QxNmNlNGE4ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNw
cApAQCAtMTAzLDEyICsxMDMsMTIgQEAgQ2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1bWVudHM6
OmNyZWF0ZVdpdGhJbmxpbmVGcmFtZShFeGVjU3RhdGUqIG15RnJhbWUsIEV4ZWMKICAgICAgICAg
ICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3Rlci5pc1ZhbGlkKCkp
CiAgICAgICAgICAgICAgICAgbGVuZ3RoID0gdGFyZ2V0RnJhbWUtPnIoaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudENvdW50UmVnaXN0ZXIpLnVuYm94ZWRJbnQzMigpOwogICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKTsKKyAgICAgICAgICAgICAgICBsZW5ndGggPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzOwogICAgICAgICAgICAgbGVuZ3RoLS07CiAgICAgICAgICAgICBy
ZXN1bHQgPSBjcmVhdGVFbXB0eShteUZyYW1lLCBjYWxsZWUsIGxlbmd0aCk7CiAKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKLSAgICAgICAgICAgICAgICByZXN1
bHQtPnB1dERpcmVjdEluZGV4KG15RnJhbWUsIGksIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
W2kgKyAxXS5yZWNvdmVyKHRhcmdldEZyYW1lKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LT5w
dXREaXJlY3RJbmRleChteUZyYW1lLCBpLCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhG
aXhVcFtpICsgMV0ucmVjb3Zlcih0YXJnZXRGcmFtZSkpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgbGVuZ3RoID0gdGFyZ2V0RnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICAgICAg
ICAgIHJlc3VsdCA9IGNyZWF0ZUVtcHR5KG15RnJhbWUsIGNhbGxlZSwgbGVuZ3RoKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjUyODM0
YTRmYjE4MWIwZWE2MDE3Yzk0YjE3MTc5OTNiZjMwZGMwYS4uNjJmNjNlOTUxZWU5ZTU1YWZhMzI5
YzZmOTNmYjljMmY2NzkyN2RhYiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wOC0xNyAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbREZHXSBSZWxheCBhcml0
eSByZXF1aXJlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc1NTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBzdHJlc3MvYXJpdHktbWlzbWF0Y2gtaW5saW5pbmcuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAoaW5saW5lVGFyZ2V0KToKKyAgICAgICAgKHRlc3QpOgor
CiAyMDE3LTA4LTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAg
ICAgICAgU3VwcG9ydCB0aGUgJ3dpdGgnIGtleXdvcmQgaW4gRlRMLgpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtaW5saW5pbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9h
cml0eS1taXNtYXRjaC1pbmxpbmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDEzZTY0NDQxNmJmZjEzOWY5
NGYwZDJiMjNkMzE4MjhkMDVlNWZkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
YXJpdHktbWlzbWF0Y2gtaW5saW5pbmcuanMKQEAgLTAsMCArMSwyMiBAQAorZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiBpbmxpbmVUYXJnZXQoYXJnMSwgYXJnMiwgYXJnMykKK3sKKyAgICByZXR1cm4gW2Fy
ZzEsIGFyZzIsIGFyZzNdOworfQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICAgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5s
aW5lVGFyZ2V0KCkpLCBgW251bGwsbnVsbCxudWxsXWApOworICAgICAgICBzaG91bGRCZShKU09O
LnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIpKSwgYFs0MixudWxsLG51bGxdYCk7CisgICAgICAg
IHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGlubGluZVRhcmdldCg0MiwgNDMpKSwgYFs0Miw0Myxu
dWxsXWApOworICAgICAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIs
IDQzLCA0NCkpLCBgWzQyLDQzLDQ0XWApOworICAgICAgICBzaG91bGRCZShKU09OLnN0cmluZ2lm
eShpbmxpbmVUYXJnZXQoNDIsIDQzLCA0NCwgNDUpKSwgYFs0Miw0Myw0NF1gKTsKKyAgICB9Cit9
Citub0lubGluZSh0ZXN0KTsKK3Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318456</attachid>
            <date>2017-08-17 18:30:15 -0700</date>
            <delta_ts>2017-08-18 00:08:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175523-20170818103014.patch</filename>
            <type>text/plain</type>
            <size>53648</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZjA1Nzg3YjIyZTgxZTYwMjY0OWEzYTJjMDMyM2ZjZWNiZmRhOTU0Li4zYjkwNjg5ZDljYmExYzUz
ODFlNzBkYTEyMDE4ZmFkYWJiZWI4YzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAxNy0wOC0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2l4U3BlZWQgc2hvd3MgaW1w
cm92ZW1lbnQgd2hlbiB3ZSBjYW4gaW5saW5lIGFyaXR5LW1pc21hdGNoZWQgZnVuY3Rpb25zLiAo
Rm9yIGV4YW1wbGUsIGNhbGxpbmcgZ2VuZXJhdG9yLm5leHQoKSkuCisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgIHBh
dGNoZWQKKworICAgICAgICBkZWZhdWx0cy5lczUgICAgICAgICAgICAgICAgIDEzNzYuMjQyMist
MjMuOTYwMCAgICBeICAgIDQ3Mi4zNTA0Ky0yMi41NDI3ICAgICAgIF4gZGVmaW5pdGVseSAyLjkx
MzZ4IGZhc3RlcgorICAgICAgICByZXN0LmVzNiAgICAgICAgICAgICAgICAgICAgICAgIDUuMzA3
MCstMC44NjkyICAgICBeICAgICAgMy43NDgyKy0wLjU4MTcgICAgICAgIF4gZGVmaW5pdGVseSAx
LjQxNTl4IGZhc3RlcgorICAgICAgICBzcHJlYWQtZ2VuZXJhdG9yLmVzNiAgICAgICAgICAzMzUu
NzAxMystOS4zMzMzICAgICBeICAgIDI5Ny43MjAyKy04LjAwMjQgICAgICAgIF4gZGVmaW5pdGVs
eSAxLjEyNzZ4IGZhc3RlcgorICAgICAgICBnZW5lcmF0b3IuZXM2ICAgICAgICAgICAgICAgICAz
MzMuODIzNystMTIuNzg1OSAgICBeICAgIDI5MC43NzU4Ky0xMC43OTY4ICAgICAgIF4gZGVmaW5p
dGVseSAxLjE0ODB4IGZhc3RlcgorCisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1l
LmNwcDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpkdW1wSW5Db250ZXh0IGNvbnN0
KToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6
SW5saW5lQ2FsbEZyYW1lOjpJbmxpbmVDYWxsRnJhbWUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICog
ZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdB
cmd1bWVudHNVdGlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmFyZ3VtZW50c0ludm9s
dmVTdGFja1Nsb3QpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRDb2RlVG9HZXRBcmd1bWVudHNB
cnJheUxlbmd0aCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6ZmluZEFyZ3VtZW50UG9zaXRpb25Gb3JMb2Nh
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmZsdXNoKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0QXJndW1lbnRDb3VudCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAqIGRmZy9E
RkdDb21tb25EYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb21tb25EYXRhOjp2YWxpZGF0
ZVJlZmVyZW5jZXMpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMp
OgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmlzTGl2ZUluQnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAo
SlNDOjpERkc6OkdyYXBoOjpmb3JBbGxMb2NhbHNMaXZlSW5CeXRlY29kZSk6CisgICAgICAgICog
ZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkxvY2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3VsYXRvcjo6ZXhlY3V0ZU5vZGUpOgorICAgICAg
ICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjplbWl0
UmVzdG9yZUFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAg
ICAgICogZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvcjo6cmVhZFRvcCk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdEdldExlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMpOgorICAgICAgICAqIGRmZy9ERkdTdGFja0xheW91
dFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdGFja0xheW91dFBoYXNlOjpydW4pOgor
ICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxl
KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldE15QXJndW1lbnRCeVZhbCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEFyZ3VtZW50c0xlbmd0aCk6CisgICAg
ICAgICogZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlv
bk1hdGVyaWFsaXplT2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlz
aXRvci5jcHA6CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6cmVhZElubGluZWRGcmFtZSk6
CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmFyZ3VtZW50c1N0YXJ0KToKKyAgICAgICAgKiBqaXQvU2V0dXBWYXJhcmdzRnJh
bWUuY3BwOgorICAgICAgICAoSlNDOjplbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZSk6Cisg
ICAgICAgICogcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpDbG9u
ZWRBcmd1bWVudHM6OmNyZWF0ZVdpdGhJbmxpbmVGcmFtZSk6CisKIDIwMTctMDgtMTYgIENzYWJh
IE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggSlNDT25seSBB
Uk0gYnVpbGRib3RzIGFmdGVyIHIyMjAwNDcgYW5kIHIyMjAxODQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5jcHAKaW5kZXggOTdjZTg0ZDYz
NTgzMDMyMDhjZjA2MGUzYzVjNmFiZDM2ZTYyN2Y2MS4uNjIxMzdhNDU2ODEzNmQ3NzVjNjRmOGM0
Yjg0ODRmNThkZjU5NDBlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lubGluZUNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lubGluZUNhbGxGcmFtZS5jcHAKQEAgLTc0LDcgKzc0LDggQEAgdm9pZCBJbmxpbmVDYWxs
RnJhbWU6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRl
eHQpIGNvbnMKICAgICAgICAgb3V0LnByaW50KCIsIGNsb3N1cmUgY2FsbCIpOwogICAgIGVsc2UK
ICAgICAgICAgb3V0LnByaW50KCIsIGtub3duIGNhbGxlZTogIiwgaW5Db250ZXh0KGNhbGxlZVJl
Y292ZXJ5LmNvbnN0YW50KCksIGNvbnRleHQpKTsKLSAgICBvdXQucHJpbnQoIiwgbnVtQXJncyt0
aGlzID0gIiwgYXJndW1lbnRzLnNpemUoKSk7CisgICAgb3V0LnByaW50KCIsIG51bUFyZ3MrdGhp
cyA9ICIsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICBvdXQucHJpbnQoIiwgbnVt
UGFyYW1zK3RoaXMgPSAiLCBhcmd1bWVudHNXaXRoRml4VXAuc2l6ZSgpKTsKICAgICBvdXQucHJp
bnQoIiwgc3RhY2tPZmZzZXQgPSAiLCBzdGFja09mZnNldCk7CiAgICAgb3V0LnByaW50KCIgKCIs
IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKDApLCAiIG1hcHMgdG8gIiwgdmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoMCkgKyBzdGFja09mZnNldCwgIik+Iik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKaW5kZXggYmUxYWZkYjE5Njc5ZDQ3
YTBhMGNhNWNhZWFjZDVlMjUxZTlhOGM1Ni4uMWE3ZWYxYzViYTgyYjAwMTQyNTg4MGVmZjdlMjE0
ZGExNGI5M2Q3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
bGluZUNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Jbmxp
bmVDYWxsRnJhbWUuaApAQCAtMTc1LDExICsxNzUsMTIgQEAgc3RydWN0IElubGluZUNhbGxGcmFt
ZSB7CiAgICAgICAgIHJldHVybiBjYWxsZXIgPyBjYWxsZXItPmlubGluZUNhbGxGcmFtZSA6IG51
bGxwdHI7CiAgICAgfQogICAgIAotICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5PiBhcmd1bWVudHM7
IC8vIEluY2x1ZGVzICd0aGlzJy4KKyAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeT4gYXJndW1lbnRz
V2l0aEZpeFVwOyAvLyBJbmNsdWRlcyAndGhpcycuCiAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9j
az4gYmFzZWxpbmVDb2RlQmxvY2s7CiAgICAgVmFsdWVSZWNvdmVyeSBjYWxsZWVSZWNvdmVyeTsK
ICAgICBDb2RlT3JpZ2luIGRpcmVjdENhbGxlcjsKIAorICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzOwogICAgIHNpZ25lZCBzdGFja09mZnNldCA6IDI4OwogICAgIHVuc2ln
bmVkIGtpbmQgOiAzOyAvLyByZWFsIHR5cGUgaXMgS2luZAogICAgIGJvb2wgaXNDbG9zdXJlQ2Fs
bCA6IDE7IC8vIElmIGZhbHNlIHRoZW4gd2Uga25vdyB0aGF0IGNhbGxlZS9zY29wZSBhcmUgY29u
c3RhbnRzIGFuZCB0aGUgREZHIHdvbid0IHRyZWF0IHRoZW0gYXMgdmFyaWFibGVzLCBpLmUuIHRo
ZXkgaGF2ZSB0byBiZSByZWNvdmVyZWQgbWFudWFsbHkuCkBAIC0xODksNyArMTkwLDggQEAgc3Ry
dWN0IElubGluZUNhbGxGcmFtZSB7CiAgICAgLy8gSW5saW5lQ2FsbEZyYW1lJ3MgZmllbGRzLiBU
aGlzIGNvbnN0cnVjdG9yIGlzIGhlcmUganVzdCB0byByZWR1Y2UgY29uZnVzaW9uIGlmCiAgICAg
Ly8gd2UgZm9yZ290IHRvIGluaXRpYWxpemUgZXhwbGljaXRseS4KICAgICBJbmxpbmVDYWxsRnJh
bWUoKQotICAgICAgICA6IHN0YWNrT2Zmc2V0KDApCisgICAgICAgIDogYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMoMCkKKyAgICAgICAgLCBzdGFja09mZnNldCgwKQogICAgICAgICAsIGtpbmQo
Q2FsbCkKICAgICAgICAgLCBpc0Nsb3N1cmVDYWxsKGZhbHNlKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCA0ZDFlMGE3ZTMyOGQ3NTVjYjQ4OTMwMWI4N2UyZGI1MWQ3ZWFkNWJkLi5kYTRm
OTlhYmUyZjNmMmRhODg5ZmNiYmE3MjJjYjRmMjg4ODg0MjUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CkBAIC0xNzMyLDcgKzE3MzIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudEluZGV4ID0gaW5kZXguYXNVSW50MzIo
KSArIG5vZGUtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7CiAgICAgICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50SW5kZXggPCBpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKSB7CisgICAgICAgICAgICAgICAgaWYg
KGFyZ3VtZW50SW5kZXggPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzIC0gMSkgewogICAgICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpID0gbV9zdGF0ZS52
YXJpYWJsZXMoKS5vcGVyYW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoYXJndW1lbnRJbmRleCArIDEpICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHMo
dHJ1ZSk7CkBAIC0xNzUxLDcgKzE3NTEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAg
ICAgICAgICAgLy8gV2UgaGF2ZSBhIGJvdW5kIG9uIHRoZSB0eXBlcyBldmVuIHRob3VnaCBpdCdz
IHJhbmRvbSBhY2Nlc3MuIFRha2UgYWR2YW50YWdlIG9mIHRoaXMuCiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIEFic3RyYWN0VmFsdWUgcmVzdWx0OwotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMSArIG5vZGUtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7IGkgPCBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMSArIG5vZGUtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7IGkgPCBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2kpIHsKICAgICAgICAgICAgICAg
ICByZXN1bHQubWVyZ2UoCiAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCku
b3BlcmFuZCgKICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KGkpICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5j
cHAKaW5kZXggYzNjZjgyOWRlY2UyZDUyNzM5MTA5ODI2YmU4YzFjMTkwMjk4ZjBiMC4uOTYzMGEy
YjE1NWU0ZGRhYzdjMzY1Njg3NTIzYTJlN2M3NmY3MGUxMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3Bw
CkBAIC00OTAsNyArNDkwLDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNDbG9iYmVyZWRCeUJsb2Nr
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7ICsraSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50c1dpdGhGaXhVcC5zaXplKCkgLSAxOyArK2kpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbEZyYW1l
Ojphcmd1bWVudE9mZnNldChpKTsKQEAgLTcwMCw3ICs3MDAsNyBAQCBjbGFzcyBBcmd1bWVudHNF
bGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYWZlVG9HZXRTdGFjazsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2FmZVRvR2V0U3RhY2sgPSBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZVRvR2V0U3Rh
Y2sgPSBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
LSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2FmZVRvR2V0U3RhY2sgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVy
cygpKSAtIDE7CkBAIC04MDUsNyArODA1LDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChzcHJlYWQtPm9wKCkgPT0gUGhhbnRvbVNwcmVhZCAmJiBzcHJlYWQtPmNoaWxkMSgpLT5v
cCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSBzcHJlYWQtPmNoaWxkMSgpLT5u
dW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHNwcmVhZC0+Y2hpbGQxKCktPm9y
aWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnJh
bWVBcmd1bWVudENvdW50ID49IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lQXJndW1lbnRDb3VudCAtIG51bWJl
ck9mQXJndW1lbnRzVG9Ta2lwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKQEAgLTgzNCw3ICs4MzQsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChzcHJlYWQtPm9wKCkgPT0gUGhhbnRvbVNwcmVhZCAmJiBzcHJlYWQtPmNoaWxkMSgpLT5v
cCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gc3ByZWFkLT5jaGlsZDEo
KS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gc3ByZWFkLT5jaGls
ZDEoKS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBmcmFtZUFyZ3VtZW50Q291bnQgPSBpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbG9hZEluZGV4ID0gbnVtYmVyT2ZBcmd1bWVudHNU
b1NraXA7IGxvYWRJbmRleCA8IGZyYW1lQXJndW1lbnRDb3VudDsgKytsb2FkSW5kZXgpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVn
ID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQobG9hZEluZGV4ICsgMSkgKyBpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFN0YWNrQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdGFja0FjY2Vzc0RhdGEuYWRk
KHJlZywgRmx1c2hlZEpTVmFsdWUpOwpAQCAtODg3LDcgKzg4Nyw3IEBAIGNsYXNzIEFyZ3VtZW50
c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGlubGluZUNhbGxGcmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFp
bmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzID4gdmFyYXJnc0RhdGEtPm9mZnNldCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLT0gdmFyYXJn
c0RhdGEtPm9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC05MDks
NyArOTA5LDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IG51
bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb2Fk
SW5kZXggPSBzdG9yZUluZGV4ICsgdmFyYXJnc0RhdGEtPm9mZnNldDsKIAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRJbmRleCArIDEgPCBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50cy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChsb2FkSW5kZXggKyAxIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciByZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChsb2FkSW5kZXgg
KyAxKSArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX3N0
YWNrQWNjZXNzRGF0YS5hZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlZywgRmx1c2hlZEpTVmFsdWUpOwpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgY2xhc3Mg
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChzcHJlYWQtPmNoaWxkMSgpLT5vcCgpID09IFBoYW50
b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBzcHJlYWQtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50
aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IHNwcmVhZC0+Y2hpbGQxKCktPm51bWJlck9m
QXJndW1lbnRzVG9Ta2lwKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDEgKyBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8
IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0g
bV9ncmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5hZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkgKyBpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZsdXNoZWRKU1ZhbHVlKTsKQEAgLTEwNjksNyArMTA2OSw3IEBAIGNsYXNzIEFyZ3VtZW50
c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBjYW5kaWRhdGUtPm9yaWdpbi5z
ZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPE5vZGUqPiBhcmd1bWVudHM7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIHZhcmFyZ3NEYXRhLT5maXJz
dFZhckFyZ09mZnNldDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIHZh
cmFyZ3NEYXRhLT5maXJzdFZhckFyZ09mZnNldDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RhY2tBY2Nlc3NEYXRhLmFk
ZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50KGkpICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZsdXNoZWRKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcAppbmRleCAwNjFh
Mjg0Y2Y1ZDQ5N2M5NTk4N2U5ZjYzMDU2ZTVlOTc0M2Q2ZGQxLi5mZjQ5YmE5ZGY0Y2JlNzY2N2Iz
MzdlNWU2MDliZGY4M2QwNDA1NjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIGJvb2wgYXJn
dW1lbnRzSW52b2x2ZVN0YWNrU2xvdChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwg
VmlydHVhbFJlZ2lzdGVyCiAgICAgICAgICYmIHJlZyA9PSBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICB1bnNpZ25lZCBudW1Bcmd1bWVudHMgPSBp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxOworICAgIHVuc2lnbmVkIG51bUFy
Z3VtZW50cyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeFVwLnNpemUoKSAtIDE7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50U3RhcnQgPQogICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkgKyBDYWxsRnJhbWU6OmFyZ3VtZW50
T2Zmc2V0KDApOwogICAgIHJldHVybiByZWcgPj0gYXJndW1lbnRTdGFydCAmJiByZWcgPCBhcmd1
bWVudFN0YXJ0ICsgbnVtQXJndW1lbnRzOwpAQCAtNzQsNyArNzQsNyBAQCBOb2RlKiBlbWl0Q29k
ZVRvR2V0QXJndW1lbnRzQXJyYXlMZW5ndGgoCiAgICAgICAgIG51bWJlck9mQXJndW1lbnRzVG9T
a2lwID0gYXJndW1lbnRzLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOwogICAgIAogICAgIGlm
IChpbmxpbmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKLSAg
ICAgICAgdW5zaWduZWQgYXJndW1lbnRzU2l6ZSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
LnNpemUoKSAtIDE7CisgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50c1NpemUgPSBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsKICAgICAgICAgaWYgKGFyZ3Vt
ZW50c1NpemUgPj0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXApCiAgICAgICAgICAgICBhcmd1bWVu
dHNTaXplIC09IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOwogICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDVkZTdm
M2EzY2NjMWJkN2UxNWI5Y2E0ZjJhYWYzMWJmZWQ3ZTBiOWUuLjhjNDI2OWM4ODlkMmJjN2MyZWFl
OTdiZjhjZWU2MzU4NzY4MjkzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgY2xhc3MgQnl0ZUNvZGVQ
YXJzZXIgewogICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50LCBOb2RlKiBj
YWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtbnQpOwogICAgIHZvaWQgZW1pdEFy
Z3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpOwogICAgIE5vZGUqIGdldEFyZ3VtZW50Q291bnQoKTsKLSAgICB1bnNpZ25lZCBp
bmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Q2FsbE1vZGUpOyAvLyBSZXR1cm4gVUlOVF9NQVggaWYgaXQncyBub3QgYW4gaW5saW5pbmcgY2Fu
ZGlkYXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5zaWNzIGhhdmUgYSBjb3N0IG9mIDEuCisgICAg
dW5zaWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBp
dCdzIG5vdCBhbiBpbmxpbmluZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3Mg
aGF2ZSBhIGNvc3Qgb2YgMS4KICAgICAvLyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0cnVlIGlm
IGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCiAgICAgYm9v
bCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQs
IGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0
ZXIgdGhpc0FyZ3VtZW50LCBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2ln
bmVkIGFyZ3VtZW50c09mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNp
Z25lZCBuZXh0T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgZW51bSBDYWxsZXJMaW5rYWJpbGl0eSB7
IENhbGxlckRvZXNOb3JtYWxMaW5raW5nLCBDYWxsZXJMaW5rc01hbnVhbGx5IH07CkBAIC01NzEs
NyArNTcxLDcgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0gaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA+PSBz
dGF0aWNfY2FzdDxpbnQ+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6
OnRoaXNBcmd1bWVudE9mZnNldCgpICsgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgp
KSkKKyAgICAgICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpID49IHN0YXRpY19jYXN0PGludD4o
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zm
c2V0KCkgKyBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGludCBhcmd1bWVudCA9IFZpcnR1
YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgpIC0gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCkudG9Bcmd1bWVudCgpOwogICAgICAgICAgICAgcmV0dXJuIHN0YWNrLT5tX2FyZ3VtZW50UG9z
aXRpb25zW2FyZ3VtZW50XTsKQEAgLTYzMSw3ICs2MzEsNyBAQCBjbGFzcyBCeXRlQ29kZVBhcnNl
ciB7CiAgICAgICAgIGludCBudW1Bcmd1bWVudHM7CiAgICAgICAgIGlmIChJbmxpbmVDYWxsRnJh
bWUqIGlubGluZUNhbGxGcmFtZSA9IGlubGluZVN0YWNrRW50cnktPm1faW5saW5lQ2FsbEZyYW1l
KSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faGFzRGVidWdnZXJFbmFibGVkKTsKLSAgICAgICAg
ICAgIG51bUFyZ3VtZW50cyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAg
ICAgICAgICAgIG51bUFyZ3VtZW50cyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZp
eFVwLnNpemUoKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNh
bGwpCiAgICAgICAgICAgICAgICAgZmx1c2hEaXJlY3QoaW5saW5lU3RhY2tFbnRyeS0+cmVtYXBP
cGVyYW5kKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKSk7CiAgICAgICAg
ICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKQEAgLTExMTAsNiArMTExMCw4
IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBtX2lu
bGluZUNhbGxGcmFtZTsKICAgICAgICAgCiAgICAgICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUoKSB7IHJldHVybiBtX2NvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCk7IH0K
KworICAgICAgICBpbnQgbV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKICAgICAgICAgCiAg
ICAgICAgIFF1ZXJ5YWJsZUV4aXRQcm9maWxlIG1fZXhpdFByb2ZpbGU7CiAgICAgICAgIApAQCAt
MTQxNCw3ICsxNDE2LDcgQEAgTm9kZSogQnl0ZUNvZGVQYXJzZXI6OmdldEFyZ3VtZW50Q291bnQo
KQogICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpKQogICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBhcmd1bWVudENvdW50ID0ganNDb25zdGFudChtX2dyYXBoLmZyZWV6ZShqc051bWJlcihtX2lu
bGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpLT52YWx1
ZSgpKTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBqc0NvbnN0YW50KG1fZ3JhcGguZnJl
ZXplKGpzTnVtYmVyKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykpLT52YWx1ZSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgYXJn
dW1lbnRDb3VudCA9IGFkZFRvR3JhcGgoR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE9w
SW5mbygwKSwgT3BJbmZvKFNwZWNJbnQzMk9ubHkpKTsKICAgICByZXR1cm4gYXJndW1lbnRDb3Vu
dDsKQEAgLTE0MjYsOSArMTQyOCwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0QXJndW1l
bnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SQogICAgICAg
ICBhZGRUb0dyYXBoKFBoYW50b20sIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCBy
ZWdpc3Rlck9mZnNldCkpKTsKIH0KIAotdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5n
Q29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Q2FsbE1vZGUgY2FsbE1vZGUpCit1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0
KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxp
bmVDYWxsRnJhbWU6OktpbmQga2luZCkKIHsKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQgPSBzcGVjaWFsaXphdGlvbktpbmRGb3IoY2FsbE1vZGUpOworICAgIENhbGxNb2RlIGNhbGxN
b2RlID0gSW5saW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZvcihraW5kKTsKKyAgICBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IHNwZWNpYWxpemF0aW9uS2luZEZvcihj
YWxsTW9kZSk7CiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5n
IGlubGluaW5nICIsIGNhbGxlZSwgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIp
OwogICAgIApAQCAtMTQ1MiwzMCArMTQ1NSwzMiBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6
aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQog
ICAgIC8vIHRvIGlubGluZSBpdCBpZiB3ZSBoYWQgYSBzdGF0aWMgcHJvb2Ygb2Ygd2hhdCB3YXMg
YmVpbmcgY2FsbGVkOyB0aGlzIG1pZ2h0IGhhcHBlbiBmb3IgZXhhbXBsZQogICAgIC8vIGlmIHlv
dSBjYWxsIGEgZ2xvYmFsIGZ1bmN0aW9uLCB3aGVyZSB3YXRjaHBvaW50aW5nIGdpdmVzIHVzIHN0
YXRpYyBpbmZvcm1hdGlvbi4gT3ZlcmFsbCwKICAgICAvLyBpdCdzIGEgcmFyZSBjYXNlIGJlY2F1
c2Ugd2UgZXhwZWN0IHRoYXQgYW55IGhvdCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVu
IGNvbXBpbGVkLgotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxp
bmVDb2RlQmxvY2tGb3Ioa2luZCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRh
YmxlLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOwogICAgIGlmICgh
Y29kZUJsb2NrKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEZhaWxpbmcgYmVjYXVzZSBubyBjb2RlIGJsb2NrIGF2YWlsYWJsZS5cbiIpOwogICAgICAg
ICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogCi0gICAgLy8gRG9lcyB0aGUgbnVtYmVyIG9mIGFy
Z3VtZW50cyB3ZSdyZSBwYXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0PyBXZSBj
dXJyZW50bHkKLSAgICAvLyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBw
YXNzZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKLSAgICAvLyBhcmd1
bWVudHMgZXhwZWN0ZWQuCi0gICAgaWYgKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID4gYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNoLlxuIik7
Ci0gICAgICAgIHJldHVybiBVSU5UX01BWDsKKyAgICBpZiAoSW5saW5lQ2FsbEZyYW1lOjppc1Zh
cmFyZ3Moa2luZCkpIHsKKyAgICAgICAgLy8gRG9lcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3
ZSdyZSBwYXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0PyBXZSBjdXJyZW50bHkK
KyAgICAgICAgLy8gaW5saW5lIG9ubHkgaWYgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGFzc2Vk
IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyCisgICAgICAgIC8vIGFyZ3Vt
ZW50cyBleHBlY3RlZC4KKyAgICAgICAgaWYgKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID4g
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKKyAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2Ugb2YgYXJpdHkgbWlz
bWF0Y2guXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwgPSBpbmxpbmVGdW5jdGlv
bkZvckNhcGFiaWxpdHlMZXZlbCgKLSAgICAgICAgY29kZUJsb2NrLCBraW5kLCBjYWxsZWUuaXND
bG9zdXJlQ2FsbCgpKTsKKyAgICAgICAgY29kZUJsb2NrLCBzcGVjaWFsaXphdGlvbktpbmQsIGNh
bGxlZS5pc0Nsb3N1cmVDYWxsKCkpOwogICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFM
b2coIiAgICBDYWxsIG1vZGU6ICIsIGNhbGxNb2RlLCAiXG4iKTsKICAgICAgICAgZGF0YUxvZygi
ICAgIElzIGNsb3N1cmUgY2FsbDogIiwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSwgIlxuIik7CiAg
ICAgICAgIGRhdGFMb2coIiAgICBDYXBhYmlsaXR5IGxldmVsOiAiLCBjYXBhYmlsaXR5TGV2ZWws
ICJcbiIpOwotICAgICAgICBkYXRhTG9nKCIgICAgTWlnaHQgaW5saW5lIGZ1bmN0aW9uOiAiLCBt
aWdodElubGluZUZ1bmN0aW9uRm9yKGNvZGVCbG9jaywga2luZCksICJcbiIpOwotICAgICAgICBk
YXRhTG9nKCIgICAgTWlnaHQgY29tcGlsZSBmdW5jdGlvbjogIiwgbWlnaHRDb21waWxlRnVuY3Rp
b25Gb3IoY29kZUJsb2NrLCBraW5kKSwgIlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICBNaWdo
dCBpbmxpbmUgZnVuY3Rpb246ICIsIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3IoY29kZUJsb2NrLCBz
cGVjaWFsaXphdGlvbktpbmQpLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygiICAgIE1pZ2h0IGNv
bXBpbGUgZnVuY3Rpb246ICIsIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yKGNvZGVCbG9jaywgc3Bl
Y2lhbGl6YXRpb25LaW5kKSwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICBJcyBzdXBwb3J0
ZWQgZm9yIGlubGluaW5nOiAiLCBpc1N1cHBvcnRlZEZvcklubGluaW5nKGNvZGVCbG9jayksICJc
biIpOwogICAgICAgICBkYXRhTG9nKCIgICAgSXMgaW5saW5pbmcgY2FuZGlkYXRlOiAiLCBjb2Rl
QmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5pc0lubGluaW5nQ2FuZGlkYXRlKCksICJc
biIpOwogICAgIH0KQEAgLTE1NDEsMTQgKzE1NDYsMjAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxW
YXIKIHsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElu
bGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwogICAgIAotICAgIEFT
U0VSVChpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5s
aW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZvcihraW5kKSkgIT0gVUlOVF9NQVgpOworICAgIEFTU0VS
VChpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywga2luZCkg
IT0gVUlOVF9NQVgpOwogICAgIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbGVlLmZ1
bmN0aW9uRXhlY3V0YWJsZSgpLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktp
bmQpOwogICAgIGluc2VydENoZWNrcyhjb2RlQmxvY2spOwogCiAgICAgLy8gRklYTUU6IERvbid0
IGZsdXNoIGNvbnN0YW50cyEKKworICAgIGludCBhcml0eUZpeFVwQ291bnQgPSBzdGQ6Om1heDxp
bnQ+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIDApOworICAgIC8vIEZJWE1FOiBpbnQgcmVnaXN0ZXJPZmZzZXRBZnRlckZpeFVwID0gcmVn
aXN0ZXJPZmZzZXQgLSBhcml0eUZpeFVwQ291bnQ7CisgICAgaW50IHJlZ2lzdGVyT2Zmc2V0QWZ0
ZXJGaXhVcCA9IC1XVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCisgICAgICAgICAgICAgICAgc3Rh
Y2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKKyAgICAgICAgICAgICAgICAoLXJlZ2lzdGVyT2Zmc2V0
KSArIGFyaXR5Rml4VXBDb3VudCk7CiAgICAgCi0gICAgaW50IGlubGluZUNhbGxGcmFtZVN0YXJ0
ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rl
ck9mZnNldCkpLm9mZnNldCgpICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7Cisg
ICAgaW50IGlubGluZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVy
YW5kKFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldEFmdGVyRml4VXApKS5vZmZzZXQoKSAr
IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwogICAgIAogICAgIGVuc3VyZUxvY2Fs
cygKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZVN0YXJ0KS50b0xvY2Fs
KCkgKyAxICsKQEAgLTE1NjMsMTIgKzE1NzQsMjIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5s
aW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIK
ICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlhYmxlID0gbnVsbHB0cjsKICAgICBp
ZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgewogICAgICAgICBOb2RlKiBjYWxsZWVTZXQgPSBz
ZXQoCi0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJh
bWVTbG90OjpjYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQpOworICAg
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0QWZ0ZXJGaXhVcCArIENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSksIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlhdGVOYWtlZFNldCk7CiAg
ICAgICAgIAogICAgICAgICBjYWxsZWVWYXJpYWJsZSA9IGNhbGxlZVNldC0+dmFyaWFibGVBY2Nl
c3NEYXRhKCk7CiAgICAgICAgIGNhbGxlZVZhcmlhYmxlLT5tZXJnZVNob3VsZE5ldmVyVW5ib3go
dHJ1ZSk7CiAgICAgfQogICAgIAorICAgIGlmIChhcml0eUZpeFVwQ291bnQpIHsKKyAgICAgICAg
Zm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyAr
K2luZGV4KSB7CisgICAgICAgICAgICBOb2RlKiBhcmd1bWVudCA9IGdldCh2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudChpbmRleCwgcmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgIHNldCh2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpbmRleCwgcmVnaXN0ZXJPZmZzZXRBZnRlckZpeFVw
KSwgYXJndW1lbnQsIEltbWVkaWF0ZU5ha2VkU2V0KTsKKyAgICAgICAgfQorICAgICAgICBOb2Rl
KiB1bmRlZmluZWQgPSBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50VW5k
ZWZpbmVkKSk7CisgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBhcml0eUZpeFVw
Q291bnQ7ICsraW5kZXgpCisgICAgICAgICAgICBzZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBpbmRleCwgcmVnaXN0ZXJPZmZzZXRBZnRl
ckZpeFVwKSwgdW5kZWZpbmVkLCBJbW1lZGlhdGVOYWtlZFNldCk7CisgICAgfQorCiAgICAgSW5s
aW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFja0VudHJ5KAogICAgICAgICB0aGlzLCBjb2RlQmxvY2ss
IGNvZGVCbG9jaywgbV9ncmFwaC5sYXN0QmxvY2soKSwgY2FsbGVlLmZ1bmN0aW9uKCksIHJlc3Vs
dFJlZywKICAgICAgICAgKFZpcnR1YWxSZWdpc3RlcilpbmxpbmVDYWxsRnJhbWVTdGFydCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtpbmQpOwpAQCAtMTc2Nyw3ICsxNzg4LDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICB1bnNpZ25l
ZCBteUlubGluaW5nQ29zdCA9IGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OmNhbGxNb2RlRm9yKGtpbmQpKTsKKyAgICB1bnNp
Z25lZCBteUlubGluaW5nQ29zdCA9IGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBraW5kKTsKICAgICBpZiAobXlJbmxpbmluZ0Nvc3QgPiBpbmxpbmluZ0Jh
bGFuY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDI4MCw3ICs0MzAxLDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
IElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gdGhpcy0+aW5saW5lQ2FsbEZyYW1l
KCk7CiAgICAgICAgICAgICBOb2RlKiBsZW5ndGg7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2Fs
bEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7Ci0gICAgICAgICAgICAg
ICAgdW5zaWduZWQgYXJndW1lbnRzTGVuZ3RoID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMu
c2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudHNMZW5ndGggPSBp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsKICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBudW1QYXJhbXNUb1NraXAgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS51bnNpZ25lZFZhbHVlOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdExlbmd0aDsKICAg
ICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzTGVuZ3RoIDw9IG51bVBhcmFtc1RvU2tpcCkKQEAg
LTU3MzIsNyArNTc1Myw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudDsKICAgICAgICAgICAgIGludDMy
X3QgYXJndW1lbnRJbmRleEluY2x1ZGluZ1RoaXMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZy
YW1lLT5pc1ZhcmFyZ3MoKSkgewotICAgICAgICAgICAgICAgIGludDMyX3QgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7CisgICAg
ICAgICAgICAgICAgaW50MzJfdCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgICAgICAgICAgaWYg
KGFyZ3VtZW50SW5kZXhJbmNsdWRpbmdUaGlzIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
CiAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGFyZ3VtZW50SW5kZXhJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgICAgICAgICAgZWxz
ZQpAQCAtNTk3MSw2ICs1OTkyLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6
OklubGluZVN0YWNrRW50cnkoCiAgICAgOiBtX2J5dGVDb2RlUGFyc2VyKGJ5dGVDb2RlUGFyc2Vy
KQogICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAgICwgbV9wcm9maWxlZEJsb2NrKHBy
b2ZpbGVkQmxvY2spCisgICAgLCBtX2FyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKQogICAgICwgbV9jYWxsc2l0ZUJsb2NrSGVhZChjYWxsc2l0ZUJs
b2NrSGVhZCkKICAgICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFsdWVWUikKICAgICAsIG1fZGlk
UmV0dXJuKGZhbHNlKQpAQCAtNTk5Miw4ICs2MDE0LDkgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGlu
ZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0g
ICAgbV9hcmd1bWVudFBvc2l0aW9ucy5yZXNpemUoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsr
aSkgeworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXhVcCA9IHN0ZDo6
bWF4PGludD4oYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpKTsKKyAgICBtX2FyZ3VtZW50UG9zaXRpb25zLnJlc2l6ZShhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpc1dpdGhGaXhVcCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpc1dpdGhGaXhVcDsgKytpKSB7CiAgICAgICAgIGJ5dGVDb2RlUGFyc2Vy
LT5tX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuYXBwZW5kKEFyZ3VtZW50UG9zaXRpb24oKSk7
CiAgICAgICAgIEFyZ3VtZW50UG9zaXRpb24qIGFyZ3VtZW50UG9zaXRpb24gPSAmYnl0ZUNvZGVQ
YXJzZXItPm1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5sYXN0KCk7CiAgICAgICAgIG1fYXJn
dW1lbnRQb3NpdGlvbnNbaV0gPSBhcmd1bWVudFBvc2l0aW9uOwpAQCAtNjAxMSwxMyArNjAzNCwx
NCBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgK
ICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4KICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmJh
c2VsaW5lQ29kZUJsb2NrLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoY29kZUJsb2NrLT5iYXNlbGlu
ZVZlcnNpb24oKSk7CiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5zZXRTdGFja09mZnNldChp
bmxpbmVDYWxsRnJhbWVTdGFydC5vZmZzZXQoKSAtIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVn
aXN0ZXJzKTsKKyAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgIGlmIChjYWxsZWUp
IHsKICAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeSA9IFZhbHVl
UmVjb3Zlcnk6OmNvbnN0YW50KGNhbGxlZSk7CiAgICAgICAgICAgICBtX2lubGluZUNhbGxGcmFt
ZS0+aXNDbG9zdXJlQ2FsbCA9IGZhbHNlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1f
aW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsID0gdHJ1ZTsKICAgICAgICAgbV9pbmxpbmVD
YWxsRnJhbWUtPmRpcmVjdENhbGxlciA9IGJ5dGVDb2RlUGFyc2VyLT5jdXJyZW50Q29kZU9yaWdp
bigpOwotICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnJlc2l6ZVRvRml0KGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsgLy8gU2V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRz
IGluY2x1ZGluZyB0aGlzLCBidXQgZG9uJ3QgY29uZmlndXJlIHRoZSB2YWx1ZSByZWNvdmVyaWVz
LCB5ZXQuCisgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4VXAucmVz
aXplVG9GaXQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4VXApOyAvLyBTZXQgdGhl
IG51bWJlciBvZiBhcmd1bWVudHMgaW5jbHVkaW5nIHRoaXMsIGJ1dCBkb24ndCBjb25maWd1cmUg
dGhlIHZhbHVlIHJlY292ZXJpZXMsIHlldC4KICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmtp
bmQgPSBraW5kOwogICAgICAgICAKICAgICAgICAgbV9pZGVudGlmaWVyUmVtYXAucmVzaXplKGNv
ZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbW1vbkRhdGEuY3BwCmluZGV4IDk2MTQ3NWNiZDNjNzQxMjI2N2Y4YzA3OWFiM2Zj
YjkwZWQzMjliY2IuLmNmMjUxMGFiYTQ5Yjg4ODM4MjJmZTg4ZmYwYmNhZGRkMmU2YWMxNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcApAQCAtMTc2LDcg
KzE3Niw3IEBAIHZvaWQgQ29tbW9uRGF0YTo6dmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNr
ZWRSZWZlcmVuY2VzJiB0cmFja2VkUmVmZXJlbmNlcykKIHsKICAgICBpZiAoSW5saW5lQ2FsbEZy
YW1lU2V0KiBzZXQgPSBpbmxpbmVDYWxsRnJhbWVzLmdldCgpKSB7CiAgICAgICAgIGZvciAoSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgOiAqc2V0KSB7Ci0gICAgICAgICAgICBmb3Ig
KFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5IDogaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMpIHsK
KyAgICAgICAgICAgIGZvciAoVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgOiBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50c1dpdGhGaXhVcCkgewogICAgICAgICAgICAgICAgIGlmIChyZWNvdmVyeS5p
c0NvbnN0YW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHRyYWNrZWRSZWZlcmVuY2VzLmNoZWNr
KHJlY292ZXJ5LmNvbnN0YW50KCkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCA3MzQ1
Y2Q0MDZjMGE1OTI5M2M5YTI5NzJiZDg3YjY0NTg4NWEwYmU3Li5iNTQ5ZDhiYWUyOTQwMDE4ZjQz
YjExYjM4YzdhOGZjMTczZDg1MDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMzM1LDcgKzMzNSw3IEBAIGNs
YXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAg
ICAvLyBHZXRNeUFyZ3VtZW50QnlWYWwgaW4gc3VjaCBzdGF0aWNhbGx5LW91dC1vZi1ib3VuZHMg
YWNjZXNzZXM7IHdlIGp1c3QgbG9zZSBDRkEgdW5sZXNzCiAgICAgICAgICAgICAgICAgLy8gR0NT
RSByZW1vdmVzIHRoZSBhY2Nlc3MgZW50aXJlbHkuCiAgICAgICAgICAgICAgICAgaWYgKGlubGlu
ZUNhbGxGcmFtZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlu
ZGV4ID49IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxKQog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IG1fc3RhdGUudmFyaWFibGVzKCkubnVt
YmVyT2ZBcmd1bWVudHMoKSAtIDEpCkBAIC0zNTYsNyArMzU2LDcgQEAgY2xhc3MgQ29uc3RhbnRG
b2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaW5kZXggKyAxKSwgRmx1c2hlZEpTVmFsdWUpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpICYmIGluZGV4IDwg
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkgeworICAgICAgICAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkgJiYg
aW5kZXggPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMSkg
ewogICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9HZXRTdGFjayhkYXRhKTsKICAg
ICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCA1YjhlNzEy
Y2MwZGY4MDc4YjIzMGJkNzJiYTAyMzQ3NDMxMjBmMGJkLi5iNDIzNTk0OWE4Y2ExYzIzMzBjYTky
MjQyYTQ3OWQyMmZiNjFkMWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cApAQCAtMTA4Niw3ICsxMDg2LDcgQEAgYm9vbCBHcmFwaDo6aXNMaXZlSW5CeXRlY29kZShWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgICAgICAvLyBB
cmd1bWVudHMgYXJlIGFsd2F5cyBsaXZlLiBUaGlzIHdvdWxkIGJlIHJlZHVuZGFudCBpZiBpdCB3
YXNuJ3QgZm9yIG91cgogICAgICAgICAvLyBvcF9jYWxsX3ZhcmFyZ3MgaW5saW5pbmcuCiAgICAg
ICAgIGlmIChyZWcuaXNBcmd1bWVudCgpCi0gICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHJlZy50b0FyZ3VtZW50KCkpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgp
KSB7CisgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlZy50b0FyZ3VtZW50KCkp
IDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4VXAuc2l6ZSgpKSB7CiAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBcmd1bWVudCBpcyBs
aXZlLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAppbmRleCA2NmNhNTExNTM5YWU3N2NhZTkzZmY5NzdiNTFmMTZjMGYxOWYwMzFm
Li4zZTZiYWE2NzNlZjVjZTQ5NDFmZGIyZDZkYzFkZDhmOTViNGY3NjViIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC04MjgsNyArODI4LDcgQEAgY2xhc3MgR3JhcGggOiBw
dWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgICAgICAgICAgLy8gQXJndW1lbnRzIGFyZSBh
bHdheXMgbGl2ZS4gVGhpcyB3b3VsZCBiZSByZWR1bmRhbnQgaWYgaXQgd2Fzbid0IGZvciBvdXIK
ICAgICAgICAgICAgIC8vIG9wX2NhbGxfdmFyYXJncyBpbmxpbmluZy4gU2VlIHRoZSBjb21tZW50
IGFib3ZlLgogICAgICAgICAgICAgZXhjbHVzaW9uU3RhcnQgPSBzdGFja09mZnNldCArIENhbGxG
cmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApOwotICAgICAgICAgICAgZXhjbHVz
aW9uRW5kID0gc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5n
VGhpcyhpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICAgICAgZXhj
bHVzaW9uRW5kID0gc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVk
aW5nVGhpcyhpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXhVcC5zaXplKCkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICAvLyBXZSB3aWxsIGFsd2F5cyBoYXZlIGEgInRoaXMiIGFy
Z3VtZW50IGFuZCBleGNsdXNpb25TdGFydCBzaG91bGQgYmUgYSBzbWFsbGVyIHN0YWNrCiAgICAg
ICAgICAgICAvLyBvZmZzZXQgdGhhbiBleGNsdXNpb25FbmQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNl
LmNwcAppbmRleCBlOGI0NWM0NWE2MmZjNDQ5YzIxOWNhNGRhZWU0Y2UxZTZkZGZjYjg1Li4zY2Rh
Njg3MmU0Yzc4NDkwYmNkMDdkNTlkN2Y5YjllZDk4MDVjNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQ
aGFzZS5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIExvY2FsT1NSQXZhaWxhYmlsaXR5Q2Fs
Y3VsYXRvcjo6ZXhlY3V0ZU5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1fYXZhaWxhYmls
aXR5Lm1faGVhcC5zZXQoUHJvbW90ZWRIZWFwTG9jYXRpb24oQXJndW1lbnRzQ2FsbGVlUExvYywg
bm9kZSksIGNhbGxlZSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHMuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bWJl
ck9mQXJndW1lbnRzVG9Ta2lwOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyAtIDE7ICsraSkgewogICAgICAgICAgICAgQXZhaWxhYmlsaXR5IGFyZ3VtZW50
ID0gbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZCgKICAgICAgICAgICAgICAgICBpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChpKSk7
CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCmlu
ZGV4IGJkNzg1N2Y5ZmU3MWUxZGUwY2M3NDc2Yzg4MzM1ZTg1YjMyOWYwZDYuLjNiNzNhMTJjMTA5
ZDgzZjk4MDU2OTU4ZjJhNTk1YTVhOGQ2MjQyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgT1NSRXhpdDo6ZW1pdFJl
c3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVj
b3ZlCiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgaml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSwKKyAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdU
MSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCmluZGV4IGY3NmNjYjg4YmIxZTRjN2E3N2E0OTQ2
ZDU3Nzg4NGM5NzI1MDIwYWUuLjVhOGNhNDc1YmRjMTBhYmFiY2UwNmUwOWVhNWY0MzhmOTU1NmFm
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIHJlaWZ5SW5saW5lZENh
bGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDIpOwogCiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1l
LT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSksIEFzc2VtYmx5
SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgICAg
IGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRG
b3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAg
aml0LnN0b3JlNjQoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5
dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpKSk7CiAgICAgICAg
IHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoY29kZU9yaWdpbi0+Ynl0ZWNv
ZGVJbmRleCkuYml0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAppbmRleCA1ZjBhZGM2ZTUzY2VjNjJkMTk4NjBlNDAx
MDVjNjRlNDU3OWU5YTkwLi4xYjIxMDlmYmRiYzcwNmEzOTZmNWRhOWYwYTg1OWRjNzEzNDc2MzBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENs
b2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2Nh
bENsb2JiZXJpemUuaApAQCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIFByZWNpc2VMb2NhbENsb2Ji
ZXJpemVBZGFwdG9yIHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1iZXJPZkFy
Z3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgaSsr
KQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIG51bWJlck9mQXJndW1lbnRzVG9T
a2lwOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4VXAuc2l6ZSgpOyBpKysp
CiAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkub2Zmc2V0KCkpKTsK
ICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQogICAgICAgICAg
ICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBj
bGFzcyBQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvciB7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3Mo
KSwgIkdldEFyZ3VtZW50IGlzIG9ubHkgdXNlZCBmb3IgSW5saW5lQ2FsbEZyYW1lIGlmIHRoZSBj
YWxsIGZyYW1lIGlzIHZhcmFyZ3MuIik7Ci0gICAgICAgICAgICBpZiAoaW5kZXhJbmNsdWRpbmdU
aGlzIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKQorICAgICAgICAgICAgaWYg
KGluZGV4SW5jbHVkaW5nVGhpcyA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeFVw
LnNpemUoKSkKICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpbmRleElu
Y2x1ZGluZ1RoaXMpLm9mZnNldCgpKSk7CiAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lz
dGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIzOSw3ICsyMzksNyBAQCBjbGFzcyBQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvciB7CiAgICAgICAgICAgICAvLyBSZWFkIGFsbCBv
ZiB0aGUgaW5saW5lIGFyZ3VtZW50cyBhbmQgY2FsbCBmcmFtZSBoZWFkZXJzIHRoYXQgd2UgZGlk
bid0IGFscmVhZHkgY2FwdHVyZS4KICAgICAgICAgICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBp
bmxpbmVDYWxsRnJhbWUgPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7
IGlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5nZXRD
YWxsZXJJbmxpbmVGcmFtZVNraXBwaW5nVGFpbENhbGxzKCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoIWlubGluZUNhbGxGcmFtZS0+aXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOyBp
LS0gPiAxOykKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudHNXaXRoRml4VXAuc2l6ZSgpOyBpLS0gPiAxOykKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLm9mZnNldCgpKSk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xv
c3VyZUNhbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCmluZGV4IDEwYTQxNTNjZjRiYmUyMTM1NmJiYWQ1MjkxNWVmOWU1NzBiZGRmNmEuLmIz
YmJmOWY5YjI3YWQ1ZWExOWIwNTRjY2M2MTdmOTdiZjgzMzQ0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNzEsNyArMTcxLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1
bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRM
ZW5ndGgoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEdQUlJlZyBsZW5ndGhHUFIs
IGJvb2wgaW5jbHVkZVRoaXMpCiB7CiAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5l
Q2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIo
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gIWluY2x1ZGVUaGlzKSwgbGVuZ3Ro
R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtICFpbmNsdWRlVGhpcyksIGxlbmd0aEdQUik7CiAg
ICAgZWxzZSB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudENvdW50UmVnaXN0ZXIg
PSBtX2ppdC5hcmd1bWVudENvdW50KGlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgIG1faml0Lmxv
YWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihhcmd1bWVudENvdW50UmVnaXN0ZXIpLCBsZW5n
dGhHUFIpOwpAQCAtNjc0OSw3ICs2NzQ5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAgIGJvb2wgbGVuZ3RoSXNLbm93
bjsgLy8gaWYgZmFsc2UsIGxlbmd0aEdQUiB3aWxsIGhhdmUgdGhlIGxlbmd0aC4KICAgICBpZiAo
bm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZQogICAgICAgICAmJiAhbm9kZS0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKLSAgICAgICAg
a25vd25MZW5ndGggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAga25vd25MZW5ndGggPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIDE7CiAg
ICAgICAgIGxlbmd0aElzS25vd24gPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGtub3du
TGVuZ3RoID0gVUlOVF9NQVg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dGFja0xheW91dFBoYXNlLmNwcAppbmRleCAwM2M1MDJmYzg4MGRjYmE4MjNjN2UxYTRkYzlkODll
YTI2NzRkNmRkLi4zMmQ3MjAzODA4Nzc3NjEwMWY2N2I2Y2QyMjRkZWNkNDhjNzhmZWQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAK
QEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFzcyBTdGFja0xheW91dFBoYXNlIDogcHVibGljIFBoYXNl
IHsKICAgICAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCArIGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBpbmxpbmVD
YWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgeworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0
aEZpeFVwLnNpemUoKTsgYXJndW1lbnQtLSA+IDE7KSB7CiAgICAgICAgICAgICAgICAgdXNlZExv
Y2Fscy5zZXQoVmlydHVhbFJlZ2lzdGVyKAogICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkub2Zmc2V0KCkgKwogICAgICAgICAgICAgICAgICAg
ICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkpOwpAQCAtMTg3LDcgKzE4
Nyw3IEBAIGNsYXNzIFN0YWNrTGF5b3V0UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAg
ICAgICAgICAgICBhbGxvY2F0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgYXJndW1lbnQtLSA+IDE7KSB7CisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHNXaXRoRml4VXAuc2l6ZSgpOyBhcmd1bWVudC0tID4gMTspIHsKICAgICAgICAgICAgICAgICBB
cmd1bWVudFBvc2l0aW9uJiBwb3NpdGlvbiA9IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9uc1sK
ICAgICAgICAgICAgICAgICAgICAgZGF0YS5hcmd1bWVudFBvc2l0aW9uU3RhcnQgKyBhcmd1bWVu
dF07CiAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IHBvc2l0
aW9uLnNvbWVWYXJpYWJsZSgpOwpAQCAtMTk4LDcgKzE5OCw3IEBAIGNsYXNzIFN0YWNrTGF5b3V0
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBWYWx1
ZVNvdXJjZTo6Zm9yRmx1c2hGb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJs
ZS0+bWFjaGluZUxvY2FsKCksIHZhcmlhYmxlLT5mbHVzaEZvcm1hdCgpKTsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbYXJndW1l
bnRdID0gc291cmNlLnZhbHVlUmVjb3ZlcnkoKTsKKyAgICAgICAgICAgICAgICBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50c1dpdGhGaXhVcFthcmd1bWVudF0gPSBzb3VyY2UudmFsdWVSZWNvdmVy
eSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwgPT0gISFkYXRhLmNhbGxlZVZhcmlh
YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IGZkMDkx
NDU2Zjc1M2ZmZjI1NzcwMGUwMjU1NmViMWE2YmM3YjE1MWUuLjRhZTE5YjY0ZGIwNTc2YTIxMmZj
MGMzOGEyYjE4ZDc0OWY3NTM2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21w
aWxlLmNwcApAQCAtOTgsOSArOTgsOSBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZl
cG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAgICBpZiAoaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXIuaXNWYWxpZCgpKQogICAgICAgICAgICAgaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXIgKz0gbG9jYWxzT2Zmc2V0OwogICAgICAg
ICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzLnNpemUoKTsgYXJndW1lbnQtLSA+IDE7KSB7Ci0gICAgICAgICAgICBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50c1thcmd1bWVudF0gPQotICAgICAgICAgICAgICAgIGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzW2FyZ3VtZW50XS53aXRoTG9jYWxzT2Zmc2V0KGxvY2Fsc09mZnNldCk7
CisgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50c1dpdGhGaXhVcC5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgeworICAgICAgICAgICAgaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4VXBbYXJndW1lbnRdID0KKyAgICAgICAgICAg
ICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXhVcFthcmd1bWVudF0ud2l0aExv
Y2Fsc09mZnNldChsb2NhbHNPZmZzZXQpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggOTY2ZWQzYWFhOTlhYjEyNmY4YzA3
YTBhMmQzMjE4ZGE3MmU4OTg4Mi4uZTFiODgyODRlOTJkNjA4MTU1NjczNDM0YzE1YzgxZTM5NTU2
ZmZlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cApAQCAtMzY4NSw3ICszNjg1LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgCiAg
ICAgICAgIExWYWx1ZSBsaW1pdDsKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5s
aW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuY29u
c3RJbnQzMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKTsKKyAgICAgICAg
ICAgIGxpbWl0ID0gbV9vdXQuY29uc3RJbnQzMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzIC0gMSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IEFzc2VtYmx5SGVscGVyczo6YXJndW1l
bnRDb3VudChpbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgbGltaXQgPSBtX291dC5zdWIo
bV9vdXQubG9hZDMyKHBheWxvYWRGb3IoYXJndW1lbnRDb3VudFJlZ2lzdGVyKSksIG1fb3V0Lmlu
dDMyT25lKTsKQEAgLTM3MDgsOCArMzcwOCw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIAogICAgICAgICBUeXBlZFBvaW50ZXIgYmFzZTsKICAgICAgICAgaWYgKGlubGluZUNhbGxG
cmFtZSkgewotICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUo
KSA+IDEpCi0gICAgICAgICAgICAgICAgYmFzZSA9IGFkZHJlc3NGb3IoaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHNbMV0udmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgaWYgKGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPiAxKQorICAgICAgICAgICAg
ICAgIGJhc2UgPSBhZGRyZXNzRm9yKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeFVw
WzFdLnZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBiYXNl
ID0gYWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxKSk7CiAgICAgICAgIApA
QCAtOTU4MSw3ICs5NTgxLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgQXJndW1l
bnRzTGVuZ3RoIGxlbmd0aDsKIAogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxp
bmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7Ci0gICAgICAgICAgICBsZW5ndGgua25vd24gPSBp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxOworICAgICAgICAgICAgbGVuZ3Ro
Lmtub3duID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIDE7
CiAgICAgICAgICAgICBsZW5ndGguaXNLbm93biA9IHRydWU7CiAgICAgICAgICAgICBsZW5ndGgu
dmFsdWUgPSBtX291dC5jb25zdEludDMyKGxlbmd0aC5rbm93bik7CiAgICAgICAgIH0gZWxzZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCAxOTQw
YTA4YmZhMTA4OTViMWI2OTdmMWMzNTBhNTlhN2M3YWY0MjM4Li4wMWI1YjQ2NDFhYjM1MjdjYzNj
YzgwYTEzZWJiNTE4ZDE5Mzg3MzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T3BlcmF0aW9ucy5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCBleHRlcm4gIkMiIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKAogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGFy
Z3VtZW50Q291bnQgPSBtYXRlcmlhbGl6YXRpb24tPm9yaWdpbigpLmlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzLnNpemUoKTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBtYXRlcmlhbGl6
YXRpb24tPm9yaWdpbigpLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFyZ3VtZW50Q291bnQpOwogICAgICAgICAKICAg
ICAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKaW5kZXggMTc1ZmZmMzFiYWYz
YTFhMzdkNDliNmUxYzNlMDM2ZjYxM2VjNTBmNC4uODVkMTQ3YTQ3YzdmMTk1YWE2M2EyYjJlNTdh
NDY3NjIzZGI2YmJkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1N0YWNrVmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1N0YWNrVmlzaXRvci5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFN0YWNrVmlzaXRv
cjo6cmVhZElubGluZWRGcmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZU9yaWdpbiogY29k
ZU9yaWdpbgogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0
ZXIuaXNWYWxpZCgpKQogICAgICAgICAgICAgbV9mcmFtZS5tX2FyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzID0gY2FsbEZyYW1lLT5yKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lz
dGVyLm9mZnNldCgpKS51bmJveGVkSW50MzIoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
bV9mcmFtZS5tX2FyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHMuc2l6ZSgpOworICAgICAgICAgICAgbV9mcmFtZS5tX2FyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsK
ICAgICAgICAgbV9mcmFtZS5tX2NvZGVCbG9jayA9IGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVD
b2RlQmxvY2suZ2V0KCk7CiAgICAgICAgIG1fZnJhbWUubV9ieXRlY29kZU9mZnNldCA9IGNvZGVP
cmlnaW4tPmJ5dGVjb2RlSW5kZXg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oCmluZGV4IDkzOGJkMWUzZjBkMGMxMzBmYTIzN2ZkYzY3ZmUyZTVkMzdlMDdk
MDYuLjdmOWFlMThhYTM3MTUxYzQ1MWFkNDUzNTM4NzQ3ODEyMGJkODUwYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtMTIyMCw5ICsxMjIwLDkg
QEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICB7
CiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KDApKTsKLSAgICAgICAgaWYgKGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSA8PSAxKQorICAgICAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8PSAxKQogICAgICAgICAgICAg
cmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKDApOwotICAgICAgICBWYWx1ZVJlY292ZXJ5
IHJlY292ZXJ5ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbMV07CisgICAgICAgIFZhbHVl
UmVjb3ZlcnkgcmVjb3ZlcnkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXhVcFsx
XTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVjb3ZlcnkudGVjaG5pcXVlKCkgPT0gRGlzcGxh
Y2VkSW5KU1N0YWNrKTsKICAgICAgICAgcmV0dXJuIHJlY292ZXJ5LnZpcnR1YWxSZWdpc3Rlcigp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJh
cmdzRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFt
ZS5jcHAKaW5kZXggMGY5NjFhNjYxZmIyNDc0NDI5MGUyMmRmNjE3YWJiMjdlNWU0Y2UyMC4uNDFl
ZTVmYWU0NjI3MWY2ZjM5MTc5ZGJiYjllYjgwZDU1MjBiOGRmYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAKQEAgLTEyMSwxMSArMTIxLDEw
IEBAIHZvaWQgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UoVk0mIHZtLCBDQ2FsbEhlbHBl
cnMmIGppdCwgR1BSUmVnIG51bVVzZWRTbG90CiAgICAgICAgICAgICBhcmd1bWVudENvdW50UmVj
b3ZlcnkgPSBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soCiAgICAgICAgICAgICAg
ICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXIsIERhdGFGb3JtYXRJbnQz
Mik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhcmd1bWVudENvdW50UmVjb3Zlcnkg
PSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFudCgKLSAgICAgICAgICAgICAgICBqc051bWJlcihpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q291
bnRSZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzTnVtYmVyKGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAgICAgfQotICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpID4gMSkKLSAgICAgICAgICAgIGZp
cnN0QXJndW1lbnRSZWcgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1sxXS52aXJ0dWFsUmVn
aXN0ZXIoKTsKKyAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgPiAxKQorICAgICAgICAgICAgZmlyc3RBcmd1bWVudFJlZyA9IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzV2l0aEZpeFVwWzFdLnZpcnR1YWxSZWdpc3RlcigpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBmaXJzdEFyZ3VtZW50UmVnID0gVmlydHVhbFJlZ2lzdGVyKDApOwog
ICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bG9uZWRBcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVk
QXJndW1lbnRzLmNwcAppbmRleCBmMDk3ODhiNzVmMzVlYzNlOGI2ZWU4YmRkZGVhODRmMTNhYjkz
Y2Q0Li5hNzdjY2IyYmQyZDU0ODk4ZDM3YTU4ZGNhNWQ4ZWNkMTZjZTRhOGUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKQEAgLTEw
MywxMiArMTAzLDEyIEBAIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVX
aXRoSW5saW5lRnJhbWUoRXhlY1N0YXRlKiBteUZyYW1lLCBFeGVjCiAgICAgICAgICAgICBpZiAo
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXIuaXNWYWxpZCgpKQogICAgICAg
ICAgICAgICAgIGxlbmd0aCA9IHRhcmdldEZyYW1lLT5yKGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudFJlZ2lzdGVyKS51bmJveGVkSW50MzIoKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBsZW5ndGggPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7Cisg
ICAgICAgICAgICAgICAgbGVuZ3RoID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpczsKICAgICAgICAgICAgIGxlbmd0aC0tOwogICAgICAgICAgICAgcmVzdWx0ID0g
Y3JlYXRlRW1wdHkobXlGcmFtZSwgY2FsbGVlLCBsZW5ndGgpOwogCiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCi0gICAgICAgICAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3RJbmRleChteUZyYW1lLCBpLCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1tpICsgMV0u
cmVjb3Zlcih0YXJnZXRGcmFtZSkpOworICAgICAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
SW5kZXgobXlGcmFtZSwgaSwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4VXBbaSAr
IDFdLnJlY292ZXIodGFyZ2V0RnJhbWUpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IGxlbmd0aCA9IHRhcmdldEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgICAgICAgICByZXN1
bHQgPSBjcmVhdGVFbXB0eShteUZyYW1lLCBjYWxsZWUsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY1MjgzNGE0ZmIxODFi
MGVhNjAxN2M5NGIxNzE3OTkzYmYzMGRjMGEuLjVhOWFkNzU0NTllYWY1Y2U2NjgxYjE4ZGQzMjFh
MGNkZDM4YmMyYjkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTctMDgtMTcgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RGR10gUmVsYXggYXJpdHkgcmVxdWly
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTUyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3RyZXNzL2FyaXR5LW1pc21hdGNoLWdldC1hcmd1bWVudC5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgIChidWlsdGluLmNyZWF0ZUJ1aWx0aW4pOgorICAgICAgICAodGVz
dCk6CisgICAgICAgICogc3RyZXNzL2FyaXR5LW1pc21hdGNoLWlubGluaW5nLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGlubGluZVRhcmdldCk6CisgICAgICAgICh0
ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvYXJpdHktbWlzbWF0Y2gtcmVzdC5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0aHJvdy5uZXcuRXJyb3IudGVzdDIpOgorICAg
ICAgICAodGhyb3cubmV3LkVycm9yLnRlc3QxKToKKyAgICAgICAgKHRocm93Lm5ldy5FcnJvci50
ZXN0KToKKyAgICAgICAgKHRocm93Lm5ldy5FcnJvcik6CisgICAgICAgICh0ZXN0LnRlc3QxKToK
KyAgICAgICAgKHRlc3QudGVzdCk6CisgICAgICAgICh0ZXN0KToKKwogMjAxNy0wOC0xNSAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgdGhl
ICd3aXRoJyBrZXl3b3JkIGluIEZUTC4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FyaXR5
LW1pc21hdGNoLWdldC1hcmd1bWVudC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21hdGNo
LWdldC1hcmd1bWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjQxYWJkMzgzYjQ0YTJhYTlmOGYxYzczNGZj
MjZjMjVhYTkwM2VjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlz
bWF0Y2gtZ2V0LWFyZ3VtZW50LmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGJ1
aWx0aW4gPSBjcmVhdGVCdWlsdGluKGAoZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBAYXJndW1l
bnQoMCk7Cit9KWApOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgcmVzdWx0ID0gYnVp
bHRpbigpOworICAgIHNob3VsZEJlKHJlc3VsdCwgdW5kZWZpbmVkKTsKKyAgICB2YXIgcmVzdWx0
ID0gYnVpbHRpbig0Mik7CisgICAgc2hvdWxkQmUocmVzdWx0LCA0Mik7Cit9Citub0lubGluZSh0
ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICB0ZXN0KCk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy5qcyBiL0pTVGVz
dHMvc3RyZXNzL2FyaXR5LW1pc21hdGNoLWlubGluaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMTNlNjQ0
NDE2YmZmMTM5Zjk0ZjBkMmIyM2QzMTgyOGQwNWU1ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy5qcwpAQCAtMCwwICsxLDIyIEBACitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCk7Cit9CisKK2Z1bmN0aW9uIGlubGluZVRhcmdldChhcmcxLCBhcmcyLCBhcmczKQoreworICAg
IHJldHVybiBbYXJnMSwgYXJnMiwgYXJnM107Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgICAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShpbmxpbmVUYXJnZXQoKSksIGBbbnVsbCxudWxsLG51bGxdYCk7CisgICAgICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGlubGluZVRhcmdldCg0MikpLCBgWzQyLG51bGwsbnVsbF1g
KTsKKyAgICAgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5saW5lVGFyZ2V0KDQyLCA0Mykp
LCBgWzQyLDQzLG51bGxdYCk7CisgICAgICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGlubGlu
ZVRhcmdldCg0MiwgNDMsIDQ0KSksIGBbNDIsNDMsNDRdYCk7CisgICAgICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KGlubGluZVRhcmdldCg0MiwgNDMsIDQ0LCA0NSkpLCBgWzQyLDQzLDQ0XWAp
OworICAgIH0KK30KK25vSW5saW5lKHRlc3QpOwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtcmVzdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1p
c21hdGNoLXJlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZjODM3ZmQ2NDk2YzMwMDJmMTI3ODM2YzQzNjg4
ZThhY2RhNWRjNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21h
dGNoLXJlc3QuanMKQEAgLTAsMCArMSw2NSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit7CisgICAgZnVuY3Rpb24g
dGVzdDIoLi4ucmVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiByZXN0OworICAgIH0KKworICAg
IGZ1bmN0aW9uIHRlc3QxKGFyZzEsIGFyZzIsIGFyZzMpCisgICAgeworICAgICAgICByZXR1cm4g
dGVzdDIoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpCisg
ICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gdGVzdDEoKTsKKyAgICAgICAgc2hvdWxkQmUocmVz
dWx0Lmxlbmd0aCwgMyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgdW5kZWZpbmVkKTsK
KyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzFdLCB1bmRlZmluZWQpOworICAgICAgICBzaG91bGRC
ZShyZXN1bHRbMl0sIHVuZGVmaW5lZCk7CisgICAgfQorICAgIG5vSW5saW5lKHRlc3QpOworCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgdGVzdCgpOworfQorCit7
CisgICAgZnVuY3Rpb24gdGVzdDEoLi4ucmVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiByZXN0
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IHRlc3QxKCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDApOworICAgIH0K
KyAgICBub0lubGluZSh0ZXN0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kp
CisgICAgICAgIHRlc3QoKTsKK30KKworeworICAgIGZ1bmN0aW9uIHRlc3QxKC4uLnJlc3QpCisg
ICAgeworICAgICAgICByZXR1cm4gcmVzdDsKKyAgICB9CisgICAgbm9JbmxpbmUodGVzdDEpOwor
CisgICAgZnVuY3Rpb24gdGVzdCgpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gdGVzdDEo
KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMCk7CisgICAgfQorICAgIG5vSW5s
aW5lKHRlc3QpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAg
dGVzdCgpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318481</attachid>
            <date>2017-08-18 00:08:08 -0700</date>
            <delta_ts>2017-08-29 16:40:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175523-20170818160807.patch</filename>
            <type>text/plain</type>
            <size>61426</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZjA1Nzg3YjIyZTgxZTYwMjY0OWEzYTJjMDMyM2ZjZWNiZmRhOTU0Li44NTk2MjE1ODgxMGIxYzc2
Nzk0NzdkM2Y5Yzc1NGI3MDcxNjRhOTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OSBAQAorMjAxNy0wOC0xOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3VyIERGRyBwaXBlbGluZSBn
aXZlcyB1cCBpbmxpbmluZyB3aGVuIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0IGZ1bmN0aW9uIGlz
IG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIHRoZSBhcmd1bWVudHMuCisgICAgICAgIEl0IGVmZmVj
dGl2ZWx5IHByZXZlbnRzIHVzIGZyb20gaW5saW5pbmcgYW5kIG9wdGltaXppbmcgZnVuY3Rpb25z
LCB3aGljaCB0YWtlcyBzb21lIG9wdGlvbmFsIGFyZ3VtZW50cyBpbiB0aGUgZm9ybQorICAgICAg
ICBvZiB0aGUgcHJlLUVTNi4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGFib3Zl
IHJlc3RyaWN0aW9uIGJ5IHBlcmZvcm1pbmcgdGhlIGFyaXR5IGZpeHVwIGluIERGRy4KKworICAg
ICAgICBTaXhTcGVlZCBzaG93cyBpbXByb3ZlbWVudCB3aGVuIHdlIGNhbiBpbmxpbmUgYXJpdHkt
bWlzbWF0Y2hlZCBmdW5jdGlvbnMuIChGb3IgZXhhbXBsZSwgY2FsbGluZyBnZW5lcmF0b3IubmV4
dCgpKS4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmUg
ICAgICAgICAgICAgICAgICBwYXRjaGVkCisKKyAgICAgICAgZGVmYXVsdHMuZXM1ICAgICAgICAg
ICAgIDEyMzIuMTIyNistMjAuNjc3NSAgICBeICAgIDQ0Mi4zMzI2Ky0yNi4xODgzICAgICAgIF4g
ZGVmaW5pdGVseSAyLjc4NTV4IGZhc3RlcgorICAgICAgICByZXN0LmVzNiAgICAgICAgICAgICAg
ICAgICAgNS4zNDA2Ky0wLjg1ODggICAgIF4gICAgICAzLjU4MTIrLTAuNTM4OCAgICAgICAgXiBk
ZWZpbml0ZWx5IDEuNDkxM3ggZmFzdGVyCisgICAgICAgIHNwcmVhZC1nZW5lcmF0b3IuZXM2ICAg
ICAgMzIwLjkxMDcrLTEyLjQ4MDggICAgICAgICAzMTAuNDI5NSstMTIuMDA0NyAgICAgICAgIG1p
Z2h0IGJlIDEuMDMzOHggZmFzdGVyCisgICAgICAgIGdlbmVyYXRvci5lczYgICAgICAgICAgICAg
MzE4LjM1MTQrLTkuNjAyMyAgICAgXiAgICAyODYuNDk3NCstMTIuNjIwMyAgICAgICBeIGRlZmlu
aXRlbHkgMS4xMTEyeCBmYXN0ZXIKKworICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFt
ZS5jcHA6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dCBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6
OklubGluZUNhbGxGcmFtZTo6SW5saW5lQ2FsbEZyYW1lKToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAq
IGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
QXJndW1lbnRzVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjphcmd1bWVudHNJbnZv
bHZlU3RhY2tTbG90KToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0Q29kZVRvR2V0QXJndW1lbnRz
QXJyYXlMZW5ndGgpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldExvY2FsKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0QXJndW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpmaW5kQXJndW1lbnRQb3NpdGlvbkZvckxvY2FsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpnZXRBcmd1bWVudENvdW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aW5saW5pbmdDb3N0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVt
cHRUb0lubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tF
bnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNvbW1vbkRhdGE6OnZhbGlkYXRlUmVmZXJlbmNlcyk6Cisg
ICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6aXNMaXZlSW5CeXRlY29k
ZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmZvckFsbExvY2Fsc0xpdmVJbkJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSQXZhaWxh
YmlsaXR5QW5hbHlzaXNQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TG9jYWxPU1JBdmFp
bGFiaWxpdHlDYWxjdWxhdG9yOjpleGVjdXRlTm9kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRz
KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZHUHJl
Y2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENs
b2JiZXJpemVBZGFwdG9yOjpyZWFkVG9wKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0R2V0TGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVj
dEFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlN0YWNrTGF5b3V0UGhhc2U6OnJ1bik6CisgICAgICAgICogZnRsL0ZU
TENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0
bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzTGVuZ3RoKToKKyAgICAgICAgKiBmdGwvRlRMT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmpl
Y3RJbk9TUik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpyZWFkSW5saW5lZEZyYW1lKToKKyAgICAgICAgKiBqaXQv
QXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YXJndW1l
bnRzU3RhcnQpOgorICAgICAgICAqIGppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHA6CisgICAgICAg
IChKU0M6OmVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKToKKyAgICAgICAgKiBydW50aW1l
L0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6Y3Jl
YXRlV2l0aElubGluZUZyYW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
OgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OnBhZGRlZFN0YWNrU3BhY2VGb3IpOgor
ICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RhY2tBbGlnbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6c3RhY2tBbGlnbm1lbnRC
eXRlcyk6CisgICAgICAgIChKU0M6OnN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKToKKwogMjAxNy0w
OC0xNiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZp
eCBKU0NPbmx5IEFSTSBidWlsZGJvdHMgYWZ0ZXIgcjIyMDA0NyBhbmQgcjIyMDE4NApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcAppbmRl
eCA5N2NlODRkNjM1ODMwMzIwOGNmMDYwZTNjNWM2YWJkMzZlNjI3ZjYxLi4yZmU1MWFmNjFiY2Jl
NWJjODY4ODA2NDZiMjE4MDc1ZDRiNDE2NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcApAQCAtNzQsNyArNzQsOCBAQCB2b2lk
IElubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29u
dGV4dCogY29udGV4dCkgY29ucwogICAgICAgICBvdXQucHJpbnQoIiwgY2xvc3VyZSBjYWxsIik7
CiAgICAgZWxzZQogICAgICAgICBvdXQucHJpbnQoIiwga25vd24gY2FsbGVlOiAiLCBpbkNvbnRl
eHQoY2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKSwgY29udGV4dCkpOwotICAgIG91dC5wcmludCgi
LCBudW1BcmdzK3RoaXMgPSAiLCBhcmd1bWVudHMuc2l6ZSgpKTsKKyAgICBvdXQucHJpbnQoIiwg
bnVtQXJncyt0aGlzID0gIiwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIG91dC5w
cmludCgiLCBudW1GaXh1cCA9ICIsIGFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkgLSBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgb3V0LnByaW50KCIsIHN0YWNrT2Zmc2V0ID0gIiwg
c3RhY2tPZmZzZXQpOwogICAgIG91dC5wcmludCgiICgiLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bCgwKSwgIiBtYXBzIHRvICIsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKDApICsgc3RhY2tPZmZz
ZXQsICIpPiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lubGluZUNhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGlu
ZUNhbGxGcmFtZS5oCmluZGV4IGJlMWFmZGIxOTY3OWQ0N2EwYTBjYTVjYWVhY2Q1ZTI1MWU5YThj
NTYuLjA4YzA0YjQwM2M2YWM5NDkzOGU4YjQ3NWIxNDZkNmRmZmFkMmU4ZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKQEAgLTE3NSwx
MSArMTc1LDEyIEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgICAgICByZXR1cm4gY2Fs
bGVyID8gY2FsbGVyLT5pbmxpbmVDYWxsRnJhbWUgOiBudWxscHRyOwogICAgIH0KICAgICAKLSAg
ICBWZWN0b3I8VmFsdWVSZWNvdmVyeT4gYXJndW1lbnRzOyAvLyBJbmNsdWRlcyAndGhpcycuCisg
ICAgVmVjdG9yPFZhbHVlUmVjb3Zlcnk+IGFyZ3VtZW50c1dpdGhGaXh1cDsgLy8gSW5jbHVkZXMg
J3RoaXMnIGFuZCBhcml0eSBmaXh1cHMuCiAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gYmFz
ZWxpbmVDb2RlQmxvY2s7CiAgICAgVmFsdWVSZWNvdmVyeSBjYWxsZWVSZWNvdmVyeTsKICAgICBD
b2RlT3JpZ2luIGRpcmVjdENhbGxlcjsKIAorICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzOyAvLyBEbyBub3QgaW5jbHVkZSBmaXh1cHMuCiAgICAgc2lnbmVkIHN0YWNrT2Zm
c2V0IDogMjg7CiAgICAgdW5zaWduZWQga2luZCA6IDM7IC8vIHJlYWwgdHlwZSBpcyBLaW5kCiAg
ICAgYm9vbCBpc0Nsb3N1cmVDYWxsIDogMTsgLy8gSWYgZmFsc2UgdGhlbiB3ZSBrbm93IHRoYXQg
Y2FsbGVlL3Njb3BlIGFyZSBjb25zdGFudHMgYW5kIHRoZSBERkcgd29uJ3QgdHJlYXQgdGhlbSBh
cyB2YXJpYWJsZXMsIGkuZS4gdGhleSBoYXZlIHRvIGJlIHJlY292ZXJlZCBtYW51YWxseS4KQEAg
LTE4OSw3ICsxOTAsOCBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICAvLyBJbmxpbmVD
YWxsRnJhbWUncyBmaWVsZHMuIFRoaXMgY29uc3RydWN0b3IgaXMgaGVyZSBqdXN0IHRvIHJlZHVj
ZSBjb25mdXNpb24gaWYKICAgICAvLyB3ZSBmb3Jnb3QgdG8gaW5pdGlhbGl6ZSBleHBsaWNpdGx5
LgogICAgIElubGluZUNhbGxGcmFtZSgpCi0gICAgICAgIDogc3RhY2tPZmZzZXQoMCkKKyAgICAg
ICAgOiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygwKQorICAgICAgICAsIHN0YWNrT2Zmc2V0
KDApCiAgICAgICAgICwga2luZChDYWxsKQogICAgICAgICAsIGlzQ2xvc3VyZUNhbGwoZmFsc2Up
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDRkMWUwYTdlMzI4ZDc1NWNiNDg5MzAxYjg3
ZTJkYjUxZDdlYWQ1YmQuLmRhNGY5OWFiZTJmM2YyZGE4ODlmY2JiYTcyMmNiNGYyODg4ODQyNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE3MzIsNyArMTczMiw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50SW5k
ZXggPSBpbmRleC5hc1VJbnQzMigpICsgbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsK
ICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAo
YXJndW1lbnRJbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpIHsK
KyAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRJbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvck5v
ZGUobm9kZSkgPSBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCiAgICAgICAgICAgICAgICAg
ICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudEluZGV4ICsgMSkgKyBp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0
ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKQEAgLTE3NTEsNyArMTc1MSw3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgYm91bmQgb24gdGhlIHR5
cGVzIGV2ZW4gdGhvdWdoIGl0J3MgcmFuZG9tIGFjY2Vzcy4gVGFrZSBhZHZhbnRhZ2Ugb2YgdGhp
cy4KICAgICAgICAgICAgIAogICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSByZXN1bHQ7Ci0gICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXAoKTsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXAoKTsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsr
aSkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5tZXJnZSgKICAgICAgICAgICAgICAgICAgICAg
bV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCBjM2NmODI5ZGVjZTJkNTI3MzkxMDk4MjZiZThj
MWMxOTAyOThmMGIwLi5hYTM5OGUwZTJjMjE1YzM1MTYxZGZhNGQwZGUzYmYyNmQwMmRiMzk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRz
RWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTQ5MCw3ICs0OTAsNyBAQCBjbGFzcyBBcmd1bWVudHNF
bGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFpc0Nsb2JiZXJlZEJ5QmxvY2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0g
MTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOyAr
K2kpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJl
ZyA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIo
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkgKwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChpKTsKQEAgLTcwMCw3ICs3MDAs
NyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYWZl
VG9HZXRTdGFjazsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZVRvR2V0U3RhY2sgPSBpbmRleCA8IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2FmZVRvR2V0U3RhY2sgPSBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZVRvR2V0U3RhY2sgPQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2Rl
QmxvY2soKS0+bnVtUGFyYW1ldGVycygpKSAtIDE7CkBAIC04MDUsNyArODA1LDcgQEAgY2xhc3Mg
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChzcHJlYWQtPm9wKCkgPT0gUGhhbnRvbVNwcmVhZCAm
JiBzcHJlYWQtPmNoaWxkMSgpLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAg
PSBzcHJlYWQtPmNoaWxkMSgpLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9
IHNwcmVhZC0+Y2hpbGQxKCktPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9
IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZnJhbWVBcmd1bWVudENvdW50ID49IG51bWJlck9mQXJndW1lbnRz
VG9Ta2lwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1l
QXJndW1lbnRDb3VudCAtIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTgzNCw3ICs4MzQsNyBAQCBjbGFzcyBBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChzcHJlYWQtPm9wKCkgPT0gUGhhbnRvbVNwcmVhZCAm
JiBzcHJlYWQtPmNoaWxkMSgpLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9T
a2lwID0gc3ByZWFkLT5jaGlsZDEoKS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2Fs
bEZyYW1lID0gc3ByZWFkLT5jaGlsZDEoKS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFt
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJn
dW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmcmFtZUFyZ3VtZW50Q291
bnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbG9hZEluZGV4
ID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7IGxvYWRJbmRleCA8IGZyYW1lQXJndW1lbnRDb3Vu
dDsgKytsb2FkSW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQobG9hZElu
ZGV4ICsgMSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0OwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWNrQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3JhcGgu
bV9zdGFja0FjY2Vzc0RhdGEuYWRkKHJlZywgRmx1c2hlZEpTVmFsdWUpOwpAQCAtODg3LDcgKzg4
Nyw3IEBAIGNsYXNzIEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4gdmFyYXJnc0RhdGEt
Pm9mZnNldCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgLT0gdmFyYXJnc0RhdGEtPm9mZnNldDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCkBAIC05MDksNyArOTA5LDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRp
b25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOb2RlKiB2YWx1ZSA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb2FkSW5kZXggPSBzdG9yZUluZGV4ICsgdmFyYXJnc0RhdGEtPm9m
ZnNldDsKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRJbmRl
eCArIDEgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2FkSW5kZXggKyAxIDwgaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSB2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChsb2FkSW5kZXggKyAxKSArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQ7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRh
KiBkYXRhID0gbV9ncmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5hZGQoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZywgRmx1c2hlZEpTVmFsdWUpOwpAQCAtMTAz
Miw3ICsxMDMyLDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzcHJlYWQtPmNo
aWxkMSgpLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBzcHJlYWQtPmNo
aWxkMSgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IHNwcmVh
ZC0+Y2hpbGQxKCktPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1iZXJP
ZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXM7ICsraSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Rh
Y2tBY2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5hZGQoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoaSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZsdXNoZWRKU1ZhbHVlKTsKQEAgLTEwNjksNyArMTA2
OSw3IEBAIGNsYXNzIEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUg
PSBjYW5kaWRhdGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlz
VmFyYXJncygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPE5vZGUqPiBh
cmd1bWVudHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MSArIHZhcmFyZ3NEYXRhLT5maXJzdFZhckFyZ09mZnNldDsgaSA8IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMSArIHZhcmFyZ3NEYXRhLT5maXJzdFZhckFyZ09mZnNldDsgaSA8IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBo
Lm1fc3RhY2tBY2Nlc3NEYXRhLmFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsdXNoZWRKU1Zh
bHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRz
VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRp
bGl0aWVzLmNwcAppbmRleCAwNjFhMjg0Y2Y1ZDQ5N2M5NTk4N2U5ZjYzMDU2ZTVlOTc0M2Q2ZGQx
Li5iMGY1MjkxMTkyNThjYmRmNzM4YWJlZDM3NDQxZjJmMjYwMjE5ZTAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCkBAIC00
NSw3ICs0NSw4IEBAIGJvb2wgYXJndW1lbnRzSW52b2x2ZVN0YWNrU2xvdChJbmxpbmVDYWxsRnJh
bWUqIGlubGluZUNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVyCiAgICAgICAgICYmIHJlZyA9PSBW
aXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICB1bnNp
Z25lZCBudW1Bcmd1bWVudHMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAx
OworICAgIC8vIFdlIGRvIG5vdCBpbmNsdWRlIGZpeHVwcyBoZXJlIHNpbmNlIGl0IGlzIG5vdCBy
ZWxhdGVkIHRvIHxhcmd1bWVudHN8LCByZXN0IHBhcmFtZXRlcnMsIGFuZCB2YXJhcmdzLgorICAg
IHVuc2lnbmVkIG51bUFyZ3VtZW50cyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgLSAxOwogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudFN0YXJ0ID0KICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpICsgQ2Fs
bEZyYW1lOjphcmd1bWVudE9mZnNldCgwKTsKICAgICByZXR1cm4gcmVnID49IGFyZ3VtZW50U3Rh
cnQgJiYgcmVnIDwgYXJndW1lbnRTdGFydCArIG51bUFyZ3VtZW50czsKQEAgLTc0LDcgKzc1LDcg
QEAgTm9kZSogZW1pdENvZGVUb0dldEFyZ3VtZW50c0FycmF5TGVuZ3RoKAogICAgICAgICBudW1i
ZXJPZkFyZ3VtZW50c1RvU2tpcCA9IGFyZ3VtZW50cy0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAo
KTsKICAgICAKICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlz
VmFyYXJncygpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50c1NpemUgPSBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxOworICAgICAgICB1bnNpZ25lZCBhcmd1bWVudHNT
aXplID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIDE7CiAg
ICAgICAgIGlmIChhcmd1bWVudHNTaXplID49IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKQogICAg
ICAgICAgICAgYXJndW1lbnRzU2l6ZSAtPSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsKICAgICAg
ICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAppbmRleCA1ZGU3ZjNhM2NjYzFiZDdlMTViOWNhNGYyYWFmMzFiZmVkN2UwYjllLi5mZmJl
NDg2MDFkMzUzZmQ2YmMzNmNmMWVkZjU4OTMyOTkxZDk3ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHMu
aCIKICNpbmNsdWRlICJERkdBYnN0cmFjdEhlYXAuaCIKICNpbmNsdWRlICJERkdBcnJheU1vZGUu
aCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKQEAgLTYxLDYgKzYyLDcgQEAKICNpbmNs
dWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewpAQCAtMjE5LDcgKzIyMSw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB2b2lk
IGVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCwgTm9kZSogY2FsbFRhcmdldCwgVmlydHVh
bFJlZ2lzdGVyIHRoaXNBcmd1bW50KTsKICAgICB2b2lkIGVtaXRBcmd1bWVudFBoYW50b21zKGlu
dCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICBO
b2RlKiBnZXRBcmd1bWVudENvdW50KCk7Ci0gICAgdW5zaWduZWQgaW5saW5pbmdDb3N0KENhbGxW
YXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENhbGxNb2RlKTsgLy8gUmV0
dXJuIFVJTlRfTUFYIGlmIGl0J3Mgbm90IGFuIGlubGluaW5nIGNhbmRpZGF0ZS4gQnkgY29udmVu
dGlvbiwgaW50cmluc2ljcyBoYXZlIGEgY29zdCBvZiAxLgorICAgIHVuc2lnbmVkIGlubGluaW5n
Q29zdChDYWxsVmFyaWFudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVD
YWxsRnJhbWU6OktpbmQpOyAvLyBSZXR1cm4gVUlOVF9NQVggaWYgaXQncyBub3QgYW4gaW5saW5p
bmcgY2FuZGlkYXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5zaWNzIGhhdmUgYSBjb3N0IG9mIDEu
CiAgICAgLy8gSGFuZGxlIGlubGluaW5nLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZh
bHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgogICAgIGJvb2wgaGFuZGxlSW5saW5pbmco
Tm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0
YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwg
VmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwg
Tm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24pOwogICAgIGVudW0gQ2FsbGVyTGlua2FiaWxpdHkgeyBDYWxsZXJEb2VzTm9ybWFs
TGlua2luZywgQ2FsbGVyTGlua3NNYW51YWxseSB9OwpAQCAtNDY5LDggKzQ3MSw3IEBAIGNsYXNz
IEJ5dGVDb2RlUGFyc2VyIHsKICAgICB9CiAgICAgTm9kZSogc2V0TG9jYWwoY29uc3QgQ29kZU9y
aWdpbiYgc2VtYW50aWNPcmlnaW4sIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBOb2RlKiB2YWx1
ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQogICAgIHsKLSAgICAgICAgQ29kZU9yaWdp
biBvbGRTZW1hbnRpY09yaWdpbiA9IG1fY3VycmVudFNlbWFudGljT3JpZ2luOwotICAgICAgICBt
X2N1cnJlbnRTZW1hbnRpY09yaWdpbiA9IHNlbWFudGljT3JpZ2luOworICAgICAgICBTZXRGb3JT
Y29wZTxDb2RlT3JpZ2luPiBvcmlnaW5DaGFuZ2UobV9jdXJyZW50U2VtYW50aWNPcmlnaW4sIHNl
bWFudGljT3JpZ2luKTsKIAogICAgICAgICB1bnNpZ25lZCBsb2NhbCA9IG9wZXJhbmQudG9Mb2Nh
bCgpOwogICAgICAgICAKQEAgLTQ4OSw4ICs0OTAsNiBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7
CiAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KHNlbWFudGljT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAg
ICBOb2RlKiBub2RlID0gYWRkVG9HcmFwaChTZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNz
RGF0YSksIHZhbHVlKTsKICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5s
b2NhbChsb2NhbCkgPSBub2RlOwotCi0gICAgICAgIG1fY3VycmVudFNlbWFudGljT3JpZ2luID0g
b2xkU2VtYW50aWNPcmlnaW47CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIApAQCAtNTI0
LDggKzUyMyw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB9CiAgICAgTm9kZSogc2V0
QXJndW1lbnQoY29uc3QgQ29kZU9yaWdpbiYgc2VtYW50aWNPcmlnaW4sIFZpcnR1YWxSZWdpc3Rl
ciBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQogICAg
IHsKLSAgICAgICAgQ29kZU9yaWdpbiBvbGRTZW1hbnRpY09yaWdpbiA9IG1fY3VycmVudFNlbWFu
dGljT3JpZ2luOwotICAgICAgICBtX2N1cnJlbnRTZW1hbnRpY09yaWdpbiA9IHNlbWFudGljT3Jp
Z2luOworICAgICAgICBTZXRGb3JTY29wZTxDb2RlT3JpZ2luPiBvcmlnaW5DaGFuZ2UobV9jdXJy
ZW50U2VtYW50aWNPcmlnaW4sIHNlbWFudGljT3JpZ2luKTsKIAogICAgICAgICB1bnNpZ25lZCBh
cmd1bWVudCA9IG9wZXJhbmQudG9Bcmd1bWVudCgpOwogICAgICAgICBBU1NFUlQoYXJndW1lbnQg
PCBtX251bUFyZ3VtZW50cyk7CkBAIC01NDgsOCArNTQ2LDYgQEAgY2xhc3MgQnl0ZUNvZGVQYXJz
ZXIgewogICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShzZW1hbnRpY09yaWdpbi5ieXRlY29kZUluZGV4LCBCYWRJbmRleGluZ1R5cGUpKTsKICAg
ICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFj
Y2Vzc0RhdGEpLCB2YWx1ZSk7CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRh
aWwuYXJndW1lbnQoYXJndW1lbnQpID0gbm9kZTsKLQotICAgICAgICBtX2N1cnJlbnRTZW1hbnRp
Y09yaWdpbiA9IG9sZFNlbWFudGljT3JpZ2luOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9
CiAgICAgCkBAIC01NzEsNyArNTY3LDcgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0g
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zm
c2V0KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAob3BlcmFu
ZC5vZmZzZXQoKSA+PSBzdGF0aWNfY2FzdDxpbnQ+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICsgaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHMuc2l6ZSgpKSkKKyAgICAgICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpID49IHN0
YXRpY19jYXN0PGludD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6
dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKyBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1
cC5zaXplKCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaW50IGFy
Z3VtZW50ID0gVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQub2Zmc2V0KCkgLSBpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0KS50b0FyZ3VtZW50KCk7CiAgICAgICAgICAgICByZXR1cm4gc3RhY2st
Pm1fYXJndW1lbnRQb3NpdGlvbnNbYXJndW1lbnRdOwpAQCAtNjMxLDcgKzYyNyw3IEBAIGNsYXNz
IEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgaW50IG51bUFyZ3VtZW50czsKICAgICAgICAgaWYg
KElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lU3RhY2tFbnRyeS0+bV9p
bmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9oYXNEZWJ1Z2dlckVuYWJs
ZWQpOwotICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHMuc2l6ZSgpOworICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFt
ZS0+aXNDbG9zdXJlQ2FsbCkKICAgICAgICAgICAgICAgICBmbHVzaERpcmVjdChpbmxpbmVTdGFj
a0VudHJ5LT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSkpKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQpAQCAt
MTQxNCw3ICsxNDEwLDcgQEAgTm9kZSogQnl0ZUNvZGVQYXJzZXI6OmdldEFyZ3VtZW50Q291bnQo
KQogICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpKQogICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBhcmd1bWVudENvdW50ID0ganNDb25zdGFudChtX2dyYXBoLmZyZWV6ZShqc051bWJlcihtX2lu
bGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpLT52YWx1
ZSgpKTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBqc0NvbnN0YW50KG1fZ3JhcGguZnJl
ZXplKGpzTnVtYmVyKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykpLT52YWx1ZSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgYXJn
dW1lbnRDb3VudCA9IGFkZFRvR3JhcGgoR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE9w
SW5mbygwKSwgT3BJbmZvKFNwZWNJbnQzMk9ubHkpKTsKICAgICByZXR1cm4gYXJndW1lbnRDb3Vu
dDsKQEAgLTE0MjYsOSArMTQyMiwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0QXJndW1l
bnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SQogICAgICAg
ICBhZGRUb0dyYXBoKFBoYW50b20sIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCBy
ZWdpc3Rlck9mZnNldCkpKTsKIH0KIAotdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5n
Q29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Q2FsbE1vZGUgY2FsbE1vZGUpCit1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0
KENhbGxWYXJpYW50IGNhbGxlZSwgaW50LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCkKIHsK
LSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBzcGVjaWFsaXphdGlvbktpbmRGb3Io
Y2FsbE1vZGUpOworICAgIENhbGxNb2RlIGNhbGxNb2RlID0gSW5saW5lQ2FsbEZyYW1lOjpjYWxs
TW9kZUZvcihraW5kKTsKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9u
S2luZCA9IHNwZWNpYWxpemF0aW9uS2luZEZvcihjYWxsTW9kZSk7CiAgICAgaWYgKHZlcmJvc2Up
CiAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGlubGluaW5nICIsIGNhbGxlZSwgIiBpbnRv
ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwogICAgIApAQCAtMTQ1MiwzMCArMTQ0OSwy
MSBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNh
bGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQogICAgIC8vIHRvIGlubGluZSBpdCBpZiB3ZSBo
YWQgYSBzdGF0aWMgcHJvb2Ygb2Ygd2hhdCB3YXMgYmVpbmcgY2FsbGVkOyB0aGlzIG1pZ2h0IGhh
cHBlbiBmb3IgZXhhbXBsZQogICAgIC8vIGlmIHlvdSBjYWxsIGEgZ2xvYmFsIGZ1bmN0aW9uLCB3
aGVyZSB3YXRjaHBvaW50aW5nIGdpdmVzIHVzIHN0YXRpYyBpbmZvcm1hdGlvbi4gT3ZlcmFsbCwK
ICAgICAvLyBpdCdzIGEgcmFyZSBjYXNlIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgYW55IGhvdCBj
YWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBpbGVkLgotICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNlbGluZUNvZGVCbG9ja0Zvcihz
cGVjaWFsaXphdGlvbktpbmQpOwogICAgIGlmICghY29kZUJsb2NrKSB7CiAgICAgICAgIGlmICh2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBubyBjb2Rl
IGJsb2NrIGF2YWlsYWJsZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQog
Ci0gICAgLy8gRG9lcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3ZSdyZSBwYXNzaW5nIG1hdGNo
IHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0PyBXZSBjdXJyZW50bHkKLSAgICAvLyBpbmxpbmUgb25s
eSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVx
dWFsIHRvIHRoZSBudW1iZXIKLSAgICAvLyBhcmd1bWVudHMgZXhwZWN0ZWQuCi0gICAgaWYgKGNv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsK
LSAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBi
ZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNoLlxuIik7Ci0gICAgICAgIHJldHVybiBVSU5UX01BWDsK
LSAgICB9Ci0KICAgICBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVu
Y3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwoCi0gICAgICAgIGNvZGVCbG9jaywga2luZCwgY2FsbGVl
LmlzQ2xvc3VyZUNhbGwoKSk7CisgICAgICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5k
LCBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsKICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICBk
YXRhTG9nKCIgICAgQ2FsbCBtb2RlOiAiLCBjYWxsTW9kZSwgIlxuIik7CiAgICAgICAgIGRhdGFM
b2coIiAgICBJcyBjbG9zdXJlIGNhbGw6ICIsIGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCksICJcbiIp
OwogICAgICAgICBkYXRhTG9nKCIgICAgQ2FwYWJpbGl0eSBsZXZlbDogIiwgY2FwYWJpbGl0eUxl
dmVsLCAiXG4iKTsKLSAgICAgICAgZGF0YUxvZygiICAgIE1pZ2h0IGlubGluZSBmdW5jdGlvbjog
IiwgbWlnaHRJbmxpbmVGdW5jdGlvbkZvcihjb2RlQmxvY2ssIGtpbmQpLCAiXG4iKTsKLSAgICAg
ICAgZGF0YUxvZygiICAgIE1pZ2h0IGNvbXBpbGUgZnVuY3Rpb246ICIsIG1pZ2h0Q29tcGlsZUZ1
bmN0aW9uRm9yKGNvZGVCbG9jaywga2luZCksICJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAg
TWlnaHQgaW5saW5lIGZ1bmN0aW9uOiAiLCBtaWdodElubGluZUZ1bmN0aW9uRm9yKGNvZGVCbG9j
aywgc3BlY2lhbGl6YXRpb25LaW5kKSwgIlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICBNaWdo
dCBjb21waWxlIGZ1bmN0aW9uOiAiLCBtaWdodENvbXBpbGVGdW5jdGlvbkZvcihjb2RlQmxvY2ss
IHNwZWNpYWxpemF0aW9uS2luZCksICJcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICAgSXMgc3Vw
cG9ydGVkIGZvciBpbmxpbmluZzogIiwgaXNTdXBwb3J0ZWRGb3JJbmxpbmluZyhjb2RlQmxvY2sp
LCAiXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIElzIGlubGluaW5nIGNhbmRpZGF0ZTogIiwg
Y29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgp
LCAiXG4iKTsKICAgICB9CkBAIC0xNTQxLDE0ICsxNTI5LDIxIEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBD
YWxsVmFyCiB7CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQg
PSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKICAgICAKLSAg
ICBBU1NFUlQoaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IElubGluZUNhbGxGcmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCkpICE9IFVJTlRfTUFYKTsKKyAgICBB
U1NFUlQoaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtp
bmQpICE9IFVJTlRfTUFYKTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxl
ZS5mdW5jdGlvbkV4ZWN1dGFibGUoKS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRp
b25LaW5kKTsKICAgICBpbnNlcnRDaGVja3MoY29kZUJsb2NrKTsKIAogICAgIC8vIEZJWE1FOiBE
b24ndCBmbHVzaCBjb25zdGFudHMhCisKKyAgICBpbnQgYXJpdHlGaXh1cENvdW50ID0gc3RkOjpt
YXg8aW50Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCAwKTsKKyAgICBpbnQgcGFkZGVkU3RhY2tTcGFjZSA9IENvbW1vblNsb3dQYXRoczo6
cGFkZGVkU3RhY2tTcGFjZUZvcihjb2RlQmxvY2ssIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KTsKKyAgICBpbnQgZXh0cmFTbG90cyA9IHBhZGRlZFN0YWNrU3BhY2UgJSBzdGFja0FsaWdubWVu
dFJlZ2lzdGVycygpOworICAgIGludCByZWdpc3Rlck9mZnNldEFmdGVyRml4dXAgPSByZWdpc3Rl
ck9mZnNldDsKKyAgICBpZiAoZXh0cmFTbG90cyAhPSBwYWRkZWRTdGFja1NwYWNlKQorICAgICAg
ICByZWdpc3Rlck9mZnNldEFmdGVyRml4dXAgPSByZWdpc3Rlck9mZnNldCAtIChwYWRkZWRTdGFj
a1NwYWNlIC0gZXh0cmFTbG90cyk7CiAgICAgCi0gICAgaW50IGlubGluZUNhbGxGcmFtZVN0YXJ0
ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rl
ck9mZnNldCkpLm9mZnNldCgpICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7Cisg
ICAgaW50IGlubGluZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVy
YW5kKFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldEFmdGVyRml4dXApKS5vZmZzZXQoKSAr
IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwogICAgIAogICAgIGVuc3VyZUxvY2Fs
cygKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZVN0YXJ0KS50b0xvY2Fs
KCkgKyAxICsKQEAgLTE1NjMsMTIgKzE1NTgsMzEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5s
aW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIK
ICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlhYmxlID0gbnVsbHB0cjsKICAgICBp
ZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgewogICAgICAgICBOb2RlKiBjYWxsZWVTZXQgPSBz
ZXQoCi0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJh
bWVTbG90OjpjYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQpOworICAg
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0QWZ0ZXJGaXh1cCArIENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSksIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlhdGVOYWtlZFNldCk7CiAg
ICAgICAgIAogICAgICAgICBjYWxsZWVWYXJpYWJsZSA9IGNhbGxlZVNldC0+dmFyaWFibGVBY2Nl
c3NEYXRhKCk7CiAgICAgICAgIGNhbGxlZVZhcmlhYmxlLT5tZXJnZVNob3VsZE5ldmVyVW5ib3go
dHJ1ZSk7CiAgICAgfQogICAgIAorICAgIGlmIChhcml0eUZpeHVwQ291bnQpIHsKKyAgICAgICAg
Tm9kZSogdW5kZWZpbmVkID0gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9jb25zdGFu
dFVuZGVmaW5lZCkpOworICAgICAgICBhdXRvIGZpbGwgPSBbJl0gKFZpcnR1YWxSZWdpc3RlciBy
ZWcsIE5vZGUqIHZhbHVlKSB7CisgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBzZXQocmVnLCB2
YWx1ZSwgSW1tZWRpYXRlTmFrZWRTZXQpOworICAgICAgICAgICAgcmVzdWx0LT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKS0+bWVyZ2VTaG91bGROZXZlclVuYm94KHRydWUpOyAvLyBXZSBjYW5ub3QgZXhp
dCBhZnRlciBzdGFydGluZyBhcml0eSBmaXh1cC4KKyAgICAgICAgfTsKKworICAgICAgICAvLyBG
aWxsIGV4dHJhIHNsb3RzIHdoaWNoIHdlIGFscmVhZHkgaGF2ZSBmb3Igc3RhY2sgYWxpZ25tZW50
LiBJZiB3ZSBhcmUgbHVja3ksIHdlIGRvIG5vdCBuZWVkIHRvIG1vdmUgc3RhY2sgZnJhbWUuCisg
ICAgICAgIGlmIChleHRyYVNsb3RzID09IHBhZGRlZFN0YWNrU3BhY2UpIHsKKyAgICAgICAgICAg
IGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBleHRyYVNsb3RzOyArK2luZGV4KQorICAgICAg
ICAgICAgICAgIGZpbGwodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgKyBpbmRleCwgcmVnaXN0ZXJPZmZzZXQpLCB1bmRlZmluZWQpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2luZGV4KQorICAgICAgICAgICAgICAgIGZpbGwodmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaW5kZXgsIHJlZ2lzdGVyT2Zmc2V0QWZ0ZXJGaXh1cCks
IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpbmRleCwgcmVnaXN0ZXJPZmZzZXQpKSk7
CisgICAgICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgYXJpdHlGaXh1cENvdW50
OyArK2luZGV4KQorICAgICAgICAgICAgICAgIGZpbGwodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBpbmRleCwgcmVnaXN0ZXJPZmZzZXRBZnRl
ckZpeHVwKSwgdW5kZWZpbmVkKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIElubGluZVN0YWNr
RW50cnkgaW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgdGhpcywgY29kZUJsb2NrLCBjb2RlQmxv
Y2ssIG1fZ3JhcGgubGFzdEJsb2NrKCksIGNhbGxlZS5mdW5jdGlvbigpLCByZXN1bHRSZWcsCiAg
ICAgICAgIChWaXJ0dWFsUmVnaXN0ZXIpaW5saW5lQ2FsbEZyYW1lU3RhcnQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBraW5kKTsKQEAgLTE3NjcsNyArMTc4MSw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCBy
ZXN1bHRPcGVyYW5kCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgbXlJbmxp
bmluZ0Nvc3QgPSBpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgSW5saW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZvcihraW5kKSk7CisgICAgdW5zaWduZWQgbXlJ
bmxpbmluZ0Nvc3QgPSBpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywga2luZCk7CiAgICAgaWYgKG15SW5saW5pbmdDb3N0ID4gaW5saW5pbmdCYWxhbmNlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQyODAsNyArNDI5NCw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHRoaXMtPmlubGluZUNhbGxGcmFtZSgpOwogICAg
ICAgICAgICAgTm9kZSogbGVuZ3RoOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAm
JiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewotICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGFyZ3VtZW50c0xlbmd0aCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAt
IDE7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRzTGVuZ3RoID0gaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIDE7CiAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbnVtUGFyYW1zVG9Ta2lwID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5zaWdu
ZWRWYWx1ZTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHJlc3RMZW5ndGg7CiAgICAgICAgICAg
ICAgICAgaWYgKGFyZ3VtZW50c0xlbmd0aCA8PSBudW1QYXJhbXNUb1NraXApCkBAIC01NzMyLDgg
KzU3NDYsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICAgICAgTm9kZSogYXJndW1lbnQ7CiAgICAgICAgICAgICBpbnQzMl90IGFyZ3Vt
ZW50SW5kZXhJbmNsdWRpbmdUaGlzID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNW
YXJhcmdzKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQzMl90IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOwotICAgICAgICAgICAg
ICAgIGlmIChhcmd1bWVudEluZGV4SW5jbHVkaW5nVGhpcyA8IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKQorICAgICAgICAgICAgICAgIGludDMyX3QgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXNXaXRoRml4dXAgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCk7
CisgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50SW5kZXhJbmNsdWRpbmdUaGlzIDwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXApCiAgICAgICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50ID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50SW5kZXhJbmNsdWRp
bmdUaGlzKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBhcmd1
bWVudCA9IGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fY29uc3RhbnRVbmRlZmluZWQp
KTsKQEAgLTU5OTIsOCArNjAwNiw5IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5
OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIG1fYXJndW1l
bnRQb3NpdGlvbnMucmVzaXplKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2kpIHsKKyAgICBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXAgPSBzdGQ6Om1heDxpbnQ+KGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Cisg
ICAgbV9hcmd1bWVudFBvc2l0aW9ucy5yZXNpemUoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNX
aXRoRml4dXApOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXNXaXRoRml4dXA7ICsraSkgewogICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5t
X2FyZ3VtZW50UG9zaXRpb25zLmFwcGVuZChBcmd1bWVudFBvc2l0aW9uKCkpOwogICAgICAgICBB
cmd1bWVudFBvc2l0aW9uKiBhcmd1bWVudFBvc2l0aW9uID0gJmJ5dGVDb2RlUGFyc2VyLT5tX2dy
YXBoLm1fYXJndW1lbnRQb3NpdGlvbnMubGFzdCgpOwogICAgICAgICBtX2FyZ3VtZW50UG9zaXRp
b25zW2ldID0gYXJndW1lbnRQb3NpdGlvbjsKQEAgLTYwMTEsMTMgKzYwMjYsMTQgQEAgQnl0ZUNv
ZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgICAgIC8v
IHBsYW4gZmluaXNoZXMuCiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVC
bG9jay5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCkp
OwogICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+c2V0U3RhY2tPZmZzZXQoaW5saW5lQ2FsbEZy
YW1lU3RhcnQub2Zmc2V0KCkgLSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyk7Cisg
ICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogICAgICAgICBpZiAoY2FsbGVlKSB7CiAgICAgICAg
ICAgICBtX2lubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5Ojpj
b25zdGFudChjYWxsZWUpOwogICAgICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3Vy
ZUNhbGwgPSBmYWxzZTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2lubGluZUNhbGxG
cmFtZS0+aXNDbG9zdXJlQ2FsbCA9IHRydWU7CiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5k
aXJlY3RDYWxsZXIgPSBieXRlQ29kZVBhcnNlci0+Y3VycmVudENvZGVPcmlnaW4oKTsKLSAgICAg
ICAgbV9pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5yZXNpemVUb0ZpdChhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyk7IC8vIFNldCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBpbmNsdWRpbmcg
dGhpcywgYnV0IGRvbid0IGNvbmZpZ3VyZSB0aGUgdmFsdWUgcmVjb3ZlcmllcywgeWV0LgorICAg
ICAgICBtX2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnJlc2l6ZVRvRml0KGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZpeHVwKTsgLy8gU2V0IHRoZSBudW1iZXIgb2Yg
YXJndW1lbnRzIGluY2x1ZGluZyB0aGlzLCBidXQgZG9uJ3QgY29uZmlndXJlIHRoZSB2YWx1ZSBy
ZWNvdmVyaWVzLCB5ZXQuCiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5raW5kID0ga2luZDsK
ICAgICAgICAgCiAgICAgICAgIG1faWRlbnRpZmllclJlbWFwLnJlc2l6ZShjb2RlQmxvY2stPm51
bWJlck9mSWRlbnRpZmllcnMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbW1vbkRhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21t
b25EYXRhLmNwcAppbmRleCA5NjE0NzVjYmQzYzc0MTIyNjdmOGMwNzlhYjNmY2I5MGVkMzI5YmNi
Li44NzA3Nzg4OGUwZGYwOWNiOTRmMmUwOTMyMWQ1YjhkNTllNWE2YjQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2
b2lkIENvbW1vbkRhdGE6OnZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVmZXJlbmNl
cyYgdHJhY2tlZFJlZmVyZW5jZXMpCiB7CiAgICAgaWYgKElubGluZUNhbGxGcmFtZVNldCogc2V0
ID0gaW5saW5lQ2FsbEZyYW1lcy5nZXQoKSkgewogICAgICAgICBmb3IgKElubGluZUNhbGxGcmFt
ZSogaW5saW5lQ2FsbEZyYW1lIDogKnNldCkgewotICAgICAgICAgICAgZm9yIChWYWx1ZVJlY292
ZXJ5JiByZWNvdmVyeSA6IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzKSB7CisgICAgICAgICAg
ICBmb3IgKFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5IDogaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHNXaXRoRml4dXApIHsKICAgICAgICAgICAgICAgICBpZiAocmVjb3ZlcnkuaXNDb25zdGFudCgp
KQogICAgICAgICAgICAgICAgICAgICB0cmFja2VkUmVmZXJlbmNlcy5jaGVjayhyZWNvdmVyeS5j
b25zdGFudCgpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggNzM0NWNkNDA2YzBhNTky
OTNjOWEyOTcyYmQ4N2I2NDU4ODVhMGJlNy4uYjU0OWQ4YmFlMjk0MDAxOGY0M2IxMWIzOGM3YThm
YzE3M2Q4NTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25z
dGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTMzNSw3ICszMzUsNyBAQCBjbGFzcyBDb25zdGFu
dEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgLy8gR2V0TXlB
cmd1bWVudEJ5VmFsIGluIHN1Y2ggc3RhdGljYWxseS1vdXQtb2YtYm91bmRzIGFjY2Vzc2VzOyB3
ZSBqdXN0IGxvc2UgQ0ZBIHVubGVzcwogICAgICAgICAgICAgICAgIC8vIEdDU0UgcmVtb3ZlcyB0
aGUgYWNjZXNzIGVudGlyZWx5LgogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzLnNpemUoKSAtIDEpCisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChpbmRleCA+PSBtX3N0YXRlLnZhcmlhYmxlcygpLm51bWJlck9mQXJndW1l
bnRzKCkgLSAxKQpAQCAtMzU2LDcgKzM1Niw3IEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGluZGV4ICsgMSksIEZsdXNoZWRKU1ZhbHVlKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFt
ZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSAmJiBpbmRleCA8IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpICYmIGluZGV4IDwgaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIDEpIHsKICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvR2V0U3RhY2soZGF0YSk7CiAgICAgICAgICAgICAg
ICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggNWI4ZTcxMmNjMGRmODA3OGIy
MzBiZDcyYmEwMjM0NzQzMTIwZjBiZC4uNTU0MTZlNDI3MTFmOGJjM2ZmNWZhYzFhODA3YTM0MTk4
YTU3MmIyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTEwODYs
NyArMTA4Niw3IEBAIGJvb2wgR3JhcGg6OmlzTGl2ZUluQnl0ZWNvZGUoVmlydHVhbFJlZ2lzdGVy
IG9wZXJhbmQsIENvZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICAgICAgLy8gQXJndW1lbnRzIGFy
ZSBhbHdheXMgbGl2ZS4gVGhpcyB3b3VsZCBiZSByZWR1bmRhbnQgaWYgaXQgd2Fzbid0IGZvciBv
dXIKICAgICAgICAgLy8gb3BfY2FsbF92YXJhcmdzIGlubGluaW5nLgogICAgICAgICBpZiAocmVn
LmlzQXJndW1lbnQoKQotICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90PihyZWcudG9B
cmd1bWVudCgpKSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkgeworICAgICAg
ICAgICAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90PihyZWcudG9Bcmd1bWVudCgpKSA8IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKSkgewogICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiQXJndW1lbnQgaXMgbGl2ZS5cbiIpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
aW5kZXggNjZjYTUxMTUzOWFlNzdjYWU5M2ZmOTc3YjUxZjE2YzBmMTlmMDMxZi4uYjgxNzIyZmUx
NGJhZDI2ZjAzOWNjODI3ZThlNDExYjljNTZmMWMwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaApAQCAtODI4LDcgKzgyOCw3IEBAIGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1
YWwgU2Nhbm5hYmxlIHsKICAgICAgICAgICAgIC8vIEFyZ3VtZW50cyBhcmUgYWx3YXlzIGxpdmUu
IFRoaXMgd291bGQgYmUgcmVkdW5kYW50IGlmIGl0IHdhc24ndCBmb3Igb3VyCiAgICAgICAgICAg
ICAvLyBvcF9jYWxsX3ZhcmFyZ3MgaW5saW5pbmcuIFNlZSB0aGUgY29tbWVudCBhYm92ZS4KICAg
ICAgICAgICAgIGV4Y2x1c2lvblN0YXJ0ID0gc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3Vt
ZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKTsKLSAgICAgICAgICAgIGV4Y2x1c2lvbkVuZCA9IHN0
YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGV4Y2x1c2lvbkVuZCA9
IHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgLy8gV2Ugd2lsbCBhbHdheXMgaGF2ZSBhICJ0aGlzIiBhcmd1bWVudCBhbmQg
ZXhjbHVzaW9uU3RhcnQgc2hvdWxkIGJlIGEgc21hbGxlciBzdGFjawogICAgICAgICAgICAgLy8g
b2Zmc2V0IHRoYW4gZXhjbHVzaW9uRW5kLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAKaW5kZXgg
ZThiNDVjNDVhNjJmYzQ0OWMyMTljYTRkYWVlNGNlMWU2ZGRmY2I4NS4uM2NkYTY4NzJlNGM3ODQ5
MGJjZDA3ZDU5ZDdmOWI5ZWQ5ODA1YzUxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCkBA
IC0yNDAsNyArMjQwLDcgQEAgdm9pZCBMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6OmV4
ZWN1dGVOb2RlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2F2YWlsYWJpbGl0eS5tX2hlYXAu
c2V0KFByb21vdGVkSGVhcExvY2F0aW9uKEFyZ3VtZW50c0NhbGxlZVBMb2MsIG5vZGUpLCBjYWxs
ZWUpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1i
ZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUo
KSAtIDE7ICsraSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkFyZ3VtZW50
c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
LSAxOyArK2kpIHsKICAgICAgICAgICAgIEF2YWlsYWJpbGl0eSBhcmd1bWVudCA9IG1fYXZhaWxh
YmlsaXR5Lm1fbG9jYWxzLm9wZXJhbmQoCiAgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoaSkpOwogICAgICAgICAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCBiZDc4NTdm
OWZlNzFlMWRlMGNjNzQ3NmM4ODMzNWU4NWIzMjlmMGQ2Li4zYjczYTEyYzEwOWQ4M2Y5ODA1Njk1
OGYyYTU5NWE1YThkNjI0Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIE9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1l
bnRzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZQogICAgICAg
ICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IGppdC5tb3ZlKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSksCisgICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyksCiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyQ29tbW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyQ29tbW9uLmNwcAppbmRleCBmNzZjY2I4OGJiMWU0YzdhNzdhNDk0NmQ1Nzc4ODRjOTcy
NTAyMGFlLi41YThjYTQ3NWJkYzEwYWJhYmNlMDZlMDllYTVmNDM4Zjk1NTZhZjlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21t
b24uY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QyKTsKIAogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdz
KCkpCi0gICAgICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLCBBc3NlbWJseUhlbHBlcnM6OnBh
eWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICBqaXQuc3RvcmUz
MihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSwgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFs
UmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50KSkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGppdC5zdG9yZTY0
KGNhbGxlckZyYW1lR1BSLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRlT2Zmc2V0KGlu
bGluZUNhbGxGcmFtZS0+Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOwogICAgICAgICB1aW50MzJfdCBs
b2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgpLmJp
dHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxv
Y2FsQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9j
YWxDbG9iYmVyaXplLmgKaW5kZXggNWYwYWRjNmU1M2NlYzYyZDE5ODYwZTQwMTA1YzY0ZTQ1Nzll
OWE5MC4uMTZmZTI2ZjZjYTZiNDNjZTZlMzQ2ZTQyZjNmZjBhNDBiMDM4YTllYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXpl
LmgKQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFzcyBQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRv
ciB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGkrKykKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgaSsrKQogICAgICAgICAg
ICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLm9mZnNldCgpKSk7CiAgICAgICAgICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKICAgICAgICAgICAgICAgICBtX3Jl
YWQoVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50KSk7CkBAIC0yMTksNyArMjE5LDcgQEAgY2xhc3MgUHJlY2lz
ZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3IgewogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCksICJHZXRBcmd1
bWVudCBpcyBvbmx5IHVzZWQgZm9yIElubGluZUNhbGxGcmFtZSBpZiB0aGUgY2FsbCBmcmFtZSBp
cyB2YXJhcmdzLiIpOwotICAgICAgICAgICAgaWYgKGluZGV4SW5jbHVkaW5nVGhpcyA8IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkKKyAgICAgICAgICAgIGlmIChpbmRleEluY2x1
ZGluZ1RoaXMgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkpCiAg
ICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaW5kZXhJbmNsdWRpbmdUaGlz
KS5vZmZzZXQoKSkpOwogICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzksNyArMjM5LDcgQEAgY2xhc3MgUHJlY2lzZUxvY2Fs
Q2xvYmJlcml6ZUFkYXB0b3IgewogICAgICAgICAgICAgLy8gUmVhZCBhbGwgb2YgdGhlIGlubGlu
ZSBhcmd1bWVudHMgYW5kIGNhbGwgZnJhbWUgaGVhZGVycyB0aGF0IHdlIGRpZG4ndCBhbHJlYWR5
IGNhcHR1cmUuCiAgICAgICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxs
RnJhbWU7IGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZS0+Z2V0Q2FsbGVySW5saW5l
RnJhbWVTa2lwcGluZ1RhaWxDYWxscygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpbmxpbmVD
YWxsRnJhbWUtPmlzU3RyaWN0TW9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgaS0tID4gMTspCisg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgaS0tID4gMTspCiAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5vZmZzZXQoKSkpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRl
eCAxMGE0MTUzY2Y0YmJlMjEzNTZiYmFkNTI5MTVlZjllNTcwYmRkZjZhLi5iM2JiZjlmOWIyN2Fk
NWVhMTliMDU0Y2NjNjE3Zjk3YmY4MzM0NDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBSZWdp
c3RlcmVkU3RydWN0dXJlCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0R2V0TGVuZ3RoKElubGlu
ZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1
ZGVUaGlzKQogewogICAgIGlmIChpbmxpbmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+
aXNWYXJhcmdzKCkpCi0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzLnNpemUoKSAtICFpbmNsdWRlVGhpcyksIGxlbmd0aEdQUik7CisgICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgLSAhaW5jbHVkZVRoaXMpLCBsZW5ndGhHUFIpOwogICAgIGVsc2Ugewog
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0gbV9qaXQuYXJn
dW1lbnRDb3VudChpbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OnBheWxvYWRGb3IoYXJndW1lbnRDb3VudFJlZ2lzdGVyKSwgbGVuZ3RoR1BSKTsKQEAg
LTY3NDksNyArNjc0OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVEaXJl
Y3RBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICBib29sIGxlbmd0aElzS25vd247IC8vIGlmIGZh
bHNlLCBsZW5ndGhHUFIgd2lsbCBoYXZlIHRoZSBsZW5ndGguCiAgICAgaWYgKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUKICAgICAgICAgJiYgIW5vZGUtPm9yaWdpbi5zZW1h
bnRpYy5pbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7Ci0gICAgICAgIGtub3duTGVuZ3Ro
ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUo
KSAtIDE7CisgICAgICAgIGtub3duTGVuZ3RoID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICBsZW5n
dGhJc0tub3duID0gdHJ1ZTsKICAgICB9IGVsc2UgewogICAgICAgICBrbm93bkxlbmd0aCA9IFVJ
TlRfTUFYOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xh
eW91dFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQ
aGFzZS5jcHAKaW5kZXggMDNjNTAyZmM4ODBkY2JhODIzYzdlMWE0ZGM5ZDg5ZWEyNjc0ZDZkZC4u
YTA0NjcxYjQ2MTEyZWIyZDEyMThjMzFlNzhmZDE3Y2UyYjYyNGM1NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCkBAIC0xMjEsNyAr
MTIxLDcgQEAgY2xhc3MgU3RhY2tMYXlvdXRQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKyBpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHMuc2l6ZSgpOyBhcmd1bWVudC0tID4gMTspIHsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXpl
KCk7IGFyZ3VtZW50LS0gPiAxOykgewogICAgICAgICAgICAgICAgIHVzZWRMb2NhbHMuc2V0KFZp
cnR1YWxSZWdpc3RlcigKICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoYXJndW1lbnQpLm9mZnNldCgpICsKICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgpKTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBjbGFz
cyBTdGFja0xheW91dFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAg
YWxsb2NhdGlvbiwgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
KyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50cy5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgeworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBhcmd1bWVudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVw
LnNpemUoKTsgYXJndW1lbnQtLSA+IDE7KSB7CiAgICAgICAgICAgICAgICAgQXJndW1lbnRQb3Np
dGlvbiYgcG9zaXRpb24gPSBtX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnNbCiAgICAgICAgICAg
ICAgICAgICAgIGRhdGEuYXJndW1lbnRQb3NpdGlvblN0YXJ0ICsgYXJndW1lbnRdOwogICAgICAg
ICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBwb3NpdGlvbi5zb21lVmFy
aWFibGUoKTsKQEAgLTE5OCw3ICsxOTgsNyBAQCBjbGFzcyBTdGFja0xheW91dFBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgc291cmNlID0gVmFsdWVTb3VyY2U6OmZv
ckZsdXNoRm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1hY2hpbmVM
b2NhbCgpLCB2YXJpYWJsZS0+Zmx1c2hGb3JtYXQoKSk7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzW2FyZ3VtZW50XSA9IHNvdXJj
ZS52YWx1ZVJlY292ZXJ5KCk7CisgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHNXaXRoRml4dXBbYXJndW1lbnRdID0gc291cmNlLnZhbHVlUmVjb3ZlcnkoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5saW5l
Q2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsID09ICEhZGF0YS5jYWxsZWVWYXJpYWJsZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAppbmRleCBmZDA5MTQ1NmY3NTNmZmYy
NTc3MDBlMDI1NTZlYjFhNmJjN2IxNTFlLi5kNTg1NzBmNWVhNGY2MDkxZTg2MDM5NjU2YTgzZjhl
NTkzNzg1Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBp
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAg
LTk4LDkgKzk4LDkgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1
bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudFJlZ2lzdGVyLmlzVmFsaWQoKSkKICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudFJlZ2lzdGVyICs9IGxvY2Fsc09mZnNldDsKICAgICAgICAgCi0gICAgICAg
IGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXpl
KCk7IGFyZ3VtZW50LS0gPiAxOykgewotICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHNbYXJndW1lbnRdID0KLSAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50c1thcmd1bWVudF0ud2l0aExvY2Fsc09mZnNldChsb2NhbHNPZmZzZXQpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4
dXAuc2l6ZSgpOyBhcmd1bWVudC0tID4gMTspIHsKKyAgICAgICAgICAgIGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzV2l0aEZpeHVwW2FyZ3VtZW50XSA9CisgICAgICAgICAgICAgICAgaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXBbYXJndW1lbnRdLndpdGhMb2NhbHNPZmZzZXQo
bG9jYWxzT2Zmc2V0KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDk2NmVkM2FhYTk5YWIxMjZmOGMwN2EwYTJkMzIxOGRh
NzJlODk4ODIuLjE4OWJkM2I4MzAwNzFjMTg3ZWUzMGE0ODkyOTJiYTMzZjQyZDhlNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTM2ODUs
NyArMzY4NSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIAogICAgICAgICBMVmFs
dWUgbGltaXQ7CiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFt
ZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICBsaW1pdCA9IG1fb3V0LmNvbnN0SW50MzIoaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSk7CisgICAgICAgICAgICBsaW1pdCA9
IG1fb3V0LmNvbnN0SW50MzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyAtIDEpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBh
cmd1bWVudENvdW50UmVnaXN0ZXIgPSBBc3NlbWJseUhlbHBlcnM6OmFyZ3VtZW50Q291bnQoaW5s
aW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuc3ViKG1fb3V0LmxvYWQz
MihwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdpc3RlcikpLCBtX291dC5pbnQzMk9uZSk7CkBA
IC0zNzA4LDggKzM3MDgsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAKICAgICAg
ICAgVHlwZWRQb2ludGVyIGJhc2U7CiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKLSAg
ICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgPiAxKQotICAg
ICAgICAgICAgICAgIGJhc2UgPSBhZGRyZXNzRm9yKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
WzFdLnZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4gMSkKKyAgICAgICAgICAgICAgICBiYXNlID0g
YWRkcmVzc0ZvcihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cFsxXS52aXJ0dWFs
UmVnaXN0ZXIoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgYmFzZSA9IGFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSkpOwogICAgICAgICAKQEAgLTk1ODEsNyAr
OTU4MSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIEFyZ3VtZW50c0xlbmd0aCBs
ZW5ndGg7CiAKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1l
LT5pc1ZhcmFyZ3MoKSkgewotICAgICAgICAgICAgbGVuZ3RoLmtub3duID0gaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgIGxlbmd0aC5rbm93biA9IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAg
ICAgbGVuZ3RoLmlzS25vd24gPSB0cnVlOwogICAgICAgICAgICAgbGVuZ3RoLnZhbHVlID0gbV9v
dXQuY29uc3RJbnQzMihsZW5ndGgua25vd24pOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggMTk0MGEwOGJmYTEwODk1
YjFiNjk3ZjFjMzUwYTU5YTdjN2FmNDIzOC4uMDFiNWI0NjQxYWIzNTI3Y2MzY2M4MGExM2ViYjUx
OGQxOTM4NzMyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMu
Y3BwCkBAIC0yODgsNyArMjg4LDcgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBhcmd1bWVudENvdW50
ID0gbWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5z
aXplKCk7CisgICAgICAgICAgICBhcmd1bWVudENvdW50ID0gbWF0ZXJpYWxpemF0aW9uLT5vcmln
aW4oKS5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChhcmd1bWVudENvdW50KTsKICAgICAgICAgCiAgICAgICAgIEpTRnVu
Y3Rpb24qIGNhbGxlZSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IDE3NWZmZjMxYmFmM2ExYTM3ZDQ5YjZl
MWMzZTAzNmY2MTNlYzUwZjQuLjg1ZDE0N2E0N2M3ZjE5NWFhNjNhMmIyZTU3YTQ2NzYyM2RiNmJi
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zp
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zp
c2l0b3IuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBTdGFja1Zpc2l0b3I6OnJlYWRJbmxp
bmVkRnJhbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVPcmlnaW4qIGNvZGVPcmlnaW4KICAg
ICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lzdGVyLmlzVmFsaWQo
KSkKICAgICAgICAgICAgIG1fZnJhbWUubV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNh
bGxGcmFtZS0+cihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3Rlci5vZmZzZXQo
KSkudW5ib3hlZEludDMyKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZnJhbWUubV9h
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKTsKKyAgICAgICAgICAgIG1fZnJhbWUubV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9
IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgIG1f
ZnJhbWUubV9jb2RlQmxvY2sgPSBpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdl
dCgpOwogICAgICAgICBtX2ZyYW1lLm1fYnl0ZWNvZGVPZmZzZXQgPSBjb2RlT3JpZ2luLT5ieXRl
Y29kZUluZGV4OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aAppbmRleCA5MzhiZDFlM2YwZDBjMTMwZmEyMzdmZGM2N2ZlMmU1ZDM3ZTA3ZDA2Li5iNjZjZjcw
MTE5YjA5Njc5MGRkYzBlZTdjYmUwZjEyMzdjM2VlMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTEyMjAsOSArMTIyMCw5IEBAIGNsYXNzIEFz
c2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgewogICAgICAgICBp
ZiAoIWlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIo
Q2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKSk7Ci0gICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50cy5zaXplKCkgPD0gMSkKKyAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKSA8PSAxKQogICAgICAgICAgICAgcmV0dXJuIHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKDApOwotICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlY292ZXJ5ID0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbMV07CisgICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVj
b3ZlcnkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cFsxXTsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQocmVjb3ZlcnkudGVjaG5pcXVlKCkgPT0gRGlzcGxhY2VkSW5KU1N0YWNr
KTsKICAgICAgICAgcmV0dXJuIHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAKaW5kZXgg
MGY5NjFhNjYxZmIyNDc0NDI5MGUyMmRmNjE3YWJiMjdlNWU0Y2UyMC4uZTFjNWU1ZmVjMzVhODIw
ZWQ5MGI0NTUxYzI3OWFhOWM1YjBmYWFkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAKQEAgLTEyMSwxMSArMTIxLDEwIEBAIHZvaWQgZW1p
dFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgR1BS
UmVnIG51bVVzZWRTbG90CiAgICAgICAgICAgICBhcmd1bWVudENvdW50UmVjb3ZlcnkgPSBWYWx1
ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soCiAgICAgICAgICAgICAgICAgaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXIsIERhdGFGb3JtYXRJbnQzMik7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBhcmd1bWVudENvdW50UmVjb3ZlcnkgPSBWYWx1ZVJlY292
ZXJ5Ojpjb25zdGFudCgKLSAgICAgICAgICAgICAgICBqc051bWJlcihpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50cy5zaXplKCkpKTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWNvdmVyeSA9
IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzTnVtYmVyKGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAgICAgfQotICAgICAgICBpZiAoaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpID4gMSkKLSAgICAgICAgICAgIGZpcnN0QXJndW1lbnRS
ZWcgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1sxXS52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAg
ICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKSA+IDEp
CisgICAgICAgICAgICBmaXJzdEFyZ3VtZW50UmVnID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHNXaXRoRml4dXBbMV0udmlydHVhbFJlZ2lzdGVyKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGZpcnN0QXJndW1lbnRSZWcgPSBWaXJ0dWFsUmVnaXN0ZXIoMCk7CiAgICAgfSBlbHNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3Bw
CmluZGV4IGYwOTc4OGI3NWYzNWVjM2U4YjZlZThiZGRkZWE4NGYxM2FiOTNjZDQuLjAzMDMyNzBk
ODBhNmEwYWYwYTgzMDQ4NTM3MzQ1OGRkOTE2ODNmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcApAQCAtMTAzLDEyICsxMDMsMTIg
QEAgQ2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZVdpdGhJbmxpbmVGcmFt
ZShFeGVjU3RhdGUqIG15RnJhbWUsIEV4ZWMKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnRSZWdpc3Rlci5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgbGVu
Z3RoID0gdGFyZ2V0RnJhbWUtPnIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0
ZXIpLnVuYm94ZWRJbnQzMigpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGxl
bmd0aCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAgICAgICAgICAgICAg
ICBsZW5ndGggPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwog
ICAgICAgICAgICAgbGVuZ3RoLS07CiAgICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVFbXB0eSht
eUZyYW1lLCBjYWxsZWUsIGxlbmd0aCk7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGxlbmd0aDsgaS0tOykKLSAgICAgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KG15
RnJhbWUsIGksIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzW2kgKyAxXS5yZWNvdmVyKHRhcmdl
dEZyYW1lKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChteUZyYW1l
LCBpLCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cFtpICsgMV0ucmVjb3Zlcih0
YXJnZXRGcmFtZSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGVuZ3RoID0gdGFy
Z2V0RnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZUVt
cHR5KG15RnJhbWUsIGNhbGxlZSwgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggN2RjNjBmNDQ3NzFjZWQwMTVmZDg3NmE5
YzZjMzY4YzcyYzdhNDFlMC4uOGEyNmJkNDgzNmJjNjY2ZDY3ZDcxM2NmNWVjNjY1ODcyMDhkZWY0
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgKQEAgLTUwLDE4ICs1MCwyMiBAQCBzdHJ1Y3QgQXJpdHlDaGVja0RhdGEgewogICAgIHZvaWQq
IHRodW5rVG9DYWxsOwogfTsKIAorQUxXQVlTX0lOTElORSBpbnQgcGFkZGVkU3RhY2tTcGFjZUZv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaywgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQor
eworICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+PSBjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaW50IGZyYW1lU2l6ZSA9IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7
CisgICAgaW50IGFsaWduZWRGcmFtZVNpemVGb3JQYXJhbWV0ZXJzID0gV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksCisgICAgICAgIGNvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpOworICAg
IHJldHVybiBhbGlnbmVkRnJhbWVTaXplRm9yUGFyYW1ldGVycyAtIGZyYW1lU2l6ZTsKK30KKwog
QUxXQVlTX0lOTElORSBpbnQgYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7CiAgICAgQVNTRVJUKCFjYWxs
ZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwogICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gY2Fs
bGVlLT5qc0V4ZWN1dGFibGUoKS0+Y29kZUJsb2NrRm9yKGtpbmQpOwotICAgIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7
Ci0gICAgCi0gICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkpOwotICAgIGludCBmcmFtZVNpemUgPSBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwotICAgIGlu
dCBhbGlnbmVkRnJhbWVTaXplRm9yUGFyYW1ldGVycyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAotICAgICAgICBuZXdDb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKTsKLSAgICBpbnQg
cGFkZGVkU3RhY2tTcGFjZSA9IGFsaWduZWRGcmFtZVNpemVGb3JQYXJhbWV0ZXJzIC0gZnJhbWVT
aXplOworICAgIGludCBwYWRkZWRTdGFja1NwYWNlID0gcGFkZGVkU3RhY2tTcGFjZUZvcihuZXdD
b2RlQmxvY2ssIGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOwogICAgIAogICAg
IFJlZ2lzdGVyKiBuZXdTdGFjayA9IGV4ZWMtPnJlZ2lzdGVycygpIC0gV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIHBhZGRlZFN0YWNrU3BhY2UpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0FsaWdubWVu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tBbGlnbm1lbnQuaAppbmRl
eCAwMGM5MGExZTc4ZGNjMzI5ZWM3ZWExOTE0ZTYyOGVmODMzMGYwMTAwLi40ZTMxMDgwMzVmM2Fk
ODM1NDNiMzIxYmM2NzlkNDM5NTlkNTQ4YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdGFja0FsaWdubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0YWNrQWxpZ25tZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiAvLyBOQi4gRGlmZmVyZW50IHBsYXRmb3JtcyBtYXkgaGF2ZSBkaWZmZXJlbnQgcmVx
dWlyZW1lbnRzIGhlcmUuIEJ1dCAxNiBieXRlcyBpcyB2ZXJ5IGNvbW1vbi4KLWlubGluZSB1bnNp
Z25lZCBzdGFja0FsaWdubWVudEJ5dGVzKCkgeyByZXR1cm4gMTY7IH0KK2lubGluZSBjb25zdGV4
cHIgdW5zaWduZWQgc3RhY2tBbGlnbm1lbnRCeXRlcygpIHsgcmV0dXJuIDE2OyB9CiAKLWlubGlu
ZSB1bnNpZ25lZCBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpCitpbmxpbmUgY29uc3RleHByIHVu
c2lnbmVkIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkKIHsKICAgICByZXR1cm4gc3RhY2tBbGln
bm1lbnRCeXRlcygpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjUyODM0YTRmYjE4MWIw
ZWE2MDE3Yzk0YjE3MTc5OTNiZjMwZGMwYS4uZjhiMWQ0NDZjN2ZmN2I1ZTY3ZDlkNTAzMWEzNzdi
NDFiZGM5YTc2ZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxNy0wOC0xOCAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJl
bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1
NTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
dHJlc3MvYXJpdHktbWlzbWF0Y2gtYXJndW1lbnRzLWxlbmd0aC5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0MSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KiBzdHJlc3MvYXJpdHktbWlzbWF0Y2gtZ2V0LWFyZ3VtZW50LmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZEJlKToKKyAgICAgICAgKGJ1aWx0aW4uY3JlYXRlQnVpbHRpbik6CisgICAgICAgICh0
ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvYXJpdHktbWlzbWF0Y2gtaW5saW5pbmctZXh0cmEtc2xv
dHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoaW5saW5lVGFyZ2V0
KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxp
bmluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChpbmxpbmVUYXJn
ZXQpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2FyaXR5LW1pc21hdGNoLXJl
c3QuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdDIpOgorICAg
ICAgICAodGVzdDEpOgorICAgICAgICAodGVzdCk6CisKIDIwMTctMDgtMTUgIFJvYmluIE1vcmlz
c2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IHRoZSAnd2l0aCcg
a2V5d29yZCBpbiBGVEwuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRj
aC1hcmd1bWVudHMtbGVuZ3RoLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtYXJn
dW1lbnRzLWxlbmd0aC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTg5ZTI0YmIzNzlmZDYwZWM0NzBhNGQ2ZTVi
ZDU4NTJmYTQ3YWViCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlz
bWF0Y2gtYXJndW1lbnRzLWxlbmd0aC5qcwpAQCAtMCwwICsxLDUwIEBACitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKKyhm
dW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGVzdDEoYXJnMSwgYXJnMiwgYXJnMykKKyAgICB7
CisgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHRlc3QoKQorICAgIHsKKyAgICAgICAgc2hvdWxkQmUodGVzdDEoKSwgMCk7CisgICAgICAgIHNo
b3VsZEJlKHRlc3QxKDApLCAxKTsKKyAgICAgICAgc2hvdWxkQmUodGVzdDEoMCwgMSksIDIpOwor
ICAgICAgICBzaG91bGRCZSh0ZXN0MSgwLCAxLCAyKSwgMyk7CisgICAgICAgIHNob3VsZEJlKHRl
c3QxKDAsIDEsIDIsIDMpLCA0KTsKKyAgICB9CisgICAgbm9JbmxpbmUodGVzdCk7CisKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAgICB0ZXN0KCk7Cit9KCkpOworCiso
ZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRlc3QxKGZsYWcsIGFyZzEsIGFyZzIsIGFyZzMp
CisgICAgeworICAgICAgICBpZiAoZmxhZykKKyAgICAgICAgICAgIE9TUkV4aXQoKTsKKyAgICAg
ICAgcmV0dXJuIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KGZsYWcpCisg
ICAgeworICAgICAgICBzaG91bGRCZSh0ZXN0MShmbGFnKS5sZW5ndGgsIDEpOworICAgICAgICBz
aG91bGRCZSh0ZXN0MShmbGFnLCAwKS5sZW5ndGgsIDIpOworICAgICAgICBzaG91bGRCZSh0ZXN0
MShmbGFnLCAwLCAxKS5sZW5ndGgsIDMpOworICAgICAgICBzaG91bGRCZSh0ZXN0MShmbGFnLCAw
LCAxLCAyKS5sZW5ndGgsIDQpOworICAgICAgICBzaG91bGRCZSh0ZXN0MShmbGFnLCAwLCAxLCAy
LCAzKS5sZW5ndGgsIDUpOworICAgIH0KKyAgICBub0lubGluZSh0ZXN0KTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNTsgKytpKQorICAgICAgICB0ZXN0KGZhbHNlKTsKKworICAgIHRlc3Qo
dHJ1ZSk7CisgICAgdGVzdCh0cnVlKTsKKyAgICB0ZXN0KHRydWUpOworfSgpKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21hdGNoLWdldC1hcmd1bWVudC5qcyBiL0pTVGVz
dHMvc3RyZXNzL2FyaXR5LW1pc21hdGNoLWdldC1hcmd1bWVudC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjQx
YWJkMzgzYjQ0YTJhYTlmOGYxYzczNGZjMjZjMjVhYTkwM2VjCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtZ2V0LWFyZ3VtZW50LmpzCkBAIC0wLDAgKzEs
MjEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsKTsKK30KKwordmFyIGJ1aWx0aW4gPSBjcmVhdGVCdWlsdGluKGAoZnVuY3Rpb24g
KCkgeworICAgIHJldHVybiBAYXJndW1lbnQoMCk7Cit9KWApOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICB2YXIgcmVzdWx0ID0gYnVpbHRpbigpOworICAgIHNob3VsZEJlKHJlc3VsdCwgdW5k
ZWZpbmVkKTsKKyAgICB2YXIgcmVzdWx0ID0gYnVpbHRpbig0Mik7CisgICAgc2hvdWxkQmUocmVz
dWx0LCA0Mik7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7
ICsraSkKKyAgICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNt
YXRjaC1pbmxpbmluZy1leHRyYS1zbG90cy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21h
dGNoLWlubGluaW5nLWV4dHJhLXNsb3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhZjM3NDM3MGNmMTljNDIx
M2E5ZjI2YzM3ZWU5N2RlYTA1ZjQ4NDMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy1leHRyYS1zbG90cy5qcwpAQCAtMCwwICsxLDE3IEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFj
dHVhbCk7Cit9CisKK2Z1bmN0aW9uIGlubGluZVRhcmdldChhcmcxLCBhcmcyKQoreworICAgIHJl
dHVybiBbYXJnMSwgYXJnMl07Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoaW5saW5lVGFyZ2V0KG51bGwpKSwgYFtudWxsLG51bGxdYCk7Cit9Citu
b0lubGluZSh0ZXN0KTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgM2U0OyArK2kpCisgICAgdGVzdCgp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtaW5saW5pbmcuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MDgxZDlmMjEyMDA4ZDdhNjdkNjgwZTBkOTY1ZWJlMzBkOGIzNzY0Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtaW5saW5pbmcuanMKQEAgLTAsMCArMSwy
NCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBpbmxpbmVUYXJnZXQoYXJnMSwgYXJnMiwgYXJnMywg
YXJnNCwgYXJnNSkKK3sKKyAgICByZXR1cm4gW2FyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzVd
OworfQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGlu
bGluZVRhcmdldCgpKSwgYFtudWxsLG51bGwsbnVsbCxudWxsLG51bGxdYCk7CisgICAgc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoaW5saW5lVGFyZ2V0KDQyKSksIGBbNDIsbnVsbCxudWxsLG51bGws
bnVsbF1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIsIDQz
KSksIGBbNDIsNDMsbnVsbCxudWxsLG51bGxdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkoaW5saW5lVGFyZ2V0KDQyLCA0MywgNDQpKSwgYFs0Miw0Myw0NCxudWxsLG51bGxdYCk7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5saW5lVGFyZ2V0KDQyLCA0MywgNDQsIDQ1KSks
IGBbNDIsNDMsNDQsNDUsbnVsbF1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShpbmxp
bmVUYXJnZXQoNDIsIDQzLCA0NCwgNDUsIDQ2KSksIGBbNDIsNDMsNDQsNDUsNDZdYCk7CisgICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5saW5lVGFyZ2V0KDQyLCA0MywgNDQsIDQ1LCA0Niwg
NDcpKSwgYFs0Miw0Myw0NCw0NSw0Nl1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShp
bmxpbmVUYXJnZXQoNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgpKSwgYFs0Miw0Myw0NCw0NSw0
Nl1gKTsKK30KK25vSW5saW5lKHRlc3QpOworZm9yICh2YXIgaSA9IDA7IGkgPCAzZTQ7ICsraSkK
KyAgICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1y
ZXN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtcmVzdC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hODU4NGNjZTI5Yjg3MTczNzc2NjBlMmZmZGU5OTRkMzA2ZTM2OTQ1Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtcmVzdC5qcwpAQCAtMCwwICsxLDY1
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGVzdDIoLi4ucmVz
dCkKKyAgICB7CisgICAgICAgIHJldHVybiByZXN0OworICAgIH0KKworICAgIGZ1bmN0aW9uIHRl
c3QxKGFyZzEsIGFyZzIsIGFyZzMpCisgICAgeworICAgICAgICByZXR1cm4gdGVzdDIoYXJnMSwg
YXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpCisgICAgeworICAgICAg
ICB2YXIgcmVzdWx0ID0gdGVzdDEoKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwg
Myk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgdW5kZWZpbmVkKTsKKyAgICAgICAgc2hv
dWxkQmUocmVzdWx0WzFdLCB1bmRlZmluZWQpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0s
IHVuZGVmaW5lZCk7CisgICAgfQorICAgIG5vSW5saW5lKHRlc3QpOworCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgdGVzdCgpOworfSgpKTsKKworKGZ1bmN0aW9u
ICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0MSguLi5yZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHJlc3Q7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpCisgICAgeworICAgICAgICB2YXIg
cmVzdWx0ID0gdGVzdDEoKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMCk7Cisg
ICAgfQorICAgIG5vSW5saW5lKHRlc3QpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7
ICsraSkKKyAgICAgICAgdGVzdCgpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5j
dGlvbiB0ZXN0MSguLi5yZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlc3Q7CisgICAgfQor
ICAgIG5vSW5saW5lKHRlc3QxKTsKKworICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgIHsKKyAgICAg
ICAgdmFyIHJlc3VsdCA9IHRlc3QxKCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgs
IDApOworICAgIH0KKyAgICBub0lubGluZSh0ZXN0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMWU0OyArK2kpCisgICAgICAgIHRlc3QoKTsKK30oKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319305</attachid>
            <date>2017-08-29 16:40:07 -0700</date>
            <delta_ts>2017-08-30 19:20:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175523-20170830084006.patch</filename>
            <type>text/plain</type>
            <size>61921</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NTQ1YmZmM2Y3ZGM3ZDI0Y2FkNzdhMWJlYmY5MDQ1OGFhMWI4ZjY5Li4wN2RmMGJlZTlhYTAyMWQ1
ZjcyOThlMzE5ZTM3Y2EyNmFiMzYyZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OSBAQAorMjAxNy0wOC0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3VyIERGRyBwaXBlbGluZSBn
aXZlcyB1cCBpbmxpbmluZyB3aGVuIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0IGZ1bmN0aW9uIGlz
IG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIHRoZSBhcmd1bWVudHMuCisgICAgICAgIEl0IGVmZmVj
dGl2ZWx5IHByZXZlbnRzIHVzIGZyb20gaW5saW5pbmcgYW5kIG9wdGltaXppbmcgZnVuY3Rpb25z
LCB3aGljaCB0YWtlcyBzb21lIG9wdGlvbmFsIGFyZ3VtZW50cyBpbiB0aGUgZm9ybQorICAgICAg
ICBvZiB0aGUgcHJlLUVTNi4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGFib3Zl
IHJlc3RyaWN0aW9uIGJ5IHBlcmZvcm1pbmcgdGhlIGFyaXR5IGZpeHVwIGluIERGRy4KKworICAg
ICAgICBTaXhTcGVlZCBzaG93cyBpbXByb3ZlbWVudCB3aGVuIHdlIGNhbiBpbmxpbmUgYXJpdHkt
bWlzbWF0Y2hlZCBmdW5jdGlvbnMuIChGb3IgZXhhbXBsZSwgY2FsbGluZyBnZW5lcmF0b3IubmV4
dCgpKS4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmUg
ICAgICAgICAgICAgICAgICBwYXRjaGVkCisKKyAgICAgICAgZGVmYXVsdHMuZXM1ICAgICAgICAg
ICAgIDEyMzIuMTIyNistMjAuNjc3NSAgICBeICAgIDQ0Mi4zMzI2Ky0yNi4xODgzICAgICAgIF4g
ZGVmaW5pdGVseSAyLjc4NTV4IGZhc3RlcgorICAgICAgICByZXN0LmVzNiAgICAgICAgICAgICAg
ICAgICAgNS4zNDA2Ky0wLjg1ODggICAgIF4gICAgICAzLjU4MTIrLTAuNTM4OCAgICAgICAgXiBk
ZWZpbml0ZWx5IDEuNDkxM3ggZmFzdGVyCisgICAgICAgIHNwcmVhZC1nZW5lcmF0b3IuZXM2ICAg
ICAgMzIwLjkxMDcrLTEyLjQ4MDggICAgICAgICAzMTAuNDI5NSstMTIuMDA0NyAgICAgICAgIG1p
Z2h0IGJlIDEuMDMzOHggZmFzdGVyCisgICAgICAgIGdlbmVyYXRvci5lczYgICAgICAgICAgICAg
MzE4LjM1MTQrLTkuNjAyMyAgICAgXiAgICAyODYuNDk3NCstMTIuNjIwMyAgICAgICBeIGRlZmlu
aXRlbHkgMS4xMTEyeCBmYXN0ZXIKKworICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFt
ZS5jcHA6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dCBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6
OklubGluZUNhbGxGcmFtZTo6SW5saW5lQ2FsbEZyYW1lKToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAq
IGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
QXJndW1lbnRzVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjphcmd1bWVudHNJbnZv
bHZlU3RhY2tTbG90KToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0Q29kZVRvR2V0QXJndW1lbnRz
QXJyYXlMZW5ndGgpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldExvY2FsKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0QXJndW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpmaW5kQXJndW1lbnRQb3NpdGlvbkZvckxvY2FsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpnZXRBcmd1bWVudENvdW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aW5saW5pbmdDb3N0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVt
cHRUb0lubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tF
bnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNvbW1vbkRhdGE6OnZhbGlkYXRlUmVmZXJlbmNlcyk6Cisg
ICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6aXNMaXZlSW5CeXRlY29k
ZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmZvckFsbExvY2Fsc0xpdmVJbkJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSQXZhaWxh
YmlsaXR5QW5hbHlzaXNQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TG9jYWxPU1JBdmFp
bGFiaWxpdHlDYWxjdWxhdG9yOjpleGVjdXRlTm9kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRz
KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZHUHJl
Y2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENs
b2JiZXJpemVBZGFwdG9yOjpyZWFkVG9wKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0R2V0TGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVj
dEFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlN0YWNrTGF5b3V0UGhhc2U6OnJ1bik6CisgICAgICAgICogZnRsL0ZU
TENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0
bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzTGVuZ3RoKToKKyAgICAgICAgKiBmdGwvRlRMT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmpl
Y3RJbk9TUik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpyZWFkSW5saW5lZEZyYW1lKToKKyAgICAgICAgKiBqaXQv
QXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YXJndW1l
bnRzU3RhcnQpOgorICAgICAgICAqIGppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHA6CisgICAgICAg
IChKU0M6OmVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKToKKyAgICAgICAgKiBydW50aW1l
L0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6Y3Jl
YXRlV2l0aElubGluZUZyYW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
OgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6Om51bWJlck9mU3RhY2tQYWRkaW5nU2xv
dHMpOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RhY2tBbGlnbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6c3RhY2tBbGln
bm1lbnRCeXRlcyk6CisgICAgICAgIChKU0M6OnN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKToKKwog
MjAxNy0wOC0yOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBU
aHJvd2luZyBhbiBleGNlcHRpb24gaW4gdGhlIERGRy9GVEwgc2hvdWxkIG5vdCBiZSBhIGpldHRp
c29uLWFibGUgT1NSIGV4aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lubGluZUNhbGxGcmFtZS5jcHAKaW5kZXggOTdjZTg0ZDYzNTgzMDMyMDhjZjA2MGUzYzVjNmFi
ZDM2ZTYyN2Y2MS4uMmZlNTFhZjYxYmNiZTViYzg2ODgwNjQ2YjIxODA3NWQ0YjQxNjYxMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5j
cHAKQEAgLTc0LDcgKzc0LDggQEAgdm9pZCBJbmxpbmVDYWxsRnJhbWU6OmR1bXBJbkNvbnRleHQo
UHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnMKICAgICAgICAgb3V0
LnByaW50KCIsIGNsb3N1cmUgY2FsbCIpOwogICAgIGVsc2UKICAgICAgICAgb3V0LnByaW50KCIs
IGtub3duIGNhbGxlZTogIiwgaW5Db250ZXh0KGNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCksIGNv
bnRleHQpKTsKLSAgICBvdXQucHJpbnQoIiwgbnVtQXJncyt0aGlzID0gIiwgYXJndW1lbnRzLnNp
emUoKSk7CisgICAgb3V0LnByaW50KCIsIG51bUFyZ3MrdGhpcyA9ICIsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKTsKKyAgICBvdXQucHJpbnQoIiwgbnVtRml4dXAgPSAiLCBhcmd1bWVudHNX
aXRoRml4dXAuc2l6ZSgpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgIG91dC5w
cmludCgiLCBzdGFja09mZnNldCA9ICIsIHN0YWNrT2Zmc2V0KTsKICAgICBvdXQucHJpbnQoIiAo
IiwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoMCksICIgbWFwcyB0byAiLCB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbCgwKSArIHN0YWNrT2Zmc2V0LCAiKT4iKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaAppbmRleCBiZTFhZmRiMTk2Nzlk
NDdhMGEwY2E1Y2FlYWNkNWUyNTFlOWE4YzU2Li4wOGMwNGI0MDNjNmFjOTQ5MzhlOGI0NzViMTQ2
ZDZkZmZhZDJlOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5saW5lQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
bGluZUNhbGxGcmFtZS5oCkBAIC0xNzUsMTEgKzE3NSwxMiBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZy
YW1lIHsKICAgICAgICAgcmV0dXJuIGNhbGxlciA/IGNhbGxlci0+aW5saW5lQ2FsbEZyYW1lIDog
bnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAgVmVjdG9yPFZhbHVlUmVjb3Zlcnk+IGFyZ3VtZW50
czsgLy8gSW5jbHVkZXMgJ3RoaXMnLgorICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5PiBhcmd1bWVu
dHNXaXRoRml4dXA7IC8vIEluY2x1ZGVzICd0aGlzJyBhbmQgYXJpdHkgZml4dXBzLgogICAgIFdy
aXRlQmFycmllcjxDb2RlQmxvY2s+IGJhc2VsaW5lQ29kZUJsb2NrOwogICAgIFZhbHVlUmVjb3Zl
cnkgY2FsbGVlUmVjb3Zlcnk7CiAgICAgQ29kZU9yaWdpbiBkaXJlY3RDYWxsZXI7CiAKKyAgICB1
bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgLy8gRG8gbm90IGluY2x1ZGUgZml4
dXBzLgogICAgIHNpZ25lZCBzdGFja09mZnNldCA6IDI4OwogICAgIHVuc2lnbmVkIGtpbmQgOiAz
OyAvLyByZWFsIHR5cGUgaXMgS2luZAogICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCA6IDE7IC8vIElm
IGZhbHNlIHRoZW4gd2Uga25vdyB0aGF0IGNhbGxlZS9zY29wZSBhcmUgY29uc3RhbnRzIGFuZCB0
aGUgREZHIHdvbid0IHRyZWF0IHRoZW0gYXMgdmFyaWFibGVzLCBpLmUuIHRoZXkgaGF2ZSB0byBi
ZSByZWNvdmVyZWQgbWFudWFsbHkuCkBAIC0xODksNyArMTkwLDggQEAgc3RydWN0IElubGluZUNh
bGxGcmFtZSB7CiAgICAgLy8gSW5saW5lQ2FsbEZyYW1lJ3MgZmllbGRzLiBUaGlzIGNvbnN0cnVj
dG9yIGlzIGhlcmUganVzdCB0byByZWR1Y2UgY29uZnVzaW9uIGlmCiAgICAgLy8gd2UgZm9yZ290
IHRvIGluaXRpYWxpemUgZXhwbGljaXRseS4KICAgICBJbmxpbmVDYWxsRnJhbWUoKQotICAgICAg
ICA6IHN0YWNrT2Zmc2V0KDApCisgICAgICAgIDogYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
MCkKKyAgICAgICAgLCBzdGFja09mZnNldCgwKQogICAgICAgICAsIGtpbmQoQ2FsbCkKICAgICAg
ICAgLCBpc0Nsb3N1cmVDYWxsKGZhbHNlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBi
YmEwNmRhY2RmMTlhM2Y5NmEzN2I0OTZiMGMyNzhkYWIxZGEyZTQxLi5hYzE5YzI0NjM1NjM0NTY2
MzNkYWMxZGJhMTE4OWMyNGRlN2Y3ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xNzQ1LDcg
KzE3NDUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgCiAgICAgICAg
ICAgICB1bnNpZ25lZCBhcmd1bWVudEluZGV4ID0gaW5kZXguYXNVSW50MzIoKSArIG5vZGUtPm51
bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1l
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50SW5kZXggPCBpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50cy5zaXplKCkgLSAxKSB7CisgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50SW5k
ZXggPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMSkgewog
ICAgICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpID0gbV9zdGF0ZS52YXJpYWJsZXMoKS5v
cGVyYW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoYXJndW1lbnRJbmRleCArIDEpICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCk7CiAg
ICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CkBAIC0x
NzY0LDcgKzE3NjQsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgLy8g
V2UgaGF2ZSBhIGJvdW5kIG9uIHRoZSB0eXBlcyBldmVuIHRob3VnaCBpdCdzIHJhbmRvbSBhY2Nl
c3MuIFRha2UgYWR2YW50YWdlIG9mIHRoaXMuCiAgICAgICAgICAgICAKICAgICAgICAgICAgIEFi
c3RyYWN0VmFsdWUgcmVzdWx0OwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIG5v
ZGUtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIG5v
ZGUtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2kpIHsKICAgICAgICAgICAgICAgICByZXN1bHQubWVy
Z2UoCiAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKICAg
ICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpICsgaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXggYzNj
ZjgyOWRlY2UyZDUyNzM5MTA5ODI2YmU4YzFjMTkwMjk4ZjBiMC4uYWEzOThlMGUyYzIxNWMzNTE2
MWRmYTRkMGRlM2JmMjZkMDJkYjM5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC00OTAsNyAr
NDkwLDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNDbG9iYmVyZWRCeUJsb2NrKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpICsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxGcmFtZTo6YXJndW1lbnRP
ZmZzZXQoaSk7CkBAIC03MDAsNyArNzAwLDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgc2FmZVRvR2V0U3RhY2s7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNh
ZmVUb0dldFN0YWNrID0gaW5kZXggPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkg
LSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVUb0dldFN0YWNrID0gaW5kZXgg
PCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNh
ZmVUb0dldFN0YWNrID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSkgLSAxOwpA
QCAtODA1LDcgKzgwNSw3IEBAIGNsYXNzIEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3ByZWFk
LT5vcCgpID09IFBoYW50b21TcHJlYWQgJiYgc3ByZWFkLT5jaGlsZDEoKS0+b3AoKSA9PSBQaGFu
dG9tQ3JlYXRlUmVzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gc3ByZWFkLT5jaGlsZDEoKS0+bnVtYmVyT2ZBcmd1
bWVudHNUb1NraXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBzcHJlYWQtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50
aWMuaW5saW5lQ2FsbEZyYW1lOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBmcmFtZUFyZ3VtZW50Q291bnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXpl
KCkgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmcmFtZUFy
Z3VtZW50Q291bnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
IC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lQXJndW1lbnRD
b3VudCA+PSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmcmFtZUFyZ3VtZW50Q291bnQgLSBudW1iZXJPZkFyZ3VtZW50
c1RvU2tpcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC04
MzQsNyArODM0LDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3ByZWFk
LT5vcCgpID09IFBoYW50b21TcHJlYWQgJiYgc3ByZWFkLT5jaGlsZDEoKS0+b3AoKSA9PSBQaGFu
dG9tQ3JlYXRlUmVzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IHNwcmVhZC0+Y2hpbGQxKCktPm51bWJlck9m
QXJndW1lbnRzVG9Ta2lwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHNwcmVhZC0+Y2hpbGQxKCktPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBmcmFtZUFyZ3VtZW50Q291bnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50cy5zaXplKCkgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgZnJhbWVBcmd1bWVudENvdW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyAtIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGxvYWRJbmRleCA9IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOyBsb2Fk
SW5kZXggPCBmcmFtZUFyZ3VtZW50Q291bnQ7ICsrbG9hZEluZGV4KSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9IHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGxvYWRJbmRleCArIDEpICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFja0Fj
Y2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RhY2tBY2Nlc3NEYXRhLmFkZChyZWcsIEZsdXNo
ZWRKU1ZhbHVlKTsKQEAgLTg4Nyw3ICs4ODcsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmxp
bmVDYWxsRnJhbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhaW5saW5lQ2FsbEZy
YW1lLT5pc1ZhcmFyZ3MoKSkgewogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
cy5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyA+IHZhcmFyZ3NEYXRhLT5vZmZzZXQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC09IHZhcmFyZ3NEYXRhLT5vZmZz
ZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQpAQCAtOTA5LDcgKzkwOSw3IEBA
IGNsYXNzIEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBudWxscHRyOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9hZEluZGV4ID0gc3Rv
cmVJbmRleCArIHZhcmFyZ3NEYXRhLT5vZmZzZXQ7CiAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChsb2FkSW5kZXggKyAxIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHMuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9h
ZEluZGV4ICsgMSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmVnID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQobG9hZEluZGV4ICsgMSkgKyBpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFN0YWNrQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdGFja0FjY2Vzc0Rh
dGEuYWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWcs
IEZsdXNoZWRKU1ZhbHVlKTsKQEAgLTEwMzIsNyArMTAzMiw3IEBAIGNsYXNzIEFyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoc3ByZWFkLT5jaGlsZDEoKS0+b3AoKSA9PSBQaGFudG9tQ3JlYXRlUmVz
dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lID0gc3ByZWFkLT5jaGlsZDEoKS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNh
bGxGcmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVy
T2ZBcmd1bWVudHNUb1NraXAgPSBzcHJlYWQtPmNoaWxkMSgpLT5udW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAxICsgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAxICsgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7IGkgPCBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2kpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFN0YWNrQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9z
dGFja0FjY2Vzc0RhdGEuYWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbHVzaGVk
SlNWYWx1ZSk7CkBAIC0xMDY5LDcgKzEwNjksNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gY2FuZGlkYXRlLT5vcmlnaW4uc2VtYW50aWMuaW5s
aW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFt
ZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZlY3RvcjxOb2RlKj4gYXJndW1lbnRzOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyB2YXJhcmdzRGF0YS0+Zmlyc3RWYXJBcmdPZmZz
ZXQ7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyB2YXJhcmdzRGF0YS0+
Zmlyc3RWYXJBcmdPZmZzZXQ7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhY2tB
Y2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5hZGQoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChp
KSArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGbHVzaGVkSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAKaW5kZXggMDYxYTI4NGNmNWQ0OTdj
OTU5ODdlOWY2MzA1NmU1ZTk3NDNkNmRkMS4uYjBmNTI5MTE5MjU4Y2JkZjczOGFiZWQzNzQ0MWYy
ZjI2MDIxOWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1
bWVudHNVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJn
dW1lbnRzVXRpbGl0aWVzLmNwcApAQCAtNDUsNyArNDUsOCBAQCBib29sIGFyZ3VtZW50c0ludm9s
dmVTdGFja1Nsb3QoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIFZpcnR1YWxSZWdp
c3RlcgogICAgICAgICAmJiByZWcgPT0gVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgCi0gICAgdW5zaWduZWQgbnVtQXJndW1lbnRzID0gaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAvLyBXZSBkbyBub3QgaW5jbHVkZSBmaXh1
cHMgaGVyZSBzaW5jZSBpdCBpcyBub3QgcmVsYXRlZCB0byB8YXJndW1lbnRzfCwgcmVzdCBwYXJh
bWV0ZXJzLCBhbmQgdmFyYXJncy4KKyAgICB1bnNpZ25lZCBudW1Bcmd1bWVudHMgPSBpbmxpbmVD
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgYXJndW1lbnRTdGFydCA9CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0KSArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoMCk7CiAgICAg
cmV0dXJuIHJlZyA+PSBhcmd1bWVudFN0YXJ0ICYmIHJlZyA8IGFyZ3VtZW50U3RhcnQgKyBudW1B
cmd1bWVudHM7CkBAIC03NCw3ICs3NSw3IEBAIE5vZGUqIGVtaXRDb2RlVG9HZXRBcmd1bWVudHNB
cnJheUxlbmd0aCgKICAgICAgICAgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSBhcmd1bWVudHMt
Pm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7CiAgICAgCiAgICAgaWYgKGlubGluZUNhbGxGcmFt
ZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewotICAgICAgICB1bnNpZ25lZCBh
cmd1bWVudHNTaXplID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAg
ICAgICAgdW5zaWduZWQgYXJndW1lbnRzU2l6ZSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICBpZiAoYXJndW1lbnRzU2l6ZSA+PSBudW1i
ZXJPZkFyZ3VtZW50c1RvU2tpcCkKICAgICAgICAgICAgIGFyZ3VtZW50c1NpemUgLT0gbnVtYmVy
T2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggZTk3YjM4NzNiMzdiYjc3MDEzNzhj
ZmVlZmM4YjgwODUxYTFlNzk1MC4uZDRkZmVkOGQ1NzIxNmY2NTUwNjAxZDczNDhiYTFjMDcwMzJk
YzA1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgiCisj
aW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgi
CiAjaW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ0ZHLmgiCkBAIC02Miw2
ICs2Myw3IEBACiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvU2V0
Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTIyMCw3ICsyMjIsNyBAQCBjbGFzcyBCeXRlQ29kZVBh
cnNlciB7CiAgICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQsIE5vZGUqIGNh
bGxUYXJnZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1udCk7CiAgICAgdm9pZCBlbWl0QXJn
dW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyk7CiAgICAgTm9kZSogZ2V0QXJndW1lbnRDb3VudCgpOwotICAgIHVuc2lnbmVkIGlu
bGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBD
YWxsTW9kZSk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBpdCdzIG5vdCBhbiBpbmxpbmluZyBjYW5k
aWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3MgaGF2ZSBhIGNvc3Qgb2YgMS4KKyAgICB1
bnNpZ25lZCBpbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsgLy8gUmV0dXJuIFVJTlRfTUFYIGlmIGl0
J3Mgbm90IGFuIGlubGluaW5nIGNhbmRpZGF0ZS4gQnkgY29udmVudGlvbiwgaW50cmluc2ljcyBo
YXZlIGEgY29zdCBvZiAxLgogICAgIC8vIEhhbmRsZSBpbmxpbmluZy4gUmV0dXJuIHRydWUgaWYg
aXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICBib29s
IGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwg
Y29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3Rl
ciB0aGlzQXJndW1lbnQsIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWdu
ZWQgYXJndW1lbnRzT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2ln
bmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICBlbnVtIENhbGxlckxpbmthYmlsaXR5IHsg
Q2FsbGVyRG9lc05vcm1hbExpbmtpbmcsIENhbGxlckxpbmtzTWFudWFsbHkgfTsKQEAgLTQ3MCw4
ICs0NzIsNyBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgfQogICAgIE5vZGUqIHNldExv
Y2FsKGNvbnN0IENvZGVPcmlnaW4mIHNlbWFudGljT3JpZ2luLCBWaXJ0dWFsUmVnaXN0ZXIgb3Bl
cmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNldCkKICAgICB7Ci0g
ICAgICAgIENvZGVPcmlnaW4gb2xkU2VtYW50aWNPcmlnaW4gPSBtX2N1cnJlbnRTZW1hbnRpY09y
aWdpbjsKLSAgICAgICAgbV9jdXJyZW50U2VtYW50aWNPcmlnaW4gPSBzZW1hbnRpY09yaWdpbjsK
KyAgICAgICAgU2V0Rm9yU2NvcGU8Q29kZU9yaWdpbj4gb3JpZ2luQ2hhbmdlKG1fY3VycmVudFNl
bWFudGljT3JpZ2luLCBzZW1hbnRpY09yaWdpbik7CiAKICAgICAgICAgdW5zaWduZWQgbG9jYWwg
PSBvcGVyYW5kLnRvTG9jYWwoKTsKICAgICAgICAgCkBAIC00OTAsOCArNDkxLDYgQEAgY2xhc3Mg
Qnl0ZUNvZGVQYXJzZXIgewogICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShzZW1hbnRpY09yaWdpbi5ieXRlY29kZUluZGV4LCBCYWRJbmRleGlu
Z1R5cGUpKTsKICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9wSW5m
byh2YXJpYWJsZUFjY2Vzc0RhdGEpLCB2YWx1ZSk7CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT52
YXJpYWJsZXNBdFRhaWwubG9jYWwobG9jYWwpID0gbm9kZTsKLQotICAgICAgICBtX2N1cnJlbnRT
ZW1hbnRpY09yaWdpbiA9IG9sZFNlbWFudGljT3JpZ2luOwogICAgICAgICByZXR1cm4gbm9kZTsK
ICAgICB9CiAKQEAgLTUyNSw4ICs1MjQsNyBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAg
fQogICAgIE5vZGUqIHNldEFyZ3VtZW50KGNvbnN0IENvZGVPcmlnaW4mIHNlbWFudGljT3JpZ2lu
LCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9
IE5vcm1hbFNldCkKICAgICB7Ci0gICAgICAgIENvZGVPcmlnaW4gb2xkU2VtYW50aWNPcmlnaW4g
PSBtX2N1cnJlbnRTZW1hbnRpY09yaWdpbjsKLSAgICAgICAgbV9jdXJyZW50U2VtYW50aWNPcmln
aW4gPSBzZW1hbnRpY09yaWdpbjsKKyAgICAgICAgU2V0Rm9yU2NvcGU8Q29kZU9yaWdpbj4gb3Jp
Z2luQ2hhbmdlKG1fY3VycmVudFNlbWFudGljT3JpZ2luLCBzZW1hbnRpY09yaWdpbik7CiAKICAg
ICAgICAgdW5zaWduZWQgYXJndW1lbnQgPSBvcGVyYW5kLnRvQXJndW1lbnQoKTsKICAgICAgICAg
QVNTRVJUKGFyZ3VtZW50IDwgbV9udW1Bcmd1bWVudHMpOwpAQCAtNTQ5LDggKzU0Nyw2IEBAIGNs
YXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUoc2VtYW50aWNPcmlnaW4uYnl0ZWNvZGVJbmRleCwgQmFkSW5k
ZXhpbmdUeXBlKSk7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBhZGRUb0dyYXBoKFNldExvY2FsLCBP
cEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSwgdmFsdWUpOwogICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSA9IG5vZGU7Ci0KLSAgICAgICAg
bV9jdXJyZW50U2VtYW50aWNPcmlnaW4gPSBvbGRTZW1hbnRpY09yaWdpbjsKICAgICAgICAgcmV0
dXJuIG5vZGU7CiAgICAgfQogICAgIApAQCAtNTcyLDcgKzU2OCw3IEBAIGNsYXNzIEJ5dGVDb2Rl
UGFyc2VyIHsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChvcGVy
YW5kLm9mZnNldCgpID09IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6
OnRoaXNBcmd1bWVudE9mZnNldCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPj0gc3RhdGljX2Nhc3Q8aW50PihpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSArIGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpCisgICAgICAgICAgICBpZiAob3BlcmFu
ZC5vZmZzZXQoKSA+PSBzdGF0aWNfY2FzdDxpbnQ+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICsgaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIGludCBhcmd1bWVudCA9IFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgp
IC0gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Bcmd1bWVudCgpOwogICAgICAgICAg
ICAgcmV0dXJuIHN0YWNrLT5tX2FyZ3VtZW50UG9zaXRpb25zW2FyZ3VtZW50XTsKQEAgLTYzMiw3
ICs2MjgsNyBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgIGludCBudW1Bcmd1bWVu
dHM7CiAgICAgICAgIGlmIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IGlubGlu
ZVN0YWNrRW50cnktPm1faW5saW5lQ2FsbEZyYW1lKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1f
aGFzRGVidWdnZXJFbmFibGVkKTsKLSAgICAgICAgICAgIG51bUFyZ3VtZW50cyA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAgICAgICAgICAgIG51bUFyZ3VtZW50cyA9IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsKICAgICAgICAgICAgIGlm
IChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCiAgICAgICAgICAgICAgICAgZmx1c2hE
aXJlY3QoaW5saW5lU3RhY2tFbnRyeS0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihDYWxs
RnJhbWVTbG90OjpjYWxsZWUpKSk7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5p
c1ZhcmFyZ3MoKSkKQEAgLTE0MTgsNyArMTQxNCw3IEBAIE5vZGUqIEJ5dGVDb2RlUGFyc2VyOjpn
ZXRBcmd1bWVudENvdW50KCkKICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5l
Q2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKICAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBnZXQo
VmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9IGpzQ29uc3RhbnQobV9ncmFwaC5mcmVl
emUoanNOdW1iZXIobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
cy5zaXplKCkpKS0+dmFsdWUoKSk7CisgICAgICAgICAgICBhcmd1bWVudENvdW50ID0ganNDb25z
dGFudChtX2dyYXBoLmZyZWV6ZShqc051bWJlcihtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKS0+dmFsdWUoKSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBhZGRUb0dyYXBoKEdldEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBPcEluZm8oMCksIE9wSW5mbyhTcGVjSW50MzJPbmx5KSk7CiAgICAgcmV0
dXJuIGFyZ3VtZW50Q291bnQ7CkBAIC0xNDMwLDkgKzE0MjYsMTAgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6ZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEkKICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiB9CiAKLXVuc2lnbmVkIEJ5dGVDb2Rl
UGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIENhbGxNb2RlIGNhbGxNb2RlKQordW5zaWduZWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1l
OjpLaW5kIGtpbmQpCiB7Ci0gICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kID0gc3BlY2lh
bGl6YXRpb25LaW5kRm9yKGNhbGxNb2RlKTsKKyAgICBDYWxsTW9kZSBjYWxsTW9kZSA9IElubGlu
ZUNhbGxGcmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCk7CisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBzcGVjaWFsaXphdGlvbktpbmQgPSBzcGVjaWFsaXphdGlvbktpbmRGb3IoY2FsbE1vZGUpOwog
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAi
LCBjYWxsZWUsICIgaW50byAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAKQEAg
LTE0NTYsMzAgKzE0NTMsMjEgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29z
dChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHUKICAgICAvLyB0byBp
bmxpbmUgaXQgaWYgd2UgaGFkIGEgc3RhdGljIHByb29mIG9mIHdoYXQgd2FzIGJlaW5nIGNhbGxl
ZDsgdGhpcyBtaWdodCBoYXBwZW4gZm9yIGV4YW1wbGUKICAgICAvLyBpZiB5b3UgY2FsbCBhIGds
b2JhbCBmdW5jdGlvbiwgd2hlcmUgd2F0Y2hwb2ludGluZyBnaXZlcyB1cyBzdGF0aWMgaW5mb3Jt
YXRpb24uIE92ZXJhbGwsCiAgICAgLy8gaXQncyBhIHJhcmUgY2FzZSBiZWNhdXNlIHdlIGV4cGVj
dCB0aGF0IGFueSBob3QgY2FsbGVlcyB3b3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjb21waWxlZC4K
LSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKGtpbmQpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxp
bmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBpZiAoIWNvZGVCbG9jaykg
ewogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5n
IGJlY2F1c2Ugbm8gY29kZSBibG9jayBhdmFpbGFibGUuXG4iKTsKICAgICAgICAgcmV0dXJuIFVJ
TlRfTUFYOwogICAgIH0KIAotICAgIC8vIERvZXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgd2Un
cmUgcGFzc2luZyBtYXRjaCB0aGUgYXJpdHkgb2YgdGhlIHRhcmdldD8gV2UgY3VycmVudGx5Ci0g
ICAgLy8gaW5saW5lIG9ubHkgaWYgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIGlzIGdy
ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyCi0gICAgLy8gYXJndW1lbnRzIGV4cGVj
dGVkLgotICAgIGlmIChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA+IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxv
ZygiICAgIEZhaWxpbmcgYmVjYXVzZSBvZiBhcml0eSBtaXNtYXRjaC5cbiIpOwotICAgICAgICBy
ZXR1cm4gVUlOVF9NQVg7Ci0gICAgfQotCiAgICAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbCA9IGlubGluZUZ1bmN0aW9uRm9yQ2FwYWJpbGl0eUxldmVsKAotICAgICAgICBjb2RlQmxv
Y2ssIGtpbmQsIGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpOworICAgICAgICBjb2RlQmxvY2ssIHNw
ZWNpYWxpemF0aW9uS2luZCwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CiAgICAgaWYgKHZlcmJv
c2UpIHsKICAgICAgICAgZGF0YUxvZygiICAgIENhbGwgbW9kZTogIiwgY2FsbE1vZGUsICJcbiIp
OwogICAgICAgICBkYXRhTG9nKCIgICAgSXMgY2xvc3VyZSBjYWxsOiAiLCBjYWxsZWUuaXNDbG9z
dXJlQ2FsbCgpLCAiXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIENhcGFiaWxpdHkgbGV2ZWw6
ICIsIGNhcGFiaWxpdHlMZXZlbCwgIlxuIik7Ci0gICAgICAgIGRhdGFMb2coIiAgICBNaWdodCBp
bmxpbmUgZnVuY3Rpb246ICIsIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3IoY29kZUJsb2NrLCBraW5k
KSwgIlxuIik7Ci0gICAgICAgIGRhdGFMb2coIiAgICBNaWdodCBjb21waWxlIGZ1bmN0aW9uOiAi
LCBtaWdodENvbXBpbGVGdW5jdGlvbkZvcihjb2RlQmxvY2ssIGtpbmQpLCAiXG4iKTsKKyAgICAg
ICAgZGF0YUxvZygiICAgIE1pZ2h0IGlubGluZSBmdW5jdGlvbjogIiwgbWlnaHRJbmxpbmVGdW5j
dGlvbkZvcihjb2RlQmxvY2ssIHNwZWNpYWxpemF0aW9uS2luZCksICJcbiIpOworICAgICAgICBk
YXRhTG9nKCIgICAgTWlnaHQgY29tcGlsZSBmdW5jdGlvbjogIiwgbWlnaHRDb21waWxlRnVuY3Rp
b25Gb3IoY29kZUJsb2NrLCBzcGVjaWFsaXphdGlvbktpbmQpLCAiXG4iKTsKICAgICAgICAgZGF0
YUxvZygiICAgIElzIHN1cHBvcnRlZCBmb3IgaW5saW5pbmc6ICIsIGlzU3VwcG9ydGVkRm9ySW5s
aW5pbmcoY29kZUJsb2NrKSwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICBJcyBpbmxpbmlu
ZyBjYW5kaWRhdGU6ICIsIGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmlzSW5s
aW5pbmdDYW5kaWRhdGUoKSwgIlxuIik7CiAgICAgfQpAQCAtMTU0NSwxNCArMTUzMywyMSBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQg
cmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogewogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3Bl
Y2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Io
a2luZCk7CiAgICAgCi0gICAgQVNTRVJUKGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OmNhbGxNb2RlRm9yKGtpbmQpKSAhPSBV
SU5UX01BWCk7CisgICAgQVNTRVJUKGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBraW5kKSAhPSBVSU5UX01BWCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxlKCktPmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgaW5zZXJ0Q2hlY2tzKGNvZGVCbG9jayk7CiAK
ICAgICAvLyBGSVhNRTogRG9uJ3QgZmx1c2ggY29uc3RhbnRzIQorCisgICAgaW50IGFyaXR5Rml4
dXBDb3VudCA9IHN0ZDo6bWF4PGludD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgMCk7CisgICAgaW50IG51bWJlck9mU3RhY2tQYWRkaW5n
U2xvdHMgPSBDb21tb25TbG93UGF0aHM6Om51bWJlck9mU3RhY2tQYWRkaW5nU2xvdHMoY29kZUJs
b2NrLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgaW50IGV4dHJhU2xvdHMgPSBu
dW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3RzICUgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKTsKKyAg
ICBpbnQgcmVnaXN0ZXJPZmZzZXRBZnRlckZpeHVwID0gcmVnaXN0ZXJPZmZzZXQ7CisgICAgaWYg
KGV4dHJhU2xvdHMgIT0gbnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90cykKKyAgICAgICAgcmVnaXN0
ZXJPZmZzZXRBZnRlckZpeHVwID0gcmVnaXN0ZXJPZmZzZXQgLSAobnVtYmVyT2ZTdGFja1BhZGRp
bmdTbG90cyAtIGV4dHJhU2xvdHMpOwogICAgIAotICAgIGludCBpbmxpbmVDYWxsRnJhbWVTdGFy
dCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0
ZXJPZmZzZXQpKS5vZmZzZXQoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwor
ICAgIGludCBpbmxpbmVDYWxsRnJhbWVTdGFydCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3Bl
cmFuZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXRBZnRlckZpeHVwKSkub2Zmc2V0KCkg
KyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsKICAgICAKICAgICBlbnN1cmVMb2Nh
bHMoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWVTdGFydCkudG9Mb2Nh
bCgpICsgMSArCkBAIC0xNTY3LDEyICsxNTYyLDMxIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omlu
bGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFy
CiAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9IG51bGxwdHI7CiAgICAg
aWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpIHsKICAgICAgICAgTm9kZSogY2FsbGVlU2V0ID0g
c2V0KAotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlKSwgY2FsbFRhcmdldE5vZGUsIEltbWVkaWF0ZU5ha2VkU2V0KTsKKyAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldEFmdGVyRml4dXAgKyBDYWxs
RnJhbWVTbG90OjpjYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQpOwog
ICAgICAgICAKICAgICAgICAgY2FsbGVlVmFyaWFibGUgPSBjYWxsZWVTZXQtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpOwogICAgICAgICBjYWxsZWVWYXJpYWJsZS0+bWVyZ2VTaG91bGROZXZlclVuYm94
KHRydWUpOwogICAgIH0KICAgICAKKyAgICBpZiAoYXJpdHlGaXh1cENvdW50KSB7CisgICAgICAg
IE5vZGUqIHVuZGVmaW5lZCA9IGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fY29uc3Rh
bnRVbmRlZmluZWQpKTsKKyAgICAgICAgYXV0byBmaWxsID0gWyZdIChWaXJ0dWFsUmVnaXN0ZXIg
cmVnLCBOb2RlKiB2YWx1ZSkgeworICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gc2V0KHJlZywg
dmFsdWUsIEltbWVkaWF0ZU5ha2VkU2V0KTsKKyAgICAgICAgICAgIHJlc3VsdC0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCktPm1lcmdlU2hvdWxkTmV2ZXJVbmJveCh0cnVlKTsgLy8gV2UgY2Fubm90IGV4
aXQgYWZ0ZXIgc3RhcnRpbmcgYXJpdHkgZml4dXAuCisgICAgICAgIH07CisKKyAgICAgICAgLy8g
RmlsbCBleHRyYSBzbG90cyB3aGljaCB3ZSBhbHJlYWR5IGhhdmUgZm9yIHN0YWNrIGFsaWdubWVu
dC4gSWYgd2UgYXJlIGx1Y2t5LCB3ZSBkbyBub3QgbmVlZCB0byBtb3ZlIHN0YWNrIGZyYW1lLgor
ICAgICAgICBpZiAoZXh0cmFTbG90cyA9PSBudW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3RzKSB7Cisg
ICAgICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgZXh0cmFTbG90czsgKytpbmRl
eCkKKyAgICAgICAgICAgICAgICBmaWxsKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzICsgaW5kZXgsIHJlZ2lzdGVyT2Zmc2V0KSwgdW5kZWZpbmVk
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5k
ZXggPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpbmRleCkKKyAgICAgICAgICAgICAg
ICBmaWxsKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGluZGV4LCByZWdpc3Rlck9mZnNldEFm
dGVyRml4dXApLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaW5kZXgsIHJlZ2lzdGVy
T2Zmc2V0KSkpOworICAgICAgICAgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IGFyaXR5
Rml4dXBDb3VudDsgKytpbmRleCkKKyAgICAgICAgICAgICAgICBmaWxsKHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgaW5kZXgsIHJlZ2lzdGVy
T2Zmc2V0QWZ0ZXJGaXh1cCksIHVuZGVmaW5lZCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBJ
bmxpbmVTdGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkoCiAgICAgICAgIHRoaXMsIGNvZGVCbG9j
aywgY29kZUJsb2NrLCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxsZWUuZnVuY3Rpb24oKSwgcmVz
dWx0UmVnLAogICAgICAgICAoVmlydHVhbFJlZ2lzdGVyKWlubGluZUNhbGxGcmFtZVN0YXJ0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywga2luZCk7CkBAIC0xNzcxLDcgKzE3ODUsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBpbnQgcmVzdWx0T3BlcmFuZAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHVuc2ln
bmVkIG15SW5saW5pbmdDb3N0ID0gaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCkpOworICAgIHVu
c2lnbmVkIG15SW5saW5pbmdDb3N0ID0gaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIGtpbmQpOwogICAgIGlmIChteUlubGluaW5nQ29zdCA+IGlubGluaW5n
QmFsYW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00MzQ4LDcgKzQzNjIsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSB0aGlzLT5pbmxpbmVDYWxsRnJh
bWUoKTsKICAgICAgICAgICAgIE5vZGUqIGxlbmd0aDsKICAgICAgICAgICAgIGlmIChpbmxpbmVD
YWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKLSAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBhcmd1bWVudHNMZW5ndGggPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
cy5zaXplKCkgLSAxOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50c0xlbmd0aCA9
IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIG51bVBhcmFtc1RvU2tpcCA9IGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSByZXN0TGVuZ3RoOwog
ICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudHNMZW5ndGggPD0gbnVtUGFyYW1zVG9Ta2lwKQpA
QCAtNTkxOSw4ICs1OTMzLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZCBsaW1pdCkKICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50OwogICAgICAgICAgICAgaW50
MzJfdCBhcmd1bWVudEluZGV4SW5jbHVkaW5nVGhpcyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxs
RnJhbWUtPmlzVmFyYXJncygpKSB7Ci0gICAgICAgICAgICAgICAgaW50MzJfdCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKLSAg
ICAgICAgICAgICAgICBpZiAoYXJndW1lbnRJbmRleEluY2x1ZGluZ1RoaXMgPCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykKKyAgICAgICAgICAgICAgICBpbnQzMl90IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzV2l0aEZpeHVwID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4
dXAuc2l6ZSgpOworICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudEluZGV4SW5jbHVkaW5nVGhp
cyA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZpeHVwKQogICAgICAgICAgICAgICAg
ICAgICBhcmd1bWVudCA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudElu
ZGV4SW5jbHVkaW5nVGhpcykpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgYXJndW1lbnQgPSBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50
VW5kZWZpbmVkKSk7CkBAIC02MjA2LDggKzYyMjAsOSBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5l
U3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgfQogICAgIH0KICAgICAKLSAg
ICBtX2FyZ3VtZW50UG9zaXRpb25zLnJlc2l6ZShhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7
Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytp
KSB7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZpeHVwID0gc3RkOjpt
YXg8aW50Pihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkpOworICAgIG1fYXJndW1lbnRQb3NpdGlvbnMucmVzaXplKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzV2l0aEZpeHVwKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzV2l0aEZpeHVwOyArK2kpIHsKICAgICAgICAgYnl0ZUNvZGVQYXJzZXIt
Pm1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5hcHBlbmQoQXJndW1lbnRQb3NpdGlvbigpKTsK
ICAgICAgICAgQXJndW1lbnRQb3NpdGlvbiogYXJndW1lbnRQb3NpdGlvbiA9ICZieXRlQ29kZVBh
cnNlci0+bV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zLmxhc3QoKTsKICAgICAgICAgbV9hcmd1
bWVudFBvc2l0aW9uc1tpXSA9IGFyZ3VtZW50UG9zaXRpb247CkBAIC02MjI1LDEzICs2MjQwLDE0
IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAog
ICAgICAgICAvLyBwbGFuIGZpbmlzaGVzLgogICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+YmFz
ZWxpbmVDb2RlQmxvY2suc2V0V2l0aG91dFdyaXRlQmFycmllcihjb2RlQmxvY2stPmJhc2VsaW5l
VmVyc2lvbigpKTsKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPnNldFN0YWNrT2Zmc2V0KGlu
bGluZUNhbGxGcmFtZVN0YXJ0Lm9mZnNldCgpIC0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdp
c3RlcnMpOworICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKICAgICAgICAgaWYgKGNhbGxlZSkg
ewogICAgICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5ID0gVmFsdWVS
ZWNvdmVyeTo6Y29uc3RhbnQoY2FsbGVlKTsKICAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1l
LT5pc0Nsb3N1cmVDYWxsID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9p
bmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwgPSB0cnVlOwogICAgICAgICBtX2lubGluZUNh
bGxGcmFtZS0+ZGlyZWN0Q2FsbGVyID0gYnl0ZUNvZGVQYXJzZXItPmN1cnJlbnRDb2RlT3JpZ2lu
KCk7Ci0gICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMucmVzaXplVG9GaXQoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOyAvLyBTZXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMg
aW5jbHVkaW5nIHRoaXMsIGJ1dCBkb24ndCBjb25maWd1cmUgdGhlIHZhbHVlIHJlY292ZXJpZXMs
IHlldC4KKyAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5yZXNp
emVUb0ZpdChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cCk7IC8vIFNldCB0aGUg
bnVtYmVyIG9mIGFyZ3VtZW50cyBpbmNsdWRpbmcgdGhpcywgYnV0IGRvbid0IGNvbmZpZ3VyZSB0
aGUgdmFsdWUgcmVjb3ZlcmllcywgeWV0LgogICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+a2lu
ZCA9IGtpbmQ7CiAgICAgICAgIAogICAgICAgICBtX2lkZW50aWZpZXJSZW1hcC5yZXNpemUoY29k
ZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29tbW9uRGF0YS5jcHAKaW5kZXggOTYxNDc1Y2JkM2M3NDEyMjY3ZjhjMDc5YWIzZmNi
OTBlZDMyOWJjYi4uODcwNzc4ODhlMGRmMDljYjk0ZjJlMDkzMjFkNWI4ZDU5ZTVhNmI0OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwCkBAIC0xNzYsNyAr
MTc2LDcgQEAgdm9pZCBDb21tb25EYXRhOjp2YWxpZGF0ZVJlZmVyZW5jZXMoY29uc3QgVHJhY2tl
ZFJlZmVyZW5jZXMmIHRyYWNrZWRSZWZlcmVuY2VzKQogewogICAgIGlmIChJbmxpbmVDYWxsRnJh
bWVTZXQqIHNldCA9IGlubGluZUNhbGxGcmFtZXMuZ2V0KCkpIHsKICAgICAgICAgZm9yIChJbmxp
bmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA6ICpzZXQpIHsKLSAgICAgICAgICAgIGZvciAo
VmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgOiBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cykgewor
ICAgICAgICAgICAgZm9yIChWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA6IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzV2l0aEZpeHVwKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlY292ZXJ5Lmlz
Q29uc3RhbnQoKSkKICAgICAgICAgICAgICAgICAgICAgdHJhY2tlZFJlZmVyZW5jZXMuY2hlY2so
cmVjb3ZlcnkuY29uc3RhbnQoKSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDczNDVj
ZDQwNmMwYTU5MjkzYzlhMjk3MmJkODdiNjQ1ODg1YTBiZTcuLmI1NDlkOGJhZTI5NDAwMThmNDNi
MTFiMzhjN2E4ZmMxNzNkODUwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0zMzUsNyArMzM1LDcgQEAgY2xh
c3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAg
IC8vIEdldE15QXJndW1lbnRCeVZhbCBpbiBzdWNoIHN0YXRpY2FsbHktb3V0LW9mLWJvdW5kcyBh
Y2Nlc3Nlczsgd2UganVzdCBsb3NlIENGQSB1bmxlc3MKICAgICAgICAgICAgICAgICAvLyBHQ1NF
IHJlbW92ZXMgdGhlIGFjY2VzcyBlbnRpcmVseS4KICAgICAgICAgICAgICAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKQorICAgICAgICAgICAgICAgICAgICBpZiAoaW5k
ZXggPj0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIDEpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gbV9zdGF0ZS52YXJpYWJsZXMoKS5udW1i
ZXJPZkFyZ3VtZW50cygpIC0gMSkKQEAgLTM1Niw3ICszNTYsNyBAQCBjbGFzcyBDb25zdGFudEZv
bGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpbmRleCArIDEpLCBGbHVzaGVkSlNWYWx1ZSk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChpbmxp
bmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkgJiYgaW5kZXggPCBp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKSB7CisgICAgICAgICAgICAgICAg
aWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSAmJiBp
bmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxKSB7
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0dldFN0YWNrKGRhdGEpOwogICAg
ICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDFkNDhmOGNi
MGVhYTU4NzY0ZGUzNDViMGM0NmRlODI4YmM3MmQ4NWMuLjM1ZDZmNGM3NTAwNWYxOTQ2ZWIzNDEz
OWQwOGU1YWE3ZmQ5NjZhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
CkBAIC0xMTU3LDcgKzExNTcsNyBAQCBib29sIEdyYXBoOjppc0xpdmVJbkJ5dGVjb2RlKFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiAgICAgICAgIC8vIEFy
Z3VtZW50cyBhcmUgYWx3YXlzIGxpdmUuIFRoaXMgd291bGQgYmUgcmVkdW5kYW50IGlmIGl0IHdh
c24ndCBmb3Igb3VyCiAgICAgICAgIC8vIG9wX2NhbGxfdmFyYXJncyBpbmxpbmluZy4KICAgICAg
ICAgaWYgKHJlZy5pc0FyZ3VtZW50KCkKLSAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PHNpemVf
dD4ocmVnLnRvQXJndW1lbnQoKSkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkp
IHsKKyAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PHNpemVfdD4ocmVnLnRvQXJndW1lbnQoKSkg
PCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkpIHsKICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkFyZ3VtZW50IGlzIGxp
dmUuXG4iKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCmluZGV4IDMzNGVhOTdmZTVlYmI3NzNkM2VkZTcwMzY4OWViMDcxYjhjMTZmYjEu
LjY2MzA4MTUxZGRjNTA3ZDQ1NzMzOWNiNWJkZjBlNzMwOGZkNTc3ZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTgzOSw3ICs4MzksNyBAQCBjbGFzcyBHcmFwaCA6IHB1
YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAgICAgICAgICAgICAvLyBBcmd1bWVudHMgYXJlIGFs
d2F5cyBsaXZlLiBUaGlzIHdvdWxkIGJlIHJlZHVuZGFudCBpZiBpdCB3YXNuJ3QgZm9yIG91cgog
ICAgICAgICAgICAgLy8gb3BfY2FsbF92YXJhcmdzIGlubGluaW5nLiBTZWUgdGhlIGNvbW1lbnQg
YWJvdmUuCiAgICAgICAgICAgICBleGNsdXNpb25TdGFydCA9IHN0YWNrT2Zmc2V0ICsgQ2FsbEZy
YW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCk7Ci0gICAgICAgICAgICBleGNsdXNp
b25FbmQgPSBzdGFja09mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdU
aGlzKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSk7CisgICAgICAgICAgICBleGNs
dXNpb25FbmQgPSBzdGFja09mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRp
bmdUaGlzKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIC8vIFdlIHdpbGwgYWx3YXlzIGhhdmUgYSAidGhpcyIgYXJn
dW1lbnQgYW5kIGV4Y2x1c2lvblN0YXJ0IHNob3VsZCBiZSBhIHNtYWxsZXIgc3RhY2sKICAgICAg
ICAgICAgIC8vIG9mZnNldCB0aGFuIGV4Y2x1c2lvbkVuZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2Uu
Y3BwCmluZGV4IGU4YjQ1YzQ1YTYyZmM0NDljMjE5Y2E0ZGFlZTRjZTFlNmRkZmNiODUuLjNjZGE2
ODcyZTRjNzg0OTBiY2QwN2Q1OWQ3ZjliOWVkOTgwNWM1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1Bo
YXNlLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxj
dWxhdG9yOjpleGVjdXRlTm9kZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9hdmFpbGFiaWxp
dHkubV9oZWFwLnNldChQcm9tb3RlZEhlYXBMb2NhdGlvbihBcmd1bWVudHNDYWxsZWVQTG9jLCBu
b2RlKSwgY2FsbGVlKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCkgLSAxOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVy
T2ZBcmd1bWVudHNUb1NraXA7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzIC0gMTsgKytpKSB7CiAgICAgICAgICAgICBBdmFpbGFiaWxpdHkgYXJndW1lbnQg
PSBtX2F2YWlsYWJpbGl0eS5tX2xvY2Fscy5vcGVyYW5kKAogICAgICAgICAgICAgICAgIGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KGkpKTsK
ICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5k
ZXggYmQ3ODU3ZjlmZTcxZTFkZTBjYzc0NzZjODgzMzVlODViMzI5ZjBkNi4uM2I3M2ExMmMxMDlk
ODNmOTgwNTY5NThmMmE1OTVhNWE4ZDYyNDI5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBPU1JFeGl0OjplbWl0UmVz
dG9yZUFyZ3VtZW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNv
dmUKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBqaXQubW92ZSgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLAorICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLAogICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qx
KTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXggNmI5NDkwMjA3M2RhZDRkNjkxNzY1ZjQz
YWQ2ZWIxNzRjYWYyNmM4OS4uMjE1MTE3MmIyYjVlZjIyMDkzNDg0NjFhODkwZWQ0MTk5ZWQ2ZjA4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyQ29tbW9uLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2Fs
bEZyYW1lcyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAg
ICAgICAgICBHUFJJbmZvOjpyZWdUMik7CiAKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUt
PmlzVmFyYXJncygpKQotICAgICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSwgQXNzZW1ibHlI
ZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAg
aml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZv
cigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBq
aXQuc3RvcmU2NChjYWxsZXJGcmFtZUdQUiwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yQnl0
ZU9mZnNldChpbmxpbmVDYWxsRnJhbWUtPmNhbGxlckZyYW1lT2Zmc2V0KCkpKTsKICAgICAgICAg
dWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29k
ZUluZGV4KS5iaXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCmluZGV4IDVmMGFkYzZlNTNjZWM2MmQxOTg2MGU0MDEw
NWM2NGU0NTc5ZTlhOTAuLjE2ZmUyNmY2Y2E2YjQzY2U2ZTM0NmU0MmYzZmYwYTQwYjAzOGE5ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2Fs
Q2xvYmJlcml6ZS5oCkBAIC0xMTQsNyArMTE0LDcgQEAgY2xhc3MgUHJlY2lzZUxvY2FsQ2xvYmJl
cml6ZUFkYXB0b3IgewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIG51bWJlck9mQXJn
dW1lbnRzVG9Ta2lwOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOyBpKysp
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCk7IGkrKykK
ICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5vZmZzZXQoKSkpOwog
ICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCiAgICAgICAgICAg
ICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIGNs
YXNzIFByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yIHsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygp
LCAiR2V0QXJndW1lbnQgaXMgb25seSB1c2VkIGZvciBJbmxpbmVDYWxsRnJhbWUgaWYgdGhlIGNh
bGwgZnJhbWUgaXMgdmFyYXJncy4iKTsKLSAgICAgICAgICAgIGlmIChpbmRleEluY2x1ZGluZ1Ro
aXMgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpCisgICAgICAgICAgICBpZiAo
aW5kZXhJbmNsdWRpbmdUaGlzIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAu
c2l6ZSgpKQogICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGluZGV4SW5j
bHVkaW5nVGhpcykub2Zmc2V0KCkpKTsKICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0
ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM5LDcgKzIzOSw3IEBAIGNsYXNzIFBy
ZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yIHsKICAgICAgICAgICAgIC8vIFJlYWQgYWxsIG9m
IHRoZSBpbmxpbmUgYXJndW1lbnRzIGFuZCBjYWxsIGZyYW1lIGhlYWRlcnMgdGhhdCB3ZSBkaWRu
J3QgYWxyZWFkeSBjYXB0dXJlLgogICAgICAgICAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlu
bGluZUNhbGxGcmFtZSA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsg
aW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWUtPmdldENh
bGxlcklubGluZUZyYW1lU2tpcHBpbmdUYWlsQ2FsbHMoKSkgewogICAgICAgICAgICAgICAgIGlm
ICghaW5saW5lQ2FsbEZyYW1lLT5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGkt
LSA+IDE7KQorICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCk7IGktLSA+IDE7KQogICAgICAgICAgICAg
ICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkub2Zmc2V0KCkpKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9z
dXJlQ2FsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKaW5kZXggZjgzNjBiOWZkYjkwMWJhYzIxNDliOTQzMmIwZWU3MmVlYzBhZDk5Ni4uNjc4
MGQwZjNhZDdiM2JkODBmNGM1MzlhNjdiOGYxZTIxOGQwMDQzYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3Vs
dEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldExl
bmd0aChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgR1BSUmVnIGxlbmd0aEdQUiwg
Ym9vbCBpbmNsdWRlVGhpcykKIHsKICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVD
YWxsRnJhbWUtPmlzVmFyYXJncygpKQotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAhaW5jbHVkZVRoaXMpLCBsZW5ndGhH
UFIpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gIWluY2x1ZGVUaGlzKSwgbGVuZ3RoR1BSKTsKICAg
ICBlbHNlIHsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9
IG1faml0LmFyZ3VtZW50Q291bnQoaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdpc3RlciksIGxlbmd0
aEdQUik7CkBAIC02Nzk3LDcgKzY3OTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q3JlYXRlRGlyZWN0QXJndW1lbnRzKE5vZGUqIG5vZGUpCiAgICAgYm9vbCBsZW5ndGhJc0tub3du
OyAvLyBpZiBmYWxzZSwgbGVuZ3RoR1BSIHdpbGwgaGF2ZSB0aGUgbGVuZ3RoLgogICAgIGlmIChu
b2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lCiAgICAgICAgICYmICFub2RlLT5v
cmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewotICAgICAgICBr
bm93bkxlbmd0aCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCkgLSAxOworICAgICAgICBrbm93bkxlbmd0aCA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsKICAg
ICAgICAgbGVuZ3RoSXNLbm93biA9IHRydWU7CiAgICAgfSBlbHNlIHsKICAgICAgICAga25vd25M
ZW5ndGggPSBVSU5UX01BWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
YWNrTGF5b3V0UGhhc2UuY3BwCmluZGV4IDAzYzUwMmZjODgwZGNiYTgyM2M3ZTFhNGRjOWQ4OWVh
MjY3NGQ2ZGQuLmEwNDY3MWI0NjExMmViMmQxMjE4YzMxZTc4ZmQxN2NlMmI2MjRjNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcApA
QCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIFN0YWNrTGF5b3V0UGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICAgICAgICAgICAgICBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICsgaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgYXJndW1lbnQtLSA+IDE7KSB7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRo
Rml4dXAuc2l6ZSgpOyBhcmd1bWVudC0tID4gMTspIHsKICAgICAgICAgICAgICAgICB1c2VkTG9j
YWxzLnNldChWaXJ0dWFsUmVnaXN0ZXIoCiAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KS5vZmZzZXQoKSArCiAgICAgICAgICAgICAgICAgICAg
IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSk7CkBAIC0xODcsNyArMTg3
LDcgQEAgY2xhc3MgU3RhY2tMYXlvdXRQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICAgICAgICAgIGFsbG9jYXRpb24sIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOyBhcmd1bWVudC0tID4gMTspIHsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
c1dpdGhGaXh1cC5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgewogICAgICAgICAgICAgICAgIEFy
Z3VtZW50UG9zaXRpb24mIHBvc2l0aW9uID0gbV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zWwog
ICAgICAgICAgICAgICAgICAgICBkYXRhLmFyZ3VtZW50UG9zaXRpb25TdGFydCArIGFyZ3VtZW50
XTsKICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gcG9zaXRp
b24uc29tZVZhcmlhYmxlKCk7CkBAIC0xOTgsNyArMTk4LDcgQEAgY2xhc3MgU3RhY2tMYXlvdXRQ
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IFZhbHVl
U291cmNlOjpmb3JGbHVzaEZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxl
LT5tYWNoaW5lTG9jYWwoKSwgdmFyaWFibGUtPmZsdXNoRm9ybWF0KCkpOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1thcmd1bWVu
dF0gPSBzb3VyY2UudmFsdWVSZWNvdmVyeSgpOworICAgICAgICAgICAgICAgIGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwW2FyZ3VtZW50XSA9IHNvdXJjZS52YWx1ZVJlY292ZXJ5
KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCA9PSAhIWRhdGEuY2FsbGVlVmFyaWFi
bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKaW5kZXggZmQwOTE0
NTZmNzUzZmZmMjU3NzAwZTAyNTU2ZWIxYTZiYzdiMTUxZS4uZDU4NTcwZjVlYTRmNjA5MWU4NjAz
OTY1NmE4M2Y4ZTU5Mzc4NTI5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDb21waWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBp
bGUuY3BwCkBAIC05OCw5ICs5OCw5IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVw
b2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnRSZWdpc3Rlci5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBpbmxpbmVD
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlciArPSBsb2NhbHNPZmZzZXQ7CiAgICAgICAg
IAotICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHMuc2l6ZSgpOyBhcmd1bWVudC0tID4gMTspIHsKLSAgICAgICAgICAgIGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzW2FyZ3VtZW50XSA9Ci0gICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHNbYXJndW1lbnRdLndpdGhMb2NhbHNPZmZzZXQobG9jYWxzT2Zmc2V0KTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzV2l0aEZpeHVwLnNpemUoKTsgYXJndW1lbnQtLSA+IDE7KSB7CisgICAgICAgICAgICBpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cFthcmd1bWVudF0gPQorICAgICAgICAgICAg
ICAgIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwW2FyZ3VtZW50XS53aXRoTG9j
YWxzT2Zmc2V0KGxvY2Fsc09mZnNldCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlm
IChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAzZTE3YmNkMzg4ZDRiZjllOWY3OGJj
ZDUzYmY5MWM4Y2QxOTYzZTM2Li45Yzc1OTdlMzQ2YWFlNjQ1MjJkNmI1MGM0YmNlN2UwZTI3YWQ0
NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CkBAIC0zNjk0LDcgKzM2OTQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAKICAg
ICAgICAgTFZhbHVlIGxpbWl0OwogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxp
bmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQotICAgICAgICAgICAgbGltaXQgPSBtX291dC5jb25z
dEludDMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpOworICAgICAgICAg
ICAgbGltaXQgPSBtX291dC5jb25zdEludDMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgLSAxKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0gQXNzZW1ibHlIZWxwZXJzOjphcmd1bWVu
dENvdW50KGlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICBsaW1pdCA9IG1fb3V0LnN1Yiht
X291dC5sb2FkMzIocGF5bG9hZEZvcihhcmd1bWVudENvdW50UmVnaXN0ZXIpKSwgbV9vdXQuaW50
MzJPbmUpOwpAQCAtMzcxNyw4ICszNzE3LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgCiAgICAgICAgIFR5cGVkUG9pbnRlciBiYXNlOwogICAgICAgICBpZiAoaW5saW5lQ2FsbEZy
YW1lKSB7Ci0gICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgp
ID4gMSkKLSAgICAgICAgICAgICAgICBiYXNlID0gYWRkcmVzc0ZvcihpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50c1sxXS52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+IDEpCisgICAgICAgICAgICAg
ICAgYmFzZSA9IGFkZHJlc3NGb3IoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXBb
MV0udmlydHVhbFJlZ2lzdGVyKCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGJhc2Ug
PSBhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEpKTsKICAgICAgICAgCkBA
IC05NjQ2LDcgKzk2NDYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBBcmd1bWVu
dHNMZW5ndGggbGVuZ3RoOwogCiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUgJiYgIWlubGlu
ZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKLSAgICAgICAgICAgIGxlbmd0aC5rbm93biA9IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICBsZW5ndGgu
a25vd24gPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsK
ICAgICAgICAgICAgIGxlbmd0aC5pc0tub3duID0gdHJ1ZTsKICAgICAgICAgICAgIGxlbmd0aC52
YWx1ZSA9IG1fb3V0LmNvbnN0SW50MzIobGVuZ3RoLmtub3duKTsKICAgICAgICAgfSBlbHNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCmluZGV4IDRiY2Ni
YjcwMmFlMWFlOGJkOWQ1OWE1NmJjNTAxNDMwY2IwMDU5NGQuLjFhMWIzNzFlM2UwNTFiZjAxN2U4
MmIyMjUzZTYyMmVjN2IyYzI2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
cGVyYXRpb25zLmNwcApAQCAtMjkzLDcgKzI5Myw3IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYXJn
dW1lbnRDb3VudCA9IG1hdGVyaWFsaXphdGlvbi0+b3JpZ2luKCkuaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHMuc2l6ZSgpOworICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9IG1hdGVyaWFsaXph
dGlvbi0+b3JpZ2luKCkuaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
czsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJndW1lbnRDb3VudCk7CiAgICAgICAgIAogICAg
ICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCAxNzVmZmYzMWJhZjNh
MWEzN2Q0OWI2ZTFjM2UwMzZmNjEzZWM1MGY0Li44NWQxNDdhNDdjN2YxOTVhYTYzYTJiMmU1N2E0
Njc2MjNkYjZiYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgU3RhY2tWaXNpdG9y
OjpyZWFkSW5saW5lZEZyYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlT3JpZ2luKiBjb2Rl
T3JpZ2luCiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3Rl
ci5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBtX2ZyYW1lLm1fYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPSBjYWxsRnJhbWUtPnIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0
ZXIub2Zmc2V0KCkpLnVuYm94ZWRJbnQzMigpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X2ZyYW1lLm1fYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50cy5zaXplKCk7CisgICAgICAgICAgICBtX2ZyYW1lLm1fYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwog
ICAgICAgICBtX2ZyYW1lLm1fY29kZUJsb2NrID0gaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNv
ZGVCbG9jay5nZXQoKTsKICAgICAgICAgbV9mcmFtZS5tX2J5dGVjb2RlT2Zmc2V0ID0gY29kZU9y
aWdpbi0+Ynl0ZWNvZGVJbmRleDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKaW5kZXggNmQyMjA5NGJjM2Y4ZWE1OWIyOWRkOTk1OGFjOTYyMDMzMTdlZTg4
NS4uYTY4YzM2OWIwYTAwMGUwMWQ1NDQ5MDBjMzY4NGQyODQ5OGMxZWY1NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xMjIwLDkgKzEyMjAsOSBA
QCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAgIHsK
ICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gVmlydHVh
bFJlZ2lzdGVyKENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoMCkpOwotICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIDw9IDEpCisgICAgICAgIGlmIChpbmxpbmVD
YWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkgPD0gMSkKICAgICAgICAgICAgIHJl
dHVybiB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgwKTsKLSAgICAgICAgVmFsdWVSZWNvdmVyeSBy
ZWNvdmVyeSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzWzFdOworICAgICAgICBWYWx1ZVJl
Y292ZXJ5IHJlY292ZXJ5ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXBbMV07
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlY292ZXJ5LnRlY2huaXF1ZSgpID09IERpc3BsYWNl
ZEluSlNTdGFjayk7CiAgICAgICAgIHJldHVybiByZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJn
c0ZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUu
Y3BwCmluZGV4IDBmOTYxYTY2MWZiMjQ3NDQyOTBlMjJkZjYxN2FiYjI3ZTVlNGNlMjAuLmUxYzVl
NWZlYzM1YTgyMGVkOTBiNDU1MWMyNzlhYTljNWIwZmFhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwCkBAIC0xMjEsMTEgKzEyMSwxMCBA
QCB2b2lkIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKFZNJiB2bSwgQ0NhbGxIZWxwZXJz
JiBqaXQsIEdQUlJlZyBudW1Vc2VkU2xvdAogICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlY292
ZXJ5ID0gVmFsdWVSZWNvdmVyeTo6ZGlzcGxhY2VkSW5KU1N0YWNrKAogICAgICAgICAgICAgICAg
IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lzdGVyLCBEYXRhRm9ybWF0SW50MzIp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlY292ZXJ5ID0g
VmFsdWVSZWNvdmVyeTo6Y29uc3RhbnQoCi0gICAgICAgICAgICAgICAganNOdW1iZXIoaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSk7CisgICAgICAgICAgICBhcmd1bWVudENvdW50
UmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFudChqc051bWJlcihpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSA+IDEpCi0gICAgICAgICAgICBmaXJz
dEFyZ3VtZW50UmVnID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbMV0udmlydHVhbFJlZ2lz
dGVyKCk7CisgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5z
aXplKCkgPiAxKQorICAgICAgICAgICAgZmlyc3RBcmd1bWVudFJlZyA9IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzV2l0aEZpeHVwWzFdLnZpcnR1YWxSZWdpc3RlcigpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBmaXJzdEFyZ3VtZW50UmVnID0gVmlydHVhbFJlZ2lzdGVyKDApOwogICAg
IH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9u
ZWRBcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJn
dW1lbnRzLmNwcAppbmRleCBmMDk3ODhiNzVmMzVlYzNlOGI2ZWU4YmRkZGVhODRmMTNhYjkzY2Q0
Li4wMzAzMjcwZDgwYTZhMGFmMGE4MzA0ODUzNzM0NThkZDkxNjgzZjM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKQEAgLTEwMywx
MiArMTAzLDEyIEBAIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVXaXRo
SW5saW5lRnJhbWUoRXhlY1N0YXRlKiBteUZyYW1lLCBFeGVjCiAgICAgICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXIuaXNWYWxpZCgpKQogICAgICAgICAg
ICAgICAgIGxlbmd0aCA9IHRhcmdldEZyYW1lLT5yKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudFJlZ2lzdGVyKS51bmJveGVkSW50MzIoKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBsZW5ndGggPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7CisgICAg
ICAgICAgICAgICAgbGVuZ3RoID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpczsKICAgICAgICAgICAgIGxlbmd0aC0tOwogICAgICAgICAgICAgcmVzdWx0ID0gY3Jl
YXRlRW1wdHkobXlGcmFtZSwgY2FsbGVlLCBsZW5ndGgpOwogCiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCi0gICAgICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3RJbmRleChteUZyYW1lLCBpLCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1tpICsgMV0ucmVj
b3Zlcih0YXJnZXRGcmFtZSkpOworICAgICAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5k
ZXgobXlGcmFtZSwgaSwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXBbaSArIDFd
LnJlY292ZXIodGFyZ2V0RnJhbWUpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxl
bmd0aCA9IHRhcmdldEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgICAgICAgICByZXN1bHQg
PSBjcmVhdGVFbXB0eShteUZyYW1lLCBjYWxsZWUsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDdkYzYwZjQ0NzcxY2Vk
MDE1ZmQ4NzZhOWM2YzM2OGM3MmM3YTQxZTAuLjNmMzA5Zjc5MWM3ZjVmN2RkNWQ0OWVlY2IwMTAw
OTk1NzcwYTBiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCkBAIC01MCwyNCArNTAsMjkgQEAgc3RydWN0IEFyaXR5Q2hlY2tEYXRhIHsK
ICAgICB2b2lkKiB0aHVua1RvQ2FsbDsKIH07CiAKK0FMV0FZU19JTkxJTkUgaW50IG51bWJlck9m
U3RhY2tQYWRkaW5nU2xvdHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcykKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPj0g
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCisgICAgICAgIHJldHVybiAwOworICAgIGludCBm
cmFtZVNpemUgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxGcmFtZTo6aGVhZGVy
U2l6ZUluUmVnaXN0ZXJzOworICAgIGludCBhbGlnbmVkRnJhbWVTaXplRm9yUGFyYW1ldGVycyA9
IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAorICAg
ICAgICBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUlu
UmVnaXN0ZXJzKTsKKyAgICByZXR1cm4gYWxpZ25lZEZyYW1lU2l6ZUZvclBhcmFtZXRlcnMgLSBm
cmFtZVNpemU7Cit9CisKIEFMV0FZU19JTkxJTkUgaW50IGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRl
KiBleGVjLCBWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBKU0Z1
bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOwog
ICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKICAgICBDb2RlQmxvY2sqIG5l
d0NvZGVCbG9jayA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmNvZGVCbG9ja0ZvcihraW5kKTsK
LSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBleGVjLT5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygpOwotICAgIAotICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKLSAgICBpbnQgZnJhbWVTaXpl
ID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJl
Z2lzdGVyczsKLSAgICBpbnQgYWxpZ25lZEZyYW1lU2l6ZUZvclBhcmFtZXRlcnMgPSBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKLSAgICAgICAgbmV3
Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lz
dGVycyk7Ci0gICAgaW50IHBhZGRlZFN0YWNrU3BhY2UgPSBhbGlnbmVkRnJhbWVTaXplRm9yUGFy
YW1ldGVycyAtIGZyYW1lU2l6ZTsKKyAgICBBU1NFUlQoZXhlYy0+YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMoKSA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICBpbnQgcGFk
ZGluZyA9IG51bWJlck9mU3RhY2tQYWRkaW5nU2xvdHMobmV3Q29kZUJsb2NrLCBleGVjLT5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsKICAgICAKLSAgICBSZWdpc3RlciogbmV3U3RhY2sg
PSBleGVjLT5yZWdpc3RlcnMoKSAtIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdu
bWVudFJlZ2lzdGVycygpLCBwYWRkZWRTdGFja1NwYWNlKTsKKyAgICBSZWdpc3RlciogbmV3U3Rh
Y2sgPSBleGVjLT5yZWdpc3RlcnMoKSAtIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0Fs
aWdubWVudFJlZ2lzdGVycygpLCBwYWRkaW5nKTsKIAogICAgIGlmIChVTkxJS0VMWSghdm0uZW5z
dXJlU3RhY2tDYXBhY2l0eUZvcihuZXdTdGFjaykpKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAg
cmV0dXJuIHBhZGRlZFN0YWNrU3BhY2U7CisgICAgcmV0dXJuIHBhZGRpbmc7CiB9CiAKIGlubGlu
ZSBib29sIG9wSW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJv
cE5hbWUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrQWxpZ25tZW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0FsaWdubWVudC5oCmluZGV4IDAwYzkwYTFlNzhk
Y2MzMjllYzdlYTE5MTRlNjI4ZWY4MzMwZjAxMDAuLjRlMzEwODAzNWYzYWQ4MzU0M2IzMjFiYzY3
OWQ0Mzk1OWQ1NDhhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0YWNrQWxpZ25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Rh
Y2tBbGlnbm1lbnQuaApAQCAtMzEsOSArMzEsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIE5C
LiBEaWZmZXJlbnQgcGxhdGZvcm1zIG1heSBoYXZlIGRpZmZlcmVudCByZXF1aXJlbWVudHMgaGVy
ZS4gQnV0IDE2IGJ5dGVzIGlzIHZlcnkgY29tbW9uLgotaW5saW5lIHVuc2lnbmVkIHN0YWNrQWxp
Z25tZW50Qnl0ZXMoKSB7IHJldHVybiAxNjsgfQoraW5saW5lIGNvbnN0ZXhwciB1bnNpZ25lZCBz
dGFja0FsaWdubWVudEJ5dGVzKCkgeyByZXR1cm4gMTY7IH0KIAotaW5saW5lIHVuc2lnbmVkIHN0
YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkKK2lubGluZSBjb25zdGV4cHIgdW5zaWduZWQgc3RhY2tB
bGlnbm1lbnRSZWdpc3RlcnMoKQogewogICAgIHJldHVybiBzdGFja0FsaWdubWVudEJ5dGVzKCkg
LyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAxNzQ4MDhiMWY4NjUxMzkyZTYwOTUwMmMwMmEy
MmNlZDg1YTE1NTUxLi41NDQyMWVhYzQ4MGRhZDE5YTE2ZWU2ODUzODMwMjAwNWFhYWEwMTczIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMyIEBACisyMDE3LTA4LTI5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtERkddIFJlbGF4IGFyaXR5IHJlcXVpcmVtZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9hcml0eS1t
aXNtYXRjaC1hcmd1bWVudHMtbGVuZ3RoLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHRlc3QxKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9hcml0
eS1taXNtYXRjaC1nZXQtYXJndW1lbnQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAoYnVpbHRpbi5jcmVhdGVCdWlsdGluKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy1leHRyYS1zbG90cy5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChpbmxpbmVUYXJnZXQpOgorICAgICAgICAo
dGVzdCk6CisgICAgICAgICogc3RyZXNzL2FyaXR5LW1pc21hdGNoLWlubGluaW5nLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGlubGluZVRhcmdldCk6CisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvYXJpdHktbWlzbWF0Y2gtcmVzdC5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICh0ZXN0MSk6
CisgICAgICAgICh0ZXN0KToKKwogMjAxNy0wOC0yNSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGNvbXBpbGluZyBjYXRjaCBpbiB0aGUgREZHCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1hcmd1bWVudHMtbGVuZ3Ro
LmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtYXJndW1lbnRzLWxlbmd0aC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YTg5ZTI0YmIzNzlmZDYwZWM0NzBhNGQ2ZTViZDU4NTJmYTQ3YWViCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtYXJndW1lbnRzLWxl
bmd0aC5qcwpAQCAtMCwwICsxLDUwIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAg
ZnVuY3Rpb24gdGVzdDEoYXJnMSwgYXJnMiwgYXJnMykKKyAgICB7CisgICAgICAgIHJldHVybiBh
cmd1bWVudHMubGVuZ3RoOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgIHsKKyAg
ICAgICAgc2hvdWxkQmUodGVzdDEoKSwgMCk7CisgICAgICAgIHNob3VsZEJlKHRlc3QxKDApLCAx
KTsKKyAgICAgICAgc2hvdWxkQmUodGVzdDEoMCwgMSksIDIpOworICAgICAgICBzaG91bGRCZSh0
ZXN0MSgwLCAxLCAyKSwgMyk7CisgICAgICAgIHNob3VsZEJlKHRlc3QxKDAsIDEsIDIsIDMpLCA0
KTsKKyAgICB9CisgICAgbm9JbmxpbmUodGVzdCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDFlNDsgKytpKQorICAgICAgICB0ZXN0KCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAg
IGZ1bmN0aW9uIHRlc3QxKGZsYWcsIGFyZzEsIGFyZzIsIGFyZzMpCisgICAgeworICAgICAgICBp
ZiAoZmxhZykKKyAgICAgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50
czsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KGZsYWcpCisgICAgeworICAgICAgICBzaG91
bGRCZSh0ZXN0MShmbGFnKS5sZW5ndGgsIDEpOworICAgICAgICBzaG91bGRCZSh0ZXN0MShmbGFn
LCAwKS5sZW5ndGgsIDIpOworICAgICAgICBzaG91bGRCZSh0ZXN0MShmbGFnLCAwLCAxKS5sZW5n
dGgsIDMpOworICAgICAgICBzaG91bGRCZSh0ZXN0MShmbGFnLCAwLCAxLCAyKS5sZW5ndGgsIDQp
OworICAgICAgICBzaG91bGRCZSh0ZXN0MShmbGFnLCAwLCAxLCAyLCAzKS5sZW5ndGgsIDUpOwor
ICAgIH0KKyAgICBub0lubGluZSh0ZXN0KTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsg
KytpKQorICAgICAgICB0ZXN0KGZhbHNlKTsKKworICAgIHRlc3QodHJ1ZSk7CisgICAgdGVzdCh0
cnVlKTsKKyAgICB0ZXN0KHRydWUpOworfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2FyaXR5LW1pc21hdGNoLWdldC1hcmd1bWVudC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1p
c21hdGNoLWdldC1hcmd1bWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjQxYWJkMzgzYjQ0YTJhYTlmOGYx
YzczNGZjMjZjMjVhYTkwM2VjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJp
dHktbWlzbWF0Y2gtZ2V0LWFyZ3VtZW50LmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
dmFyIGJ1aWx0aW4gPSBjcmVhdGVCdWlsdGluKGAoZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBA
YXJndW1lbnQoMCk7Cit9KWApOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgcmVzdWx0
ID0gYnVpbHRpbigpOworICAgIHNob3VsZEJlKHJlc3VsdCwgdW5kZWZpbmVkKTsKKyAgICB2YXIg
cmVzdWx0ID0gYnVpbHRpbig0Mik7CisgICAgc2hvdWxkQmUocmVzdWx0LCA0Mik7Cit9Citub0lu
bGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICB0ZXN0KCk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy1leHRy
YS1zbG90cy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21hdGNoLWlubGluaW5nLWV4dHJh
LXNsb3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhZjM3NDM3MGNmMTljNDIxM2E5ZjI2YzM3ZWU5N2RlYTA1
ZjQ4NDMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1p
bmxpbmluZy1leHRyYS1zbG90cy5qcwpAQCAtMCwwICsxLDE3IEBACitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0
aW9uIGlubGluZVRhcmdldChhcmcxLCBhcmcyKQoreworICAgIHJldHVybiBbYXJnMSwgYXJnMl07
Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5s
aW5lVGFyZ2V0KG51bGwpKSwgYFtudWxsLG51bGxdYCk7Cit9Citub0lubGluZSh0ZXN0KTsKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgM2U0OyArK2kpCisgICAgdGVzdCgpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtaW5saW5pbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9h
cml0eS1taXNtYXRjaC1pbmxpbmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDgxZDlmMjEyMDA4ZDdhNjdk
NjgwZTBkOTY1ZWJlMzBkOGIzNzY0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
YXJpdHktbWlzbWF0Y2gtaW5saW5pbmcuanMKQEAgLTAsMCArMSwyNCBAQAorZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiBpbmxpbmVUYXJnZXQoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSkKK3sKKyAg
ICByZXR1cm4gW2FyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzVdOworfQorCitmdW5jdGlvbiB0
ZXN0KCkgeworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGlubGluZVRhcmdldCgpKSwgYFtu
dWxsLG51bGwsbnVsbCxudWxsLG51bGxdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
aW5saW5lVGFyZ2V0KDQyKSksIGBbNDIsbnVsbCxudWxsLG51bGwsbnVsbF1gKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIsIDQzKSksIGBbNDIsNDMsbnVsbCxu
dWxsLG51bGxdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5saW5lVGFyZ2V0KDQy
LCA0MywgNDQpKSwgYFs0Miw0Myw0NCxudWxsLG51bGxdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoaW5saW5lVGFyZ2V0KDQyLCA0MywgNDQsIDQ1KSksIGBbNDIsNDMsNDQsNDUsbnVs
bF1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIsIDQzLCA0
NCwgNDUsIDQ2KSksIGBbNDIsNDMsNDQsNDUsNDZdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkoaW5saW5lVGFyZ2V0KDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcpKSwgYFs0Miw0Myw0NCw0
NSw0Nl1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIsIDQz
LCA0NCwgNDUsIDQ2LCA0NywgNDgpKSwgYFs0Miw0Myw0NCw0NSw0Nl1gKTsKK30KK25vSW5saW5l
KHRlc3QpOworZm9yICh2YXIgaSA9IDA7IGkgPCAzZTQ7ICsraSkKKyAgICB0ZXN0KCk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1yZXN0LmpzIGIvSlNUZXN0cy9z
dHJlc3MvYXJpdHktbWlzbWF0Y2gtcmVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODU4NGNjZTI5Yjg3MTcz
Nzc2NjBlMmZmZGU5OTRkMzA2ZTM2OTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvYXJpdHktbWlzbWF0Y2gtcmVzdC5qcwpAQCAtMCwwICsxLDY1IEBACitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKKyhm
dW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGVzdDIoLi4ucmVzdCkKKyAgICB7CisgICAgICAg
IHJldHVybiByZXN0OworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QxKGFyZzEsIGFyZzIsIGFy
ZzMpCisgICAgeworICAgICAgICByZXR1cm4gdGVzdDIoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gdGVzdCgpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gdGVz
dDEoKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMyk7CisgICAgICAgIHNob3Vs
ZEJlKHJlc3VsdFswXSwgdW5kZWZpbmVkKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzFdLCB1
bmRlZmluZWQpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sIHVuZGVmaW5lZCk7CisgICAg
fQorICAgIG5vSW5saW5lKHRlc3QpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkKKyAgICAgICAgdGVzdCgpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlv
biB0ZXN0MSguLi5yZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlc3Q7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gdGVzdCgpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gdGVzdDEoKTsK
KyAgICAgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMCk7CisgICAgfQorICAgIG5vSW5saW5l
KHRlc3QpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgdGVz
dCgpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0MSguLi5yZXN0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlc3Q7CisgICAgfQorICAgIG5vSW5saW5lKHRlc3Qx
KTsKKworICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IHRl
c3QxKCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDApOworICAgIH0KKyAgICBu
b0lubGluZSh0ZXN0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAg
ICAgIHRlc3QoKTsKK30oKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319434</attachid>
            <date>2017-08-30 19:20:19 -0700</date>
            <delta_ts>2017-08-30 19:29:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175523-20170831112018.patch</filename>
            <type>text/plain</type>
            <size>61906</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
Njk1MjllNzAxZjg4Yzk5MGYxMzkwZjFmMmU5ZmUxZTJmYjI0MmI4Li40ZGI3ODU1MDNiNTc0MTFj
NjcyZjdlMzY4MzNjODhlMDk1YTkzN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OSBAQAorMjAxNy0wOC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3VyIERGRyBwaXBlbGluZSBn
aXZlcyB1cCBpbmxpbmluZyB3aGVuIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0IGZ1bmN0aW9uIGlz
IG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIHRoZSBhcmd1bWVudHMuCisgICAgICAgIEl0IGVmZmVj
dGl2ZWx5IHByZXZlbnRzIHVzIGZyb20gaW5saW5pbmcgYW5kIG9wdGltaXppbmcgZnVuY3Rpb25z
LCB3aGljaCB0YWtlcyBzb21lIG9wdGlvbmFsIGFyZ3VtZW50cyBpbiB0aGUgZm9ybQorICAgICAg
ICBvZiB0aGUgcHJlLUVTNi4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGFib3Zl
IHJlc3RyaWN0aW9uIGJ5IHBlcmZvcm1pbmcgdGhlIGFyaXR5IGZpeHVwIGluIERGRy4KKworICAg
ICAgICBTaXhTcGVlZCBzaG93cyBpbXByb3ZlbWVudCB3aGVuIHdlIGNhbiBpbmxpbmUgYXJpdHkt
bWlzbWF0Y2hlZCBmdW5jdGlvbnMuIChGb3IgZXhhbXBsZSwgY2FsbGluZyBnZW5lcmF0b3IubmV4
dCgpKS4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmUg
ICAgICAgICAgICAgICAgICBwYXRjaGVkCisKKyAgICAgICAgZGVmYXVsdHMuZXM1ICAgICAgICAg
ICAgIDEyMzIuMTIyNistMjAuNjc3NSAgICBeICAgIDQ0Mi4zMzI2Ky0yNi4xODgzICAgICAgIF4g
ZGVmaW5pdGVseSAyLjc4NTV4IGZhc3RlcgorICAgICAgICByZXN0LmVzNiAgICAgICAgICAgICAg
ICAgICAgNS4zNDA2Ky0wLjg1ODggICAgIF4gICAgICAzLjU4MTIrLTAuNTM4OCAgICAgICAgXiBk
ZWZpbml0ZWx5IDEuNDkxM3ggZmFzdGVyCisgICAgICAgIHNwcmVhZC1nZW5lcmF0b3IuZXM2ICAg
ICAgMzIwLjkxMDcrLTEyLjQ4MDggICAgICAgICAzMTAuNDI5NSstMTIuMDA0NyAgICAgICAgIG1p
Z2h0IGJlIDEuMDMzOHggZmFzdGVyCisgICAgICAgIGdlbmVyYXRvci5lczYgICAgICAgICAgICAg
MzE4LjM1MTQrLTkuNjAyMyAgICAgXiAgICAyODYuNDk3NCstMTIuNjIwMyAgICAgICBeIGRlZmlu
aXRlbHkgMS4xMTEyeCBmYXN0ZXIKKworICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFt
ZS5jcHA6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dCBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6
OklubGluZUNhbGxGcmFtZTo6SW5saW5lQ2FsbEZyYW1lKToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAq
IGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
QXJndW1lbnRzVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjphcmd1bWVudHNJbnZv
bHZlU3RhY2tTbG90KToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0Q29kZVRvR2V0QXJndW1lbnRz
QXJyYXlMZW5ndGgpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldExvY2FsKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0QXJndW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpmaW5kQXJndW1lbnRQb3NpdGlvbkZvckxvY2FsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpnZXRBcmd1bWVudENvdW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aW5saW5pbmdDb3N0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVt
cHRUb0lubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tF
bnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNvbW1vbkRhdGE6OnZhbGlkYXRlUmVmZXJlbmNlcyk6Cisg
ICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6aXNMaXZlSW5CeXRlY29k
ZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmZvckFsbExvY2Fsc0xpdmVJbkJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSQXZhaWxh
YmlsaXR5QW5hbHlzaXNQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TG9jYWxPU1JBdmFp
bGFiaWxpdHlDYWxjdWxhdG9yOjpleGVjdXRlTm9kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRz
KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZHUHJl
Y2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENs
b2JiZXJpemVBZGFwdG9yOjpyZWFkVG9wKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0R2V0TGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVj
dEFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlN0YWNrTGF5b3V0UGhhc2U6OnJ1bik6CisgICAgICAgICogZnRsL0ZU
TENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0
bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzTGVuZ3RoKToKKyAgICAgICAgKiBmdGwvRlRMT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmpl
Y3RJbk9TUik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpyZWFkSW5saW5lZEZyYW1lKToKKyAgICAgICAgKiBqaXQv
QXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YXJndW1l
bnRzU3RhcnQpOgorICAgICAgICAqIGppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHA6CisgICAgICAg
IChKU0M6OmVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKToKKyAgICAgICAgKiBydW50aW1l
L0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6Y3Jl
YXRlV2l0aElubGluZUZyYW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
OgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6Om51bWJlck9mU3RhY2tQYWRkaW5nU2xv
dHMpOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RhY2tBbGlnbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6c3RhY2tBbGln
bm1lbnRCeXRlcyk6CisgICAgICAgIChKU0M6OnN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKToKKwog
MjAxNy0wOC0zMCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIxMzI3LgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcAppbmRleCA5N2NlODRkNjM1ODMw
MzIwOGNmMDYwZTNjNWM2YWJkMzZlNjI3ZjYxLi4yZmU1MWFmNjFiY2JlNWJjODY4ODA2NDZiMjE4
MDc1ZDRiNDE2NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5saW5lQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5saW5lQ2FsbEZyYW1lLmNwcApAQCAtNzQsNyArNzQsOCBAQCB2b2lkIElubGluZUNhbGxGcmFt
ZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkg
Y29ucwogICAgICAgICBvdXQucHJpbnQoIiwgY2xvc3VyZSBjYWxsIik7CiAgICAgZWxzZQogICAg
ICAgICBvdXQucHJpbnQoIiwga25vd24gY2FsbGVlOiAiLCBpbkNvbnRleHQoY2FsbGVlUmVjb3Zl
cnkuY29uc3RhbnQoKSwgY29udGV4dCkpOwotICAgIG91dC5wcmludCgiLCBudW1BcmdzK3RoaXMg
PSAiLCBhcmd1bWVudHMuc2l6ZSgpKTsKKyAgICBvdXQucHJpbnQoIiwgbnVtQXJncyt0aGlzID0g
IiwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIG91dC5wcmludCgiLCBudW1GaXh1
cCA9ICIsIGFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyk7CiAgICAgb3V0LnByaW50KCIsIHN0YWNrT2Zmc2V0ID0gIiwgc3RhY2tPZmZzZXQpOwog
ICAgIG91dC5wcmludCgiICgiLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgwKSwgIiBtYXBzIHRv
ICIsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKDApICsgc3RhY2tPZmZzZXQsICIpPiIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFt
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCmlu
ZGV4IGJlMWFmZGIxOTY3OWQ0N2EwYTBjYTVjYWVhY2Q1ZTI1MWU5YThjNTYuLjA4YzA0YjQwM2M2
YWM5NDkzOGU4YjQ3NWIxNDZkNmRmZmFkMmU4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKQEAgLTE3NSwxMSArMTc1LDEyIEBAIHN0
cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgICAgICByZXR1cm4gY2FsbGVyID8gY2FsbGVyLT5p
bmxpbmVDYWxsRnJhbWUgOiBudWxscHRyOwogICAgIH0KICAgICAKLSAgICBWZWN0b3I8VmFsdWVS
ZWNvdmVyeT4gYXJndW1lbnRzOyAvLyBJbmNsdWRlcyAndGhpcycuCisgICAgVmVjdG9yPFZhbHVl
UmVjb3Zlcnk+IGFyZ3VtZW50c1dpdGhGaXh1cDsgLy8gSW5jbHVkZXMgJ3RoaXMnIGFuZCBhcml0
eSBmaXh1cHMuCiAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gYmFzZWxpbmVDb2RlQmxvY2s7
CiAgICAgVmFsdWVSZWNvdmVyeSBjYWxsZWVSZWNvdmVyeTsKICAgICBDb2RlT3JpZ2luIGRpcmVj
dENhbGxlcjsKIAorICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyAvLyBE
byBub3QgaW5jbHVkZSBmaXh1cHMuCiAgICAgc2lnbmVkIHN0YWNrT2Zmc2V0IDogMjg7CiAgICAg
dW5zaWduZWQga2luZCA6IDM7IC8vIHJlYWwgdHlwZSBpcyBLaW5kCiAgICAgYm9vbCBpc0Nsb3N1
cmVDYWxsIDogMTsgLy8gSWYgZmFsc2UgdGhlbiB3ZSBrbm93IHRoYXQgY2FsbGVlL3Njb3BlIGFy
ZSBjb25zdGFudHMgYW5kIHRoZSBERkcgd29uJ3QgdHJlYXQgdGhlbSBhcyB2YXJpYWJsZXMsIGku
ZS4gdGhleSBoYXZlIHRvIGJlIHJlY292ZXJlZCBtYW51YWxseS4KQEAgLTE4OSw3ICsxOTAsOCBA
QCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICAvLyBJbmxpbmVDYWxsRnJhbWUncyBmaWVs
ZHMuIFRoaXMgY29uc3RydWN0b3IgaXMgaGVyZSBqdXN0IHRvIHJlZHVjZSBjb25mdXNpb24gaWYK
ICAgICAvLyB3ZSBmb3Jnb3QgdG8gaW5pdGlhbGl6ZSBleHBsaWNpdGx5LgogICAgIElubGluZUNh
bGxGcmFtZSgpCi0gICAgICAgIDogc3RhY2tPZmZzZXQoMCkKKyAgICAgICAgOiBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygwKQorICAgICAgICAsIHN0YWNrT2Zmc2V0KDApCiAgICAgICAgICwg
a2luZChDYWxsKQogICAgICAgICAsIGlzQ2xvc3VyZUNhbGwoZmFsc2UpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCmluZGV4IGZiNzM4ZTAyMGJhMGZjNWU5Y2VmZjgwYzBiNDA0YWVmNDU3ZTdiMTUu
LjJiNzg3ZjM0ZTkxYThhZTdjODU2NzhiMjJiYTA5NDJhYTZhNDA4YTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKQEAgLTE3NTgsNyArMTc1OCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXggPSBpbmRleC5hc1VJ
bnQzMigpICsgbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAgICAgICAgIGlm
IChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRJbmRleCA8
IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYXJndW1lbnRJbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkgPSBtX3N0
YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCiAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudEluZGV4ICsgMSkgKyBpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0
YW50cyh0cnVlKTsKQEAgLTE3NzcsNyArMTc3Nyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgYm91bmQgb24gdGhlIHR5cGVzIGV2ZW4gdGhvdWdo
IGl0J3MgcmFuZG9tIGFjY2Vzcy4gVGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcy4KICAgICAgICAgICAg
IAogICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSByZXN1bHQ7Ci0gICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxICsgbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsgaSA8IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxICsgbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsgaSA8IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewogICAgICAgICAg
ICAgICAgIHJlc3VsdC5tZXJnZSgKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJs
ZXMoKS5vcGVyYW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoaSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmNwcAppbmRleCBjM2NmODI5ZGVjZTJkNTI3MzkxMDk4MjZiZThjMWMxOTAyOThmMGIwLi5h
YTM5OGUwZTJjMjE1YzM1MTYxZGZhNGQwZGUzYmYyNmQwMmRiMzk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFz
ZS5jcHAKQEAgLTQ5MCw3ICs0OTAsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0Nsb2JiZXJlZEJ5
QmxvY2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOyArK2kpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Fs
bEZyYW1lOjphcmd1bWVudE9mZnNldChpKTsKQEAgLTcwMCw3ICs3MDAsNyBAQCBjbGFzcyBBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYWZlVG9HZXRTdGFjazsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2FmZVRvR2V0U3RhY2sgPSBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZVRv
R2V0U3RhY2sgPSBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2FmZVRvR2V0U3RhY2sgPQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2soKS0+bnVtUGFy
YW1ldGVycygpKSAtIDE7CkBAIC04MDUsNyArODA1LDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWlu
YXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChzcHJlYWQtPm9wKCkgPT0gUGhhbnRvbVNwcmVhZCAmJiBzcHJlYWQtPmNoaWxk
MSgpLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSBzcHJlYWQtPmNoaWxk
MSgpLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHNwcmVhZC0+Y2hpbGQx
KCktPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZnJhbWVBcmd1bWVudENvdW50ID49IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lQXJndW1lbnRDb3VudCAt
IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKQEAgLTgzNCw3ICs4MzQsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChzcHJlYWQtPm9wKCkgPT0gUGhhbnRvbVNwcmVhZCAmJiBzcHJlYWQtPmNoaWxk
MSgpLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gc3ByZWFkLT5j
aGlsZDEoKS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gc3ByZWFk
LT5jaGlsZDEoKS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmcmFtZUFyZ3VtZW50Q291bnQgPSBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbG9hZEluZGV4ID0gbnVtYmVyT2ZBcmd1
bWVudHNUb1NraXA7IGxvYWRJbmRleCA8IGZyYW1lQXJndW1lbnRDb3VudDsgKytsb2FkSW5kZXgp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmVnID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQobG9hZEluZGV4ICsgMSkgKyBpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFN0YWNrQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdGFja0FjY2Vzc0Rh
dGEuYWRkKHJlZywgRmx1c2hlZEpTVmFsdWUpOwpAQCAtODg3LDcgKzg4Nyw3IEBAIGNsYXNzIEFy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4gdmFyYXJnc0RhdGEtPm9mZnNldCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLT0g
dmFyYXJnc0RhdGEtPm9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCkBA
IC05MDksNyArOTA5LDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1
ZSA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb2FkSW5kZXggPSBzdG9yZUluZGV4ICsgdmFyYXJnc0RhdGEtPm9mZnNldDsKIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRJbmRleCArIDEgPCBpbmxpbmVD
YWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChsb2FkSW5kZXggKyAxIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChsb2Fk
SW5kZXggKyAxKSArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQ7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFw
aC5tX3N0YWNrQWNjZXNzRGF0YS5hZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlZywgRmx1c2hlZEpTVmFsdWUpOwpAQCAtMTAzMiw3ICsxMDMyLDcgQEAg
Y2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzcHJlYWQtPmNoaWxkMSgpLT5vcCgpID09
IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBzcHJlYWQtPmNoaWxkMSgpLT5vcmlnaW4u
c2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IHNwcmVhZC0+Y2hpbGQxKCktPm51
bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1iZXJPZkFyZ3VtZW50c1RvU2tp
cDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBk
YXRhID0gbV9ncmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5hZGQoCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkgKyBpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZsdXNoZWRKU1ZhbHVlKTsKQEAgLTEwNjksNyArMTA2OSw3IEBAIGNsYXNzIEFy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBjYW5kaWRhdGUtPm9y
aWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPE5vZGUqPiBhcmd1bWVudHM7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIHZhcmFyZ3NEYXRh
LT5maXJzdFZhckFyZ09mZnNldDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MSArIHZhcmFyZ3NEYXRhLT5maXJzdFZhckFyZ09mZnNldDsgaSA8IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RhY2tBY2Nlc3NE
YXRhLmFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50KGkpICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsdXNoZWRKU1ZhbHVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcAppbmRl
eCAwNjFhMjg0Y2Y1ZDQ5N2M5NTk4N2U5ZjYzMDU2ZTVlOTc0M2Q2ZGQxLi5iMGY1MjkxMTkyNThj
YmRmNzM4YWJlZDM3NDQxZjJmMjYwMjE5ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCkBAIC00NSw3ICs0NSw4IEBAIGJv
b2wgYXJndW1lbnRzSW52b2x2ZVN0YWNrU2xvdChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSwgVmlydHVhbFJlZ2lzdGVyCiAgICAgICAgICYmIHJlZyA9PSBWaXJ0dWFsUmVnaXN0ZXIo
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICB1bnNpZ25lZCBudW1Bcmd1bWVu
dHMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxOworICAgIC8vIFdlIGRv
IG5vdCBpbmNsdWRlIGZpeHVwcyBoZXJlIHNpbmNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHxhcmd1
bWVudHN8LCByZXN0IHBhcmFtZXRlcnMsIGFuZCB2YXJhcmdzLgorICAgIHVuc2lnbmVkIG51bUFy
Z3VtZW50cyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAx
OwogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudFN0YXJ0ID0KICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpICsgQ2FsbEZyYW1lOjphcmd1bWVu
dE9mZnNldCgwKTsKICAgICByZXR1cm4gcmVnID49IGFyZ3VtZW50U3RhcnQgJiYgcmVnIDwgYXJn
dW1lbnRTdGFydCArIG51bUFyZ3VtZW50czsKQEAgLTc0LDcgKzc1LDcgQEAgTm9kZSogZW1pdENv
ZGVUb0dldEFyZ3VtZW50c0FycmF5TGVuZ3RoKAogICAgICAgICBudW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcCA9IGFyZ3VtZW50cy0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAKICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7Ci0g
ICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50c1NpemUgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
cy5zaXplKCkgLSAxOworICAgICAgICB1bnNpZ25lZCBhcmd1bWVudHNTaXplID0gaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIDE7CiAgICAgICAgIGlmIChhcmd1
bWVudHNTaXplID49IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKQogICAgICAgICAgICAgYXJndW1l
bnRzU2l6ZSAtPSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsKICAgICAgICAgZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBlOTdi
Mzg3M2IzN2JiNzcwMTM3OGNmZWVmYzhiODA4NTFhMWU3OTUwLi5kNGRmZWQ4ZDU3MjE2ZjY1NTA2
MDFkNzM0OGJhMWMwNzAzMmRjMDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNhbGxM
aW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
V2l0aEpJVFR5cGUuaCIKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJE
RkdBYnN0cmFjdEhlYXAuaCIKICNpbmNsdWRlICJERkdBcnJheU1vZGUuaCIKICNpbmNsdWRlICJE
RkdDRkcuaCIKQEAgLTYyLDYgKzYzLDcgQEAKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAtMjIwLDcgKzIyMiw3IEBA
IGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhDYWxs
VmFyaWFudCwgTm9kZSogY2FsbFRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bW50KTsK
ICAgICB2b2lkIGVtaXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICBOb2RlKiBnZXRBcmd1bWVudENvdW50KCk7
Ci0gICAgdW5zaWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIENhbGxNb2RlKTsgLy8gUmV0dXJuIFVJTlRfTUFYIGlmIGl0J3Mgbm90
IGFuIGlubGluaW5nIGNhbmRpZGF0ZS4gQnkgY29udmVudGlvbiwgaW50cmluc2ljcyBoYXZlIGEg
Y29zdCBvZiAxLgorICAgIHVuc2lnbmVkIGlubGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOyAvLyBSZXR1
cm4gVUlOVF9NQVggaWYgaXQncyBub3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50
aW9uLCBpbnRyaW5zaWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5n
LiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQg
YSBjYWxsLgogICAgIGJvb2wgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGlu
dCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNl
dCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50
c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVD
YWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIGVudW0gQ2Fs
bGVyTGlua2FiaWxpdHkgeyBDYWxsZXJEb2VzTm9ybWFsTGlua2luZywgQ2FsbGVyTGlua3NNYW51
YWxseSB9OwpAQCAtNDcwLDggKzQ3Miw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB9
CiAgICAgTm9kZSogc2V0TG9jYWwoY29uc3QgQ29kZU9yaWdpbiYgc2VtYW50aWNPcmlnaW4sIFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9y
bWFsU2V0KQogICAgIHsKLSAgICAgICAgQ29kZU9yaWdpbiBvbGRTZW1hbnRpY09yaWdpbiA9IG1f
Y3VycmVudFNlbWFudGljT3JpZ2luOwotICAgICAgICBtX2N1cnJlbnRTZW1hbnRpY09yaWdpbiA9
IHNlbWFudGljT3JpZ2luOworICAgICAgICBTZXRGb3JTY29wZTxDb2RlT3JpZ2luPiBvcmlnaW5D
aGFuZ2UobV9jdXJyZW50U2VtYW50aWNPcmlnaW4sIHNlbWFudGljT3JpZ2luKTsKIAogICAgICAg
ICB1bnNpZ25lZCBsb2NhbCA9IG9wZXJhbmQudG9Mb2NhbCgpOwogICAgICAgICAKQEAgLTQ5MCw4
ICs0OTEsNiBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKHNlbWFudGljT3JpZ2luLmJ5dGVjb2Rl
SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICBOb2RlKiBub2RlID0gYWRkVG9HcmFw
aChTZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIHZhbHVlKTsKICAgICAgICAg
bV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5sb2NhbChsb2NhbCkgPSBub2RlOwotCi0g
ICAgICAgIG1fY3VycmVudFNlbWFudGljT3JpZ2luID0gb2xkU2VtYW50aWNPcmlnaW47CiAgICAg
ICAgIHJldHVybiBub2RlOwogICAgIH0KIApAQCAtNTI1LDggKzUyNCw3IEBAIGNsYXNzIEJ5dGVD
b2RlUGFyc2VyIHsKICAgICB9CiAgICAgTm9kZSogc2V0QXJndW1lbnQoY29uc3QgQ29kZU9yaWdp
biYgc2VtYW50aWNPcmlnaW4sIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwg
U2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQogICAgIHsKLSAgICAgICAgQ29kZU9yaWdpbiBv
bGRTZW1hbnRpY09yaWdpbiA9IG1fY3VycmVudFNlbWFudGljT3JpZ2luOwotICAgICAgICBtX2N1
cnJlbnRTZW1hbnRpY09yaWdpbiA9IHNlbWFudGljT3JpZ2luOworICAgICAgICBTZXRGb3JTY29w
ZTxDb2RlT3JpZ2luPiBvcmlnaW5DaGFuZ2UobV9jdXJyZW50U2VtYW50aWNPcmlnaW4sIHNlbWFu
dGljT3JpZ2luKTsKIAogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudCA9IG9wZXJhbmQudG9Bcmd1
bWVudCgpOwogICAgICAgICBBU1NFUlQoYXJndW1lbnQgPCBtX251bUFyZ3VtZW50cyk7CkBAIC01
NDksOCArNTQ3LDYgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShzZW1hbnRpY09yaWdpbi5ieXRl
Y29kZUluZGV4LCBCYWRJbmRleGluZ1R5cGUpKTsKICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRv
R3JhcGgoU2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCB2YWx1ZSk7CiAgICAg
ICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpID0g
bm9kZTsKLQotICAgICAgICBtX2N1cnJlbnRTZW1hbnRpY09yaWdpbiA9IG9sZFNlbWFudGljT3Jp
Z2luOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAgICAgCkBAIC01NzIsNyArNTY4LDcg
QEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA+PSBzdGF0aWNfY2Fz
dDxpbnQ+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1
bWVudE9mZnNldCgpICsgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSkKKyAgICAg
ICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpID49IHN0YXRpY19jYXN0PGludD4oaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKyBp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gVmlydHVhbFJlZ2lzdGVy
KG9wZXJhbmQub2Zmc2V0KCkgLSBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0FyZ3Vt
ZW50KCk7CiAgICAgICAgICAgICByZXR1cm4gc3RhY2stPm1fYXJndW1lbnRQb3NpdGlvbnNbYXJn
dW1lbnRdOwpAQCAtNjMyLDcgKzYyOCw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAg
ICAgaW50IG51bUFyZ3VtZW50czsKICAgICAgICAgaWYgKElubGluZUNhbGxGcmFtZSogaW5saW5l
Q2FsbEZyYW1lID0gaW5saW5lU3RhY2tFbnRyeS0+bV9pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghbV9oYXNEZWJ1Z2dlckVuYWJsZWQpOwotICAgICAgICAgICAgbnVtQXJn
dW1lbnRzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOworICAgICAgICAgICAg
bnVtQXJndW1lbnRzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgp
OwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKICAgICAg
ICAgICAgICAgICBmbHVzaERpcmVjdChpbmxpbmVTdGFja0VudHJ5LT5yZW1hcE9wZXJhbmQoVmly
dHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpKTsKICAgICAgICAgICAgIGlmIChp
bmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQpAQCAtMTQxOCw3ICsxNDE0LDcgQEAgTm9kZSog
Qnl0ZUNvZGVQYXJzZXI6OmdldEFyZ3VtZW50Q291bnQoKQogICAgICAgICBpZiAobV9pbmxpbmVT
dGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQogICAgICAgICAgICAgYXJn
dW1lbnRDb3VudCA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcmd1bWVudENvdW50ID0ganNDb25z
dGFudChtX2dyYXBoLmZyZWV6ZShqc051bWJlcihtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFyZ3Vt
ZW50Q291bnQgPSBqc0NvbnN0YW50KG1fZ3JhcGguZnJlZXplKGpzTnVtYmVyKG1faW5saW5lU3Rh
Y2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpLT52
YWx1ZSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgYXJndW1lbnRDb3VudCA9IGFkZFRvR3JhcGgo
R2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE9wSW5mbygwKSwgT3BJbmZvKFNwZWNJbnQz
Mk9ubHkpKTsKICAgICByZXR1cm4gYXJndW1lbnRDb3VudDsKQEAgLTE0MzAsOSArMTQyNiwxMCBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJP
ZmZzZXQsIGludCBhcmd1bWVudENvdW50SQogICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdl
dCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIH0KIAot
dW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ2FsbE1vZGUgY2FsbE1vZGUpCit1bnNp
Z25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50
LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCkKIHsKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQgPSBzcGVjaWFsaXphdGlvbktpbmRGb3IoY2FsbE1vZGUpOworICAgIENhbGxNb2Rl
IGNhbGxNb2RlID0gSW5saW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZvcihraW5kKTsKKyAgICBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IHNwZWNpYWxpemF0aW9uS2lu
ZEZvcihjYWxsTW9kZSk7CiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNvbnNp
ZGVyaW5nIGlubGluaW5nICIsIGNhbGxlZSwgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCks
ICJcbiIpOwogICAgIApAQCAtMTQ1NiwzMCArMTQ1MywyMSBAQCB1bnNpZ25lZCBCeXRlQ29kZVBh
cnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdQogICAgIC8vIHRvIGlubGluZSBpdCBpZiB3ZSBoYWQgYSBzdGF0aWMgcHJvb2Ygb2Ygd2hh
dCB3YXMgYmVpbmcgY2FsbGVkOyB0aGlzIG1pZ2h0IGhhcHBlbiBmb3IgZXhhbXBsZQogICAgIC8v
IGlmIHlvdSBjYWxsIGEgZ2xvYmFsIGZ1bmN0aW9uLCB3aGVyZSB3YXRjaHBvaW50aW5nIGdpdmVz
IHVzIHN0YXRpYyBpbmZvcm1hdGlvbi4gT3ZlcmFsbCwKICAgICAvLyBpdCdzIGEgcmFyZSBjYXNl
IGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgYW55IGhvdCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFk
eSBiZWVuIGNvbXBpbGVkLgotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+
YmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjdXRhYmxlLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOwogICAg
IGlmICghY29kZUJsb2NrKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0
YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBubyBjb2RlIGJsb2NrIGF2YWlsYWJsZS5cbiIpOwog
ICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogCi0gICAgLy8gRG9lcyB0aGUgbnVtYmVy
IG9mIGFyZ3VtZW50cyB3ZSdyZSBwYXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0
PyBXZSBjdXJyZW50bHkKLSAgICAvLyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3Vt
ZW50cyBwYXNzZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKLSAgICAv
LyBhcmd1bWVudHMgZXhwZWN0ZWQuCi0gICAgaWYgKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
ID4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCi0g
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNo
LlxuIik7Ci0gICAgICAgIHJldHVybiBVSU5UX01BWDsKLSAgICB9Ci0KICAgICBDYXBhYmlsaXR5
TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwo
Ci0gICAgICAgIGNvZGVCbG9jaywga2luZCwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CisgICAg
ICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgp
KTsKICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCIgICAgQ2FsbCBtb2RlOiAi
LCBjYWxsTW9kZSwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICBJcyBjbG9zdXJlIGNhbGw6
ICIsIGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCksICJcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICAg
Q2FwYWJpbGl0eSBsZXZlbDogIiwgY2FwYWJpbGl0eUxldmVsLCAiXG4iKTsKLSAgICAgICAgZGF0
YUxvZygiICAgIE1pZ2h0IGlubGluZSBmdW5jdGlvbjogIiwgbWlnaHRJbmxpbmVGdW5jdGlvbkZv
cihjb2RlQmxvY2ssIGtpbmQpLCAiXG4iKTsKLSAgICAgICAgZGF0YUxvZygiICAgIE1pZ2h0IGNv
bXBpbGUgZnVuY3Rpb246ICIsIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yKGNvZGVCbG9jaywga2lu
ZCksICJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgTWlnaHQgaW5saW5lIGZ1bmN0aW9uOiAi
LCBtaWdodElubGluZUZ1bmN0aW9uRm9yKGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kKSwg
IlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICBNaWdodCBjb21waWxlIGZ1bmN0aW9uOiAiLCBt
aWdodENvbXBpbGVGdW5jdGlvbkZvcihjb2RlQmxvY2ssIHNwZWNpYWxpemF0aW9uS2luZCksICJc
biIpOwogICAgICAgICBkYXRhTG9nKCIgICAgSXMgc3VwcG9ydGVkIGZvciBpbmxpbmluZzogIiwg
aXNTdXBwb3J0ZWRGb3JJbmxpbmluZyhjb2RlQmxvY2spLCAiXG4iKTsKICAgICAgICAgZGF0YUxv
ZygiICAgIElzIGlubGluaW5nIGNhbmRpZGF0ZTogIiwgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4
ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgpLCAiXG4iKTsKICAgICB9CkBAIC0xNTQ1
LDE0ICsxNTMzLDIxIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiB7CiAgICAgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNp
YWxpemF0aW9uS2luZEZvcihraW5kKTsKICAgICAKLSAgICBBU1NFUlQoaW5saW5pbmdDb3N0KGNh
bGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6Y2FsbE1v
ZGVGb3Ioa2luZCkpICE9IFVJTlRfTUFYKTsKKyAgICBBU1NFUlQoaW5saW5pbmdDb3N0KGNhbGxl
ZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtpbmQpICE9IFVJTlRfTUFYKTsKICAgICAK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUoKS0+
YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBpbnNlcnRDaGVj
a3MoY29kZUJsb2NrKTsKIAogICAgIC8vIEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFudHMhCisK
KyAgICBpbnQgYXJpdHlGaXh1cENvdW50ID0gc3RkOjptYXg8aW50Pihjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCAwKTsKKyAgICBpbnQgbnVt
YmVyT2ZTdGFja1BhZGRpbmdTbG90cyA9IENvbW1vblNsb3dQYXRoczo6bnVtYmVyT2ZTdGFja1Bh
ZGRpbmdTbG90cyhjb2RlQmxvY2ssIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICBp
bnQgZXh0cmFTbG90cyA9IG51bWJlck9mU3RhY2tQYWRkaW5nU2xvdHMgJSBzdGFja0FsaWdubWVu
dFJlZ2lzdGVycygpOworICAgIGludCByZWdpc3Rlck9mZnNldEFmdGVyRml4dXAgPSByZWdpc3Rl
ck9mZnNldDsKKyAgICBpZiAoZXh0cmFTbG90cyAhPSBudW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3Rz
KQorICAgICAgICByZWdpc3Rlck9mZnNldEFmdGVyRml4dXAgPSByZWdpc3Rlck9mZnNldCAtIChu
dW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3RzIC0gZXh0cmFTbG90cyk7CiAgICAgCi0gICAgaW50IGlu
bGluZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1
YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCkpLm9mZnNldCgpICsgQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnM7CisgICAgaW50IGlubGluZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVT
dGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldEFmdGVy
Rml4dXApKS5vZmZzZXQoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwogICAg
IAogICAgIGVuc3VyZUxvY2FscygKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxG
cmFtZVN0YXJ0KS50b0xvY2FsKCkgKyAxICsKQEAgLTE1NjcsMTIgKzE1NjIsMzEgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3Vs
dE9wZXJhbmQsIENhbGxWYXIKICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlhYmxl
ID0gbnVsbHB0cjsKICAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgewogICAgICAgICBO
b2RlKiBjYWxsZWVTZXQgPSBzZXQoCi0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0
ZXJPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRp
YXRlTmFrZWRTZXQpOworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0
QWZ0ZXJGaXh1cCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIGNhbGxUYXJnZXROb2RlLCBJbW1l
ZGlhdGVOYWtlZFNldCk7CiAgICAgICAgIAogICAgICAgICBjYWxsZWVWYXJpYWJsZSA9IGNhbGxl
ZVNldC0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIGNhbGxlZVZhcmlhYmxlLT5tZXJn
ZVNob3VsZE5ldmVyVW5ib3godHJ1ZSk7CiAgICAgfQogICAgIAorICAgIGlmIChhcml0eUZpeHVw
Q291bnQpIHsKKyAgICAgICAgTm9kZSogdW5kZWZpbmVkID0gYWRkVG9HcmFwaChKU0NvbnN0YW50
LCBPcEluZm8obV9jb25zdGFudFVuZGVmaW5lZCkpOworICAgICAgICBhdXRvIGZpbGwgPSBbJl0g
KFZpcnR1YWxSZWdpc3RlciByZWcsIE5vZGUqIHZhbHVlKSB7CisgICAgICAgICAgICBOb2RlKiBy
ZXN1bHQgPSBzZXQocmVnLCB2YWx1ZSwgSW1tZWRpYXRlTmFrZWRTZXQpOworICAgICAgICAgICAg
cmVzdWx0LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+bWVyZ2VTaG91bGROZXZlclVuYm94KHRydWUp
OyAvLyBXZSBjYW5ub3QgZXhpdCBhZnRlciBzdGFydGluZyBhcml0eSBmaXh1cC4KKyAgICAgICAg
fTsKKworICAgICAgICAvLyBGaWxsIGV4dHJhIHNsb3RzIHdoaWNoIHdlIGFscmVhZHkgaGF2ZSBm
b3Igc3RhY2sgYWxpZ25tZW50LiBJZiB3ZSBhcmUgbHVja3ksIHdlIGRvIG5vdCBuZWVkIHRvIG1v
dmUgc3RhY2sgZnJhbWUuCisgICAgICAgIGlmIChleHRyYVNsb3RzID09IG51bWJlck9mU3RhY2tQ
YWRkaW5nU2xvdHMpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBl
eHRyYVNsb3RzOyArK2luZGV4KQorICAgICAgICAgICAgICAgIGZpbGwodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBpbmRleCwgcmVnaXN0ZXJP
ZmZzZXQpLCB1bmRlZmluZWQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChp
bnQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2luZGV4
KQorICAgICAgICAgICAgICAgIGZpbGwodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaW5kZXgs
IHJlZ2lzdGVyT2Zmc2V0QWZ0ZXJGaXh1cCksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dChpbmRleCwgcmVnaXN0ZXJPZmZzZXQpKSk7CisgICAgICAgICAgICBmb3IgKGludCBpbmRleCA9
IDA7IGluZGV4IDwgYXJpdHlGaXh1cENvdW50OyArK2luZGV4KQorICAgICAgICAgICAgICAgIGZp
bGwodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
KyBpbmRleCwgcmVnaXN0ZXJPZmZzZXRBZnRlckZpeHVwKSwgdW5kZWZpbmVkKTsKKyAgICAgICAg
fQorICAgIH0KKwogICAgIElubGluZVN0YWNrRW50cnkgaW5saW5lU3RhY2tFbnRyeSgKICAgICAg
ICAgdGhpcywgY29kZUJsb2NrLCBjb2RlQmxvY2ssIG1fZ3JhcGgubGFzdEJsb2NrKCksIGNhbGxl
ZS5mdW5jdGlvbigpLCByZXN1bHRSZWcsCiAgICAgICAgIChWaXJ0dWFsUmVnaXN0ZXIpaW5saW5l
Q2FsbEZyYW1lU3RhcnQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBraW5kKTsKQEAgLTE3
NzEsNyArMTc4NSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwo
Tm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kCiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nvc3QgPSBpbmxpbmluZ0Nvc3QoY2FsbGVl
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZv
cihraW5kKSk7CisgICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nvc3QgPSBpbmxpbmluZ0Nvc3QoY2Fs
bGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywga2luZCk7CiAgICAgaWYgKG15SW5saW5p
bmdDb3N0ID4gaW5saW5pbmdCYWxhbmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQz
NDgsNyArNDM2Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHRo
aXMtPmlubGluZUNhbGxGcmFtZSgpOwogICAgICAgICAgICAgTm9kZSogbGVuZ3RoOwogICAgICAg
ICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3Mo
KSkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50c0xlbmd0aCA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgdW5zaWduZWQg
YXJndW1lbnRzTGVuZ3RoID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyAtIDE7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtUGFyYW1zVG9Ta2lwID0gY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKICAgICAgICAgICAgICAgICBKU1Zh
bHVlIHJlc3RMZW5ndGg7CiAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c0xlbmd0aCA8PSBu
dW1QYXJhbXNUb1NraXApCkBAIC01OTE5LDggKzU5MzMsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTm9kZSogYXJndW1lbnQ7
CiAgICAgICAgICAgICBpbnQzMl90IGFyZ3VtZW50SW5kZXhJbmNsdWRpbmdUaGlzID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKLSAgICAgICAgICAgICAgICBp
bnQzMl90IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHMuc2l6ZSgpOwotICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudEluZGV4SW5jbHVkaW5n
VGhpcyA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQorICAgICAgICAgICAgICAgIGludDMy
X3QgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXAgPSBpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCk7CisgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50
SW5kZXhJbmNsdWRpbmdUaGlzIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXAp
CiAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGFyZ3VtZW50SW5kZXhJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCA9IGFkZFRvR3JhcGgoSlNDb25zdGFudCwg
T3BJbmZvKG1fY29uc3RhbnRVbmRlZmluZWQpKTsKQEAgLTYyMDYsOCArNjIyMCw5IEBAIEJ5dGVD
b2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICB9
CiAgICAgfQogICAgIAotICAgIG1fYXJndW1lbnRQb3NpdGlvbnMucmVzaXplKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzOyArK2kpIHsKKyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNX
aXRoRml4dXAgPSBzdGQ6Om1heDxpbnQ+KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisgICAgbV9hcmd1bWVudFBvc2l0aW9ucy5yZXNpemUo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXApOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXA7ICsraSkgewogICAgICAg
ICBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zLmFwcGVuZChBcmd1
bWVudFBvc2l0aW9uKCkpOwogICAgICAgICBBcmd1bWVudFBvc2l0aW9uKiBhcmd1bWVudFBvc2l0
aW9uID0gJmJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMubGFzdCgp
OwogICAgICAgICBtX2FyZ3VtZW50UG9zaXRpb25zW2ldID0gYXJndW1lbnRQb3NpdGlvbjsKQEAg
LTYyMjUsMTMgKzYyNDAsMTQgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6Oklu
bGluZVN0YWNrRW50cnkoCiAgICAgICAgIC8vIHBsYW4gZmluaXNoZXMuCiAgICAgICAgIG1faW5s
aW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGNv
ZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCkpOwogICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+
c2V0U3RhY2tPZmZzZXQoaW5saW5lQ2FsbEZyYW1lU3RhcnQub2Zmc2V0KCkgLSBDYWxsRnJhbWU6
OmhlYWRlclNpemVJblJlZ2lzdGVycyk7CisgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogICAg
ICAgICBpZiAoY2FsbGVlKSB7CiAgICAgICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+Y2FsbGVl
UmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFudChjYWxsZWUpOwogICAgICAgICAgICAg
bV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwgPSBmYWxzZTsKICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCA9IHRydWU7CiAg
ICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXIgPSBieXRlQ29kZVBhcnNlci0+
Y3VycmVudENvZGVPcmlnaW4oKTsKLSAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
cy5yZXNpemVUb0ZpdChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7IC8vIFNldCB0aGUgbnVt
YmVyIG9mIGFyZ3VtZW50cyBpbmNsdWRpbmcgdGhpcywgYnV0IGRvbid0IGNvbmZpZ3VyZSB0aGUg
dmFsdWUgcmVjb3ZlcmllcywgeWV0LgorICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzV2l0aEZpeHVwLnJlc2l6ZVRvRml0KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZp
eHVwKTsgLy8gU2V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGluY2x1ZGluZyB0aGlzLCBidXQg
ZG9uJ3QgY29uZmlndXJlIHRoZSB2YWx1ZSByZWNvdmVyaWVzLCB5ZXQuCiAgICAgICAgIG1faW5s
aW5lQ2FsbEZyYW1lLT5raW5kID0ga2luZDsKICAgICAgICAgCiAgICAgICAgIG1faWRlbnRpZmll
clJlbWFwLnJlc2l6ZShjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAppbmRleCA5NjE0NzVjYmQzYzc0
MTIyNjdmOGMwNzlhYjNmY2I5MGVkMzI5YmNiLi44NzA3Nzg4OGUwZGYwOWNiOTRmMmUwOTMyMWQ1
YjhkNTllNWE2YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0
YS5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIENvbW1vbkRhdGE6OnZhbGlkYXRlUmVmZXJl
bmNlcyhjb25zdCBUcmFja2VkUmVmZXJlbmNlcyYgdHJhY2tlZFJlZmVyZW5jZXMpCiB7CiAgICAg
aWYgKElubGluZUNhbGxGcmFtZVNldCogc2V0ID0gaW5saW5lQ2FsbEZyYW1lcy5nZXQoKSkgewog
ICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lIDogKnNldCkgewot
ICAgICAgICAgICAgZm9yIChWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA6IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzKSB7CisgICAgICAgICAgICBmb3IgKFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5
IDogaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXApIHsKICAgICAgICAgICAgICAg
ICBpZiAocmVjb3ZlcnkuaXNDb25zdGFudCgpKQogICAgICAgICAgICAgICAgICAgICB0cmFja2Vk
UmVmZXJlbmNlcy5jaGVjayhyZWNvdmVyeS5jb25zdGFudCgpKTsKICAgICAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAKaW5kZXggMDhjOTIyN2NkN2U1ODBmOWFmNTM4NmRlYjQyMDNmNzBhYzlhMmYxYi4uMTll
OThlODQ2OTRkZjNkNWU4NjgyM2M4NDIwMWE1OTYyNThiMDBmZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTM1
Nyw3ICszNTcsNyBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgICAgICAgICAgLy8gR2V0TXlBcmd1bWVudEJ5VmFsIGluIHN1Y2ggc3RhdGljYWxs
eS1vdXQtb2YtYm91bmRzIGFjY2Vzc2VzOyB3ZSBqdXN0IGxvc2UgQ0ZBIHVubGVzcwogICAgICAg
ICAgICAgICAgIC8vIEdDU0UgcmVtb3ZlcyB0aGUgYWNjZXNzIGVudGlyZWx5LgogICAgICAgICAg
ICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlu
ZGV4ID49IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpCisgICAgICAgICAg
ICAgICAgICAgIGlmIChpbmRleCA+PSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzIC0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBtX3N0YXRl
LnZhcmlhYmxlcygpLm51bWJlck9mQXJndW1lbnRzKCkgLSAxKQpAQCAtMzc4LDcgKzM3OCw3IEBA
IGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGluZGV4ICsgMSksIEZsdXNo
ZWRKU1ZhbHVlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFy
Z3MoKSAmJiBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpIHsK
KyAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUt
PmlzVmFyYXJncygpICYmIGluZGV4IDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvR2V0
U3RhY2soZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKaW5kZXggMWQ0OGY4Y2IwZWFhNTg3NjRkZTM0NWIwYzQ2ZGU4MjhiYzcyZDg1Yy4uMzVkNmY0
Yzc1MDA1ZjE5NDZlYjM0MTM5ZDA4ZTVhYTdmZDk2NmE5NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKQEAgLTExNTcsNyArMTE1Nyw3IEBAIGJvb2wgR3JhcGg6OmlzTGl2
ZUluQnl0ZWNvZGUoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIENvZGVPcmlnaW4gY29kZU9yaWdp
bikKICAgICAgICAgLy8gQXJndW1lbnRzIGFyZSBhbHdheXMgbGl2ZS4gVGhpcyB3b3VsZCBiZSBy
ZWR1bmRhbnQgaWYgaXQgd2Fzbid0IGZvciBvdXIKICAgICAgICAgLy8gb3BfY2FsbF92YXJhcmdz
IGlubGluaW5nLgogICAgICAgICBpZiAocmVnLmlzQXJndW1lbnQoKQotICAgICAgICAgICAgJiYg
c3RhdGljX2Nhc3Q8c2l6ZV90PihyZWcudG9Bcmd1bWVudCgpKSA8IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzLnNpemUoKSkgeworICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihy
ZWcudG9Bcmd1bWVudCgpKSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNp
emUoKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiQXJndW1lbnQgaXMgbGl2ZS5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggMzM0ZWE5N2ZlNWViYjc3M2QzZWRlNzAz
Njg5ZWIwNzFiOGMxNmZiMS4uNjYzMDgxNTFkZGM1MDdkNDU3MzM5Y2I1YmRmMGU3MzA4ZmQ1Nzdk
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtODM5LDcgKzgzOSw3IEBA
IGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICAgICAgICAgIC8v
IEFyZ3VtZW50cyBhcmUgYWx3YXlzIGxpdmUuIFRoaXMgd291bGQgYmUgcmVkdW5kYW50IGlmIGl0
IHdhc24ndCBmb3Igb3VyCiAgICAgICAgICAgICAvLyBvcF9jYWxsX3ZhcmFyZ3MgaW5saW5pbmcu
IFNlZSB0aGUgY29tbWVudCBhYm92ZS4KICAgICAgICAgICAgIGV4Y2x1c2lvblN0YXJ0ID0gc3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKTsKLSAg
ICAgICAgICAgIGV4Y2x1c2lvbkVuZCA9IHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVu
dE9mZnNldEluY2x1ZGluZ1RoaXMoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKTsK
KyAgICAgICAgICAgIGV4Y2x1c2lvbkVuZCA9IHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1
bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4
dXAuc2l6ZSgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gV2Ugd2lsbCBhbHdheXMg
aGF2ZSBhICJ0aGlzIiBhcmd1bWVudCBhbmQgZXhjbHVzaW9uU3RhcnQgc2hvdWxkIGJlIGEgc21h
bGxlciBzdGFjawogICAgICAgICAgICAgLy8gb2Zmc2V0IHRoYW4gZXhjbHVzaW9uRW5kLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFs
eXNpc1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmls
aXR5QW5hbHlzaXNQaGFzZS5jcHAKaW5kZXggZThiNDVjNDVhNjJmYzQ0OWMyMTljYTRkYWVlNGNl
MWU2ZGRmY2I4NS4uM2NkYTY4NzJlNGM3ODQ5MGJjZDA3ZDU5ZDdmOWI5ZWQ5ODA1YzUxNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFs
eXNpc1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWls
YWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBMb2NhbE9T
UkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6OmV4ZWN1dGVOb2RlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBtX2F2YWlsYWJpbGl0eS5tX2hlYXAuc2V0KFByb21vdGVkSGVhcExvY2F0aW9uKEFyZ3Vt
ZW50c0NhbGxlZVBMb2MsIG5vZGUpLCBjYWxsZWUpOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7ICsraSkgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOyArK2kpIHsKICAgICAgICAgICAgIEF2YWls
YWJpbGl0eSBhcmd1bWVudCA9IG1fYXZhaWxhYmlsaXR5Lm1fbG9jYWxzLm9wZXJhbmQoCiAgICAg
ICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6YXJn
dW1lbnRPZmZzZXQoaSkpOwogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0LmNwcAppbmRleCBiZDc4NTdmOWZlNzFlMWRlMGNjNzQ3NmM4ODMzNWU4NWIzMjlm
MGQ2Li4zYjczYTEyYzEwOWQ4M2Y5ODA1Njk1OGYyYTU5NWE1YThkNjI0Mjk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IE9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBP
cGVyYW5kczxWYWx1ZVJlY292ZQogICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGppdC5tb3ZlKAotICAgICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKSksCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksCiAgICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRleCA2Yjk0OTAy
MDczZGFkNGQ2OTE3NjVmNDNhZDZlYjE3NGNhZjI2Yzg5Li4yMTUxMTcyYjJiNWVmMjIwOTM0ODQ2
MWE4OTBlZDQxOTllZDZmMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9p
ZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0
QmFzZSYgZXhpdCkKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QyKTsKIAogICAgICAgICBpZiAo
IWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICBqaXQuc3RvcmUzMihB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5z
aXplKCkpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQp
KSk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwgQXNzZW1ibHlI
ZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwogI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIGppdC5zdG9yZTY0KGNhbGxlckZyYW1lR1BSLCBBc3NlbWJseUhlbHBl
cnM6OmFkZHJlc3NGb3JCeXRlT2Zmc2V0KGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyRnJhbWVPZmZz
ZXQoKSkpOwogICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGNv
ZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgpLmJpdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKaW5kZXggNWYwYWRjNmU1
M2NlYzYyZDE5ODYwZTQwMTA1YzY0ZTQ1NzllOWE5MC4uMTZmZTI2ZjZjYTZiNDNjZTZlMzQ2ZTQy
ZjNmZjBhNDBiMDM4YTllYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFzcyBQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvciB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAxICsgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1i
ZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZp
eHVwLnNpemUoKTsgaSsrKQogICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIo
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KGkpLm9mZnNldCgpKSk7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFy
Z3MoKSkKICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CkBAIC0y
MTksNyArMjE5LDcgQEAgY2xhc3MgUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3IgewogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlubGluZUNhbGxG
cmFtZS0+aXNWYXJhcmdzKCksICJHZXRBcmd1bWVudCBpcyBvbmx5IHVzZWQgZm9yIElubGluZUNh
bGxGcmFtZSBpZiB0aGUgY2FsbCBmcmFtZSBpcyB2YXJhcmdzLiIpOwotICAgICAgICAgICAgaWYg
KGluZGV4SW5jbHVkaW5nVGhpcyA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkK
KyAgICAgICAgICAgIGlmIChpbmRleEluY2x1ZGluZ1RoaXMgPCBpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50c1dpdGhGaXh1cC5zaXplKCkpCiAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxS
ZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoaW5kZXhJbmNsdWRpbmdUaGlzKS5vZmZzZXQoKSkpOwogICAgICAgICAgICAgbV9y
ZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzksNyAr
MjM5LDcgQEAgY2xhc3MgUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3IgewogICAgICAgICAg
ICAgLy8gUmVhZCBhbGwgb2YgdGhlIGlubGluZSBhcmd1bWVudHMgYW5kIGNhbGwgZnJhbWUgaGVh
ZGVycyB0aGF0IHdlIGRpZG4ndCBhbHJlYWR5IGNhcHR1cmUuCiAgICAgICAgICAgICBmb3IgKElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMu
aW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZSA9IGlubGlu
ZUNhbGxGcmFtZS0+Z2V0Q2FsbGVySW5saW5lRnJhbWVTa2lwcGluZ1RhaWxDYWxscygpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzU3RyaWN0TW9kZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzLnNpemUoKTsgaS0tID4gMTspCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgaS0tID4g
MTspCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5v
ZmZzZXQoKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBmODM2MGI5ZmRiOTAxYmFjMjE0OWI5NDMyYjBl
ZTcyZWVjMGFkOTk2Li42NzgwZDBmM2FkN2IzYmQ4MGY0YzUzOWE2N2I4ZjFlMjE4ZDAwNDNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09i
amVjdChHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0R2V0TGVuZ3RoKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBH
UFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVUaGlzKQogewogICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtICFpbmNs
dWRlVGhpcyksIGxlbmd0aEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAhaW5jbHVkZVRoaXMp
LCBsZW5ndGhHUFIpOwogICAgIGVsc2UgewogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1l
bnRDb3VudFJlZ2lzdGVyID0gbV9qaXQuYXJndW1lbnRDb3VudChpbmxpbmVDYWxsRnJhbWUpOwog
ICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoYXJndW1lbnRDb3Vu
dFJlZ2lzdGVyKSwgbGVuZ3RoR1BSKTsKQEAgLTY3OTcsNyArNjc5Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICBi
b29sIGxlbmd0aElzS25vd247IC8vIGlmIGZhbHNlLCBsZW5ndGhHUFIgd2lsbCBoYXZlIHRoZSBs
ZW5ndGguCiAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUKICAg
ICAgICAgJiYgIW5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJn
cygpKSB7Ci0gICAgICAgIGtub3duTGVuZ3RoID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgIGtub3duTGVuZ3RoID0g
bm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgLSAxOwogICAgICAgICBsZW5ndGhJc0tub3duID0gdHJ1ZTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBrbm93bkxlbmd0aCA9IFVJTlRfTUFYOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKaW5kZXggMDNjNTAyZmM4ODBkY2Jh
ODIzYzdlMWE0ZGM5ZDg5ZWEyNjc0ZDZkZC4uYTA0NjcxYjQ2MTEyZWIyZDEyMThjMzFlNzhmZDE3
Y2UyYjYyNGM1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFj
a0xheW91dFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNr
TGF5b3V0UGhhc2UuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgY2xhc3MgU3RhY2tMYXlvdXRQaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgIENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFy
Z3VtZW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOyBhcmd1bWVudC0tID4g
MTspIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgewogICAgICAg
ICAgICAgICAgIHVzZWRMb2NhbHMuc2V0KFZpcnR1YWxSZWdpc3RlcigKICAgICAgICAgICAgICAg
ICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpLm9mZnNldCgpICsKICAg
ICAgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgp
KTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBjbGFzcyBTdGFja0xheW91dFBoYXNlIDogcHVibGljIFBo
YXNlIHsKICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbiwgVmlydHVhbFJlZ2lzdGVyKGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGFyZ3VtZW50
LS0gPiAxOykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgYXJndW1lbnQtLSA+IDE7KSB7CiAg
ICAgICAgICAgICAgICAgQXJndW1lbnRQb3NpdGlvbiYgcG9zaXRpb24gPSBtX2dyYXBoLm1fYXJn
dW1lbnRQb3NpdGlvbnNbCiAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXJndW1lbnRQb3NpdGlv
blN0YXJ0ICsgYXJndW1lbnRdOwogICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
dmFyaWFibGUgPSBwb3NpdGlvbi5zb21lVmFyaWFibGUoKTsKQEAgLTE5OCw3ICsxOTgsNyBAQCBj
bGFzcyBTdGFja0xheW91dFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAg
ICAgc291cmNlID0gVmFsdWVTb3VyY2U6OmZvckZsdXNoRm9ybWF0KAogICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGUtPm1hY2hpbmVMb2NhbCgpLCB2YXJpYWJsZS0+Zmx1c2hGb3JtYXQo
KSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzW2FyZ3VtZW50XSA9IHNvdXJjZS52YWx1ZVJlY292ZXJ5KCk7CisgICAgICAgICAg
ICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXBbYXJndW1lbnRdID0gc291
cmNlLnZhbHVlUmVjb3ZlcnkoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsID09ICEh
ZGF0YS5jYWxsZWVWYXJpYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxl
LmNwcAppbmRleCBmZDA5MTQ1NmY3NTNmZmYyNTc3MDBlMDI1NTZlYjFhNmJjN2IxNTFlLi5kNTg1
NzBmNWVhNGY2MDkxZTg2MDM5NjU2YTgzZjhlNTkzNzg1Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTk4LDkgKzk4LDkgQEAgdm9pZCBjb21waWxlKFN0
YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAgICAg
aWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lzdGVyLmlzVmFsaWQoKSkKICAg
ICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lzdGVyICs9IGxvY2Fs
c09mZnNldDsKICAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgewotICAgICAg
ICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbYXJndW1lbnRdID0KLSAgICAgICAgICAg
ICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1thcmd1bWVudF0ud2l0aExvY2Fsc09mZnNl
dChsb2NhbHNPZmZzZXQpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOyBhcmd1bWVudC0tID4gMTspIHsK
KyAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwW2FyZ3VtZW50
XSA9CisgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXBb
YXJndW1lbnRdLndpdGhMb2NhbHNPZmZzZXQobG9jYWxzT2Zmc2V0KTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDNlZTIx
NjlmZmQ5MTgzNTRkNDE3NTUyMjE4ZTJjMTVlZDUxOTUxZWEuLmM0NmU5MTk1NzBlMWE5NjAyODUz
Yzk0NTYyNjMxZmNhYWFkOTQ1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKQEAgLTM2OTQsNyArMzY5NCw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgbGltaXQ7CiAgICAgICAgIGlmIChpbmxpbmVD
YWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICBs
aW1pdCA9IG1fb3V0LmNvbnN0SW50MzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgp
IC0gMSk7CisgICAgICAgICAgICBsaW1pdCA9IG1fb3V0LmNvbnN0SW50MzIoaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIDEpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBBc3NlbWJs
eUhlbHBlcnM6OmFyZ3VtZW50Q291bnQoaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIGxp
bWl0ID0gbV9vdXQuc3ViKG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdp
c3RlcikpLCBtX291dC5pbnQzMk9uZSk7CkBAIC0zNzE3LDggKzM3MTcsOCBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAKICAgICAgICAgVHlwZWRQb2ludGVyIGJhc2U7CiAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50cy5zaXplKCkgPiAxKQotICAgICAgICAgICAgICAgIGJhc2UgPSBhZGRyZXNzRm9y
KGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzWzFdLnZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICAg
ICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4g
MSkKKyAgICAgICAgICAgICAgICBiYXNlID0gYWRkcmVzc0ZvcihpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50c1dpdGhGaXh1cFsxXS52aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgYmFzZSA9IGFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
MSkpOwogICAgICAgICAKQEAgLTk2NDYsNyArOTY0Niw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIEFyZ3VtZW50c0xlbmd0aCBsZW5ndGg7CiAKICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewotICAgICAgICAgICAg
bGVuZ3RoLmtub3duID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAg
ICAgICAgICAgIGxlbmd0aC5rbm93biA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAgICAgbGVuZ3RoLmlzS25vd24gPSB0cnVlOwogICAg
ICAgICAgICAgbGVuZ3RoLnZhbHVlID0gbV9vdXQuY29uc3RJbnQzMihsZW5ndGgua25vd24pOwog
ICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9u
cy5jcHAKaW5kZXggNGJjY2JiNzAyYWUxYWU4YmQ5ZDU5YTU2YmM1MDE0MzBjYjAwNTk0ZC4uMWEx
YjM3MWUzZTA1MWJmMDE3ZTgyYjIyNTNlNjIyZWM3YjJjMjZmOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC0yOTMsNyArMjkzLDcgQEAgZXh0ZXJu
ICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9T
UigKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBhcmd1bWVudENvdW50ID0gbWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5p
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7CisgICAgICAgICAgICBhcmd1bWVudENv
dW50ID0gbWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChhcmd1bWVudENvdW50
KTsKICAgICAgICAgCiAgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCmlu
ZGV4IDE3NWZmZjMxYmFmM2ExYTM3ZDQ5YjZlMWMzZTAzNmY2MTNlYzUwZjQuLjg1ZDE0N2E0N2M3
ZjE5NWFhNjNhMmIyZTU3YTQ2NzYyM2RiNmJiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAg
dm9pZCBTdGFja1Zpc2l0b3I6OnJlYWRJbmxpbmVkRnJhbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IENvZGVPcmlnaW4qIGNvZGVPcmlnaW4KICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudFJlZ2lzdGVyLmlzVmFsaWQoKSkKICAgICAgICAgICAgIG1fZnJhbWUubV9hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFtZS0+cihpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnRSZWdpc3Rlci5vZmZzZXQoKSkudW5ib3hlZEludDMyKCk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fZnJhbWUubV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAgICAgICAgICAgIG1fZnJhbWUubV9h
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXM7CiAgICAgICAgIG1fZnJhbWUubV9jb2RlQmxvY2sgPSBpbmxpbmVDYWxs
RnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpOwogICAgICAgICBtX2ZyYW1lLm1fYnl0ZWNv
ZGVPZmZzZXQgPSBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA2ZDIyMDk0YmMzZjhlYTU5YjI5ZGQ5
OTU4YWM5NjIwMzMxN2VlODg1Li5hNjhjMzY5YjBhMDAwZTAxZDU0NDkwMGMzNjg0ZDI4NDk4YzFl
ZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAg
LTEyMjAsOSArMTIyMCw5IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgewogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKICAgICAgICAg
ICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKSk7
Ci0gICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgPD0gMSkKKyAg
ICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKSA8PSAx
KQogICAgICAgICAgICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKDApOwotICAgICAg
ICBWYWx1ZVJlY292ZXJ5IHJlY292ZXJ5ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbMV07
CisgICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVjb3ZlcnkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50c1dpdGhGaXh1cFsxXTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVjb3ZlcnkudGVjaG5p
cXVlKCkgPT0gRGlzcGxhY2VkSW5KU1N0YWNrKTsKICAgICAgICAgcmV0dXJuIHJlY292ZXJ5LnZp
cnR1YWxSZWdpc3RlcigpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9T
ZXR1cFZhcmFyZ3NGcmFtZS5jcHAKaW5kZXggMGY5NjFhNjYxZmIyNDc0NDI5MGUyMmRmNjE3YWJi
MjdlNWU0Y2UyMC4uZTFjNWU1ZmVjMzVhODIwZWQ5MGI0NTUxYzI3OWFhOWM1YjBmYWFkYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAKQEAg
LTEyMSwxMSArMTIxLDEwIEBAIHZvaWQgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UoVk0m
IHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG51bVVzZWRTbG90CiAgICAgICAgICAgICBh
cmd1bWVudENvdW50UmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2so
CiAgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXIs
IERhdGFGb3JtYXRJbnQzMik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhcmd1bWVu
dENvdW50UmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFudCgKLSAgICAgICAgICAgICAg
ICBqc051bWJlcihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKTsKKyAgICAgICAg
ICAgIGFyZ3VtZW50Q291bnRSZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzTnVt
YmVyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAg
ICAgfQotICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpID4gMSkK
LSAgICAgICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
c1sxXS52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzV2l0aEZpeHVwLnNpemUoKSA+IDEpCisgICAgICAgICAgICBmaXJzdEFyZ3VtZW50UmVn
ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXBbMV0udmlydHVhbFJlZ2lzdGVy
KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBWaXJ0dWFs
UmVnaXN0ZXIoMCk7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCmluZGV4IGYwOTc4OGI3NWYzNWVjM2U4YjZlZThi
ZGRkZWE4NGYxM2FiOTNjZDQuLjAzMDMyNzBkODBhNmEwYWYwYTgzMDQ4NTM3MzQ1OGRkOTE2ODNm
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3Vt
ZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgQ2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1
bWVudHM6OmNyZWF0ZVdpdGhJbmxpbmVGcmFtZShFeGVjU3RhdGUqIG15RnJhbWUsIEV4ZWMKICAg
ICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3Rlci5pc1Zh
bGlkKCkpCiAgICAgICAgICAgICAgICAgbGVuZ3RoID0gdGFyZ2V0RnJhbWUtPnIoaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXIpLnVuYm94ZWRJbnQzMigpOwogICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzLnNpemUoKTsKKyAgICAgICAgICAgICAgICBsZW5ndGggPSBpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogICAgICAgICAgICAgbGVuZ3RoLS07CiAgICAgICAg
ICAgICByZXN1bHQgPSBjcmVhdGVFbXB0eShteUZyYW1lLCBjYWxsZWUsIGxlbmd0aCk7CiAKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKLSAgICAgICAgICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdEluZGV4KG15RnJhbWUsIGksIGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzW2kgKyAxXS5yZWNvdmVyKHRhcmdldEZyYW1lKSk7CisgICAgICAgICAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3RJbmRleChteUZyYW1lLCBpLCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
c1dpdGhGaXh1cFtpICsgMV0ucmVjb3Zlcih0YXJnZXRGcmFtZSkpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgbGVuZ3RoID0gdGFyZ2V0RnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAg
ICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZUVtcHR5KG15RnJhbWUsIGNhbGxlZSwgbGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5k
ZXggN2RjNjBmNDQ3NzFjZWQwMTVmZDg3NmE5YzZjMzY4YzcyYzdhNDFlMC4uYWUwM2Q4OTQ0MTFk
ZTU2OGJjZjAyZTJjNDBmZTk2NGJlM2YyZWNhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTUwLDI0ICs1MCwyOSBAQCBzdHJ1Y3Qg
QXJpdHlDaGVja0RhdGEgewogICAgIHZvaWQqIHRodW5rVG9DYWxsOwogfTsKIAorQUxXQVlTX0lO
TElORSBpbnQgbnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQoreworICAgIGlmIChhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA+PSBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgaW50IGZyYW1lU2l6ZSA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
Q2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7CisgICAgaW50IGFsaWduZWRGcmFtZVNp
emVGb3JQYXJhbWV0ZXJzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50
UmVnaXN0ZXJzKCksCisgICAgICAgIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgQ2FsbEZy
YW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpOworICAgIHJldHVybiBhbGlnbmVkRnJhbWVTaXpl
Rm9yUGFyYW1ldGVycyAtIGZyYW1lU2l6ZTsKK30KKwogQUxXQVlTX0lOTElORSBpbnQgYXJpdHlD
aGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQogewogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhl
Yy0+anNDYWxsZWUoKSk7CiAgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwog
ICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Y29k
ZUJsb2NrRm9yKGtpbmQpOwotICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4
ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0gICAgCi0gICAgQVNTRVJUKGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwot
ICAgIGludCBmcmFtZVNpemUgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxGcmFt
ZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwotICAgIGludCBhbGlnbmVkRnJhbWVTaXplRm9yUGFy
YW1ldGVycyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVy
cygpLAotICAgICAgICBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIENhbGxGcmFtZTo6
aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKTsKLSAgICBpbnQgcGFkZGVkU3RhY2tTcGFjZSA9IGFsaWdu
ZWRGcmFtZVNpemVGb3JQYXJhbWV0ZXJzIC0gZnJhbWVTaXplOworICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSkgPCBuZXdD
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisgICAgaW50IHBhZGRpbmcgPSBudW1iZXJPZlN0
YWNrUGFkZGluZ1Nsb3RzKG5ld0NvZGVCbG9jaywgZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoKSk7CiAgICAgCi0gICAgUmVnaXN0ZXIqIG5ld1N0YWNrID0gZXhlYy0+cmVnaXN0ZXJz
KCkgLSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwg
cGFkZGVkU3RhY2tTcGFjZSk7CisgICAgUmVnaXN0ZXIqIG5ld1N0YWNrID0gZXhlYy0+cmVnaXN0
ZXJzKCkgLSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMo
KSwgcGFkZGluZyk7CiAKICAgICBpZiAoVU5MSUtFTFkoIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlG
b3IobmV3U3RhY2spKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBwYWRkZWRTdGFj
a1NwYWNlOworICAgIHJldHVybiBwYWRkaW5nOwogfQogCiBpbmxpbmUgYm9vbCBvcEluKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3BOYW1lLCBBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdGFja0FsaWdubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RhY2tBbGlnbm1lbnQuaAppbmRleCAwMGM5MGExZTc4ZGNjMzI5ZWM3ZWExOTE0ZTYy
OGVmODMzMGYwMTAwLi40ZTMxMDgwMzVmM2FkODM1NDNiMzIxYmM2NzlkNDM5NTlkNTQ4YTJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0FsaWdubWVudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrQWxpZ25tZW50LmgKQEAg
LTMxLDkgKzMxLDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAvLyBOQi4gRGlmZmVyZW50IHBsYXRm
b3JtcyBtYXkgaGF2ZSBkaWZmZXJlbnQgcmVxdWlyZW1lbnRzIGhlcmUuIEJ1dCAxNiBieXRlcyBp
cyB2ZXJ5IGNvbW1vbi4KLWlubGluZSB1bnNpZ25lZCBzdGFja0FsaWdubWVudEJ5dGVzKCkgeyBy
ZXR1cm4gMTY7IH0KK2lubGluZSBjb25zdGV4cHIgdW5zaWduZWQgc3RhY2tBbGlnbm1lbnRCeXRl
cygpIHsgcmV0dXJuIDE2OyB9CiAKLWlubGluZSB1bnNpZ25lZCBzdGFja0FsaWdubWVudFJlZ2lz
dGVycygpCitpbmxpbmUgY29uc3RleHByIHVuc2lnbmVkIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCkKIHsKICAgICByZXR1cm4gc3RhY2tBbGlnbm1lbnRCeXRlcygpIC8gc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYjU4Yzg4ODcwODJiMjUzMWZjNWYzNTI3Y2I5ZjZkYTQyY2IyMTNkZS4uNGUw
MGMxODA5OTkxNDQwN2Y4NjRkZjE4NWJiNjM3OTExMWRiZWFiNiAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAx
Ny0wOC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvYXJpdHktbWlzbWF0Y2gtYXJndW1lbnRz
LWxlbmd0aC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0MSk6
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvYXJpdHktbWlzbWF0Y2gtZ2V0LWFy
Z3VtZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGJ1aWx0aW4u
Y3JlYXRlQnVpbHRpbik6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvYXJpdHkt
bWlzbWF0Y2gtaW5saW5pbmctZXh0cmEtc2xvdHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAoaW5saW5lVGFyZ2V0KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAq
IHN0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgIChpbmxpbmVUYXJnZXQpOgorICAgICAgICAodGVzdCk6CisgICAgICAg
ICogc3RyZXNzL2FyaXR5LW1pc21hdGNoLXJlc3QuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDEpOgorICAgICAgICAodGVzdCk6
CisKIDIwMTctMDgtMzAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4gTWFrZSB0ZXN0IHN0b3AgcHJpbnRpbmcuCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1hcmd1bWVudHMtbGVuZ3RoLmpzIGIvSlNUZXN0cy9z
dHJlc3MvYXJpdHktbWlzbWF0Y2gtYXJndW1lbnRzLWxlbmd0aC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTg5
ZTI0YmIzNzlmZDYwZWM0NzBhNGQ2ZTViZDU4NTJmYTQ3YWViCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtYXJndW1lbnRzLWxlbmd0aC5qcwpAQCAtMCww
ICsxLDUwIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1
ZTogJyArIGFjdHVhbCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGVzdDEo
YXJnMSwgYXJnMiwgYXJnMykKKyAgICB7CisgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3Ro
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgIHsKKyAgICAgICAgc2hvdWxkQmUo
dGVzdDEoKSwgMCk7CisgICAgICAgIHNob3VsZEJlKHRlc3QxKDApLCAxKTsKKyAgICAgICAgc2hv
dWxkQmUodGVzdDEoMCwgMSksIDIpOworICAgICAgICBzaG91bGRCZSh0ZXN0MSgwLCAxLCAyKSwg
Myk7CisgICAgICAgIHNob3VsZEJlKHRlc3QxKDAsIDEsIDIsIDMpLCA0KTsKKyAgICB9CisgICAg
bm9JbmxpbmUodGVzdCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAg
ICAgICB0ZXN0KCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRlc3Qx
KGZsYWcsIGFyZzEsIGFyZzIsIGFyZzMpCisgICAgeworICAgICAgICBpZiAoZmxhZykKKyAgICAg
ICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50czsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiB0ZXN0KGZsYWcpCisgICAgeworICAgICAgICBzaG91bGRCZSh0ZXN0MShmbGFn
KS5sZW5ndGgsIDEpOworICAgICAgICBzaG91bGRCZSh0ZXN0MShmbGFnLCAwKS5sZW5ndGgsIDIp
OworICAgICAgICBzaG91bGRCZSh0ZXN0MShmbGFnLCAwLCAxKS5sZW5ndGgsIDMpOworICAgICAg
ICBzaG91bGRCZSh0ZXN0MShmbGFnLCAwLCAxLCAyKS5sZW5ndGgsIDQpOworICAgICAgICBzaG91
bGRCZSh0ZXN0MShmbGFnLCAwLCAxLCAyLCAzKS5sZW5ndGgsIDUpOworICAgIH0KKyAgICBub0lu
bGluZSh0ZXN0KTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKQorICAgICAgICB0
ZXN0KGZhbHNlKTsKKworICAgIHRlc3QodHJ1ZSk7CisgICAgdGVzdCh0cnVlKTsKKyAgICB0ZXN0
KHRydWUpOworfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21hdGNo
LWdldC1hcmd1bWVudC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21hdGNoLWdldC1hcmd1
bWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMjQxYWJkMzgzYjQ0YTJhYTlmOGYxYzczNGZjMjZjMjVhYTkw
M2VjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtZ2V0
LWFyZ3VtZW50LmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGJ1aWx0aW4gPSBj
cmVhdGVCdWlsdGluKGAoZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBAYXJndW1lbnQoMCk7Cit9
KWApOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgcmVzdWx0ID0gYnVpbHRpbigpOwor
ICAgIHNob3VsZEJlKHJlc3VsdCwgdW5kZWZpbmVkKTsKKyAgICB2YXIgcmVzdWx0ID0gYnVpbHRp
big0Mik7CisgICAgc2hvdWxkQmUocmVzdWx0LCA0Mik7Cit9Citub0lubGluZSh0ZXN0KTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy1leHRyYS1zbG90cy5qcyBiL0pT
VGVzdHMvc3RyZXNzL2FyaXR5LW1pc21hdGNoLWlubGluaW5nLWV4dHJhLXNsb3RzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVhZjM3NDM3MGNmMTljNDIxM2E5ZjI2YzM3ZWU5N2RlYTA1ZjQ4NDMKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy1leHRyYS1z
bG90cy5qcwpAQCAtMCwwICsxLDE3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIGlubGluZVRhcmdl
dChhcmcxLCBhcmcyKQoreworICAgIHJldHVybiBbYXJnMSwgYXJnMl07Cit9CisKK2Z1bmN0aW9u
IHRlc3QoKSB7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5saW5lVGFyZ2V0KG51bGwp
KSwgYFtudWxsLG51bGxdYCk7Cit9Citub0lubGluZSh0ZXN0KTsKK2ZvciAodmFyIGkgPSAwOyBp
IDwgM2U0OyArK2kpCisgICAgdGVzdCgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJp
dHktbWlzbWF0Y2gtaW5saW5pbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1p
bmxpbmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDgxZDlmMjEyMDA4ZDdhNjdkNjgwZTBkOTY1ZWJlMzBk
OGIzNzY0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gt
aW5saW5pbmcuanMKQEAgLTAsMCArMSwyNCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBpbmxpbmVU
YXJnZXQoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSkKK3sKKyAgICByZXR1cm4gW2FyZzEs
IGFyZzIsIGFyZzMsIGFyZzQsIGFyZzVdOworfQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGlubGluZVRhcmdldCgpKSwgYFtudWxsLG51bGwsbnVsbCxu
dWxsLG51bGxdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5saW5lVGFyZ2V0KDQy
KSksIGBbNDIsbnVsbCxudWxsLG51bGwsbnVsbF1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShpbmxpbmVUYXJnZXQoNDIsIDQzKSksIGBbNDIsNDMsbnVsbCxudWxsLG51bGxdYCk7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5saW5lVGFyZ2V0KDQyLCA0MywgNDQpKSwgYFs0
Miw0Myw0NCxudWxsLG51bGxdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5saW5l
VGFyZ2V0KDQyLCA0MywgNDQsIDQ1KSksIGBbNDIsNDMsNDQsNDUsbnVsbF1gKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIsIDQzLCA0NCwgNDUsIDQ2KSksIGBb
NDIsNDMsNDQsNDUsNDZdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5saW5lVGFy
Z2V0KDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcpKSwgYFs0Miw0Myw0NCw0NSw0Nl1gKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIsIDQzLCA0NCwgNDUsIDQ2LCA0
NywgNDgpKSwgYFs0Miw0Myw0NCw0NSw0Nl1gKTsKK30KK25vSW5saW5lKHRlc3QpOworZm9yICh2
YXIgaSA9IDA7IGkgPCAzZTQ7ICsraSkKKyAgICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9hcml0eS1taXNtYXRjaC1yZXN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlz
bWF0Y2gtcmVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODU4NGNjZTI5Yjg3MTczNzc2NjBlMmZmZGU5OTRk
MzA2ZTM2OTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0
Y2gtcmVzdC5qcwpAQCAtMCwwICsxLDY1IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7Cisg
ICAgZnVuY3Rpb24gdGVzdDIoLi4ucmVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiByZXN0Owor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QxKGFyZzEsIGFyZzIsIGFyZzMpCisgICAgeworICAg
ICAgICByZXR1cm4gdGVzdDIoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gdGVzdCgpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gdGVzdDEoKTsKKyAgICAgICAg
c2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwg
dW5kZWZpbmVkKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzFdLCB1bmRlZmluZWQpOworICAg
ICAgICBzaG91bGRCZShyZXN1bHRbMl0sIHVuZGVmaW5lZCk7CisgICAgfQorICAgIG5vSW5saW5l
KHRlc3QpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgdGVz
dCgpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0MSguLi5yZXN0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlc3Q7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVz
dCgpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gdGVzdDEoKTsKKyAgICAgICAgc2hvdWxk
QmUocmVzdWx0Lmxlbmd0aCwgMCk7CisgICAgfQorICAgIG5vSW5saW5lKHRlc3QpOworCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgdGVzdCgpOworfSgpKTsKKwor
KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0MSguLi5yZXN0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHJlc3Q7CisgICAgfQorICAgIG5vSW5saW5lKHRlc3QxKTsKKworICAgIGZ1bmN0
aW9uIHRlc3QoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IHRlc3QxKCk7CisgICAgICAg
IHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDApOworICAgIH0KKyAgICBub0lubGluZSh0ZXN0KTsK
KworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIHRlc3QoKTsKK30o
KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319435</attachid>
            <date>2017-08-30 19:29:47 -0700</date>
            <delta_ts>2017-09-02 00:02:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175523-20170831112946.patch</filename>
            <type>text/plain</type>
            <size>61906</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
Njk1MjllNzAxZjg4Yzk5MGYxMzkwZjFmMmU5ZmUxZTJmYjI0MmI4Li40ZGI3ODU1MDNiNTc0MTFj
NjcyZjdlMzY4MzNjODhlMDk1YTkzN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OSBAQAorMjAxNy0wOC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3VyIERGRyBwaXBlbGluZSBn
aXZlcyB1cCBpbmxpbmluZyB3aGVuIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0IGZ1bmN0aW9uIGlz
IG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIHRoZSBhcmd1bWVudHMuCisgICAgICAgIEl0IGVmZmVj
dGl2ZWx5IHByZXZlbnRzIHVzIGZyb20gaW5saW5pbmcgYW5kIG9wdGltaXppbmcgZnVuY3Rpb25z
LCB3aGljaCB0YWtlcyBzb21lIG9wdGlvbmFsIGFyZ3VtZW50cyBpbiB0aGUgZm9ybQorICAgICAg
ICBvZiB0aGUgcHJlLUVTNi4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGFib3Zl
IHJlc3RyaWN0aW9uIGJ5IHBlcmZvcm1pbmcgdGhlIGFyaXR5IGZpeHVwIGluIERGRy4KKworICAg
ICAgICBTaXhTcGVlZCBzaG93cyBpbXByb3ZlbWVudCB3aGVuIHdlIGNhbiBpbmxpbmUgYXJpdHkt
bWlzbWF0Y2hlZCBmdW5jdGlvbnMuIChGb3IgZXhhbXBsZSwgY2FsbGluZyBnZW5lcmF0b3IubmV4
dCgpKS4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmUg
ICAgICAgICAgICAgICAgICBwYXRjaGVkCisKKyAgICAgICAgZGVmYXVsdHMuZXM1ICAgICAgICAg
ICAgIDEyMzIuMTIyNistMjAuNjc3NSAgICBeICAgIDQ0Mi4zMzI2Ky0yNi4xODgzICAgICAgIF4g
ZGVmaW5pdGVseSAyLjc4NTV4IGZhc3RlcgorICAgICAgICByZXN0LmVzNiAgICAgICAgICAgICAg
ICAgICAgNS4zNDA2Ky0wLjg1ODggICAgIF4gICAgICAzLjU4MTIrLTAuNTM4OCAgICAgICAgXiBk
ZWZpbml0ZWx5IDEuNDkxM3ggZmFzdGVyCisgICAgICAgIHNwcmVhZC1nZW5lcmF0b3IuZXM2ICAg
ICAgMzIwLjkxMDcrLTEyLjQ4MDggICAgICAgICAzMTAuNDI5NSstMTIuMDA0NyAgICAgICAgIG1p
Z2h0IGJlIDEuMDMzOHggZmFzdGVyCisgICAgICAgIGdlbmVyYXRvci5lczYgICAgICAgICAgICAg
MzE4LjM1MTQrLTkuNjAyMyAgICAgXiAgICAyODYuNDk3NCstMTIuNjIwMyAgICAgICBeIGRlZmlu
aXRlbHkgMS4xMTEyeCBmYXN0ZXIKKworICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFt
ZS5jcHA6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dCBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6
OklubGluZUNhbGxGcmFtZTo6SW5saW5lQ2FsbEZyYW1lKToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAq
IGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
QXJndW1lbnRzVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjphcmd1bWVudHNJbnZv
bHZlU3RhY2tTbG90KToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0Q29kZVRvR2V0QXJndW1lbnRz
QXJyYXlMZW5ndGgpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldExvY2FsKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0QXJndW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpmaW5kQXJndW1lbnRQb3NpdGlvbkZvckxvY2FsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpnZXRBcmd1bWVudENvdW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aW5saW5pbmdDb3N0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVt
cHRUb0lubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tF
bnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNvbW1vbkRhdGE6OnZhbGlkYXRlUmVmZXJlbmNlcyk6Cisg
ICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6aXNMaXZlSW5CeXRlY29k
ZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmZvckFsbExvY2Fsc0xpdmVJbkJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSQXZhaWxh
YmlsaXR5QW5hbHlzaXNQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TG9jYWxPU1JBdmFp
bGFiaWxpdHlDYWxjdWxhdG9yOjpleGVjdXRlTm9kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRz
KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZHUHJl
Y2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENs
b2JiZXJpemVBZGFwdG9yOjpyZWFkVG9wKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0R2V0TGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVj
dEFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlN0YWNrTGF5b3V0UGhhc2U6OnJ1bik6CisgICAgICAgICogZnRsL0ZU
TENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0
bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzTGVuZ3RoKToKKyAgICAgICAgKiBmdGwvRlRMT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmpl
Y3RJbk9TUik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpyZWFkSW5saW5lZEZyYW1lKToKKyAgICAgICAgKiBqaXQv
QXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YXJndW1l
bnRzU3RhcnQpOgorICAgICAgICAqIGppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHA6CisgICAgICAg
IChKU0M6OmVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKToKKyAgICAgICAgKiBydW50aW1l
L0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6Y3Jl
YXRlV2l0aElubGluZUZyYW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
OgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6Om51bWJlck9mU3RhY2tQYWRkaW5nU2xv
dHMpOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RhY2tBbGlnbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6c3RhY2tBbGln
bm1lbnRCeXRlcyk6CisgICAgICAgIChKU0M6OnN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKToKKwog
MjAxNy0wOC0zMCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIxMzI3LgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcAppbmRleCA5N2NlODRkNjM1ODMw
MzIwOGNmMDYwZTNjNWM2YWJkMzZlNjI3ZjYxLi4yZmU1MWFmNjFiY2JlNWJjODY4ODA2NDZiMjE4
MDc1ZDRiNDE2NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5saW5lQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5saW5lQ2FsbEZyYW1lLmNwcApAQCAtNzQsNyArNzQsOCBAQCB2b2lkIElubGluZUNhbGxGcmFt
ZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkg
Y29ucwogICAgICAgICBvdXQucHJpbnQoIiwgY2xvc3VyZSBjYWxsIik7CiAgICAgZWxzZQogICAg
ICAgICBvdXQucHJpbnQoIiwga25vd24gY2FsbGVlOiAiLCBpbkNvbnRleHQoY2FsbGVlUmVjb3Zl
cnkuY29uc3RhbnQoKSwgY29udGV4dCkpOwotICAgIG91dC5wcmludCgiLCBudW1BcmdzK3RoaXMg
PSAiLCBhcmd1bWVudHMuc2l6ZSgpKTsKKyAgICBvdXQucHJpbnQoIiwgbnVtQXJncyt0aGlzID0g
IiwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIG91dC5wcmludCgiLCBudW1GaXh1
cCA9ICIsIGFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyk7CiAgICAgb3V0LnByaW50KCIsIHN0YWNrT2Zmc2V0ID0gIiwgc3RhY2tPZmZzZXQpOwog
ICAgIG91dC5wcmludCgiICgiLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgwKSwgIiBtYXBzIHRv
ICIsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKDApICsgc3RhY2tPZmZzZXQsICIpPiIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFt
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCmlu
ZGV4IGJlMWFmZGIxOTY3OWQ0N2EwYTBjYTVjYWVhY2Q1ZTI1MWU5YThjNTYuLjA4YzA0YjQwM2M2
YWM5NDkzOGU4YjQ3NWIxNDZkNmRmZmFkMmU4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKQEAgLTE3NSwxMSArMTc1LDEyIEBAIHN0
cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgICAgICByZXR1cm4gY2FsbGVyID8gY2FsbGVyLT5p
bmxpbmVDYWxsRnJhbWUgOiBudWxscHRyOwogICAgIH0KICAgICAKLSAgICBWZWN0b3I8VmFsdWVS
ZWNvdmVyeT4gYXJndW1lbnRzOyAvLyBJbmNsdWRlcyAndGhpcycuCisgICAgVmVjdG9yPFZhbHVl
UmVjb3Zlcnk+IGFyZ3VtZW50c1dpdGhGaXh1cDsgLy8gSW5jbHVkZXMgJ3RoaXMnIGFuZCBhcml0
eSBmaXh1cHMuCiAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gYmFzZWxpbmVDb2RlQmxvY2s7
CiAgICAgVmFsdWVSZWNvdmVyeSBjYWxsZWVSZWNvdmVyeTsKICAgICBDb2RlT3JpZ2luIGRpcmVj
dENhbGxlcjsKIAorICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyAvLyBE
byBub3QgaW5jbHVkZSBmaXh1cHMuCiAgICAgc2lnbmVkIHN0YWNrT2Zmc2V0IDogMjg7CiAgICAg
dW5zaWduZWQga2luZCA6IDM7IC8vIHJlYWwgdHlwZSBpcyBLaW5kCiAgICAgYm9vbCBpc0Nsb3N1
cmVDYWxsIDogMTsgLy8gSWYgZmFsc2UgdGhlbiB3ZSBrbm93IHRoYXQgY2FsbGVlL3Njb3BlIGFy
ZSBjb25zdGFudHMgYW5kIHRoZSBERkcgd29uJ3QgdHJlYXQgdGhlbSBhcyB2YXJpYWJsZXMsIGku
ZS4gdGhleSBoYXZlIHRvIGJlIHJlY292ZXJlZCBtYW51YWxseS4KQEAgLTE4OSw3ICsxOTAsOCBA
QCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICAvLyBJbmxpbmVDYWxsRnJhbWUncyBmaWVs
ZHMuIFRoaXMgY29uc3RydWN0b3IgaXMgaGVyZSBqdXN0IHRvIHJlZHVjZSBjb25mdXNpb24gaWYK
ICAgICAvLyB3ZSBmb3Jnb3QgdG8gaW5pdGlhbGl6ZSBleHBsaWNpdGx5LgogICAgIElubGluZUNh
bGxGcmFtZSgpCi0gICAgICAgIDogc3RhY2tPZmZzZXQoMCkKKyAgICAgICAgOiBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygwKQorICAgICAgICAsIHN0YWNrT2Zmc2V0KDApCiAgICAgICAgICwg
a2luZChDYWxsKQogICAgICAgICAsIGlzQ2xvc3VyZUNhbGwoZmFsc2UpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCmluZGV4IGZiNzM4ZTAyMGJhMGZjNWU5Y2VmZjgwYzBiNDA0YWVmNDU3ZTdiMTUu
LjJiNzg3ZjM0ZTkxYThhZTdjODU2NzhiMjJiYTA5NDJhYTZhNDA4YTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKQEAgLTE3NTgsNyArMTc1OCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXggPSBpbmRleC5hc1VJ
bnQzMigpICsgbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAgICAgICAgIGlm
IChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRJbmRleCA8
IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYXJndW1lbnRJbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkgPSBtX3N0
YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCiAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudEluZGV4ICsgMSkgKyBpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0
YW50cyh0cnVlKTsKQEAgLTE3NzcsNyArMTc3Nyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgYm91bmQgb24gdGhlIHR5cGVzIGV2ZW4gdGhvdWdo
IGl0J3MgcmFuZG9tIGFjY2Vzcy4gVGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcy4KICAgICAgICAgICAg
IAogICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSByZXN1bHQ7Ci0gICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxICsgbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsgaSA8IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxICsgbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsgaSA8IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewogICAgICAgICAg
ICAgICAgIHJlc3VsdC5tZXJnZSgKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJs
ZXMoKS5vcGVyYW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoaSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmNwcAppbmRleCBjM2NmODI5ZGVjZTJkNTI3MzkxMDk4MjZiZThjMWMxOTAyOThmMGIwLi5h
YTM5OGUwZTJjMjE1YzM1MTYxZGZhNGQwZGUzYmYyNmQwMmRiMzk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFz
ZS5jcHAKQEAgLTQ5MCw3ICs0OTAsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0Nsb2JiZXJlZEJ5
QmxvY2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOyArK2kpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Fs
bEZyYW1lOjphcmd1bWVudE9mZnNldChpKTsKQEAgLTcwMCw3ICs3MDAsNyBAQCBjbGFzcyBBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYWZlVG9HZXRTdGFjazsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2FmZVRvR2V0U3RhY2sgPSBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZVRv
R2V0U3RhY2sgPSBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2FmZVRvR2V0U3RhY2sgPQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2soKS0+bnVtUGFy
YW1ldGVycygpKSAtIDE7CkBAIC04MDUsNyArODA1LDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWlu
YXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChzcHJlYWQtPm9wKCkgPT0gUGhhbnRvbVNwcmVhZCAmJiBzcHJlYWQtPmNoaWxk
MSgpLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSBzcHJlYWQtPmNoaWxk
MSgpLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHNwcmVhZC0+Y2hpbGQx
KCktPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZnJhbWVBcmd1bWVudENvdW50ID49IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lQXJndW1lbnRDb3VudCAt
IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKQEAgLTgzNCw3ICs4MzQsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChzcHJlYWQtPm9wKCkgPT0gUGhhbnRvbVNwcmVhZCAmJiBzcHJlYWQtPmNoaWxk
MSgpLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gc3ByZWFkLT5j
aGlsZDEoKS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gc3ByZWFk
LT5jaGlsZDEoKS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmcmFtZUFyZ3VtZW50Q291bnQgPSBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbG9hZEluZGV4ID0gbnVtYmVyT2ZBcmd1
bWVudHNUb1NraXA7IGxvYWRJbmRleCA8IGZyYW1lQXJndW1lbnRDb3VudDsgKytsb2FkSW5kZXgp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmVnID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQobG9hZEluZGV4ICsgMSkgKyBpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFN0YWNrQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdGFja0FjY2Vzc0Rh
dGEuYWRkKHJlZywgRmx1c2hlZEpTVmFsdWUpOwpAQCAtODg3LDcgKzg4Nyw3IEBAIGNsYXNzIEFy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4gdmFyYXJnc0RhdGEtPm9mZnNldCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLT0g
dmFyYXJnc0RhdGEtPm9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCkBA
IC05MDksNyArOTA5LDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1
ZSA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb2FkSW5kZXggPSBzdG9yZUluZGV4ICsgdmFyYXJnc0RhdGEtPm9mZnNldDsKIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRJbmRleCArIDEgPCBpbmxpbmVD
YWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChsb2FkSW5kZXggKyAxIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChsb2Fk
SW5kZXggKyAxKSArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQ7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFw
aC5tX3N0YWNrQWNjZXNzRGF0YS5hZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlZywgRmx1c2hlZEpTVmFsdWUpOwpAQCAtMTAzMiw3ICsxMDMyLDcgQEAg
Y2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzcHJlYWQtPmNoaWxkMSgpLT5vcCgpID09
IFBoYW50b21DcmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBzcHJlYWQtPmNoaWxkMSgpLT5vcmlnaW4u
c2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IHNwcmVhZC0+Y2hpbGQxKCktPm51
bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1iZXJPZkFyZ3VtZW50c1RvU2tp
cDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBk
YXRhID0gbV9ncmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5hZGQoCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkgKyBpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZsdXNoZWRKU1ZhbHVlKTsKQEAgLTEwNjksNyArMTA2OSw3IEBAIGNsYXNzIEFy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBjYW5kaWRhdGUtPm9y
aWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPE5vZGUqPiBhcmd1bWVudHM7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIHZhcmFyZ3NEYXRh
LT5maXJzdFZhckFyZ09mZnNldDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MSArIHZhcmFyZ3NEYXRhLT5maXJzdFZhckFyZ09mZnNldDsgaSA8IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RhY2tBY2Nlc3NE
YXRhLmFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50KGkpICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsdXNoZWRKU1ZhbHVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcAppbmRl
eCAwNjFhMjg0Y2Y1ZDQ5N2M5NTk4N2U5ZjYzMDU2ZTVlOTc0M2Q2ZGQxLi5iMGY1MjkxMTkyNThj
YmRmNzM4YWJlZDM3NDQxZjJmMjYwMjE5ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCkBAIC00NSw3ICs0NSw4IEBAIGJv
b2wgYXJndW1lbnRzSW52b2x2ZVN0YWNrU2xvdChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSwgVmlydHVhbFJlZ2lzdGVyCiAgICAgICAgICYmIHJlZyA9PSBWaXJ0dWFsUmVnaXN0ZXIo
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICB1bnNpZ25lZCBudW1Bcmd1bWVu
dHMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxOworICAgIC8vIFdlIGRv
IG5vdCBpbmNsdWRlIGZpeHVwcyBoZXJlIHNpbmNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHxhcmd1
bWVudHN8LCByZXN0IHBhcmFtZXRlcnMsIGFuZCB2YXJhcmdzLgorICAgIHVuc2lnbmVkIG51bUFy
Z3VtZW50cyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAx
OwogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudFN0YXJ0ID0KICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpICsgQ2FsbEZyYW1lOjphcmd1bWVu
dE9mZnNldCgwKTsKICAgICByZXR1cm4gcmVnID49IGFyZ3VtZW50U3RhcnQgJiYgcmVnIDwgYXJn
dW1lbnRTdGFydCArIG51bUFyZ3VtZW50czsKQEAgLTc0LDcgKzc1LDcgQEAgTm9kZSogZW1pdENv
ZGVUb0dldEFyZ3VtZW50c0FycmF5TGVuZ3RoKAogICAgICAgICBudW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcCA9IGFyZ3VtZW50cy0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAKICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7Ci0g
ICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50c1NpemUgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
cy5zaXplKCkgLSAxOworICAgICAgICB1bnNpZ25lZCBhcmd1bWVudHNTaXplID0gaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIDE7CiAgICAgICAgIGlmIChhcmd1
bWVudHNTaXplID49IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKQogICAgICAgICAgICAgYXJndW1l
bnRzU2l6ZSAtPSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsKICAgICAgICAgZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBlOTdi
Mzg3M2IzN2JiNzcwMTM3OGNmZWVmYzhiODA4NTFhMWU3OTUwLi5kNGRmZWQ4ZDU3MjE2ZjY1NTA2
MDFkNzM0OGJhMWMwNzAzMmRjMDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNhbGxM
aW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
V2l0aEpJVFR5cGUuaCIKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJE
RkdBYnN0cmFjdEhlYXAuaCIKICNpbmNsdWRlICJERkdBcnJheU1vZGUuaCIKICNpbmNsdWRlICJE
RkdDRkcuaCIKQEAgLTYyLDYgKzYzLDcgQEAKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAtMjIwLDcgKzIyMiw3IEBA
IGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhDYWxs
VmFyaWFudCwgTm9kZSogY2FsbFRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bW50KTsK
ICAgICB2b2lkIGVtaXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICBOb2RlKiBnZXRBcmd1bWVudENvdW50KCk7
Ci0gICAgdW5zaWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIENhbGxNb2RlKTsgLy8gUmV0dXJuIFVJTlRfTUFYIGlmIGl0J3Mgbm90
IGFuIGlubGluaW5nIGNhbmRpZGF0ZS4gQnkgY29udmVudGlvbiwgaW50cmluc2ljcyBoYXZlIGEg
Y29zdCBvZiAxLgorICAgIHVuc2lnbmVkIGlubGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOyAvLyBSZXR1
cm4gVUlOVF9NQVggaWYgaXQncyBub3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50
aW9uLCBpbnRyaW5zaWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5n
LiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQg
YSBjYWxsLgogICAgIGJvb2wgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGlu
dCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNl
dCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50
c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVD
YWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIGVudW0gQ2Fs
bGVyTGlua2FiaWxpdHkgeyBDYWxsZXJEb2VzTm9ybWFsTGlua2luZywgQ2FsbGVyTGlua3NNYW51
YWxseSB9OwpAQCAtNDcwLDggKzQ3Miw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB9
CiAgICAgTm9kZSogc2V0TG9jYWwoY29uc3QgQ29kZU9yaWdpbiYgc2VtYW50aWNPcmlnaW4sIFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9y
bWFsU2V0KQogICAgIHsKLSAgICAgICAgQ29kZU9yaWdpbiBvbGRTZW1hbnRpY09yaWdpbiA9IG1f
Y3VycmVudFNlbWFudGljT3JpZ2luOwotICAgICAgICBtX2N1cnJlbnRTZW1hbnRpY09yaWdpbiA9
IHNlbWFudGljT3JpZ2luOworICAgICAgICBTZXRGb3JTY29wZTxDb2RlT3JpZ2luPiBvcmlnaW5D
aGFuZ2UobV9jdXJyZW50U2VtYW50aWNPcmlnaW4sIHNlbWFudGljT3JpZ2luKTsKIAogICAgICAg
ICB1bnNpZ25lZCBsb2NhbCA9IG9wZXJhbmQudG9Mb2NhbCgpOwogICAgICAgICAKQEAgLTQ5MCw4
ICs0OTEsNiBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKHNlbWFudGljT3JpZ2luLmJ5dGVjb2Rl
SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICBOb2RlKiBub2RlID0gYWRkVG9HcmFw
aChTZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIHZhbHVlKTsKICAgICAgICAg
bV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5sb2NhbChsb2NhbCkgPSBub2RlOwotCi0g
ICAgICAgIG1fY3VycmVudFNlbWFudGljT3JpZ2luID0gb2xkU2VtYW50aWNPcmlnaW47CiAgICAg
ICAgIHJldHVybiBub2RlOwogICAgIH0KIApAQCAtNTI1LDggKzUyNCw3IEBAIGNsYXNzIEJ5dGVD
b2RlUGFyc2VyIHsKICAgICB9CiAgICAgTm9kZSogc2V0QXJndW1lbnQoY29uc3QgQ29kZU9yaWdp
biYgc2VtYW50aWNPcmlnaW4sIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwg
U2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQogICAgIHsKLSAgICAgICAgQ29kZU9yaWdpbiBv
bGRTZW1hbnRpY09yaWdpbiA9IG1fY3VycmVudFNlbWFudGljT3JpZ2luOwotICAgICAgICBtX2N1
cnJlbnRTZW1hbnRpY09yaWdpbiA9IHNlbWFudGljT3JpZ2luOworICAgICAgICBTZXRGb3JTY29w
ZTxDb2RlT3JpZ2luPiBvcmlnaW5DaGFuZ2UobV9jdXJyZW50U2VtYW50aWNPcmlnaW4sIHNlbWFu
dGljT3JpZ2luKTsKIAogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudCA9IG9wZXJhbmQudG9Bcmd1
bWVudCgpOwogICAgICAgICBBU1NFUlQoYXJndW1lbnQgPCBtX251bUFyZ3VtZW50cyk7CkBAIC01
NDksOCArNTQ3LDYgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShzZW1hbnRpY09yaWdpbi5ieXRl
Y29kZUluZGV4LCBCYWRJbmRleGluZ1R5cGUpKTsKICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRv
R3JhcGgoU2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCB2YWx1ZSk7CiAgICAg
ICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpID0g
bm9kZTsKLQotICAgICAgICBtX2N1cnJlbnRTZW1hbnRpY09yaWdpbiA9IG9sZFNlbWFudGljT3Jp
Z2luOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAgICAgCkBAIC01NzIsNyArNTY4LDcg
QEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA+PSBzdGF0aWNfY2Fz
dDxpbnQ+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1
bWVudE9mZnNldCgpICsgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSkKKyAgICAg
ICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpID49IHN0YXRpY19jYXN0PGludD4oaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKyBp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gVmlydHVhbFJlZ2lzdGVy
KG9wZXJhbmQub2Zmc2V0KCkgLSBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0FyZ3Vt
ZW50KCk7CiAgICAgICAgICAgICByZXR1cm4gc3RhY2stPm1fYXJndW1lbnRQb3NpdGlvbnNbYXJn
dW1lbnRdOwpAQCAtNjMyLDcgKzYyOCw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAg
ICAgaW50IG51bUFyZ3VtZW50czsKICAgICAgICAgaWYgKElubGluZUNhbGxGcmFtZSogaW5saW5l
Q2FsbEZyYW1lID0gaW5saW5lU3RhY2tFbnRyeS0+bV9pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghbV9oYXNEZWJ1Z2dlckVuYWJsZWQpOwotICAgICAgICAgICAgbnVtQXJn
dW1lbnRzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOworICAgICAgICAgICAg
bnVtQXJndW1lbnRzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgp
OwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKICAgICAg
ICAgICAgICAgICBmbHVzaERpcmVjdChpbmxpbmVTdGFja0VudHJ5LT5yZW1hcE9wZXJhbmQoVmly
dHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpKTsKICAgICAgICAgICAgIGlmIChp
bmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQpAQCAtMTQxOCw3ICsxNDE0LDcgQEAgTm9kZSog
Qnl0ZUNvZGVQYXJzZXI6OmdldEFyZ3VtZW50Q291bnQoKQogICAgICAgICBpZiAobV9pbmxpbmVT
dGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQogICAgICAgICAgICAgYXJn
dW1lbnRDb3VudCA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcmd1bWVudENvdW50ID0ganNDb25z
dGFudChtX2dyYXBoLmZyZWV6ZShqc051bWJlcihtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFyZ3Vt
ZW50Q291bnQgPSBqc0NvbnN0YW50KG1fZ3JhcGguZnJlZXplKGpzTnVtYmVyKG1faW5saW5lU3Rh
Y2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpLT52
YWx1ZSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgYXJndW1lbnRDb3VudCA9IGFkZFRvR3JhcGgo
R2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE9wSW5mbygwKSwgT3BJbmZvKFNwZWNJbnQz
Mk9ubHkpKTsKICAgICByZXR1cm4gYXJndW1lbnRDb3VudDsKQEAgLTE0MzAsOSArMTQyNiwxMCBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJP
ZmZzZXQsIGludCBhcmd1bWVudENvdW50SQogICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdl
dCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIH0KIAot
dW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ2FsbE1vZGUgY2FsbE1vZGUpCit1bnNp
Z25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50
LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCkKIHsKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQgPSBzcGVjaWFsaXphdGlvbktpbmRGb3IoY2FsbE1vZGUpOworICAgIENhbGxNb2Rl
IGNhbGxNb2RlID0gSW5saW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZvcihraW5kKTsKKyAgICBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IHNwZWNpYWxpemF0aW9uS2lu
ZEZvcihjYWxsTW9kZSk7CiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNvbnNp
ZGVyaW5nIGlubGluaW5nICIsIGNhbGxlZSwgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCks
ICJcbiIpOwogICAgIApAQCAtMTQ1NiwzMCArMTQ1MywyMSBAQCB1bnNpZ25lZCBCeXRlQ29kZVBh
cnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdQogICAgIC8vIHRvIGlubGluZSBpdCBpZiB3ZSBoYWQgYSBzdGF0aWMgcHJvb2Ygb2Ygd2hh
dCB3YXMgYmVpbmcgY2FsbGVkOyB0aGlzIG1pZ2h0IGhhcHBlbiBmb3IgZXhhbXBsZQogICAgIC8v
IGlmIHlvdSBjYWxsIGEgZ2xvYmFsIGZ1bmN0aW9uLCB3aGVyZSB3YXRjaHBvaW50aW5nIGdpdmVz
IHVzIHN0YXRpYyBpbmZvcm1hdGlvbi4gT3ZlcmFsbCwKICAgICAvLyBpdCdzIGEgcmFyZSBjYXNl
IGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgYW55IGhvdCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFk
eSBiZWVuIGNvbXBpbGVkLgotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+
YmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjdXRhYmxlLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOwogICAg
IGlmICghY29kZUJsb2NrKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0
YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBubyBjb2RlIGJsb2NrIGF2YWlsYWJsZS5cbiIpOwog
ICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogCi0gICAgLy8gRG9lcyB0aGUgbnVtYmVy
IG9mIGFyZ3VtZW50cyB3ZSdyZSBwYXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0
PyBXZSBjdXJyZW50bHkKLSAgICAvLyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3Vt
ZW50cyBwYXNzZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKLSAgICAv
LyBhcmd1bWVudHMgZXhwZWN0ZWQuCi0gICAgaWYgKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
ID4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCi0g
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNo
LlxuIik7Ci0gICAgICAgIHJldHVybiBVSU5UX01BWDsKLSAgICB9Ci0KICAgICBDYXBhYmlsaXR5
TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwo
Ci0gICAgICAgIGNvZGVCbG9jaywga2luZCwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CisgICAg
ICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgp
KTsKICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCIgICAgQ2FsbCBtb2RlOiAi
LCBjYWxsTW9kZSwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICBJcyBjbG9zdXJlIGNhbGw6
ICIsIGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCksICJcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICAg
Q2FwYWJpbGl0eSBsZXZlbDogIiwgY2FwYWJpbGl0eUxldmVsLCAiXG4iKTsKLSAgICAgICAgZGF0
YUxvZygiICAgIE1pZ2h0IGlubGluZSBmdW5jdGlvbjogIiwgbWlnaHRJbmxpbmVGdW5jdGlvbkZv
cihjb2RlQmxvY2ssIGtpbmQpLCAiXG4iKTsKLSAgICAgICAgZGF0YUxvZygiICAgIE1pZ2h0IGNv
bXBpbGUgZnVuY3Rpb246ICIsIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yKGNvZGVCbG9jaywga2lu
ZCksICJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgTWlnaHQgaW5saW5lIGZ1bmN0aW9uOiAi
LCBtaWdodElubGluZUZ1bmN0aW9uRm9yKGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kKSwg
IlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICBNaWdodCBjb21waWxlIGZ1bmN0aW9uOiAiLCBt
aWdodENvbXBpbGVGdW5jdGlvbkZvcihjb2RlQmxvY2ssIHNwZWNpYWxpemF0aW9uS2luZCksICJc
biIpOwogICAgICAgICBkYXRhTG9nKCIgICAgSXMgc3VwcG9ydGVkIGZvciBpbmxpbmluZzogIiwg
aXNTdXBwb3J0ZWRGb3JJbmxpbmluZyhjb2RlQmxvY2spLCAiXG4iKTsKICAgICAgICAgZGF0YUxv
ZygiICAgIElzIGlubGluaW5nIGNhbmRpZGF0ZTogIiwgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4
ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgpLCAiXG4iKTsKICAgICB9CkBAIC0xNTQ1
LDE0ICsxNTMzLDIxIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiB7CiAgICAgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNp
YWxpemF0aW9uS2luZEZvcihraW5kKTsKICAgICAKLSAgICBBU1NFUlQoaW5saW5pbmdDb3N0KGNh
bGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6Y2FsbE1v
ZGVGb3Ioa2luZCkpICE9IFVJTlRfTUFYKTsKKyAgICBBU1NFUlQoaW5saW5pbmdDb3N0KGNhbGxl
ZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtpbmQpICE9IFVJTlRfTUFYKTsKICAgICAK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUoKS0+
YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBpbnNlcnRDaGVj
a3MoY29kZUJsb2NrKTsKIAogICAgIC8vIEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFudHMhCisK
KyAgICBpbnQgYXJpdHlGaXh1cENvdW50ID0gc3RkOjptYXg8aW50Pihjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCAwKTsKKyAgICBpbnQgbnVt
YmVyT2ZTdGFja1BhZGRpbmdTbG90cyA9IENvbW1vblNsb3dQYXRoczo6bnVtYmVyT2ZTdGFja1Bh
ZGRpbmdTbG90cyhjb2RlQmxvY2ssIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICBp
bnQgZXh0cmFTbG90cyA9IG51bWJlck9mU3RhY2tQYWRkaW5nU2xvdHMgJSBzdGFja0FsaWdubWVu
dFJlZ2lzdGVycygpOworICAgIGludCByZWdpc3Rlck9mZnNldEFmdGVyRml4dXAgPSByZWdpc3Rl
ck9mZnNldDsKKyAgICBpZiAoZXh0cmFTbG90cyAhPSBudW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3Rz
KQorICAgICAgICByZWdpc3Rlck9mZnNldEFmdGVyRml4dXAgPSByZWdpc3Rlck9mZnNldCAtIChu
dW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3RzIC0gZXh0cmFTbG90cyk7CiAgICAgCi0gICAgaW50IGlu
bGluZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1
YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCkpLm9mZnNldCgpICsgQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnM7CisgICAgaW50IGlubGluZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVT
dGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldEFmdGVy
Rml4dXApKS5vZmZzZXQoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwogICAg
IAogICAgIGVuc3VyZUxvY2FscygKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxG
cmFtZVN0YXJ0KS50b0xvY2FsKCkgKyAxICsKQEAgLTE1NjcsMTIgKzE1NjIsMzEgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3Vs
dE9wZXJhbmQsIENhbGxWYXIKICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlhYmxl
ID0gbnVsbHB0cjsKICAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgewogICAgICAgICBO
b2RlKiBjYWxsZWVTZXQgPSBzZXQoCi0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0
ZXJPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRp
YXRlTmFrZWRTZXQpOworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0
QWZ0ZXJGaXh1cCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIGNhbGxUYXJnZXROb2RlLCBJbW1l
ZGlhdGVOYWtlZFNldCk7CiAgICAgICAgIAogICAgICAgICBjYWxsZWVWYXJpYWJsZSA9IGNhbGxl
ZVNldC0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIGNhbGxlZVZhcmlhYmxlLT5tZXJn
ZVNob3VsZE5ldmVyVW5ib3godHJ1ZSk7CiAgICAgfQogICAgIAorICAgIGlmIChhcml0eUZpeHVw
Q291bnQpIHsKKyAgICAgICAgTm9kZSogdW5kZWZpbmVkID0gYWRkVG9HcmFwaChKU0NvbnN0YW50
LCBPcEluZm8obV9jb25zdGFudFVuZGVmaW5lZCkpOworICAgICAgICBhdXRvIGZpbGwgPSBbJl0g
KFZpcnR1YWxSZWdpc3RlciByZWcsIE5vZGUqIHZhbHVlKSB7CisgICAgICAgICAgICBOb2RlKiBy
ZXN1bHQgPSBzZXQocmVnLCB2YWx1ZSwgSW1tZWRpYXRlTmFrZWRTZXQpOworICAgICAgICAgICAg
cmVzdWx0LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+bWVyZ2VTaG91bGROZXZlclVuYm94KHRydWUp
OyAvLyBXZSBjYW5ub3QgZXhpdCBhZnRlciBzdGFydGluZyBhcml0eSBmaXh1cC4KKyAgICAgICAg
fTsKKworICAgICAgICAvLyBGaWxsIGV4dHJhIHNsb3RzIHdoaWNoIHdlIGFscmVhZHkgaGF2ZSBm
b3Igc3RhY2sgYWxpZ25tZW50LiBJZiB3ZSBhcmUgbHVja3ksIHdlIGRvIG5vdCBuZWVkIHRvIG1v
dmUgc3RhY2sgZnJhbWUuCisgICAgICAgIGlmIChleHRyYVNsb3RzID09IG51bWJlck9mU3RhY2tQ
YWRkaW5nU2xvdHMpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBl
eHRyYVNsb3RzOyArK2luZGV4KQorICAgICAgICAgICAgICAgIGZpbGwodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBpbmRleCwgcmVnaXN0ZXJP
ZmZzZXQpLCB1bmRlZmluZWQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChp
bnQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2luZGV4
KQorICAgICAgICAgICAgICAgIGZpbGwodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaW5kZXgs
IHJlZ2lzdGVyT2Zmc2V0QWZ0ZXJGaXh1cCksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dChpbmRleCwgcmVnaXN0ZXJPZmZzZXQpKSk7CisgICAgICAgICAgICBmb3IgKGludCBpbmRleCA9
IDA7IGluZGV4IDwgYXJpdHlGaXh1cENvdW50OyArK2luZGV4KQorICAgICAgICAgICAgICAgIGZp
bGwodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
KyBpbmRleCwgcmVnaXN0ZXJPZmZzZXRBZnRlckZpeHVwKSwgdW5kZWZpbmVkKTsKKyAgICAgICAg
fQorICAgIH0KKwogICAgIElubGluZVN0YWNrRW50cnkgaW5saW5lU3RhY2tFbnRyeSgKICAgICAg
ICAgdGhpcywgY29kZUJsb2NrLCBjb2RlQmxvY2ssIG1fZ3JhcGgubGFzdEJsb2NrKCksIGNhbGxl
ZS5mdW5jdGlvbigpLCByZXN1bHRSZWcsCiAgICAgICAgIChWaXJ0dWFsUmVnaXN0ZXIpaW5saW5l
Q2FsbEZyYW1lU3RhcnQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBraW5kKTsKQEAgLTE3
NzEsNyArMTc4NSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwo
Tm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kCiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nvc3QgPSBpbmxpbmluZ0Nvc3QoY2FsbGVl
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZv
cihraW5kKSk7CisgICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nvc3QgPSBpbmxpbmluZ0Nvc3QoY2Fs
bGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywga2luZCk7CiAgICAgaWYgKG15SW5saW5p
bmdDb3N0ID4gaW5saW5pbmdCYWxhbmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQz
NDgsNyArNDM2Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHRo
aXMtPmlubGluZUNhbGxGcmFtZSgpOwogICAgICAgICAgICAgTm9kZSogbGVuZ3RoOwogICAgICAg
ICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3Mo
KSkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50c0xlbmd0aCA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgdW5zaWduZWQg
YXJndW1lbnRzTGVuZ3RoID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyAtIDE7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtUGFyYW1zVG9Ta2lwID0gY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKICAgICAgICAgICAgICAgICBKU1Zh
bHVlIHJlc3RMZW5ndGg7CiAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c0xlbmd0aCA8PSBu
dW1QYXJhbXNUb1NraXApCkBAIC01OTE5LDggKzU5MzMsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTm9kZSogYXJndW1lbnQ7
CiAgICAgICAgICAgICBpbnQzMl90IGFyZ3VtZW50SW5kZXhJbmNsdWRpbmdUaGlzID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKLSAgICAgICAgICAgICAgICBp
bnQzMl90IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHMuc2l6ZSgpOwotICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudEluZGV4SW5jbHVkaW5n
VGhpcyA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQorICAgICAgICAgICAgICAgIGludDMy
X3QgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXAgPSBpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCk7CisgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50
SW5kZXhJbmNsdWRpbmdUaGlzIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXAp
CiAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGFyZ3VtZW50SW5kZXhJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCA9IGFkZFRvR3JhcGgoSlNDb25zdGFudCwg
T3BJbmZvKG1fY29uc3RhbnRVbmRlZmluZWQpKTsKQEAgLTYyMDYsOCArNjIyMCw5IEBAIEJ5dGVD
b2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICB9
CiAgICAgfQogICAgIAotICAgIG1fYXJndW1lbnRQb3NpdGlvbnMucmVzaXplKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzOyArK2kpIHsKKyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNX
aXRoRml4dXAgPSBzdGQ6Om1heDxpbnQ+KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisgICAgbV9hcmd1bWVudFBvc2l0aW9ucy5yZXNpemUo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXApOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXA7ICsraSkgewogICAgICAg
ICBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zLmFwcGVuZChBcmd1
bWVudFBvc2l0aW9uKCkpOwogICAgICAgICBBcmd1bWVudFBvc2l0aW9uKiBhcmd1bWVudFBvc2l0
aW9uID0gJmJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMubGFzdCgp
OwogICAgICAgICBtX2FyZ3VtZW50UG9zaXRpb25zW2ldID0gYXJndW1lbnRQb3NpdGlvbjsKQEAg
LTYyMjUsMTMgKzYyNDAsMTQgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6Oklu
bGluZVN0YWNrRW50cnkoCiAgICAgICAgIC8vIHBsYW4gZmluaXNoZXMuCiAgICAgICAgIG1faW5s
aW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGNv
ZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCkpOwogICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+
c2V0U3RhY2tPZmZzZXQoaW5saW5lQ2FsbEZyYW1lU3RhcnQub2Zmc2V0KCkgLSBDYWxsRnJhbWU6
OmhlYWRlclNpemVJblJlZ2lzdGVycyk7CisgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogICAg
ICAgICBpZiAoY2FsbGVlKSB7CiAgICAgICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+Y2FsbGVl
UmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFudChjYWxsZWUpOwogICAgICAgICAgICAg
bV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwgPSBmYWxzZTsKICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCA9IHRydWU7CiAg
ICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXIgPSBieXRlQ29kZVBhcnNlci0+
Y3VycmVudENvZGVPcmlnaW4oKTsKLSAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
cy5yZXNpemVUb0ZpdChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7IC8vIFNldCB0aGUgbnVt
YmVyIG9mIGFyZ3VtZW50cyBpbmNsdWRpbmcgdGhpcywgYnV0IGRvbid0IGNvbmZpZ3VyZSB0aGUg
dmFsdWUgcmVjb3ZlcmllcywgeWV0LgorICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzV2l0aEZpeHVwLnJlc2l6ZVRvRml0KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZp
eHVwKTsgLy8gU2V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGluY2x1ZGluZyB0aGlzLCBidXQg
ZG9uJ3QgY29uZmlndXJlIHRoZSB2YWx1ZSByZWNvdmVyaWVzLCB5ZXQuCiAgICAgICAgIG1faW5s
aW5lQ2FsbEZyYW1lLT5raW5kID0ga2luZDsKICAgICAgICAgCiAgICAgICAgIG1faWRlbnRpZmll
clJlbWFwLnJlc2l6ZShjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAppbmRleCA5NjE0NzVjYmQzYzc0
MTIyNjdmOGMwNzlhYjNmY2I5MGVkMzI5YmNiLi44NzA3Nzg4OGUwZGYwOWNiOTRmMmUwOTMyMWQ1
YjhkNTllNWE2YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0
YS5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIENvbW1vbkRhdGE6OnZhbGlkYXRlUmVmZXJl
bmNlcyhjb25zdCBUcmFja2VkUmVmZXJlbmNlcyYgdHJhY2tlZFJlZmVyZW5jZXMpCiB7CiAgICAg
aWYgKElubGluZUNhbGxGcmFtZVNldCogc2V0ID0gaW5saW5lQ2FsbEZyYW1lcy5nZXQoKSkgewog
ICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lIDogKnNldCkgewot
ICAgICAgICAgICAgZm9yIChWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA6IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzKSB7CisgICAgICAgICAgICBmb3IgKFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5
IDogaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXApIHsKICAgICAgICAgICAgICAg
ICBpZiAocmVjb3ZlcnkuaXNDb25zdGFudCgpKQogICAgICAgICAgICAgICAgICAgICB0cmFja2Vk
UmVmZXJlbmNlcy5jaGVjayhyZWNvdmVyeS5jb25zdGFudCgpKTsKICAgICAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAKaW5kZXggMDhjOTIyN2NkN2U1ODBmOWFmNTM4NmRlYjQyMDNmNzBhYzlhMmYxYi4uMTll
OThlODQ2OTRkZjNkNWU4NjgyM2M4NDIwMWE1OTYyNThiMDBmZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTM1
Nyw3ICszNTcsNyBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgICAgICAgICAgLy8gR2V0TXlBcmd1bWVudEJ5VmFsIGluIHN1Y2ggc3RhdGljYWxs
eS1vdXQtb2YtYm91bmRzIGFjY2Vzc2VzOyB3ZSBqdXN0IGxvc2UgQ0ZBIHVubGVzcwogICAgICAg
ICAgICAgICAgIC8vIEdDU0UgcmVtb3ZlcyB0aGUgYWNjZXNzIGVudGlyZWx5LgogICAgICAgICAg
ICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlu
ZGV4ID49IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpCisgICAgICAgICAg
ICAgICAgICAgIGlmIChpbmRleCA+PSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzIC0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBtX3N0YXRl
LnZhcmlhYmxlcygpLm51bWJlck9mQXJndW1lbnRzKCkgLSAxKQpAQCAtMzc4LDcgKzM3OCw3IEBA
IGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGluZGV4ICsgMSksIEZsdXNo
ZWRKU1ZhbHVlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFy
Z3MoKSAmJiBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpIHsK
KyAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUt
PmlzVmFyYXJncygpICYmIGluZGV4IDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvR2V0
U3RhY2soZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKaW5kZXggMWQ0OGY4Y2IwZWFhNTg3NjRkZTM0NWIwYzQ2ZGU4MjhiYzcyZDg1Yy4uMzVkNmY0
Yzc1MDA1ZjE5NDZlYjM0MTM5ZDA4ZTVhYTdmZDk2NmE5NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKQEAgLTExNTcsNyArMTE1Nyw3IEBAIGJvb2wgR3JhcGg6OmlzTGl2
ZUluQnl0ZWNvZGUoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIENvZGVPcmlnaW4gY29kZU9yaWdp
bikKICAgICAgICAgLy8gQXJndW1lbnRzIGFyZSBhbHdheXMgbGl2ZS4gVGhpcyB3b3VsZCBiZSBy
ZWR1bmRhbnQgaWYgaXQgd2Fzbid0IGZvciBvdXIKICAgICAgICAgLy8gb3BfY2FsbF92YXJhcmdz
IGlubGluaW5nLgogICAgICAgICBpZiAocmVnLmlzQXJndW1lbnQoKQotICAgICAgICAgICAgJiYg
c3RhdGljX2Nhc3Q8c2l6ZV90PihyZWcudG9Bcmd1bWVudCgpKSA8IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzLnNpemUoKSkgeworICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihy
ZWcudG9Bcmd1bWVudCgpKSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNp
emUoKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiQXJndW1lbnQgaXMgbGl2ZS5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggMzM0ZWE5N2ZlNWViYjc3M2QzZWRlNzAz
Njg5ZWIwNzFiOGMxNmZiMS4uNjYzMDgxNTFkZGM1MDdkNDU3MzM5Y2I1YmRmMGU3MzA4ZmQ1Nzdk
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtODM5LDcgKzgzOSw3IEBA
IGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICAgICAgICAgIC8v
IEFyZ3VtZW50cyBhcmUgYWx3YXlzIGxpdmUuIFRoaXMgd291bGQgYmUgcmVkdW5kYW50IGlmIGl0
IHdhc24ndCBmb3Igb3VyCiAgICAgICAgICAgICAvLyBvcF9jYWxsX3ZhcmFyZ3MgaW5saW5pbmcu
IFNlZSB0aGUgY29tbWVudCBhYm92ZS4KICAgICAgICAgICAgIGV4Y2x1c2lvblN0YXJ0ID0gc3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKTsKLSAg
ICAgICAgICAgIGV4Y2x1c2lvbkVuZCA9IHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVu
dE9mZnNldEluY2x1ZGluZ1RoaXMoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKTsK
KyAgICAgICAgICAgIGV4Y2x1c2lvbkVuZCA9IHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1
bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4
dXAuc2l6ZSgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gV2Ugd2lsbCBhbHdheXMg
aGF2ZSBhICJ0aGlzIiBhcmd1bWVudCBhbmQgZXhjbHVzaW9uU3RhcnQgc2hvdWxkIGJlIGEgc21h
bGxlciBzdGFjawogICAgICAgICAgICAgLy8gb2Zmc2V0IHRoYW4gZXhjbHVzaW9uRW5kLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFs
eXNpc1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmls
aXR5QW5hbHlzaXNQaGFzZS5jcHAKaW5kZXggZThiNDVjNDVhNjJmYzQ0OWMyMTljYTRkYWVlNGNl
MWU2ZGRmY2I4NS4uM2NkYTY4NzJlNGM3ODQ5MGJjZDA3ZDU5ZDdmOWI5ZWQ5ODA1YzUxNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFs
eXNpc1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWls
YWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBMb2NhbE9T
UkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6OmV4ZWN1dGVOb2RlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBtX2F2YWlsYWJpbGl0eS5tX2hlYXAuc2V0KFByb21vdGVkSGVhcExvY2F0aW9uKEFyZ3Vt
ZW50c0NhbGxlZVBMb2MsIG5vZGUpLCBjYWxsZWUpOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7ICsraSkgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOyArK2kpIHsKICAgICAgICAgICAgIEF2YWls
YWJpbGl0eSBhcmd1bWVudCA9IG1fYXZhaWxhYmlsaXR5Lm1fbG9jYWxzLm9wZXJhbmQoCiAgICAg
ICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6YXJn
dW1lbnRPZmZzZXQoaSkpOwogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0LmNwcAppbmRleCBiZDc4NTdmOWZlNzFlMWRlMGNjNzQ3NmM4ODMzNWU4NWIzMjlm
MGQ2Li4zYjczYTEyYzEwOWQ4M2Y5ODA1Njk1OGYyYTU5NWE1YThkNjI0Mjk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IE9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBP
cGVyYW5kczxWYWx1ZVJlY292ZQogICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGppdC5tb3ZlKAotICAgICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKSksCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksCiAgICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRleCA2Yjk0OTAy
MDczZGFkNGQ2OTE3NjVmNDNhZDZlYjE3NGNhZjI2Yzg5Li4yMTUxMTcyYjJiNWVmMjIwOTM0ODQ2
MWE4OTBlZDQxOTllZDZmMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9p
ZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0
QmFzZSYgZXhpdCkKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QyKTsKIAogICAgICAgICBpZiAo
IWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICBqaXQuc3RvcmUzMihB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5z
aXplKCkpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQp
KSk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwgQXNzZW1ibHlI
ZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwogI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIGppdC5zdG9yZTY0KGNhbGxlckZyYW1lR1BSLCBBc3NlbWJseUhlbHBl
cnM6OmFkZHJlc3NGb3JCeXRlT2Zmc2V0KGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyRnJhbWVPZmZz
ZXQoKSkpOwogICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGNv
ZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgpLmJpdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKaW5kZXggNWYwYWRjNmU1
M2NlYzYyZDE5ODYwZTQwMTA1YzY0ZTQ1NzllOWE5MC4uMTZmZTI2ZjZjYTZiNDNjZTZlMzQ2ZTQy
ZjNmZjBhNDBiMDM4YTllYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFzcyBQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvciB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAxICsgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1i
ZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZp
eHVwLnNpemUoKTsgaSsrKQogICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIo
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KGkpLm9mZnNldCgpKSk7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFy
Z3MoKSkKICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CkBAIC0y
MTksNyArMjE5LDcgQEAgY2xhc3MgUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3IgewogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlubGluZUNhbGxG
cmFtZS0+aXNWYXJhcmdzKCksICJHZXRBcmd1bWVudCBpcyBvbmx5IHVzZWQgZm9yIElubGluZUNh
bGxGcmFtZSBpZiB0aGUgY2FsbCBmcmFtZSBpcyB2YXJhcmdzLiIpOwotICAgICAgICAgICAgaWYg
KGluZGV4SW5jbHVkaW5nVGhpcyA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkK
KyAgICAgICAgICAgIGlmIChpbmRleEluY2x1ZGluZ1RoaXMgPCBpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50c1dpdGhGaXh1cC5zaXplKCkpCiAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxS
ZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoaW5kZXhJbmNsdWRpbmdUaGlzKS5vZmZzZXQoKSkpOwogICAgICAgICAgICAgbV9y
ZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzksNyAr
MjM5LDcgQEAgY2xhc3MgUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3IgewogICAgICAgICAg
ICAgLy8gUmVhZCBhbGwgb2YgdGhlIGlubGluZSBhcmd1bWVudHMgYW5kIGNhbGwgZnJhbWUgaGVh
ZGVycyB0aGF0IHdlIGRpZG4ndCBhbHJlYWR5IGNhcHR1cmUuCiAgICAgICAgICAgICBmb3IgKElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMu
aW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZSA9IGlubGlu
ZUNhbGxGcmFtZS0+Z2V0Q2FsbGVySW5saW5lRnJhbWVTa2lwcGluZ1RhaWxDYWxscygpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzU3RyaWN0TW9kZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzLnNpemUoKTsgaS0tID4gMTspCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgaS0tID4g
MTspCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5v
ZmZzZXQoKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBmODM2MGI5ZmRiOTAxYmFjMjE0OWI5NDMyYjBl
ZTcyZWVjMGFkOTk2Li42NzgwZDBmM2FkN2IzYmQ4MGY0YzUzOWE2N2I4ZjFlMjE4ZDAwNDNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09i
amVjdChHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0R2V0TGVuZ3RoKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBH
UFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVUaGlzKQogewogICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtICFpbmNs
dWRlVGhpcyksIGxlbmd0aEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAhaW5jbHVkZVRoaXMp
LCBsZW5ndGhHUFIpOwogICAgIGVsc2UgewogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1l
bnRDb3VudFJlZ2lzdGVyID0gbV9qaXQuYXJndW1lbnRDb3VudChpbmxpbmVDYWxsRnJhbWUpOwog
ICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoYXJndW1lbnRDb3Vu
dFJlZ2lzdGVyKSwgbGVuZ3RoR1BSKTsKQEAgLTY3OTcsNyArNjc5Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICBi
b29sIGxlbmd0aElzS25vd247IC8vIGlmIGZhbHNlLCBsZW5ndGhHUFIgd2lsbCBoYXZlIHRoZSBs
ZW5ndGguCiAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUKICAg
ICAgICAgJiYgIW5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJn
cygpKSB7Ci0gICAgICAgIGtub3duTGVuZ3RoID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgIGtub3duTGVuZ3RoID0g
bm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgLSAxOwogICAgICAgICBsZW5ndGhJc0tub3duID0gdHJ1ZTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBrbm93bkxlbmd0aCA9IFVJTlRfTUFYOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKaW5kZXggMDNjNTAyZmM4ODBkY2Jh
ODIzYzdlMWE0ZGM5ZDg5ZWEyNjc0ZDZkZC4uYTA0NjcxYjQ2MTEyZWIyZDEyMThjMzFlNzhmZDE3
Y2UyYjYyNGM1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFj
a0xheW91dFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNr
TGF5b3V0UGhhc2UuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgY2xhc3MgU3RhY2tMYXlvdXRQaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgIENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFy
Z3VtZW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOyBhcmd1bWVudC0tID4g
MTspIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgewogICAgICAg
ICAgICAgICAgIHVzZWRMb2NhbHMuc2V0KFZpcnR1YWxSZWdpc3RlcigKICAgICAgICAgICAgICAg
ICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpLm9mZnNldCgpICsKICAg
ICAgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgp
KTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBjbGFzcyBTdGFja0xheW91dFBoYXNlIDogcHVibGljIFBo
YXNlIHsKICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbiwgVmlydHVhbFJlZ2lzdGVyKGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGFyZ3VtZW50
LS0gPiAxOykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgYXJndW1lbnQtLSA+IDE7KSB7CiAg
ICAgICAgICAgICAgICAgQXJndW1lbnRQb3NpdGlvbiYgcG9zaXRpb24gPSBtX2dyYXBoLm1fYXJn
dW1lbnRQb3NpdGlvbnNbCiAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXJndW1lbnRQb3NpdGlv
blN0YXJ0ICsgYXJndW1lbnRdOwogICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
dmFyaWFibGUgPSBwb3NpdGlvbi5zb21lVmFyaWFibGUoKTsKQEAgLTE5OCw3ICsxOTgsNyBAQCBj
bGFzcyBTdGFja0xheW91dFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAg
ICAgc291cmNlID0gVmFsdWVTb3VyY2U6OmZvckZsdXNoRm9ybWF0KAogICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGUtPm1hY2hpbmVMb2NhbCgpLCB2YXJpYWJsZS0+Zmx1c2hGb3JtYXQo
KSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzW2FyZ3VtZW50XSA9IHNvdXJjZS52YWx1ZVJlY292ZXJ5KCk7CisgICAgICAgICAg
ICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXBbYXJndW1lbnRdID0gc291
cmNlLnZhbHVlUmVjb3ZlcnkoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsID09ICEh
ZGF0YS5jYWxsZWVWYXJpYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxl
LmNwcAppbmRleCBmZDA5MTQ1NmY3NTNmZmYyNTc3MDBlMDI1NTZlYjFhNmJjN2IxNTFlLi5kNTg1
NzBmNWVhNGY2MDkxZTg2MDM5NjU2YTgzZjhlNTkzNzg1Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTk4LDkgKzk4LDkgQEAgdm9pZCBjb21waWxlKFN0
YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAgICAg
aWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lzdGVyLmlzVmFsaWQoKSkKICAg
ICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lzdGVyICs9IGxvY2Fs
c09mZnNldDsKICAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgewotICAgICAg
ICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbYXJndW1lbnRdID0KLSAgICAgICAgICAg
ICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1thcmd1bWVudF0ud2l0aExvY2Fsc09mZnNl
dChsb2NhbHNPZmZzZXQpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOyBhcmd1bWVudC0tID4gMTspIHsK
KyAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwW2FyZ3VtZW50
XSA9CisgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXBb
YXJndW1lbnRdLndpdGhMb2NhbHNPZmZzZXQobG9jYWxzT2Zmc2V0KTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDNlZTIx
NjlmZmQ5MTgzNTRkNDE3NTUyMjE4ZTJjMTVlZDUxOTUxZWEuLmM0NmU5MTk1NzBlMWE5NjAyODUz
Yzk0NTYyNjMxZmNhYWFkOTQ1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKQEAgLTM2OTQsNyArMzY5NCw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgbGltaXQ7CiAgICAgICAgIGlmIChpbmxpbmVD
YWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICBs
aW1pdCA9IG1fb3V0LmNvbnN0SW50MzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgp
IC0gMSk7CisgICAgICAgICAgICBsaW1pdCA9IG1fb3V0LmNvbnN0SW50MzIoaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIDEpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBBc3NlbWJs
eUhlbHBlcnM6OmFyZ3VtZW50Q291bnQoaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIGxp
bWl0ID0gbV9vdXQuc3ViKG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdp
c3RlcikpLCBtX291dC5pbnQzMk9uZSk7CkBAIC0zNzE3LDggKzM3MTcsOCBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAKICAgICAgICAgVHlwZWRQb2ludGVyIGJhc2U7CiAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50cy5zaXplKCkgPiAxKQotICAgICAgICAgICAgICAgIGJhc2UgPSBhZGRyZXNzRm9y
KGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzWzFdLnZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICAg
ICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4g
MSkKKyAgICAgICAgICAgICAgICBiYXNlID0gYWRkcmVzc0ZvcihpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50c1dpdGhGaXh1cFsxXS52aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgYmFzZSA9IGFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
MSkpOwogICAgICAgICAKQEAgLTk2NDYsNyArOTY0Niw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIEFyZ3VtZW50c0xlbmd0aCBsZW5ndGg7CiAKICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewotICAgICAgICAgICAg
bGVuZ3RoLmtub3duID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAg
ICAgICAgICAgIGxlbmd0aC5rbm93biA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAgICAgbGVuZ3RoLmlzS25vd24gPSB0cnVlOwogICAg
ICAgICAgICAgbGVuZ3RoLnZhbHVlID0gbV9vdXQuY29uc3RJbnQzMihsZW5ndGgua25vd24pOwog
ICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9u
cy5jcHAKaW5kZXggNGJjY2JiNzAyYWUxYWU4YmQ5ZDU5YTU2YmM1MDE0MzBjYjAwNTk0ZC4uMWEx
YjM3MWUzZTA1MWJmMDE3ZTgyYjIyNTNlNjIyZWM3YjJjMjZmOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC0yOTMsNyArMjkzLDcgQEAgZXh0ZXJu
ICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9T
UigKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBhcmd1bWVudENvdW50ID0gbWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5p
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7CisgICAgICAgICAgICBhcmd1bWVudENv
dW50ID0gbWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChhcmd1bWVudENvdW50
KTsKICAgICAgICAgCiAgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCmlu
ZGV4IDE3NWZmZjMxYmFmM2ExYTM3ZDQ5YjZlMWMzZTAzNmY2MTNlYzUwZjQuLjg1ZDE0N2E0N2M3
ZjE5NWFhNjNhMmIyZTU3YTQ2NzYyM2RiNmJiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAg
dm9pZCBTdGFja1Zpc2l0b3I6OnJlYWRJbmxpbmVkRnJhbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IENvZGVPcmlnaW4qIGNvZGVPcmlnaW4KICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudFJlZ2lzdGVyLmlzVmFsaWQoKSkKICAgICAgICAgICAgIG1fZnJhbWUubV9hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFtZS0+cihpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnRSZWdpc3Rlci5vZmZzZXQoKSkudW5ib3hlZEludDMyKCk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fZnJhbWUubV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAgICAgICAgICAgIG1fZnJhbWUubV9h
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXM7CiAgICAgICAgIG1fZnJhbWUubV9jb2RlQmxvY2sgPSBpbmxpbmVDYWxs
RnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpOwogICAgICAgICBtX2ZyYW1lLm1fYnl0ZWNv
ZGVPZmZzZXQgPSBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA2ZDIyMDk0YmMzZjhlYTU5YjI5ZGQ5
OTU4YWM5NjIwMzMxN2VlODg1Li5hNjhjMzY5YjBhMDAwZTAxZDU0NDkwMGMzNjg0ZDI4NDk4YzFl
ZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAg
LTEyMjAsOSArMTIyMCw5IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgewogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKICAgICAgICAg
ICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKSk7
Ci0gICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgPD0gMSkKKyAg
ICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKSA8PSAx
KQogICAgICAgICAgICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKDApOwotICAgICAg
ICBWYWx1ZVJlY292ZXJ5IHJlY292ZXJ5ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbMV07
CisgICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVjb3ZlcnkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50c1dpdGhGaXh1cFsxXTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVjb3ZlcnkudGVjaG5p
cXVlKCkgPT0gRGlzcGxhY2VkSW5KU1N0YWNrKTsKICAgICAgICAgcmV0dXJuIHJlY292ZXJ5LnZp
cnR1YWxSZWdpc3RlcigpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9T
ZXR1cFZhcmFyZ3NGcmFtZS5jcHAKaW5kZXggMGY5NjFhNjYxZmIyNDc0NDI5MGUyMmRmNjE3YWJi
MjdlNWU0Y2UyMC4uZTFjNWU1ZmVjMzVhODIwZWQ5MGI0NTUxYzI3OWFhOWM1YjBmYWFkYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAKQEAg
LTEyMSwxMSArMTIxLDEwIEBAIHZvaWQgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UoVk0m
IHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG51bVVzZWRTbG90CiAgICAgICAgICAgICBh
cmd1bWVudENvdW50UmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2so
CiAgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXIs
IERhdGFGb3JtYXRJbnQzMik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhcmd1bWVu
dENvdW50UmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFudCgKLSAgICAgICAgICAgICAg
ICBqc051bWJlcihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKTsKKyAgICAgICAg
ICAgIGFyZ3VtZW50Q291bnRSZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzTnVt
YmVyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAg
ICAgfQotICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpID4gMSkK
LSAgICAgICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
c1sxXS52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzV2l0aEZpeHVwLnNpemUoKSA+IDEpCisgICAgICAgICAgICBmaXJzdEFyZ3VtZW50UmVn
ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXBbMV0udmlydHVhbFJlZ2lzdGVy
KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBWaXJ0dWFs
UmVnaXN0ZXIoMCk7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCmluZGV4IGYwOTc4OGI3NWYzNWVjM2U4YjZlZThi
ZGRkZWE4NGYxM2FiOTNjZDQuLjAzMDMyNzBkODBhNmEwYWYwYTgzMDQ4NTM3MzQ1OGRkOTE2ODNm
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3Vt
ZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgQ2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1
bWVudHM6OmNyZWF0ZVdpdGhJbmxpbmVGcmFtZShFeGVjU3RhdGUqIG15RnJhbWUsIEV4ZWMKICAg
ICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3Rlci5pc1Zh
bGlkKCkpCiAgICAgICAgICAgICAgICAgbGVuZ3RoID0gdGFyZ2V0RnJhbWUtPnIoaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXIpLnVuYm94ZWRJbnQzMigpOwogICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzLnNpemUoKTsKKyAgICAgICAgICAgICAgICBsZW5ndGggPSBpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogICAgICAgICAgICAgbGVuZ3RoLS07CiAgICAgICAg
ICAgICByZXN1bHQgPSBjcmVhdGVFbXB0eShteUZyYW1lLCBjYWxsZWUsIGxlbmd0aCk7CiAKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKLSAgICAgICAgICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdEluZGV4KG15RnJhbWUsIGksIGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzW2kgKyAxXS5yZWNvdmVyKHRhcmdldEZyYW1lKSk7CisgICAgICAgICAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3RJbmRleChteUZyYW1lLCBpLCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
c1dpdGhGaXh1cFtpICsgMV0ucmVjb3Zlcih0YXJnZXRGcmFtZSkpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgbGVuZ3RoID0gdGFyZ2V0RnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAg
ICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZUVtcHR5KG15RnJhbWUsIGNhbGxlZSwgbGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5k
ZXggN2RjNjBmNDQ3NzFjZWQwMTVmZDg3NmE5YzZjMzY4YzcyYzdhNDFlMC4uOWFhODYwMGE0NzIw
OTcxYjI1NGU3NTI4MzVlOTU2MDNiMzM1YzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTUwLDI0ICs1MCwyOSBAQCBzdHJ1Y3Qg
QXJpdHlDaGVja0RhdGEgewogICAgIHZvaWQqIHRodW5rVG9DYWxsOwogfTsKIAorQUxXQVlTX0lO
TElORSBpbnQgbnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQoreworICAgIGlmIChhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA+PSBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgaW50IGZyYW1lU2l6ZSA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
Q2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7CisgICAgaW50IGFsaWduZWRGcmFtZVNp
emVGb3JQYXJhbWV0ZXJzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50
UmVnaXN0ZXJzKCksCisgICAgICAgIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgQ2FsbEZy
YW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpOworICAgIHJldHVybiBhbGlnbmVkRnJhbWVTaXpl
Rm9yUGFyYW1ldGVycyAtIGZyYW1lU2l6ZTsKK30KKwogQUxXQVlTX0lOTElORSBpbnQgYXJpdHlD
aGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQogewogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhl
Yy0+anNDYWxsZWUoKSk7CiAgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwog
ICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Y29k
ZUJsb2NrRm9yKGtpbmQpOwotICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4
ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0gICAgCi0gICAgQVNTRVJUKGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwot
ICAgIGludCBmcmFtZVNpemUgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxGcmFt
ZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwotICAgIGludCBhbGlnbmVkRnJhbWVTaXplRm9yUGFy
YW1ldGVycyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVy
cygpLAotICAgICAgICBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIENhbGxGcmFtZTo6
aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKTsKLSAgICBpbnQgcGFkZGVkU3RhY2tTcGFjZSA9IGFsaWdu
ZWRGcmFtZVNpemVGb3JQYXJhbWV0ZXJzIC0gZnJhbWVTaXplOworICAgIEFTU0VSVChleGVjLT5h
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5ld0Nv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSk7CisgICAgaW50IHBhZGRpbmcgPSBudW1iZXJPZlN0
YWNrUGFkZGluZ1Nsb3RzKG5ld0NvZGVCbG9jaywgZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoKSk7CiAgICAgCi0gICAgUmVnaXN0ZXIqIG5ld1N0YWNrID0gZXhlYy0+cmVnaXN0ZXJz
KCkgLSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwg
cGFkZGVkU3RhY2tTcGFjZSk7CisgICAgUmVnaXN0ZXIqIG5ld1N0YWNrID0gZXhlYy0+cmVnaXN0
ZXJzKCkgLSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMo
KSwgcGFkZGluZyk7CiAKICAgICBpZiAoVU5MSUtFTFkoIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlG
b3IobmV3U3RhY2spKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBwYWRkZWRTdGFj
a1NwYWNlOworICAgIHJldHVybiBwYWRkaW5nOwogfQogCiBpbmxpbmUgYm9vbCBvcEluKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3BOYW1lLCBBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdGFja0FsaWdubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RhY2tBbGlnbm1lbnQuaAppbmRleCAwMGM5MGExZTc4ZGNjMzI5ZWM3ZWExOTE0ZTYy
OGVmODMzMGYwMTAwLi40ZTMxMDgwMzVmM2FkODM1NDNiMzIxYmM2NzlkNDM5NTlkNTQ4YTJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0FsaWdubWVudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrQWxpZ25tZW50LmgKQEAg
LTMxLDkgKzMxLDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAvLyBOQi4gRGlmZmVyZW50IHBsYXRm
b3JtcyBtYXkgaGF2ZSBkaWZmZXJlbnQgcmVxdWlyZW1lbnRzIGhlcmUuIEJ1dCAxNiBieXRlcyBp
cyB2ZXJ5IGNvbW1vbi4KLWlubGluZSB1bnNpZ25lZCBzdGFja0FsaWdubWVudEJ5dGVzKCkgeyBy
ZXR1cm4gMTY7IH0KK2lubGluZSBjb25zdGV4cHIgdW5zaWduZWQgc3RhY2tBbGlnbm1lbnRCeXRl
cygpIHsgcmV0dXJuIDE2OyB9CiAKLWlubGluZSB1bnNpZ25lZCBzdGFja0FsaWdubWVudFJlZ2lz
dGVycygpCitpbmxpbmUgY29uc3RleHByIHVuc2lnbmVkIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCkKIHsKICAgICByZXR1cm4gc3RhY2tBbGlnbm1lbnRCeXRlcygpIC8gc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYjU4Yzg4ODcwODJiMjUzMWZjNWYzNTI3Y2I5ZjZkYTQyY2IyMTNkZS4uNGUw
MGMxODA5OTkxNDQwN2Y4NjRkZjE4NWJiNjM3OTExMWRiZWFiNiAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAx
Ny0wOC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvYXJpdHktbWlzbWF0Y2gtYXJndW1lbnRz
LWxlbmd0aC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0MSk6
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvYXJpdHktbWlzbWF0Y2gtZ2V0LWFy
Z3VtZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGJ1aWx0aW4u
Y3JlYXRlQnVpbHRpbik6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvYXJpdHkt
bWlzbWF0Y2gtaW5saW5pbmctZXh0cmEtc2xvdHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAoaW5saW5lVGFyZ2V0KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAq
IHN0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgIChpbmxpbmVUYXJnZXQpOgorICAgICAgICAodGVzdCk6CisgICAgICAg
ICogc3RyZXNzL2FyaXR5LW1pc21hdGNoLXJlc3QuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDEpOgorICAgICAgICAodGVzdCk6
CisKIDIwMTctMDgtMzAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4gTWFrZSB0ZXN0IHN0b3AgcHJpbnRpbmcuCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1hcmd1bWVudHMtbGVuZ3RoLmpzIGIvSlNUZXN0cy9z
dHJlc3MvYXJpdHktbWlzbWF0Y2gtYXJndW1lbnRzLWxlbmd0aC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTg5
ZTI0YmIzNzlmZDYwZWM0NzBhNGQ2ZTViZDU4NTJmYTQ3YWViCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtYXJndW1lbnRzLWxlbmd0aC5qcwpAQCAtMCww
ICsxLDUwIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1
ZTogJyArIGFjdHVhbCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGVzdDEo
YXJnMSwgYXJnMiwgYXJnMykKKyAgICB7CisgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3Ro
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgIHsKKyAgICAgICAgc2hvdWxkQmUo
dGVzdDEoKSwgMCk7CisgICAgICAgIHNob3VsZEJlKHRlc3QxKDApLCAxKTsKKyAgICAgICAgc2hv
dWxkQmUodGVzdDEoMCwgMSksIDIpOworICAgICAgICBzaG91bGRCZSh0ZXN0MSgwLCAxLCAyKSwg
Myk7CisgICAgICAgIHNob3VsZEJlKHRlc3QxKDAsIDEsIDIsIDMpLCA0KTsKKyAgICB9CisgICAg
bm9JbmxpbmUodGVzdCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAg
ICAgICB0ZXN0KCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRlc3Qx
KGZsYWcsIGFyZzEsIGFyZzIsIGFyZzMpCisgICAgeworICAgICAgICBpZiAoZmxhZykKKyAgICAg
ICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50czsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiB0ZXN0KGZsYWcpCisgICAgeworICAgICAgICBzaG91bGRCZSh0ZXN0MShmbGFn
KS5sZW5ndGgsIDEpOworICAgICAgICBzaG91bGRCZSh0ZXN0MShmbGFnLCAwKS5sZW5ndGgsIDIp
OworICAgICAgICBzaG91bGRCZSh0ZXN0MShmbGFnLCAwLCAxKS5sZW5ndGgsIDMpOworICAgICAg
ICBzaG91bGRCZSh0ZXN0MShmbGFnLCAwLCAxLCAyKS5sZW5ndGgsIDQpOworICAgICAgICBzaG91
bGRCZSh0ZXN0MShmbGFnLCAwLCAxLCAyLCAzKS5sZW5ndGgsIDUpOworICAgIH0KKyAgICBub0lu
bGluZSh0ZXN0KTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKQorICAgICAgICB0
ZXN0KGZhbHNlKTsKKworICAgIHRlc3QodHJ1ZSk7CisgICAgdGVzdCh0cnVlKTsKKyAgICB0ZXN0
KHRydWUpOworfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21hdGNo
LWdldC1hcmd1bWVudC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21hdGNoLWdldC1hcmd1
bWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMjQxYWJkMzgzYjQ0YTJhYTlmOGYxYzczNGZjMjZjMjVhYTkw
M2VjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtZ2V0
LWFyZ3VtZW50LmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGJ1aWx0aW4gPSBj
cmVhdGVCdWlsdGluKGAoZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBAYXJndW1lbnQoMCk7Cit9
KWApOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgcmVzdWx0ID0gYnVpbHRpbigpOwor
ICAgIHNob3VsZEJlKHJlc3VsdCwgdW5kZWZpbmVkKTsKKyAgICB2YXIgcmVzdWx0ID0gYnVpbHRp
big0Mik7CisgICAgc2hvdWxkQmUocmVzdWx0LCA0Mik7Cit9Citub0lubGluZSh0ZXN0KTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy1leHRyYS1zbG90cy5qcyBiL0pT
VGVzdHMvc3RyZXNzL2FyaXR5LW1pc21hdGNoLWlubGluaW5nLWV4dHJhLXNsb3RzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVhZjM3NDM3MGNmMTljNDIxM2E5ZjI2YzM3ZWU5N2RlYTA1ZjQ4NDMKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy1leHRyYS1z
bG90cy5qcwpAQCAtMCwwICsxLDE3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIGlubGluZVRhcmdl
dChhcmcxLCBhcmcyKQoreworICAgIHJldHVybiBbYXJnMSwgYXJnMl07Cit9CisKK2Z1bmN0aW9u
IHRlc3QoKSB7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5saW5lVGFyZ2V0KG51bGwp
KSwgYFtudWxsLG51bGxdYCk7Cit9Citub0lubGluZSh0ZXN0KTsKK2ZvciAodmFyIGkgPSAwOyBp
IDwgM2U0OyArK2kpCisgICAgdGVzdCgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJp
dHktbWlzbWF0Y2gtaW5saW5pbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1p
bmxpbmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDgxZDlmMjEyMDA4ZDdhNjdkNjgwZTBkOTY1ZWJlMzBk
OGIzNzY0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gt
aW5saW5pbmcuanMKQEAgLTAsMCArMSwyNCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBpbmxpbmVU
YXJnZXQoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSkKK3sKKyAgICByZXR1cm4gW2FyZzEs
IGFyZzIsIGFyZzMsIGFyZzQsIGFyZzVdOworfQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGlubGluZVRhcmdldCgpKSwgYFtudWxsLG51bGwsbnVsbCxu
dWxsLG51bGxdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5saW5lVGFyZ2V0KDQy
KSksIGBbNDIsbnVsbCxudWxsLG51bGwsbnVsbF1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShpbmxpbmVUYXJnZXQoNDIsIDQzKSksIGBbNDIsNDMsbnVsbCxudWxsLG51bGxdYCk7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5saW5lVGFyZ2V0KDQyLCA0MywgNDQpKSwgYFs0
Miw0Myw0NCxudWxsLG51bGxdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5saW5l
VGFyZ2V0KDQyLCA0MywgNDQsIDQ1KSksIGBbNDIsNDMsNDQsNDUsbnVsbF1gKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIsIDQzLCA0NCwgNDUsIDQ2KSksIGBb
NDIsNDMsNDQsNDUsNDZdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoaW5saW5lVGFy
Z2V0KDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcpKSwgYFs0Miw0Myw0NCw0NSw0Nl1gKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIsIDQzLCA0NCwgNDUsIDQ2LCA0
NywgNDgpKSwgYFs0Miw0Myw0NCw0NSw0Nl1gKTsKK30KK25vSW5saW5lKHRlc3QpOworZm9yICh2
YXIgaSA9IDA7IGkgPCAzZTQ7ICsraSkKKyAgICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9hcml0eS1taXNtYXRjaC1yZXN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlz
bWF0Y2gtcmVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODU4NGNjZTI5Yjg3MTczNzc2NjBlMmZmZGU5OTRk
MzA2ZTM2OTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0
Y2gtcmVzdC5qcwpAQCAtMCwwICsxLDY1IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7Cisg
ICAgZnVuY3Rpb24gdGVzdDIoLi4ucmVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiByZXN0Owor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QxKGFyZzEsIGFyZzIsIGFyZzMpCisgICAgeworICAg
ICAgICByZXR1cm4gdGVzdDIoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gdGVzdCgpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gdGVzdDEoKTsKKyAgICAgICAg
c2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwg
dW5kZWZpbmVkKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzFdLCB1bmRlZmluZWQpOworICAg
ICAgICBzaG91bGRCZShyZXN1bHRbMl0sIHVuZGVmaW5lZCk7CisgICAgfQorICAgIG5vSW5saW5l
KHRlc3QpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgdGVz
dCgpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0MSguLi5yZXN0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlc3Q7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVz
dCgpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gdGVzdDEoKTsKKyAgICAgICAgc2hvdWxk
QmUocmVzdWx0Lmxlbmd0aCwgMCk7CisgICAgfQorICAgIG5vSW5saW5lKHRlc3QpOworCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgdGVzdCgpOworfSgpKTsKKwor
KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0MSguLi5yZXN0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHJlc3Q7CisgICAgfQorICAgIG5vSW5saW5lKHRlc3QxKTsKKworICAgIGZ1bmN0
aW9uIHRlc3QoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IHRlc3QxKCk7CisgICAgICAg
IHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDApOworICAgIH0KKyAgICBub0lubGluZSh0ZXN0KTsK
KworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIHRlc3QoKTsKK30o
KSk7Cg==
</data>
<flag name="review"
          id="339727"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319703</attachid>
            <date>2017-09-02 01:07:46 -0700</date>
            <delta_ts>2017-09-02 01:20:17 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175523-20170902170745.patch</filename>
            <type>text/plain</type>
            <size>63651</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MjJkY2Q5NGU4ZWZjMTQ3YTUyYzFmODJmMjQzOTE4MjFhYWMwNDMxLi5hYmMzMDE2YWQ4OWJlOTBh
ZjQ5NDZhMjc2ZTc3NWQ4Yzk3Y2QwMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MSBAQAorMjAxNy0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3VyIERGRyBwaXBlbGluZSBn
aXZlcyB1cCBpbmxpbmluZyB3aGVuIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0IGZ1bmN0aW9uIGlz
IG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIHRoZSBhcmd1bWVudHMuCisgICAgICAgIEl0IGVmZmVj
dGl2ZWx5IHByZXZlbnRzIHVzIGZyb20gaW5saW5pbmcgYW5kIG9wdGltaXppbmcgZnVuY3Rpb25z
LCB3aGljaCB0YWtlcyBzb21lIG9wdGlvbmFsIGFyZ3VtZW50cyBpbiB0aGUgZm9ybQorICAgICAg
ICBvZiB0aGUgcHJlLUVTNi4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGFib3Zl
IHJlc3RyaWN0aW9uIGJ5IHBlcmZvcm1pbmcgdGhlIGFyaXR5IGZpeHVwIGluIERGRy4KKworICAg
ICAgICBTaXhTcGVlZCBzaG93cyBpbXByb3ZlbWVudCB3aGVuIHdlIGNhbiBpbmxpbmUgYXJpdHkt
bWlzbWF0Y2hlZCBmdW5jdGlvbnMuIChGb3IgZXhhbXBsZSwgY2FsbGluZyBnZW5lcmF0b3IubmV4
dCgpKS4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmUg
ICAgICAgICAgICAgICAgICBwYXRjaGVkCisKKyAgICAgICAgZGVmYXVsdHMuZXM1ICAgICAgICAg
ICAgIDEyMzIuMTIyNistMjAuNjc3NSAgICBeICAgIDQ0Mi4zMzI2Ky0yNi4xODgzICAgICAgIF4g
ZGVmaW5pdGVseSAyLjc4NTV4IGZhc3RlcgorICAgICAgICByZXN0LmVzNiAgICAgICAgICAgICAg
ICAgICAgNS4zNDA2Ky0wLjg1ODggICAgIF4gICAgICAzLjU4MTIrLTAuNTM4OCAgICAgICAgXiBk
ZWZpbml0ZWx5IDEuNDkxM3ggZmFzdGVyCisgICAgICAgIHNwcmVhZC1nZW5lcmF0b3IuZXM2ICAg
ICAgMzIwLjkxMDcrLTEyLjQ4MDggICAgICAgICAzMTAuNDI5NSstMTIuMDA0NyAgICAgICAgIG1p
Z2h0IGJlIDEuMDMzOHggZmFzdGVyCisgICAgICAgIGdlbmVyYXRvci5lczYgICAgICAgICAgICAg
MzE4LjM1MTQrLTkuNjAyMyAgICAgXiAgICAyODYuNDk3NCstMTIuNjIwMyAgICAgICBeIGRlZmlu
aXRlbHkgMS4xMTEyeCBmYXN0ZXIKKworICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFt
ZS5jcHA6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dCBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6
OklubGluZUNhbGxGcmFtZTo6SW5saW5lQ2FsbEZyYW1lKToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAq
IGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
QXJndW1lbnRzVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjphcmd1bWVudHNJbnZv
bHZlU3RhY2tTbG90KToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0Q29kZVRvR2V0QXJndW1lbnRz
QXJyYXlMZW5ndGgpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldExvY2FsKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0QXJndW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpmaW5kQXJndW1lbnRQb3NpdGlvbkZvckxvY2FsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpnZXRBcmd1bWVudENvdW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aW5saW5pbmdDb3N0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVt
cHRUb0lubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tF
bnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNvbW1vbkRhdGE6OnZhbGlkYXRlUmVmZXJlbmNlcyk6Cisg
ICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6aXNMaXZlSW5CeXRlY29k
ZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmZvckFsbExvY2Fsc0xpdmVJbkJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSQXZhaWxh
YmlsaXR5QW5hbHlzaXNQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TG9jYWxPU1JBdmFp
bGFiaWxpdHlDYWxjdWxhdG9yOjpleGVjdXRlTm9kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRz
KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZHUHJl
Y2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENs
b2JiZXJpemVBZGFwdG9yOjpyZWFkVG9wKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0R2V0TGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVj
dEFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlN0YWNrTGF5b3V0UGhhc2U6OnJ1bik6CisgICAgICAgICogZnRsL0ZU
TENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0
bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzTGVuZ3RoKToKKyAgICAgICAgKiBmdGwvRlRMT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmpl
Y3RJbk9TUik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpyZWFkSW5saW5lZEZyYW1lKToKKyAgICAgICAgKiBqaXQv
QXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YXJndW1l
bnRzU3RhcnQpOgorICAgICAgICAqIGppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHA6CisgICAgICAg
IChKU0M6OmVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKToKKyAgICAgICAgKiBydW50aW1l
L0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6Y3Jl
YXRlV2l0aElubGluZUZyYW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
OgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6Om51bWJlck9mRXh0cmFTbG90cyk6Cisg
ICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6bnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90cyk6
CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6bnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90
c1dpdGhFeHRyYVNsb3RzKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjphcml0eUNo
ZWNrRm9yKToKKyAgICAgICAgKiBydW50aW1lL1N0YWNrQWxpZ25tZW50Lmg6CisgICAgICAgIChK
U0M6OnN0YWNrQWxpZ25tZW50Qnl0ZXMpOgorICAgICAgICAoSlNDOjpzdGFja0FsaWdubWVudFJl
Z2lzdGVycyk6CisKIDIwMTctMDktMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKICAgICAgICAgW0ZUTF0gRlRMIGFsbG9jYXRpb24gZm9yIGFzeW5jIEZ1bmN0aW9u
IGlzIGluY29ycmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lubGluZUNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5s
aW5lQ2FsbEZyYW1lLmNwcAppbmRleCA5N2NlODRkNjM1ODMwMzIwOGNmMDYwZTNjNWM2YWJkMzZl
NjI3ZjYxLi4yZmU1MWFmNjFiY2JlNWJjODY4ODA2NDZiMjE4MDc1ZDRiNDE2NjExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcApA
QCAtNzQsNyArNzQsOCBAQCB2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dChQcmlu
dFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29ucwogICAgICAgICBvdXQucHJp
bnQoIiwgY2xvc3VyZSBjYWxsIik7CiAgICAgZWxzZQogICAgICAgICBvdXQucHJpbnQoIiwga25v
d24gY2FsbGVlOiAiLCBpbkNvbnRleHQoY2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKSwgY29udGV4
dCkpOwotICAgIG91dC5wcmludCgiLCBudW1BcmdzK3RoaXMgPSAiLCBhcmd1bWVudHMuc2l6ZSgp
KTsKKyAgICBvdXQucHJpbnQoIiwgbnVtQXJncyt0aGlzID0gIiwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpOworICAgIG91dC5wcmludCgiLCBudW1GaXh1cCA9ICIsIGFyZ3VtZW50c1dpdGhG
aXh1cC5zaXplKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgb3V0LnByaW50
KCIsIHN0YWNrT2Zmc2V0ID0gIiwgc3RhY2tPZmZzZXQpOwogICAgIG91dC5wcmludCgiICgiLCB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgwKSwgIiBtYXBzIHRvICIsIHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKDApICsgc3RhY2tPZmZzZXQsICIpPiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCmluZGV4IGJlMWFmZGIxOTY3OWQ0N2Ew
YTBjYTVjYWVhY2Q1ZTI1MWU5YThjNTYuLjA4YzA0YjQwM2M2YWM5NDkzOGU4YjQ3NWIxNDZkNmRm
ZmFkMmU4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Jbmxp
bmVDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5l
Q2FsbEZyYW1lLmgKQEAgLTE3NSwxMSArMTc1LDEyIEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUg
ewogICAgICAgICByZXR1cm4gY2FsbGVyID8gY2FsbGVyLT5pbmxpbmVDYWxsRnJhbWUgOiBudWxs
cHRyOwogICAgIH0KICAgICAKLSAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeT4gYXJndW1lbnRzOyAv
LyBJbmNsdWRlcyAndGhpcycuCisgICAgVmVjdG9yPFZhbHVlUmVjb3Zlcnk+IGFyZ3VtZW50c1dp
dGhGaXh1cDsgLy8gSW5jbHVkZXMgJ3RoaXMnIGFuZCBhcml0eSBmaXh1cHMuCiAgICAgV3JpdGVC
YXJyaWVyPENvZGVCbG9jaz4gYmFzZWxpbmVDb2RlQmxvY2s7CiAgICAgVmFsdWVSZWNvdmVyeSBj
YWxsZWVSZWNvdmVyeTsKICAgICBDb2RlT3JpZ2luIGRpcmVjdENhbGxlcjsKIAorICAgIHVuc2ln
bmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyAvLyBEbyBub3QgaW5jbHVkZSBmaXh1cHMu
CiAgICAgc2lnbmVkIHN0YWNrT2Zmc2V0IDogMjg7CiAgICAgdW5zaWduZWQga2luZCA6IDM7IC8v
IHJlYWwgdHlwZSBpcyBLaW5kCiAgICAgYm9vbCBpc0Nsb3N1cmVDYWxsIDogMTsgLy8gSWYgZmFs
c2UgdGhlbiB3ZSBrbm93IHRoYXQgY2FsbGVlL3Njb3BlIGFyZSBjb25zdGFudHMgYW5kIHRoZSBE
Rkcgd29uJ3QgdHJlYXQgdGhlbSBhcyB2YXJpYWJsZXMsIGkuZS4gdGhleSBoYXZlIHRvIGJlIHJl
Y292ZXJlZCBtYW51YWxseS4KQEAgLTE4OSw3ICsxOTAsOCBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZy
YW1lIHsKICAgICAvLyBJbmxpbmVDYWxsRnJhbWUncyBmaWVsZHMuIFRoaXMgY29uc3RydWN0b3Ig
aXMgaGVyZSBqdXN0IHRvIHJlZHVjZSBjb25mdXNpb24gaWYKICAgICAvLyB3ZSBmb3Jnb3QgdG8g
aW5pdGlhbGl6ZSBleHBsaWNpdGx5LgogICAgIElubGluZUNhbGxGcmFtZSgpCi0gICAgICAgIDog
c3RhY2tPZmZzZXQoMCkKKyAgICAgICAgOiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygwKQor
ICAgICAgICAsIHN0YWNrT2Zmc2V0KDApCiAgICAgICAgICwga2luZChDYWxsKQogICAgICAgICAs
IGlzQ2xvc3VyZUNhbGwoZmFsc2UpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDg2ODZl
M2E4YTVmZDBiM2ZjNDVmNzg2ZmY2NWM5NGZiNTBjYTQ0NzIuLmExYTIxNmEyODE5YjUzMzI2MjQ3
YzM4MDI4NWM5OGRjYTIwZmI0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE3NTgsNyArMTc1
OCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1
dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IHVuc2lnbmVkIGFyZ3VtZW50SW5kZXggPSBpbmRleC5hc1VJbnQzMigpICsgbm9kZS0+bnVtYmVy
T2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpIHsK
LSAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRJbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzLnNpemUoKSAtIDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRJbmRleCA8
IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkgPSBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJh
bmQoCiAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChh
cmd1bWVudEluZGV4ICsgMSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KTsKICAgICAg
ICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKQEAgLTE3Nzcs
NyArMTc3Nyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAvLyBXZSBo
YXZlIGEgYm91bmQgb24gdGhlIHR5cGVzIGV2ZW4gdGhvdWdoIGl0J3MgcmFuZG9tIGFjY2Vzcy4g
VGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcy4KICAgICAgICAgICAgIAogICAgICAgICAgICAgQWJzdHJh
Y3RWYWx1ZSByZXN1bHQ7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgbm9kZS0+
bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgbm9kZS0+
bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5tZXJnZSgK
ICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAogICAgICAg
ICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkgKyBpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCBjM2NmODI5
ZGVjZTJkNTI3MzkxMDk4MjZiZThjMWMxOTAyOThmMGIwLi5hYTM5OGUwZTJjMjE1YzM1MTYxZGZh
NGQwZGUzYmYyNmQwMmRiMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTQ5MCw3ICs0OTAs
NyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFpc0Nsb2JiZXJlZEJ5QmxvY2spIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgLSAxOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkgKwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNl
dChpKTsKQEAgLTcwMCw3ICs3MDAsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBzYWZlVG9HZXRTdGFjazsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZVRv
R2V0U3RhY2sgPSBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZVRvR2V0U3RhY2sgPSBpbmRleCA8IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZVRv
R2V0U3RhY2sgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKSAtIDE7CkBAIC04
MDUsNyArODA1LDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzcHJlYWQtPm9w
KCkgPT0gUGhhbnRvbVNwcmVhZCAmJiBzcHJlYWQtPmNoaWxkMSgpLT5vcCgpID09IFBoYW50b21D
cmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVt
YmVyT2ZBcmd1bWVudHNUb1NraXAgPSBzcHJlYWQtPmNoaWxkMSgpLT5udW1iZXJPZkFyZ3VtZW50
c1RvU2tpcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJh
bWUqIGlubGluZUNhbGxGcmFtZSA9IHNwcmVhZC0+Y2hpbGQxKCktPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAt
IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1l
bnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAx
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnJhbWVBcmd1bWVudENvdW50
ID49IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZyYW1lQXJndW1lbnRDb3VudCAtIG51bWJlck9mQXJndW1lbnRzVG9T
a2lwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTgzNCw3
ICs4MzQsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzcHJlYWQtPm9w
KCkgPT0gUGhhbnRvbVNwcmVhZCAmJiBzcHJlYWQtPmNoaWxkMSgpLT5vcCgpID09IFBoYW50b21D
cmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gc3ByZWFkLT5jaGlsZDEoKS0+bnVtYmVyT2ZBcmd1
bWVudHNUb1NraXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElubGlu
ZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gc3ByZWFkLT5jaGlsZDEoKS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBmcmFtZUFyZ3VtZW50Q291bnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgbG9hZEluZGV4ID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7IGxvYWRJbmRl
eCA8IGZyYW1lQXJndW1lbnRDb3VudDsgKytsb2FkSW5kZXgpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gdmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQobG9hZEluZGV4ICsgMSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWNrQWNjZXNz
RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdGFja0FjY2Vzc0RhdGEuYWRkKHJlZywgRmx1c2hlZEpT
VmFsdWUpOwpAQCAtODg3LDcgKzg4Nyw3IEBAIGNsYXNzIEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFpbmxpbmVDYWxsRnJhbWUt
PmlzVmFyYXJncygpKSB7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzID4gdmFyYXJnc0RhdGEtPm9mZnNldCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLT0gdmFyYXJnc0RhdGEtPm9mZnNldDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC05MDksNyArOTA5LDcgQEAgY2xh
c3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IG51bGxwdHI7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb2FkSW5kZXggPSBzdG9yZUlu
ZGV4ICsgdmFyYXJnc0RhdGEtPm9mZnNldDsKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGxvYWRJbmRleCArIDEgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5z
aXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2FkSW5k
ZXggKyAxIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBy
ZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChsb2FkSW5kZXggKyAxKSArIGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5h
ZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZywgRmx1
c2hlZEpTVmFsdWUpOwpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWlu
YXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChzcHJlYWQtPmNoaWxkMSgpLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVD
YWxsRnJhbWUgPSBzcHJlYWQtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFy
Z3VtZW50c1RvU2tpcCA9IHNwcmVhZC0+Y2hpbGQxKCktPm51bWJlck9mQXJndW1lbnRzVG9Ta2lw
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEg
KyBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDEgKyBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX3N0YWNr
QWNjZXNzRGF0YS5hZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsdXNoZWRKU1Zh
bHVlKTsKQEAgLTEwNjksNyArMTA2OSw3IEBAIGNsYXNzIEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZy
YW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBjYW5kaWRhdGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYm
ICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmVjdG9yPE5vZGUqPiBhcmd1bWVudHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMSArIHZhcmFyZ3NEYXRhLT5maXJzdFZhckFyZ09mZnNldDsg
aSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIHZhcmFyZ3NEYXRhLT5maXJz
dFZhckFyZ09mZnNldDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXM7ICsraSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFja0FjY2Vz
c0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RhY2tBY2Nlc3NEYXRhLmFkZCgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpICsg
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZsdXNoZWRKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcAppbmRleCAwNjFhMjg0Y2Y1ZDQ5N2M5NTk4
N2U5ZjYzMDU2ZTVlOTc0M2Q2ZGQxLi5iMGY1MjkxMTkyNThjYmRmNzM4YWJlZDM3NDQxZjJmMjYw
MjE5ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50
c1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNVdGlsaXRpZXMuY3BwCkBAIC00NSw3ICs0NSw4IEBAIGJvb2wgYXJndW1lbnRzSW52b2x2ZVN0
YWNrU2xvdChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVy
CiAgICAgICAgICYmIHJlZyA9PSBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAKLSAgICB1bnNpZ25lZCBudW1Bcmd1bWVudHMgPSBpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50cy5zaXplKCkgLSAxOworICAgIC8vIFdlIGRvIG5vdCBpbmNsdWRlIGZpeHVwcyBo
ZXJlIHNpbmNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHxhcmd1bWVudHN8LCByZXN0IHBhcmFtZXRl
cnMsIGFuZCB2YXJhcmdzLgorICAgIHVuc2lnbmVkIG51bUFyZ3VtZW50cyA9IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBhcmd1bWVudFN0YXJ0ID0KICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQpICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKTsKICAgICByZXR1
cm4gcmVnID49IGFyZ3VtZW50U3RhcnQgJiYgcmVnIDwgYXJndW1lbnRTdGFydCArIG51bUFyZ3Vt
ZW50czsKQEAgLTc0LDcgKzc1LDcgQEAgTm9kZSogZW1pdENvZGVUb0dldEFyZ3VtZW50c0FycmF5
TGVuZ3RoKAogICAgICAgICBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IGFyZ3VtZW50cy0+bnVt
YmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAKICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYm
ICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGFyZ3Vt
ZW50c1NpemUgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxOworICAgICAg
ICB1bnNpZ25lZCBhcmd1bWVudHNTaXplID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyAtIDE7CiAgICAgICAgIGlmIChhcmd1bWVudHNTaXplID49IG51bWJlck9m
QXJndW1lbnRzVG9Ta2lwKQogICAgICAgICAgICAgYXJndW1lbnRzU2l6ZSAtPSBudW1iZXJPZkFy
Z3VtZW50c1RvU2tpcDsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBmY2EwMzNiMGNkZmE0MzFkYzlhMTNmMzYw
YmEzYjExYjNjMGJkZjU4Li4yNzljMTUxMWFmMzdmMTU3YTk2MjZlYWJiN2RkMmU3NWYxMmNhODBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKKyNpbmNs
dWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJERkdBYnN0cmFjdEhlYXAuaCIKICNp
bmNsdWRlICJERkdBcnJheU1vZGUuaCIKICNpbmNsdWRlICJERkdDRkcuaCIKQEAgLTYyLDYgKzYz
LDcgQEAKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9TZXRGb3JT
Y29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewpAQCAtMjIwLDcgKzIyMiw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2Vy
IHsKICAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCwgTm9kZSogY2FsbFRh
cmdldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bW50KTsKICAgICB2b2lkIGVtaXRBcmd1bWVu
dFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKTsKICAgICBOb2RlKiBnZXRBcmd1bWVudENvdW50KCk7Ci0gICAgdW5zaWduZWQgaW5saW5p
bmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENhbGxN
b2RlKTsgLy8gUmV0dXJuIFVJTlRfTUFYIGlmIGl0J3Mgbm90IGFuIGlubGluaW5nIGNhbmRpZGF0
ZS4gQnkgY29udmVudGlvbiwgaW50cmluc2ljcyBoYXZlIGEgY29zdCBvZiAxLgorICAgIHVuc2ln
bmVkIGlubGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOyAvLyBSZXR1cm4gVUlOVF9NQVggaWYgaXQncyBu
b3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5zaWNzIGhhdmUg
YSBjb3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5nLiBSZXR1cm4gdHJ1ZSBpZiBpdCBz
dWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgogICAgIGJvb2wgaGFu
ZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25z
dCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRo
aXNBcmd1bWVudCwgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBh
cmd1bWVudHNPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQg
bmV4dE9mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIGVudW0gQ2FsbGVyTGlua2FiaWxpdHkgeyBDYWxs
ZXJEb2VzTm9ybWFsTGlua2luZywgQ2FsbGVyTGlua3NNYW51YWxseSB9OwpAQCAtNDcwLDggKzQ3
Miw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB9CiAgICAgTm9kZSogc2V0TG9jYWwo
Y29uc3QgQ29kZU9yaWdpbiYgc2VtYW50aWNPcmlnaW4sIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5k
LCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQogICAgIHsKLSAgICAg
ICAgQ29kZU9yaWdpbiBvbGRTZW1hbnRpY09yaWdpbiA9IG1fY3VycmVudFNlbWFudGljT3JpZ2lu
OwotICAgICAgICBtX2N1cnJlbnRTZW1hbnRpY09yaWdpbiA9IHNlbWFudGljT3JpZ2luOworICAg
ICAgICBTZXRGb3JTY29wZTxDb2RlT3JpZ2luPiBvcmlnaW5DaGFuZ2UobV9jdXJyZW50U2VtYW50
aWNPcmlnaW4sIHNlbWFudGljT3JpZ2luKTsKIAogICAgICAgICB1bnNpZ25lZCBsb2NhbCA9IG9w
ZXJhbmQudG9Mb2NhbCgpOwogICAgICAgICAKQEAgLTQ5MCw4ICs0OTEsNiBAQCBjbGFzcyBCeXRl
Q29kZVBhcnNlciB7CiAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKHNlbWFudGljT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIEJhZEluZGV4aW5nVHlw
ZSkpOwogICAgICAgICBOb2RlKiBub2RlID0gYWRkVG9HcmFwaChTZXRMb2NhbCwgT3BJbmZvKHZh
cmlhYmxlQWNjZXNzRGF0YSksIHZhbHVlKTsKICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlh
Ymxlc0F0VGFpbC5sb2NhbChsb2NhbCkgPSBub2RlOwotCi0gICAgICAgIG1fY3VycmVudFNlbWFu
dGljT3JpZ2luID0gb2xkU2VtYW50aWNPcmlnaW47CiAgICAgICAgIHJldHVybiBub2RlOwogICAg
IH0KIApAQCAtNTI1LDggKzUyNCw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB9CiAg
ICAgTm9kZSogc2V0QXJndW1lbnQoY29uc3QgQ29kZU9yaWdpbiYgc2VtYW50aWNPcmlnaW4sIFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9y
bWFsU2V0KQogICAgIHsKLSAgICAgICAgQ29kZU9yaWdpbiBvbGRTZW1hbnRpY09yaWdpbiA9IG1f
Y3VycmVudFNlbWFudGljT3JpZ2luOwotICAgICAgICBtX2N1cnJlbnRTZW1hbnRpY09yaWdpbiA9
IHNlbWFudGljT3JpZ2luOworICAgICAgICBTZXRGb3JTY29wZTxDb2RlT3JpZ2luPiBvcmlnaW5D
aGFuZ2UobV9jdXJyZW50U2VtYW50aWNPcmlnaW4sIHNlbWFudGljT3JpZ2luKTsKIAogICAgICAg
ICB1bnNpZ25lZCBhcmd1bWVudCA9IG9wZXJhbmQudG9Bcmd1bWVudCgpOwogICAgICAgICBBU1NF
UlQoYXJndW1lbnQgPCBtX251bUFyZ3VtZW50cyk7CkBAIC01NDksOCArNTQ3LDYgQEAgY2xhc3Mg
Qnl0ZUNvZGVQYXJzZXIgewogICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShzZW1hbnRpY09yaWdpbi5ieXRlY29kZUluZGV4LCBCYWRJbmRleGlu
Z1R5cGUpKTsKICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9wSW5m
byh2YXJpYWJsZUFjY2Vzc0RhdGEpLCB2YWx1ZSk7CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT52
YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpID0gbm9kZTsKLQotICAgICAgICBtX2N1
cnJlbnRTZW1hbnRpY09yaWdpbiA9IG9sZFNlbWFudGljT3JpZ2luOwogICAgICAgICByZXR1cm4g
bm9kZTsKICAgICB9CiAgICAgCkBAIC01NzIsNyArNTY4LDcgQEAgY2xhc3MgQnl0ZUNvZGVQYXJz
ZXIgewogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKG9wZXJhbmQu
b2Zmc2V0KCkgPT0gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhp
c0FyZ3VtZW50T2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICBpZiAob3BlcmFuZC5vZmZzZXQoKSA+PSBzdGF0aWNfY2FzdDxpbnQ+KGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICsgaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSkKKyAgICAgICAgICAgIGlmIChvcGVyYW5kLm9m
ZnNldCgpID49IHN0YXRpY19jYXN0PGludD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKyBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50c1dpdGhGaXh1cC5zaXplKCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgaW50IGFyZ3VtZW50ID0gVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQub2Zmc2V0KCkgLSBp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0FyZ3VtZW50KCk7CiAgICAgICAgICAgICBy
ZXR1cm4gc3RhY2stPm1fYXJndW1lbnRQb3NpdGlvbnNbYXJndW1lbnRdOwpAQCAtNjMyLDcgKzYy
OCw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgaW50IG51bUFyZ3VtZW50czsK
ICAgICAgICAgaWYgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lU3Rh
Y2tFbnRyeS0+bV9pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9oYXNE
ZWJ1Z2dlckVuYWJsZWQpOwotICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpOworICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKGlu
bGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKICAgICAgICAgICAgICAgICBmbHVzaERpcmVj
dChpbmxpbmVTdGFja0VudHJ5LT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkpKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpKQpAQCAtMTQxOCw3ICsxNDE0LDcgQEAgTm9kZSogQnl0ZUNvZGVQYXJzZXI6OmdldEFy
Z3VtZW50Q291bnQoKQogICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxs
RnJhbWUtPmlzVmFyYXJncygpKQogICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9IGdldChWaXJ0
dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBhcmd1bWVudENvdW50ID0ganNDb25zdGFudChtX2dyYXBoLmZyZWV6ZShq
c051bWJlcihtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKSkpLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBqc0NvbnN0YW50
KG1fZ3JhcGguZnJlZXplKGpzTnVtYmVyKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpLT52YWx1ZSgpKTsKICAgICB9IGVsc2UK
ICAgICAgICAgYXJndW1lbnRDb3VudCA9IGFkZFRvR3JhcGgoR2V0QXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIE9wSW5mbygwKSwgT3BJbmZvKFNwZWNJbnQzMk9ubHkpKTsKICAgICByZXR1cm4g
YXJndW1lbnRDb3VudDsKQEAgLTE0MzAsOSArMTQyNiwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjplbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SQogICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIH0KIAotdW5zaWduZWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgQ2FsbE1vZGUgY2FsbE1vZGUpCit1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6
aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50LCBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQga2luZCkKIHsKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBzcGVjaWFsaXph
dGlvbktpbmRGb3IoY2FsbE1vZGUpOworICAgIENhbGxNb2RlIGNhbGxNb2RlID0gSW5saW5lQ2Fs
bEZyYW1lOjpjYWxsTW9kZUZvcihraW5kKTsKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNw
ZWNpYWxpemF0aW9uS2luZCA9IHNwZWNpYWxpemF0aW9uS2luZEZvcihjYWxsTW9kZSk7CiAgICAg
aWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGlubGluaW5nICIsIGNh
bGxlZSwgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwogICAgIApAQCAtMTQ1
NiwzMCArMTQ1MywyMSBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENh
bGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQogICAgIC8vIHRvIGlubGlu
ZSBpdCBpZiB3ZSBoYWQgYSBzdGF0aWMgcHJvb2Ygb2Ygd2hhdCB3YXMgYmVpbmcgY2FsbGVkOyB0
aGlzIG1pZ2h0IGhhcHBlbiBmb3IgZXhhbXBsZQogICAgIC8vIGlmIHlvdSBjYWxsIGEgZ2xvYmFs
IGZ1bmN0aW9uLCB3aGVyZSB3YXRjaHBvaW50aW5nIGdpdmVzIHVzIHN0YXRpYyBpbmZvcm1hdGlv
bi4gT3ZlcmFsbCwKICAgICAvLyBpdCdzIGEgcmFyZSBjYXNlIGJlY2F1c2Ugd2UgZXhwZWN0IHRo
YXQgYW55IGhvdCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBpbGVkLgotICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Io
a2luZCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNlbGluZUNv
ZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOwogICAgIGlmICghY29kZUJsb2NrKSB7CiAg
ICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVj
YXVzZSBubyBjb2RlIGJsb2NrIGF2YWlsYWJsZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9N
QVg7CiAgICAgfQogCi0gICAgLy8gRG9lcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3ZSdyZSBw
YXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0PyBXZSBjdXJyZW50bHkKLSAgICAv
LyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgaXMgZ3JlYXRl
ciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKLSAgICAvLyBhcmd1bWVudHMgZXhwZWN0ZWQu
Ci0gICAgaWYgKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID4gYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nKCIg
ICAgRmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNoLlxuIik7Ci0gICAgICAgIHJldHVy
biBVSU5UX01BWDsKLSAgICB9Ci0KICAgICBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
ID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwoCi0gICAgICAgIGNvZGVCbG9jaywg
a2luZCwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CisgICAgICAgIGNvZGVCbG9jaywgc3BlY2lh
bGl6YXRpb25LaW5kLCBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsKICAgICBpZiAodmVyYm9zZSkg
ewogICAgICAgICBkYXRhTG9nKCIgICAgQ2FsbCBtb2RlOiAiLCBjYWxsTW9kZSwgIlxuIik7CiAg
ICAgICAgIGRhdGFMb2coIiAgICBJcyBjbG9zdXJlIGNhbGw6ICIsIGNhbGxlZS5pc0Nsb3N1cmVD
YWxsKCksICJcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICAgQ2FwYWJpbGl0eSBsZXZlbDogIiwg
Y2FwYWJpbGl0eUxldmVsLCAiXG4iKTsKLSAgICAgICAgZGF0YUxvZygiICAgIE1pZ2h0IGlubGlu
ZSBmdW5jdGlvbjogIiwgbWlnaHRJbmxpbmVGdW5jdGlvbkZvcihjb2RlQmxvY2ssIGtpbmQpLCAi
XG4iKTsKLSAgICAgICAgZGF0YUxvZygiICAgIE1pZ2h0IGNvbXBpbGUgZnVuY3Rpb246ICIsIG1p
Z2h0Q29tcGlsZUZ1bmN0aW9uRm9yKGNvZGVCbG9jaywga2luZCksICJcbiIpOworICAgICAgICBk
YXRhTG9nKCIgICAgTWlnaHQgaW5saW5lIGZ1bmN0aW9uOiAiLCBtaWdodElubGluZUZ1bmN0aW9u
Rm9yKGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kKSwgIlxuIik7CisgICAgICAgIGRhdGFM
b2coIiAgICBNaWdodCBjb21waWxlIGZ1bmN0aW9uOiAiLCBtaWdodENvbXBpbGVGdW5jdGlvbkZv
cihjb2RlQmxvY2ssIHNwZWNpYWxpemF0aW9uS2luZCksICJcbiIpOwogICAgICAgICBkYXRhTG9n
KCIgICAgSXMgc3VwcG9ydGVkIGZvciBpbmxpbmluZzogIiwgaXNTdXBwb3J0ZWRGb3JJbmxpbmlu
Zyhjb2RlQmxvY2spLCAiXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIElzIGlubGluaW5nIGNh
bmRpZGF0ZTogIiwgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aXNJbmxpbmlu
Z0NhbmRpZGF0ZSgpLCAiXG4iKTsKICAgICB9CkBAIC0xNTQ1LDE0ICsxNTMzLDI3IEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1
bHRPcGVyYW5kLCBDYWxsVmFyCiB7CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFs
aXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5k
KTsKICAgICAKLSAgICBBU1NFUlQoaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCkpICE9IFVJTlRf
TUFYKTsKKyAgICBBU1NFUlQoaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIGtpbmQpICE9IFVJTlRfTUFYKTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUoKS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Io
c3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBpbnNlcnRDaGVja3MoY29kZUJsb2NrKTsKIAogICAg
IC8vIEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFudHMhCisKKyAgICAvLyBhcml0eUZpeHVwQ291
bnQgYW5kIG51bWJlck9mU3RhY2tQYWRkaW5nU2xvdHMgYXJlIGRpZmZlcmVudC4gV2hpbGUgYXJp
dHlGaXh1cENvdW50IGRvZXMgbm90IGNvbnNpZGVyIGFib3V0IHN0YWNrIGFsaWdubWVudCwKKyAg
ICAvLyBudW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3RzIGNvbnNpZGVyIGFsaWdubWVudC4gQ29uc2lk
ZXIgdGhlIGZvbGxvd2luZyBjYXNlLAorICAgIC8vCisgICAgLy8gYmVmb3JlOiBbIC4uLiBdW2Fy
ZzBdW2hlYWRlcl0KKyAgICAvLyBhZnRlcjogIFsgLi4uIF1bZXh0IF1bYXJnMV1bYXJnMF1baGVh
ZGVyXQorICAgIC8vCisgICAgLy8gSW4gdGhlIGFib3ZlIGNhc2UsIGFyaXR5Rml4dXBDb3VudCBp
cyAxLiBCdXQgbnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90cyBpcyAyIGJlY2F1c2UgdGhlIHN0YWNr
IG5lZWRzIHRvIGJlIGFsaWduZWQuCisgICAgLy8gV2UgaW5zZXJ0IGV4dHJhIHNsb3RzIHRvIGFs
aWduIHN0YWNrLgorICAgIGludCBhcml0eUZpeHVwQ291bnQgPSBzdGQ6Om1heDxpbnQ+KGNvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIDApOwor
ICAgIGludCBudW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3RzID0gQ29tbW9uU2xvd1BhdGhzOjpudW1i
ZXJPZlN0YWNrUGFkZGluZ1Nsb3RzKGNvZGVCbG9jaywgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpOworICAgIEFTU0VSVCghKG51bWJlck9mU3RhY2tQYWRkaW5nU2xvdHMgJSBzdGFja0FsaWdu
bWVudFJlZ2lzdGVycygpKSk7CisgICAgaW50IHJlZ2lzdGVyT2Zmc2V0QWZ0ZXJGaXh1cCA9IHJl
Z2lzdGVyT2Zmc2V0IC0gbnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90czsKICAgICAKLSAgICBpbnQg
aW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmly
dHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0KSkub2Zmc2V0KCkgKyBDYWxsRnJhbWU6OmhlYWRl
clNpemVJblJlZ2lzdGVyczsKKyAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGlu
ZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0QWZ0
ZXJGaXh1cCkpLm9mZnNldCgpICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7CiAg
ICAgCiAgICAgZW5zdXJlTG9jYWxzKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2Fs
bEZyYW1lU3RhcnQpLnRvTG9jYWwoKSArIDEgKwpAQCAtMTU2NywxMiArMTU2OCw0MCBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVz
dWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogY2FsbGVlVmFyaWFi
bGUgPSBudWxscHRyOwogICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CiAgICAgICAg
IE5vZGUqIGNhbGxlZVNldCA9IHNldCgKLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihyZWdp
c3Rlck9mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIGNhbGxUYXJnZXROb2RlLCBJbW1l
ZGlhdGVOYWtlZFNldCk7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZz
ZXRBZnRlckZpeHVwICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgY2FsbFRhcmdldE5vZGUsIElt
bWVkaWF0ZU5ha2VkU2V0KTsKICAgICAgICAgCiAgICAgICAgIGNhbGxlZVZhcmlhYmxlID0gY2Fs
bGVlU2V0LT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgY2FsbGVlVmFyaWFibGUtPm1l
cmdlU2hvdWxkTmV2ZXJVbmJveCh0cnVlKTsKICAgICB9CiAgICAgCisgICAgaWYgKGFyaXR5Rml4
dXBDb3VudCkgeworICAgICAgICBOb2RlKiB1bmRlZmluZWQgPSBhZGRUb0dyYXBoKEpTQ29uc3Rh
bnQsIE9wSW5mbyhtX2NvbnN0YW50VW5kZWZpbmVkKSk7CisgICAgICAgIGF1dG8gZmlsbCA9IFsm
XSAoVmlydHVhbFJlZ2lzdGVyIHJlZywgTm9kZSogdmFsdWUpIHsKKyAgICAgICAgICAgIE5vZGUq
IHJlc3VsdCA9IHNldChyZWcsIHZhbHVlLCBJbW1lZGlhdGVOYWtlZFNldCk7CisgICAgICAgICAg
ICByZXN1bHQtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5tZXJnZVNob3VsZE5ldmVyVW5ib3godHJ1
ZSk7IC8vIFdlIGNhbm5vdCBleGl0IGFmdGVyIHN0YXJ0aW5nIGFyaXR5IGZpeHVwLgorICAgICAg
ICB9OworCisgICAgICAgIC8vIFRoZSBzdGFjayBuZWVkcyB0byBiZSBhbGlnbmVkIGR1ZSB0byBB
QklzLiBUaHVzLCB3ZSBoYXZlIGEgaG9sZSBpZiB0aGUgY291bnQgb2YgYXJndW1lbnRzIGlzIG5v
dCBhbGlnbmVkLgorICAgICAgICAvLyBXZSBjYWxsIHRoaXMgaG9sZSAiZXh0cmEgc2xvdCIuIENv
bnNpZGVyIHRoZSBmb2xsb3dpbmcgY2FzZSwgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgaXMgMi4g
SWYgdGhpcyBhcmd1bWVudAorICAgICAgICAvLyBjb3VudCBkb2VzIG5vdCBmdWxmaWxsIHRoZSBz
dGFjayBhbGlnbm1lbnQgcmVxdWlyZW1lbnQsIHdlIGFscmVhZHkgaW5zZXJ0ZWQgZXh0cmEgc2xv
dHMuCisgICAgICAgIC8vCisgICAgICAgIC8vIGJlZm9yZTogWyAuLi4gXVtleHQgXVthcmcxXVth
cmcwXVtoZWFkZXJdCisgICAgICAgIC8vCisgICAgICAgIC8vIEluIHRoZSBhYm92ZSBjYXNlLCBv
bmUgZXh0cmEgc2xvdCBpcyBpbnNlcnRlZC4gSWYgdGhlIGNvZGUncyBwYXJhbWV0ZXIgY291bnQg
aXMgMywgd2Ugd2lsbCBmaXh1cCBhcmd1bWVudHMuCisgICAgICAgIC8vIEF0IHRoYXQgdGltZSwg
d2UgY2FuIHNpbXBseSB1c2UgdGhpcyBleHRyYSBzbG90cy4gU28gdGhlIGZpeHVwZWQgc3RhY2sg
aXMgdGhlIGZvbGxvd2luZy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gYmVmb3JlOiBbIC4uLiBd
W2V4dCBdW2FyZzFdW2FyZzBdW2hlYWRlcl0KKyAgICAgICAgLy8gYWZ0ZXI6ICBbIC4uLiBdW2Fy
ZzJdW2FyZzFdW2FyZzBdW2hlYWRlcl0KKyAgICAgICAgLy8KKyAgICAgICAgLy8gSW4gc3VjaCBj
YXNlcywgd2UgZG8gbm90IG5lZWQgdG8gbW92ZSBmcmFtZXMuCisgICAgICAgIGlmIChyZWdpc3Rl
ck9mZnNldEFmdGVyRml4dXAgIT0gcmVnaXN0ZXJPZmZzZXQpIHsKKyAgICAgICAgICAgIGZvciAo
aW50IGluZGV4ID0gMDsgaW5kZXggPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpbmRl
eCkKKyAgICAgICAgICAgICAgICBmaWxsKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGluZGV4
LCByZWdpc3Rlck9mZnNldEFmdGVyRml4dXApLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoaW5kZXgsIHJlZ2lzdGVyT2Zmc2V0KSkpOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50
IGluZGV4ID0gMDsgaW5kZXggPCBhcml0eUZpeHVwQ291bnQ7ICsraW5kZXgpCisgICAgICAgICAg
ICBmaWxsKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICsgaW5kZXgsIHJlZ2lzdGVyT2Zmc2V0QWZ0ZXJGaXh1cCksIHVuZGVmaW5lZCk7CisgICAg
fQorCiAgICAgSW5saW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFja0VudHJ5KAogICAgICAgICB0aGlz
LCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgbV9ncmFwaC5sYXN0QmxvY2soKSwgY2FsbGVlLmZ1bmN0
aW9uKCksIHJlc3VsdFJlZywKICAgICAgICAgKFZpcnR1YWxSZWdpc3RlcilpbmxpbmVDYWxsRnJh
bWVTdGFydCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtpbmQpOwpAQCAtMTc3MSw3ICsx
ODAwLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAgICAgfQogICAgIH0KICAgICAK
LSAgICB1bnNpZ25lZCBteUlubGluaW5nQ29zdCA9IGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OmNhbGxNb2RlRm9yKGtpbmQp
KTsKKyAgICB1bnNpZ25lZCBteUlubGluaW5nQ29zdCA9IGlubGluaW5nQ29zdChjYWxsZWUsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBraW5kKTsKICAgICBpZiAobXlJbmxpbmluZ0Nvc3Qg
PiBpbmxpbmluZ0JhbGFuY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDM0OCw3ICs0
Mzc3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gdGhpcy0+aW5s
aW5lQ2FsbEZyYW1lKCk7CiAgICAgICAgICAgICBOb2RlKiBsZW5ndGg7CiAgICAgICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7Ci0g
ICAgICAgICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRzTGVuZ3RoID0gaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVu
dHNMZW5ndGggPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0g
MTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1QYXJhbXNUb1NraXAgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVz
dExlbmd0aDsKICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzTGVuZ3RoIDw9IG51bVBhcmFt
c1RvU2tpcCkKQEAgLTU5MTgsOCArNTk0Nyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudDsKICAgICAg
ICAgICAgIGludDMyX3QgYXJndW1lbnRJbmRleEluY2x1ZGluZ1RoaXMgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAh
aW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewotICAgICAgICAgICAgICAgIGludDMyX3Qg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5z
aXplKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50SW5kZXhJbmNsdWRpbmdUaGlzIDwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCisgICAgICAgICAgICAgICAgaW50MzJfdCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzV2l0aEZpeHVwLnNpemUoKTsKKyAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRJbmRleElu
Y2x1ZGluZ1RoaXMgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cCkKICAgICAg
ICAgICAgICAgICAgICAgYXJndW1lbnQgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
YXJndW1lbnRJbmRleEluY2x1ZGluZ1RoaXMpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8o
bV9jb25zdGFudFVuZGVmaW5lZCkpOwpAQCAtNjIwNSw4ICs2MjM0LDkgQEAgQnl0ZUNvZGVQYXJz
ZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgbV9hcmd1bWVudFBvc2l0aW9ucy5yZXNpemUoYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXM7ICsraSkgeworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1
cCA9IHN0ZDo6bWF4PGludD4oYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpKTsKKyAgICBtX2FyZ3VtZW50UG9zaXRpb25zLnJlc2l6ZShhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cDsgKytpKSB7CiAgICAgICAgIGJ5dGVD
b2RlUGFyc2VyLT5tX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuYXBwZW5kKEFyZ3VtZW50UG9z
aXRpb24oKSk7CiAgICAgICAgIEFyZ3VtZW50UG9zaXRpb24qIGFyZ3VtZW50UG9zaXRpb24gPSAm
Ynl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5sYXN0KCk7CiAgICAg
ICAgIG1fYXJndW1lbnRQb3NpdGlvbnNbaV0gPSBhcmd1bWVudFBvc2l0aW9uOwpAQCAtNjIyNCwx
MyArNjI1NCwxNCBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3Rh
Y2tFbnRyeSgKICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4KICAgICAgICAgbV9pbmxpbmVDYWxs
RnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoY29kZUJsb2Nr
LT5iYXNlbGluZVZlcnNpb24oKSk7CiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5zZXRTdGFj
a09mZnNldChpbmxpbmVDYWxsRnJhbWVTdGFydC5vZmZzZXQoKSAtIENhbGxGcmFtZTo6aGVhZGVy
U2l6ZUluUmVnaXN0ZXJzKTsKKyAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgIGlm
IChjYWxsZWUpIHsKICAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVy
eSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGNhbGxlZSk7CiAgICAgICAgICAgICBtX2lubGlu
ZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCA9IGZhbHNlOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsID0gdHJ1ZTsKICAgICAgICAg
bV9pbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlciA9IGJ5dGVDb2RlUGFyc2VyLT5jdXJyZW50
Q29kZU9yaWdpbigpOwotICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnJlc2l6
ZVRvRml0KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsgLy8gU2V0IHRoZSBudW1iZXIgb2Yg
YXJndW1lbnRzIGluY2x1ZGluZyB0aGlzLCBidXQgZG9uJ3QgY29uZmlndXJlIHRoZSB2YWx1ZSBy
ZWNvdmVyaWVzLCB5ZXQuCisgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRo
Rml4dXAucmVzaXplVG9GaXQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXApOyAv
LyBTZXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgaW5jbHVkaW5nIHRoaXMsIGJ1dCBkb24ndCBj
b25maWd1cmUgdGhlIHZhbHVlIHJlY292ZXJpZXMsIHlldC4KICAgICAgICAgbV9pbmxpbmVDYWxs
RnJhbWUtPmtpbmQgPSBraW5kOwogICAgICAgICAKICAgICAgICAgbV9pZGVudGlmaWVyUmVtYXAu
cmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwCmluZGV4IDk2MTQ3NWNiZDNjNzQxMjI2N2Y4
YzA3OWFiM2ZjYjkwZWQzMjliY2IuLjg3MDc3ODg4ZTBkZjA5Y2I5NGYyZTA5MzIxZDViOGQ1OWU1
YTZiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0
YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcApA
QCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ29tbW9uRGF0YTo6dmFsaWRhdGVSZWZlcmVuY2VzKGNv
bnN0IFRyYWNrZWRSZWZlcmVuY2VzJiB0cmFja2VkUmVmZXJlbmNlcykKIHsKICAgICBpZiAoSW5s
aW5lQ2FsbEZyYW1lU2V0KiBzZXQgPSBpbmxpbmVDYWxsRnJhbWVzLmdldCgpKSB7CiAgICAgICAg
IGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgOiAqc2V0KSB7Ci0gICAgICAg
ICAgICBmb3IgKFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5IDogaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHMpIHsKKyAgICAgICAgICAgIGZvciAoVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgOiBpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cCkgewogICAgICAgICAgICAgICAgIGlmIChy
ZWNvdmVyeS5pc0NvbnN0YW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHRyYWNrZWRSZWZlcmVu
Y2VzLmNoZWNrKHJlY292ZXJ5LmNvbnN0YW50KCkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApp
bmRleCAwOGM5MjI3Y2Q3ZTU4MGY5YWY1Mzg2ZGViNDIwM2Y3MGFjOWEyZjFiLi4xOWU5OGU4NDY5
NGRmM2Q1ZTg2ODIzYzg0MjAxYTU5NjI1OGIwMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMzU3LDcgKzM1
Nyw3IEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAg
ICAgICAgICAgICAvLyBHZXRNeUFyZ3VtZW50QnlWYWwgaW4gc3VjaCBzdGF0aWNhbGx5LW91dC1v
Zi1ib3VuZHMgYWNjZXNzZXM7IHdlIGp1c3QgbG9zZSBDRkEgdW5sZXNzCiAgICAgICAgICAgICAg
ICAgLy8gR0NTRSByZW1vdmVzIHRoZSBhY2Nlc3MgZW50aXJlbHkuCiAgICAgICAgICAgICAgICAg
aWYgKGlubGluZUNhbGxGcmFtZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGluZGV4ID49IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgLSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IG1fc3RhdGUudmFyaWFi
bGVzKCkubnVtYmVyT2ZBcmd1bWVudHMoKSAtIDEpCkBAIC0zNzgsNyArMzc4LDcgQEAgY2xhc3Mg
Q29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaW5kZXggKyAxKSwgRmx1c2hlZEpTVmFs
dWUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpICYm
IGluZGV4IDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkgeworICAgICAg
ICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJh
cmdzKCkgJiYgaW5kZXggPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzIC0gMSkgewogICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9HZXRTdGFjayhk
YXRhKTsKICAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRl
eCBiYjNmMjNjMDg4YzI3NTJlYjQ2Y2U4Y2ZmYTEzMWJmMGYyZDAxMzJhLi5lZDQ2YjA1NmNkNTEy
YTA0MDc0MjMzY2E1OTljYzdmYmIyNThlMDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcApAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgYm9vbCBHcmFwaDo6aXNMaXZlSW5CeXRl
Y29kZShWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAg
ICAgICAvLyBBcmd1bWVudHMgYXJlIGFsd2F5cyBsaXZlLiBUaGlzIHdvdWxkIGJlIHJlZHVuZGFu
dCBpZiBpdCB3YXNuJ3QgZm9yIG91cgogICAgICAgICAvLyBvcF9jYWxsX3ZhcmFyZ3MgaW5saW5p
bmcuCiAgICAgICAgIGlmIChyZWcuaXNBcmd1bWVudCgpCi0gICAgICAgICAgICAmJiBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHJlZy50b0FyZ3VtZW50KCkpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHMuc2l6ZSgpKSB7CisgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlZy50b0Fy
Z3VtZW50KCkpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpKSB7
CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBcmd1
bWVudCBpcyBsaXZlLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCAzMzRlYTk3ZmU1ZWJiNzczZDNlZGU3MDM2ODllYjA3
MWI4YzE2ZmIxLi42NjMwODE1MWRkYzUwN2Q0NTczMzljYjViZGYwZTczMDhmZDU3N2Q5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC04MzksNyArODM5LDcgQEAgY2xhc3Mg
R3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgICAgICAgICAgLy8gQXJndW1l
bnRzIGFyZSBhbHdheXMgbGl2ZS4gVGhpcyB3b3VsZCBiZSByZWR1bmRhbnQgaWYgaXQgd2Fzbid0
IGZvciBvdXIKICAgICAgICAgICAgIC8vIG9wX2NhbGxfdmFyYXJncyBpbmxpbmluZy4gU2VlIHRo
ZSBjb21tZW50IGFib3ZlLgogICAgICAgICAgICAgZXhjbHVzaW9uU3RhcnQgPSBzdGFja09mZnNl
dCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApOwotICAgICAgICAg
ICAgZXhjbHVzaW9uRW5kID0gc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0
SW5jbHVkaW5nVGhpcyhpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpOworICAgICAg
ICAgICAgZXhjbHVzaW9uRW5kID0gc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zm
c2V0SW5jbHVkaW5nVGhpcyhpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXpl
KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBXZSB3aWxsIGFsd2F5cyBoYXZlIGEg
InRoaXMiIGFyZ3VtZW50IGFuZCBleGNsdXNpb25TdGFydCBzaG91bGQgYmUgYSBzbWFsbGVyIHN0
YWNrCiAgICAgICAgICAgICAvLyBvZmZzZXQgdGhhbiBleGNsdXNpb25FbmQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFs
eXNpc1BoYXNlLmNwcAppbmRleCBlOGI0NWM0NWE2MmZjNDQ5YzIxOWNhNGRhZWU0Y2UxZTZkZGZj
Yjg1Li4zY2RhNjg3MmU0Yzc4NDkwYmNkMDdkNTlkN2Y5YjllZDk4MDVjNTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5
QW5hbHlzaXNQaGFzZS5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIExvY2FsT1NSQXZhaWxh
YmlsaXR5Q2FsY3VsYXRvcjo6ZXhlY3V0ZU5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1f
YXZhaWxhYmlsaXR5Lm1faGVhcC5zZXQoUHJvbW90ZWRIZWFwTG9jYXRpb24oQXJndW1lbnRzQ2Fs
bGVlUExvYywgbm9kZSksIGNhbGxlZSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOyBpIDwgaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyAtIDE7ICsraSkgewogICAgICAgICAgICAgQXZhaWxhYmlsaXR5
IGFyZ3VtZW50ID0gbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZCgKICAgICAgICAgICAg
ICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9m
ZnNldChpKSk7CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuY3BwCmluZGV4IGJkNzg1N2Y5ZmU3MWUxZGUwY2M3NDc2Yzg4MzM1ZTg1YjMyOWYwZDYuLjNi
NzNhMTJjMTA5ZDgzZjk4MDU2OTU4ZjJhNTk1YTVhOGQ2MjQyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgT1NSRXhp
dDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9wZXJhbmRz
PFZhbHVlUmVjb3ZlCiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgaml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSwK
KyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwKICAgICAgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUMSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCmluZGV4IDZiOTQ5MDIwNzNkYWQ0
ZDY5MTc2NWY0M2FkNmViMTc0Y2FmMjZjODkuLjIxNTExNzJiMmI1ZWYyMjA5MzQ4NDYxYTg5MGVk
NDE5OWVkNmYwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIHJlaWZ5
SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBl
eGl0KQogICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDIpOwogCiAgICAgICAgIGlmICghaW5saW5l
Q2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSks
IEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAg
ICAgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCBBc3NlbWJseUhlbHBlcnM6
OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICAgICAgaml0LnN0b3JlNjQoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5SGVscGVyczo6YWRk
cmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpKSk7
CiAgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoY29kZU9yaWdp
bi0+Ynl0ZWNvZGVJbmRleCkuYml0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAppbmRleCA1ZjBhZGM2ZTUzY2VjNjJk
MTk4NjBlNDAxMDVjNjRlNDU3OWU5YTkwLi4xNmZlMjZmNmNhNmI0M2NlNmUzNDZlNDJmM2ZmMGE0
MGIwMzhhOWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNp
c2VMb2NhbENsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWNpc2VMb2NhbENsb2JiZXJpemUuaApAQCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIFByZWNpc2VM
b2NhbENsb2JiZXJpemVBZGFwdG9yIHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBu
dW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKTsgaSsrKQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIG51bWJlck9mQXJn
dW1lbnRzVG9Ta2lwOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6
ZSgpOyBpKyspCiAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkub2Zm
c2V0KCkpKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQog
ICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKQEAgLTIxOSw3ICsy
MTksNyBAQCBjbGFzcyBQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvciB7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaW5saW5lQ2FsbEZyYW1lLT5p
c1ZhcmFyZ3MoKSwgIkdldEFyZ3VtZW50IGlzIG9ubHkgdXNlZCBmb3IgSW5saW5lQ2FsbEZyYW1l
IGlmIHRoZSBjYWxsIGZyYW1lIGlzIHZhcmFyZ3MuIik7Ci0gICAgICAgICAgICBpZiAoaW5kZXhJ
bmNsdWRpbmdUaGlzIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKQorICAgICAg
ICAgICAgaWYgKGluZGV4SW5jbHVkaW5nVGhpcyA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
V2l0aEZpeHVwLnNpemUoKSkKICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVy
KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dChpbmRleEluY2x1ZGluZ1RoaXMpLm9mZnNldCgpKSk7CiAgICAgICAgICAgICBtX3JlYWQoVmly
dHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50KSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIzOSw3ICsyMzksNyBA
QCBjbGFzcyBQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvciB7CiAgICAgICAgICAgICAvLyBS
ZWFkIGFsbCBvZiB0aGUgaW5saW5lIGFyZ3VtZW50cyBhbmQgY2FsbCBmcmFtZSBoZWFkZXJzIHRo
YXQgd2UgZGlkbid0IGFscmVhZHkgY2FwdHVyZS4KICAgICAgICAgICAgIGZvciAoSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZy
YW1lLT5nZXRDYWxsZXJJbmxpbmVGcmFtZVNraXBwaW5nVGFpbENhbGxzKCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMu
c2l6ZSgpOyBpLS0gPiAxOykKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOyBpLS0gPiAxOykKICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLm9mZnNldCgp
KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmlzQ2xvc3VyZUNhbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IDliNzAxMzNjYzNhM2Q1MDgxMWIxODRmNTAyMjZhMTlhMDBk
OGQzNDguLmMyMDI5MDgyMzA3NGIwNmMxYTAzNDlhYWNmNGQ4MTE3ZDg4MTcyMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNzIs
NyArMTcyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQ
UlJlZyByZXN1bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRHZXRMZW5ndGgoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEdQUlJlZyBs
ZW5ndGhHUFIsIGJvb2wgaW5jbHVkZVRoaXMpCiB7CiAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAm
JiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gIWluY2x1ZGVUaGlz
KSwgbGVuZ3RoR1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtICFpbmNsdWRlVGhpcyksIGxlbmd0
aEdQUik7CiAgICAgZWxzZSB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudENvdW50
UmVnaXN0ZXIgPSBtX2ppdC5hcmd1bWVudENvdW50KGlubGluZUNhbGxGcmFtZSk7CiAgICAgICAg
IG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihhcmd1bWVudENvdW50UmVnaXN0
ZXIpLCBsZW5ndGhHUFIpOwpAQCAtNjc5Nyw3ICs2Nzk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAgIGJvb2wgbGVu
Z3RoSXNLbm93bjsgLy8gaWYgZmFsc2UsIGxlbmd0aEdQUiB3aWxsIGhhdmUgdGhlIGxlbmd0aC4K
ICAgICBpZiAobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZQogICAgICAgICAm
JiAhbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsK
LSAgICAgICAga25vd25MZW5ndGggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAga25vd25MZW5ndGggPSBub2RlLT5v
cmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyAtIDE7CiAgICAgICAgIGxlbmd0aElzS25vd24gPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGtub3duTGVuZ3RoID0gVUlOVF9NQVg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAppbmRleCAwM2M1MDJmYzg4MGRjYmE4MjNjN2Ux
YTRkYzlkODllYTI2NzRkNmRkLi5hMDQ2NzFiNDYxMTJlYjJkMTIxOGMzMWU3OGZkMTdjZTJiNjI0
YzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQ
aGFzZS5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFzcyBTdGFja0xheW91dFBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQg
PSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgewor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgYXJndW1lbnQtLSA+IDE7KSB7CiAgICAgICAgICAgICAg
ICAgdXNlZExvY2Fscy5zZXQoVmlydHVhbFJlZ2lzdGVyKAogICAgICAgICAgICAgICAgICAgICB2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkub2Zmc2V0KCkgKwogICAgICAgICAg
ICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkpOwpAQCAt
MTg3LDcgKzE4Nyw3IEBAIGNsYXNzIFN0YWNrTGF5b3V0UGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1
bWVudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgYXJndW1lbnQtLSA+IDE7
KSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOyBhcmd1bWVudC0tID4gMTspIHsKICAgICAgICAg
ICAgICAgICBBcmd1bWVudFBvc2l0aW9uJiBwb3NpdGlvbiA9IG1fZ3JhcGgubV9hcmd1bWVudFBv
c2l0aW9uc1sKICAgICAgICAgICAgICAgICAgICAgZGF0YS5hcmd1bWVudFBvc2l0aW9uU3RhcnQg
KyBhcmd1bWVudF07CiAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJs
ZSA9IHBvc2l0aW9uLnNvbWVWYXJpYWJsZSgpOwpAQCAtMTk4LDcgKzE5OCw3IEBAIGNsYXNzIFN0
YWNrTGF5b3V0UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2UgPSBWYWx1ZVNvdXJjZTo6Zm9yRmx1c2hGb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXJpYWJsZS0+bWFjaGluZUxvY2FsKCksIHZhcmlhYmxlLT5mbHVzaEZvcm1hdCgpKTsKICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHNbYXJndW1lbnRdID0gc291cmNlLnZhbHVlUmVjb3ZlcnkoKTsKKyAgICAgICAgICAgICAgICBp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cFthcmd1bWVudF0gPSBzb3VyY2UudmFs
dWVSZWNvdmVyeSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwgPT0gISFkYXRhLmNh
bGxlZVZhcmlhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tcGlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmlu
ZGV4IGZkMDkxNDU2Zjc1M2ZmZjI1NzcwMGUwMjU1NmViMWE2YmM3YjE1MWUuLmQ1ODU3MGY1ZWE0
ZjYwOTFlODYwMzk2NTZhODNmOGU1OTM3ODUyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDb21waWxlLmNwcApAQCAtOTgsOSArOTgsOSBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0
YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXIuaXNWYWxpZCgpKQogICAgICAgICAg
ICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXIgKz0gbG9jYWxzT2Zmc2V0
OwogICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzLnNpemUoKTsgYXJndW1lbnQtLSA+IDE7KSB7Ci0gICAgICAgICAgICBp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1thcmd1bWVudF0gPQotICAgICAgICAgICAgICAgIGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzW2FyZ3VtZW50XS53aXRoTG9jYWxzT2Zmc2V0KGxvY2Fs
c09mZnNldCk7CisgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgeworICAgICAg
ICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXBbYXJndW1lbnRdID0KKyAg
ICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cFthcmd1bWVu
dF0ud2l0aExvY2Fsc09mZnNldChsb2NhbHNPZmZzZXQpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggY2JhYzg5ZTIxNGNi
NWNlYTViM2QyOTQ3NTdmYWQzZGY3YjJhYzc0NC4uZTdiMjQ2MmFiMGEzOTkxMzVjNWJjMzExZmU3
ZWJhNzFmN2JmNDdmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcApAQCAtMzY5OCw3ICszNjk4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgCiAgICAgICAgIExWYWx1ZSBsaW1pdDsKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFt
ZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGxpbWl0ID0g
bV9vdXQuY29uc3RJbnQzMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKTsK
KyAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuY29uc3RJbnQzMihpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IEFzc2VtYmx5SGVscGVy
czo6YXJndW1lbnRDb3VudChpbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgbGltaXQgPSBt
X291dC5zdWIobV9vdXQubG9hZDMyKHBheWxvYWRGb3IoYXJndW1lbnRDb3VudFJlZ2lzdGVyKSks
IG1fb3V0LmludDMyT25lKTsKQEAgLTM3MjEsOCArMzcyMSw4IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIAogICAgICAgICBUeXBlZFBvaW50ZXIgYmFzZTsKICAgICAgICAgaWYgKGlu
bGluZUNhbGxGcmFtZSkgewotICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzLnNpemUoKSA+IDEpCi0gICAgICAgICAgICAgICAgYmFzZSA9IGFkZHJlc3NGb3IoaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHNbMV0udmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAgICAg
aWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPiAxKQorICAg
ICAgICAgICAgICAgIGJhc2UgPSBhZGRyZXNzRm9yKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
V2l0aEZpeHVwWzFdLnZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBiYXNlID0gYWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxKSk7CiAg
ICAgICAgIApAQCAtOTY1OSw3ICs5NjU5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgQXJndW1lbnRzTGVuZ3RoIGxlbmd0aDsKIAogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1l
ICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7Ci0gICAgICAgICAgICBsZW5ndGgu
a25vd24gPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxOworICAgICAgICAg
ICAgbGVuZ3RoLmtub3duID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyAtIDE7CiAgICAgICAgICAgICBsZW5ndGguaXNLbm93biA9IHRydWU7CiAgICAgICAgICAg
ICBsZW5ndGgudmFsdWUgPSBtX291dC5jb25zdEludDMyKGxlbmd0aC5rbm93bik7CiAgICAgICAg
IH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcApp
bmRleCA0YmNjYmI3MDJhZTFhZThiZDlkNTlhNTZiYzUwMTQzMGNiMDA1OTRkLi4xYTFiMzcxZTNl
MDUxYmYwMTdlODJiMjI1M2U2MjJlYzdiMmMyNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBleHRlcm4gIkMiIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKAogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIGFyZ3VtZW50Q291bnQgPSBtYXRlcmlhbGl6YXRpb24tPm9yaWdpbigpLmlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBt
YXRlcmlhbGl6YXRpb24tPm9yaWdpbigpLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXM7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFyZ3VtZW50Q291bnQpOwogICAg
ICAgICAKICAgICAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKaW5kZXggMTc1
ZmZmMzFiYWYzYTFhMzdkNDliNmUxYzNlMDM2ZjYxM2VjNTBmNC4uODVkMTQ3YTQ3YzdmMTk1YWE2
M2EyYjJlNTdhNDY3NjIzZGI2YmJkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFN0
YWNrVmlzaXRvcjo6cmVhZElubGluZWRGcmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZU9y
aWdpbiogY29kZU9yaWdpbgogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENv
dW50UmVnaXN0ZXIuaXNWYWxpZCgpKQogICAgICAgICAgICAgbV9mcmFtZS5tX2FyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1lLT5yKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudFJlZ2lzdGVyLm9mZnNldCgpKS51bmJveGVkSW50MzIoKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV9mcmFtZS5tX2FyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOworICAgICAgICAgICAgbV9mcmFtZS5tX2FyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpczsKICAgICAgICAgbV9mcmFtZS5tX2NvZGVCbG9jayA9IGlubGluZUNhbGxGcmFtZS0+
YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCk7CiAgICAgICAgIG1fZnJhbWUubV9ieXRlY29kZU9mZnNl
dCA9IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDZkMjIwOTRiYzNmOGVhNTliMjlkZDk5NThhYzk2
MjAzMzE3ZWU4ODUuLmE2OGMzNjliMGEwMDBlMDFkNTQ0OTAwYzM2ODRkMjg0OThjMWVmNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtMTIyMCw5
ICsxMjIwLDkgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVy
IHsKICAgICB7CiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0
dXJuIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KDApKTsKLSAgICAg
ICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSA8PSAxKQorICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpIDw9IDEpCiAgICAg
ICAgICAgICByZXR1cm4gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoMCk7Ci0gICAgICAgIFZhbHVl
UmVjb3ZlcnkgcmVjb3ZlcnkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1sxXTsKKyAgICAg
ICAgVmFsdWVSZWNvdmVyeSByZWNvdmVyeSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0
aEZpeHVwWzFdOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWNvdmVyeS50ZWNobmlxdWUoKSA9
PSBEaXNwbGFjZWRJbkpTU3RhY2spOwogICAgICAgICByZXR1cm4gcmVjb3ZlcnkudmlydHVhbFJl
Z2lzdGVyKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9T
ZXR1cFZhcmFyZ3NGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFy
YXJnc0ZyYW1lLmNwcAppbmRleCAwZjk2MWE2NjFmYjI0NzQ0MjkwZTIyZGY2MTdhYmIyN2U1ZTRj
ZTIwLi5lMWM1ZTVmZWMzNWE4MjBlZDkwYjQ1NTFjMjc5YWE5YzViMGZhYWRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcApAQCAtMTIxLDEx
ICsxMjEsMTAgQEAgdm9pZCBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShWTSYgdm0sIEND
YWxsSGVscGVycyYgaml0LCBHUFJSZWcgbnVtVXNlZFNsb3QKICAgICAgICAgICAgIGFyZ3VtZW50
Q291bnRSZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjaygKICAgICAg
ICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlciwgRGF0YUZv
cm1hdEludDMyKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFyZ3VtZW50Q291bnRS
ZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KAotICAgICAgICAgICAgICAgIGpzTnVt
YmVyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpOworICAgICAgICAgICAgYXJn
dW1lbnRDb3VudFJlY292ZXJ5ID0gVmFsdWVSZWNvdmVyeTo6Y29uc3RhbnQoanNOdW1iZXIoaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgICAgICB9Ci0g
ICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgPiAxKQotICAgICAg
ICAgICAgZmlyc3RBcmd1bWVudFJlZyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzWzFdLnZp
cnR1YWxSZWdpc3RlcigpOworICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNX
aXRoRml4dXAuc2l6ZSgpID4gMSkKKyAgICAgICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cFsxXS52aXJ0dWFsUmVnaXN0ZXIoKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgZmlyc3RBcmd1bWVudFJlZyA9IFZpcnR1YWxSZWdpc3Rl
cigwKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5kZXggZjA5Nzg4Yjc1ZjM1ZWMzZThiNmVlOGJkZGRlYTg0
ZjEzYWI5M2NkNC4uMDMwMzI3MGQ4MGE2YTBhZjBhODMwNDg1MzczNDU4ZGQ5MTY4M2YzNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3Bw
CkBAIC0xMDMsMTIgKzEwMywxMiBAQCBDbG9uZWRBcmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6
Y3JlYXRlV2l0aElubGluZUZyYW1lKEV4ZWNTdGF0ZSogbXlGcmFtZSwgRXhlYwogICAgICAgICAg
ICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lzdGVyLmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICBsZW5ndGggPSB0YXJnZXRGcmFtZS0+cihpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnRSZWdpc3RlcikudW5ib3hlZEludDMyKCk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgbGVuZ3RoID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6
ZSgpOworICAgICAgICAgICAgICAgIGxlbmd0aCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgICAgICBsZW5ndGgtLTsKICAgICAgICAgICAgIHJl
c3VsdCA9IGNyZWF0ZUVtcHR5KG15RnJhbWUsIGNhbGxlZSwgbGVuZ3RoKTsKIAogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQotICAgICAgICAgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0SW5kZXgobXlGcmFtZSwgaSwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNb
aSArIDFdLnJlY292ZXIodGFyZ2V0RnJhbWUpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPnB1
dERpcmVjdEluZGV4KG15RnJhbWUsIGksIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZp
eHVwW2kgKyAxXS5yZWNvdmVyKHRhcmdldEZyYW1lKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBsZW5ndGggPSB0YXJnZXRGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgICAgICAg
ICAgcmVzdWx0ID0gY3JlYXRlRW1wdHkobXlGcmFtZSwgY2FsbGVlLCBsZW5ndGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA3ZGM2
MGY0NDc3MWNlZDAxNWZkODc2YTljNmMzNjhjNzJjN2E0MWUwLi5mYTI4MjRmYmQyZmRmY2M0MGUw
MWYwYjMxODUwZWQzM2EyNzI1OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtNTAsMjQgKzUwLDQyIEBAIHN0cnVjdCBBcml0eUNo
ZWNrRGF0YSB7CiAgICAgdm9pZCogdGh1bmtUb0NhbGw7CiB9OwogCitBTFdBWVNfSU5MSU5FIGlu
dCBudW1iZXJPZkV4dHJhU2xvdHMoaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQorewor
ICAgIGludCBmcmFtZVNpemUgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxGcmFt
ZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOworICAgIGludCBhbGlnbmVkRnJhbWVTaXplID0gV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIGZyYW1lU2l6
ZSk7CisgICAgcmV0dXJuIGFsaWduZWRGcmFtZVNpemUgLSBmcmFtZVNpemU7Cit9CisKK0FMV0FZ
U19JTkxJTkUgaW50IG51bWJlck9mU3RhY2tQYWRkaW5nU2xvdHMoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKK3sKKyAgICBpZiAoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPj0gY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCisgICAgICAg
IHJldHVybiAwOworICAgIGludCBhbGlnbmVkRnJhbWVTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpOworICAgIGludCBhbGlnbmVk
RnJhbWVTaXplRm9yUGFyYW1ldGVycyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0Fs
aWdubWVudFJlZ2lzdGVycygpLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIENhbGxGcmFt
ZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKTsKKyAgICByZXR1cm4gYWxpZ25lZEZyYW1lU2l6ZUZv
clBhcmFtZXRlcnMgLSBhbGlnbmVkRnJhbWVTaXplOworfQorCitBTFdBWVNfSU5MSU5FIGludCBu
dW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3RzV2l0aEV4dHJhU2xvdHMoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKK3sKKyAgICBpZiAoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPj0gY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCisgICAgICAg
IHJldHVybiAwOworICAgIHJldHVybiBudW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3RzKGNvZGVCbG9j
aywgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpICsgbnVtYmVyT2ZFeHRyYVNsb3RzKGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKK30KKwogQUxXQVlTX0lOTElORSBpbnQgYXJpdHlDaGVj
a0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQogewogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+
anNDYWxsZWUoKSk7CiAgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwogICAg
IENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Y29kZUJs
b2NrRm9yKGtpbmQpOwotICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMt
PmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0gICAgCi0gICAgQVNTRVJUKGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwotICAg
IGludCBmcmFtZVNpemUgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxGcmFtZTo6
aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwotICAgIGludCBhbGlnbmVkRnJhbWVTaXplRm9yUGFyYW1l
dGVycyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygp
LAotICAgICAgICBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIENhbGxGcmFtZTo6aGVh
ZGVyU2l6ZUluUmVnaXN0ZXJzKTsKLSAgICBpbnQgcGFkZGVkU3RhY2tTcGFjZSA9IGFsaWduZWRG
cmFtZVNpemVGb3JQYXJhbWV0ZXJzIC0gZnJhbWVTaXplOworICAgIEFTU0VSVChleGVjLT5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5ld0NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpKSk7CisgICAgaW50IHBhZGRpbmcgPSBudW1iZXJPZlN0YWNr
UGFkZGluZ1Nsb3RzV2l0aEV4dHJhU2xvdHMobmV3Q29kZUJsb2NrLCBleGVjLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpKTsKICAgICAKLSAgICBSZWdpc3RlciogbmV3U3RhY2sgPSBleGVj
LT5yZWdpc3RlcnMoKSAtIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJl
Z2lzdGVycygpLCBwYWRkZWRTdGFja1NwYWNlKTsKKyAgICBSZWdpc3RlciogbmV3U3RhY2sgPSBl
eGVjLT5yZWdpc3RlcnMoKSAtIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVu
dFJlZ2lzdGVycygpLCBwYWRkaW5nKTsKIAogICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3Rh
Y2tDYXBhY2l0eUZvcihuZXdTdGFjaykpKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJu
IHBhZGRlZFN0YWNrU3BhY2U7CisgICAgcmV0dXJuIHBhZGRpbmc7CiB9CiAKIGlubGluZSBib29s
IG9wSW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJvcE5hbWUs
IEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrQWxpZ25tZW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdGFja0FsaWdubWVudC5oCmluZGV4IDAwYzkwYTFlNzhkY2MzMjll
YzdlYTE5MTRlNjI4ZWY4MzMwZjAxMDAuLjRlMzEwODAzNWYzYWQ4MzU0M2IzMjFiYzY3OWQ0Mzk1
OWQ1NDhhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNr
QWxpZ25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tBbGln
bm1lbnQuaApAQCAtMzEsOSArMzEsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIE5CLiBEaWZm
ZXJlbnQgcGxhdGZvcm1zIG1heSBoYXZlIGRpZmZlcmVudCByZXF1aXJlbWVudHMgaGVyZS4gQnV0
IDE2IGJ5dGVzIGlzIHZlcnkgY29tbW9uLgotaW5saW5lIHVuc2lnbmVkIHN0YWNrQWxpZ25tZW50
Qnl0ZXMoKSB7IHJldHVybiAxNjsgfQoraW5saW5lIGNvbnN0ZXhwciB1bnNpZ25lZCBzdGFja0Fs
aWdubWVudEJ5dGVzKCkgeyByZXR1cm4gMTY7IH0KIAotaW5saW5lIHVuc2lnbmVkIHN0YWNrQWxp
Z25tZW50UmVnaXN0ZXJzKCkKK2lubGluZSBjb25zdGV4cHIgdW5zaWduZWQgc3RhY2tBbGlnbm1l
bnRSZWdpc3RlcnMoKQogewogICAgIHJldHVybiBzdGFja0FsaWdubWVudEJ5dGVzKCkgLyBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCBmMTQzZWEzMDFlNzMzMDA2NDlhZWJjZmZjYjg4YjdhMjQ3
NDg1ZjU1Li5hNWEzOTI0YjQyMTU0YjQyOTE1OTRmOGM4NTMwYTNiZjk0MjRhMDk3IDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMyIEBACisyMDE3LTA5LTAyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtERkddIFJlbGF4IGFyaXR5IHJlcXVpcmVtZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9hcml0eS1taXNtYXRj
aC1hcmd1bWVudHMtbGVuZ3RoLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHRlc3QxKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9hcml0eS1taXNt
YXRjaC1nZXQtYXJndW1lbnQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAoYnVpbHRpbi5jcmVhdGVCdWlsdGluKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0
cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy1leHRyYS1zbG90cy5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgIChpbmxpbmVUYXJnZXQpOgorICAgICAgICAodGVzdCk6
CisgICAgICAgICogc3RyZXNzL2FyaXR5LW1pc21hdGNoLWlubGluaW5nLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGlubGluZVRhcmdldCk6CisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKiBzdHJlc3MvYXJpdHktbWlzbWF0Y2gtcmVzdC5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICh0ZXN0MSk6CisgICAg
ICAgICh0ZXN0KToKKwogMjAxNy0wOC0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBGaXggIm5hbWUiIGFuZCAibGVuZ3RoIiBvZiBQcm94
eSByZXZva2UgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21h
dGNoLWFyZ3VtZW50cy1sZW5ndGguanMgYi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1h
cmd1bWVudHMtbGVuZ3RoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhODllMjRiYjM3OWZkNjBlYzQ3MGE0ZDZl
NWJkNTg1MmZhNDdhZWIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1t
aXNtYXRjaC1hcmd1bWVudHMtbGVuZ3RoLmpzCkBAIC0wLDAgKzEsNTAgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0MShhcmcxLCBhcmcyLCBhcmczKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg7CisgICAgfQorCisgICAgZnVuY3Rp
b24gdGVzdCgpCisgICAgeworICAgICAgICBzaG91bGRCZSh0ZXN0MSgpLCAwKTsKKyAgICAgICAg
c2hvdWxkQmUodGVzdDEoMCksIDEpOworICAgICAgICBzaG91bGRCZSh0ZXN0MSgwLCAxKSwgMik7
CisgICAgICAgIHNob3VsZEJlKHRlc3QxKDAsIDEsIDIpLCAzKTsKKyAgICAgICAgc2hvdWxkQmUo
dGVzdDEoMCwgMSwgMiwgMyksIDQpOworICAgIH0KKyAgICBub0lubGluZSh0ZXN0KTsKKworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIHRlc3QoKTsKK30oKSk7CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGVzdDEoZmxhZywgYXJnMSwgYXJnMiwgYXJn
MykKKyAgICB7CisgICAgICAgIGlmIChmbGFnKQorICAgICAgICAgICAgT1NSRXhpdCgpOworICAg
ICAgICByZXR1cm4gYXJndW1lbnRzOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoZmxhZykK
KyAgICB7CisgICAgICAgIHNob3VsZEJlKHRlc3QxKGZsYWcpLmxlbmd0aCwgMSk7CisgICAgICAg
IHNob3VsZEJlKHRlc3QxKGZsYWcsIDApLmxlbmd0aCwgMik7CisgICAgICAgIHNob3VsZEJlKHRl
c3QxKGZsYWcsIDAsIDEpLmxlbmd0aCwgMyk7CisgICAgICAgIHNob3VsZEJlKHRlc3QxKGZsYWcs
IDAsIDEsIDIpLmxlbmd0aCwgNCk7CisgICAgICAgIHNob3VsZEJlKHRlc3QxKGZsYWcsIDAsIDEs
IDIsIDMpLmxlbmd0aCwgNSk7CisgICAgfQorICAgIG5vSW5saW5lKHRlc3QpOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAgICAgIHRlc3QoZmFsc2UpOworCisgICAgdGVz
dCh0cnVlKTsKKyAgICB0ZXN0KHRydWUpOworICAgIHRlc3QodHJ1ZSk7Cit9KCkpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtZ2V0LWFyZ3VtZW50LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtZ2V0LWFyZ3VtZW50LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMy
NDFhYmQzODNiNDRhMmFhOWY4ZjFjNzM0ZmMyNmMyNWFhOTAzZWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1nZXQtYXJndW1lbnQuanMKQEAgLTAsMCAr
MSwyMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCit2YXIgYnVpbHRpbiA9IGNyZWF0ZUJ1aWx0aW4oYChmdW5jdGlv
biAoKSB7CisgICAgcmV0dXJuIEBhcmd1bWVudCgwKTsKK30pYCk7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHZhciByZXN1bHQgPSBidWlsdGluKCk7CisgICAgc2hvdWxkQmUocmVzdWx0LCB1
bmRlZmluZWQpOworICAgIHZhciByZXN1bHQgPSBidWlsdGluKDQyKTsKKyAgICBzaG91bGRCZShy
ZXN1bHQsIDQyKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFl
NDsgKytpKQorICAgIHRlc3QoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1p
c21hdGNoLWlubGluaW5nLWV4dHJhLXNsb3RzLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlz
bWF0Y2gtaW5saW5pbmctZXh0cmEtc2xvdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFmMzc0MzcwY2YxOWM0
MjEzYTlmMjZjMzdlZTk3ZGVhMDVmNDg0MwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2FyaXR5LW1pc21hdGNoLWlubGluaW5nLWV4dHJhLXNsb3RzLmpzCkBAIC0wLDAgKzEsMTcg
QEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKworZnVuY3Rpb24gaW5saW5lVGFyZ2V0KGFyZzEsIGFyZzIpCit7CisgICAg
cmV0dXJuIFthcmcxLCBhcmcyXTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQobnVsbCkpLCBgW251bGwsbnVsbF1gKTsKK30K
K25vSW5saW5lKHRlc3QpOworZm9yICh2YXIgaSA9IDA7IGkgPCAzZTQ7ICsraSkKKyAgICB0ZXN0
KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy5q
cyBiL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21hdGNoLWlubGluaW5nLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgwODFkOWYyMTIwMDhkN2E2N2Q2ODBlMGQ5NjVlYmUzMGQ4YjM3NjQKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy5qcwpAQCAtMCwwICsx
LDI0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIGlubGluZVRhcmdldChhcmcxLCBhcmcyLCBhcmcz
LCBhcmc0LCBhcmc1KQoreworICAgIHJldHVybiBbYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJn
NV07Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
aW5saW5lVGFyZ2V0KCkpLCBgW251bGwsbnVsbCxudWxsLG51bGwsbnVsbF1gKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIpKSwgYFs0MixudWxsLG51bGwsbnVs
bCxudWxsXWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGlubGluZVRhcmdldCg0Miwg
NDMpKSwgYFs0Miw0MyxudWxsLG51bGwsbnVsbF1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShpbmxpbmVUYXJnZXQoNDIsIDQzLCA0NCkpLCBgWzQyLDQzLDQ0LG51bGwsbnVsbF1gKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIsIDQzLCA0NCwgNDUp
KSwgYFs0Miw0Myw0NCw0NSxudWxsXWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGlu
bGluZVRhcmdldCg0MiwgNDMsIDQ0LCA0NSwgNDYpKSwgYFs0Miw0Myw0NCw0NSw0Nl1gKTsKKyAg
ICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIsIDQzLCA0NCwgNDUsIDQ2
LCA0NykpLCBgWzQyLDQzLDQ0LDQ1LDQ2XWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5
KGlubGluZVRhcmdldCg0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCkpLCBgWzQyLDQzLDQ0LDQ1
LDQ2XWApOworfQorbm9JbmxpbmUodGVzdCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDNlNDsgKytp
KQorICAgIHRlc3QoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21hdGNo
LXJlc3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1yZXN0LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE4NTg0Y2NlMjliODcxNzM3NzY2MGUyZmZkZTk5NGQzMDZlMzY5NDUKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1yZXN0LmpzCkBAIC0wLDAgKzEs
NjUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsKTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0MiguLi5y
ZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlc3Q7CisgICAgfQorCisgICAgZnVuY3Rpb24g
dGVzdDEoYXJnMSwgYXJnMiwgYXJnMykKKyAgICB7CisgICAgICAgIHJldHVybiB0ZXN0Mihhcmcx
LCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICB7CisgICAg
ICAgIHZhciByZXN1bHQgPSB0ZXN0MSgpOworICAgICAgICBzaG91bGRCZShyZXN1bHQubGVuZ3Ro
LCAzKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzBdLCB1bmRlZmluZWQpOworICAgICAgICBz
aG91bGRCZShyZXN1bHRbMV0sIHVuZGVmaW5lZCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsy
XSwgdW5kZWZpbmVkKTsKKyAgICB9CisgICAgbm9JbmxpbmUodGVzdCk7CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAgICB0ZXN0KCk7Cit9KCkpOworCisoZnVuY3Rp
b24gKCkgeworICAgIGZ1bmN0aW9uIHRlc3QxKC4uLnJlc3QpCisgICAgeworICAgICAgICByZXR1
cm4gcmVzdDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICB7CisgICAgICAgIHZh
ciByZXN1bHQgPSB0ZXN0MSgpOworICAgICAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAwKTsK
KyAgICB9CisgICAgbm9JbmxpbmUodGVzdCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFl
NDsgKytpKQorICAgICAgICB0ZXN0KCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1
bmN0aW9uIHRlc3QxKC4uLnJlc3QpCisgICAgeworICAgICAgICByZXR1cm4gcmVzdDsKKyAgICB9
CisgICAgbm9JbmxpbmUodGVzdDEpOworCisgICAgZnVuY3Rpb24gdGVzdCgpCisgICAgeworICAg
ICAgICB2YXIgcmVzdWx0ID0gdGVzdDEoKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0
aCwgMCk7CisgICAgfQorICAgIG5vSW5saW5lKHRlc3QpOworCisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgdGVzdCgpOworfSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319707</attachid>
            <date>2017-09-02 01:19:42 -0700</date>
            <delta_ts>2017-09-02 01:19:42 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175523-20170902171941.patch</filename>
            <type>text/plain</type>
            <size>63651</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MjJkY2Q5NGU4ZWZjMTQ3YTUyYzFmODJmMjQzOTE4MjFhYWMwNDMxLi5hYmMzMDE2YWQ4OWJlOTBh
ZjQ5NDZhMjc2ZTc3NWQ4Yzk3Y2QwMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MSBAQAorMjAxNy0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3VyIERGRyBwaXBlbGluZSBn
aXZlcyB1cCBpbmxpbmluZyB3aGVuIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0IGZ1bmN0aW9uIGlz
IG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIHRoZSBhcmd1bWVudHMuCisgICAgICAgIEl0IGVmZmVj
dGl2ZWx5IHByZXZlbnRzIHVzIGZyb20gaW5saW5pbmcgYW5kIG9wdGltaXppbmcgZnVuY3Rpb25z
LCB3aGljaCB0YWtlcyBzb21lIG9wdGlvbmFsIGFyZ3VtZW50cyBpbiB0aGUgZm9ybQorICAgICAg
ICBvZiB0aGUgcHJlLUVTNi4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGFib3Zl
IHJlc3RyaWN0aW9uIGJ5IHBlcmZvcm1pbmcgdGhlIGFyaXR5IGZpeHVwIGluIERGRy4KKworICAg
ICAgICBTaXhTcGVlZCBzaG93cyBpbXByb3ZlbWVudCB3aGVuIHdlIGNhbiBpbmxpbmUgYXJpdHkt
bWlzbWF0Y2hlZCBmdW5jdGlvbnMuIChGb3IgZXhhbXBsZSwgY2FsbGluZyBnZW5lcmF0b3IubmV4
dCgpKS4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmUg
ICAgICAgICAgICAgICAgICBwYXRjaGVkCisKKyAgICAgICAgZGVmYXVsdHMuZXM1ICAgICAgICAg
ICAgIDEyMzIuMTIyNistMjAuNjc3NSAgICBeICAgIDQ0Mi4zMzI2Ky0yNi4xODgzICAgICAgIF4g
ZGVmaW5pdGVseSAyLjc4NTV4IGZhc3RlcgorICAgICAgICByZXN0LmVzNiAgICAgICAgICAgICAg
ICAgICAgNS4zNDA2Ky0wLjg1ODggICAgIF4gICAgICAzLjU4MTIrLTAuNTM4OCAgICAgICAgXiBk
ZWZpbml0ZWx5IDEuNDkxM3ggZmFzdGVyCisgICAgICAgIHNwcmVhZC1nZW5lcmF0b3IuZXM2ICAg
ICAgMzIwLjkxMDcrLTEyLjQ4MDggICAgICAgICAzMTAuNDI5NSstMTIuMDA0NyAgICAgICAgIG1p
Z2h0IGJlIDEuMDMzOHggZmFzdGVyCisgICAgICAgIGdlbmVyYXRvci5lczYgICAgICAgICAgICAg
MzE4LjM1MTQrLTkuNjAyMyAgICAgXiAgICAyODYuNDk3NCstMTIuNjIwMyAgICAgICBeIGRlZmlu
aXRlbHkgMS4xMTEyeCBmYXN0ZXIKKworICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFt
ZS5jcHA6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dCBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6
OklubGluZUNhbGxGcmFtZTo6SW5saW5lQ2FsbEZyYW1lKToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAq
IGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
QXJndW1lbnRzVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjphcmd1bWVudHNJbnZv
bHZlU3RhY2tTbG90KToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0Q29kZVRvR2V0QXJndW1lbnRz
QXJyYXlMZW5ndGgpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldExvY2FsKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0QXJndW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpmaW5kQXJndW1lbnRQb3NpdGlvbkZvckxvY2FsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpnZXRBcmd1bWVudENvdW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aW5saW5pbmdDb3N0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVt
cHRUb0lubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tF
bnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNvbW1vbkRhdGE6OnZhbGlkYXRlUmVmZXJlbmNlcyk6Cisg
ICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6aXNMaXZlSW5CeXRlY29k
ZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmZvckFsbExvY2Fsc0xpdmVJbkJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSQXZhaWxh
YmlsaXR5QW5hbHlzaXNQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TG9jYWxPU1JBdmFp
bGFiaWxpdHlDYWxjdWxhdG9yOjpleGVjdXRlTm9kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRz
KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZHUHJl
Y2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENs
b2JiZXJpemVBZGFwdG9yOjpyZWFkVG9wKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0R2V0TGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVj
dEFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlN0YWNrTGF5b3V0UGhhc2U6OnJ1bik6CisgICAgICAgICogZnRsL0ZU
TENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0
bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzTGVuZ3RoKToKKyAgICAgICAgKiBmdGwvRlRMT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmpl
Y3RJbk9TUik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpyZWFkSW5saW5lZEZyYW1lKToKKyAgICAgICAgKiBqaXQv
QXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YXJndW1l
bnRzU3RhcnQpOgorICAgICAgICAqIGppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHA6CisgICAgICAg
IChKU0M6OmVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKToKKyAgICAgICAgKiBydW50aW1l
L0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6Y3Jl
YXRlV2l0aElubGluZUZyYW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
OgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6Om51bWJlck9mRXh0cmFTbG90cyk6Cisg
ICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6bnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90cyk6
CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6bnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90
c1dpdGhFeHRyYVNsb3RzKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjphcml0eUNo
ZWNrRm9yKToKKyAgICAgICAgKiBydW50aW1lL1N0YWNrQWxpZ25tZW50Lmg6CisgICAgICAgIChK
U0M6OnN0YWNrQWxpZ25tZW50Qnl0ZXMpOgorICAgICAgICAoSlNDOjpzdGFja0FsaWdubWVudFJl
Z2lzdGVycyk6CisKIDIwMTctMDktMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKICAgICAgICAgW0ZUTF0gRlRMIGFsbG9jYXRpb24gZm9yIGFzeW5jIEZ1bmN0aW9u
IGlzIGluY29ycmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lubGluZUNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5s
aW5lQ2FsbEZyYW1lLmNwcAppbmRleCA5N2NlODRkNjM1ODMwMzIwOGNmMDYwZTNjNWM2YWJkMzZl
NjI3ZjYxLi4yZmU1MWFmNjFiY2JlNWJjODY4ODA2NDZiMjE4MDc1ZDRiNDE2NjExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcApA
QCAtNzQsNyArNzQsOCBAQCB2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dChQcmlu
dFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29ucwogICAgICAgICBvdXQucHJp
bnQoIiwgY2xvc3VyZSBjYWxsIik7CiAgICAgZWxzZQogICAgICAgICBvdXQucHJpbnQoIiwga25v
d24gY2FsbGVlOiAiLCBpbkNvbnRleHQoY2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKSwgY29udGV4
dCkpOwotICAgIG91dC5wcmludCgiLCBudW1BcmdzK3RoaXMgPSAiLCBhcmd1bWVudHMuc2l6ZSgp
KTsKKyAgICBvdXQucHJpbnQoIiwgbnVtQXJncyt0aGlzID0gIiwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpOworICAgIG91dC5wcmludCgiLCBudW1GaXh1cCA9ICIsIGFyZ3VtZW50c1dpdGhG
aXh1cC5zaXplKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgb3V0LnByaW50
KCIsIHN0YWNrT2Zmc2V0ID0gIiwgc3RhY2tPZmZzZXQpOwogICAgIG91dC5wcmludCgiICgiLCB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgwKSwgIiBtYXBzIHRvICIsIHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKDApICsgc3RhY2tPZmZzZXQsICIpPiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCmluZGV4IGJlMWFmZGIxOTY3OWQ0N2Ew
YTBjYTVjYWVhY2Q1ZTI1MWU5YThjNTYuLjA4YzA0YjQwM2M2YWM5NDkzOGU4YjQ3NWIxNDZkNmRm
ZmFkMmU4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Jbmxp
bmVDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5l
Q2FsbEZyYW1lLmgKQEAgLTE3NSwxMSArMTc1LDEyIEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUg
ewogICAgICAgICByZXR1cm4gY2FsbGVyID8gY2FsbGVyLT5pbmxpbmVDYWxsRnJhbWUgOiBudWxs
cHRyOwogICAgIH0KICAgICAKLSAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeT4gYXJndW1lbnRzOyAv
LyBJbmNsdWRlcyAndGhpcycuCisgICAgVmVjdG9yPFZhbHVlUmVjb3Zlcnk+IGFyZ3VtZW50c1dp
dGhGaXh1cDsgLy8gSW5jbHVkZXMgJ3RoaXMnIGFuZCBhcml0eSBmaXh1cHMuCiAgICAgV3JpdGVC
YXJyaWVyPENvZGVCbG9jaz4gYmFzZWxpbmVDb2RlQmxvY2s7CiAgICAgVmFsdWVSZWNvdmVyeSBj
YWxsZWVSZWNvdmVyeTsKICAgICBDb2RlT3JpZ2luIGRpcmVjdENhbGxlcjsKIAorICAgIHVuc2ln
bmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyAvLyBEbyBub3QgaW5jbHVkZSBmaXh1cHMu
CiAgICAgc2lnbmVkIHN0YWNrT2Zmc2V0IDogMjg7CiAgICAgdW5zaWduZWQga2luZCA6IDM7IC8v
IHJlYWwgdHlwZSBpcyBLaW5kCiAgICAgYm9vbCBpc0Nsb3N1cmVDYWxsIDogMTsgLy8gSWYgZmFs
c2UgdGhlbiB3ZSBrbm93IHRoYXQgY2FsbGVlL3Njb3BlIGFyZSBjb25zdGFudHMgYW5kIHRoZSBE
Rkcgd29uJ3QgdHJlYXQgdGhlbSBhcyB2YXJpYWJsZXMsIGkuZS4gdGhleSBoYXZlIHRvIGJlIHJl
Y292ZXJlZCBtYW51YWxseS4KQEAgLTE4OSw3ICsxOTAsOCBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZy
YW1lIHsKICAgICAvLyBJbmxpbmVDYWxsRnJhbWUncyBmaWVsZHMuIFRoaXMgY29uc3RydWN0b3Ig
aXMgaGVyZSBqdXN0IHRvIHJlZHVjZSBjb25mdXNpb24gaWYKICAgICAvLyB3ZSBmb3Jnb3QgdG8g
aW5pdGlhbGl6ZSBleHBsaWNpdGx5LgogICAgIElubGluZUNhbGxGcmFtZSgpCi0gICAgICAgIDog
c3RhY2tPZmZzZXQoMCkKKyAgICAgICAgOiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygwKQor
ICAgICAgICAsIHN0YWNrT2Zmc2V0KDApCiAgICAgICAgICwga2luZChDYWxsKQogICAgICAgICAs
IGlzQ2xvc3VyZUNhbGwoZmFsc2UpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDg2ODZl
M2E4YTVmZDBiM2ZjNDVmNzg2ZmY2NWM5NGZiNTBjYTQ0NzIuLmExYTIxNmEyODE5YjUzMzI2MjQ3
YzM4MDI4NWM5OGRjYTIwZmI0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE3NTgsNyArMTc1
OCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1
dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IHVuc2lnbmVkIGFyZ3VtZW50SW5kZXggPSBpbmRleC5hc1VJbnQzMigpICsgbm9kZS0+bnVtYmVy
T2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpIHsK
LSAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRJbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzLnNpemUoKSAtIDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRJbmRleCA8
IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkgPSBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJh
bmQoCiAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChh
cmd1bWVudEluZGV4ICsgMSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KTsKICAgICAg
ICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKQEAgLTE3Nzcs
NyArMTc3Nyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAvLyBXZSBo
YXZlIGEgYm91bmQgb24gdGhlIHR5cGVzIGV2ZW4gdGhvdWdoIGl0J3MgcmFuZG9tIGFjY2Vzcy4g
VGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcy4KICAgICAgICAgICAgIAogICAgICAgICAgICAgQWJzdHJh
Y3RWYWx1ZSByZXN1bHQ7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgbm9kZS0+
bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgbm9kZS0+
bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5tZXJnZSgK
ICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAogICAgICAg
ICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkgKyBpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCBjM2NmODI5
ZGVjZTJkNTI3MzkxMDk4MjZiZThjMWMxOTAyOThmMGIwLi5hYTM5OGUwZTJjMjE1YzM1MTYxZGZh
NGQwZGUzYmYyNmQwMmRiMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTQ5MCw3ICs0OTAs
NyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFpc0Nsb2JiZXJlZEJ5QmxvY2spIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgLSAxOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkgKwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNl
dChpKTsKQEAgLTcwMCw3ICs3MDAsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBzYWZlVG9HZXRTdGFjazsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZVRv
R2V0U3RhY2sgPSBpbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZVRvR2V0U3RhY2sgPSBpbmRleCA8IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZVRv
R2V0U3RhY2sgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKSAtIDE7CkBAIC04
MDUsNyArODA1LDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzcHJlYWQtPm9w
KCkgPT0gUGhhbnRvbVNwcmVhZCAmJiBzcHJlYWQtPmNoaWxkMSgpLT5vcCgpID09IFBoYW50b21D
cmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVt
YmVyT2ZBcmd1bWVudHNUb1NraXAgPSBzcHJlYWQtPmNoaWxkMSgpLT5udW1iZXJPZkFyZ3VtZW50
c1RvU2tpcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJh
bWUqIGlubGluZUNhbGxGcmFtZSA9IHNwcmVhZC0+Y2hpbGQxKCktPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAt
IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lQXJndW1l
bnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAx
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnJhbWVBcmd1bWVudENvdW50
ID49IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZyYW1lQXJndW1lbnRDb3VudCAtIG51bWJlck9mQXJndW1lbnRzVG9T
a2lwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTgzNCw3
ICs4MzQsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzcHJlYWQtPm9w
KCkgPT0gUGhhbnRvbVNwcmVhZCAmJiBzcHJlYWQtPmNoaWxkMSgpLT5vcCgpID09IFBoYW50b21D
cmVhdGVSZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gc3ByZWFkLT5jaGlsZDEoKS0+bnVtYmVyT2ZBcmd1
bWVudHNUb1NraXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElubGlu
ZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gc3ByZWFkLT5jaGlsZDEoKS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGZyYW1lQXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBmcmFtZUFyZ3VtZW50Q291bnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgbG9hZEluZGV4ID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7IGxvYWRJbmRl
eCA8IGZyYW1lQXJndW1lbnRDb3VudDsgKytsb2FkSW5kZXgpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gdmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQobG9hZEluZGV4ICsgMSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWNrQWNjZXNz
RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdGFja0FjY2Vzc0RhdGEuYWRkKHJlZywgRmx1c2hlZEpT
VmFsdWUpOwpAQCAtODg3LDcgKzg4Nyw3IEBAIGNsYXNzIEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFpbmxpbmVDYWxsRnJhbWUt
PmlzVmFyYXJncygpKSB7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzID4gdmFyYXJnc0RhdGEtPm9mZnNldCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLT0gdmFyYXJnc0RhdGEtPm9mZnNldDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC05MDksNyArOTA5LDcgQEAgY2xh
c3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IG51bGxwdHI7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb2FkSW5kZXggPSBzdG9yZUlu
ZGV4ICsgdmFyYXJnc0RhdGEtPm9mZnNldDsKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGxvYWRJbmRleCArIDEgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5z
aXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2FkSW5k
ZXggKyAxIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBy
ZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChsb2FkSW5kZXggKyAxKSArIGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5h
ZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZywgRmx1
c2hlZEpTVmFsdWUpOwpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWlu
YXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChzcHJlYWQtPmNoaWxkMSgpLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVD
YWxsRnJhbWUgPSBzcHJlYWQtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFy
Z3VtZW50c1RvU2tpcCA9IHNwcmVhZC0+Y2hpbGQxKCktPm51bWJlck9mQXJndW1lbnRzVG9Ta2lw
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEg
KyBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDEgKyBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX3N0YWNr
QWNjZXNzRGF0YS5hZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsdXNoZWRKU1Zh
bHVlKTsKQEAgLTEwNjksNyArMTA2OSw3IEBAIGNsYXNzIEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZy
YW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBjYW5kaWRhdGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYm
ICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmVjdG9yPE5vZGUqPiBhcmd1bWVudHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMSArIHZhcmFyZ3NEYXRhLT5maXJzdFZhckFyZ09mZnNldDsg
aSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIHZhcmFyZ3NEYXRhLT5maXJz
dFZhckFyZ09mZnNldDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXM7ICsraSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFja0FjY2Vz
c0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RhY2tBY2Nlc3NEYXRhLmFkZCgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpICsg
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZsdXNoZWRKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcAppbmRleCAwNjFhMjg0Y2Y1ZDQ5N2M5NTk4
N2U5ZjYzMDU2ZTVlOTc0M2Q2ZGQxLi5iMGY1MjkxMTkyNThjYmRmNzM4YWJlZDM3NDQxZjJmMjYw
MjE5ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50
c1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNVdGlsaXRpZXMuY3BwCkBAIC00NSw3ICs0NSw4IEBAIGJvb2wgYXJndW1lbnRzSW52b2x2ZVN0
YWNrU2xvdChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVy
CiAgICAgICAgICYmIHJlZyA9PSBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAKLSAgICB1bnNpZ25lZCBudW1Bcmd1bWVudHMgPSBpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50cy5zaXplKCkgLSAxOworICAgIC8vIFdlIGRvIG5vdCBpbmNsdWRlIGZpeHVwcyBo
ZXJlIHNpbmNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHxhcmd1bWVudHN8LCByZXN0IHBhcmFtZXRl
cnMsIGFuZCB2YXJhcmdzLgorICAgIHVuc2lnbmVkIG51bUFyZ3VtZW50cyA9IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSAxOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBhcmd1bWVudFN0YXJ0ID0KICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQpICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKTsKICAgICByZXR1
cm4gcmVnID49IGFyZ3VtZW50U3RhcnQgJiYgcmVnIDwgYXJndW1lbnRTdGFydCArIG51bUFyZ3Vt
ZW50czsKQEAgLTc0LDcgKzc1LDcgQEAgTm9kZSogZW1pdENvZGVUb0dldEFyZ3VtZW50c0FycmF5
TGVuZ3RoKAogICAgICAgICBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IGFyZ3VtZW50cy0+bnVt
YmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKICAgICAKICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYm
ICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGFyZ3Vt
ZW50c1NpemUgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxOworICAgICAg
ICB1bnNpZ25lZCBhcmd1bWVudHNTaXplID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyAtIDE7CiAgICAgICAgIGlmIChhcmd1bWVudHNTaXplID49IG51bWJlck9m
QXJndW1lbnRzVG9Ta2lwKQogICAgICAgICAgICAgYXJndW1lbnRzU2l6ZSAtPSBudW1iZXJPZkFy
Z3VtZW50c1RvU2tpcDsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBmY2EwMzNiMGNkZmE0MzFkYzlhMTNmMzYw
YmEzYjExYjNjMGJkZjU4Li4yNzljMTUxMWFmMzdmMTU3YTk2MjZlYWJiN2RkMmU3NWYxMmNhODBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKKyNpbmNs
dWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJERkdBYnN0cmFjdEhlYXAuaCIKICNp
bmNsdWRlICJERkdBcnJheU1vZGUuaCIKICNpbmNsdWRlICJERkdDRkcuaCIKQEAgLTYyLDYgKzYz
LDcgQEAKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9TZXRGb3JT
Y29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewpAQCAtMjIwLDcgKzIyMiw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2Vy
IHsKICAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCwgTm9kZSogY2FsbFRh
cmdldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bW50KTsKICAgICB2b2lkIGVtaXRBcmd1bWVu
dFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKTsKICAgICBOb2RlKiBnZXRBcmd1bWVudENvdW50KCk7Ci0gICAgdW5zaWduZWQgaW5saW5p
bmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENhbGxN
b2RlKTsgLy8gUmV0dXJuIFVJTlRfTUFYIGlmIGl0J3Mgbm90IGFuIGlubGluaW5nIGNhbmRpZGF0
ZS4gQnkgY29udmVudGlvbiwgaW50cmluc2ljcyBoYXZlIGEgY29zdCBvZiAxLgorICAgIHVuc2ln
bmVkIGlubGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOyAvLyBSZXR1cm4gVUlOVF9NQVggaWYgaXQncyBu
b3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5zaWNzIGhhdmUg
YSBjb3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5nLiBSZXR1cm4gdHJ1ZSBpZiBpdCBz
dWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgogICAgIGJvb2wgaGFu
ZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25z
dCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRo
aXNBcmd1bWVudCwgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBh
cmd1bWVudHNPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQg
bmV4dE9mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIGVudW0gQ2FsbGVyTGlua2FiaWxpdHkgeyBDYWxs
ZXJEb2VzTm9ybWFsTGlua2luZywgQ2FsbGVyTGlua3NNYW51YWxseSB9OwpAQCAtNDcwLDggKzQ3
Miw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB9CiAgICAgTm9kZSogc2V0TG9jYWwo
Y29uc3QgQ29kZU9yaWdpbiYgc2VtYW50aWNPcmlnaW4sIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5k
LCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQogICAgIHsKLSAgICAg
ICAgQ29kZU9yaWdpbiBvbGRTZW1hbnRpY09yaWdpbiA9IG1fY3VycmVudFNlbWFudGljT3JpZ2lu
OwotICAgICAgICBtX2N1cnJlbnRTZW1hbnRpY09yaWdpbiA9IHNlbWFudGljT3JpZ2luOworICAg
ICAgICBTZXRGb3JTY29wZTxDb2RlT3JpZ2luPiBvcmlnaW5DaGFuZ2UobV9jdXJyZW50U2VtYW50
aWNPcmlnaW4sIHNlbWFudGljT3JpZ2luKTsKIAogICAgICAgICB1bnNpZ25lZCBsb2NhbCA9IG9w
ZXJhbmQudG9Mb2NhbCgpOwogICAgICAgICAKQEAgLTQ5MCw4ICs0OTEsNiBAQCBjbGFzcyBCeXRl
Q29kZVBhcnNlciB7CiAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKHNlbWFudGljT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIEJhZEluZGV4aW5nVHlw
ZSkpOwogICAgICAgICBOb2RlKiBub2RlID0gYWRkVG9HcmFwaChTZXRMb2NhbCwgT3BJbmZvKHZh
cmlhYmxlQWNjZXNzRGF0YSksIHZhbHVlKTsKICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlh
Ymxlc0F0VGFpbC5sb2NhbChsb2NhbCkgPSBub2RlOwotCi0gICAgICAgIG1fY3VycmVudFNlbWFu
dGljT3JpZ2luID0gb2xkU2VtYW50aWNPcmlnaW47CiAgICAgICAgIHJldHVybiBub2RlOwogICAg
IH0KIApAQCAtNTI1LDggKzUyNCw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB9CiAg
ICAgTm9kZSogc2V0QXJndW1lbnQoY29uc3QgQ29kZU9yaWdpbiYgc2VtYW50aWNPcmlnaW4sIFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9y
bWFsU2V0KQogICAgIHsKLSAgICAgICAgQ29kZU9yaWdpbiBvbGRTZW1hbnRpY09yaWdpbiA9IG1f
Y3VycmVudFNlbWFudGljT3JpZ2luOwotICAgICAgICBtX2N1cnJlbnRTZW1hbnRpY09yaWdpbiA9
IHNlbWFudGljT3JpZ2luOworICAgICAgICBTZXRGb3JTY29wZTxDb2RlT3JpZ2luPiBvcmlnaW5D
aGFuZ2UobV9jdXJyZW50U2VtYW50aWNPcmlnaW4sIHNlbWFudGljT3JpZ2luKTsKIAogICAgICAg
ICB1bnNpZ25lZCBhcmd1bWVudCA9IG9wZXJhbmQudG9Bcmd1bWVudCgpOwogICAgICAgICBBU1NF
UlQoYXJndW1lbnQgPCBtX251bUFyZ3VtZW50cyk7CkBAIC01NDksOCArNTQ3LDYgQEAgY2xhc3Mg
Qnl0ZUNvZGVQYXJzZXIgewogICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShzZW1hbnRpY09yaWdpbi5ieXRlY29kZUluZGV4LCBCYWRJbmRleGlu
Z1R5cGUpKTsKICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9wSW5m
byh2YXJpYWJsZUFjY2Vzc0RhdGEpLCB2YWx1ZSk7CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT52
YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpID0gbm9kZTsKLQotICAgICAgICBtX2N1
cnJlbnRTZW1hbnRpY09yaWdpbiA9IG9sZFNlbWFudGljT3JpZ2luOwogICAgICAgICByZXR1cm4g
bm9kZTsKICAgICB9CiAgICAgCkBAIC01NzIsNyArNTY4LDcgQEAgY2xhc3MgQnl0ZUNvZGVQYXJz
ZXIgewogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKG9wZXJhbmQu
b2Zmc2V0KCkgPT0gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhp
c0FyZ3VtZW50T2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICBpZiAob3BlcmFuZC5vZmZzZXQoKSA+PSBzdGF0aWNfY2FzdDxpbnQ+KGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICsgaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSkKKyAgICAgICAgICAgIGlmIChvcGVyYW5kLm9m
ZnNldCgpID49IHN0YXRpY19jYXN0PGludD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKyBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50c1dpdGhGaXh1cC5zaXplKCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgaW50IGFyZ3VtZW50ID0gVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQub2Zmc2V0KCkgLSBp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0FyZ3VtZW50KCk7CiAgICAgICAgICAgICBy
ZXR1cm4gc3RhY2stPm1fYXJndW1lbnRQb3NpdGlvbnNbYXJndW1lbnRdOwpAQCAtNjMyLDcgKzYy
OCw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgaW50IG51bUFyZ3VtZW50czsK
ICAgICAgICAgaWYgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lU3Rh
Y2tFbnRyeS0+bV9pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9oYXNE
ZWJ1Z2dlckVuYWJsZWQpOwotICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpOworICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKGlu
bGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKICAgICAgICAgICAgICAgICBmbHVzaERpcmVj
dChpbmxpbmVTdGFja0VudHJ5LT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkpKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpKQpAQCAtMTQxOCw3ICsxNDE0LDcgQEAgTm9kZSogQnl0ZUNvZGVQYXJzZXI6OmdldEFy
Z3VtZW50Q291bnQoKQogICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxs
RnJhbWUtPmlzVmFyYXJncygpKQogICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9IGdldChWaXJ0
dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBhcmd1bWVudENvdW50ID0ganNDb25zdGFudChtX2dyYXBoLmZyZWV6ZShq
c051bWJlcihtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKSkpLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBqc0NvbnN0YW50
KG1fZ3JhcGguZnJlZXplKGpzTnVtYmVyKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpLT52YWx1ZSgpKTsKICAgICB9IGVsc2UK
ICAgICAgICAgYXJndW1lbnRDb3VudCA9IGFkZFRvR3JhcGgoR2V0QXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIE9wSW5mbygwKSwgT3BJbmZvKFNwZWNJbnQzMk9ubHkpKTsKICAgICByZXR1cm4g
YXJndW1lbnRDb3VudDsKQEAgLTE0MzAsOSArMTQyNiwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjplbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SQogICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIH0KIAotdW5zaWduZWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgQ2FsbE1vZGUgY2FsbE1vZGUpCit1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6
aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50LCBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQga2luZCkKIHsKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBzcGVjaWFsaXph
dGlvbktpbmRGb3IoY2FsbE1vZGUpOworICAgIENhbGxNb2RlIGNhbGxNb2RlID0gSW5saW5lQ2Fs
bEZyYW1lOjpjYWxsTW9kZUZvcihraW5kKTsKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNw
ZWNpYWxpemF0aW9uS2luZCA9IHNwZWNpYWxpemF0aW9uS2luZEZvcihjYWxsTW9kZSk7CiAgICAg
aWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGlubGluaW5nICIsIGNh
bGxlZSwgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwogICAgIApAQCAtMTQ1
NiwzMCArMTQ1MywyMSBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENh
bGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQogICAgIC8vIHRvIGlubGlu
ZSBpdCBpZiB3ZSBoYWQgYSBzdGF0aWMgcHJvb2Ygb2Ygd2hhdCB3YXMgYmVpbmcgY2FsbGVkOyB0
aGlzIG1pZ2h0IGhhcHBlbiBmb3IgZXhhbXBsZQogICAgIC8vIGlmIHlvdSBjYWxsIGEgZ2xvYmFs
IGZ1bmN0aW9uLCB3aGVyZSB3YXRjaHBvaW50aW5nIGdpdmVzIHVzIHN0YXRpYyBpbmZvcm1hdGlv
bi4gT3ZlcmFsbCwKICAgICAvLyBpdCdzIGEgcmFyZSBjYXNlIGJlY2F1c2Ugd2UgZXhwZWN0IHRo
YXQgYW55IGhvdCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBpbGVkLgotICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Io
a2luZCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNlbGluZUNv
ZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOwogICAgIGlmICghY29kZUJsb2NrKSB7CiAg
ICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVj
YXVzZSBubyBjb2RlIGJsb2NrIGF2YWlsYWJsZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9N
QVg7CiAgICAgfQogCi0gICAgLy8gRG9lcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3ZSdyZSBw
YXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0PyBXZSBjdXJyZW50bHkKLSAgICAv
LyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgaXMgZ3JlYXRl
ciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKLSAgICAvLyBhcmd1bWVudHMgZXhwZWN0ZWQu
Ci0gICAgaWYgKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID4gYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nKCIg
ICAgRmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNoLlxuIik7Ci0gICAgICAgIHJldHVy
biBVSU5UX01BWDsKLSAgICB9Ci0KICAgICBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
ID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwoCi0gICAgICAgIGNvZGVCbG9jaywg
a2luZCwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CisgICAgICAgIGNvZGVCbG9jaywgc3BlY2lh
bGl6YXRpb25LaW5kLCBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsKICAgICBpZiAodmVyYm9zZSkg
ewogICAgICAgICBkYXRhTG9nKCIgICAgQ2FsbCBtb2RlOiAiLCBjYWxsTW9kZSwgIlxuIik7CiAg
ICAgICAgIGRhdGFMb2coIiAgICBJcyBjbG9zdXJlIGNhbGw6ICIsIGNhbGxlZS5pc0Nsb3N1cmVD
YWxsKCksICJcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICAgQ2FwYWJpbGl0eSBsZXZlbDogIiwg
Y2FwYWJpbGl0eUxldmVsLCAiXG4iKTsKLSAgICAgICAgZGF0YUxvZygiICAgIE1pZ2h0IGlubGlu
ZSBmdW5jdGlvbjogIiwgbWlnaHRJbmxpbmVGdW5jdGlvbkZvcihjb2RlQmxvY2ssIGtpbmQpLCAi
XG4iKTsKLSAgICAgICAgZGF0YUxvZygiICAgIE1pZ2h0IGNvbXBpbGUgZnVuY3Rpb246ICIsIG1p
Z2h0Q29tcGlsZUZ1bmN0aW9uRm9yKGNvZGVCbG9jaywga2luZCksICJcbiIpOworICAgICAgICBk
YXRhTG9nKCIgICAgTWlnaHQgaW5saW5lIGZ1bmN0aW9uOiAiLCBtaWdodElubGluZUZ1bmN0aW9u
Rm9yKGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kKSwgIlxuIik7CisgICAgICAgIGRhdGFM
b2coIiAgICBNaWdodCBjb21waWxlIGZ1bmN0aW9uOiAiLCBtaWdodENvbXBpbGVGdW5jdGlvbkZv
cihjb2RlQmxvY2ssIHNwZWNpYWxpemF0aW9uS2luZCksICJcbiIpOwogICAgICAgICBkYXRhTG9n
KCIgICAgSXMgc3VwcG9ydGVkIGZvciBpbmxpbmluZzogIiwgaXNTdXBwb3J0ZWRGb3JJbmxpbmlu
Zyhjb2RlQmxvY2spLCAiXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIElzIGlubGluaW5nIGNh
bmRpZGF0ZTogIiwgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aXNJbmxpbmlu
Z0NhbmRpZGF0ZSgpLCAiXG4iKTsKICAgICB9CkBAIC0xNTQ1LDE0ICsxNTMzLDI3IEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1
bHRPcGVyYW5kLCBDYWxsVmFyCiB7CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFs
aXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5k
KTsKICAgICAKLSAgICBBU1NFUlQoaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCkpICE9IFVJTlRf
TUFYKTsKKyAgICBBU1NFUlQoaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIGtpbmQpICE9IFVJTlRfTUFYKTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUoKS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Io
c3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBpbnNlcnRDaGVja3MoY29kZUJsb2NrKTsKIAogICAg
IC8vIEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFudHMhCisKKyAgICAvLyBhcml0eUZpeHVwQ291
bnQgYW5kIG51bWJlck9mU3RhY2tQYWRkaW5nU2xvdHMgYXJlIGRpZmZlcmVudC4gV2hpbGUgYXJp
dHlGaXh1cENvdW50IGRvZXMgbm90IGNvbnNpZGVyIGFib3V0IHN0YWNrIGFsaWdubWVudCwKKyAg
ICAvLyBudW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3RzIGNvbnNpZGVyIGFsaWdubWVudC4gQ29uc2lk
ZXIgdGhlIGZvbGxvd2luZyBjYXNlLAorICAgIC8vCisgICAgLy8gYmVmb3JlOiBbIC4uLiBdW2Fy
ZzBdW2hlYWRlcl0KKyAgICAvLyBhZnRlcjogIFsgLi4uIF1bZXh0IF1bYXJnMV1bYXJnMF1baGVh
ZGVyXQorICAgIC8vCisgICAgLy8gSW4gdGhlIGFib3ZlIGNhc2UsIGFyaXR5Rml4dXBDb3VudCBp
cyAxLiBCdXQgbnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90cyBpcyAyIGJlY2F1c2UgdGhlIHN0YWNr
IG5lZWRzIHRvIGJlIGFsaWduZWQuCisgICAgLy8gV2UgaW5zZXJ0IGV4dHJhIHNsb3RzIHRvIGFs
aWduIHN0YWNrLgorICAgIGludCBhcml0eUZpeHVwQ291bnQgPSBzdGQ6Om1heDxpbnQ+KGNvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIDApOwor
ICAgIGludCBudW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3RzID0gQ29tbW9uU2xvd1BhdGhzOjpudW1i
ZXJPZlN0YWNrUGFkZGluZ1Nsb3RzKGNvZGVCbG9jaywgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpOworICAgIEFTU0VSVCghKG51bWJlck9mU3RhY2tQYWRkaW5nU2xvdHMgJSBzdGFja0FsaWdu
bWVudFJlZ2lzdGVycygpKSk7CisgICAgaW50IHJlZ2lzdGVyT2Zmc2V0QWZ0ZXJGaXh1cCA9IHJl
Z2lzdGVyT2Zmc2V0IC0gbnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90czsKICAgICAKLSAgICBpbnQg
aW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmly
dHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0KSkub2Zmc2V0KCkgKyBDYWxsRnJhbWU6OmhlYWRl
clNpemVJblJlZ2lzdGVyczsKKyAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGlu
ZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0QWZ0
ZXJGaXh1cCkpLm9mZnNldCgpICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7CiAg
ICAgCiAgICAgZW5zdXJlTG9jYWxzKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2Fs
bEZyYW1lU3RhcnQpLnRvTG9jYWwoKSArIDEgKwpAQCAtMTU2NywxMiArMTU2OCw0MCBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVz
dWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogY2FsbGVlVmFyaWFi
bGUgPSBudWxscHRyOwogICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CiAgICAgICAg
IE5vZGUqIGNhbGxlZVNldCA9IHNldCgKLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihyZWdp
c3Rlck9mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIGNhbGxUYXJnZXROb2RlLCBJbW1l
ZGlhdGVOYWtlZFNldCk7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZz
ZXRBZnRlckZpeHVwICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgY2FsbFRhcmdldE5vZGUsIElt
bWVkaWF0ZU5ha2VkU2V0KTsKICAgICAgICAgCiAgICAgICAgIGNhbGxlZVZhcmlhYmxlID0gY2Fs
bGVlU2V0LT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgY2FsbGVlVmFyaWFibGUtPm1l
cmdlU2hvdWxkTmV2ZXJVbmJveCh0cnVlKTsKICAgICB9CiAgICAgCisgICAgaWYgKGFyaXR5Rml4
dXBDb3VudCkgeworICAgICAgICBOb2RlKiB1bmRlZmluZWQgPSBhZGRUb0dyYXBoKEpTQ29uc3Rh
bnQsIE9wSW5mbyhtX2NvbnN0YW50VW5kZWZpbmVkKSk7CisgICAgICAgIGF1dG8gZmlsbCA9IFsm
XSAoVmlydHVhbFJlZ2lzdGVyIHJlZywgTm9kZSogdmFsdWUpIHsKKyAgICAgICAgICAgIE5vZGUq
IHJlc3VsdCA9IHNldChyZWcsIHZhbHVlLCBJbW1lZGlhdGVOYWtlZFNldCk7CisgICAgICAgICAg
ICByZXN1bHQtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5tZXJnZVNob3VsZE5ldmVyVW5ib3godHJ1
ZSk7IC8vIFdlIGNhbm5vdCBleGl0IGFmdGVyIHN0YXJ0aW5nIGFyaXR5IGZpeHVwLgorICAgICAg
ICB9OworCisgICAgICAgIC8vIFRoZSBzdGFjayBuZWVkcyB0byBiZSBhbGlnbmVkIGR1ZSB0byBB
QklzLiBUaHVzLCB3ZSBoYXZlIGEgaG9sZSBpZiB0aGUgY291bnQgb2YgYXJndW1lbnRzIGlzIG5v
dCBhbGlnbmVkLgorICAgICAgICAvLyBXZSBjYWxsIHRoaXMgaG9sZSAiZXh0cmEgc2xvdCIuIENv
bnNpZGVyIHRoZSBmb2xsb3dpbmcgY2FzZSwgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgaXMgMi4g
SWYgdGhpcyBhcmd1bWVudAorICAgICAgICAvLyBjb3VudCBkb2VzIG5vdCBmdWxmaWxsIHRoZSBz
dGFjayBhbGlnbm1lbnQgcmVxdWlyZW1lbnQsIHdlIGFscmVhZHkgaW5zZXJ0ZWQgZXh0cmEgc2xv
dHMuCisgICAgICAgIC8vCisgICAgICAgIC8vIGJlZm9yZTogWyAuLi4gXVtleHQgXVthcmcxXVth
cmcwXVtoZWFkZXJdCisgICAgICAgIC8vCisgICAgICAgIC8vIEluIHRoZSBhYm92ZSBjYXNlLCBv
bmUgZXh0cmEgc2xvdCBpcyBpbnNlcnRlZC4gSWYgdGhlIGNvZGUncyBwYXJhbWV0ZXIgY291bnQg
aXMgMywgd2Ugd2lsbCBmaXh1cCBhcmd1bWVudHMuCisgICAgICAgIC8vIEF0IHRoYXQgdGltZSwg
d2UgY2FuIHNpbXBseSB1c2UgdGhpcyBleHRyYSBzbG90cy4gU28gdGhlIGZpeHVwZWQgc3RhY2sg
aXMgdGhlIGZvbGxvd2luZy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gYmVmb3JlOiBbIC4uLiBd
W2V4dCBdW2FyZzFdW2FyZzBdW2hlYWRlcl0KKyAgICAgICAgLy8gYWZ0ZXI6ICBbIC4uLiBdW2Fy
ZzJdW2FyZzFdW2FyZzBdW2hlYWRlcl0KKyAgICAgICAgLy8KKyAgICAgICAgLy8gSW4gc3VjaCBj
YXNlcywgd2UgZG8gbm90IG5lZWQgdG8gbW92ZSBmcmFtZXMuCisgICAgICAgIGlmIChyZWdpc3Rl
ck9mZnNldEFmdGVyRml4dXAgIT0gcmVnaXN0ZXJPZmZzZXQpIHsKKyAgICAgICAgICAgIGZvciAo
aW50IGluZGV4ID0gMDsgaW5kZXggPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpbmRl
eCkKKyAgICAgICAgICAgICAgICBmaWxsKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGluZGV4
LCByZWdpc3Rlck9mZnNldEFmdGVyRml4dXApLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoaW5kZXgsIHJlZ2lzdGVyT2Zmc2V0KSkpOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50
IGluZGV4ID0gMDsgaW5kZXggPCBhcml0eUZpeHVwQ291bnQ7ICsraW5kZXgpCisgICAgICAgICAg
ICBmaWxsKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICsgaW5kZXgsIHJlZ2lzdGVyT2Zmc2V0QWZ0ZXJGaXh1cCksIHVuZGVmaW5lZCk7CisgICAg
fQorCiAgICAgSW5saW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFja0VudHJ5KAogICAgICAgICB0aGlz
LCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgbV9ncmFwaC5sYXN0QmxvY2soKSwgY2FsbGVlLmZ1bmN0
aW9uKCksIHJlc3VsdFJlZywKICAgICAgICAgKFZpcnR1YWxSZWdpc3RlcilpbmxpbmVDYWxsRnJh
bWVTdGFydCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtpbmQpOwpAQCAtMTc3MSw3ICsx
ODAwLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAgICAgfQogICAgIH0KICAgICAK
LSAgICB1bnNpZ25lZCBteUlubGluaW5nQ29zdCA9IGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OmNhbGxNb2RlRm9yKGtpbmQp
KTsKKyAgICB1bnNpZ25lZCBteUlubGluaW5nQ29zdCA9IGlubGluaW5nQ29zdChjYWxsZWUsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBraW5kKTsKICAgICBpZiAobXlJbmxpbmluZ0Nvc3Qg
PiBpbmxpbmluZ0JhbGFuY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDM0OCw3ICs0
Mzc3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gdGhpcy0+aW5s
aW5lQ2FsbEZyYW1lKCk7CiAgICAgICAgICAgICBOb2RlKiBsZW5ndGg7CiAgICAgICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7Ci0g
ICAgICAgICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRzTGVuZ3RoID0gaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVu
dHNMZW5ndGggPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0g
MTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1QYXJhbXNUb1NraXAgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVz
dExlbmd0aDsKICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzTGVuZ3RoIDw9IG51bVBhcmFt
c1RvU2tpcCkKQEAgLTU5MTgsOCArNTk0Nyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudDsKICAgICAg
ICAgICAgIGludDMyX3QgYXJndW1lbnRJbmRleEluY2x1ZGluZ1RoaXMgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAh
aW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewotICAgICAgICAgICAgICAgIGludDMyX3Qg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5z
aXplKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50SW5kZXhJbmNsdWRpbmdUaGlzIDwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCisgICAgICAgICAgICAgICAgaW50MzJfdCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzV2l0aEZpeHVwLnNpemUoKTsKKyAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRJbmRleElu
Y2x1ZGluZ1RoaXMgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cCkKICAgICAg
ICAgICAgICAgICAgICAgYXJndW1lbnQgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
YXJndW1lbnRJbmRleEluY2x1ZGluZ1RoaXMpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8o
bV9jb25zdGFudFVuZGVmaW5lZCkpOwpAQCAtNjIwNSw4ICs2MjM0LDkgQEAgQnl0ZUNvZGVQYXJz
ZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgbV9hcmd1bWVudFBvc2l0aW9ucy5yZXNpemUoYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXM7ICsraSkgeworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1
cCA9IHN0ZDo6bWF4PGludD4oYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpKTsKKyAgICBtX2FyZ3VtZW50UG9zaXRpb25zLnJlc2l6ZShhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cDsgKytpKSB7CiAgICAgICAgIGJ5dGVD
b2RlUGFyc2VyLT5tX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuYXBwZW5kKEFyZ3VtZW50UG9z
aXRpb24oKSk7CiAgICAgICAgIEFyZ3VtZW50UG9zaXRpb24qIGFyZ3VtZW50UG9zaXRpb24gPSAm
Ynl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5sYXN0KCk7CiAgICAg
ICAgIG1fYXJndW1lbnRQb3NpdGlvbnNbaV0gPSBhcmd1bWVudFBvc2l0aW9uOwpAQCAtNjIyNCwx
MyArNjI1NCwxNCBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3Rh
Y2tFbnRyeSgKICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4KICAgICAgICAgbV9pbmxpbmVDYWxs
RnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoY29kZUJsb2Nr
LT5iYXNlbGluZVZlcnNpb24oKSk7CiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5zZXRTdGFj
a09mZnNldChpbmxpbmVDYWxsRnJhbWVTdGFydC5vZmZzZXQoKSAtIENhbGxGcmFtZTo6aGVhZGVy
U2l6ZUluUmVnaXN0ZXJzKTsKKyAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgIGlm
IChjYWxsZWUpIHsKICAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVy
eSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGNhbGxlZSk7CiAgICAgICAgICAgICBtX2lubGlu
ZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCA9IGZhbHNlOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsID0gdHJ1ZTsKICAgICAgICAg
bV9pbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlciA9IGJ5dGVDb2RlUGFyc2VyLT5jdXJyZW50
Q29kZU9yaWdpbigpOwotICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnJlc2l6
ZVRvRml0KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsgLy8gU2V0IHRoZSBudW1iZXIgb2Yg
YXJndW1lbnRzIGluY2x1ZGluZyB0aGlzLCBidXQgZG9uJ3QgY29uZmlndXJlIHRoZSB2YWx1ZSBy
ZWNvdmVyaWVzLCB5ZXQuCisgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRo
Rml4dXAucmVzaXplVG9GaXQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXApOyAv
LyBTZXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgaW5jbHVkaW5nIHRoaXMsIGJ1dCBkb24ndCBj
b25maWd1cmUgdGhlIHZhbHVlIHJlY292ZXJpZXMsIHlldC4KICAgICAgICAgbV9pbmxpbmVDYWxs
RnJhbWUtPmtpbmQgPSBraW5kOwogICAgICAgICAKICAgICAgICAgbV9pZGVudGlmaWVyUmVtYXAu
cmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwCmluZGV4IDk2MTQ3NWNiZDNjNzQxMjI2N2Y4
YzA3OWFiM2ZjYjkwZWQzMjliY2IuLjg3MDc3ODg4ZTBkZjA5Y2I5NGYyZTA5MzIxZDViOGQ1OWU1
YTZiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0
YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcApA
QCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ29tbW9uRGF0YTo6dmFsaWRhdGVSZWZlcmVuY2VzKGNv
bnN0IFRyYWNrZWRSZWZlcmVuY2VzJiB0cmFja2VkUmVmZXJlbmNlcykKIHsKICAgICBpZiAoSW5s
aW5lQ2FsbEZyYW1lU2V0KiBzZXQgPSBpbmxpbmVDYWxsRnJhbWVzLmdldCgpKSB7CiAgICAgICAg
IGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgOiAqc2V0KSB7Ci0gICAgICAg
ICAgICBmb3IgKFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5IDogaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHMpIHsKKyAgICAgICAgICAgIGZvciAoVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgOiBpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cCkgewogICAgICAgICAgICAgICAgIGlmIChy
ZWNvdmVyeS5pc0NvbnN0YW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHRyYWNrZWRSZWZlcmVu
Y2VzLmNoZWNrKHJlY292ZXJ5LmNvbnN0YW50KCkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApp
bmRleCAwOGM5MjI3Y2Q3ZTU4MGY5YWY1Mzg2ZGViNDIwM2Y3MGFjOWEyZjFiLi4xOWU5OGU4NDY5
NGRmM2Q1ZTg2ODIzYzg0MjAxYTU5NjI1OGIwMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMzU3LDcgKzM1
Nyw3IEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAg
ICAgICAgICAgICAvLyBHZXRNeUFyZ3VtZW50QnlWYWwgaW4gc3VjaCBzdGF0aWNhbGx5LW91dC1v
Zi1ib3VuZHMgYWNjZXNzZXM7IHdlIGp1c3QgbG9zZSBDRkEgdW5sZXNzCiAgICAgICAgICAgICAg
ICAgLy8gR0NTRSByZW1vdmVzIHRoZSBhY2Nlc3MgZW50aXJlbHkuCiAgICAgICAgICAgICAgICAg
aWYgKGlubGluZUNhbGxGcmFtZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGluZGV4ID49IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgLSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IG1fc3RhdGUudmFyaWFi
bGVzKCkubnVtYmVyT2ZBcmd1bWVudHMoKSAtIDEpCkBAIC0zNzgsNyArMzc4LDcgQEAgY2xhc3Mg
Q29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaW5kZXggKyAxKSwgRmx1c2hlZEpTVmFs
dWUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpICYm
IGluZGV4IDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkgeworICAgICAg
ICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJh
cmdzKCkgJiYgaW5kZXggPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzIC0gMSkgewogICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9HZXRTdGFjayhk
YXRhKTsKICAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRl
eCBiYjNmMjNjMDg4YzI3NTJlYjQ2Y2U4Y2ZmYTEzMWJmMGYyZDAxMzJhLi5lZDQ2YjA1NmNkNTEy
YTA0MDc0MjMzY2E1OTljYzdmYmIyNThlMDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcApAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgYm9vbCBHcmFwaDo6aXNMaXZlSW5CeXRl
Y29kZShWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAg
ICAgICAvLyBBcmd1bWVudHMgYXJlIGFsd2F5cyBsaXZlLiBUaGlzIHdvdWxkIGJlIHJlZHVuZGFu
dCBpZiBpdCB3YXNuJ3QgZm9yIG91cgogICAgICAgICAvLyBvcF9jYWxsX3ZhcmFyZ3MgaW5saW5p
bmcuCiAgICAgICAgIGlmIChyZWcuaXNBcmd1bWVudCgpCi0gICAgICAgICAgICAmJiBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHJlZy50b0FyZ3VtZW50KCkpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHMuc2l6ZSgpKSB7CisgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlZy50b0Fy
Z3VtZW50KCkpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpKSB7
CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBcmd1
bWVudCBpcyBsaXZlLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCAzMzRlYTk3ZmU1ZWJiNzczZDNlZGU3MDM2ODllYjA3
MWI4YzE2ZmIxLi42NjMwODE1MWRkYzUwN2Q0NTczMzljYjViZGYwZTczMDhmZDU3N2Q5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC04MzksNyArODM5LDcgQEAgY2xhc3Mg
R3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgICAgICAgICAgLy8gQXJndW1l
bnRzIGFyZSBhbHdheXMgbGl2ZS4gVGhpcyB3b3VsZCBiZSByZWR1bmRhbnQgaWYgaXQgd2Fzbid0
IGZvciBvdXIKICAgICAgICAgICAgIC8vIG9wX2NhbGxfdmFyYXJncyBpbmxpbmluZy4gU2VlIHRo
ZSBjb21tZW50IGFib3ZlLgogICAgICAgICAgICAgZXhjbHVzaW9uU3RhcnQgPSBzdGFja09mZnNl
dCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApOwotICAgICAgICAg
ICAgZXhjbHVzaW9uRW5kID0gc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0
SW5jbHVkaW5nVGhpcyhpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpOworICAgICAg
ICAgICAgZXhjbHVzaW9uRW5kID0gc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zm
c2V0SW5jbHVkaW5nVGhpcyhpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXpl
KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBXZSB3aWxsIGFsd2F5cyBoYXZlIGEg
InRoaXMiIGFyZ3VtZW50IGFuZCBleGNsdXNpb25TdGFydCBzaG91bGQgYmUgYSBzbWFsbGVyIHN0
YWNrCiAgICAgICAgICAgICAvLyBvZmZzZXQgdGhhbiBleGNsdXNpb25FbmQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFs
eXNpc1BoYXNlLmNwcAppbmRleCBlOGI0NWM0NWE2MmZjNDQ5YzIxOWNhNGRhZWU0Y2UxZTZkZGZj
Yjg1Li4zY2RhNjg3MmU0Yzc4NDkwYmNkMDdkNTlkN2Y5YjllZDk4MDVjNTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5
QW5hbHlzaXNQaGFzZS5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIExvY2FsT1NSQXZhaWxh
YmlsaXR5Q2FsY3VsYXRvcjo6ZXhlY3V0ZU5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1f
YXZhaWxhYmlsaXR5Lm1faGVhcC5zZXQoUHJvbW90ZWRIZWFwTG9jYXRpb24oQXJndW1lbnRzQ2Fs
bGVlUExvYywgbm9kZSksIGNhbGxlZSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOyBpIDwgaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyAtIDE7ICsraSkgewogICAgICAgICAgICAgQXZhaWxhYmlsaXR5
IGFyZ3VtZW50ID0gbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZCgKICAgICAgICAgICAg
ICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9m
ZnNldChpKSk7CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuY3BwCmluZGV4IGJkNzg1N2Y5ZmU3MWUxZGUwY2M3NDc2Yzg4MzM1ZTg1YjMyOWYwZDYuLjNi
NzNhMTJjMTA5ZDgzZjk4MDU2OTU4ZjJhNTk1YTVhOGQ2MjQyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgT1NSRXhp
dDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9wZXJhbmRz
PFZhbHVlUmVjb3ZlCiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgaml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSwK
KyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwKICAgICAgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUMSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCmluZGV4IDZiOTQ5MDIwNzNkYWQ0
ZDY5MTc2NWY0M2FkNmViMTc0Y2FmMjZjODkuLjIxNTExNzJiMmI1ZWYyMjA5MzQ4NDYxYTg5MGVk
NDE5OWVkNmYwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIHJlaWZ5
SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBl
eGl0KQogICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDIpOwogCiAgICAgICAgIGlmICghaW5saW5l
Q2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSks
IEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAg
ICAgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCBBc3NlbWJseUhlbHBlcnM6
OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICAgICAgaml0LnN0b3JlNjQoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5SGVscGVyczo6YWRk
cmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpKSk7
CiAgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoY29kZU9yaWdp
bi0+Ynl0ZWNvZGVJbmRleCkuYml0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAppbmRleCA1ZjBhZGM2ZTUzY2VjNjJk
MTk4NjBlNDAxMDVjNjRlNDU3OWU5YTkwLi4xNmZlMjZmNmNhNmI0M2NlNmUzNDZlNDJmM2ZmMGE0
MGIwMzhhOWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNp
c2VMb2NhbENsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWNpc2VMb2NhbENsb2JiZXJpemUuaApAQCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIFByZWNpc2VM
b2NhbENsb2JiZXJpemVBZGFwdG9yIHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBu
dW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKTsgaSsrKQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMSArIG51bWJlck9mQXJn
dW1lbnRzVG9Ta2lwOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6
ZSgpOyBpKyspCiAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkub2Zm
c2V0KCkpKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQog
ICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKQEAgLTIxOSw3ICsy
MTksNyBAQCBjbGFzcyBQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvciB7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaW5saW5lQ2FsbEZyYW1lLT5p
c1ZhcmFyZ3MoKSwgIkdldEFyZ3VtZW50IGlzIG9ubHkgdXNlZCBmb3IgSW5saW5lQ2FsbEZyYW1l
IGlmIHRoZSBjYWxsIGZyYW1lIGlzIHZhcmFyZ3MuIik7Ci0gICAgICAgICAgICBpZiAoaW5kZXhJ
bmNsdWRpbmdUaGlzIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKQorICAgICAg
ICAgICAgaWYgKGluZGV4SW5jbHVkaW5nVGhpcyA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
V2l0aEZpeHVwLnNpemUoKSkKICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVy
KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dChpbmRleEluY2x1ZGluZ1RoaXMpLm9mZnNldCgpKSk7CiAgICAgICAgICAgICBtX3JlYWQoVmly
dHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50KSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIzOSw3ICsyMzksNyBA
QCBjbGFzcyBQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvciB7CiAgICAgICAgICAgICAvLyBS
ZWFkIGFsbCBvZiB0aGUgaW5saW5lIGFyZ3VtZW50cyBhbmQgY2FsbCBmcmFtZSBoZWFkZXJzIHRo
YXQgd2UgZGlkbid0IGFscmVhZHkgY2FwdHVyZS4KICAgICAgICAgICAgIGZvciAoSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZy
YW1lLT5nZXRDYWxsZXJJbmxpbmVGcmFtZVNraXBwaW5nVGFpbENhbGxzKCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMu
c2l6ZSgpOyBpLS0gPiAxOykKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOyBpLS0gPiAxOykKICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLm9mZnNldCgp
KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmlzQ2xvc3VyZUNhbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IDliNzAxMzNjYzNhM2Q1MDgxMWIxODRmNTAyMjZhMTlhMDBk
OGQzNDguLmMyMDI5MDgyMzA3NGIwNmMxYTAzNDlhYWNmNGQ4MTE3ZDg4MTcyMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNzIs
NyArMTcyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQ
UlJlZyByZXN1bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRHZXRMZW5ndGgoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEdQUlJlZyBs
ZW5ndGhHUFIsIGJvb2wgaW5jbHVkZVRoaXMpCiB7CiAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAm
JiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gIWluY2x1ZGVUaGlz
KSwgbGVuZ3RoR1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtICFpbmNsdWRlVGhpcyksIGxlbmd0
aEdQUik7CiAgICAgZWxzZSB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudENvdW50
UmVnaXN0ZXIgPSBtX2ppdC5hcmd1bWVudENvdW50KGlubGluZUNhbGxGcmFtZSk7CiAgICAgICAg
IG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihhcmd1bWVudENvdW50UmVnaXN0
ZXIpLCBsZW5ndGhHUFIpOwpAQCAtNjc5Nyw3ICs2Nzk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAgIGJvb2wgbGVu
Z3RoSXNLbm93bjsgLy8gaWYgZmFsc2UsIGxlbmd0aEdQUiB3aWxsIGhhdmUgdGhlIGxlbmd0aC4K
ICAgICBpZiAobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZQogICAgICAgICAm
JiAhbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsK
LSAgICAgICAga25vd25MZW5ndGggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAga25vd25MZW5ndGggPSBub2RlLT5v
cmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyAtIDE7CiAgICAgICAgIGxlbmd0aElzS25vd24gPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGtub3duTGVuZ3RoID0gVUlOVF9NQVg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAppbmRleCAwM2M1MDJmYzg4MGRjYmE4MjNjN2Ux
YTRkYzlkODllYTI2NzRkNmRkLi5hMDQ2NzFiNDYxMTJlYjJkMTIxOGMzMWU3OGZkMTdjZTJiNjI0
YzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQ
aGFzZS5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFzcyBTdGFja0xheW91dFBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQg
PSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgewor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgYXJndW1lbnQtLSA+IDE7KSB7CiAgICAgICAgICAgICAg
ICAgdXNlZExvY2Fscy5zZXQoVmlydHVhbFJlZ2lzdGVyKAogICAgICAgICAgICAgICAgICAgICB2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkub2Zmc2V0KCkgKwogICAgICAgICAg
ICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkpOwpAQCAt
MTg3LDcgKzE4Nyw3IEBAIGNsYXNzIFN0YWNrTGF5b3V0UGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1
bWVudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgYXJndW1lbnQtLSA+IDE7
KSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOyBhcmd1bWVudC0tID4gMTspIHsKICAgICAgICAg
ICAgICAgICBBcmd1bWVudFBvc2l0aW9uJiBwb3NpdGlvbiA9IG1fZ3JhcGgubV9hcmd1bWVudFBv
c2l0aW9uc1sKICAgICAgICAgICAgICAgICAgICAgZGF0YS5hcmd1bWVudFBvc2l0aW9uU3RhcnQg
KyBhcmd1bWVudF07CiAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJs
ZSA9IHBvc2l0aW9uLnNvbWVWYXJpYWJsZSgpOwpAQCAtMTk4LDcgKzE5OCw3IEBAIGNsYXNzIFN0
YWNrTGF5b3V0UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2UgPSBWYWx1ZVNvdXJjZTo6Zm9yRmx1c2hGb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXJpYWJsZS0+bWFjaGluZUxvY2FsKCksIHZhcmlhYmxlLT5mbHVzaEZvcm1hdCgpKTsKICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHNbYXJndW1lbnRdID0gc291cmNlLnZhbHVlUmVjb3ZlcnkoKTsKKyAgICAgICAgICAgICAgICBp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cFthcmd1bWVudF0gPSBzb3VyY2UudmFs
dWVSZWNvdmVyeSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwgPT0gISFkYXRhLmNh
bGxlZVZhcmlhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tcGlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmlu
ZGV4IGZkMDkxNDU2Zjc1M2ZmZjI1NzcwMGUwMjU1NmViMWE2YmM3YjE1MWUuLmQ1ODU3MGY1ZWE0
ZjYwOTFlODYwMzk2NTZhODNmOGU1OTM3ODUyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDb21waWxlLmNwcApAQCAtOTgsOSArOTgsOSBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0
YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXIuaXNWYWxpZCgpKQogICAgICAgICAg
ICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXIgKz0gbG9jYWxzT2Zmc2V0
OwogICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzLnNpemUoKTsgYXJndW1lbnQtLSA+IDE7KSB7Ci0gICAgICAgICAgICBp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1thcmd1bWVudF0gPQotICAgICAgICAgICAgICAgIGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzW2FyZ3VtZW50XS53aXRoTG9jYWxzT2Zmc2V0KGxvY2Fs
c09mZnNldCk7CisgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgeworICAgICAg
ICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXBbYXJndW1lbnRdID0KKyAg
ICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cFthcmd1bWVu
dF0ud2l0aExvY2Fsc09mZnNldChsb2NhbHNPZmZzZXQpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggY2JhYzg5ZTIxNGNi
NWNlYTViM2QyOTQ3NTdmYWQzZGY3YjJhYzc0NC4uZTdiMjQ2MmFiMGEzOTkxMzVjNWJjMzExZmU3
ZWJhNzFmN2JmNDdmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcApAQCAtMzY5OCw3ICszNjk4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgCiAgICAgICAgIExWYWx1ZSBsaW1pdDsKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFt
ZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGxpbWl0ID0g
bV9vdXQuY29uc3RJbnQzMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKTsK
KyAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuY29uc3RJbnQzMihpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gMSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IEFzc2VtYmx5SGVscGVy
czo6YXJndW1lbnRDb3VudChpbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgbGltaXQgPSBt
X291dC5zdWIobV9vdXQubG9hZDMyKHBheWxvYWRGb3IoYXJndW1lbnRDb3VudFJlZ2lzdGVyKSks
IG1fb3V0LmludDMyT25lKTsKQEAgLTM3MjEsOCArMzcyMSw4IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIAogICAgICAgICBUeXBlZFBvaW50ZXIgYmFzZTsKICAgICAgICAgaWYgKGlu
bGluZUNhbGxGcmFtZSkgewotICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzLnNpemUoKSA+IDEpCi0gICAgICAgICAgICAgICAgYmFzZSA9IGFkZHJlc3NGb3IoaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHNbMV0udmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAgICAg
aWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPiAxKQorICAg
ICAgICAgICAgICAgIGJhc2UgPSBhZGRyZXNzRm9yKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
V2l0aEZpeHVwWzFdLnZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBiYXNlID0gYWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxKSk7CiAg
ICAgICAgIApAQCAtOTY1OSw3ICs5NjU5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgQXJndW1lbnRzTGVuZ3RoIGxlbmd0aDsKIAogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1l
ICYmICFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7Ci0gICAgICAgICAgICBsZW5ndGgu
a25vd24gPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxOworICAgICAgICAg
ICAgbGVuZ3RoLmtub3duID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyAtIDE7CiAgICAgICAgICAgICBsZW5ndGguaXNLbm93biA9IHRydWU7CiAgICAgICAgICAg
ICBsZW5ndGgudmFsdWUgPSBtX291dC5jb25zdEludDMyKGxlbmd0aC5rbm93bik7CiAgICAgICAg
IH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcApp
bmRleCA0YmNjYmI3MDJhZTFhZThiZDlkNTlhNTZiYzUwMTQzMGNiMDA1OTRkLi4xYTFiMzcxZTNl
MDUxYmYwMTdlODJiMjI1M2U2MjJlYzdiMmMyNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBleHRlcm4gIkMiIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKAogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIGFyZ3VtZW50Q291bnQgPSBtYXRlcmlhbGl6YXRpb24tPm9yaWdpbigpLmlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBt
YXRlcmlhbGl6YXRpb24tPm9yaWdpbigpLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXM7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFyZ3VtZW50Q291bnQpOwogICAg
ICAgICAKICAgICAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKaW5kZXggMTc1
ZmZmMzFiYWYzYTFhMzdkNDliNmUxYzNlMDM2ZjYxM2VjNTBmNC4uODVkMTQ3YTQ3YzdmMTk1YWE2
M2EyYjJlNTdhNDY3NjIzZGI2YmJkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFN0
YWNrVmlzaXRvcjo6cmVhZElubGluZWRGcmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZU9y
aWdpbiogY29kZU9yaWdpbgogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENv
dW50UmVnaXN0ZXIuaXNWYWxpZCgpKQogICAgICAgICAgICAgbV9mcmFtZS5tX2FyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1lLT5yKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudFJlZ2lzdGVyLm9mZnNldCgpKS51bmJveGVkSW50MzIoKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV9mcmFtZS5tX2FyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOworICAgICAgICAgICAgbV9mcmFtZS5tX2FyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpczsKICAgICAgICAgbV9mcmFtZS5tX2NvZGVCbG9jayA9IGlubGluZUNhbGxGcmFtZS0+
YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCk7CiAgICAgICAgIG1fZnJhbWUubV9ieXRlY29kZU9mZnNl
dCA9IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDZkMjIwOTRiYzNmOGVhNTliMjlkZDk5NThhYzk2
MjAzMzE3ZWU4ODUuLmE2OGMzNjliMGEwMDBlMDFkNTQ0OTAwYzM2ODRkMjg0OThjMWVmNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtMTIyMCw5
ICsxMjIwLDkgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVy
IHsKICAgICB7CiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0
dXJuIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KDApKTsKLSAgICAg
ICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSA8PSAxKQorICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpIDw9IDEpCiAgICAg
ICAgICAgICByZXR1cm4gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoMCk7Ci0gICAgICAgIFZhbHVl
UmVjb3ZlcnkgcmVjb3ZlcnkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1sxXTsKKyAgICAg
ICAgVmFsdWVSZWNvdmVyeSByZWNvdmVyeSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0
aEZpeHVwWzFdOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWNvdmVyeS50ZWNobmlxdWUoKSA9
PSBEaXNwbGFjZWRJbkpTU3RhY2spOwogICAgICAgICByZXR1cm4gcmVjb3ZlcnkudmlydHVhbFJl
Z2lzdGVyKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9T
ZXR1cFZhcmFyZ3NGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFy
YXJnc0ZyYW1lLmNwcAppbmRleCAwZjk2MWE2NjFmYjI0NzQ0MjkwZTIyZGY2MTdhYmIyN2U1ZTRj
ZTIwLi5lMWM1ZTVmZWMzNWE4MjBlZDkwYjQ1NTFjMjc5YWE5YzViMGZhYWRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcApAQCAtMTIxLDEx
ICsxMjEsMTAgQEAgdm9pZCBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShWTSYgdm0sIEND
YWxsSGVscGVycyYgaml0LCBHUFJSZWcgbnVtVXNlZFNsb3QKICAgICAgICAgICAgIGFyZ3VtZW50
Q291bnRSZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjaygKICAgICAg
ICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlciwgRGF0YUZv
cm1hdEludDMyKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFyZ3VtZW50Q291bnRS
ZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KAotICAgICAgICAgICAgICAgIGpzTnVt
YmVyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpOworICAgICAgICAgICAgYXJn
dW1lbnRDb3VudFJlY292ZXJ5ID0gVmFsdWVSZWNvdmVyeTo6Y29uc3RhbnQoanNOdW1iZXIoaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgICAgICB9Ci0g
ICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgPiAxKQotICAgICAg
ICAgICAgZmlyc3RBcmd1bWVudFJlZyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzWzFdLnZp
cnR1YWxSZWdpc3RlcigpOworICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNX
aXRoRml4dXAuc2l6ZSgpID4gMSkKKyAgICAgICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cFsxXS52aXJ0dWFsUmVnaXN0ZXIoKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgZmlyc3RBcmd1bWVudFJlZyA9IFZpcnR1YWxSZWdpc3Rl
cigwKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5kZXggZjA5Nzg4Yjc1ZjM1ZWMzZThiNmVlOGJkZGRlYTg0
ZjEzYWI5M2NkNC4uMDMwMzI3MGQ4MGE2YTBhZjBhODMwNDg1MzczNDU4ZGQ5MTY4M2YzNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3Bw
CkBAIC0xMDMsMTIgKzEwMywxMiBAQCBDbG9uZWRBcmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6
Y3JlYXRlV2l0aElubGluZUZyYW1lKEV4ZWNTdGF0ZSogbXlGcmFtZSwgRXhlYwogICAgICAgICAg
ICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lzdGVyLmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICBsZW5ndGggPSB0YXJnZXRGcmFtZS0+cihpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnRSZWdpc3RlcikudW5ib3hlZEludDMyKCk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgbGVuZ3RoID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6
ZSgpOworICAgICAgICAgICAgICAgIGxlbmd0aCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgICAgICBsZW5ndGgtLTsKICAgICAgICAgICAgIHJl
c3VsdCA9IGNyZWF0ZUVtcHR5KG15RnJhbWUsIGNhbGxlZSwgbGVuZ3RoKTsKIAogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQotICAgICAgICAgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0SW5kZXgobXlGcmFtZSwgaSwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNb
aSArIDFdLnJlY292ZXIodGFyZ2V0RnJhbWUpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPnB1
dERpcmVjdEluZGV4KG15RnJhbWUsIGksIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZp
eHVwW2kgKyAxXS5yZWNvdmVyKHRhcmdldEZyYW1lKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBsZW5ndGggPSB0YXJnZXRGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgICAgICAg
ICAgcmVzdWx0ID0gY3JlYXRlRW1wdHkobXlGcmFtZSwgY2FsbGVlLCBsZW5ndGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA3ZGM2
MGY0NDc3MWNlZDAxNWZkODc2YTljNmMzNjhjNzJjN2E0MWUwLi5mYTI4MjRmYmQyZmRmY2M0MGUw
MWYwYjMxODUwZWQzM2EyNzI1OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtNTAsMjQgKzUwLDQyIEBAIHN0cnVjdCBBcml0eUNo
ZWNrRGF0YSB7CiAgICAgdm9pZCogdGh1bmtUb0NhbGw7CiB9OwogCitBTFdBWVNfSU5MSU5FIGlu
dCBudW1iZXJPZkV4dHJhU2xvdHMoaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQorewor
ICAgIGludCBmcmFtZVNpemUgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxGcmFt
ZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOworICAgIGludCBhbGlnbmVkRnJhbWVTaXplID0gV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIGZyYW1lU2l6
ZSk7CisgICAgcmV0dXJuIGFsaWduZWRGcmFtZVNpemUgLSBmcmFtZVNpemU7Cit9CisKK0FMV0FZ
U19JTkxJTkUgaW50IG51bWJlck9mU3RhY2tQYWRkaW5nU2xvdHMoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKK3sKKyAgICBpZiAoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPj0gY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCisgICAgICAg
IHJldHVybiAwOworICAgIGludCBhbGlnbmVkRnJhbWVTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpOworICAgIGludCBhbGlnbmVk
RnJhbWVTaXplRm9yUGFyYW1ldGVycyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0Fs
aWdubWVudFJlZ2lzdGVycygpLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIENhbGxGcmFt
ZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKTsKKyAgICByZXR1cm4gYWxpZ25lZEZyYW1lU2l6ZUZv
clBhcmFtZXRlcnMgLSBhbGlnbmVkRnJhbWVTaXplOworfQorCitBTFdBWVNfSU5MSU5FIGludCBu
dW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3RzV2l0aEV4dHJhU2xvdHMoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKK3sKKyAgICBpZiAoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPj0gY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCisgICAgICAg
IHJldHVybiAwOworICAgIHJldHVybiBudW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3RzKGNvZGVCbG9j
aywgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpICsgbnVtYmVyT2ZFeHRyYVNsb3RzKGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKK30KKwogQUxXQVlTX0lOTElORSBpbnQgYXJpdHlDaGVj
a0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQogewogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+
anNDYWxsZWUoKSk7CiAgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwogICAg
IENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Y29kZUJs
b2NrRm9yKGtpbmQpOwotICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMt
PmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0gICAgCi0gICAgQVNTRVJUKGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwotICAg
IGludCBmcmFtZVNpemUgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxGcmFtZTo6
aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwotICAgIGludCBhbGlnbmVkRnJhbWVTaXplRm9yUGFyYW1l
dGVycyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygp
LAotICAgICAgICBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIENhbGxGcmFtZTo6aGVh
ZGVyU2l6ZUluUmVnaXN0ZXJzKTsKLSAgICBpbnQgcGFkZGVkU3RhY2tTcGFjZSA9IGFsaWduZWRG
cmFtZVNpemVGb3JQYXJhbWV0ZXJzIC0gZnJhbWVTaXplOworICAgIEFTU0VSVChleGVjLT5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5ld0NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpKSk7CisgICAgaW50IHBhZGRpbmcgPSBudW1iZXJPZlN0YWNr
UGFkZGluZ1Nsb3RzV2l0aEV4dHJhU2xvdHMobmV3Q29kZUJsb2NrLCBleGVjLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpKTsKICAgICAKLSAgICBSZWdpc3RlciogbmV3U3RhY2sgPSBleGVj
LT5yZWdpc3RlcnMoKSAtIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJl
Z2lzdGVycygpLCBwYWRkZWRTdGFja1NwYWNlKTsKKyAgICBSZWdpc3RlciogbmV3U3RhY2sgPSBl
eGVjLT5yZWdpc3RlcnMoKSAtIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVu
dFJlZ2lzdGVycygpLCBwYWRkaW5nKTsKIAogICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3Rh
Y2tDYXBhY2l0eUZvcihuZXdTdGFjaykpKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJu
IHBhZGRlZFN0YWNrU3BhY2U7CisgICAgcmV0dXJuIHBhZGRpbmc7CiB9CiAKIGlubGluZSBib29s
IG9wSW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJvcE5hbWUs
IEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrQWxpZ25tZW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdGFja0FsaWdubWVudC5oCmluZGV4IDAwYzkwYTFlNzhkY2MzMjll
YzdlYTE5MTRlNjI4ZWY4MzMwZjAxMDAuLjRlMzEwODAzNWYzYWQ4MzU0M2IzMjFiYzY3OWQ0Mzk1
OWQ1NDhhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNr
QWxpZ25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tBbGln
bm1lbnQuaApAQCAtMzEsOSArMzEsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIE5CLiBEaWZm
ZXJlbnQgcGxhdGZvcm1zIG1heSBoYXZlIGRpZmZlcmVudCByZXF1aXJlbWVudHMgaGVyZS4gQnV0
IDE2IGJ5dGVzIGlzIHZlcnkgY29tbW9uLgotaW5saW5lIHVuc2lnbmVkIHN0YWNrQWxpZ25tZW50
Qnl0ZXMoKSB7IHJldHVybiAxNjsgfQoraW5saW5lIGNvbnN0ZXhwciB1bnNpZ25lZCBzdGFja0Fs
aWdubWVudEJ5dGVzKCkgeyByZXR1cm4gMTY7IH0KIAotaW5saW5lIHVuc2lnbmVkIHN0YWNrQWxp
Z25tZW50UmVnaXN0ZXJzKCkKK2lubGluZSBjb25zdGV4cHIgdW5zaWduZWQgc3RhY2tBbGlnbm1l
bnRSZWdpc3RlcnMoKQogewogICAgIHJldHVybiBzdGFja0FsaWdubWVudEJ5dGVzKCkgLyBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCBmMTQzZWEzMDFlNzMzMDA2NDlhZWJjZmZjYjg4YjdhMjQ3
NDg1ZjU1Li5hNWEzOTI0YjQyMTU0YjQyOTE1OTRmOGM4NTMwYTNiZjk0MjRhMDk3IDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMyIEBACisyMDE3LTA5LTAyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtERkddIFJlbGF4IGFyaXR5IHJlcXVpcmVtZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9hcml0eS1taXNtYXRj
aC1hcmd1bWVudHMtbGVuZ3RoLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHRlc3QxKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9hcml0eS1taXNt
YXRjaC1nZXQtYXJndW1lbnQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAoYnVpbHRpbi5jcmVhdGVCdWlsdGluKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0
cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy1leHRyYS1zbG90cy5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgIChpbmxpbmVUYXJnZXQpOgorICAgICAgICAodGVzdCk6
CisgICAgICAgICogc3RyZXNzL2FyaXR5LW1pc21hdGNoLWlubGluaW5nLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGlubGluZVRhcmdldCk6CisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKiBzdHJlc3MvYXJpdHktbWlzbWF0Y2gtcmVzdC5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICh0ZXN0MSk6CisgICAg
ICAgICh0ZXN0KToKKwogMjAxNy0wOC0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBGaXggIm5hbWUiIGFuZCAibGVuZ3RoIiBvZiBQcm94
eSByZXZva2UgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21h
dGNoLWFyZ3VtZW50cy1sZW5ndGguanMgYi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1h
cmd1bWVudHMtbGVuZ3RoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhODllMjRiYjM3OWZkNjBlYzQ3MGE0ZDZl
NWJkNTg1MmZhNDdhZWIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1t
aXNtYXRjaC1hcmd1bWVudHMtbGVuZ3RoLmpzCkBAIC0wLDAgKzEsNTAgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0MShhcmcxLCBhcmcyLCBhcmczKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg7CisgICAgfQorCisgICAgZnVuY3Rp
b24gdGVzdCgpCisgICAgeworICAgICAgICBzaG91bGRCZSh0ZXN0MSgpLCAwKTsKKyAgICAgICAg
c2hvdWxkQmUodGVzdDEoMCksIDEpOworICAgICAgICBzaG91bGRCZSh0ZXN0MSgwLCAxKSwgMik7
CisgICAgICAgIHNob3VsZEJlKHRlc3QxKDAsIDEsIDIpLCAzKTsKKyAgICAgICAgc2hvdWxkQmUo
dGVzdDEoMCwgMSwgMiwgMyksIDQpOworICAgIH0KKyAgICBub0lubGluZSh0ZXN0KTsKKworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIHRlc3QoKTsKK30oKSk7CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGVzdDEoZmxhZywgYXJnMSwgYXJnMiwgYXJn
MykKKyAgICB7CisgICAgICAgIGlmIChmbGFnKQorICAgICAgICAgICAgT1NSRXhpdCgpOworICAg
ICAgICByZXR1cm4gYXJndW1lbnRzOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoZmxhZykK
KyAgICB7CisgICAgICAgIHNob3VsZEJlKHRlc3QxKGZsYWcpLmxlbmd0aCwgMSk7CisgICAgICAg
IHNob3VsZEJlKHRlc3QxKGZsYWcsIDApLmxlbmd0aCwgMik7CisgICAgICAgIHNob3VsZEJlKHRl
c3QxKGZsYWcsIDAsIDEpLmxlbmd0aCwgMyk7CisgICAgICAgIHNob3VsZEJlKHRlc3QxKGZsYWcs
IDAsIDEsIDIpLmxlbmd0aCwgNCk7CisgICAgICAgIHNob3VsZEJlKHRlc3QxKGZsYWcsIDAsIDEs
IDIsIDMpLmxlbmd0aCwgNSk7CisgICAgfQorICAgIG5vSW5saW5lKHRlc3QpOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAgICAgIHRlc3QoZmFsc2UpOworCisgICAgdGVz
dCh0cnVlKTsKKyAgICB0ZXN0KHRydWUpOworICAgIHRlc3QodHJ1ZSk7Cit9KCkpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtZ2V0LWFyZ3VtZW50LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvYXJpdHktbWlzbWF0Y2gtZ2V0LWFyZ3VtZW50LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMy
NDFhYmQzODNiNDRhMmFhOWY4ZjFjNzM0ZmMyNmMyNWFhOTAzZWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1nZXQtYXJndW1lbnQuanMKQEAgLTAsMCAr
MSwyMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCit2YXIgYnVpbHRpbiA9IGNyZWF0ZUJ1aWx0aW4oYChmdW5jdGlv
biAoKSB7CisgICAgcmV0dXJuIEBhcmd1bWVudCgwKTsKK30pYCk7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHZhciByZXN1bHQgPSBidWlsdGluKCk7CisgICAgc2hvdWxkQmUocmVzdWx0LCB1
bmRlZmluZWQpOworICAgIHZhciByZXN1bHQgPSBidWlsdGluKDQyKTsKKyAgICBzaG91bGRCZShy
ZXN1bHQsIDQyKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFl
NDsgKytpKQorICAgIHRlc3QoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1p
c21hdGNoLWlubGluaW5nLWV4dHJhLXNsb3RzLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJpdHktbWlz
bWF0Y2gtaW5saW5pbmctZXh0cmEtc2xvdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFmMzc0MzcwY2YxOWM0
MjEzYTlmMjZjMzdlZTk3ZGVhMDVmNDg0MwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2FyaXR5LW1pc21hdGNoLWlubGluaW5nLWV4dHJhLXNsb3RzLmpzCkBAIC0wLDAgKzEsMTcg
QEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKworZnVuY3Rpb24gaW5saW5lVGFyZ2V0KGFyZzEsIGFyZzIpCit7CisgICAg
cmV0dXJuIFthcmcxLCBhcmcyXTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQobnVsbCkpLCBgW251bGwsbnVsbF1gKTsKK30K
K25vSW5saW5lKHRlc3QpOworZm9yICh2YXIgaSA9IDA7IGkgPCAzZTQ7ICsraSkKKyAgICB0ZXN0
KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy5q
cyBiL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21hdGNoLWlubGluaW5nLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgwODFkOWYyMTIwMDhkN2E2N2Q2ODBlMGQ5NjVlYmUzMGQ4YjM3NjQKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1pbmxpbmluZy5qcwpAQCAtMCwwICsx
LDI0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIGlubGluZVRhcmdldChhcmcxLCBhcmcyLCBhcmcz
LCBhcmc0LCBhcmc1KQoreworICAgIHJldHVybiBbYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJn
NV07Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
aW5saW5lVGFyZ2V0KCkpLCBgW251bGwsbnVsbCxudWxsLG51bGwsbnVsbF1gKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIpKSwgYFs0MixudWxsLG51bGwsbnVs
bCxudWxsXWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGlubGluZVRhcmdldCg0Miwg
NDMpKSwgYFs0Miw0MyxudWxsLG51bGwsbnVsbF1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShpbmxpbmVUYXJnZXQoNDIsIDQzLCA0NCkpLCBgWzQyLDQzLDQ0LG51bGwsbnVsbF1gKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIsIDQzLCA0NCwgNDUp
KSwgYFs0Miw0Myw0NCw0NSxudWxsXWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGlu
bGluZVRhcmdldCg0MiwgNDMsIDQ0LCA0NSwgNDYpKSwgYFs0Miw0Myw0NCw0NSw0Nl1gKTsKKyAg
ICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShpbmxpbmVUYXJnZXQoNDIsIDQzLCA0NCwgNDUsIDQ2
LCA0NykpLCBgWzQyLDQzLDQ0LDQ1LDQ2XWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5
KGlubGluZVRhcmdldCg0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCkpLCBgWzQyLDQzLDQ0LDQ1
LDQ2XWApOworfQorbm9JbmxpbmUodGVzdCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDNlNDsgKytp
KQorICAgIHRlc3QoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21hdGNo
LXJlc3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1yZXN0LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE4NTg0Y2NlMjliODcxNzM3NzY2MGUyZmZkZTk5NGQzMDZlMzY5NDUKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1yZXN0LmpzCkBAIC0wLDAgKzEs
NjUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsKTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0MiguLi5y
ZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlc3Q7CisgICAgfQorCisgICAgZnVuY3Rpb24g
dGVzdDEoYXJnMSwgYXJnMiwgYXJnMykKKyAgICB7CisgICAgICAgIHJldHVybiB0ZXN0Mihhcmcx
LCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICB7CisgICAg
ICAgIHZhciByZXN1bHQgPSB0ZXN0MSgpOworICAgICAgICBzaG91bGRCZShyZXN1bHQubGVuZ3Ro
LCAzKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzBdLCB1bmRlZmluZWQpOworICAgICAgICBz
aG91bGRCZShyZXN1bHRbMV0sIHVuZGVmaW5lZCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsy
XSwgdW5kZWZpbmVkKTsKKyAgICB9CisgICAgbm9JbmxpbmUodGVzdCk7CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAgICB0ZXN0KCk7Cit9KCkpOworCisoZnVuY3Rp
b24gKCkgeworICAgIGZ1bmN0aW9uIHRlc3QxKC4uLnJlc3QpCisgICAgeworICAgICAgICByZXR1
cm4gcmVzdDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICB7CisgICAgICAgIHZh
ciByZXN1bHQgPSB0ZXN0MSgpOworICAgICAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAwKTsK
KyAgICB9CisgICAgbm9JbmxpbmUodGVzdCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFl
NDsgKytpKQorICAgICAgICB0ZXN0KCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1
bmN0aW9uIHRlc3QxKC4uLnJlc3QpCisgICAgeworICAgICAgICByZXR1cm4gcmVzdDsKKyAgICB9
CisgICAgbm9JbmxpbmUodGVzdDEpOworCisgICAgZnVuY3Rpb24gdGVzdCgpCisgICAgeworICAg
ICAgICB2YXIgcmVzdWx0ID0gdGVzdDEoKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0
aCwgMCk7CisgICAgfQorICAgIG5vSW5saW5lKHRlc3QpOworCisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgdGVzdCgpOworfSgpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>