<?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>213106</bug_id>
          
          <creation_ts>2020-06-11 18:32:58 -0700</creation_ts>
          <short_desc>Bytecode liveness should be aware of checkpoints</short_desc>
          <delta_ts>2020-06-16 12:44:46 -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="Tadeu Zagallo">tzagallo</reporter>
          <assigned_to name="Tadeu Zagallo">tzagallo</assigned_to>
          <cc>ews-watchlist</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>1661817</commentid>
    <comment_count>0</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-06-11 18:32:58 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661818</commentid>
    <comment_count>1</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-06-11 18:34:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/63416838&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661819</commentid>
    <comment_count>2</comment_count>
      <attachid>401697</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-06-11 18:38:29 -0700</bug_when>
    <thetext>Created attachment 401697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661821</commentid>
    <comment_count>3</comment_count>
      <attachid>401698</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-06-11 18:50:46 -0700</bug_when>
    <thetext>Created attachment 401698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661822</commentid>
    <comment_count>4</comment_count>
      <attachid>401698</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-11 18:53:55 -0700</bug_when>
    <thetext>Comment on attachment 401698
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        Bytecode liveness should be able to express that checkpoints can use use a value that was written to at
&gt; +        an earlier point in that bytecode&apos;s execution. E.g. in op_iterator_open, by the time we get to the getNext
&gt; +        checkpoint, we rely that m_iterator already contains the iterator we just allocated. Prior to this patch,
&gt; +        that value would not be properly set when we OSR exit to OpIteratorOpen::getNext.

what do you mean by &quot;not properly set&quot;? Why? Don&apos;t we already take into account checkpoint liveness in DFG? Why is this needed here if we already do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662089</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-12 12:26:01 -0700</bug_when>
    <thetext>Is the plan here to do what I suggested on Slack yesterday to simplify the approach? Or keep it as is?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662095</commentid>
    <comment_count>6</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-06-12 12:36:23 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #5)
&gt; Is the plan here to do what I suggested on Slack yesterday to simplify the
&gt; approach? Or keep it as is?

I&apos;m trying the approach you suggested now, I&apos;ll see how it goes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662110</commentid>
    <comment_count>7</comment_count>
      <attachid>401769</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-06-12 13:16:57 -0700</bug_when>
    <thetext>Created attachment 401769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662234</commentid>
    <comment_count>8</comment_count>
      <attachid>401769</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-06-12 16:54:29 -0700</bug_when>
    <thetext>Comment on attachment 401769
Patch

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

r- because I think it should be a lambda callback. Otherwise it looks good.

&gt; Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:178
&gt; +Vector&lt;Operand, maxNumCheckpointTmps&gt; livenessForCheckpoint(const CodeBlock&amp; codeBlock, BytecodeIndex bytecodeIndex)

It feels like this should take a scoped lambda rather than return a vector. Almost every case is just going to forward it to someone else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662279</commentid>
    <comment_count>9</comment_count>
      <attachid>401769</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-12 18:13:47 -0700</bug_when>
    <thetext>Comment on attachment 401769
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGForAllKills.h:90
&gt;              // No locals can die at a checkpoint.

Is this still definitely the case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662778</commentid>
    <comment_count>10</comment_count>
      <attachid>401769</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-06-15 13:08:04 -0700</bug_when>
    <thetext>Comment on attachment 401769
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:178
&gt;&gt; +Vector&lt;Operand, maxNumCheckpointTmps&gt; livenessForCheckpoint(const CodeBlock&amp; codeBlock, BytecodeIndex bytecodeIndex)
&gt; 
&gt; It feels like this should take a scoped lambda rather than return a vector. Almost every case is just going to forward it to someone else.

After talking offline, I&apos;m cool with this design if we have an assert we didn&apos;t exceed inline capacity before returning the Vector. There may also be a better WTF container type for this, might be worth a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662780</commentid>
    <comment_count>11</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-06-15 13:08:30 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #10)
&gt; Comment on attachment 401769 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401769&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:178
&gt; &gt;&gt; +Vector&lt;Operand, maxNumCheckpointTmps&gt; livenessForCheckpoint(const CodeBlock&amp; codeBlock, BytecodeIndex bytecodeIndex)
&gt; &gt; 
&gt; &gt; It feels like this should take a scoped lambda rather than return a vector. Almost every case is just going to forward it to someone else.
&gt; 
&gt; After talking offline, I&apos;m cool with this design if we have an assert we
&gt; didn&apos;t exceed inline capacity before returning the Vector. There may also be
&gt; a better WTF container type for this, might be worth a look.

For posterity r=me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662791</commentid>
    <comment_count>12</comment_count>
      <attachid>401931</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-06-15 13:25:56 -0700</bug_when>
    <thetext>Created attachment 401931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662893</commentid>
    <comment_count>13</comment_count>
      <attachid>401931</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-06-15 16:32:00 -0700</bug_when>
    <thetext>Comment on attachment 401931
Patch

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

r=me.

&gt; Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:184
&gt; +#ifndef NDEBUG

Are you sure you need the ifndef? Also, if so, can this be gated on ASSERT_ENABLED?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662927</commentid>
    <comment_count>14</comment_count>
      <attachid>401963</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-06-15 18:03:50 -0700</bug_when>
    <thetext>Created attachment 401963
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662933</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-15 18:26:12 -0700</bug_when>
    <thetext>Committed r263071: &lt;https://trac.webkit.org/changeset/263071&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401963.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662995</commentid>
    <comment_count>16</comment_count>
      <attachid>401963</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-15 23:47:43 -0700</bug_when>
    <thetext>Comment on attachment 401963
Patch for landing

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

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +

it would be helpful to enumerate here what the bug is and how this fixed it.

&gt; Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:179
&gt; +Vector&lt;Operand, maxNumCheckpointTmps&gt; livenessForCheckpoint(const CodeBlock&amp; codeBlock, BytecodeIndex bytecodeIndex)

what&apos;s the goal here:
- Are we only marking uses for things defined in the same opcode?
- Or are we supposed to mark all uses of a thing?

&gt; Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:186
&gt; +    auto scopeExit = makeScopeExit([&amp;] {
&gt; +        ASSERT(result.size() &lt;= maxNumCheckpointTmps);
&gt; +    });

is this that important?

&gt; Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:203
&gt; +            result.append(codeBlock.instructions().at(bytecodeIndex)-&gt;as&lt;OpIteratorOpen&gt;().m_iterator);

this is guaranteed to be a local?

&gt; Source/JavaScriptCore/dfg/DFGForAllKills.h:86
&gt; +            const FastBitVector&amp; liveAfter = fullLiveness.getLiveness(after.bytecodeIndex(), LivenessCalculationPoint::BeforeUse);

I think logically we might want AfterUse here, wdyt?

&gt; Source/JavaScriptCore/dfg/DFGForAllKills.h:89
&gt; +                if (checkpointLiveAfter.contains(operand) || (!operand.isTmp() &amp;&amp; liveAfter[operand.virtualRegister().offset()]))

You should assert that it&apos;s a local if it&apos;s not a tmp.

&gt; Source/JavaScriptCore/dfg/DFGGraph.h:909
&gt; +                auto live = livenessForCheckpoint(*codeBlock, codeOriginPtr-&gt;bytecodeIndex());
&gt; +                for (Operand operand : live)
&gt; +                    functor(remapOperand(inlineCallFrame, operand));

nit: I don&apos;t think you need the variable &quot;live&quot; here, you could just put the call in the for loop

&gt; JSTests/ChangeLog:3
&gt; +        Bytecode liveness should be aware of checkpoints

wrong bug name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663093</commentid>
    <comment_count>17</comment_count>
      <attachid>401963</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-06-16 08:23:25 -0700</bug_when>
    <thetext>Comment on attachment 401963
Patch for landing

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

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:179
&gt;&gt; +Vector&lt;Operand, maxNumCheckpointTmps&gt; livenessForCheckpoint(const CodeBlock&amp; codeBlock, BytecodeIndex bytecodeIndex)
&gt; 
&gt; what&apos;s the goal here:
&gt; - Are we only marking uses for things defined in the same opcode?
&gt; - Or are we supposed to mark all uses of a thing?

Right now, the former. The latter is already handled by regular use/def.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:186
&gt;&gt; +    });
&gt; 
&gt; is this that important?

couldn&apos;t harm to avoid the malloc, no?

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:203
&gt;&gt; +            result.append(codeBlock.instructions().at(bytecodeIndex)-&gt;as&lt;OpIteratorOpen&gt;().m_iterator);
&gt; 
&gt; this is guaranteed to be a local?

yes

&gt;&gt; Source/JavaScriptCore/dfg/DFGForAllKills.h:86
&gt;&gt; +            const FastBitVector&amp; liveAfter = fullLiveness.getLiveness(after.bytecodeIndex(), LivenessCalculationPoint::BeforeUse);
&gt; 
&gt; I think logically we might want AfterUse here, wdyt?

I read the code a few times, I&apos;m not sure I see the difference between AfterUse for the `before` bytecode and BeforeUse for the `after` bytecode. I&apos;ll read some more.

&gt;&gt; Source/JavaScriptCore/dfg/DFGForAllKills.h:89
&gt;&gt; +                if (checkpointLiveAfter.contains(operand) || (!operand.isTmp() &amp;&amp; liveAfter[operand.virtualRegister().offset()]))
&gt; 
&gt; You should assert that it&apos;s a local if it&apos;s not a tmp.

I&apos;ll add a follow up patch

&gt;&gt; JSTests/ChangeLog:3
&gt;&gt; +        Bytecode liveness should be aware of checkpoints
&gt; 
&gt; wrong bug name

oops, my bad</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663158</commentid>
    <comment_count>18</comment_count>
      <attachid>401963</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-16 10:54:07 -0700</bug_when>
    <thetext>Comment on attachment 401963
Patch for landing

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

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGForAllKills.h:86
&gt;&gt;&gt; +            const FastBitVector&amp; liveAfter = fullLiveness.getLiveness(after.bytecodeIndex(), LivenessCalculationPoint::BeforeUse);
&gt;&gt; 
&gt;&gt; I think logically we might want AfterUse here, wdyt?
&gt; 
&gt; I read the code a few times, I&apos;m not sure I see the difference between AfterUse for the `before` bytecode and BeforeUse for the `after` bytecode. I&apos;ll read some more.

I&apos;m not 100% sure about this. It just feels weird we&apos;re suing live-in to this bytecode after we&apos;re already executing in some checkpoints to check live after.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663199</commentid>
    <comment_count>19</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-16 12:44:46 -0700</bug_when>
    <thetext>Talking w/ Tadeu on slack, I think a theoretical example would be something like:

```
a -&gt; def loc42
b -&gt; use loc42
c -&gt; use/def nothing
```

and a has 4 checkpoints:
```
a1 -&gt; def loc42
a2 -&gt; use loc42
a3
a4
b  -&gt; use loc42
c
```

For such a thing today, I think we&apos;ll say loc42 is killed from a2-&gt;a3 since bytecode liveness is giving us live-in to a1, so it doesn&apos;t contain loc42

In reality, b is the kill</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401697</attachid>
            <date>2020-06-11 18:38:29 -0700</date>
            <delta_ts>2020-06-11 18:50:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213106-20200611183829.patch</filename>
            <type>text/plain</type>
            <size>46227</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OWRkNDRkMjhlOGViNGNjMWE4OWRlOTZhOTQxYjZlMmYyZDVjNmFlLi4zYTFmN2Q1YjgwZjAzMDhj
