<?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>173677</bug_id>
          
          <creation_ts>2017-06-21 16:10:37 -0700</creation_ts>
          <short_desc>Switch VMTraps to use halt instructions rather than breakpoint instructions</short_desc>
          <delta_ts>2017-06-23 19:54:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>jfbastien</cc>
    
    <cc>joepeck</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>1321666</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-21 16:10:37 -0700</bug_when>
    <thetext>Swtich VMTraps to use halt instructions rather than breakpoint instructions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322049</commentid>
    <comment_count>1</comment_count>
      <attachid>313658</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-22 14:07:55 -0700</bug_when>
    <thetext>Created attachment 313658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322059</commentid>
    <comment_count>2</comment_count>
      <attachid>313658</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-06-22 14:28:20 -0700</bug_when>
    <thetext>Comment on attachment 313658
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        any exceptioning instruction we want. I went weth the halt instructions

&quot;weth&quot;

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        find a single instruction on ARM that produces a SIGSEGV.

Can you document that x86 F1 and D6 were also treated as breakpoints by LLDB?

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

On ARM64 all 0 and all 1 are guaranteed unallocated. They don&apos;t sigill?
Otherwise try one of the SYS instructions such as `AT S1E1R, X0` whose encoding is 0xd5087800. Address translation from user mode is definitely not something you&apos;re allowed to do :)

&gt; Source/JavaScriptCore/API/tests/ExecutionTimeLimitTest.cpp:125
&gt; +        { &quot;FTL&quot;,      300, &quot;--useConcurrentJIT=false --useLLInt=true --useJIT=true --useDFGJIT=true --useFTLJIT=true&quot; },

wai?

&gt; Source/JavaScriptCore/dfg/DFGJumpReplacement.cpp:46
&gt; +#if CPU(X86) || CPU(X86_64) || CPU(ARM64)

Can you just use ENABLE_SIGNAL_BASED_VM_TRAPS here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322062</commentid>
    <comment_count>3</comment_count>
      <attachid>313658</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-06-22 14:36:11 -0700</bug_when>
    <thetext>Comment on attachment 313658
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:15
&gt;&gt; +
&gt; 
&gt; On ARM64 all 0 and all 1 are guaranteed unallocated. They don&apos;t sigill?
&gt; Otherwise try one of the SYS instructions such as `AT S1E1R, X0` whose encoding is 0xd5087800. Address translation from user mode is definitely not something you&apos;re allowed to do :)

Oh sorry the goal was to segfault on ARM! Use `LDR SP, #0` which is a PC-relative load with offset zero. Since we do X-only that&apos;ll segfault. Encoding 0x1800001F.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322064</commentid>
    <comment_count>4</comment_count>
      <attachid>313658</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-06-22 14:36:40 -0700</bug_when>
    <thetext>Comment on attachment 313658
Patch

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

r=me with some a suggestion and typo fixes.

&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt; +        any exceptioning instruction we want. I went weth the halt instructions
&gt; 
&gt; &quot;weth&quot;

typo: /weth/with/

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        since the naming was consistant and partly because I couldn&apos;t find

typo: /consistant/consistent/

&gt; Source/JavaScriptCore/runtime/VMTraps.cpp:123
&gt; +    // ARM does not have any instruction guarenteed to segmentation fault.

typo: /guarenteed/guaranteed/.

Since this code needs to match what is being done at in other code not obviously seen locally in this function, I think it&apos;s worth adding a comment here saying:
tryInstallTrapBreakpoints() will install &quot;Halt&quot; instructions (via MacroAssembler::replaceWithHalt()) that will trigger SIGILL on ARM64. On x86 and x86_64, the &quot;Halt&quot; instruction will trigger SIGSEGV.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322067</commentid>
    <comment_count>5</comment_count>
      <attachid>313658</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-06-22 14:47:14 -0700</bug_when>
    <thetext>Comment on attachment 313658
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:15
&gt;&gt;&gt; +
&gt;&gt; 
&gt;&gt; On ARM64 all 0 and all 1 are guaranteed unallocated. They don&apos;t sigill?
&gt;&gt; Otherwise try one of the SYS instructions such as `AT S1E1R, X0` whose encoding is 0xd5087800. Address translation from user mode is definitely not something you&apos;re allowed to do :)
&gt; 
&gt; Oh sorry the goal was to segfault on ARM! Use `LDR SP, #0` which is a PC-relative load with offset zero. Since we do X-only that&apos;ll segfault. Encoding 0x1800001F.

I like this.  It&apos;ll make the code more consistent if we always use Segv.  Plus it doesn&apos;t interfere with the SigillCrashAnalyzer.

&gt;&gt; Source/JavaScriptCore/dfg/DFGJumpReplacement.cpp:46
&gt;&gt; +#if CPU(X86) || CPU(X86_64) || CPU(ARM64)
&gt; 
&gt; Can you just use ENABLE_SIGNAL_BASED_VM_TRAPS here?

I agree.  Please do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322317</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-06-23 09:35:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/32178892&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322318</commentid>
    <comment_count>7</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-06-23 09:37:10 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #5)
&gt; Comment on attachment 313658 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=313658&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:15
&gt; &gt;&gt;&gt; +
&gt; &gt;&gt; 
&gt; &gt;&gt; On ARM64 all 0 and all 1 are guaranteed unallocated. They don&apos;t sigill?
&gt; &gt;&gt; Otherwise try one of the SYS instructions such as `AT S1E1R, X0` whose encoding is 0xd5087800. Address translation from user mode is definitely not something you&apos;re allowed to do :)
&gt; &gt; 
&gt; &gt; Oh sorry the goal was to segfault on ARM! Use `LDR SP, #0` which is a PC-relative load with offset zero. Since we do X-only that&apos;ll segfault. Encoding 0x1800001F.
&gt; 
&gt; I like this.  It&apos;ll make the code more consistent if we always use Segv. 
&gt; Plus it doesn&apos;t interfere with the SigillCrashAnalyzer.

I talked to Keith on IRC yesterday and it sounds like there are a few issues with this. It can probably get resolved, but I&apos;m OK checking this in without the change for now.


&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGJumpReplacement.cpp:46
&gt; &gt;&gt; +#if CPU(X86) || CPU(X86_64) || CPU(ARM64)
&gt; &gt; 
&gt; &gt; Can you just use ENABLE_SIGNAL_BASED_VM_TRAPS here?
&gt; 
&gt; I agree.  Please do this.

This would still be good to do though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322324</commentid>
    <comment_count>8</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-06-23 10:02:50 -0700</bug_when>
    <thetext>Something else you can try:

1. Cause an alignment fault, but I think that&apos;ll be SIGBUS?
e.g. SP is always aligned in the ARM64 ABI and will fault when used and misaligned. Some accesses can do indexed write back... but the SP check occurs *before* the instruction (and it&apos;s aligned at that time, even with pre-index), so the fault would actually occur not on your instruction but on the next SP usage.

2. Try out BRK with other immediate. It&apos;s totally up to the kernel to decide what immediate means, I remember Jim a few years ago telling me about this... Maybe there&apos;s an encoding that&apos;ll cause what we want? It would be in the kernel source, or we can ask kernel folks (seems like a stretch for BRK to show up as segfault).

3. Branch to SP: 0xd61f43e0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322329</commentid>
    <comment_count>9</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-23 10:22:42 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #8)
&gt; Something else you can try:
&gt; 
&gt; 1. Cause an alignment fault, but I think that&apos;ll be SIGBUS?
&gt; e.g. SP is always aligned in the ARM64 ABI and will fault when used and
&gt; misaligned. Some accesses can do indexed write back... but the SP check
&gt; occurs *before* the instruction (and it&apos;s aligned at that time, even with
&gt; pre-index), so the fault would actually occur not on your instruction but on
&gt; the next SP usage.
&gt; 
&gt; 2. Try out BRK with other immediate. It&apos;s totally up to the kernel to decide
&gt; what immediate means, I remember Jim a few years ago telling me about
&gt; this... Maybe there&apos;s an encoding that&apos;ll cause what we want? It would be in
&gt; the kernel source, or we can ask kernel folks (seems like a stretch for BRK
&gt; to show up as segfault).
&gt; 
&gt; 3. Branch to SP: 0xd61f43e0.

Interesting! I&apos;ll try these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322341</commentid>
    <comment_count>10</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-06-23 10:54:16 -0700</bug_when>
    <thetext>Someone on the internet suggested: d50b7420        dc      zva, x0
That&apos;s a data cache maintenance instruction, but I thought it was system only?
Person says it&apos;s user-accessible: https://twitter.com/translatedcode/status/878304596497707008

Choice of x0 is weird though, we&apos;re not guaranteed that zeroing out x0&apos;s virtual address cache line will be invalid. However, we know that LR will be invalid (as long as we follow the ABI and have a code location in LR).

So I&apos;d try: 0xd50b743e</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322344</commentid>
    <comment_count>11</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-06-23 10:55:32 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #10)
&gt; Someone on the internet suggested: d50b7420        dc      zva, x0
&gt; That&apos;s a data cache maintenance instruction, but I thought it was system
&gt; only?
&gt; Person says it&apos;s user-accessible:
&gt; https://twitter.com/translatedcode/status/878304596497707008
&gt; 
&gt; Choice of x0 is weird though, we&apos;re not guaranteed that zeroing out x0&apos;s
&gt; virtual address cache line will be invalid. However, we know that LR will be
&gt; invalid (as long as we follow the ABI and have a code location in LR).
&gt; 
&gt; So I&apos;d try: 0xd50b743e

Oh the person said to do XZR instead, so 0xd50b743f. As long as that&apos;s not SP it&apos;ll be OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322353</commentid>
    <comment_count>12</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-06-23 11:10:30 -0700</bug_when>
    <thetext>OK so DC ZVA is totally accessible from user-mode! TIL.

It&apos;s encoded as follows:
op1	CRm	op2	&lt;dc_op&gt;
011	0100	001	ZVA

And CheckSystemAccess()&apos;s pseudocode does the following:

    // ...

    case op1 of
        when &apos;00x&apos;, &apos;010&apos;
            min_EL = EL1;
        when &apos;011&apos;
            min_EL = EL0; // &lt;---- This.
        when &apos;100&apos;
            min_EL = EL2;
        when &apos;101&apos;
            UnallocatedEncoding();
        when &apos;110&apos;
            min_EL = EL3;
        when &apos;111&apos;
            min_EL = EL1;
            need_secure = TRUE;
    if UInt(PSTATE.EL) &lt; UInt(min_EL) then
        UnallocatedEncoding();

    // ...

And X31 here is totally XZR because the manual doesn&apos;t say it&apos;s SP.

ARM&apos;s online docs say:

    The ARMv8-A architecture introduces a Data Cache Zero by
    Virtual Address (DC ZVA) instruction. This enables a block of
    64 bytes in memory, aligned to 64 bytes in size, to be set to
    zero. If the DC ZVA instruction misses in the cache, it
    clears main memory, without causing an L1 or L2 cache
    allocation.

And:

    The ability to preload the data cache with zero values using
    the DC ZVA instruction is new in ARMv8-A. Processors can
    operate significantly faster than external memory systems and
    it can sometimes take a long time to load a cache line from
    memory.

    Cache line zeroing behaves in a similar fashion to a
    prefetch, in that it is a way of hinting to the processor
    that certain addresses are likely to be used in the
    future. However, a zeroing operation can be much quicker as
    there is no need to wait for external memory accesses to
    complete. Instead of getting the actual data from memory read
    into the cache, you get cache lines filled with zeros. It
    enables hinting to the processor that the code completely
    overwrites the cache line contents, so there is no need for
    an initial read.

    Consider the case where you need a large temporary storage
    buffer or are initializing a new structure. You could have
    code simply start using the memory, or you could write code
    that prefetched it before using it. Both would use a lot of
    cycles and memory bandwidth in reading the initial contents
    to the cache. By using a cache zero option, you could
    potentially save this wasted bandwidth and execute the code
    faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322355</commentid>
    <comment_count>13</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-06-23 11:22:02 -0700</bug_when>
    <thetext>Yeah `dc zva, xzr` totally segfaults for me on iOS! So we know the kernel doesn&apos;t forbid its usage (which would sigill instead).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322453</commentid>
    <comment_count>14</comment_count>
      <attachid>313750</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-23 15:00:05 -0700</bug_when>
    <thetext>Created attachment 313750
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322455</commentid>
    <comment_count>15</comment_count>
      <attachid>313751</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-23 15:02:55 -0700</bug_when>
    <thetext>Created attachment 313751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322457</commentid>
    <comment_count>16</comment_count>
      <attachid>313750</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-06-23 15:04:49 -0700</bug_when>
    <thetext>Comment on attachment 313750
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +        which should trigger a segmentation fault.

Drop &quot;should&quot;. It triggers it :)

&gt; Source/JavaScriptCore/runtime/VMTraps.cpp:123
&gt; +    // ARM does not have any instruction guarenteed to segmentation fault.

ARM bit wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322460</commentid>
    <comment_count>17</comment_count>
      <attachid>313753</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-23 15:06:34 -0700</bug_when>
    <thetext>Created attachment 313753
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322470</commentid>
    <comment_count>18</comment_count>
      <attachid>313753</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-06-23 15:27:52 -0700</bug_when>
    <thetext>Comment on attachment 313753
Patch for landing

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

&gt; Source/WTF/wtf/threads/Signals.cpp:167
&gt; +    // If we wanted to distingish between SIGBUS and SIGSEGV for EXC_BAD_ACCESS on Darwin we could do:

typo: /distingish/distinguish/

&gt; Source/WTF/wtf/threads/Signals.cpp:345
&gt; -    struct sigaction&amp; oldAction = oldActions[static_cast&lt;size_t&gt;(signal)];
&gt; +    unsigned oldActionIndex = static_cast&lt;size_t&gt;(signal) + (sig == SIGBUS);
&gt; +    struct sigaction&amp; oldAction = oldActions[static_cast&lt;size_t&gt;(oldActionIndex)];

This is weird that you cast to a size_t only to be assigned to an unsigned.  And then you cast it to a size_t again when indexing into oldActions.  Let&apos;s just use size_t.

Also, this is kind of hacky to have Signal::BadAccess have an extra signal entry in oldActions, and to conveniently bump NumberOfSignals by 1 to make space for this.  This seems very fragile.  I think we should try to clean this up later and make it less hacky and fragile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322518</commentid>
    <comment_count>19</comment_count>
      <attachid>313762</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-23 17:32:46 -0700</bug_when>
    <thetext>Created attachment 313762
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322521</commentid>
    <comment_count>20</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-23 17:36:18 -0700</bug_when>
    <thetext>Attachment 313762 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/tests/ExecutionTimeLimitTest.cpp:122:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/API/tests/ExecutionTimeLimitTest.cpp:124:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322539</commentid>
    <comment_count>21</comment_count>
      <attachid>313765</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-23 19:08:44 -0700</bug_when>
    <thetext>Created attachment 313765
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322541</commentid>
    <comment_count>22</comment_count>
      <attachid>313766</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-23 19:11:27 -0700</bug_when>
    <thetext>Created attachment 313766
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322549</commentid>
    <comment_count>23</comment_count>
      <attachid>313766</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-23 19:54:06 -0700</bug_when>
    <thetext>Comment on attachment 313766
Patch for landing

Clearing flags on attachment: 313766

Committed r218782: &lt;http://trac.webkit.org/changeset/218782&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322550</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-23 19:54:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313658</attachid>
            <date>2017-06-22 14:07:55 -0700</date>
            <delta_ts>2017-06-23 15:00:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173677-20170622140755.patch</filename>
            <type>text/plain</type>
            <size>21877</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OTY4YjZkNDMxZGIzM2RkN2M0OGVhNDY3MDJiMDNlYTg5Nzk5NzUyLi4yMDI5M2ZjYzU1ODgzOTk3
NjQ5ZmM5Nzc2MGE5MDBkNTI5YjE5OWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NyBAQAorMjAxNy0wNi0yMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBTd2l0Y2ggVk1UcmFwcyB0byB1c2UgaGFsdCBpbnN0cnVjdGlvbnMg
cmF0aGVyIHRoYW4gYnJlYWtwb2ludCBpbnN0cnVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzY3NworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzIxNzg4OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNpbmcgdGhlIGJyZWFrcG9pbnQgaW5zdHJ1Y3Rpb24gZm9yIFZNVHJhcHMgY2F1c2Vk
IGlzc3VlcyB3aXRoIGxsZGIuCisgICAgICAgIFNpbmNlIHdlIG9ubHkgbmVlZCBzb21lIHdheSB0
byBzdG9wIGV4ZWN1dGlvbiB3ZSBjYW4sIGluIHRoZW9yeSwgdXNlCisgICAgICAgIGFueSBleGNl
cHRpb25pbmcgaW5zdHJ1Y3Rpb24gd2Ugd2FudC4gSSB3ZW50IHdldGggdGhlIGhhbHQgaW5zdHJ1
Y3Rpb25zCisgICAgICAgIHNpbmNlIHRoZSBuYW1pbmcgd2FzIGNvbnNpc3RhbnQgYW5kIHBhcnRs
eSBiZWNhdXNlIEkgY291bGRuJ3QgZmluZAorICAgICAgICBhIG9uZSBieXRlIGluc3RydWN0aW9u
IG9uIFg4NiB0aGF0IHByb2R1Y2VzIGEgU0lHSUxMIGFuZCBJIGNvdWxkbid0CisgICAgICAgIGZp
bmQgYSBzaW5nbGUgaW5zdHJ1Y3Rpb24gb24gQVJNIHRoYXQgcHJvZHVjZXMgYSBTSUdTRUdWLgor
CisgICAgICAgIEFsc28sIHVwZGF0ZSB0aGUgcGxhdGZvcm0gY29kZSB0byBvbmx5IHVzZSBzaWdu
YWxpbmcgVk1UcmFwcworICAgICAgICBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IGEgaGFsdCBp
bnN0cnVjdGlvbi4KKworICAgICAgICAqIGFzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oOgorICAg
ICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6cmVwbGFjZVdpdGhIYWx0KToKKyAgICAgICAgKEpT
Qzo6QVJNNjRBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQmtwdCk6IERlbGV0ZWQuCisgICAgICAgICog
YXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnJl
cGxhY2VXaXRoQmtwdCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL0FSTXY3QXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEJrcHQpOiBE
ZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Ok1JUFNBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQmtwdCk6IERlbGV0ZWQuCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNOjpyZXBsYWNlV2l0aEJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OnJlcGxhY2VXaXRoSGFsdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OnJlcGxhY2VXaXRoQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12
Nzo6c3RvcmVGZW5jZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJlcGxh
Y2VXaXRoQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyTUlQUy5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VX
aXRoQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpy
ZXBsYWNlV2l0aEhhbHQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
cmVwbGFjZVdpdGhCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhIbHQp
OgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSW50Myk6IERlbGV0ZWQu
CisgICAgICAgICogZGZnL0RGR0p1bXBSZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6SnVtcFJlcGxhY2VtZW50OjppbnN0YWxsVk1UcmFwQnJlYWtwb2ludCk6CisgICAgICAgICog
cnVudGltZS9WTVRyYXBzLmNwcDoKKyAgICAgICAgKEpTQzo6U2lnbmFsQ29udGV4dDo6U2lnbmFs
Q29udGV4dCk6CisgICAgICAgIChKU0M6Omluc3RhbGxTaWduYWxIYW5kbGVyKToKKyAgICAgICAg
KEpTQzo6U2lnbmFsQ29udGV4dDo6YWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9u
KTogRGVsZXRlZC4KKworICAgICAgICAqIEFQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0
LmNwcDoKKyAgICAgICAgKHRlc3RFeGVjdXRpb25UaW1lTGltaXQpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9BUk02NEFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6cmVw
bGFjZVdpdGhIYWx0KToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OnJlcGxhY2VXaXRo
QmtwdCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oOgorICAg
ICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoQmtwdCk6IERlbGV0ZWQuCisgICAg
ICAgICogYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTXY3QXNz
ZW1ibGVyOjpyZXBsYWNlV2l0aEJrcHQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9N
SVBTQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnJlcGxhY2VXaXRo
QmtwdCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpyZXBsYWNlV2l0aEJyZWFrcG9pbnQp
OiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnJlcGxhY2VXaXRoSGFsdCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnJlcGxhY2VXaXRoQnJlYWtwb2ludCk6IERl
bGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RvcmVGZW5jZSk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJlcGxhY2VXaXRoQnJlYWtwb2ludCk6IERlbGV0ZWQuCisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpyZXBsYWNlV2l0aEhhbHQpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cmVwbGFjZVdpdGhCcmVha3BvaW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhIbHQpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6
OnJlcGxhY2VXaXRoSW50Myk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0p1bXBSZXBsYWNl
bWVudC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SnVtcFJlcGxhY2VtZW50OjppbnN0YWxsVk1U
cmFwQnJlYWtwb2ludCk6CisgICAgICAgICogcnVudGltZS9WTVRyYXBzLmNwcDoKKyAgICAgICAg
KEpTQzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6Omluc3Rh
bGxTaWduYWxIYW5kbGVyKToKKyAgICAgICAgKEpTQzo6U2lnbmFsQ29udGV4dDo6YWRqdXN0UENU
b1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKTogRGVsZXRlZC4KKwogMjAxNy0wNi0yMCAgS2Vp
dGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbGVhayBv
ZiBNb2R1bGVJbmZvcm1hdGlvbnMgaW4gQkJRUGxhbiBjb25zdHJ1Y3RvcnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE5NmJj
YjdjNzBhZmY1NzAzODM2YTAzMGZlOWY0ZWZjYWYxMjY2MzUuLjZiM2Y0NTA0YWViOTQxY2Y5ZDQ4
MjA1ZjE1ZDViMWVhZjljMGIxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMDYtMjIgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIFZN
VHJhcHMgdG8gdXNlIGhhbHQgaW5zdHJ1Y3Rpb25zIHJhdGhlciB0aGFuIGJyZWFrcG9pbnQgaW5z
dHJ1Y3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzM2NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMTc4ODkyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgVHJhcCBzaWdu
YWwgaGFuZGxlciBjb2RlIHNpbmNlIGl0IHBsYXlzIGJhZGx5IHdpdGggbGxkYi4KKyAgICAgICAg
QWxzbywgdXBkYXRlIHRoZSBwbGF0Zm9ybSBjb2RlIHRvIG9ubHkgdXNlIHNpZ25hbGluZyBWTVRy
YXBzCisgICAgICAgIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgYSBoYWx0IGluc3RydWN0aW9u
LgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL3RocmVhZHMvU2ln
bmFscy5jcHA6CisgICAgICAgIChXVEY6OmZyb21NYWNoRXhjZXB0aW9uKToKKyAgICAgICAgKFdU
Rjo6dG9NYWNoTWFzayk6CisgICAgICAgICogd3RmL3RocmVhZHMvU2lnbmFscy5oOgorICAgICAg
ICAoV1RGOjp0b1N5c3RlbVNpZ25hbCk6CisgICAgICAgIChXVEY6OmZyb21TeXN0ZW1TaWduYWwp
OgorCiAyMDE3LTA2LTIwICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4K
IAogICAgICAgICBSZW1vdmUgZXhjZXNzaXZlIGluY2x1ZGUgZGlyZWN0aXZlcyBmcm9tIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1l
TGltaXRUZXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9u
VGltZUxpbWl0VGVzdC5jcHAKaW5kZXggYTNjMzlhNzYxYzI0NWNkZDU5NTgzNWI4MzhhZDA1ZmE3
N2YwMGZjZS4uOWRjNGQ2NzFhNDgyMTU5ZGIyOWY2ZjE0YzFmM2VkYmZiNTJjYjE0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRp
bWVMaW1pdFRlc3QuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1l
TGltaXQoKQogICAgICAgICB7ICJMTElOVCIsICAgIDAsICAgIi0tdXNlQ29uY3VycmVudEpJVD1m
YWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9ZmFsc2UiIH0sCiAgICAgICAgIHsgIkJhc2Vs
aW5lIiwgMCwgICAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNlTExJbnQ9dHJ1ZSAtLXVz
ZUpJVD10cnVlIC0tdXNlREZHSklUPWZhbHNlIiB9LAogICAgICAgICB7ICJERkciLCAgICAgIDAs
ICAgIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9dHJ1
ZSAtLXVzZURGR0pJVD10cnVlIC0tdXNlRlRMSklUPWZhbHNlIiB9LAotICAgICAgICB7ICJGVEwi
LCAgICAgIDIwMCwgIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11
c2VKSVQ9dHJ1ZSAtLXVzZURGR0pJVD10cnVlIC0tdXNlRlRMSklUPXRydWUiIH0sCisgICAgICAg
IHsgIkZUTCIsICAgICAgMzAwLCAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNlTExJbnQ9
dHJ1ZSAtLXVzZUpJVD10cnVlIC0tdXNlREZHSklUPXRydWUgLS11c2VGVExKSVQ9dHJ1ZSIgfSwK
ICAgICB9OwogICAgIAogICAgIGJvb2wgZmFpbGVkID0gZmFsc2U7CkBAIC0xNTEsNyArMTUxLDM5
IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgSlNPYmplY3RSZWYgY3Vy
cmVudENQVVRpbWVGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNv
bnRleHQsIGN1cnJlbnRDUFVUaW1lU3RyLCBjdXJyZW50Q1BVVGltZUFzSlNGdW5jdGlvbkNhbGxi
YWNrKTsKICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3Qs
IGN1cnJlbnRDUFVUaW1lU3RyLCBjdXJyZW50Q1BVVGltZUZ1bmN0aW9uLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZU5vbmUsIG51bGxwdHIpOwogICAgICAgICBKU1N0cmluZ1JlbGVhc2UoY3VycmVudENQ
VVRpbWVTdHIpOwotICAgICAgICAKKworICAgICAgICAvKiBUZXN0IHNjcmlwdCBvbiBhbm90aGVy
IHRocmVhZDogKi8KKyAgICAgICAgdGltZUxpbWl0ID0gKDEwMCArIHRpZXJBZGp1c3RtZW50TWls
bGlzKSAvIDEwMDAuMDsKKyAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGlt
aXQoY29udGV4dEdyb3VwLCB0aW1lTGltaXQsIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrLCAwKTsK
KyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgdGltZUFmdGVyV2F0Y2hkb2dTaG91bGRI
YXZlRmlyZWQgPSAzMDAgKyB0aWVyQWRqdXN0bWVudE1pbGxpczsKKworICAgICAgICAgICAgSlNT
dHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImZ1bmN0aW9u
IGZvbygpIHsgd2hpbGUgKHRydWUpIHsgfSB9IGZvbygpOyIpOworICAgICAgICAgICAgZXhjZXB0
aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEpTVmFsdWVSZWYqIGV4biA9ICZleGNlcHRpb247
CisgICAgICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwor
ICAgICAgICAgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiUm9ndWUgdGhyZWFkIiwg
Wz1dIHsKKyAgICAgICAgICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdCwg
bnVsbHB0ciwgbnVsbHB0ciwgMSwgZXhuKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBzbGVlcChTZWNvbmRzKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkIC8gMTAwMC4w
KSk7CisKKyAgICAgICAgICAgIGlmIChzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCkK
KyAgICAgICAgICAgICAgICBwcmludGYoIlBBU1M6ICVzIHNjcmlwdCB0aW1lZCBvdXQgYXMgZXhw
ZWN0ZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgc2NyaXB0IHRpbWVvdXQgY2FsbGJhY2sgd2FzIG5v
dCBjYWxsZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgICAgICBleGl0KDEp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbikgeworICAgICAg
ICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3
YXMgbm90IHRocm93bi5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAgIGV4
aXQoMSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRocmVhZC0+d2FpdEZvckNvbXBs
ZXRpb24oKTsKKyAgICAgICAgICAgIHRlc3RSZXNldEFmdGVyVGltZW91dChmYWlsZWQpOworICAg
ICAgICB9CisKICAgICAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91dDogKi8KICAgICAgICAgdGlt
ZUxpbWl0ID0gKDEwMCArIHRpZXJBZGp1c3RtZW50TWlsbGlzKSAvIDEwMDAuMDsKICAgICAgICAg
SlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdyb3VwLCB0aW1lTGlt
aXQsIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAppbmRleCA2YWQ0NmRlNzkxMGEzNjM2MDM0
YmMzNTQ2NjVmYTFmNDFkYWE1YzY5Li5mMzZkODhkMDRiNGMzZmIwNjhmMTgzYTc1M2ZhNzk5NjVl
MjYxNjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0
QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFz
c2VtYmxlci5oCkBAIC0yNjAyLDkgKzI2MDIsOSBAQCBwdWJsaWM6CiAgICAgICAgIGxpbmtQb2lu
dGVyKGFkZHJlc3NPZihjb2RlLCB3aGVyZSksIHZhbHVlUHRyKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCByZXBsYWNlV2l0aEJrcHQodm9pZCogd2hlcmUpCisgICAgc3RhdGljIHZvaWQgcmVw
bGFjZVdpdGhIYWx0KHZvaWQqIHdoZXJlKQogICAgIHsKLSAgICAgICAgaW50IGluc24gPSBleGNl
cG5HZW5lcmF0aW9uKEV4Y2Vwbk9wX0JSRUFLUE9JTlQsIDAsIDApOworICAgICAgICBpbnQgaW5z
biA9IGV4Y2VwbkdlbmVyYXRpb24oRXhjZXBuT3BfSEFMVCwgMCwgMCk7CiAgICAgICAgIHBlcmZv
cm1KSVRNZW1jcHkod2hlcmUsICZpbnNuLCBzaXplb2YoaW50KSk7CiAgICAgICAgIGNhY2hlRmx1
c2god2hlcmUsIHNpemVvZihpbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaAppbmRleCA5MWNlMGIyOWRhMmRlNGU4YTdhYjg2OTJl
YjJhODg3YjkxOWJhOGE5Li40OGUxMTAxNzI0NGRkY2Y3ZmIxMjcyMGE4YjFkODU5YmI3ZWFlOWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgK
QEAgLTk5NSwxMyArOTk1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oZ2V0QWJzb2x1dGVKdW1wQWRkcmVzcyhmcm9tKSkpKTsKICAgICAgICAgfQogCi0gICAgICAg
IHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQmtwdCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nh
c3Q8QVJNV29yZCo+KGluc3RydWN0aW9uU3RhcnQpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25b
MF0gPSBCS1BUOwotICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwgc2l6ZW9mKEFS
TVdvcmQpKTsKLSAgICAgICAgfQotCiAgICAgICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVt
cCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKICAgICAgICAgewogICAgICAgICAg
ICAgQVJNV29yZCogaW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9jYXN0PEFSTVdvcmQqPihpbnN0
cnVjdGlvblN0YXJ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNdjdBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJN
djdBc3NlbWJsZXIuaAppbmRleCA2Y2Q0MDI1YjEyMTVlOGFkZjg0YzM3YjM5NWMwZDdiZjBiNjU1
N2Q0Li5lYjYxNTA5ZTE0OGEzY2Y2MmIzZTVkZGFiOGRlZmU5NmE2NGQ5Nzc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCkBAIC0yMzI4
LDE2ICsyMzI4LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVhZEludDMyKHdoZXJlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhCa3B0KHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCi0gICAgewotICAgICAgICBBU1NFUlQo
IShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvblN0YXJ0KSAmIDEpKTsKLQotICAg
ICAgICB1aW50MTZfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0
aW9uU3RhcnQpOwotICAgICAgICB1aW50MTZfdCBpbnN0cnVjdGlvbnMgPSBPUF9CS1BUOwotICAg
ICAgICBwZXJmb3JtSklUTWVtY3B5KHB0ciwgJmluc3RydWN0aW9ucywgc2l6ZW9mKHVpbnQxNl90
KSk7Ci0gICAgICAgIGNhY2hlRmx1c2gocHRyLCBzaXplb2YodWludDE2X3QpKTsKLSAgICB9Ci0K
ICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwg
dm9pZCogdG8pCiAgICAgewogICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihpbnN0cnVjdGlvblN0YXJ0KSAmIDEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKaW5kZXggNWZhMGZhMDA4ZmNlNzQwZGVlOTNkYjhiN2Rk
NmIxN2QyMTExMTE5ZC4uMjcwY2NlMzRlZGJiODU2NDAwZGQwOTIxOTQxMTJhNjEwZWQyZmRjZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgK
QEAgLTk0MSwxNSArOTQxLDYgQEAgcHVibGljOgogICAgICAgICBjYWNoZUZsdXNoKGluc24sIGNv
ZGVTaXplKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEJrcHQodm9pZCog
aW5zdHJ1Y3Rpb25TdGFydCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMykpOwotICAgICAgICBNSVBTV29yZCogaW5z
biA9IHJlaW50ZXJwcmV0X2Nhc3Q8TUlQU1dvcmQqPihyZWludGVycHJldF9jYXN0PGludHB0cl90
PihpbnN0cnVjdGlvblN0YXJ0KSk7Ci0gICAgICAgIGludCB2YWx1ZSA9IDUxMjsgLyogQlJLX0JV
RyAqLwotICAgICAgICBpbnNuWzBdID0gKDB4MDAwMDAwMGQgfCAoKHZhbHVlICYgMHgzZmYpIDw8
IE9QX1NIX0NPREUpKTsKLSAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvblN0YXJ0LCBzaXpl
b2YoTUlQU1dvcmQpKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAo
dm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCiAgICAgewogICAgICAgICBBU1NFUlQo
IShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvblN0YXJ0KSAmIDMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApp
bmRleCA2ZjVmMzdlNTFiOTIxMzA1N2MyMmVkZTFjZDQ4M2VjMWMxM2RjYjYwLi4yYjgwZDI0N2Y5
N2E1MDNkNGQ1ZjQ1Y2Q5ODUyZmMyNDI5MjFlYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCkBAIC0xNDk5LDExICsxNDk5
LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKCopKCk+KEFSTUFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRp
b24oKSkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEJyZWFrcG9pbnQo
Q29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKLSAgICB7Ci0gICAgICAgIEFSTUFz
c2VtYmxlcjo6cmVwbGFjZVdpdGhCa3B0KGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJl
c3MoKSk7Ci0gICAgfQotCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2Nh
dGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9u
KQogICAgIHsKICAgICAgICAgQVJNQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rp
b25TdGFydC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24uZGF0YUxvY2F0aW9uKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAppbmRleCBmZDQ5NGEwNTA5NjMzN2ExNTU3MjM1MjA3ZTU0OGQ2ZjJlOTQ4MDZhLi5jNGFj
MjkzM2YxYzQ4Y2JhMzRjNTdjZmU1MzkxZjhlNDc3ZTdhOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMzcx
Myw5ICszNzEzLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKCopKCk+KEFSTTY0QXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxs
LmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
QnJlYWtwb2ludChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHN0YXRp
YyB2b2lkIHJlcGxhY2VXaXRoSGFsdChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0
KQogICAgIHsKLSAgICAgICAgQVJNNjRBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQmtwdChpbnN0cnVj
dGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICBBUk02NEFzc2VtYmxlcjo6
cmVwbGFjZVdpdGhIYWx0KGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAg
ICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVs
IGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcu
aAppbmRleCA1NDMzNWEyOWJjOGE0Y2M1ZWQ2YTMxNjk3MjA2NzliZDBmYTljN2RkLi5mM2ZlNjFk
YmUzNTZhZjMzZWExOWZiZDk5YzVhZjhkYTczYTE2NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaApAQCAtMTM1NCwx
MSArMTM1NCw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmRtYklTSFNU
KCk7CiAgICAgfQotICAgIAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQnJlYWtwb2ludChD
b2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0KQotICAgIHsKLSAgICAgICAgQVJNdjdB
c3NlbWJsZXI6OnJlcGxhY2VXaXRoQmtwdChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigp
KTsKLSAgICB9CiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9u
TGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJNSVBTLmgKaW5kZXggZmY0MDA5MDFjMjQ1MGQ0ZGM5OWM0YjYxMmVmNTQ1MDg0NDUwY2E5
MS4uZmEwNWJlMTc5ZWYxMTk2N2NkODYwODZiMWM0MGNmMjg2OWViYzA0YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBA
IC0zMDcyLDExICszMDcyLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KE1JUFNBc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0
KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhCcmVha3BvaW50KENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQpCi0gICAg
ewotICAgICAgICBNSVBTQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEJrcHQoaW5zdHJ1Y3Rpb25TdGFy
dC5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9pZCByZXBsYWNl
V2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9u
TGFiZWwgZGVzdGluYXRpb24pCiAgICAgewogICAgICAgICBNSVBTQXNzZW1ibGVyOjpyZXBsYWNl
V2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24uZGF0
YUxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCmluZGV4IDMyZGE0NTBiNDNkOGY3OGEwNTQ5
ZGIyODVkYjEyYzJkNDM4OTI3ZGQuLmQwNDkyMWU4MTNmZmFhZWVjZTAxNTA5YjA3NzU2MzA2OWMz
MDRlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTM4MDMsOSArMzgwMyw5IEBAIHB1YmxpYzoK
ICAgICB9CiAjZW5kaWYKIAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQnJlYWtwb2ludChD
b2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHN0YXRpYyB2b2lkIHJlcGxh
Y2VXaXRoSGFsdChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0KQogICAgIHsKLSAg
ICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEludDMoaW5zdHJ1Y3Rpb25TdGFydC5leGVj
dXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEhsdChp
bnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgIH0KIAogICAgIHN0YXRp
YyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0
LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCmluZGV4IGFkZGM3ZDgxMTg0MGVjYzU1NDA1YmY0
NzFjNmZiNzIzZWFhZGZiNzQuLjViNjRmMDJhZjY2NWMwNGQwYWUyZmM0NzQzYTE2Y2NkMDU1YWUy
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aApAQCAtMzYzNywxMCArMzYzNywxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqKj4od2hlcmUpWy0xXTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aEludDModm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aEhsdCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQogICAgIHsKICAgICAgICAgdWlu
dDhfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7
Ci0gICAgICAgIHB0clswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KE9QX0lOVDMpOworICAgICAg
ICBwdHJbMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihPUF9ITFQpOwogICAgIH0KIAogICAgIHN0
YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0
bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSnVtcFJlcGxhY2Vt
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSnVtcFJlcGxhY2VtZW50LmNw
cAppbmRleCAyNDdiZGE5YjAyNmUwYTk3ZDZlOWJhZjUwNmZiZDQwM2MwOTI4NTIzLi4yZWNhMmNh
OTMzMTFmNWEwM2M4Y2VkZTNmYzBjZGQwNWI3MmE3MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0p1bXBSZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKdW1wUmVwbGFjZW1lbnQuY3BwCkBAIC00Myw3ICs0MywxMSBAQCB2
b2lkIEp1bXBSZXBsYWNlbWVudDo6ZmlyZSgpCiAKIHZvaWQgSnVtcFJlcGxhY2VtZW50OjppbnN0
YWxsVk1UcmFwQnJlYWtwb2ludCgpCiB7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRo
QnJlYWtwb2ludChtX3NvdXJjZSk7CisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BV
KEFSTTY0KQorICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEhhbHQobV9zb3VyY2UpOwor
I2Vsc2UKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyNlbmRpZgogfQogCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTVRyYXBzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJh
cHMuY3BwCmluZGV4IDUxZjI4ZDNlOWNkNzFmZjE0MjZjZDhmOGI4OWMyMTI3ODYxNjY4NmYuLmQ2
YzVhOGRlZmFiM2MwNmZiZTU4YTkzNjRhZTg4MWE1MmE1ODAxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCkBAIC01OSwxNyArNTksNiBAQCBzdHJ1Y3QgU2ln
bmFsQ29udGV4dCB7CiAgICAgICAgICwgc3RhY2tQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpzdGFj
a1BvaW50ZXIocmVnaXN0ZXJzKSkKICAgICAgICAgLCBmcmFtZVBvaW50ZXIoTWFjaGluZUNvbnRl
eHQ6OmZyYW1lUG9pbnRlcihyZWdpc3RlcnMpKQogICAgIHsKLSNpZiBDUFUoWDg2XzY0KSB8fCBD
UFUoWDg2KQotICAgICAgICAvLyBPbiBYODZfNjQsIFNJR1RSQVAgcmVwb3J0cyB0aGUgYWRkcmVz
cyBhZnRlciB0aGUgdHJhcHBpbmcgUEMuIFNvLCBkZWMgYnkgMS4KLSAgICAgICAgdHJhcFBDID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odHJhcFBDKSAtIDE7Ci0jZW5kaWYKLSAgICB9Ci0K
LSAgICB2b2lkIGFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlvbigpCi0gICAgewot
I2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCi0gICAgICAgIE1hY2hpbmVDb250ZXh0OjppbnN0
cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJzKSA9IHRyYXBQQzsKLSNlbmRpZgogICAgIH0KIAogICAg
IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnM7CkBAIC0xMzAsNyArMTE5LDEwIEBAIHN0YXRp
YyBFeHBlY3RlZDxWTUFuZFN0YWNrQm91bmRzLCBWTVRyYXBzOjpFcnJvcj4gZmluZEFjdGl2ZVZN
QW5kU3RhY2tCb3VuZHMoU2lnCiAKIHN0YXRpYyB2b2lkIGluc3RhbGxTaWduYWxIYW5kbGVyKCkK
IHsKLSAgICBpbnN0YWxsU2lnbmFsSGFuZGxlcihTaWduYWw6OlRyYXAsIFtdIChTaWduYWwsIFNp
Z0luZm8mLCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSAtPiBTaWduYWxBY3Rpb24gewor
ICAgIC8vIFg4NiBkb2Vzbid0IGhhdmUgYW55IGlsbGVnYWwgb25lIGJ5dGUgaW5zdHJ1Y3Rpb25z
IHRoYXQgcHJvZHVjZSBhIFNJR0lMTCBhbmQsIEFGQUlDVCwKKyAgICAvLyBBUk0gZG9lcyBub3Qg
aGF2ZSBhbnkgaW5zdHJ1Y3Rpb24gZ3VhcmVudGVlZCB0byBzZWdtZW50YXRpb24gZmF1bHQuCisg
ICAgU2lnbmFsIHRyYXBTaWduYWwgPSBpc0FSTTY0KCkgPyBTaWduYWw6OklsbCA6IFNpZ25hbDo6
U2VnVjsKKyAgICBpbnN0YWxsU2lnbmFsSGFuZGxlcih0cmFwU2lnbmFsLCBbXSAoU2lnbmFsLCBT
aWdJbmZvJiwgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykgLT4gU2lnbmFsQWN0aW9uIHsK
ICAgICAgICAgU2lnbmFsQ29udGV4dCBjb250ZXh0KHJlZ2lzdGVycyk7CiAKICAgICAgICAgaWYg
KCFpc0pJVFBDKGNvbnRleHQudHJhcFBDKSkKQEAgLTI5NywxMCArMjg5LDYgQEAgYXV0byBWTVRy
YXBzOjp0cnlKZXR0aXNvbkNvZGVCbG9ja3NPblN0YWNrKFNpZ25hbENvbnRleHQmIGNvbnRleHQp
IC0+IEV4cGVjdGVkPGIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaW52YWxpZGF0ZUNv
ZGVCbG9ja3NPblN0YWNrKGNvZGVCbG9ja1NldExvY2tlciwgdG9wQ2FsbEZyYW1lKTsKLQotICAg
IC8vIFJlLXJ1biB0aGUgdHJhcHBpbmcgaW5zdHJ1Y3Rpb24gbm93IHRoYXQgd2UndmUgcGF0Y2hl
ZCBpdCB3aXRoIHRoZSBpbnZhbGlkYXRpb24KLSAgICAvLyBPU1IgZXhpdCBvZmYtcmFtcC4KLSAg
ICBjb250ZXh0LmFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlvbigpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA1MDA0MDc3YTU2YTJmMmFlMzUwN2M1NGRm
NWU4MjgwY2VhYjgxMDAzLi44N2JiM2JiNDNmMzgwODlmNzQ1Y2NmYmY5MmE0ZTE2YTZjYWM2YTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKQEAgLTk3NCw3ICs5NzQsNyBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lm
IEVOQUJMRShKSVQpICYmIEhBVkUoTUFDSElORV9DT05URVhUKQorI2lmIEVOQUJMRShKSVQpICYm
IEhBVkUoTUFDSElORV9DT05URVhUKSAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BV
KEFSTTY0KSkKICNkZWZpbmUgRU5BQkxFX1NJR05BTF9CQVNFRF9WTV9UUkFQUyAxCiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKaW5kZXggZjAxZTM5MTEzYjBjNjIxOTBiZGJl
ZjEzZWFiYTIyYTBlMTQ4OWJjMi4uN2MxYzBiMzc2ZmQzMmMyYTIxOWY3MmJlZGEwNGZhZDQyOWJk
OTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCkBAIC0xMTksNyArMTE5LDYgQEAg
c3RhdGljIFNpZ25hbCBmcm9tTWFjaEV4Y2VwdGlvbihleGNlcHRpb25fdHlwZV90IHR5cGUpCiAg
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBFWENfQkFEX0FDQ0VTUzogcmV0dXJuIFNpZ25h
bDo6U2VnVjsKICAgICBjYXNlIEVYQ19CQURfSU5TVFJVQ1RJT046IHJldHVybiBTaWduYWw6Okls
bDsKLSAgICBjYXNlIEVYQ19CUkVBS1BPSU5UOiByZXR1cm4gU2lnbmFsOjpUcmFwOwogICAgIGRl
ZmF1bHQ6IGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU2lnbmFsOjpVbmtub3duOwpAQCAtMTMw
LDcgKzEyOSw2IEBAIHN0YXRpYyBleGNlcHRpb25fbWFza190IHRvTWFjaE1hc2soU2lnbmFsIHNp
Z25hbCkKICAgICBzd2l0Y2ggKHNpZ25hbCkgewogICAgIGNhc2UgU2lnbmFsOjpTZWdWOiByZXR1
cm4gRVhDX01BU0tfQkFEX0FDQ0VTUzsKICAgICBjYXNlIFNpZ25hbDo6SWxsOiByZXR1cm4gRVhD
X01BU0tfQkFEX0lOU1RSVUNUSU9OOwotICAgIGNhc2UgU2lnbmFsOjpUcmFwOiByZXR1cm4gRVhD
X01BU0tfQlJFQUtQT0lOVDsKICAgICBkZWZhdWx0OiBicmVhazsKICAgICB9CiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RocmVh
ZHMvU2lnbmFscy5oIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmgKaW5kZXggMjU3
NmZhZDVhMDA0ODMzMjA4YzViYzI1MGU1NDcwZDM3OGY3NTJiNC4uYmMxNTc0OGNiY2Y0NmE0ODU1
MGZkMjU1MmUwMGViYmFkNzlmNDdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFk
cy9TaWduYWxzLmgKKysrIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmgKQEAgLTQx
LDcgKzQxLDYgQEAgZW51bSBjbGFzcyBTaWduYWwgewogCiAgICAgLy8gVGhlc2Ugc2lnbmFscyB3
aWxsIG9ubHkgY2hhaW4gaWYgd2UgZG9uJ3QgaGF2ZSBhIGhhbmRsZXIgdGhhdCBjYW4gcHJvY2Vz
cyB0aGVtLiBJZiB0aGVyZSBpcyBub3RoaW5nCiAgICAgLy8gdG8gY2hhaW4gdG8gd2UgcmVzdG9y
ZSB0aGUgZGVmYXVsdCBoYW5kbGVyIGFuZCBjcmFzaC4KLSAgICBUcmFwLAogICAgIElsbCwKICAg
ICBTZWdWLAogICAgIEJ1cywKQEAgLTU2LDcgKzU1LDYgQEAgaW5saW5lIGludCB0b1N5c3RlbVNp
Z25hbChTaWduYWwgc2lnbmFsKQogICAgIGNhc2UgU2lnbmFsOjpCdXM6IHJldHVybiBTSUdCVVM7
CiAgICAgY2FzZSBTaWduYWw6OklsbDogcmV0dXJuIFNJR0lMTDsKICAgICBjYXNlIFNpZ25hbDo6
VXNyOiByZXR1cm4gU0lHVVNSMjsKLSAgICBjYXNlIFNpZ25hbDo6VHJhcDogcmV0dXJuIFNJR1RS
QVA7CiAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC02OSw3ICs2Nyw2IEBAIGlubGluZSBTaWduYWwgZnJvbVN5c3RlbVNpZ25h
bChpbnQgc2lnbmFsKQogICAgIGNhc2UgU0lHQlVTOiByZXR1cm4gU2lnbmFsOjpCdXM7CiAgICAg
Y2FzZSBTSUdJTEw6IHJldHVybiBTaWduYWw6OklsbDsKICAgICBjYXNlIFNJR1VTUjI6IHJldHVy
biBTaWduYWw6OlVzcjsKLSAgICBjYXNlIFNJR1RSQVA6IHJldHVybiBTaWduYWw6OlRyYXA7CiAg
ICAgZGVmYXVsdDogcmV0dXJuIFNpZ25hbDo6VW5rbm93bjsKICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313750</attachid>
            <date>2017-06-23 15:00:05 -0700</date>
            <delta_ts>2017-06-23 15:04:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173677-20170623150004.patch</filename>
            <type>text/plain</type>
            <size>28107</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OTY4YjZkNDMxZGIzM2RkN2M0OGVhNDY3MDJiMDNlYTg5Nzk5NzUyLi44MDNhYWUzNDVjYjY4YzRm
OWQxNWM3OTgzNzIyNDJmZDM3MWZhMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxNy0wNi0yMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBTd2l0Y2ggVk1UcmFwcyB0byB1c2UgaGFsdCBpbnN0cnVjdGlvbnMg
cmF0aGVyIHRoYW4gYnJlYWtwb2ludCBpbnN0cnVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzY3NworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzIxNzg4OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNpbmcgdGhlIGJyZWFrcG9pbnQgaW5zdHJ1Y3Rpb24gZm9yIFZNVHJhcHMgY2F1c2Vk
IGlzc3VlcyB3aXRoIGxsZGIuCisgICAgICAgIFNpbmNlIHdlIG9ubHkgbmVlZCBzb21lIHdheSB0
byBzdG9wIGV4ZWN1dGlvbiB3ZSBjYW4sIGluIHRoZW9yeSwgdXNlCisgICAgICAgIGFueSBleGNl
cHRpb25pbmcgaW5zdHJ1Y3Rpb24gd2Ugd2FudC4gSSB3ZW50IHdpdGggdGhlIGhhbHQgaW5zdHJ1
Y3Rpb24KKyAgICAgICAgb24gWDg2IHNpbmNlIHRoYXQgaXMgdGhlIG9ubHkgb25lIGJ5dGUgaW5z
dHJ1Y3Rpb24gdGhhdCBkb2VzIG5vdAorICAgICAgICBicmVha3BvaW50IChpbiBteSB0ZXN0cyBi
b3RoIDB4ZjEgYW5kIDB4ZDYgcHJvZHVjZWQgRVhDX0JSRUFLUE9JTlQpLgorICAgICAgICBPbiBB
Uk0gd2UgdXNlIHRoZSBkYXRhIGNhY2hlIGNsZWFyaW5nIGluc3RydWN0aW9uIHdpdGggdGhlIHpl
cm8gcmVnaXN0ZXIsCisgICAgICAgIHdoaWNoIHNob3VsZCB0cmlnZ2VyIGEgc2VnbWVudGF0aW9u
IGZhdWx0LgorCisgICAgICAgIEFsc28sIHVwZGF0ZSB0aGUgcGxhdGZvcm0gY29kZSB0byBvbmx5
IHVzZSBzaWduYWxpbmcgVk1UcmFwcworICAgICAgICBvbiB3aGVyZSB3ZSBoYXZlIGFuIGFwcHJv
cHJpYXRlIGluc3RydWN0aW9uICh4ODYgYW5kIEFSTTY0KS4KKworICAgICAgICAqIEFQSS90ZXN0
cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RFeGVjdXRpb25UaW1l
TGltaXQpOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgIChtYWluKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJN
NjRBc3NlbWJsZXI6OnJlcGxhY2VXaXRoVk1IYWx0KToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3Nl
bWJsZXI6OmRhdGFDYWNoZVplcm9WaXJ0dWFsQWRkcmVzcyk6CisgICAgICAgIChKU0M6OkFSTTY0
QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEJrcHQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxl
ci9BUk1Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpyZXBsYWNlV2l0
aEJrcHQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgor
ICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhCa3B0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBT
QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEJrcHQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6
cmVwbGFjZVdpdGhCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpy
ZXBsYWNlV2l0aFZNSGFsdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnJl
cGxhY2VXaXRoQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3Rv
cmVGZW5jZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJlcGxhY2VXaXRo
QnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
TUlQUy5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoQnJl
YWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpyZXBsYWNl
V2l0aFZNSGFsdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpyZXBs
YWNlV2l0aEJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEhsdCk6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhJbnQzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBkZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpK
dW1wUmVwbGFjZW1lbnQ6Omluc3RhbGxWTVRyYXBCcmVha3BvaW50KToKKyAgICAgICAgKiBydW50
aW1lL1ZNVHJhcHMuY3BwOgorICAgICAgICAoSlNDOjpTaWduYWxDb250ZXh0OjpTaWduYWxDb250
ZXh0KToKKyAgICAgICAgKEpTQzo6aW5zdGFsbFNpZ25hbEhhbmRsZXIpOgorICAgICAgICAoSlND
OjpTaWduYWxDb250ZXh0OjphZGp1c3RQQ1RvUG9pbnRUb1RyYXBwaW5nSW5zdHJ1Y3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206OmVuYWJsZUZhc3RNZW1vcnkpOgorCiAyMDE3LTA2LTIwICBLZWl0aCBN
aWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBsZWFrIG9mIE1v
ZHVsZUluZm9ybWF0aW9ucyBpbiBCQlFQbGFuIGNvbnN0cnVjdG9ycy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYTk2YmNiN2M3
MGFmZjU3MDM4MzZhMDMwZmU5ZjRlZmNhZjEyNjYzNS4uODdmMzI5MTg3NWQzYTNjNjgxYjUxNTg0
OTNmM2E1N2MyMGYzZGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxNy0wNi0yMyAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggVk1UcmFw
cyB0byB1c2UgaGFsdCBpbnN0cnVjdGlvbnMgcmF0aGVyIHRoYW4gYnJlYWtwb2ludCBpbnN0cnVj
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MzY3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzIxNzg4OTI+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBUcmFwIHNpZ25hbCBo
YW5kbGVyIGNvZGUgc2luY2UgaXQgcGxheXMgYmFkbHkgd2l0aCBsbGRiIGFuZCBjb21iaW5lCisg
ICAgICAgIFNJR0JVUyB3aXRoIFNJR1NFR1Ygc2luY2UgZGlzdGlndWlzaGluZyB0aGVtIGlzIGdl
bmVyYWxseSBub24tcG9ydGFibGUuCisKKyAgICAgICAgQWxzbywgdXBkYXRlIHRoZSBwbGF0Zm9y
bSBjb2RlIHRvIG9ubHkgdXNlIHNpZ25hbGluZyBWTVRyYXBzCisgICAgICAgIG9uIHdoZXJlIHdl
IGhhdmUgYW4gYXBwcm9wcmlhdGUgaW5zdHJ1Y3Rpb24gKHg4NiBhbmQgQVJNNjQpLgorCisgICAg
ICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL3RocmVhZHMvU2lnbmFscy5jcHA6
CisgICAgICAgIChXVEY6OmZyb21NYWNoRXhjZXB0aW9uKToKKyAgICAgICAgKFdURjo6dG9NYWNo
TWFzayk6CisgICAgICAgIChXVEY6Omluc3RhbGxTaWduYWxIYW5kbGVyKToKKyAgICAgICAgKFdU
Rjo6anNjU2lnbmFsSGFuZGxlcik6CisgICAgICAgICogd3RmL3RocmVhZHMvU2lnbmFscy5oOgor
ICAgICAgICAoV1RGOjp0b1N5c3RlbVNpZ25hbCk6CisgICAgICAgIChXVEY6OmZyb21TeXN0ZW1T
aWduYWwpOgorCiAyMDE3LTA2LTIwICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRl
eC5ydT4KIAogICAgICAgICBSZW1vdmUgZXhjZXNzaXZlIGluY2x1ZGUgZGlyZWN0aXZlcyBmcm9t
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRp
b25UaW1lTGltaXRUZXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhl
Y3V0aW9uVGltZUxpbWl0VGVzdC5jcHAKaW5kZXggYTNjMzlhNzYxYzI0NWNkZDU5NTgzNWI4Mzhh
ZDA1ZmE3N2YwMGZjZS4uOWRjNGQ2NzFhNDgyMTU5ZGIyOWY2ZjE0YzFmM2VkYmZiNTJjYjE0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1l
TGltaXRUZXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1
dGlvblRpbWVMaW1pdFRlc3QuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgaW50IHRlc3RFeGVjdXRp
b25UaW1lTGltaXQoKQogICAgICAgICB7ICJMTElOVCIsICAgIDAsICAgIi0tdXNlQ29uY3VycmVu
dEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9ZmFsc2UiIH0sCiAgICAgICAgIHsg
IkJhc2VsaW5lIiwgMCwgICAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNlTExJbnQ9dHJ1
ZSAtLXVzZUpJVD10cnVlIC0tdXNlREZHSklUPWZhbHNlIiB9LAogICAgICAgICB7ICJERkciLCAg
ICAgIDAsICAgIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VK
SVQ9dHJ1ZSAtLXVzZURGR0pJVD10cnVlIC0tdXNlRlRMSklUPWZhbHNlIiB9LAotICAgICAgICB7
ICJGVEwiLCAgICAgIDIwMCwgIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRy
dWUgLS11c2VKSVQ9dHJ1ZSAtLXVzZURGR0pJVD10cnVlIC0tdXNlRlRMSklUPXRydWUiIH0sCisg
ICAgICAgIHsgIkZUTCIsICAgICAgMzAwLCAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNl
TExJbnQ9dHJ1ZSAtLXVzZUpJVD10cnVlIC0tdXNlREZHSklUPXRydWUgLS11c2VGVExKSVQ9dHJ1
ZSIgfSwKICAgICB9OwogICAgIAogICAgIGJvb2wgZmFpbGVkID0gZmFsc2U7CkBAIC0xNTEsNyAr
MTUxLDM5IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgSlNPYmplY3RS
ZWYgY3VycmVudENQVVRpbWVGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxi
YWNrKGNvbnRleHQsIGN1cnJlbnRDUFVUaW1lU3RyLCBjdXJyZW50Q1BVVGltZUFzSlNGdW5jdGlv
bkNhbGxiYWNrKTsKICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxP
YmplY3QsIGN1cnJlbnRDUFVUaW1lU3RyLCBjdXJyZW50Q1BVVGltZUZ1bmN0aW9uLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZU5vbmUsIG51bGxwdHIpOwogICAgICAgICBKU1N0cmluZ1JlbGVhc2UoY3Vy
cmVudENQVVRpbWVTdHIpOwotICAgICAgICAKKworICAgICAgICAvKiBUZXN0IHNjcmlwdCBvbiBh
bm90aGVyIHRocmVhZDogKi8KKyAgICAgICAgdGltZUxpbWl0ID0gKDEwMCArIHRpZXJBZGp1c3Rt
ZW50TWlsbGlzKSAvIDEwMDAuMDsKKyAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25U
aW1lTGltaXQoY29udGV4dEdyb3VwLCB0aW1lTGltaXQsIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNr
LCAwKTsKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgdGltZUFmdGVyV2F0Y2hkb2dT
aG91bGRIYXZlRmlyZWQgPSAzMDAgKyB0aWVyQWRqdXN0bWVudE1pbGxpczsKKworICAgICAgICAg
ICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImZ1
bmN0aW9uIGZvbygpIHsgd2hpbGUgKHRydWUpIHsgfSB9IGZvbygpOyIpOworICAgICAgICAgICAg
ZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEpTVmFsdWVSZWYqIGV4biA9ICZleGNl
cHRpb247CisgICAgICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZh
bHNlOworICAgICAgICAgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiUm9ndWUgdGhy
ZWFkIiwgWz1dIHsKKyAgICAgICAgICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNj
cmlwdCwgbnVsbHB0ciwgbnVsbHB0ciwgMSwgZXhuKTsKKyAgICAgICAgICAgIH0pOworCisgICAg
ICAgICAgICBzbGVlcChTZWNvbmRzKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkIC8g
MTAwMC4wKSk7CisKKyAgICAgICAgICAgIGlmIChzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0Nh
bGxlZCkKKyAgICAgICAgICAgICAgICBwcmludGYoIlBBU1M6ICVzIHNjcmlwdCB0aW1lZCBvdXQg
YXMgZXhwZWN0ZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgc2NyaXB0IHRpbWVvdXQgY2FsbGJhY2sg
d2FzIG5vdCBjYWxsZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgICAgICBl
eGl0KDEpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbikgewor
ICAgICAgICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2Vw
dGlvbiB3YXMgbm90IHRocm93bi5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAg
ICAgIGV4aXQoMSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRocmVhZC0+d2FpdEZv
ckNvbXBsZXRpb24oKTsKKyAgICAgICAgICAgIHRlc3RSZXNldEFmdGVyVGltZW91dChmYWlsZWQp
OworICAgICAgICB9CisKICAgICAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91dDogKi8KICAgICAg
ICAgdGltZUxpbWl0ID0gKDEwMCArIHRpZXJBZGp1c3RtZW50TWlsbGlzKSAvIDEwMDAuMDsKICAg
ICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdyb3VwLCB0
aW1lTGltaXQsIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKaW5kZXggZjEyY2MyZWUyMWIzOGU4YWUwZmYyNDRlZWQx
OTUzZjMyM2IzYzUyZi4uOWQzYjQ1NjI5ZjVjMWZhY2M4MTA5OTE5ODM2NGRmMTU5NmM5ZjNkNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKQEAgLTEzNDgsNiAr
MTM0OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgOjpTZXRFcnJv
ck1vZGUoMCk7CiAjZW5kaWYKIAorICAgIHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKTsKICAgICB0
ZXN0Q29tcGFyZUFuZFN3YXAoKTsKICAgICBzdGFydE11bHRpdGhyZWFkZWRNdWx0aVZNRXhlY3V0
aW9uVGVzdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0FSTTY0QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0
QXNzZW1ibGVyLmgKaW5kZXggNmFkNDZkZTc5MTBhMzYzNjAzNGJjMzU0NjY1ZmExZjQxZGFhNWM2
OS4uYjg1MDY3M2VmNjc4NDFhOWE5NmYyN2M1MjM0MmQ0MWYwNzM3MGU2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaApAQCAtMjYwMiw5
ICsyNjAyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgbGlua1BvaW50ZXIoYWRkcmVzc09mKGNvZGUs
IHdoZXJlKSwgdmFsdWVQdHIpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
QmtwdCh2b2lkKiB3aGVyZSkKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aFZNSGFsdCh2b2lk
KiB3aGVyZSkKICAgICB7Ci0gICAgICAgIGludCBpbnNuID0gZXhjZXBuR2VuZXJhdGlvbihFeGNl
cG5PcF9CUkVBS1BPSU5ULCAwLCAwKTsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgdHJ5IHRvIHdy
aXRlIHRvIG51bGwgd2hpY2ggc2hvdWxkIGFsd2F5cyBTZWdmYXVsdC4KKyAgICAgICAgaW50IGlu
c24gPSBkYXRhQ2FjaGVaZXJvVmlydHVhbEFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OnpyKTsKICAg
ICAgICAgcGVyZm9ybUpJVE1lbWNweSh3aGVyZSwgJmluc24sIHNpemVvZihpbnQpKTsKICAgICAg
ICAgY2FjaGVGbHVzaCh3aGVyZSwgc2l6ZW9mKGludCkpOwogICAgIH0KQEAgLTM2NTUsNiArMzY1
NiwxMSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIGhpbnRQc2V1ZG8oMCk7CiAg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGRhdGFDYWNoZVplcm9WaXJ0dWFs
QWRkcmVzcyhSZWdpc3RlcklEIHJ0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN5c3RlbSgwLCAx
LCAweDMsIDB4NywgMHg0LCAweDEsIHJ0KTsKKyAgICB9CiAgICAgCiAgICAgLy8gJ29wJyBtZWFu
cyBuZWdhdGUKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgdGVzdEFuZEJyYW5jaEltbWVk
aWF0ZShib29sIG9wLCBpbnQgYjUwLCBpbnQgaW1tMTQsIFJlZ2lzdGVySUQgcnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaAppbmRleCA5MWNlMGIy
OWRhMmRlNGU4YTdhYjg2OTJlYjJhODg3YjkxOWJhOGE5Li40OGUxMTAxNzI0NGRkY2Y3ZmIxMjcy
MGE4YjFkODU5YmI3ZWFlOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTUFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNQXNzZW1ibGVyLmgKQEAgLTk5NSwxMyArOTk1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZFBvaW50ZXIocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0QWJzb2x1dGVKdW1wQWRkcmVzcyhmcm9tKSkpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQmtwdCh2b2lkKiBpbnN0
cnVjdGlvblN0YXJ0KQotICAgICAgICB7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBpbnN0cnVjdGlv
biA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGluc3RydWN0aW9uU3RhcnQpOwotICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25bMF0gPSBCS1BUOwotICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0
cnVjdGlvbiwgc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgfQotCiAgICAgICAgIHN0YXRpYyB2
b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKICAg
ICAgICAgewogICAgICAgICAgICAgQVJNV29yZCogaW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9j
YXN0PEFSTVdvcmQqPihpbnN0cnVjdGlvblN0YXJ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAppbmRleCA2Y2Q0MDI1YjEyMTVlOGFkZjg0
YzM3YjM5NWMwZDdiZjBiNjU1N2Q0Li5lYjYxNTA5ZTE0OGEzY2Y2MmIzZTVkZGFiOGRlZmU5NmE2
NGQ5Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3
QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fz
c2VtYmxlci5oCkBAIC0yMzI4LDE2ICsyMzI4LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZEludDMyKHdoZXJlKSk7CiAgICAgfQogCi0gICAg
c3RhdGljIHZvaWQgcmVwbGFjZVdpdGhCa3B0KHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCi0gICAg
ewotICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvblN0
YXJ0KSAmIDEpKTsKLQotICAgICAgICB1aW50MTZfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQpOwotICAgICAgICB1aW50MTZfdCBpbnN0cnVjdGlv
bnMgPSBPUF9CS1BUOwotICAgICAgICBwZXJmb3JtSklUTWVtY3B5KHB0ciwgJmluc3RydWN0aW9u
cywgc2l6ZW9mKHVpbnQxNl90KSk7Ci0gICAgICAgIGNhY2hlRmx1c2gocHRyLCBzaXplb2YodWlu
dDE2X3QpKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCog
aW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCiAgICAgewogICAgICAgICBBU1NFUlQoIShiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvblN0YXJ0KSAmIDEpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKaW5kZXggNWZhMGZhMDA4
ZmNlNzQwZGVlOTNkYjhiN2RkNmIxN2QyMTExMTE5ZC4uMjcwY2NlMzRlZGJiODU2NDAwZGQwOTIx
OTQxMTJhNjEwZWQyZmRjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NSVBTQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NSVBTQXNzZW1ibGVyLmgKQEAgLTk0MSwxNSArOTQxLDYgQEAgcHVibGljOgogICAgICAgICBj
YWNoZUZsdXNoKGluc24sIGNvZGVTaXplKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBs
YWNlV2l0aEJrcHQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMykpOwotICAg
ICAgICBNSVBTV29yZCogaW5zbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TUlQU1dvcmQqPihyZWludGVy
cHJldF9jYXN0PGludHB0cl90PihpbnN0cnVjdGlvblN0YXJ0KSk7Ci0gICAgICAgIGludCB2YWx1
ZSA9IDUxMjsgLyogQlJLX0JVRyAqLwotICAgICAgICBpbnNuWzBdID0gKDB4MDAwMDAwMGQgfCAo
KHZhbHVlICYgMHgzZmYpIDw8IE9QX1NIX0NPREUpKTsKLSAgICAgICAgY2FjaGVGbHVzaChpbnN0
cnVjdGlvblN0YXJ0LCBzaXplb2YoTUlQU1dvcmQpKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCiAgICAg
ewogICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvblN0
YXJ0KSAmIDMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk0uaAppbmRleCA2ZjVmMzdlNTFiOTIxMzA1N2MyMmVkZTFjZDQ4M2VjMWMx
M2RjYjYwLi4yYjgwZDI0N2Y5N2E1MDNkNGQ1ZjQ1Y2Q5ODUyZmMyNDI5MjFlYmEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5o
CkBAIC0xNDk5LDExICsxNDk5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVuY3Rpb25Q
dHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KEFSTUFzc2VtYmxlcjo6cmVhZENhbGxUYXJn
ZXQoY2FsbC5kYXRhTG9jYXRpb24oKSkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBs
YWNlV2l0aEJyZWFrcG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKLSAg
ICB7Ci0gICAgICAgIEFSTUFzc2VtYmxlcjo6cmVwbGFjZVdpdGhCa3B0KGluc3RydWN0aW9uU3Rh
cnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Ci0gICAgfQotCiAgICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlv
bkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKICAgICAgICAgQVJNQXNzZW1ibGVyOjpyZXBsYWNl
V2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24uZGF0
YUxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBmZDQ5NGEwNTA5NjMzN2ExNTU3MjM1MjA3ZTU0
OGQ2ZjJlOTQ4MDZhLi5jMzdlMDBiNmM2NGIxOTI0Zjc4NjZmNzViMzI4ZTM5NmUxMGY1NzFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaApAQCAtMzcxMyw5ICszNzEzLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
RnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KEFSTTY0QXNzZW1ibGVyOjpy
ZWFkQ2FsbFRhcmdldChjYWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAotICAgIHN0YXRp
YyB2b2lkIHJlcGxhY2VXaXRoQnJlYWtwb2ludChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlv
blN0YXJ0KQorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoVk1IYWx0KENvZGVMb2NhdGlvbkxh
YmVsIGluc3RydWN0aW9uU3RhcnQpCiAgICAgewotICAgICAgICBBUk02NEFzc2VtYmxlcjo6cmVw
bGFjZVdpdGhCa3B0KGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAg
ICAgIEFSTTY0QXNzZW1ibGVyOjpyZXBsYWNlV2l0aFZNSGFsdChpbnN0cnVjdGlvblN0YXJ0LmV4
ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
SnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJl
bCBkZXN0aW5hdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggNTQzMzVhMjliYzhhNGNjNWVkNmEzMTY5NzIw
Njc5YmQwZmE5YzdkZC4uZjNmZTYxZGJlMzU2YWYzM2VhMTlmYmQ5OWM1YWY4ZGE3M2ExNjY0OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTXY3LmgKQEAgLTEzNTQsMTEgKzEzNTQsNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5kbWJJU0hTVCgpOwogICAgIH0KLSAgICAKLSAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aEJyZWFrcG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkK
LSAgICB7Ci0gICAgICAgIEFSTXY3QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEJrcHQoaW5zdHJ1Y3Rp
b25TdGFydC5kYXRhTG9jYXRpb24oKSk7Ci0gICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlv
bkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IGZmNDAwOTAxYzI0NTBkNGRj
OTljNGI2MTJlZjU0NTA4NDQ1MGNhOTEuLmZhMDViZTE3OWVmMTE5NjdjZDg2MDg2YjFjNDBjZjI4
NjllYmMwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtMzA3MiwxMSArMzA3Miw2IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihNSVBTQXNz
ZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAot
ICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQnJlYWtwb2ludChDb2RlTG9jYXRpb25MYWJlbCBp
bnN0cnVjdGlvblN0YXJ0KQotICAgIHsKLSAgICAgICAgTUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdp
dGhCa3B0KGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Ci0gICAgfQotCiAg
ICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0
aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKICAgICAgICAg
TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0
aW9uKCksIGRlc3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRl
eCAzMmRhNDUwYjQzZDhmNzhhMDU0OWRiMjg1ZGIxMmMyZDQzODkyN2RkLi42YWNjMmE5NjlkYzIz
YTc5OWNiNjY5MjBiOTI4YmQ1OGE2NzI0N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0zODAz
LDkgKzM4MDMsOSBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aEJyZWFrcG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkK
KyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aFZNSGFsdChDb2RlTG9jYXRpb25MYWJlbCBpbnN0
cnVjdGlvblN0YXJ0KQogICAgIHsKLSAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aElu
dDMoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgWDg2QXNz
ZW1ibGVyOjpyZXBsYWNlV2l0aEhsdChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNz
KCkpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRp
b25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCmluZGV4
IGFkZGM3ZDgxMTg0MGVjYzU1NDA1YmY0NzFjNmZiNzIzZWFhZGZiNzQuLjViNjRmMDJhZjY2NWMw
NGQwYWUyZmM0NzQzYTE2Y2NkMDU1YWUyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtMzYzNywxMCArMzYzNywxMCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4od2hlcmUpWy0xXTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEludDModm9pZCogaW5zdHJ1Y3Rpb25T
dGFydCkKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEhsdCh2b2lkKiBpbnN0cnVjdGlvblN0
YXJ0KQogICAgIHsKICAgICAgICAgdWludDhfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAgICAgIHB0clswXSA9IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KE9QX0lOVDMpOworICAgICAgICBwdHJbMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihP
UF9ITFQpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBp
bnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcAppbmRleCAyNDdiZGE5YjAyNmUwYTk3ZDZlOWJhZjUw
NmZiZDQwM2MwOTI4NTIzLi4xZWJmNjk0Y2U0Y2Y4NzgxYzI1NDY3ZjIxOTgwZDhlNTE3MjI1ODdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0p1bXBSZXBsYWNlbWVu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKdW1wUmVwbGFjZW1lbnQu
Y3BwCkBAIC00Myw3ICs0MywxMSBAQCB2b2lkIEp1bXBSZXBsYWNlbWVudDo6ZmlyZSgpCiAKIHZv
aWQgSnVtcFJlcGxhY2VtZW50OjppbnN0YWxsVk1UcmFwQnJlYWtwb2ludCgpCiB7Ci0gICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoQnJlYWtwb2ludChtX3NvdXJjZSk7CisjaWYgRU5BQkxF
KFNJR05BTF9CQVNFRF9WTV9UUkFQUykKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhW
TUhhbHQobV9zb3VyY2UpOworI2Vsc2UKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsK
KyNlbmRpZgogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCmluZGV4IDUxZjI4ZDNlOWNkNzFmZjE0MjZjZDhmOGI4
OWMyMTI3ODYxNjY4NmYuLjA4MDExZGUyNzBjMzZkMzZmYWE4OTcwMTJmYmMxYTQzNDZmYzk2NTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCkBAIC01OSwxNyAr
NTksNiBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgICAgICwgc3RhY2tQb2ludGVyKE1h
Y2hpbmVDb250ZXh0OjpzdGFja1BvaW50ZXIocmVnaXN0ZXJzKSkKICAgICAgICAgLCBmcmFtZVBv
aW50ZXIoTWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRlcihyZWdpc3RlcnMpKQogICAgIHsKLSNp
ZiBDUFUoWDg2XzY0KSB8fCBDUFUoWDg2KQotICAgICAgICAvLyBPbiBYODZfNjQsIFNJR1RSQVAg
cmVwb3J0cyB0aGUgYWRkcmVzcyBhZnRlciB0aGUgdHJhcHBpbmcgUEMuIFNvLCBkZWMgYnkgMS4K
LSAgICAgICAgdHJhcFBDID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odHJhcFBDKSAtIDE7
Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lkIGFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0
cnVjdGlvbigpCi0gICAgewotI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCi0gICAgICAgIE1h
Y2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJzKSA9IHRyYXBQQzsKLSNl
bmRpZgogICAgIH0KIAogICAgIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnM7CkBAIC0xMzAs
NyArMTE5LDkgQEAgc3RhdGljIEV4cGVjdGVkPFZNQW5kU3RhY2tCb3VuZHMsIFZNVHJhcHM6OkVy
cm9yPiBmaW5kQWN0aXZlVk1BbmRTdGFja0JvdW5kcyhTaWcKIAogc3RhdGljIHZvaWQgaW5zdGFs
bFNpZ25hbEhhbmRsZXIoKQogewotICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6VHJh
cCwgW10gKFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpIC0+
IFNpZ25hbEFjdGlvbiB7CisgICAgLy8gWDg2IGRvZXNuJ3QgaGF2ZSBhbnkgaWxsZWdhbCBvbmUg
Ynl0ZSBpbnN0cnVjdGlvbnMgdGhhdCBwcm9kdWNlIGEgU0lHSUxMIGFuZCwgQUZBSUNULAorICAg
IC8vIEFSTSBkb2VzIG5vdCBoYXZlIGFueSBpbnN0cnVjdGlvbiBndWFyZW50ZWVkIHRvIHNlZ21l
bnRhdGlvbiBmYXVsdC4KKyAgICBpbnN0YWxsU2lnbmFsSGFuZGxlcihTaWduYWw6OkJhZEFjY2Vz
cywgW10gKFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpIC0+
IFNpZ25hbEFjdGlvbiB7CiAgICAgICAgIFNpZ25hbENvbnRleHQgY29udGV4dChyZWdpc3RlcnMp
OwogCiAgICAgICAgIGlmICghaXNKSVRQQyhjb250ZXh0LnRyYXBQQykpCkBAIC0yOTcsMTAgKzI4
OCw2IEBAIGF1dG8gVk1UcmFwczo6dHJ5SmV0dGlzb25Db2RlQmxvY2tzT25TdGFjayhTaWduYWxD
b250ZXh0JiBjb250ZXh0KSAtPiBFeHBlY3RlZDxiCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGludmFsaWRhdGVDb2RlQmxvY2tzT25TdGFjayhjb2RlQmxvY2tTZXRMb2NrZXIsIHRvcENh
bGxGcmFtZSk7Ci0KLSAgICAvLyBSZS1ydW4gdGhlIHRyYXBwaW5nIGluc3RydWN0aW9uIG5vdyB0
aGF0IHdlJ3ZlIHBhdGNoZWQgaXQgd2l0aCB0aGUgaW52YWxpZGF0aW9uCi0gICAgLy8gT1NSIGV4
aXQgb2ZmLXJhbXAuCi0gICAgY29udGV4dC5hZGp1c3RQQ1RvUG9pbnRUb1RyYXBwaW5nSW5zdHJ1
Y3Rpb24oKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAppbmRleCAyNjRjMzRkZTQ1
ZGExNzVhNWQ1MTQxYzE3MWVmZTk1ZTA2M2M1ZTI3Li5lODZmZDQ3OTkwZTg4ODhkMjZmZGRmYTcz
OTRlNDc2YWJjYzgwMTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcApAQCAtMTIzLDExICsxMjMsNyBAQCB2b2lkIGVu
YWJsZUZhc3RNZW1vcnkoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZX0ZBU1RfTUVNT1JZKQotICAgICAgICBpbnN0YWxsU2lnbmFsSGFuZGxlcihTaWduYWw6
OkJ1cywgW10gKFNpZ25hbCBzaWduYWwsIFNpZ0luZm8mIHNpZ0luZm8sIFBsYXRmb3JtUmVnaXN0
ZXJzJiB1Y29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIHRyYXBIYW5kbGVyKHNpZ25hbCwg
c2lnSW5mbywgdWNvbnRleHQpOwotICAgICAgICB9KTsKLQotICAgICAgICBpbnN0YWxsU2lnbmFs
SGFuZGxlcihTaWduYWw6OlNlZ1YsIFtdIChTaWduYWwgc2lnbmFsLCBTaWdJbmZvJiBzaWdJbmZv
LCBQbGF0Zm9ybVJlZ2lzdGVycyYgdWNvbnRleHQpIHsKKyAgICAgICAgaW5zdGFsbFNpZ25hbEhh
bmRsZXIoU2lnbmFsOjpCYWRBY2Nlc3MsIFtdIChTaWduYWwgc2lnbmFsLCBTaWdJbmZvJiBzaWdJ
bmZvLCBQbGF0Zm9ybVJlZ2lzdGVycyYgdWNvbnRleHQpIHsKICAgICAgICAgICAgIHJldHVybiB0
cmFwSGFuZGxlcihzaWduYWwsIHNpZ0luZm8sIHVjb250ZXh0KTsKICAgICAgICAgfSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCmluZGV4IDUwMDQwNzdhNTZhMmYyYWUzNTA3YzU0ZGY1ZTgyODBjZWFiODEwMDMuLjg3
YmIzYmI0M2YzODA4OWY3NDVjY2ZiZjkyYTRlMTZhNmNhYzZhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAt
OTc0LDcgKzk3NCw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgRU5BQkxFKEpJVCkgJiYgSEFW
RShNQUNISU5FX0NPTlRFWFQpCisjaWYgRU5BQkxFKEpJVCkgJiYgSEFWRShNQUNISU5FX0NPTlRF
WFQpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpKQogI2RlZmluZSBF
TkFCTEVfU0lHTkFMX0JBU0VEX1ZNX1RSQVBTIDEKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9T
aWduYWxzLmNwcAppbmRleCBmMDFlMzkxMTNiMGM2MjE5MGJkYmVmMTNlYWJhMjJhMGUxNDg5YmMy
Li45MTljNjVjMmJjYjExYTY2NjJlODUwMDkxNTQ5MzJmNDAyM2ExMmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Ro
cmVhZHMvU2lnbmFscy5jcHAKQEAgLTExNyw5ICsxMTcsOCBAQCBzdGF0aWMgdm9pZCBzdGFydE1h
Y2hFeGNlcHRpb25IYW5kbGVyVGhyZWFkKCkKIHN0YXRpYyBTaWduYWwgZnJvbU1hY2hFeGNlcHRp
b24oZXhjZXB0aW9uX3R5cGVfdCB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgRVhDX0JBRF9BQ0NFU1M6IHJldHVybiBTaWduYWw6OlNlZ1Y7CisgICAgY2FzZSBFWENfQkFE
X0FDQ0VTUzogcmV0dXJuIFNpZ25hbDo6QmFkQWNjZXNzOwogICAgIGNhc2UgRVhDX0JBRF9JTlNU
UlVDVElPTjogcmV0dXJuIFNpZ25hbDo6SWxsOwotICAgIGNhc2UgRVhDX0JSRUFLUE9JTlQ6IHJl
dHVybiBTaWduYWw6OlRyYXA7CiAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQogICAgIHJldHVy
biBTaWduYWw6OlVua25vd247CkBAIC0xMjgsOSArMTI3LDggQEAgc3RhdGljIFNpZ25hbCBmcm9t
TWFjaEV4Y2VwdGlvbihleGNlcHRpb25fdHlwZV90IHR5cGUpCiBzdGF0aWMgZXhjZXB0aW9uX21h
c2tfdCB0b01hY2hNYXNrKFNpZ25hbCBzaWduYWwpCiB7CiAgICAgc3dpdGNoIChzaWduYWwpIHsK
LSAgICBjYXNlIFNpZ25hbDo6U2VnVjogcmV0dXJuIEVYQ19NQVNLX0JBRF9BQ0NFU1M7CisgICAg
Y2FzZSBTaWduYWw6OkJhZEFjY2VzczogcmV0dXJuIEVYQ19NQVNLX0JBRF9BQ0NFU1M7CiAgICAg
Y2FzZSBTaWduYWw6OklsbDogcmV0dXJuIEVYQ19NQVNLX0JBRF9JTlNUUlVDVElPTjsKLSAgICBj
YXNlIFNpZ25hbDo6VHJhcDogcmV0dXJuIEVYQ19NQVNLX0JSRUFLUE9JTlQ7CiAgICAgZGVmYXVs
dDogYnJlYWs7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0x
NjYsNiArMTY0LDExIEBAIGtlcm5fcmV0dXJuX3QgY2F0Y2hfbWFjaF9leGNlcHRpb25fcmFpc2Vf
c3RhdGUoCiAgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCogb3V0U3RhdGVDb3VudCkKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVChwb3J0ID09IGV4Y2VwdGlvblBvcnQpOworICAgIC8vIElmIHdlIHdh
bnRlZCB0byBkaXN0aW5naXNoIGJldHdlZW4gU0lHQlVTIGFuZCBTSUdTRUdWIGZvciBFWENfQkFE
X0FDQ0VTUyBvbiBEYXJ3aW4gd2UgY291bGQgZG86CisgICAgLy8gaWYgKGV4Y2VwdGlvbkRhdGFb
MF0gPT0gS0VSTl9JTlZBTElEX0FERFJFU1MpCisgICAgLy8gICAgc2lnbmFsID0gU0lHU0VHVjsK
KyAgICAvLyBlbHNlCisgICAgLy8gICAgc2lnbmFsID0gU0lHQlVTOwogICAgIFNpZ25hbCBzaWdu
YWwgPSBmcm9tTWFjaEV4Y2VwdGlvbihleGNlcHRpb25UeXBlKTsKICAgICBSRUxFQVNFX0FTU0VS
VChzaWduYWwgIT0gU2lnbmFsOjpVbmtub3duKTsKIApAQCAtMTg3LDcgKzE5MCw3IEBAIGtlcm5f
cmV0dXJuX3QgY2F0Y2hfbWFjaF9leGNlcHRpb25fcmFpc2Vfc3RhdGUoCiAjZW5kaWYKIAogICAg
IFNpZ0luZm8gaW5mbzsKLSAgICBpZiAoc2lnbmFsID09IFNpZ25hbDo6U2VnVikgeworICAgIGlm
IChzaWduYWwgPT0gU2lnbmFsOjpCYWRBY2Nlc3MpIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChk
YXRhQ291bnQsIGRhdGFDb3VudCA9PSAyKTsKICAgICAgICAgaW5mby5mYXVsdGluZ0FkZHJlc3Mg
PSByZWludGVycHJldF9jYXN0PHZvaWQqPihleGNlcHRpb25EYXRhWzFdKTsKICAgICB9CkBAIC0y
NTUsMTIgKzI1OCw2IEBAIHZvaWQgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsIHNpZ25hbCwg
U2lnbmFsSGFuZGxlciYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHNpZ25hbCA8IFNpZ25hbDo6
VW5rbm93bik7CiAjaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCi0gICAgLy8gU2luY2UgbWFjaCBv
bmx5IGhhcyBFWENfQkFEX0FDQ0VTUywgd2hpY2ggY292ZXJzIGJvdGggU2VnViBhbmQgQnVzLCB3
ZSBhcmJpdGFyaWx5IGNob29zZSB0byBtYWtlCi0gICAgLy8gbWFjaCBFWENfQkFEX0FDQ0VTU2Vz
IG1hcCB0byBTZWdWLgotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQganVzdCB1c2UgYSBzaW5nbGUg
U2lnbmFsOjpCYWRBY2Nlc3MgdmFsdWUgaW5zdGVhZCBvZiBTZWdWL0J1cy4KLSAgICAvLyBTZWU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIwNjMKLSAgICBpZiAo
c2lnbmFsID09IFNpZ25hbDo6QnVzICYmIHVzZU1hY2gpCi0gICAgICAgIHJldHVybjsKICAgICBB
U1NFUlQoIXVzZU1hY2ggfHwgc2lnbmFsICE9IFNpZ25hbDo6VXNyKTsKIAogICAgIGlmICh1c2VN
YWNoKQpAQCAtMjc2LDcgKzI3MywxMCBAQCB2b2lkIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25h
bCBzaWduYWwsIFNpZ25hbEhhbmRsZXImJiBoYW5kbGVyKQogICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBzaWdmaWxsc2V0KCZhY3Rpb24uc2FfbWFzayk7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCghcmVzdWx0KTsKICAgICAgICAgICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX1NJR0lORk87
Ci0gICAgICAgICAgICByZXN1bHQgPSBzaWdhY3Rpb24odG9TeXN0ZW1TaWduYWwoc2lnbmFsKSwg
JmFjdGlvbiwgJm9sZEFjdGlvbnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzaWduYWwpXSk7CisgICAg
ICAgICAgICBhdXRvIHN5c3RlbVNpZ25hbHMgPSB0b1N5c3RlbVNpZ25hbChzaWduYWwpOworICAg
ICAgICAgICAgcmVzdWx0ID0gc2lnYWN0aW9uKHN0ZDo6Z2V0PDA+KHN5c3RlbVNpZ25hbHMpLCAm
YWN0aW9uLCAmb2xkQWN0aW9uc1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNpZ25hbCldKTsKKyAgICAg
ICAgICAgIGlmIChzdGQ6OmdldDwxPihzeXN0ZW1TaWduYWxzKSkKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgfD0gc2lnYWN0aW9uKHN0ZDo6Z2V0PDA+KHN5c3RlbVNpZ25hbHMpLCAmYWN0aW9uLCAm
b2xkQWN0aW9uc1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNpZ25hbCkgKyAxXSk7CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0KTsKICAgICAgICAgfQogCkBAIC0zMTYsNyArMzE2LDcg
QEAgdm9pZCBqc2NTaWduYWxIYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCog
dWNvbnRleHQpCiAgICAgfQogCiAgICAgU2lnSW5mbyBzaWdJbmZvOwotICAgIGlmIChzaWduYWwg
PT0gU2lnbmFsOjpTZWdWIHx8IHNpZ25hbCA9PSBTaWduYWw6OkJ1cykKKyAgICBpZiAoc2lnbmFs
ID09IFNpZ25hbDo6QmFkQWNjZXNzKQogICAgICAgICBzaWdJbmZvLmZhdWx0aW5nQWRkcmVzcyA9
IGluZm8tPnNpX2FkZHI7CiAKICAgICBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzID0gcmVn
aXN0ZXJzRnJvbVVDb250ZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8dWNvbnRleHRfdCo+KHVjb250ZXh0
KSk7CkBAIC0zNDEsNyArMzQxLDggQEAgdm9pZCBqc2NTaWduYWxIYW5kbGVyKGludCBzaWcsIHNp
Z2luZm9fdCogaW5mbywgdm9pZCogdWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBzdHJ1Y3Qgc2lnYWN0aW9uJiBvbGRBY3Rpb24gPSBvbGRBY3Rpb25zW3N0YXRpY19jYXN0
PHNpemVfdD4oc2lnbmFsKV07CisgICAgdW5zaWduZWQgb2xkQWN0aW9uSW5kZXggPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHNpZ25hbCkgKyAoc2lnID09IFNJR0JVUyk7CisgICAgc3RydWN0IHNpZ2Fj
dGlvbiYgb2xkQWN0aW9uID0gb2xkQWN0aW9uc1tzdGF0aWNfY2FzdDxzaXplX3Q+KG9sZEFjdGlv
bkluZGV4KV07CiAgICAgaWYgKHNpZ25hbCA9PSBTaWduYWw6OlVzcikgewogICAgICAgICBpZiAo
b2xkQWN0aW9uLnNhX3NpZ2FjdGlvbikKICAgICAgICAgICAgIG9sZEFjdGlvbi5zYV9zaWdhY3Rp
b24oc2lnLCBpbmZvLCB1Y29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJl
YWRzL1NpZ25hbHMuaCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCmluZGV4IDI1
NzZmYWQ1YTAwNDgzMzIwOGM1YmMyNTBlNTQ3MGQzNzhmNzUyYjQuLmZhYWUwYTdkMjA0ZTUzZmFk
MDQxZmU1NmYzMjUxMTM2ODExYTlhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RocmVh
ZHMvU2lnbmFscy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm1S
ZWdpc3RlcnMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC00MSwyMiArNDIsMTggQEAgZW51bSBj
bGFzcyBTaWduYWwgewogCiAgICAgLy8gVGhlc2Ugc2lnbmFscyB3aWxsIG9ubHkgY2hhaW4gaWYg
d2UgZG9uJ3QgaGF2ZSBhIGhhbmRsZXIgdGhhdCBjYW4gcHJvY2VzcyB0aGVtLiBJZiB0aGVyZSBp
cyBub3RoaW5nCiAgICAgLy8gdG8gY2hhaW4gdG8gd2UgcmVzdG9yZSB0aGUgZGVmYXVsdCBoYW5k
bGVyIGFuZCBjcmFzaC4KLSAgICBUcmFwLAogICAgIElsbCwKLSAgICBTZWdWLAotICAgIEJ1cywK
LSAgICBOdW1iZXJPZlNpZ25hbHMsCisgICAgQmFkQWNjZXNzLCAvLyBGb3IgcG9zaXggdGhpcyBp
cyBib3RoIFNJR1NFR1YgYW5kIFNJR0JVUworICAgIE51bWJlck9mU2lnbmFscyA9IEJhZEFjY2Vz
cyArIDIsIC8vIEJhZEFjY2VzcyBpcyByZWFsbHkgdHdvIHNpZ25hbHMuCiAgICAgVW5rbm93biA9
IE51bWJlck9mU2lnbmFscwogfTsKIAotaW5saW5lIGludCB0b1N5c3RlbVNpZ25hbChTaWduYWwg
c2lnbmFsKQoraW5saW5lIHN0ZDo6dHVwbGU8aW50LCBzdGQ6Om9wdGlvbmFsPGludD4+IHRvU3lz
dGVtU2lnbmFsKFNpZ25hbCBzaWduYWwpCiB7CiAgICAgc3dpdGNoIChzaWduYWwpIHsKLSAgICBj
YXNlIFNpZ25hbDo6U2VnVjogcmV0dXJuIFNJR1NFR1Y7Ci0gICAgY2FzZSBTaWduYWw6OkJ1czog
cmV0dXJuIFNJR0JVUzsKLSAgICBjYXNlIFNpZ25hbDo6SWxsOiByZXR1cm4gU0lHSUxMOwotICAg
IGNhc2UgU2lnbmFsOjpVc3I6IHJldHVybiBTSUdVU1IyOwotICAgIGNhc2UgU2lnbmFsOjpUcmFw
OiByZXR1cm4gU0lHVFJBUDsKKyAgICBjYXNlIFNpZ25hbDo6QmFkQWNjZXNzOiByZXR1cm4gc3Rk
OjptYWtlX3R1cGxlKFNJR1NFR1YsIFNJR0JVUyk7CisgICAgY2FzZSBTaWduYWw6OklsbDogcmV0
dXJuIHN0ZDo6bWFrZV90dXBsZShTSUdJTEwsIHN0ZDo6bnVsbG9wdCk7CisgICAgY2FzZSBTaWdu
YWw6OlVzcjogcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShTSUdJTEwsIHN0ZDo6bnVsbG9wdCk7CiAg
ICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC02NSwxMSArNjIsMTAgQEAgaW5saW5lIGludCB0b1N5c3RlbVNpZ25hbChTaWduYWwg
c2lnbmFsKQogaW5saW5lIFNpZ25hbCBmcm9tU3lzdGVtU2lnbmFsKGludCBzaWduYWwpCiB7CiAg
ICAgc3dpdGNoIChzaWduYWwpIHsKLSAgICBjYXNlIFNJR1NFR1Y6IHJldHVybiBTaWduYWw6OlNl
Z1Y7Ci0gICAgY2FzZSBTSUdCVVM6IHJldHVybiBTaWduYWw6OkJ1czsKKyAgICBjYXNlIFNJR1NF
R1Y6IHJldHVybiBTaWduYWw6OkJhZEFjY2VzczsKKyAgICBjYXNlIFNJR0JVUzogcmV0dXJuIFNp
Z25hbDo6QmFkQWNjZXNzOwogICAgIGNhc2UgU0lHSUxMOiByZXR1cm4gU2lnbmFsOjpJbGw7CiAg
ICAgY2FzZSBTSUdVU1IyOiByZXR1cm4gU2lnbmFsOjpVc3I7Ci0gICAgY2FzZSBTSUdUUkFQOiBy
ZXR1cm4gU2lnbmFsOjpUcmFwOwogICAgIGRlZmF1bHQ6IHJldHVybiBTaWduYWw6OlVua25vd247
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDI3Y2EzODY0MjdlYzY0NGU0OGU3N2FiZDNlNzYzOWNmNGU3Nzg5OGIuLjkyNGNlYWRh
YTA3YjM4ZDc1MWZhOTE0YzEyMzk0YTJiZmZkOGNhMzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wNi0yMyAg
S2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2gg
Vk1UcmFwcyB0byB1c2UgaGFsdCBpbnN0cnVjdGlvbnMgcmF0aGVyIHRoYW4gYnJlYWtwb2ludCBp
bnN0cnVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVzc2FnZXMuY3BwOgorICAgICAg
ICAoVEVTVCk6CisKIDIwMTctMDYtMjAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPUyBEbkRdIFtXSzJdIFJlbW92ZSBjdXN0b20gbG9naWMgZm9y
IGRpc2FtYmlndWF0aW5nIGxvbmcgcHJlc3MgYWN0aW9uIHNoZWV0IGdlc3R1cmVzIGFuZCBkcmFn
IGxpZnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZE1l
c3NhZ2VzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZE1lc3NhZ2Vz
LmNwcAppbmRleCBlNmE1Nzg5NGJiNTE2ZmUxY2U3MTNkMDdiZjE4ZjA3MDZlZmE5MzdjLi5lNmNi
Y2I0Y2MzMzQyMjc0Njk3MzM5M2YyYzdkYzg1NjllMTk4ZTZmIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRNZXNzYWdlcy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVzc2FnZXMuY3BwCkBAIC0xMTQsNyArMTE0LDcg
QEAgVEVTVChUaHJlYWRNZXNzYWdlLCBTaWduYWxzV29ya09uRXhpdCkKICAgICAgICAgcmVjZWl2
ZXJTaG91bGRLZWVwUnVubmluZy5zdG9yZShmYWxzZSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShz
dGF0aWNfY2FzdDxSZWZsZWN0ZWRUaHJlYWQqPihyZWNlaXZlclRocmVhZC5nZXQoKSktPmhhc0V4
aXRlZCgpKTsKICAgICAgICAgc2xlZXAoMSk7Ci0gICAgICAgIHNpZ25hbEZpcmVkID0gIXB0aHJl
YWRfa2lsbChzdGF0aWNfY2FzdDxSZWZsZWN0ZWRUaHJlYWQqPihyZWNlaXZlclRocmVhZC5nZXQo
KSktPm1faGFuZGxlLCB0b1N5c3RlbVNpZ25hbChTaWduYWw6OlVzcikpOworICAgICAgICBzaWdu
YWxGaXJlZCA9ICFwdGhyZWFkX2tpbGwoc3RhdGljX2Nhc3Q8UmVmbGVjdGVkVGhyZWFkKj4ocmVj
ZWl2ZXJUaHJlYWQuZ2V0KCkpLT5tX2hhbmRsZSwgdG9TeXN0ZW1TaWduYWwoU2lnbmFsOjpVc3Ip
KS5nZXQ8MD4oKTsKICAgICB9CiAKICAgICByZWNlaXZlclRocmVhZC0+d2FpdEZvckNvbXBsZXRp
b24oKTsK
</data>
<flag name="review"
          id="334643"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313751</attachid>
            <date>2017-06-23 15:02:55 -0700</date>
            <delta_ts>2017-06-23 15:06:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173677-20170623150254.patch</filename>
            <type>text/plain</type>
            <size>27401</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OTY4YjZkNDMxZGIzM2RkN2M0OGVhNDY3MDJiMDNlYTg5Nzk5NzUyLi42MzZlOTljN2ViNmZiNzJl
NTJkMzFiNTZlZDg0N2FmZmZjMWVmOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxNy0wNi0yMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBTd2l0Y2ggVk1UcmFwcyB0byB1c2UgaGFsdCBpbnN0cnVjdGlvbnMg
cmF0aGVyIHRoYW4gYnJlYWtwb2ludCBpbnN0cnVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzY3NworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzIxNzg4OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNpbmcgdGhlIGJyZWFrcG9pbnQgaW5zdHJ1Y3Rpb24gZm9yIFZNVHJhcHMgY2F1c2Vk
IGlzc3VlcyB3aXRoIGxsZGIuCisgICAgICAgIFNpbmNlIHdlIG9ubHkgbmVlZCBzb21lIHdheSB0
byBzdG9wIGV4ZWN1dGlvbiB3ZSBjYW4sIGluIHRoZW9yeSwgdXNlCisgICAgICAgIGFueSBleGNl
cHRpb25pbmcgaW5zdHJ1Y3Rpb24gd2Ugd2FudC4gSSB3ZW50IHdpdGggdGhlIGhhbHQgaW5zdHJ1
Y3Rpb24KKyAgICAgICAgb24gWDg2IHNpbmNlIHRoYXQgaXMgdGhlIG9ubHkgb25lIGJ5dGUgaW5z
dHJ1Y3Rpb24gdGhhdCBkb2VzIG5vdAorICAgICAgICBicmVha3BvaW50IChpbiBteSB0ZXN0cyBi
b3RoIDB4ZjEgYW5kIDB4ZDYgcHJvZHVjZWQgRVhDX0JSRUFLUE9JTlQpLgorICAgICAgICBPbiBB
Uk0gd2UgdXNlIHRoZSBkYXRhIGNhY2hlIGNsZWFyaW5nIGluc3RydWN0aW9uIHdpdGggdGhlIHpl
cm8gcmVnaXN0ZXIsCisgICAgICAgIHdoaWNoIHNob3VsZCB0cmlnZ2VyIGEgc2VnbWVudGF0aW9u
IGZhdWx0LgorCisgICAgICAgIEFsc28sIHVwZGF0ZSB0aGUgcGxhdGZvcm0gY29kZSB0byBvbmx5
IHVzZSBzaWduYWxpbmcgVk1UcmFwcworICAgICAgICBvbiB3aGVyZSB3ZSBoYXZlIGFuIGFwcHJv
cHJpYXRlIGluc3RydWN0aW9uICh4ODYgYW5kIEFSTTY0KS4KKworICAgICAgICAqIEFQSS90ZXN0
cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RFeGVjdXRpb25UaW1l
TGltaXQpOgorICAgICAgICAqIGFzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oOgorICAgICAgICAo
SlNDOjpBUk02NEFzc2VtYmxlcjo6cmVwbGFjZVdpdGhWTUhhbHQpOgorICAgICAgICAoSlNDOjpB
Uk02NEFzc2VtYmxlcjo6ZGF0YUNhY2hlWmVyb1ZpcnR1YWxBZGRyZXNzKToKKyAgICAgICAgKEpT
Qzo6QVJNNjRBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQmtwdCk6IERlbGV0ZWQuCisgICAgICAgICog
YXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnJl
cGxhY2VXaXRoQmtwdCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL0FSTXY3QXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEJrcHQpOiBE
ZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Ok1JUFNBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQmtwdCk6IERlbGV0ZWQuCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNOjpyZXBsYWNlV2l0aEJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OnJlcGxhY2VXaXRoVk1IYWx0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6cmVwbGFjZVdpdGhCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TXY3OjpzdG9yZUZlbmNlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6cmVw
bGFjZVdpdGhCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6cmVwbGFj
ZVdpdGhCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnJlcGxhY2VXaXRoVk1IYWx0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OnJlcGxhY2VXaXRoQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRo
SGx0KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEludDMpOiBEZWxl
dGVkLgorICAgICAgICAqIGRmZy9ERkdKdW1wUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoSlND
OjpERkc6Okp1bXBSZXBsYWNlbWVudDo6aW5zdGFsbFZNVHJhcEJyZWFrcG9pbnQpOgorICAgICAg
ICAqIHJ1bnRpbWUvVk1UcmFwcy5jcHA6CisgICAgICAgIChKU0M6OlNpZ25hbENvbnRleHQ6OlNp
Z25hbENvbnRleHQpOgorICAgICAgICAoSlNDOjppbnN0YWxsU2lnbmFsSGFuZGxlcik6CisgICAg
ICAgIChKU0M6OlNpZ25hbENvbnRleHQ6OmFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVj
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6ZW5hYmxlRmFzdE1lbW9yeSk6CisKIDIwMTctMDYtMjAg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGxl
YWsgb2YgTW9kdWxlSW5mb3JtYXRpb25zIGluIEJCUVBsYW4gY29uc3RydWN0b3JzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBh
OTZiY2I3YzcwYWZmNTcwMzgzNmEwMzBmZTlmNGVmY2FmMTI2NjM1Li44N2YzMjkxODc1ZDNhM2M2
ODFiNTE1ODQ5M2YzYTU3YzIwZjNkZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTA2LTIz
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRj
aCBWTVRyYXBzIHRvIHVzZSBoYWx0IGluc3RydWN0aW9ucyByYXRoZXIgdGhhbiBicmVha3BvaW50
IGluc3RydWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTczNjc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMjE3ODg5Mj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIFRyYXAg
c2lnbmFsIGhhbmRsZXIgY29kZSBzaW5jZSBpdCBwbGF5cyBiYWRseSB3aXRoIGxsZGIgYW5kIGNv
bWJpbmUKKyAgICAgICAgU0lHQlVTIHdpdGggU0lHU0VHViBzaW5jZSBkaXN0aWd1aXNoaW5nIHRo
ZW0gaXMgZ2VuZXJhbGx5IG5vbi1wb3J0YWJsZS4KKworICAgICAgICBBbHNvLCB1cGRhdGUgdGhl
IHBsYXRmb3JtIGNvZGUgdG8gb25seSB1c2Ugc2lnbmFsaW5nIFZNVHJhcHMKKyAgICAgICAgb24g
d2hlcmUgd2UgaGF2ZSBhbiBhcHByb3ByaWF0ZSBpbnN0cnVjdGlvbiAoeDg2IGFuZCBBUk02NCku
CisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9TaWdu
YWxzLmNwcDoKKyAgICAgICAgKFdURjo6ZnJvbU1hY2hFeGNlcHRpb24pOgorICAgICAgICAoV1RG
Ojp0b01hY2hNYXNrKToKKyAgICAgICAgKFdURjo6aW5zdGFsbFNpZ25hbEhhbmRsZXIpOgorICAg
ICAgICAoV1RGOjpqc2NTaWduYWxIYW5kbGVyKToKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9TaWdu
YWxzLmg6CisgICAgICAgIChXVEY6OnRvU3lzdGVtU2lnbmFsKToKKyAgICAgICAgKFdURjo6ZnJv
bVN5c3RlbVNpZ25hbCk6CisKIDIwMTctMDYtMjAgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVs
ZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIFJlbW92ZSBleGNlc3NpdmUgaW5jbHVkZSBkaXJlY3Rp
dmVzIGZyb20gV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90
ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcAppbmRleCBhM2MzOWE3NjFjMjQ1Y2RkNTk1
ODM1YjgzOGFkMDVmYTc3ZjAwZmNlLi45ZGM0ZDY3MWE0ODIxNTlkYjI5ZjZmMTRjMWYzZWRiZmI1
MmNiMTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1
dGlvblRpbWVMaW1pdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBpbnQgdGVz
dEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgICAgIHsgIkxMSU5UIiwgICAgMCwgICAiLS11c2VD
b25jdXJyZW50SklUPWZhbHNlIC0tdXNlTExJbnQ9dHJ1ZSAtLXVzZUpJVD1mYWxzZSIgfSwKICAg
ICAgICAgeyAiQmFzZWxpbmUiLCAwLCAgICItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2UgLS11c2VM
TEludD10cnVlIC0tdXNlSklUPXRydWUgLS11c2VERkdKSVQ9ZmFsc2UiIH0sCiAgICAgICAgIHsg
IkRGRyIsICAgICAgMCwgICAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNlTExJbnQ9dHJ1
ZSAtLXVzZUpJVD10cnVlIC0tdXNlREZHSklUPXRydWUgLS11c2VGVExKSVQ9ZmFsc2UiIH0sCi0g
ICAgICAgIHsgIkZUTCIsICAgICAgMjAwLCAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNl
TExJbnQ9dHJ1ZSAtLXVzZUpJVD10cnVlIC0tdXNlREZHSklUPXRydWUgLS11c2VGVExKSVQ9dHJ1
ZSIgfSwKKyAgICAgICAgeyAiRlRMIiwgICAgICAzMDAsICItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFs
c2UgLS11c2VMTEludD10cnVlIC0tdXNlSklUPXRydWUgLS11c2VERkdKSVQ9dHJ1ZSAtLXVzZUZU
TEpJVD10cnVlIiB9LAogICAgIH07CiAgICAgCiAgICAgYm9vbCBmYWlsZWQgPSBmYWxzZTsKQEAg
LTE1MSw3ICsxNTEsMzkgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICBK
U09iamVjdFJlZiBjdXJyZW50Q1BVVGltZUZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25X
aXRoQ2FsbGJhY2soY29udGV4dCwgY3VycmVudENQVVRpbWVTdHIsIGN1cnJlbnRDUFVUaW1lQXNK
U0Z1bmN0aW9uQ2FsbGJhY2spOwogICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQs
IGdsb2JhbE9iamVjdCwgY3VycmVudENQVVRpbWVTdHIsIGN1cnJlbnRDUFVUaW1lRnVuY3Rpb24s
IGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgbnVsbHB0cik7CiAgICAgICAgIEpTU3RyaW5nUmVs
ZWFzZShjdXJyZW50Q1BVVGltZVN0cik7Ci0gICAgICAgIAorCisgICAgICAgIC8qIFRlc3Qgc2Ny
aXB0IG9uIGFub3RoZXIgdGhyZWFkOiAqLworICAgICAgICB0aW1lTGltaXQgPSAoMTAwICsgdGll
ckFkanVzdG1lbnRNaWxsaXMpIC8gMTAwMC4wOworICAgICAgICBKU0NvbnRleHRHcm91cFNldEV4
ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRpbWVMaW1pdCwgc2hvdWxkVGVybWluYXRl
Q2FsbGJhY2ssIDApOworICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCB0aW1lQWZ0ZXJX
YXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCA9IDMwMCArIHRpZXJBZGp1c3RtZW50TWlsbGlzOworCisg
ICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiZnVuY3Rpb24gZm9vKCkgeyB3aGlsZSAodHJ1ZSkgeyB9IH0gZm9vKCk7Iik7CisgICAg
ICAgICAgICBleGNlcHRpb24gPSBudWxscHRyOworICAgICAgICAgICAgSlNWYWx1ZVJlZiogZXhu
ID0gJmV4Y2VwdGlvbjsKKyAgICAgICAgICAgIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2Fs
bGVkID0gZmFsc2U7CisgICAgICAgICAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJS
b2d1ZSB0aHJlYWQiLCBbPV0geworICAgICAgICAgICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY29u
dGV4dCwgc2NyaXB0LCBudWxscHRyLCBudWxscHRyLCAxLCBleG4pOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIHNsZWVwKFNlY29uZHModGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZl
RmlyZWQgLyAxMDAwLjApKTsKKworICAgICAgICAgICAgaWYgKHNob3VsZFRlcm1pbmF0ZUNhbGxi
YWNrV2FzQ2FsbGVkKQorICAgICAgICAgICAgICAgIHByaW50ZigiUEFTUzogJXMgc2NyaXB0IHRp
bWVkIG91dCBhcyBleHBlY3RlZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBzY3JpcHQgdGltZW91dCBj
YWxsYmFjayB3YXMgbm90IGNhbGxlZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAg
ICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghZXhjZXB0
aW9uKSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBUZXJtaW5hdGVkRXhlY3V0
aW9uRXhjZXB0aW9uIHdhcyBub3QgdGhyb3duLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAg
ICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhyZWFk
LT53YWl0Rm9yQ29tcGxldGlvbigpOworICAgICAgICAgICAgdGVzdFJlc2V0QWZ0ZXJUaW1lb3V0
KGZhaWxlZCk7CisgICAgICAgIH0KKwogICAgICAgICAvKiBUZXN0IHNjcmlwdCB0aW1lb3V0OiAq
LwogICAgICAgICB0aW1lTGltaXQgPSAoMTAwICsgdGllckFkanVzdG1lbnRNaWxsaXMpIC8gMTAw
MC4wOwogICAgICAgICBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0
R3JvdXAsIHRpbWVMaW1pdCwgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2ssIDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCmluZGV4IDZhZDQ2
ZGU3OTEwYTM2MzYwMzRiYzM1NDY2NWZhMWY0MWRhYTVjNjkuLmI4NTA2NzNlZjY3ODQxYTlhOTZm
MjdjNTIzNDJkNDFmMDczNzBlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKQEAgLTI2MDIsOSArMjYwMiwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIGxpbmtQb2ludGVyKGFkZHJlc3NPZihjb2RlLCB3aGVyZSksIHZhbHVlUHRyKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEJrcHQodm9pZCogd2hlcmUpCisgICAg
c3RhdGljIHZvaWQgcmVwbGFjZVdpdGhWTUhhbHQodm9pZCogd2hlcmUpCiAgICAgewotICAgICAg
ICBpbnQgaW5zbiA9IGV4Y2VwbkdlbmVyYXRpb24oRXhjZXBuT3BfQlJFQUtQT0lOVCwgMCwgMCk7
CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIHRyeSB0byB3cml0ZSB0byBudWxsIHdoaWNoIHNob3Vs
ZCBhbHdheXMgU2VnZmF1bHQuCisgICAgICAgIGludCBpbnNuID0gZGF0YUNhY2hlWmVyb1ZpcnR1
YWxBZGRyZXNzKEFSTTY0UmVnaXN0ZXJzOjp6cik7CiAgICAgICAgIHBlcmZvcm1KSVRNZW1jcHko
d2hlcmUsICZpbnNuLCBzaXplb2YoaW50KSk7CiAgICAgICAgIGNhY2hlRmx1c2god2hlcmUsIHNp
emVvZihpbnQpKTsKICAgICB9CkBAIC0zNjU1LDYgKzM2NTYsMTEgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgICAgIHJldHVybiBoaW50UHNldWRvKDApOwogICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgc3RhdGljIGludCBkYXRhQ2FjaGVaZXJvVmlydHVhbEFkZHJlc3MoUmVnaXN0ZXJJRCBydCkK
KyAgICB7CisgICAgICAgIHJldHVybiBzeXN0ZW0oMCwgMSwgMHgzLCAweDcsIDB4NCwgMHgxLCBy
dCk7CisgICAgfQogICAgIAogICAgIC8vICdvcCcgbWVhbnMgbmVnYXRlCiAgICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgaW50IHRlc3RBbmRCcmFuY2hJbW1lZGlhdGUoYm9vbCBvcCwgaW50IGI1MCwg
aW50IGltbTE0LCBSZWdpc3RlcklEIHJ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQVJNQXNzZW1ibGVyLmgKaW5kZXggOTFjZTBiMjlkYTJkZTRlOGE3YWI4NjkyZWIyYTg4
N2I5MTliYThhOS4uNDhlMTEwMTcyNDRkZGNmN2ZiMTI3MjBhOGIxZDg1OWJiN2VhZTllYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oCkBAIC05
OTUsMTMgKzk5NSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlYWRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdl
dEFic29sdXRlSnVtcEFkZHJlc3MoZnJvbSkpKSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0
aWMgdm9pZCByZXBsYWNlV2l0aEJrcHQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKLSAgICAgICAg
ewotICAgICAgICAgICAgQVJNV29yZCogaW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9jYXN0PEFS
TVdvcmQqPihpbnN0cnVjdGlvblN0YXJ0KTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uWzBdID0g
QktQVDsKLSAgICAgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihBUk1Xb3Jk
KSk7Ci0gICAgICAgIH0KLQogICAgICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9p
ZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCiAgICAgICAgIHsKICAgICAgICAgICAgIEFS
TVdvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4oaW5zdHJ1Y3Rp
b25TdGFydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FS
TXY3QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNz
ZW1ibGVyLmgKaW5kZXggNmNkNDAyNWIxMjE1ZThhZGY4NGMzN2IzOTVjMGQ3YmYwYjY1NTdkNC4u
ZWI2MTUwOWUxNDhhM2NmNjJiM2U1ZGRhYjhkZWZlOTZhNjRkOTc3NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaApAQCAtMjMyOCwxNiAr
MjMyOCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KHJlYWRJbnQzMih3aGVyZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
QmtwdCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCEoYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25TdGFydCkgJiAxKSk7Ci0KLSAgICAgICAg
dWludDE2X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihpbnN0cnVjdGlvblN0
YXJ0KTsKLSAgICAgICAgdWludDE2X3QgaW5zdHJ1Y3Rpb25zID0gT1BfQktQVDsKLSAgICAgICAg
cGVyZm9ybUpJVE1lbWNweShwdHIsICZpbnN0cnVjdGlvbnMsIHNpemVvZih1aW50MTZfdCkpOwot
ICAgICAgICBjYWNoZUZsdXNoKHB0ciwgc2l6ZW9mKHVpbnQxNl90KSk7Ci0gICAgfQotCiAgICAg
c3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIHZvaWQq
IHRvKQogICAgIHsKICAgICAgICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW5z
dHJ1Y3Rpb25TdGFydCkgJiAxKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTUlQU0Fzc2VtYmxlci5oCmluZGV4IDVmYTBmYTAwOGZjZTc0MGRlZTkzZGI4YjdkZDZiMTdk
MjExMTExOWQuLjI3MGNjZTM0ZWRiYjg1NjQwMGRkMDkyMTk0MTEyYTYxMGVkMmZkY2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCkBAIC05
NDEsMTUgKzk0MSw2IEBAIHB1YmxpYzoKICAgICAgICAgY2FjaGVGbHVzaChpbnNuLCBjb2RlU2l6
ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhCa3B0KHZvaWQqIGluc3Ry
dWN0aW9uU3RhcnQpCi0gICAgewotICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihpbnN0cnVjdGlvblN0YXJ0KSAmIDMpKTsKLSAgICAgICAgTUlQU1dvcmQqIGluc24gPSBy
ZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5z
dHJ1Y3Rpb25TdGFydCkpOwotICAgICAgICBpbnQgdmFsdWUgPSA1MTI7IC8qIEJSS19CVUcgKi8K
LSAgICAgICAgaW5zblswXSA9ICgweDAwMDAwMDBkIHwgKCh2YWx1ZSAmIDB4M2ZmKSA8PCBPUF9T
SF9DT0RFKSk7Ci0gICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb25TdGFydCwgc2l6ZW9mKE1J
UFNXb3JkKSk7Ci0gICAgfQotCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQq
IGluc3RydWN0aW9uU3RhcnQsIHZvaWQqIHRvKQogICAgIHsKICAgICAgICAgQVNTRVJUKCEoYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25TdGFydCkgJiAzKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKaW5kZXgg
NmY1ZjM3ZTUxYjkyMTMwNTdjMjJlZGUxY2Q0ODNlYzFjMTNkY2I2MC4uMmI4MGQyNDdmOTdhNTAz
ZDRkNWY0NWNkOTg1MmZjMjQyOTIxZWJhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApAQCAtMTQ5OSwxMSArMTQ5OSw2IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCgqKSgpPihBUk1Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwuZGF0YUxvY2F0aW9uKCkp
KSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhCcmVha3BvaW50KENvZGVM
b2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQpCi0gICAgewotICAgICAgICBBUk1Bc3NlbWJs
ZXI6OnJlcGxhY2VXaXRoQmtwdChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCkp
OwotICAgIH0KLQogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25M
YWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKICAg
ICB7CiAgICAgICAgIEFSTUFzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3Rh
cnQuZGF0YUxvY2F0aW9uKCksIGRlc3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgK
aW5kZXggZmQ0OTRhMDUwOTYzMzdhMTU1NzIzNTIwN2U1NDhkNmYyZTk0ODA2YS4uYzM3ZTAwYjZj
NjRiMTkyNGY3ODY2Zjc1YjMyOGUzOTZlMTBmNTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTM3MTMsOSAr
MzcxMyw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCgqKSgpPihBUk02NEFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRh
TG9jYXRpb24oKSkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEJyZWFr
cG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aFZNSGFsdChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0KQog
ICAgIHsKLSAgICAgICAgQVJNNjRBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQmtwdChpbnN0cnVjdGlv
blN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICBBUk02NEFzc2VtYmxlcjo6cmVw
bGFjZVdpdGhWTUhhbHQoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwg
aW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
CmluZGV4IDU0MzM1YTI5YmM4YTRjYzVlZDZhMzE2OTcyMDY3OWJkMGZhOWM3ZGQuLmYzZmU2MWRi
ZTM1NmFmMzNlYTE5ZmJkOTljNWFmOGRhNzNhMTY2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xMzU0LDEx
ICsxMzU0LDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuZG1iSVNIU1Qo
KTsKICAgICB9Ci0gICAgCi0gICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhCcmVha3BvaW50KENv
ZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQpCi0gICAgewotICAgICAgICBBUk12N0Fz
c2VtYmxlcjo6cmVwbGFjZVdpdGhCa3B0KGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCkp
OwotICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25M
YWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlck1JUFMuaAppbmRleCBmZjQwMDkwMWMyNDUwZDRkYzk5YzRiNjEyZWY1NDUwODQ0NTBjYTkx
Li5mYTA1YmUxNzllZjExOTY3Y2Q4NjA4NmIxYzQwY2YyODY5ZWJjMDRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAg
LTMwNzIsMTEgKzMwNzIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4oTUlQU0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQo
Y2FsbC5kYXRhTG9jYXRpb24oKSkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNl
V2l0aEJyZWFrcG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKLSAgICB7
Ci0gICAgICAgIE1JUFNBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQmtwdChpbnN0cnVjdGlvblN0YXJ0
LmV4ZWN1dGFibGVBZGRyZXNzKCkpOwotICAgIH0KLQogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VX
aXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25M
YWJlbCBkZXN0aW5hdGlvbikKICAgICB7CiAgICAgICAgIE1JUFNBc3NlbWJsZXI6OnJlcGxhY2VX
aXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5kYXRh
TG9jYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggMzJkYTQ1MGI0M2Q4Zjc4YTA1NDlk
YjI4NWRiMTJjMmQ0Mzg5MjdkZC4uNmFjYzJhOTY5ZGMyM2E3OTljYjY2OTIwYjkyOGJkNThhNjcy
NDdhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMzgwMyw5ICszODAzLDkgQEAgcHVibGljOgog
ICAgIH0KICNlbmRpZgogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhCcmVha3BvaW50KENv
ZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQpCisgICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhWTUhhbHQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKICAgICB7Ci0g
ICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhJbnQzKGluc3RydWN0aW9uU3RhcnQuZXhl
Y3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhIbHQo
aW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICB9CiAKICAgICBzdGF0
aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFy
dCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCBhZGRjN2Q4MTE4NDBlY2M1NTQwNWJm
NDcxYzZmYjcyM2VhYWRmYjc0Li41YjY0ZjAyYWY2NjVjMDRkMGFlMmZjNDc0M2ExNmNjZDA1NWFl
MmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgKQEAgLTM2MzcsMTAgKzM2MzcsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKio+KHdoZXJlKVstMV07CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQg
cmVwbGFjZVdpdGhJbnQzKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCisgICAgc3RhdGljIHZvaWQg
cmVwbGFjZVdpdGhIbHQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKICAgICB7CiAgICAgICAgIHVp
bnQ4X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQp
OwotICAgICAgICBwdHJbMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihPUF9JTlQzKTsKKyAgICAg
ICAgcHRyWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oT1BfSExUKTsKICAgICB9CiAKICAgICBz
dGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCog
dG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0p1bXBSZXBsYWNl
bWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0p1bXBSZXBsYWNlbWVudC5j
cHAKaW5kZXggMjQ3YmRhOWIwMjZlMGE5N2Q2ZTliYWY1MDZmYmQ0MDNjMDkyODUyMy4uMWViZjY5
NGNlNGNmODc4MWMyNTQ2N2YyMTk4MGQ4ZTUxNzIyNTg3YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKdW1wUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcApAQCAtNDMsNyArNDMsMTEgQEAg
dm9pZCBKdW1wUmVwbGFjZW1lbnQ6OmZpcmUoKQogCiB2b2lkIEp1bXBSZXBsYWNlbWVudDo6aW5z
dGFsbFZNVHJhcEJyZWFrcG9pbnQoKQogewotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0
aEJyZWFrcG9pbnQobV9zb3VyY2UpOworI2lmIEVOQUJMRShTSUdOQUxfQkFTRURfVk1fVFJBUFMp
CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoVk1IYWx0KG1fc291cmNlKTsKKyNlbHNl
CisgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CisjZW5kaWYKIH0KIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk1UcmFwcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNw
cAppbmRleCA1MWYyOGQzZTljZDcxZmYxNDI2Y2Q4ZjhiODljMjEyNzg2MTY2ODZmLi40NGQ1M2Vh
ZmVjNTAyNWM2ZmFkZjljNjA2NDAxMGFkNjk0YWM4ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTVRyYXBzLmNwcApAQCAtNTksMTcgKzU5LDYgQEAgc3RydWN0IFNpZ25hbENv
bnRleHQgewogICAgICAgICAsIHN0YWNrUG9pbnRlcihNYWNoaW5lQ29udGV4dDo6c3RhY2tQb2lu
dGVyKHJlZ2lzdGVycykpCiAgICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0Ojpm
cmFtZVBvaW50ZXIocmVnaXN0ZXJzKSkKICAgICB7Ci0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKFg4
NikKLSAgICAgICAgLy8gT24gWDg2XzY0LCBTSUdUUkFQIHJlcG9ydHMgdGhlIGFkZHJlc3MgYWZ0
ZXIgdGhlIHRyYXBwaW5nIFBDLiBTbywgZGVjIGJ5IDEuCi0gICAgICAgIHRyYXBQQyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRyYXBQQykgLSAxOwotI2VuZGlmCi0gICAgfQotCi0gICAg
dm9pZCBhZGp1c3RQQ1RvUG9pbnRUb1RyYXBwaW5nSW5zdHJ1Y3Rpb24oKQotICAgIHsKLSNpZiBD
UFUoWDg2XzY0KSB8fCBDUFUoWDg2KQotICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rp
b25Qb2ludGVyKHJlZ2lzdGVycykgPSB0cmFwUEM7Ci0jZW5kaWYKICAgICB9CiAKICAgICBQbGF0
Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzOwpAQCAtMTMwLDcgKzExOSw3IEBAIHN0YXRpYyBFeHBl
Y3RlZDxWTUFuZFN0YWNrQm91bmRzLCBWTVRyYXBzOjpFcnJvcj4gZmluZEFjdGl2ZVZNQW5kU3Rh
Y2tCb3VuZHMoU2lnCiAKIHN0YXRpYyB2b2lkIGluc3RhbGxTaWduYWxIYW5kbGVyKCkKIHsKLSAg
ICBpbnN0YWxsU2lnbmFsSGFuZGxlcihTaWduYWw6OlRyYXAsIFtdIChTaWduYWwsIFNpZ0luZm8m
LCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSAtPiBTaWduYWxBY3Rpb24geworICAgIGlu
c3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6QmFkQWNjZXNzLCBbXSAoU2lnbmFsLCBTaWdJbmZv
JiwgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykgLT4gU2lnbmFsQWN0aW9uIHsKICAgICAg
ICAgU2lnbmFsQ29udGV4dCBjb250ZXh0KHJlZ2lzdGVycyk7CiAKICAgICAgICAgaWYgKCFpc0pJ
VFBDKGNvbnRleHQudHJhcFBDKSkKQEAgLTI5NywxMCArMjg2LDYgQEAgYXV0byBWTVRyYXBzOjp0
cnlKZXR0aXNvbkNvZGVCbG9ja3NPblN0YWNrKFNpZ25hbENvbnRleHQmIGNvbnRleHQpIC0+IEV4
cGVjdGVkPGIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaW52YWxpZGF0ZUNvZGVCbG9j
a3NPblN0YWNrKGNvZGVCbG9ja1NldExvY2tlciwgdG9wQ2FsbEZyYW1lKTsKLQotICAgIC8vIFJl
LXJ1biB0aGUgdHJhcHBpbmcgaW5zdHJ1Y3Rpb24gbm93IHRoYXQgd2UndmUgcGF0Y2hlZCBpdCB3
aXRoIHRoZSBpbnZhbGlkYXRpb24KLSAgICAvLyBPU1IgZXhpdCBvZmYtcmFtcC4KLSAgICBjb250
ZXh0LmFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlvbigpOwogICAgIHJldHVybiB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1
bHRTaWduYWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVs
dFNpZ25hbEhhbmRsZXIuY3BwCmluZGV4IDI2NGMzNGRlNDVkYTE3NWE1ZDUxNDFjMTcxZWZlOTVl
MDYzYzVlMjcuLmU4NmZkNDc5OTBlODg4OGQyNmZkZGZhNzM5NGU0NzZhYmNjODAxODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRs
ZXIuY3BwCkBAIC0xMjMsMTEgKzEyMyw3IEBAIHZvaWQgZW5hYmxlRmFzdE1lbW9yeSgpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFlfRkFTVF9NRU1PUlkpCi0g
ICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6QnVzLCBbXSAoU2lnbmFsIHNpZ25h
bCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMmIHVjb250ZXh0KSB7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJhcEhhbmRsZXIoc2lnbmFsLCBzaWdJbmZvLCB1Y29udGV4dCk7Ci0g
ICAgICAgIH0pOwotCi0gICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6U2VnViwg
W10gKFNpZ25hbCBzaWduYWwsIFNpZ0luZm8mIHNpZ0luZm8sIFBsYXRmb3JtUmVnaXN0ZXJzJiB1
Y29udGV4dCkgeworICAgICAgICBpbnN0YWxsU2lnbmFsSGFuZGxlcihTaWduYWw6OkJhZEFjY2Vz
cywgW10gKFNpZ25hbCBzaWduYWwsIFNpZ0luZm8mIHNpZ0luZm8sIFBsYXRmb3JtUmVnaXN0ZXJz
JiB1Y29udGV4dCkgewogICAgICAgICAgICAgcmV0dXJuIHRyYXBIYW5kbGVyKHNpZ25hbCwgc2ln
SW5mbywgdWNvbnRleHQpOwogICAgICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggNTAwNDA3N2E1
NmEyZjJhZTM1MDdjNTRkZjVlODI4MGNlYWI4MTAwMy4uODdiYjNiYjQzZjM4MDg5Zjc0NWNjZmJm
OTJhNGUxNmE2Y2FjNmE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC05NzQsNyArOTc0LDcgQEAKICNlbmRp
ZgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSklUKSAmJiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKKyNp
ZiBFTkFCTEUoSklUKSAmJiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkgJiYgKENQVShYODYpIHx8IENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkpCiAjZGVmaW5lIEVOQUJMRV9TSUdOQUxfQkFTRURfVk1f
VFJBUFMgMQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2ln
bmFscy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCmluZGV4IGYwMWUz
OTExM2IwYzYyMTkwYmRiZWYxM2VhYmEyMmEwZTE0ODliYzIuLjkxOWM2NWMyYmNiMTFhNjY2MmU4
NTAwOTE1NDkzMmY0MDIzYTEyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMv
U2lnbmFscy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcApAQCAt
MTE3LDkgKzExNyw4IEBAIHN0YXRpYyB2b2lkIHN0YXJ0TWFjaEV4Y2VwdGlvbkhhbmRsZXJUaHJl
YWQoKQogc3RhdGljIFNpZ25hbCBmcm9tTWFjaEV4Y2VwdGlvbihleGNlcHRpb25fdHlwZV90IHR5
cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBFWENfQkFEX0FDQ0VTUzogcmV0
dXJuIFNpZ25hbDo6U2VnVjsKKyAgICBjYXNlIEVYQ19CQURfQUNDRVNTOiByZXR1cm4gU2lnbmFs
OjpCYWRBY2Nlc3M7CiAgICAgY2FzZSBFWENfQkFEX0lOU1RSVUNUSU9OOiByZXR1cm4gU2lnbmFs
OjpJbGw7Ci0gICAgY2FzZSBFWENfQlJFQUtQT0lOVDogcmV0dXJuIFNpZ25hbDo6VHJhcDsKICAg
ICBkZWZhdWx0OiBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFNpZ25hbDo6VW5rbm93bjsKQEAg
LTEyOCw5ICsxMjcsOCBAQCBzdGF0aWMgU2lnbmFsIGZyb21NYWNoRXhjZXB0aW9uKGV4Y2VwdGlv
bl90eXBlX3QgdHlwZSkKIHN0YXRpYyBleGNlcHRpb25fbWFza190IHRvTWFjaE1hc2soU2lnbmFs
IHNpZ25hbCkKIHsKICAgICBzd2l0Y2ggKHNpZ25hbCkgewotICAgIGNhc2UgU2lnbmFsOjpTZWdW
OiByZXR1cm4gRVhDX01BU0tfQkFEX0FDQ0VTUzsKKyAgICBjYXNlIFNpZ25hbDo6QmFkQWNjZXNz
OiByZXR1cm4gRVhDX01BU0tfQkFEX0FDQ0VTUzsKICAgICBjYXNlIFNpZ25hbDo6SWxsOiByZXR1
cm4gRVhDX01BU0tfQkFEX0lOU1RSVUNUSU9OOwotICAgIGNhc2UgU2lnbmFsOjpUcmFwOiByZXR1
cm4gRVhDX01BU0tfQlJFQUtQT0lOVDsKICAgICBkZWZhdWx0OiBicmVhazsKICAgICB9CiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE2Niw2ICsxNjQsMTEgQEAga2Vybl9y
ZXR1cm5fdCBjYXRjaF9tYWNoX2V4Y2VwdGlvbl9yYWlzZV9zdGF0ZSgKICAgICBtYWNoX21zZ190
eXBlX251bWJlcl90KiBvdXRTdGF0ZUNvdW50KQogewogICAgIFJFTEVBU0VfQVNTRVJUKHBvcnQg
PT0gZXhjZXB0aW9uUG9ydCk7CisgICAgLy8gSWYgd2Ugd2FudGVkIHRvIGRpc3Rpbmdpc2ggYmV0
d2VlbiBTSUdCVVMgYW5kIFNJR1NFR1YgZm9yIEVYQ19CQURfQUNDRVNTIG9uIERhcndpbiB3ZSBj
b3VsZCBkbzoKKyAgICAvLyBpZiAoZXhjZXB0aW9uRGF0YVswXSA9PSBLRVJOX0lOVkFMSURfQURE
UkVTUykKKyAgICAvLyAgICBzaWduYWwgPSBTSUdTRUdWOworICAgIC8vIGVsc2UKKyAgICAvLyAg
ICBzaWduYWwgPSBTSUdCVVM7CiAgICAgU2lnbmFsIHNpZ25hbCA9IGZyb21NYWNoRXhjZXB0aW9u
KGV4Y2VwdGlvblR5cGUpOwogICAgIFJFTEVBU0VfQVNTRVJUKHNpZ25hbCAhPSBTaWduYWw6OlVu
a25vd24pOwogCkBAIC0xODcsNyArMTkwLDcgQEAga2Vybl9yZXR1cm5fdCBjYXRjaF9tYWNoX2V4
Y2VwdGlvbl9yYWlzZV9zdGF0ZSgKICNlbmRpZgogCiAgICAgU2lnSW5mbyBpbmZvOwotICAgIGlm
IChzaWduYWwgPT0gU2lnbmFsOjpTZWdWKSB7CisgICAgaWYgKHNpZ25hbCA9PSBTaWduYWw6OkJh
ZEFjY2VzcykgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGRhdGFDb3VudCwgZGF0YUNvdW50ID09
IDIpOwogICAgICAgICBpbmZvLmZhdWx0aW5nQWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGV4Y2VwdGlvbkRhdGFbMV0pOwogICAgIH0KQEAgLTI1NSwxMiArMjU4LDYgQEAgdm9pZCBp
bnN0YWxsU2lnbmFsSGFuZGxlcihTaWduYWwgc2lnbmFsLCBTaWduYWxIYW5kbGVyJiYgaGFuZGxl
cikKIHsKICAgICBBU1NFUlQoc2lnbmFsIDwgU2lnbmFsOjpVbmtub3duKTsKICNpZiBIQVZFKE1B
Q0hfRVhDRVBUSU9OUykKLSAgICAvLyBTaW5jZSBtYWNoIG9ubHkgaGFzIEVYQ19CQURfQUNDRVNT
LCB3aGljaCBjb3ZlcnMgYm90aCBTZWdWIGFuZCBCdXMsIHdlIGFyYml0YXJpbHkgY2hvb3NlIHRv
IG1ha2UKLSAgICAvLyBtYWNoIEVYQ19CQURfQUNDRVNTZXMgbWFwIHRvIFNlZ1YuCi0gICAgLy8g
RklYTUU6IFdlIHNob3VsZCBqdXN0IHVzZSBhIHNpbmdsZSBTaWduYWw6OkJhZEFjY2VzcyB2YWx1
ZSBpbnN0ZWFkIG9mIFNlZ1YvQnVzLgotICAgIC8vIFNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MjA2MwotICAgIGlmIChzaWduYWwgPT0gU2lnbmFsOjpCdXMg
JiYgdXNlTWFjaCkKLSAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCghdXNlTWFjaCB8fCBzaWdu
YWwgIT0gU2lnbmFsOjpVc3IpOwogCiAgICAgaWYgKHVzZU1hY2gpCkBAIC0yNzYsNyArMjczLDEw
IEBAIHZvaWQgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsIHNpZ25hbCwgU2lnbmFsSGFuZGxl
ciYmIGhhbmRsZXIpCiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ2ZpbGxzZXQoJmFjdGlv
bi5zYV9tYXNrKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOwogICAgICAg
ICAgICAgYWN0aW9uLnNhX2ZsYWdzID0gU0FfU0lHSU5GTzsKLSAgICAgICAgICAgIHJlc3VsdCA9
IHNpZ2FjdGlvbih0b1N5c3RlbVNpZ25hbChzaWduYWwpLCAmYWN0aW9uLCAmb2xkQWN0aW9uc1tz
dGF0aWNfY2FzdDxzaXplX3Q+KHNpZ25hbCldKTsKKyAgICAgICAgICAgIGF1dG8gc3lzdGVtU2ln
bmFscyA9IHRvU3lzdGVtU2lnbmFsKHNpZ25hbCk7CisgICAgICAgICAgICByZXN1bHQgPSBzaWdh
Y3Rpb24oc3RkOjpnZXQ8MD4oc3lzdGVtU2lnbmFscyksICZhY3Rpb24sICZvbGRBY3Rpb25zW3N0
YXRpY19jYXN0PHNpemVfdD4oc2lnbmFsKV0pOworICAgICAgICAgICAgaWYgKHN0ZDo6Z2V0PDE+
KHN5c3RlbVNpZ25hbHMpKQorICAgICAgICAgICAgICAgIHJlc3VsdCB8PSBzaWdhY3Rpb24oc3Rk
OjpnZXQ8MD4oc3lzdGVtU2lnbmFscyksICZhY3Rpb24sICZvbGRBY3Rpb25zW3N0YXRpY19jYXN0
PHNpemVfdD4oc2lnbmFsKSArIDFdKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1
bHQpOwogICAgICAgICB9CiAKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIGpzY1NpZ25hbEhhbmRs
ZXIoaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiB1Y29udGV4dCkKICAgICB9CiAKICAg
ICBTaWdJbmZvIHNpZ0luZm87Ci0gICAgaWYgKHNpZ25hbCA9PSBTaWduYWw6OlNlZ1YgfHwgc2ln
bmFsID09IFNpZ25hbDo6QnVzKQorICAgIGlmIChzaWduYWwgPT0gU2lnbmFsOjpCYWRBY2Nlc3Mp
CiAgICAgICAgIHNpZ0luZm8uZmF1bHRpbmdBZGRyZXNzID0gaW5mby0+c2lfYWRkcjsKIAogICAg
IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMgPSByZWdpc3RlcnNGcm9tVUNvbnRleHQocmVp
bnRlcnByZXRfY2FzdDx1Y29udGV4dF90Kj4odWNvbnRleHQpKTsKQEAgLTM0MSw3ICszNDEsOCBA
QCB2b2lkIGpzY1NpZ25hbEhhbmRsZXIoaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiB1
Y29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0cnVjdCBzaWdhY3Rpb24m
IG9sZEFjdGlvbiA9IG9sZEFjdGlvbnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzaWduYWwpXTsKKyAg
ICB1bnNpZ25lZCBvbGRBY3Rpb25JbmRleCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2lnbmFsKSAr
IChzaWcgPT0gU0lHQlVTKTsKKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uJiBvbGRBY3Rpb24gPSBvbGRB
Y3Rpb25zW3N0YXRpY19jYXN0PHNpemVfdD4ob2xkQWN0aW9uSW5kZXgpXTsKICAgICBpZiAoc2ln
bmFsID09IFNpZ25hbDo6VXNyKSB7CiAgICAgICAgIGlmIChvbGRBY3Rpb24uc2Ffc2lnYWN0aW9u
KQogICAgICAgICAgICAgb2xkQWN0aW9uLnNhX3NpZ2FjdGlvbihzaWcsIGluZm8sIHVjb250ZXh0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oIGIvU291cmNl
L1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmgKaW5kZXggMjU3NmZhZDVhMDA0ODMzMjA4YzViYzI1
MGU1NDcwZDM3OGY3NTJiNC4uZmFhZTBhN2QyMDRlNTNmYWQwNDFmZTU2ZjMyNTExMzY4MTFhOWE4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1
ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oPgogCiBuYW1lc3Bh
Y2UgV1RGIHsKQEAgLTQxLDIyICs0MiwxOCBAQCBlbnVtIGNsYXNzIFNpZ25hbCB7CiAKICAgICAv
LyBUaGVzZSBzaWduYWxzIHdpbGwgb25seSBjaGFpbiBpZiB3ZSBkb24ndCBoYXZlIGEgaGFuZGxl
ciB0aGF0IGNhbiBwcm9jZXNzIHRoZW0uIElmIHRoZXJlIGlzIG5vdGhpbmcKICAgICAvLyB0byBj
aGFpbiB0byB3ZSByZXN0b3JlIHRoZSBkZWZhdWx0IGhhbmRsZXIgYW5kIGNyYXNoLgotICAgIFRy
YXAsCiAgICAgSWxsLAotICAgIFNlZ1YsCi0gICAgQnVzLAotICAgIE51bWJlck9mU2lnbmFscywK
KyAgICBCYWRBY2Nlc3MsIC8vIEZvciBwb3NpeCB0aGlzIGlzIGJvdGggU0lHU0VHViBhbmQgU0lH
QlVTCisgICAgTnVtYmVyT2ZTaWduYWxzID0gQmFkQWNjZXNzICsgMiwgLy8gQmFkQWNjZXNzIGlz
IHJlYWxseSB0d28gc2lnbmFscy4KICAgICBVbmtub3duID0gTnVtYmVyT2ZTaWduYWxzCiB9Owog
Ci1pbmxpbmUgaW50IHRvU3lzdGVtU2lnbmFsKFNpZ25hbCBzaWduYWwpCitpbmxpbmUgc3RkOjp0
dXBsZTxpbnQsIHN0ZDo6b3B0aW9uYWw8aW50Pj4gdG9TeXN0ZW1TaWduYWwoU2lnbmFsIHNpZ25h
bCkKIHsKICAgICBzd2l0Y2ggKHNpZ25hbCkgewotICAgIGNhc2UgU2lnbmFsOjpTZWdWOiByZXR1
cm4gU0lHU0VHVjsKLSAgICBjYXNlIFNpZ25hbDo6QnVzOiByZXR1cm4gU0lHQlVTOwotICAgIGNh
c2UgU2lnbmFsOjpJbGw6IHJldHVybiBTSUdJTEw7Ci0gICAgY2FzZSBTaWduYWw6OlVzcjogcmV0
dXJuIFNJR1VTUjI7Ci0gICAgY2FzZSBTaWduYWw6OlRyYXA6IHJldHVybiBTSUdUUkFQOworICAg
IGNhc2UgU2lnbmFsOjpCYWRBY2Nlc3M6IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoU0lHU0VHViwg
U0lHQlVTKTsKKyAgICBjYXNlIFNpZ25hbDo6SWxsOiByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFNJ
R0lMTCwgc3RkOjpudWxsb3B0KTsKKyAgICBjYXNlIFNpZ25hbDo6VXNyOiByZXR1cm4gc3RkOjpt
YWtlX3R1cGxlKFNJR0lMTCwgc3RkOjpudWxsb3B0KTsKICAgICBkZWZhdWx0OiBicmVhazsKICAg
ICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY1LDExICs2MiwxMCBA
QCBpbmxpbmUgaW50IHRvU3lzdGVtU2lnbmFsKFNpZ25hbCBzaWduYWwpCiBpbmxpbmUgU2lnbmFs
IGZyb21TeXN0ZW1TaWduYWwoaW50IHNpZ25hbCkKIHsKICAgICBzd2l0Y2ggKHNpZ25hbCkgewot
ICAgIGNhc2UgU0lHU0VHVjogcmV0dXJuIFNpZ25hbDo6U2VnVjsKLSAgICBjYXNlIFNJR0JVUzog
cmV0dXJuIFNpZ25hbDo6QnVzOworICAgIGNhc2UgU0lHU0VHVjogcmV0dXJuIFNpZ25hbDo6QmFk
QWNjZXNzOworICAgIGNhc2UgU0lHQlVTOiByZXR1cm4gU2lnbmFsOjpCYWRBY2Nlc3M7CiAgICAg
Y2FzZSBTSUdJTEw6IHJldHVybiBTaWduYWw6OklsbDsKICAgICBjYXNlIFNJR1VTUjI6IHJldHVy
biBTaWduYWw6OlVzcjsKLSAgICBjYXNlIFNJR1RSQVA6IHJldHVybiBTaWduYWw6OlRyYXA7CiAg
ICAgZGVmYXVsdDogcmV0dXJuIFNpZ25hbDo6VW5rbm93bjsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjdjYTM4NjQyN2VjNjQ0
ZTQ4ZTc3YWJkM2U3NjM5Y2Y0ZTc3ODk4Yi4uOTI0Y2VhZGFhMDdiMzhkNzUxZmE5MTRjMTIzOTRh
MmJmZmQ4Y2EzMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA2LTIzICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9t
aWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRjaCBWTVRyYXBzIHRvIHVzZSBoYWx0IGlu
c3RydWN0aW9ucyByYXRoZXIgdGhhbiBicmVha3BvaW50IGluc3RydWN0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNjc3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9UaHJlYWRNZXNzYWdlcy5jcHA6CisgICAgICAgIChURVNUKToKKwogMjAxNy0wNi0y
MCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
IERuRF0gW1dLMl0gUmVtb3ZlIGN1c3RvbSBsb2dpYyBmb3IgZGlzYW1iaWd1YXRpbmcgbG9uZyBw
cmVzcyBhY3Rpb24gc2hlZXQgZ2VzdHVyZXMgYW5kIGRyYWcgbGlmdApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVzc2FnZXMuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVzc2FnZXMuY3BwCmluZGV4IGU2YTU3ODk0YmI1
MTZmZTFjZTcxM2QwN2JmMThmMDcwNmVmYTkzN2MuLmU2Y2JjYjRjYzMzNDIyNzQ2OTczMzkzZjJj
N2RjODU2OWUxOThlNmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1RocmVhZE1lc3NhZ2VzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9U
aHJlYWRNZXNzYWdlcy5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBURVNUKFRocmVhZE1lc3NhZ2Us
IFNpZ25hbHNXb3JrT25FeGl0KQogICAgICAgICByZWNlaXZlclNob3VsZEtlZXBSdW5uaW5nLnN0
b3JlKGZhbHNlKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PFJlZmxlY3RlZFRo
cmVhZCo+KHJlY2VpdmVyVGhyZWFkLmdldCgpKS0+aGFzRXhpdGVkKCkpOwogICAgICAgICBzbGVl
cCgxKTsKLSAgICAgICAgc2lnbmFsRmlyZWQgPSAhcHRocmVhZF9raWxsKHN0YXRpY19jYXN0PFJl
ZmxlY3RlZFRocmVhZCo+KHJlY2VpdmVyVGhyZWFkLmdldCgpKS0+bV9oYW5kbGUsIHRvU3lzdGVt
U2lnbmFsKFNpZ25hbDo6VXNyKSk7CisgICAgICAgIHNpZ25hbEZpcmVkID0gIXB0aHJlYWRfa2ls
bChzdGF0aWNfY2FzdDxSZWZsZWN0ZWRUaHJlYWQqPihyZWNlaXZlclRocmVhZC5nZXQoKSktPm1f
aGFuZGxlLCB0b1N5c3RlbVNpZ25hbChTaWduYWw6OlVzcikpLmdldDwwPigpOwogICAgIH0KIAog
ICAgIHJlY2VpdmVyVGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313753</attachid>
            <date>2017-06-23 15:06:34 -0700</date>
            <delta_ts>2017-06-23 17:32:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-173677-20170623150633.patch</filename>
            <type>text/plain</type>
            <size>27383</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OTY4YjZkNDMxZGIzM2RkN2M0OGVhNDY3MDJiMDNlYTg5Nzk5NzUyLi44NTI2ZTAyMTI5OTdjZTFh
NWE0MDkyMjAyMDg5NDRiOGU3ZmM3ZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxNy0wNi0yMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBTd2l0Y2ggVk1UcmFwcyB0byB1c2UgaGFsdCBpbnN0cnVjdGlvbnMg
cmF0aGVyIHRoYW4gYnJlYWtwb2ludCBpbnN0cnVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzY3NworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzIxNzg4OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAg
ICBVc2luZyB0aGUgYnJlYWtwb2ludCBpbnN0cnVjdGlvbiBmb3IgVk1UcmFwcyBjYXVzZWQgaXNz
dWVzIHdpdGggbGxkYi4KKyAgICAgICAgU2luY2Ugd2Ugb25seSBuZWVkIHNvbWUgd2F5IHRvIHN0
b3AgZXhlY3V0aW9uIHdlIGNhbiwgaW4gdGhlb3J5LCB1c2UKKyAgICAgICAgYW55IGV4Y2VwdGlv
bmluZyBpbnN0cnVjdGlvbiB3ZSB3YW50LiBJIHdlbnQgd2l0aCB0aGUgaGFsdCBpbnN0cnVjdGlv
bgorICAgICAgICBvbiBYODYgc2luY2UgdGhhdCBpcyB0aGUgb25seSBvbmUgYnl0ZSBpbnN0cnVj
dGlvbiB0aGF0IGRvZXMgbm90CisgICAgICAgIGJyZWFrcG9pbnQgKGluIG15IHRlc3RzIGJvdGgg
MHhmMSBhbmQgMHhkNiBwcm9kdWNlZCBFWENfQlJFQUtQT0lOVCkuCisgICAgICAgIE9uIEFSTSB3
ZSB1c2UgdGhlIGRhdGEgY2FjaGUgY2xlYXJpbmcgaW5zdHJ1Y3Rpb24gd2l0aCB0aGUgemVybyBy
ZWdpc3RlciwKKyAgICAgICAgd2hpY2ggdHJpZ2dlcnMgYSBzZWdtZW50YXRpb24gZmF1bHQuCisK
KyAgICAgICAgQWxzbywgdXBkYXRlIHRoZSBwbGF0Zm9ybSBjb2RlIHRvIG9ubHkgdXNlIHNpZ25h
bGluZyBWTVRyYXBzCisgICAgICAgIG9uIHdoZXJlIHdlIGhhdmUgYW4gYXBwcm9wcmlhdGUgaW5z
dHJ1Y3Rpb24gKHg4NiBhbmQgQVJNNjQpLgorCisgICAgICAgICogQVBJL3Rlc3RzL0V4ZWN1dGlv
blRpbWVMaW1pdFRlc3QuY3BwOgorICAgICAgICAodGVzdEV4ZWN1dGlvblRpbWVMaW1pdCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTTY0
QXNzZW1ibGVyOjpyZXBsYWNlV2l0aFZNSGFsdCk6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1i
bGVyOjpkYXRhQ2FjaGVaZXJvVmlydHVhbEFkZHJlc3MpOgorICAgICAgICAoSlNDOjpBUk02NEFz
c2VtYmxlcjo6cmVwbGFjZVdpdGhCa3B0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIv
QVJNQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6cmVwbGFjZVdpdGhC
a3B0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAg
ICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQmtwdCk6IERlbGV0ZWQuCisg
ICAgICAgICogYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TUlQU0Fz
c2VtYmxlcjo6cmVwbGFjZVdpdGhCa3B0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnJl
cGxhY2VXaXRoQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6cmVw
bGFjZVdpdGhWTUhhbHQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpyZXBs
YWNlV2l0aEJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnN0b3Jl
RmVuY2UpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpyZXBsYWNlV2l0aEJy
ZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1J
UFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpyZXBsYWNlV2l0aEJyZWFr
cG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cmVwbGFjZVdp
dGhWTUhhbHQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cmVwbGFj
ZVdpdGhCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhIbHQpOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSW50Myk6IERlbGV0ZWQuCisgICAg
ICAgICogZGZnL0RGR0p1bXBSZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SnVt
cFJlcGxhY2VtZW50OjppbnN0YWxsVk1UcmFwQnJlYWtwb2ludCk6CisgICAgICAgICogcnVudGlt
ZS9WTVRyYXBzLmNwcDoKKyAgICAgICAgKEpTQzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4
dCk6CisgICAgICAgIChKU0M6Omluc3RhbGxTaWduYWxIYW5kbGVyKToKKyAgICAgICAgKEpTQzo6
U2lnbmFsQ29udGV4dDo6YWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjplbmFibGVGYXN0TWVtb3J5KToKKwogMjAxNy0wNi0yMCAgS2VpdGggTWls
bGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbGVhayBvZiBNb2R1
bGVJbmZvcm1hdGlvbnMgaW4gQkJRUGxhbiBjb25zdHJ1Y3RvcnMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE5NmJjYjdjNzBh
ZmY1NzAzODM2YTAzMGZlOWY0ZWZjYWYxMjY2MzUuLjU4NGE5ZmVhM2YzYmM0MDQxNzc2YjI5ZTJh
ZDhkMzk3OWUxYjc2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTctMDYtMjMgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIFZNVHJhcHMg
dG8gdXNlIGhhbHQgaW5zdHJ1Y3Rpb25zIHJhdGhlciB0aGFuIGJyZWFrcG9pbnQgaW5zdHJ1Y3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM2
NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMTc4ODkyPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEpGIEJhc3RpZW4uCisKKyAgICAgICAgUmVtb3ZlIHRoZSBUcmFwIHNpZ25hbCBoYW5kbGVy
IGNvZGUgc2luY2UgaXQgcGxheXMgYmFkbHkgd2l0aCBsbGRiIGFuZCBjb21iaW5lCisgICAgICAg
IFNJR0JVUyB3aXRoIFNJR1NFR1Ygc2luY2UgZGlzdGlndWlzaGluZyB0aGVtIGlzIGdlbmVyYWxs
eSBub24tcG9ydGFibGUuCisKKyAgICAgICAgQWxzbywgdXBkYXRlIHRoZSBwbGF0Zm9ybSBjb2Rl
IHRvIG9ubHkgdXNlIHNpZ25hbGluZyBWTVRyYXBzCisgICAgICAgIG9uIHdoZXJlIHdlIGhhdmUg
YW4gYXBwcm9wcmlhdGUgaW5zdHJ1Y3Rpb24gKHg4NiBhbmQgQVJNNjQpLgorCisgICAgICAgICog
d3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL3RocmVhZHMvU2lnbmFscy5jcHA6CisgICAg
ICAgIChXVEY6OmZyb21NYWNoRXhjZXB0aW9uKToKKyAgICAgICAgKFdURjo6dG9NYWNoTWFzayk6
CisgICAgICAgIChXVEY6Omluc3RhbGxTaWduYWxIYW5kbGVyKToKKyAgICAgICAgKFdURjo6anNj
U2lnbmFsSGFuZGxlcik6CisgICAgICAgICogd3RmL3RocmVhZHMvU2lnbmFscy5oOgorICAgICAg
ICAoV1RGOjp0b1N5c3RlbVNpZ25hbCk6CisgICAgICAgIChXVEY6OmZyb21TeXN0ZW1TaWduYWwp
OgorCiAyMDE3LTA2LTIwICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4K
IAogICAgICAgICBSZW1vdmUgZXhjZXNzaXZlIGluY2x1ZGUgZGlyZWN0aXZlcyBmcm9tIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1l
TGltaXRUZXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9u
VGltZUxpbWl0VGVzdC5jcHAKaW5kZXggYTNjMzlhNzYxYzI0NWNkZDU5NTgzNWI4MzhhZDA1ZmE3
N2YwMGZjZS4uOWRjNGQ2NzFhNDgyMTU5ZGIyOWY2ZjE0YzFmM2VkYmZiNTJjYjE0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRp
bWVMaW1pdFRlc3QuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1l
TGltaXQoKQogICAgICAgICB7ICJMTElOVCIsICAgIDAsICAgIi0tdXNlQ29uY3VycmVudEpJVD1m
YWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9ZmFsc2UiIH0sCiAgICAgICAgIHsgIkJhc2Vs
aW5lIiwgMCwgICAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNlTExJbnQ9dHJ1ZSAtLXVz
ZUpJVD10cnVlIC0tdXNlREZHSklUPWZhbHNlIiB9LAogICAgICAgICB7ICJERkciLCAgICAgIDAs
ICAgIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9dHJ1
ZSAtLXVzZURGR0pJVD10cnVlIC0tdXNlRlRMSklUPWZhbHNlIiB9LAotICAgICAgICB7ICJGVEwi
LCAgICAgIDIwMCwgIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11
c2VKSVQ9dHJ1ZSAtLXVzZURGR0pJVD10cnVlIC0tdXNlRlRMSklUPXRydWUiIH0sCisgICAgICAg
IHsgIkZUTCIsICAgICAgMzAwLCAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNlTExJbnQ9
dHJ1ZSAtLXVzZUpJVD10cnVlIC0tdXNlREZHSklUPXRydWUgLS11c2VGVExKSVQ9dHJ1ZSIgfSwK
ICAgICB9OwogICAgIAogICAgIGJvb2wgZmFpbGVkID0gZmFsc2U7CkBAIC0xNTEsNyArMTUxLDM5
IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgSlNPYmplY3RSZWYgY3Vy
cmVudENQVVRpbWVGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNv
bnRleHQsIGN1cnJlbnRDUFVUaW1lU3RyLCBjdXJyZW50Q1BVVGltZUFzSlNGdW5jdGlvbkNhbGxi
YWNrKTsKICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3Qs
IGN1cnJlbnRDUFVUaW1lU3RyLCBjdXJyZW50Q1BVVGltZUZ1bmN0aW9uLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZU5vbmUsIG51bGxwdHIpOwogICAgICAgICBKU1N0cmluZ1JlbGVhc2UoY3VycmVudENQ
VVRpbWVTdHIpOwotICAgICAgICAKKworICAgICAgICAvKiBUZXN0IHNjcmlwdCBvbiBhbm90aGVy
IHRocmVhZDogKi8KKyAgICAgICAgdGltZUxpbWl0ID0gKDEwMCArIHRpZXJBZGp1c3RtZW50TWls
bGlzKSAvIDEwMDAuMDsKKyAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGlt
aXQoY29udGV4dEdyb3VwLCB0aW1lTGltaXQsIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrLCAwKTsK
KyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgdGltZUFmdGVyV2F0Y2hkb2dTaG91bGRI
YXZlRmlyZWQgPSAzMDAgKyB0aWVyQWRqdXN0bWVudE1pbGxpczsKKworICAgICAgICAgICAgSlNT
dHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImZ1bmN0aW9u
IGZvbygpIHsgd2hpbGUgKHRydWUpIHsgfSB9IGZvbygpOyIpOworICAgICAgICAgICAgZXhjZXB0
aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEpTVmFsdWVSZWYqIGV4biA9ICZleGNlcHRpb247
CisgICAgICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwor
ICAgICAgICAgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiUm9ndWUgdGhyZWFkIiwg
Wz1dIHsKKyAgICAgICAgICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdCwg
bnVsbHB0ciwgbnVsbHB0ciwgMSwgZXhuKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBzbGVlcChTZWNvbmRzKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkIC8gMTAwMC4w
KSk7CisKKyAgICAgICAgICAgIGlmIChzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCkK
KyAgICAgICAgICAgICAgICBwcmludGYoIlBBU1M6ICVzIHNjcmlwdCB0aW1lZCBvdXQgYXMgZXhw
ZWN0ZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgc2NyaXB0IHRpbWVvdXQgY2FsbGJhY2sgd2FzIG5v
dCBjYWxsZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgICAgICBleGl0KDEp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbikgeworICAgICAg
ICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3
YXMgbm90IHRocm93bi5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAgIGV4
aXQoMSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRocmVhZC0+d2FpdEZvckNvbXBs
ZXRpb24oKTsKKyAgICAgICAgICAgIHRlc3RSZXNldEFmdGVyVGltZW91dChmYWlsZWQpOworICAg
ICAgICB9CisKICAgICAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91dDogKi8KICAgICAgICAgdGlt
ZUxpbWl0ID0gKDEwMCArIHRpZXJBZGp1c3RtZW50TWlsbGlzKSAvIDEwMDAuMDsKICAgICAgICAg
SlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdyb3VwLCB0aW1lTGlt
aXQsIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAppbmRleCA2YWQ0NmRlNzkxMGEzNjM2MDM0
YmMzNTQ2NjVmYTFmNDFkYWE1YzY5Li5iODUwNjczZWY2Nzg0MWE5YTk2ZjI3YzUyMzQyZDQxZjA3
MzcwZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0
QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFz
c2VtYmxlci5oCkBAIC0yNjAyLDkgKzI2MDIsMTAgQEAgcHVibGljOgogICAgICAgICBsaW5rUG9p
bnRlcihhZGRyZXNzT2YoY29kZSwgd2hlcmUpLCB2YWx1ZVB0cik7CiAgICAgfQogCi0gICAgc3Rh
dGljIHZvaWQgcmVwbGFjZVdpdGhCa3B0KHZvaWQqIHdoZXJlKQorICAgIHN0YXRpYyB2b2lkIHJl
cGxhY2VXaXRoVk1IYWx0KHZvaWQqIHdoZXJlKQogICAgIHsKLSAgICAgICAgaW50IGluc24gPSBl
eGNlcG5HZW5lcmF0aW9uKEV4Y2Vwbk9wX0JSRUFLUE9JTlQsIDAsIDApOworICAgICAgICAvLyBU
aGlzIHNob3VsZCB0cnkgdG8gd3JpdGUgdG8gbnVsbCB3aGljaCBzaG91bGQgYWx3YXlzIFNlZ2Zh
dWx0LgorICAgICAgICBpbnQgaW5zbiA9IGRhdGFDYWNoZVplcm9WaXJ0dWFsQWRkcmVzcyhBUk02
NFJlZ2lzdGVyczo6enIpOwogICAgICAgICBwZXJmb3JtSklUTWVtY3B5KHdoZXJlLCAmaW5zbiwg
c2l6ZW9mKGludCkpOwogICAgICAgICBjYWNoZUZsdXNoKHdoZXJlLCBzaXplb2YoaW50KSk7CiAg
ICAgfQpAQCAtMzY1NSw2ICszNjU2LDExIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1
cm4gaGludFBzZXVkbygwKTsKICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQg
ZGF0YUNhY2hlWmVyb1ZpcnR1YWxBZGRyZXNzKFJlZ2lzdGVySUQgcnQpCisgICAgeworICAgICAg
ICByZXR1cm4gc3lzdGVtKDAsIDEsIDB4MywgMHg3LCAweDQsIDB4MSwgcnQpOworICAgIH0KICAg
ICAKICAgICAvLyAnb3AnIG1lYW5zIG5lZ2F0ZQogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGlu
dCB0ZXN0QW5kQnJhbmNoSW1tZWRpYXRlKGJvb2wgb3AsIGludCBiNTAsIGludCBpbW0xNCwgUmVn
aXN0ZXJJRCBydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QVJNQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2Vt
Ymxlci5oCmluZGV4IDkxY2UwYjI5ZGEyZGU0ZThhN2FiODY5MmViMmE4ODdiOTE5YmE4YTkuLjQ4
ZTExMDE3MjQ0ZGRjZjdmYjEyNzIwYThiMWQ4NTliYjdlYWU5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaApAQCAtOTk1LDEzICs5OTUsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPihyZWFkUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRBYnNvbHV0ZUp1bXBB
ZGRyZXNzKGZyb20pKSkpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhCa3B0KHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEFSTVdvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4oaW5zdHJ1
Y3Rpb25TdGFydCk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvblswXSA9IEJLUFQ7Ci0gICAgICAg
ICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXplb2YoQVJNV29yZCkpOwotICAgICAgICB9
Ci0KICAgICAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9u
U3RhcnQsIHZvaWQqIHRvKQogICAgICAgICB7CiAgICAgICAgICAgICBBUk1Xb3JkKiBpbnN0cnVj
dGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGluc3RydWN0aW9uU3RhcnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCmluZGV4
IDZjZDQwMjViMTIxNWU4YWRmODRjMzdiMzk1YzBkN2JmMGI2NTU3ZDQuLmViNjE1MDllMTQ4YTNj
ZjYyYjNlNWRkYWI4ZGVmZTk2YTY0ZDk3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKQEAgLTIzMjgsMTYgKzIzMjgsNiBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWFkSW50MzIod2hl
cmUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEJrcHQodm9pZCogaW5z
dHJ1Y3Rpb25TdGFydCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkpOwotCi0gICAgICAgIHVpbnQxNl90KiBwdHIg
PSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAgICAg
IHVpbnQxNl90IGluc3RydWN0aW9ucyA9IE9QX0JLUFQ7Ci0gICAgICAgIHBlcmZvcm1KSVRNZW1j
cHkocHRyLCAmaW5zdHJ1Y3Rpb25zLCBzaXplb2YodWludDE2X3QpKTsKLSAgICAgICAgY2FjaGVG
bHVzaChwdHIsIHNpemVvZih1aW50MTZfdCkpOwotICAgIH0KLQogICAgIHN0YXRpYyB2b2lkIHJl
cGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQp
ICYgMSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBT
QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJs
ZXIuaAppbmRleCA1ZmEwZmEwMDhmY2U3NDBkZWU5M2RiOGI3ZGQ2YjE3ZDIxMTExMTlkLi4yNzBj
Y2UzNGVkYmI4NTY0MDBkZDA5MjE5NDExMmE2MTBlZDJmZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaApAQCAtOTQxLDE1ICs5NDEsNiBA
QCBwdWJsaWM6CiAgICAgICAgIGNhY2hlRmx1c2goaW5zbiwgY29kZVNpemUpOwogICAgIH0KIAot
ICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQmtwdCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rp
b25TdGFydCkgJiAzKSk7Ci0gICAgICAgIE1JUFNXb3JkKiBpbnNuID0gcmVpbnRlcnByZXRfY2Fz
dDxNSVBTV29yZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQp
KTsKLSAgICAgICAgaW50IHZhbHVlID0gNTEyOyAvKiBCUktfQlVHICovCi0gICAgICAgIGluc25b
MF0gPSAoMHgwMDAwMDAwZCB8ICgodmFsdWUgJiAweDNmZikgPDwgT1BfU0hfQ09ERSkpOwotICAg
ICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uU3RhcnQsIHNpemVvZihNSVBTV29yZCkpOwotICAg
IH0KLQogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0
YXJ0LCB2b2lkKiB0bykKICAgICB7CiAgICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCmluZGV4IDZmNWYzN2U1MWI5MjEz
MDU3YzIyZWRlMWNkNDgzZWMxYzEzZGNiNjAuLjJiODBkMjQ3Zjk3YTUwM2Q0ZDVmNDVjZDk4NTJm
YzI0MjkyMWViYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNLmgKQEAgLTE0OTksMTEgKzE0OTksNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4oQVJNQXNz
ZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAot
ICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQnJlYWtwb2ludChDb2RlTG9jYXRpb25MYWJlbCBp
bnN0cnVjdGlvblN0YXJ0KQotICAgIHsKLSAgICAgICAgQVJNQXNzZW1ibGVyOjpyZXBsYWNlV2l0
aEJrcHQoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICB9Ci0KICAg
ICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rp
b25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCiAgICAgewogICAgICAgICBB
Uk1Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlv
bigpLCBkZXN0aW5hdGlvbi5kYXRhTG9jYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGZkNDk0YTA1
MDk2MzM3YTE1NTcyMzUyMDdlNTQ4ZDZmMmU5NDgwNmEuLmMzN2UwMGI2YzY0YjE5MjRmNzg2NmY3
NWIzMjhlMzk2ZTEwZjU3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zNzEzLDkgKzM3MTMsOSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0PHZvaWQoKiko
KT4oQVJNNjRBc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7
CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhCcmVha3BvaW50KENvZGVMb2Nh
dGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQpCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhW
TUhhbHQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKICAgICB7Ci0gICAgICAg
IEFSTTY0QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEJrcHQoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyAgICAgICAgQVJNNjRBc3NlbWJsZXI6OnJlcGxhY2VXaXRoVk1IYWx0
KGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgfQogCiAgICAgc3Rh
dGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3Rh
cnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAppbmRleCA1NDMzNWEy
OWJjOGE0Y2M1ZWQ2YTMxNjk3MjA2NzliZDBmYTljN2RkLi5mM2ZlNjFkYmUzNTZhZjMzZWExOWZi
ZDk5YzVhZjhkYTczYTE2NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaApAQCAtMTM1NCwxMSArMTM1NCw2IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmRtYklTSFNUKCk7CiAgICAgfQotICAg
IAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQnJlYWtwb2ludChDb2RlTG9jYXRpb25MYWJl
bCBpbnN0cnVjdGlvblN0YXJ0KQotICAgIHsKLSAgICAgICAgQVJNdjdBc3NlbWJsZXI6OnJlcGxh
Y2VXaXRoQmtwdChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpKTsKLSAgICB9CiAKICAg
ICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rp
b25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5k
ZXggZmY0MDA5MDFjMjQ1MGQ0ZGM5OWM0YjYxMmVmNTQ1MDg0NDUwY2E5MS4uZmEwNWJlMTc5ZWYx
MTk2N2NkODYwODZiMWM0MGNmMjg2OWViYzA0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0zMDcyLDExICszMDcy
LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKCopKCk+KE1JUFNBc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwuZGF0YUxvY2F0
aW9uKCkpKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhCcmVha3BvaW50
KENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQpCi0gICAgewotICAgICAgICBNSVBT
QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEJrcHQoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRk
cmVzcygpKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxv
Y2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRp
b24pCiAgICAgewogICAgICAgICBNSVBTQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1
Y3Rpb25TdGFydC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24uZGF0YUxvY2F0aW9uKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oCmluZGV4IDMyZGE0NTBiNDNkOGY3OGEwNTQ5ZGIyODVkYjEyYzJkNDM4
OTI3ZGQuLjZhY2MyYTk2OWRjMjNhNzk5Y2I2NjkyMGI5MjhiZDU4YTY3MjQ3YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmgKQEAgLTM4MDMsOSArMzgwMyw5IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYK
IAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQnJlYWtwb2ludChDb2RlTG9jYXRpb25MYWJl
bCBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoVk1IYWx0KENv
ZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQpCiAgICAgewotICAgICAgICBYODZBc3Nl
bWJsZXI6OnJlcGxhY2VXaXRoSW50MyhpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNz
KCkpOworICAgICAgICBYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSGx0KGluc3RydWN0aW9uU3Rh
cnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlv
bkxhYmVsIGRlc3RpbmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
WDg2QXNzZW1ibGVyLmgKaW5kZXggYWRkYzdkODExODQwZWNjNTU0MDViZjQ3MWM2ZmI3MjNlYWFk
ZmI3NC4uNWI2NGYwMmFmNjY1YzA0ZDBhZTJmYzQ3NDNhMTZjY2QwNTVhZTJkZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC0zNjM3LDEw
ICszNjM3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCoqPih3aGVyZSlbLTFdOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSW50
Myh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSGx0
KHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCiAgICAgewogICAgICAgICB1aW50OF90KiBwdHIgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKLSAgICAgICAgcHRy
WzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oT1BfSU5UMyk7CisgICAgICAgIHB0clswXSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KE9QX0hMVCk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVw
bGFjZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIHZvaWQqIHRvKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKdW1wUmVwbGFjZW1lbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKdW1wUmVwbGFjZW1lbnQuY3BwCmluZGV4IDI0N2Jk
YTliMDI2ZTBhOTdkNmU5YmFmNTA2ZmJkNDAzYzA5Mjg1MjMuLjFlYmY2OTRjZTRjZjg3ODFjMjU0
NjdmMjE5ODBkOGU1MTcyMjU4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0p1bXBSZXBsYWNlbWVudC5jcHAKQEAgLTQzLDcgKzQzLDExIEBAIHZvaWQgSnVtcFJlcGxh
Y2VtZW50OjpmaXJlKCkKIAogdm9pZCBKdW1wUmVwbGFjZW1lbnQ6Omluc3RhbGxWTVRyYXBCcmVh
a3BvaW50KCkKIHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhCcmVha3BvaW50KG1f
c291cmNlKTsKKyNpZiBFTkFCTEUoU0lHTkFMX0JBU0VEX1ZNX1RSQVBTKQorICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBsYWNlV2l0aFZNSGFsdChtX3NvdXJjZSk7CisjZWxzZQorICAgIFVOUkVBQ0hB
QkxFX0ZPUl9QTEFURk9STSgpOworI2VuZGlmCiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKaW5kZXggNTFmMjhk
M2U5Y2Q3MWZmMTQyNmNkOGY4Yjg5YzIxMjc4NjE2Njg2Zi4uNDRkNTNlYWZlYzUwMjVjNmZhZGY5
YzYwNjQwMTBhZDY5NGFjOGY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk1UcmFwcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1U
cmFwcy5jcHAKQEAgLTU5LDE3ICs1OSw2IEBAIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKICAgICAg
ICAgLCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihyZWdpc3RlcnMp
KQogICAgICAgICAsIGZyYW1lUG9pbnRlcihNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKHJl
Z2lzdGVycykpCiAgICAgewotI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCi0gICAgICAgIC8v
IE9uIFg4Nl82NCwgU0lHVFJBUCByZXBvcnRzIHRoZSBhZGRyZXNzIGFmdGVyIHRoZSB0cmFwcGlu
ZyBQQy4gU28sIGRlYyBieSAxLgotICAgICAgICB0cmFwUEMgPSByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPih0cmFwUEMpIC0gMTsKLSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQgYWRqdXN0UENU
b1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKCkKLSAgICB7Ci0jaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKFg4NikKLSAgICAgICAgTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihyZWdp
c3RlcnMpID0gdHJhcFBDOwotI2VuZGlmCiAgICAgfQogCiAgICAgUGxhdGZvcm1SZWdpc3RlcnMm
IHJlZ2lzdGVyczsKQEAgLTEzMCw3ICsxMTksNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8Vk1BbmRTdGFj
a0JvdW5kcywgVk1UcmFwczo6RXJyb3I+IGZpbmRBY3RpdmVWTUFuZFN0YWNrQm91bmRzKFNpZwog
CiBzdGF0aWMgdm9pZCBpbnN0YWxsU2lnbmFsSGFuZGxlcigpCiB7Ci0gICAgaW5zdGFsbFNpZ25h
bEhhbmRsZXIoU2lnbmFsOjpUcmFwLCBbXSAoU2lnbmFsLCBTaWdJbmZvJiwgUGxhdGZvcm1SZWdp
c3RlcnMmIHJlZ2lzdGVycykgLT4gU2lnbmFsQWN0aW9uIHsKKyAgICBpbnN0YWxsU2lnbmFsSGFu
ZGxlcihTaWduYWw6OkJhZEFjY2VzcywgW10gKFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVn
aXN0ZXJzJiByZWdpc3RlcnMpIC0+IFNpZ25hbEFjdGlvbiB7CiAgICAgICAgIFNpZ25hbENvbnRl
eHQgY29udGV4dChyZWdpc3RlcnMpOwogCiAgICAgICAgIGlmICghaXNKSVRQQyhjb250ZXh0LnRy
YXBQQykpCkBAIC0yOTcsMTAgKzI4Niw2IEBAIGF1dG8gVk1UcmFwczo6dHJ5SmV0dGlzb25Db2Rl
QmxvY2tzT25TdGFjayhTaWduYWxDb250ZXh0JiBjb250ZXh0KSAtPiBFeHBlY3RlZDxiCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGludmFsaWRhdGVDb2RlQmxvY2tzT25TdGFjayhjb2Rl
QmxvY2tTZXRMb2NrZXIsIHRvcENhbGxGcmFtZSk7Ci0KLSAgICAvLyBSZS1ydW4gdGhlIHRyYXBw
aW5nIGluc3RydWN0aW9uIG5vdyB0aGF0IHdlJ3ZlIHBhdGNoZWQgaXQgd2l0aCB0aGUgaW52YWxp
ZGF0aW9uCi0gICAgLy8gT1NSIGV4aXQgb2ZmLXJhbXAuCi0gICAgY29udGV4dC5hZGp1c3RQQ1Rv
UG9pbnRUb1RyYXBwaW5nSW5zdHJ1Y3Rpb24oKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVy
LmNwcAppbmRleCAyNjRjMzRkZTQ1ZGExNzVhNWQ1MTQxYzE3MWVmZTk1ZTA2M2M1ZTI3Li5lODZm
ZDQ3OTkwZTg4ODhkMjZmZGRmYTczOTRlNDc2YWJjYzgwMTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcApAQCAtMTIz
LDExICsxMjMsNyBAQCB2b2lkIGVuYWJsZUZhc3RNZW1vcnkoKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZX0ZBU1RfTUVNT1JZKQotICAgICAgICBpbnN0YWxs
U2lnbmFsSGFuZGxlcihTaWduYWw6OkJ1cywgW10gKFNpZ25hbCBzaWduYWwsIFNpZ0luZm8mIHNp
Z0luZm8sIFBsYXRmb3JtUmVnaXN0ZXJzJiB1Y29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJu
IHRyYXBIYW5kbGVyKHNpZ25hbCwgc2lnSW5mbywgdWNvbnRleHQpOwotICAgICAgICB9KTsKLQot
ICAgICAgICBpbnN0YWxsU2lnbmFsSGFuZGxlcihTaWduYWw6OlNlZ1YsIFtdIChTaWduYWwgc2ln
bmFsLCBTaWdJbmZvJiBzaWdJbmZvLCBQbGF0Zm9ybVJlZ2lzdGVycyYgdWNvbnRleHQpIHsKKyAg
ICAgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpCYWRBY2Nlc3MsIFtdIChTaWduYWwg
c2lnbmFsLCBTaWdJbmZvJiBzaWdJbmZvLCBQbGF0Zm9ybVJlZ2lzdGVycyYgdWNvbnRleHQpIHsK
ICAgICAgICAgICAgIHJldHVybiB0cmFwSGFuZGxlcihzaWduYWwsIHNpZ0luZm8sIHVjb250ZXh0
KTsKICAgICAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDUwMDQwNzdhNTZhMmYyYWUzNTA3YzU0
ZGY1ZTgyODBjZWFiODEwMDMuLjg3YmIzYmI0M2YzODA4OWY3NDVjY2ZiZjkyYTRlMTZhNmNhYzZh
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaApAQCAtOTc0LDcgKzk3NCw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0j
aWYgRU5BQkxFKEpJVCkgJiYgSEFWRShNQUNISU5FX0NPTlRFWFQpCisjaWYgRU5BQkxFKEpJVCkg
JiYgSEFWRShNQUNISU5FX0NPTlRFWFQpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBD
UFUoQVJNNjQpKQogI2RlZmluZSBFTkFCTEVfU0lHTkFMX0JBU0VEX1ZNX1RSQVBTIDEKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwIGIvU291
cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcAppbmRleCBmMDFlMzkxMTNiMGM2MjE5MGJk
YmVmMTNlYWJhMjJhMGUxNDg5YmMyLi45MTljNjVjMmJjYjExYTY2NjJlODUwMDkxNTQ5MzJmNDAy
M2ExMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKQEAgLTExNyw5ICsxMTcsOCBA
QCBzdGF0aWMgdm9pZCBzdGFydE1hY2hFeGNlcHRpb25IYW5kbGVyVGhyZWFkKCkKIHN0YXRpYyBT
aWduYWwgZnJvbU1hY2hFeGNlcHRpb24oZXhjZXB0aW9uX3R5cGVfdCB0eXBlKQogewogICAgIHN3
aXRjaCAodHlwZSkgewotICAgIGNhc2UgRVhDX0JBRF9BQ0NFU1M6IHJldHVybiBTaWduYWw6OlNl
Z1Y7CisgICAgY2FzZSBFWENfQkFEX0FDQ0VTUzogcmV0dXJuIFNpZ25hbDo6QmFkQWNjZXNzOwog
ICAgIGNhc2UgRVhDX0JBRF9JTlNUUlVDVElPTjogcmV0dXJuIFNpZ25hbDo6SWxsOwotICAgIGNh
c2UgRVhDX0JSRUFLUE9JTlQ6IHJldHVybiBTaWduYWw6OlRyYXA7CiAgICAgZGVmYXVsdDogYnJl
YWs7CiAgICAgfQogICAgIHJldHVybiBTaWduYWw6OlVua25vd247CkBAIC0xMjgsOSArMTI3LDgg
QEAgc3RhdGljIFNpZ25hbCBmcm9tTWFjaEV4Y2VwdGlvbihleGNlcHRpb25fdHlwZV90IHR5cGUp
CiBzdGF0aWMgZXhjZXB0aW9uX21hc2tfdCB0b01hY2hNYXNrKFNpZ25hbCBzaWduYWwpCiB7CiAg
ICAgc3dpdGNoIChzaWduYWwpIHsKLSAgICBjYXNlIFNpZ25hbDo6U2VnVjogcmV0dXJuIEVYQ19N
QVNLX0JBRF9BQ0NFU1M7CisgICAgY2FzZSBTaWduYWw6OkJhZEFjY2VzczogcmV0dXJuIEVYQ19N
QVNLX0JBRF9BQ0NFU1M7CiAgICAgY2FzZSBTaWduYWw6OklsbDogcmV0dXJuIEVYQ19NQVNLX0JB
RF9JTlNUUlVDVElPTjsKLSAgICBjYXNlIFNpZ25hbDo6VHJhcDogcmV0dXJuIEVYQ19NQVNLX0JS
RUFLUE9JTlQ7CiAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC0xNjYsNiArMTY0LDExIEBAIGtlcm5fcmV0dXJuX3QgY2F0Y2hf
bWFjaF9leGNlcHRpb25fcmFpc2Vfc3RhdGUoCiAgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCog
b3V0U3RhdGVDb3VudCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChwb3J0ID09IGV4Y2VwdGlvblBv
cnQpOworICAgIC8vIElmIHdlIHdhbnRlZCB0byBkaXN0aW5naXNoIGJldHdlZW4gU0lHQlVTIGFu
ZCBTSUdTRUdWIGZvciBFWENfQkFEX0FDQ0VTUyBvbiBEYXJ3aW4gd2UgY291bGQgZG86CisgICAg
Ly8gaWYgKGV4Y2VwdGlvbkRhdGFbMF0gPT0gS0VSTl9JTlZBTElEX0FERFJFU1MpCisgICAgLy8g
ICAgc2lnbmFsID0gU0lHU0VHVjsKKyAgICAvLyBlbHNlCisgICAgLy8gICAgc2lnbmFsID0gU0lH
QlVTOwogICAgIFNpZ25hbCBzaWduYWwgPSBmcm9tTWFjaEV4Y2VwdGlvbihleGNlcHRpb25UeXBl
KTsKICAgICBSRUxFQVNFX0FTU0VSVChzaWduYWwgIT0gU2lnbmFsOjpVbmtub3duKTsKIApAQCAt
MTg3LDcgKzE5MCw3IEBAIGtlcm5fcmV0dXJuX3QgY2F0Y2hfbWFjaF9leGNlcHRpb25fcmFpc2Vf
c3RhdGUoCiAjZW5kaWYKIAogICAgIFNpZ0luZm8gaW5mbzsKLSAgICBpZiAoc2lnbmFsID09IFNp
Z25hbDo6U2VnVikgeworICAgIGlmIChzaWduYWwgPT0gU2lnbmFsOjpCYWRBY2Nlc3MpIHsKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChkYXRhQ291bnQsIGRhdGFDb3VudCA9PSAyKTsKICAgICAgICAg
aW5mby5mYXVsdGluZ0FkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihleGNlcHRpb25E
YXRhWzFdKTsKICAgICB9CkBAIC0yNTUsMTIgKzI1OCw2IEBAIHZvaWQgaW5zdGFsbFNpZ25hbEhh
bmRsZXIoU2lnbmFsIHNpZ25hbCwgU2lnbmFsSGFuZGxlciYmIGhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKHNpZ25hbCA8IFNpZ25hbDo6VW5rbm93bik7CiAjaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMp
Ci0gICAgLy8gU2luY2UgbWFjaCBvbmx5IGhhcyBFWENfQkFEX0FDQ0VTUywgd2hpY2ggY292ZXJz
IGJvdGggU2VnViBhbmQgQnVzLCB3ZSBhcmJpdGFyaWx5IGNob29zZSB0byBtYWtlCi0gICAgLy8g
bWFjaCBFWENfQkFEX0FDQ0VTU2VzIG1hcCB0byBTZWdWLgotICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQganVzdCB1c2UgYSBzaW5nbGUgU2lnbmFsOjpCYWRBY2Nlc3MgdmFsdWUgaW5zdGVhZCBvZiBT
ZWdWL0J1cy4KLSAgICAvLyBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzIwNjMKLSAgICBpZiAoc2lnbmFsID09IFNpZ25hbDo6QnVzICYmIHVzZU1hY2gpCi0g
ICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoIXVzZU1hY2ggfHwgc2lnbmFsICE9IFNpZ25hbDo6
VXNyKTsKIAogICAgIGlmICh1c2VNYWNoKQpAQCAtMjc2LDcgKzI3MywxMCBAQCB2b2lkIGluc3Rh
bGxTaWduYWxIYW5kbGVyKFNpZ25hbCBzaWduYWwsIFNpZ25hbEhhbmRsZXImJiBoYW5kbGVyKQog
ICAgICAgICAgICAgYXV0byByZXN1bHQgPSBzaWdmaWxsc2V0KCZhY3Rpb24uc2FfbWFzayk7CiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0KTsKICAgICAgICAgICAgIGFjdGlvbi5z
YV9mbGFncyA9IFNBX1NJR0lORk87Ci0gICAgICAgICAgICByZXN1bHQgPSBzaWdhY3Rpb24odG9T
eXN0ZW1TaWduYWwoc2lnbmFsKSwgJmFjdGlvbiwgJm9sZEFjdGlvbnNbc3RhdGljX2Nhc3Q8c2l6
ZV90PihzaWduYWwpXSk7CisgICAgICAgICAgICBhdXRvIHN5c3RlbVNpZ25hbHMgPSB0b1N5c3Rl
bVNpZ25hbChzaWduYWwpOworICAgICAgICAgICAgcmVzdWx0ID0gc2lnYWN0aW9uKHN0ZDo6Z2V0
PDA+KHN5c3RlbVNpZ25hbHMpLCAmYWN0aW9uLCAmb2xkQWN0aW9uc1tzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNpZ25hbCldKTsKKyAgICAgICAgICAgIGlmIChzdGQ6OmdldDwxPihzeXN0ZW1TaWduYWxz
KSkKKyAgICAgICAgICAgICAgICByZXN1bHQgfD0gc2lnYWN0aW9uKHN0ZDo6Z2V0PDA+KHN5c3Rl
bVNpZ25hbHMpLCAmYWN0aW9uLCAmb2xkQWN0aW9uc1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNpZ25h
bCkgKyAxXSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0KTsKICAgICAgICAg
fQogCkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBqc2NTaWduYWxIYW5kbGVyKGludCBzaWcsIHNp
Z2luZm9fdCogaW5mbywgdm9pZCogdWNvbnRleHQpCiAgICAgfQogCiAgICAgU2lnSW5mbyBzaWdJ
bmZvOwotICAgIGlmIChzaWduYWwgPT0gU2lnbmFsOjpTZWdWIHx8IHNpZ25hbCA9PSBTaWduYWw6
OkJ1cykKKyAgICBpZiAoc2lnbmFsID09IFNpZ25hbDo6QmFkQWNjZXNzKQogICAgICAgICBzaWdJ
bmZvLmZhdWx0aW5nQWRkcmVzcyA9IGluZm8tPnNpX2FkZHI7CiAKICAgICBQbGF0Zm9ybVJlZ2lz
dGVycyYgcmVnaXN0ZXJzID0gcmVnaXN0ZXJzRnJvbVVDb250ZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8
dWNvbnRleHRfdCo+KHVjb250ZXh0KSk7CkBAIC0zNDEsNyArMzQxLDggQEAgdm9pZCBqc2NTaWdu
YWxIYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogdWNvbnRleHQpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdHJ1Y3Qgc2lnYWN0aW9uJiBvbGRBY3Rpb24gPSBv
bGRBY3Rpb25zW3N0YXRpY19jYXN0PHNpemVfdD4oc2lnbmFsKV07CisgICAgdW5zaWduZWQgb2xk
QWN0aW9uSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpZ25hbCkgKyAoc2lnID09IFNJR0JV
Uyk7CisgICAgc3RydWN0IHNpZ2FjdGlvbiYgb2xkQWN0aW9uID0gb2xkQWN0aW9uc1tzdGF0aWNf
Y2FzdDxzaXplX3Q+KG9sZEFjdGlvbkluZGV4KV07CiAgICAgaWYgKHNpZ25hbCA9PSBTaWduYWw6
OlVzcikgewogICAgICAgICBpZiAob2xkQWN0aW9uLnNhX3NpZ2FjdGlvbikKICAgICAgICAgICAg
IG9sZEFjdGlvbi5zYV9zaWdhY3Rpb24oc2lnLCBpbmZvLCB1Y29udGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaCBiL1NvdXJjZS9XVEYvd3RmL3RocmVh
ZHMvU2lnbmFscy5oCmluZGV4IDI1NzZmYWQ1YTAwNDgzMzIwOGM1YmMyNTBlNTQ3MGQzNzhmNzUy
YjQuLmZhYWUwYTdkMjA0ZTUzZmFkMDQxZmU1NmYzMjUxMTM2ODExYTlhOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Ro
cmVhZHMvU2lnbmFscy5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDxzaWduYWwuaD4K
ICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNp
bmNsdWRlIDx3dGYvUGxhdGZvcm1SZWdpc3RlcnMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC00
MSwyMiArNDIsMTggQEAgZW51bSBjbGFzcyBTaWduYWwgewogCiAgICAgLy8gVGhlc2Ugc2lnbmFs
cyB3aWxsIG9ubHkgY2hhaW4gaWYgd2UgZG9uJ3QgaGF2ZSBhIGhhbmRsZXIgdGhhdCBjYW4gcHJv
Y2VzcyB0aGVtLiBJZiB0aGVyZSBpcyBub3RoaW5nCiAgICAgLy8gdG8gY2hhaW4gdG8gd2UgcmVz
dG9yZSB0aGUgZGVmYXVsdCBoYW5kbGVyIGFuZCBjcmFzaC4KLSAgICBUcmFwLAogICAgIElsbCwK
LSAgICBTZWdWLAotICAgIEJ1cywKLSAgICBOdW1iZXJPZlNpZ25hbHMsCisgICAgQmFkQWNjZXNz
LCAvLyBGb3IgcG9zaXggdGhpcyBpcyBib3RoIFNJR1NFR1YgYW5kIFNJR0JVUworICAgIE51bWJl
ck9mU2lnbmFscyA9IEJhZEFjY2VzcyArIDIsIC8vIEJhZEFjY2VzcyBpcyByZWFsbHkgdHdvIHNp
Z25hbHMuCiAgICAgVW5rbm93biA9IE51bWJlck9mU2lnbmFscwogfTsKIAotaW5saW5lIGludCB0
b1N5c3RlbVNpZ25hbChTaWduYWwgc2lnbmFsKQoraW5saW5lIHN0ZDo6dHVwbGU8aW50LCBzdGQ6
Om9wdGlvbmFsPGludD4+IHRvU3lzdGVtU2lnbmFsKFNpZ25hbCBzaWduYWwpCiB7CiAgICAgc3dp
dGNoIChzaWduYWwpIHsKLSAgICBjYXNlIFNpZ25hbDo6U2VnVjogcmV0dXJuIFNJR1NFR1Y7Ci0g
ICAgY2FzZSBTaWduYWw6OkJ1czogcmV0dXJuIFNJR0JVUzsKLSAgICBjYXNlIFNpZ25hbDo6SWxs
OiByZXR1cm4gU0lHSUxMOwotICAgIGNhc2UgU2lnbmFsOjpVc3I6IHJldHVybiBTSUdVU1IyOwot
ICAgIGNhc2UgU2lnbmFsOjpUcmFwOiByZXR1cm4gU0lHVFJBUDsKKyAgICBjYXNlIFNpZ25hbDo6
QmFkQWNjZXNzOiByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFNJR1NFR1YsIFNJR0JVUyk7CisgICAg
Y2FzZSBTaWduYWw6OklsbDogcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShTSUdJTEwsIHN0ZDo6bnVs
bG9wdCk7CisgICAgY2FzZSBTaWduYWw6OlVzcjogcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShTSUdJ
TEwsIHN0ZDo6bnVsbG9wdCk7CiAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQogICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02NSwxMSArNjIsMTAgQEAgaW5saW5lIGludCB0
b1N5c3RlbVNpZ25hbChTaWduYWwgc2lnbmFsKQogaW5saW5lIFNpZ25hbCBmcm9tU3lzdGVtU2ln
bmFsKGludCBzaWduYWwpCiB7CiAgICAgc3dpdGNoIChzaWduYWwpIHsKLSAgICBjYXNlIFNJR1NF
R1Y6IHJldHVybiBTaWduYWw6OlNlZ1Y7Ci0gICAgY2FzZSBTSUdCVVM6IHJldHVybiBTaWduYWw6
OkJ1czsKKyAgICBjYXNlIFNJR1NFR1Y6IHJldHVybiBTaWduYWw6OkJhZEFjY2VzczsKKyAgICBj
YXNlIFNJR0JVUzogcmV0dXJuIFNpZ25hbDo6QmFkQWNjZXNzOwogICAgIGNhc2UgU0lHSUxMOiBy
ZXR1cm4gU2lnbmFsOjpJbGw7CiAgICAgY2FzZSBTSUdVU1IyOiByZXR1cm4gU2lnbmFsOjpVc3I7
Ci0gICAgY2FzZSBTSUdUUkFQOiByZXR1cm4gU2lnbmFsOjpUcmFwOwogICAgIGRlZmF1bHQ6IHJl
dHVybiBTaWduYWw6OlVua25vd247CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI3Y2EzODY0MjdlYzY0NGU0OGU3N2FiZDNlNzYz
OWNmNGU3Nzg5OGIuLmIxOWYzMzA0N2IwZTgwNzdjMGUzMjBmM2Y1NjQ1OGEwNDM5OTNkMDYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxNy0wNi0yMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNv
bT4KKworICAgICAgICBTd2l0Y2ggVk1UcmFwcyB0byB1c2UgaGFsdCBpbnN0cnVjdGlvbnMgcmF0
aGVyIHRoYW4gYnJlYWtwb2ludCBpbnN0cnVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IEpG
IEJhc3RpZW4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRNZXNz
YWdlcy5jcHA6CisgICAgICAgIChURVNUKToKKwogMjAxNy0wNi0yMCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIERuRF0gW1dLMl0gUmVtb3Zl
IGN1c3RvbSBsb2dpYyBmb3IgZGlzYW1iaWd1YXRpbmcgbG9uZyBwcmVzcyBhY3Rpb24gc2hlZXQg
Z2VzdHVyZXMgYW5kIGRyYWcgbGlmdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvVGhyZWFkTWVzc2FnZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVGhyZWFkTWVzc2FnZXMuY3BwCmluZGV4IGU2YTU3ODk0YmI1MTZmZTFjZTcxM2QwN2JmMThm
MDcwNmVmYTkzN2MuLmU2Y2JjYjRjYzMzNDIyNzQ2OTczMzkzZjJjN2RjODU2OWUxOThlNmYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZE1lc3NhZ2VzLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRNZXNzYWdlcy5jcHAK
QEAgLTExNCw3ICsxMTQsNyBAQCBURVNUKFRocmVhZE1lc3NhZ2UsIFNpZ25hbHNXb3JrT25FeGl0
KQogICAgICAgICByZWNlaXZlclNob3VsZEtlZXBSdW5uaW5nLnN0b3JlKGZhbHNlKTsKICAgICAg
ICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PFJlZmxlY3RlZFRocmVhZCo+KHJlY2VpdmVyVGhy
ZWFkLmdldCgpKS0+aGFzRXhpdGVkKCkpOwogICAgICAgICBzbGVlcCgxKTsKLSAgICAgICAgc2ln
bmFsRmlyZWQgPSAhcHRocmVhZF9raWxsKHN0YXRpY19jYXN0PFJlZmxlY3RlZFRocmVhZCo+KHJl
Y2VpdmVyVGhyZWFkLmdldCgpKS0+bV9oYW5kbGUsIHRvU3lzdGVtU2lnbmFsKFNpZ25hbDo6VXNy
KSk7CisgICAgICAgIHNpZ25hbEZpcmVkID0gIXB0aHJlYWRfa2lsbChzdGF0aWNfY2FzdDxSZWZs
ZWN0ZWRUaHJlYWQqPihyZWNlaXZlclRocmVhZC5nZXQoKSktPm1faGFuZGxlLCB0b1N5c3RlbVNp
Z25hbChTaWduYWw6OlVzcikpLmdldDwwPigpOwogICAgIH0KIAogICAgIHJlY2VpdmVyVGhyZWFk
LT53YWl0Rm9yQ29tcGxldGlvbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313762</attachid>
            <date>2017-06-23 17:32:46 -0700</date>
            <delta_ts>2017-06-23 19:08:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-173677-20170623173246.patch</filename>
            <type>text/plain</type>
            <size>29337</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OTY4YjZkNDMxZGIzM2RkN2M0OGVhNDY3MDJiMDNlYTg5Nzk5NzUyLi44NTI2ZTAyMTI5OTdjZTFh
NWE0MDkyMjAyMDg5NDRiOGU3ZmM3ZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxNy0wNi0yMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBTd2l0Y2ggVk1UcmFwcyB0byB1c2UgaGFsdCBpbnN0cnVjdGlvbnMg
cmF0aGVyIHRoYW4gYnJlYWtwb2ludCBpbnN0cnVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzY3NworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzIxNzg4OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAg
ICBVc2luZyB0aGUgYnJlYWtwb2ludCBpbnN0cnVjdGlvbiBmb3IgVk1UcmFwcyBjYXVzZWQgaXNz
dWVzIHdpdGggbGxkYi4KKyAgICAgICAgU2luY2Ugd2Ugb25seSBuZWVkIHNvbWUgd2F5IHRvIHN0
b3AgZXhlY3V0aW9uIHdlIGNhbiwgaW4gdGhlb3J5LCB1c2UKKyAgICAgICAgYW55IGV4Y2VwdGlv
bmluZyBpbnN0cnVjdGlvbiB3ZSB3YW50LiBJIHdlbnQgd2l0aCB0aGUgaGFsdCBpbnN0cnVjdGlv
bgorICAgICAgICBvbiBYODYgc2luY2UgdGhhdCBpcyB0aGUgb25seSBvbmUgYnl0ZSBpbnN0cnVj
dGlvbiB0aGF0IGRvZXMgbm90CisgICAgICAgIGJyZWFrcG9pbnQgKGluIG15IHRlc3RzIGJvdGgg
MHhmMSBhbmQgMHhkNiBwcm9kdWNlZCBFWENfQlJFQUtQT0lOVCkuCisgICAgICAgIE9uIEFSTSB3
ZSB1c2UgdGhlIGRhdGEgY2FjaGUgY2xlYXJpbmcgaW5zdHJ1Y3Rpb24gd2l0aCB0aGUgemVybyBy
ZWdpc3RlciwKKyAgICAgICAgd2hpY2ggdHJpZ2dlcnMgYSBzZWdtZW50YXRpb24gZmF1bHQuCisK
KyAgICAgICAgQWxzbywgdXBkYXRlIHRoZSBwbGF0Zm9ybSBjb2RlIHRvIG9ubHkgdXNlIHNpZ25h
bGluZyBWTVRyYXBzCisgICAgICAgIG9uIHdoZXJlIHdlIGhhdmUgYW4gYXBwcm9wcmlhdGUgaW5z
dHJ1Y3Rpb24gKHg4NiBhbmQgQVJNNjQpLgorCisgICAgICAgICogQVBJL3Rlc3RzL0V4ZWN1dGlv
blRpbWVMaW1pdFRlc3QuY3BwOgorICAgICAgICAodGVzdEV4ZWN1dGlvblRpbWVMaW1pdCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTTY0
QXNzZW1ibGVyOjpyZXBsYWNlV2l0aFZNSGFsdCk6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1i
bGVyOjpkYXRhQ2FjaGVaZXJvVmlydHVhbEFkZHJlc3MpOgorICAgICAgICAoSlNDOjpBUk02NEFz
c2VtYmxlcjo6cmVwbGFjZVdpdGhCa3B0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIv
QVJNQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6cmVwbGFjZVdpdGhC
a3B0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAg
ICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQmtwdCk6IERlbGV0ZWQuCisg
ICAgICAgICogYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TUlQU0Fz
c2VtYmxlcjo6cmVwbGFjZVdpdGhCa3B0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnJl
cGxhY2VXaXRoQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6cmVw
bGFjZVdpdGhWTUhhbHQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpyZXBs
YWNlV2l0aEJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnN0b3Jl
RmVuY2UpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpyZXBsYWNlV2l0aEJy
ZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1J
UFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpyZXBsYWNlV2l0aEJyZWFr
cG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cmVwbGFjZVdp
dGhWTUhhbHQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cmVwbGFj
ZVdpdGhCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhIbHQpOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSW50Myk6IERlbGV0ZWQuCisgICAg
ICAgICogZGZnL0RGR0p1bXBSZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SnVt
cFJlcGxhY2VtZW50OjppbnN0YWxsVk1UcmFwQnJlYWtwb2ludCk6CisgICAgICAgICogcnVudGlt
ZS9WTVRyYXBzLmNwcDoKKyAgICAgICAgKEpTQzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4
dCk6CisgICAgICAgIChKU0M6Omluc3RhbGxTaWduYWxIYW5kbGVyKToKKyAgICAgICAgKEpTQzo6
U2lnbmFsQ29udGV4dDo6YWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjplbmFibGVGYXN0TWVtb3J5KToKKwogMjAxNy0wNi0yMCAgS2VpdGggTWls
bGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbGVhayBvZiBNb2R1
bGVJbmZvcm1hdGlvbnMgaW4gQkJRUGxhbiBjb25zdHJ1Y3RvcnMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE5NmJjYjdjNzBh
ZmY1NzAzODM2YTAzMGZlOWY0ZWZjYWYxMjY2MzUuLjU4NGE5ZmVhM2YzYmM0MDQxNzc2YjI5ZTJh
ZDhkMzk3OWUxYjc2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTctMDYtMjMgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIFZNVHJhcHMg
dG8gdXNlIGhhbHQgaW5zdHJ1Y3Rpb25zIHJhdGhlciB0aGFuIGJyZWFrcG9pbnQgaW5zdHJ1Y3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM2
NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMTc4ODkyPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEpGIEJhc3RpZW4uCisKKyAgICAgICAgUmVtb3ZlIHRoZSBUcmFwIHNpZ25hbCBoYW5kbGVy
IGNvZGUgc2luY2UgaXQgcGxheXMgYmFkbHkgd2l0aCBsbGRiIGFuZCBjb21iaW5lCisgICAgICAg
IFNJR0JVUyB3aXRoIFNJR1NFR1Ygc2luY2UgZGlzdGlndWlzaGluZyB0aGVtIGlzIGdlbmVyYWxs
eSBub24tcG9ydGFibGUuCisKKyAgICAgICAgQWxzbywgdXBkYXRlIHRoZSBwbGF0Zm9ybSBjb2Rl
IHRvIG9ubHkgdXNlIHNpZ25hbGluZyBWTVRyYXBzCisgICAgICAgIG9uIHdoZXJlIHdlIGhhdmUg
YW4gYXBwcm9wcmlhdGUgaW5zdHJ1Y3Rpb24gKHg4NiBhbmQgQVJNNjQpLgorCisgICAgICAgICog
d3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL3RocmVhZHMvU2lnbmFscy5jcHA6CisgICAg
ICAgIChXVEY6OmZyb21NYWNoRXhjZXB0aW9uKToKKyAgICAgICAgKFdURjo6dG9NYWNoTWFzayk6
CisgICAgICAgIChXVEY6Omluc3RhbGxTaWduYWxIYW5kbGVyKToKKyAgICAgICAgKFdURjo6anNj
U2lnbmFsSGFuZGxlcik6CisgICAgICAgICogd3RmL3RocmVhZHMvU2lnbmFscy5oOgorICAgICAg
ICAoV1RGOjp0b1N5c3RlbVNpZ25hbCk6CisgICAgICAgIChXVEY6OmZyb21TeXN0ZW1TaWduYWwp
OgorCiAyMDE3LTA2LTIwICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4K
IAogICAgICAgICBSZW1vdmUgZXhjZXNzaXZlIGluY2x1ZGUgZGlyZWN0aXZlcyBmcm9tIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1l
TGltaXRUZXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9u
VGltZUxpbWl0VGVzdC5jcHAKaW5kZXggYTNjMzlhNzYxYzI0NWNkZDU5NTgzNWI4MzhhZDA1ZmE3
N2YwMGZjZS4uYzAxMDUxMjAyNmU0NjZjNTg0YzBhZGJjN2IzZjRhNGZjNzg3YmJmZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRp
bWVMaW1pdFRlc3QuY3BwCkBAIC0xMTksMTAgKzExOSwxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0UmVz
ZXRBZnRlclRpbWVvdXQoYm9vbCYgZmFpbGVkKQogaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQo
KQogewogICAgIHN0YXRpYyBjb25zdCBUaWVyT3B0aW9ucyB0aWVyT3B0aW9uc0xpc3RbXSA9IHsK
LSAgICAgICAgeyAiTExJTlQiLCAgICAwLCAgICItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2UgLS11
c2VMTEludD10cnVlIC0tdXNlSklUPWZhbHNlIiB9LAotICAgICAgICB7ICJCYXNlbGluZSIsIDAs
ICAgIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9dHJ1
ZSAtLXVzZURGR0pJVD1mYWxzZSIgfSwKLSAgICAgICAgeyAiREZHIiwgICAgICAwLCAgICItLXVz
ZUNvbmN1cnJlbnRKSVQ9ZmFsc2UgLS11c2VMTEludD10cnVlIC0tdXNlSklUPXRydWUgLS11c2VE
RkdKSVQ9dHJ1ZSAtLXVzZUZUTEpJVD1mYWxzZSIgfSwKLSAgICAgICAgeyAiRlRMIiwgICAgICAy
MDAsICItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2UgLS11c2VMTEludD10cnVlIC0tdXNlSklUPXRy
dWUgLS11c2VERkdKSVQ9dHJ1ZSAtLXVzZUZUTEpJVD10cnVlIiB9LAorLy8gICAgICAgIHsgIkxM
SU5UIiwgICAgMCwgICAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNlTExJbnQ9dHJ1ZSAt
LXVzZUpJVD1mYWxzZSIgfSwKKy8vICAgICAgICB7ICJCYXNlbGluZSIsIDAsICAgIi0tdXNlQ29u
Y3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9dHJ1ZSAtLXVzZURGR0pJ
VD1mYWxzZSIgfSwKKy8vICAgICAgICB7ICJERkciLCAgICAgIDAsICAgIi0tdXNlQ29uY3VycmVu
dEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9dHJ1ZSAtLXVzZURGR0pJVD10cnVl
IC0tdXNlRlRMSklUPWZhbHNlIiB9LAorICAgICAgICB7ICJGVEwiLCAgICAgIDMwMCwgIi0tdXNl
Q29uY3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9dHJ1ZSAtLXVzZURG
R0pJVD10cnVlIC0tdXNlRlRMSklUPXRydWUiIH0sCiAgICAgfTsKICAgICAKICAgICBib29sIGZh
aWxlZCA9IGZhbHNlOwpAQCAtMTUxLDcgKzE1MSwzOSBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVM
aW1pdCgpCiAgICAgICAgIEpTT2JqZWN0UmVmIGN1cnJlbnRDUFVUaW1lRnVuY3Rpb24gPSBKU09i
amVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhjb250ZXh0LCBjdXJyZW50Q1BVVGltZVN0ciwg
Y3VycmVudENQVVRpbWVBc0pTRnVuY3Rpb25DYWxsYmFjayk7CiAgICAgICAgIEpTT2JqZWN0U2V0
UHJvcGVydHkoY29udGV4dCwgZ2xvYmFsT2JqZWN0LCBjdXJyZW50Q1BVVGltZVN0ciwgY3VycmVu
dENQVVRpbWVGdW5jdGlvbiwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lLCBudWxscHRyKTsKICAg
ICAgICAgSlNTdHJpbmdSZWxlYXNlKGN1cnJlbnRDUFVUaW1lU3RyKTsKLSAgICAgICAgCisKKyAg
ICAgICAgLyogVGVzdCBzY3JpcHQgb24gYW5vdGhlciB0aHJlYWQ6ICovCisgICAgICAgIHRpbWVM
aW1pdCA9ICgxMDAgKyB0aWVyQWRqdXN0bWVudE1pbGxpcykgLyAxMDAwLjA7CisgICAgICAgIEpT
Q29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KGNvbnRleHRHcm91cCwgdGltZUxpbWl0
LCBzaG91bGRUZXJtaW5hdGVDYWxsYmFjaywgMCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIHVu
c2lnbmVkIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0gMzAwICsgdGllckFkanVz
dG1lbnRNaWxsaXM7CisKKyAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJmdW5jdGlvbiBmb28oKSB7IHdoaWxlICh0cnVlKSB7IH0g
fSBmb28oKTsiKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7CisgICAgICAgICAg
ICBKU1ZhbHVlUmVmKiBleG4gPSAmZXhjZXB0aW9uOworICAgICAgICAgICAgc2hvdWxkVGVybWlu
YXRlQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGF1dG8gdGhyZWFkID0g
VGhyZWFkOjpjcmVhdGUoIlJvZ3VlIHRocmVhZCIsIFs9XSB7CisgICAgICAgICAgICAgICAgSlNF
dmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIG51bGxwdHIsIG51bGxwdHIsIDEsIGV4bik7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgc2xlZXAoU2Vjb25kcyh0aW1lQWZ0ZXJX
YXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCAvIDEwMDAuMCkpOworCisgICAgICAgICAgICBpZiAoc2hv
dWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQpCisgICAgICAgICAgICAgICAgcHJpbnRmKCJQ
QVNTOiAlcyBzY3JpcHQgdGltZWQgb3V0IGFzIGV4cGVjdGVkLlxuIiwgdGllck9wdGlvbnMudGll
cik7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVz
IHNjcmlwdCB0aW1lb3V0IGNhbGxiYWNrIHdhcyBub3QgY2FsbGVkLlxuIiwgdGllck9wdGlvbnMu
dGllcik7CisgICAgICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKCFleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVz
IFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIG5vdCB0aHJvd24uXG4iLCB0aWVyT3B0
aW9ucy50aWVyKTsKKyAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CisgICAgICAgICAgICB0ZXN0
UmVzZXRBZnRlclRpbWVvdXQoZmFpbGVkKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8qIFRlc3Qg
c2NyaXB0IHRpbWVvdXQ6ICovCiAgICAgICAgIHRpbWVMaW1pdCA9ICgxMDAgKyB0aWVyQWRqdXN0
bWVudE1pbGxpcykgLyAxMDAwLjA7CiAgICAgICAgIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9u
VGltZUxpbWl0KGNvbnRleHRHcm91cCwgdGltZUxpbWl0LCBzaG91bGRUZXJtaW5hdGVDYWxsYmFj
aywgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGkuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCmluZGV4IGYx
MmNjMmVlMjFiMzhlOGFlMGZmMjQ0ZWVkMTk1M2YzMjNiM2M1MmYuLjlkM2I0NTYyOWY1YzFmYWNj
ODEwOTkxOTgzNjRkZjE1OTZjOWYzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvdGVzdGFwaS5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS5jCkBAIC0xMzQ4LDYgKzEzNDgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh
ciogYXJndltdKQogICAgIDo6U2V0RXJyb3JNb2RlKDApOwogI2VuZGlmCiAKKyAgICB0ZXN0RXhl
Y3V0aW9uVGltZUxpbWl0KCk7CiAgICAgdGVzdENvbXBhcmVBbmRTd2FwKCk7CiAgICAgc3RhcnRN
dWx0aXRocmVhZGVkTXVsdGlWTUV4ZWN1dGlvblRlc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCmluZGV4IDZhZDQ2ZGU3OTEwYTM2
MzYwMzRiYzM1NDY2NWZhMWY0MWRhYTVjNjkuLmI4NTA2NzNlZjY3ODQxYTlhOTZmMjdjNTIzNDJk
NDFmMDczNzBlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QVJNNjRBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FS
TTY0QXNzZW1ibGVyLmgKQEAgLTI2MDIsOSArMjYwMiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGxp
bmtQb2ludGVyKGFkZHJlc3NPZihjb2RlLCB3aGVyZSksIHZhbHVlUHRyKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEJrcHQodm9pZCogd2hlcmUpCisgICAgc3RhdGljIHZv
aWQgcmVwbGFjZVdpdGhWTUhhbHQodm9pZCogd2hlcmUpCiAgICAgewotICAgICAgICBpbnQgaW5z
biA9IGV4Y2VwbkdlbmVyYXRpb24oRXhjZXBuT3BfQlJFQUtQT0lOVCwgMCwgMCk7CisgICAgICAg
IC8vIFRoaXMgc2hvdWxkIHRyeSB0byB3cml0ZSB0byBudWxsIHdoaWNoIHNob3VsZCBhbHdheXMg
U2VnZmF1bHQuCisgICAgICAgIGludCBpbnNuID0gZGF0YUNhY2hlWmVyb1ZpcnR1YWxBZGRyZXNz
KEFSTTY0UmVnaXN0ZXJzOjp6cik7CiAgICAgICAgIHBlcmZvcm1KSVRNZW1jcHkod2hlcmUsICZp
bnNuLCBzaXplb2YoaW50KSk7CiAgICAgICAgIGNhY2hlRmx1c2god2hlcmUsIHNpemVvZihpbnQp
KTsKICAgICB9CkBAIC0zNjU1LDYgKzM2NTYsMTEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IHJldHVybiBoaW50UHNldWRvKDApOwogICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IGludCBkYXRhQ2FjaGVaZXJvVmlydHVhbEFkZHJlc3MoUmVnaXN0ZXJJRCBydCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzeXN0ZW0oMCwgMSwgMHgzLCAweDcsIDB4NCwgMHgxLCBydCk7CisgICAg
fQogICAgIAogICAgIC8vICdvcCcgbWVhbnMgbmVnYXRlCiAgICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgaW50IHRlc3RBbmRCcmFuY2hJbW1lZGlhdGUoYm9vbCBvcCwgaW50IGI1MCwgaW50IGltbTE0
LCBSZWdpc3RlcklEIHJ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BUk1Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJN
QXNzZW1ibGVyLmgKaW5kZXggOTFjZTBiMjlkYTJkZTRlOGE3YWI4NjkyZWIyYTg4N2I5MTliYThh
OS4uNDhlMTEwMTcyNDRkZGNmN2ZiMTI3MjBhOGIxZDg1OWJiN2VhZTllYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oCkBAIC05OTUsMTMgKzk5
NSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHJlYWRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEFic29sdXRl
SnVtcEFkZHJlc3MoZnJvbSkpKSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aEJrcHQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKLSAgICAgICAgewotICAgICAg
ICAgICAgQVJNV29yZCogaW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9jYXN0PEFSTVdvcmQqPihp
bnN0cnVjdGlvblN0YXJ0KTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uWzBdID0gQktQVDsKLSAg
ICAgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAg
ICAgIH0KLQogICAgICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1
Y3Rpb25TdGFydCwgdm9pZCogdG8pCiAgICAgICAgIHsKICAgICAgICAgICAgIEFSTVdvcmQqIGlu
c3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1i
bGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgK
aW5kZXggNmNkNDAyNWIxMjE1ZThhZGY4NGMzN2IzOTVjMGQ3YmYwYjY1NTdkNC4uZWI2MTUwOWUx
NDhhM2NmNjJiM2U1ZGRhYjhkZWZlOTZhNjRkOTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaApAQCAtMjMyOCwxNiArMjMyOCw2IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlYWRJbnQz
Mih3aGVyZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQmtwdCh2b2lk
KiBpbnN0cnVjdGlvblN0YXJ0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25TdGFydCkgJiAxKSk7Ci0KLSAgICAgICAgdWludDE2X3Qq
IHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKLSAg
ICAgICAgdWludDE2X3QgaW5zdHJ1Y3Rpb25zID0gT1BfQktQVDsKLSAgICAgICAgcGVyZm9ybUpJ
VE1lbWNweShwdHIsICZpbnN0cnVjdGlvbnMsIHNpemVvZih1aW50MTZfdCkpOwotICAgICAgICBj
YWNoZUZsdXNoKHB0ciwgc2l6ZW9mKHVpbnQxNl90KSk7Ci0gICAgfQotCiAgICAgc3RhdGljIHZv
aWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIHZvaWQqIHRvKQogICAg
IHsKICAgICAgICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25T
dGFydCkgJiAxKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01JUFNBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oCmluZGV4IDVmYTBmYTAwOGZjZTc0MGRlZTkzZGI4YjdkZDZiMTdkMjExMTExOWQu
LjI3MGNjZTM0ZWRiYjg1NjQwMGRkMDkyMTk0MTEyYTYxMGVkMmZkY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCkBAIC05NDEsMTUgKzk0
MSw2IEBAIHB1YmxpYzoKICAgICAgICAgY2FjaGVGbHVzaChpbnNuLCBjb2RlU2l6ZSk7CiAgICAg
fQogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhCa3B0KHZvaWQqIGluc3RydWN0aW9uU3Rh
cnQpCi0gICAgewotICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0
cnVjdGlvblN0YXJ0KSAmIDMpKTsKLSAgICAgICAgTUlQU1dvcmQqIGluc24gPSByZWludGVycHJl
dF9jYXN0PE1JUFNXb3JkKj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25T
dGFydCkpOwotICAgICAgICBpbnQgdmFsdWUgPSA1MTI7IC8qIEJSS19CVUcgKi8KLSAgICAgICAg
aW5zblswXSA9ICgweDAwMDAwMDBkIHwgKCh2YWx1ZSAmIDB4M2ZmKSA8PCBPUF9TSF9DT0RFKSk7
Ci0gICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb25TdGFydCwgc2l6ZW9mKE1JUFNXb3JkKSk7
Ci0gICAgfQotCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0
aW9uU3RhcnQsIHZvaWQqIHRvKQogICAgIHsKICAgICAgICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25TdGFydCkgJiAzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKaW5kZXggNmY1ZjM3ZTUx
YjkyMTMwNTdjMjJlZGUxY2Q0ODNlYzFjMTNkY2I2MC4uMmI4MGQyNDdmOTdhNTAzZDRkNWY0NWNk
OTg1MmZjMjQyOTIxZWJhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApAQCAtMTQ5OSwxMSArMTQ5OSw2IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihB
Uk1Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhCcmVha3BvaW50KENvZGVMb2NhdGlvbkxh
YmVsIGluc3RydWN0aW9uU3RhcnQpCi0gICAgewotICAgICAgICBBUk1Bc3NlbWJsZXI6OnJlcGxh
Y2VXaXRoQmtwdChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCkpOwotICAgIH0K
LQogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0
cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKICAgICB7CiAgICAg
ICAgIEFSTUFzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxv
Y2F0aW9uKCksIGRlc3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggZmQ0
OTRhMDUwOTYzMzdhMTU1NzIzNTIwN2U1NDhkNmYyZTk0ODA2YS4uYzM3ZTAwYjZjNjRiMTkyNGY3
ODY2Zjc1YjMyOGUzOTZlMTBmNTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTM3MTMsOSArMzcxMyw5IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCgqKSgpPihBUk02NEFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRpb24o
KSkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEJyZWFrcG9pbnQoQ29k
ZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNl
V2l0aFZNSGFsdChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0KQogICAgIHsKLSAg
ICAgICAgQVJNNjRBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQmtwdChpbnN0cnVjdGlvblN0YXJ0LmV4
ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICBBUk02NEFzc2VtYmxlcjo6cmVwbGFjZVdpdGhW
TUhhbHQoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rp
b25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IDU0
MzM1YTI5YmM4YTRjYzVlZDZhMzE2OTcyMDY3OWJkMGZhOWM3ZGQuLmYzZmU2MWRiZTM1NmFmMzNl
YTE5ZmJkOTljNWFmOGRhNzNhMTY2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xMzU0LDExICsxMzU0LDYg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuZG1iSVNIU1QoKTsKICAgICB9
Ci0gICAgCi0gICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhCcmVha3BvaW50KENvZGVMb2NhdGlv
bkxhYmVsIGluc3RydWN0aW9uU3RhcnQpCi0gICAgewotICAgICAgICBBUk12N0Fzc2VtYmxlcjo6
cmVwbGFjZVdpdGhCa3B0KGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCkpOwotICAgIH0K
IAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0
cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQ
Uy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMu
aAppbmRleCBmZjQwMDkwMWMyNDUwZDRkYzk5YzRiNjEyZWY1NDUwODQ0NTBjYTkxLi5mYTA1YmUx
NzllZjExOTY3Y2Q4NjA4NmIxYzQwY2YyODY5ZWJjMDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTMwNzIsMTEg
KzMwNzIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJl
dF9jYXN0PHZvaWQoKikoKT4oTUlQU0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRh
TG9jYXRpb24oKSkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEJyZWFr
cG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKLSAgICB7Ci0gICAgICAg
IE1JUFNBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQmtwdChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFi
bGVBZGRyZXNzKCkpOwotICAgIH0KLQogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChD
b2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0
aW5hdGlvbikKICAgICB7CiAgICAgICAgIE1JUFNBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChp
bnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5kYXRhTG9jYXRpb24o
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggMzJkYTQ1MGI0M2Q4Zjc4YTA1NDlkYjI4NWRiMTJj
MmQ0Mzg5MjdkZC4uNmFjYzJhOTY5ZGMyM2E3OTljYjY2OTIwYjkyOGJkNThhNjcyNDdhNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaApAQCAtMzgwMyw5ICszODAzLDkgQEAgcHVibGljOgogICAgIH0KICNl
bmRpZgogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhCcmVha3BvaW50KENvZGVMb2NhdGlv
bkxhYmVsIGluc3RydWN0aW9uU3RhcnQpCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhWTUhh
bHQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKICAgICB7Ci0gICAgICAgIFg4
NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhJbnQzKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhIbHQoaW5zdHJ1Y3Rp
b25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxv
Y2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaAppbmRleCBhZGRjN2Q4MTE4NDBlY2M1NTQwNWJmNDcxYzZmYjcy
M2VhYWRmYjc0Li41YjY0ZjAyYWY2NjVjMDRkMGFlMmZjNDc0M2ExNmNjZDA1NWFlMmRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTM2
MzcsMTAgKzM2MzcsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KHdoZXJlKVstMV07CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFjZVdp
dGhJbnQzKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdp
dGhIbHQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKICAgICB7CiAgICAgICAgIHVpbnQ4X3QqIHB0
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOwotICAgICAg
ICBwdHJbMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihPUF9JTlQzKTsKKyAgICAgICAgcHRyWzBd
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oT1BfSExUKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0p1bXBSZXBsYWNlbWVudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0p1bXBSZXBsYWNlbWVudC5jcHAKaW5kZXgg
MjQ3YmRhOWIwMjZlMGE5N2Q2ZTliYWY1MDZmYmQ0MDNjMDkyODUyMy4uMWViZjY5NGNlNGNmODc4
MWMyNTQ2N2YyMTk4MGQ4ZTUxNzIyNTg3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKdW1wUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcApAQCAtNDMsNyArNDMsMTEgQEAgdm9pZCBKdW1w
UmVwbGFjZW1lbnQ6OmZpcmUoKQogCiB2b2lkIEp1bXBSZXBsYWNlbWVudDo6aW5zdGFsbFZNVHJh
cEJyZWFrcG9pbnQoKQogewotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEJyZWFrcG9p
bnQobV9zb3VyY2UpOworI2lmIEVOQUJMRShTSUdOQUxfQkFTRURfVk1fVFJBUFMpCisgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoVk1IYWx0KG1fc291cmNlKTsKKyNlbHNlCisgICAgVU5S
RUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CisjZW5kaWYKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFw
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAppbmRleCA1
MWYyOGQzZTljZDcxZmYxNDI2Y2Q4ZjhiODljMjEyNzg2MTY2ODZmLi41NTViNTIxMjYxOGVlY2Yz
Y2I4OGNhYWQ4NTU2N2IwODk5MzU5NWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTVRyYXBzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTVRyYXBzLmNwcApAQCAtNTksMTcgKzU5LDYgQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewog
ICAgICAgICAsIHN0YWNrUG9pbnRlcihNYWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKHJlZ2lz
dGVycykpCiAgICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50
ZXIocmVnaXN0ZXJzKSkKICAgICB7Ci0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKFg4NikKLSAgICAg
ICAgLy8gT24gWDg2XzY0LCBTSUdUUkFQIHJlcG9ydHMgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIHRy
YXBwaW5nIFBDLiBTbywgZGVjIGJ5IDEuCi0gICAgICAgIHRyYXBQQyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KHRyYXBQQykgLSAxOwotI2VuZGlmCi0gICAgfQotCi0gICAgdm9pZCBhZGp1
c3RQQ1RvUG9pbnRUb1RyYXBwaW5nSW5zdHJ1Y3Rpb24oKQotICAgIHsKLSNpZiBDUFUoWDg2XzY0
KSB8fCBDUFUoWDg2KQotICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVy
KHJlZ2lzdGVycykgPSB0cmFwUEM7Ci0jZW5kaWYKICAgICB9CiAKICAgICBQbGF0Zm9ybVJlZ2lz
dGVycyYgcmVnaXN0ZXJzOwpAQCAtMTMwLDcgKzExOSw4IEBAIHN0YXRpYyBFeHBlY3RlZDxWTUFu
ZFN0YWNrQm91bmRzLCBWTVRyYXBzOjpFcnJvcj4gZmluZEFjdGl2ZVZNQW5kU3RhY2tCb3VuZHMo
U2lnCiAKIHN0YXRpYyB2b2lkIGluc3RhbGxTaWduYWxIYW5kbGVyKCkKIHsKLSAgICBpbnN0YWxs
U2lnbmFsSGFuZGxlcihTaWduYWw6OlRyYXAsIFtdIChTaWduYWwsIFNpZ0luZm8mLCBQbGF0Zm9y
bVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSAtPiBTaWduYWxBY3Rpb24geworICAgIGluc3RhbGxTaWdu
YWxIYW5kbGVyKFNpZ25hbDo6QmFkQWNjZXNzLCBbXSAoU2lnbmFsLCBTaWdJbmZvJiwgUGxhdGZv
cm1SZWdpc3RlcnMmIHJlZ2lzdGVycykgLT4gU2lnbmFsQWN0aW9uIHsKKyAgICAgICAgZGF0YUxv
Z0xuKCJJbiBoYW5kbGVyIik7CiAgICAgICAgIFNpZ25hbENvbnRleHQgY29udGV4dChyZWdpc3Rl
cnMpOwogCiAgICAgICAgIGlmICghaXNKSVRQQyhjb250ZXh0LnRyYXBQQykpCkBAIC0xNTEsMTAg
KzE0MSwxMyBAQCBzdGF0aWMgdm9pZCBpbnN0YWxsU2lnbmFsSGFuZGxlcigpCiAgICAgICAgICAg
ICBhdXRvIGV4cGVjdGVkU3VjY2VzcyA9IHRyYXBzLnRyeUpldHRpc29uQ29kZUJsb2Nrc09uU3Rh
Y2soY29udGV4dCk7CiAgICAgICAgICAgICBpZiAoIWV4cGVjdGVkU3VjY2VzcykKICAgICAgICAg
ICAgICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpIYW5kbGVkOyAvLyBMZXQgdGhlIFNpZ25hbFNl
bmRlciB0cnkgYWdhaW4gbGF0ZXIuCi0gICAgICAgICAgICBpZiAoZXhwZWN0ZWRTdWNjZXNzLnZh
bHVlKCkpCisgICAgICAgICAgICBpZiAoZXhwZWN0ZWRTdWNjZXNzLnZhbHVlKCkpIHsKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nTG4oIkV4aXRpbmcgaGFuZGxlciIpOwogICAgICAgICAgICAgICAg
IHJldHVybiBTaWduYWxBY3Rpb246OkhhbmRsZWQ7IC8vIFdlJ3ZlIHN1Y2Nlc3MgamV0dGlzb24g
dGhlIGNvZGVCbG9ja3MuCisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICBkYXRh
TG9nTG4oIkV4aXRpbmcgaGFuZGxlciIpOwogICAgICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpI
YW5kbGVkOwogICAgIH0pOwogfQpAQCAtMjk3LDEwICsyOTAsNiBAQCBhdXRvIFZNVHJhcHM6OnRy
eUpldHRpc29uQ29kZUJsb2Nrc09uU3RhY2soU2lnbmFsQ29udGV4dCYgY29udGV4dCkgLT4gRXhw
ZWN0ZWQ8YgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpbnZhbGlkYXRlQ29kZUJsb2Nr
c09uU3RhY2soY29kZUJsb2NrU2V0TG9ja2VyLCB0b3BDYWxsRnJhbWUpOwotCi0gICAgLy8gUmUt
cnVuIHRoZSB0cmFwcGluZyBpbnN0cnVjdGlvbiBub3cgdGhhdCB3ZSd2ZSBwYXRjaGVkIGl0IHdp
dGggdGhlIGludmFsaWRhdGlvbgotICAgIC8vIE9TUiBleGl0IG9mZi1yYW1wLgotICAgIGNvbnRl
eHQuYWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVs
dFNpZ25hbEhhbmRsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0
U2lnbmFsSGFuZGxlci5jcHAKaW5kZXggMjY0YzM0ZGU0NWRhMTc1YTVkNTE0MWMxNzFlZmU5NWUw
NjNjNWUyNy4uZTg2ZmQ0Nzk5MGU4ODg4ZDI2ZmRkZmE3Mzk0ZTQ3NmFiY2M4MDE4NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxl
ci5jcHAKQEAgLTEyMywxMSArMTIzLDcgQEAgdm9pZCBlbmFibGVGYXN0TWVtb3J5KCkKICAgICAg
ICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWV9GQVNUX01FTU9SWSkKLSAg
ICAgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpCdXMsIFtdIChTaWduYWwgc2lnbmFs
LCBTaWdJbmZvJiBzaWdJbmZvLCBQbGF0Zm9ybVJlZ2lzdGVycyYgdWNvbnRleHQpIHsKLSAgICAg
ICAgICAgIHJldHVybiB0cmFwSGFuZGxlcihzaWduYWwsIHNpZ0luZm8sIHVjb250ZXh0KTsKLSAg
ICAgICAgfSk7Ci0KLSAgICAgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpTZWdWLCBb
XSAoU2lnbmFsIHNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMmIHVj
b250ZXh0KSB7CisgICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6QmFkQWNjZXNz
LCBbXSAoU2lnbmFsIHNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMm
IHVjb250ZXh0KSB7CiAgICAgICAgICAgICByZXR1cm4gdHJhcEhhbmRsZXIoc2lnbmFsLCBzaWdJ
bmZvLCB1Y29udGV4dCk7CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA1MDA0MDc3YTU2
YTJmMmFlMzUwN2M1NGRmNWU4MjgwY2VhYjgxMDAzLi44N2JiM2JiNDNmMzgwODlmNzQ1Y2NmYmY5
MmE0ZTE2YTZjYWM2YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTk3NCw3ICs5NzQsNyBAQAogI2VuZGlm
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShKSVQpICYmIEhBVkUoTUFDSElORV9DT05URVhUKQorI2lm
IEVOQUJMRShKSVQpICYmIEhBVkUoTUFDSElORV9DT05URVhUKSAmJiAoQ1BVKFg4NikgfHwgQ1BV
KFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSkKICNkZWZpbmUgRU5BQkxFX1NJR05BTF9CQVNFRF9WTV9U
UkFQUyAxCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWdu
YWxzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKaW5kZXggZjAxZTM5
MTEzYjBjNjIxOTBiZGJlZjEzZWFiYTIyYTBlMTQ4OWJjMi4uNTY5NzNhOTM2ZGVkODY4NzExNDg0
MjEyZTBiYTE1MzBiZmZmYWU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9T
aWduYWxzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCkBAIC0x
MTcsOSArMTE3LDggQEAgc3RhdGljIHZvaWQgc3RhcnRNYWNoRXhjZXB0aW9uSGFuZGxlclRocmVh
ZCgpCiBzdGF0aWMgU2lnbmFsIGZyb21NYWNoRXhjZXB0aW9uKGV4Y2VwdGlvbl90eXBlX3QgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEVYQ19CQURfQUNDRVNTOiByZXR1
cm4gU2lnbmFsOjpTZWdWOworICAgIGNhc2UgRVhDX0JBRF9BQ0NFU1M6IHJldHVybiBTaWduYWw6
OkJhZEFjY2VzczsKICAgICBjYXNlIEVYQ19CQURfSU5TVFJVQ1RJT046IHJldHVybiBTaWduYWw6
OklsbDsKLSAgICBjYXNlIEVYQ19CUkVBS1BPSU5UOiByZXR1cm4gU2lnbmFsOjpUcmFwOwogICAg
IGRlZmF1bHQ6IGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU2lnbmFsOjpVbmtub3duOwpAQCAt
MTI4LDkgKzEyNyw4IEBAIHN0YXRpYyBTaWduYWwgZnJvbU1hY2hFeGNlcHRpb24oZXhjZXB0aW9u
X3R5cGVfdCB0eXBlKQogc3RhdGljIGV4Y2VwdGlvbl9tYXNrX3QgdG9NYWNoTWFzayhTaWduYWwg
c2lnbmFsKQogewogICAgIHN3aXRjaCAoc2lnbmFsKSB7Ci0gICAgY2FzZSBTaWduYWw6OlNlZ1Y6
IHJldHVybiBFWENfTUFTS19CQURfQUNDRVNTOworICAgIGNhc2UgU2lnbmFsOjpCYWRBY2Nlc3M6
IHJldHVybiBFWENfTUFTS19CQURfQUNDRVNTOwogICAgIGNhc2UgU2lnbmFsOjpJbGw6IHJldHVy
biBFWENfTUFTS19CQURfSU5TVFJVQ1RJT047Ci0gICAgY2FzZSBTaWduYWw6OlRyYXA6IHJldHVy
biBFWENfTUFTS19CUkVBS1BPSU5UOwogICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgIH0KICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTY2LDYgKzE2NCwxMSBAQCBrZXJuX3Jl
dHVybl90IGNhdGNoX21hY2hfZXhjZXB0aW9uX3JhaXNlX3N0YXRlKAogICAgIG1hY2hfbXNnX3R5
cGVfbnVtYmVyX3QqIG91dFN0YXRlQ291bnQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQocG9ydCA9
PSBleGNlcHRpb25Qb3J0KTsKKyAgICAvLyBJZiB3ZSB3YW50ZWQgdG8gZGlzdGluZ3Vpc2ggYmV0
d2VlbiBTSUdCVVMgYW5kIFNJR1NFR1YgZm9yIEVYQ19CQURfQUNDRVNTIG9uIERhcndpbiB3ZSBj
b3VsZCBkbzoKKyAgICAvLyBpZiAoZXhjZXB0aW9uRGF0YVswXSA9PSBLRVJOX0lOVkFMSURfQURE
UkVTUykKKyAgICAvLyAgICBzaWduYWwgPSBTSUdTRUdWOworICAgIC8vIGVsc2UKKyAgICAvLyAg
ICBzaWduYWwgPSBTSUdCVVM7CiAgICAgU2lnbmFsIHNpZ25hbCA9IGZyb21NYWNoRXhjZXB0aW9u
KGV4Y2VwdGlvblR5cGUpOwogICAgIFJFTEVBU0VfQVNTRVJUKHNpZ25hbCAhPSBTaWduYWw6OlVu
a25vd24pOwogCkBAIC0xODcsNyArMTkwLDcgQEAga2Vybl9yZXR1cm5fdCBjYXRjaF9tYWNoX2V4
Y2VwdGlvbl9yYWlzZV9zdGF0ZSgKICNlbmRpZgogCiAgICAgU2lnSW5mbyBpbmZvOwotICAgIGlm
IChzaWduYWwgPT0gU2lnbmFsOjpTZWdWKSB7CisgICAgaWYgKHNpZ25hbCA9PSBTaWduYWw6OkJh
ZEFjY2VzcykgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGRhdGFDb3VudCwgZGF0YUNvdW50ID09
IDIpOwogICAgICAgICBpbmZvLmZhdWx0aW5nQWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGV4Y2VwdGlvbkRhdGFbMV0pOwogICAgIH0KQEAgLTI0OSwxOCArMjUyLDE5IEBAIHZvaWQg
dW5yZWdpc3RlclRocmVhZEZvck1hY2hFeGNlcHRpb25IYW5kbGluZyhUaHJlYWQqIHRocmVhZCkK
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB1c2VNYWNoID0gZmFsc2U7CiAjZW5kaWYgLy8gSEFWRShN
QUNIX0VYQ0VQVElPTlMpCiAKKworaW5saW5lIHNpemVfdCBvZmZzZXRGb3JTeXN0ZW1TaWduYWwo
aW50IHNpZykKK3sKKyAgICBTaWduYWwgc2lnbmFsID0gZnJvbVN5c3RlbVNpZ25hbChzaWcpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpZ25hbCkgKyAoc2lnID09IFNJR0JVUyk7
Cit9CisKIHN0YXRpYyB2b2lkIGpzY1NpZ25hbEhhbmRsZXIoaW50LCBzaWdpbmZvX3QqLCB2b2lk
Kik7CiAKIHZvaWQgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsIHNpZ25hbCwgU2lnbmFsSGFu
ZGxlciYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHNpZ25hbCA8IFNpZ25hbDo6VW5rbm93bik7
CiAjaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCi0gICAgLy8gU2luY2UgbWFjaCBvbmx5IGhhcyBF
WENfQkFEX0FDQ0VTUywgd2hpY2ggY292ZXJzIGJvdGggU2VnViBhbmQgQnVzLCB3ZSBhcmJpdGFy
aWx5IGNob29zZSB0byBtYWtlCi0gICAgLy8gbWFjaCBFWENfQkFEX0FDQ0VTU2VzIG1hcCB0byBT
ZWdWLgotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQganVzdCB1c2UgYSBzaW5nbGUgU2lnbmFsOjpC
YWRBY2Nlc3MgdmFsdWUgaW5zdGVhZCBvZiBTZWdWL0J1cy4KLSAgICAvLyBTZWU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIwNjMKLSAgICBpZiAoc2lnbmFsID09
IFNpZ25hbDo6QnVzICYmIHVzZU1hY2gpCi0gICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoIXVz
ZU1hY2ggfHwgc2lnbmFsICE9IFNpZ25hbDo6VXNyKTsKIAogICAgIGlmICh1c2VNYWNoKQpAQCAt
Mjc2LDcgKzI4MCwxMCBAQCB2b2lkIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbCBzaWduYWws
IFNpZ25hbEhhbmRsZXImJiBoYW5kbGVyKQogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBzaWdm
aWxsc2V0KCZhY3Rpb24uc2FfbWFzayk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVz
dWx0KTsKICAgICAgICAgICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX1NJR0lORk87Ci0gICAgICAg
ICAgICByZXN1bHQgPSBzaWdhY3Rpb24odG9TeXN0ZW1TaWduYWwoc2lnbmFsKSwgJmFjdGlvbiwg
Jm9sZEFjdGlvbnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzaWduYWwpXSk7CisgICAgICAgICAgICBh
dXRvIHN5c3RlbVNpZ25hbHMgPSB0b1N5c3RlbVNpZ25hbChzaWduYWwpOworICAgICAgICAgICAg
cmVzdWx0ID0gc2lnYWN0aW9uKHN0ZDo6Z2V0PDA+KHN5c3RlbVNpZ25hbHMpLCAmYWN0aW9uLCAm
b2xkQWN0aW9uc1tvZmZzZXRGb3JTeXN0ZW1TaWduYWwoc3RkOjpnZXQ8MD4oc3lzdGVtU2lnbmFs
cykpXSk7CisgICAgICAgICAgICBpZiAoc3RkOjpnZXQ8MT4oc3lzdGVtU2lnbmFscykpCisgICAg
ICAgICAgICAgICAgcmVzdWx0IHw9IHNpZ2FjdGlvbigqc3RkOjpnZXQ8MT4oc3lzdGVtU2lnbmFs
cyksICZhY3Rpb24sICZvbGRBY3Rpb25zW29mZnNldEZvclN5c3RlbVNpZ25hbCgqc3RkOjpnZXQ8
MT4oc3lzdGVtU2lnbmFscykpXSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0
KTsKICAgICAgICAgfQogCkBAIC0zMTYsNyArMzIzLDcgQEAgdm9pZCBqc2NTaWduYWxIYW5kbGVy
KGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogdWNvbnRleHQpCiAgICAgfQogCiAgICAg
U2lnSW5mbyBzaWdJbmZvOwotICAgIGlmIChzaWduYWwgPT0gU2lnbmFsOjpTZWdWIHx8IHNpZ25h
bCA9PSBTaWduYWw6OkJ1cykKKyAgICBpZiAoc2lnbmFsID09IFNpZ25hbDo6QmFkQWNjZXNzKQog
ICAgICAgICBzaWdJbmZvLmZhdWx0aW5nQWRkcmVzcyA9IGluZm8tPnNpX2FkZHI7CiAKICAgICBQ
bGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzID0gcmVnaXN0ZXJzRnJvbVVDb250ZXh0KHJlaW50
ZXJwcmV0X2Nhc3Q8dWNvbnRleHRfdCo+KHVjb250ZXh0KSk7CkBAIC0zNDEsNyArMzQ4LDggQEAg
dm9pZCBqc2NTaWduYWxIYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogdWNv
bnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdHJ1Y3Qgc2lnYWN0aW9uJiBv
bGRBY3Rpb24gPSBvbGRBY3Rpb25zW3N0YXRpY19jYXN0PHNpemVfdD4oc2lnbmFsKV07CisgICAg
dW5zaWduZWQgb2xkQWN0aW9uSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpZ25hbCkgKyAo
c2lnID09IFNJR0JVUyk7CisgICAgc3RydWN0IHNpZ2FjdGlvbiYgb2xkQWN0aW9uID0gb2xkQWN0
aW9uc1tzdGF0aWNfY2FzdDxzaXplX3Q+KG9sZEFjdGlvbkluZGV4KV07CiAgICAgaWYgKHNpZ25h
bCA9PSBTaWduYWw6OlVzcikgewogICAgICAgICBpZiAob2xkQWN0aW9uLnNhX3NpZ2FjdGlvbikK
ICAgICAgICAgICAgIG9sZEFjdGlvbi5zYV9zaWdhY3Rpb24oc2lnLCBpbmZvLCB1Y29udGV4dCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaCBiL1NvdXJjZS9X
VEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCmluZGV4IDI1NzZmYWQ1YTAwNDgzMzIwOGM1YmMyNTBl
NTQ3MGQzNzhmNzUyYjQuLmZhYWUwYTdkMjA0ZTUzZmFkMDQxZmU1NmYzMjUxMTM2ODExYTlhOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRl
IDxzaWduYWwuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm1SZWdpc3RlcnMuaD4KIAogbmFtZXNwYWNl
IFdURiB7CkBAIC00MSwyMiArNDIsMTggQEAgZW51bSBjbGFzcyBTaWduYWwgewogCiAgICAgLy8g
VGhlc2Ugc2lnbmFscyB3aWxsIG9ubHkgY2hhaW4gaWYgd2UgZG9uJ3QgaGF2ZSBhIGhhbmRsZXIg
dGhhdCBjYW4gcHJvY2VzcyB0aGVtLiBJZiB0aGVyZSBpcyBub3RoaW5nCiAgICAgLy8gdG8gY2hh
aW4gdG8gd2UgcmVzdG9yZSB0aGUgZGVmYXVsdCBoYW5kbGVyIGFuZCBjcmFzaC4KLSAgICBUcmFw
LAogICAgIElsbCwKLSAgICBTZWdWLAotICAgIEJ1cywKLSAgICBOdW1iZXJPZlNpZ25hbHMsCisg
ICAgQmFkQWNjZXNzLCAvLyBGb3IgcG9zaXggdGhpcyBpcyBib3RoIFNJR1NFR1YgYW5kIFNJR0JV
UworICAgIE51bWJlck9mU2lnbmFscyA9IEJhZEFjY2VzcyArIDIsIC8vIEJhZEFjY2VzcyBpcyBy
ZWFsbHkgdHdvIHNpZ25hbHMuCiAgICAgVW5rbm93biA9IE51bWJlck9mU2lnbmFscwogfTsKIAot
aW5saW5lIGludCB0b1N5c3RlbVNpZ25hbChTaWduYWwgc2lnbmFsKQoraW5saW5lIHN0ZDo6dHVw
bGU8aW50LCBzdGQ6Om9wdGlvbmFsPGludD4+IHRvU3lzdGVtU2lnbmFsKFNpZ25hbCBzaWduYWwp
CiB7CiAgICAgc3dpdGNoIChzaWduYWwpIHsKLSAgICBjYXNlIFNpZ25hbDo6U2VnVjogcmV0dXJu
IFNJR1NFR1Y7Ci0gICAgY2FzZSBTaWduYWw6OkJ1czogcmV0dXJuIFNJR0JVUzsKLSAgICBjYXNl
IFNpZ25hbDo6SWxsOiByZXR1cm4gU0lHSUxMOwotICAgIGNhc2UgU2lnbmFsOjpVc3I6IHJldHVy
biBTSUdVU1IyOwotICAgIGNhc2UgU2lnbmFsOjpUcmFwOiByZXR1cm4gU0lHVFJBUDsKKyAgICBj
YXNlIFNpZ25hbDo6QmFkQWNjZXNzOiByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFNJR1NFR1YsIFNJ
R0JVUyk7CisgICAgY2FzZSBTaWduYWw6OklsbDogcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShTSUdJ
TEwsIHN0ZDo6bnVsbG9wdCk7CisgICAgY2FzZSBTaWduYWw6OlVzcjogcmV0dXJuIHN0ZDo6bWFr
ZV90dXBsZShTSUdJTEwsIHN0ZDo6bnVsbG9wdCk7CiAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAg
fQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02NSwxMSArNjIsMTAgQEAg
aW5saW5lIGludCB0b1N5c3RlbVNpZ25hbChTaWduYWwgc2lnbmFsKQogaW5saW5lIFNpZ25hbCBm
cm9tU3lzdGVtU2lnbmFsKGludCBzaWduYWwpCiB7CiAgICAgc3dpdGNoIChzaWduYWwpIHsKLSAg
ICBjYXNlIFNJR1NFR1Y6IHJldHVybiBTaWduYWw6OlNlZ1Y7Ci0gICAgY2FzZSBTSUdCVVM6IHJl
dHVybiBTaWduYWw6OkJ1czsKKyAgICBjYXNlIFNJR1NFR1Y6IHJldHVybiBTaWduYWw6OkJhZEFj
Y2VzczsKKyAgICBjYXNlIFNJR0JVUzogcmV0dXJuIFNpZ25hbDo6QmFkQWNjZXNzOwogICAgIGNh
c2UgU0lHSUxMOiByZXR1cm4gU2lnbmFsOjpJbGw7CiAgICAgY2FzZSBTSUdVU1IyOiByZXR1cm4g
U2lnbmFsOjpVc3I7Ci0gICAgY2FzZSBTSUdUUkFQOiByZXR1cm4gU2lnbmFsOjpUcmFwOwogICAg
IGRlZmF1bHQ6IHJldHVybiBTaWduYWw6OlVua25vd247CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI3Y2EzODY0MjdlYzY0NGU0
OGU3N2FiZDNlNzYzOWNmNGU3Nzg5OGIuLmIxOWYzMzA0N2IwZTgwNzdjMGUzMjBmM2Y1NjQ1OGEw
NDM5OTNkMDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wNi0yMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWls
bGVyQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggVk1UcmFwcyB0byB1c2UgaGFsdCBpbnN0
cnVjdGlvbnMgcmF0aGVyIHRoYW4gYnJlYWtwb2ludCBpbnN0cnVjdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzY3NworCisgICAgICAgIFJl
dmlld2VkIGJ5IEpGIEJhc3RpZW4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9UaHJlYWRNZXNzYWdlcy5jcHA6CisgICAgICAgIChURVNUKToKKwogMjAxNy0wNi0yMCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIERuRF0g
W1dLMl0gUmVtb3ZlIGN1c3RvbSBsb2dpYyBmb3IgZGlzYW1iaWd1YXRpbmcgbG9uZyBwcmVzcyBh
Y3Rpb24gc2hlZXQgZ2VzdHVyZXMgYW5kIGRyYWcgbGlmdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVzc2FnZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVzc2FnZXMuY3BwCmluZGV4IGU2YTU3ODk0YmI1MTZmZTFj
ZTcxM2QwN2JmMThmMDcwNmVmYTkzN2MuLjI2NmYyMGVhZGVlZjFlMzU4MGIyOTkwYWQwYjU3MWU4
YWRlNTVkNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVh
ZE1lc3NhZ2VzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRN
ZXNzYWdlcy5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBURVNUKFRocmVhZE1lc3NhZ2UsIFNpZ25h
bHNXb3JrT25FeGl0KQogICAgICAgICByZWNlaXZlclNob3VsZEtlZXBSdW5uaW5nLnN0b3JlKGZh
bHNlKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PFJlZmxlY3RlZFRocmVhZCo+
KHJlY2VpdmVyVGhyZWFkLmdldCgpKS0+aGFzRXhpdGVkKCkpOwogICAgICAgICBzbGVlcCgxKTsK
LSAgICAgICAgc2lnbmFsRmlyZWQgPSAhcHRocmVhZF9raWxsKHN0YXRpY19jYXN0PFJlZmxlY3Rl
ZFRocmVhZCo+KHJlY2VpdmVyVGhyZWFkLmdldCgpKS0+bV9oYW5kbGUsIHRvU3lzdGVtU2lnbmFs
KFNpZ25hbDo6VXNyKSk7CisgICAgICAgIHNpZ25hbEZpcmVkID0gIXB0aHJlYWRfa2lsbChzdGF0
aWNfY2FzdDxSZWZsZWN0ZWRUaHJlYWQqPihyZWNlaXZlclRocmVhZC5nZXQoKSktPm1faGFuZGxl
LCBzdGQ6OmdldDwwPih0b1N5c3RlbVNpZ25hbChTaWduYWw6OlVzcikpKTsKICAgICB9CiAKICAg
ICByZWNlaXZlclRocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313765</attachid>
            <date>2017-06-23 19:08:44 -0700</date>
            <delta_ts>2017-06-23 19:11:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-173677-20170623190843.patch</filename>
            <type>text/plain</type>
            <size>28907</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OTY4YjZkNDMxZGIzM2RkN2M0OGVhNDY3MDJiMDNlYTg5Nzk5NzUyLi44NTI2ZTAyMTI5OTdjZTFh
NWE0MDkyMjAyMDg5NDRiOGU3ZmM3ZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxNy0wNi0yMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBTd2l0Y2ggVk1UcmFwcyB0byB1c2UgaGFsdCBpbnN0cnVjdGlvbnMg
cmF0aGVyIHRoYW4gYnJlYWtwb2ludCBpbnN0cnVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzY3NworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzIxNzg4OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAg
ICBVc2luZyB0aGUgYnJlYWtwb2ludCBpbnN0cnVjdGlvbiBmb3IgVk1UcmFwcyBjYXVzZWQgaXNz
dWVzIHdpdGggbGxkYi4KKyAgICAgICAgU2luY2Ugd2Ugb25seSBuZWVkIHNvbWUgd2F5IHRvIHN0
b3AgZXhlY3V0aW9uIHdlIGNhbiwgaW4gdGhlb3J5LCB1c2UKKyAgICAgICAgYW55IGV4Y2VwdGlv
bmluZyBpbnN0cnVjdGlvbiB3ZSB3YW50LiBJIHdlbnQgd2l0aCB0aGUgaGFsdCBpbnN0cnVjdGlv
bgorICAgICAgICBvbiBYODYgc2luY2UgdGhhdCBpcyB0aGUgb25seSBvbmUgYnl0ZSBpbnN0cnVj
dGlvbiB0aGF0IGRvZXMgbm90CisgICAgICAgIGJyZWFrcG9pbnQgKGluIG15IHRlc3RzIGJvdGgg
MHhmMSBhbmQgMHhkNiBwcm9kdWNlZCBFWENfQlJFQUtQT0lOVCkuCisgICAgICAgIE9uIEFSTSB3
ZSB1c2UgdGhlIGRhdGEgY2FjaGUgY2xlYXJpbmcgaW5zdHJ1Y3Rpb24gd2l0aCB0aGUgemVybyBy
ZWdpc3RlciwKKyAgICAgICAgd2hpY2ggdHJpZ2dlcnMgYSBzZWdtZW50YXRpb24gZmF1bHQuCisK
KyAgICAgICAgQWxzbywgdXBkYXRlIHRoZSBwbGF0Zm9ybSBjb2RlIHRvIG9ubHkgdXNlIHNpZ25h
bGluZyBWTVRyYXBzCisgICAgICAgIG9uIHdoZXJlIHdlIGhhdmUgYW4gYXBwcm9wcmlhdGUgaW5z
dHJ1Y3Rpb24gKHg4NiBhbmQgQVJNNjQpLgorCisgICAgICAgICogQVBJL3Rlc3RzL0V4ZWN1dGlv
blRpbWVMaW1pdFRlc3QuY3BwOgorICAgICAgICAodGVzdEV4ZWN1dGlvblRpbWVMaW1pdCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTTY0
QXNzZW1ibGVyOjpyZXBsYWNlV2l0aFZNSGFsdCk6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1i
bGVyOjpkYXRhQ2FjaGVaZXJvVmlydHVhbEFkZHJlc3MpOgorICAgICAgICAoSlNDOjpBUk02NEFz
c2VtYmxlcjo6cmVwbGFjZVdpdGhCa3B0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIv
QVJNQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6cmVwbGFjZVdpdGhC
a3B0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAg
ICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQmtwdCk6IERlbGV0ZWQuCisg
ICAgICAgICogYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TUlQU0Fz
c2VtYmxlcjo6cmVwbGFjZVdpdGhCa3B0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnJl
cGxhY2VXaXRoQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6cmVw
bGFjZVdpdGhWTUhhbHQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpyZXBs
YWNlV2l0aEJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnN0b3Jl
RmVuY2UpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpyZXBsYWNlV2l0aEJy
ZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1J
UFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpyZXBsYWNlV2l0aEJyZWFr
cG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cmVwbGFjZVdp
dGhWTUhhbHQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cmVwbGFj
ZVdpdGhCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhIbHQpOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSW50Myk6IERlbGV0ZWQuCisgICAg
ICAgICogZGZnL0RGR0p1bXBSZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SnVt
cFJlcGxhY2VtZW50OjppbnN0YWxsVk1UcmFwQnJlYWtwb2ludCk6CisgICAgICAgICogcnVudGlt
ZS9WTVRyYXBzLmNwcDoKKyAgICAgICAgKEpTQzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4
dCk6CisgICAgICAgIChKU0M6Omluc3RhbGxTaWduYWxIYW5kbGVyKToKKyAgICAgICAgKEpTQzo6
U2lnbmFsQ29udGV4dDo6YWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjplbmFibGVGYXN0TWVtb3J5KToKKwogMjAxNy0wNi0yMCAgS2VpdGggTWls
bGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbGVhayBvZiBNb2R1
bGVJbmZvcm1hdGlvbnMgaW4gQkJRUGxhbiBjb25zdHJ1Y3RvcnMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE5NmJjYjdjNzBh
ZmY1NzAzODM2YTAzMGZlOWY0ZWZjYWYxMjY2MzUuLjU4NGE5ZmVhM2YzYmM0MDQxNzc2YjI5ZTJh
ZDhkMzk3OWUxYjc2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTctMDYtMjMgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIFZNVHJhcHMg
dG8gdXNlIGhhbHQgaW5zdHJ1Y3Rpb25zIHJhdGhlciB0aGFuIGJyZWFrcG9pbnQgaW5zdHJ1Y3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM2
NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMTc4ODkyPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEpGIEJhc3RpZW4uCisKKyAgICAgICAgUmVtb3ZlIHRoZSBUcmFwIHNpZ25hbCBoYW5kbGVy
IGNvZGUgc2luY2UgaXQgcGxheXMgYmFkbHkgd2l0aCBsbGRiIGFuZCBjb21iaW5lCisgICAgICAg
IFNJR0JVUyB3aXRoIFNJR1NFR1Ygc2luY2UgZGlzdGlndWlzaGluZyB0aGVtIGlzIGdlbmVyYWxs
eSBub24tcG9ydGFibGUuCisKKyAgICAgICAgQWxzbywgdXBkYXRlIHRoZSBwbGF0Zm9ybSBjb2Rl
IHRvIG9ubHkgdXNlIHNpZ25hbGluZyBWTVRyYXBzCisgICAgICAgIG9uIHdoZXJlIHdlIGhhdmUg
YW4gYXBwcm9wcmlhdGUgaW5zdHJ1Y3Rpb24gKHg4NiBhbmQgQVJNNjQpLgorCisgICAgICAgICog
d3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL3RocmVhZHMvU2lnbmFscy5jcHA6CisgICAg
ICAgIChXVEY6OmZyb21NYWNoRXhjZXB0aW9uKToKKyAgICAgICAgKFdURjo6dG9NYWNoTWFzayk6
CisgICAgICAgIChXVEY6Omluc3RhbGxTaWduYWxIYW5kbGVyKToKKyAgICAgICAgKFdURjo6anNj
U2lnbmFsSGFuZGxlcik6CisgICAgICAgICogd3RmL3RocmVhZHMvU2lnbmFscy5oOgorICAgICAg
ICAoV1RGOjp0b1N5c3RlbVNpZ25hbCk6CisgICAgICAgIChXVEY6OmZyb21TeXN0ZW1TaWduYWwp
OgorCiAyMDE3LTA2LTIwICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4K
IAogICAgICAgICBSZW1vdmUgZXhjZXNzaXZlIGluY2x1ZGUgZGlyZWN0aXZlcyBmcm9tIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1l
TGltaXRUZXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9u
VGltZUxpbWl0VGVzdC5jcHAKaW5kZXggYTNjMzlhNzYxYzI0NWNkZDU5NTgzNWI4MzhhZDA1ZmE3
N2YwMGZjZS4uOWRjNGQ2NzFhNDgyMTU5ZGIyOWY2ZjE0YzFmM2VkYmZiNTJjYjE0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRp
bWVMaW1pdFRlc3QuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1l
TGltaXQoKQogICAgICAgICB7ICJMTElOVCIsICAgIDAsICAgIi0tdXNlQ29uY3VycmVudEpJVD1m
YWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9ZmFsc2UiIH0sCiAgICAgICAgIHsgIkJhc2Vs
aW5lIiwgMCwgICAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNlTExJbnQ9dHJ1ZSAtLXVz
ZUpJVD10cnVlIC0tdXNlREZHSklUPWZhbHNlIiB9LAogICAgICAgICB7ICJERkciLCAgICAgIDAs
ICAgIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9dHJ1
ZSAtLXVzZURGR0pJVD10cnVlIC0tdXNlRlRMSklUPWZhbHNlIiB9LAotICAgICAgICB7ICJGVEwi
LCAgICAgIDIwMCwgIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11
c2VKSVQ9dHJ1ZSAtLXVzZURGR0pJVD10cnVlIC0tdXNlRlRMSklUPXRydWUiIH0sCisgICAgICAg
IHsgIkZUTCIsICAgICAgMzAwLCAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNlTExJbnQ9
dHJ1ZSAtLXVzZUpJVD10cnVlIC0tdXNlREZHSklUPXRydWUgLS11c2VGVExKSVQ9dHJ1ZSIgfSwK
ICAgICB9OwogICAgIAogICAgIGJvb2wgZmFpbGVkID0gZmFsc2U7CkBAIC0xNTEsNyArMTUxLDM5
IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgSlNPYmplY3RSZWYgY3Vy
cmVudENQVVRpbWVGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNv
bnRleHQsIGN1cnJlbnRDUFVUaW1lU3RyLCBjdXJyZW50Q1BVVGltZUFzSlNGdW5jdGlvbkNhbGxi
YWNrKTsKICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3Qs
IGN1cnJlbnRDUFVUaW1lU3RyLCBjdXJyZW50Q1BVVGltZUZ1bmN0aW9uLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZU5vbmUsIG51bGxwdHIpOwogICAgICAgICBKU1N0cmluZ1JlbGVhc2UoY3VycmVudENQ
VVRpbWVTdHIpOwotICAgICAgICAKKworICAgICAgICAvKiBUZXN0IHNjcmlwdCBvbiBhbm90aGVy
IHRocmVhZDogKi8KKyAgICAgICAgdGltZUxpbWl0ID0gKDEwMCArIHRpZXJBZGp1c3RtZW50TWls
bGlzKSAvIDEwMDAuMDsKKyAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGlt
aXQoY29udGV4dEdyb3VwLCB0aW1lTGltaXQsIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrLCAwKTsK
KyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgdGltZUFmdGVyV2F0Y2hkb2dTaG91bGRI
YXZlRmlyZWQgPSAzMDAgKyB0aWVyQWRqdXN0bWVudE1pbGxpczsKKworICAgICAgICAgICAgSlNT
dHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImZ1bmN0aW9u
IGZvbygpIHsgd2hpbGUgKHRydWUpIHsgfSB9IGZvbygpOyIpOworICAgICAgICAgICAgZXhjZXB0
aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEpTVmFsdWVSZWYqIGV4biA9ICZleGNlcHRpb247
CisgICAgICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwor
ICAgICAgICAgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiUm9ndWUgdGhyZWFkIiwg
Wz1dIHsKKyAgICAgICAgICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdCwg
bnVsbHB0ciwgbnVsbHB0ciwgMSwgZXhuKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBzbGVlcChTZWNvbmRzKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkIC8gMTAwMC4w
KSk7CisKKyAgICAgICAgICAgIGlmIChzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCkK
KyAgICAgICAgICAgICAgICBwcmludGYoIlBBU1M6ICVzIHNjcmlwdCB0aW1lZCBvdXQgYXMgZXhw
ZWN0ZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgc2NyaXB0IHRpbWVvdXQgY2FsbGJhY2sgd2FzIG5v
dCBjYWxsZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgICAgICBleGl0KDEp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbikgeworICAgICAg
ICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3
YXMgbm90IHRocm93bi5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAgIGV4
aXQoMSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRocmVhZC0+d2FpdEZvckNvbXBs
ZXRpb24oKTsKKyAgICAgICAgICAgIHRlc3RSZXNldEFmdGVyVGltZW91dChmYWlsZWQpOworICAg
ICAgICB9CisKICAgICAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91dDogKi8KICAgICAgICAgdGlt
ZUxpbWl0ID0gKDEwMCArIHRpZXJBZGp1c3RtZW50TWlsbGlzKSAvIDEwMDAuMDsKICAgICAgICAg
SlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdyb3VwLCB0aW1lTGlt
aXQsIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLmMKaW5kZXggZjEyY2MyZWUyMWIzOGU4YWUwZmYyNDRlZWQxOTUzZjMy
M2IzYzUyZi4uOWQzYjQ1NjI5ZjVjMWZhY2M4MTA5OTE5ODM2NGRmMTU5NmM5ZjNkNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKQEAgLTEzNDgsNiArMTM0OCw3
IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgOjpTZXRFcnJvck1vZGUo
MCk7CiAjZW5kaWYKIAorICAgIHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKTsKICAgICB0ZXN0Q29t
cGFyZUFuZFN3YXAoKTsKICAgICBzdGFydE11bHRpdGhyZWFkZWRNdWx0aVZNRXhlY3V0aW9uVGVz
dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0
QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1i
bGVyLmgKaW5kZXggNmFkNDZkZTc5MTBhMzYzNjAzNGJjMzU0NjY1ZmExZjQxZGFhNWM2OS4uYjg1
MDY3M2VmNjc4NDFhOWE5NmYyN2M1MjM0MmQ0MWYwNzM3MGU2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaApAQCAtMjYwMiw5ICsyNjAy
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgbGlua1BvaW50ZXIoYWRkcmVzc09mKGNvZGUsIHdoZXJl
KSwgdmFsdWVQdHIpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQmtwdCh2
b2lkKiB3aGVyZSkKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aFZNSGFsdCh2b2lkKiB3aGVy
ZSkKICAgICB7Ci0gICAgICAgIGludCBpbnNuID0gZXhjZXBuR2VuZXJhdGlvbihFeGNlcG5PcF9C
UkVBS1BPSU5ULCAwLCAwKTsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgdHJ5IHRvIHdyaXRlIHRv
IG51bGwgd2hpY2ggc2hvdWxkIGFsd2F5cyBTZWdmYXVsdC4KKyAgICAgICAgaW50IGluc24gPSBk
YXRhQ2FjaGVaZXJvVmlydHVhbEFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OnpyKTsKICAgICAgICAg
cGVyZm9ybUpJVE1lbWNweSh3aGVyZSwgJmluc24sIHNpemVvZihpbnQpKTsKICAgICAgICAgY2Fj
aGVGbHVzaCh3aGVyZSwgc2l6ZW9mKGludCkpOwogICAgIH0KQEAgLTM2NTUsNiArMzY1NiwxMSBA
QCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIGhpbnRQc2V1ZG8oMCk7CiAgICAgfQor
CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGRhdGFDYWNoZVplcm9WaXJ0dWFsQWRkcmVz
cyhSZWdpc3RlcklEIHJ0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN5c3RlbSgwLCAxLCAweDMs
IDB4NywgMHg0LCAweDEsIHJ0KTsKKyAgICB9CiAgICAgCiAgICAgLy8gJ29wJyBtZWFucyBuZWdh
dGUKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgdGVzdEFuZEJyYW5jaEltbWVkaWF0ZShi
b29sIG9wLCBpbnQgYjUwLCBpbnQgaW1tMTQsIFJlZ2lzdGVySUQgcnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaAppbmRleCA5MWNlMGIyOWRhMmRl
NGU4YTdhYjg2OTJlYjJhODg3YjkxOWJhOGE5Li40OGUxMTAxNzI0NGRkY2Y3ZmIxMjcyMGE4YjFk
ODU5YmI3ZWFlOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0FSTUFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJN
QXNzZW1ibGVyLmgKQEAgLTk5NSwxMyArOTk1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZFBvaW50ZXIocmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oZ2V0QWJzb2x1dGVKdW1wQWRkcmVzcyhmcm9tKSkpKTsKICAgICAgICAg
fQogCi0gICAgICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQmtwdCh2b2lkKiBpbnN0cnVjdGlv
blN0YXJ0KQotICAgICAgICB7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBpbnN0cnVjdGlvbiA9IHJl
aW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGluc3RydWN0aW9uU3RhcnQpOwotICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25bMF0gPSBCS1BUOwotICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlv
biwgc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgfQotCiAgICAgICAgIHN0YXRpYyB2b2lkIHJl
cGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKICAgICAgICAg
ewogICAgICAgICAgICAgQVJNV29yZCogaW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9jYXN0PEFS
TVdvcmQqPihpbnN0cnVjdGlvblN0YXJ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAppbmRleCA2Y2Q0MDI1YjEyMTVlOGFkZjg0YzM3YjM5
NWMwZDdiZjBiNjU1N2Q0Li5lYjYxNTA5ZTE0OGEzY2Y2MmIzZTVkZGFiOGRlZmU5NmE2NGQ5Nzc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1i
bGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxl
ci5oCkBAIC0yMzI4LDE2ICsyMzI4LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4ocmVhZEludDMyKHdoZXJlKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IHZvaWQgcmVwbGFjZVdpdGhCa3B0KHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCi0gICAgewotICAg
ICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvblN0YXJ0KSAm
IDEpKTsKLQotICAgICAgICB1aW50MTZfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZf
dCo+KGluc3RydWN0aW9uU3RhcnQpOwotICAgICAgICB1aW50MTZfdCBpbnN0cnVjdGlvbnMgPSBP
UF9CS1BUOwotICAgICAgICBwZXJmb3JtSklUTWVtY3B5KHB0ciwgJmluc3RydWN0aW9ucywgc2l6
ZW9mKHVpbnQxNl90KSk7Ci0gICAgICAgIGNhY2hlRmx1c2gocHRyLCBzaXplb2YodWludDE2X3Qp
KTsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1
Y3Rpb25TdGFydCwgdm9pZCogdG8pCiAgICAgewogICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihpbnN0cnVjdGlvblN0YXJ0KSAmIDEpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKaW5kZXggNWZhMGZhMDA4ZmNlNzQw
ZGVlOTNkYjhiN2RkNmIxN2QyMTExMTE5ZC4uMjcwY2NlMzRlZGJiODU2NDAwZGQwOTIxOTQxMTJh
NjEwZWQyZmRjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
SVBTQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBT
QXNzZW1ibGVyLmgKQEAgLTk0MSwxNSArOTQxLDYgQEAgcHVibGljOgogICAgICAgICBjYWNoZUZs
dXNoKGluc24sIGNvZGVTaXplKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0
aEJrcHQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghKGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMykpOwotICAgICAgICBN
SVBTV29yZCogaW5zbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TUlQU1dvcmQqPihyZWludGVycHJldF9j
YXN0PGludHB0cl90PihpbnN0cnVjdGlvblN0YXJ0KSk7Ci0gICAgICAgIGludCB2YWx1ZSA9IDUx
MjsgLyogQlJLX0JVRyAqLwotICAgICAgICBpbnNuWzBdID0gKDB4MDAwMDAwMGQgfCAoKHZhbHVl
ICYgMHgzZmYpIDw8IE9QX1NIX0NPREUpKTsKLSAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlv
blN0YXJ0LCBzaXplb2YoTUlQU1dvcmQpKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9pZCByZXBs
YWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCiAgICAgewogICAg
ICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvblN0YXJ0KSAm
IDMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk0uaAppbmRleCA2ZjVmMzdlNTFiOTIxMzA1N2MyMmVkZTFjZDQ4M2VjMWMxM2RjYjYw
Li4yYjgwZDI0N2Y5N2E1MDNkNGQ1ZjQ1Y2Q5ODUyZmMyNDI5MjFlYmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCkBAIC0x
NDk5LDExICsxNDk5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVp
bnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KEFSTUFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2Fs
bC5kYXRhTG9jYXRpb24oKSkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0
aEJyZWFrcG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKLSAgICB7Ci0g
ICAgICAgIEFSTUFzc2VtYmxlcjo6cmVwbGFjZVdpdGhCa3B0KGluc3RydWN0aW9uU3RhcnQuZXhl
Y3V0YWJsZUFkZHJlc3MoKSk7Ci0gICAgfQotCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhK
dW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVs
IGRlc3RpbmF0aW9uKQogICAgIHsKICAgICAgICAgQVJNQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1
bXAoaW5zdHJ1Y3Rpb25TdGFydC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24uZGF0YUxvY2F0
aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaAppbmRleCBmZDQ5NGEwNTA5NjMzN2ExNTU3MjM1MjA3ZTU0OGQ2ZjJl
OTQ4MDZhLi5jMzdlMDBiNmM2NGIxOTI0Zjc4NjZmNzViMzI4ZTM5NmUxMGY1NzFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaApAQCAtMzcxMyw5ICszNzEzLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVuY3Rp
b25QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KEFSTTY0QXNzZW1ibGVyOjpyZWFkQ2Fs
bFRhcmdldChjYWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lk
IHJlcGxhY2VXaXRoQnJlYWtwb2ludChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0
KQorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoVk1IYWx0KENvZGVMb2NhdGlvbkxhYmVsIGlu
c3RydWN0aW9uU3RhcnQpCiAgICAgewotICAgICAgICBBUk02NEFzc2VtYmxlcjo6cmVwbGFjZVdp
dGhCa3B0KGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIEFS
TTY0QXNzZW1ibGVyOjpyZXBsYWNlV2l0aFZNSGFsdChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFi
bGVBZGRyZXNzKCkpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChD
b2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0
aW5hdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggNTQzMzVhMjliYzhhNGNjNWVkNmEzMTY5NzIwNjc5YmQw
ZmE5YzdkZC4uZjNmZTYxZGJlMzU2YWYzM2VhMTlmYmQ5OWM1YWY4ZGE3M2ExNjY0OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TXY3LmgKQEAgLTEzNTQsMTEgKzEzNTQsNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Fz
c2VtYmxlci5kbWJJU0hTVCgpOwogICAgIH0KLSAgICAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNl
V2l0aEJyZWFrcG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKLSAgICB7
Ci0gICAgICAgIEFSTXY3QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEJrcHQoaW5zdHJ1Y3Rpb25TdGFy
dC5kYXRhTG9jYXRpb24oKSk7Ci0gICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhK
dW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVs
IGRlc3RpbmF0aW9uKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IGZmNDAwOTAxYzI0NTBkNGRjOTljNGI2
MTJlZjU0NTA4NDQ1MGNhOTEuLmZhMDViZTE3OWVmMTE5NjdjZDg2MDg2YjFjNDBjZjI4NjllYmMw
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlck1JUFMuaApAQCAtMzA3MiwxMSArMzA3Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihNSVBTQXNzZW1ibGVy
OjpyZWFkQ2FsbFRhcmdldChjYWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAotICAgIHN0
YXRpYyB2b2lkIHJlcGxhY2VXaXRoQnJlYWtwb2ludChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVj
dGlvblN0YXJ0KQotICAgIHsKLSAgICAgICAgTUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhCa3B0
KGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Ci0gICAgfQotCiAgICAgc3Rh
dGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3Rh
cnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKICAgICAgICAgTUlQU0Fz
c2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCks
IGRlc3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCAzMmRh
NDUwYjQzZDhmNzhhMDU0OWRiMjg1ZGIxMmMyZDQzODkyN2RkLi42YWNjMmE5NjlkYzIzYTc5OWNi
NjY5MjBiOTI4YmQ1OGE2NzI0N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0zODAzLDkgKzM4
MDMsOSBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNl
V2l0aEJyZWFrcG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICBz
dGF0aWMgdm9pZCByZXBsYWNlV2l0aFZNSGFsdChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlv
blN0YXJ0KQogICAgIHsKLSAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEludDMoaW5z
dHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgWDg2QXNzZW1ibGVy
OjpyZXBsYWNlV2l0aEhsdChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCkpOwog
ICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJl
bCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCmluZGV4IGFkZGM3
ZDgxMTg0MGVjYzU1NDA1YmY0NzFjNmZiNzIzZWFhZGZiNzQuLjViNjRmMDJhZjY2NWMwNGQwYWUy
ZmM0NzQzYTE2Y2NkMDU1YWUyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaApAQCAtMzYzNywxMCArMzYzNywxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4od2hlcmUpWy0xXTsKICAgICB9CiAK
LSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEludDModm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkK
KyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEhsdCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQog
ICAgIHsKICAgICAgICAgdWludDhfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
aW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAgICAgIHB0clswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KE9QX0lOVDMpOworICAgICAgICBwdHJbMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihPUF9ITFQp
OwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVj
dGlvblN0YXJ0LCB2b2lkKiB0bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SnVtcFJlcGxhY2VtZW50LmNwcAppbmRleCAyNDdiZGE5YjAyNmUwYTk3ZDZlOWJhZjUwNmZiZDQw
M2MwOTI4NTIzLi4xZWJmNjk0Y2U0Y2Y4NzgxYzI1NDY3ZjIxOTgwZDhlNTE3MjI1ODdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0p1bXBSZXBsYWNlbWVudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKdW1wUmVwbGFjZW1lbnQuY3BwCkBA
IC00Myw3ICs0MywxMSBAQCB2b2lkIEp1bXBSZXBsYWNlbWVudDo6ZmlyZSgpCiAKIHZvaWQgSnVt
cFJlcGxhY2VtZW50OjppbnN0YWxsVk1UcmFwQnJlYWtwb2ludCgpCiB7Ci0gICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGxhY2VXaXRoQnJlYWtwb2ludChtX3NvdXJjZSk7CisjaWYgRU5BQkxFKFNJR05B
TF9CQVNFRF9WTV9UUkFQUykKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhWTUhhbHQo
bV9zb3VyY2UpOworI2Vsc2UKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyNlbmRp
ZgogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNVHJhcHMuY3BwCmluZGV4IDUxZjI4ZDNlOWNkNzFmZjE0MjZjZDhmOGI4OWMyMTI3
ODYxNjY4NmYuLjU1NWI1MjEyNjE4ZWVjZjNjYjg4Y2FhZDg1NTY3YjA4OTkzNTk1ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCkBAIC01OSwxNyArNTksNiBA
QCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgICAgICwgc3RhY2tQb2ludGVyKE1hY2hpbmVD
b250ZXh0OjpzdGFja1BvaW50ZXIocmVnaXN0ZXJzKSkKICAgICAgICAgLCBmcmFtZVBvaW50ZXIo
TWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRlcihyZWdpc3RlcnMpKQogICAgIHsKLSNpZiBDUFUo
WDg2XzY0KSB8fCBDUFUoWDg2KQotICAgICAgICAvLyBPbiBYODZfNjQsIFNJR1RSQVAgcmVwb3J0
cyB0aGUgYWRkcmVzcyBhZnRlciB0aGUgdHJhcHBpbmcgUEMuIFNvLCBkZWMgYnkgMS4KLSAgICAg
ICAgdHJhcFBDID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odHJhcFBDKSAtIDE7Ci0jZW5k
aWYKLSAgICB9Ci0KLSAgICB2b2lkIGFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlv
bigpCi0gICAgewotI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCi0gICAgICAgIE1hY2hpbmVD
b250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJzKSA9IHRyYXBQQzsKLSNlbmRpZgog
ICAgIH0KIAogICAgIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnM7CkBAIC0xMzAsNyArMTE5
LDggQEAgc3RhdGljIEV4cGVjdGVkPFZNQW5kU3RhY2tCb3VuZHMsIFZNVHJhcHM6OkVycm9yPiBm
aW5kQWN0aXZlVk1BbmRTdGFja0JvdW5kcyhTaWcKIAogc3RhdGljIHZvaWQgaW5zdGFsbFNpZ25h
bEhhbmRsZXIoKQogewotICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6VHJhcCwgW10g
KFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpIC0+IFNpZ25h
bEFjdGlvbiB7CisgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpCYWRBY2Nlc3MsIFtd
IChTaWduYWwsIFNpZ0luZm8mLCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSAtPiBTaWdu
YWxBY3Rpb24geworICAgICAgICBkYXRhTG9nTG4oIkluIGhhbmRsZXIiKTsKICAgICAgICAgU2ln
bmFsQ29udGV4dCBjb250ZXh0KHJlZ2lzdGVycyk7CiAKICAgICAgICAgaWYgKCFpc0pJVFBDKGNv
bnRleHQudHJhcFBDKSkKQEAgLTE1MSwxMCArMTQxLDEzIEBAIHN0YXRpYyB2b2lkIGluc3RhbGxT
aWduYWxIYW5kbGVyKCkKICAgICAgICAgICAgIGF1dG8gZXhwZWN0ZWRTdWNjZXNzID0gdHJhcHMu
dHJ5SmV0dGlzb25Db2RlQmxvY2tzT25TdGFjayhjb250ZXh0KTsKICAgICAgICAgICAgIGlmICgh
ZXhwZWN0ZWRTdWNjZXNzKQogICAgICAgICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246Okhh
bmRsZWQ7IC8vIExldCB0aGUgU2lnbmFsU2VuZGVyIHRyeSBhZ2FpbiBsYXRlci4KLSAgICAgICAg
ICAgIGlmIChleHBlY3RlZFN1Y2Nlc3MudmFsdWUoKSkKKyAgICAgICAgICAgIGlmIChleHBlY3Rl
ZFN1Y2Nlc3MudmFsdWUoKSkgeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiRXhpdGluZyBo
YW5kbGVyIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6SGFuZGxlZDsg
Ly8gV2UndmUgc3VjY2VzcyBqZXR0aXNvbiB0aGUgY29kZUJsb2Nrcy4KKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCisgICAgICAgIGRhdGFMb2dMbigiRXhpdGluZyBoYW5kbGVyIik7CiAgICAg
ICAgIHJldHVybiBTaWduYWxBY3Rpb246OkhhbmRsZWQ7CiAgICAgfSk7CiB9CkBAIC0yOTcsMTAg
KzI5MCw2IEBAIGF1dG8gVk1UcmFwczo6dHJ5SmV0dGlzb25Db2RlQmxvY2tzT25TdGFjayhTaWdu
YWxDb250ZXh0JiBjb250ZXh0KSAtPiBFeHBlY3RlZDxiCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGludmFsaWRhdGVDb2RlQmxvY2tzT25TdGFjayhjb2RlQmxvY2tTZXRMb2NrZXIsIHRv
cENhbGxGcmFtZSk7Ci0KLSAgICAvLyBSZS1ydW4gdGhlIHRyYXBwaW5nIGluc3RydWN0aW9uIG5v
dyB0aGF0IHdlJ3ZlIHBhdGNoZWQgaXQgd2l0aCB0aGUgaW52YWxpZGF0aW9uCi0gICAgLy8gT1NS
IGV4aXQgb2ZmLXJhbXAuCi0gICAgY29udGV4dC5hZGp1c3RQQ1RvUG9pbnRUb1RyYXBwaW5nSW5z
dHJ1Y3Rpb24oKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAppbmRleCAyNjRjMzRk
ZTQ1ZGExNzVhNWQ1MTQxYzE3MWVmZTk1ZTA2M2M1ZTI3Li5lODZmZDQ3OTkwZTg4ODhkMjZmZGRm
YTczOTRlNDc2YWJjYzgwMTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcApAQCAtMTIzLDExICsxMjMsNyBAQCB2b2lk
IGVuYWJsZUZhc3RNZW1vcnkoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZX0ZBU1RfTUVNT1JZKQotICAgICAgICBpbnN0YWxsU2lnbmFsSGFuZGxlcihTaWdu
YWw6OkJ1cywgW10gKFNpZ25hbCBzaWduYWwsIFNpZ0luZm8mIHNpZ0luZm8sIFBsYXRmb3JtUmVn
aXN0ZXJzJiB1Y29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIHRyYXBIYW5kbGVyKHNpZ25h
bCwgc2lnSW5mbywgdWNvbnRleHQpOwotICAgICAgICB9KTsKLQotICAgICAgICBpbnN0YWxsU2ln
bmFsSGFuZGxlcihTaWduYWw6OlNlZ1YsIFtdIChTaWduYWwgc2lnbmFsLCBTaWdJbmZvJiBzaWdJ
bmZvLCBQbGF0Zm9ybVJlZ2lzdGVycyYgdWNvbnRleHQpIHsKKyAgICAgICAgaW5zdGFsbFNpZ25h
bEhhbmRsZXIoU2lnbmFsOjpCYWRBY2Nlc3MsIFtdIChTaWduYWwgc2lnbmFsLCBTaWdJbmZvJiBz
aWdJbmZvLCBQbGF0Zm9ybVJlZ2lzdGVycyYgdWNvbnRleHQpIHsKICAgICAgICAgICAgIHJldHVy
biB0cmFwSGFuZGxlcihzaWduYWwsIHNpZ0luZm8sIHVjb250ZXh0KTsKICAgICAgICAgfSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCmluZGV4IDUwMDQwNzdhNTZhMmYyYWUzNTA3YzU0ZGY1ZTgyODBjZWFiODEwMDMu
Ljg3YmIzYmI0M2YzODA4OWY3NDVjY2ZiZjkyYTRlMTZhNmNhYzZhNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApA
QCAtOTc0LDcgKzk3NCw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgRU5BQkxFKEpJVCkgJiYg
SEFWRShNQUNISU5FX0NPTlRFWFQpCisjaWYgRU5BQkxFKEpJVCkgJiYgSEFWRShNQUNISU5FX0NP
TlRFWFQpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpKQogI2RlZmlu
ZSBFTkFCTEVfU0lHTkFMX0JBU0VEX1ZNX1RSQVBTIDEKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwIGIvU291cmNlL1dURi93dGYvdGhyZWFk
cy9TaWduYWxzLmNwcAppbmRleCBmMDFlMzkxMTNiMGM2MjE5MGJkYmVmMTNlYWJhMjJhMGUxNDg5
YmMyLi41Njk3M2E5MzZkZWQ4Njg3MTE0ODQyMTJlMGJhMTUzMGJmZmZhZThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RocmVhZHMvU2lnbmFscy5jcHAKQEAgLTExNyw5ICsxMTcsOCBAQCBzdGF0aWMgdm9pZCBzdGFy
dE1hY2hFeGNlcHRpb25IYW5kbGVyVGhyZWFkKCkKIHN0YXRpYyBTaWduYWwgZnJvbU1hY2hFeGNl
cHRpb24oZXhjZXB0aW9uX3R5cGVfdCB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAg
IGNhc2UgRVhDX0JBRF9BQ0NFU1M6IHJldHVybiBTaWduYWw6OlNlZ1Y7CisgICAgY2FzZSBFWENf
QkFEX0FDQ0VTUzogcmV0dXJuIFNpZ25hbDo6QmFkQWNjZXNzOwogICAgIGNhc2UgRVhDX0JBRF9J
TlNUUlVDVElPTjogcmV0dXJuIFNpZ25hbDo6SWxsOwotICAgIGNhc2UgRVhDX0JSRUFLUE9JTlQ6
IHJldHVybiBTaWduYWw6OlRyYXA7CiAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQogICAgIHJl
dHVybiBTaWduYWw6OlVua25vd247CkBAIC0xMjgsOSArMTI3LDggQEAgc3RhdGljIFNpZ25hbCBm
cm9tTWFjaEV4Y2VwdGlvbihleGNlcHRpb25fdHlwZV90IHR5cGUpCiBzdGF0aWMgZXhjZXB0aW9u
X21hc2tfdCB0b01hY2hNYXNrKFNpZ25hbCBzaWduYWwpCiB7CiAgICAgc3dpdGNoIChzaWduYWwp
IHsKLSAgICBjYXNlIFNpZ25hbDo6U2VnVjogcmV0dXJuIEVYQ19NQVNLX0JBRF9BQ0NFU1M7Cisg
ICAgY2FzZSBTaWduYWw6OkJhZEFjY2VzczogcmV0dXJuIEVYQ19NQVNLX0JBRF9BQ0NFU1M7CiAg
ICAgY2FzZSBTaWduYWw6OklsbDogcmV0dXJuIEVYQ19NQVNLX0JBRF9JTlNUUlVDVElPTjsKLSAg
ICBjYXNlIFNpZ25hbDo6VHJhcDogcmV0dXJuIEVYQ19NQVNLX0JSRUFLUE9JTlQ7CiAgICAgZGVm
YXVsdDogYnJlYWs7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC0xNjYsNiArMTY0LDExIEBAIGtlcm5fcmV0dXJuX3QgY2F0Y2hfbWFjaF9leGNlcHRpb25fcmFp
c2Vfc3RhdGUoCiAgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCogb3V0U3RhdGVDb3VudCkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChwb3J0ID09IGV4Y2VwdGlvblBvcnQpOworICAgIC8vIElmIHdl
IHdhbnRlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIFNJR0JVUyBhbmQgU0lHU0VHViBmb3IgRVhD
X0JBRF9BQ0NFU1Mgb24gRGFyd2luIHdlIGNvdWxkIGRvOgorICAgIC8vIGlmIChleGNlcHRpb25E
YXRhWzBdID09IEtFUk5fSU5WQUxJRF9BRERSRVNTKQorICAgIC8vICAgIHNpZ25hbCA9IFNJR1NF
R1Y7CisgICAgLy8gZWxzZQorICAgIC8vICAgIHNpZ25hbCA9IFNJR0JVUzsKICAgICBTaWduYWwg
c2lnbmFsID0gZnJvbU1hY2hFeGNlcHRpb24oZXhjZXB0aW9uVHlwZSk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoc2lnbmFsICE9IFNpZ25hbDo6VW5rbm93bik7CiAKQEAgLTE4Nyw3ICsxOTAsNyBAQCBr
ZXJuX3JldHVybl90IGNhdGNoX21hY2hfZXhjZXB0aW9uX3JhaXNlX3N0YXRlKAogI2VuZGlmCiAK
ICAgICBTaWdJbmZvIGluZm87Ci0gICAgaWYgKHNpZ25hbCA9PSBTaWduYWw6OlNlZ1YpIHsKKyAg
ICBpZiAoc2lnbmFsID09IFNpZ25hbDo6QmFkQWNjZXNzKSB7CiAgICAgICAgIEFTU0VSVF9VTlVT
RUQoZGF0YUNvdW50LCBkYXRhQ291bnQgPT0gMik7CiAgICAgICAgIGluZm8uZmF1bHRpbmdBZGRy
ZXNzID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZXhjZXB0aW9uRGF0YVsxXSk7CiAgICAgfQpA
QCAtMjQ5LDE4ICsyNTIsMTkgQEAgdm9pZCB1bnJlZ2lzdGVyVGhyZWFkRm9yTWFjaEV4Y2VwdGlv
bkhhbmRsaW5nKFRocmVhZCogdGhyZWFkKQogc3RhdGljIGNvbnN0ZXhwciBib29sIHVzZU1hY2gg
PSBmYWxzZTsKICNlbmRpZiAvLyBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKIAorCitpbmxpbmUgc2l6
ZV90IG9mZnNldEZvclN5c3RlbVNpZ25hbChpbnQgc2lnKQoreworICAgIFNpZ25hbCBzaWduYWwg
PSBmcm9tU3lzdGVtU2lnbmFsKHNpZyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4o
c2lnbmFsKSArIChzaWcgPT0gU0lHQlVTKTsKK30KKwogc3RhdGljIHZvaWQganNjU2lnbmFsSGFu
ZGxlcihpbnQsIHNpZ2luZm9fdCosIHZvaWQqKTsKIAogdm9pZCBpbnN0YWxsU2lnbmFsSGFuZGxl
cihTaWduYWwgc2lnbmFsLCBTaWduYWxIYW5kbGVyJiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQo
c2lnbmFsIDwgU2lnbmFsOjpVbmtub3duKTsKICNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKLSAg
ICAvLyBTaW5jZSBtYWNoIG9ubHkgaGFzIEVYQ19CQURfQUNDRVNTLCB3aGljaCBjb3ZlcnMgYm90
aCBTZWdWIGFuZCBCdXMsIHdlIGFyYml0YXJpbHkgY2hvb3NlIHRvIG1ha2UKLSAgICAvLyBtYWNo
IEVYQ19CQURfQUNDRVNTZXMgbWFwIHRvIFNlZ1YuCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBq
dXN0IHVzZSBhIHNpbmdsZSBTaWduYWw6OkJhZEFjY2VzcyB2YWx1ZSBpbnN0ZWFkIG9mIFNlZ1Yv
QnVzLgotICAgIC8vIFNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MjA2MwotICAgIGlmIChzaWduYWwgPT0gU2lnbmFsOjpCdXMgJiYgdXNlTWFjaCkKLSAgICAg
ICAgcmV0dXJuOwogICAgIEFTU0VSVCghdXNlTWFjaCB8fCBzaWduYWwgIT0gU2lnbmFsOjpVc3Ip
OwogCiAgICAgaWYgKHVzZU1hY2gpCkBAIC0yNzYsNyArMjgwLDEwIEBAIHZvaWQgaW5zdGFsbFNp
Z25hbEhhbmRsZXIoU2lnbmFsIHNpZ25hbCwgU2lnbmFsSGFuZGxlciYmIGhhbmRsZXIpCiAgICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ2ZpbGxzZXQoJmFjdGlvbi5zYV9tYXNrKTsKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOwogICAgICAgICAgICAgYWN0aW9uLnNhX2Zs
YWdzID0gU0FfU0lHSU5GTzsKLSAgICAgICAgICAgIHJlc3VsdCA9IHNpZ2FjdGlvbih0b1N5c3Rl
bVNpZ25hbChzaWduYWwpLCAmYWN0aW9uLCAmb2xkQWN0aW9uc1tzdGF0aWNfY2FzdDxzaXplX3Q+
KHNpZ25hbCldKTsKKyAgICAgICAgICAgIGF1dG8gc3lzdGVtU2lnbmFscyA9IHRvU3lzdGVtU2ln
bmFsKHNpZ25hbCk7CisgICAgICAgICAgICByZXN1bHQgPSBzaWdhY3Rpb24oc3RkOjpnZXQ8MD4o
c3lzdGVtU2lnbmFscyksICZhY3Rpb24sICZvbGRBY3Rpb25zW29mZnNldEZvclN5c3RlbVNpZ25h
bChzdGQ6OmdldDwwPihzeXN0ZW1TaWduYWxzKSldKTsKKyAgICAgICAgICAgIGlmIChzdGQ6Omdl
dDwxPihzeXN0ZW1TaWduYWxzKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgfD0gc2lnYWN0aW9u
KCpzdGQ6OmdldDwxPihzeXN0ZW1TaWduYWxzKSwgJmFjdGlvbiwgJm9sZEFjdGlvbnNbb2Zmc2V0
Rm9yU3lzdGVtU2lnbmFsKCpzdGQ6OmdldDwxPihzeXN0ZW1TaWduYWxzKSldKTsKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOwogICAgICAgICB9CiAKQEAgLTMxNiw3ICszMjMs
NyBAQCB2b2lkIGpzY1NpZ25hbEhhbmRsZXIoaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lk
KiB1Y29udGV4dCkKICAgICB9CiAKICAgICBTaWdJbmZvIHNpZ0luZm87Ci0gICAgaWYgKHNpZ25h
bCA9PSBTaWduYWw6OlNlZ1YgfHwgc2lnbmFsID09IFNpZ25hbDo6QnVzKQorICAgIGlmIChzaWdu
YWwgPT0gU2lnbmFsOjpCYWRBY2Nlc3MpCiAgICAgICAgIHNpZ0luZm8uZmF1bHRpbmdBZGRyZXNz
ID0gaW5mby0+c2lfYWRkcjsKIAogICAgIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMgPSBy
ZWdpc3RlcnNGcm9tVUNvbnRleHQocmVpbnRlcnByZXRfY2FzdDx1Y29udGV4dF90Kj4odWNvbnRl
eHQpKTsKQEAgLTM0MSw3ICszNDgsOCBAQCB2b2lkIGpzY1NpZ25hbEhhbmRsZXIoaW50IHNpZywg
c2lnaW5mb190KiBpbmZvLCB2b2lkKiB1Y29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIHN0cnVjdCBzaWdhY3Rpb24mIG9sZEFjdGlvbiA9IG9sZEFjdGlvbnNbc3RhdGljX2Nh
c3Q8c2l6ZV90PihzaWduYWwpXTsKKyAgICB1bnNpZ25lZCBvbGRBY3Rpb25JbmRleCA9IHN0YXRp
Y19jYXN0PHNpemVfdD4oc2lnbmFsKSArIChzaWcgPT0gU0lHQlVTKTsKKyAgICBzdHJ1Y3Qgc2ln
YWN0aW9uJiBvbGRBY3Rpb24gPSBvbGRBY3Rpb25zW3N0YXRpY19jYXN0PHNpemVfdD4ob2xkQWN0
aW9uSW5kZXgpXTsKICAgICBpZiAoc2lnbmFsID09IFNpZ25hbDo6VXNyKSB7CiAgICAgICAgIGlm
IChvbGRBY3Rpb24uc2Ffc2lnYWN0aW9uKQogICAgICAgICAgICAgb2xkQWN0aW9uLnNhX3NpZ2Fj
dGlvbihzaWcsIGluZm8sIHVjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Ro
cmVhZHMvU2lnbmFscy5oIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmgKaW5kZXgg
MjU3NmZhZDVhMDA0ODMzMjA4YzViYzI1MGU1NDcwZDM3OGY3NTJiNC4uZmFhZTBhN2QyMDRlNTNm
YWQwNDFmZTU2ZjMyNTExMzY4MTFhOWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhy
ZWFkcy9TaWduYWxzLmgKKysrIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmgKQEAg
LTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bVJlZ2lzdGVycy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTQxLDIyICs0MiwxOCBAQCBlbnVt
IGNsYXNzIFNpZ25hbCB7CiAKICAgICAvLyBUaGVzZSBzaWduYWxzIHdpbGwgb25seSBjaGFpbiBp
ZiB3ZSBkb24ndCBoYXZlIGEgaGFuZGxlciB0aGF0IGNhbiBwcm9jZXNzIHRoZW0uIElmIHRoZXJl
IGlzIG5vdGhpbmcKICAgICAvLyB0byBjaGFpbiB0byB3ZSByZXN0b3JlIHRoZSBkZWZhdWx0IGhh
bmRsZXIgYW5kIGNyYXNoLgotICAgIFRyYXAsCiAgICAgSWxsLAotICAgIFNlZ1YsCi0gICAgQnVz
LAotICAgIE51bWJlck9mU2lnbmFscywKKyAgICBCYWRBY2Nlc3MsIC8vIEZvciBwb3NpeCB0aGlz
IGlzIGJvdGggU0lHU0VHViBhbmQgU0lHQlVTCisgICAgTnVtYmVyT2ZTaWduYWxzID0gQmFkQWNj
ZXNzICsgMiwgLy8gQmFkQWNjZXNzIGlzIHJlYWxseSB0d28gc2lnbmFscy4KICAgICBVbmtub3du
ID0gTnVtYmVyT2ZTaWduYWxzCiB9OwogCi1pbmxpbmUgaW50IHRvU3lzdGVtU2lnbmFsKFNpZ25h
bCBzaWduYWwpCitpbmxpbmUgc3RkOjp0dXBsZTxpbnQsIHN0ZDo6b3B0aW9uYWw8aW50Pj4gdG9T
eXN0ZW1TaWduYWwoU2lnbmFsIHNpZ25hbCkKIHsKICAgICBzd2l0Y2ggKHNpZ25hbCkgewotICAg
IGNhc2UgU2lnbmFsOjpTZWdWOiByZXR1cm4gU0lHU0VHVjsKLSAgICBjYXNlIFNpZ25hbDo6QnVz
OiByZXR1cm4gU0lHQlVTOwotICAgIGNhc2UgU2lnbmFsOjpJbGw6IHJldHVybiBTSUdJTEw7Ci0g
ICAgY2FzZSBTaWduYWw6OlVzcjogcmV0dXJuIFNJR1VTUjI7Ci0gICAgY2FzZSBTaWduYWw6OlRy
YXA6IHJldHVybiBTSUdUUkFQOworICAgIGNhc2UgU2lnbmFsOjpCYWRBY2Nlc3M6IHJldHVybiBz
dGQ6Om1ha2VfdHVwbGUoU0lHU0VHViwgU0lHQlVTKTsKKyAgICBjYXNlIFNpZ25hbDo6SWxsOiBy
ZXR1cm4gc3RkOjptYWtlX3R1cGxlKFNJR0lMTCwgc3RkOjpudWxsb3B0KTsKKyAgICBjYXNlIFNp
Z25hbDo6VXNyOiByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFNJR0lMTCwgc3RkOjpudWxsb3B0KTsK
ICAgICBkZWZhdWx0OiBicmVhazsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTY1LDExICs2MiwxMCBAQCBpbmxpbmUgaW50IHRvU3lzdGVtU2lnbmFsKFNpZ25h
bCBzaWduYWwpCiBpbmxpbmUgU2lnbmFsIGZyb21TeXN0ZW1TaWduYWwoaW50IHNpZ25hbCkKIHsK
ICAgICBzd2l0Y2ggKHNpZ25hbCkgewotICAgIGNhc2UgU0lHU0VHVjogcmV0dXJuIFNpZ25hbDo6
U2VnVjsKLSAgICBjYXNlIFNJR0JVUzogcmV0dXJuIFNpZ25hbDo6QnVzOworICAgIGNhc2UgU0lH
U0VHVjogcmV0dXJuIFNpZ25hbDo6QmFkQWNjZXNzOworICAgIGNhc2UgU0lHQlVTOiByZXR1cm4g
U2lnbmFsOjpCYWRBY2Nlc3M7CiAgICAgY2FzZSBTSUdJTEw6IHJldHVybiBTaWduYWw6OklsbDsK
ICAgICBjYXNlIFNJR1VTUjI6IHJldHVybiBTaWduYWw6OlVzcjsKLSAgICBjYXNlIFNJR1RSQVA6
IHJldHVybiBTaWduYWw6OlRyYXA7CiAgICAgZGVmYXVsdDogcmV0dXJuIFNpZ25hbDo6VW5rbm93
bjsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMjdjYTM4NjQyN2VjNjQ0ZTQ4ZTc3YWJkM2U3NjM5Y2Y0ZTc3ODk4Yi4uYjE5ZjMz
MDQ3YjBlODA3N2MwZTMyMGYzZjU2NDU4YTA0Mzk5M2QwNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA2LTIz
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRj
aCBWTVRyYXBzIHRvIHVzZSBoYWx0IGluc3RydWN0aW9ucyByYXRoZXIgdGhhbiBicmVha3BvaW50
IGluc3RydWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTczNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZE1lc3NhZ2VzLmNwcDoKKyAgICAgICAg
KFRFU1QpOgorCiAyMDE3LTA2LTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1MgRG5EXSBbV0syXSBSZW1vdmUgY3VzdG9tIGxvZ2ljIGZvciBk
aXNhbWJpZ3VhdGluZyBsb25nIHByZXNzIGFjdGlvbiBzaGVldCBnZXN0dXJlcyBhbmQgZHJhZyBs
aWZ0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRNZXNz
YWdlcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRNZXNzYWdlcy5j
cHAKaW5kZXggZTZhNTc4OTRiYjUxNmZlMWNlNzEzZDA3YmYxOGYwNzA2ZWZhOTM3Yy4uMjY2ZjIw
ZWFkZWVmMWUzNTgwYjI5OTBhZDBiNTcxZThhZGU1NWQ0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVzc2FnZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZE1lc3NhZ2VzLmNwcApAQCAtMTE0LDcgKzExNCw3IEBA
IFRFU1QoVGhyZWFkTWVzc2FnZSwgU2lnbmFsc1dvcmtPbkV4aXQpCiAgICAgICAgIHJlY2VpdmVy
U2hvdWxkS2VlcFJ1bm5pbmcuc3RvcmUoZmFsc2UpOwogICAgICAgICBFWFBFQ1RfRkFMU0Uoc3Rh
dGljX2Nhc3Q8UmVmbGVjdGVkVGhyZWFkKj4ocmVjZWl2ZXJUaHJlYWQuZ2V0KCkpLT5oYXNFeGl0
ZWQoKSk7CiAgICAgICAgIHNsZWVwKDEpOwotICAgICAgICBzaWduYWxGaXJlZCA9ICFwdGhyZWFk
X2tpbGwoc3RhdGljX2Nhc3Q8UmVmbGVjdGVkVGhyZWFkKj4ocmVjZWl2ZXJUaHJlYWQuZ2V0KCkp
LT5tX2hhbmRsZSwgdG9TeXN0ZW1TaWduYWwoU2lnbmFsOjpVc3IpKTsKKyAgICAgICAgc2lnbmFs
RmlyZWQgPSAhcHRocmVhZF9raWxsKHN0YXRpY19jYXN0PFJlZmxlY3RlZFRocmVhZCo+KHJlY2Vp
dmVyVGhyZWFkLmdldCgpKS0+bV9oYW5kbGUsIHN0ZDo6Z2V0PDA+KHRvU3lzdGVtU2lnbmFsKFNp
Z25hbDo6VXNyKSkpOwogICAgIH0KIAogICAgIHJlY2VpdmVyVGhyZWFkLT53YWl0Rm9yQ29tcGxl
dGlvbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313766</attachid>
            <date>2017-06-23 19:11:27 -0700</date>
            <delta_ts>2017-06-23 19:54:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-173677-20170623191126.patch</filename>
            <type>text/plain</type>
            <size>28449</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OTY4YjZkNDMxZGIzM2RkN2M0OGVhNDY3MDJiMDNlYTg5Nzk5NzUyLi44NTI2ZTAyMTI5OTdjZTFh
NWE0MDkyMjAyMDg5NDRiOGU3ZmM3ZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxNy0wNi0yMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBTd2l0Y2ggVk1UcmFwcyB0byB1c2UgaGFsdCBpbnN0cnVjdGlvbnMg
cmF0aGVyIHRoYW4gYnJlYWtwb2ludCBpbnN0cnVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzY3NworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzIxNzg4OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAg
ICBVc2luZyB0aGUgYnJlYWtwb2ludCBpbnN0cnVjdGlvbiBmb3IgVk1UcmFwcyBjYXVzZWQgaXNz
dWVzIHdpdGggbGxkYi4KKyAgICAgICAgU2luY2Ugd2Ugb25seSBuZWVkIHNvbWUgd2F5IHRvIHN0
b3AgZXhlY3V0aW9uIHdlIGNhbiwgaW4gdGhlb3J5LCB1c2UKKyAgICAgICAgYW55IGV4Y2VwdGlv
bmluZyBpbnN0cnVjdGlvbiB3ZSB3YW50LiBJIHdlbnQgd2l0aCB0aGUgaGFsdCBpbnN0cnVjdGlv
bgorICAgICAgICBvbiBYODYgc2luY2UgdGhhdCBpcyB0aGUgb25seSBvbmUgYnl0ZSBpbnN0cnVj
dGlvbiB0aGF0IGRvZXMgbm90CisgICAgICAgIGJyZWFrcG9pbnQgKGluIG15IHRlc3RzIGJvdGgg
MHhmMSBhbmQgMHhkNiBwcm9kdWNlZCBFWENfQlJFQUtQT0lOVCkuCisgICAgICAgIE9uIEFSTSB3
ZSB1c2UgdGhlIGRhdGEgY2FjaGUgY2xlYXJpbmcgaW5zdHJ1Y3Rpb24gd2l0aCB0aGUgemVybyBy
ZWdpc3RlciwKKyAgICAgICAgd2hpY2ggdHJpZ2dlcnMgYSBzZWdtZW50YXRpb24gZmF1bHQuCisK
KyAgICAgICAgQWxzbywgdXBkYXRlIHRoZSBwbGF0Zm9ybSBjb2RlIHRvIG9ubHkgdXNlIHNpZ25h
bGluZyBWTVRyYXBzCisgICAgICAgIG9uIHdoZXJlIHdlIGhhdmUgYW4gYXBwcm9wcmlhdGUgaW5z
dHJ1Y3Rpb24gKHg4NiBhbmQgQVJNNjQpLgorCisgICAgICAgICogQVBJL3Rlc3RzL0V4ZWN1dGlv
blRpbWVMaW1pdFRlc3QuY3BwOgorICAgICAgICAodGVzdEV4ZWN1dGlvblRpbWVMaW1pdCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTTY0
QXNzZW1ibGVyOjpyZXBsYWNlV2l0aFZNSGFsdCk6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1i
bGVyOjpkYXRhQ2FjaGVaZXJvVmlydHVhbEFkZHJlc3MpOgorICAgICAgICAoSlNDOjpBUk02NEFz
c2VtYmxlcjo6cmVwbGFjZVdpdGhCa3B0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIv
QVJNQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6cmVwbGFjZVdpdGhC
a3B0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAg
ICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQmtwdCk6IERlbGV0ZWQuCisg
ICAgICAgICogYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TUlQU0Fz
c2VtYmxlcjo6cmVwbGFjZVdpdGhCa3B0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnJl
cGxhY2VXaXRoQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6cmVw
bGFjZVdpdGhWTUhhbHQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpyZXBs
YWNlV2l0aEJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnN0b3Jl
RmVuY2UpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpyZXBsYWNlV2l0aEJy
ZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1J
UFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpyZXBsYWNlV2l0aEJyZWFr
cG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cmVwbGFjZVdp
dGhWTUhhbHQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cmVwbGFj
ZVdpdGhCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhIbHQpOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSW50Myk6IERlbGV0ZWQuCisgICAg
ICAgICogZGZnL0RGR0p1bXBSZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SnVt
cFJlcGxhY2VtZW50OjppbnN0YWxsVk1UcmFwQnJlYWtwb2ludCk6CisgICAgICAgICogcnVudGlt
ZS9WTVRyYXBzLmNwcDoKKyAgICAgICAgKEpTQzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4
dCk6CisgICAgICAgIChKU0M6Omluc3RhbGxTaWduYWxIYW5kbGVyKToKKyAgICAgICAgKEpTQzo6
U2lnbmFsQ29udGV4dDo6YWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjplbmFibGVGYXN0TWVtb3J5KToKKwogMjAxNy0wNi0yMCAgS2VpdGggTWls
bGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbGVhayBvZiBNb2R1
bGVJbmZvcm1hdGlvbnMgaW4gQkJRUGxhbiBjb25zdHJ1Y3RvcnMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE5NmJjYjdjNzBh
ZmY1NzAzODM2YTAzMGZlOWY0ZWZjYWYxMjY2MzUuLjU4NGE5ZmVhM2YzYmM0MDQxNzc2YjI5ZTJh
ZDhkMzk3OWUxYjc2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTctMDYtMjMgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIFZNVHJhcHMg
dG8gdXNlIGhhbHQgaW5zdHJ1Y3Rpb25zIHJhdGhlciB0aGFuIGJyZWFrcG9pbnQgaW5zdHJ1Y3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM2
NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMTc4ODkyPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEpGIEJhc3RpZW4uCisKKyAgICAgICAgUmVtb3ZlIHRoZSBUcmFwIHNpZ25hbCBoYW5kbGVy
IGNvZGUgc2luY2UgaXQgcGxheXMgYmFkbHkgd2l0aCBsbGRiIGFuZCBjb21iaW5lCisgICAgICAg
IFNJR0JVUyB3aXRoIFNJR1NFR1Ygc2luY2UgZGlzdGlndWlzaGluZyB0aGVtIGlzIGdlbmVyYWxs
eSBub24tcG9ydGFibGUuCisKKyAgICAgICAgQWxzbywgdXBkYXRlIHRoZSBwbGF0Zm9ybSBjb2Rl
IHRvIG9ubHkgdXNlIHNpZ25hbGluZyBWTVRyYXBzCisgICAgICAgIG9uIHdoZXJlIHdlIGhhdmUg
YW4gYXBwcm9wcmlhdGUgaW5zdHJ1Y3Rpb24gKHg4NiBhbmQgQVJNNjQpLgorCisgICAgICAgICog
d3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL3RocmVhZHMvU2lnbmFscy5jcHA6CisgICAg
ICAgIChXVEY6OmZyb21NYWNoRXhjZXB0aW9uKToKKyAgICAgICAgKFdURjo6dG9NYWNoTWFzayk6
CisgICAgICAgIChXVEY6Omluc3RhbGxTaWduYWxIYW5kbGVyKToKKyAgICAgICAgKFdURjo6anNj
U2lnbmFsSGFuZGxlcik6CisgICAgICAgICogd3RmL3RocmVhZHMvU2lnbmFscy5oOgorICAgICAg
ICAoV1RGOjp0b1N5c3RlbVNpZ25hbCk6CisgICAgICAgIChXVEY6OmZyb21TeXN0ZW1TaWduYWwp
OgorCiAyMDE3LTA2LTIwICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4K
IAogICAgICAgICBSZW1vdmUgZXhjZXNzaXZlIGluY2x1ZGUgZGlyZWN0aXZlcyBmcm9tIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1l
TGltaXRUZXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9u
VGltZUxpbWl0VGVzdC5jcHAKaW5kZXggYTNjMzlhNzYxYzI0NWNkZDU5NTgzNWI4MzhhZDA1ZmE3
N2YwMGZjZS4uNzNmMzI0ZGIwZGI0ODQ1ZjYxMDNmZTNiMmY1ZjRhMmNlODk5YTVkOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRp
bWVMaW1pdFRlc3QuY3BwCkBAIC0xMjEsOCArMTIxLDggQEAgaW50IHRlc3RFeGVjdXRpb25UaW1l
TGltaXQoKQogICAgIHN0YXRpYyBjb25zdCBUaWVyT3B0aW9ucyB0aWVyT3B0aW9uc0xpc3RbXSA9
IHsKICAgICAgICAgeyAiTExJTlQiLCAgICAwLCAgICItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2Ug
LS11c2VMTEludD10cnVlIC0tdXNlSklUPWZhbHNlIiB9LAogICAgICAgICB7ICJCYXNlbGluZSIs
IDAsICAgIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9
dHJ1ZSAtLXVzZURGR0pJVD1mYWxzZSIgfSwKLSAgICAgICAgeyAiREZHIiwgICAgICAwLCAgICIt
LXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2UgLS11c2VMTEludD10cnVlIC0tdXNlSklUPXRydWUgLS11
c2VERkdKSVQ9dHJ1ZSAtLXVzZUZUTEpJVD1mYWxzZSIgfSwKLSAgICAgICAgeyAiRlRMIiwgICAg
ICAyMDAsICItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2UgLS11c2VMTEludD10cnVlIC0tdXNlSklU
PXRydWUgLS11c2VERkdKSVQ9dHJ1ZSAtLXVzZUZUTEpJVD10cnVlIiB9LAorICAgICAgICB7ICJE
RkciLCAgICAgIDIwMCwgICAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNlTExJbnQ9dHJ1
ZSAtLXVzZUpJVD10cnVlIC0tdXNlREZHSklUPXRydWUgLS11c2VGVExKSVQ9ZmFsc2UiIH0sCisg
ICAgICAgIHsgIkZUTCIsICAgICAgNTAwLCAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIC0tdXNl
TExJbnQ9dHJ1ZSAtLXVzZUpJVD10cnVlIC0tdXNlREZHSklUPXRydWUgLS11c2VGVExKSVQ9dHJ1
ZSIgfSwKICAgICB9OwogICAgIAogICAgIGJvb2wgZmFpbGVkID0gZmFsc2U7CkBAIC0xNTEsNyAr
MTUxLDM5IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgSlNPYmplY3RS
ZWYgY3VycmVudENQVVRpbWVGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxi
YWNrKGNvbnRleHQsIGN1cnJlbnRDUFVUaW1lU3RyLCBjdXJyZW50Q1BVVGltZUFzSlNGdW5jdGlv
bkNhbGxiYWNrKTsKICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxP
YmplY3QsIGN1cnJlbnRDUFVUaW1lU3RyLCBjdXJyZW50Q1BVVGltZUZ1bmN0aW9uLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZU5vbmUsIG51bGxwdHIpOwogICAgICAgICBKU1N0cmluZ1JlbGVhc2UoY3Vy
cmVudENQVVRpbWVTdHIpOwotICAgICAgICAKKworICAgICAgICAvKiBUZXN0IHNjcmlwdCBvbiBh
bm90aGVyIHRocmVhZDogKi8KKyAgICAgICAgdGltZUxpbWl0ID0gKDEwMCArIHRpZXJBZGp1c3Rt
ZW50TWlsbGlzKSAvIDEwMDAuMDsKKyAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25U
aW1lTGltaXQoY29udGV4dEdyb3VwLCB0aW1lTGltaXQsIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNr
LCAwKTsKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgdGltZUFmdGVyV2F0Y2hkb2dT
aG91bGRIYXZlRmlyZWQgPSAzMDAgKyB0aWVyQWRqdXN0bWVudE1pbGxpczsKKworICAgICAgICAg
ICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImZ1
bmN0aW9uIGZvbygpIHsgd2hpbGUgKHRydWUpIHsgfSB9IGZvbygpOyIpOworICAgICAgICAgICAg
ZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEpTVmFsdWVSZWYqIGV4biA9ICZleGNl
cHRpb247CisgICAgICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZh
bHNlOworICAgICAgICAgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiUm9ndWUgdGhy
ZWFkIiwgWz1dIHsKKyAgICAgICAgICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNj
cmlwdCwgbnVsbHB0ciwgbnVsbHB0ciwgMSwgZXhuKTsKKyAgICAgICAgICAgIH0pOworCisgICAg
ICAgICAgICBzbGVlcChTZWNvbmRzKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkIC8g
MTAwMC4wKSk7CisKKyAgICAgICAgICAgIGlmIChzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0Nh
bGxlZCkKKyAgICAgICAgICAgICAgICBwcmludGYoIlBBU1M6ICVzIHNjcmlwdCB0aW1lZCBvdXQg
YXMgZXhwZWN0ZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgc2NyaXB0IHRpbWVvdXQgY2FsbGJhY2sg
d2FzIG5vdCBjYWxsZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgICAgICBl
eGl0KDEpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbikgewor
ICAgICAgICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2Vw
dGlvbiB3YXMgbm90IHRocm93bi5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAg
ICAgIGV4aXQoMSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRocmVhZC0+d2FpdEZv
ckNvbXBsZXRpb24oKTsKKyAgICAgICAgICAgIHRlc3RSZXNldEFmdGVyVGltZW91dChmYWlsZWQp
OworICAgICAgICB9CisKICAgICAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91dDogKi8KICAgICAg
ICAgdGltZUxpbWl0ID0gKDEwMCArIHRpZXJBZGp1c3RtZW50TWlsbGlzKSAvIDEwMDAuMDsKICAg
ICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdyb3VwLCB0
aW1lTGltaXQsIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKaW5kZXggZjEyY2MyZWUyMWIzOGU4YWUwZmYyNDRlZWQx
OTUzZjMyM2IzYzUyZi4uOWQzYjQ1NjI5ZjVjMWZhY2M4MTA5OTE5ODM2NGRmMTU5NmM5ZjNkNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKQEAgLTEzNDgsNiAr
MTM0OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgOjpTZXRFcnJv
ck1vZGUoMCk7CiAjZW5kaWYKIAorICAgIHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKTsKICAgICB0
ZXN0Q29tcGFyZUFuZFN3YXAoKTsKICAgICBzdGFydE11bHRpdGhyZWFkZWRNdWx0aVZNRXhlY3V0
aW9uVGVzdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0FSTTY0QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0
QXNzZW1ibGVyLmgKaW5kZXggNmFkNDZkZTc5MTBhMzYzNjAzNGJjMzU0NjY1ZmExZjQxZGFhNWM2
OS4uYjg1MDY3M2VmNjc4NDFhOWE5NmYyN2M1MjM0MmQ0MWYwNzM3MGU2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaApAQCAtMjYwMiw5
ICsyNjAyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgbGlua1BvaW50ZXIoYWRkcmVzc09mKGNvZGUs
IHdoZXJlKSwgdmFsdWVQdHIpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
QmtwdCh2b2lkKiB3aGVyZSkKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aFZNSGFsdCh2b2lk
KiB3aGVyZSkKICAgICB7Ci0gICAgICAgIGludCBpbnNuID0gZXhjZXBuR2VuZXJhdGlvbihFeGNl
cG5PcF9CUkVBS1BPSU5ULCAwLCAwKTsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgdHJ5IHRvIHdy
aXRlIHRvIG51bGwgd2hpY2ggc2hvdWxkIGFsd2F5cyBTZWdmYXVsdC4KKyAgICAgICAgaW50IGlu
c24gPSBkYXRhQ2FjaGVaZXJvVmlydHVhbEFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OnpyKTsKICAg
ICAgICAgcGVyZm9ybUpJVE1lbWNweSh3aGVyZSwgJmluc24sIHNpemVvZihpbnQpKTsKICAgICAg
ICAgY2FjaGVGbHVzaCh3aGVyZSwgc2l6ZW9mKGludCkpOwogICAgIH0KQEAgLTM2NTUsNiArMzY1
NiwxMSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIGhpbnRQc2V1ZG8oMCk7CiAg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGRhdGFDYWNoZVplcm9WaXJ0dWFs
QWRkcmVzcyhSZWdpc3RlcklEIHJ0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN5c3RlbSgwLCAx
LCAweDMsIDB4NywgMHg0LCAweDEsIHJ0KTsKKyAgICB9CiAgICAgCiAgICAgLy8gJ29wJyBtZWFu
cyBuZWdhdGUKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgdGVzdEFuZEJyYW5jaEltbWVk
aWF0ZShib29sIG9wLCBpbnQgYjUwLCBpbnQgaW1tMTQsIFJlZ2lzdGVySUQgcnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaAppbmRleCA5MWNlMGIy
OWRhMmRlNGU4YTdhYjg2OTJlYjJhODg3YjkxOWJhOGE5Li40OGUxMTAxNzI0NGRkY2Y3ZmIxMjcy
MGE4YjFkODU5YmI3ZWFlOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTUFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNQXNzZW1ibGVyLmgKQEAgLTk5NSwxMyArOTk1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZFBvaW50ZXIocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0QWJzb2x1dGVKdW1wQWRkcmVzcyhmcm9tKSkpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQmtwdCh2b2lkKiBpbnN0
cnVjdGlvblN0YXJ0KQotICAgICAgICB7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBpbnN0cnVjdGlv
biA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGluc3RydWN0aW9uU3RhcnQpOwotICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25bMF0gPSBCS1BUOwotICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0
cnVjdGlvbiwgc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgfQotCiAgICAgICAgIHN0YXRpYyB2
b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKICAg
ICAgICAgewogICAgICAgICAgICAgQVJNV29yZCogaW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9j
YXN0PEFSTVdvcmQqPihpbnN0cnVjdGlvblN0YXJ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAppbmRleCA2Y2Q0MDI1YjEyMTVlOGFkZjg0
YzM3YjM5NWMwZDdiZjBiNjU1N2Q0Li5lYjYxNTA5ZTE0OGEzY2Y2MmIzZTVkZGFiOGRlZmU5NmE2
NGQ5Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3
QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fz
c2VtYmxlci5oCkBAIC0yMzI4LDE2ICsyMzI4LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZEludDMyKHdoZXJlKSk7CiAgICAgfQogCi0gICAg
c3RhdGljIHZvaWQgcmVwbGFjZVdpdGhCa3B0KHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCi0gICAg
ewotICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvblN0
YXJ0KSAmIDEpKTsKLQotICAgICAgICB1aW50MTZfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQpOwotICAgICAgICB1aW50MTZfdCBpbnN0cnVjdGlv
bnMgPSBPUF9CS1BUOwotICAgICAgICBwZXJmb3JtSklUTWVtY3B5KHB0ciwgJmluc3RydWN0aW9u
cywgc2l6ZW9mKHVpbnQxNl90KSk7Ci0gICAgICAgIGNhY2hlRmx1c2gocHRyLCBzaXplb2YodWlu
dDE2X3QpKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCog
aW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCiAgICAgewogICAgICAgICBBU1NFUlQoIShiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvblN0YXJ0KSAmIDEpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKaW5kZXggNWZhMGZhMDA4
ZmNlNzQwZGVlOTNkYjhiN2RkNmIxN2QyMTExMTE5ZC4uMjcwY2NlMzRlZGJiODU2NDAwZGQwOTIx
OTQxMTJhNjEwZWQyZmRjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NSVBTQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NSVBTQXNzZW1ibGVyLmgKQEAgLTk0MSwxNSArOTQxLDYgQEAgcHVibGljOgogICAgICAgICBj
YWNoZUZsdXNoKGluc24sIGNvZGVTaXplKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBs
YWNlV2l0aEJrcHQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMykpOwotICAg
ICAgICBNSVBTV29yZCogaW5zbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TUlQU1dvcmQqPihyZWludGVy
cHJldF9jYXN0PGludHB0cl90PihpbnN0cnVjdGlvblN0YXJ0KSk7Ci0gICAgICAgIGludCB2YWx1
ZSA9IDUxMjsgLyogQlJLX0JVRyAqLwotICAgICAgICBpbnNuWzBdID0gKDB4MDAwMDAwMGQgfCAo
KHZhbHVlICYgMHgzZmYpIDw8IE9QX1NIX0NPREUpKTsKLSAgICAgICAgY2FjaGVGbHVzaChpbnN0
cnVjdGlvblN0YXJ0LCBzaXplb2YoTUlQU1dvcmQpKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCiAgICAg
ewogICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvblN0
YXJ0KSAmIDMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk0uaAppbmRleCA2ZjVmMzdlNTFiOTIxMzA1N2MyMmVkZTFjZDQ4M2VjMWMx
M2RjYjYwLi4yYjgwZDI0N2Y5N2E1MDNkNGQ1ZjQ1Y2Q5ODUyZmMyNDI5MjFlYmEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5o
CkBAIC0xNDk5LDExICsxNDk5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVuY3Rpb25Q
dHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KEFSTUFzc2VtYmxlcjo6cmVhZENhbGxUYXJn
ZXQoY2FsbC5kYXRhTG9jYXRpb24oKSkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBs
YWNlV2l0aEJyZWFrcG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKLSAg
ICB7Ci0gICAgICAgIEFSTUFzc2VtYmxlcjo6cmVwbGFjZVdpdGhCa3B0KGluc3RydWN0aW9uU3Rh
cnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Ci0gICAgfQotCiAgICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlv
bkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKICAgICAgICAgQVJNQXNzZW1ibGVyOjpyZXBsYWNl
V2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24uZGF0
YUxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBmZDQ5NGEwNTA5NjMzN2ExNTU3MjM1MjA3ZTU0
OGQ2ZjJlOTQ4MDZhLi5jMzdlMDBiNmM2NGIxOTI0Zjc4NjZmNzViMzI4ZTM5NmUxMGY1NzFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaApAQCAtMzcxMyw5ICszNzEzLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
RnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KEFSTTY0QXNzZW1ibGVyOjpy
ZWFkQ2FsbFRhcmdldChjYWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAotICAgIHN0YXRp
YyB2b2lkIHJlcGxhY2VXaXRoQnJlYWtwb2ludChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlv
blN0YXJ0KQorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoVk1IYWx0KENvZGVMb2NhdGlvbkxh
YmVsIGluc3RydWN0aW9uU3RhcnQpCiAgICAgewotICAgICAgICBBUk02NEFzc2VtYmxlcjo6cmVw
bGFjZVdpdGhCa3B0KGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAg
ICAgIEFSTTY0QXNzZW1ibGVyOjpyZXBsYWNlV2l0aFZNSGFsdChpbnN0cnVjdGlvblN0YXJ0LmV4
ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
SnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJl
bCBkZXN0aW5hdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggNTQzMzVhMjliYzhhNGNjNWVkNmEzMTY5NzIw
Njc5YmQwZmE5YzdkZC4uZjNmZTYxZGJlMzU2YWYzM2VhMTlmYmQ5OWM1YWY4ZGE3M2ExNjY0OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTXY3LmgKQEAgLTEzNTQsMTEgKzEzNTQsNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5kbWJJU0hTVCgpOwogICAgIH0KLSAgICAKLSAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aEJyZWFrcG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkK
LSAgICB7Ci0gICAgICAgIEFSTXY3QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEJrcHQoaW5zdHJ1Y3Rp
b25TdGFydC5kYXRhTG9jYXRpb24oKSk7Ci0gICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlv
bkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IGZmNDAwOTAxYzI0NTBkNGRj
OTljNGI2MTJlZjU0NTA4NDQ1MGNhOTEuLmZhMDViZTE3OWVmMTE5NjdjZDg2MDg2YjFjNDBjZjI4
NjllYmMwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtMzA3MiwxMSArMzA3Miw2IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihNSVBTQXNz
ZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAot
ICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQnJlYWtwb2ludChDb2RlTG9jYXRpb25MYWJlbCBp
bnN0cnVjdGlvblN0YXJ0KQotICAgIHsKLSAgICAgICAgTUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdp
dGhCa3B0KGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Ci0gICAgfQotCiAg
ICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0
aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKICAgICAgICAg
TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0
aW9uKCksIGRlc3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRl
eCAzMmRhNDUwYjQzZDhmNzhhMDU0OWRiMjg1ZGIxMmMyZDQzODkyN2RkLi42YWNjMmE5NjlkYzIz
YTc5OWNiNjY5MjBiOTI4YmQ1OGE2NzI0N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0zODAz
LDkgKzM4MDMsOSBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aEJyZWFrcG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkK
KyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aFZNSGFsdChDb2RlTG9jYXRpb25MYWJlbCBpbnN0
cnVjdGlvblN0YXJ0KQogICAgIHsKLSAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aElu
dDMoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgWDg2QXNz
ZW1ibGVyOjpyZXBsYWNlV2l0aEhsdChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNz
KCkpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRp
b25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCmluZGV4
IGFkZGM3ZDgxMTg0MGVjYzU1NDA1YmY0NzFjNmZiNzIzZWFhZGZiNzQuLjViNjRmMDJhZjY2NWMw
NGQwYWUyZmM0NzQzYTE2Y2NkMDU1YWUyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtMzYzNywxMCArMzYzNywxMCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4od2hlcmUpWy0xXTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEludDModm9pZCogaW5zdHJ1Y3Rpb25T
dGFydCkKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEhsdCh2b2lkKiBpbnN0cnVjdGlvblN0
YXJ0KQogICAgIHsKICAgICAgICAgdWludDhfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAgICAgIHB0clswXSA9IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KE9QX0lOVDMpOworICAgICAgICBwdHJbMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihP
UF9ITFQpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBp
bnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcAppbmRleCAyNDdiZGE5YjAyNmUwYTk3ZDZlOWJhZjUw
NmZiZDQwM2MwOTI4NTIzLi4xZWJmNjk0Y2U0Y2Y4NzgxYzI1NDY3ZjIxOTgwZDhlNTE3MjI1ODdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0p1bXBSZXBsYWNlbWVu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKdW1wUmVwbGFjZW1lbnQu
Y3BwCkBAIC00Myw3ICs0MywxMSBAQCB2b2lkIEp1bXBSZXBsYWNlbWVudDo6ZmlyZSgpCiAKIHZv
aWQgSnVtcFJlcGxhY2VtZW50OjppbnN0YWxsVk1UcmFwQnJlYWtwb2ludCgpCiB7Ci0gICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoQnJlYWtwb2ludChtX3NvdXJjZSk7CisjaWYgRU5BQkxF
KFNJR05BTF9CQVNFRF9WTV9UUkFQUykKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhW
TUhhbHQobV9zb3VyY2UpOworI2Vsc2UKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsK
KyNlbmRpZgogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCmluZGV4IDUxZjI4ZDNlOWNkNzFmZjE0MjZjZDhmOGI4
OWMyMTI3ODYxNjY4NmYuLjQ0ZDUzZWFmZWM1MDI1YzZmYWRmOWM2MDY0MDEwYWQ2OTRhYzhmOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCkBAIC01OSwxNyAr
NTksNiBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgICAgICwgc3RhY2tQb2ludGVyKE1h
Y2hpbmVDb250ZXh0OjpzdGFja1BvaW50ZXIocmVnaXN0ZXJzKSkKICAgICAgICAgLCBmcmFtZVBv
aW50ZXIoTWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRlcihyZWdpc3RlcnMpKQogICAgIHsKLSNp
ZiBDUFUoWDg2XzY0KSB8fCBDUFUoWDg2KQotICAgICAgICAvLyBPbiBYODZfNjQsIFNJR1RSQVAg
cmVwb3J0cyB0aGUgYWRkcmVzcyBhZnRlciB0aGUgdHJhcHBpbmcgUEMuIFNvLCBkZWMgYnkgMS4K
LSAgICAgICAgdHJhcFBDID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odHJhcFBDKSAtIDE7
Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lkIGFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0
cnVjdGlvbigpCi0gICAgewotI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCi0gICAgICAgIE1h
Y2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJzKSA9IHRyYXBQQzsKLSNl
bmRpZgogICAgIH0KIAogICAgIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnM7CkBAIC0xMzAs
NyArMTE5LDcgQEAgc3RhdGljIEV4cGVjdGVkPFZNQW5kU3RhY2tCb3VuZHMsIFZNVHJhcHM6OkVy
cm9yPiBmaW5kQWN0aXZlVk1BbmRTdGFja0JvdW5kcyhTaWcKIAogc3RhdGljIHZvaWQgaW5zdGFs
bFNpZ25hbEhhbmRsZXIoKQogewotICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6VHJh
cCwgW10gKFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpIC0+
IFNpZ25hbEFjdGlvbiB7CisgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpCYWRBY2Nl
c3MsIFtdIChTaWduYWwsIFNpZ0luZm8mLCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSAt
PiBTaWduYWxBY3Rpb24gewogICAgICAgICBTaWduYWxDb250ZXh0IGNvbnRleHQocmVnaXN0ZXJz
KTsKIAogICAgICAgICBpZiAoIWlzSklUUEMoY29udGV4dC50cmFwUEMpKQpAQCAtMjk3LDEwICsy
ODYsNiBAQCBhdXRvIFZNVHJhcHM6OnRyeUpldHRpc29uQ29kZUJsb2Nrc09uU3RhY2soU2lnbmFs
Q29udGV4dCYgY29udGV4dCkgLT4gRXhwZWN0ZWQ8YgogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpbnZhbGlkYXRlQ29kZUJsb2Nrc09uU3RhY2soY29kZUJsb2NrU2V0TG9ja2VyLCB0b3BD
YWxsRnJhbWUpOwotCi0gICAgLy8gUmUtcnVuIHRoZSB0cmFwcGluZyBpbnN0cnVjdGlvbiBub3cg
dGhhdCB3ZSd2ZSBwYXRjaGVkIGl0IHdpdGggdGhlIGludmFsaWRhdGlvbgotICAgIC8vIE9TUiBl
eGl0IG9mZi1yYW1wLgotICAgIGNvbnRleHQuYWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3Ry
dWN0aW9uKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKaW5kZXggMjY0YzM0ZGU0
NWRhMTc1YTVkNTE0MWMxNzFlZmU5NWUwNjNjNWUyNy4uZTg2ZmQ0Nzk5MGU4ODg4ZDI2ZmRkZmE3
Mzk0ZTQ3NmFiY2M4MDE4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKQEAgLTEyMywxMSArMTIzLDcgQEAgdm9pZCBl
bmFibGVGYXN0TWVtb3J5KCkKICAgICAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWV9GQVNUX01FTU9SWSkKLSAgICAgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFs
OjpCdXMsIFtdIChTaWduYWwgc2lnbmFsLCBTaWdJbmZvJiBzaWdJbmZvLCBQbGF0Zm9ybVJlZ2lz
dGVycyYgdWNvbnRleHQpIHsKLSAgICAgICAgICAgIHJldHVybiB0cmFwSGFuZGxlcihzaWduYWws
IHNpZ0luZm8sIHVjb250ZXh0KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaW5zdGFsbFNpZ25h
bEhhbmRsZXIoU2lnbmFsOjpTZWdWLCBbXSAoU2lnbmFsIHNpZ25hbCwgU2lnSW5mbyYgc2lnSW5m
bywgUGxhdGZvcm1SZWdpc3RlcnMmIHVjb250ZXh0KSB7CisgICAgICAgIGluc3RhbGxTaWduYWxI
YW5kbGVyKFNpZ25hbDo6QmFkQWNjZXNzLCBbXSAoU2lnbmFsIHNpZ25hbCwgU2lnSW5mbyYgc2ln
SW5mbywgUGxhdGZvcm1SZWdpc3RlcnMmIHVjb250ZXh0KSB7CiAgICAgICAgICAgICByZXR1cm4g
dHJhcEhhbmRsZXIoc2lnbmFsLCBzaWdJbmZvLCB1Y29udGV4dCk7CiAgICAgICAgIH0pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAppbmRleCA1MDA0MDc3YTU2YTJmMmFlMzUwN2M1NGRmNWU4MjgwY2VhYjgxMDAzLi44
N2JiM2JiNDNmMzgwODlmNzQ1Y2NmYmY5MmE0ZTE2YTZjYWM2YTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAg
LTk3NCw3ICs5NzQsNyBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lmIEVOQUJMRShKSVQpICYmIEhB
VkUoTUFDSElORV9DT05URVhUKQorI2lmIEVOQUJMRShKSVQpICYmIEhBVkUoTUFDSElORV9DT05U
RVhUKSAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSkKICNkZWZpbmUg
RU5BQkxFX1NJR05BTF9CQVNFRF9WTV9UUkFQUyAxCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMv
U2lnbmFscy5jcHAKaW5kZXggZjAxZTM5MTEzYjBjNjIxOTBiZGJlZjEzZWFiYTIyYTBlMTQ4OWJj
Mi4uNTY5NzNhOTM2ZGVkODY4NzExNDg0MjEyZTBiYTE1MzBiZmZmYWU4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
aHJlYWRzL1NpZ25hbHMuY3BwCkBAIC0xMTcsOSArMTE3LDggQEAgc3RhdGljIHZvaWQgc3RhcnRN
YWNoRXhjZXB0aW9uSGFuZGxlclRocmVhZCgpCiBzdGF0aWMgU2lnbmFsIGZyb21NYWNoRXhjZXB0
aW9uKGV4Y2VwdGlvbl90eXBlX3QgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBj
YXNlIEVYQ19CQURfQUNDRVNTOiByZXR1cm4gU2lnbmFsOjpTZWdWOworICAgIGNhc2UgRVhDX0JB
RF9BQ0NFU1M6IHJldHVybiBTaWduYWw6OkJhZEFjY2VzczsKICAgICBjYXNlIEVYQ19CQURfSU5T
VFJVQ1RJT046IHJldHVybiBTaWduYWw6OklsbDsKLSAgICBjYXNlIEVYQ19CUkVBS1BPSU5UOiBy
ZXR1cm4gU2lnbmFsOjpUcmFwOwogICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgIH0KICAgICByZXR1
cm4gU2lnbmFsOjpVbmtub3duOwpAQCAtMTI4LDkgKzEyNyw4IEBAIHN0YXRpYyBTaWduYWwgZnJv
bU1hY2hFeGNlcHRpb24oZXhjZXB0aW9uX3R5cGVfdCB0eXBlKQogc3RhdGljIGV4Y2VwdGlvbl9t
YXNrX3QgdG9NYWNoTWFzayhTaWduYWwgc2lnbmFsKQogewogICAgIHN3aXRjaCAoc2lnbmFsKSB7
Ci0gICAgY2FzZSBTaWduYWw6OlNlZ1Y6IHJldHVybiBFWENfTUFTS19CQURfQUNDRVNTOworICAg
IGNhc2UgU2lnbmFsOjpCYWRBY2Nlc3M6IHJldHVybiBFWENfTUFTS19CQURfQUNDRVNTOwogICAg
IGNhc2UgU2lnbmFsOjpJbGw6IHJldHVybiBFWENfTUFTS19CQURfSU5TVFJVQ1RJT047Ci0gICAg
Y2FzZSBTaWduYWw6OlRyYXA6IHJldHVybiBFWENfTUFTS19CUkVBS1BPSU5UOwogICAgIGRlZmF1
bHQ6IGJyZWFrOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTY2LDYgKzE2NCwxMSBAQCBrZXJuX3JldHVybl90IGNhdGNoX21hY2hfZXhjZXB0aW9uX3JhaXNl
X3N0YXRlKAogICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QqIG91dFN0YXRlQ291bnQpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQocG9ydCA9PSBleGNlcHRpb25Qb3J0KTsKKyAgICAvLyBJZiB3ZSB3
YW50ZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBTSUdCVVMgYW5kIFNJR1NFR1YgZm9yIEVYQ19C
QURfQUNDRVNTIG9uIERhcndpbiB3ZSBjb3VsZCBkbzoKKyAgICAvLyBpZiAoZXhjZXB0aW9uRGF0
YVswXSA9PSBLRVJOX0lOVkFMSURfQUREUkVTUykKKyAgICAvLyAgICBzaWduYWwgPSBTSUdTRUdW
OworICAgIC8vIGVsc2UKKyAgICAvLyAgICBzaWduYWwgPSBTSUdCVVM7CiAgICAgU2lnbmFsIHNp
Z25hbCA9IGZyb21NYWNoRXhjZXB0aW9uKGV4Y2VwdGlvblR5cGUpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHNpZ25hbCAhPSBTaWduYWw6OlVua25vd24pOwogCkBAIC0xODcsNyArMTkwLDcgQEAga2Vy
bl9yZXR1cm5fdCBjYXRjaF9tYWNoX2V4Y2VwdGlvbl9yYWlzZV9zdGF0ZSgKICNlbmRpZgogCiAg
ICAgU2lnSW5mbyBpbmZvOwotICAgIGlmIChzaWduYWwgPT0gU2lnbmFsOjpTZWdWKSB7CisgICAg
aWYgKHNpZ25hbCA9PSBTaWduYWw6OkJhZEFjY2VzcykgewogICAgICAgICBBU1NFUlRfVU5VU0VE
KGRhdGFDb3VudCwgZGF0YUNvdW50ID09IDIpOwogICAgICAgICBpbmZvLmZhdWx0aW5nQWRkcmVz
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGV4Y2VwdGlvbkRhdGFbMV0pOwogICAgIH0KQEAg
LTI0OSwxOCArMjUyLDE5IEBAIHZvaWQgdW5yZWdpc3RlclRocmVhZEZvck1hY2hFeGNlcHRpb25I
YW5kbGluZyhUaHJlYWQqIHRocmVhZCkKIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB1c2VNYWNoID0g
ZmFsc2U7CiAjZW5kaWYgLy8gSEFWRShNQUNIX0VYQ0VQVElPTlMpCiAKKworaW5saW5lIHNpemVf
dCBvZmZzZXRGb3JTeXN0ZW1TaWduYWwoaW50IHNpZykKK3sKKyAgICBTaWduYWwgc2lnbmFsID0g
ZnJvbVN5c3RlbVNpZ25hbChzaWcpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHNp
Z25hbCkgKyAoc2lnID09IFNJR0JVUyk7Cit9CisKIHN0YXRpYyB2b2lkIGpzY1NpZ25hbEhhbmRs
ZXIoaW50LCBzaWdpbmZvX3QqLCB2b2lkKik7CiAKIHZvaWQgaW5zdGFsbFNpZ25hbEhhbmRsZXIo
U2lnbmFsIHNpZ25hbCwgU2lnbmFsSGFuZGxlciYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHNp
Z25hbCA8IFNpZ25hbDo6VW5rbm93bik7CiAjaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCi0gICAg
Ly8gU2luY2UgbWFjaCBvbmx5IGhhcyBFWENfQkFEX0FDQ0VTUywgd2hpY2ggY292ZXJzIGJvdGgg
U2VnViBhbmQgQnVzLCB3ZSBhcmJpdGFyaWx5IGNob29zZSB0byBtYWtlCi0gICAgLy8gbWFjaCBF
WENfQkFEX0FDQ0VTU2VzIG1hcCB0byBTZWdWLgotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQganVz
dCB1c2UgYSBzaW5nbGUgU2lnbmFsOjpCYWRBY2Nlc3MgdmFsdWUgaW5zdGVhZCBvZiBTZWdWL0J1
cy4KLSAgICAvLyBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzIwNjMKLSAgICBpZiAoc2lnbmFsID09IFNpZ25hbDo6QnVzICYmIHVzZU1hY2gpCi0gICAgICAg
IHJldHVybjsKICAgICBBU1NFUlQoIXVzZU1hY2ggfHwgc2lnbmFsICE9IFNpZ25hbDo6VXNyKTsK
IAogICAgIGlmICh1c2VNYWNoKQpAQCAtMjc2LDcgKzI4MCwxMCBAQCB2b2lkIGluc3RhbGxTaWdu
YWxIYW5kbGVyKFNpZ25hbCBzaWduYWwsIFNpZ25hbEhhbmRsZXImJiBoYW5kbGVyKQogICAgICAg
ICAgICAgYXV0byByZXN1bHQgPSBzaWdmaWxsc2V0KCZhY3Rpb24uc2FfbWFzayk7CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0KTsKICAgICAgICAgICAgIGFjdGlvbi5zYV9mbGFn
cyA9IFNBX1NJR0lORk87Ci0gICAgICAgICAgICByZXN1bHQgPSBzaWdhY3Rpb24odG9TeXN0ZW1T
aWduYWwoc2lnbmFsKSwgJmFjdGlvbiwgJm9sZEFjdGlvbnNbc3RhdGljX2Nhc3Q8c2l6ZV90Pihz
aWduYWwpXSk7CisgICAgICAgICAgICBhdXRvIHN5c3RlbVNpZ25hbHMgPSB0b1N5c3RlbVNpZ25h
bChzaWduYWwpOworICAgICAgICAgICAgcmVzdWx0ID0gc2lnYWN0aW9uKHN0ZDo6Z2V0PDA+KHN5
c3RlbVNpZ25hbHMpLCAmYWN0aW9uLCAmb2xkQWN0aW9uc1tvZmZzZXRGb3JTeXN0ZW1TaWduYWwo
c3RkOjpnZXQ8MD4oc3lzdGVtU2lnbmFscykpXSk7CisgICAgICAgICAgICBpZiAoc3RkOjpnZXQ8
MT4oc3lzdGVtU2lnbmFscykpCisgICAgICAgICAgICAgICAgcmVzdWx0IHw9IHNpZ2FjdGlvbigq
c3RkOjpnZXQ8MT4oc3lzdGVtU2lnbmFscyksICZhY3Rpb24sICZvbGRBY3Rpb25zW29mZnNldEZv
clN5c3RlbVNpZ25hbCgqc3RkOjpnZXQ8MT4oc3lzdGVtU2lnbmFscykpXSk7CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0KTsKICAgICAgICAgfQogCkBAIC0zMTYsNyArMzIzLDcg
QEAgdm9pZCBqc2NTaWduYWxIYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCog
dWNvbnRleHQpCiAgICAgfQogCiAgICAgU2lnSW5mbyBzaWdJbmZvOwotICAgIGlmIChzaWduYWwg
PT0gU2lnbmFsOjpTZWdWIHx8IHNpZ25hbCA9PSBTaWduYWw6OkJ1cykKKyAgICBpZiAoc2lnbmFs
ID09IFNpZ25hbDo6QmFkQWNjZXNzKQogICAgICAgICBzaWdJbmZvLmZhdWx0aW5nQWRkcmVzcyA9
IGluZm8tPnNpX2FkZHI7CiAKICAgICBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzID0gcmVn
aXN0ZXJzRnJvbVVDb250ZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8dWNvbnRleHRfdCo+KHVjb250ZXh0
KSk7CkBAIC0zNDEsNyArMzQ4LDggQEAgdm9pZCBqc2NTaWduYWxIYW5kbGVyKGludCBzaWcsIHNp
Z2luZm9fdCogaW5mbywgdm9pZCogdWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBzdHJ1Y3Qgc2lnYWN0aW9uJiBvbGRBY3Rpb24gPSBvbGRBY3Rpb25zW3N0YXRpY19jYXN0
PHNpemVfdD4oc2lnbmFsKV07CisgICAgdW5zaWduZWQgb2xkQWN0aW9uSW5kZXggPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHNpZ25hbCkgKyAoc2lnID09IFNJR0JVUyk7CisgICAgc3RydWN0IHNpZ2Fj
dGlvbiYgb2xkQWN0aW9uID0gb2xkQWN0aW9uc1tzdGF0aWNfY2FzdDxzaXplX3Q+KG9sZEFjdGlv
bkluZGV4KV07CiAgICAgaWYgKHNpZ25hbCA9PSBTaWduYWw6OlVzcikgewogICAgICAgICBpZiAo
b2xkQWN0aW9uLnNhX3NpZ2FjdGlvbikKICAgICAgICAgICAgIG9sZEFjdGlvbi5zYV9zaWdhY3Rp
b24oc2lnLCBpbmZvLCB1Y29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJl
YWRzL1NpZ25hbHMuaCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCmluZGV4IDI1
NzZmYWQ1YTAwNDgzMzIwOGM1YmMyNTBlNTQ3MGQzNzhmNzUyYjQuLmZhYWUwYTdkMjA0ZTUzZmFk
MDQxZmU1NmYzMjUxMTM2ODExYTlhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RocmVh
ZHMvU2lnbmFscy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm1S
ZWdpc3RlcnMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC00MSwyMiArNDIsMTggQEAgZW51bSBj
bGFzcyBTaWduYWwgewogCiAgICAgLy8gVGhlc2Ugc2lnbmFscyB3aWxsIG9ubHkgY2hhaW4gaWYg
d2UgZG9uJ3QgaGF2ZSBhIGhhbmRsZXIgdGhhdCBjYW4gcHJvY2VzcyB0aGVtLiBJZiB0aGVyZSBp
cyBub3RoaW5nCiAgICAgLy8gdG8gY2hhaW4gdG8gd2UgcmVzdG9yZSB0aGUgZGVmYXVsdCBoYW5k
bGVyIGFuZCBjcmFzaC4KLSAgICBUcmFwLAogICAgIElsbCwKLSAgICBTZWdWLAotICAgIEJ1cywK
LSAgICBOdW1iZXJPZlNpZ25hbHMsCisgICAgQmFkQWNjZXNzLCAvLyBGb3IgcG9zaXggdGhpcyBp
cyBib3RoIFNJR1NFR1YgYW5kIFNJR0JVUworICAgIE51bWJlck9mU2lnbmFscyA9IEJhZEFjY2Vz
cyArIDIsIC8vIEJhZEFjY2VzcyBpcyByZWFsbHkgdHdvIHNpZ25hbHMuCiAgICAgVW5rbm93biA9
IE51bWJlck9mU2lnbmFscwogfTsKIAotaW5saW5lIGludCB0b1N5c3RlbVNpZ25hbChTaWduYWwg
c2lnbmFsKQoraW5saW5lIHN0ZDo6dHVwbGU8aW50LCBzdGQ6Om9wdGlvbmFsPGludD4+IHRvU3lz
dGVtU2lnbmFsKFNpZ25hbCBzaWduYWwpCiB7CiAgICAgc3dpdGNoIChzaWduYWwpIHsKLSAgICBj
YXNlIFNpZ25hbDo6U2VnVjogcmV0dXJuIFNJR1NFR1Y7Ci0gICAgY2FzZSBTaWduYWw6OkJ1czog
cmV0dXJuIFNJR0JVUzsKLSAgICBjYXNlIFNpZ25hbDo6SWxsOiByZXR1cm4gU0lHSUxMOwotICAg
IGNhc2UgU2lnbmFsOjpVc3I6IHJldHVybiBTSUdVU1IyOwotICAgIGNhc2UgU2lnbmFsOjpUcmFw
OiByZXR1cm4gU0lHVFJBUDsKKyAgICBjYXNlIFNpZ25hbDo6QmFkQWNjZXNzOiByZXR1cm4gc3Rk
OjptYWtlX3R1cGxlKFNJR1NFR1YsIFNJR0JVUyk7CisgICAgY2FzZSBTaWduYWw6OklsbDogcmV0
dXJuIHN0ZDo6bWFrZV90dXBsZShTSUdJTEwsIHN0ZDo6bnVsbG9wdCk7CisgICAgY2FzZSBTaWdu
YWw6OlVzcjogcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShTSUdJTEwsIHN0ZDo6bnVsbG9wdCk7CiAg
ICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC02NSwxMSArNjIsMTAgQEAgaW5saW5lIGludCB0b1N5c3RlbVNpZ25hbChTaWduYWwg
c2lnbmFsKQogaW5saW5lIFNpZ25hbCBmcm9tU3lzdGVtU2lnbmFsKGludCBzaWduYWwpCiB7CiAg
ICAgc3dpdGNoIChzaWduYWwpIHsKLSAgICBjYXNlIFNJR1NFR1Y6IHJldHVybiBTaWduYWw6OlNl
Z1Y7Ci0gICAgY2FzZSBTSUdCVVM6IHJldHVybiBTaWduYWw6OkJ1czsKKyAgICBjYXNlIFNJR1NF
R1Y6IHJldHVybiBTaWduYWw6OkJhZEFjY2VzczsKKyAgICBjYXNlIFNJR0JVUzogcmV0dXJuIFNp
Z25hbDo6QmFkQWNjZXNzOwogICAgIGNhc2UgU0lHSUxMOiByZXR1cm4gU2lnbmFsOjpJbGw7CiAg
ICAgY2FzZSBTSUdVU1IyOiByZXR1cm4gU2lnbmFsOjpVc3I7Ci0gICAgY2FzZSBTSUdUUkFQOiBy
ZXR1cm4gU2lnbmFsOjpUcmFwOwogICAgIGRlZmF1bHQ6IHJldHVybiBTaWduYWw6OlVua25vd247
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDI3Y2EzODY0MjdlYzY0NGU0OGU3N2FiZDNlNzYzOWNmNGU3Nzg5OGIuLmIxOWYzMzA0
N2IwZTgwNzdjMGUzMjBmM2Y1NjQ1OGEwNDM5OTNkMDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wNi0yMyAg
S2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2gg
Vk1UcmFwcyB0byB1c2UgaGFsdCBpbnN0cnVjdGlvbnMgcmF0aGVyIHRoYW4gYnJlYWtwb2ludCBp
bnN0cnVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IEpGIEJhc3RpZW4uCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRNZXNzYWdlcy5jcHA6CisgICAgICAgIChU
RVNUKToKKwogMjAxNy0wNi0yMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBbaU9TIERuRF0gW1dLMl0gUmVtb3ZlIGN1c3RvbSBsb2dpYyBmb3IgZGlz
YW1iaWd1YXRpbmcgbG9uZyBwcmVzcyBhY3Rpb24gc2hlZXQgZ2VzdHVyZXMgYW5kIGRyYWcgbGlm
dApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVzc2Fn
ZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVzc2FnZXMuY3Bw
CmluZGV4IGU2YTU3ODk0YmI1MTZmZTFjZTcxM2QwN2JmMThmMDcwNmVmYTkzN2MuLjI2NmYyMGVh
ZGVlZjFlMzU4MGIyOTkwYWQwYjU3MWU4YWRlNTVkNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZE1lc3NhZ2VzLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRNZXNzYWdlcy5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBU
RVNUKFRocmVhZE1lc3NhZ2UsIFNpZ25hbHNXb3JrT25FeGl0KQogICAgICAgICByZWNlaXZlclNo
b3VsZEtlZXBSdW5uaW5nLnN0b3JlKGZhbHNlKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRp
Y19jYXN0PFJlZmxlY3RlZFRocmVhZCo+KHJlY2VpdmVyVGhyZWFkLmdldCgpKS0+aGFzRXhpdGVk
KCkpOwogICAgICAgICBzbGVlcCgxKTsKLSAgICAgICAgc2lnbmFsRmlyZWQgPSAhcHRocmVhZF9r
aWxsKHN0YXRpY19jYXN0PFJlZmxlY3RlZFRocmVhZCo+KHJlY2VpdmVyVGhyZWFkLmdldCgpKS0+
bV9oYW5kbGUsIHRvU3lzdGVtU2lnbmFsKFNpZ25hbDo6VXNyKSk7CisgICAgICAgIHNpZ25hbEZp
cmVkID0gIXB0aHJlYWRfa2lsbChzdGF0aWNfY2FzdDxSZWZsZWN0ZWRUaHJlYWQqPihyZWNlaXZl
clRocmVhZC5nZXQoKSktPm1faGFuZGxlLCBzdGQ6OmdldDwwPih0b1N5c3RlbVNpZ25hbChTaWdu
YWw6OlVzcikpKTsKICAgICB9CiAKICAgICByZWNlaXZlclRocmVhZC0+d2FpdEZvckNvbXBsZXRp
b24oKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>