NDYxYjNlNTBkODFhZGFmMjM4NTk0NDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAyMC0wNi0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4gYW5kIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Qnl0ZWNvZGUgbGl2ZW5lc3Mgc2hvdWxkIGJlIGF3YXJlIG9mIGNoZWNrcG9pbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMxMDYKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYzNDE2ODM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJ5dGVjb2RlIGxpdmVuZXNzIHNob3VsZCBiZSBhYmxlIHRvIGV4
cHJlc3MgdGhhdCBjaGVja3BvaW50cyBjYW4gdXNlIHVzZSBhIHZhbHVlIHRoYXQgd2FzIHdyaXR0
ZW4gdG8gYXQKKyAgICAgICAgYW4gZWFybGllciBwb2ludCBpbiB0aGF0IGJ5dGVjb2RlJ3MgZXhl
Y3V0aW9uLiBFLmcuIGluIG9wX2l0ZXJhdG9yX29wZW4sIGJ5IHRoZSB0aW1lIHdlIGdldCB0byB0
aGUgZ2V0TmV4dAorICAgICAgICBjaGVja3BvaW50LCB3ZSByZWx5IHRoYXQgbV9pdGVyYXRvciBh
bHJlYWR5IGNvbnRhaW5zIHRoZSBpdGVyYXRvciB3ZSBqdXN0IGFsbG9jYXRlZC4gUHJpb3IgdG8g
dGhpcyBwYXRjaCwKKyAgICAgICAgdGhhdCB2YWx1ZSB3b3VsZCBub3QgYmUgcHJvcGVybHkgc2V0
IHdoZW4gd2UgT1NSIGV4aXQgdG8gT3BJdGVyYXRvck9wZW46OmdldE5leHQuCisKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OnJ1bik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVJbmRleC5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUluZGV4OjpCeXRlY29kZUluZGV4
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbmRleDo6Y2hlY2twb2ludCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlSW5kZXg6OndpdGhDaGVja3BvaW50IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVJbmRleDo6cGFjayk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZUluZGV4KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEluc3RydWN0aW9uKToK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29k
ZUluZGV4RGVmKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpz
dGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZUluRXhjZXB0aW9uSGFuZGxlcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRl
Y29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpz
dGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3Bh
Z2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJs
b2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpnZXRMaXZl
bmVzc0luZm9BdEluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1By
b3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0aW9uRGVmKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0aW9uVXNlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVw
T3Zlckluc3RydWN0aW9uVXNlSW5FeGNlcHRpb25IYW5kbGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0Zv
ckJ5dGVjb2RlSW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb246OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5l
c3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVJbmRleFNsb3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnZhbGlkYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9GdWxsQnl0ZWNvZGVMaXZlbmVzcy5o
OgorICAgICAgICAoSlNDOjpGdWxsQnl0ZWNvZGVMaXZlbmVzczo6Z2V0TGl2ZW5lc3MgY29uc3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgIChKU0M6OkJhc2VJ
bnN0cnVjdGlvbjo6bnVtYmVyT2ZDaGVja3BvaW50cyBjb25zdCk6CisgICAgICAgICogYnl0ZWNv
ZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVh
bTo6aW5zdHJ1Y3Rpb25Db3VudCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rp
b25TdHJlYW0uaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpGb3JJbkNvbnRleHQ6OmZpbmFsaXplKToKKyAgICAgICAgKiBkZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UGxhbjo6Y2xlYW5NdXN0SGFuZGxlVmFsdWVzSWZOZWNlc3NhcnkpOgorICAgICAgICAq
IGdlbmVyYXRvci9TZWN0aW9uLnJiOgorCiAyMDIwLTA2LTEwICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSlNDYWxsYmFja09iamVjdDo6ZGVsZXRl
UHJvcGVydHkgc2hvdWxkIHJlZGlyZWN0IHRvIFBhcmVudDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
IGlmIHByb3BlcnR5TmFtZSBpcyBpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXgg
NmZiYTIyOTdjMjkxZmU0OGViOTkzY2ZhN2VmZjYzOTFjYzRmODY2My4uYThlNTZkMGNkMzk0YmMx
YjdhYzA1MjZiZTg2NjdlYWM4YmRkN2U2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBA
IC0xOTQsNyArMTk0LDcgQEAgcHVibGljOgogICAgICAgICBydW5MaXZlbmVzc0ZpeHBvaW50KGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpKTsKIAog
ICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLnlpZWxk
cygpKQotICAgICAgICAgICAgZGF0YS5saXZlbmVzcyA9IGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVJbmRleChjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgbV9nZW5lcmF0b3JpZmljYXRpb24uZ3Jh
cGgoKSwgQnl0ZWNvZGVJbmRleChtX2dlbmVyYXRvcmlmaWNhdGlvbi5pbnN0cnVjdGlvbnMoKS5h
dChkYXRhLnBvaW50KS5uZXh0KCkub2Zmc2V0KCkpKTsKKyAgICAgICAgICAgIGRhdGEubGl2ZW5l
c3MgPSBnZXRMaXZlbmVzc0luZm9BdEluc3RydWN0aW9uKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
LCBtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLCBCeXRlY29kZUluZGV4KG1fZ2VuZXJhdG9y
aWZpY2F0aW9uLmluc3RydWN0aW9ucygpLmF0KGRhdGEucG9pbnQpLm5leHQoKS5vZmZzZXQoKSkp
OwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUluZGV4LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVJbmRleC5oCmluZGV4IDZlMjY2ZDNkYWYzYjEyNWU4NzM2NzU3NTQwNTJjMzEzYzBl
NWE1NzEuLjRjZTU3ZTUxYTU0NWJjMzk2MDkwZjFiODM2ZDYyYjVjNGRhMjYwMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUluZGV4LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW5kZXguaApAQCAtMzQsNiAr
MzQsOSBAQCBjbGFzcyBQcmludFN0cmVhbTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3VzaW5nIENo
ZWNrcG9pbnQgPSB1aW50OF90Oworc3RhdGljIGNvbnN0ZXhwciBDaGVja3BvaW50IG5vQ2hlY2tw
b2ludHMgPSAwOworCiBjbGFzcyBCeXRlY29kZUluZGV4IHsKIHB1YmxpYzoKICAgICBCeXRlY29k
ZUluZGV4KCkgPSBkZWZhdWx0OwpAQCAtNDIsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotICAgIGV4cGxpY2l0IEJ5dGVjb2RlSW5kZXgodWludDMyX3QgYnl0ZWNvZGVPZmZzZXQs
IHVpbnQ4X3QgY2hlY2twb2ludCA9IDApCisgICAgZXhwbGljaXQgQnl0ZWNvZGVJbmRleCh1aW50
MzJfdCBieXRlY29kZU9mZnNldCwgQ2hlY2twb2ludCA9IG5vQ2hlY2twb2ludHMpCiAgICAgICAg
IDogbV9wYWNrZWRCaXRzKHBhY2soYnl0ZWNvZGVPZmZzZXQsIGNoZWNrcG9pbnQpKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKCp0aGlzKTsKQEAgLTU0LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgY2hlY2twb2ludFNoaWZ0ID0gV1RGOjpnZXRNU0JTZXRD
b25zdGV4cHIobnVtYmVyT2ZDaGVja3BvaW50cyk7CiAKICAgICB1aW50MzJfdCBvZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX3BhY2tlZEJpdHMgPj4gY2hlY2twb2ludFNoaWZ0OyB9Ci0gICAgdWlu
dDhfdCBjaGVja3BvaW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWNrZWRCaXRzICYgY2hlY2twb2lu
dE1hc2s7IH0KKyAgICBDaGVja3BvaW50IGNoZWNrcG9pbnQoKSBjb25zdCB7IHJldHVybiBtX3Bh
Y2tlZEJpdHMgJiBjaGVja3BvaW50TWFzazsgfQogICAgIHVpbnQzMl90IGFzQml0cygpIGNvbnN0
IHsgcmV0dXJuIG1fcGFja2VkQml0czsgfQogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsg
cmV0dXJuIFdURjo6aW50SGFzaChtX3BhY2tlZEJpdHMpOyB9CkBAIC02Miw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
KnRoaXMgPT0gZGVsZXRlZFZhbHVlKCk7IH0KIAogICAgIHN0YXRpYyBCeXRlY29kZUluZGV4IGZy
b21CaXRzKHVpbnQzMl90IGJpdHMpOwotICAgIEJ5dGVjb2RlSW5kZXggd2l0aENoZWNrcG9pbnQo
dW5zaWduZWQgY2hlY2twb2ludCkgY29uc3QgeyByZXR1cm4gQnl0ZWNvZGVJbmRleChvZmZzZXQo
KSwgY2hlY2twb2ludCk7IH0KKyAgICBCeXRlY29kZUluZGV4IHdpdGhDaGVja3BvaW50KENoZWNr
cG9pbnQgY2hlY2twb2ludCkgY29uc3QgeyByZXR1cm4gQnl0ZWNvZGVJbmRleChvZmZzZXQoKSwg
Y2hlY2twb2ludCk7IH0KIAogICAgIC8vIENvbXBhcmlzb24gb3BlcmF0b3JzLgogICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3BhY2tlZEJpdHMgIT0gaW52YWxp
ZE9mZnNldCAmJiBtX3BhY2tlZEJpdHMgIT0gZGVsZXRlZFZhbHVlKCkub2Zmc2V0KCk7IH0KQEAg
LTgwLDEyICs4MywxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3QgaW52YWxpZE9mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+Ojpt
YXgoKTsKIAotICAgIHN0YXRpYyB1aW50MzJfdCBwYWNrKHVpbnQzMl90IGJ5dGVjb2RlSW5kZXgs
IHVpbnQ4X3QgY2hlY2twb2ludCk7CisgICAgc3RhdGljIHVpbnQzMl90IHBhY2sodWludDMyX3Qg
Ynl0ZWNvZGVJbmRleCwgQ2hlY2twb2ludCk7CiAKICAgICB1aW50MzJfdCBtX3BhY2tlZEJpdHMg
eyBpbnZhbGlkT2Zmc2V0IH07CiB9OwogCi1pbmxpbmUgdWludDMyX3QgQnl0ZWNvZGVJbmRleDo6
cGFjayh1aW50MzJfdCBieXRlY29kZUluZGV4LCB1aW50OF90IGNoZWNrcG9pbnQpCitpbmxpbmUg
dWludDMyX3QgQnl0ZWNvZGVJbmRleDo6cGFjayh1aW50MzJfdCBieXRlY29kZUluZGV4LCBDaGVj
a3BvaW50IGNoZWNrcG9pbnQpCiB7CiAgICAgQVNTRVJUKGNoZWNrcG9pbnQgPCBudW1iZXJPZkNo
ZWNrcG9pbnRzKTsKICAgICBBU1NFUlQoKGJ5dGVjb2RlSW5kZXggPDwgY2hlY2twb2ludFNoaWZ0
KSA+PiBjaGVja3BvaW50U2hpZnQgPT0gYnl0ZWNvZGVJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
Y3BwCmluZGV4IDhkY2YxM2RlN2M2YWFlMzA1MGY3ZmQ5NmRlYTJkOGQ2NWVhODFmZjAuLjhhNzA2
NzhiM2Y2YmYyMzhhZDRiMWMwNThhNmYzNTE4MGY2ZDFiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
Y3BwCkBAIC00Myw1NyArNDMsNDYgQEAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAgIGR1bXBSZXN1
bHRzKGNvZGVCbG9jayk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRM
aXZlbmVzc0luZm9BdEJ5dGVjb2RlSW5kZXgoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQotewotICAgIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSk7Ci0gICAgQVNTRVJUKGJsb2NrKTsKLSAgICBB
U1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7Ci0gICAgQVNTRVJUKCFibG9jay0+aXNFeGl0
QmxvY2soKSk7Ci0gICAgcmVzdWx0LnJlc2l6ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKLSAg
ICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlSW5kZXgoY29kZUJsb2NrLCBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLCBtX2dyYXBoLCAqYmxvY2ssIGJ5dGVjb2RlSW5kZXgsIHJlc3Vs
dCk7Ci19Ci0KLUZhc3RCaXRWZWN0b3IgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZl
bmVzc0luZm9BdEJ5dGVjb2RlSW5kZXgoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlSW5k
ZXggYnl0ZWNvZGVJbmRleCkKLXsKLSAgICBGYXN0Qml0VmVjdG9yIG91dDsKLSAgICBnZXRMaXZl
bmVzc0luZm9BdEJ5dGVjb2RlSW5kZXgoY29kZUJsb2NrLCBieXRlY29kZUluZGV4LCBvdXQpOwot
ICAgIHJldHVybiBvdXQ7Ci19Ci0KIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21w
dXRlRnVsbExpdmVuZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBGdWxsQnl0ZWNvZGVMaXZlbmVz
cyYgcmVzdWx0KQogewogICAgIEZhc3RCaXRWZWN0b3Igb3V0OwogCi0gICAgcmVzdWx0Lm1fYmVm
b3JlVXNlVmVjdG9yLnJlc2l6ZShjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0g
ICAgcmVzdWx0Lm1fYWZ0ZXJVc2VWZWN0b3IucmVzaXplKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHNjYWxlIHRoaXMgYmFzZWQgb24g
Y2hlY2twb2ludHM/CisgICAgc2l6ZV90IGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmluc3RydWN0aW9uQ291bnQoKTsKKyAgICByZXN1bHQubV91c2VzQmVmb3Jl
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5zdHJ1Y3Rpb25Db3VudCk7CisgICAgcmVzdWx0Lm1f
dXNlc0FmdGVyLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5zdHJ1Y3Rpb25Db3VudCk7CiAgICAg
CiAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nr
c0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJsb2NrLmlzRW50cnlCbG9jaygpIHx8
IGJsb2NrLmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAg
ICAgICAgIG91dCA9IGJsb2NrLm91dCgpOwotICAgICAgICAKLSAgICAgICAgYXV0byB1c2UgPSBb
Jl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2Ug
ZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCi0gICAgICAgICAgICBvdXRbYml0SW5kZXhdID0g
dHJ1ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBhdXRvIGRlZiA9IFsmXSAodW5zaWduZWQgYml0
SW5kZXgpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBj
bGVhciB0aGUgYml0LgotICAgICAgICAgICAgb3V0W2JpdEluZGV4XSA9IGZhbHNlOwotICAgICAg
ICB9OwotCiAgICAgICAgIGF1dG8mIGluc3RydWN0aW9ucyA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCk7CiAgICAgICAgIHVuc2lnbmVkIGN1cnNvciA9IGJsb2NrLnRvdGFsTGVuZ3RoKCk7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLmRlbHRhKCkuc2l6ZSgpOyBpLS07KSB7CiAg
ICAgICAgICAgICBjdXJzb3IgLT0gYmxvY2suZGVsdGEoKVtpXTsKICAgICAgICAgICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgoYmxvY2subGVhZGVyT2Zmc2V0
KCkgKyBjdXJzb3IpOwotCi0gICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uRGVmKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb25zLCBtX2dyYXBoLCBieXRlY29kZUluZGV4LCBkZWYpOwotICAgICAg
ICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvblVzZUluRXhjZXB0aW9uSGFuZGxlcihjb2RlQmxvY2ss
IGluc3RydWN0aW9ucywgbV9ncmFwaCwgYnl0ZWNvZGVJbmRleCwgdXNlKTsKLSAgICAgICAgICAg
IHJlc3VsdC5tX2FmdGVyVXNlVmVjdG9yW2J5dGVjb2RlSW5kZXgub2Zmc2V0KCldID0gb3V0OyAv
LyBBZnRlclVzZSBwb2ludC4KLSAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb25Vc2UoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbnMsIG1fZ3JhcGgsIGJ5dGVjb2RlSW5kZXgsIHVzZSk7Ci0gICAg
ICAgICAgICByZXN1bHQubV9iZWZvcmVVc2VWZWN0b3JbYnl0ZWNvZGVJbmRleC5vZmZzZXQoKV0g
PSBvdXQ7IC8vIEJlZm9yZVVzZSBwb2ludC4KKyAgICAgICAgICAgIGZvciAoQ2hlY2twb2ludCBj
aGVja3BvaW50ID0gaW5zdHJ1Y3Rpb25zLmF0KGJ5dGVjb2RlSW5kZXgpLT5udW1iZXJPZkNoZWNr
cG9pbnRzKCk7IGNoZWNrcG9pbnQtLTspIHsKKyAgICAgICAgICAgICAgICBieXRlY29kZUluZGV4
ID0gYnl0ZWNvZGVJbmRleC53aXRoQ2hlY2twb2ludChjaGVja3BvaW50KTsKKworICAgICAgICAg
ICAgICAgIGF1dG8gdXNlID0gWyZdIChDaGVja3BvaW50IHRhcmdldCwgdW5zaWduZWQgYml0SW5k
ZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNv
IHdlIHNldCB0aGUgYml0LgorICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2twb2ludCA9PSB0
YXJnZXQpCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRbYml0SW5kZXhdID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgYXV0byBkZWYgPSBbJl0gKENoZWNr
cG9pbnQgdGFyZ2V0LCB1bnNpZ25lZCBiaXRJbmRleCkgeworICAgICAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2UgY2xlYXIgdGhlIGJpdC4KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGNoZWNrcG9pbnQgPT0gdGFyZ2V0KQorICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0W2JpdEluZGV4XSA9IGZhbHNlOworICAgICAgICAgICAgICAgIH07CisKKyAgICAg
ICAgICAgICAgICBzdGVwT3ZlckJ5dGVjb2RlSW5kZXhEZWYoY29kZUJsb2NrLCBpbnN0cnVjdGlv
bnMsIG1fZ3JhcGgsIGJ5dGVjb2RlSW5kZXgsIGRlZik7CisgICAgICAgICAgICAgICAgc3RlcE92
ZXJCeXRlY29kZUluZGV4VXNlSW5FeGNlcHRpb25IYW5kbGVyKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b25zLCBtX2dyYXBoLCBieXRlY29kZUluZGV4LCB1c2UpOworICAgICAgICAgICAgICAgIHJlc3Vs
dC5tX3VzZXNBZnRlci5hZGQoYnl0ZWNvZGVJbmRleCwgb3V0KTsgLy8gQWZ0ZXJVc2UgcG9pbnQu
CisgICAgICAgICAgICAgICAgc3RlcE92ZXJCeXRlY29kZUluZGV4VXNlKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb25zLCBtX2dyYXBoLCBieXRlY29kZUluZGV4LCB1c2UpOworICAgICAgICAgICAgICAg
IHJlc3VsdC5tX3VzZXNCZWZvcmUuYWRkKGJ5dGVjb2RlSW5kZXgsIG91dCk7IC8vIEJlZm9yZVVz
ZSBwb2ludC4KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE0OSw3ICsx
MzgsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiAgICAgICAgICAgICBjb25zdCBhdXRvIGN1cnJlbnRJbnN0cnVjdGlv
biA9IGluc3RydWN0aW9ucy5hdChieXRlY29kZU9mZnNldCk7CiAKICAgICAgICAgICAgIGRhdGFM
b2dGKCJMaXZlIHZhcmlhYmxlczoiKTsKLSAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUJl
Zm9yZSA9IGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVJbmRleChjb2RlQmxvY2ssIEJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUJl
Zm9yZSA9IGdldExpdmVuZXNzSW5mb0F0SW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlT2Zmc2V0KSk7CiAgICAgICAgICAgICBkdW1wQml0VmVjdG9yKGxpdmVCZWZv
cmUpOwogICAgICAgICAgICAgZGF0YUxvZ0YoIlxuIik7CiAgICAgICAgICAgICBjb2RlQmxvY2st
PmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIGN1cnJlbnRJbnN0cnVjdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmgKaW5kZXggYTgwMDhiMzU4YzcxOWFjNGQwMmJlNzRlZDUzNWM3NGJkYWYyYzVj
Ni4uYTIwNDE3ZjIyY2IxYjJkMzc3NmIwOWE2NzcxMzljMjI3ZDI2MGMyOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuaApAQCAtNTEsMjYgKzUxLDI2IEBAIGVudW0gY2xhc3MgTGl2ZW5lc3NDYWxjdWxhdGlv
blBvaW50IDogdWludDhfdCB7CiBjbGFzcyBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb24gewog
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIFVz
ZUZ1bmN0b3I+Ci0gICAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvblVzZShDb2RlQmxv
Y2tUeXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNv
ZGVJbmRleCwgY29uc3QgVXNlRnVuY3RvciYpOworICAgIHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0
ZWNvZGVJbmRleFVzZShDb2RlQmxvY2tUeXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBC
eXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVuY3RvciYpOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIFVzZUZ1bmN0b3I+Ci0gICAg
c3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvblVzZUluRXhjZXB0aW9uSGFuZGxlcihDb2Rl
QmxvY2tUeXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0
ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVuY3RvciYpOworICAgIHN0YXRpYyB2b2lkIHN0ZXBPdmVy
Qnl0ZWNvZGVJbmRleFVzZUluRXhjZXB0aW9uSGFuZGxlcihDb2RlQmxvY2tUeXBlKiwgY29uc3Qg
SW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29uc3Qg
VXNlRnVuY3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVu
YW1lIERlZkZ1bmN0b3I+Ci0gICAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbkRlZihD
b2RlQmxvY2tUeXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwg
Qnl0ZWNvZGVJbmRleCwgY29uc3QgRGVmRnVuY3RvciYpOworICAgIHN0YXRpYyB2b2lkIHN0ZXBP
dmVyQnl0ZWNvZGVJbmRleERlZihDb2RlQmxvY2tUeXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJl
YW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwgY29uc3QgRGVmRnVuY3RvciYpOwog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgVXNlRnVuY3Rv
ciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLSAgICBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0
aW9uKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3Jh
cGgmLCBCeXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiwgY29uc3QgRGVmRnVuY3RvciYp
OworICAgIHN0YXRpYyB2b2lkIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleChDb2RlQmxvY2tUeXBlKiwg
Y29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCwg
Y29uc3QgVXNlRnVuY3RvciYsIGNvbnN0IERlZkZ1bmN0b3ImKTsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENvZGVCbG9ja1R5cGU+CiAgICAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlv
bihDb2RlQmxvY2tUeXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBo
JiwgQnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYgb3V0KTsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9ucz4KLSAgICBzdGF0aWMg
Ym9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlSW5kZXgoQ29kZUJsb2NrVHlwZSos
IGNvbnN0IEluc3RydWN0aW9ucyYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUJhc2ljQmxvY2sm
LCBCeXRlY29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpOworICAgIHN0YXRpYyBib29s
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSosIGNvbnN0
IEluc3RydWN0aW9ucyYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUJhc2ljQmxvY2smLCBCeXRl
Y29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25zPgogICAgIHN0YXRpYyBib29s
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrVHlwZSosIGNvbnN0IEluc3Ry
dWN0aW9ucyYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUJhc2ljQmxvY2smKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9ucz4KLSAg
ICBzdGF0aWMgRmFzdEJpdFZlY3RvciBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlSW5kZXgoQ29k
ZUJsb2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9ucyYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29k
ZUluZGV4KTsKKyAgICBzdGF0aWMgRmFzdEJpdFZlY3RvciBnZXRMaXZlbmVzc0luZm9BdEluc3Ry
dWN0aW9uKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBCeXRlY29kZUdyYXBo
JiwgQnl0ZWNvZGVJbmRleCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBl
LCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+CiAgICAgc3RhdGljIHZvaWQgcnVuTGl2ZW5lc3NGaXhw
b2ludChDb2RlQmxvY2tUeXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVHcmFwaCYp
OwpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTGl2
ZW5lc3NQcm9wYWdhdGlvbjsKICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2Nr
Kik7CiAgICAgCi0gICAgRmFzdEJpdFZlY3RvciBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlSW5k
ZXgoQ29kZUJsb2NrKiwgQnl0ZWNvZGVJbmRleCk7CisgICAgRmFzdEJpdFZlY3RvciBnZXRMaXZl
bmVzc0luZm9BdEluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUluZGV4
IGJ5dGVjb2RlSW5kZXgpIHsgcmV0dXJuIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6Z2V0
TGl2ZW5lc3NJbmZvQXRJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCksIG1fZ3JhcGgsIGJ5dGVjb2RlSW5kZXgpOyB9CiAgICAgCiAgICAgdm9pZCBjb21wdXRl
RnVsbExpdmVuZXNzKENvZGVCbG9jayosIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpOwog
CkBAIC05Miw4ICs5Miw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBkdW1wUmVzdWx0
cyhDb2RlQmxvY2sqKTsKIAotICAgIHZvaWQgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZUluZGV4
KENvZGVCbG9jayosIEJ5dGVjb2RlSW5kZXgsIEZhc3RCaXRWZWN0b3ImKTsKLQogICAgIEJ5dGVj
b2RlR3JhcGggbV9ncmFwaDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCmlu
ZGV4IGM2MDk2NWJjYzk3YTdiODk5MGRiOThmZDIzZDk5YjVlMDhmOWNkZDUuLmQ4OTE1OTY0Zjky
OThiMzFhYWM5MWU1NDFlZjJlNmJlYzhmNWI2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lu
bGluZXMuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgog
I2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2Rl
VXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJ
bmxpbmVzLmgiCiAKQEAgLTU4LDQ3ICs1OSw0OSBAQCBpbmxpbmUgYm9vbCBpc1ZhbGlkUmVnaXN0
ZXJGb3JMaXZlbmVzcyhWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLWlubGluZSB2b2lkIEJ5
dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJJbnN0cnVjdGlvbkRlZihDb2RlQmxv
Y2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMs
IEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IERlZkZ1
bmN0b3ImIGRlZikKK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3Rl
cE92ZXJCeXRlY29kZUluZGV4RGVmKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5z
dHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5k
ZXggYnl0ZWNvZGVJbmRleCwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQogewogICAgIGF1dG8qIGlu
c3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zLmF0KGJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleCgKICAgICAgICAgY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwKLSAgICAgICAgWyZdIChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgeworICAgICAgICBbJl0g
KENoZWNrcG9pbnQgY2hlY2twb2ludCwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsKICAgICAg
ICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKLSAgICAgICAg
ICAgICAgICBkZWYob3BlcmFuZC50b0xvY2FsKCkpOworICAgICAgICAgICAgICAgIGRlZihjaGVj
a3BvaW50LCBvcGVyYW5kLnRvTG9jYWwoKSk7CiAgICAgICAgIH0pOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBVc2VGdW5jdG9yPgotaW5saW5lIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0aW9uVXNlKENvZGVC
bG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9u
cywgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgY29uc3QgVXNl
RnVuY3RvciYgdXNlKQoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpz
dGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJ
bnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UpCiB7CiAgICAgYXV0byog
aW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCkucHRyKCk7CiAgICAg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4KAogICAgICAgICBjb2RlQmxvY2ssIGluc3RydWN0
aW9uLAotICAgICAgICBbJl0gKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7CisgICAgICAgIFsm
XSAoQ2hlY2twb2ludCBjaGVja3BvaW50LCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgewogICAg
ICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQotICAgICAg
ICAgICAgICAgIHVzZShvcGVyYW5kLnRvTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgdXNlKGNo
ZWNrcG9pbnQsIG9wZXJhbmQudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIFVzZUZ1bmN0b3I+Ci1pbmxpbmUgdm9p
ZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVySW5zdHJ1Y3Rpb25Vc2VJbkV4
Y2VwdGlvbkhhbmRsZXIoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlv
blN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5k
ZXgsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSkKK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQ
cm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29kZUluZGV4VXNlSW5FeGNlcHRpb25IYW5kbGVyKENv
ZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29k
ZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5j
dG9yJiB1c2UpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ug
d2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAotICAgIC8vIGV4Y2VwdGlvbiBoYW5k
bGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxh
ciBieXRlY29kZS4KKyAgICAvLyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNsdWRl
ZCBpbiB0aGUgbGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3VsYXIgQnl0ZWNvZGVJbmRleC4KICAgICBp
ZiAoYXV0byogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVJbmRleCkpIHsKICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sg
PSBncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci0+dGFyZ2V0KTsK
ICAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7Ci0gICAgICAgIGhhbmRsZXJCbG9jay0+aW4o
KS5mb3JFYWNoU2V0Qml0KHVzZSk7CisgICAgICAgIGhhbmRsZXJCbG9jay0+aW4oKS5mb3JFYWNo
U2V0Qml0KFsmXSAodW5zaWduZWQgaSkgeworICAgICAgICAgICAgdXNlKGJ5dGVjb2RlSW5kZXgu
Y2hlY2twb2ludCgpICwgaSk7CisgICAgICAgIH0pOwogICAgIH0KIH0KIAogLy8gU2ltcGxpZmll
ZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZp
cnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwogLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGlu
IHRoZSB1c2VzLgogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgVXNl
RnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLWlubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5l
c3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2tUeXBlKiBjb2RlQmxv
Y2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgm
IGdyYXBoLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3ImIHVz
ZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1By
b3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXgoQ29kZUJsb2NrVHlwZSogY29kZUJsb2Nr
LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiBn
cmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiB1c2Us
IGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKIHsKLSAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0
ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJz
dCB1c2Ugb3BlcmFuZHMgYW5kCisgICAgLy8gVGhpcyBhYnN0cmFjdGx5IGV4ZWN1dGVzIHRoZSBC
eXRlY29kZUluZGV4IGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBsb2dpY2FsbHkgZmlyc3QgdXNl
IG9wZXJhbmRzIGFuZAogICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBUaGlzIGxvZ2ljYWwg
b3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIGFuZCBkZWYgdGhl
IHNhbWUKICAgICAvLyBvcGVyYW5kLCBsaWtlOgogICAgIC8vCkBAIC0xMTMsMzEgKzExNiwzNyBA
QCBpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVySW5zdHJ1
Y3Rpb24oQ29kZUJsb2NrVHlwZSogY29kZQogICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMsIHRoZW4g
dGhlIGFkZCBvcGVyYXRpb24gYWJvdmUgd291bGQgYXBwZWFyIHRvIG5vdCBoYXZlIGxvYzEgbGl2
ZSwgc2luY2Ugd2UnZAogICAgIC8vIGZpcnN0IGFkZCBpdCB0byB0aGUgb3V0IHNldCAodGhlIHVz
ZSksIGFuZCB0aGVuIHdlJ2QgcmVtb3ZlIGl0ICh0aGUgZGVmKS4KIAotICAgIHN0ZXBPdmVySW5z
dHJ1Y3Rpb25EZWYoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGdyYXBoLCBieXRlY29kZUluZGV4
LCBkZWYpOwotICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb25Vc2VJbkV4Y2VwdGlvbkhhbmRsZXIoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGdyYXBoLCBieXRlY29kZUluZGV4LCB1c2UpOwotICAgIHN0
ZXBPdmVySW5zdHJ1Y3Rpb25Vc2UoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGdyYXBoLCBieXRl
Y29kZUluZGV4LCB1c2UpOworICAgIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleERlZihjb2RlQmxvY2ss
IGluc3RydWN0aW9ucywgZ3JhcGgsIGJ5dGVjb2RlSW5kZXgsIGRlZik7CisgICAgc3RlcE92ZXJC
eXRlY29kZUluZGV4VXNlSW5FeGNlcHRpb25IYW5kbGVyKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
LCBncmFwaCwgYnl0ZWNvZGVJbmRleCwgdXNlKTsKKyAgICBzdGVwT3ZlckJ5dGVjb2RlSW5kZXhV
c2UoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGdyYXBoLCBieXRlY29kZUluZGV4LCB1c2UpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogaW5saW5lIHZvaWQgQnl0ZWNv
ZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9ja1R5cGUq
IGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0ZWNv
ZGVHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3Rv
ciYgb3V0KQogewotICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb25zLCBncmFwaCwgYnl0ZWNvZGVJbmRleCwKLSAgICAgICAgWyZdICh1bnNpZ25l
ZCBiaXRJbmRleCkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNv
IHdlIHNldCB0aGUgYml0LgotICAgICAgICAgICAgb3V0W2JpdEluZGV4XSA9IHRydWU7Ci0gICAg
ICAgIH0sCi0gICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKLSAgICAgICAgICAgIC8v
IFRoaXMgaXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBjbGVhciB0aGUgYml0LgotICAgICAgICAg
ICAgb3V0W2JpdEluZGV4XSA9IGZhbHNlOwotICAgICAgICB9KTsKKyAgICBhdXRvIG51bWJlck9m
Q2hlY2twb2ludHMgPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCktPm51bWJlck9mQ2hl
Y2twb2ludHMoKTsKKyAgICBmb3IgKENoZWNrcG9pbnQgdGFyZ2V0ID0gbnVtYmVyT2ZDaGVja3Bv
aW50czsgdGFyZ2V0LS07KSB7CisgICAgICAgIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleCgKKyAgICAg
ICAgICAgIGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBncmFwaCwgYnl0ZWNvZGVJbmRleCwKKyAg
ICAgICAgICAgIFsmXSAoQ2hlY2twb2ludCBjaGVja3BvaW50LCB1bnNpZ25lZCBiaXRJbmRleCkg
eworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQg
dGhlIGJpdC4KKyAgICAgICAgICAgICAgICBpZiAoY2hlY2twb2ludCA9PSB0YXJnZXQpCisgICAg
ICAgICAgICAgICAgICAgIG91dFtiaXRJbmRleF0gPSB0cnVlOworICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIFsmXSAoQ2hlY2twb2ludCBjaGVja3BvaW50LCB1bnNpZ25lZCBiaXRJbmRleCkg
eworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBjbGVh
ciB0aGUgYml0LgorICAgICAgICAgICAgICAgIGlmIChjaGVja3BvaW50ID09IHRhcmdldCkKKyAg
ICAgICAgICAgICAgICAgICAgb3V0W2JpdEluZGV4XSA9IGZhbHNlOworICAgICAgICAgICAgfSk7
CisgICAgfQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBJ
bnN0cnVjdGlvbnM+Ci1pbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OmNv
bXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVJbmRleChDb2RlQmxvY2tUeXBlKiBjb2RlQmxv
Y2ssIGNvbnN0IEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiBncmFw
aCwgQnl0ZWNvZGVCYXNpY0Jsb2NrJiBibG9jaywgQnl0ZWNvZGVJbmRleCB0YXJnZXRJbmRleCwg
RmFzdEJpdFZlY3RvciYgcmVzdWx0KQoraW5saW5lIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc1Byb3Bh
Z2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKENvZGVCbG9ja1R5cGUq
IGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3Jh
cGgmIGdyYXBoLCBCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrLCBCeXRlY29kZUluZGV4IHRhcmdl
dEluZGV4LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFibG9jay5pc0V4
aXRCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLmlzRW50cnlCbG9jaygpKTsKKyAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCF0YXJnZXRJbmRleC5jaGVja3BvaW50KCksICJjb21wdXRlTG9jYWxM
aXZlbmVzc0Zvckluc3RydWN0aW9uIGNhbid0IGJlIHVzZWQgdG8gYXNrIHF1ZXN0aW9ucyBhYm91
dCBjaGVja3BvaW50cyIpOwogCiAgICAgRmFzdEJpdFZlY3RvciBvdXQgPSBibG9jay5vdXQoKTsK
IApAQCAtMTU4LDE5ICsxNjcsMjAgQEAgaW5saW5lIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc1Byb3Bh
Z2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9ja1QKIHsKICAgICBp
ZiAoYmxvY2suaXNFeGl0QmxvY2soKSB8fCBibG9jay5pc0VudHJ5QmxvY2soKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2Rl
SW5kZXgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGdyYXBoLCBibG9jaywgQnl0ZWNvZGVJbmRl
eChibG9jay5sZWFkZXJPZmZzZXQoKSksIGJsb2NrLmluKCkpOworICAgIHJldHVybiBjb21wdXRl
TG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBncmFw
aCwgYmxvY2ssIEJ5dGVjb2RlSW5kZXgoYmxvY2subGVhZGVyT2Zmc2V0KCkpLCBibG9jay5pbigp
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1
Y3Rpb25zPgotaW5saW5lIEZhc3RCaXRWZWN0b3IgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9u
OjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlSW5kZXgoQ29kZUJsb2NrVHlwZSogY29kZUJsb2Nr
LCBjb25zdCBJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgs
IEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKK2lubGluZSBGYXN0Qml0VmVjdG9yIEJ5dGVj
b2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6Z2V0TGl2ZW5lc3NJbmZvQXRJbnN0cnVjdGlvbihDb2Rl
QmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBC
eXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogeworICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIWJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpLCAiZ2V0TGl2
ZW5lc3NJbmZvQXRJbnN0cnVjdGlvbiBjYW4ndCBiZSB1c2VkIHRvIGFzayBxdWVzdGlvbnMgYWJv
dXQgY2hlY2twb2ludHMiKTsKICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gZ3JhcGgu
ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4Lm9mZnNldCgpKTsK
ICAgICBBU1NFUlQoYmxvY2spOwogICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsK
ICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAgICBGYXN0Qml0VmVjdG9yIG91
dDsKICAgICBvdXQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOwotICAgIGNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVJbmRleChjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgZ3Jh
cGgsICpibG9jaywgYnl0ZWNvZGVJbmRleCwgb3V0KTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVz
c0Zvckluc3RydWN0aW9uKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBncmFwaCwgKmJsb2NrLCBi
eXRlY29kZUluZGV4LCBvdXQpOwogICAgIHJldHVybiBvdXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IGIwZjJlODAy
ZDcyN2M3ZjhlMzI5NGMxNTViOTFjYjJjOGRiZTllNGQuLjI1MDlkM2MyNmExYzAzYTlhNjg5N2Vk
NmNjYTdjZGYzZTU5YmU0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjksMTAgKzI5LDExIEBACiBuYW1lc3BhY2UgSlND
IHsKIAogI2RlZmluZSBDQUxMX0ZVTkNUT1IoX19hcmcpIFwKLSAgICBmdW5jdG9yKF9fYnl0ZWNv
ZGUubV8jI19fYXJnKTsKKyAgICBmdW5jdG9yKG5vQ2hlY2twb2ludHMsIF9fYnl0ZWNvZGUubV8j
I19fYXJnKTsKIAogI2RlZmluZSBVU0VTX09SX0RFRlMoX19vcGNvZGUsIC4uLikgXAogICAgIGNh
c2UgX19vcGNvZGU6Om9wY29kZUlEOiB7IFwKKyAgICAgICAgc3RhdGljX2Fzc2VydChfX29wY29k
ZTo6b3Bjb2RlSUQgPj0gTlVNQkVSX09GX0JZVEVDT0RFX1dJVEhfQ0hFQ0tQT0lOVFMsICJEb24n
dCB1c2UgdGhpcyBtYWNybyBmb3IgYnl0ZWNvZGVzIHRoYXQgaGF2ZSBjaGVja3BvaW50cy4iKTsg
XAogICAgICAgICBhdXRvIF9fYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8X19vcGNvZGU+KCk7
IFwKICAgICAgICAgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTShDQUxMX0ZVTkNUT1IsIF9fVkFfQVJH
U19fKSBcCiAgICAgICAgIHJldHVybjsgXApAQCAtNDEsMjYgKzQyLDMxIEBAIG5hbWVzcGFjZSBK
U0MgewogI2RlZmluZSBVU0VTIFVTRVNfT1JfREVGUwogI2RlZmluZSBERUZTIFVTRVNfT1JfREVG
UwogCi12b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVy
IHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVu
Y3Rpb248dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZVVzZXNG
b3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdGlvbjx2b2lkKENoZWNrcG9pbnQs
IFZpcnR1YWxSZWdpc3Rlcik+JiBmdW5jdG9yKQogewogICAgIE9wY29kZUlEIG9wY29kZUlEID0g
aW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAKLSAgICBhdXRvIGhhbmRsZU5ld0FycmF5TGlrZSA9
IFsmXShhdXRvIG9wKSB7CisgICAgYXV0byBoYW5kbGVOZXdBcnJheUxpa2UgPSBbJl0gKGF1dG8g
b3ApIHsKICAgICAgICAgaW50IGJhc2UgPSBvcC5tX2FyZ3Yub2Zmc2V0KCk7CiAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8aW50PihvcC5tX2FyZ2MpOyBpKyspCi0gICAg
ICAgICAgICBmdW5jdG9yKFZpcnR1YWxSZWdpc3RlciB7IGJhc2UgLSBpIH0pOworICAgICAgICAg
ICAgZnVuY3Rvcihub0NoZWNrcG9pbnRzLCBWaXJ0dWFsUmVnaXN0ZXIgeyBiYXNlIC0gaSB9KTsK
ICAgICB9OwogCi0gICAgYXV0byBoYW5kbGVPcENhbGxMaWtlID0gWyZdKGF1dG8gb3ApIHsKLSAg
ICAgICAgZnVuY3RvcihvcC5tX2NhbGxlZSk7CisgICAgYXV0byBoYW5kbGVPcENhbGxMaWtlID0g
WyZdIChhdXRvIG9wKSB7CisgICAgICAgIGZ1bmN0b3Iobm9DaGVja3BvaW50cywgb3AubV9jYWxs
ZWUpOwogICAgICAgICBpbnQgbGFzdEFyZyA9IC1zdGF0aWNfY2FzdDxpbnQ+KG9wLm1fYXJndikg
KyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpOwogICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IHN0YXRpY19jYXN0PGludD4ob3AubV9hcmdjKTsgaSsrKQotICAgICAgICAgICAgZnVu
Y3RvcihWaXJ0dWFsUmVnaXN0ZXIgeyBsYXN0QXJnICsgaSB9KTsKKyAgICAgICAgICAgIGZ1bmN0
b3Iobm9DaGVja3BvaW50cywgVmlydHVhbFJlZ2lzdGVyIHsgbGFzdEFyZyArIGkgfSk7CiAgICAg
ICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpCi0gICAgICAgICAgICBmdW5jdG9yKHNj
b3BlUmVnaXN0ZXIpOworICAgICAgICAgICAgZnVuY3Rvcihub0NoZWNrcG9pbnRzLCBzY29wZVJl
Z2lzdGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH07CiAKKyAgICBhdXRvIHVzZUF0RWFjaENo
ZWNrcG9pbnQgPSBbJl0gKGF1dG8gb3AsIGF1dG8uLi4gdmlydHVhbFJlZ2lzdGVycykgeworICAg
ICAgICBmb3IgKENoZWNrcG9pbnQgY2hlY2twb2ludCA9IDA7IGNoZWNrcG9pbnQgPCBkZWNsdHlw
ZShvcCk6Om51bWJlck9mQ2hlY2twb2ludHM7ICsrY2hlY2twb2ludCkKKyAgICAgICAgICAgIChm
dW5jdG9yKGNoZWNrcG9pbnQsIHZpcnR1YWxSZWdpc3RlcnMpLCAuLi4pOworICAgIH07CisKICAg
ICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgY2FzZSBvcF93aWRlMTY6CiAgICAgY2FzZSBvcF93
aWRlMzI6CkBAIC0yNDksOSArMjU1LDIyIEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUlu
ZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAg
VVNFUyhPcEhhc1N0cnVjdHVyZVByb3BlcnR5LCBiYXNlLCBwcm9wZXJ0eSwgZW51bWVyYXRvcikK
ICAgICBVU0VTKE9wSGFzT3duU3RydWN0dXJlUHJvcGVydHksIGJhc2UsIHByb3BlcnR5LCBlbnVt
ZXJhdG9yKQogICAgIFVTRVMoT3BJblN0cnVjdHVyZVByb3BlcnR5LCBiYXNlLCBwcm9wZXJ0eSwg
ZW51bWVyYXRvcikKLSAgICBVU0VTKE9wQ29uc3RydWN0VmFyYXJncywgY2FsbGVlLCB0aGlzVmFs
dWUsIGFyZ3VtZW50cykKLSAgICBVU0VTKE9wQ2FsbFZhcmFyZ3MsIGNhbGxlZSwgdGhpc1ZhbHVl
LCBhcmd1bWVudHMpCi0gICAgVVNFUyhPcFRhaWxDYWxsVmFyYXJncywgY2FsbGVlLCB0aGlzVmFs
dWUsIGFyZ3VtZW50cykKKworICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOiB7CisgICAgICAgIGF1
dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BDYWxsVmFyYXJncz4oKTsKKyAgICAgICAg
dXNlQXRFYWNoQ2hlY2twb2ludChieXRlY29kZSwgYnl0ZWNvZGUubV9jYWxsZWUsIGJ5dGVjb2Rl
Lm1fdGhpc1ZhbHVlLCBieXRlY29kZS5tX2FyZ3VtZW50cyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnczogeworICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wVGFpbENhbGxWYXJhcmdzPigpOworICAgICAgICB1c2VB
dEVhY2hDaGVja3BvaW50KGJ5dGVjb2RlLCBieXRlY29kZS5tX2NhbGxlZSwgYnl0ZWNvZGUubV90
aGlzVmFsdWUsIGJ5dGVjb2RlLm1fYXJndW1lbnRzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOiB7CisgICAgICAgIGF1dG8gYnl0ZWNvZGUg
PSBpbnN0cnVjdGlvbi0+YXM8T3BDb25zdHJ1Y3RWYXJhcmdzPigpOworICAgICAgICB1c2VBdEVh
Y2hDaGVja3BvaW50KGJ5dGVjb2RlLCBieXRlY29kZS5tX2NhbGxlZSwgYnl0ZWNvZGUubV90aGlz
VmFsdWUsIGJ5dGVjb2RlLm1fYXJndW1lbnRzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAog
ICAgIFVTRVMoT3BHZXREaXJlY3RQbmFtZSwgYmFzZSwgcHJvcGVydHksIGluZGV4LCBlbnVtZXJh
dG9yKQogCkBAIC0yNjQsOCArMjgzLDI0IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUlu
ZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAKICAg
ICBVU0VTKE9wWWllbGQsIGdlbmVyYXRvciwgYXJndW1lbnQpCiAKLSAgICBVU0VTKE9wSXRlcmF0
b3JPcGVuLCBzeW1ib2xJdGVyYXRvciwgaXRlcmFibGUpCi0gICAgVVNFUyhPcEl0ZXJhdG9yTmV4
dCwgaXRlcmF0b3IsIG5leHQsIGl0ZXJhYmxlKQorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbjog
eworICAgICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVu
PigpOworICAgICAgICBmdW5jdG9yKE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsLCBieXRlY29k
ZS5tX2l0ZXJhYmxlKTsKKyAgICAgICAgZnVuY3RvcihPcEl0ZXJhdG9yT3Blbjo6Z2V0TmV4dCwg
Ynl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNl
IG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9u
LT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICAgICAgZnVuY3RvcihPcEl0ZXJhdG9yTmV4dDo6
Y29tcHV0ZU5leHQsIGJ5dGVjb2RlLm1faXRlcmF0b3IpOworICAgICAgICBmdW5jdG9yKE9wSXRl
cmF0b3JOZXh0Ojpjb21wdXRlTmV4dCwgYnl0ZWNvZGUubV9uZXh0KTsKKyAgICAgICAgZnVuY3Rv
cihPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQsIGJ5dGVjb2RlLm1faXRlcmFibGUpOworCisg
ICAgICAgIGZ1bmN0b3IoT3BJdGVyYXRvck5leHQ6OmdldERvbmUsIGJ5dGVjb2RlLm1faXRlcmFi
bGUpOworCisgICAgICAgIGZ1bmN0b3IoT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlLCBieXRlY29k
ZS5tX2l0ZXJhYmxlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGNhc2Ugb3BfbmV3
X2FycmF5X3dpdGhfc3ByZWFkOgogICAgICAgICBoYW5kbGVOZXdBcnJheUxpa2UoaW5zdHJ1Y3Rp
b24tPmFzPE9wTmV3QXJyYXlXaXRoU3ByZWFkPigpKTsKQEAgLTI3OCw3ICszMTMsNyBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVn
aXN0ZXIsIGNvbnN0IEluc3RydQogICAgICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24t
PmFzPE9wU3RyY2F0PigpOwogICAgICAgICBpbnQgYmFzZSA9IGJ5dGVjb2RlLm1fc3JjLm9mZnNl
dCgpOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ5dGVjb2RlLm1fY291bnQ7IGkrKykK
LSAgICAgICAgICAgIGZ1bmN0b3IoVmlydHVhbFJlZ2lzdGVyIHsgYmFzZSAtIGkgfSk7CisgICAg
ICAgICAgICBmdW5jdG9yKG5vQ2hlY2twb2ludHMsIFZpcnR1YWxSZWdpc3RlciB7IGJhc2UgLSBp
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMDEsNyArMzM2LDcgQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lz
dGVyLCBjb25zdCBJbnN0cnUKICAgICB9CiB9CiAKLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29k
ZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIGNvbnN0IEZ1bmN0aW9uPHZvaWQoVmlydHVhbFJlZ2lzdGVyKT4mIGZ1bmN0b3IpCit2b2lk
IGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdGlvbjx2b2lkKENoZWNrcG9pbnQs
IFZpcnR1YWxSZWdpc3Rlcik+JiBmdW5jdG9yKQogewogICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24t
Pm9wY29kZUlEKCkpIHsKICAgICBjYXNlIG9wX3dpZGUxNjoKQEAgLTQxMSwxMCArNDQ2LDIzIEBA
IHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcE5ld0FzeW5jR2VuZXJhdG9yRnVu
Y0V4cCwgZHN0KQogICAgIERFRlMoT3BOZXdBc3luY0Z1bmMsIGRzdCkKICAgICBERUZTKE9wTmV3
QXN5bmNGdW5jRXhwLCBkc3QpCi0gICAgREVGUyhPcENhbGxWYXJhcmdzLCBkc3QpCi0gICAgREVG
UyhPcFRhaWxDYWxsVmFyYXJncywgZHN0KQorICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOiB7Cisg
ICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BDYWxsVmFyYXJncz4oKTsK
KyAgICAgICAgZnVuY3RvcihPcENhbGxWYXJhcmdzOjptYWtlQ2FsbCwgYnl0ZWNvZGUubV9kc3Qp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6
IHsKKyAgICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcFRhaWxDYWxsVmFy
YXJncz4oKTsKKyAgICAgICAgZnVuY3RvcihPcFRhaWxDYWxsVmFyYXJnczo6bWFrZUNhbGwsIGJ5
dGVjb2RlLm1fZHN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIG9wX2NvbnN0
cnVjdF92YXJhcmdzOiB7CisgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8
T3BDb25zdHJ1Y3RWYXJhcmdzPigpOworICAgICAgICBmdW5jdG9yKE9wQ29uc3RydWN0VmFyYXJn
czo6bWFrZUNhbGwsIGJ5dGVjb2RlLm1fZHN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIERFRlMoT3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVudHMsIGRzdCkKLSAgICBERUZTKE9wQ29u
c3RydWN0VmFyYXJncywgZHN0KQogICAgIERFRlMoT3BHZXRGcm9tU2NvcGUsIGRzdCkKICAgICBE
RUZTKE9wQ2FsbCwgZHN0KQogICAgIERFRlMoT3BUYWlsQ2FsbCwgZHN0KQpAQCAtNDk5LDEyICs1
NDcsMjggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51
bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUKIAogICAgIERFRlMoT3BDYXRjaCwgZXhj
ZXB0aW9uLCB0aHJvd25WYWx1ZSkKIAotICAgIERFRlMoT3BJdGVyYXRvck9wZW4sIGl0ZXJhdG9y
LCBuZXh0KQotICAgIERFRlMoT3BJdGVyYXRvck5leHQsIGRvbmUsIHZhbHVlKQorICAgIGNhc2Ug
b3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24t
PmFzPE9wSXRlcmF0b3JPcGVuPigpOworCisgICAgICAgIGZ1bmN0b3IoT3BJdGVyYXRvck9wZW46
OnN5bWJvbENhbGwsIGJ5dGVjb2RlLm1faXRlcmF0b3IpOworICAgICAgICBmdW5jdG9yKE9wSXRl
cmF0b3JPcGVuOjpnZXROZXh0LCBieXRlY29kZS5tX25leHQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OiB7CisgICAgICAgIGF1dG8gYnl0ZWNv
ZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CisKKyAgICAgICAgZnVuY3Rv
cihPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZSwgYnl0ZWNvZGUubV9kb25lKTsKKyAgICAgICAgLy8g
V2UgbmVlZCB0byBjbGFpbSB3ZSBzZXQgbV92YWx1ZSBoZXJlIGJlY2F1c2Ugd2UgY291bGQgZWFy
bHkgZXhpdCBmcm9tIHRoZSBieXRlY29kZSBpZiB3ZSBhcmUgZG9uZS4KKyAgICAgICAgZnVuY3Rv
cihPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZSwgYnl0ZWNvZGUubV92YWx1ZSk7CisKKyAgICAgICAg
ZnVuY3RvcihPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWUsIGJ5dGVjb2RlLm1fdmFsdWUpOworICAg
ICAgICByZXR1cm47CisgICAgfQogCiAgICAgY2FzZSBvcF9lbnRlcjogewogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBudW1WYXJzOyBpLS07KQotICAgICAgICAgICAgZnVuY3Rvcih2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChpKSk7CisgICAgICAgICAgICBmdW5jdG9yKG5vQ2hlY2twb2ludHMs
IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
CmluZGV4IGIzYjAwYTk5MjM3MzNkMzFhYzg0ZTVkODgyZGE5MDNlOWJlZGM3ZmIuLjliNDQxNzFk
NTk2YzNjZjQzZTI3NjhhNDIzZjJmNGQ4MjczYWI1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0zMiwyMSArMzIsMjMgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChW
aXJ0dWFsUmVnaXN0ZXIsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgRnVuY3Rpb248dm9pZChW
aXJ0dWFsUmVnaXN0ZXIpPiYpOwotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBs
KHVuc2lnbmVkLCBjb25zdCBJbnN0cnVjdGlvbiosIGNvbnN0IEZ1bmN0aW9uPHZvaWQoVmlydHVh
bFJlZ2lzdGVyKT4mKTsKK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0
dWFsUmVnaXN0ZXIsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgRnVuY3Rpb248dm9pZChDaGVj
a3BvaW50LCBWaXJ0dWFsUmVnaXN0ZXIpPiYpOwordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKHVuc2lnbmVkLCBjb25zdCBJbnN0cnVjdGlvbiosIGNvbnN0IEZ1bmN0aW9uPHZv
aWQoQ2hlY2twb2ludCwgVmlydHVhbFJlZ2lzdGVyKT4mKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
QmxvY2s+Ci12b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleChCbG9jayogY29kZUJsb2Nr
LCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0aW9uPHZvaWQoVmly
dHVhbFJlZ2lzdGVyKT4mIGZ1bmN0b3IpCit2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0
IEZ1bmN0aW9uPHZvaWQoQ2hlY2twb2ludCwgVmlydHVhbFJlZ2lzdGVyKT4mIGZ1bmN0b3IpCiB7
CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKLSAgICBp
ZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYgKGNvZGVCbG9jay0+d2FzQ29tcGlsZWRXaXRoRGVi
dWdnaW5nT3Bjb2RlcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkgJiYgY29kZUJsb2NrLT5z
Y29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKQotICAgICAgICBmdW5jdG9yKGNvZGVCbG9jay0+c2Nv
cGVSZWdpc3RlcigpKTsKKyAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYgKGNvZGVCbG9j
ay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2
YWwoKSkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKSB7CisgICAgICAg
IGZvciAoQ2hlY2twb2ludCBjaGVja3BvaW50ID0gaW5zdHJ1Y3Rpb24tPm51bWJlck9mQ2hlY2tw
b2ludHMoKTsgY2hlY2twb2ludC0tOykKKyAgICAgICAgICAgIGZ1bmN0b3IoY2hlY2twb2ludCwg
Y29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkpOworICAgIH0KIAogICAgIGNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVJbmRleEltcGwoY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCksIGluc3RydWN0aW9u
LCBmdW5jdG9yKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+Ci12b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVJbmRleChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0aW9uPHZvaWQoVmlydHVhbFJlZ2lzdGVyKT4mIGZ1bmN0
b3IpCit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleChCbG9jayogY29kZUJsb2NrLCBj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0aW9uPHZvaWQoQ2hlY2tw
b2ludCwgVmlydHVhbFJlZ2lzdGVyKT4mIGZ1bmN0b3IpCiB7CiAgICAgY29tcHV0ZURlZnNGb3JC
eXRlY29kZUluZGV4SW1wbChjb2RlQmxvY2stPm51bVZhcnMoKSwgaW5zdHJ1Y3Rpb24sIGZ1bmN0
b3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApp
bmRleCAzZDBlNTc2YmJmNDZlOWQzYTRjYWU2ZGQwZDMxZTc3Mjc3YjM5MjFjLi45ZGEzN2M3OWFk
NWE0ZWI3YzMxMmFlNTViMmNlOTNlMmVhZTZiMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkJh
c2ljQmxvY2tMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkJ5VmFsSW5mby5oIgogI2luY2x1ZGUgIkJ5
dGVjb2RlRHVtcGVyLmgiCi0jaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCisj
aW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIgogI2luY2x1ZGUgIkJ5
dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3Rz
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrSW5saW5lcy5oIgpAQCAtMTkyMiw3ICsxOTIyLDcgQEAg
dm9pZCBDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVJ
bmRleFNsb3coY29uc3QgT3BDYXRjaCYKICAgICAvLyBpbnRvIHRoZSBERkcuCiAKICAgICBhdXRv
IG5leHRPZmZzZXQgPSBpbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4KS5uZXh0KCkub2Zm
c2V0KCk7Ci0gICAgRmFzdEJpdFZlY3RvciBsaXZlTG9jYWxzID0gYnl0ZWNvZGVMaXZlbmVzcy5n
ZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlSW5kZXgodGhpcywgQnl0ZWNvZGVJbmRleChuZXh0T2Zm
c2V0KSk7CisgICAgRmFzdEJpdFZlY3RvciBsaXZlTG9jYWxzID0gYnl0ZWNvZGVMaXZlbmVzcy5n
ZXRMaXZlbmVzc0luZm9BdEluc3RydWN0aW9uKHRoaXMsIEJ5dGVjb2RlSW5kZXgobmV4dE9mZnNl
dCkpOwogICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5kczsKICAgICBsaXZl
T3BlcmFuZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsaXZlTG9jYWxzLmJpdENvdW50KCkpOwog
ICAgIGxpdmVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0gKHVuc2lnbmVkIGxpdmVMb2NhbCkgewpA
QCAtMzEwOCw3ICszMTA4LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKIHsKICAgICBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7IC8vIENvbXB1dGUgZGlyZWN0
bHkgZnJvbSBzY3JhdGNoIHNvIGl0IGRvZXNuJ3QgZWZmZWN0IENvZGVCbG9jayBmb290cHJpbnQu
CiAgICAgCi0gICAgRmFzdEJpdFZlY3RvciBsaXZlQXRIZWFkID0gbGl2ZW5lc3MuZ2V0TGl2ZW5l
c3NJbmZvQXRCeXRlY29kZUluZGV4KHRoaXMsIEJ5dGVjb2RlSW5kZXgoMCkpOworICAgIEZhc3RC
aXRWZWN0b3IgbGl2ZUF0SGVhZCA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0SW5zdHJ1Y3Rp
b24odGhpcywgQnl0ZWNvZGVJbmRleCgwKSk7CiAgICAgCiAgICAgaWYgKGxpdmVBdEhlYWQubnVt
Qml0cygpICE9IHN0YXRpY19jYXN0PHNpemVfdD4obV9udW1DYWxsZWVMb2NhbHMpKSB7CiAgICAg
ICAgIGJlZ2luVmFsaWRhdGlvbkRpZEZhaWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0Z1bGxCeXRlY29kZUxpdmVuZXNzLmgKaW5kZXggNDdjNjU3YzhkZjkw
MzgzYWY2NWViNWMzYjhhOGIwNTk0ZDBjNGRhNy4uZGU4YWQ1ZDc0MmM2ZmM2MTJiZmUyN2JmYmZm
ZTRkODZhN2M5OWMyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0Z1bGxCeXRlY29kZUxpdmVuZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0Z1bGxCeXRlY29kZUxpdmVuZXNzLmgKQEAgLTQxLDEyICs0MSwxMSBAQCBjbGFzcyBGdWxs
Qnl0ZWNvZGVMaXZlbmVzcyB7CiBwdWJsaWM6CiAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgZ2V0
TGl2ZW5lc3MoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBMaXZlbmVzc0NhbGN1bGF0aW9u
UG9pbnQgcG9pbnQpIGNvbnN0CiAgICAgewotICAgICAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQg
dGhpcyBkbyB3aGVuIHdlIGhhdmUgY2hlY2twb2ludHM/CiAgICAgICAgIHN3aXRjaCAocG9pbnQp
IHsKICAgICAgICAgY2FzZSBMaXZlbmVzc0NhbGN1bGF0aW9uUG9pbnQ6OkJlZm9yZVVzZToKLSAg
ICAgICAgICAgIHJldHVybiBtX2JlZm9yZVVzZVZlY3RvcltieXRlY29kZUluZGV4Lm9mZnNldCgp
XTsKKyAgICAgICAgICAgIHJldHVybiBtX3VzZXNCZWZvcmUuZmluZChieXRlY29kZUluZGV4KS0+
dmFsdWU7CiAgICAgICAgIGNhc2UgTGl2ZW5lc3NDYWxjdWxhdGlvblBvaW50OjpBZnRlclVzZToK
LSAgICAgICAgICAgIHJldHVybiBtX2FmdGVyVXNlVmVjdG9yW2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCldOworICAgICAgICAgICAgcmV0dXJuIG1fdXNlc0FmdGVyLmZpbmQoYnl0ZWNvZGVJbmRleCkt
PnZhbHVlOwogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQpAQCAtNTksMTAgKzU4LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogICAgIAotICAgIC8vIEZJWE1FOiBVc2Ug
RmFzdEJpdFZlY3RvcidzIHZpZXcgbWVjaGFuaXNtIHRvIG1ha2UgdGhlbSBjb21wYWN0LgotICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ0Mjc8UGFzdGU+
Ci0gICAgVmVjdG9yPEZhc3RCaXRWZWN0b3IsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2Jl
Zm9yZVVzZVZlY3RvcjsKLSAgICBWZWN0b3I8RmFzdEJpdFZlY3RvciwgMCwgVW5zYWZlVmVjdG9y
T3ZlcmZsb3c+IG1fYWZ0ZXJVc2VWZWN0b3I7CisgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBG
YXN0Qml0VmVjdG9yPiBtX3VzZXNCZWZvcmU7CisgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBG
YXN0Qml0VmVjdG9yPiBtX3VzZXNBZnRlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAppbmRleCAzZDcwY2Q1
NDNlY2ZhZTkwMjI1MDI5NjAxYTBkNDA1ZWM2NzFiMmQwLi5mNjNhZDI5ZjIwZjUxZTZjNjA5ZmNj
YjlkYmNiNTU4OTZlMzIyZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdHJ1Y3Rpb24uaApAQCAtMzksNiArMzksNyBAQCBzdHJ1Y3QgSlNPcGNvZGVUcmFpdHMgewog
ICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lkZTMyID0gb3Bfd2lkZTMyOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQqIG9wY29kZUxlbmd0aHMgPSA6OkpTQzo6b3Bj
b2RlTGVuZ3RoczsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIGNvbnN0KiBvcGNv
ZGVOYW1lcyA9IDo6SlNDOjpvcGNvZGVOYW1lczsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g
Y2hlY2twb2ludENvdW50VGFibGUgPSBieXRlY29kZUNoZWNrcG9pbnRDb3VudFRhYmxlOwogfTsK
IAogc3RydWN0IFdhc21PcGNvZGVUcmFpdHMgewpAQCAtNTAsNiArNTEsNyBAQCBzdHJ1Y3QgV2Fz
bU9wY29kZVRyYWl0cyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMzIgPSB3
YXNtX3dpZGUzMjsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkKiBvcGNvZGVM
ZW5ndGhzID0gd2FzbU9wY29kZUxlbmd0aHM7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBj
aGFyKiBjb25zdCogb3Bjb2RlTmFtZXMgPSB3YXNtT3Bjb2RlTmFtZXM7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGNoZWNrcG9pbnRDb3VudFRhYmxlID0gd2FzbUNoZWNrcG9pbnRDb3VudFRh
YmxlOwogfTsKIAogCkBAIC0xMjIsNiArMTI0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG9wY29kZUlEPFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2tw
b2ludHM7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVU
cmFpdHM+CisgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGVja3BvaW50cygpIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAoIWhhc0NoZWNrcG9pbnRzPFRyYWl0cz4oKSkKKyAgICAgICAgICAgIHJldHVy
biAxOworICAgICAgICByZXR1cm4gVHJhaXRzOjpjaGVja3BvaW50Q291bnRUYWJsZVtvcGNvZGVJ
RDxUcmFpdHM+KCldOworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpT
T3Bjb2RlVHJhaXRzPgogICAgIGludCBzaXplU2hpZnRBbW91bnQoKSBjb25zdAogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0cmVh
bS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0u
Y3BwCmluZGV4IDM4Y2FmOTVmZDllMDYxMDUzZTEzNWE1OWZlMWEzYzc1Zjg1YTg1ZDMuLjZiOWQ2
OGMxMWY0Yjc3ZmVlNDkxNmY3MDRiZWY1NDA0ZmY5OTg1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcApAQCAtNDYsNCAr
NDYsMTQgQEAgYm9vbCBJbnN0cnVjdGlvblN0cmVhbTo6Y29udGFpbnMoSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uKSBjb25zdAogICAgIHJldHVybiBwb2ludGVyID49IG1faW5zdHJ1Y3Rpb25zLmRh
dGEoKSAmJiBwb2ludGVyIDwgKG1faW5zdHJ1Y3Rpb25zLmRhdGEoKSArIG1faW5zdHJ1Y3Rpb25z
LnNpemUoKSk7CiB9CiAKK3NpemVfdCBJbnN0cnVjdGlvblN0cmVhbTo6aW5zdHJ1Y3Rpb25Db3Vu
dCgpIGNvbnN0Cit7CisgICAgc2l6ZV90IHJlc3VsdCB7IDAgfTsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGluc3RydWN0aW9uIDogKnRoaXMpIHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGluc3RydWN0
aW9uKTsKKyAgICAgICAgcmVzdWx0Kys7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlv
blN0cmVhbS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3Ry
ZWFtLmgKaW5kZXggM2U5NzhkMzMyZDU4ZDcwYTUyOWQyOGYwNTI2NjQ0OGNmZjc2ZWIxMC4uNDBk
MTFkNjgzMzU2NmQzNTcxMzViZmVmMThiMGUyMjcxNGU3YmM3MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmgKQEAgLTE2Niw2ICsx
NjYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBSZWYgeyBtX2luc3RydWN0aW9ucywgb2Zm
c2V0IH07CiAgICAgfQogCisgICAgLy8gVGhpcyBpcyB0aGUgYWN0dWFsIG51bWJlciBvZiBieXRl
Y29kZXMgaW4gdGhlIHN0cmVhbSBpZ25vcmluZyBvcGVyYW5kcy4KKyAgICBzaXplX3QgaW5zdHJ1
Y3Rpb25Db3VudCgpIGNvbnN0OwogICAgIGlubGluZSBzaXplX3Qgc2l6ZSgpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCA4OGVlNGEzYTZlMzFiMGYwODdiYjU0Y2Y0MmQ1N2RhZWJkNTJkYmRiLi4wMWUyN2IxMWMx
NWFkZmIxNGUwZDdkYmY0N2I1YTk3Y2Y0YmNjODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNTIw
Niw3ICs1MjA2LDcgQEAgdm9pZCBGb3JJbkNvbnRleHQ6OmZpbmFsaXplKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFVubGlua2VkQ29kZUJsb2NrR2VuZXIKICAgICBmb3IgKHVuc2lnbmVk
IG9mZnNldCA9IGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KCk7IGlzVmFsaWQoKSAmJiBvZmZzZXQg
PCBib2R5Qnl0ZWNvZGVFbmRPZmZzZXQ7KSB7CiAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBn
ZW5lcmF0b3IuaW5zdHJ1Y3Rpb25zKCkuYXQob2Zmc2V0KTsKICAgICAgICAgQVNTRVJUKCFpbnN0
cnVjdGlvbi0+aXM8T3BFbnRlcj4oKSk7Ci0gICAgICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleChjb2RlQmxvY2ssIGluc3RydWN0aW9uLnB0cigpLCBbJl0gKFZpcnR1YWxSZWdpc3RlciBv
cGVyYW5kKSB7CisgICAgICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleChjb2RlQmxvY2ss
IGluc3RydWN0aW9uLnB0cigpLCBbJl0gKENoZWNrcG9pbnQsIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kKSB7CiAgICAgICAgICAgICBpZiAobG9jYWwoKS0+dmlydHVhbFJlZ2lzdGVyKCkgPT0gb3Bl
cmFuZCkKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA2YjVi
ZjE3ODY0Y2M1MzAwOGUzMmE2ZmE4ODNlYTYyZWVmZmU1MzZhLi42MDFjYTVlM2JkZGQ0MjRkYTBl
MWNlOTIwZGU3ODI4MGMwMTAxNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAxNiw2ICs3MDE2LDggQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICAvLyBP
dXIgcHJvZmlsaW5nIGNvdWxkIGhhdmUgYmVlbiBpbmNvcnJlY3Qgd2hlbiB3ZSBnb3QgaGVyZS4g
Rm9yIGluc3RhbmNlLCBpZiB3ZSBMb29wSGludCBPU1IgZW50ZXIgdGhlIGZpcnN0IHRpbWUgd2Ug
d291bGQKICAgICAgICAgICAgICAgICAvLyBoYXZlIHNlZW4gYSBmYXN0IHBhdGgsIG5leHQgd2ls
bCBiZSB0aGUgZW1wdHkgdmFsdWUuIFdoZW4gdGhhdCBoYXBwZW5zIHdlIG5lZWQgdG8gbWFrZSBz
dXJlIHRoZSBlbXB0eSB2YWx1ZSBkb2Vzbid0IGZsb3cKICAgICAgICAgICAgICAgICAvLyBpbnRv
IHRoZSBDYWxsIG5vZGUgc2luY2UgY2FsbCBjYW4ndCBoYW5kbGUgZW1wdHkgdmFsdWVzLgorICAg
ICAgICAgICAgICAgIC8vIFNhbml0eSBjaGVjayB0aGF0IHdlIGRvbid0IGdldCBoZXJlIHdpdGgg
YSBmYXN0IHBhdGggZHVyaW5nIE9TUiBlbnRyeS4KKwogICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoQ2hlY2tOb3RFbXB0eSwgZ2V0KGJ5dGVjb2RlLm1fbmV4dCkpOwogCiAgICAgICAgICAgICAg
ICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkgPSBoYW5kbGVDYWxsPE9wSXRlcmF0b3JOZXh0Pihj
dXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyLCBuZXh0Q2hlY2twb2lu
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCmluZGV4IDcxNjFmYmYyNjhm
MzUwMTkyOTc4YTJmODUyZDUxY2M4YjEwOWU3MzUuLjVhZGU5Yzk1YTA0ZWM2NTRiZTI5MmVhZDEx
NTU0Yjg0OWZhZTY5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcApAQCAt
NzU4LDcgKzc1OCw3IEBAIHZvaWQgUGxhbjo6Y2xlYW5NdXN0SGFuZGxlVmFsdWVzSWZOZWNlc3Nh
cnkoKQogICAgICAgICByZXR1cm47CiAKICAgICBDb2RlQmxvY2sqIGFsdGVybmF0aXZlID0gbV9j
b2RlQmxvY2stPmFsdGVybmF0aXZlKCk7Ci0gICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzcyA9IGFs
dGVybmF0aXZlLT5saXZlbmVzc0FuYWx5c2lzKCkuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZUlu
ZGV4KGFsdGVybmF0aXZlLCBtX29zckVudHJ5Qnl0ZWNvZGVJbmRleCk7CisgICAgRmFzdEJpdFZl
Y3RvciBsaXZlbmVzcyA9IGFsdGVybmF0aXZlLT5saXZlbmVzc0FuYWx5c2lzKCkuZ2V0TGl2ZW5l
c3NJbmZvQXRJbnN0cnVjdGlvbihhbHRlcm5hdGl2ZSwgbV9vc3JFbnRyeUJ5dGVjb2RlSW5kZXgp
OwogCiAgICAgZm9yICh1bnNpZ25lZCBsb2NhbCA9IG1fbXVzdEhhbmRsZVZhbHVlcy5udW1iZXJP
ZkxvY2FscygpOyBsb2NhbC0tOykgewogICAgICAgICBpZiAoIWxpdmVuZXNzW2xvY2FsXSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgppbmRleCBmODM4MGVkNTc1
ZDMxM2M2ZWEwNmFiNWQ3MmMyNWE4Njc3NmQ5Y2M4Li5kOWU5OTRlZWFkNjM0OGNjMzg4OTExMmEx
MmNmNWExY2MzMDQxMDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL1NlY3Rpb24ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0
aW9uLnJiCkBAIC04NCwxMyArODQsMTUgQEAgY2xhc3MgU2VjdGlvbgogCiAgICAgICBpZiBjb25m
aWdbOmVtaXRfaW5fc3RydWN0c19maWxlXQogICAgICAgICAgIGkgPSAwCisgICAgICAgICAgb3V0
LndyaXRlKCJzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkICN7Y29uZmlnWzptYWNyb19uYW1lX2Nv
bXBvbmVudF0uZG93bmNhc2V9Q2hlY2twb2ludENvdW50VGFibGVbXSA9IHtcbiIpCiAgICAgICAg
ICAgd2hpbGUgdHJ1ZQogICAgICAgICAgICAgICBpZiAhb3Bjb2Rlc1tpXS5jaGVja3BvaW50cwot
ICAgICAgICAgICAgICAgICAgb3V0IDw8ICJcbiIKKyAgICAgICAgICAgICAgICAgIG91dCA8PCAi
fTtcblxuIgogICAgICAgICAgICAgICAgICAgb3V0IDw8ICIjZGVmaW5lIE5VTUJFUl9PRl8je2Nv
bmZpZ1s6bWFjcm9fbmFtZV9jb21wb25lbnRdfV9XSVRIX0NIRUNLUE9JTlRTICN7aX1cbiIKICAg
ICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgIGVuZAogCisgICAgICAgICAgICAg
IG91dC53cml0ZSgiICAgICN7b3Bjb2Rlc1tpXS5jaGVja3BvaW50cy5sZW5ndGh9LFxuIikKICAg
ICAgICAgICAgICAgaSArPSAxCiAgICAgICAgICAgZW5kCiAgICAgICAgICAgb3V0IDw8ICJcbiIK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YzBhNTEwNzkzZDZlMDAzMDdmNWM5MjFiNmQxZDhkNDIwNTg4MzFkZS4uODZiZDlhZDg3YWFiMGRi
NWI4ZDhhMGZjMjQ5Y2E0ZjBhNzI1YmY1ZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wNi0xMSAgS2Vp
dGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4gYW5kIFRhZGV1IFphZ2FsbG8gIDx0
emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgQnl0ZWNvZGUgbGl2ZW5lc3Mgc2hvdWxkIGJl
IGF3YXJlIG9mIGNoZWNrcG9pbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTMxMDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzNDE2ODM4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNz
L2l0ZXJhdG9yLW9wZW4tY2hlY2twb2ludC1saXZlbmVzcy5qczogQWRkZWQuCisgICAgICAgIChm
KToKKyAgICAgICAgKG5leHQpOgorICAgICAgICAoaXRlcmF0b3IpOgorICAgICAgICAoY2F0Y2gp
OgorCiAyMDIwLTA2LTEwICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0pTQ10gYWRkIHN0cmVzcyB0ZXN0IGZvciBvcF9nZXRfcHJpdmF0ZV9uYW1lCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pdGVyYXRvci1vcGVuLWNoZWNrcG9pbnQtbGl2ZW5lc3Mu
anMgYi9KU1Rlc3RzL3N0cmVzcy9pdGVyYXRvci1vcGVuLWNoZWNrcG9pbnQtbGl2ZW5lc3MuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTg1NDQyYzUwMzY5NWQ2MTczMGU5OThkYzJkMmVmMzU2NWZmYmQ1ZgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2l0ZXJhdG9yLW9wZW4tY2hlY2twb2ludC1s
aXZlbmVzcy5qcwpAQCAtMCwwICsxLDM1IEBACitsZXQgeCA9IGZhbHNlOworZnVuY3Rpb24gZih4
KSB7CisgICAgcmV0dXJuIEFycmF5LmZyb20oeCk7Cit9Citub0lubGluZShmKTsKKworZnVuY3Rp
b24gbmV4dCgpIHsKKyAgICBpZiAoeCkgeworICAgICAgICB4ID0gZmFsc2U7CisgICAgICAgIHJl
dHVybiB7dmFsdWU6IDIsIGRvbmU6IGZhbHNlLCB4OiAxfTsKKyAgICB9CisgICAgcmV0dXJuIHt2
YWx1ZTogMSwgZG9uZTogdHJ1ZSB9OworfQorbm9JbmxpbmUobmV4dCk7CisKK3ZhciBpdGVyYXRv
ciA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh4KQorICAgICAgICByZXR1cm4ge307CisgICAgcmV0
dXJuIHsgbmV4dCB9OworfTsKK25vSW5saW5lKGl0ZXJhdG9yKTsKKwordmFyIG5vZGVfbGlzdCA9
IHsKKyAgICBbU3ltYm9sLml0ZXJhdG9yXTogaXRlcmF0b3IsCit9Citmb3IgKHZhciBpID0gMDsg
aSA8IDFlNTsgKytpKSB7CisgICAgZihub2RlX2xpc3QpOworfQoreCA9IHRydWU7Cit0cnkgewor
ICAgIGYobm9kZV9saXN0KTsKK30gY2F0Y2ggKGVycikgeworICAgIGlmIChlcnIubWVzc2FnZSAh
PT0gJ3VuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbicpCisgICAgICAgIHRocm93IGVycjsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401698</attachid>
            <date>2020-06-11 18:50:46 -0700</date>
            <delta_ts>2020-06-12 13:16:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213106-20200611185045.patch</filename>
            <type>text/plain</type>
            <size>46238</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OWRkNDRkMjhlOGViNGNjMWE4OWRlOTZhOTQxYjZlMmYyZDVjNmFlLi4zYTFmN2Q1YjgwZjAzMDhj
NDYxYjNlNTBkODFhZGFmMjM4NTk0NDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAyMC0wNi0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4gYW5kIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Qnl0ZWNvZGUgbGl2ZW5lc3Mgc2hvdWxkIGJlIGF3YXJlIG9mIGNoZWNrcG9pbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMxMDYKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYzNDE2ODM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJ5dGVjb2RlIGxpdmVuZXNzIHNob3VsZCBiZSBhYmxlIHRvIGV4
cHJlc3MgdGhhdCBjaGVja3BvaW50cyBjYW4gdXNlIHVzZSBhIHZhbHVlIHRoYXQgd2FzIHdyaXR0
ZW4gdG8gYXQKKyAgICAgICAgYW4gZWFybGllciBwb2ludCBpbiB0aGF0IGJ5dGVjb2RlJ3MgZXhl
Y3V0aW9uLiBFLmcuIGluIG9wX2l0ZXJhdG9yX29wZW4sIGJ5IHRoZSB0aW1lIHdlIGdldCB0byB0
aGUgZ2V0TmV4dAorICAgICAgICBjaGVja3BvaW50LCB3ZSByZWx5IHRoYXQgbV9pdGVyYXRvciBh
bHJlYWR5IGNvbnRhaW5zIHRoZSBpdGVyYXRvciB3ZSBqdXN0IGFsbG9jYXRlZC4gUHJpb3IgdG8g
dGhpcyBwYXRjaCwKKyAgICAgICAgdGhhdCB2YWx1ZSB3b3VsZCBub3QgYmUgcHJvcGVybHkgc2V0
IHdoZW4gd2UgT1NSIGV4aXQgdG8gT3BJdGVyYXRvck9wZW46OmdldE5leHQuCisKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OnJ1bik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVJbmRleC5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUluZGV4OjpCeXRlY29kZUluZGV4
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbmRleDo6Y2hlY2twb2ludCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlSW5kZXg6OndpdGhDaGVja3BvaW50IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVJbmRleDo6cGFjayk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZUluZGV4KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEluc3RydWN0aW9uKToK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRlY29k
ZUluZGV4RGVmKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpz
dGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZUluRXhjZXB0aW9uSGFuZGxlcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJCeXRl
Y29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpz
dGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3Bh
Z2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0Zvckluc3RydWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJs
b2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpnZXRMaXZl
bmVzc0luZm9BdEluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1By
b3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0aW9uRGVmKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0aW9uVXNlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVw
T3Zlckluc3RydWN0aW9uVXNlSW5FeGNlcHRpb25IYW5kbGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0Zv
ckJ5dGVjb2RlSW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb246OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5l
c3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVJbmRleFNsb3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnZhbGlkYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9GdWxsQnl0ZWNvZGVMaXZlbmVzcy5o
OgorICAgICAgICAoSlNDOjpGdWxsQnl0ZWNvZGVMaXZlbmVzczo6Z2V0TGl2ZW5lc3MgY29uc3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgIChKU0M6OkJhc2VJ
bnN0cnVjdGlvbjo6bnVtYmVyT2ZDaGVja3BvaW50cyBjb25zdCk6CisgICAgICAgICogYnl0ZWNv
ZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVh
bTo6aW5zdHJ1Y3Rpb25Db3VudCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rp
b25TdHJlYW0uaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpGb3JJbkNvbnRleHQ6OmZpbmFsaXplKToKKyAgICAgICAgKiBkZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UGxhbjo6Y2xlYW5NdXN0SGFuZGxlVmFsdWVzSWZOZWNlc3NhcnkpOgorICAgICAgICAq
IGdlbmVyYXRvci9TZWN0aW9uLnJiOgorCiAyMDIwLTA2LTEwICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSlNDYWxsYmFja09iamVjdDo6ZGVsZXRl
UHJvcGVydHkgc2hvdWxkIHJlZGlyZWN0IHRvIFBhcmVudDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
IGlmIHByb3BlcnR5TmFtZSBpcyBpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXgg
NmZiYTIyOTdjMjkxZmU0OGViOTkzY2ZhN2VmZjYzOTFjYzRmODY2My4uYThlNTZkMGNkMzk0YmMx
YjdhYzA1MjZiZTg2NjdlYWM4YmRkN2U2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBA
IC0xOTQsNyArMTk0LDcgQEAgcHVibGljOgogICAgICAgICBydW5MaXZlbmVzc0ZpeHBvaW50KGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpKTsKIAog
ICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLnlpZWxk
cygpKQotICAgICAgICAgICAgZGF0YS5saXZlbmVzcyA9IGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVJbmRleChjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgbV9nZW5lcmF0b3JpZmljYXRpb24uZ3Jh
cGgoKSwgQnl0ZWNvZGVJbmRleChtX2dlbmVyYXRvcmlmaWNhdGlvbi5pbnN0cnVjdGlvbnMoKS5h
dChkYXRhLnBvaW50KS5uZXh0KCkub2Zmc2V0KCkpKTsKKyAgICAgICAgICAgIGRhdGEubGl2ZW5l
c3MgPSBnZXRMaXZlbmVzc0luZm9BdEluc3RydWN0aW9uKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
LCBtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLCBCeXRlY29kZUluZGV4KG1fZ2VuZXJhdG9y
aWZpY2F0aW9uLmluc3RydWN0aW9ucygpLmF0KGRhdGEucG9pbnQpLm5leHQoKS5vZmZzZXQoKSkp
OwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUluZGV4LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVJbmRleC5oCmluZGV4IDZlMjY2ZDNkYWYzYjEyNWU4NzM2NzU3NTQwNTJjMzEzYzBl
NWE1NzEuLjliYzg0MzRlMGY5YjM4YjI4YTFiODExZTBlMDFmZWUyMDFiOGJiODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUluZGV4LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW5kZXguaApAQCAtMzQsNiAr
MzQsOSBAQCBjbGFzcyBQcmludFN0cmVhbTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3VzaW5nIENo
ZWNrcG9pbnQgPSB1aW50OF90Oworc3RhdGljIGNvbnN0ZXhwciBDaGVja3BvaW50IG5vQ2hlY2tw
b2ludHMgPSAwOworCiBjbGFzcyBCeXRlY29kZUluZGV4IHsKIHB1YmxpYzoKICAgICBCeXRlY29k
ZUluZGV4KCkgPSBkZWZhdWx0OwpAQCAtNDIsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotICAgIGV4cGxpY2l0IEJ5dGVjb2RlSW5kZXgodWludDMyX3QgYnl0ZWNvZGVPZmZzZXQs
IHVpbnQ4X3QgY2hlY2twb2ludCA9IDApCisgICAgZXhwbGljaXQgQnl0ZWNvZGVJbmRleCh1aW50
MzJfdCBieXRlY29kZU9mZnNldCwgQ2hlY2twb2ludCBjaGVja3BvaW50ID0gbm9DaGVja3BvaW50
cykKICAgICAgICAgOiBtX3BhY2tlZEJpdHMocGFjayhieXRlY29kZU9mZnNldCwgY2hlY2twb2lu
dCkpCiAgICAgewogICAgICAgICBBU1NFUlQoKnRoaXMpOwpAQCAtNTQsNyArNTcsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBjaGVja3BvaW50U2hpZnQgPSBXVEY6
OmdldE1TQlNldENvbnN0ZXhwcihudW1iZXJPZkNoZWNrcG9pbnRzKTsKIAogICAgIHVpbnQzMl90
IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFja2VkQml0cyA+PiBjaGVja3BvaW50U2hpZnQ7
IH0KLSAgICB1aW50OF90IGNoZWNrcG9pbnQoKSBjb25zdCB7IHJldHVybiBtX3BhY2tlZEJpdHMg
JiBjaGVja3BvaW50TWFzazsgfQorICAgIENoZWNrcG9pbnQgY2hlY2twb2ludCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFja2VkQml0cyAmIGNoZWNrcG9pbnRNYXNrOyB9CiAgICAgdWludDMyX3QgYXNC
aXRzKCkgY29uc3QgeyByZXR1cm4gbV9wYWNrZWRCaXRzOyB9CiAKICAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3QgeyByZXR1cm4gV1RGOjppbnRIYXNoKG1fcGFja2VkQml0cyk7IH0KQEAgLTYyLDcg
KzY1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25z
dCB7IHJldHVybiAqdGhpcyA9PSBkZWxldGVkVmFsdWUoKTsgfQogCiAgICAgc3RhdGljIEJ5dGVj
b2RlSW5kZXggZnJvbUJpdHModWludDMyX3QgYml0cyk7Ci0gICAgQnl0ZWNvZGVJbmRleCB3aXRo
Q2hlY2twb2ludCh1bnNpZ25lZCBjaGVja3BvaW50KSBjb25zdCB7IHJldHVybiBCeXRlY29kZUlu
ZGV4KG9mZnNldCgpLCBjaGVja3BvaW50KTsgfQorICAgIEJ5dGVjb2RlSW5kZXggd2l0aENoZWNr
cG9pbnQoQ2hlY2twb2ludCBjaGVja3BvaW50KSBjb25zdCB7IHJldHVybiBCeXRlY29kZUluZGV4
KG9mZnNldCgpLCBjaGVja3BvaW50KTsgfQogCiAgICAgLy8gQ29tcGFyaXNvbiBvcGVyYXRvcnMu
CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFja2VkQml0
cyAhPSBpbnZhbGlkT2Zmc2V0ICYmIG1fcGFja2VkQml0cyAhPSBkZWxldGVkVmFsdWUoKS5vZmZz
ZXQoKTsgfQpAQCAtODAsMTIgKzgzLDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50MzJfdCBpbnZhbGlkT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1
aW50MzJfdD46Om1heCgpOwogCi0gICAgc3RhdGljIHVpbnQzMl90IHBhY2sodWludDMyX3QgYnl0
ZWNvZGVJbmRleCwgdWludDhfdCBjaGVja3BvaW50KTsKKyAgICBzdGF0aWMgdWludDMyX3QgcGFj
ayh1aW50MzJfdCBieXRlY29kZUluZGV4LCBDaGVja3BvaW50KTsKIAogICAgIHVpbnQzMl90IG1f
cGFja2VkQml0cyB7IGludmFsaWRPZmZzZXQgfTsKIH07CiAKLWlubGluZSB1aW50MzJfdCBCeXRl
Y29kZUluZGV4OjpwYWNrKHVpbnQzMl90IGJ5dGVjb2RlSW5kZXgsIHVpbnQ4X3QgY2hlY2twb2lu
dCkKK2lubGluZSB1aW50MzJfdCBCeXRlY29kZUluZGV4OjpwYWNrKHVpbnQzMl90IGJ5dGVjb2Rl
SW5kZXgsIENoZWNrcG9pbnQgY2hlY2twb2ludCkKIHsKICAgICBBU1NFUlQoY2hlY2twb2ludCA8
IG51bWJlck9mQ2hlY2twb2ludHMpOwogICAgIEFTU0VSVCgoYnl0ZWNvZGVJbmRleCA8PCBjaGVj
a3BvaW50U2hpZnQpID4+IGNoZWNrcG9pbnRTaGlmdCA9PSBieXRlY29kZUluZGV4KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHAKaW5kZXggOGRjZjEzZGU3YzZhYWUzMDUwZjdmZDk2ZGVhMmQ4ZDY1ZWE4
MWZmMC4uOGE3MDY3OGIzZjZiZjIzOGFkNGIxYzA1OGE2ZjM1MTgwZjZkMWJiYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHAKQEAgLTQzLDU3ICs0Myw0NiBAQCBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAg
ICAgZHVtcFJlc3VsdHMoY29kZUJsb2NrKTsKIH0KIAotdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVJbmRleChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCi17
Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguZmluZEJhc2ljQmxvY2tG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4Lm9mZnNldCgpKTsKLSAgICBBU1NFUlQoYmxv
Y2spOwotICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKLSAgICBBU1NFUlQoIWJs
b2NrLT5pc0V4aXRCbG9jaygpKTsKLSAgICByZXN1bHQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1C
aXRzKCkpOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVJbmRleChjb2RlQmxv
Y2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCksIG1fZ3JhcGgsICpibG9jaywgYnl0ZWNvZGVJ
bmRleCwgcmVzdWx0KTsKLX0KLQotRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVJbmRleChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Qnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQotewotICAgIEZhc3RCaXRWZWN0b3Igb3V0Owot
ICAgIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVJbmRleChjb2RlQmxvY2ssIGJ5dGVjb2RlSW5k
ZXgsIG91dCk7Ci0gICAgcmV0dXJuIG91dDsKLX0KLQogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEZ1bGxCeXRl
Y29kZUxpdmVuZXNzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CiAKLSAgICBy
ZXN1bHQubV9iZWZvcmVVc2VWZWN0b3IucmVzaXplKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKTsKLSAgICByZXN1bHQubV9hZnRlclVzZVZlY3Rvci5yZXNpemUoY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ugc2NhbGUgdGhp
cyBiYXNlZCBvbiBjaGVja3BvaW50cz8KKyAgICBzaXplX3QgaW5zdHJ1Y3Rpb25Db3VudCA9IGNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuaW5zdHJ1Y3Rpb25Db3VudCgpOworICAgIHJlc3VsdC5t
X3VzZXNCZWZvcmUucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnN0cnVjdGlvbkNvdW50KTsKKyAg
ICByZXN1bHQubV91c2VzQWZ0ZXIucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnN0cnVjdGlvbkNv
dW50KTsKICAgICAKICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2sgOiBtX2dyYXBo
LmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2suaXNFbnRy
eUJsb2NrKCkgfHwgYmxvY2suaXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAKICAgICAgICAgb3V0ID0gYmxvY2sub3V0KCk7Ci0gICAgICAgIAotICAgICAgICBh
dXRvIHVzZSA9IFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKLSAgICAgICAgICAgIC8vIFRoaXMg
aXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KLSAgICAgICAgICAgIG91dFti
aXRJbmRleF0gPSB0cnVlOwotICAgICAgICB9OwotCi0gICAgICAgIGF1dG8gZGVmID0gWyZdICh1
bnNpZ25lZCBiaXRJbmRleCkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1bmN0
b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQuCi0gICAgICAgICAgICBvdXRbYml0SW5kZXhdID0gZmFs
c2U7Ci0gICAgICAgIH07Ci0KICAgICAgICAgYXV0byYgaW5zdHJ1Y3Rpb25zID0gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKTsKICAgICAgICAgdW5zaWduZWQgY3Vyc29yID0gYmxvY2sudG90YWxM
ZW5ndGgoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2suZGVsdGEoKS5zaXplKCk7
IGktLTspIHsKICAgICAgICAgICAgIGN1cnNvciAtPSBibG9jay5kZWx0YSgpW2ldOwogICAgICAg
ICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleChibG9jay5s
ZWFkZXJPZmZzZXQoKSArIGN1cnNvcik7Ci0KLSAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rp
b25EZWYoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIG1fZ3JhcGgsIGJ5dGVjb2RlSW5kZXgsIGRl
Zik7Ci0gICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uVXNlSW5FeGNlcHRpb25IYW5kbGVy
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBtX2dyYXBoLCBieXRlY29kZUluZGV4LCB1c2UpOwot
ICAgICAgICAgICAgcmVzdWx0Lm1fYWZ0ZXJVc2VWZWN0b3JbYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KV0gPSBvdXQ7IC8vIEFmdGVyVXNlIHBvaW50LgotICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVj
dGlvblVzZShjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgbV9ncmFwaCwgYnl0ZWNvZGVJbmRleCwg
dXNlKTsKLSAgICAgICAgICAgIHJlc3VsdC5tX2JlZm9yZVVzZVZlY3RvcltieXRlY29kZUluZGV4
Lm9mZnNldCgpXSA9IG91dDsgLy8gQmVmb3JlVXNlIHBvaW50LgorICAgICAgICAgICAgZm9yIChD
aGVja3BvaW50IGNoZWNrcG9pbnQgPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCktPm51
bWJlck9mQ2hlY2twb2ludHMoKTsgY2hlY2twb2ludC0tOykgeworICAgICAgICAgICAgICAgIGJ5
dGVjb2RlSW5kZXggPSBieXRlY29kZUluZGV4LndpdGhDaGVja3BvaW50KGNoZWNrcG9pbnQpOwor
CisgICAgICAgICAgICAgICAgYXV0byB1c2UgPSBbJl0gKENoZWNrcG9pbnQgdGFyZ2V0LCB1bnNp
Z25lZCBiaXRJbmRleCkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2Ug
ZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCisgICAgICAgICAgICAgICAgICAgIGlmIChjaGVj
a3BvaW50ID09IHRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dFtiaXRJbmRleF0g
PSB0cnVlOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhdXRvIGRlZiA9
IFsmXSAoQ2hlY2twb2ludCB0YXJnZXQsIHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBjbGVhciB0aGUgYml0
LgorICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2twb2ludCA9PSB0YXJnZXQpCisgICAgICAg
ICAgICAgICAgICAgICAgICBvdXRbYml0SW5kZXhdID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
fTsKKworICAgICAgICAgICAgICAgIHN0ZXBPdmVyQnl0ZWNvZGVJbmRleERlZihjb2RlQmxvY2ss
IGluc3RydWN0aW9ucywgbV9ncmFwaCwgYnl0ZWNvZGVJbmRleCwgZGVmKTsKKyAgICAgICAgICAg
ICAgICBzdGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2VJbkV4Y2VwdGlvbkhhbmRsZXIoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbnMsIG1fZ3JhcGgsIGJ5dGVjb2RlSW5kZXgsIHVzZSk7CisgICAgICAgICAg
ICAgICAgcmVzdWx0Lm1fdXNlc0FmdGVyLmFkZChieXRlY29kZUluZGV4LCBvdXQpOyAvLyBBZnRl
clVzZSBwb2ludC4KKyAgICAgICAgICAgICAgICBzdGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2UoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbnMsIG1fZ3JhcGgsIGJ5dGVjb2RlSW5kZXgsIHVzZSk7CisgICAg
ICAgICAgICAgICAgcmVzdWx0Lm1fdXNlc0JlZm9yZS5hZGQoYnl0ZWNvZGVJbmRleCwgb3V0KTsg
Ly8gQmVmb3JlVXNlIHBvaW50LgorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpA
QCAtMTQ5LDcgKzEzOCw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVz
dWx0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgICAgIGNvbnN0IGF1dG8gY3VycmVu
dEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zLmF0KGJ5dGVjb2RlT2Zmc2V0KTsKIAogICAgICAg
ICAgICAgZGF0YUxvZ0YoIkxpdmUgdmFyaWFibGVzOiIpOwotICAgICAgICAgICAgRmFzdEJpdFZl
Y3RvciBsaXZlQmVmb3JlID0gZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZUluZGV4KGNvZGVCbG9j
aywgQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkpOworICAgICAgICAgICAgRmFzdEJpdFZl
Y3RvciBsaXZlQmVmb3JlID0gZ2V0TGl2ZW5lc3NJbmZvQXRJbnN0cnVjdGlvbihjb2RlQmxvY2ss
IEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpKTsKICAgICAgICAgICAgIGR1bXBCaXRWZWN0
b3IobGl2ZUJlZm9yZSk7CiAgICAgICAgICAgICBkYXRhTG9nRigiXG4iKTsKICAgICAgICAgICAg
IGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgY3VycmVudEluc3RydWN0
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuaAppbmRleCBhODAwOGIzNThjNzE5YWM0ZDAyYmU3NGVkNTM1
Yzc0YmRhZjJjNWM2Li5hMjA0MTdmMjJjYjFiMmQzNzc2YjA5YTY3NzEzOWMyMjdkMjYwYzI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5oCkBAIC01MSwyNiArNTEsMjYgQEAgZW51bSBjbGFzcyBMaXZlbmVz
c0NhbGN1bGF0aW9uUG9pbnQgOiB1aW50OF90IHsKIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NQcm9w
YWdhdGlvbiB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwg
dHlwZW5hbWUgVXNlRnVuY3Rvcj4KLSAgICBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9u
VXNlKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3Jh
cGgmLCBCeXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJik7CisgICAgc3RhdGljIHZvaWQg
c3RlcE92ZXJCeXRlY29kZUluZGV4VXNlKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlv
blN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9y
Jik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgVXNlRnVu
Y3Rvcj4KLSAgICBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uVXNlSW5FeGNlcHRpb25I
YW5kbGVyKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2Rl
R3JhcGgmLCBCeXRlY29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJik7CisgICAgc3RhdGljIHZv
aWQgc3RlcE92ZXJCeXRlY29kZUluZGV4VXNlSW5FeGNlcHRpb25IYW5kbGVyKENvZGVCbG9ja1R5
cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUlu
ZGV4LCBjb25zdCBVc2VGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2Nr
VHlwZSwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLSAgICBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3Ry
dWN0aW9uRGVmKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVj
b2RlR3JhcGgmLCBCeXRlY29kZUluZGV4LCBjb25zdCBEZWZGdW5jdG9yJik7CisgICAgc3RhdGlj
IHZvaWQgc3RlcE92ZXJCeXRlY29kZUluZGV4RGVmKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4LCBjb25zdCBEZWZG
dW5jdG9yJik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFt
ZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotICAgIHN0YXRpYyB2b2lkIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiwg
Qnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3ImLCBjb25zdCBE
ZWZGdW5jdG9yJik7CisgICAgc3RhdGljIHZvaWQgc3RlcE92ZXJCeXRlY29kZUluZGV4KENvZGVC
bG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBCeXRl
Y29kZUluZGV4LCBjb25zdCBVc2VGdW5jdG9yJiwgY29uc3QgRGVmRnVuY3RvciYpOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KICAgICBzdGF0aWMgdm9pZCBzdGVwT3Zl
ckluc3RydWN0aW9uKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5
dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4LCBGYXN0Qml0VmVjdG9yJiBvdXQpOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25zPgot
ICAgIHN0YXRpYyBib29sIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVJbmRleChDb2Rl
QmxvY2tUeXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2Rl
QmFzaWNCbG9jayYsIEJ5dGVjb2RlSW5kZXgsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCk7CisgICAg
c3RhdGljIGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JJbnN0cnVjdGlvbihDb2RlQmxvY2tU
eXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlQmFzaWNC
bG9jayYsIEJ5dGVjb2RlSW5kZXgsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCk7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBJbnN0cnVjdGlvbnM+CiAgICAg
c3RhdGljIGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2tUeXBlKiwg
Y29uc3QgSW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlQmFzaWNCbG9jayYp
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgSW5zdHJ1
Y3Rpb25zPgotICAgIHN0YXRpYyBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVJbmRleChDb2RlQmxvY2tUeXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVHcmFw
aCYsIEJ5dGVjb2RlSW5kZXgpOworICAgIHN0YXRpYyBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNz
SW5mb0F0SW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSosIGNvbnN0IEluc3RydWN0aW9ucyYsIEJ5
dGVjb2RlR3JhcGgmLCBCeXRlY29kZUluZGV4KTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENv
ZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9ucz4KICAgICBzdGF0aWMgdm9pZCBydW5M
aXZlbmVzc0ZpeHBvaW50KENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlvbnMmLCBCeXRl
Y29kZUdyYXBoJik7CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3Mg
Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOwogICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyhDb2RlQmxvY2sqKTsKICAgICAKLSAgICBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0
Qnl0ZWNvZGVJbmRleChDb2RlQmxvY2sqLCBCeXRlY29kZUluZGV4KTsKKyAgICBGYXN0Qml0VmVj
dG9yIGdldExpdmVuZXNzSW5mb0F0SW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkgeyByZXR1cm4gQnl0ZWNvZGVMaXZlbmVzc1Byb3Bh
Z2F0aW9uOjpnZXRMaXZlbmVzc0luZm9BdEluc3RydWN0aW9uKGNvZGVCbG9jaywgY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKSwgbV9ncmFwaCwgYnl0ZWNvZGVJbmRleCk7IH0KICAgICAKICAgICB2
b2lkIGNvbXB1dGVGdWxsTGl2ZW5lc3MoQ29kZUJsb2NrKiwgRnVsbEJ5dGVjb2RlTGl2ZW5lc3Mm
IHJlc3VsdCk7CiAKQEAgLTkyLDggKzkyLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lk
IGR1bXBSZXN1bHRzKENvZGVCbG9jayopOwogCi0gICAgdm9pZCBnZXRMaXZlbmVzc0luZm9BdEJ5
dGVjb2RlSW5kZXgoQ29kZUJsb2NrKiwgQnl0ZWNvZGVJbmRleCwgRmFzdEJpdFZlY3RvciYpOwot
CiAgICAgQnl0ZWNvZGVHcmFwaCBtX2dyYXBoOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJ
bmxpbmVzLmgKaW5kZXggYzYwOTY1YmNjOTdhN2I4OTkwZGI5OGZkMjNkOTliNWUwOGY5Y2RkNS4u
ZDg5MTU5NjRmOTI5OGIzMWFhYzkxZTU0MWVmMmU2YmVjOGY1YjY3YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJCeXRlY29k
ZUdyYXBoLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCisjaW5jbHVk
ZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlcklubGluZXMuaCIKIApAQCAtNTgsNDcgKzU5LDQ5IEBAIGlubGluZSBib29sIGlz
VmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotaW5s
aW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0aW9u
RGVmKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGlu
c3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwg
Y29uc3QgRGVmRnVuY3RvciYgZGVmKQoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3Bh
Z2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXhEZWYoQ29kZUJsb2NrVHlwZSogY29kZUJsb2Nr
LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiwg
Qnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAg
ICAgYXV0byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVJbmRleCkucHRy
KCk7CiAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4KAogICAgICAgICBjb2RlQmxvY2ss
IGluc3RydWN0aW9uLAotICAgICAgICBbJl0gKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7Cisg
ICAgICAgIFsmXSAoQ2hlY2twb2ludCBjaGVja3BvaW50LCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFu
ZCkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQp
KQotICAgICAgICAgICAgICAgIGRlZihvcGVyYW5kLnRvTG9jYWwoKSk7CisgICAgICAgICAgICAg
ICAgZGVmKGNoZWNrcG9pbnQsIG9wZXJhbmQudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIFVzZUZ1bmN0b3I+Ci1p
bmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVySW5zdHJ1Y3Rp
b25Vc2UoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYg
aW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4
LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UpCitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJv
cGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleFVzZShDb2RlQmxvY2tUeXBlKiBjb2RlQmxv
Y2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgm
LCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSkKIHsK
ICAgICBhdXRvKiBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdChieXRlY29kZUluZGV4KS5w
dHIoKTsKICAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXgoCiAgICAgICAgIGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sCi0gICAgICAgIFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsK
KyAgICAgICAgWyZdIChDaGVja3BvaW50IGNoZWNrcG9pbnQsIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kKSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFu
ZCkpCi0gICAgICAgICAgICAgICAgdXNlKG9wZXJhbmQudG9Mb2NhbCgpKTsKKyAgICAgICAgICAg
ICAgICB1c2UoY2hlY2twb2ludCwgb3BlcmFuZC50b0xvY2FsKCkpOwogICAgICAgICB9KTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlwZW5hbWUgVXNlRnVuY3Rvcj4K
LWlubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3RlcE92ZXJJbnN0cnVj
dGlvblVzZUluRXhjZXB0aW9uSGFuZGxlcihDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0
IEluc3RydWN0aW9uU3RyZWFtJiwgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCwgY29uc3QgVXNlRnVuY3RvciYgdXNlKQoraW5saW5lIHZvaWQgQnl0ZWNv
ZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2VJbkV4Y2VwdGlv
bkhhbmRsZXIoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVh
bSYsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIGNv
bnN0IFVzZUZ1bmN0b3ImIHVzZSkKIHsKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBo
YW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCi0gICAgLy8gZXhj
ZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhp
cyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgorICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRv
IGJlIGluY2x1ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBCeXRlY29kZUlu
ZGV4LgogICAgIGlmIChhdXRvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNv
ZGVJbmRleChieXRlY29kZUluZGV4KSkgewogICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhh
bmRsZXJCbG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVy
LT50YXJnZXQpOwogICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKLSAgICAgICAgaGFuZGxl
ckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKKyAgICAgICAgaGFuZGxlckJsb2NrLT5p
bigpLmZvckVhY2hTZXRCaXQoWyZdICh1bnNpZ25lZCBpKSB7CisgICAgICAgICAgICB1c2UoYnl0
ZWNvZGVJbmRleC5jaGVja3BvaW50KCkgLCBpKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCiAv
LyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1p
bmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCiAvLyBleGNlcHRpb24g
aGFuZGxlcnMgaW4gdGhlIHVzZXMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0
eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotaW5saW5lIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9ja1R5
cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgQnl0
ZWNvZGVHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgY29uc3QgVXNl
RnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCitpbmxpbmUgdm9pZCBCeXRlY29k
ZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVyQnl0ZWNvZGVJbmRleChDb2RlQmxvY2tUeXBl
KiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIEJ5dGVj
b2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IFVzZUZ1
bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQogewotICAgIC8vIFRoaXMgYWJzdHJh
Y3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9n
aWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKKyAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhl
Y3V0ZXMgdGhlIEJ5dGVjb2RlSW5kZXggaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxs
eSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCiAgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRo
aXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2Ug
YW5kIGRlZiB0aGUgc2FtZQogICAgIC8vIG9wZXJhbmQsIGxpa2U6CiAgICAgLy8KQEAgLTExMywz
MSArMTE2LDM3IEBAIGlubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6c3Rl
cE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2tUeXBlKiBjb2RlCiAgICAgLy8gdXNlcyBiZWZvcmUg
ZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhh
dmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCiAgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQg
c2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgogCi0gICAg
c3RlcE92ZXJJbnN0cnVjdGlvbkRlZihjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgZ3JhcGgsIGJ5
dGVjb2RlSW5kZXgsIGRlZik7Ci0gICAgc3RlcE92ZXJJbnN0cnVjdGlvblVzZUluRXhjZXB0aW9u
SGFuZGxlcihjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgZ3JhcGgsIGJ5dGVjb2RlSW5kZXgsIHVz
ZSk7Ci0gICAgc3RlcE92ZXJJbnN0cnVjdGlvblVzZShjb2RlQmxvY2ssIGluc3RydWN0aW9ucywg
Z3JhcGgsIGJ5dGVjb2RlSW5kZXgsIHVzZSk7CisgICAgc3RlcE92ZXJCeXRlY29kZUluZGV4RGVm
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBncmFwaCwgYnl0ZWNvZGVJbmRleCwgZGVmKTsKKyAg
ICBzdGVwT3ZlckJ5dGVjb2RlSW5kZXhVc2VJbkV4Y2VwdGlvbkhhbmRsZXIoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbnMsIGdyYXBoLCBieXRlY29kZUluZGV4LCB1c2UpOworICAgIHN0ZXBPdmVyQnl0
ZWNvZGVJbmRleFVzZShjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgZ3JhcGgsIGJ5dGVjb2RlSW5k
ZXgsIHVzZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+CiBpbmxpbmUg
dm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29k
ZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rp
b25zLCBCeXRlY29kZUdyYXBoJiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBG
YXN0Qml0VmVjdG9yJiBvdXQpCiB7Ci0gICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAg
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGdyYXBoLCBieXRlY29kZUluZGV4LAotICAgICAgICBb
Jl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2Ug
ZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCi0gICAgICAgICAgICBvdXRbYml0SW5kZXhdID0g
dHJ1ZTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewotICAg
ICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQu
Ci0gICAgICAgICAgICBvdXRbYml0SW5kZXhdID0gZmFsc2U7Ci0gICAgICAgIH0pOworICAgIGF1
dG8gbnVtYmVyT2ZDaGVja3BvaW50cyA9IGluc3RydWN0aW9ucy5hdChieXRlY29kZUluZGV4KS0+
bnVtYmVyT2ZDaGVja3BvaW50cygpOworICAgIGZvciAoQ2hlY2twb2ludCB0YXJnZXQgPSBudW1i
ZXJPZkNoZWNrcG9pbnRzOyB0YXJnZXQtLTspIHsKKyAgICAgICAgc3RlcE92ZXJCeXRlY29kZUlu
ZGV4KAorICAgICAgICAgICAgY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGdyYXBoLCBieXRlY29k
ZUluZGV4LAorICAgICAgICAgICAgWyZdIChDaGVja3BvaW50IGNoZWNrcG9pbnQsIHVuc2lnbmVk
IGJpdEluZGV4KSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3Is
IHNvIHdlIHNldCB0aGUgYml0LgorICAgICAgICAgICAgICAgIGlmIChjaGVja3BvaW50ID09IHRh
cmdldCkKKyAgICAgICAgICAgICAgICAgICAgb3V0W2JpdEluZGV4XSA9IHRydWU7CisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgWyZdIChDaGVja3BvaW50IGNoZWNrcG9pbnQsIHVuc2lnbmVk
IGJpdEluZGV4KSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1bmN0b3Is
IHNvIHdlIGNsZWFyIHRoZSBiaXQuCisgICAgICAgICAgICAgICAgaWYgKGNoZWNrcG9pbnQgPT0g
dGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICBvdXRbYml0SW5kZXhdID0gZmFsc2U7CisgICAg
ICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUs
IHR5cGVuYW1lIEluc3RydWN0aW9ucz4KLWlubGluZSBib29sIEJ5dGVjb2RlTGl2ZW5lc3NQcm9w
YWdhdGlvbjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZUluZGV4KENvZGVCbG9ja1R5
cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2Rl
R3JhcGgmIGdyYXBoLCBCeXRlY29kZUJhc2ljQmxvY2smIGJsb2NrLCBCeXRlY29kZUluZGV4IHRh
cmdldEluZGV4LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCitpbmxpbmUgYm9vbCBCeXRlY29kZUxp
dmVuZXNzUHJvcGFnYXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oQ29k
ZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywg
Qnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayYgYmxvY2ssIEJ5dGVjb2Rl
SW5kZXggdGFyZ2V0SW5kZXgsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKIHsKICAgICBBU1NFUlQo
IWJsb2NrLmlzRXhpdEJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2suaXNFbnRyeUJsb2NrKCkp
OworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXRhcmdldEluZGV4LmNoZWNrcG9pbnQoKSwgImNv
bXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24gY2FuJ3QgYmUgdXNlZCB0byBhc2sgcXVl
c3Rpb25zIGFib3V0IGNoZWNrcG9pbnRzIik7CiAKICAgICBGYXN0Qml0VmVjdG9yIG91dCA9IGJs
b2NrLm91dCgpOwogCkBAIC0xNTgsMTkgKzE2NywyMCBAQCBpbmxpbmUgYm9vbCBCeXRlY29kZUxp
dmVuZXNzUHJvcGFnYXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2Nr
VAogewogICAgIGlmIChibG9jay5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLmlzRW50cnlCbG9jaygp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQnl0ZWNvZGVJbmRleChjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgZ3JhcGgsIGJsb2NrLCBC
eXRlY29kZUluZGV4KGJsb2NrLmxlYWRlck9mZnNldCgpKSwgYmxvY2suaW4oKSk7CisgICAgcmV0
dXJuIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBpbnN0cnVj
dGlvbnMsIGdyYXBoLCBibG9jaywgQnl0ZWNvZGVJbmRleChibG9jay5sZWFkZXJPZmZzZXQoKSks
IGJsb2NrLmluKCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBl
bmFtZSBJbnN0cnVjdGlvbnM+Ci1pbmxpbmUgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb246OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVJbmRleChDb2RlQmxvY2tUeXBl
KiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdy
YXBoJiBncmFwaCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQoraW5saW5lIEZhc3RCaXRW
ZWN0b3IgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uOjpnZXRMaXZlbmVzc0luZm9BdEluc3Ry
dWN0aW9uKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25zJiBpbnN0
cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5k
ZXgpCiB7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50
KCksICJnZXRMaXZlbmVzc0luZm9BdEluc3RydWN0aW9uIGNhbid0IGJlIHVzZWQgdG8gYXNrIHF1
ZXN0aW9ucyBhYm91dCBjaGVja3BvaW50cyIpOwogICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgu
b2Zmc2V0KCkpOwogICAgIEFTU0VSVChibG9jayk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRy
eUJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOwogICAgIEZhc3RC
aXRWZWN0b3Igb3V0OwogICAgIG91dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7Ci0g
ICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZUluZGV4KGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb25zLCBncmFwaCwgKmJsb2NrLCBieXRlY29kZUluZGV4LCBvdXQpOworICAgIGNvbXB1dGVM
b2NhbExpdmVuZXNzRm9ySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGdyYXBo
LCAqYmxvY2ssIGJ5dGVjb2RlSW5kZXgsIG91dCk7CiAgICAgcmV0dXJuIG91dDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5k
ZXggYjBmMmU4MDJkNzI3YzdmOGUzMjk0YzE1NWI5MWNiMmM4ZGJlOWU0ZC4uMjUwOWQzYzI2YTFj
MDNhOWE2ODk3ZWQ2Y2NhN2NkZjNlNTliZTQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0yOSwxMCArMjksMTEgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiAjZGVmaW5lIENBTExfRlVOQ1RPUihfX2FyZykgXAotICAgIGZ1bmN0
b3IoX19ieXRlY29kZS5tXyMjX19hcmcpOworICAgIGZ1bmN0b3Iobm9DaGVja3BvaW50cywgX19i
eXRlY29kZS5tXyMjX19hcmcpOwogCiAjZGVmaW5lIFVTRVNfT1JfREVGUyhfX29wY29kZSwgLi4u
KSBcCiAgICAgY2FzZSBfX29wY29kZTo6b3Bjb2RlSUQ6IHsgXAorICAgICAgICBzdGF0aWNfYXNz
ZXJ0KF9fb3Bjb2RlOjpvcGNvZGVJRCA+PSBOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9DSEVDS1BP
SU5UUywgIkRvbid0IHVzZSB0aGlzIG1hY3JvIGZvciBieXRlY29kZXMgdGhhdCBoYXZlIGNoZWNr
cG9pbnRzLiIpOyBcCiAgICAgICAgIGF1dG8gX19ieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxf
X29wY29kZT4oKTsgXAogICAgICAgICBXVEZfTEFaWV9GT1JfRUFDSF9URVJNKENBTExfRlVOQ1RP
UiwgX19WQV9BUkdTX18pIFwKICAgICAgICAgcmV0dXJuOyBcCkBAIC00MSwyNiArNDIsMzEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIFVTRVMgVVNFU19PUl9ERUZTCiAjZGVmaW5lIERFRlMg
VVNFU19PUl9ERUZTCiAKLXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0
dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
LCBjb25zdCBGdW5jdGlvbjx2b2lkKFZpcnR1YWxSZWdpc3Rlcik+JiBmdW5jdG9yKQordm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lz
dGVyLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
Q2hlY2twb2ludCwgVmlydHVhbFJlZ2lzdGVyKT4mIGZ1bmN0b3IpCiB7CiAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKIAotICAgIGF1dG8gaGFuZGxlTmV3
QXJyYXlMaWtlID0gWyZdKGF1dG8gb3ApIHsKKyAgICBhdXRvIGhhbmRsZU5ld0FycmF5TGlrZSA9
IFsmXSAoYXV0byBvcCkgewogICAgICAgICBpbnQgYmFzZSA9IG9wLm1fYXJndi5vZmZzZXQoKTsK
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxpbnQ+KG9wLm1fYXJnYyk7
IGkrKykKLSAgICAgICAgICAgIGZ1bmN0b3IoVmlydHVhbFJlZ2lzdGVyIHsgYmFzZSAtIGkgfSk7
CisgICAgICAgICAgICBmdW5jdG9yKG5vQ2hlY2twb2ludHMsIFZpcnR1YWxSZWdpc3RlciB7IGJh
c2UgLSBpIH0pOwogICAgIH07CiAKLSAgICBhdXRvIGhhbmRsZU9wQ2FsbExpa2UgPSBbJl0oYXV0
byBvcCkgewotICAgICAgICBmdW5jdG9yKG9wLm1fY2FsbGVlKTsKKyAgICBhdXRvIGhhbmRsZU9w
Q2FsbExpa2UgPSBbJl0gKGF1dG8gb3ApIHsKKyAgICAgICAgZnVuY3Rvcihub0NoZWNrcG9pbnRz
LCBvcC5tX2NhbGxlZSk7CiAgICAgICAgIGludCBsYXN0QXJnID0gLXN0YXRpY19jYXN0PGludD4o
b3AubV9hcmd2KSArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCk7CiAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8aW50PihvcC5tX2FyZ2MpOyBpKyspCi0gICAg
ICAgICAgICBmdW5jdG9yKFZpcnR1YWxSZWdpc3RlciB7IGxhc3RBcmcgKyBpIH0pOworICAgICAg
ICAgICAgZnVuY3Rvcihub0NoZWNrcG9pbnRzLCBWaXJ0dWFsUmVnaXN0ZXIgeyBsYXN0QXJnICsg
aSB9KTsKICAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkKLSAgICAgICAgICAg
IGZ1bmN0b3Ioc2NvcGVSZWdpc3Rlcik7CisgICAgICAgICAgICBmdW5jdG9yKG5vQ2hlY2twb2lu
dHMsIHNjb3BlUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfTsKIAorICAgIGF1dG8g
dXNlQXRFYWNoQ2hlY2twb2ludCA9IFsmXSAoYXV0byBvcCwgYXV0by4uLiB2aXJ0dWFsUmVnaXN0
ZXJzKSB7CisgICAgICAgIGZvciAoQ2hlY2twb2ludCBjaGVja3BvaW50ID0gMDsgY2hlY2twb2lu
dCA8IGRlY2x0eXBlKG9wKTo6bnVtYmVyT2ZDaGVja3BvaW50czsgKytjaGVja3BvaW50KQorICAg
ICAgICAgICAgKGZ1bmN0b3IoY2hlY2twb2ludCwgdmlydHVhbFJlZ2lzdGVycyksIC4uLik7Cisg
ICAgfTsKKwogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX3dpZGUxNjoKICAg
ICBjYXNlIG9wX3dpZGUzMjoKQEAgLTI0OSw5ICsyNTUsMjIgQEAgdm9pZCBjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJ
bnN0cnUKICAgICBVU0VTKE9wSGFzU3RydWN0dXJlUHJvcGVydHksIGJhc2UsIHByb3BlcnR5LCBl
bnVtZXJhdG9yKQogICAgIFVTRVMoT3BIYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0eSwgYmFzZSwgcHJv
cGVydHksIGVudW1lcmF0b3IpCiAgICAgVVNFUyhPcEluU3RydWN0dXJlUHJvcGVydHksIGJhc2Us
IHByb3BlcnR5LCBlbnVtZXJhdG9yKQotICAgIFVTRVMoT3BDb25zdHJ1Y3RWYXJhcmdzLCBjYWxs
ZWUsIHRoaXNWYWx1ZSwgYXJndW1lbnRzKQotICAgIFVTRVMoT3BDYWxsVmFyYXJncywgY2FsbGVl
LCB0aGlzVmFsdWUsIGFyZ3VtZW50cykKLSAgICBVU0VTKE9wVGFpbENhbGxWYXJhcmdzLCBjYWxs
ZWUsIHRoaXNWYWx1ZSwgYXJndW1lbnRzKQorCisgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6IHsK
KyAgICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcENhbGxWYXJhcmdzPigp
OworICAgICAgICB1c2VBdEVhY2hDaGVja3BvaW50KGJ5dGVjb2RlLCBieXRlY29kZS5tX2NhbGxl
ZSwgYnl0ZWNvZGUubV90aGlzVmFsdWUsIGJ5dGVjb2RlLm1fYXJndW1lbnRzKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOiB7CisgICAgICAg
IGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BUYWlsQ2FsbFZhcmFyZ3M+KCk7Cisg
ICAgICAgIHVzZUF0RWFjaENoZWNrcG9pbnQoYnl0ZWNvZGUsIGJ5dGVjb2RlLm1fY2FsbGVlLCBi
eXRlY29kZS5tX3RoaXNWYWx1ZSwgYnl0ZWNvZGUubV9hcmd1bWVudHMpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6IHsKKyAgICAgICAgYXV0
byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcENvbnN0cnVjdFZhcmFyZ3M+KCk7CisgICAg
ICAgIHVzZUF0RWFjaENoZWNrcG9pbnQoYnl0ZWNvZGUsIGJ5dGVjb2RlLm1fY2FsbGVlLCBieXRl
Y29kZS5tX3RoaXNWYWx1ZSwgYnl0ZWNvZGUubV9hcmd1bWVudHMpOworICAgICAgICByZXR1cm47
CisgICAgfQogCiAgICAgVVNFUyhPcEdldERpcmVjdFBuYW1lLCBiYXNlLCBwcm9wZXJ0eSwgaW5k
ZXgsIGVudW1lcmF0b3IpCiAKQEAgLTI2NCw4ICsyODMsMjQgQEAgdm9pZCBjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJ
bnN0cnUKIAogICAgIFVTRVMoT3BZaWVsZCwgZ2VuZXJhdG9yLCBhcmd1bWVudCkKIAotICAgIFVT
RVMoT3BJdGVyYXRvck9wZW4sIHN5bWJvbEl0ZXJhdG9yLCBpdGVyYWJsZSkKLSAgICBVU0VTKE9w
SXRlcmF0b3JOZXh0LCBpdGVyYXRvciwgbmV4dCwgaXRlcmFibGUpCisgICAgY2FzZSBvcF9pdGVy
YXRvcl9vcGVuOiB7CisgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJ
dGVyYXRvck9wZW4+KCk7CisgICAgICAgIGZ1bmN0b3IoT3BJdGVyYXRvck9wZW46OnN5bWJvbENh
bGwsIGJ5dGVjb2RlLm1faXRlcmFibGUpOworICAgICAgICBmdW5jdG9yKE9wSXRlcmF0b3JPcGVu
OjpnZXROZXh0LCBieXRlY29kZS5tX2l0ZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDogeworICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
aW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAgICAgICBmdW5jdG9yKE9wSXRl
cmF0b3JOZXh0Ojpjb21wdXRlTmV4dCwgYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgICAgIGZ1
bmN0b3IoT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0LCBieXRlY29kZS5tX25leHQpOworICAg
ICAgICBmdW5jdG9yKE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dCwgYnl0ZWNvZGUubV9pdGVy
YWJsZSk7CisKKyAgICAgICAgZnVuY3RvcihPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZSwgYnl0ZWNv
ZGUubV9pdGVyYWJsZSk7CisKKyAgICAgICAgZnVuY3RvcihPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFs
dWUsIGJ5dGVjb2RlLm1faXRlcmFibGUpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAg
Y2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQ6CiAgICAgICAgIGhhbmRsZU5ld0FycmF5TGlr
ZShpbnN0cnVjdGlvbi0+YXM8T3BOZXdBcnJheVdpdGhTcHJlYWQ+KCkpOwpAQCAtMjc4LDcgKzMx
Myw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0
ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBp
bnN0cnVjdGlvbi0+YXM8T3BTdHJjYXQ+KCk7CiAgICAgICAgIGludCBiYXNlID0gYnl0ZWNvZGUu
bV9zcmMub2Zmc2V0KCk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYnl0ZWNvZGUubV9j
b3VudDsgaSsrKQotICAgICAgICAgICAgZnVuY3RvcihWaXJ0dWFsUmVnaXN0ZXIgeyBiYXNlIC0g
aSB9KTsKKyAgICAgICAgICAgIGZ1bmN0b3Iobm9DaGVja3BvaW50cywgVmlydHVhbFJlZ2lzdGVy
IHsgYmFzZSAtIGkgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMwMSw3ICszMzYs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVy
IHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIH0KIH0KIAotdm9pZCBjb21wdXRlRGVm
c0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3Rpb248dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYgZnVu
Y3RvcikKK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1W
YXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
Q2hlY2twb2ludCwgVmlydHVhbFJlZ2lzdGVyKT4mIGZ1bmN0b3IpCiB7CiAgICAgc3dpdGNoIChp
bnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogICAgIGNhc2Ugb3Bfd2lkZTE2OgpAQCAtNDExLDEw
ICs0NDYsMjMgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVk
IG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBERUZTKE9wTmV3QXN5bmNH
ZW5lcmF0b3JGdW5jRXhwLCBkc3QpCiAgICAgREVGUyhPcE5ld0FzeW5jRnVuYywgZHN0KQogICAg
IERFRlMoT3BOZXdBc3luY0Z1bmNFeHAsIGRzdCkKLSAgICBERUZTKE9wQ2FsbFZhcmFyZ3MsIGRz
dCkKLSAgICBERUZTKE9wVGFpbENhbGxWYXJhcmdzLCBkc3QpCisgICAgY2FzZSBvcF9jYWxsX3Zh
cmFyZ3M6IHsKKyAgICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcENhbGxW
YXJhcmdzPigpOworICAgICAgICBmdW5jdG9yKE9wQ2FsbFZhcmFyZ3M6Om1ha2VDYWxsLCBieXRl
Y29kZS5tX2RzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBvcF90YWlsX2Nh
bGxfdmFyYXJnczogeworICAgICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9w
VGFpbENhbGxWYXJhcmdzPigpOworICAgICAgICBmdW5jdG9yKE9wVGFpbENhbGxWYXJhcmdzOjpt
YWtlQ2FsbCwgYnl0ZWNvZGUubV9kc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNh
c2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6IHsKKyAgICAgICAgYXV0byBieXRlY29kZSA9IGluc3Ry
dWN0aW9uLT5hczxPcENvbnN0cnVjdFZhcmFyZ3M+KCk7CisgICAgICAgIGZ1bmN0b3IoT3BDb25z
dHJ1Y3RWYXJhcmdzOjptYWtlQ2FsbCwgYnl0ZWNvZGUubV9kc3QpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgREVGUyhPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cywgZHN0KQotICAg
IERFRlMoT3BDb25zdHJ1Y3RWYXJhcmdzLCBkc3QpCiAgICAgREVGUyhPcEdldEZyb21TY29wZSwg
ZHN0KQogICAgIERFRlMoT3BDYWxsLCBkc3QpCiAgICAgREVGUyhPcFRhaWxDYWxsLCBkc3QpCkBA
IC00OTksMTIgKzU0NywyOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwo
dW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogCiAgICAgREVGUyhP
cENhdGNoLCBleGNlcHRpb24sIHRocm93blZhbHVlKQogCi0gICAgREVGUyhPcEl0ZXJhdG9yT3Bl
biwgaXRlcmF0b3IsIG5leHQpCi0gICAgREVGUyhPcEl0ZXJhdG9yTmV4dCwgZG9uZSwgdmFsdWUp
CisgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBp
bnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CisKKyAgICAgICAgZnVuY3RvcihPcEl0
ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbCwgYnl0ZWNvZGUubV9pdGVyYXRvcik7CisgICAgICAgIGZ1
bmN0b3IoT3BJdGVyYXRvck9wZW46OmdldE5leHQsIGJ5dGVjb2RlLm1fbmV4dCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKKyAgICAgICAg
YXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKworICAg
ICAgICBmdW5jdG9yKE9wSXRlcmF0b3JOZXh0OjpnZXREb25lLCBieXRlY29kZS5tX2RvbmUpOwor
ICAgICAgICAvLyBXZSBuZWVkIHRvIGNsYWltIHdlIHNldCBtX3ZhbHVlIGhlcmUgYmVjYXVzZSB3
ZSBjb3VsZCBlYXJseSBleGl0IGZyb20gdGhlIGJ5dGVjb2RlIGlmIHdlIGFyZSBkb25lLgorICAg
ICAgICBmdW5jdG9yKE9wSXRlcmF0b3JOZXh0OjpnZXREb25lLCBieXRlY29kZS5tX3ZhbHVlKTsK
KworICAgICAgICBmdW5jdG9yKE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZSwgYnl0ZWNvZGUubV92
YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBjYXNlIG9wX2VudGVyOiB7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVZhcnM7IGktLTspCi0gICAgICAgICAgICBmdW5j
dG9yKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKTsKKyAgICAgICAgICAgIGZ1bmN0b3Iobm9D
aGVja3BvaW50cywgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmgKaW5kZXggYjNiMDBhOTkyMzczM2QzMWFjODRlNWQ4ODJkYTkwM2U5YmVkYzdm
Yi4uOWI0NDE3MWQ1OTZjM2NmNDNlMjc2OGE0MjNmMmY0ZDgyNzNhYjVlMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTMyLDIxICsz
MiwyMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBGdW5j
dGlvbjx2b2lkKFZpcnR1YWxSZWdpc3Rlcik+Jik7Ci12b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVJbmRleEltcGwodW5zaWduZWQsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgRnVuY3Rpb248
dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYpOwordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKFZpcnR1YWxSZWdpc3RlciwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBGdW5jdGlv
bjx2b2lkKENoZWNrcG9pbnQsIFZpcnR1YWxSZWdpc3Rlcik+Jik7Cit2b2lkIGNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3Qg
RnVuY3Rpb248dm9pZChDaGVja3BvaW50LCBWaXJ0dWFsUmVnaXN0ZXIpPiYpOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBCbG9jaz4KLXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4KEJsb2Nr
KiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3Rp
b248dm9pZChWaXJ0dWFsUmVnaXN0ZXIpPiYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZVVzZXNGb3JC
eXRlY29kZUluZGV4KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgY29uc3QgRnVuY3Rpb248dm9pZChDaGVja3BvaW50LCBWaXJ0dWFsUmVnaXN0ZXIpPiYg
ZnVuY3RvcikKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT5vcGNvZGVJ
RCgpOwotICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAmJiAoY29kZUJsb2NrLT53YXNDb21w
aWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKSAmJiBj
b2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCi0gICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkpOworICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAm
JiAoY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgfHwgY29kZUJs
b2NrLT51c2VzRXZhbCgpKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkp
IHsKKyAgICAgICAgZm9yIChDaGVja3BvaW50IGNoZWNrcG9pbnQgPSBpbnN0cnVjdGlvbi0+bnVt
YmVyT2ZDaGVja3BvaW50cygpOyBjaGVja3BvaW50LS07KQorICAgICAgICAgICAgZnVuY3Rvcihj
aGVja3BvaW50LCBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKSk7CisgICAgfQogCiAgICAgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKSwg
aW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KLXZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3Rpb248dm9pZChWaXJ0dWFsUmVnaXN0
ZXIpPiYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4KEJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3Rpb248
dm9pZChDaGVja3BvaW50LCBWaXJ0dWFsUmVnaXN0ZXIpPiYgZnVuY3RvcikKIHsKICAgICBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKGNvZGVCbG9jay0+bnVtVmFycygpLCBpbnN0cnVj
dGlvbiwgZnVuY3Rvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IDNkMGU1NzZiYmY0NmU5ZDNhNGNhZTZkZDBkMzFlNzcyNzdiMzkyMWMu
LjlkYTM3Yzc5YWQ1YTRlYjdjMzEyYWU1NWIyY2U5M2UyZWFlNmIyYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zNCw3ICszNCw3IEBACiAj
aW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAj
aW5jbHVkZSAiQnl0ZWNvZGVEdW1wZXIuaCIKLSNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCIKICNpbmNsdWRlICJCeXRl
Y29kZVN0cnVjdHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tJbmxpbmVzLmgiCkBAIC0xOTIyLDcg
KzE5MjIsNyBAQCB2b2lkIENvZGVCbG9jazo6ZW5zdXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRG
b3JCeXRlY29kZUluZGV4U2xvdyhjb25zdCBPcENhdGNoJgogICAgIC8vIGludG8gdGhlIERGRy4K
IAogICAgIGF1dG8gbmV4dE9mZnNldCA9IGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgp
Lm5leHQoKS5vZmZzZXQoKTsKLSAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBieXRlY29k
ZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVJbmRleCh0aGlzLCBCeXRlY29kZUlu
ZGV4KG5leHRPZmZzZXQpKTsKKyAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBieXRlY29k
ZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0SW5zdHJ1Y3Rpb24odGhpcywgQnl0ZWNvZGVJbmRl
eChuZXh0T2Zmc2V0KSk7CiAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2ZU9wZXJhbmRz
OwogICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVMb2NhbHMuYml0
Q291bnQoKSk7CiAgICAgbGl2ZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXSAodW5zaWduZWQgbGl2
ZUxvY2FsKSB7CkBAIC0zMTA4LDcgKzMxMDgsNyBAQCB2b2lkIENvZGVCbG9jazo6dmFsaWRhdGUo
KQogewogICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsgLy8gQ29t
cHV0ZSBkaXJlY3RseSBmcm9tIHNjcmF0Y2ggc28gaXQgZG9lc24ndCBlZmZlY3QgQ29kZUJsb2Nr
IGZvb3RwcmludC4KICAgICAKLSAgICBGYXN0Qml0VmVjdG9yIGxpdmVBdEhlYWQgPSBsaXZlbmVz
cy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlSW5kZXgodGhpcywgQnl0ZWNvZGVJbmRleCgwKSk7
CisgICAgRmFzdEJpdFZlY3RvciBsaXZlQXRIZWFkID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZv
QXRJbnN0cnVjdGlvbih0aGlzLCBCeXRlY29kZUluZGV4KDApKTsKICAgICAKICAgICBpZiAobGl2
ZUF0SGVhZC5udW1CaXRzKCkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX251bUNhbGxlZUxvY2Fs
cykpIHsKICAgICAgICAgYmVnaW5WYWxpZGF0aW9uRGlkRmFpbCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bGxCeXRlY29kZUxpdmVuZXNzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaAppbmRleCA0
N2M2NTdjOGRmOTAzODNhZjY1ZWI1YzNiOGE4YjA1OTRkMGM0ZGE3Li5kZThhZDVkNzQyYzZmYzYx
MmJmZTI3YmZiZmZlNGQ4NmE3Yzk5YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaApAQCAtNDEsMTIgKzQxLDExIEBA
IGNsYXNzIEZ1bGxCeXRlY29kZUxpdmVuZXNzIHsKIHB1YmxpYzoKICAgICBjb25zdCBGYXN0Qml0
VmVjdG9yJiBnZXRMaXZlbmVzcyhCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIExpdmVuZXNz
Q2FsY3VsYXRpb25Qb2ludCBwb2ludCkgY29uc3QKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBX
aGF0IHNob3VsZCB0aGlzIGRvIHdoZW4gd2UgaGF2ZSBjaGVja3BvaW50cz8KICAgICAgICAgc3dp
dGNoIChwb2ludCkgewogICAgICAgICBjYXNlIExpdmVuZXNzQ2FsY3VsYXRpb25Qb2ludDo6QmVm
b3JlVXNlOgotICAgICAgICAgICAgcmV0dXJuIG1fYmVmb3JlVXNlVmVjdG9yW2J5dGVjb2RlSW5k
ZXgub2Zmc2V0KCldOworICAgICAgICAgICAgcmV0dXJuIG1fdXNlc0JlZm9yZS5maW5kKGJ5dGVj
b2RlSW5kZXgpLT52YWx1ZTsKICAgICAgICAgY2FzZSBMaXZlbmVzc0NhbGN1bGF0aW9uUG9pbnQ6
OkFmdGVyVXNlOgotICAgICAgICAgICAgcmV0dXJuIG1fYWZ0ZXJVc2VWZWN0b3JbYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKV07CisgICAgICAgICAgICByZXR1cm4gbV91c2VzQWZ0ZXIuZmluZChieXRl
Y29kZUluZGV4KS0+dmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9CkBAIC01OSwxMCArNTgsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiAgICAgCi0gICAgLy8g
RklYTUU6IFVzZSBGYXN0Qml0VmVjdG9yJ3MgdmlldyBtZWNoYW5pc20gdG8gbWFrZSB0aGVtIGNv
bXBhY3QuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NDQyNzxQYXN0ZT4KLSAgICBWZWN0b3I8RmFzdEJpdFZlY3RvciwgMCwgVW5zYWZlVmVjdG9yT3Zl
cmZsb3c+IG1fYmVmb3JlVXNlVmVjdG9yOwotICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yLCAwLCBV
bnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9hZnRlclVzZVZlY3RvcjsKKyAgICBIYXNoTWFwPEJ5dGVj
b2RlSW5kZXgsIEZhc3RCaXRWZWN0b3I+IG1fdXNlc0JlZm9yZTsKKyAgICBIYXNoTWFwPEJ5dGVj
b2RlSW5kZXgsIEZhc3RCaXRWZWN0b3I+IG1fdXNlc0FmdGVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCmlu
ZGV4IDNkNzBjZDU0M2VjZmFlOTAyMjUwMjk2MDFhMGQ0MDVlYzY3MWIyZDAuLmY2M2FkMjlmMjBm
NTFlNmM2MDlmY2NiOWRiY2I1NTg5NmUzMjJmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCkBAIC0zOSw2ICszOSw3IEBAIHN0cnVjdCBKU09wY29k
ZVRyYWl0cyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCB3aWRlMzIgPSBvcF93aWRl
MzI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCogb3Bjb2RlTGVuZ3RocyA9
IDo6SlNDOjpvcGNvZGVMZW5ndGhzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciog
Y29uc3QqIG9wY29kZU5hbWVzID0gOjpKU0M6Om9wY29kZU5hbWVzOworICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBjaGVja3BvaW50Q291bnRUYWJsZSA9IGJ5dGVjb2RlQ2hlY2twb2ludENvdW50
VGFibGU7CiB9OwogCiBzdHJ1Y3QgV2FzbU9wY29kZVRyYWl0cyB7CkBAIC01MCw2ICs1MSw3IEBA
IHN0cnVjdCBXYXNtT3Bjb2RlVHJhaXRzIHsKICAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlE
IHdpZGUzMiA9IHdhc21fd2lkZTMyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWdu
ZWQqIG9wY29kZUxlbmd0aHMgPSB3YXNtT3Bjb2RlTGVuZ3RoczsKICAgICBzdGF0aWMgY29uc3Rl
eHByIGNvbnN0IGNoYXIqIGNvbnN0KiBvcGNvZGVOYW1lcyA9IHdhc21PcGNvZGVOYW1lczsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2hlY2twb2ludENvdW50VGFibGUgPSB3YXNtQ2hlY2tw
b2ludENvdW50VGFibGU7CiB9OwogCiAKQEAgLTEyMiw2ICsxMjQsMTQgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gb3Bjb2RlSUQ8VHJhaXRzPigpIDwgVHJhaXRzOjpudW1iZXJPZkJ5dGVjb2Rl
c1dpdGhDaGVja3BvaW50czsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMg
PSBKU09wY29kZVRyYWl0cz4KKyAgICB1bnNpZ25lZCBudW1iZXJPZkNoZWNrcG9pbnRzKCkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmICghaGFzQ2hlY2twb2ludHM8VHJhaXRzPigpKQorICAgICAg
ICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiBUcmFpdHM6OmNoZWNrcG9pbnRDb3VudFRh
YmxlW29wY29kZUlEPFRyYWl0cz4oKV07CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+CiAgICAgaW50IHNpemVTaGlmdEFtb3VudCgpIGNvbnN0
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Ry
dWN0aW9uU3RyZWFtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVj
dGlvblN0cmVhbS5jcHAKaW5kZXggMzhjYWY5NWZkOWUwNjEwNTNlMTM1YTU5ZmUxYTNjNzVmODVh
ODVkMy4uNmI5ZDY4YzExZjRiNzdmZWU0OTE2ZjcwNGJlZjU0MDRmZjk5ODVjZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uY3Bw
CkBAIC00Niw0ICs0NiwxNCBAQCBib29sIEluc3RydWN0aW9uU3RyZWFtOjpjb250YWlucyhJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24pIGNvbnN0CiAgICAgcmV0dXJuIHBvaW50ZXIgPj0gbV9pbnN0
cnVjdGlvbnMuZGF0YSgpICYmIHBvaW50ZXIgPCAobV9pbnN0cnVjdGlvbnMuZGF0YSgpICsgbV9p
bnN0cnVjdGlvbnMuc2l6ZSgpKTsKIH0KIAorc2l6ZV90IEluc3RydWN0aW9uU3RyZWFtOjppbnN0
cnVjdGlvbkNvdW50KCkgY29uc3QKK3sKKyAgICBzaXplX3QgcmVzdWx0IHsgMCB9OworICAgIGZv
ciAoY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb24gOiAqdGhpcykgeworICAgICAgICBVTlVTRURfUEFS
QU0oaW5zdHJ1Y3Rpb24pOworICAgICAgICByZXN1bHQrKzsKKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RydWN0aW9uU3RyZWFtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb25TdHJlYW0uaAppbmRleCAzZTk3OGQzMzJkNThkNzBhNTI5ZDI4ZjA1MjY2NDQ4Y2Zm
NzZlYjEwLi40MGQxMWQ2ODMzNTY2ZDM1NzEzNWJmZWYxOGIwZTIyNzE0ZTdiYzcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaApA
QCAtMTY2LDYgKzE2Niw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFJlZiB7IG1faW5zdHJ1
Y3Rpb25zLCBvZmZzZXQgfTsKICAgICB9CiAKKyAgICAvLyBUaGlzIGlzIHRoZSBhY3R1YWwgbnVt
YmVyIG9mIGJ5dGVjb2RlcyBpbiB0aGUgc3RyZWFtIGlnbm9yaW5nIG9wZXJhbmRzLgorICAgIHNp
emVfdCBpbnN0cnVjdGlvbkNvdW50KCkgY29uc3Q7CiAgICAgaW5saW5lIHNpemVfdCBzaXplKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2luc3RydWN0aW9ucy5zaXplKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCmluZGV4IDg4ZWU0YTNhNmUzMWIwZjA4N2JiNTRjZjQyZDU3ZGFlYmQ1MmRiZGIu
LjAxZTI3YjExYzE1YWRmYjE0ZTBkN2RiZjQ3YjVhOTdjZjRiY2M4NTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCkBAIC01MjA2LDcgKzUyMDYsNyBAQCB2b2lkIEZvckluQ29udGV4dDo6ZmluYWxpemUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcgogICAgIGZv
ciAodW5zaWduZWQgb2Zmc2V0ID0gYm9keUJ5dGVjb2RlU3RhcnRPZmZzZXQoKTsgaXNWYWxpZCgp
ICYmIG9mZnNldCA8IGJvZHlCeXRlY29kZUVuZE9mZnNldDspIHsKICAgICAgICAgYXV0byBpbnN0
cnVjdGlvbiA9IGdlbmVyYXRvci5pbnN0cnVjdGlvbnMoKS5hdChvZmZzZXQpOwogICAgICAgICBB
U1NFUlQoIWluc3RydWN0aW9uLT5pczxPcEVudGVyPigpKTsKLSAgICAgICAgY29tcHV0ZURlZnNG
b3JCeXRlY29kZUluZGV4KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24ucHRyKCksIFsmXSAoVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQpIHsKKyAgICAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24ucHRyKCksIFsmXSAoQ2hlY2twb2ludCwgVmlydHVhbFJl
Z2lzdGVyIG9wZXJhbmQpIHsKICAgICAgICAgICAgIGlmIChsb2NhbCgpLT52aXJ0dWFsUmVnaXN0
ZXIoKSA9PSBvcGVyYW5kKQogICAgICAgICAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CmluZGV4IDZiNWJmMTc4NjRjYzUzMDA4ZTMyYTZmYTg4M2VhNjJlZWZmZTUzNmEuLjYwMWNhNWUz
YmRkZDQyNGRhMGUxY2U5MjBkZTc4MjgwYzAxMDE0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC03MDE2LDYgKzcwMTYsOCBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgICAgIC8vIE91ciBwcm9maWxpbmcgY291bGQgaGF2ZSBiZWVuIGluY29ycmVjdCB3aGVuIHdl
IGdvdCBoZXJlLiBGb3IgaW5zdGFuY2UsIGlmIHdlIExvb3BIaW50IE9TUiBlbnRlciB0aGUgZmly
c3QgdGltZSB3ZSB3b3VsZAogICAgICAgICAgICAgICAgIC8vIGhhdmUgc2VlbiBhIGZhc3QgcGF0
aCwgbmV4dCB3aWxsIGJlIHRoZSBlbXB0eSB2YWx1ZS4gV2hlbiB0aGF0IGhhcHBlbnMgd2UgbmVl
ZCB0byBtYWtlIHN1cmUgdGhlIGVtcHR5IHZhbHVlIGRvZXNuJ3QgZmxvdwogICAgICAgICAgICAg
ICAgIC8vIGludG8gdGhlIENhbGwgbm9kZSBzaW5jZSBjYWxsIGNhbid0IGhhbmRsZSBlbXB0eSB2
YWx1ZXMuCisgICAgICAgICAgICAgICAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgd2UgZG9uJ3QgZ2V0
IGhlcmUgd2l0aCBhIGZhc3QgcGF0aCBkdXJpbmcgT1NSIGVudHJ5LgorCiAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChDaGVja05vdEVtcHR5LCBnZXQoYnl0ZWNvZGUubV9uZXh0KSk7CiAKICAg
ICAgICAgICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZUNhbGw8T3BJdGVy
YXRvck5leHQ+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIsIG5l
eHRDaGVja3BvaW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5kZXgg
NzE2MWZiZjI2OGYzNTAxOTI5NzhhMmY4NTJkNTFjYzhiMTA5ZTczNS4uNWFkZTljOTVhMDRlYzY1
NGJlMjkyZWFkMTE1NTRiODQ5ZmFlNjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bs
YW4uY3BwCkBAIC03NTgsNyArNzU4LDcgQEAgdm9pZCBQbGFuOjpjbGVhbk11c3RIYW5kbGVWYWx1
ZXNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvZGVCbG9jayogYWx0ZXJu
YXRpdmUgPSBtX2NvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKTsKLSAgICBGYXN0Qml0VmVjdG9yIGxp
dmVuZXNzID0gYWx0ZXJuYXRpdmUtPmxpdmVuZXNzQW5hbHlzaXMoKS5nZXRMaXZlbmVzc0luZm9B
dEJ5dGVjb2RlSW5kZXgoYWx0ZXJuYXRpdmUsIG1fb3NyRW50cnlCeXRlY29kZUluZGV4KTsKKyAg
ICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzID0gYWx0ZXJuYXRpdmUtPmxpdmVuZXNzQW5hbHlzaXMo
KS5nZXRMaXZlbmVzc0luZm9BdEluc3RydWN0aW9uKGFsdGVybmF0aXZlLCBtX29zckVudHJ5Qnl0
ZWNvZGVJbmRleCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGxvY2FsID0gbV9tdXN0SGFuZGxlVmFs
dWVzLm51bWJlck9mTG9jYWxzKCk7IGxvY2FsLS07KSB7CiAgICAgICAgIGlmICghbGl2ZW5lc3Nb
bG9jYWxdKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0
aW9uLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiCmluZGV4
IGY4MzgwZWQ1NzVkMzEzYzZlYTA2YWI1ZDcyYzI1YTg2Nzc2ZDljYzguLmQ5ZTk5NGVlYWQ2MzQ4
Y2MzODg5MTEyYTEyY2Y1YTFjYzMwNDEwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL1NlY3Rpb24ucmIKQEAgLTg0LDEzICs4NCwxNSBAQCBjbGFzcyBTZWN0aW9uCiAKICAg
ICAgIGlmIGNvbmZpZ1s6ZW1pdF9pbl9zdHJ1Y3RzX2ZpbGVdCiAgICAgICAgICAgaSA9IDAKKyAg
ICAgICAgICBvdXQud3JpdGUoInN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgI3tjb25maWdbOm1h
Y3JvX25hbWVfY29tcG9uZW50XS5kb3duY2FzZX1DaGVja3BvaW50Q291bnRUYWJsZVtdID0ge1xu
IikKICAgICAgICAgICB3aGlsZSB0cnVlCiAgICAgICAgICAgICAgIGlmICFvcGNvZGVzW2ldLmNo
ZWNrcG9pbnRzCi0gICAgICAgICAgICAgICAgICBvdXQgPDwgIlxuIgorICAgICAgICAgICAgICAg
ICAgb3V0IDw8ICJ9O1xuXG4iCiAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiNkZWZpbmUgTlVN
QkVSX09GXyN7Y29uZmlnWzptYWNyb19uYW1lX2NvbXBvbmVudF19X1dJVEhfQ0hFQ0tQT0lOVFMg
I3tpfVxuIgogICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgZW5kCiAKKyAg
ICAgICAgICAgICAgb3V0LndyaXRlKCIgICAgI3tvcGNvZGVzW2ldLmNoZWNrcG9pbnRzLmxlbmd0
aH0sXG4iKQogICAgICAgICAgICAgICBpICs9IDEKICAgICAgICAgICBlbmQKICAgICAgICAgICBv
dXQgPDwgIlxuIgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCBjMGE1MTA3OTNkNmUwMDMwN2Y1YzkyMWI2ZDFkOGQ0MjA1ODgzMWRlLi44NmJk
OWFkODdhYWIwZGI1YjhkOGEwZmMyNDljYTRmMGE3MjViZjVlIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIw
LTA2LTExICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPiBhbmQgVGFkZXUg
WmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KKworICAgICAgICBCeXRlY29kZSBsaXZlbmVz
cyBzaG91bGQgYmUgYXdhcmUgb2YgY2hlY2twb2ludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzEwNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjM0MTY4Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzdHJlc3MvaXRlcmF0b3Itb3Blbi1jaGVja3BvaW50LWxpdmVuZXNzLmpzOiBBZGRlZC4K
KyAgICAgICAgKGYpOgorICAgICAgICAobmV4dCk6CisgICAgICAgIChpdGVyYXRvcik6CisgICAg
ICAgIChjYXRjaCk6CisKIDIwMjAtMDYtMTAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbSlNDXSBhZGQgc3RyZXNzIHRlc3QgZm9yIG9wX2dldF9wcml2YXRl
X25hbWUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2l0ZXJhdG9yLW9wZW4tY2hlY2twb2lu
dC1saXZlbmVzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2l0ZXJhdG9yLW9wZW4tY2hlY2twb2ludC1s
aXZlbmVzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODU0NDJjNTAzNjk1ZDYxNzMwZTk5OGRjMmQyZWYzNTY1
ZmZiZDVmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaXRlcmF0b3Itb3Blbi1j
aGVja3BvaW50LWxpdmVuZXNzLmpzCkBAIC0wLDAgKzEsMzUgQEAKK2xldCB4ID0gZmFsc2U7Citm
dW5jdGlvbiBmKHgpIHsKKyAgICByZXR1cm4gQXJyYXkuZnJvbSh4KTsKK30KK25vSW5saW5lKGYp
OworCitmdW5jdGlvbiBuZXh0KCkgeworICAgIGlmICh4KSB7CisgICAgICAgIHggPSBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIHt2YWx1ZTogMiwgZG9uZTogZmFsc2UsIHg6IDF9OworICAgIH0KKyAg
ICByZXR1cm4ge3ZhbHVlOiAxLCBkb25lOiB0cnVlIH07Cit9Citub0lubGluZShuZXh0KTsKKwor
dmFyIGl0ZXJhdG9yID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKHgpCisgICAgICAgIHJldHVybiB7
fTsKKyAgICByZXR1cm4geyBuZXh0IH07Cit9Oworbm9JbmxpbmUoaXRlcmF0b3IpOworCit2YXIg
bm9kZV9saXN0ID0geworICAgIFtTeW1ib2wuaXRlcmF0b3JdOiBpdGVyYXRvciwKK30KK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBmKG5vZGVfbGlzdCk7Cit9Cit4ID0gdHJ1
ZTsKK3RyeSB7CisgICAgZihub2RlX2xpc3QpOworfSBjYXRjaCAoZXJyKSB7CisgICAgaWYgKGVy
ci5tZXNzYWdlICE9PSAndW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uJykKKyAgICAgICAgdGhy
b3cgZXJyOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401769</attachid>
            <date>2020-06-12 13:16:57 -0700</date>
            <delta_ts>2020-06-15 13:25:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213106-20200612131657.patch</filename>
            <type>text/plain</type>
            <size>10300</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OWRkNDRkMjhlOGViNGNjMWE4OWRlOTZhOTQxYjZlMmYyZDVjNmFlLi42MmNhZDdiNjViYTc5N2My
ODg2ZWQwM2VkMDhmN2ZjM2E5MGU1Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMC0wNi0xMiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBvcF9pdGVyYXRvcl9vcGVuIGdldE5leHQgY2hlY2twb2ludCBuZWVkcyB0
byBkZWNsYXJlIGl0IHVzZXMgbV9pdGVyYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMTA2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzQx
NjgzOD4KKworICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q3VycmVudGx5LCB3ZSBoYXZlIG5vIHdheSBvZiBzcGVjaWZ5aW5nIHRoYXQgYSBjaGVja3BvaW50
IHVzZXMgYW4gb3BlcmFuZCBkZWZpbmVkIGF0IGFuIGVhcmxpZXIKKyAgICAgICAgcG9pbnQgaW4g
dGhlIHNhbWUgYnl0ZWNvZGUsIHdoaWNoIGlzIHRoZSBjYXNlIGZvciBvcF9pdGVyYXRvcl9vcGVu
OiB3ZSBhc3N1bWUgdGhhdCBpdCB3aWxsIGhhdmUKKyAgICAgICAgYWxyZWFkeSBhbGxvY2F0ZWQg
dGhlIGl0ZXJhdG9yIGFuZCBzdG9yZWQgaXQgaW4gbV9pdGVyYXRvciBieSB0aGUgdGltZSB3ZSBn
ZXQgdG8gdGhlIGdldE5leHQKKyAgICAgICAgY2hlY2twb2ludC4gSW4gb3JkZXIgdG8gc3VwcG9y
dCB0aGF0LCB3ZSBjaGFuZ2UgdG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50IHRvIGxpdmVuZXNzRm9y
Q2hlY2twb2ludAorICAgICAgICBhbmQgYWxsb3cgaXQgdG8gYWxzbyBkZWNsYXJlIHRoZSB1c2Ug
b2YgdGhlIG9wZXJhbmRzIGRlZmluZWQgd2l0aGluIHRoZSBieXRlY29kZS4KKworICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6Omxp
dmVuZXNzRm9yQ2hlY2twb2ludCk6CisgICAgICAgIChKU0M6OnRtcExpdmVuZXNzRm9yQ2hlY2tw
b2ludCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzLmg6CisgICAgICAgICogYnl0ZWNvZGUvRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaDoKKyAgICAg
ICAgKiBkZmcvREZHRm9yQWxsS2lsbHMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpmb3JBbGxLaWxs
ZWRPcGVyYW5kcyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6aXNMaXZlSW5CeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6
CisKIDIwMjAtMDYtMTAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBKU0NhbGxiYWNrT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSBzaG91bGQgcmVkaXJl
Y3QgdG8gUGFyZW50OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXggaWYgcHJvcGVydHlOYW1lIGlzIGlu
ZGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IDhkY2YxM2RlN2M2YWFlMzA1MGY3ZmQ5NmRl
YTJkOGQ2NWVhODFmZjAuLjdmM2I4NmNmOTJlMTkwMGNiOWE0YjVmYzA2OTkyM2VhZWRhZDAyNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC0xNzUsOSArMTc1LDkgQEAgY29uc3RleHByIGJv
b2wgZW51bVZhbHVlc0VxdWFsQXNJbnRlZ3JhbChFbnVtVHlwZTEgdjEsIEVudW1UeXBlMiB2MikK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEludFR5cGUyPih2MSkgPT0gc3RhdGljX2Nhc3Q8
SW50VHlwZTI+KHYyKTsKIH0KIAotQml0bWFwPG1heE51bUNoZWNrcG9pbnRUbXBzPiB0bXBMaXZl
bmVzc0ZvckNoZWNrcG9pbnQoY29uc3QgQ29kZUJsb2NrJiBjb2RlQmxvY2ssIEJ5dGVjb2RlSW5k
ZXggYnl0ZWNvZGVJbmRleCkKK1ZlY3RvcjxPcGVyYW5kLCBtYXhOdW1DaGVja3BvaW50VG1wcz4g
bGl2ZW5lc3NGb3JDaGVja3BvaW50KGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrLCBCeXRlY29k
ZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7Ci0gICAgQml0bWFwPG1heE51bUNoZWNrcG9pbnRUbXBz
PiByZXN1bHQ7CisgICAgVmVjdG9yPE9wZXJhbmQsIG1heE51bUNoZWNrcG9pbnRUbXBzPiByZXN1
bHQ7CiAgICAgdWludDhfdCBjaGVja3BvaW50ID0gYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCk7
CiAKICAgICBpZiAoIWNoZWNrcG9pbnQpCkBAIC0xOTAsMTQgKzE5MCwxNiBAQCBCaXRtYXA8bWF4
TnVtQ2hlY2twb2ludFRtcHM+IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludChjb25zdCBDb2RlQmxv
Y2smIGNvZGVCbG9jawogICAgICAgICBzdGF0aWNfYXNzZXJ0KGVudW1WYWx1ZXNFcXVhbEFzSW50
ZWdyYWwoT3BDYWxsVmFyYXJnczo6bWFrZUNhbGwsIE9wVGFpbENhbGxWYXJhcmdzOjptYWtlQ2Fs
bCkgJiYgZW51bVZhbHVlc0VxdWFsQXNJbnRlZ3JhbChPcENhbGxWYXJhcmdzOjphcmdDb3VudElu
Y2x1ZGluZ1RoaXMsIE9wVGFpbENhbGxWYXJhcmdzOjphcmdDb3VudEluY2x1ZGluZ1RoaXMpKTsK
ICAgICAgICAgc3RhdGljX2Fzc2VydChlbnVtVmFsdWVzRXF1YWxBc0ludGVncmFsKE9wQ2FsbFZh
cmFyZ3M6Om1ha2VDYWxsLCBPcENvbnN0cnVjdFZhcmFyZ3M6Om1ha2VDYWxsKSAmJiBlbnVtVmFs
dWVzRXF1YWxBc0ludGVncmFsKE9wQ2FsbFZhcmFyZ3M6OmFyZ0NvdW50SW5jbHVkaW5nVGhpcywg
T3BDb25zdHJ1Y3RWYXJhcmdzOjphcmdDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAgICAgaWYg
KGNoZWNrcG9pbnQgPT0gT3BDYWxsVmFyYXJnczo6bWFrZUNhbGwpCi0gICAgICAgICAgICByZXN1
bHQuc2V0KE9wQ2FsbFZhcmFyZ3M6OmFyZ0NvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKE9wZXJhbmQ6OnRtcChPcENhbGxWYXJhcmdzOjphcmdDb3VudEluY2x1
ZGluZ1RoaXMpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgY2FzZSBvcF9p
dGVyYXRvcl9vcGVuOiB7CisgICAgICAgIGlmIChjaGVja3BvaW50ID09IE9wSXRlcmF0b3JPcGVu
OjpnZXROZXh0KQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjb2RlQmxvY2suaW5zdHJ1Y3Rp
b25zKCkuYXQoYnl0ZWNvZGVJbmRleCktPmFzPE9wSXRlcmF0b3JPcGVuPigpLm1faXRlcmF0b3Ip
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBjYXNlIG9wX2l0ZXJhdG9yX25l
eHQ6IHsKLSAgICAgICAgcmVzdWx0LnNldChPcEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoT3BlcmFuZDo6dG1wKE9wSXRlcmF0b3JOZXh0OjpuZXh0UmVz
dWx0KSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmgKaW5kZXggYTgwMDhiMzU4YzcxOWFjNGQwMmJlNzRlZDUzNWM3NGJkYWYyYzVj
Ni4uYmU1ZWUyZmNkM2E2NGU1NjNhZWExZjNmMjIyNzkxZTQ2OGJiNjEwNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuaApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgIEJ5dGVjb2RlR3JhcGggbV9n
cmFwaDsKIH07CiAKLUJpdG1hcDxtYXhOdW1DaGVja3BvaW50VG1wcz4gdG1wTGl2ZW5lc3NGb3JD
aGVja3BvaW50KGNvbnN0IENvZGVCbG9jayYsIEJ5dGVjb2RlSW5kZXgpOworVmVjdG9yPE9wZXJh
bmQsIG1heE51bUNoZWNrcG9pbnRUbXBzPiBsaXZlbmVzc0ZvckNoZWNrcG9pbnQoY29uc3QgQ29k
ZUJsb2NrJiwgQnl0ZWNvZGVJbmRleCk7CiAKIGlubGluZSBib29sIG9wZXJhbmRJc0Fsd2F5c0xp
dmUoaW50IG9wZXJhbmQpOwogaW5saW5lIGJvb2wgb3BlcmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJ
c0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GdWxsQnl0ZWNvZGVMaXZlbmVzcy5oCmlu
ZGV4IDQ3YzY1N2M4ZGY5MDM4M2FmNjVlYjVjM2I4YThiMDU5NGQwYzRkYTcuLjc5MTQ1M2YzZmQ3
MjM0MzZlZTBlZDUxOTBmMGJjMjdkN2RhMjMwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GdWxsQnl0ZWNvZGVMaXZlbmVzcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9GdWxsQnl0ZWNvZGVMaXZlbmVzcy5oCkBAIC0zNSw3ICszNSw3
IEBAIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIGNsYXNzIENvZGVCbG9jazsKIAog
Ly8gTm90ZTogRnVsbCBieXRlY29kZSBsaXZlbmVzcyBkb2VzIG5vdCB0cmFjayBhbnkgaW5mb3Jt
YXRpb24gYWJvdXQgdGhlIGxpdmVuZXNzIG9mIHRlbXBzLgotLy8gSWYgeW91IHdhbnQgdG1wIGxp
dmVuZXNzIGZvciBhIGNoZWNrcG9pbnQgYXNrIHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludC4KKy8v
IElmIHlvdSB3YW50IHRtcCBsaXZlbmVzcyBmb3IgYSBjaGVja3BvaW50IGFzayBsaXZlbmVzc0Zv
ckNoZWNrcG9pbnQuCiBjbGFzcyBGdWxsQnl0ZWNvZGVMaXZlbmVzcyB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZvckFsbEtpbGxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zv
ckFsbEtpbGxzLmgKaW5kZXggZDljOTc0MjhmZDZhZTVlYTUwNmQwNTcyNjczMDIwZGQxYWZmMTE0
ZC4uMDAwYzg0MWNlNTAzYWRlMWYzNWJmNGM5NjY2ZGQ1ODBlMmQ2MjUwZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaApAQCAtNzksMTQgKzc5LDE0IEBAIHZv
aWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlQmVmb3JlLCBO
b2RlKiBub2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgICAgICBBU1NFUlQoYmVmb3JlLmJ5dGVjb2Rl
SW5kZXgoKS5jaGVja3BvaW50KCkgIT0gYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQo
KSk7CiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGJlZm9yZS5ieXRlY29kZUluZGV4
KCkub2Zmc2V0KCkgPT0gYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpLm9mZnNldCgpIHx8IG5vZGVBZnRl
ci0+b3AoKSA9PSBFeGl0T0sgfHwgbm9kZUFmdGVyLT5vcCgpID09IEludmFsaWRhdGlvblBvaW50
LCAiV2hlbiB0aGUgREZHIGRvZXMgY29kZSBtb3Rpb24gaXQgc2hvdWxkIGNoYW5nZSB0aGUgZm9y
RXhpdCBvcmlnaW4gdG8gbWF0Y2ggdGhlIHN1cnJvdW5kaW5nIGJ5dGVjb2Rlcy4iKTsKIAotICAg
ICAgICAgICAgYXV0byBsaXZlQmVmb3JlID0gdG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KCpjb2Rl
QmxvY2ssIGJlZm9yZS5ieXRlY29kZUluZGV4KCkpOwotICAgICAgICAgICAgYXV0byBsaXZlQWZ0
ZXIgPSB0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQoKmNvZGVCbG9jaywgYWZ0ZXIuYnl0ZWNvZGVJ
bmRleCgpKTsKLSAgICAgICAgICAgIGxpdmVBZnRlci5pbnZlcnQoKTsKLSAgICAgICAgICAgIGxp
dmVCZWZvcmUuZmlsdGVyKGxpdmVBZnRlcik7CisgICAgICAgICAgICBhdXRvIGxpdmVCZWZvcmUg
PSBsaXZlbmVzc0ZvckNoZWNrcG9pbnQoKmNvZGVCbG9jaywgYmVmb3JlLmJ5dGVjb2RlSW5kZXgo
KSk7CisgICAgICAgICAgICBhdXRvIGxpdmVBZnRlciA9IGxpdmVuZXNzRm9yQ2hlY2twb2ludCgq
Y29kZUJsb2NrLCBhZnRlci5ieXRlY29kZUluZGV4KCkpOwogCi0gICAgICAgICAgICBsaXZlQmVm
b3JlLmZvckVhY2hTZXRCaXQoWyZdIChzaXplX3QgdG1wKSB7Ci0gICAgICAgICAgICAgICAgZnVu
Y3RvcihyZW1hcE9wZXJhbmQoYmVmb3JlSW5saW5lQ2FsbEZyYW1lLCBPcGVyYW5kOjp0bXAodG1w
KSkpOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBmb3IgKE9wZXJhbmQgb3BlcmFuZCA6
IGxpdmVCZWZvcmUpIHsKKyAgICAgICAgICAgICAgICBpZiAobGl2ZUFmdGVyLmNvbnRhaW5zKG9w
ZXJhbmQpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBm
dW5jdG9yKHJlbWFwT3BlcmFuZChiZWZvcmVJbmxpbmVDYWxsRnJhbWUsIG9wZXJhbmQpKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vIGxvY2FscyBjYW4gZGllIGF0IGEgY2hlY2tw
b2ludC4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcAppbmRleCA4ZTg0NmNiZTlkNGQxYzdlMTY5YmNkODZmN2E3NTA0NGE5
MWQ4ZjUyLi41MDM0MTIwMWViZDIwZjM2YmQzNjgwMzY5ZTI5MzhmZjc0MzIzMjEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMTE1Miw4ICsxMTUyLDggQEAgYm9v
bCBHcmFwaDo6aXNMaXZlSW5CeXRlY29kZShPcGVyYW5kIG9wZXJhbmQsIENvZGVPcmlnaW4gY29k
ZU9yaWdpbikKICAgICAgICAgICAgIGlmICghY29kZUJsb2NrLT5udW1UbXBzKCkgfHwgb3BlcmFu
ZEluZGV4IDwgdG1wT2Zmc2V0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
ICAgICBhdXRvIGJpdE1hcCA9IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCgqY29kZUJsb2NrLCBj
b2RlT3JpZ2luUHRyLT5ieXRlY29kZUluZGV4KCkpOwotICAgICAgICAgICAgcmV0dXJuIGJpdE1h
cC5nZXQob3BlcmFuZEluZGV4IC0gdG1wT2Zmc2V0KTsKKyAgICAgICAgICAgIGF1dG8gbGl2ZSA9
IGxpdmVuZXNzRm9yQ2hlY2twb2ludCgqY29kZUJsb2NrLCBjb2RlT3JpZ2luUHRyLT5ieXRlY29k
ZUluZGV4KCkpOworICAgICAgICAgICAgcmV0dXJuIGxpdmUuY29udGFpbnMob3BlcmFuZCk7CiAg
ICAgICAgIH0KIAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gb3BlcmFuZC52aXJ0dWFs
UmVnaXN0ZXIoKSAtIGNvZGVPcmlnaW5QdHItPnN0YWNrT2Zmc2V0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggODYzNjIyN2YzOTQ4MzM1ZGIzZDg0MGU4MWQzZmEwYzVj
YmJhN2Y5Zi4uNTJiMzcxNzQzYWQ4NmEyOGJhZDYyZDFlZWE5YzBkZTE0Nzg4MDA1MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtOTA0LDEwICs5MDQsOSBAQCBwdWJsaWM6
CiAKICAgICAgICAgICAgIGlmIChjb2RlT3JpZ2luUHRyLT5ieXRlY29kZUluZGV4KCkuY2hlY2tw
b2ludCgpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtVG1wcygpKTsK
LSAgICAgICAgICAgICAgICBhdXRvIGxpdmVUbXBzID0gdG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50
KCpjb2RlQmxvY2ssIGNvZGVPcmlnaW5QdHItPmJ5dGVjb2RlSW5kZXgoKSk7Ci0gICAgICAgICAg
ICAgICAgbGl2ZVRtcHMuZm9yRWFjaFNldEJpdChbJl0gKHNpemVfdCB0bXApIHsKLSAgICAgICAg
ICAgICAgICAgICAgZnVuY3RvcihyZW1hcE9wZXJhbmQoaW5saW5lQ2FsbEZyYW1lLCBPcGVyYW5k
Ojp0bXAodG1wKSkpOwotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGF1dG8g
bGl2ZSA9IGxpdmVuZXNzRm9yQ2hlY2twb2ludCgqY29kZUJsb2NrLCBjb2RlT3JpZ2luUHRyLT5i
eXRlY29kZUluZGV4KCkpOworICAgICAgICAgICAgICAgIGZvciAoT3BlcmFuZCBvcGVyYW5kIDog
bGl2ZSkKKyAgICAgICAgICAgICAgICAgICAgZnVuY3RvcihyZW1hcE9wZXJhbmQoaW5saW5lQ2Fs
bEZyYW1lLCBvcGVyYW5kKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBjMGE1MTA3OTNkNmUwMDMwN2Y1YzkyMWI2ZDFkOGQ0
MjA1ODgzMWRlLi5kMmExMGZhZGI2NjM4ZThkYzc3MzYwOTE3NjU2NmQ5OWY2YzljZTUzIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDIwLTA2LTEyICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29t
PgorCisgICAgICAgIEJ5dGVjb2RlIGxpdmVuZXNzIHNob3VsZCBiZSBhd2FyZSBvZiBjaGVja3Bv
aW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
MTA2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzQxNjgzOD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9pdGVyYXRvci1vcGVuLWNo
ZWNrcG9pbnQtbGl2ZW5lc3MuanM6IEFkZGVkLgorICAgICAgICAoZik6CisgICAgICAgIChuZXh0
KToKKyAgICAgICAgKGl0ZXJhdG9yKToKKyAgICAgICAgKGNhdGNoKToKKwogMjAyMC0wNi0xMCAg
Q2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIGFkZCBz
dHJlc3MgdGVzdCBmb3Igb3BfZ2V0X3ByaXZhdGVfbmFtZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvaXRlcmF0b3Itb3Blbi1jaGVja3BvaW50LWxpdmVuZXNzLmpzIGIvSlNUZXN0cy9zdHJl
c3MvaXRlcmF0b3Itb3Blbi1jaGVja3BvaW50LWxpdmVuZXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4NTQ0
MmM1MDM2OTVkNjE3MzBlOTk4ZGMyZDJlZjM1NjVmZmJkNWYKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9pdGVyYXRvci1vcGVuLWNoZWNrcG9pbnQtbGl2ZW5lc3MuanMKQEAgLTAs
MCArMSwzNSBAQAorbGV0IHggPSBmYWxzZTsKK2Z1bmN0aW9uIGYoeCkgeworICAgIHJldHVybiBB
cnJheS5mcm9tKHgpOworfQorbm9JbmxpbmUoZik7CisKK2Z1bmN0aW9uIG5leHQoKSB7CisgICAg
aWYgKHgpIHsKKyAgICAgICAgeCA9IGZhbHNlOworICAgICAgICByZXR1cm4ge3ZhbHVlOiAyLCBk
b25lOiBmYWxzZSwgeDogMX07CisgICAgfQorICAgIHJldHVybiB7dmFsdWU6IDEsIGRvbmU6IHRy
dWUgfTsKK30KK25vSW5saW5lKG5leHQpOworCit2YXIgaXRlcmF0b3IgPSBmdW5jdGlvbigpIHsK
KyAgICBpZiAoeCkKKyAgICAgICAgcmV0dXJuIHt9OworICAgIHJldHVybiB7IG5leHQgfTsKK307
Citub0lubGluZShpdGVyYXRvcik7CisKK3ZhciBub2RlX2xpc3QgPSB7CisgICAgW1N5bWJvbC5p
dGVyYXRvcl06IGl0ZXJhdG9yLAorfQorZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgewor
ICAgIGYobm9kZV9saXN0KTsKK30KK3ggPSB0cnVlOwordHJ5IHsKKyAgICBmKG5vZGVfbGlzdCk7
Cit9IGNhdGNoIChlcnIpIHsKKyAgICBpZiAoZXJyLm1lc3NhZ2UgIT09ICd1bmRlZmluZWQgaXMg
bm90IGEgZnVuY3Rpb24nKQorICAgICAgICB0aHJvdyBlcnI7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401931</attachid>
            <date>2020-06-15 13:25:56 -0700</date>
            <delta_ts>2020-06-15 18:03:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213106-20200615132555.patch</filename>
            <type>text/plain</type>
            <size>10942</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OWRkNDRkMjhlOGViNGNjMWE4OWRlOTZhOTQxYjZlMmYyZDVjNmFlLi42MmNhZDdiNjViYTc5N2My
ODg2ZWQwM2VkMDhmN2ZjM2E5MGU1Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMC0wNi0xMiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBvcF9pdGVyYXRvcl9vcGVuIGdldE5leHQgY2hlY2twb2ludCBuZWVkcyB0
byBkZWNsYXJlIGl0IHVzZXMgbV9pdGVyYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMTA2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzQx
NjgzOD4KKworICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q3VycmVudGx5LCB3ZSBoYXZlIG5vIHdheSBvZiBzcGVjaWZ5aW5nIHRoYXQgYSBjaGVja3BvaW50
IHVzZXMgYW4gb3BlcmFuZCBkZWZpbmVkIGF0IGFuIGVhcmxpZXIKKyAgICAgICAgcG9pbnQgaW4g
dGhlIHNhbWUgYnl0ZWNvZGUsIHdoaWNoIGlzIHRoZSBjYXNlIGZvciBvcF9pdGVyYXRvcl9vcGVu
OiB3ZSBhc3N1bWUgdGhhdCBpdCB3aWxsIGhhdmUKKyAgICAgICAgYWxyZWFkeSBhbGxvY2F0ZWQg
dGhlIGl0ZXJhdG9yIGFuZCBzdG9yZWQgaXQgaW4gbV9pdGVyYXRvciBieSB0aGUgdGltZSB3ZSBn
ZXQgdG8gdGhlIGdldE5leHQKKyAgICAgICAgY2hlY2twb2ludC4gSW4gb3JkZXIgdG8gc3VwcG9y
dCB0aGF0LCB3ZSBjaGFuZ2UgdG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50IHRvIGxpdmVuZXNzRm9y
Q2hlY2twb2ludAorICAgICAgICBhbmQgYWxsb3cgaXQgdG8gYWxzbyBkZWNsYXJlIHRoZSB1c2Ug
b2YgdGhlIG9wZXJhbmRzIGRlZmluZWQgd2l0aGluIHRoZSBieXRlY29kZS4KKworICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6Omxp
dmVuZXNzRm9yQ2hlY2twb2ludCk6CisgICAgICAgIChKU0M6OnRtcExpdmVuZXNzRm9yQ2hlY2tw
b2ludCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzLmg6CisgICAgICAgICogYnl0ZWNvZGUvRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaDoKKyAgICAg
ICAgKiBkZmcvREZHRm9yQWxsS2lsbHMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpmb3JBbGxLaWxs
ZWRPcGVyYW5kcyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6aXNMaXZlSW5CeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6
CisKIDIwMjAtMDYtMTAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBKU0NhbGxiYWNrT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSBzaG91bGQgcmVkaXJl
Y3QgdG8gUGFyZW50OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXggaWYgcHJvcGVydHlOYW1lIGlzIGlu
ZGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IDhkY2YxM2RlN2M2YWFlMzA1MGY3ZmQ5NmRl
YTJkOGQ2NWVhODFmZjAuLjQ0ZmFiM2FhMjMyY2IxNTY1MTJkMjM4OTdhODE5YWE2ZDgyZGRjODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKICNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtMTc1LDExICsxNzYsMTcgQEAgY29uc3RleHByIGJvb2wgZW51bVZhbHVlc0Vx
dWFsQXNJbnRlZ3JhbChFbnVtVHlwZTEgdjEsIEVudW1UeXBlMiB2MikKICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEludFR5cGUyPih2MSkgPT0gc3RhdGljX2Nhc3Q8SW50VHlwZTI+KHYyKTsK
IH0KIAotQml0bWFwPG1heE51bUNoZWNrcG9pbnRUbXBzPiB0bXBMaXZlbmVzc0ZvckNoZWNrcG9p
bnQoY29uc3QgQ29kZUJsb2NrJiBjb2RlQmxvY2ssIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRl
eCkKK1ZlY3RvcjxPcGVyYW5kLCBtYXhOdW1DaGVja3BvaW50VG1wcz4gbGl2ZW5lc3NGb3JDaGVj
a3BvaW50KGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrLCBCeXRlY29kZUluZGV4IGJ5dGVjb2Rl
SW5kZXgpCiB7Ci0gICAgQml0bWFwPG1heE51bUNoZWNrcG9pbnRUbXBzPiByZXN1bHQ7CisgICAg
VmVjdG9yPE9wZXJhbmQsIG1heE51bUNoZWNrcG9pbnRUbXBzPiByZXN1bHQ7CiAgICAgdWludDhf
dCBjaGVja3BvaW50ID0gYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCk7CiAKKyNpZm5kZWYgTkRF
QlVHCisgICAgYXV0byBzY29wZUV4aXQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIEFT
U0VSVChyZXN1bHQuc2l6ZSgpIDw9IG1heE51bUNoZWNrcG9pbnRUbXBzKTsKKyAgICB9KTsKKyNl
bmRpZgorCiAgICAgaWYgKCFjaGVja3BvaW50KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCkBA
IC0xOTAsMTQgKzE5NywxNiBAQCBCaXRtYXA8bWF4TnVtQ2hlY2twb2ludFRtcHM+IHRtcExpdmVu
ZXNzRm9yQ2hlY2twb2ludChjb25zdCBDb2RlQmxvY2smIGNvZGVCbG9jawogICAgICAgICBzdGF0
aWNfYXNzZXJ0KGVudW1WYWx1ZXNFcXVhbEFzSW50ZWdyYWwoT3BDYWxsVmFyYXJnczo6bWFrZUNh
bGwsIE9wVGFpbENhbGxWYXJhcmdzOjptYWtlQ2FsbCkgJiYgZW51bVZhbHVlc0VxdWFsQXNJbnRl
Z3JhbChPcENhbGxWYXJhcmdzOjphcmdDb3VudEluY2x1ZGluZ1RoaXMsIE9wVGFpbENhbGxWYXJh
cmdzOjphcmdDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAgICAgc3RhdGljX2Fzc2VydChlbnVt
VmFsdWVzRXF1YWxBc0ludGVncmFsKE9wQ2FsbFZhcmFyZ3M6Om1ha2VDYWxsLCBPcENvbnN0cnVj
dFZhcmFyZ3M6Om1ha2VDYWxsKSAmJiBlbnVtVmFsdWVzRXF1YWxBc0ludGVncmFsKE9wQ2FsbFZh
cmFyZ3M6OmFyZ0NvdW50SW5jbHVkaW5nVGhpcywgT3BDb25zdHJ1Y3RWYXJhcmdzOjphcmdDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKICAgICAgICAgaWYgKGNoZWNrcG9pbnQgPT0gT3BDYWxsVmFyYXJn
czo6bWFrZUNhbGwpCi0gICAgICAgICAgICByZXN1bHQuc2V0KE9wQ2FsbFZhcmFyZ3M6OmFyZ0Nv
dW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKE9wZXJhbmQ6OnRt
cChPcENhbGxWYXJhcmdzOjphcmdDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CisgICAgICAgIGlm
IChjaGVja3BvaW50ID09IE9wSXRlcmF0b3JPcGVuOjpnZXROZXh0KQorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChjb2RlQmxvY2suaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleCktPmFz
PE9wSXRlcmF0b3JPcGVuPigpLm1faXRlcmF0b3IpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KICAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHQ6IHsKLSAgICAgICAgcmVzdWx0LnNldChP
cEl0ZXJhdG9yTmV4dDo6bmV4dFJlc3VsdCk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoT3BlcmFu
ZDo6dG1wKE9wSXRlcmF0b3JOZXh0OjpuZXh0UmVzdWx0KSk7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXggYTgwMDhiMzU4
YzcxOWFjNGQwMmJlNzRlZDUzNWM3NGJkYWYyYzVjNi4uYmU1ZWUyZmNkM2E2NGU1NjNhZWExZjNm
MjIyNzkxZTQ2OGJiNjEwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtOTcsNyArOTcsNyBAQCBw
cml2YXRlOgogICAgIEJ5dGVjb2RlR3JhcGggbV9ncmFwaDsKIH07CiAKLUJpdG1hcDxtYXhOdW1D
aGVja3BvaW50VG1wcz4gdG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KGNvbnN0IENvZGVCbG9jayYs
IEJ5dGVjb2RlSW5kZXgpOworVmVjdG9yPE9wZXJhbmQsIG1heE51bUNoZWNrcG9pbnRUbXBzPiBs
aXZlbmVzc0ZvckNoZWNrcG9pbnQoY29uc3QgQ29kZUJsb2NrJiwgQnl0ZWNvZGVJbmRleCk7CiAK
IGlubGluZSBib29sIG9wZXJhbmRJc0Fsd2F5c0xpdmUoaW50IG9wZXJhbmQpOwogaW5saW5lIGJv
b2wgb3BlcmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYg
b3V0LCBpbnQgb3BlcmFuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GdWxsQnl0ZWNvZGVMaXZlbmVzcy5oCmluZGV4IDQ3YzY1N2M4ZGY5MDM4M2FmNjVlYjVj
M2I4YThiMDU5NGQwYzRkYTcuLjc5MTQ1M2YzZmQ3MjM0MzZlZTBlZDUxOTBmMGJjMjdkN2RhMjMw
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GdWxsQnl0ZWNv
ZGVMaXZlbmVzcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GdWxsQnl0
ZWNvZGVMaXZlbmVzcy5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczsKIGNsYXNzIENvZGVCbG9jazsKIAogLy8gTm90ZTogRnVsbCBieXRlY29kZSBsaXZl
bmVzcyBkb2VzIG5vdCB0cmFjayBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxpdmVuZXNzIG9m
IHRlbXBzLgotLy8gSWYgeW91IHdhbnQgdG1wIGxpdmVuZXNzIGZvciBhIGNoZWNrcG9pbnQgYXNr
IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludC4KKy8vIElmIHlvdSB3YW50IHRtcCBsaXZlbmVzcyBm
b3IgYSBjaGVja3BvaW50IGFzayBsaXZlbmVzc0ZvckNoZWNrcG9pbnQuCiBjbGFzcyBGdWxsQnl0
ZWNvZGVMaXZlbmVzcyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKaW5kZXggZDljOTc0Mjhm
ZDZhZTVlYTUwNmQwNTcyNjczMDIwZGQxYWZmMTE0ZC4uODBjZDczZGU2NjM1MTYzZjUyY2I2OGFk
OTliMmY1YjU4OGJlMWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGb3JBbGxLaWxscy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxs
S2lsbHMuaApAQCAtNzksMTUgKzc5LDE3IEBAIHZvaWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlQmVmb3JlLCBOb2RlKiBub2RlQWZ0ZXIsIGNvbnN0CiAgICAg
ICAgICAgICBBU1NFUlQoYmVmb3JlLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3BvaW50KCkgIT0gYWZ0
ZXIuYnl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKGJlZm9yZS5ieXRlY29kZUluZGV4KCkub2Zmc2V0KCkgPT0gYWZ0ZXIuYnl0ZWNv
ZGVJbmRleCgpLm9mZnNldCgpIHx8IG5vZGVBZnRlci0+b3AoKSA9PSBFeGl0T0sgfHwgbm9kZUFm
dGVyLT5vcCgpID09IEludmFsaWRhdGlvblBvaW50LCAiV2hlbiB0aGUgREZHIGRvZXMgY29kZSBt
b3Rpb24gaXQgc2hvdWxkIGNoYW5nZSB0aGUgZm9yRXhpdCBvcmlnaW4gdG8gbWF0Y2ggdGhlIHN1
cnJvdW5kaW5nIGJ5dGVjb2Rlcy4iKTsKIAotICAgICAgICAgICAgYXV0byBsaXZlQmVmb3JlID0g
dG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KCpjb2RlQmxvY2ssIGJlZm9yZS5ieXRlY29kZUluZGV4
KCkpOwotICAgICAgICAgICAgYXV0byBsaXZlQWZ0ZXIgPSB0bXBMaXZlbmVzc0ZvckNoZWNrcG9p
bnQoKmNvZGVCbG9jaywgYWZ0ZXIuYnl0ZWNvZGVJbmRleCgpKTsKLSAgICAgICAgICAgIGxpdmVB
ZnRlci5pbnZlcnQoKTsKLSAgICAgICAgICAgIGxpdmVCZWZvcmUuZmlsdGVyKGxpdmVBZnRlcik7
CisgICAgICAgICAgICBhdXRvIGNoZWNrcG9pbnRMaXZlQmVmb3JlID0gbGl2ZW5lc3NGb3JDaGVj
a3BvaW50KCpjb2RlQmxvY2ssIGJlZm9yZS5ieXRlY29kZUluZGV4KCkpOworICAgICAgICAgICAg
YXV0byBjaGVja3BvaW50TGl2ZUFmdGVyID0gbGl2ZW5lc3NGb3JDaGVja3BvaW50KCpjb2RlQmxv
Y2ssIGFmdGVyLmJ5dGVjb2RlSW5kZXgoKSk7CiAKLSAgICAgICAgICAgIGxpdmVCZWZvcmUuZm9y
RWFjaFNldEJpdChbJl0gKHNpemVfdCB0bXApIHsKLSAgICAgICAgICAgICAgICBmdW5jdG9yKHJl
bWFwT3BlcmFuZChiZWZvcmVJbmxpbmVDYWxsRnJhbWUsIE9wZXJhbmQ6OnRtcCh0bXApKSk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIC8vIE5vIGxvY2FscyBjYW4gZGllIGF0IGEgY2hl
Y2twb2ludC4KKyAgICAgICAgICAgIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBmdWxsTGl2ZW5lc3Mg
PSBncmFwaC5saXZlbmVzc0Zvcihjb2RlQmxvY2spOworICAgICAgICAgICAgY29uc3QgRmFzdEJp
dFZlY3RvciYgbGl2ZUFmdGVyID0gZnVsbExpdmVuZXNzLmdldExpdmVuZXNzKGFmdGVyLmJ5dGVj
b2RlSW5kZXgoKSwgTGl2ZW5lc3NDYWxjdWxhdGlvblBvaW50OjpCZWZvcmVVc2UpOworCisgICAg
ICAgICAgICBmb3IgKE9wZXJhbmQgb3BlcmFuZCA6IGNoZWNrcG9pbnRMaXZlQmVmb3JlKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGNoZWNrcG9pbnRMaXZlQWZ0ZXIuY29udGFpbnMob3BlcmFuZCkg
fHwgKCFvcGVyYW5kLmlzVG1wKCkgJiYgbGl2ZUFmdGVyW29wZXJhbmQudmlydHVhbFJlZ2lzdGVy
KCkub2Zmc2V0KCldKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgZnVuY3RvcihyZW1hcE9wZXJhbmQoYmVmb3JlSW5saW5lQ2FsbEZyYW1lLCBvcGVyYW5k
KSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCA4ZTg0NmNiZTlkNGQxYzdlMTY5
YmNkODZmN2E3NTA0NGE5MWQ4ZjUyLi41MDM0MTIwMWViZDIwZjM2YmQzNjgwMzY5ZTI5MzhmZjc0
MzIzMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMTE1Miw4
ICsxMTUyLDggQEAgYm9vbCBHcmFwaDo6aXNMaXZlSW5CeXRlY29kZShPcGVyYW5kIG9wZXJhbmQs
IENvZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICAgICAgICAgIGlmICghY29kZUJsb2NrLT5udW1U
bXBzKCkgfHwgb3BlcmFuZEluZGV4IDwgdG1wT2Zmc2V0KQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgICAgICBhdXRvIGJpdE1hcCA9IHRtcExpdmVuZXNzRm9yQ2hlY2twb2lu
dCgqY29kZUJsb2NrLCBjb2RlT3JpZ2luUHRyLT5ieXRlY29kZUluZGV4KCkpOwotICAgICAgICAg
ICAgcmV0dXJuIGJpdE1hcC5nZXQob3BlcmFuZEluZGV4IC0gdG1wT2Zmc2V0KTsKKyAgICAgICAg
ICAgIGF1dG8gbGl2ZSA9IGxpdmVuZXNzRm9yQ2hlY2twb2ludCgqY29kZUJsb2NrLCBjb2RlT3Jp
Z2luUHRyLT5ieXRlY29kZUluZGV4KCkpOworICAgICAgICAgICAgcmV0dXJuIGxpdmUuY29udGFp
bnMob3BlcmFuZCk7CiAgICAgICAgIH0KIAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0g
b3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKSAtIGNvZGVPcmlnaW5QdHItPnN0YWNrT2Zmc2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggODYzNjIyN2YzOTQ4MzM1ZGIz
ZDg0MGU4MWQzZmEwYzVjYmJhN2Y5Zi4uNTJiMzcxNzQzYWQ4NmEyOGJhZDYyZDFlZWE5YzBkZTE0
Nzg4MDA1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtOTA0LDEwICs5
MDQsOSBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIGlmIChjb2RlT3JpZ2luUHRyLT5ieXRlY29k
ZUluZGV4KCkuY2hlY2twb2ludCgpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGNvZGVCbG9j
ay0+bnVtVG1wcygpKTsKLSAgICAgICAgICAgICAgICBhdXRvIGxpdmVUbXBzID0gdG1wTGl2ZW5l
c3NGb3JDaGVja3BvaW50KCpjb2RlQmxvY2ssIGNvZGVPcmlnaW5QdHItPmJ5dGVjb2RlSW5kZXgo
KSk7Ci0gICAgICAgICAgICAgICAgbGl2ZVRtcHMuZm9yRWFjaFNldEJpdChbJl0gKHNpemVfdCB0
bXApIHsKLSAgICAgICAgICAgICAgICAgICAgZnVuY3RvcihyZW1hcE9wZXJhbmQoaW5saW5lQ2Fs
bEZyYW1lLCBPcGVyYW5kOjp0bXAodG1wKSkpOwotICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIGF1dG8gbGl2ZSA9IGxpdmVuZXNzRm9yQ2hlY2twb2ludCgqY29kZUJsb2NrLCBj
b2RlT3JpZ2luUHRyLT5ieXRlY29kZUluZGV4KCkpOworICAgICAgICAgICAgICAgIGZvciAoT3Bl
cmFuZCBvcGVyYW5kIDogbGl2ZSkKKyAgICAgICAgICAgICAgICAgICAgZnVuY3RvcihyZW1hcE9w
ZXJhbmQoaW5saW5lQ2FsbEZyYW1lLCBvcGVyYW5kKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBjMGE1MTA3OTNkNmUwMDMw
N2Y1YzkyMWI2ZDFkOGQ0MjA1ODgzMWRlLi5kMmExMGZhZGI2NjM4ZThkYzc3MzYwOTE3NjU2NmQ5
OWY2YzljZTUzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA2LTEyICBUYWRldSBaYWdhbGxvICA8dHph
Z2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIEJ5dGVjb2RlIGxpdmVuZXNzIHNob3VsZCBiZSBh
d2FyZSBvZiBjaGVja3BvaW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEzMTA2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzQxNjgzOD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9p
dGVyYXRvci1vcGVuLWNoZWNrcG9pbnQtbGl2ZW5lc3MuanM6IEFkZGVkLgorICAgICAgICAoZik6
CisgICAgICAgIChuZXh0KToKKyAgICAgICAgKGl0ZXJhdG9yKToKKyAgICAgICAgKGNhdGNoKToK
KwogMjAyMC0wNi0xMCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtKU0NdIGFkZCBzdHJlc3MgdGVzdCBmb3Igb3BfZ2V0X3ByaXZhdGVfbmFtZQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvaXRlcmF0b3Itb3Blbi1jaGVja3BvaW50LWxpdmVuZXNzLmpz
IGIvSlNUZXN0cy9zdHJlc3MvaXRlcmF0b3Itb3Blbi1jaGVja3BvaW50LWxpdmVuZXNzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk4NTQ0MmM1MDM2OTVkNjE3MzBlOTk4ZGMyZDJlZjM1NjVmZmJkNWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pdGVyYXRvci1vcGVuLWNoZWNrcG9pbnQtbGl2
ZW5lc3MuanMKQEAgLTAsMCArMSwzNSBAQAorbGV0IHggPSBmYWxzZTsKK2Z1bmN0aW9uIGYoeCkg
eworICAgIHJldHVybiBBcnJheS5mcm9tKHgpOworfQorbm9JbmxpbmUoZik7CisKK2Z1bmN0aW9u
IG5leHQoKSB7CisgICAgaWYgKHgpIHsKKyAgICAgICAgeCA9IGZhbHNlOworICAgICAgICByZXR1
cm4ge3ZhbHVlOiAyLCBkb25lOiBmYWxzZSwgeDogMX07CisgICAgfQorICAgIHJldHVybiB7dmFs
dWU6IDEsIGRvbmU6IHRydWUgfTsKK30KK25vSW5saW5lKG5leHQpOworCit2YXIgaXRlcmF0b3Ig
PSBmdW5jdGlvbigpIHsKKyAgICBpZiAoeCkKKyAgICAgICAgcmV0dXJuIHt9OworICAgIHJldHVy
biB7IG5leHQgfTsKK307Citub0lubGluZShpdGVyYXRvcik7CisKK3ZhciBub2RlX2xpc3QgPSB7
CisgICAgW1N5bWJvbC5pdGVyYXRvcl06IGl0ZXJhdG9yLAorfQorZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTU7ICsraSkgeworICAgIGYobm9kZV9saXN0KTsKK30KK3ggPSB0cnVlOwordHJ5IHsKKyAg
ICBmKG5vZGVfbGlzdCk7Cit9IGNhdGNoIChlcnIpIHsKKyAgICBpZiAoZXJyLm1lc3NhZ2UgIT09
ICd1bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb24nKQorICAgICAgICB0aHJvdyBlcnI7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401963</attachid>
            <date>2020-06-15 18:03:50 -0700</date>
            <delta_ts>2020-06-15 18:26:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-213106-20200615180349.patch</filename>
            <type>text/plain</type>
            <size>10914</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OWRkNDRkMjhlOGViNGNjMWE4OWRlOTZhOTQxYjZlMmYyZDVjNmFlLi5lNGM0YjFmNzkxNTkzNWZk
MGY5MTNiYWIwYmVlMDdmNmI2ZGMxYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMC0wNi0xMiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBvcF9pdGVyYXRvcl9vcGVuIGdldE5leHQgY2hlY2twb2ludCBuZWVkcyB0
byBkZWNsYXJlIGl0IHVzZXMgbV9pdGVyYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMTA2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzQx
NjgzOD4KKworICAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorCisgICAgICAgIEN1
cnJlbnRseSwgd2UgaGF2ZSBubyB3YXkgb2Ygc3BlY2lmeWluZyB0aGF0IGEgY2hlY2twb2ludCB1
c2VzIGFuIG9wZXJhbmQgZGVmaW5lZCBhdCBhbiBlYXJsaWVyCisgICAgICAgIHBvaW50IGluIHRo
ZSBzYW1lIGJ5dGVjb2RlLCB3aGljaCBpcyB0aGUgY2FzZSBmb3Igb3BfaXRlcmF0b3Jfb3Blbjog
d2UgYXNzdW1lIHRoYXQgaXQgd2lsbCBoYXZlCisgICAgICAgIGFscmVhZHkgYWxsb2NhdGVkIHRo
ZSBpdGVyYXRvciBhbmQgc3RvcmVkIGl0IGluIG1faXRlcmF0b3IgYnkgdGhlIHRpbWUgd2UgZ2V0
IHRvIHRoZSBnZXROZXh0CisgICAgICAgIGNoZWNrcG9pbnQuIEluIG9yZGVyIHRvIHN1cHBvcnQg
dGhhdCwgd2UgY2hhbmdlIHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCB0byBsaXZlbmVzc0ZvckNo
ZWNrcG9pbnQKKyAgICAgICAgYW5kIGFsbG93IGl0IHRvIGFsc28gZGVjbGFyZSB0aGUgdXNlIG9m
IHRoZSBvcGVyYW5kcyBkZWZpbmVkIHdpdGhpbiB0aGUgYnl0ZWNvZGUuCisKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlNDOjpsaXZl
bmVzc0ZvckNoZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjp0bXBMaXZlbmVzc0ZvckNoZWNrcG9p
bnQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0Z1bGxCeXRlY29kZUxpdmVuZXNzLmg6CisgICAgICAg
ICogZGZnL0RGR0ZvckFsbEtpbGxzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Zm9yQWxsS2lsbGVk
T3BlcmFuZHMpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6OmlzTGl2ZUluQnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgor
CiAyMDIwLTA2LTEwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0pTQ10gSlNDYWxsYmFja09iamVjdDo6ZGVsZXRlUHJvcGVydHkgc2hvdWxkIHJlZGlyZWN0
IHRvIFBhcmVudDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4IGlmIHByb3BlcnR5TmFtZSBpcyBpbmRl
eApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCA4ZGNmMTNkZTdjNmFhZTMwNTBmN2ZkOTZkZWEy
ZDhkNjVlYTgxZmYwLi40MmE2MzVlYzhlM2U0ODcxMjQ5MzMzYWI4ODUwNmM1NzZmYjY3M2I5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTE3NSwxMSArMTc2LDE1IEBAIGNvbnN0ZXhwciBib29sIGVudW1WYWx1ZXNFcXVh
bEFzSW50ZWdyYWwoRW51bVR5cGUxIHYxLCBFbnVtVHlwZTIgdjIpCiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxJbnRUeXBlMj4odjEpID09IHN0YXRpY19jYXN0PEludFR5cGUyPih2Mik7CiB9
CiAKLUJpdG1hcDxtYXhOdW1DaGVja3BvaW50VG1wcz4gdG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50
KGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgp
CitWZWN0b3I8T3BlcmFuZCwgbWF4TnVtQ2hlY2twb2ludFRtcHM+IGxpdmVuZXNzRm9yQ2hlY2tw
b2ludChjb25zdCBDb2RlQmxvY2smIGNvZGVCbG9jaywgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4KQogewotICAgIEJpdG1hcDxtYXhOdW1DaGVja3BvaW50VG1wcz4gcmVzdWx0OworICAgIFZl
Y3RvcjxPcGVyYW5kLCBtYXhOdW1DaGVja3BvaW50VG1wcz4gcmVzdWx0OwogICAgIHVpbnQ4X3Qg
Y2hlY2twb2ludCA9IGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpOwogCisgICAgYXV0byBzY29w
ZUV4aXQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIEFTU0VSVChyZXN1bHQuc2l6ZSgp
IDw9IG1heE51bUNoZWNrcG9pbnRUbXBzKTsKKyAgICB9KTsKKwogICAgIGlmICghY2hlY2twb2lu
dCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIApAQCAtMTkwLDE0ICsxOTUsMTYgQEAgQml0bWFw
PG1heE51bUNoZWNrcG9pbnRUbXBzPiB0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQoY29uc3QgQ29k
ZUJsb2NrJiBjb2RlQmxvY2sKICAgICAgICAgc3RhdGljX2Fzc2VydChlbnVtVmFsdWVzRXF1YWxB
c0ludGVncmFsKE9wQ2FsbFZhcmFyZ3M6Om1ha2VDYWxsLCBPcFRhaWxDYWxsVmFyYXJnczo6bWFr
ZUNhbGwpICYmIGVudW1WYWx1ZXNFcXVhbEFzSW50ZWdyYWwoT3BDYWxsVmFyYXJnczo6YXJnQ291
bnRJbmNsdWRpbmdUaGlzLCBPcFRhaWxDYWxsVmFyYXJnczo6YXJnQ291bnRJbmNsdWRpbmdUaGlz
KSk7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoZW51bVZhbHVlc0VxdWFsQXNJbnRlZ3JhbChPcENh
bGxWYXJhcmdzOjptYWtlQ2FsbCwgT3BDb25zdHJ1Y3RWYXJhcmdzOjptYWtlQ2FsbCkgJiYgZW51
bVZhbHVlc0VxdWFsQXNJbnRlZ3JhbChPcENhbGxWYXJhcmdzOjphcmdDb3VudEluY2x1ZGluZ1Ro
aXMsIE9wQ29uc3RydWN0VmFyYXJnczo6YXJnQ291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAg
IGlmIChjaGVja3BvaW50ID09IE9wQ2FsbFZhcmFyZ3M6Om1ha2VDYWxsKQotICAgICAgICAgICAg
cmVzdWx0LnNldChPcENhbGxWYXJhcmdzOjphcmdDb3VudEluY2x1ZGluZ1RoaXMpOworICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChPcGVyYW5kOjp0bXAoT3BDYWxsVmFyYXJnczo6YXJnQ291bnRJ
bmNsdWRpbmdUaGlzKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGNhc2Ug
b3BfaXRlcmF0b3Jfb3BlbjogeworICAgICAgICBpZiAoY2hlY2twb2ludCA9PSBPcEl0ZXJhdG9y
T3Blbjo6Z2V0TmV4dCkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY29kZUJsb2NrLmluc3Ry
dWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgpLT5hczxPcEl0ZXJhdG9yT3Blbj4oKS5tX2l0ZXJh
dG9yKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgY2FzZSBvcF9pdGVyYXRv
cl9uZXh0OiB7Ci0gICAgICAgIHJlc3VsdC5zZXQoT3BJdGVyYXRvck5leHQ6Om5leHRSZXN1bHQp
OworICAgICAgICByZXN1bHQuYXBwZW5kKE9wZXJhbmQ6OnRtcChPcEl0ZXJhdG9yTmV4dDo6bmV4
dFJlc3VsdCkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5oCmluZGV4IGE4MDA4YjM1OGM3MTlhYzRkMDJiZTc0ZWQ1MzVjNzRiZGFm
MmM1YzYuLmJlNWVlMmZjZDNhNjRlNTYzYWVhMWYzZjIyMjc5MWU0NjhiYjYxMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmgKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICBCeXRlY29kZUdyYXBo
IG1fZ3JhcGg7CiB9OwogCi1CaXRtYXA8bWF4TnVtQ2hlY2twb2ludFRtcHM+IHRtcExpdmVuZXNz
Rm9yQ2hlY2twb2ludChjb25zdCBDb2RlQmxvY2smLCBCeXRlY29kZUluZGV4KTsKK1ZlY3RvcjxP
cGVyYW5kLCBtYXhOdW1DaGVja3BvaW50VG1wcz4gbGl2ZW5lc3NGb3JDaGVja3BvaW50KGNvbnN0
IENvZGVCbG9jayYsIEJ5dGVjb2RlSW5kZXgpOwogCiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNBbHdh
eXNMaXZlKGludCBvcGVyYW5kKTsKIGlubGluZSBib29sIG9wZXJhbmRUaGF0SXNOb3RBbHdheXNM
aXZlSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bGxCeXRlY29kZUxpdmVuZXNz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVsbEJ5dGVjb2RlTGl2ZW5lc3Mu
aAppbmRleCA0N2M2NTdjOGRmOTAzODNhZjY1ZWI1YzNiOGE4YjA1OTRkMGM0ZGE3Li43OTE0NTNm
M2ZkNzIzNDM2ZWUwZWQ1MTkwZjBiYzI3ZDdkYTIzMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaApAQCAtMzUsNyAr
MzUsNyBAQCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBDb2RlQmxvY2s7
CiAKIC8vIE5vdGU6IEZ1bGwgYnl0ZWNvZGUgbGl2ZW5lc3MgZG9lcyBub3QgdHJhY2sgYW55IGlu
Zm9ybWF0aW9uIGFib3V0IHRoZSBsaXZlbmVzcyBvZiB0ZW1wcy4KLS8vIElmIHlvdSB3YW50IHRt
cCBsaXZlbmVzcyBmb3IgYSBjaGVja3BvaW50IGFzayB0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQu
CisvLyBJZiB5b3Ugd2FudCB0bXAgbGl2ZW5lc3MgZm9yIGEgY2hlY2twb2ludCBhc2sgbGl2ZW5l
c3NGb3JDaGVja3BvaW50LgogY2xhc3MgRnVsbEJ5dGVjb2RlTGl2ZW5lc3MgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGb3JBbGxLaWxscy5oCmluZGV4IGQ5Yzk3NDI4ZmQ2YWU1ZWE1MDZkMDU3MjY3MzAyMGRkMWFm
ZjExNGQuLjgwY2Q3M2RlNjYzNTE2M2Y1MmNiNjhhZDk5YjJmNWI1ODhiZTFjNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKQEAgLTc5LDE1ICs3OSwxNyBA
QCB2b2lkIGZvckFsbEtpbGxlZE9wZXJhbmRzKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZUJlZm9y
ZSwgTm9kZSogbm9kZUFmdGVyLCBjb25zdAogICAgICAgICAgICAgQVNTRVJUKGJlZm9yZS5ieXRl
Y29kZUluZGV4KCkuY2hlY2twb2ludCgpICE9IGFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5jaGVja3Bv
aW50KCkpOwogICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShiZWZvcmUuYnl0ZWNvZGVJ
bmRleCgpLm9mZnNldCgpID09IGFmdGVyLmJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSB8fCBub2Rl
QWZ0ZXItPm9wKCkgPT0gRXhpdE9LIHx8IG5vZGVBZnRlci0+b3AoKSA9PSBJbnZhbGlkYXRpb25Q
b2ludCwgIldoZW4gdGhlIERGRyBkb2VzIGNvZGUgbW90aW9uIGl0IHNob3VsZCBjaGFuZ2UgdGhl
IGZvckV4aXQgb3JpZ2luIHRvIG1hdGNoIHRoZSBzdXJyb3VuZGluZyBieXRlY29kZXMuIik7CiAK
LSAgICAgICAgICAgIGF1dG8gbGl2ZUJlZm9yZSA9IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCgq
Y29kZUJsb2NrLCBiZWZvcmUuYnl0ZWNvZGVJbmRleCgpKTsKLSAgICAgICAgICAgIGF1dG8gbGl2
ZUFmdGVyID0gdG1wTGl2ZW5lc3NGb3JDaGVja3BvaW50KCpjb2RlQmxvY2ssIGFmdGVyLmJ5dGVj
b2RlSW5kZXgoKSk7Ci0gICAgICAgICAgICBsaXZlQWZ0ZXIuaW52ZXJ0KCk7Ci0gICAgICAgICAg
ICBsaXZlQmVmb3JlLmZpbHRlcihsaXZlQWZ0ZXIpOworICAgICAgICAgICAgYXV0byBjaGVja3Bv
aW50TGl2ZUJlZm9yZSA9IGxpdmVuZXNzRm9yQ2hlY2twb2ludCgqY29kZUJsb2NrLCBiZWZvcmUu
Ynl0ZWNvZGVJbmRleCgpKTsKKyAgICAgICAgICAgIGF1dG8gY2hlY2twb2ludExpdmVBZnRlciA9
IGxpdmVuZXNzRm9yQ2hlY2twb2ludCgqY29kZUJsb2NrLCBhZnRlci5ieXRlY29kZUluZGV4KCkp
OwogCi0gICAgICAgICAgICBsaXZlQmVmb3JlLmZvckVhY2hTZXRCaXQoWyZdIChzaXplX3QgdG1w
KSB7Ci0gICAgICAgICAgICAgICAgZnVuY3RvcihyZW1hcE9wZXJhbmQoYmVmb3JlSW5saW5lQ2Fs
bEZyYW1lLCBPcGVyYW5kOjp0bXAodG1wKSkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAvLyBObyBsb2NhbHMgY2FuIGRpZSBhdCBhIGNoZWNrcG9pbnQuCisgICAgICAgICAgICBGdWxs
Qnl0ZWNvZGVMaXZlbmVzcyYgZnVsbExpdmVuZXNzID0gZ3JhcGgubGl2ZW5lc3NGb3IoY29kZUJs
b2NrKTsKKyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVBZnRlciA9IGZ1bGxM
aXZlbmVzcy5nZXRMaXZlbmVzcyhhZnRlci5ieXRlY29kZUluZGV4KCksIExpdmVuZXNzQ2FsY3Vs
YXRpb25Qb2ludDo6QmVmb3JlVXNlKTsKKworICAgICAgICAgICAgZm9yIChPcGVyYW5kIG9wZXJh
bmQgOiBjaGVja3BvaW50TGl2ZUJlZm9yZSkgeworICAgICAgICAgICAgICAgIGlmIChjaGVja3Bv
aW50TGl2ZUFmdGVyLmNvbnRhaW5zKG9wZXJhbmQpIHx8ICghb3BlcmFuZC5pc1RtcCgpICYmIGxp
dmVBZnRlcltvcGVyYW5kLnZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpXSkpCisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGZ1bmN0b3IocmVtYXBPcGVyYW5k
KGJlZm9yZUlubGluZUNhbGxGcmFtZSwgb3BlcmFuZCkpOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAKaW5kZXggOGU4NDZjYmU5ZDRkMWM3ZTE2OWJjZDg2ZjdhNzUwNDRhOTFkOGY1Mi4uNTAz
NDEyMDFlYmQyMGYzNmJkMzY4MDM2OWUyOTM4ZmY3NDMyMzIxMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTExNTIsOCArMTE1Miw4IEBAIGJvb2wgR3JhcGg6Omlz
TGl2ZUluQnl0ZWNvZGUoT3BlcmFuZCBvcGVyYW5kLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiAg
ICAgICAgICAgICBpZiAoIWNvZGVCbG9jay0+bnVtVG1wcygpIHx8IG9wZXJhbmRJbmRleCA8IHRt
cE9mZnNldCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgYXV0byBi
aXRNYXAgPSB0bXBMaXZlbmVzc0ZvckNoZWNrcG9pbnQoKmNvZGVCbG9jaywgY29kZU9yaWdpblB0
ci0+Ynl0ZWNvZGVJbmRleCgpKTsKLSAgICAgICAgICAgIHJldHVybiBiaXRNYXAuZ2V0KG9wZXJh
bmRJbmRleCAtIHRtcE9mZnNldCk7CisgICAgICAgICAgICBhdXRvIGxpdmUgPSBsaXZlbmVzc0Zv
ckNoZWNrcG9pbnQoKmNvZGVCbG9jaywgY29kZU9yaWdpblB0ci0+Ynl0ZWNvZGVJbmRleCgpKTsK
KyAgICAgICAgICAgIHJldHVybiBsaXZlLmNvbnRhaW5zKG9wZXJhbmQpOwogICAgICAgICB9CiAK
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9IG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkg
LSBjb2RlT3JpZ2luUHRyLT5zdGFja09mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCmluZGV4IDg2MzYyMjdmMzk0ODMzNWRiM2Q4NDBlODFkM2ZhMGM1Y2JiYTdmOWYuLjUy
YjM3MTc0M2FkODZhMjhiYWQ2MmQxZWVhOWMwZGUxNDc4ODAwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgKQEAgLTkwNCwxMCArOTA0LDkgQEAgcHVibGljOgogCiAgICAgICAg
ICAgICBpZiAoY29kZU9yaWdpblB0ci0+Ynl0ZWNvZGVJbmRleCgpLmNoZWNrcG9pbnQoKSkgewog
ICAgICAgICAgICAgICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVRtcHMoKSk7Ci0gICAgICAgICAg
ICAgICAgYXV0byBsaXZlVG1wcyA9IHRtcExpdmVuZXNzRm9yQ2hlY2twb2ludCgqY29kZUJsb2Nr
LCBjb2RlT3JpZ2luUHRyLT5ieXRlY29kZUluZGV4KCkpOwotICAgICAgICAgICAgICAgIGxpdmVU
bXBzLmZvckVhY2hTZXRCaXQoWyZdIChzaXplX3QgdG1wKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGZ1bmN0b3IocmVtYXBPcGVyYW5kKGlubGluZUNhbGxGcmFtZSwgT3BlcmFuZDo6dG1wKHRtcCkp
KTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBhdXRvIGxpdmUgPSBsaXZl
bmVzc0ZvckNoZWNrcG9pbnQoKmNvZGVCbG9jaywgY29kZU9yaWdpblB0ci0+Ynl0ZWNvZGVJbmRl
eCgpKTsKKyAgICAgICAgICAgICAgICBmb3IgKE9wZXJhbmQgb3BlcmFuZCA6IGxpdmUpCisgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0b3IocmVtYXBPcGVyYW5kKGlubGluZUNhbGxGcmFtZSwgb3Bl
cmFuZCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWlu
bGluZUNhbGxGcmFtZSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYzBhNTEwNzkzZDZlMDAzMDdmNWM5MjFiNmQxZDhkNDIwNTg4MzFkZS4u
ZTBjMWEyMDZlNjlhN2IzMjEwOTFhNTQxYmFjN2IxMDY2MGEzNjU2NCAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAyMC0wNi0xMiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KKworICAgICAg
ICBCeXRlY29kZSBsaXZlbmVzcyBzaG91bGQgYmUgYXdhcmUgb2YgY2hlY2twb2ludHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzEwNgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjM0MTY4Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGgg
TWlsbGVyLgorCisgICAgICAgICogc3RyZXNzL2l0ZXJhdG9yLW9wZW4tY2hlY2twb2ludC1saXZl
bmVzcy5qczogQWRkZWQuCisgICAgICAgIChmKToKKyAgICAgICAgKG5leHQpOgorICAgICAgICAo
aXRlcmF0b3IpOgorICAgICAgICAoY2F0Y2gpOgorCiAyMDIwLTA2LTEwICBDYWl0bGluIFBvdHRl
ciAgPGNhaXRwQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gYWRkIHN0cmVzcyB0ZXN0IGZv
ciBvcF9nZXRfcHJpdmF0ZV9uYW1lCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pdGVyYXRv
ci1vcGVuLWNoZWNrcG9pbnQtbGl2ZW5lc3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9pdGVyYXRvci1v
cGVuLWNoZWNrcG9pbnQtbGl2ZW5lc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg1NDQyYzUwMzY5NWQ2MTcz
MGU5OThkYzJkMmVmMzU2NWZmYmQ1ZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2l0ZXJhdG9yLW9wZW4tY2hlY2twb2ludC1saXZlbmVzcy5qcwpAQCAtMCwwICsxLDM1IEBACits
ZXQgeCA9IGZhbHNlOworZnVuY3Rpb24gZih4KSB7CisgICAgcmV0dXJuIEFycmF5LmZyb20oeCk7
Cit9Citub0lubGluZShmKTsKKworZnVuY3Rpb24gbmV4dCgpIHsKKyAgICBpZiAoeCkgeworICAg
ICAgICB4ID0gZmFsc2U7CisgICAgICAgIHJldHVybiB7dmFsdWU6IDIsIGRvbmU6IGZhbHNlLCB4
OiAxfTsKKyAgICB9CisgICAgcmV0dXJuIHt2YWx1ZTogMSwgZG9uZTogdHJ1ZSB9OworfQorbm9J
bmxpbmUobmV4dCk7CisKK3ZhciBpdGVyYXRvciA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh4KQor
ICAgICAgICByZXR1cm4ge307CisgICAgcmV0dXJuIHsgbmV4dCB9OworfTsKK25vSW5saW5lKGl0
ZXJhdG9yKTsKKwordmFyIG5vZGVfbGlzdCA9IHsKKyAgICBbU3ltYm9sLml0ZXJhdG9yXTogaXRl
cmF0b3IsCit9Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgZihub2RlX2xp
c3QpOworfQoreCA9IHRydWU7Cit0cnkgeworICAgIGYobm9kZV9saXN0KTsKK30gY2F0Y2ggKGVy
cikgeworICAgIGlmIChlcnIubWVzc2FnZSAhPT0gJ3VuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlv
bicpCisgICAgICAgIHRocm93IGVycjsKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>