<?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>224472</bug_id>
          
          <creation_ts>2021-04-12 22:02:59 -0700</creation_ts>
          <short_desc>[JSC] Do not copy SimpleJumpTable</short_desc>
          <delta_ts>2021-04-14 20:30:28 -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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1749530</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-12 22:02:59 -0700</bug_when>
    <thetext>[JSC] Do not copy SimpleJumpTable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749532</commentid>
    <comment_count>1</comment_count>
      <attachid>425834</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-12 22:08:34 -0700</bug_when>
    <thetext>Created attachment 425834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749536</commentid>
    <comment_count>2</comment_count>
      <attachid>425836</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-12 22:34:20 -0700</bug_when>
    <thetext>Created attachment 425836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749579</commentid>
    <comment_count>3</comment_count>
      <attachid>425845</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-13 01:03:54 -0700</bug_when>
    <thetext>Created attachment 425845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749974</commentid>
    <comment_count>4</comment_count>
      <attachid>425942</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-13 19:22:01 -0700</bug_when>
    <thetext>Created attachment 425942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749976</commentid>
    <comment_count>5</comment_count>
      <attachid>425942</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-13 19:28:35 -0700</bug_when>
    <thetext>Comment on attachment 425942
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:-213
&gt; -    for (unsigned i = m_codeBlock-&gt;numberOfSwitchJumpTables(); i--;) {
&gt; -        if (usedJumpTables.get(i))
&gt; -            continue;
&gt; -        
&gt; -        m_codeBlock-&gt;switchJumpTable(i).clear();
&gt; -    }

We materialize SimpleJumpTable&apos;s content when ensureCTITable() is called. And when calling ensureCTITable, we put didUseJumpTable = true.
So, this is not necessary. If the table is not used, it is not having contents (since, we are no longer copying these vectors at first).

&gt; Source/JavaScriptCore/ftl/FTLLink.cpp:-50
&gt; -    // B3 will create its own jump tables as needed.
&gt; -    codeBlock-&gt;clearSwitchJumpTables();
&gt; -

We do not move the content to CodeBlock when compiling FTL. This means that it is not set. We do not need to clear here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749998</commentid>
    <comment_count>6</comment_count>
      <attachid>425942</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-13 21:17:08 -0700</bug_when>
    <thetext>Comment on attachment 425942
Patch

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

r=me.  Please update the copyright year in the files you modify if they aren&apos;t already showing &quot;-2021&quot;.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:419
&gt; -    if (unlinkedCodeBlock-&gt;numberOfExceptionHandlers() || unlinkedCodeBlock-&gt;numberOfSwitchJumpTables()) {
&gt; +    if (unlinkedCodeBlock-&gt;numberOfExceptionHandlers()) {
&gt;          createRareDataIfNecessary();

Nice.  One less trigger for creating RareData.

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:211
&gt; +    const UnlinkedSimpleJumpTable&amp; unlinkedSwitchJumpTable(int tableIndex) { ASSERT(m_rareData); return m_rareData-&gt;m_unlinkedSwitchJumpTables[tableIndex]; }

Make this a const function?

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:8560
&gt; +        byteCodeParser-&gt;m_graph.m_switchJumpTables.resize(byteCodeParser-&gt;m_graph.m_switchJumpTables.size() + codeBlock-&gt;numberOfUnlinkedSwitchJumpTables());
&gt; +        for (unsigned i = 0; i &lt; codeBlock-&gt;numberOfUnlinkedSwitchJumpTables(); ++i) {
&gt; +            m_switchRemap[i] = byteCodeParser-&gt;m_graph.m_unlinkedSwitchJumpTables.size();
&gt; +            byteCodeParser-&gt;m_graph.m_unlinkedSwitchJumpTables.append(&amp;codeBlock-&gt;unlinkedSwitchJumpTable(i));
&gt; +        }

This blob is now identical to the one for the &quot;inline case&quot; above.  Would it be possible to refactor this out into the common section below?  Also refactor out the m_switchRemap.resize().

&gt; Source/JavaScriptCore/dfg/DFGGraph.h:1067
&gt; +    const UnlinkedSimpleJumpTable&amp; unlinkedSwitchJumpTable(unsigned index) { return *m_unlinkedSwitchJumpTables[index]; }

Make function const?

&gt;&gt; Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:-213
&gt;&gt; -    }
&gt; 
&gt; We materialize SimpleJumpTable&apos;s content when ensureCTITable() is called. And when calling ensureCTITable, we put didUseJumpTable = true.
&gt; So, this is not necessary. If the table is not used, it is not having contents (since, we are no longer copying these vectors at first).

Did you mean when call emitSwitchIntJump()?  I don&apos;t see ensureCTITable() setting didUseJumpTable.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLink.cpp:-50
&gt;&gt; -
&gt; 
&gt; We do not move the content to CodeBlock when compiling FTL. This means that it is not set. We do not need to clear here.

Can we ASSERT that it is not set?  I suggest retaining the above B3 comment with the ASSERT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750168</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-14 09:54:52 -0700</bug_when>
    <thetext>Crashing randomly via WebCore::RenderLayerCompositor::computeCompositingRequirements, and this is known issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750303</commentid>
    <comment_count>8</comment_count>
      <attachid>425942</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-14 13:00:52 -0700</bug_when>
    <thetext>Comment on attachment 425942
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:419
&gt;&gt;          createRareDataIfNecessary();
&gt; 
&gt; Nice.  One less trigger for creating RareData.

:D

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:211
&gt;&gt; +    const UnlinkedSimpleJumpTable&amp; unlinkedSwitchJumpTable(int tableIndex) { ASSERT(m_rareData); return m_rareData-&gt;m_unlinkedSwitchJumpTables[tableIndex]; }
&gt; 
&gt; Make this a const function?

Sure! Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:8560
&gt;&gt; +        }
&gt; 
&gt; This blob is now identical to the one for the &quot;inline case&quot; above.  Would it be possible to refactor this out into the common section below?  Also refactor out the m_switchRemap.resize().

Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGGraph.h:1067
&gt;&gt; +    const UnlinkedSimpleJumpTable&amp; unlinkedSwitchJumpTable(unsigned index) { return *m_unlinkedSwitchJumpTables[index]; }
&gt; 
&gt; Make function const?

Fixed.

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:-213
&gt;&gt;&gt; -    }
&gt;&gt; 
&gt;&gt; We materialize SimpleJumpTable&apos;s content when ensureCTITable() is called. And when calling ensureCTITable, we put didUseJumpTable = true.
&gt;&gt; So, this is not necessary. If the table is not used, it is not having contents (since, we are no longer copying these vectors at first).
&gt; 
&gt; Did you mean when call emitSwitchIntJump()?  I don&apos;t see ensureCTITable() setting didUseJumpTable.

Yes. I mean emitSwitchIntJump. And when calling ensureCTITable, we also set didUseJumpTable in all the cases.

&gt;&gt;&gt; Source/JavaScriptCore/ftl/FTLLink.cpp:-50
&gt;&gt;&gt; -
&gt;&gt; 
&gt;&gt; We do not move the content to CodeBlock when compiling FTL. This means that it is not set. We do not need to clear here.
&gt; 
&gt; Can we ASSERT that it is not set?  I suggest retaining the above B3 comment with the ASSERT.

Added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750306</commentid>
    <comment_count>9</comment_count>
      <attachid>426037</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-14 13:10:06 -0700</bug_when>
    <thetext>Created attachment 426037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750461</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-14 20:26:34 -0700</bug_when>
    <thetext>ChangeLog entry in Source/JavaScriptCore/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750463</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-14 20:29:42 -0700</bug_when>
    <thetext>Committed r275995 (236547@main): &lt;https://commits.webkit.org/236547@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750464</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-14 20:30:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/76681916&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425834</attachid>
            <date>2021-04-12 22:08:34 -0700</date>
            <delta_ts>2021-04-12 22:33:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224472-20210412220834.patch</filename>
            <type>text/plain</type>
            <size>72955</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MDI3ZTQ4MDIzYTZlMWNkYTczNGY0Yjg0ODRkNTQ4YmQzZGRiNTVkLi5mZGNmMzY5YjM4ZjQ2ODlj
MDU4OGMxMjUzNWY5YzdhYTU3NGQwYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAyMS0wNC0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERvIG5vdCBjb3B5IFNpbXBsZUp1bXBUYWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDcyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUR1bXBlci5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6ZHVtcFN3aXRjaEp1bXBUYWJsZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb246OnJ1bik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnN3aXRjaEp1bXBUYWJsZSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMgY29uc3QpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpudW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmNsZWFyU3dpdGNoSnVtcFRhYmxlcyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkU3dpdGNoSnVtcFRhYmxlRnJvbVByb2ZpbGVkQ29k
ZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9KdW1wVGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpTaW1wbGVKdW1wVGFibGU6Om9mZnNldEZvclZhbHVlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBieXRlY29kZS9KdW1wVGFibGUuaDoKKyAgICAgICAgKEpTQzo6U2ltcGxlSnVtcFRh
YmxlOjplbnN1cmVDVElUYWJsZSk6CisgICAgICAgIChKU0M6OlNpbXBsZUp1bXBUYWJsZTo6Y3Rp
Rm9yVmFsdWUgY29uc3QpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U2lt
cGxlSnVtcFRhYmxlOjpjbG9uZU5vbkpJVFBhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpTaW1wbGVKdW1wVGFibGU6OmN0aUZvclZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6U2ltcGxlSnVtcFRhYmxlOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkU2ltcGxlSnVtcFRhYmxlOjpvZmZz
ZXRGb3JWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkU2ltcGxlSnVtcFRhYmxl
OjphZGQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bnVtYmVyT2ZVbmxpbmtl
ZFN3aXRjaEp1bXBUYWJsZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnN3aXRjaEp1bXBUYWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAqIGJ5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpudW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcyBj
b25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjphZGRVbmxp
bmtlZFN3aXRjaEp1bXBUYWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yOjp1bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yOjpudW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6YWRkU3dpdGNo
SnVtcFRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3I6OnN3aXRjaEp1bXBUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmJlZ2luU3dpdGNoKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1bXBUYWJsZUZvclN3aXRjaCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbmRTd2l0Y2gpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJ
bmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KToKKyAgICAgICAgKiBkZmcvREZHR3Jh
cGguaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbnRKdW1w
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbSk6Cisg
ICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAg
ICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVXaXRob3V0TGlu
a2luZyk6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAoSlNDOjpTd2l0Y2hSZWNvcmQ6OlN3aXRjaFJlY29yZCk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hfY2hhcik6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hf
aW1tKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N3aXRjaF9jaGFyKToKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRTaW1wbGVKdW1wVGFi
bGU6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFNpbXBsZUp1bXBUYWJsZTo6ZGVjb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrUmFyZURhdGE6OmVuY29kZSk6
CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9ja1JhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgor
CiAyMDIxLTA0LTEyICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAg
ICAgICAgSW5zcGVjdG9yIGNvZGUgaXMgd3JvbmdseSBpbmNsdWRpbmcgc29tZSBwcml2YXRlIGhl
YWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggZTc0ZjRjNDgyOTFhOTBjNTQzNDM2N2ZlYWExZjQ2ZDA3MjUwN2U1OS4uMDM2
YTU5MGEwYTdmZjRkMDczMTBiMGY2ZTkwMDgwZWIwMzI4MjI2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAyMS0wNC0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtKU0NdIERvIG5vdCBjb3B5IFNpbXBsZUp1bXBUYWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIE1vdmUgY29uc3RydWN0b3IgLyBvcGVy
YXRvciBmb3IgRml4ZWRWZWN0b3IgLyBSZWZDb3VudGVkQXJyYXksIHRoaXMgaXMgbmVjZXNzYXJ5
IHRvIGtlZXAgYmFja2luZyBtZW1vcnkgcG9pbnRlciB0aGUgc2FtZSBhZnRlciB0aGUgbW92ZS4K
KyAgICAgICAgVGhlIGFib3ZlIHJlcXVpcmVtZW50IGlzIHVzZWQgd2hlbiBtb3ZpbmcgU2ltcGxl
SnVtcFRhYmxlIGFsbG9jYXRlZCBpbiBERkcuCisKKyAgICAgICAgKiB3dGYvRml4ZWRWZWN0b3Iu
aDoKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OkZpeGVkVmVjdG9yKToKKyAgICAgICAgKFdU
Rjo6Rml4ZWRWZWN0b3I6Om9wZXJhdG9yPSk6CisgICAgICAgICogd3RmL1JlZkNvdW50ZWRBcnJh
eS5oOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OlJlZkNvdW50ZWRBcnJheSk6Cisg
ICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6b3BlcmF0b3I9KToKKwogMjAyMS0wNC0xMiAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQmxvY2sgbG9hZGlu
ZyBmb3IgcG9ydCAxMDA4MApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUR1bXBlci5jcHAKaW5kZXggMmUyNWUwN2RmODE3NTcwZDQ1NjI5NTMyMTE1ZWRmNDIw
NmUxOGI2OC4uNGE4YzhmZGQ0Yjg4MGYzY2JmM2E0YTE5ZDY2ODU2YTM3MGYwN2NiOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBA
IC0xNzQsMTggKzE3NCwxOCBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
ZHVtcEV4Y2VwdGlvbkhhbmRsZXJzKCkKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgogdm9pZCBDb2Rl
QmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTd2l0Y2hKdW1wVGFibGVzKCkKIHsKLSAg
ICBpZiAodW5zaWduZWQgY291bnQgPSB0aGlzLT5ibG9jaygpLT5udW1iZXJPZlN3aXRjaEp1bXBU
YWJsZXMoKSkgeworICAgIGlmICh1bnNpZ25lZCBjb3VudCA9IHRoaXMtPmJsb2NrKCktPm51bWJl
ck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzKCkpIHsKICAgICAgICAgdGhpcy0+bV9vdXQucHJp
bnRmKCJTd2l0Y2ggSnVtcCBUYWJsZXM6XG4iKTsKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiAg
ICAgICAgIGRvIHsKICAgICAgICAgICAgIHRoaXMtPm1fb3V0LnByaW50ZigiICAlMWQgPSB7XG4i
LCBpKTsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN3aXRjaEp1bXBUYWJsZSA9IHRoaXMtPmJs
b2NrKCktPnN3aXRjaEp1bXBUYWJsZShpKTsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN3aXRj
aEp1bXBUYWJsZSA9IHRoaXMtPmJsb2NrKCktPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGkpOwog
ICAgICAgICAgICAgaW50IGVudHJ5ID0gMDsKLSAgICAgICAgICAgIGF1dG8gZW5kID0gc3dpdGNo
SnVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gaXRl
ciA9IHN3aXRjaEp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyAr
K2l0ZXIsICsrZW50cnkpIHsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gc3dpdGNoSnVtcFRhYmxl
Lm1fYnJhbmNoT2Zmc2V0cy5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byBpdGVyID0gc3dp
dGNoSnVtcFRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVy
LCArK2VudHJ5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCEqaXRlcikKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgdGhpcy0+bV9vdXQucHJpbnRmKCJcdFx0
JTRkID0+ICUwNGRcbiIsIGVudHJ5ICsgc3dpdGNoSnVtcFRhYmxlLm1pbiwgKml0ZXIpOworICAg
ICAgICAgICAgICAgIHRoaXMtPm1fb3V0LnByaW50ZigiXHRcdCU0ZCA9PiAlMDRkXG4iLCBlbnRy
eSArIHN3aXRjaEp1bXBUYWJsZS5tX21pbiwgKml0ZXIpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgdGhpcy0+bV9vdXQucHJpbnRmKCIgICAgICB9XG4iKTsKICAgICAgICAgICAgICsraTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCmluZGV4IDRkNTdkYTVhMzBlMmQxOWYwYzg1Y2I1Y2Q5
ZGJmMzcwODUzMzVmNTcuLjgyOGQ4YTA0MzdlMmVmZDljNmUzY2M4ZjBmN2U1NGNlZWEzNjk5ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMjE2LDEyICsyMTYsMTIgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKICAgICAvLyBTZXR1cCB0aGUgZ2xvYmFs
IHN3aXRjaCBmb3IgdGhlIGdlbmVyYXRvci4KICAgICB7CiAgICAgICAgIGF1dG8gbmV4dFRvRW50
ZXJQb2ludCA9IGVudGVyUG9pbnQoKS5uZXh0KCk7Ci0gICAgICAgIHVuc2lnbmVkIHN3aXRjaFRh
YmxlSW5kZXggPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7CisgICAg
ICAgIHVuc2lnbmVkIHN3aXRjaFRhYmxlSW5kZXggPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxp
bmtlZFN3aXRjaEp1bXBUYWJsZXMoKTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHN0YXRlID0g
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yOjpBcmd1bWVudDo6U3RhdGUpKTsKLSAgICAgICAgYXV0byYganVtcFRh
YmxlID0gbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOwotICAgICAgICBqdW1wVGFi
bGUubWluID0gMDsKLSAgICAgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMgPSBGaXhlZFZlY3Rv
cjxpbnQzMl90PihtX3lpZWxkcy5zaXplKCkgKyAxKTsKLSAgICAgICAgc3RkOjpmaWxsKGp1bXBU
YWJsZS5icmFuY2hPZmZzZXRzLmJlZ2luKCksIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmVuZCgp
LCAwKTsKKyAgICAgICAgYXV0byYganVtcFRhYmxlID0gbV9jb2RlQmxvY2stPmFkZFVubGlua2Vk
U3dpdGNoSnVtcFRhYmxlKCk7CisgICAgICAgIGp1bXBUYWJsZS5tX21pbiA9IDA7CisgICAgICAg
IGp1bXBUYWJsZS5tX2JyYW5jaE9mZnNldHMgPSBGaXhlZFZlY3RvcjxpbnQzMl90PihtX3lpZWxk
cy5zaXplKCkgKyAxKTsKKyAgICAgICAgc3RkOjpmaWxsKGp1bXBUYWJsZS5tX2JyYW5jaE9mZnNl
dHMuYmVnaW4oKSwganVtcFRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5lbmQoKSwgMCk7CiAgICAgICAg
IGp1bXBUYWJsZS5hZGQoMCwgbmV4dFRvRW50ZXJQb2ludC5vZmZzZXQoKSk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3lpZWxkcy5zaXplKCk7ICsraSkKICAgICAgICAgICAg
IGp1bXBUYWJsZS5hZGQoaSArIDEsIG1feWllbGRzW2ldLnBvaW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggOTM4N2ZmYzc5ZGZhZGZmNzZi
NjE3ZTM5ZDcwMmUxOWI1YTQzNWQ3Ni4uOTdmMTA5YTkyOGNlM2JlNGNiZGYyNGFiODY0ZGQ5NDg3
MjAxNWJmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKQEAgLTMyNCw5ICszMjQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAKICAgICBpZiAob3Ro
ZXIubV9yYXJlRGF0YSkgewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0g
ICAgICAgIAogICAgICAgICBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzID0gb3RoZXIu
bV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyczsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9z
d2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwog
ICAgIH0KIH0KIApAQCAtNDE4LDcgKzQxNiw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAg
ICAgICAgIG1fZnVuY3Rpb25FeHByc1tpXS5zZXQodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJs
ZS0+bGluayh2bSwgdG9wTGV2ZWxFeGVjdXRhYmxlLCBvd25lckV4ZWN1dGFibGUtPnNvdXJjZSgp
LCBXVEY6Om51bGxvcHQsIE5vSW50cmluc2ljLCBvd25lckV4ZWN1dGFibGUtPmlzSW5zaWRlT3Jk
aW5hcnlGdW5jdGlvbigpKSk7CiAgICAgfQogCi0gICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5u
dW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCkgfHwgdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9m
U3dpdGNoSnVtcFRhYmxlcygpKSB7CisgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJP
ZkV4Y2VwdGlvbkhhbmRsZXJzKCkpIHsKICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2Fy
eSgpOwogCiAgICAgICAgIGlmIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVt
YmVyT2ZFeGNlcHRpb25IYW5kbGVycygpKSB7CkBAIC00MzQsMTYgKzQzMiw2IEBAIGJvb2wgQ29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rCiAjZW5kaWYKICAgICAgICAgICAgIH0KICAgICAgICAgfQotCi0gICAg
ICAgIGlmIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hK
dW1wVGFibGVzKCkpIHsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxl
cy5yZXNpemVUb0ZpdChjb3VudCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYg
c291cmNlVGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGkpOwotICAg
ICAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgZGVzdFRhYmxlID0gbV9yYXJlRGF0YS0+bV9z
d2l0Y2hKdW1wVGFibGVzW2ldOwotICAgICAgICAgICAgICAgIGRlc3RUYWJsZS5icmFuY2hPZmZz
ZXRzID0gc291cmNlVGFibGUuYnJhbmNoT2Zmc2V0czsKLSAgICAgICAgICAgICAgICBkZXN0VGFi
bGUubWluID0gc291cmNlVGFibGUubWluOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAg
fQogCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVudmly
b25tZW50cy4KQEAgLTIxMTUsNyArMjEwMyw3IEBAIGJvb2wgQ29kZUJsb2NrOjpoYXNPcERlYnVn
Rm9yTGluZUFuZENvbHVtbih1bnNpZ25lZCBsaW5lLCBPcHRpb25hbDx1bnNpZ25lZD4gY29sCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiwgU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQordm9pZCBDb2RlQmxv
Y2s6OnNocmlua1RvRml0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNocmlua01vZGUpCiB7
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAvLyBPbmx5IDMyYml0IEJhc2VsaW5lIEpJVCBp
cyB0b3VjaGluZyBtX2NvbnN0YW50UmVnaXN0ZXJzIGFkZHJlc3MgZGlyZWN0bHkuCkBAIC0yMTI1
LDExICsyMTEzLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIFNocmlua01vZGUgc2hyaW5rTW9kZSkKICAgICBtX2NvbnN0YW50UmVnaXN0
ZXJzLnNocmlua1RvRml0KCk7CiAjZW5kaWYKICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbi5zaHJpbmtUb0ZpdCgpOwotCi0gICAgaWYgKHNocmlua01vZGUgPT0gU2hyaW5r
TW9kZTo6RWFybHlTaHJpbmspIHsKLSAgICAgICAgaWYgKG1fcmFyZURhdGEpCi0gICAgICAgICAg
ICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKLSAgICB9IC8v
IGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBw
b2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2UgdGFibGVzLgogfQogCiAjaWYgRU5BQkxFKEpJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCAyOTI3N2Ey
Zjg5NDg3ZWE0NDBmMDUwMmQ3OWUyZjdlYzMzZTVkMDU1Li44MjAzZDk1YWM3YmIzOWUzNDdkYmE0
NjEzYzA1YjJkZjY5MDdkYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCkBAIC0yNzgsNiArMjc4LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIFBhY2tlZFJh
d1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+PiBtX2luY29taW5nQ2FsbHM7CiAgICAgICAgIFNl
bnRpbmVsTGlua2VkTGlzdDxQb2x5bW9ycGhpY0NhbGxOb2RlLCBQYWNrZWRSYXdTZW50aW5lbE5v
ZGU8UG9seW1vcnBoaWNDYWxsTm9kZT4+IG1faW5jb21pbmdQb2x5bW9ycGhpY0NhbGxzOwogICAg
ICAgICBGaXhlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGU+IG1fcmFyZUNhc2VQcm9maWxlczsKKyAg
ICAgICAgRml4ZWRWZWN0b3I8U2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAg
ICAgICAgIEZpeGVkVmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UENUb0NvZGVPcmlnaW5NYXA+IG1fcGNUb0Nv
ZGVPcmlnaW5NYXA7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlz
dD4gbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwpAQCAtNjE1LDIxICs2MTYsMTUgQEAgY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICAvLyBKdW1wIFRhYmxlcwogCi0gICAgc2l6
ZV90IG51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEg
PyBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpIDogMDsgfQotICAgIFNpbXBs
ZUp1bXBUYWJsZSYgc3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IFJFTEVBU0VfQVNT
RVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzW3Rh
YmxlSW5kZXhdOyB9Ci0gICAgdm9pZCBjbGVhclN3aXRjaEp1bXBUYWJsZXMoKQotICAgIHsKLSAg
ICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3Jh
cmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuY2xlYXIoKTsKLSAgICB9Ci0jaWYgRU5BQkxFKERG
R19KSVQpCi0gICAgdm9pZCBhZGRTd2l0Y2hKdW1wVGFibGVGcm9tUHJvZmlsZWRDb2RlQmxvY2so
U2ltcGxlSnVtcFRhYmxlJiBwcm9maWxlZCkKKyNpZiBFTkFCTEUoSklUKQorICAgIFNpbXBsZUp1
bXBUYWJsZSYgc3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KQogICAgIHsKLSAgICAgICAg
Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwotICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRj
aEp1bXBUYWJsZXMuYXBwZW5kKHByb2ZpbGVkLmNsb25lTm9uSklUUGFydCgpKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV9qaXREYXRhKTsKKyAgICAgICAgcmV0dXJuIG1faml0RGF0YS0+bV9z
d2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOwogICAgIH0KICNlbmRpZgorICAgIHNpemVfdCBu
dW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5r
ZWRDb2RlLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpOyB9CisgICAgY29uc3Qg
VW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGludCB0YWJs
ZUluZGV4KSB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUo
dGFibGVJbmRleCk7IH0KIAogI2lmIEVOQUJMRShKSVQpCiAgICAgU3RyaW5nSnVtcFRhYmxlJiBz
dHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpCkBAIC04ODksOSArODg0LDYgQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICBW
ZWN0b3I8SGFuZGxlckluZm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7CiAKLSAgICAgICAgLy8gSnVt
cCBUYWJsZXMKLSAgICAgICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFi
bGVzOwotCiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kVmly
dHVhbFJlZ2lzdGVyQnVmZmVyPj4gbV9jYXRjaFByb2ZpbGVzOwogCiAgICAgICAgIERpcmVjdEV2
YWxDb2RlQ2FjaGUgbV9kaXJlY3RFdmFsQ29kZUNhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcAppbmRleCBlMjJhZDAzYzljZTQxZDZhZjU4MTdmMzFk
NjRmZWE1YmM3MDdkNmYwLi40NDk1MmQ5MWY5NzE3MTY4NTlmMjJmMjQ5ZTUwNDkyMTY1ODMwZTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcApAQCAt
MzQsMTQgKzM0LDQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWludDMyX3QgU2ltcGxlSnVtcFRh
YmxlOjpvZmZzZXRGb3JWYWx1ZShpbnQzMl90IHZhbHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQp
Ci17Ci0gICAgaWYgKHZhbHVlID49IG1pbiAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUg
LSBtaW4pIDwgYnJhbmNoT2Zmc2V0cy5zaXplKCkpIHsKLSAgICAgICAgaW50MzJfdCBvZmZzZXQg
PSBicmFuY2hPZmZzZXRzW3ZhbHVlIC0gbWluXTsKLSAgICAgICAgaWYgKG9mZnNldCkKLSAgICAg
ICAgICAgIHJldHVybiBvZmZzZXQ7Ci0gICAgfQotICAgIHJldHVybiBkZWZhdWx0T2Zmc2V0OyAg
ICAgICAgCi19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0p1bXBUYWJsZS5oCmluZGV4IGU3NmI1MDA1MDk2NmEyOTllOTNjYTNjZWM3ZWIzMzJj
M2M5OTU3NGMuLmJhMDU2MTMxYjkzZGZkMzkzNjBlNTljYTA1ZDJlODMwODUwOTI3YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmgKQEAgLTUyLDQ5ICs1Miwy
NSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogI2VuZGlmCiAKLSAgICBzdHJ1Y3QgU2ltcGxl
SnVtcFRhYmxlIHsKLSAgICAgICAgLy8gRklYTUU6IFRoZSB0d28gVmVjdG9ycyBjYW4gYmUgY29t
YmluZWQgaW50byBvbmUgVmVjdG9yPE9mZnNldExvY2F0aW9uPgotICAgICAgICBGaXhlZFZlY3Rv
cjxpbnQzMl90PiBicmFuY2hPZmZzZXRzOwotICAgICAgICBpbnQzMl90IG1pbiB7IElOVDMyX01J
TiB9OwogI2lmIEVOQUJMRShKSVQpCi0gICAgICAgIFZlY3RvcjxDb2RlTG9jYXRpb25MYWJlbDxK
U1N3aXRjaFB0clRhZz4+IGN0aU9mZnNldHM7Ci0gICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpT
U3dpdGNoUHRyVGFnPiBjdGlEZWZhdWx0OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkK
LSAgICAgICAgLy8gSklUIHBhcnQgY2FuIGJlIGxhdGVyIGV4cGFuZGVkIHdpdGhvdXQgdGFraW5n
IGEgbG9jayB3aGlsZSBub24tSklUIHBhcnQgaXMgc3RhYmxlIGFmdGVyIENvZGVCbG9jayBpcyBm
aW5hbGl6ZWQuCi0gICAgICAgIFNpbXBsZUp1bXBUYWJsZSBjbG9uZU5vbkpJVFBhcnQoKSBjb25z
dAotICAgICAgICB7Ci0gICAgICAgICAgICBTaW1wbGVKdW1wVGFibGUgcmVzdWx0OwotICAgICAg
ICAgICAgcmVzdWx0LmJyYW5jaE9mZnNldHMgPSBicmFuY2hPZmZzZXRzOwotICAgICAgICAgICAg
cmVzdWx0Lm1pbiA9IG1pbjsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0K
LSNlbmRpZgorICAgIHN0cnVjdCBTaW1wbGVKdW1wVGFibGUgeworICAgICAgICBGaXhlZFZlY3Rv
cjxDb2RlTG9jYXRpb25MYWJlbDxKU1N3aXRjaFB0clRhZz4+IG1fY3RpT2Zmc2V0czsKKyAgICAg
ICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNTd2l0Y2hQdHJUYWc+IG1fY3RpRGVmYXVsdDsKIAotICAg
ICAgICBpbnQzMl90IG9mZnNldEZvclZhbHVlKGludDMyX3QgdmFsdWUsIGludDMyX3QgZGVmYXVs
dE9mZnNldCk7Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgdm9pZCBlbnN1cmVDVElUYWJsZSgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChjdGlPZmZzZXRzLmlzRW1wdHkoKSB8fCBj
dGlPZmZzZXRzLnNpemUoKSA9PSBicmFuY2hPZmZzZXRzLnNpemUoKSk7Ci0gICAgICAgICAgICBj
dGlPZmZzZXRzLmdyb3coYnJhbmNoT2Zmc2V0cy5zaXplKCkpOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBpbmxpbmUgQ29kZUxvY2F0aW9uTGFiZWw8SlNTd2l0Y2hQdHJUYWc+IGN0aUZv
clZhbHVlKGludDMyX3QgdmFsdWUpCisgICAgICAgIHZvaWQgZW5zdXJlQ1RJVGFibGUoY29uc3Qg
VW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2VkVGFibGUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICh2YWx1ZSA+PSBtaW4gJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlIC0g
bWluKSA8IGN0aU9mZnNldHMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjdGlPZmZz
ZXRzW3ZhbHVlIC0gbWluXTsKLSAgICAgICAgICAgIHJldHVybiBjdGlEZWZhdWx0OworICAgICAg
ICAgICAgaWYgKCFtX2N0aU9mZnNldHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIG1fY3RpT2Zmc2V0cyA9IEZpeGVkVmVjdG9yPENvZGVMb2NhdGlvbkxh
YmVsPEpTU3dpdGNoUHRyVGFnPj4odW5saW5rZWRUYWJsZS5tX2JyYW5jaE9mZnNldHMuc2l6ZSgp
KTsKICAgICAgICAgfQotI2VuZGlmCiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICAgICAgdm9p
ZCBjbGVhcigpCisgICAgICAgIGlubGluZSBDb2RlTG9jYXRpb25MYWJlbDxKU1N3aXRjaFB0clRh
Zz4gY3RpRm9yVmFsdWUoaW50MzJfdCBtaW4sIGludDMyX3QgdmFsdWUpIGNvbnN0CiAgICAgICAg
IHsKLSAgICAgICAgICAgIGJyYW5jaE9mZnNldHMgPSBGaXhlZFZlY3RvcjxpbnQzMl90PigpOwot
ICAgICAgICAgICAgY3RpT2Zmc2V0cy5jbGVhcigpOworICAgICAgICAgICAgaWYgKHZhbHVlID49
IG1pbiAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUgLSBtaW4pIDwgbV9jdGlPZmZzZXRz
LnNpemUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jdGlPZmZzZXRzW3ZhbHVlIC0gbWlu
XTsKKyAgICAgICAgICAgIHJldHVybiBtX2N0aURlZmF1bHQ7CiAgICAgICAgIH0KLSNlbmRpZgog
ICAgIH07CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaApp
bmRleCAzYmRhOWJiNDA5N2Q2Y2EyOWJiYzljOGU4MmI0NzdlNWI3ZjMzNmI5Li5kYzY4NWI4Y2I0
Y2ViMGFiNGI0ZWJjY2MzMjM5MTlhY2UxZDA2ZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgKQEAg
LTYxLDE3ICs2MSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBDQVNFX09QKE9wSmJlbG93ZXEp
IFwKICAgICBjYXNlIG9wX3N3aXRjaF9pbW06IHsgXAogICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
aW5zdHJ1Y3Rpb24tPmFzPE9wU3dpdGNoSW1tPigpOyBcCi0gICAgICAgIGF1dG8mIHRhYmxlID0g
Y29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KTsgXAotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykg
XAotICAgICAgICAgICAgU1dJVENIX0NBU0UodGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7IFwKKyAg
ICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGJ5
dGVjb2RlLm1fdGFibGVJbmRleCk7IFwKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUu
bV9icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykgXAorICAgICAgICAgICAgU1dJVENIX0NBU0Uo
dGFibGUubV9icmFuY2hPZmZzZXRzW2ldKTsgXAogICAgICAgICBTV0lUQ0hfREVGQVVMVF9PRkZT
RVQoT3BTd2l0Y2hJbW0pOyBcCiAgICAgICAgIGJyZWFrOyBcCiAgICAgfSBcCiAgICAgY2FzZSBv
cF9zd2l0Y2hfY2hhcjogeyBcCiAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+
YXM8T3BTd2l0Y2hDaGFyPigpOyBcCi0gICAgICAgIGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT5z
d2l0Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KTsgXAotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykgXAotICAgICAgICAg
ICAgU1dJVENIX0NBU0UodGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7IFwKKyAgICAgICAgYXV0byYg
dGFibGUgPSBjb2RlQmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGJ5dGVjb2RlLm1fdGFi
bGVJbmRleCk7IFwKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUubV9icmFuY2hPZmZz
ZXRzLnNpemUoKTsgaS0tOykgXAorICAgICAgICAgICAgU1dJVENIX0NBU0UodGFibGUubV9icmFu
Y2hPZmZzZXRzW2ldKTsgXAogICAgICAgICBTV0lUQ0hfREVGQVVMVF9PRkZTRVQoT3BTd2l0Y2hD
aGFyKTsgXAogICAgICAgICBicmVhazsgXAogICAgIH0gXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA0NjlmMWM5YzQ4N2Uw
YjQ2NzE4M2EzNDBiNmUyYmE5YmIzZDY3NjFhLi4yZDEyNTEyMmM5ODgzYmIyNzRmNWE4YTBmZjgz
ZjMxYWUyNzI5NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaApAQCAtOTUsMTQgKzk1LDIzIEBAIHN0cnVjdCBVbmxpbmtlZFN0
cmluZ0p1bXBUYWJsZSB7CiB9OwogCiBzdHJ1Y3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUgewot
ICAgIEZpeGVkVmVjdG9yPGludDMyX3Q+IGJyYW5jaE9mZnNldHM7Ci0gICAgaW50MzJfdCBtaW47
CisgICAgRml4ZWRWZWN0b3I8aW50MzJfdD4gbV9icmFuY2hPZmZzZXRzOworICAgIGludDMyX3Qg
bV9taW47CisKKyAgICBpbmxpbmUgaW50MzJfdCBvZmZzZXRGb3JWYWx1ZShpbnQzMl90IHZhbHVl
LCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAodmFsdWUg
Pj0gbV9taW4gJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlIC0gbV9taW4pIDwgbV9icmFu
Y2hPZmZzZXRzLnNpemUoKSkgeworICAgICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSBtX2JyYW5j
aE9mZnNldHNbdmFsdWUgLSBtX21pbl07CisgICAgICAgICAgICBpZiAob2Zmc2V0KQorICAgICAg
ICAgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRlZmF1
bHRPZmZzZXQ7CisgICAgfQogCi0gICAgaW50MzJfdCBvZmZzZXRGb3JWYWx1ZShpbnQzMl90IHZh
bHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpOwogICAgIHZvaWQgYWRkKGludDMyX3Qga2V5LCBp
bnQzMl90IG9mZnNldCkKICAgICB7Ci0gICAgICAgIGlmICghYnJhbmNoT2Zmc2V0c1trZXldKQot
ICAgICAgICAgICAgYnJhbmNoT2Zmc2V0c1trZXldID0gb2Zmc2V0OworICAgICAgICBpZiAoIW1f
YnJhbmNoT2Zmc2V0c1trZXldKQorICAgICAgICAgICAgbV9icmFuY2hPZmZzZXRzW2tleV0gPSBv
ZmZzZXQ7CiAgICAgfQogfTsKIApAQCAtMTE5LDYgKzEyOCw4IEBAIGNsYXNzIFVubGlua2VkQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQogCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KwogICAgIGVudW0geyBDYWxsRnVuY3Rpb24sIEFwcGx5RnVuY3Rpb24gfTsKIAogICAgIGJvb2wg
aXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQpAQCAtMTg1
LDggKzE5Niw4IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAK
ICAgICAvLyBKdW1wIFRhYmxlcwogCi0gICAgc2l6ZV90IG51bWJlck9mU3dpdGNoSnVtcFRhYmxl
cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBU
YWJsZXMuc2l6ZSgpIDogMDsgfQotICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBzd2l0Y2hK
dW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9y
YXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CisgICAgc2l6ZV90IG51
bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0
YSA/IG1fcmFyZURhdGEtPm1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSA6IDA7IH0K
KyAgICBjb25zdCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgdW5saW5rZWRTd2l0Y2hKdW1wVGFi
bGUoaW50IHRhYmxlSW5kZXgpIHsgQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0
YS0+bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAogICAgIHNpemVf
dCBudW1iZXJPZlVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxl
cy5zaXplKCkgOiAwOyB9CiAgICAgY29uc3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIHVubGlu
a2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IEFTU0VSVChtX3JhcmVE
YXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVz
W3RhYmxlSW5kZXhdOyB9CkBAIC0zOTksNyArNDEwLDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgRml4ZWRWZWN0b3I8VW5saW5rZWRIYW5kbGVy
SW5mbz4gbV9leGNlcHRpb25IYW5kbGVyczsKIAogICAgICAgICAvLyBKdW1wIFRhYmxlcwotICAg
ICAgICBGaXhlZFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFi
bGVzOworICAgICAgICBGaXhlZFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV91bmxp
bmtlZFN3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIEZpeGVkVmVjdG9yPFVubGlua2VkU3RyaW5n
SnVtcFRhYmxlPiBtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAogICAgICAgICBG
aXhlZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvOjpGYXRQb3NpdGlvbj4gbV9leHByZXNzaW9u
SW5mb0ZhdFBvc2l0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwCmluZGV4IGY5NmM2MDAy
NmM2ZjJkZWM4NjgzYWRhMTZkZGFlN2VmYTUwYTc1YzUuLmY3ODEwOWU4ODYxOTEzOWZhNTVhNzg2
MzU2NTM5MmI3OGM2N2NmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcApAQCAtMTMyLDcg
KzEzMiw3IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmZpbmFsaXplKHN0ZDo6
dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gaW5zCiAKICAgICAgICAgaWYgKCFtX2NvZGVC
bG9jay0+bV9yYXJlRGF0YSkgewogICAgICAgICAgICAgaWYgKCFtX2V4Y2VwdGlvbkhhbmRsZXJz
LmlzRW1wdHkoKQotICAgICAgICAgICAgICAgIHx8ICFtX3N3aXRjaEp1bXBUYWJsZXMuaXNFbXB0
eSgpCisgICAgICAgICAgICAgICAgfHwgIW1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzLmlzRW1w
dHkoKQogICAgICAgICAgICAgICAgIHx8ICFtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxl
cy5pc0VtcHR5KCkKICAgICAgICAgICAgICAgICB8fCAhbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0
aW9ucy5pc0VtcHR5KCkKICAgICAgICAgICAgICAgICB8fCAhbV90eXBlUHJvZmlsZXJJbmZvTWFw
LmlzRW1wdHkoKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3I6OmZpbmFsaXplKHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gaW5zCiAg
ICAgICAgIH0KICAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5tX3JhcmVEYXRhKSB7CiAgICAgICAg
ICAgICBtX2NvZGVCbG9jay0+bV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycyA9IFdURk1v
dmUobV9leGNlcHRpb25IYW5kbGVycyk7Ci0gICAgICAgICAgICBtX2NvZGVCbG9jay0+bV9yYXJl
RGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gV1RGTW92ZShtX3N3aXRjaEp1bXBUYWJsZXMpOwor
ICAgICAgICAgICAgbV9jb2RlQmxvY2stPm1fcmFyZURhdGEtPm1fdW5saW5rZWRTd2l0Y2hKdW1w
VGFibGVzID0gV1RGTW92ZShtX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyk7CiAgICAgICAgICAg
ICBtX2NvZGVCbG9jay0+bV9yYXJlRGF0YS0+bV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJs
ZXMgPSBXVEZNb3ZlKG1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKTsKICAgICAgICAg
ICAgIG1fY29kZUJsb2NrLT5tX3JhcmVEYXRhLT5tX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25z
ID0gV1RGTW92ZShtX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zKTsKICAgICAgICAgICAgIG1f
Y29kZUJsb2NrLT5tX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXAgPSBXVEZNb3ZlKG1f
dHlwZVByb2ZpbGVySW5mb01hcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4IDExMTQ5MDRj
MmY3YWJkYWI2NTBmY2FiMTdkOWE0N2YwNzc0ZDhmMTQuLjZjZDdhZWY4OWU0ZDA3N2QyOTBiMGEz
M2Y1OTJkMDJmODk3NjIyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCkBAIC05MCw5ICs5MCw5
IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yIHsKICAgICB1bnNpZ25lZCBqdW1w
VGFyZ2V0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0c1tpbmRleF07IH0K
ICAgICB1bnNpZ25lZCBsYXN0SnVtcFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdl
dHMubGFzdCgpOyB9CiAKLSAgICBzaXplX3QgbnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCkgY29u
c3QgeyByZXR1cm4gbV9zd2l0Y2hKdW1wVGFibGVzLnNpemUoKTsgfQotICAgIFVubGlua2VkU2lt
cGxlSnVtcFRhYmxlJiBhZGRTd2l0Y2hKdW1wVGFibGUoKSB7IG1fc3dpdGNoSnVtcFRhYmxlcy5h
cHBlbmQoVW5saW5rZWRTaW1wbGVKdW1wVGFibGUoKSk7IHJldHVybiBtX3N3aXRjaEp1bXBUYWJs
ZXMubGFzdCgpOyB9Ci0gICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHN3aXRjaEp1bXBUYWJs
ZShpbnQgdGFibGVJbmRleCkgeyByZXR1cm4gbV9zd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhd
OyB9CisgICAgc2l6ZV90IG51bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzKCkgY29uc3Qg
eyByZXR1cm4gbV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpOyB9CisgICAgVW5saW5r
ZWRTaW1wbGVKdW1wVGFibGUmIGFkZFVubGlua2VkU3dpdGNoSnVtcFRhYmxlKCkgeyBtX3VubGlu
a2VkU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoVW5saW5rZWRTaW1wbGVKdW1wVGFibGUoKSk7IHJl
dHVybiBtX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KKyAgICBVbmxpbmtlZFNp
bXBsZUp1bXBUYWJsZSYgdW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsg
cmV0dXJuIG1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CiAKICAgICBz
aXplX3QgbnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJl
dHVybiBtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaXplKCk7IH0KICAgICBVbmxp
bmtlZFN0cmluZ0p1bXBUYWJsZSYgYWRkVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7
IG1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChVbmxpbmtlZFN0cmluZ0p1
bXBUYWJsZSgpKTsgcmV0dXJuIG1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmxhc3Qo
KTsgfQpAQCAtMjA0LDcgKzIwNCw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
IHsKICAgICBPdXRPZkxpbmVKdW1wVGFyZ2V0cyBtX291dE9mTGluZUp1bXBUYXJnZXRzOwogICAg
IC8vIEluIFJhcmVEYXRhLgogICAgIFZlY3RvcjxVbmxpbmtlZEhhbmRsZXJJbmZvPiBtX2V4Y2Vw
dGlvbkhhbmRsZXJzOwotICAgIFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0
Y2hKdW1wVGFibGVzOworICAgIFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV91bmxp
bmtlZFN3aXRjaEp1bXBUYWJsZXM7CiAgICAgVmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxl
PiBtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKICAgICBWZWN0b3I8RXhwcmVzc2lv
blJhbmdlSW5mbzo6RmF0UG9zaXRpb24+IG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CiAg
ICAgSGFzaE1hcDx1bnNpZ25lZCwgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjpUeXBlUHJv
ZmlsZXJFeHByZXNzaW9uUmFuZ2U+IG1fdHlwZVByb2ZpbGVySW5mb01hcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKaW5kZXggODY1MzI4ZGFkZDljNjQ0OTRjMDY1ZGMxNzNlOGMzYjAxMDYwMzBjYS4uYjM1ZTY4
ZmI1MjkxOGYwYTVkNzVlZmZiODRhNjFlZWY0MDcxN2ZlNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAg
LTQwMzYsMTQgKzQwMzYsMTQgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5Td2l0Y2go
UmVnaXN0ZXJJRCogc2NydXRpbmVlUmVnaXN0ZXIsIFN3aXRjaEluZm86OlMKIHsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIFN3aXRjaEluZm86OlN3aXRjaEltbWVkaWF0ZTogewotICAg
ICAgICBzaXplX3QgdGFibGVJbmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBU
YWJsZXMoKTsKLSAgICAgICAgbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOworICAg
ICAgICBzaXplX3QgdGFibGVJbmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dp
dGNoSnVtcFRhYmxlcygpOworICAgICAgICBtX2NvZGVCbG9jay0+YWRkVW5saW5rZWRTd2l0Y2hK
dW1wVGFibGUoKTsKICAgICAgICAgT3BTd2l0Y2hJbW06OmVtaXQodGhpcywgdGFibGVJbmRleCwg
Qm91bmRMYWJlbCgpLCBzY3J1dGluZWVSZWdpc3Rlcik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYXNlIFN3aXRjaEluZm86OlN3aXRjaENoYXJhY3RlcjogewotICAgICAgICBzaXplX3Qg
dGFibGVJbmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKLSAg
ICAgICAgbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOworICAgICAgICBzaXplX3Qg
dGFibGVJbmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxl
cygpOworICAgICAgICBtX2NvZGVCbG9jay0+YWRkVW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoKTsK
ICAgICAgICAgT3BTd2l0Y2hDaGFyOjplbWl0KHRoaXMsIHRhYmxlSW5kZXgsIEJvdW5kTGFiZWwo
KSwgc2NydXRpbmVlUmVnaXN0ZXIpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00MDkxLDkg
KzQwOTEsOSBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlSnVtcFRhYmxlRm9yU3dpdGNoKAogICAgIGNv
bnN0IFZlY3RvcjxSZWY8TGFiZWw+LCA4PiYgbGFiZWxzLCBFeHByZXNzaW9uTm9kZSoqIG5vZGVz
LCBpbnQzMl90IG1pbiwgaW50MzJfdCBtYXgsCiAgICAgaW50MzJfdCAoKmtleUdldHRlcikoRXhw
cmVzc2lvbk5vZGUqLCBpbnQzMl90IG1pbiwgaW50MzJfdCBtYXgpKQogewotICAgIGp1bXBUYWJs
ZS5taW4gPSBtaW47Ci0gICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMgPSBGaXhlZFZlY3Rvcjxp
bnQzMl90PihtYXggLSBtaW4gKyAxKTsKLSAgICBzdGQ6OmZpbGwoanVtcFRhYmxlLmJyYW5jaE9m
ZnNldHMuYmVnaW4oKSwganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZW5kKCksIDApOworICAgIGp1
bXBUYWJsZS5tX21pbiA9IG1pbjsKKyAgICBqdW1wVGFibGUubV9icmFuY2hPZmZzZXRzID0gRml4
ZWRWZWN0b3I8aW50MzJfdD4obWF4IC0gbWluICsgMSk7CisgICAgc3RkOjpmaWxsKGp1bXBUYWJs
ZS5tX2JyYW5jaE9mZnNldHMuYmVnaW4oKSwganVtcFRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5lbmQo
KSwgMCk7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGNsYXVzZUNvdW50OyArK2kpIHsK
ICAgICAgICAgLy8gV2UncmUgZW1pdHRpbmcgdGhpcyBhZnRlciB0aGUgY2xhdXNlIGxhYmVscyBz
aG91bGQgaGF2ZSBiZWVuIGZpeGVkLCBzbyAKICAgICAgICAgLy8gdGhlIGxhYmVscyBzaG91bGQg
bm90IGJlICJmb3J3YXJkIiByZWZlcmVuY2VzCkBAIC00MTI5LDcgKzQxMjksNyBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbmRTd2l0Y2godWludDMyX3QgY2xhdXNlQ291bnQsIGNvbnN0IFZl
Y3RvcjxSZWY8TGFiZWw+LAogICAgICAgICAgICAgcmV0dXJuIEJvdW5kTGFiZWwoKTsKICAgICAg
ICAgfSk7CiAKLSAgICAgICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1f
Y29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KTsKKyAgICAg
ICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT51bmxp
bmtlZFN3aXRjaEp1bXBUYWJsZShieXRlY29kZS5tX3RhYmxlSW5kZXgpOwogICAgICAgICBwcmVw
YXJlSnVtcFRhYmxlRm9yU3dpdGNoKAogICAgICAgICAgICAganVtcFRhYmxlLCBzd2l0Y2hJbmZv
LmJ5dGVjb2RlT2Zmc2V0LCBjbGF1c2VDb3VudCwgbGFiZWxzLCBub2RlcywgbWluLCBtYXgsCiAg
ICAgICAgICAgICBzd2l0Y2hJbmZvLnN3aXRjaFR5cGUgPT0gU3dpdGNoSW5mbzo6U3dpdGNoSW1t
ZWRpYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IDNlMzA5Y2Q5MTI1MWQ3OWQ0MjFmZGMyMjUxZmU3MzFlZjcxZTcwYjAuLjlhMGFh
NThmOGRjMTEwYjUwMDQyNGZkY2JmMGFlNTNkMmZjODkxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC02ODcyLDE0ICs2ODcyLDE0
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICBkYXRhLmtpbmQgPSBTd2l0Y2hJbW07CiAgICAgICAgICAgICBkYXRhLnN3aXRjaFRh
YmxlSW5kZXggPSBtX2lubGluZVN0YWNrVG9wLT5tX3N3aXRjaFJlbWFwW2J5dGVjb2RlLm1fdGFi
bGVJbmRleF07CiAgICAgICAgICAgICBkYXRhLmZhbGxUaHJvdWdoLnNldEJ5dGVjb2RlSW5kZXgo
bV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fZGVmYXVsdE9m
ZnNldCkpOwotICAgICAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1fY29kZUJsb2Nr
LT5zd2l0Y2hKdW1wVGFibGUoZGF0YS5zd2l0Y2hUYWJsZUluZGV4KTsKLSAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCF0YWJsZS5icmFuY2hPZmZzZXRzW2ldKQorICAgICAgICAg
ICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2VkVGFibGUgPSBtX2dyYXBo
LnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGRhdGEuc3dpdGNoVGFibGVJbmRleCk7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdW5saW5rZWRUYWJsZS5tX2JyYW5jaE9mZnNl
dHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXVubGlua2VkVGFibGUubV9i
cmFuY2hPZmZzZXRzW2ldKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgICAgICB1bnNpZ25lZCB0YXJnZXQgPSBtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIHRhYmxl
LmJyYW5jaE9mZnNldHNbaV07CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0ID0gbV9j
dXJyZW50SW5kZXgub2Zmc2V0KCkgKyB1bmxpbmtlZFRhYmxlLm1fYnJhbmNoT2Zmc2V0c1tpXTsK
ICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ID09IGRhdGEuZmFsbFRocm91Z2guYnl0ZWNvZGVJ
bmRleCgpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBk
YXRhLmNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlOjp3aXRoQnl0ZWNvZGVJbmRleChtX2dyYXBoLmZy
ZWV6ZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90Pih0YWJsZS5taW4gKyBpKSkpLCB0YXJn
ZXQpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlOjp3aXRo
Qnl0ZWNvZGVJbmRleChtX2dyYXBoLmZyZWV6ZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
Pih1bmxpbmtlZFRhYmxlLm1fbWluICsgaSkpKSwgdGFyZ2V0KSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJbmZvKCZkYXRhKSwgZ2V0KGJ5dGVjb2Rl
Lm1fc2NydXRpbmVlKSk7CiAgICAgICAgICAgICBmbHVzaElmVGVybWluYWwoZGF0YSk7CkBAIC02
ODkyLDE1ICs2ODkyLDE1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAgICAgICAgICAgICBkYXRhLmtpbmQgPSBTd2l0Y2hDaGFyOwogICAgICAgICAg
ICAgZGF0YS5zd2l0Y2hUYWJsZUluZGV4ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9zd2l0Y2hSZW1h
cFtieXRlY29kZS5tX3RhYmxlSW5kZXhdOwogICAgICAgICAgICAgZGF0YS5mYWxsVGhyb3VnaC5z
ZXRCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsganVtcFRhcmdldChieXRl
Y29kZS5tX2RlZmF1bHRPZmZzZXQpKTsKLSAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFi
bGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGRhdGEuc3dpdGNoVGFibGVJbmRleCk7
Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFibGUuYnJhbmNoT2Zmc2V0
cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIGlmICghdGFibGUuYnJhbmNoT2Zmc2V0
c1tpXSkKKyAgICAgICAgICAgIGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtl
ZFRhYmxlID0gbV9ncmFwaC51bmxpbmtlZFN3aXRjaEp1bXBUYWJsZShkYXRhLnN3aXRjaFRhYmxl
SW5kZXgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVubGlua2VkVGFi
bGUubV9icmFuY2hPZmZzZXRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCF1
bmxpbmtlZFRhYmxlLm1fYnJhbmNoT2Zmc2V0c1tpXSkKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0ID0gbV9jdXJyZW50SW5kZXgu
b2Zmc2V0KCkgKyB0YWJsZS5icmFuY2hPZmZzZXRzW2ldOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHRhcmdldCA9IG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgdW5saW5rZWRUYWJsZS5tX2Jy
YW5jaE9mZnNldHNbaV07CiAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBkYXRhLmZhbGxU
aHJvdWdoLmJ5dGVjb2RlSW5kZXgoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgZGF0YS5jYXNlcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIFN3
aXRjaENhc2U6OndpdGhCeXRlY29kZUluZGV4KExhenlKU1ZhbHVlOjpzaW5nbGVDaGFyYWN0ZXJT
dHJpbmcodGFibGUubWluICsgaSksIHRhcmdldCkpOworICAgICAgICAgICAgICAgICAgICBTd2l0
Y2hDYXNlOjp3aXRoQnl0ZWNvZGVJbmRleChMYXp5SlNWYWx1ZTo6c2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKHVubGlua2VkVGFibGUubV9taW4gKyBpKSwgdGFyZ2V0KSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJbmZvKCZkYXRhKSwgZ2V0KGJ5dGVjb2Rl
Lm1fc2NydXRpbmVlKSk7CiAgICAgICAgICAgICBmbHVzaElmVGVybWluYWwoZGF0YSk7CkBAIC04
NTI2LDE2ICs4NTI2LDE4IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxp
bmVTdGFja0VudHJ5KAogICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+a2luZCA9IGtpbmQ7CiAg
ICAgICAgIAogICAgICAgICBtX2lkZW50aWZpZXJSZW1hcC5yZXNpemUoY29kZUJsb2NrLT5udW1i
ZXJPZklkZW50aWZpZXJzKCkpOwotICAgICAgICBtX3N3aXRjaFJlbWFwLnJlc2l6ZShjb2RlQmxv
Y2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpKTsKKyAgICAgICAgbV9zd2l0Y2hSZW1hcC5y
ZXNpemUoY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpKTsKIAog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlm
aWVycygpOyArK2kpIHsKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiByZXAgPSBjb2Rl
QmxvY2stPmlkZW50aWZpZXIoaSkuaW1wbCgpOwogICAgICAgICAgICAgdW5zaWduZWQgaW5kZXgg
PSBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShyZXApOwogICAg
ICAgICAgICAgbV9pZGVudGlmaWVyUmVtYXBbaV0gPSBpbmRleDsKICAgICAgICAgfQotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBU
YWJsZXMoKTsgKytpKSB7Ci0gICAgICAgICAgICBtX3N3aXRjaFJlbWFwW2ldID0gYnl0ZUNvZGVQ
YXJzZXItPm1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKLSAgICAgICAg
ICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlRnJvbVBy
b2ZpbGVkQ29kZUJsb2NrKGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGkpKTsKKworICAgICAg
ICBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX3N3aXRjaEp1bXBUYWJsZXMucmVzaXplKGJ5dGVD
b2RlUGFyc2VyLT5tX2dyYXBoLm1fc3dpdGNoSnVtcFRhYmxlcy5zaXplKCkgKyBjb2RlQmxvY2st
Pm51bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzKCkpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxl
cygpOyArK2kpIHsKKyAgICAgICAgICAgIG1fc3dpdGNoUmVtYXBbaV0gPSBieXRlQ29kZVBhcnNl
ci0+bV9ncmFwaC5tX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcy5zaXplKCk7CisgICAgICAgICAg
ICBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcy5hcHBl
bmQoJmNvZGVCbG9jay0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoaSkpOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgLy8gTWFjaGluZSBjb2RlIGJsb2NrIGNhc2UuCkBAIC04NTQ3
LDExICs4NTQ5LDE1IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVT
dGFja0VudHJ5KAogICAgICAgICBtX2lubGluZUNhbGxGcmFtZSA9IG51bGxwdHI7CiAKICAgICAg
ICAgbV9pZGVudGlmaWVyUmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVy
cygpKTsKLSAgICAgICAgbV9zd2l0Y2hSZW1hcC5yZXNpemUoY29kZUJsb2NrLT5udW1iZXJPZlN3
aXRjaEp1bXBUYWJsZXMoKSk7CisgICAgICAgIG1fc3dpdGNoUmVtYXAucmVzaXplKGNvZGVCbG9j
ay0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKSk7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCk7ICsraSkKICAg
ICAgICAgICAgIG1faWRlbnRpZmllclJlbWFwW2ldID0gaTsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOyArK2kpCi0g
ICAgICAgICAgICBtX3N3aXRjaFJlbWFwW2ldID0gaTsKKworICAgICAgICBieXRlQ29kZVBhcnNl
ci0+bV9ncmFwaC5tX3N3aXRjaEp1bXBUYWJsZXMucmVzaXplKGJ5dGVDb2RlUGFyc2VyLT5tX2dy
YXBoLm1fc3dpdGNoSnVtcFRhYmxlcy5zaXplKCkgKyBjb2RlQmxvY2stPm51bWJlck9mVW5saW5r
ZWRTd2l0Y2hKdW1wVGFibGVzKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Y29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpOyArK2kpIHsKKyAg
ICAgICAgICAgIG1fc3dpdGNoUmVtYXBbaV0gPSBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX3Vu
bGlua2VkU3dpdGNoSnVtcFRhYmxlcy5zaXplKCk7CisgICAgICAgICAgICBieXRlQ29kZVBhcnNl
ci0+bV9ncmFwaC5tX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoJmNvZGVCbG9jay0+
dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoaSkpOworICAgICAgICB9CiAgICAgfQogICAgIAogICAg
IG1fYXJndW1lbnRQb3NpdGlvbnMucmVzaXplKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzV2l0
aEZpeHVwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCA0Yjg4ZjQxM2Vj
MjU5YjEyNWMyZjU5Y2Q3Nzc5NDc0MWZiN2EzNGExLi5kMWZiMzZhMDc0NWYxYTZmZjlkZTQ0MmQy
MDg5MDhhNzlkNzIwYTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC0x
MDY0LDYgKzEwNjQsOSBAQCBjbGFzcyBHcmFwaCBmaW5hbCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5u
YWJsZSB7CiAgICAgUHJlZml4JiBwcmVmaXgoKSB7IHJldHVybiBtX3ByZWZpeDsgfQogICAgIHZv
aWQgbmV4dFBoYXNlKCkgeyBtX3ByZWZpeC5waGFzZU51bWJlcisrOyB9CiAKKyAgICBjb25zdCBV
bmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgdW5saW5rZWRTd2l0Y2hKdW1wVGFibGUodW5zaWduZWQg
aW5kZXgpIHsgcmV0dXJuICptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlc1tpbmRleF07IH0KKyAg
ICBTaW1wbGVKdW1wVGFibGUmIHN3aXRjaEp1bXBUYWJsZSh1bnNpZ25lZCBpbmRleCkgeyByZXR1
cm4gbV9zd2l0Y2hKdW1wVGFibGVzW2luZGV4XTsgfQorCiAgICAgU3RhY2tDaGVjayBtX3N0YWNr
Q2hlY2tlcjsKICAgICBWTSYgbV92bTsKICAgICBQbGFuJiBtX3BsYW47CkBAIC0xMDc0LDYgKzEw
NzcsOSBAQCBjbGFzcyBHcmFwaCBmaW5hbCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAg
ICAgVmVjdG9yPEJhc2ljQmxvY2sqLCAxPiBtX3Jvb3RzOwogICAgIFZlY3RvcjxFZGdlLCAxNj4g
bV92YXJBcmdDaGlsZHJlbjsKIAorICAgIFZlY3Rvcjxjb25zdCBVbmxpbmtlZFNpbXBsZUp1bXBU
YWJsZSo+IG1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzOworICAgIFZlY3RvcjxTaW1wbGVKdW1w
VGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKKwogICAgIEhhc2hNYXA8RW5jb2RlZEpTVmFsdWUs
IEZyb3plblZhbHVlKiwgRW5jb2RlZEpTVmFsdWVIYXNoLCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFp
dHM+IG1fZnJvemVuVmFsdWVNYXA7CiAgICAgQmFnPEZyb3plblZhbHVlPiBtX2Zyb3plblZhbHVl
czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRl
eCAzMThmMDE1NmMxNGZkODYzNjNmYjI5ZmU5ZWFmZmQxYzI5ODgzZjE1Li42NzRkOGY3YWFlMzEx
ODQ3NDM3ZGJhOGQxOGE5MmM4MmQzYjdjNmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMTc2LDEyICsxNzYsMTQgQEAgdm9pZCBKSVRDb21w
aWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIAogICAgIG1fZ3JhcGgucmVn
aXN0ZXJGcm96ZW5WYWx1ZXMoKTsKIAotICAgIGlmIChtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxp
bmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSkgeworICAgIGlmIChtX2NvZGVCbG9jay0+bnVt
YmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSB8fCAhbV9ncmFwaC5tX3N3aXRj
aEp1bXBUYWJsZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIobV9jb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5lbnN1cmVKSVRE
YXRhKGxvY2tlcikubV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gRml4ZWRWZWN0b3I8U3RyaW5n
SnVtcFRhYmxlPihtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBU
YWJsZXMoKSk7CisgICAgICAgIGlmIChtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN0cmlu
Z1N3aXRjaEp1bXBUYWJsZXMoKSkKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLT5lbnN1cmVKSVRE
YXRhKGxvY2tlcikubV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gRml4ZWRWZWN0b3I8U3RyaW5n
SnVtcFRhYmxlPihtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBU
YWJsZXMoKSk7CisgICAgICAgIGlmICghbV9ncmFwaC5tX3N3aXRjaEp1bXBUYWJsZXMuaXNFbXB0
eSgpKQorICAgICAgICAgICAgbV9jb2RlQmxvY2stPmVuc3VyZUpJVERhdGEobG9ja2VyKS5tX3N3
aXRjaEp1bXBUYWJsZXMgPSBXVEZNb3ZlKG1fZ3JhcGgubV9zd2l0Y2hKdW1wVGFibGVzKTsKICAg
ICB9CiAKLSAgICBCaXRWZWN0b3IgdXNlZEp1bXBUYWJsZXM7CiAgICAgZm9yIChCYWc8U3dpdGNo
RGF0YT46Oml0ZXJhdG9yIGl0ZXIgPSBtX2dyYXBoLm1fc3dpdGNoRGF0YS5iZWdpbigpOyAhIWl0
ZXI7ICsraXRlcikgewogICAgICAgICBTd2l0Y2hEYXRhJiBkYXRhID0gKippdGVyOwogICAgICAg
ICBpZiAoIWRhdGEuZGlkVXNlSnVtcFRhYmxlKQpAQCAtMTkyLDI2ICsxOTQsMTkgQEAgdm9pZCBK
SVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgICAgICAKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZGF0YS5raW5kID09IFN3aXRjaEltbSB8fCBkYXRhLmtpbmQgPT0g
U3dpdGNoQ2hhcik7CiAgICAgICAgIAotICAgICAgICB1c2VkSnVtcFRhYmxlcy5zZXQoZGF0YS5z
d2l0Y2hUYWJsZUluZGV4KTsKLSAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1fY29k
ZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoZGF0YS5zd2l0Y2hUYWJsZUluZGV4KTsKLSAgICAgICAg
dGFibGUuY3RpRGVmYXVsdCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU1N3aXRjaFB0clRhZz4o
bV9ibG9ja0hlYWRzW2RhdGEuZmFsbFRocm91Z2guYmxvY2stPmluZGV4XSk7Ci0gICAgICAgIHRh
YmxlLmN0aU9mZnNldHMuZ3Jvdyh0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKSk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaiA9IHRhYmxlLmN0aU9mZnNldHMuc2l6ZSgpOyBqLS07KQotICAgICAg
ICAgICAgdGFibGUuY3RpT2Zmc2V0c1tqXSA9IHRhYmxlLmN0aURlZmF1bHQ7CisgICAgICAgIGNv
bnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9ncmFwaC51bmxp
bmtlZFN3aXRjaEp1bXBUYWJsZShkYXRhLnN3aXRjaFRhYmxlSW5kZXgpOworICAgICAgICBTaW1w
bGVKdW1wVGFibGUmIGxpbmtlZFRhYmxlID0gbV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShk
YXRhLnN3aXRjaFRhYmxlSW5kZXgpOworICAgICAgICBsaW5rZWRUYWJsZS5tX2N0aURlZmF1bHQg
PSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNTd2l0Y2hQdHJUYWc+KG1fYmxvY2tIZWFkc1tkYXRh
LmZhbGxUaHJvdWdoLmJsb2NrLT5pbmRleF0pOworICAgICAgICBSRUxFQVNFX0FTU0VSVChsaW5r
ZWRUYWJsZS5tX2N0aU9mZnNldHMuc2l6ZSgpID09IHVubGlua2VkVGFibGUubV9icmFuY2hPZmZz
ZXRzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGxpbmtlZFRhYmxlLm1fY3Rp
T2Zmc2V0cy5zaXplKCk7IGotLTspCisgICAgICAgICAgICBsaW5rZWRUYWJsZS5tX2N0aU9mZnNl
dHNbal0gPSBsaW5rZWRUYWJsZS5tX2N0aURlZmF1bHQ7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aiA9IGRhdGEuY2FzZXMuc2l6ZSgpOyBqLS07KSB7CiAgICAgICAgICAgICBTd2l0Y2hDYXNlJiBt
eUNhc2UgPSBkYXRhLmNhc2VzW2pdOwotICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tteUNh
c2UudmFsdWUuc3dpdGNoTG9va3VwVmFsdWUoZGF0YS5raW5kKSAtIHRhYmxlLm1pbl0gPQorICAg
ICAgICAgICAgbGlua2VkVGFibGUubV9jdGlPZmZzZXRzW215Q2FzZS52YWx1ZS5zd2l0Y2hMb29r
dXBWYWx1ZShkYXRhLmtpbmQpIC0gdW5saW5rZWRUYWJsZS5tX21pbl0gPQogICAgICAgICAgICAg
ICAgIGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU1N3aXRjaFB0clRhZz4obV9ibG9ja0hlYWRzW215
Q2FzZS50YXJnZXQuYmxvY2stPmluZGV4XSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9jb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygp
OyBpLS07KSB7Ci0gICAgICAgIGlmICh1c2VkSnVtcFRhYmxlcy5nZXQoaSkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIG1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFi
bGUoaSkuY2xlYXIoKTsKLSAgICB9Ci0KICAgICAvLyBOT1RFOiB3ZSBjYW5ub3QgY2xlYXIgc3Ry
aW5nIHN3aXRjaCB0YWJsZXMgYmVjYXVzZSAoMSkgd2UncmUgcnVubmluZyBjb25jdXJyZW50bHkK
ICAgICAvLyBhbmQgd2UgY2Fubm90IGRlcmVmIFN0cmluZ0ltcGwncyBhbmQgKDIpIGl0IHdvdWxk
IGJlIHdlaXJkIHRvIGRlcmVmIHRob3NlCiAgICAgLy8gU3RyaW5nSW1wbCdzIHNpbmNlIHdlIHJl
ZmVyIHRvIHRoZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAppbmRleCBjZDEzNzEyYTQ1M2Y1ZjUyMjU1NTY5NGQxNmMzOWVhNDA0YzI0ZWI3Li5lMjFhMzVi
NWZmOWIwODNlODY0NGRmNTA1MzllNWMxNGVkMTQzMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTI2OTAsMjAgKzI2OTAsMjAgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN0ckNhdDMsIEpTU3RyaW5nKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmoKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5n
KGdsb2JhbE9iamVjdCwgc3RyMSwgc3RyMiwgc3RyMykpOwogfQogCi1KU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZSwgY2hhciosIChW
TSogdm1Qb2ludGVyLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIHNpemVfdCB0YWJsZUlu
ZGV4KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25GaW5kU3dpdGNoSW1tVGFy
Z2V0Rm9yRG91YmxlLCBjaGFyKiwgKFZNKiB2bVBvaW50ZXIsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgc2l6ZV90IHRhYmxlSW5kZXgsIGludDMyX3QgbWluKSkKIHsKICAgICBWTSYgdm0g
PSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpOwotICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRj
aEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKKyAgICBjb25zdCBTaW1wbGVKdW1wVGFibGUmIGxpbmtl
ZFRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEFTU0VSVCh2
YWx1ZS5pc0RvdWJsZSgpKTsKICAgICBkb3VibGUgYXNEb3VibGUgPSB2YWx1ZS5hc0RvdWJsZSgp
OwogICAgIGludDMyX3QgYXNJbnQzMiA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGFzRG91YmxlKTsK
ICAgICBpZiAoYXNEb3VibGUgPT0gYXNJbnQzMikKLSAgICAgICAgcmV0dXJuIHRhYmxlLmN0aUZv
clZhbHVlKGFzSW50MzIpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwotICAgIHJldHVybiB0
YWJsZS5jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOworICAgICAgICByZXR1
cm4gbGlua2VkVGFibGUuY3RpRm9yVmFsdWUobWluLCBhc0ludDMyKS5leGVjdXRhYmxlQWRkcmVz
czxjaGFyKj4oKTsKKyAgICByZXR1cm4gbGlua2VkVGFibGUubV9jdGlEZWZhdWx0LmV4ZWN1dGFi
bGVBZGRyZXNzPGNoYXIqPigpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uU3dpdGNoU3RyaW5nLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNp
emVfdCB0YWJsZUluZGV4LCBKU1N0cmluZyogc3RyaW5nKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggMjIxYjRjNDI3N2FmYjhmMGRmMjk2YzU1MGJmNDNl
MjI0MDNhM2RmOS4uMTQyODI3MzlmNzczNWY2YjQyZTJkYzEzZDg1ZDE0ZjVlN2U5YzMwMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTI2OCw3ICsyNjgs
NyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1ha2VSb3BlMiwgSlNTdHJp
bmcqLCAoSlNHbG9iYWxPYmplY3QqLCBKU1N0cgogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25NYWtlUm9wZTMsIEpTU3RyaW5nKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcq
LCBKU1N0cmluZyosIEpTU3RyaW5nKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25TdHJDYXQyLCBKU1N0cmluZyosIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25T
dHJDYXQzLCBKU1N0cmluZyosIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZSwgY2hhciosIChWTSosIEVuY29k
ZWRKU1ZhbHVlLCBzaXplX3QgdGFibGVJbmRleCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25GaW5kU3dpdGNoSW1tVGFyZ2V0Rm9yRG91YmxlLCBjaGFyKiwgKFZNKiwgRW5j
b2RlZEpTVmFsdWUsIHNpemVfdCB0YWJsZUluZGV4LCBpbnQzMl90KSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaFN0cmluZywgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIHNpemVfdCB0YWJsZUluZGV4LCBKU1N0cmluZyopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uQ29tcGFyZVN0cmluZ0ltcGxMZXNzLCB1aW50cHRyX3QsIChTdHJpbmdJ
bXBsKiwgU3RyaW5nSW1wbCopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
Q29tcGFyZVN0cmluZ0ltcGxMZXNzRXEsIHVpbnRwdHJfdCwgKFN0cmluZ0ltcGwqLCBTdHJpbmdJ
bXBsKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAppbmRleCBlMmI0ZTllMTdhN2NjZDFkYjE3NTUzNGMxYjM3NTc1YzJlNTIzOTFmLi41ZjEz
OTNjZWU3MjAwZGY4NzcwYzgwMGNjYjI3OGVlNTNiMjYyNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTE1MDQsMTMgKzExNTA0
LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWRnZSBlZGdlKQog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXAoCiAgICAgU3dpdGNoRGF0YSog
ZGF0YSwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCkKIHsKLSAgICBTaW1wbGVKdW1wVGFi
bGUmIHRhYmxlID0gbV9qaXQuY29kZUJsb2NrKCktPnN3aXRjaEp1bXBUYWJsZShkYXRhLT5zd2l0
Y2hUYWJsZUluZGV4KTsKLSAgICB0YWJsZS5lbnN1cmVDVElUYWJsZSgpOwotICAgIG1faml0LnN1
YjMyKEltbTMyKHRhYmxlLm1pbiksIHZhbHVlKTsKKyAgICBjb25zdCBVbmxpbmtlZFNpbXBsZUp1
bXBUYWJsZSYgdW5saW5rZWRUYWJsZSA9IG1faml0LmdyYXBoKCkudW5saW5rZWRTd2l0Y2hKdW1w
VGFibGUoZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7CisgICAgU2ltcGxlSnVtcFRhYmxlJiBsaW5r
ZWRUYWJsZSA9IG1faml0LmdyYXBoKCkuc3dpdGNoSnVtcFRhYmxlKGRhdGEtPnN3aXRjaFRhYmxl
SW5kZXgpOworICAgIGxpbmtlZFRhYmxlLmVuc3VyZUNUSVRhYmxlKHVubGlua2VkVGFibGUpOwor
ICAgIG1faml0LnN1YjMyKEltbTMyKHVubGlua2VkVGFibGUubV9taW4pLCB2YWx1ZSk7CiAgICAg
YWRkQnJhbmNoKAotICAgICAgICBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6QWJvdmVPckVx
dWFsLCB2YWx1ZSwgSW1tMzIodGFibGUuY3RpT2Zmc2V0cy5zaXplKCkpKSwKKyAgICAgICAgbV9q
aXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgdmFsdWUsIEltbTMyKGxpbmtl
ZFRhYmxlLm1fY3RpT2Zmc2V0cy5zaXplKCkpKSwKICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2gu
YmxvY2spOwotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cih0YWJsZS5jdGlPZmZzZXRzLmJl
Z2luKCkpLCBzY3JhdGNoKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobGlua2VkVGFi
bGUubV9jdGlPZmZzZXRzLmJlZ2luKCkpLCBzY3JhdGNoKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpCYXNlSW5kZXgoc2NyYXRjaCwgdmFsdWUsIEpJVENvbXBpbGVyOjpTY2FsZVB0
ciksIHNjcmF0Y2gpOwogICAgIAogICAgIG1faml0LmZhckp1bXAoc2NyYXRjaCwgSlNTd2l0Y2hQ
dHJUYWcpOwpAQCAtMTE1NDAsOCArMTE1NDEsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN3aXRjaEltbShOb2RlKiBub2RlLCBTd2l0Y2hEYXRhKiBkYXRhKQogICAgICAgICBlbWl0U3dp
dGNoSW50SnVtcChkYXRhLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBzY3JhdGNoKTsKICAgICAg
ICAgbm90SW50MzIubGluaygmbV9qaXQpOwogICAgICAgICBhZGRCcmFuY2gobV9qaXQuYnJhbmNo
SWZOb3ROdW1iZXIodmFsdWVSZWdzLCBzY3JhdGNoKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2sp
OworCisgICAgICAgIGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxl
ID0gbV9qaXQuZ3JhcGgoKS51bmxpbmtlZFN3aXRjaEp1bXBUYWJsZShkYXRhLT5zd2l0Y2hUYWJs
ZUluZGV4KTsKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaCk7Ci0gICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZSwg
c2NyYXRjaCwgJnZtKCksIHZhbHVlUmVncywgZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZSwg
c2NyYXRjaCwgJnZtKCksIHZhbHVlUmVncywgZGF0YS0+c3dpdGNoVGFibGVJbmRleCwgdW5saW5r
ZWRUYWJsZS5tX21pbik7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKIAogICAg
ICAgICBtX2ppdC5mYXJKdW1wKHNjcmF0Y2gsIEpTU3dpdGNoUHRyVGFnKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IGM3NzYyMThkOGQ0M2U1YWFiMWUyNTZjNGQ1NmVj
NmY0M2RmMTNhMTUuLjFiMjU0M2U1MWIxZWNhNzMzYThiY2QyOTNkMWUxZWY0OTMwMjhiNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtNDUsOSArNDUsNiBAQCB2b2lk
IGxpbmsoU3RhdGUmIHN0YXRlKQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZ3JhcGgubV9j
b2RlQmxvY2s7CiAgICAgVk0mIHZtID0gZ3JhcGgubV92bTsKICAgICAKLSAgICAvLyBCMyB3aWxs
IGNyZWF0ZSBpdHMgb3duIGp1bXAgdGFibGVzIGFzIG5lZWRlZC4KLSAgICBjb2RlQmxvY2stPmNs
ZWFyU3dpdGNoSnVtcFRhYmxlcygpOwotCiAgICAgc3RhdGUuaml0Q29kZS0+Y29tbW9uLnJlcXVp
cmVkUmVnaXN0ZXJDb3VudEZvckV4aXQgPSBncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JF
eGl0KCk7CiAgICAgCiAgICAgaWYgKCFncmFwaC5tX3BsYW4uaW5saW5lQ2FsbEZyYW1lcygpLT5p
c0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggODhkM2ZkMmE1NjlhYTRk
YWRlZjE1NWUwZDFlZTllNzRhN2YzMmE5NC4uYjY2YTEzZjI5MmZjYWY1NzQ2ZjE5ODkyYTI4NDRm
MDkzNjc4ZmFhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNzE0LDYgKzcxNCwx
NCBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0
IGVmZm9ydCkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgaWYgKG1fY29kZUJsb2NrLT5u
dW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpIHx8IG1fY29kZUJsb2NrLT5udW1iZXJP
ZlVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpKSB7CisgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIobV9jb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgIGlmIChtX2NvZGVC
bG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKSkKKyAgICAgICAgICAgIG1f
Y29kZUJsb2NrLT5lbnN1cmVKSVREYXRhKGxvY2tlcikubV9zd2l0Y2hKdW1wVGFibGVzID0gRml4
ZWRWZWN0b3I8U2ltcGxlSnVtcFRhYmxlPihtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN3
aXRjaEp1bXBUYWJsZXMoKSk7CisgICAgICAgIGlmIChtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxp
bmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSkKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLT5l
bnN1cmVKSVREYXRhKGxvY2tlcikubV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gRml4ZWRWZWN0
b3I8U3RyaW5nSnVtcFRhYmxlPihtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3
aXRjaEp1bXBUYWJsZXMoKSk7CisgICAgfQorCiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1
bXBEaXNhc3NlbWJseSgpIHx8IChtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYgT3B0aW9u
czo6ZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVyKCkpKSkKICAgICAgICAgbV9kaXNhc3Nl
bWJsZXIgPSBtYWtlVW5pcXVlPEpJVERpc2Fzc2VtYmxlcj4obV9jb2RlQmxvY2spOwogICAgIGlm
IChVTkxJS0VMWShtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpKSB7CkBAIC04NTcsMzIgKzg2
NSwyOCBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIGlmIChwYXRjaEJ1ZmZl
ci5kaWRGYWlsVG9BbGxvY2F0ZSgpKQogICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25GYWlsZWQ7
CiAKLSAgICBpZiAobV9jb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1w
VGFibGVzKCkpIHsKLSAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2NvZGVCbG9j
ay0+bV9sb2NrKTsKLSAgICAgICAgbV9jb2RlQmxvY2stPmVuc3VyZUpJVERhdGEobG9ja2VyKS5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBGaXhlZFZlY3RvcjxTdHJpbmdKdW1wVGFibGU+KG1f
Y29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpKTsKLSAg
ICB9Ci0KICAgICAvLyBUcmFuc2xhdGUgdlBDIG9mZnNldHMgaW50byBhZGRyZXNzZXMgaW4gSklU
IGdlbmVyYXRlZCBjb2RlLCBmb3Igc3dpdGNoIHRhYmxlcy4KICAgICBmb3IgKGF1dG8mIHJlY29y
ZCA6IG1fc3dpdGNoZXMpIHsKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSByZWNv
cmQuYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKIAogICAgICAgICBpZiAocmVjb3JkLnR5cGUgIT0g
U3dpdGNoUmVjb3JkOjpTdHJpbmcpIHsKICAgICAgICAgICAgIEFTU0VSVChyZWNvcmQudHlwZSA9
PSBTd2l0Y2hSZWNvcmQ6OkltbWVkaWF0ZSB8fCByZWNvcmQudHlwZSA9PSBTd2l0Y2hSZWNvcmQ6
OkNoYXJhY3Rlcik7IAotICAgICAgICAgICAgQVNTRVJUKHJlY29yZC5qdW1wVGFibGUuc2ltcGxl
SnVtcFRhYmxlLT5icmFuY2hPZmZzZXRzLnNpemUoKSA9PSByZWNvcmQuanVtcFRhYmxlLnNpbXBs
ZUp1bXBUYWJsZS0+Y3RpT2Zmc2V0cy5zaXplKCkpOwogCi0gICAgICAgICAgICBhdXRvKiBzaW1w
bGVKdW1wVGFibGUgPSByZWNvcmQuanVtcFRhYmxlLnNpbXBsZUp1bXBUYWJsZTsKLSAgICAgICAg
ICAgIHNpbXBsZUp1bXBUYWJsZS0+Y3RpRGVmYXVsdCA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8
SlNTd2l0Y2hQdHJUYWc+KG1fbGFiZWxzW2J5dGVjb2RlT2Zmc2V0ICsgcmVjb3JkLmRlZmF1bHRP
ZmZzZXRdKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHRhYmxlSW5kZXggPSByZWNvcmQudGFibGVJ
bmRleDsKKyAgICAgICAgICAgIGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtl
ZFRhYmxlID0gbV9jb2RlQmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgp
OworICAgICAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiBsaW5rZWRUYWJsZSA9IG1fY29kZUJsb2Nr
LT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CisgICAgICAgICAgICBsaW5rZWRUYWJsZS5t
X2N0aURlZmF1bHQgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTU3dpdGNoUHRyVGFnPihtX2xh
YmVsc1tieXRlY29kZU9mZnNldCArIHJlY29yZC5kZWZhdWx0T2Zmc2V0XSk7CiAKLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZWNvcmQuanVtcFRhYmxlLnNpbXBsZUp1bXBU
YWJsZS0+YnJhbmNoT2Zmc2V0cy5zaXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIHVuc2ln
bmVkIG9mZnNldCA9IHJlY29yZC5qdW1wVGFibGUuc2ltcGxlSnVtcFRhYmxlLT5icmFuY2hPZmZz
ZXRzW2pdOwotICAgICAgICAgICAgICAgIHNpbXBsZUp1bXBUYWJsZS0+Y3RpT2Zmc2V0c1tqXSA9
IG9mZnNldAorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHVubGlua2VkVGFi
bGUubV9icmFuY2hPZmZzZXRzLnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgb2Zmc2V0ID0gdW5saW5rZWRUYWJsZS5tX2JyYW5jaE9mZnNldHNbal07CisgICAgICAgICAg
ICAgICAgbGlua2VkVGFibGUubV9jdGlPZmZzZXRzW2pdID0gb2Zmc2V0CiAgICAgICAgICAgICAg
ICAgICAgID8gcGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU1N3aXRjaFB0clRhZz4obV9sYWJlbHNb
Ynl0ZWNvZGVPZmZzZXQgKyBvZmZzZXRdKQotICAgICAgICAgICAgICAgICAgICA6IHNpbXBsZUp1
bXBUYWJsZS0+Y3RpRGVmYXVsdDsKKyAgICAgICAgICAgICAgICAgICAgOiBsaW5rZWRUYWJsZS5t
X2N0aURlZmF1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBBU1NFUlQocmVjb3JkLnR5cGUgPT0gU3dpdGNoUmVjb3JkOjpTdHJpbmcpOwogCi0gICAgICAg
ICAgICB1bnNpZ25lZCB0YWJsZUluZGV4ID0gcmVjb3JkLmp1bXBUYWJsZS50YWJsZUluZGV4Owor
ICAgICAgICAgICAgdW5zaWduZWQgdGFibGVJbmRleCA9IHJlY29yZC50YWJsZUluZGV4OwogICAg
ICAgICAgICAgY29uc3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIHVubGlua2VkVGFibGUgPSBt
X2NvZGVCbG9jay0+dW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CiAg
ICAgICAgICAgICBTdHJpbmdKdW1wVGFibGUmIGxpbmtlZFRhYmxlID0gbV9jb2RlQmxvY2stPnN0
cmluZ1N3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKICAgICAgICAgICAgIGxpbmtlZFRhYmxl
Lm1fY3RpRGVmYXVsdCA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNTd2l0Y2hQdHJUYWc+KG1f
bGFiZWxzW2J5dGVjb2RlT2Zmc2V0ICsgcmVjb3JkLmRlZmF1bHRPZmZzZXRdKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCmluZGV4IDIxZDJhNmM3ZjcwY2E2ZTE2ZjFiZDlmZjdkY2YzOGE2M2FjMjkz
OWUuLjcxMDQwMWQ5YjU2ODQ3MzZhNzk1YzFjYzRlMWVhZjIyYmZkNDViZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaApAQCAtMTI2LDI4ICsxMjYsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgVHlwZSB0eXBlOwogCi0gICAgICAgIHVuaW9uIHsKLSAgICAgICAgICAgIFNpbXBsZUp1
bXBUYWJsZSogc2ltcGxlSnVtcFRhYmxlOwotICAgICAgICAgICAgdW5zaWduZWQgdGFibGVJbmRl
eDsKLSAgICAgICAgfSBqdW1wVGFibGU7Ci0KICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4OwogICAgICAgICB1bnNpZ25lZCBkZWZhdWx0T2Zmc2V0OwotCi0gICAgICAgIFN3aXRj
aFJlY29yZChTaW1wbGVKdW1wVGFibGUqIGp1bXBUYWJsZSwgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4LCB1bnNpZ25lZCBkZWZhdWx0T2Zmc2V0LCBUeXBlIHR5cGUpCi0gICAgICAgICAgICA6
IHR5cGUodHlwZSkKLSAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQot
ICAgICAgICAgICAgLCBkZWZhdWx0T2Zmc2V0KGRlZmF1bHRPZmZzZXQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHRoaXMtPmp1bXBUYWJsZS5zaW1wbGVKdW1wVGFibGUgPSBqdW1wVGFibGU7Ci0g
ICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgdGFibGVJbmRleDsKIAogICAgICAgICBTd2l0Y2hS
ZWNvcmQodW5zaWduZWQgdGFibGVJbmRleCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCB1
bnNpZ25lZCBkZWZhdWx0T2Zmc2V0LCBUeXBlIHR5cGUpCiAgICAgICAgICAgICA6IHR5cGUodHlw
ZSkKICAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQogICAgICAgICAg
ICAgLCBkZWZhdWx0T2Zmc2V0KGRlZmF1bHRPZmZzZXQpCisgICAgICAgICAgICAsIHRhYmxlSW5k
ZXgodGFibGVJbmRleCkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy0+anVtcFRhYmxlLnRh
YmxlSW5kZXggPSB0YWJsZUluZGV4OwogICAgICAgICB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggMTAyNTY1NTA4OWRkODM5OTM1ZmM5ZjVj
YTBhY2IyNGM5ZTZmMzMxNC4uODMyYjlhYjhjZDVmNDFlMTFkYjQ3ZTM5YmVkZTFmYWI1MWZjNzU3
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC05MDAsMTIg
KzkwMCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfaW1tKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIHNjcnV0aW5lZSA9IGJ5
dGVjb2RlLm1fc2NydXRpbmVlOwogCiAgICAgLy8gY3JlYXRlIGp1bXAgdGFibGUgZm9yIHN3aXRj
aCBkZXN0aW5hdGlvbnMsIHRyYWNrIHRoaXMgc3dpdGNoIHN0YXRlbWVudC4KLSAgICBTaW1wbGVK
dW1wVGFibGUqIGp1bXBUYWJsZSA9ICZtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxl
SW5kZXgpOwotICAgIG1fc3dpdGNoZXMuYXBwZW5kKFN3aXRjaFJlY29yZChqdW1wVGFibGUsIG1f
Ynl0ZWNvZGVJbmRleCwgZGVmYXVsdE9mZnNldCwgU3dpdGNoUmVjb3JkOjpJbW1lZGlhdGUpKTsK
LSAgICBqdW1wVGFibGUtPmVuc3VyZUNUSVRhYmxlKCk7CisgICAgY29uc3QgVW5saW5rZWRTaW1w
bGVKdW1wVGFibGUmIHVubGlua2VkVGFibGUgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRTd2l0Y2hK
dW1wVGFibGUodGFibGVJbmRleCk7CisgICAgU2ltcGxlSnVtcFRhYmxlJiBsaW5rZWRUYWJsZSA9
IG1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CisgICAgbV9zd2l0Y2hl
cy5hcHBlbmQoU3dpdGNoUmVjb3JkKHRhYmxlSW5kZXgsIG1fYnl0ZWNvZGVJbmRleCwgZGVmYXVs
dE9mZnNldCwgU3dpdGNoUmVjb3JkOjpJbW1lZGlhdGUpKTsKKyAgICBsaW5rZWRUYWJsZS5lbnN1
cmVDVElUYWJsZSh1bmxpbmtlZFRhYmxlKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
c2NydXRpbmVlLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hJbW1X
aXRoVW5rbm93bktleVR5cGUsIFRydXN0ZWRJbW1QdHIoJnZtKCkpLCByZWdUMCwgdGFibGVJbmRl
eCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93bktleVR5
cGUsIFRydXN0ZWRJbW1QdHIoJnZtKCkpLCByZWdUMCwgdGFibGVJbmRleCwgdW5saW5rZWRUYWJs
ZS5tX21pbik7CiAgICAgZmFySnVtcChyZXR1cm5WYWx1ZUdQUiwgSlNTd2l0Y2hQdHJUYWcpOwog
fQogCkBAIC05MTcsMTIgKzkxOCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfY2hhcihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3Rl
ciBzY3J1dGluZWUgPSBieXRlY29kZS5tX3NjcnV0aW5lZTsKIAogICAgIC8vIGNyZWF0ZSBqdW1w
IHRhYmxlIGZvciBzd2l0Y2ggZGVzdGluYXRpb25zLCB0cmFjayB0aGlzIHN3aXRjaCBzdGF0ZW1l
bnQuCi0gICAgU2ltcGxlSnVtcFRhYmxlKiBqdW1wVGFibGUgPSAmbV9jb2RlQmxvY2stPnN3aXRj
aEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKLSAgICBtX3N3aXRjaGVzLmFwcGVuZChTd2l0Y2hSZWNv
cmQoanVtcFRhYmxlLCBtX2J5dGVjb2RlSW5kZXgsIGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29y
ZDo6Q2hhcmFjdGVyKSk7Ci0gICAganVtcFRhYmxlLT5lbnN1cmVDVElUYWJsZSgpOworICAgIGNv
bnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9jb2RlQmxvY2st
PnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgIFNpbXBsZUp1bXBUYWJs
ZSYgbGlua2VkVGFibGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgp
OworICAgIG1fc3dpdGNoZXMuYXBwZW5kKFN3aXRjaFJlY29yZCh0YWJsZUluZGV4LCBtX2J5dGVj
b2RlSW5kZXgsIGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29yZDo6Q2hhcmFjdGVyKSk7CisgICAg
bGlua2VkVGFibGUuZW5zdXJlQ1RJVGFibGUodW5saW5rZWRUYWJsZSk7CiAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHNjcnV0aW5lZSwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgdGFibGVJbmRleCk7CisgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCB0YWJsZUluZGV4LCB1bmxpbmtl
ZFRhYmxlLm1fbWluKTsKICAgICBmYXJKdW1wKHJldHVyblZhbHVlR1BSLCBKU1N3aXRjaFB0clRh
Zyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAppbmRleCBlZGEyNjNlNDRjNWZjOTEyMWNhODJjZGMzMmIwZjVlNWQ5OGYxNjg3Li5hYmYxN2Iz
ZmEzMDU1ZmNiZGY2OTFjNDJkNjc4MjUyZTdjNDM2OWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC05OTQsMTIgKzk5NCwxMyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9zd2l0Y2hfaW1tKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIHNjcnV0aW5lZSA9IGJ5dGVjb2RlLm1fc2NydXRp
bmVlOwogCiAgICAgLy8gY3JlYXRlIGp1bXAgdGFibGUgZm9yIHN3aXRjaCBkZXN0aW5hdGlvbnMs
IHRyYWNrIHRoaXMgc3dpdGNoIHN0YXRlbWVudC4KLSAgICBTaW1wbGVKdW1wVGFibGUqIGp1bXBU
YWJsZSA9ICZtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwotICAgIG1f
c3dpdGNoZXMuYXBwZW5kKFN3aXRjaFJlY29yZChqdW1wVGFibGUsIG1fYnl0ZWNvZGVJbmRleCwg
ZGVmYXVsdE9mZnNldCwgU3dpdGNoUmVjb3JkOjpJbW1lZGlhdGUpKTsKLSAgICBqdW1wVGFibGUt
PmVuc3VyZUNUSVRhYmxlKCk7CisgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVu
bGlua2VkVGFibGUgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUodGFibGVJ
bmRleCk7CisgICAgU2ltcGxlSnVtcFRhYmxlJiBsaW5rZWRUYWJsZSA9IG1fY29kZUJsb2NrLT5z
d2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CisgICAgbV9zd2l0Y2hlcy5hcHBlbmQoU3dpdGNo
UmVjb3JkKHRhYmxlSW5kZXgsIG1fYnl0ZWNvZGVJbmRleCwgZGVmYXVsdE9mZnNldCwgU3dpdGNo
UmVjb3JkOjpJbW1lZGlhdGUpKTsKKyAgICBsaW5rZWRUYWJsZS5lbnN1cmVDVElUYWJsZSh1bmxp
bmtlZFRhYmxlKTsKIAogICAgIGVtaXRMb2FkKHNjcnV0aW5lZSwgcmVnVDEsIHJlZ1QwKTsKLSAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZSwgVHJ1
c3RlZEltbVB0cigmdm0oKSksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHRhYmxlSW5kZXgp
OworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlUeXBl
LCBUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgdGFibGVJ
bmRleCwgdW5saW5rZWRUYWJsZS5tX21pbik7CiAgICAgZmFySnVtcChyZXR1cm5WYWx1ZUdQUiwg
Tm9QdHJUYWcpOwogfQogCkBAIC0xMDExLDEyICsxMDEyLDEzIEBAIHZvaWQgSklUOjplbWl0X29w
X3N3aXRjaF9jaGFyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
VmlydHVhbFJlZ2lzdGVyIHNjcnV0aW5lZSA9IGJ5dGVjb2RlLm1fc2NydXRpbmVlOwogCiAgICAg
Ly8gY3JlYXRlIGp1bXAgdGFibGUgZm9yIHN3aXRjaCBkZXN0aW5hdGlvbnMsIHRyYWNrIHRoaXMg
c3dpdGNoIHN0YXRlbWVudC4KLSAgICBTaW1wbGVKdW1wVGFibGUqIGp1bXBUYWJsZSA9ICZtX2Nv
ZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwotICAgIG1fc3dpdGNoZXMuYXBw
ZW5kKFN3aXRjaFJlY29yZChqdW1wVGFibGUsIG1fYnl0ZWNvZGVJbmRleCwgZGVmYXVsdE9mZnNl
dCwgU3dpdGNoUmVjb3JkOjpDaGFyYWN0ZXIpKTsKLSAgICBqdW1wVGFibGUtPmVuc3VyZUNUSVRh
YmxlKCk7CisgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2VkVGFibGUg
PSBtX2NvZGVCbG9jay0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CisgICAg
U2ltcGxlSnVtcFRhYmxlJiBsaW5rZWRUYWJsZSA9IG1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFi
bGUodGFibGVJbmRleCk7CisgICAgbV9zd2l0Y2hlcy5hcHBlbmQoU3dpdGNoUmVjb3JkKHRhYmxl
SW5kZXgsIG1fYnl0ZWNvZGVJbmRleCwgZGVmYXVsdE9mZnNldCwgU3dpdGNoUmVjb3JkOjpDaGFy
YWN0ZXIpKTsKKyAgICBsaW5rZWRUYWJsZS5lbnN1cmVDVElUYWJsZSh1bmxpbmtlZFRhYmxlKTsK
IAogICAgIGVtaXRMb2FkKHNjcnV0aW5lZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUsIG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgdGFibGVJbmRleCk7Cisg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlLCBt
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHRh
YmxlSW5kZXgsIHVubGlua2VkVGFibGUubV9taW4pOwogICAgIGZhckp1bXAocmV0dXJuVmFsdWVH
UFIsIE5vUHRyVGFnKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKaW5kZXggYjI1MDBmMGU2MjA5OGNiNmJlZWNiYTdjNWJmMzNjNzAxOWY1YjQwMi4u
N2UyMzQ3MDMwY2M4ZGI3ZTUxZGMzZjdmYWRjNDE5MjU2ZGJmYmUzZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yNzg5LDcgKzI3ODksNyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIENhbGxG
cmFtZSosIChKU0dsb2JhbE9iamVjdAogICAgIHJldHVybiBuZXdDYWxsRnJhbWU7CiB9CiAKLUpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlU
eXBlLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRLZXksIHNpemVfdCB0YWJsZUluZGV4KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRLZXksIHNpemVfdCB0
YWJsZUluZGV4LCBpbnQzMl90IG1pbikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTI3OTksMTUgKzI3OTksMTYgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUsIGNoYXIqLCAoSlNHbG9iYWwKICAgICBKU1Zh
bHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAKLSAgICBTaW1wbGVKdW1wVGFibGUm
IGp1bXBUYWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwotICAg
IHZvaWQqIHJlc3VsdCA9IGp1bXBUYWJsZS5jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRyZXNzKCk7
CisgICAgY29uc3QgU2ltcGxlSnVtcFRhYmxlJiBsaW5rZWRUYWJsZSA9IGNvZGVCbG9jay0+c3dp
dGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgIEFTU0VSVChjb2RlQmxvY2stPnVubGlua2Vk
U3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpLm1fbWluID09IG1pbik7CisgICAgdm9pZCogcmVz
dWx0ID0gbGlua2VkVGFibGUubV9jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAKICAg
ICBpZiAoa2V5LmlzU3RyaW5nKCkpIHsKICAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3Ry
aW5nKGtleSk7CiAgICAgICAgIGlmIChzdHJpbmctPmxlbmd0aCgpID09IDEpIHsKICAgICAgICAg
ICAgIFN0cmluZyB2YWx1ZSA9IHN0cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBqdW1wVGFibGUuY3RpRm9yVmFsdWUodmFsdWVbMF0pLmV4ZWN1dGFibGVBZGRy
ZXNzKCk7CisgICAgICAgICAgICByZXN1bHQgPSBsaW5rZWRUYWJsZS5jdGlGb3JWYWx1ZShtaW4s
IHZhbHVlWzBdKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0y
ODE1LDcgKzI4MTYsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNo
Q2hhcldpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihyZXN1bHQpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKFZNKiB2bVBv
aW50ZXIsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRLZXksIHNpemVfdCB0YWJsZUluZGV4KSkKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93bktleVR5
cGUsIGNoYXIqLCAoVk0qIHZtUG9pbnRlciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEtleSwgc2l6
ZV90IHRhYmxlSW5kZXgsIGludDMyX3QgbWluKSkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVy
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAg
LTI4MjMsMTQgKzI4MjQsMTUgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3
aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChWTSogdm1Qb2kKICAgICBKU1ZhbHVl
IGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAKLSAgICBTaW1wbGVKdW1wVGFibGUmIGp1
bXBUYWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgIGNv
bnN0IFNpbXBsZUp1bXBUYWJsZSYgbGlua2VkVGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBU
YWJsZSh0YWJsZUluZGV4KTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT51bmxpbmtlZFN3aXRjaEp1
bXBUYWJsZSh0YWJsZUluZGV4KS5tX21pbiA9PSBtaW4pOwogICAgIHZvaWQqIHJlc3VsdDsKICAg
ICBpZiAoa2V5LmlzSW50MzIoKSkKLSAgICAgICAgcmVzdWx0ID0ganVtcFRhYmxlLmN0aUZvclZh
bHVlKGtleS5hc0ludDMyKCkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIHJlc3VsdCA9
IGxpbmtlZFRhYmxlLmN0aUZvclZhbHVlKG1pbiwga2V5LmFzSW50MzIoKSkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKICAgICBlbHNlIGlmIChrZXkuaXNEb3VibGUoKSAmJiBrZXkuYXNEb3VibGUoKSA9
PSBzdGF0aWNfY2FzdDxpbnQzMl90PihrZXkuYXNEb3VibGUoKSkpCi0gICAgICAgIHJlc3VsdCA9
IGp1bXBUYWJsZS5jdGlGb3JWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90PihrZXkuYXNEb3VibGUo
KSkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIHJlc3VsdCA9IGxpbmtlZFRhYmxlLmN0
aUZvclZhbHVlKG1pbiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oa2V5LmFzRG91YmxlKCkpKS5leGVj
dXRhYmxlQWRkcmVzcygpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganVtcFRhYmxlLmN0
aURlZmF1bHQuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgcmVzdWx0ID0gbGlua2VkVGFi
bGUubV9jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgYXNzZXJ0SXNUYWdnZWRX
aXRoPEpTU3dpdGNoUHRyVGFnPihyZXN1bHQpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNoYXIqPihyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAppbmRleCBjODYxMTBhMTk5NjM2MTJjYzFlOTZjNjkzOWE5ZTI0ZmJlOTAxN2VmLi45N2Ew
OTBkZTI4N2Q2NmNkMzE5ZDQyYTc3YWU0NWI0MTI4ZTA2ZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjgwLDggKzI4MCw4IEBAIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkLCBFbmNvZGVkSlNWYWx1
ZSwgKEpTR2xvYmFsCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZh
dGVOYW1lQnlJZE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7
CiAKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtu
b3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGtleSwg
c2l6ZV90IHRhYmxlSW5kZXgpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
U3dpdGNoSW1tV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKFZNKiwgRW5jb2RlZEpTVmFsdWUg
a2V5LCBzaXplX3QgdGFibGVJbmRleCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCwgaW50MzJfdCBtaW4pKTsK
K0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25L
ZXlUeXBlLCBjaGFyKiwgKFZNKiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRl
eCwgaW50MzJfdCBtaW4pKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dp
dGNoU3RyaW5nV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkpOwogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25HZXRGcm9tU2NvcGUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBJbnN0cnVjdGlvbiogYnl0ZWNvZGVQQykpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25QdXRUb1Njb3BlLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBj
b25zdCBJbnN0cnVjdGlvbiogYnl0ZWNvZGVQQykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNzhiNmY2NmZjYTA5YTE1NjQ0NTk1ZGUy
NTc1Mzc3ODFjN2UxNjFhNS4uYjA0ZjBkY2VjMTE0OWY0ZGZlZWJlNDEwNWQ1NWZmYjE4YWIwMDBl
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CkBAIC0xNTk3LDcgKzE1OTcsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3dp
dGNoX2ltbSkKICAgICBpbnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFs
dWUpOwogICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gSlVNUF9PRkZTRVQoYnl0ZWNvZGUubV9kZWZh
dWx0T2Zmc2V0KTsKICAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpCi0gICAgICAgIEpVTVBfVE8o
Y29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KS5vZmZzZXRG
b3JWYWx1ZShpbnRWYWx1ZSwgZGVmYXVsdE9mZnNldCkpOworICAgICAgICBKVU1QX1RPKGNvZGVC
bG9jay0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KS5vZmZz
ZXRGb3JWYWx1ZShpbnRWYWx1ZSwgZGVmYXVsdE9mZnNldCkpOwogICAgIGVsc2UKICAgICAgICAg
SlVNUF9UTyhkZWZhdWx0T2Zmc2V0KTsKICAgICBMTElOVF9FTkQoKTsKQEAgLTE2MTMsNyArMTYx
Myw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfY2hhcikKICAgICBB
U1NFUlQoc3RyaW5nLT5sZW5ndGgoKSA9PSAxKTsKICAgICBpbnQgZGVmYXVsdE9mZnNldCA9IEpV
TVBfT0ZGU0VUKGJ5dGVjb2RlLm1fZGVmYXVsdE9mZnNldCk7CiAgICAgU3RyaW5nSW1wbCogaW1w
bCA9IHN0cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KS5pbXBsKCk7Ci0gICAgSlVNUF9UTyhjb2Rl
QmxvY2stPnN3aXRjaEp1bXBUYWJsZShieXRlY29kZS5tX3RhYmxlSW5kZXgpLm9mZnNldEZvclZh
bHVlKCgqaW1wbClbMF0sIGRlZmF1bHRPZmZzZXQpKTsKKyAgICBKVU1QX1RPKGNvZGVCbG9jay0+
dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KS5vZmZzZXRGb3JW
YWx1ZSgoKmltcGwpWzBdLCBkZWZhdWx0T2Zmc2V0KSk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20KaW5kZXggNmY1YTRkMThiN2ZmNjNhZThlMzc5OTdlOGFiYzhjZjEwYmZh
Mjg4My4uZWMxYTk1OWFlNTY4MzUyNDRlNzc2MTZlZWNiYzIxOTU2Mjg5NjlmZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KQEAgLTIwMzMsMTMgKzIwMzMsMTQgQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRj
aF9pbW0sIE9wU3dpdGNoSW1tLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAg
ICBnZXR1KHNpemUsIE9wU3dpdGNoSW1tLCBtX3RhYmxlSW5kZXgsIHQzKQogICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQxLCB0MCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgotICAgIG11bGkg
c2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKLSAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRh
OjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGxv
YWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDJdLCB0MgorICAgIGxvYWRwIFVubGlua2Vk
Q29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBVbmxpbmtlZFNp
bXBsZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6
Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJl
ZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJpbmVx
IHQxLCBJbnQzMlRhZywgLm9wU3dpdGNoSW1tTm90SW50Ci0gICAgc3ViaSBTaW1wbGVKdW1wVGFi
bGU6Om1pblt0Ml0sIHQwCi0gICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRz
ICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwg
dDIKKyAgICBzdWJpIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlOjptX21pblt0Ml0sIHQwCisgICAg
bG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fYnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVj
dG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCiAgICAgYnRw
eiB0MiwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKICAgICBiaWFlcSB0MCwgUmVmQ291bnRlZEFy
cmF5U3RvcmFnZU5vbk51bGxTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gK
ICAgICBsb2FkaSBbdDIsIHQwLCA0XSwgdDEKQEAgLTIwNjIsOSArMjA2MywxMCBAQCBsbGludE9w
V2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoQ2hhciwgbWFjcm8gKHNpemUsIGdldCwg
anVtcCwgZGlzcGF0Y2gpCiAgICAgZ2V0dShzaXplLCBPcFN3aXRjaENoYXIsIG1fdGFibGVJbmRl
eCwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDEsIHQwKQogICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0
YVt0Ml0sIHQyCi0gICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MwotICAgIGxvYWRw
IENvZGVCbG9jazo6UmFyZURhdGE6Om1fc3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9m
ZnNldFt0Ml0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3VubGlua2VkQ29kZVt0Ml0sIHQy
CisgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11
bGkgc2l6ZW9mIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlLCB0MworICAgIGxvYWRwIFVubGlua2Vk
Q29kZUJsb2NrOjpSYXJlRGF0YTo6bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMgKyBGaXhlZFZl
Y3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgogICAgIGFk
ZHAgdDMsIHQyCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3Vn
aAogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hh
ckZhbGxUaHJvdWdoCkBAIC0yMDc4LDggKzIwODAsOCBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dp
dGNoX2NoYXIsIE9wU3dpdGNoQ2hhciwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gp
CiAub3BTd2l0Y2hDaGFyOEJpdDoKICAgICBsb2FkYiBbdDBdLCB0MAogLm9wU3dpdGNoQ2hhclJl
YWR5OgotICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAotICAgIGxvYWRwIFNp
bXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBS
ZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgc3ViaSBVbmxpbmtlZFNpbXBsZUp1
bXBUYWJsZTo6bV9taW5bdDJdLCB0MAorICAgIGxvYWRwIFVubGlua2VkU2ltcGxlSnVtcFRhYmxl
OjptX2JyYW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFy
cmF5OjptX2RhdGFbdDJdLCB0MgogICAgIGJ0cHogdDIsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3Vn
aAogICAgIGJpYWVxIHQwLCBSZWZDb3VudGVkQXJyYXlTdG9yYWdlTm9uTnVsbFNpemVPZmZzZXRb
dDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBsb2FkaSBbdDIsIHQwLCA0XSwgdDEK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KaW5kZXggNTBlMmMzODU2OWZkMzRjNTQ2MDkwMmYwOWM2NDMyODU4N2RiYWM3Mi4u
MTRhZDJhNDk3ZmIwYTdhZjkzN2IyNzNhNzBkMGE5ZmJhZTNiZDJhNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAg
LTIxNzgsMTMgKzIxNzgsMTQgQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9pbW0sIE9wU3dp
dGNoSW1tLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBnZXR1KHNpemUs
IE9wU3dpdGNoSW1tLCBtX3RhYmxlSW5kZXgsIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDIsIHQxKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAgIGxvYWRw
IENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCi0gICAgbXVsaSBzaXplb2YgU2ltcGxlSnVt
cFRhYmxlLCB0MwotICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fc3dpdGNoSnVtcFRh
YmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X3VubGlua2VkQ29kZVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6Om1fcmFy
ZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlLCB0
MworICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV91bmxpbmtlZFN3aXRj
aEp1bXBUYWJsZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5Ojpt
X2RhdGFbdDJdLCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAgYnFiIHQxLCBudW1iZXJUYWcsIC5v
cFN3aXRjaEltbU5vdEludAotICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MQot
ICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVjdG9yOjpt
X3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgc3ViaSBVbmxp
bmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9taW5bdDJdLCB0MQorICAgIGxvYWRwIFVubGlua2VkU2lt
cGxlSnVtcFRhYmxlOjptX2JyYW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsg
UmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgogICAgIGJ0cHogdDIsIC5vcFN3aXRjaElt
bUZhbGxUaHJvdWdoCiAgICAgYmlhZXEgdDEsIFJlZkNvdW50ZWRBcnJheVN0b3JhZ2VOb25OdWxs
U2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCiAgICAgbG9hZGlzIFt0Miwg
dDEsIDRdLCB0MQpAQCAtMjIwNyw5ICsyMjA4LDEwIEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0
Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkK
ICAgICBnZXR1KHNpemUsIE9wU3dpdGNoQ2hhciwgbV90YWJsZUluZGV4LCB0MykKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MSkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgotICAgIG11bGkg
c2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKLSAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRh
OjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGxv
YWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDJdLCB0MgorICAgIGxvYWRwIFVubGlua2Vk
Q29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBVbmxpbmtlZFNp
bXBsZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6
Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJl
ZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJ0cW56
IHQxLCBub3RDZWxsTWFzaywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCiAgICAgYmJuZXEgSlND
ZWxsOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKQEAg
LTIyMjMsOCArMjIyNSw4IEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfY2hhciwgT3BTd2l0
Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKIC5vcFN3aXRjaENoYXI4
Qml0OgogICAgIGxvYWRiIFt0MV0sIHQwCiAub3BTd2l0Y2hDaGFyUmVhZHk6Ci0gICAgc3ViaSBT
aW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCi0gICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpi
cmFuY2hPZmZzZXRzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6
bV9kYXRhW3QyXSwgdDIKKyAgICBzdWJpIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlOjptX21pblt0
Ml0sIHQwCisgICAgbG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fYnJhbmNoT2Zmc2V0
cyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0s
IHQyCiAgICAgYnRweiB0MiwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCiAgICAgYmlhZXEgdDAs
IFJlZkNvdW50ZWRBcnJheVN0b3JhZ2VOb25OdWxsU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENo
YXJGYWxsVGhyb3VnaAogICAgIGxvYWRpcyBbdDIsIHQwLCA0XSwgdDEKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA0M2ZkNDQ3NDRjMjBiZDAz
NTEzNTkyNjUyMTU3MmQzMmYxMDJlNGYxLi4zYjI3NzU1MTgxODk3ZjZjYzdkYjI2NTI4YmE4Mjk0
Mjk2YmNiMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwCkBAIC04NjUsMTQgKzg2NSwxNCBAQCBjbGFzcyBDYWNoZWRTaW1wbGVKdW1wVGFibGUg
OiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkU2ltcGxlSnVtcFRhYmxlPiB7CiBwdWJsaWM6
CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVW5saW5rZWRTaW1wbGVK
dW1wVGFibGUmIGp1bXBUYWJsZSkKICAgICB7Ci0gICAgICAgIG1fbWluID0ganVtcFRhYmxlLm1p
bjsKLSAgICAgICAgbV9icmFuY2hPZmZzZXRzLmVuY29kZShlbmNvZGVyLCBqdW1wVGFibGUuYnJh
bmNoT2Zmc2V0cyk7CisgICAgICAgIG1fbWluID0ganVtcFRhYmxlLm1fbWluOworICAgICAgICBt
X2JyYW5jaE9mZnNldHMuZW5jb2RlKGVuY29kZXIsIGp1bXBUYWJsZS5tX2JyYW5jaE9mZnNldHMp
OwogICAgIH0KIAogICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVubGlua2VkU2lt
cGxlSnVtcFRhYmxlJiBqdW1wVGFibGUpIGNvbnN0CiAgICAgewotICAgICAgICBqdW1wVGFibGUu
bWluID0gbV9taW47Ci0gICAgICAgIG1fYnJhbmNoT2Zmc2V0cy5kZWNvZGUoZGVjb2RlciwganVt
cFRhYmxlLmJyYW5jaE9mZnNldHMpOworICAgICAgICBqdW1wVGFibGUubV9taW4gPSBtX21pbjsK
KyAgICAgICAgbV9icmFuY2hPZmZzZXRzLmRlY29kZShkZWNvZGVyLCBqdW1wVGFibGUubV9icmFu
Y2hPZmZzZXRzKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05NTAsNyArOTUwLDcgQEAgY2xhc3Mg
Q2FjaGVkQ29kZUJsb2NrUmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkQ29k
ZUJsb2NrOjpSYXJlRGF0YT4KICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGEmIHJhcmVEYXRhKQogICAgIHsKICAgICAgICAg
bV9leGNlcHRpb25IYW5kbGVycy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9leGNlcHRpb25I
YW5kbGVycyk7Ci0gICAgICAgIG1fc3dpdGNoSnVtcFRhYmxlcy5lbmNvZGUoZW5jb2RlciwgcmFy
ZURhdGEubV9zd2l0Y2hKdW1wVGFibGVzKTsKKyAgICAgICAgbV91bmxpbmtlZFN3aXRjaEp1bXBU
YWJsZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVz
KTsKICAgICAgICAgbV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMuZW5jb2RlKGVuY29k
ZXIsIHJhcmVEYXRhLm1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKTsKICAgICAgICAg
bV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9l
eHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucyk7CiAgICAgICAgIG1fdHlwZVByb2ZpbGVySW5mb01h
cC5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV90eXBlUHJvZmlsZXJJbmZvTWFwKTsKQEAgLTk2
NSw3ICs5NjUsNyBAQCBjbGFzcyBDYWNoZWRDb2RlQmxvY2tSYXJlRGF0YSA6IHB1YmxpYyBDYWNo
ZWRPYmplY3Q8VW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhPgogICAgIHsKICAgICAgICAgVW5s
aW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhKiByYXJlRGF0YSA9IG5ldyBVbmxpbmtlZENvZGVCbG9j
azo6UmFyZURhdGEgeyB9OwogICAgICAgICBtX2V4Y2VwdGlvbkhhbmRsZXJzLmRlY29kZShkZWNv
ZGVyLCByYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycyk7Ci0gICAgICAgIG1fc3dpdGNoSnVt
cFRhYmxlcy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcyk7Cisg
ICAgICAgIG1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0
YS0+bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMpOwogICAgICAgICBtX3VubGlua2VkU3RyaW5n
U3dpdGNoSnVtcFRhYmxlcy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fdW5saW5rZWRTdHJp
bmdTd2l0Y2hKdW1wVGFibGVzKTsKICAgICAgICAgbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9u
cy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnMp
OwogICAgICAgICBtX3R5cGVQcm9maWxlckluZm9NYXAuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRh
LT5tX3R5cGVQcm9maWxlckluZm9NYXApOwpAQCAtOTc5LDcgKzk3OSw3IEBAIGNsYXNzIENhY2hl
ZENvZGVCbG9ja1JhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtlZENvZGVCbG9j
azo6UmFyZURhdGE+CiAKIHByaXZhdGU6CiAgICAgQ2FjaGVkVmVjdG9yPFVubGlua2VkSGFuZGxl
ckluZm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7Ci0gICAgQ2FjaGVkVmVjdG9yPENhY2hlZFNpbXBs
ZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOworICAgIENhY2hlZFZlY3RvcjxDYWNoZWRT
aW1wbGVKdW1wVGFibGU+IG1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzOwogICAgIENhY2hlZFZl
Y3RvcjxDYWNoZWRTdHJpbmdKdW1wVGFibGU+IG1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzOwogICAgIENhY2hlZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvOjpGYXRQb3NpdGlvbj4g
bV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9uczsKICAgICBDYWNoZWRIYXNoTWFwPHVuc2lnbmVk
LCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6OlR5cGVQcm9maWxlckV4cHJlc3Npb25SYW5n
ZT4gbV90eXBlUHJvZmlsZXJJbmZvTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRml4
ZWRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKaW5kZXggZTNmMGE5Mzg1
NDI3ZDI1OTk0M2E5ZTIzODU1ZGNmZmE3NTllOGMxOC4uMzI4Zjk4MTUxMGJmN2I2NGY3MzBmMWFi
YjhlZTExMDgzMzc2YzFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3Iu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCkBAIC03NSw2ICs3NSwxOCBAQCBj
bGFzcyBGaXhlZFZlY3RvciB7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKKyAgICB0
ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4K
KyAgICBleHBsaWNpdCBGaXhlZFZlY3RvcihWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlcj4mJiBvdGhlcikKKyAgICAgICAgOiBtX3N0b3JhZ2UoV1RGTW92ZShvdGhlcikp
CisgICAgeyB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlcj4KKyAgICBGaXhlZFZlY3RvciYgb3BlcmF0b3I9KFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYmIG90aGVyKQorICAgIHsKKyAgICAgICAg
bV9zdG9yYWdlID0gV1RGTW92ZShvdGhlcik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5zaXplKCk7IH0K
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UuaXNFbXB0eSgpOyB9
CiAgICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLmJ5dGVTaXpl
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oIGIvU291
cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKaW5kZXggNjdhZDc3NzZlNTg5Nzc0YWExZjRi
YWEwNDVkMmE3MTRjYjBiYWMwYi4uYjA5YTNmMzZhYTBlNzQ3Y2Q5MWMwZGUxMGI3MGY1MzdlOGEy
MzAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKKysrIGIv
U291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKQEAgLTExMiw2ICsxMTIsMjQgQEAgY2xh
c3MgUmVmQ291bnRlZEFycmF5IHsKICAgICAgICAgQVNTRVJUKEhlYWRlcjo6ZnJvbVBheWxvYWQo
ZGF0YSktPmxlbmd0aCA9PSBvdGhlci5zaXplKCkpOwogICAgICAgICBWZWN0b3JUeXBlT3BlcmF0
aW9uczxUPjo6dW5pbml0aWFsaXplZENvcHkob3RoZXIuYmVnaW4oKSwgb3RoZXIuZW5kKCksIGRh
dGEpOwogICAgIH0KKworICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgT3ZlcmZsb3dIYW5kbGVyPgorICAgIGV4cGxpY2l0IFJlZkNvdW50ZWRBcnJheShWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mJiBvdGhlcikKKyAgICB7CisgICAg
ICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiB2ZWN0b3IoV1RG
TW92ZShvdGhlcikpOworICAgICAgICBpZiAodmVjdG9yLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgUHRyVHJhaXRzOjpleGNoYW5nZShtX2RhdGEsIG51bGxwdHIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgVCogZGF0YSA9IChzdGF0aWNfY2FzdDxIZWFkZXIq
PihSZWZDb3VudGVkQXJyYXlNYWxsb2M6Om1hbGxvYyhIZWFkZXI6OnNpemUoKSArIHNpemVvZihU
KSAqIHZlY3Rvci5zaXplKCkpKSktPnBheWxvYWQoKTsKKyAgICAgICAgbV9kYXRhID0gZGF0YTsK
KyAgICAgICAgSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+cmVmQ291bnQgPSAxOworICAgICAg
ICBIZWFkZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5sZW5ndGggPSB2ZWN0b3Iuc2l6ZSgpOworICAg
ICAgICBBU1NFUlQoSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+bGVuZ3RoID09IHZlY3Rvci5z
aXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB2ZWN0b3Iu
c2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbmV3IChkYXRhICsgaW5kZXgpIFQoV1RGTW92
ZSh2ZWN0b3JbaW5kZXhdKSk7CisgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90
aGVyVHJhaXRzID0gUHRyVHJhaXRzPgogICAgIFJlZkNvdW50ZWRBcnJheSYgb3BlcmF0b3I9KGNv
bnN0IFJlZkNvdW50ZWRBcnJheTxULCBPdGhlclRyYWl0cz4mIG90aGVyKQpAQCAtMTQ4LDYgKzE2
NiwzMiBAQCBjbGFzcyBSZWZDb3VudGVkQXJyYXkgewogICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICAgfQogCisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVy
Zmxvd0hhbmRsZXI+CisgICAgUmVmQ291bnRlZEFycmF5JiBvcGVyYXRvcj0oVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIpCisgICAgeworICAgICAgICBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4gdmVjdG9yKFdURk1vdmUo
b3RoZXIpKTsKKyAgICAgICAgVCogb2xkRGF0YSA9IGRhdGEoKTsKKyAgICAgICAgaWYgKHZlY3Rv
ci5pc0VtcHR5KCkpCisgICAgICAgICAgICBQdHJUcmFpdHM6OmV4Y2hhbmdlKG1fZGF0YSwgbnVs
bHB0cik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgVCogZGF0YSA9IChzdGF0aWNfY2Fz
dDxIZWFkZXIqPihSZWZDb3VudGVkQXJyYXlNYWxsb2M6Om1hbGxvYyhIZWFkZXI6OnNpemUoKSAr
IHNpemVvZihUKSAqIHZlY3Rvci5zaXplKCkpKSktPnBheWxvYWQoKTsKKyAgICAgICAgICAgIG1f
ZGF0YSA9IGRhdGE7CisgICAgICAgICAgICBIZWFkZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5yZWZD
b3VudCA9IDE7CisgICAgICAgICAgICBIZWFkZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5sZW5ndGgg
PSB2ZWN0b3Iuc2l6ZSgpOworICAgICAgICAgICAgQVNTRVJUKEhlYWRlcjo6ZnJvbVBheWxvYWQo
ZGF0YSktPmxlbmd0aCA9PSB2ZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaW5kZXggPSAwOyBpbmRleCA8IHZlY3Rvci5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAg
ICAgICAgbmV3IChkYXRhICsgaW5kZXgpIFQoV1RGTW92ZSh2ZWN0b3JbaW5kZXhdKSk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCFvbGREYXRhKQorICAgICAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgICAgICBpZiAoLS1IZWFkZXI6OmZyb21QYXlsb2FkKG9sZERhdGEpLT5yZWZDb3VudCkKKyAg
ICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgVmVjdG9yVHlwZU9wZXJhdGlvbnM8VD46
OmRlc3RydWN0KG9sZERhdGEsIG9sZERhdGEgKyBIZWFkZXI6OmZyb21QYXlsb2FkKG9sZERhdGEp
LT5sZW5ndGgpOworCisgICAgICAgIFJlZkNvdW50ZWRBcnJheU1hbGxvYzo6ZnJlZShIZWFkZXI6
OmZyb21QYXlsb2FkKG9sZERhdGEpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKwog
ICAgIH5SZWZDb3VudGVkQXJyYXkoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2RhdGEpCg==
</data>
<flag name="commit-queue"
          id="445906"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425836</attachid>
            <date>2021-04-12 22:34:20 -0700</date>
            <delta_ts>2021-04-13 01:03:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224472-20210412223419.patch</filename>
            <type>text/plain</type>
            <size>72704</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MDI3ZTQ4MDIzYTZlMWNkYTczNGY0Yjg0ODRkNTQ4YmQzZGRiNTVkLi5mZGNmMzY5YjM4ZjQ2ODlj
MDU4OGMxMjUzNWY5YzdhYTU3NGQwYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAyMS0wNC0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERvIG5vdCBjb3B5IFNpbXBsZUp1bXBUYWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDcyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUR1bXBlci5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6ZHVtcFN3aXRjaEp1bXBUYWJsZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb246OnJ1bik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnN3aXRjaEp1bXBUYWJsZSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMgY29uc3QpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpudW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmNsZWFyU3dpdGNoSnVtcFRhYmxlcyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkU3dpdGNoSnVtcFRhYmxlRnJvbVByb2ZpbGVkQ29k
ZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9KdW1wVGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpTaW1wbGVKdW1wVGFibGU6Om9mZnNldEZvclZhbHVlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBieXRlY29kZS9KdW1wVGFibGUuaDoKKyAgICAgICAgKEpTQzo6U2ltcGxlSnVtcFRh
YmxlOjplbnN1cmVDVElUYWJsZSk6CisgICAgICAgIChKU0M6OlNpbXBsZUp1bXBUYWJsZTo6Y3Rp
Rm9yVmFsdWUgY29uc3QpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U2lt
cGxlSnVtcFRhYmxlOjpjbG9uZU5vbkpJVFBhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpTaW1wbGVKdW1wVGFibGU6OmN0aUZvclZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6U2ltcGxlSnVtcFRhYmxlOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkU2ltcGxlSnVtcFRhYmxlOjpvZmZz
ZXRGb3JWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkU2ltcGxlSnVtcFRhYmxl
OjphZGQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bnVtYmVyT2ZVbmxpbmtl
ZFN3aXRjaEp1bXBUYWJsZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnN3aXRjaEp1bXBUYWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAqIGJ5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpudW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcyBj
b25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjphZGRVbmxp
bmtlZFN3aXRjaEp1bXBUYWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yOjp1bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yOjpudW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6YWRkU3dpdGNo
SnVtcFRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3I6OnN3aXRjaEp1bXBUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmJlZ2luU3dpdGNoKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1bXBUYWJsZUZvclN3aXRjaCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbmRTd2l0Y2gpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJ
bmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KToKKyAgICAgICAgKiBkZmcvREZHR3Jh
cGguaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbnRKdW1w
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbSk6Cisg
ICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAg
ICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVXaXRob3V0TGlu
a2luZyk6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAoSlNDOjpTd2l0Y2hSZWNvcmQ6OlN3aXRjaFJlY29yZCk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hfY2hhcik6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hf
aW1tKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N3aXRjaF9jaGFyKToKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRTaW1wbGVKdW1wVGFi
bGU6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFNpbXBsZUp1bXBUYWJsZTo6ZGVjb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrUmFyZURhdGE6OmVuY29kZSk6
CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9ja1JhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgor
CiAyMDIxLTA0LTEyICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAg
ICAgICAgSW5zcGVjdG9yIGNvZGUgaXMgd3JvbmdseSBpbmNsdWRpbmcgc29tZSBwcml2YXRlIGhl
YWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggZTc0ZjRjNDgyOTFhOTBjNTQzNDM2N2ZlYWExZjQ2ZDA3MjUwN2U1OS4uMDM2
YTU5MGEwYTdmZjRkMDczMTBiMGY2ZTkwMDgwZWIwMzI4MjI2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAyMS0wNC0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtKU0NdIERvIG5vdCBjb3B5IFNpbXBsZUp1bXBUYWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIE1vdmUgY29uc3RydWN0b3IgLyBvcGVy
YXRvciBmb3IgRml4ZWRWZWN0b3IgLyBSZWZDb3VudGVkQXJyYXksIHRoaXMgaXMgbmVjZXNzYXJ5
IHRvIGtlZXAgYmFja2luZyBtZW1vcnkgcG9pbnRlciB0aGUgc2FtZSBhZnRlciB0aGUgbW92ZS4K
KyAgICAgICAgVGhlIGFib3ZlIHJlcXVpcmVtZW50IGlzIHVzZWQgd2hlbiBtb3ZpbmcgU2ltcGxl
SnVtcFRhYmxlIGFsbG9jYXRlZCBpbiBERkcuCisKKyAgICAgICAgKiB3dGYvRml4ZWRWZWN0b3Iu
aDoKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OkZpeGVkVmVjdG9yKToKKyAgICAgICAgKFdU
Rjo6Rml4ZWRWZWN0b3I6Om9wZXJhdG9yPSk6CisgICAgICAgICogd3RmL1JlZkNvdW50ZWRBcnJh
eS5oOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OlJlZkNvdW50ZWRBcnJheSk6Cisg
ICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6b3BlcmF0b3I9KToKKwogMjAyMS0wNC0xMiAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQmxvY2sgbG9hZGlu
ZyBmb3IgcG9ydCAxMDA4MApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUR1bXBlci5jcHAKaW5kZXggMmUyNWUwN2RmODE3NTcwZDQ1NjI5NTMyMTE1ZWRmNDIw
NmUxOGI2OC4uNGE4YzhmZGQ0Yjg4MGYzY2JmM2E0YTE5ZDY2ODU2YTM3MGYwN2NiOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBA
IC0xNzQsMTggKzE3NCwxOCBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
ZHVtcEV4Y2VwdGlvbkhhbmRsZXJzKCkKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgogdm9pZCBDb2Rl
QmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTd2l0Y2hKdW1wVGFibGVzKCkKIHsKLSAg
ICBpZiAodW5zaWduZWQgY291bnQgPSB0aGlzLT5ibG9jaygpLT5udW1iZXJPZlN3aXRjaEp1bXBU
YWJsZXMoKSkgeworICAgIGlmICh1bnNpZ25lZCBjb3VudCA9IHRoaXMtPmJsb2NrKCktPm51bWJl
ck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzKCkpIHsKICAgICAgICAgdGhpcy0+bV9vdXQucHJp
bnRmKCJTd2l0Y2ggSnVtcCBUYWJsZXM6XG4iKTsKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiAg
ICAgICAgIGRvIHsKICAgICAgICAgICAgIHRoaXMtPm1fb3V0LnByaW50ZigiICAlMWQgPSB7XG4i
LCBpKTsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN3aXRjaEp1bXBUYWJsZSA9IHRoaXMtPmJs
b2NrKCktPnN3aXRjaEp1bXBUYWJsZShpKTsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN3aXRj
aEp1bXBUYWJsZSA9IHRoaXMtPmJsb2NrKCktPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGkpOwog
ICAgICAgICAgICAgaW50IGVudHJ5ID0gMDsKLSAgICAgICAgICAgIGF1dG8gZW5kID0gc3dpdGNo
SnVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gaXRl
ciA9IHN3aXRjaEp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyAr
K2l0ZXIsICsrZW50cnkpIHsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gc3dpdGNoSnVtcFRhYmxl
Lm1fYnJhbmNoT2Zmc2V0cy5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byBpdGVyID0gc3dp
dGNoSnVtcFRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVy
LCArK2VudHJ5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCEqaXRlcikKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgdGhpcy0+bV9vdXQucHJpbnRmKCJcdFx0
JTRkID0+ICUwNGRcbiIsIGVudHJ5ICsgc3dpdGNoSnVtcFRhYmxlLm1pbiwgKml0ZXIpOworICAg
ICAgICAgICAgICAgIHRoaXMtPm1fb3V0LnByaW50ZigiXHRcdCU0ZCA9PiAlMDRkXG4iLCBlbnRy
eSArIHN3aXRjaEp1bXBUYWJsZS5tX21pbiwgKml0ZXIpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgdGhpcy0+bV9vdXQucHJpbnRmKCIgICAgICB9XG4iKTsKICAgICAgICAgICAgICsraTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCmluZGV4IDRkNTdkYTVhMzBlMmQxOWYwYzg1Y2I1Y2Q5
ZGJmMzcwODUzMzVmNTcuLjgyOGQ4YTA0MzdlMmVmZDljNmUzY2M4ZjBmN2U1NGNlZWEzNjk5ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMjE2LDEyICsyMTYsMTIgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKICAgICAvLyBTZXR1cCB0aGUgZ2xvYmFs
IHN3aXRjaCBmb3IgdGhlIGdlbmVyYXRvci4KICAgICB7CiAgICAgICAgIGF1dG8gbmV4dFRvRW50
ZXJQb2ludCA9IGVudGVyUG9pbnQoKS5uZXh0KCk7Ci0gICAgICAgIHVuc2lnbmVkIHN3aXRjaFRh
YmxlSW5kZXggPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7CisgICAg
ICAgIHVuc2lnbmVkIHN3aXRjaFRhYmxlSW5kZXggPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxp
bmtlZFN3aXRjaEp1bXBUYWJsZXMoKTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHN0YXRlID0g
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yOjpBcmd1bWVudDo6U3RhdGUpKTsKLSAgICAgICAgYXV0byYganVtcFRh
YmxlID0gbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOwotICAgICAgICBqdW1wVGFi
bGUubWluID0gMDsKLSAgICAgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMgPSBGaXhlZFZlY3Rv
cjxpbnQzMl90PihtX3lpZWxkcy5zaXplKCkgKyAxKTsKLSAgICAgICAgc3RkOjpmaWxsKGp1bXBU
YWJsZS5icmFuY2hPZmZzZXRzLmJlZ2luKCksIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmVuZCgp
LCAwKTsKKyAgICAgICAgYXV0byYganVtcFRhYmxlID0gbV9jb2RlQmxvY2stPmFkZFVubGlua2Vk
U3dpdGNoSnVtcFRhYmxlKCk7CisgICAgICAgIGp1bXBUYWJsZS5tX21pbiA9IDA7CisgICAgICAg
IGp1bXBUYWJsZS5tX2JyYW5jaE9mZnNldHMgPSBGaXhlZFZlY3RvcjxpbnQzMl90PihtX3lpZWxk
cy5zaXplKCkgKyAxKTsKKyAgICAgICAgc3RkOjpmaWxsKGp1bXBUYWJsZS5tX2JyYW5jaE9mZnNl
dHMuYmVnaW4oKSwganVtcFRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5lbmQoKSwgMCk7CiAgICAgICAg
IGp1bXBUYWJsZS5hZGQoMCwgbmV4dFRvRW50ZXJQb2ludC5vZmZzZXQoKSk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3lpZWxkcy5zaXplKCk7ICsraSkKICAgICAgICAgICAg
IGp1bXBUYWJsZS5hZGQoaSArIDEsIG1feWllbGRzW2ldLnBvaW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggOTM4N2ZmYzc5ZGZhZGZmNzZi
NjE3ZTM5ZDcwMmUxOWI1YTQzNWQ3Ni4uZTIwNjhkNWIxMzczY2YyNjFhMjIxNDRlMjk4YTMwNjhi
ZmFjYmM3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKQEAgLTMyNCw5ICszMjQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAKICAgICBpZiAob3Ro
ZXIubV9yYXJlRGF0YSkgewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0g
ICAgICAgIAogICAgICAgICBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzID0gb3RoZXIu
bV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyczsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9z
d2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwog
ICAgIH0KIH0KIApAQCAtNDE4LDcgKzQxNiw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAg
ICAgICAgIG1fZnVuY3Rpb25FeHByc1tpXS5zZXQodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJs
ZS0+bGluayh2bSwgdG9wTGV2ZWxFeGVjdXRhYmxlLCBvd25lckV4ZWN1dGFibGUtPnNvdXJjZSgp
LCBXVEY6Om51bGxvcHQsIE5vSW50cmluc2ljLCBvd25lckV4ZWN1dGFibGUtPmlzSW5zaWRlT3Jk
aW5hcnlGdW5jdGlvbigpKSk7CiAgICAgfQogCi0gICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5u
dW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCkgfHwgdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9m
U3dpdGNoSnVtcFRhYmxlcygpKSB7CisgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJP
ZkV4Y2VwdGlvbkhhbmRsZXJzKCkpIHsKICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2Fy
eSgpOwogCiAgICAgICAgIGlmIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVt
YmVyT2ZFeGNlcHRpb25IYW5kbGVycygpKSB7CkBAIC00MzQsMTYgKzQzMiw2IEBAIGJvb2wgQ29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rCiAjZW5kaWYKICAgICAgICAgICAgIH0KICAgICAgICAgfQotCi0gICAg
ICAgIGlmIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hK
dW1wVGFibGVzKCkpIHsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxl
cy5yZXNpemVUb0ZpdChjb3VudCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYg
c291cmNlVGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGkpOwotICAg
ICAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgZGVzdFRhYmxlID0gbV9yYXJlRGF0YS0+bV9z
d2l0Y2hKdW1wVGFibGVzW2ldOwotICAgICAgICAgICAgICAgIGRlc3RUYWJsZS5icmFuY2hPZmZz
ZXRzID0gc291cmNlVGFibGUuYnJhbmNoT2Zmc2V0czsKLSAgICAgICAgICAgICAgICBkZXN0VGFi
bGUubWluID0gc291cmNlVGFibGUubWluOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAg
fQogCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVudmly
b25tZW50cy4KQEAgLTIxMjIsMTQgKzIxMTAsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1Rv
Rml0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNocmlua01vZGUgc2hyaW5rTW9kZSkKICAg
ICBpZiAoc2hyaW5rTW9kZSA9PSBTaHJpbmtNb2RlOjpFYXJseVNocmluaykKICAgICAgICAgbV9j
b25zdGFudFJlZ2lzdGVycy5zaHJpbmtUb0ZpdCgpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
c2hyaW5rTW9kZSk7CiAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5zaHJpbmtUb0ZpdCgpOwogI2Vu
ZGlmCiAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uc2hyaW5rVG9GaXQo
KTsKLQotICAgIGlmIChzaHJpbmtNb2RlID09IFNocmlua01vZGU6OkVhcmx5U2hyaW5rKSB7Ci0g
ICAgICAgIGlmIChtX3JhcmVEYXRhKQotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hK
dW1wVGFibGVzLnNocmlua1RvRml0KCk7Ci0gICAgfSAvLyBlbHNlIGRvbid0IHNocmluayB0aGVz
ZSwgYmVjYXVzZSB3ZSB3b3VsZCBoYXZlIGFscmVhZHkgcG9pbnRlZCBwb2ludGVycyBpbnRvIHRo
ZXNlIHRhYmxlcy4KIH0KIAogI2lmIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggMjkyNzdhMmY4OTQ4N2VhNDQwZjA1MDJkNzllMmY3
ZWMzM2U1ZDA1NS4uODIwM2Q5NWFjN2JiMzllMzQ3ZGJhNDYxM2MwNWIyZGY2OTA3ZGEzMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjc4LDYgKzI3
OCw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBTZW50aW5l
bExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJ
bmZvPj4gbV9pbmNvbWluZ0NhbGxzOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8UG9seW1v
cnBoaWNDYWxsTm9kZSwgUGFja2VkUmF3U2VudGluZWxOb2RlPFBvbHltb3JwaGljQ2FsbE5vZGU+
PiBtX2luY29taW5nUG9seW1vcnBoaWNDYWxsczsKICAgICAgICAgRml4ZWRWZWN0b3I8UmFyZUNh
c2VQcm9maWxlPiBtX3JhcmVDYXNlUHJvZmlsZXM7CisgICAgICAgIEZpeGVkVmVjdG9yPFNpbXBs
ZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBGaXhlZFZlY3RvcjxTdHJp
bmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFBDVG9Db2RlT3JpZ2luTWFwPiBtX3BjVG9Db2RlT3JpZ2luTWFwOwogICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IG1fY2FsbGVlU2F2ZVJlZ2lzdGVy
czsKQEAgLTYxNSwyMSArNjE2LDE1IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogCiAgICAgLy8gSnVtcCBUYWJsZXMKIAotICAgIHNpemVfdCBudW1iZXJPZlN3aXRjaEp1bXBU
YWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9yYXJlRGF0YS0+bV9zd2l0Y2hK
dW1wVGFibGVzLnNpemUoKSA6IDA7IH0KLSAgICBTaW1wbGVKdW1wVGFibGUmIHN3aXRjaEp1bXBU
YWJsZShpbnQgdGFibGVJbmRleCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJu
IG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQotICAgIHZvaWQg
Y2xlYXJTd2l0Y2hKdW1wVGFibGVzKCkKLSAgICB7Ci0gICAgICAgIGlmICghbV9yYXJlRGF0YSkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFi
bGVzLmNsZWFyKCk7Ci0gICAgfQotI2lmIEVOQUJMRShERkdfSklUKQotICAgIHZvaWQgYWRkU3dp
dGNoSnVtcFRhYmxlRnJvbVByb2ZpbGVkQ29kZUJsb2NrKFNpbXBsZUp1bXBUYWJsZSYgcHJvZmls
ZWQpCisjaWYgRU5BQkxFKEpJVCkKKyAgICBTaW1wbGVKdW1wVGFibGUmIHN3aXRjaEp1bXBUYWJs
ZShpbnQgdGFibGVJbmRleCkKICAgICB7Ci0gICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnkoKTsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChwcm9m
aWxlZC5jbG9uZU5vbkpJVFBhcnQoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faml0RGF0
YSk7CisgICAgICAgIHJldHVybiBtX2ppdERhdGEtPm1fc3dpdGNoSnVtcFRhYmxlc1t0YWJsZUlu
ZGV4XTsKICAgICB9CiAjZW5kaWYKKyAgICBzaXplX3QgbnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1
bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+bnVtYmVyT2ZVbmxpbmtl
ZFN3aXRjaEp1bXBUYWJsZXMoKTsgfQorICAgIGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxl
JiB1bmxpbmtlZFN3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyByZXR1cm4gbV91bmxp
bmtlZENvZGUtPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOyB9CiAKICNpZiBF
TkFCTEUoSklUKQogICAgIFN0cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGlu
dCB0YWJsZUluZGV4KQpAQCAtODg5LDkgKzg4NCw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPEhhbmRsZXJJbmZvPiBtX2V4
Y2VwdGlvbkhhbmRsZXJzOwogCi0gICAgICAgIC8vIEp1bXAgVGFibGVzCi0gICAgICAgIFZlY3Rv
cjxTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKLQogICAgICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlckJ1ZmZlcj4+IG1f
Y2F0Y2hQcm9maWxlczsKIAogICAgICAgICBEaXJlY3RFdmFsQ29kZUNhY2hlIG1fZGlyZWN0RXZh
bENvZGVDYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9K
dW1wVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5j
cHAKaW5kZXggZTIyYWQwM2M5Y2U0MWQ2YWY1ODE3ZjMxZDY0ZmVhNWJjNzA3ZDZmMC4uNDQ5NTJk
OTFmOTcxNzE2ODU5ZjIyZjI0OWU1MDQ5MjE2NTgzMGUxNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5jcHAKQEAgLTM0LDE0ICszNCw0IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1pbnQzMl90IFNpbXBsZUp1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUoaW50
MzJfdCB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KQotewotICAgIGlmICh2YWx1ZSA+PSBt
aW4gJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlIC0gbWluKSA8IGJyYW5jaE9mZnNldHMu
c2l6ZSgpKSB7Ci0gICAgICAgIGludDMyX3Qgb2Zmc2V0ID0gYnJhbmNoT2Zmc2V0c1t2YWx1ZSAt
IG1pbl07Ci0gICAgICAgIGlmIChvZmZzZXQpCi0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0Owot
ICAgIH0KLSAgICByZXR1cm4gZGVmYXVsdE9mZnNldDsgICAgICAgIAotfQotCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1w
VGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAppbmRl
eCBlNzZiNTAwNTA5NjZhMjk5ZTkzY2EzY2VjN2ViMzMyYzNjOTk1NzRjLi5iYTA1NjEzMWI5M2Rm
ZDM5MzYwZTU5Y2EwNWQyZTgzMDg1MDkyN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0p1bXBUYWJsZS5oCkBAIC01Miw0OSArNTIsMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgfTsKICNlbmRpZgogCi0gICAgc3RydWN0IFNpbXBsZUp1bXBUYWJsZSB7Ci0gICAgICAgIC8v
IEZJWE1FOiBUaGUgdHdvIFZlY3RvcnMgY2FuIGJlIGNvbWJpbmVkIGludG8gb25lIFZlY3RvcjxP
ZmZzZXRMb2NhdGlvbj4KLSAgICAgICAgRml4ZWRWZWN0b3I8aW50MzJfdD4gYnJhbmNoT2Zmc2V0
czsKLSAgICAgICAgaW50MzJfdCBtaW4geyBJTlQzMl9NSU4gfTsKICNpZiBFTkFCTEUoSklUKQot
ICAgICAgICBWZWN0b3I8Q29kZUxvY2F0aW9uTGFiZWw8SlNTd2l0Y2hQdHJUYWc+PiBjdGlPZmZz
ZXRzOwotICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU1N3aXRjaFB0clRhZz4gY3RpRGVmYXVs
dDsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgICAgIC8vIEpJVCBwYXJ0IGNh
biBiZSBsYXRlciBleHBhbmRlZCB3aXRob3V0IHRha2luZyBhIGxvY2sgd2hpbGUgbm9uLUpJVCBw
YXJ0IGlzIHN0YWJsZSBhZnRlciBDb2RlQmxvY2sgaXMgZmluYWxpemVkLgotICAgICAgICBTaW1w
bGVKdW1wVGFibGUgY2xvbmVOb25KSVRQYXJ0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAg
ICAgU2ltcGxlSnVtcFRhYmxlIHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC5icmFuY2hPZmZz
ZXRzID0gYnJhbmNoT2Zmc2V0czsKLSAgICAgICAgICAgIHJlc3VsdC5taW4gPSBtaW47Ci0gICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0jZW5kaWYKKyAgICBzdHJ1Y3QgU2lt
cGxlSnVtcFRhYmxlIHsKKyAgICAgICAgRml4ZWRWZWN0b3I8Q29kZUxvY2F0aW9uTGFiZWw8SlNT
d2l0Y2hQdHJUYWc+PiBtX2N0aU9mZnNldHM7CisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpT
U3dpdGNoUHRyVGFnPiBtX2N0aURlZmF1bHQ7CiAKLSAgICAgICAgaW50MzJfdCBvZmZzZXRGb3JW
YWx1ZShpbnQzMl90IHZhbHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpOwotI2lmIEVOQUJMRShK
SVQpCi0gICAgICAgIHZvaWQgZW5zdXJlQ1RJVGFibGUoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQoY3RpT2Zmc2V0cy5pc0VtcHR5KCkgfHwgY3RpT2Zmc2V0cy5zaXplKCkgPT0gYnJh
bmNoT2Zmc2V0cy5zaXplKCkpOwotICAgICAgICAgICAgY3RpT2Zmc2V0cy5ncm93KGJyYW5jaE9m
ZnNldHMuc2l6ZSgpKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaW5saW5lIENvZGVM
b2NhdGlvbkxhYmVsPEpTU3dpdGNoUHRyVGFnPiBjdGlGb3JWYWx1ZShpbnQzMl90IHZhbHVlKQor
ICAgICAgICB2b2lkIGVuc3VyZUNUSVRhYmxlKGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxl
JiB1bmxpbmtlZFRhYmxlKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPj0gbWlu
ICYmIHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSAtIG1pbikgPCBjdGlPZmZzZXRzLnNpemUo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3RpT2Zmc2V0c1t2YWx1ZSAtIG1pbl07Ci0gICAg
ICAgICAgICByZXR1cm4gY3RpRGVmYXVsdDsKKyAgICAgICAgICAgIGlmICghbV9jdGlPZmZzZXRz
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2N0aU9m
ZnNldHMgPSBGaXhlZFZlY3RvcjxDb2RlTG9jYXRpb25MYWJlbDxKU1N3aXRjaFB0clRhZz4+KHVu
bGlua2VkVGFibGUubV9icmFuY2hPZmZzZXRzLnNpemUoKSk7CiAgICAgICAgIH0KLSNlbmRpZgog
Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgICAgIHZvaWQgY2xlYXIoKQorICAgICAgICBpbmxp
bmUgQ29kZUxvY2F0aW9uTGFiZWw8SlNTd2l0Y2hQdHJUYWc+IGN0aUZvclZhbHVlKGludDMyX3Qg
bWluLCBpbnQzMl90IHZhbHVlKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICBicmFuY2hP
ZmZzZXRzID0gRml4ZWRWZWN0b3I8aW50MzJfdD4oKTsKLSAgICAgICAgICAgIGN0aU9mZnNldHMu
Y2xlYXIoKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA+PSBtaW4gJiYgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHZhbHVlIC0gbWluKSA8IG1fY3RpT2Zmc2V0cy5zaXplKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1fY3RpT2Zmc2V0c1t2YWx1ZSAtIG1pbl07CisgICAgICAgICAgICByZXR1cm4g
bV9jdGlEZWZhdWx0OwogICAgICAgICB9Ci0jZW5kaWYKICAgICB9OworI2VuZGlmCiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgKaW5kZXggM2JkYTliYjQwOTdkNmNhMjli
YmM5YzhlODJiNDc3ZTViN2YzMzZiOS4uZGM2ODViOGNiNGNlYjBhYjRiNGViY2NjMzIzOTE5YWNl
MWQwNmYxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNp
c2VKdW1wVGFyZ2V0c0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCkBAIC02MSwxNyArNjEsMTcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgQ0FTRV9PUChPcEpiZWxvd2VxKSBcCiAgICAgY2FzZSBvcF9zd2l0Y2hf
aW1tOiB7IFwKICAgICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcFN3aXRj
aEltbT4oKTsgXAotICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRh
YmxlKGJ5dGVjb2RlLm1fdGFibGVJbmRleCk7IFwKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
dGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspIFwKLSAgICAgICAgICAgIFNXSVRDSF9D
QVNFKHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOyBcCisgICAgICAgIGF1dG8mIHRhYmxlID0gY29k
ZUJsb2NrLT51bmxpbmtlZFN3aXRjaEp1bXBUYWJsZShieXRlY29kZS5tX3RhYmxlSW5kZXgpOyBc
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5zaXplKCk7
IGktLTspIFwKKyAgICAgICAgICAgIFNXSVRDSF9DQVNFKHRhYmxlLm1fYnJhbmNoT2Zmc2V0c1tp
XSk7IFwKICAgICAgICAgU1dJVENIX0RFRkFVTFRfT0ZGU0VUKE9wU3dpdGNoSW1tKTsgXAogICAg
ICAgICBicmVhazsgXAogICAgIH0gXAogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsgXAogICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wU3dpdGNoQ2hhcj4oKTsgXAot
ICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGJ5dGVjb2Rl
Lm1fdGFibGVJbmRleCk7IFwKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNo
T2Zmc2V0cy5zaXplKCk7IGktLTspIFwKLSAgICAgICAgICAgIFNXSVRDSF9DQVNFKHRhYmxlLmJy
YW5jaE9mZnNldHNbaV0pOyBcCisgICAgICAgIGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT51bmxp
bmtlZFN3aXRjaEp1bXBUYWJsZShieXRlY29kZS5tX3RhYmxlSW5kZXgpOyBcCisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IHRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspIFwKKyAg
ICAgICAgICAgIFNXSVRDSF9DQVNFKHRhYmxlLm1fYnJhbmNoT2Zmc2V0c1tpXSk7IFwKICAgICAg
ICAgU1dJVENIX0RFRkFVTFRfT0ZGU0VUKE9wU3dpdGNoQ2hhcik7IFwKICAgICAgICAgYnJlYWs7
IFwKICAgICB9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgKaW5kZXggNDY5ZjFjOWM0ODdlMGI0NjcxODNhMzQwYjZlMmJhOWJiM2Q2
NzYxYS4uMmQxMjUxMjJjOTg4M2JiMjc0ZjVhOGEwZmY4M2YzMWFlMjcyOTVmZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAg
LTk1LDE0ICs5NSwyMyBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewogfTsKIAog
c3RydWN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlIHsKLSAgICBGaXhlZFZlY3RvcjxpbnQzMl90
PiBicmFuY2hPZmZzZXRzOwotICAgIGludDMyX3QgbWluOworICAgIEZpeGVkVmVjdG9yPGludDMy
X3Q+IG1fYnJhbmNoT2Zmc2V0czsKKyAgICBpbnQzMl90IG1fbWluOworCisgICAgaW5saW5lIGlu
dDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoaW50MzJfdCB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKHZhbHVlID49IG1fbWluICYmIHN0YXRpY19jYXN0
PHVpbnQzMl90Pih2YWx1ZSAtIG1fbWluKSA8IG1fYnJhbmNoT2Zmc2V0cy5zaXplKCkpIHsKKyAg
ICAgICAgICAgIGludDMyX3Qgb2Zmc2V0ID0gbV9icmFuY2hPZmZzZXRzW3ZhbHVlIC0gbV9taW5d
OworICAgICAgICAgICAgaWYgKG9mZnNldCkKKyAgICAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBkZWZhdWx0T2Zmc2V0OworICAgIH0KIAotICAg
IGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoaW50MzJfdCB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zm
c2V0KTsKICAgICB2b2lkIGFkZChpbnQzMl90IGtleSwgaW50MzJfdCBvZmZzZXQpCiAgICAgewot
ICAgICAgICBpZiAoIWJyYW5jaE9mZnNldHNba2V5XSkKLSAgICAgICAgICAgIGJyYW5jaE9mZnNl
dHNba2V5XSA9IG9mZnNldDsKKyAgICAgICAgaWYgKCFtX2JyYW5jaE9mZnNldHNba2V5XSkKKyAg
ICAgICAgICAgIG1fYnJhbmNoT2Zmc2V0c1trZXldID0gb2Zmc2V0OwogICAgIH0KIH07CiAKQEAg
LTExOSw2ICsxMjgsOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAorICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBlbnVtIHsgQ2FsbEZ1bmN0
aW9uLCBBcHBseUZ1bmN0aW9uIH07CiAKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KQEAgLTE4NSw4ICsxOTYsOCBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgLy8gSnVtcCBUYWJsZXMKIAot
ICAgIHNpemVfdCBudW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVEYXRhID8gbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNpemUoKSA6IDA7IH0KLSAg
ICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgc3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4
KSB7IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRh
Ymxlc1t0YWJsZUluZGV4XTsgfQorICAgIHNpemVfdCBudW1iZXJPZlVubGlua2VkU3dpdGNoSnVt
cFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX3VubGlu
a2VkU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkgOiAwOyB9CisgICAgY29uc3QgVW5saW5rZWRTaW1w
bGVKdW1wVGFibGUmIHVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IEFT
U0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fdW5saW5rZWRTd2l0Y2hKdW1w
VGFibGVzW3RhYmxlSW5kZXhdOyB9CiAKICAgICBzaXplX3QgbnVtYmVyT2ZVbmxpbmtlZFN0cmlu
Z1N3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9yYXJlRGF0
YS0+bV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpIDogMDsgfQogICAgIGNv
bnN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiB1bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJs
ZShpbnQgdGFibGVJbmRleCkgeyBBU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRh
LT5tX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQpAQCAtMzk5
LDcgKzQxMCw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgICAgIEZpeGVkVmVjdG9yPFVubGlua2VkSGFuZGxlckluZm8+IG1fZXhjZXB0aW9uSGFuZGxl
cnM7CiAKICAgICAgICAgLy8gSnVtcCBUYWJsZXMKLSAgICAgICAgRml4ZWRWZWN0b3I8VW5saW5r
ZWRTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKKyAgICAgICAgRml4ZWRWZWN0
b3I8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IG1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzOwog
ICAgICAgICBGaXhlZFZlY3RvcjxVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZT4gbV91bmxpbmtlZFN0
cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKICAgICAgICAgRml4ZWRWZWN0b3I8RXhwcmVzc2lvblJh
bmdlSW5mbzo6RmF0UG9zaXRpb24+IG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrR2VuZXJhdG9yLmNwcAppbmRleCBmOTZjNjAwMjZjNmYyZGVjODY4M2FkYTE2ZGRhZTdl
ZmE1MGE3NWM1Li5mNzgxMDllODg2MTkxMzlmYTU1YTc4NjM1NjUzOTJiNzhjNjdjZmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFVubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yOjpmaW5hbGl6ZShzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25T
dHJlYW0+IGlucwogCiAgICAgICAgIGlmICghbV9jb2RlQmxvY2stPm1fcmFyZURhdGEpIHsKICAg
ICAgICAgICAgIGlmICghbV9leGNlcHRpb25IYW5kbGVycy5pc0VtcHR5KCkKLSAgICAgICAgICAg
ICAgICB8fCAhbV9zd2l0Y2hKdW1wVGFibGVzLmlzRW1wdHkoKQorICAgICAgICAgICAgICAgIHx8
ICFtX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcy5pc0VtcHR5KCkKICAgICAgICAgICAgICAgICB8
fCAhbV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMuaXNFbXB0eSgpCiAgICAgICAgICAg
ICAgICAgfHwgIW1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnMuaXNFbXB0eSgpCiAgICAgICAg
ICAgICAgICAgfHwgIW1fdHlwZVByb2ZpbGVySW5mb01hcC5pc0VtcHR5KCkKQEAgLTE0Myw3ICsx
NDMsNyBAQCB2b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpmaW5hbGl6ZShzdGQ6OnVu
aXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IGlucwogICAgICAgICB9CiAgICAgICAgIGlmICht
X2NvZGVCbG9jay0+bV9yYXJlRGF0YSkgewogICAgICAgICAgICAgbV9jb2RlQmxvY2stPm1fcmFy
ZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMgPSBXVEZNb3ZlKG1fZXhjZXB0aW9uSGFuZGxlcnMp
OwotICAgICAgICAgICAgbV9jb2RlQmxvY2stPm1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxl
cyA9IFdURk1vdmUobV9zd2l0Y2hKdW1wVGFibGVzKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2Nr
LT5tX3JhcmVEYXRhLT5tX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyA9IFdURk1vdmUobV91bmxp
bmtlZFN3aXRjaEp1bXBUYWJsZXMpOwogICAgICAgICAgICAgbV9jb2RlQmxvY2stPm1fcmFyZURh
dGEtPm1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gV1RGTW92ZShtX3VubGlua2Vk
U3RyaW5nU3dpdGNoSnVtcFRhYmxlcyk7CiAgICAgICAgICAgICBtX2NvZGVCbG9jay0+bV9yYXJl
RGF0YS0+bV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucyA9IFdURk1vdmUobV9leHByZXNzaW9u
SW5mb0ZhdFBvc2l0aW9ucyk7CiAgICAgICAgICAgICBtX2NvZGVCbG9jay0+bV9yYXJlRGF0YS0+
bV90eXBlUHJvZmlsZXJJbmZvTWFwID0gV1RGTW92ZShtX3R5cGVQcm9maWxlckluZm9NYXApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCAxMTE0OTA0YzJmN2FiZGFiNjUwZmNhYjE3ZDlhNDdm
MDc3NGQ4ZjE0Li42Y2Q3YWVmODllNGQwNzdkMjkwYjBhMzNmNTkyZDAyZjg5NzYyMjBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtOTAsOSArOTAsOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvciB7CiAgICAgdW5zaWduZWQganVtcFRhcmdldChpbnQgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIG1fanVtcFRhcmdldHNbaW5kZXhdOyB9CiAgICAgdW5zaWduZWQgbGFzdEp1bXBU
YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzLmxhc3QoKTsgfQogCi0gICAgc2l6
ZV90IG51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3dpdGNoSnVt
cFRhYmxlcy5zaXplKCk7IH0KLSAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgYWRkU3dpdGNo
SnVtcFRhYmxlKCkgeyBtX3N3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKFVubGlua2VkU2ltcGxlSnVt
cFRhYmxlKCkpOyByZXR1cm4gbV9zd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQotICAgIFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlJiBzd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgcmV0
dXJuIG1fc3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQorICAgIHNpemVfdCBudW1iZXJP
ZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRTd2l0
Y2hKdW1wVGFibGVzLnNpemUoKTsgfQorICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBhZGRV
bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSgpIHsgbV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMuYXBw
ZW5kKFVubGlua2VkU2ltcGxlSnVtcFRhYmxlKCkpOyByZXR1cm4gbV91bmxpbmtlZFN3aXRjaEp1
bXBUYWJsZXMubGFzdCgpOyB9CisgICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2Vk
U3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IHJldHVybiBtX3VubGlua2VkU3dpdGNo
SnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQogCiAgICAgc2l6ZV90IG51bWJlck9mVW5saW5rZWRT
dHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZFN0cmluZ1N3
aXRjaEp1bXBUYWJsZXMuc2l6ZSgpOyB9CiAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIGFk
ZFVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBtX3VubGlua2VkU3RyaW5nU3dpdGNo
SnVtcFRhYmxlcy5hcHBlbmQoVW5saW5rZWRTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3Vu
bGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KQEAgLTIwNCw3ICsyMDQsNyBA
QCBjbGFzcyBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciB7CiAgICAgT3V0T2ZMaW5lSnVtcFRh
cmdldHMgbV9vdXRPZkxpbmVKdW1wVGFyZ2V0czsKICAgICAvLyBJbiBSYXJlRGF0YS4KICAgICBW
ZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4gbV9leGNlcHRpb25IYW5kbGVyczsKLSAgICBWZWN0
b3I8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKKyAgICBWZWN0
b3I8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IG1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzOwog
ICAgIFZlY3RvcjxVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZT4gbV91bmxpbmtlZFN0cmluZ1N3aXRj
aEp1bXBUYWJsZXM7CiAgICAgVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9u
PiBtX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zOwogICAgIEhhc2hNYXA8dW5zaWduZWQsIFVu
bGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YTo6VHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdlPiBt
X3R5cGVQcm9maWxlckluZm9NYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDg2NTMyOGRhZGQ5YzY0
NDk0YzA2NWRjMTczZThjM2IwMTA2MDMwY2EuLmIzNWU2OGZiNTI5MThmMGE1ZDc1ZWZmYjg0YTYx
ZWVmNDA3MTdmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00MDM2LDE0ICs0MDM2LDE0IEBAIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmJlZ2luU3dpdGNoKFJlZ2lzdGVySUQqIHNjcnV0aW5lZVJl
Z2lzdGVyLCBTd2l0Y2hJbmZvOjpTCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBT
d2l0Y2hJbmZvOjpTd2l0Y2hJbW1lZGlhdGU6IHsKLSAgICAgICAgc2l6ZV90IHRhYmxlSW5kZXgg
PSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7Ci0gICAgICAgIG1fY29k
ZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKKyAgICAgICAgc2l6ZV90IHRhYmxlSW5kZXgg
PSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKTsKKyAgICAg
ICAgbV9jb2RlQmxvY2stPmFkZFVubGlua2VkU3dpdGNoSnVtcFRhYmxlKCk7CiAgICAgICAgIE9w
U3dpdGNoSW1tOjplbWl0KHRoaXMsIHRhYmxlSW5kZXgsIEJvdW5kTGFiZWwoKSwgc2NydXRpbmVl
UmVnaXN0ZXIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTd2l0Y2hJbmZvOjpT
d2l0Y2hDaGFyYWN0ZXI6IHsKLSAgICAgICAgc2l6ZV90IHRhYmxlSW5kZXggPSBtX2NvZGVCbG9j
ay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRT
d2l0Y2hKdW1wVGFibGUoKTsKKyAgICAgICAgc2l6ZV90IHRhYmxlSW5kZXggPSBtX2NvZGVCbG9j
ay0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKTsKKyAgICAgICAgbV9jb2RlQmxv
Y2stPmFkZFVubGlua2VkU3dpdGNoSnVtcFRhYmxlKCk7CiAgICAgICAgIE9wU3dpdGNoQ2hhcjo6
ZW1pdCh0aGlzLCB0YWJsZUluZGV4LCBCb3VuZExhYmVsKCksIHNjcnV0aW5lZVJlZ2lzdGVyKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNDA5MSw5ICs0MDkxLDkgQEAgc3RhdGljIHZvaWQg
cHJlcGFyZUp1bXBUYWJsZUZvclN3aXRjaCgKICAgICBjb25zdCBWZWN0b3I8UmVmPExhYmVsPiwg
OD4mIGxhYmVscywgRXhwcmVzc2lvbk5vZGUqKiBub2RlcywgaW50MzJfdCBtaW4sIGludDMyX3Qg
bWF4LAogICAgIGludDMyX3QgKCprZXlHZXR0ZXIpKEV4cHJlc3Npb25Ob2RlKiwgaW50MzJfdCBt
aW4sIGludDMyX3QgbWF4KSkKIHsKLSAgICBqdW1wVGFibGUubWluID0gbWluOwotICAgIGp1bXBU
YWJsZS5icmFuY2hPZmZzZXRzID0gRml4ZWRWZWN0b3I8aW50MzJfdD4obWF4IC0gbWluICsgMSk7
Ci0gICAgc3RkOjpmaWxsKGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmJlZ2luKCksIGp1bXBUYWJs
ZS5icmFuY2hPZmZzZXRzLmVuZCgpLCAwKTsKKyAgICBqdW1wVGFibGUubV9taW4gPSBtaW47Cisg
ICAganVtcFRhYmxlLm1fYnJhbmNoT2Zmc2V0cyA9IEZpeGVkVmVjdG9yPGludDMyX3Q+KG1heCAt
IG1pbiArIDEpOworICAgIHN0ZDo6ZmlsbChqdW1wVGFibGUubV9icmFuY2hPZmZzZXRzLmJlZ2lu
KCksIGp1bXBUYWJsZS5tX2JyYW5jaE9mZnNldHMuZW5kKCksIDApOwogICAgIGZvciAodWludDMy
X3QgaSA9IDA7IGkgPCBjbGF1c2VDb3VudDsgKytpKSB7CiAgICAgICAgIC8vIFdlJ3JlIGVtaXR0
aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhlZCwg
c28gCiAgICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIgcmVmZXJl
bmNlcwpAQCAtNDEyOSw3ICs0MTI5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5kU3dp
dGNoKHVpbnQzMl90IGNsYXVzZUNvdW50LCBjb25zdCBWZWN0b3I8UmVmPExhYmVsPiwKICAgICAg
ICAgICAgIHJldHVybiBCb3VuZExhYmVsKCk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRh
YmxlKGJ5dGVjb2RlLm1fdGFibGVJbmRleCk7CisgICAgICAgIFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoYnl0
ZWNvZGUubV90YWJsZUluZGV4KTsKICAgICAgICAgcHJlcGFyZUp1bXBUYWJsZUZvclN3aXRjaCgK
ICAgICAgICAgICAgIGp1bXBUYWJsZSwgc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCwgY2xhdXNl
Q291bnQsIGxhYmVscywgbm9kZXMsIG1pbiwgbWF4LAogICAgICAgICAgICAgc3dpdGNoSW5mby5z
d2l0Y2hUeXBlID09IFN3aXRjaEluZm86OlN3aXRjaEltbWVkaWF0ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAzZTMwOWNkOTEyNTFk
NzlkNDIxZmRjMjI1MWZlNzMxZWY3MWU3MGIwLi45YTBhYTU4ZjhkYzExMGI1MDA0MjRmZGNiZjBh
ZTUzZDJmYzg5MTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcApAQCAtNjg3MiwxNCArNjg3MiwxNCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgZGF0YS5raW5kID0gU3dp
dGNoSW1tOwogICAgICAgICAgICAgZGF0YS5zd2l0Y2hUYWJsZUluZGV4ID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9zd2l0Y2hSZW1hcFtieXRlY29kZS5tX3RhYmxlSW5kZXhdOwogICAgICAgICAgICAg
ZGF0YS5mYWxsVGhyb3VnaC5zZXRCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgp
ICsganVtcFRhcmdldChieXRlY29kZS5tX2RlZmF1bHRPZmZzZXQpKTsKLSAgICAgICAgICAgIFNp
bXBsZUp1bXBUYWJsZSYgdGFibGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGRhdGEu
c3dpdGNoVGFibGVJbmRleCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
dGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIGlmICgh
dGFibGUuYnJhbmNoT2Zmc2V0c1tpXSkKKyAgICAgICAgICAgIGNvbnN0IFVubGlua2VkU2ltcGxl
SnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9ncmFwaC51bmxpbmtlZFN3aXRjaEp1bXBUYWJs
ZShkYXRhLnN3aXRjaFRhYmxlSW5kZXgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHVubGlua2VkVGFibGUubV9icmFuY2hPZmZzZXRzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCF1bmxpbmtlZFRhYmxlLm1fYnJhbmNoT2Zmc2V0c1tpXSkKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0
ID0gbV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyB0YWJsZS5icmFuY2hPZmZzZXRzW2ldOworICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldCA9IG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsg
dW5saW5rZWRUYWJsZS5tX2JyYW5jaE9mZnNldHNbaV07CiAgICAgICAgICAgICAgICAgaWYgKHRh
cmdldCA9PSBkYXRhLmZhbGxUaHJvdWdoLmJ5dGVjb2RlSW5kZXgoKSkKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgZGF0YS5jYXNlcy5hcHBlbmQoU3dpdGNo
Q2FzZTo6d2l0aEJ5dGVjb2RlSW5kZXgobV9ncmFwaC5mcmVlemUoanNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4odGFibGUubWluICsgaSkpKSwgdGFyZ2V0KSk7CisgICAgICAgICAgICAgICAg
ZGF0YS5jYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZTo6d2l0aEJ5dGVjb2RlSW5kZXgobV9ncmFwaC5m
cmVlemUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odW5saW5rZWRUYWJsZS5tX21pbiAr
IGkpKSksIHRhcmdldCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYWRkVG9HcmFwaChT
d2l0Y2gsIE9wSW5mbygmZGF0YSksIGdldChieXRlY29kZS5tX3NjcnV0aW5lZSkpOwogICAgICAg
ICAgICAgZmx1c2hJZlRlcm1pbmFsKGRhdGEpOwpAQCAtNjg5MiwxNSArNjg5MiwxNSBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAg
ZGF0YS5raW5kID0gU3dpdGNoQ2hhcjsKICAgICAgICAgICAgIGRhdGEuc3dpdGNoVGFibGVJbmRl
eCA9IG1faW5saW5lU3RhY2tUb3AtPm1fc3dpdGNoUmVtYXBbYnl0ZWNvZGUubV90YWJsZUluZGV4
XTsKICAgICAgICAgICAgIGRhdGEuZmFsbFRocm91Z2guc2V0Qnl0ZWNvZGVJbmRleChtX2N1cnJl
bnRJbmRleC5vZmZzZXQoKSArIGp1bXBUYXJnZXQoYnl0ZWNvZGUubV9kZWZhdWx0T2Zmc2V0KSk7
Ci0gICAgICAgICAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0gbV9jb2RlQmxvY2stPnN3aXRj
aEp1bXBUYWJsZShkYXRhLnN3aXRjaFRhYmxlSW5kZXgpOwotICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIXRhYmxlLmJyYW5jaE9mZnNldHNbaV0pCisgICAgICAgICAgICBjb25z
dCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgdW5saW5rZWRUYWJsZSA9IG1fZ3JhcGgudW5saW5r
ZWRTd2l0Y2hKdW1wVGFibGUoZGF0YS5zd2l0Y2hUYWJsZUluZGV4KTsKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB1bmxpbmtlZFRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5zaXpl
KCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghdW5saW5rZWRUYWJsZS5tX2JyYW5jaE9m
ZnNldHNbaV0pCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHRhcmdldCA9IG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgdGFibGUuYnJhbmNo
T2Zmc2V0c1tpXTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXQgPSBtX2N1cnJlbnRJ
bmRleC5vZmZzZXQoKSArIHVubGlua2VkVGFibGUubV9icmFuY2hPZmZzZXRzW2ldOwogICAgICAg
ICAgICAgICAgIGlmICh0YXJnZXQgPT0gZGF0YS5mYWxsVGhyb3VnaC5ieXRlY29kZUluZGV4KCkp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGRhdGEuY2Fz
ZXMuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBTd2l0Y2hDYXNlOjp3aXRoQnl0ZWNvZGVJ
bmRleChMYXp5SlNWYWx1ZTo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHRhYmxlLm1pbiArIGkpLCB0
YXJnZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgU3dpdGNoQ2FzZTo6d2l0aEJ5dGVjb2RlSW5k
ZXgoTGF6eUpTVmFsdWU6OnNpbmdsZUNoYXJhY3RlclN0cmluZyh1bmxpbmtlZFRhYmxlLm1fbWlu
ICsgaSksIHRhcmdldCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYWRkVG9HcmFwaChT
d2l0Y2gsIE9wSW5mbygmZGF0YSksIGdldChieXRlY29kZS5tX3NjcnV0aW5lZSkpOwogICAgICAg
ICAgICAgZmx1c2hJZlRlcm1pbmFsKGRhdGEpOwpAQCAtODUyNiwxNiArODUyNiwxOCBAQCBCeXRl
Q29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAg
bV9pbmxpbmVDYWxsRnJhbWUtPmtpbmQgPSBraW5kOwogICAgICAgICAKICAgICAgICAgbV9pZGVu
dGlmaWVyUmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKLSAg
ICAgICAgbV9zd2l0Y2hSZW1hcC5yZXNpemUoY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBU
YWJsZXMoKSk7CisgICAgICAgIG1fc3dpdGNoUmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVy
T2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKSk7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsgKytpKSB7CiAgICAgICAg
ICAgICBVbmlxdWVkU3RyaW5nSW1wbCogcmVwID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGkpLmlt
cGwoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gYnl0ZUNvZGVQYXJzZXItPm1fZ3Jh
cGguaWRlbnRpZmllcnMoKS5lbnN1cmUocmVwKTsKICAgICAgICAgICAgIG1faWRlbnRpZmllclJl
bWFwW2ldID0gaW5kZXg7CiAgICAgICAgIH0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7ICsraSkgewotICAgICAg
ICAgICAgbV9zd2l0Y2hSZW1hcFtpXSA9IGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+bnVt
YmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7Ci0gICAgICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9j
b2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZUZyb21Qcm9maWxlZENvZGVCbG9jayhjb2RlQmxv
Y2stPnN3aXRjaEp1bXBUYWJsZShpKSk7CisKKyAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fZ3Jh
cGgubV9zd2l0Y2hKdW1wVGFibGVzLnJlc2l6ZShieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX3N3
aXRjaEp1bXBUYWJsZXMuc2l6ZSgpICsgY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dpdGNo
SnVtcFRhYmxlcygpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9j
ay0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKTsgKytpKSB7CisgICAgICAgICAg
ICBtX3N3aXRjaFJlbWFwW2ldID0gYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV91bmxpbmtlZFN3
aXRjaEp1bXBUYWJsZXMuc2l6ZSgpOworICAgICAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fZ3Jh
cGgubV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKCZjb2RlQmxvY2stPnVubGlua2Vk
U3dpdGNoSnVtcFRhYmxlKGkpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8v
IE1hY2hpbmUgY29kZSBibG9jayBjYXNlLgpAQCAtODU0NywxMSArODU0OSwxNSBAQCBCeXRlQ29k
ZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgbV9p
bmxpbmVDYWxsRnJhbWUgPSBudWxscHRyOwogCiAgICAgICAgIG1faWRlbnRpZmllclJlbWFwLnJl
c2l6ZShjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7Ci0gICAgICAgIG1fc3dpdGNo
UmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCkpOworICAg
ICAgICBtX3N3aXRjaFJlbWFwLnJlc2l6ZShjb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTd2l0
Y2hKdW1wVGFibGVzKCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVCbG9j
ay0+bnVtYmVyT2ZJZGVudGlmaWVycygpOyArK2kpCiAgICAgICAgICAgICBtX2lkZW50aWZpZXJS
ZW1hcFtpXSA9IGk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29kZUJsb2NrLT5u
dW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsgKytpKQotICAgICAgICAgICAgbV9zd2l0Y2hSZW1h
cFtpXSA9IGk7CisKKyAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV9zd2l0Y2hKdW1w
VGFibGVzLnJlc2l6ZShieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX3N3aXRjaEp1bXBUYWJsZXMu
c2l6ZSgpICsgY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZVbmxp
bmtlZFN3aXRjaEp1bXBUYWJsZXMoKTsgKytpKSB7CisgICAgICAgICAgICBtX3N3aXRjaFJlbWFw
W2ldID0gYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMu
c2l6ZSgpOworICAgICAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV91bmxpbmtlZFN3
aXRjaEp1bXBUYWJsZXMuYXBwZW5kKCZjb2RlQmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxl
KGkpKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICBtX2FyZ3VtZW50UG9zaXRpb25zLnJl
c2l6ZShhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNGI4OGY0MTNlYzI1OWIxMjVjMmY1OWNkNzc3OTQ3NDFm
YjdhMzRhMS4uZDFmYjM2YTA3NDVmMWE2ZmY5ZGU0NDJkMjA4OTA4YTc5ZDcyMGEzMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtMTA2NCw2ICsxMDY0LDkgQEAgY2xhc3Mg
R3JhcGggZmluYWwgOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIFByZWZpeCYgcHJl
Zml4KCkgeyByZXR1cm4gbV9wcmVmaXg7IH0KICAgICB2b2lkIG5leHRQaGFzZSgpIHsgbV9wcmVm
aXgucGhhc2VOdW1iZXIrKzsgfQogCisgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUm
IHVubGlua2VkU3dpdGNoSnVtcFRhYmxlKHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiAqbV91bmxp
bmtlZFN3aXRjaEp1bXBUYWJsZXNbaW5kZXhdOyB9CisgICAgU2ltcGxlSnVtcFRhYmxlJiBzd2l0
Y2hKdW1wVGFibGUodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIG1fc3dpdGNoSnVtcFRhYmxlc1tp
bmRleF07IH0KKwogICAgIFN0YWNrQ2hlY2sgbV9zdGFja0NoZWNrZXI7CiAgICAgVk0mIG1fdm07
CiAgICAgUGxhbiYgbV9wbGFuOwpAQCAtMTA3NCw2ICsxMDc3LDkgQEAgY2xhc3MgR3JhcGggZmlu
YWwgOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwg
MT4gbV9yb290czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFyQXJnQ2hpbGRyZW47CiAKKyAg
ICBWZWN0b3I8Y29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUqPiBtX3VubGlua2VkU3dpdGNo
SnVtcFRhYmxlczsKKyAgICBWZWN0b3I8U2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJs
ZXM7CisKICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1ZSosIEVuY29kZWRK
U1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3plblZhbHVlTWFwOwog
ICAgIEJhZzxGcm96ZW5WYWx1ZT4gbV9mcm96ZW5WYWx1ZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggMzE4ZjAxNTZjMTRmZDg2MzYzZmIy
OWZlOWVhZmZkMWMyOTg4M2YxNS4uNjc0ZDhmN2FhZTMxMTg0NzQzN2RiYThkMThhOTJjODJkM2I3
YzZiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAK
QEAgLTE3NiwxMiArMTc2LDE0IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikKICAgICAKICAgICBtX2dyYXBoLnJlZ2lzdGVyRnJvemVuVmFsdWVzKCk7CiAK
LSAgICBpZiAobV9jb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzKCkpIHsKKyAgICBpZiAobV9jb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0
Y2hKdW1wVGFibGVzKCkgfHwgIW1fZ3JhcGgubV9zd2l0Y2hKdW1wVGFibGVzLmlzRW1wdHkoKSkg
ewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fY29kZUJsb2NrLT5tX2xvY2sp
OwotICAgICAgICBtX2NvZGVCbG9jay0+ZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3RyaW5nU3dp
dGNoSnVtcFRhYmxlcyA9IEZpeGVkVmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4obV9jb2RlQmxvY2st
Pm51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkpOworICAgICAgICBpZiAo
bV9jb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkpCisg
ICAgICAgICAgICBtX2NvZGVCbG9jay0+ZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3RyaW5nU3dp
dGNoSnVtcFRhYmxlcyA9IEZpeGVkVmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4obV9jb2RlQmxvY2st
Pm51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkpOworICAgICAgICBpZiAo
IW1fZ3JhcGgubV9zd2l0Y2hKdW1wVGFibGVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fY29k
ZUJsb2NrLT5lbnN1cmVKSVREYXRhKGxvY2tlcikubV9zd2l0Y2hKdW1wVGFibGVzID0gV1RGTW92
ZShtX2dyYXBoLm1fc3dpdGNoSnVtcFRhYmxlcyk7CiAgICAgfQogCi0gICAgQml0VmVjdG9yIHVz
ZWRKdW1wVGFibGVzOwogICAgIGZvciAoQmFnPFN3aXRjaERhdGE+OjppdGVyYXRvciBpdGVyID0g
bV9ncmFwaC5tX3N3aXRjaERhdGEuYmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKICAgICAgICAg
U3dpdGNoRGF0YSYgZGF0YSA9ICoqaXRlcjsKICAgICAgICAgaWYgKCFkYXRhLmRpZFVzZUp1bXBU
YWJsZSkKQEAgLTE5MiwyNiArMTk0LDE5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikKICAgICAgICAgCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRhdGEu
a2luZCA9PSBTd2l0Y2hJbW0gfHwgZGF0YS5raW5kID09IFN3aXRjaENoYXIpOwogICAgICAgICAK
LSAgICAgICAgdXNlZEp1bXBUYWJsZXMuc2V0KGRhdGEuc3dpdGNoVGFibGVJbmRleCk7Ci0gICAg
ICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxl
KGRhdGEuc3dpdGNoVGFibGVJbmRleCk7Ci0gICAgICAgIHRhYmxlLmN0aURlZmF1bHQgPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2Y8SlNTd2l0Y2hQdHJUYWc+KG1fYmxvY2tIZWFkc1tkYXRhLmZhbGxU
aHJvdWdoLmJsb2NrLT5pbmRleF0pOwotICAgICAgICB0YWJsZS5jdGlPZmZzZXRzLmdyb3codGFi
bGUuYnJhbmNoT2Zmc2V0cy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSB0YWJs
ZS5jdGlPZmZzZXRzLnNpemUoKTsgai0tOykKLSAgICAgICAgICAgIHRhYmxlLmN0aU9mZnNldHNb
al0gPSB0YWJsZS5jdGlEZWZhdWx0OworICAgICAgICBjb25zdCBVbmxpbmtlZFNpbXBsZUp1bXBU
YWJsZSYgdW5saW5rZWRUYWJsZSA9IG1fZ3JhcGgudW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoZGF0
YS5zd2l0Y2hUYWJsZUluZGV4KTsKKyAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiBsaW5rZWRUYWJs
ZSA9IG1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoZGF0YS5zd2l0Y2hUYWJsZUluZGV4KTsK
KyAgICAgICAgbGlua2VkVGFibGUubV9jdGlEZWZhdWx0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9m
PEpTU3dpdGNoUHRyVGFnPihtX2Jsb2NrSGVhZHNbZGF0YS5mYWxsVGhyb3VnaC5ibG9jay0+aW5k
ZXhdKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobGlua2VkVGFibGUubV9jdGlPZmZzZXRzLnNp
emUoKSA9PSB1bmxpbmtlZFRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5zaXplKCkpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGogPSBsaW5rZWRUYWJsZS5tX2N0aU9mZnNldHMuc2l6ZSgpOyBqLS07KQor
ICAgICAgICAgICAgbGlua2VkVGFibGUubV9jdGlPZmZzZXRzW2pdID0gbGlua2VkVGFibGUubV9j
dGlEZWZhdWx0OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBkYXRhLmNhc2VzLnNpemUoKTsg
ai0tOykgewogICAgICAgICAgICAgU3dpdGNoQ2FzZSYgbXlDYXNlID0gZGF0YS5jYXNlc1tqXTsK
LSAgICAgICAgICAgIHRhYmxlLmN0aU9mZnNldHNbbXlDYXNlLnZhbHVlLnN3aXRjaExvb2t1cFZh
bHVlKGRhdGEua2luZCkgLSB0YWJsZS5taW5dID0KKyAgICAgICAgICAgIGxpbmtlZFRhYmxlLm1f
Y3RpT2Zmc2V0c1tteUNhc2UudmFsdWUuc3dpdGNoTG9va3VwVmFsdWUoZGF0YS5raW5kKSAtIHVu
bGlua2VkVGFibGUubV9taW5dID0KICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9u
T2Y8SlNTd2l0Y2hQdHJUYWc+KG1fYmxvY2tIZWFkc1tteUNhc2UudGFyZ2V0LmJsb2NrLT5pbmRl
eF0pOwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fY29k
ZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsgaS0tOykgewotICAgICAgICBpZiAo
dXNlZEp1bXBUYWJsZXMuZ2V0KGkpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAot
ICAgICAgICBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGkpLmNsZWFyKCk7Ci0gICAgfQot
CiAgICAgLy8gTk9URTogd2UgY2Fubm90IGNsZWFyIHN0cmluZyBzd2l0Y2ggdGFibGVzIGJlY2F1
c2UgKDEpIHdlJ3JlIHJ1bm5pbmcgY29uY3VycmVudGx5CiAgICAgLy8gYW5kIHdlIGNhbm5vdCBk
ZXJlZiBTdHJpbmdJbXBsJ3MgYW5kICgyKSBpdCB3b3VsZCBiZSB3ZWlyZCB0byBkZXJlZiB0aG9z
ZQogICAgIC8vIFN0cmluZ0ltcGwncyBzaW5jZSB3ZSByZWZlciB0byB0aGVtLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggY2QxMzcxMmE0NTNmNWY1
MjI1NTU2OTRkMTZjMzllYTQwNGMyNGViNy4uZTIxYTM1YjVmZjliMDgzZTg2NDRkZjUwNTM5ZTVj
MTRlZDE0MzBjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCkBAIC0yNjkwLDIwICsyNjkwLDIwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25TdHJDYXQzLCBKU1N0cmluZyosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhnbG9iYWxPYmplY3QsIHN0cjEsIHN0
cjIsIHN0cjMpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkZpbmRT
d2l0Y2hJbW1UYXJnZXRGb3JEb3VibGUsIGNoYXIqLCAoVk0qIHZtUG9pbnRlciwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBzaXplX3QgdGFibGVJbmRleCkpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZSwgY2hhciosIChW
TSogdm1Qb2ludGVyLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIHNpemVfdCB0YWJsZUlu
ZGV4LCBpbnQzMl90IG1pbikpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICBTaW1wbGVK
dW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7
CisgICAgY29uc3QgU2ltcGxlSnVtcFRhYmxlJiBsaW5rZWRUYWJsZSA9IGNvZGVCbG9jay0+c3dp
dGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBBU1NFUlQodmFsdWUuaXNEb3VibGUoKSk7CiAgICAg
ZG91YmxlIGFzRG91YmxlID0gdmFsdWUuYXNEb3VibGUoKTsKICAgICBpbnQzMl90IGFzSW50MzIg
PSBzdGF0aWNfY2FzdDxpbnQzMl90Pihhc0RvdWJsZSk7CiAgICAgaWYgKGFzRG91YmxlID09IGFz
SW50MzIpCi0gICAgICAgIHJldHVybiB0YWJsZS5jdGlGb3JWYWx1ZShhc0ludDMyKS5leGVjdXRh
YmxlQWRkcmVzczxjaGFyKj4oKTsKLSAgICByZXR1cm4gdGFibGUuY3RpRGVmYXVsdC5leGVjdXRh
YmxlQWRkcmVzczxjaGFyKj4oKTsKKyAgICAgICAgcmV0dXJuIGxpbmtlZFRhYmxlLmN0aUZvclZh
bHVlKG1pbiwgYXNJbnQzMikuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CisgICAgcmV0dXJu
IGxpbmtlZFRhYmxlLm1fY3RpRGVmYXVsdC5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKIH0K
IAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaFN0cmluZywgY2hhcios
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgdGFibGVJbmRleCwgSlNTdHJp
bmcqIHN0cmluZykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmlu
ZGV4IDIyMWI0YzQyNzdhZmI4ZjBkZjI5NmM1NTBiZjQzZTIyNDAzYTNkZjkuLjE0MjgyNzM5Zjc3
MzVmNmI0MmUyZGMxM2Q4NWQxNGY1ZTdlOWMzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0yNjgsNyArMjY4LDcgQEAgSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25NYWtlUm9wZTIsIEpTU3RyaW5nKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
SlNTdHIKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWFrZVJvcGUzLCBKU1N0
cmluZyosIChKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKiwgSlNTdHJpbmcqLCBKU1N0cmluZyop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3RyQ2F0MiwgSlNTdHJpbmcq
LCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3RyQ2F0MywgSlNTdHJpbmcqLCAoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkZpbmRTd2l0Y2hJbW1U
YXJnZXRGb3JEb3VibGUsIGNoYXIqLCAoVk0qLCBFbmNvZGVkSlNWYWx1ZSwgc2l6ZV90IHRhYmxl
SW5kZXgpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRmluZFN3aXRjaElt
bVRhcmdldEZvckRvdWJsZSwgY2hhciosIChWTSosIEVuY29kZWRKU1ZhbHVlLCBzaXplX3QgdGFi
bGVJbmRleCwgaW50MzJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25T
d2l0Y2hTdHJpbmcsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QgdGFibGVJbmRleCwg
SlNTdHJpbmcqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNvbXBhcmVT
dHJpbmdJbXBsTGVzcywgdWludHB0cl90LCAoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKSk7CiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdJbXBsTGVzc0Vx
LCB1aW50cHRyX3QsIChTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZTJiNGU5ZTE3YTdj
Y2QxZGIxNzU1MzRjMWIzNzU3NWMyZTUyMzkxZi4uNWYxMzkzY2VlNzIwMGRmODc3MGM4MDBjY2Iy
NzhlZTUzYjI2MjQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKQEAgLTExNTA0LDEzICsxMTUwNCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGUoTm9kZSosIEVkZ2UgZWRnZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRTd2l0Y2hJbnRKdW1wKAogICAgIFN3aXRjaERhdGEqIGRhdGEsIEdQUlJlZyB2YWx1ZSwgR1BS
UmVnIHNjcmF0Y2gpCiB7Ci0gICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1faml0LmNvZGVC
bG9jaygpLT5zd2l0Y2hKdW1wVGFibGUoZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7Ci0gICAgdGFi
bGUuZW5zdXJlQ1RJVGFibGUoKTsKLSAgICBtX2ppdC5zdWIzMihJbW0zMih0YWJsZS5taW4pLCB2
YWx1ZSk7CisgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2VkVGFibGUg
PSBtX2ppdC5ncmFwaCgpLnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGRhdGEtPnN3aXRjaFRhYmxl
SW5kZXgpOworICAgIFNpbXBsZUp1bXBUYWJsZSYgbGlua2VkVGFibGUgPSBtX2ppdC5ncmFwaCgp
LnN3aXRjaEp1bXBUYWJsZShkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KTsKKyAgICBsaW5rZWRUYWJs
ZS5lbnN1cmVDVElUYWJsZSh1bmxpbmtlZFRhYmxlKTsKKyAgICBtX2ppdC5zdWIzMihJbW0zMih1
bmxpbmtlZFRhYmxlLm1fbWluKSwgdmFsdWUpOwogICAgIGFkZEJyYW5jaCgKLSAgICAgICAgbV9q
aXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgdmFsdWUsIEltbTMyKHRhYmxl
LmN0aU9mZnNldHMuc2l6ZSgpKSksCisgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVy
OjpBYm92ZU9yRXF1YWwsIHZhbHVlLCBJbW0zMihsaW5rZWRUYWJsZS5tX2N0aU9mZnNldHMuc2l6
ZSgpKSksCiAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKLSAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW1QdHIodGFibGUuY3RpT2Zmc2V0cy5iZWdpbigpKSwgc2NyYXRjaCk7CisgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGxpbmtlZFRhYmxlLm1fY3RpT2Zmc2V0cy5iZWdpbigp
KSwgc2NyYXRjaCk7CiAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHNj
cmF0Y2gsIHZhbHVlLCBKSVRDb21waWxlcjo6U2NhbGVQdHIpLCBzY3JhdGNoKTsKICAgICAKICAg
ICBtX2ppdC5mYXJKdW1wKHNjcmF0Y2gsIEpTU3dpdGNoUHRyVGFnKTsKQEAgLTExNTQwLDggKzEx
NTQxLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbW0oTm9kZSogbm9kZSwg
U3dpdGNoRGF0YSogZGF0YSkKICAgICAgICAgZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgdmFsdWVS
ZWdzLnBheWxvYWRHUFIoKSwgc2NyYXRjaCk7CiAgICAgICAgIG5vdEludDMyLmxpbmsoJm1faml0
KTsKICAgICAgICAgYWRkQnJhbmNoKG1faml0LmJyYW5jaElmTm90TnVtYmVyKHZhbHVlUmVncywg
c2NyYXRjaCksIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKKworICAgICAgICBjb25zdCBVbmxp
bmtlZFNpbXBsZUp1bXBUYWJsZSYgdW5saW5rZWRUYWJsZSA9IG1faml0LmdyYXBoKCkudW5saW5r
ZWRTd2l0Y2hKdW1wVGFibGUoZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7CiAgICAgICAgIHNpbGVu
dFNwaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2gpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkZpbmRTd2l0Y2hJbW1UYXJnZXRGb3JEb3VibGUsIHNjcmF0Y2gsICZ2bSgpLCB2YWx1ZVJl
Z3MsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkZpbmRTd2l0Y2hJbW1UYXJnZXRGb3JEb3VibGUsIHNjcmF0Y2gsICZ2bSgpLCB2YWx1ZVJl
Z3MsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgsIHVubGlua2VkVGFibGUubV9taW4pOwogICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAKICAgICAgICAgbV9qaXQuZmFySnVtcChzY3Jh
dGNoLCBKU1N3aXRjaFB0clRhZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApp
bmRleCBjNzc2MjE4ZDhkNDNlNWFhYjFlMjU2YzRkNTZlYzZmNDNkZjEzYTE1Li4xYjI1NDNlNTFi
MWVjYTczM2E4YmNkMjkzZDFlMWVmNDkzMDI4YjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTGluay5jcHAKQEAgLTQ1LDkgKzQ1LDYgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLm1fY29kZUJsb2NrOwogICAgIFZNJiB2bSA9
IGdyYXBoLm1fdm07CiAgICAgCi0gICAgLy8gQjMgd2lsbCBjcmVhdGUgaXRzIG93biBqdW1wIHRh
YmxlcyBhcyBuZWVkZWQuCi0gICAgY29kZUJsb2NrLT5jbGVhclN3aXRjaEp1bXBUYWJsZXMoKTsK
LQogICAgIHN0YXRlLmppdENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0
ID0gZ3JhcGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCgpOwogICAgIAogICAgIGlmICgh
Z3JhcGgubV9wbGFuLmlubGluZUNhbGxGcmFtZXMoKS0+aXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCmluZGV4IDg4ZDNmZDJhNTY5YWE0ZGFkZWYxNTVlMGQxZWU5ZTc0YTdmMzJh
OTQuLmI2NmExM2YyOTJmY2FmNTc0NmYxOTg5MmEyODQ0ZjA5MzY3OGZhYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKQEAgLTcxNCw2ICs3MTQsMTQgQEAgdm9pZCBKSVQ6OmNvbXBpbGVX
aXRob3V0TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGlmIChtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1
bXBUYWJsZXMoKSB8fCBtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1
bXBUYWJsZXMoKSkgeworICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fY29kZUJs
b2NrLT5tX2xvY2spOworICAgICAgICBpZiAobV9jb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRT
d2l0Y2hKdW1wVGFibGVzKCkpCisgICAgICAgICAgICBtX2NvZGVCbG9jay0+ZW5zdXJlSklURGF0
YShsb2NrZXIpLm1fc3dpdGNoSnVtcFRhYmxlcyA9IEZpeGVkVmVjdG9yPFNpbXBsZUp1bXBUYWJs
ZT4obV9jb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzKCkpOworICAg
ICAgICBpZiAobV9jb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzKCkpCisgICAgICAgICAgICBtX2NvZGVCbG9jay0+ZW5zdXJlSklURGF0YShsb2NrZXIpLm1f
c3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IEZpeGVkVmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4obV9j
b2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkpOworICAg
IH0KKwogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSB8fCAobV92
bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyICYmIE9wdGlvbnM6OmRpc2Fzc2VtYmxlQmFzZWxpbmVG
b3JQcm9maWxlcigpKSkpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxKSVRE
aXNhc3NlbWJsZXI+KG1fY29kZUJsb2NrKTsKICAgICBpZiAoVU5MSUtFTFkobV92bS0+bV9wZXJC
eXRlY29kZVByb2ZpbGVyKSkgewpAQCAtODU3LDMyICs4NjUsMjggQEAgQ29tcGlsYXRpb25SZXN1
bHQgSklUOjpsaW5rKCkKICAgICBpZiAocGF0Y2hCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkK
ICAgICAgICAgcmV0dXJuIENvbXBpbGF0aW9uRmFpbGVkOwogCi0gICAgaWYgKG1fY29kZUJsb2Nr
LT5udW1iZXJPZlVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpKSB7Ci0gICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9jb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgIG1f
Y29kZUJsb2NrLT5lbnN1cmVKSVREYXRhKGxvY2tlcikubV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVz
ID0gRml4ZWRWZWN0b3I8U3RyaW5nSnVtcFRhYmxlPihtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxp
bmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSk7Ci0gICAgfQotCiAgICAgLy8gVHJhbnNsYXRl
IHZQQyBvZmZzZXRzIGludG8gYWRkcmVzc2VzIGluIEpJVCBnZW5lcmF0ZWQgY29kZSwgZm9yIHN3
aXRjaCB0YWJsZXMuCiAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX3N3aXRjaGVzKSB7CiAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gcmVjb3JkLmJ5dGVjb2RlSW5kZXgub2Zmc2V0
KCk7CiAKICAgICAgICAgaWYgKHJlY29yZC50eXBlICE9IFN3aXRjaFJlY29yZDo6U3RyaW5nKSB7
CiAgICAgICAgICAgICBBU1NFUlQocmVjb3JkLnR5cGUgPT0gU3dpdGNoUmVjb3JkOjpJbW1lZGlh
dGUgfHwgcmVjb3JkLnR5cGUgPT0gU3dpdGNoUmVjb3JkOjpDaGFyYWN0ZXIpOyAKLSAgICAgICAg
ICAgIEFTU0VSVChyZWNvcmQuanVtcFRhYmxlLnNpbXBsZUp1bXBUYWJsZS0+YnJhbmNoT2Zmc2V0
cy5zaXplKCkgPT0gcmVjb3JkLmp1bXBUYWJsZS5zaW1wbGVKdW1wVGFibGUtPmN0aU9mZnNldHMu
c2l6ZSgpKTsKIAotICAgICAgICAgICAgYXV0byogc2ltcGxlSnVtcFRhYmxlID0gcmVjb3JkLmp1
bXBUYWJsZS5zaW1wbGVKdW1wVGFibGU7Ci0gICAgICAgICAgICBzaW1wbGVKdW1wVGFibGUtPmN0
aURlZmF1bHQgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTU3dpdGNoUHRyVGFnPihtX2xhYmVs
c1tieXRlY29kZU9mZnNldCArIHJlY29yZC5kZWZhdWx0T2Zmc2V0XSk7CisgICAgICAgICAgICB1
bnNpZ25lZCB0YWJsZUluZGV4ID0gcmVjb3JkLnRhYmxlSW5kZXg7CisgICAgICAgICAgICBjb25z
dCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgdW5saW5rZWRUYWJsZSA9IG1fY29kZUJsb2NrLT51
bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKKyAgICAgICAgICAgIFNpbXBsZUp1
bXBUYWJsZSYgbGlua2VkVGFibGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxl
SW5kZXgpOworICAgICAgICAgICAgbGlua2VkVGFibGUubV9jdGlEZWZhdWx0ID0gcGF0Y2hCdWZm
ZXIubG9jYXRpb25PZjxKU1N3aXRjaFB0clRhZz4obV9sYWJlbHNbYnl0ZWNvZGVPZmZzZXQgKyBy
ZWNvcmQuZGVmYXVsdE9mZnNldF0pOwogCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAw
OyBqIDwgcmVjb3JkLmp1bXBUYWJsZS5zaW1wbGVKdW1wVGFibGUtPmJyYW5jaE9mZnNldHMuc2l6
ZSgpOyArK2opIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSByZWNvcmQuanVt
cFRhYmxlLnNpbXBsZUp1bXBUYWJsZS0+YnJhbmNoT2Zmc2V0c1tqXTsKLSAgICAgICAgICAgICAg
ICBzaW1wbGVKdW1wVGFibGUtPmN0aU9mZnNldHNbal0gPSBvZmZzZXQKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaiA9IDA7IGogPCB1bmxpbmtlZFRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5zaXpl
KCk7ICsraikgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHVubGlua2VkVGFi
bGUubV9icmFuY2hPZmZzZXRzW2pdOworICAgICAgICAgICAgICAgIGxpbmtlZFRhYmxlLm1fY3Rp
T2Zmc2V0c1tqXSA9IG9mZnNldAogICAgICAgICAgICAgICAgICAgICA/IHBhdGNoQnVmZmVyLmxv
Y2F0aW9uT2Y8SlNTd2l0Y2hQdHJUYWc+KG1fbGFiZWxzW2J5dGVjb2RlT2Zmc2V0ICsgb2Zmc2V0
XSkKLSAgICAgICAgICAgICAgICAgICAgOiBzaW1wbGVKdW1wVGFibGUtPmN0aURlZmF1bHQ7Cisg
ICAgICAgICAgICAgICAgICAgIDogbGlua2VkVGFibGUubV9jdGlEZWZhdWx0OwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlY29yZC50eXBlID09
IFN3aXRjaFJlY29yZDo6U3RyaW5nKTsKIAotICAgICAgICAgICAgdW5zaWduZWQgdGFibGVJbmRl
eCA9IHJlY29yZC5qdW1wVGFibGUudGFibGVJbmRleDsKKyAgICAgICAgICAgIHVuc2lnbmVkIHRh
YmxlSW5kZXggPSByZWNvcmQudGFibGVJbmRleDsKICAgICAgICAgICAgIGNvbnN0IFVubGlua2Vk
U3RyaW5nSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9jb2RlQmxvY2stPnVubGlua2VkU3Ry
aW5nU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwogICAgICAgICAgICAgU3RyaW5nSnVtcFRh
YmxlJiBsaW5rZWRUYWJsZSA9IG1fY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFi
bGVJbmRleCk7CiAgICAgICAgICAgICBsaW5rZWRUYWJsZS5tX2N0aURlZmF1bHQgPSBwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mPEpTU3dpdGNoUHRyVGFnPihtX2xhYmVsc1tieXRlY29kZU9mZnNldCAr
IHJlY29yZC5kZWZhdWx0T2Zmc2V0XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAyMWQy
YTZjN2Y3MGNhNmUxNmYxYmQ5ZmY3ZGNmMzhhNjNhYzI5MzllLi43MTA0MDFkOWI1Njg0NzM2YTc5
NWMxY2M0ZTFlYWYyMmJmZDQ1YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTEyNiwy
OCArMTI2LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFR5cGUgdHlwZTsKIAotICAg
ICAgICB1bmlvbiB7Ci0gICAgICAgICAgICBTaW1wbGVKdW1wVGFibGUqIHNpbXBsZUp1bXBUYWJs
ZTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHRhYmxlSW5kZXg7Ci0gICAgICAgIH0ganVtcFRhYmxl
OwotCiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleDsKICAgICAgICAgdW5zaWdu
ZWQgZGVmYXVsdE9mZnNldDsKLQotICAgICAgICBTd2l0Y2hSZWNvcmQoU2ltcGxlSnVtcFRhYmxl
KiBqdW1wVGFibGUsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgZGVmYXVs
dE9mZnNldCwgVHlwZSB0eXBlKQotICAgICAgICAgICAgOiB0eXBlKHR5cGUpCi0gICAgICAgICAg
ICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKLSAgICAgICAgICAgICwgZGVmYXVsdE9m
ZnNldChkZWZhdWx0T2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5qdW1wVGFi
bGUuc2ltcGxlSnVtcFRhYmxlID0ganVtcFRhYmxlOwotICAgICAgICB9CisgICAgICAgIHVuc2ln
bmVkIHRhYmxlSW5kZXg7CiAKICAgICAgICAgU3dpdGNoUmVjb3JkKHVuc2lnbmVkIHRhYmxlSW5k
ZXgsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgZGVmYXVsdE9mZnNldCwg
VHlwZSB0eXBlKQogICAgICAgICAgICAgOiB0eXBlKHR5cGUpCiAgICAgICAgICAgICAsIGJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgICwgZGVmYXVsdE9mZnNldChkZWZh
dWx0T2Zmc2V0KQorICAgICAgICAgICAgLCB0YWJsZUluZGV4KHRhYmxlSW5kZXgpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHRoaXMtPmp1bXBUYWJsZS50YWJsZUluZGV4ID0gdGFibGVJbmRleDsK
ICAgICAgICAgfQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCmluZGV4IDEwMjU2NTUwODlkZDgzOTkzNWZjOWY1Y2EwYWNiMjRjOWU2ZjMzMTQuLjgzMmI5
YWI4Y2Q1ZjQxZTExZGI0N2UzOWJlZGUxZmFiNTFmYzc1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtOTAwLDEyICs5MDAsMTMgQEAgdm9pZCBKSVQ6OmVt
aXRfb3Bfc3dpdGNoX2ltbShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIFZpcnR1YWxSZWdpc3RlciBzY3J1dGluZWUgPSBieXRlY29kZS5tX3NjcnV0aW5lZTsKIAog
ICAgIC8vIGNyZWF0ZSBqdW1wIHRhYmxlIGZvciBzd2l0Y2ggZGVzdGluYXRpb25zLCB0cmFjayB0
aGlzIHN3aXRjaCBzdGF0ZW1lbnQuCi0gICAgU2ltcGxlSnVtcFRhYmxlKiBqdW1wVGFibGUgPSAm
bV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKLSAgICBtX3N3aXRjaGVz
LmFwcGVuZChTd2l0Y2hSZWNvcmQoanVtcFRhYmxlLCBtX2J5dGVjb2RlSW5kZXgsIGRlZmF1bHRP
ZmZzZXQsIFN3aXRjaFJlY29yZDo6SW1tZWRpYXRlKSk7Ci0gICAganVtcFRhYmxlLT5lbnN1cmVD
VElUYWJsZSgpOworICAgIGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRh
YmxlID0gbV9jb2RlQmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwor
ICAgIFNpbXBsZUp1bXBUYWJsZSYgbGlua2VkVGFibGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVt
cFRhYmxlKHRhYmxlSW5kZXgpOworICAgIG1fc3dpdGNoZXMuYXBwZW5kKFN3aXRjaFJlY29yZCh0
YWJsZUluZGV4LCBtX2J5dGVjb2RlSW5kZXgsIGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29yZDo6
SW1tZWRpYXRlKSk7CisgICAgbGlua2VkVGFibGUuZW5zdXJlQ1RJVGFibGUodW5saW5rZWRUYWJs
ZSk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNjcnV0aW5lZSwgcmVnVDApOwotICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlUeXBlLCBUcnVz
dGVkSW1tUHRyKCZ2bSgpKSwgcmVnVDAsIHRhYmxlSW5kZXgpOworICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlUeXBlLCBUcnVzdGVkSW1tUHRyKCZ2bSgp
KSwgcmVnVDAsIHRhYmxlSW5kZXgsIHVubGlua2VkVGFibGUubV9taW4pOwogICAgIGZhckp1bXAo
cmV0dXJuVmFsdWVHUFIsIEpTU3dpdGNoUHRyVGFnKTsKIH0KIApAQCAtOTE3LDEyICs5MTgsMTMg
QEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX2NoYXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NydXRpbmVlID0gYnl0ZWNvZGUu
bV9zY3J1dGluZWU7CiAKICAgICAvLyBjcmVhdGUganVtcCB0YWJsZSBmb3Igc3dpdGNoIGRlc3Rp
bmF0aW9ucywgdHJhY2sgdGhpcyBzd2l0Y2ggc3RhdGVtZW50LgotICAgIFNpbXBsZUp1bXBUYWJs
ZSoganVtcFRhYmxlID0gJm1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7
Ci0gICAgbV9zd2l0Y2hlcy5hcHBlbmQoU3dpdGNoUmVjb3JkKGp1bXBUYWJsZSwgbV9ieXRlY29k
ZUluZGV4LCBkZWZhdWx0T2Zmc2V0LCBTd2l0Y2hSZWNvcmQ6OkNoYXJhY3RlcikpOwotICAgIGp1
bXBUYWJsZS0+ZW5zdXJlQ1RJVGFibGUoKTsKKyAgICBjb25zdCBVbmxpbmtlZFNpbXBsZUp1bXBU
YWJsZSYgdW5saW5rZWRUYWJsZSA9IG1fY29kZUJsb2NrLT51bmxpbmtlZFN3aXRjaEp1bXBUYWJs
ZSh0YWJsZUluZGV4KTsKKyAgICBTaW1wbGVKdW1wVGFibGUmIGxpbmtlZFRhYmxlID0gbV9jb2Rl
QmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKKyAgICBtX3N3aXRjaGVzLmFwcGVu
ZChTd2l0Y2hSZWNvcmQodGFibGVJbmRleCwgbV9ieXRlY29kZUluZGV4LCBkZWZhdWx0T2Zmc2V0
LCBTd2l0Y2hSZWNvcmQ6OkNoYXJhY3RlcikpOworICAgIGxpbmtlZFRhYmxlLmVuc3VyZUNUSVRh
YmxlKHVubGlua2VkVGFibGUpOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzY3J1dGlu
ZWUsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5r
bm93bktleVR5cGUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
cmVnVDAsIHRhYmxlSW5kZXgpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoQ2hh
cldpdGhVbmtub3duS2V5VHlwZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCByZWdUMCwgdGFibGVJbmRleCwgdW5saW5rZWRUYWJsZS5tX21pbik7CiAgICAgZmFy
SnVtcChyZXR1cm5WYWx1ZUdQUiwgSlNTd2l0Y2hQdHJUYWcpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggZWRhMjYzZTQ0YzVmYzkx
MjFjYTgyY2RjMzJiMGY1ZTVkOThmMTY4Ny4uYWJmMTdiM2ZhMzA1NWZjYmRmNjkxYzQyZDY3ODI1
MmU3YzQzNjlkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcApAQCAtOTk0LDEyICs5OTQsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX2lt
bShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdp
c3RlciBzY3J1dGluZWUgPSBieXRlY29kZS5tX3NjcnV0aW5lZTsKIAogICAgIC8vIGNyZWF0ZSBq
dW1wIHRhYmxlIGZvciBzd2l0Y2ggZGVzdGluYXRpb25zLCB0cmFjayB0aGlzIHN3aXRjaCBzdGF0
ZW1lbnQuCi0gICAgU2ltcGxlSnVtcFRhYmxlKiBqdW1wVGFibGUgPSAmbV9jb2RlQmxvY2stPnN3
aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKLSAgICBtX3N3aXRjaGVzLmFwcGVuZChTd2l0Y2hS
ZWNvcmQoanVtcFRhYmxlLCBtX2J5dGVjb2RlSW5kZXgsIGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJl
Y29yZDo6SW1tZWRpYXRlKSk7Ci0gICAganVtcFRhYmxlLT5lbnN1cmVDVElUYWJsZSgpOworICAg
IGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9jb2RlQmxv
Y2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgIFNpbXBsZUp1bXBU
YWJsZSYgbGlua2VkVGFibGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5k
ZXgpOworICAgIG1fc3dpdGNoZXMuYXBwZW5kKFN3aXRjaFJlY29yZCh0YWJsZUluZGV4LCBtX2J5
dGVjb2RlSW5kZXgsIGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29yZDo6SW1tZWRpYXRlKSk7Cisg
ICAgbGlua2VkVGFibGUuZW5zdXJlQ1RJVGFibGUodW5saW5rZWRUYWJsZSk7CiAKICAgICBlbWl0
TG9hZChzY3J1dGluZWUsIHJlZ1QxLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25Td2l0Y2hJbW1XaXRoVW5rbm93bktleVR5cGUsIFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBKU1Zh
bHVlUmVncyhyZWdUMSwgcmVnVDApLCB0YWJsZUluZGV4KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZSwgVHJ1c3RlZEltbVB0cigmdm0oKSks
IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHRhYmxlSW5kZXgsIHVubGlua2VkVGFibGUubV9t
aW4pOwogICAgIGZhckp1bXAocmV0dXJuVmFsdWVHUFIsIE5vUHRyVGFnKTsKIH0KIApAQCAtMTAx
MSwxMiArMTAxMiwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfY2hhcihjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBzY3J1dGlu
ZWUgPSBieXRlY29kZS5tX3NjcnV0aW5lZTsKIAogICAgIC8vIGNyZWF0ZSBqdW1wIHRhYmxlIGZv
ciBzd2l0Y2ggZGVzdGluYXRpb25zLCB0cmFjayB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQuCi0gICAg
U2ltcGxlSnVtcFRhYmxlKiBqdW1wVGFibGUgPSAmbV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJs
ZSh0YWJsZUluZGV4KTsKLSAgICBtX3N3aXRjaGVzLmFwcGVuZChTd2l0Y2hSZWNvcmQoanVtcFRh
YmxlLCBtX2J5dGVjb2RlSW5kZXgsIGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29yZDo6Q2hhcmFj
dGVyKSk7Ci0gICAganVtcFRhYmxlLT5lbnN1cmVDVElUYWJsZSgpOworICAgIGNvbnN0IFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9jb2RlQmxvY2stPnVubGlua2Vk
U3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgIFNpbXBsZUp1bXBUYWJsZSYgbGlua2Vk
VGFibGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgIG1f
c3dpdGNoZXMuYXBwZW5kKFN3aXRjaFJlY29yZCh0YWJsZUluZGV4LCBtX2J5dGVjb2RlSW5kZXgs
IGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29yZDo6Q2hhcmFjdGVyKSk7CisgICAgbGlua2VkVGFi
bGUuZW5zdXJlQ1RJVGFibGUodW5saW5rZWRUYWJsZSk7CiAKICAgICBlbWl0TG9hZChzY3J1dGlu
ZWUsIHJlZ1QxLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hDaGFy
V2l0aFVua25vd25LZXlUeXBlLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVS
ZWdzKHJlZ1QxLCByZWdUMCksIHRhYmxlSW5kZXgpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCB0YWJsZUluZGV4LCB1bmxpbmtlZFRhYmxl
Lm1fbWluKTsKICAgICBmYXJKdW1wKHJldHVyblZhbHVlR1BSLCBOb1B0clRhZyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGIyNTAwZjBl
NjIwOThjYjZiZWVjYmE3YzViZjMzYzcwMTlmNWI0MDIuLjdlMjM0NzAzMGNjOGRiN2U1MWRjM2Y3
ZmFkYzQxOTI1NmRiZmJlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcApAQCAtMjc4OSw3ICsyNzg5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lLCBDYWxsRnJhbWUqLCAoSlNHbG9iYWxPYmplY3QK
ICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5LCBzaXplX3QgdGFi
bGVJbmRleCkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoQ2hhcldp
dGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5LCBzaXplX3QgdGFibGVJbmRleCwgaW50MzJfdCBtaW4p
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yNzk5LDE1ICsyNzk5LDE2IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25L
ZXlUeXBlLCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgSlNWYWx1ZSBrZXkgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZEtleSk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpOwogCi0gICAgU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBjb2RlQmxvY2st
PnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKLSAgICB2b2lkKiByZXN1bHQgPSBqdW1wVGFi
bGUuY3RpRGVmYXVsdC5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIGNvbnN0IFNpbXBsZUp1bXBU
YWJsZSYgbGlua2VkVGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4
KTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT51bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSh0YWJsZUlu
ZGV4KS5tX21pbiA9PSBtaW4pOworICAgIHZvaWQqIHJlc3VsdCA9IGxpbmtlZFRhYmxlLm1fY3Rp
RGVmYXVsdC5leGVjdXRhYmxlQWRkcmVzcygpOwogCiAgICAgaWYgKGtleS5pc1N0cmluZygpKSB7
CiAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhrZXkpOwogICAgICAgICBpZiAo
c3RyaW5nLT5sZW5ndGgoKSA9PSAxKSB7CiAgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBzdHJp
bmctPnZhbHVlKGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIG51bGxwdHIpOwotICAgICAgICAgICAgcmVzdWx0ID0ganVtcFRhYmxlLmN0
aUZvclZhbHVlKHZhbHVlWzBdKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICAgICAgcmVz
dWx0ID0gbGlua2VkVGFibGUuY3RpRm9yVmFsdWUobWluLCB2YWx1ZVswXSkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjgxNSw3ICsyODE2LDcgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUs
IGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocmVz
dWx0KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaEltbVdp
dGhVbmtub3duS2V5VHlwZSwgY2hhciosIChWTSogdm1Qb2ludGVyLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkS2V5LCBzaXplX3QgdGFibGVJbmRleCkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKFZNKiB2bVBvaW50
ZXIsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRLZXksIHNpemVfdCB0YWJsZUluZGV4LCBpbnQzMl90
IG1pbikpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yODIzLDE0ICsyODI0LDE1IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93bktleVR5
cGUsIGNoYXIqLCAoVk0qIHZtUG9pCiAgICAgSlNWYWx1ZSBrZXkgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEtleSk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpOwogCi0gICAgU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBjb2RlQmxvY2stPnN3
aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKKyAgICBjb25zdCBTaW1wbGVKdW1wVGFibGUmIGxp
bmtlZFRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CisgICAg
QVNTRVJUKGNvZGVCbG9jay0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCkubV9t
aW4gPT0gbWluKTsKICAgICB2b2lkKiByZXN1bHQ7CiAgICAgaWYgKGtleS5pc0ludDMyKCkpCi0g
ICAgICAgIHJlc3VsdCA9IGp1bXBUYWJsZS5jdGlGb3JWYWx1ZShrZXkuYXNJbnQzMigpKS5leGVj
dXRhYmxlQWRkcmVzcygpOworICAgICAgICByZXN1bHQgPSBsaW5rZWRUYWJsZS5jdGlGb3JWYWx1
ZShtaW4sIGtleS5hc0ludDMyKCkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgZWxzZSBpZiAo
a2V5LmlzRG91YmxlKCkgJiYga2V5LmFzRG91YmxlKCkgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
a2V5LmFzRG91YmxlKCkpKQotICAgICAgICByZXN1bHQgPSBqdW1wVGFibGUuY3RpRm9yVmFsdWUo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oa2V5LmFzRG91YmxlKCkpKS5leGVjdXRhYmxlQWRkcmVzcygp
OworICAgICAgICByZXN1bHQgPSBsaW5rZWRUYWJsZS5jdGlGb3JWYWx1ZShtaW4sIHN0YXRpY19j
YXN0PGludDMyX3Q+KGtleS5hc0RvdWJsZSgpKSkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICBl
bHNlCi0gICAgICAgIHJlc3VsdCA9IGp1bXBUYWJsZS5jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRy
ZXNzKCk7CisgICAgICAgIHJlc3VsdCA9IGxpbmtlZFRhYmxlLm1fY3RpRGVmYXVsdC5leGVjdXRh
YmxlQWRkcmVzcygpOwogICAgIGFzc2VydElzVGFnZ2VkV2l0aDxKU1N3aXRjaFB0clRhZz4ocmVz
dWx0KTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocmVzdWx0KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggYzg2MTEwYTE5OTYz
NjEyY2MxZTk2YzY5MzlhOWUyNGZiZTkwMTdlZi4uOTdhMDkwZGUyODdkNjZjZDMxOWQ0MmE3N2Fl
NDViNDEyOGUwNmUxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKQEAgLTI4MCw4ICsyODAsOCBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lQnlJZCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbAogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZSwgRW5j
b2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUsIHVpbnRwdHJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkpOwogCi1KU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4KSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5
VHlwZSwgY2hhciosIChWTSosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgp
KTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtu
b3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGtleSwg
c2l6ZV90IHRhYmxlSW5kZXgsIGludDMyX3QgbWluKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChWTSosIEVu
Y29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgsIGludDMyX3QgbWluKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaFN0cmluZ1dpdGhVbmtub3duS2V5
VHlwZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90
IHRhYmxlSW5kZXgpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0RnJv
bVNjb3BlLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSW5zdHJ1Y3Rp
b24qIGJ5dGVjb2RlUEMpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0
VG9TY29wZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJ5dGVj
b2RlUEMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCmluZGV4IDc4YjZmNjZmY2EwOWExNTY0NDU5NWRlMjU3NTM3NzgxYzdlMTYxYTUuLmIwNGYw
ZGNlYzExNDlmNGRmZWViZTQxMDVkNTVmZmIxOGFiMDAwZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTU5Nyw3ICsxNTk3LDcgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9pbW0pCiAgICAgaW50MzJfdCBp
bnRWYWx1ZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKICAgICBpbnQgZGVmYXVsdE9m
ZnNldCA9IEpVTVBfT0ZGU0VUKGJ5dGVjb2RlLm1fZGVmYXVsdE9mZnNldCk7CiAgICAgaWYgKHZh
bHVlID09IGludFZhbHVlKQotICAgICAgICBKVU1QX1RPKGNvZGVCbG9jay0+c3dpdGNoSnVtcFRh
YmxlKGJ5dGVjb2RlLm1fdGFibGVJbmRleCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRlZmF1
bHRPZmZzZXQpKTsKKyAgICAgICAgSlVNUF9UTyhjb2RlQmxvY2stPnVubGlua2VkU3dpdGNoSnVt
cFRhYmxlKGJ5dGVjb2RlLm1fdGFibGVJbmRleCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRl
ZmF1bHRPZmZzZXQpKTsKICAgICBlbHNlCiAgICAgICAgIEpVTVBfVE8oZGVmYXVsdE9mZnNldCk7
CiAgICAgTExJTlRfRU5EKCk7CkBAIC0xNjEzLDcgKzE2MTMsNyBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfc3dpdGNoX2NoYXIpCiAgICAgQVNTRVJUKHN0cmluZy0+bGVuZ3RoKCkg
PT0gMSk7CiAgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBKVU1QX09GRlNFVChieXRlY29kZS5tX2Rl
ZmF1bHRPZmZzZXQpOwogICAgIFN0cmluZ0ltcGwqIGltcGwgPSBzdHJpbmctPnZhbHVlKGdsb2Jh
bE9iamVjdCkuaW1wbCgpOwotICAgIEpVTVBfVE8oY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUo
Ynl0ZWNvZGUubV90YWJsZUluZGV4KS5vZmZzZXRGb3JWYWx1ZSgoKmltcGwpWzBdLCBkZWZhdWx0
T2Zmc2V0KSk7CisgICAgSlVNUF9UTyhjb2RlQmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxl
KGJ5dGVjb2RlLm1fdGFibGVJbmRleCkub2Zmc2V0Rm9yVmFsdWUoKCppbXBsKVswXSwgZGVmYXVs
dE9mZnNldCkpOwogICAgIExMSU5UX0VORCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDZm
NWE0ZDE4YjdmZjYzYWU4ZTM3OTk3ZThhYmM4Y2YxMGJmYTI4ODMuLmVjMWE5NTlhZTU2ODM1MjQ0
ZTc3NjE2ZWVjYmMyMTk1NjI4OTY5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMDMzLDEzICsy
MDMzLDE0IEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfaW1tLCBPcFN3aXRjaEltbSwgbWFj
cm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgZ2V0dShzaXplLCBPcFN3aXRjaElt
bSwgbV90YWJsZUluZGV4LCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQy
LCB0MSwgdDApCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCi0gICAgbG9hZHAgQ29kZUJs
b2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKLSAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUs
IHQzCi0gICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9zd2l0Y2hKdW1wVGFibGVzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5r
ZWRDb2RlW3QyXSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9yYXJlRGF0YVt0
Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUsIHQzCisgICAg
bG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRh
YmxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0
Ml0sIHQyCiAgICAgYWRkcCB0MywgdDIKICAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcFN3aXRj
aEltbU5vdEludAotICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAotICAgIGxv
YWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVjdG9yOjptX3N0b3Jh
Z2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgc3ViaSBVbmxpbmtlZFNp
bXBsZUp1bXBUYWJsZTo6bV9taW5bdDJdLCB0MAorICAgIGxvYWRwIFVubGlua2VkU2ltcGxlSnVt
cFRhYmxlOjptX2JyYW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291
bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgogICAgIGJ0cHogdDIsIC5vcFN3aXRjaEltbUZhbGxU
aHJvdWdoCiAgICAgYmlhZXEgdDAsIFJlZkNvdW50ZWRBcnJheVN0b3JhZ2VOb25OdWxsU2l6ZU9m
ZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCiAgICAgbG9hZGkgW3QyLCB0MCwgNF0s
IHQxCkBAIC0yMDYyLDkgKzIwNjMsMTAgQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9jaGFy
LCBPcFN3aXRjaENoYXIsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgIGdl
dHUoc2l6ZSwgT3BTd2l0Y2hDaGFyLCBtX3RhYmxlSW5kZXgsIHQzKQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQxLCB0MCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgotICAgIG11bGkgc2l6
ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKLSAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjpt
X3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGxvYWRw
IENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDJdLCB0MgorICAgIGxvYWRwIFVubGlua2VkQ29k
ZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBVbmxpbmtlZFNpbXBs
ZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6Om1f
dW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNv
dW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJpbmVxIHQx
LCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBiYm5lcSBKU0NlbGw6Om1f
dHlwZVt0MF0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaApAQCAtMjA3OCw4
ICsyMDgwLDggQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9jaGFyLCBPcFN3aXRjaENoYXIs
IG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogLm9wU3dpdGNoQ2hhcjhCaXQ6CiAg
ICAgbG9hZGIgW3QwXSwgdDAKIC5vcFN3aXRjaENoYXJSZWFkeToKLSAgICBzdWJpIFNpbXBsZUp1
bXBUYWJsZTo6bWluW3QyXSwgdDAKLSAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9m
ZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFb
dDJdLCB0MgorICAgIHN1YmkgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fbWluW3QyXSwgdDAK
KyAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRzICsgRml4
ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKICAg
ICBidHB6IHQyLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBiaWFlcSB0MCwgUmVmQ291
bnRlZEFycmF5U3RvcmFnZU5vbk51bGxTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxU
aHJvdWdoCiAgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDUwZTJjMzg1
NjlmZDM0YzU0NjA5MDJmMDljNjQzMjg1ODdkYmFjNzIuLjE0YWQyYTQ5N2ZiMGE3YWY5MzdiMjcz
YTcwZDBhOWZiYWUzYmQyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yMTc4LDEzICsyMTc4LDE0IEBAIGxs
aW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfaW1tLCBPcFN3aXRjaEltbSwgbWFjcm8gKHNpemUsIGdl
dCwganVtcCwgZGlzcGF0Y2gpCiAgICAgZ2V0dShzaXplLCBPcFN3aXRjaEltbSwgbV90YWJsZUlu
ZGV4LCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MSkKICAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFb
dDJdLCB0MgotICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKLSAgICBsb2FkcCBD
b2RlQmxvY2s6OlJhcmVEYXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdDJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDJdLCB0Mgor
ICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxp
IHNpemVvZiBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBVbmxpbmtlZENv
ZGVCbG9jazo6UmFyZURhdGE6Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0
b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKICAgICBhZGRw
IHQzLCB0MgogICAgIGJxYiB0MSwgbnVtYmVyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKLSAgICBz
dWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDEKLSAgICBsb2FkcCBTaW1wbGVKdW1wVGFi
bGU6OmJyYW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFy
cmF5OjptX2RhdGFbdDJdLCB0MgorICAgIHN1YmkgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1f
bWluW3QyXSwgdDEKKyAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hP
ZmZzZXRzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRh
W3QyXSwgdDIKICAgICBidHB6IHQyLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAogICAgIGJpYWVx
IHQxLCBSZWZDb3VudGVkQXJyYXlTdG9yYWdlTm9uTnVsbFNpemVPZmZzZXRbdDJdLCAub3BTd2l0
Y2hJbW1GYWxsVGhyb3VnaAogICAgIGxvYWRpcyBbdDIsIHQxLCA0XSwgdDEKQEAgLTIyMDcsOSAr
MjIwOCwxMCBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoQ2hhciwg
bWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgZ2V0dShzaXplLCBPcFN3aXRj
aENoYXIsIG1fdGFibGVJbmRleCwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXpl
LCB0MiwgdDEpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCi0gICAgbG9hZHAgQ29kZUJs
b2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKLSAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUs
IHQzCi0gICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9zd2l0Y2hKdW1wVGFibGVzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5r
ZWRDb2RlW3QyXSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9yYXJlRGF0YVt0
Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUsIHQzCisgICAg
bG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRh
YmxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0
Ml0sIHQyCiAgICAgYWRkcCB0MywgdDIKICAgICBidHFueiB0MSwgbm90Q2VsbE1hc2ssIC5vcFN3
aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QxXSwgU3RyaW5n
VHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCkBAIC0yMjIzLDggKzIyMjUsOCBAQCBsbGlu
dE9wV2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoQ2hhciwgbWFjcm8gKHNpemUsIGdl
dCwganVtcCwgZGlzcGF0Y2gpCiAub3BTd2l0Y2hDaGFyOEJpdDoKICAgICBsb2FkYiBbdDFdLCB0
MAogLm9wU3dpdGNoQ2hhclJlYWR5OgotICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJd
LCB0MAotICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVj
dG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgc3Vi
aSBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9taW5bdDJdLCB0MAorICAgIGxvYWRwIFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlOjptX2JyYW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9y
YWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgogICAgIGJ0cHogdDIsIC5vcFN3
aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJpYWVxIHQwLCBSZWZDb3VudGVkQXJyYXlTdG9yYWdl
Tm9uTnVsbFNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBsb2Fk
aXMgW3QyLCB0MCwgNF0sIHQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5jcHAKaW5kZXggNDNmZDQ0NzQ0YzIwYmQwMzUxMzU5MjY1MjE1NzJkMzJmMTAyZTRm
MS4uM2IyNzc1NTE4MTg5N2Y2Y2M3ZGIyNjUyOGJhODI5NDI5NmJjYjAzNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtODY1LDE0ICs4NjUs
MTQgQEAgY2xhc3MgQ2FjaGVkU2ltcGxlSnVtcFRhYmxlIDogcHVibGljIENhY2hlZE9iamVjdDxV
bmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gewogcHVibGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUpCiAg
ICAgewotICAgICAgICBtX21pbiA9IGp1bXBUYWJsZS5taW47Ci0gICAgICAgIG1fYnJhbmNoT2Zm
c2V0cy5lbmNvZGUoZW5jb2RlciwganVtcFRhYmxlLmJyYW5jaE9mZnNldHMpOworICAgICAgICBt
X21pbiA9IGp1bXBUYWJsZS5tX21pbjsKKyAgICAgICAgbV9icmFuY2hPZmZzZXRzLmVuY29kZShl
bmNvZGVyLCBqdW1wVGFibGUubV9icmFuY2hPZmZzZXRzKTsKICAgICB9CiAKICAgICB2b2lkIGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYganVtcFRhYmxl
KSBjb25zdAogICAgIHsKLSAgICAgICAganVtcFRhYmxlLm1pbiA9IG1fbWluOwotICAgICAgICBt
X2JyYW5jaE9mZnNldHMuZGVjb2RlKGRlY29kZXIsIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzKTsK
KyAgICAgICAganVtcFRhYmxlLm1fbWluID0gbV9taW47CisgICAgICAgIG1fYnJhbmNoT2Zmc2V0
cy5kZWNvZGUoZGVjb2RlciwganVtcFRhYmxlLm1fYnJhbmNoT2Zmc2V0cyk7CiAgICAgfQogCiBw
cml2YXRlOgpAQCAtOTUwLDcgKzk1MCw3IEBAIGNsYXNzIENhY2hlZENvZGVCbG9ja1JhcmVEYXRh
IDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE+CiAgICAg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVW5saW5rZWRDb2RlQmxvY2s6OlJh
cmVEYXRhJiByYXJlRGF0YSkKICAgICB7CiAgICAgICAgIG1fZXhjZXB0aW9uSGFuZGxlcnMuZW5j
b2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fZXhjZXB0aW9uSGFuZGxlcnMpOwotICAgICAgICBtX3N3
aXRjaEp1bXBUYWJsZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fc3dpdGNoSnVtcFRhYmxl
cyk7CisgICAgICAgIG1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzLmVuY29kZShlbmNvZGVyLCBy
YXJlRGF0YS5tX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyk7CiAgICAgICAgIG1fdW5saW5rZWRT
dHJpbmdTd2l0Y2hKdW1wVGFibGVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3VubGlua2Vk
U3RyaW5nU3dpdGNoSnVtcFRhYmxlcyk7CiAgICAgICAgIG1fZXhwcmVzc2lvbkluZm9GYXRQb3Np
dGlvbnMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlv
bnMpOwogICAgICAgICBtX3R5cGVQcm9maWxlckluZm9NYXAuZW5jb2RlKGVuY29kZXIsIHJhcmVE
YXRhLm1fdHlwZVByb2ZpbGVySW5mb01hcCk7CkBAIC05NjUsNyArOTY1LDcgQEAgY2xhc3MgQ2Fj
aGVkQ29kZUJsb2NrUmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkQ29kZUJs
b2NrOjpSYXJlRGF0YT4KICAgICB7CiAgICAgICAgIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0
YSogcmFyZURhdGEgPSBuZXcgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhIHsgfTsKICAgICAg
ICAgbV9leGNlcHRpb25IYW5kbGVycy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fZXhjZXB0
aW9uSGFuZGxlcnMpOwotICAgICAgICBtX3N3aXRjaEp1bXBUYWJsZXMuZGVjb2RlKGRlY29kZXIs
IHJhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMpOworICAgICAgICBtX3VubGlua2VkU3dpdGNo
SnVtcFRhYmxlcy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fdW5saW5rZWRTd2l0Y2hKdW1w
VGFibGVzKTsKICAgICAgICAgbV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMuZGVjb2Rl
KGRlY29kZXIsIHJhcmVEYXRhLT5tX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcyk7CiAg
ICAgICAgIG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnMuZGVjb2RlKGRlY29kZXIsIHJhcmVE
YXRhLT5tX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zKTsKICAgICAgICAgbV90eXBlUHJvZmls
ZXJJbmZvTWFwLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFw
KTsKQEAgLTk3OSw3ICs5NzksNyBAQCBjbGFzcyBDYWNoZWRDb2RlQmxvY2tSYXJlRGF0YSA6IHB1
YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhPgogCiBwcml2YXRl
OgogICAgIENhY2hlZFZlY3RvcjxVbmxpbmtlZEhhbmRsZXJJbmZvPiBtX2V4Y2VwdGlvbkhhbmRs
ZXJzOwotICAgIENhY2hlZFZlY3RvcjxDYWNoZWRTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVt
cFRhYmxlczsKKyAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkU2ltcGxlSnVtcFRhYmxlPiBtX3VubGlu
a2VkU3dpdGNoSnVtcFRhYmxlczsKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkU3RyaW5nSnVtcFRh
YmxlPiBtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKICAgICBDYWNoZWRWZWN0b3I8
RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRpb24+IG1fZXhwcmVzc2lvbkluZm9GYXRQb3Np
dGlvbnM7CiAgICAgQ2FjaGVkSGFzaE1hcDx1bnNpZ25lZCwgVW5saW5rZWRDb2RlQmxvY2s6OlJh
cmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2U+IG1fdHlwZVByb2ZpbGVySW5mb01h
cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmggYi9Tb3VyY2UvV1RG
L3d0Zi9GaXhlZFZlY3Rvci5oCmluZGV4IGUzZjBhOTM4NTQyN2QyNTk5NDNhOWUyMzg1NWRjZmZh
NzU5ZThjMTguLjMyOGY5ODE1MTBiZjdiNjRmNzMwZjFhYmI4ZWUxMTA4MzM3NmMxZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYv
Rml4ZWRWZWN0b3IuaApAQCAtNzUsNiArNzUsMTggQEAgY2xhc3MgRml4ZWRWZWN0b3IgewogICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CisgICAgZXhwbGljaXQgRml4ZWRWZWN0
b3IoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIpCisg
ICAgICAgIDogbV9zdG9yYWdlKFdURk1vdmUob3RoZXIpKQorICAgIHsgfQorCisgICAgdGVtcGxh
dGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CisgICAg
Rml4ZWRWZWN0b3ImIG9wZXJhdG9yPShWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlcj4mJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fc3RvcmFnZSA9IFdURk1vdmUob3Ro
ZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCiAgICAgc2l6ZV90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3N0b3JhZ2Uuc2l6ZSgpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9zdG9yYWdlLmlzRW1wdHkoKTsgfQogICAgIHNpemVfdCBieXRlU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5ieXRlU2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRB
cnJheS5oCmluZGV4IDY3YWQ3Nzc2ZTU4OTc3NGFhMWY0YmFhMDQ1ZDJhNzE0Y2IwYmFjMGIuLmIw
OWEzZjM2YWEwZTc0N2NkOTFjMGRlMTBiNzBmNTM3ZThhMjMwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50
ZWRBcnJheS5oCkBAIC0xMTIsNiArMTEyLDI0IEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7CiAg
ICAgICAgIEFTU0VSVChIZWFkZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5sZW5ndGggPT0gb3RoZXIu
c2l6ZSgpKTsKICAgICAgICAgVmVjdG9yVHlwZU9wZXJhdGlvbnM8VD46OnVuaW5pdGlhbGl6ZWRD
b3B5KG90aGVyLmJlZ2luKCksIG90aGVyLmVuZCgpLCBkYXRhKTsKICAgICB9CisKKyAgICB0ZW1w
bGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAg
ICBleHBsaWNpdCBSZWZDb3VudGVkQXJyYXkoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXI+JiYgb3RoZXIpCisgICAgeworICAgICAgICBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlcj4gdmVjdG9yKFdURk1vdmUob3RoZXIpKTsKKyAgICAgICAg
aWYgKHZlY3Rvci5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFB0clRyYWl0czo6ZXhjaGFuZ2Uo
bV9kYXRhLCBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIFQqIGRhdGEgPSAoc3RhdGljX2Nhc3Q8SGVhZGVyKj4oUmVmQ291bnRlZEFycmF5TWFsbG9j
OjptYWxsb2MoSGVhZGVyOjpzaXplKCkgKyBzaXplb2YoVCkgKiB2ZWN0b3Iuc2l6ZSgpKSkpLT5w
YXlsb2FkKCk7CisgICAgICAgIG1fZGF0YSA9IGRhdGE7CisgICAgICAgIEhlYWRlcjo6ZnJvbVBh
eWxvYWQoZGF0YSktPnJlZkNvdW50ID0gMTsKKyAgICAgICAgSGVhZGVyOjpmcm9tUGF5bG9hZChk
YXRhKS0+bGVuZ3RoID0gdmVjdG9yLnNpemUoKTsKKyAgICAgICAgQVNTRVJUKEhlYWRlcjo6ZnJv
bVBheWxvYWQoZGF0YSktPmxlbmd0aCA9PSB2ZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmVjdG9yLnNpemUoKTsgKytpbmRleCkKKyAgICAg
ICAgICAgIG5ldyAoZGF0YSArIGluZGV4KSBUKFdURk1vdmUodmVjdG9yW2luZGV4XSkpOworICAg
IH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclRyYWl0cyA9IFB0clRyYWl0cz4K
ICAgICBSZWZDb3VudGVkQXJyYXkmIG9wZXJhdG9yPShjb25zdCBSZWZDb3VudGVkQXJyYXk8VCwg
T3RoZXJUcmFpdHM+JiBvdGhlcikKQEAgLTE0OCw2ICsxNjYsMzIgQEAgY2xhc3MgUmVmQ291bnRl
ZEFycmF5IHsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgorICAgIFJlZkNv
dW50ZWRBcnJheSYgb3BlcmF0b3I9KFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyPiYmIG90aGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXI+IHZlY3RvcihXVEZNb3ZlKG90aGVyKSk7CisgICAgICAgIFQqIG9s
ZERhdGEgPSBkYXRhKCk7CisgICAgICAgIGlmICh2ZWN0b3IuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgUHRyVHJhaXRzOjpleGNoYW5nZShtX2RhdGEsIG51bGxwdHIpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIFQqIGRhdGEgPSAoc3RhdGljX2Nhc3Q8SGVhZGVyKj4oUmVmQ291bnRlZEFy
cmF5TWFsbG9jOjptYWxsb2MoSGVhZGVyOjpzaXplKCkgKyBzaXplb2YoVCkgKiB2ZWN0b3Iuc2l6
ZSgpKSkpLT5wYXlsb2FkKCk7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhOworICAgICAgICAg
ICAgSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+cmVmQ291bnQgPSAxOworICAgICAgICAgICAg
SGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+bGVuZ3RoID0gdmVjdG9yLnNpemUoKTsKKyAgICAg
ICAgICAgIEFTU0VSVChIZWFkZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5sZW5ndGggPT0gdmVjdG9y
LnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB2
ZWN0b3Iuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgICAgIG5ldyAoZGF0YSArIGluZGV4
KSBUKFdURk1vdmUodmVjdG9yW2luZGV4XSkpOworICAgICAgICB9CisgICAgICAgIGlmICghb2xk
RGF0YSkKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgaWYgKC0tSGVhZGVyOjpm
cm9tUGF5bG9hZChvbGREYXRhKS0+cmVmQ291bnQpCisgICAgICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+OjpkZXN0cnVjdChvbGREYXRhLCBvbGRE
YXRhICsgSGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRhKS0+bGVuZ3RoKTsKKworICAgICAgICBS
ZWZDb3VudGVkQXJyYXlNYWxsb2M6OmZyZWUoSGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRhKSk7
CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKICAgICB+UmVmQ291bnRlZEFycmF5KCkK
ICAgICB7CiAgICAgICAgIGlmICghbV9kYXRhKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425845</attachid>
            <date>2021-04-13 01:03:54 -0700</date>
            <delta_ts>2021-04-13 19:22:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224472-20210413010353.patch</filename>
            <type>text/plain</type>
            <size>72677</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MDY0Y2Y1ZTA2Njg0ZmRhODYxMDJhOWIzMGY2YzliNzc4Y2FiOGQzLi4wM2E3YTVjNWJmMDMxNTUy
YmQzYTFhNzhjNzE4YmRjMmIyM2MzMjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAyMS0wNC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERvIG5vdCBjb3B5IFNpbXBsZUp1bXBUYWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDcyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUR1bXBlci5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6ZHVtcFN3aXRjaEp1bXBUYWJsZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb246OnJ1bik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnN3aXRjaEp1bXBUYWJsZSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMgY29uc3QpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpudW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmNsZWFyU3dpdGNoSnVtcFRhYmxlcyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkU3dpdGNoSnVtcFRhYmxlRnJvbVByb2ZpbGVkQ29k
ZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9KdW1wVGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpTaW1wbGVKdW1wVGFibGU6Om9mZnNldEZvclZhbHVlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBieXRlY29kZS9KdW1wVGFibGUuaDoKKyAgICAgICAgKEpTQzo6U2ltcGxlSnVtcFRh
YmxlOjplbnN1cmVDVElUYWJsZSk6CisgICAgICAgIChKU0M6OlNpbXBsZUp1bXBUYWJsZTo6Y3Rp
Rm9yVmFsdWUgY29uc3QpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U2lt
cGxlSnVtcFRhYmxlOjpjbG9uZU5vbkpJVFBhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpTaW1wbGVKdW1wVGFibGU6OmN0aUZvclZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6U2ltcGxlSnVtcFRhYmxlOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkU2ltcGxlSnVtcFRhYmxlOjpvZmZz
ZXRGb3JWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkU2ltcGxlSnVtcFRhYmxl
OjphZGQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bnVtYmVyT2ZVbmxpbmtl
ZFN3aXRjaEp1bXBUYWJsZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnN3aXRjaEp1bXBUYWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAqIGJ5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpudW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcyBj
b25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjphZGRVbmxp
bmtlZFN3aXRjaEp1bXBUYWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yOjp1bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yOjpudW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6YWRkU3dpdGNo
SnVtcFRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3I6OnN3aXRjaEp1bXBUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmJlZ2luU3dpdGNoKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1bXBUYWJsZUZvclN3aXRjaCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbmRTd2l0Y2gpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJ
bmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KToKKyAgICAgICAgKiBkZmcvREZHR3Jh
cGguaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbnRKdW1w
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbSk6Cisg
ICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAg
ICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVXaXRob3V0TGlu
a2luZyk6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAoSlNDOjpTd2l0Y2hSZWNvcmQ6OlN3aXRjaFJlY29yZCk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hfY2hhcik6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hf
aW1tKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N3aXRjaF9jaGFyKToKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRTaW1wbGVKdW1wVGFi
bGU6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFNpbXBsZUp1bXBUYWJsZTo6ZGVjb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrUmFyZURhdGE6OmVuY29kZSk6
CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9ja1JhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgor
CiAyMDIxLTA0LTEyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0pTQ10gUmVtb3ZlIENvZGVCbG9jazo6bV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggODVhY2M5MzVhYzI5Y2Q0YjA1YmQyZDYyNjYyOWQ5OTM4NWMwYzgyZi4uYjdm
MTdhMjQxNGViZjI2NWRkODQxNzE3MjlhYzE4MDQzMjA5ZTY3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAyMS0wNC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtKU0NdIERvIG5vdCBjb3B5IFNpbXBsZUp1bXBUYWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIE1vdmUgY29uc3RydWN0b3IgLyBvcGVy
YXRvciBmb3IgRml4ZWRWZWN0b3IgLyBSZWZDb3VudGVkQXJyYXksIHRoaXMgaXMgbmVjZXNzYXJ5
IHRvIGtlZXAgYmFja2luZyBtZW1vcnkgcG9pbnRlciB0aGUgc2FtZSBhZnRlciB0aGUgbW92ZS4K
KyAgICAgICAgVGhlIGFib3ZlIHJlcXVpcmVtZW50IGlzIHVzZWQgd2hlbiBtb3ZpbmcgU2ltcGxl
SnVtcFRhYmxlIGFsbG9jYXRlZCBpbiBERkcuCisKKyAgICAgICAgKiB3dGYvRml4ZWRWZWN0b3Iu
aDoKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OkZpeGVkVmVjdG9yKToKKyAgICAgICAgKFdU
Rjo6Rml4ZWRWZWN0b3I6Om9wZXJhdG9yPSk6CisgICAgICAgICogd3RmL1JlZkNvdW50ZWRBcnJh
eS5oOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OlJlZkNvdW50ZWRBcnJheSk6Cisg
ICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6b3BlcmF0b3I9KToKKwogMjAyMS0wNC0xMiAg
QmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW1BsYXlT
dGF0aW9uXSBFbmFibGUgV1RGQ3Jhc2hXaXRoSW5mbyBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggMDBm
OWVjOTdjZTcyZTk2YWY3YTEzYjNiNGQ2ZjllNzNiY2U1MjIzYS4uMjFjY2NjNDhlY2I4YzBkYzNl
MzYwZGU1MjhiYTNhMjMyOGI3ZWY3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBAIC0xNzQsMTggKzE3NCwxOCBAQCB2b2lkIENv
ZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEV4Y2VwdGlvbkhhbmRsZXJzKCkKIHRl
bXBsYXRlPGNsYXNzIEJsb2NrPgogdm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBTd2l0Y2hKdW1wVGFibGVzKCkKIHsKLSAgICBpZiAodW5zaWduZWQgY291bnQgPSB0aGlz
LT5ibG9jaygpLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKSkgeworICAgIGlmICh1bnNpZ25l
ZCBjb3VudCA9IHRoaXMtPmJsb2NrKCktPm51bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVz
KCkpIHsKICAgICAgICAgdGhpcy0+bV9vdXQucHJpbnRmKCJTd2l0Y2ggSnVtcCBUYWJsZXM6XG4i
KTsKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIHRo
aXMtPm1fb3V0LnByaW50ZigiICAlMWQgPSB7XG4iLCBpKTsKLSAgICAgICAgICAgIGNvbnN0IGF1
dG8mIHN3aXRjaEp1bXBUYWJsZSA9IHRoaXMtPmJsb2NrKCktPnN3aXRjaEp1bXBUYWJsZShpKTsK
KyAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN3aXRjaEp1bXBUYWJsZSA9IHRoaXMtPmJsb2NrKCkt
PnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGkpOwogICAgICAgICAgICAgaW50IGVudHJ5ID0gMDsK
LSAgICAgICAgICAgIGF1dG8gZW5kID0gc3dpdGNoSnVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZW5k
KCk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gaXRlciA9IHN3aXRjaEp1bXBUYWJsZS5icmFuY2hP
ZmZzZXRzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIsICsrZW50cnkpIHsKKyAgICAgICAg
ICAgIGF1dG8gZW5kID0gc3dpdGNoSnVtcFRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5lbmQoKTsKKyAg
ICAgICAgICAgIGZvciAoYXV0byBpdGVyID0gc3dpdGNoSnVtcFRhYmxlLm1fYnJhbmNoT2Zmc2V0
cy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2VudHJ5KSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCEqaXRlcikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAgICAgdGhpcy0+bV9vdXQucHJpbnRmKCJcdFx0JTRkID0+ICUwNGRcbiIsIGVudHJ5ICsgc3dp
dGNoSnVtcFRhYmxlLm1pbiwgKml0ZXIpOworICAgICAgICAgICAgICAgIHRoaXMtPm1fb3V0LnBy
aW50ZigiXHRcdCU0ZCA9PiAlMDRkXG4iLCBlbnRyeSArIHN3aXRjaEp1bXBUYWJsZS5tX21pbiwg
Kml0ZXIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdGhpcy0+bV9vdXQucHJpbnRmKCIg
ICAgICB9XG4iKTsKICAgICAgICAgICAgICsraTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCmlu
ZGV4IDRkNTdkYTVhMzBlMmQxOWYwYzg1Y2I1Y2Q5ZGJmMzcwODUzMzVmNTcuLjgyOGQ4YTA0Mzdl
MmVmZDljNmUzY2M4ZjBmN2U1NGNlZWEzNjk5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cApAQCAtMjE2LDEyICsyMTYsMTIgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6
cnVuKCkKICAgICAvLyBTZXR1cCB0aGUgZ2xvYmFsIHN3aXRjaCBmb3IgdGhlIGdlbmVyYXRvci4K
ICAgICB7CiAgICAgICAgIGF1dG8gbmV4dFRvRW50ZXJQb2ludCA9IGVudGVyUG9pbnQoKS5uZXh0
KCk7Ci0gICAgICAgIHVuc2lnbmVkIHN3aXRjaFRhYmxlSW5kZXggPSBtX2NvZGVCbG9jay0+bnVt
YmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7CisgICAgICAgIHVuc2lnbmVkIHN3aXRjaFRhYmxlSW5k
ZXggPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKTsKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHN0YXRlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJ
bmNsdWRpbmdUaGlzKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpBcmd1bWVudDo6
U3RhdGUpKTsKLSAgICAgICAgYXV0byYganVtcFRhYmxlID0gbV9jb2RlQmxvY2stPmFkZFN3aXRj
aEp1bXBUYWJsZSgpOwotICAgICAgICBqdW1wVGFibGUubWluID0gMDsKLSAgICAgICAganVtcFRh
YmxlLmJyYW5jaE9mZnNldHMgPSBGaXhlZFZlY3RvcjxpbnQzMl90PihtX3lpZWxkcy5zaXplKCkg
KyAxKTsKLSAgICAgICAgc3RkOjpmaWxsKGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmJlZ2luKCks
IGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmVuZCgpLCAwKTsKKyAgICAgICAgYXV0byYganVtcFRh
YmxlID0gbV9jb2RlQmxvY2stPmFkZFVubGlua2VkU3dpdGNoSnVtcFRhYmxlKCk7CisgICAgICAg
IGp1bXBUYWJsZS5tX21pbiA9IDA7CisgICAgICAgIGp1bXBUYWJsZS5tX2JyYW5jaE9mZnNldHMg
PSBGaXhlZFZlY3RvcjxpbnQzMl90PihtX3lpZWxkcy5zaXplKCkgKyAxKTsKKyAgICAgICAgc3Rk
OjpmaWxsKGp1bXBUYWJsZS5tX2JyYW5jaE9mZnNldHMuYmVnaW4oKSwganVtcFRhYmxlLm1fYnJh
bmNoT2Zmc2V0cy5lbmQoKSwgMCk7CiAgICAgICAgIGp1bXBUYWJsZS5hZGQoMCwgbmV4dFRvRW50
ZXJQb2ludC5vZmZzZXQoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3lp
ZWxkcy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIGp1bXBUYWJsZS5hZGQoaSArIDEsIG1feWll
bGRzW2ldLnBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggZGI4Mjg2YTg3NDc4MzBiMzdmNzAxN2ZhYzk5Mjc2MmQyMTMwYjA4My4uMzc5
YThmN2EzYjM4N2M3Yjg2ZGUxZjBlMWRlNjNlZjMxODZjNTcxNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTMyMyw5ICszMjMsNyBAQCB2b2lk
IENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENv
ZGVCbG9jayYgb3RoZXIpCiAKICAgICBpZiAob3RoZXIubV9yYXJlRGF0YSkgewogICAgICAgICBj
cmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIAogICAgICAgICBtX3JhcmVEYXRh
LT5tX2V4Y2VwdGlvbkhhbmRsZXJzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5k
bGVyczsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9y
YXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgIH0KIH0KIApAQCAtNDE3LDcgKzQxNSw3
IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIG1fZnVuY3Rpb25FeHByc1tpXS5z
ZXQodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJsZS0+bGluayh2bSwgdG9wTGV2ZWxFeGVjdXRh
YmxlLCBvd25lckV4ZWN1dGFibGUtPnNvdXJjZSgpLCBXVEY6Om51bGxvcHQsIE5vSW50cmluc2lj
LCBvd25lckV4ZWN1dGFibGUtPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpKSk7CiAgICAgfQog
Ci0gICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCkg
fHwgdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpKSB7CisgICAg
aWYgKHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCkpIHsKICAg
ICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwogCiAgICAgICAgIGlmIChzaXplX3Qg
Y291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpKSB7
CkBAIC00MzMsMTYgKzQzMSw2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAjZW5kaWYKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQotCi0gICAgICAgIGlmIChzaXplX3QgY291bnQgPSB1bmxp
bmtlZENvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCkpIHsKLSAgICAgICAgICAg
IG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5yZXNpemVUb0ZpdChjb3VudCk7Ci0gICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgICAg
ICAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgc291cmNlVGFibGUgPSB1bmxpbmtlZENvZGVC
bG9jay0+c3dpdGNoSnVtcFRhYmxlKGkpOwotICAgICAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJs
ZSYgZGVzdFRhYmxlID0gbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzW2ldOwotICAgICAg
ICAgICAgICAgIGRlc3RUYWJsZS5icmFuY2hPZmZzZXRzID0gc291cmNlVGFibGUuYnJhbmNoT2Zm
c2V0czsKLSAgICAgICAgICAgICAgICBkZXN0VGFibGUubWluID0gc291cmNlVGFibGUubWluOwot
ICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0
cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVudmlyb25tZW50cy4KQEAgLTIxMTksMTMgKzIxMDcs
OSBAQCB2b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiwgU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogICAgIGlmIChzaHJpbmtNb2RlID09IFNocmlua01v
ZGU6OkVhcmx5U2hyaW5rKQogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzLnNocmlua1RvRml0
KCk7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzaHJpbmtNb2RlKTsKICAgICBtX2NvbnN0YW50
UmVnaXN0ZXJzLnNocmlua1RvRml0KCk7CiAjZW5kaWYKLQotICAgIGlmIChzaHJpbmtNb2RlID09
IFNocmlua01vZGU6OkVhcmx5U2hyaW5rKSB7Ci0gICAgICAgIGlmIChtX3JhcmVEYXRhKQotICAg
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7Ci0g
ICAgfSAvLyBlbHNlIGRvbid0IHNocmluayB0aGVzZSwgYmVjYXVzZSB3ZSB3b3VsZCBoYXZlIGFs
cmVhZHkgcG9pbnRlZCBwb2ludGVycyBpbnRvIHRoZXNlIHRhYmxlcy4KIH0KIAogI2lmIEVOQUJM
RShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXgg
NmY4MDA0OTQ5NTJhOTIwNzA3ZjY0YzA5ZmYwZjMzMmZjMDgwOTgwNi4uMzExZjY1NDFhM2VjMDdj
YzA1ZDBlYmMzZjdiYjM3ODNiNTg3ZTBlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaApAQCAtMjc4LDYgKzI3OCw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBQ
YWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPj4gbV9pbmNvbWluZ0NhbGxzOwogICAg
ICAgICBTZW50aW5lbExpbmtlZExpc3Q8UG9seW1vcnBoaWNDYWxsTm9kZSwgUGFja2VkUmF3U2Vu
dGluZWxOb2RlPFBvbHltb3JwaGljQ2FsbE5vZGU+PiBtX2luY29taW5nUG9seW1vcnBoaWNDYWxs
czsKICAgICAgICAgRml4ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlPiBtX3JhcmVDYXNlUHJvZmls
ZXM7CisgICAgICAgIEZpeGVkVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFi
bGVzOwogICAgICAgICBGaXhlZFZlY3RvcjxTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNo
SnVtcFRhYmxlczsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBDVG9Db2RlT3JpZ2luTWFwPiBt
X3BjVG9Db2RlT3JpZ2luTWFwOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9m
ZnNldExpc3Q+IG1fY2FsbGVlU2F2ZVJlZ2lzdGVyczsKQEAgLTYxMywyMSArNjE0LDE1IEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgLy8gSnVtcCBUYWJsZXMKIAot
ICAgIHNpemVfdCBudW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVEYXRhID8gbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNpemUoKSA6IDA7IH0KLSAg
ICBTaW1wbGVKdW1wVGFibGUmIHN3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBSRUxF
QVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRh
Ymxlc1t0YWJsZUluZGV4XTsgfQotICAgIHZvaWQgY2xlYXJTd2l0Y2hKdW1wVGFibGVzKCkKLSAg
ICB7Ci0gICAgICAgIGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLmNsZWFyKCk7Ci0gICAgfQotI2lmIEVO
QUJMRShERkdfSklUKQotICAgIHZvaWQgYWRkU3dpdGNoSnVtcFRhYmxlRnJvbVByb2ZpbGVkQ29k
ZUJsb2NrKFNpbXBsZUp1bXBUYWJsZSYgcHJvZmlsZWQpCisjaWYgRU5BQkxFKEpJVCkKKyAgICBT
aW1wbGVKdW1wVGFibGUmIHN3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkKICAgICB7Ci0g
ICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgbV9yYXJlRGF0YS0+
bV9zd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChwcm9maWxlZC5jbG9uZU5vbkpJVFBhcnQoKSk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faml0RGF0YSk7CisgICAgICAgIHJldHVybiBtX2ppdERh
dGEtPm1fc3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsKICAgICB9CiAjZW5kaWYKKyAgICBz
aXplX3QgbnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkQ29kZS0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKTsgfQorICAg
IGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFN3aXRjaEp1bXBUYWJsZShp
bnQgdGFibGVJbmRleCkgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPnVubGlua2VkU3dpdGNoSnVt
cFRhYmxlKHRhYmxlSW5kZXgpOyB9CiAKICNpZiBFTkFCTEUoSklUKQogICAgIFN0cmluZ0p1bXBU
YWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KQpAQCAtODg3LDkgKzg4
Miw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHB1YmxpYzoKICAg
ICAgICAgVmVjdG9yPEhhbmRsZXJJbmZvPiBtX2V4Y2VwdGlvbkhhbmRsZXJzOwogCi0gICAgICAg
IC8vIEp1bXAgVGFibGVzCi0gICAgICAgIFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNo
SnVtcFRhYmxlczsKLQogICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmls
ZUFuZFZpcnR1YWxSZWdpc3RlckJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKIAogICAgICAgICBE
aXJlY3RFdmFsQ29kZUNhY2hlIG1fZGlyZWN0RXZhbENvZGVDYWNoZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5jcHAKaW5kZXggZTIyYWQwM2M5Y2U0MWQ2YWY1
ODE3ZjMxZDY0ZmVhNWJjNzA3ZDZmMC4uNDQ5NTJkOTFmOTcxNzE2ODU5ZjIyZjI0OWU1MDQ5MjE2
NTgzMGUxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBU
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5j
cHAKQEAgLTM0LDE0ICszNCw0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbnQzMl90IFNpbXBs
ZUp1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUoaW50MzJfdCB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0
T2Zmc2V0KQotewotICAgIGlmICh2YWx1ZSA+PSBtaW4gJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHZhbHVlIC0gbWluKSA8IGJyYW5jaE9mZnNldHMuc2l6ZSgpKSB7Ci0gICAgICAgIGludDMyX3Qg
b2Zmc2V0ID0gYnJhbmNoT2Zmc2V0c1t2YWx1ZSAtIG1pbl07Ci0gICAgICAgIGlmIChvZmZzZXQp
Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0OwotICAgIH0KLSAgICByZXR1cm4gZGVmYXVsdE9m
ZnNldDsgICAgICAgIAotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAppbmRleCBlNzZiNTAwNTA5NjZhMjk5ZTkzY2EzY2Vj
N2ViMzMyYzNjOTk1NzRjLi5iYTA1NjEzMWI5M2RmZDM5MzYwZTU5Y2EwNWQyZTgzMDg1MDkyN2Fm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oCkBAIC01Miw0
OSArNTIsMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKICNlbmRpZgogCi0gICAgc3RydWN0
IFNpbXBsZUp1bXBUYWJsZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGUgdHdvIFZlY3RvcnMgY2Fu
IGJlIGNvbWJpbmVkIGludG8gb25lIFZlY3RvcjxPZmZzZXRMb2NhdGlvbj4KLSAgICAgICAgRml4
ZWRWZWN0b3I8aW50MzJfdD4gYnJhbmNoT2Zmc2V0czsKLSAgICAgICAgaW50MzJfdCBtaW4geyBJ
TlQzMl9NSU4gfTsKICNpZiBFTkFCTEUoSklUKQotICAgICAgICBWZWN0b3I8Q29kZUxvY2F0aW9u
TGFiZWw8SlNTd2l0Y2hQdHJUYWc+PiBjdGlPZmZzZXRzOwotICAgICAgICBDb2RlTG9jYXRpb25M
YWJlbDxKU1N3aXRjaFB0clRhZz4gY3RpRGVmYXVsdDsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKERG
R19KSVQpCi0gICAgICAgIC8vIEpJVCBwYXJ0IGNhbiBiZSBsYXRlciBleHBhbmRlZCB3aXRob3V0
IHRha2luZyBhIGxvY2sgd2hpbGUgbm9uLUpJVCBwYXJ0IGlzIHN0YWJsZSBhZnRlciBDb2RlQmxv
Y2sgaXMgZmluYWxpemVkLgotICAgICAgICBTaW1wbGVKdW1wVGFibGUgY2xvbmVOb25KSVRQYXJ0
KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgU2ltcGxlSnVtcFRhYmxlIHJlc3VsdDsK
LSAgICAgICAgICAgIHJlc3VsdC5icmFuY2hPZmZzZXRzID0gYnJhbmNoT2Zmc2V0czsKLSAgICAg
ICAgICAgIHJlc3VsdC5taW4gPSBtaW47Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
ICAgICB9Ci0jZW5kaWYKKyAgICBzdHJ1Y3QgU2ltcGxlSnVtcFRhYmxlIHsKKyAgICAgICAgRml4
ZWRWZWN0b3I8Q29kZUxvY2F0aW9uTGFiZWw8SlNTd2l0Y2hQdHJUYWc+PiBtX2N0aU9mZnNldHM7
CisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTU3dpdGNoUHRyVGFnPiBtX2N0aURlZmF1bHQ7
CiAKLSAgICAgICAgaW50MzJfdCBvZmZzZXRGb3JWYWx1ZShpbnQzMl90IHZhbHVlLCBpbnQzMl90
IGRlZmF1bHRPZmZzZXQpOwotI2lmIEVOQUJMRShKSVQpCi0gICAgICAgIHZvaWQgZW5zdXJlQ1RJ
VGFibGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoY3RpT2Zmc2V0cy5pc0VtcHR5
KCkgfHwgY3RpT2Zmc2V0cy5zaXplKCkgPT0gYnJhbmNoT2Zmc2V0cy5zaXplKCkpOwotICAgICAg
ICAgICAgY3RpT2Zmc2V0cy5ncm93KGJyYW5jaE9mZnNldHMuc2l6ZSgpKTsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgaW5saW5lIENvZGVMb2NhdGlvbkxhYmVsPEpTU3dpdGNoUHRyVGFn
PiBjdGlGb3JWYWx1ZShpbnQzMl90IHZhbHVlKQorICAgICAgICB2b2lkIGVuc3VyZUNUSVRhYmxl
KGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlKQogICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAodmFsdWUgPj0gbWluICYmIHN0YXRpY19jYXN0PHVpbnQzMl90Pih2
YWx1ZSAtIG1pbikgPCBjdGlPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
Y3RpT2Zmc2V0c1t2YWx1ZSAtIG1pbl07Ci0gICAgICAgICAgICByZXR1cm4gY3RpRGVmYXVsdDsK
KyAgICAgICAgICAgIGlmICghbV9jdGlPZmZzZXRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBtX2N0aU9mZnNldHMgPSBGaXhlZFZlY3RvcjxDb2RlTG9j
YXRpb25MYWJlbDxKU1N3aXRjaFB0clRhZz4+KHVubGlua2VkVGFibGUubV9icmFuY2hPZmZzZXRz
LnNpemUoKSk7CiAgICAgICAgIH0KLSNlbmRpZgogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAg
ICAgIHZvaWQgY2xlYXIoKQorICAgICAgICBpbmxpbmUgQ29kZUxvY2F0aW9uTGFiZWw8SlNTd2l0
Y2hQdHJUYWc+IGN0aUZvclZhbHVlKGludDMyX3QgbWluLCBpbnQzMl90IHZhbHVlKSBjb25zdAog
ICAgICAgICB7Ci0gICAgICAgICAgICBicmFuY2hPZmZzZXRzID0gRml4ZWRWZWN0b3I8aW50MzJf
dD4oKTsKLSAgICAgICAgICAgIGN0aU9mZnNldHMuY2xlYXIoKTsKKyAgICAgICAgICAgIGlmICh2
YWx1ZSA+PSBtaW4gJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlIC0gbWluKSA8IG1fY3Rp
T2Zmc2V0cy5zaXplKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY3RpT2Zmc2V0c1t2YWx1
ZSAtIG1pbl07CisgICAgICAgICAgICByZXR1cm4gbV9jdGlEZWZhdWx0OwogICAgICAgICB9Ci0j
ZW5kaWYKICAgICB9OworI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxp
bmVzLmgKaW5kZXggM2JkYTliYjQwOTdkNmNhMjliYmM5YzhlODJiNDc3ZTViN2YzMzZiOS4uZGM2
ODViOGNiNGNlYjBhYjRiNGViY2NjMzIzOTE5YWNlMWQwNmYxMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5l
cy5oCkBAIC02MSwxNyArNjEsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgQ0FTRV9PUChPcEpi
ZWxvd2VxKSBcCiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOiB7IFwKICAgICAgICAgYXV0byBieXRl
Y29kZSA9IGluc3RydWN0aW9uLT5hczxPcFN3aXRjaEltbT4oKTsgXAotICAgICAgICBhdXRvJiB0
YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGJ5dGVjb2RlLm1fdGFibGVJbmRleCk7
IFwKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7
IGktLTspIFwKLSAgICAgICAgICAgIFNXSVRDSF9DQVNFKHRhYmxlLmJyYW5jaE9mZnNldHNbaV0p
OyBcCisgICAgICAgIGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT51bmxpbmtlZFN3aXRjaEp1bXBU
YWJsZShieXRlY29kZS5tX3RhYmxlSW5kZXgpOyBcCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IHRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspIFwKKyAgICAgICAgICAgIFNXSVRD
SF9DQVNFKHRhYmxlLm1fYnJhbmNoT2Zmc2V0c1tpXSk7IFwKICAgICAgICAgU1dJVENIX0RFRkFV
TFRfT0ZGU0VUKE9wU3dpdGNoSW1tKTsgXAogICAgICAgICBicmVhazsgXAogICAgIH0gXAogICAg
IGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsgXAogICAgICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1
Y3Rpb24tPmFzPE9wU3dpdGNoQ2hhcj4oKTsgXAotICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVC
bG9jay0+c3dpdGNoSnVtcFRhYmxlKGJ5dGVjb2RlLm1fdGFibGVJbmRleCk7IFwKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspIFwKLSAg
ICAgICAgICAgIFNXSVRDSF9DQVNFKHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOyBcCisgICAgICAg
IGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT51bmxpbmtlZFN3aXRjaEp1bXBUYWJsZShieXRlY29k
ZS5tX3RhYmxlSW5kZXgpOyBcCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLm1fYnJh
bmNoT2Zmc2V0cy5zaXplKCk7IGktLTspIFwKKyAgICAgICAgICAgIFNXSVRDSF9DQVNFKHRhYmxl
Lm1fYnJhbmNoT2Zmc2V0c1tpXSk7IFwKICAgICAgICAgU1dJVENIX0RFRkFVTFRfT0ZGU0VUKE9w
U3dpdGNoQ2hhcik7IFwKICAgICAgICAgYnJlYWs7IFwKICAgICB9IFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYWQ1NzE3
MzA4NDQzNDdmMzVhOThmZTZiMDljODMwMzg1MzY3ZGYxMC4uY2E2MjY4ODY1YmQ1OTc1YjQ3NDUx
NmRmMGNlZWMxYjM4OGU3ZmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTk1LDE0ICs5NSwyMyBAQCBzdHJ1Y3QgVW5s
aW5rZWRTdHJpbmdKdW1wVGFibGUgewogfTsKIAogc3RydWN0IFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlIHsKLSAgICBGaXhlZFZlY3RvcjxpbnQzMl90PiBicmFuY2hPZmZzZXRzOwotICAgIGludDMy
X3QgbWluOworICAgIEZpeGVkVmVjdG9yPGludDMyX3Q+IG1fYnJhbmNoT2Zmc2V0czsKKyAgICBp
bnQzMl90IG1fbWluOworCisgICAgaW5saW5lIGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoaW50MzJf
dCB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KHZhbHVlID49IG1fbWluICYmIHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSAtIG1fbWluKSA8
IG1fYnJhbmNoT2Zmc2V0cy5zaXplKCkpIHsKKyAgICAgICAgICAgIGludDMyX3Qgb2Zmc2V0ID0g
bV9icmFuY2hPZmZzZXRzW3ZhbHVlIC0gbV9taW5dOworICAgICAgICAgICAgaWYgKG9mZnNldCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgICAgICB9CisgICAgICAgIHJldHVy
biBkZWZhdWx0T2Zmc2V0OworICAgIH0KIAotICAgIGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoaW50
MzJfdCB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KTsKICAgICB2b2lkIGFkZChpbnQzMl90
IGtleSwgaW50MzJfdCBvZmZzZXQpCiAgICAgewotICAgICAgICBpZiAoIWJyYW5jaE9mZnNldHNb
a2V5XSkKLSAgICAgICAgICAgIGJyYW5jaE9mZnNldHNba2V5XSA9IG9mZnNldDsKKyAgICAgICAg
aWYgKCFtX2JyYW5jaE9mZnNldHNba2V5XSkKKyAgICAgICAgICAgIG1fYnJhbmNoT2Zmc2V0c1tr
ZXldID0gb2Zmc2V0OwogICAgIH0KIH07CiAKQEAgLTExOSw2ICsxMjgsOCBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KIAorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9uIH07CiAKICAg
ICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0K
QEAgLTE5Niw4ICsyMDcsOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewogCiAgICAgLy8gSnVtcCBUYWJsZXMKIAotICAgIHNpemVfdCBudW1iZXJPZlN3aXRjaEp1
bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9yYXJlRGF0YS0+bV9zd2l0
Y2hKdW1wVGFibGVzLnNpemUoKSA6IDA7IH0KLSAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYg
c3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0
dXJuIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQorICAgIHNp
emVfdCBudW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkg
OiAwOyB9CisgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2VkU3dpdGNo
SnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1f
cmFyZURhdGEtPm1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CiAKICAg
ICBzaXplX3QgbnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7
IHJldHVybiBtX3JhcmVEYXRhID8gbV9yYXJlRGF0YS0+bV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1
bXBUYWJsZXMuc2l6ZSgpIDogMDsgfQogICAgIGNvbnN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxl
JiB1bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBBU1NFUlQo
bV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3VubGlua2VkU3RyaW5nU3dpdGNoSnVt
cFRhYmxlc1t0YWJsZUluZGV4XTsgfQpAQCAtNDEwLDcgKzQyMSw3IEBAIGNsYXNzIFVubGlua2Vk
Q29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIEZpeGVkVmVjdG9yPFVubGlua2Vk
SGFuZGxlckluZm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7CiAKICAgICAgICAgLy8gSnVtcCBUYWJs
ZXMKLSAgICAgICAgRml4ZWRWZWN0b3I8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNo
SnVtcFRhYmxlczsKKyAgICAgICAgRml4ZWRWZWN0b3I8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+
IG1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBGaXhlZFZlY3RvcjxVbmxpbmtl
ZFN0cmluZ0p1bXBUYWJsZT4gbV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKICAg
ICAgICAgRml4ZWRWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRpb24+IG1fZXhw
cmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcAppbmRleCBm
OTZjNjAwMjZjNmYyZGVjODY4M2FkYTE2ZGRhZTdlZmE1MGE3NWM1Li5mNzgxMDllODg2MTkxMzlm
YTU1YTc4NjM1NjUzOTJiNzhjNjdjZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAKQEAg
LTEzMiw3ICsxMzIsNyBAQCB2b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpmaW5hbGl6
ZShzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IGlucwogCiAgICAgICAgIGlmICgh
bV9jb2RlQmxvY2stPm1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIGlmICghbV9leGNlcHRpb25I
YW5kbGVycy5pc0VtcHR5KCkKLSAgICAgICAgICAgICAgICB8fCAhbV9zd2l0Y2hKdW1wVGFibGVz
LmlzRW1wdHkoKQorICAgICAgICAgICAgICAgIHx8ICFtX3VubGlua2VkU3dpdGNoSnVtcFRhYmxl
cy5pc0VtcHR5KCkKICAgICAgICAgICAgICAgICB8fCAhbV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1
bXBUYWJsZXMuaXNFbXB0eSgpCiAgICAgICAgICAgICAgICAgfHwgIW1fZXhwcmVzc2lvbkluZm9G
YXRQb3NpdGlvbnMuaXNFbXB0eSgpCiAgICAgICAgICAgICAgICAgfHwgIW1fdHlwZVByb2ZpbGVy
SW5mb01hcC5pc0VtcHR5KCkKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yOjpmaW5hbGl6ZShzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+
IGlucwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2NvZGVCbG9jay0+bV9yYXJlRGF0YSkgewog
ICAgICAgICAgICAgbV9jb2RlQmxvY2stPm1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMg
PSBXVEZNb3ZlKG1fZXhjZXB0aW9uSGFuZGxlcnMpOwotICAgICAgICAgICAgbV9jb2RlQmxvY2st
Pm1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9IFdURk1vdmUobV9zd2l0Y2hKdW1wVGFi
bGVzKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLT5tX3JhcmVEYXRhLT5tX3VubGlua2VkU3dp
dGNoSnVtcFRhYmxlcyA9IFdURk1vdmUobV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMpOwogICAg
ICAgICAgICAgbV9jb2RlQmxvY2stPm1fcmFyZURhdGEtPm1fdW5saW5rZWRTdHJpbmdTd2l0Y2hK
dW1wVGFibGVzID0gV1RGTW92ZShtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcyk7CiAg
ICAgICAgICAgICBtX2NvZGVCbG9jay0+bV9yYXJlRGF0YS0+bV9leHByZXNzaW9uSW5mb0ZhdFBv
c2l0aW9ucyA9IFdURk1vdmUobV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucyk7CiAgICAgICAg
ICAgICBtX2NvZGVCbG9jay0+bV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwID0gV1RG
TW92ZShtX3R5cGVQcm9maWxlckluZm9NYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCA0
OTMwYTU2OTFkZjdiY2U5ZjQ1OTRhMzhjZGEwN2EyNzRmN2U3NjMxLi5mODA3NzQwMWFmZmM4YjY1
MTc1MGUxYmVmNGNmMjAzMzU1NzNhZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtOTAs
OSArOTAsOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciB7CiAgICAgdW5zaWdu
ZWQganVtcFRhcmdldChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHNbaW5k
ZXhdOyB9CiAgICAgdW5zaWduZWQgbGFzdEp1bXBUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2p1
bXBUYXJnZXRzLmxhc3QoKTsgfQogCi0gICAgc2l6ZV90IG51bWJlck9mU3dpdGNoSnVtcFRhYmxl
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3dpdGNoSnVtcFRhYmxlcy5zaXplKCk7IH0KLSAgICBVbmxp
bmtlZFNpbXBsZUp1bXBUYWJsZSYgYWRkU3dpdGNoSnVtcFRhYmxlKCkgeyBtX3N3aXRjaEp1bXBU
YWJsZXMuYXBwZW5kKFVubGlua2VkU2ltcGxlSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9zd2l0Y2hK
dW1wVGFibGVzLmxhc3QoKTsgfQotICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBzd2l0Y2hK
dW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgcmV0dXJuIG1fc3dpdGNoSnVtcFRhYmxlc1t0YWJs
ZUluZGV4XTsgfQorICAgIHNpemVfdCBudW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzLnNpemUoKTsgfQorICAg
IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBhZGRVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZSgpIHsg
bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKFVubGlua2VkU2ltcGxlSnVtcFRhYmxl
KCkpOyByZXR1cm4gbV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CisgICAgVW5s
aW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUlu
ZGV4KSB7IHJldHVybiBtX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQog
CiAgICAgc2l6ZV90IG51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpOyB9CiAg
ICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIGFkZFVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRh
YmxlKCkgeyBtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoVW5saW5rZWRT
dHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxl
cy5sYXN0KCk7IH0KQEAgLTIxNCw3ICsyMTQsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvciB7CiAgICAgT3V0T2ZMaW5lSnVtcFRhcmdldHMgbV9vdXRPZkxpbmVKdW1wVGFyZ2V0
czsKICAgICAvLyBJbiBSYXJlRGF0YS4KICAgICBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4g
bV9leGNlcHRpb25IYW5kbGVyczsKLSAgICBWZWN0b3I8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+
IG1fc3dpdGNoSnVtcFRhYmxlczsKKyAgICBWZWN0b3I8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+
IG1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzOwogICAgIFZlY3RvcjxVbmxpbmtlZFN0cmluZ0p1
bXBUYWJsZT4gbV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAgICAgVmVjdG9yPEV4
cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9uPiBtX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRp
b25zOwogICAgIEhhc2hNYXA8dW5zaWduZWQsIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YTo6
VHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdlPiBtX3R5cGVQcm9maWxlckluZm9NYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCmluZGV4IDg2NTMyOGRhZGQ5YzY0NDk0YzA2NWRjMTczZThjM2IwMTA2MDMwY2Eu
LmIzNWU2OGZiNTI5MThmMGE1ZDc1ZWZmYjg0YTYxZWVmNDA3MTdmZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCkBAIC00MDM2LDE0ICs0MDM2LDE0IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmJlZ2lu
U3dpdGNoKFJlZ2lzdGVySUQqIHNjcnV0aW5lZVJlZ2lzdGVyLCBTd2l0Y2hJbmZvOjpTCiB7CiAg
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBTd2l0Y2hJbmZvOjpTd2l0Y2hJbW1lZGlhdGU6
IHsKLSAgICAgICAgc2l6ZV90IHRhYmxlSW5kZXggPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0
Y2hKdW1wVGFibGVzKCk7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUo
KTsKKyAgICAgICAgc2l6ZV90IHRhYmxlSW5kZXggPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxp
bmtlZFN3aXRjaEp1bXBUYWJsZXMoKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPmFkZFVubGlua2Vk
U3dpdGNoSnVtcFRhYmxlKCk7CiAgICAgICAgIE9wU3dpdGNoSW1tOjplbWl0KHRoaXMsIHRhYmxl
SW5kZXgsIEJvdW5kTGFiZWwoKSwgc2NydXRpbmVlUmVnaXN0ZXIpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBTd2l0Y2hJbmZvOjpTd2l0Y2hDaGFyYWN0ZXI6IHsKLSAgICAgICAg
c2l6ZV90IHRhYmxlSW5kZXggPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVz
KCk7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKKyAgICAgICAg
c2l6ZV90IHRhYmxlSW5kZXggPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1
bXBUYWJsZXMoKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPmFkZFVubGlua2VkU3dpdGNoSnVtcFRh
YmxlKCk7CiAgICAgICAgIE9wU3dpdGNoQ2hhcjo6ZW1pdCh0aGlzLCB0YWJsZUluZGV4LCBCb3Vu
ZExhYmVsKCksIHNjcnV0aW5lZVJlZ2lzdGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
NDA5MSw5ICs0MDkxLDkgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUp1bXBUYWJsZUZvclN3aXRjaCgK
ICAgICBjb25zdCBWZWN0b3I8UmVmPExhYmVsPiwgOD4mIGxhYmVscywgRXhwcmVzc2lvbk5vZGUq
KiBub2RlcywgaW50MzJfdCBtaW4sIGludDMyX3QgbWF4LAogICAgIGludDMyX3QgKCprZXlHZXR0
ZXIpKEV4cHJlc3Npb25Ob2RlKiwgaW50MzJfdCBtaW4sIGludDMyX3QgbWF4KSkKIHsKLSAgICBq
dW1wVGFibGUubWluID0gbWluOwotICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzID0gRml4ZWRW
ZWN0b3I8aW50MzJfdD4obWF4IC0gbWluICsgMSk7Ci0gICAgc3RkOjpmaWxsKGp1bXBUYWJsZS5i
cmFuY2hPZmZzZXRzLmJlZ2luKCksIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmVuZCgpLCAwKTsK
KyAgICBqdW1wVGFibGUubV9taW4gPSBtaW47CisgICAganVtcFRhYmxlLm1fYnJhbmNoT2Zmc2V0
cyA9IEZpeGVkVmVjdG9yPGludDMyX3Q+KG1heCAtIG1pbiArIDEpOworICAgIHN0ZDo6ZmlsbChq
dW1wVGFibGUubV9icmFuY2hPZmZzZXRzLmJlZ2luKCksIGp1bXBUYWJsZS5tX2JyYW5jaE9mZnNl
dHMuZW5kKCksIDApOwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjbGF1c2VDb3VudDsg
KytpKSB7CiAgICAgICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBs
YWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhlZCwgc28gCiAgICAgICAgIC8vIHRoZSBsYWJlbHMg
c2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIgcmVmZXJlbmNlcwpAQCAtNDEyOSw3ICs0MTI5LDcgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5kU3dpdGNoKHVpbnQzMl90IGNsYXVzZUNvdW50LCBj
b25zdCBWZWN0b3I8UmVmPExhYmVsPiwKICAgICAgICAgICAgIHJldHVybiBCb3VuZExhYmVsKCk7
CiAgICAgICAgIH0pOwogCi0gICAgICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFi
bGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGJ5dGVjb2RlLm1fdGFibGVJbmRleCk7
CisgICAgICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9j
ay0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KTsKICAgICAg
ICAgcHJlcGFyZUp1bXBUYWJsZUZvclN3aXRjaCgKICAgICAgICAgICAgIGp1bXBUYWJsZSwgc3dp
dGNoSW5mby5ieXRlY29kZU9mZnNldCwgY2xhdXNlQ291bnQsIGxhYmVscywgbm9kZXMsIG1pbiwg
bWF4LAogICAgICAgICAgICAgc3dpdGNoSW5mby5zd2l0Y2hUeXBlID09IFN3aXRjaEluZm86OlN3
aXRjaEltbWVkaWF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAppbmRleCAzZTMwOWNkOTEyNTFkNzlkNDIxZmRjMjI1MWZlNzMxZWY3MWU3MGIw
Li45YTBhYTU4ZjhkYzExMGI1MDA0MjRmZGNiZjBhZTUzZDJmYzg5MTQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNjg3MiwxNCAr
Njg3MiwxNCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICAgICAgZGF0YS5raW5kID0gU3dpdGNoSW1tOwogICAgICAgICAgICAgZGF0YS5z
d2l0Y2hUYWJsZUluZGV4ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9zd2l0Y2hSZW1hcFtieXRlY29k
ZS5tX3RhYmxlSW5kZXhdOwogICAgICAgICAgICAgZGF0YS5mYWxsVGhyb3VnaC5zZXRCeXRlY29k
ZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsganVtcFRhcmdldChieXRlY29kZS5tX2Rl
ZmF1bHRPZmZzZXQpKTsKLSAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBtX2Nv
ZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGRhdGEuc3dpdGNoVGFibGVJbmRleCk7Ci0gICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7
ICsraSkgewotICAgICAgICAgICAgICAgIGlmICghdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSkKKyAg
ICAgICAgICAgIGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0g
bV9ncmFwaC51bmxpbmtlZFN3aXRjaEp1bXBUYWJsZShkYXRhLnN3aXRjaFRhYmxlSW5kZXgpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVubGlua2VkVGFibGUubV9icmFu
Y2hPZmZzZXRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCF1bmxpbmtlZFRh
YmxlLm1fYnJhbmNoT2Zmc2V0c1tpXSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0ID0gbV9jdXJyZW50SW5kZXgub2Zmc2V0KCkg
KyB0YWJsZS5icmFuY2hPZmZzZXRzW2ldOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdl
dCA9IG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgdW5saW5rZWRUYWJsZS5tX2JyYW5jaE9mZnNl
dHNbaV07CiAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBkYXRhLmZhbGxUaHJvdWdoLmJ5
dGVjb2RlSW5kZXgoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAgICAgZGF0YS5jYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZTo6d2l0aEJ5dGVjb2RlSW5kZXgobV9n
cmFwaC5mcmVlemUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odGFibGUubWluICsgaSkp
KSwgdGFyZ2V0KSk7CisgICAgICAgICAgICAgICAgZGF0YS5jYXNlcy5hcHBlbmQoU3dpdGNoQ2Fz
ZTo6d2l0aEJ5dGVjb2RlSW5kZXgobV9ncmFwaC5mcmVlemUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4odW5saW5rZWRUYWJsZS5tX21pbiArIGkpKSksIHRhcmdldCkpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9wSW5mbygmZGF0YSksIGdldChi
eXRlY29kZS5tX3NjcnV0aW5lZSkpOwogICAgICAgICAgICAgZmx1c2hJZlRlcm1pbmFsKGRhdGEp
OwpAQCAtNjg5MiwxNSArNjg5MiwxNSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgZGF0YS5raW5kID0gU3dpdGNoQ2hhcjsKICAg
ICAgICAgICAgIGRhdGEuc3dpdGNoVGFibGVJbmRleCA9IG1faW5saW5lU3RhY2tUb3AtPm1fc3dp
dGNoUmVtYXBbYnl0ZWNvZGUubV90YWJsZUluZGV4XTsKICAgICAgICAgICAgIGRhdGEuZmFsbFRo
cm91Z2guc2V0Qnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGp1bXBUYXJn
ZXQoYnl0ZWNvZGUubV9kZWZhdWx0T2Zmc2V0KSk7Ci0gICAgICAgICAgICBTaW1wbGVKdW1wVGFi
bGUmIHRhYmxlID0gbV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShkYXRhLnN3aXRjaFRhYmxl
SW5kZXgpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhYmxlLmJyYW5j
aE9mZnNldHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXRhYmxlLmJyYW5j
aE9mZnNldHNbaV0pCisgICAgICAgICAgICBjb25zdCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYg
dW5saW5rZWRUYWJsZSA9IG1fZ3JhcGgudW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoZGF0YS5zd2l0
Y2hUYWJsZUluZGV4KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1bmxp
bmtlZFRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAg
IGlmICghdW5saW5rZWRUYWJsZS5tX2JyYW5jaE9mZnNldHNbaV0pCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldCA9IG1fY3VycmVu
dEluZGV4Lm9mZnNldCgpICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXTsKKyAgICAgICAgICAgICAg
ICB1bnNpZ25lZCB0YXJnZXQgPSBtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIHVubGlua2VkVGFi
bGUubV9icmFuY2hPZmZzZXRzW2ldOwogICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gZGF0
YS5mYWxsVGhyb3VnaC5ieXRlY29kZUluZGV4KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgIGRhdGEuY2FzZXMuYXBwZW5kKAotICAgICAgICAgICAgICAg
ICAgICBTd2l0Y2hDYXNlOjp3aXRoQnl0ZWNvZGVJbmRleChMYXp5SlNWYWx1ZTo6c2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKHRhYmxlLm1pbiArIGkpLCB0YXJnZXQpKTsKKyAgICAgICAgICAgICAgICAg
ICAgU3dpdGNoQ2FzZTo6d2l0aEJ5dGVjb2RlSW5kZXgoTGF6eUpTVmFsdWU6OnNpbmdsZUNoYXJh
Y3RlclN0cmluZyh1bmxpbmtlZFRhYmxlLm1fbWluICsgaSksIHRhcmdldCkpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9wSW5mbygmZGF0YSksIGdldChi
eXRlY29kZS5tX3NjcnV0aW5lZSkpOwogICAgICAgICAgICAgZmx1c2hJZlRlcm1pbmFsKGRhdGEp
OwpAQCAtODUyNiwxNiArODUyNiwxOCBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRy
eTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmtpbmQgPSBr
aW5kOwogICAgICAgICAKICAgICAgICAgbV9pZGVudGlmaWVyUmVtYXAucmVzaXplKGNvZGVCbG9j
ay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKLSAgICAgICAgbV9zd2l0Y2hSZW1hcC5yZXNpemUo
Y29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKSk7CisgICAgICAgIG1fc3dpdGNo
UmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMo
KSk7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9m
SWRlbnRpZmllcnMoKTsgKytpKSB7CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogcmVw
ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGkpLmltcGwoKTsKICAgICAgICAgICAgIHVuc2lnbmVk
IGluZGV4ID0gYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUocmVw
KTsKICAgICAgICAgICAgIG1faWRlbnRpZmllclJlbWFwW2ldID0gaW5kZXg7CiAgICAgICAgIH0K
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZTd2l0
Y2hKdW1wVGFibGVzKCk7ICsraSkgewotICAgICAgICAgICAgbV9zd2l0Y2hSZW1hcFtpXSA9IGJ5
dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7Ci0g
ICAgICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJs
ZUZyb21Qcm9maWxlZENvZGVCbG9jayhjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShpKSk7CisK
KyAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV9zd2l0Y2hKdW1wVGFibGVzLnJlc2l6
ZShieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX3N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpICsgY29k
ZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1
bXBUYWJsZXMoKTsgKytpKSB7CisgICAgICAgICAgICBtX3N3aXRjaFJlbWFwW2ldID0gYnl0ZUNv
ZGVQYXJzZXItPm1fZ3JhcGgubV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpOworICAg
ICAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV91bmxpbmtlZFN3aXRjaEp1bXBUYWJs
ZXMuYXBwZW5kKCZjb2RlQmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGkpKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE1hY2hpbmUgY29kZSBibG9jayBjYXNlLgpA
QCAtODU0NywxMSArODU0OSwxNSBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6
SW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUgPSBudWxscHRyOwog
CiAgICAgICAgIG1faWRlbnRpZmllclJlbWFwLnJlc2l6ZShjb2RlQmxvY2stPm51bWJlck9mSWRl
bnRpZmllcnMoKSk7Ci0gICAgICAgIG1fc3dpdGNoUmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVt
YmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCkpOworICAgICAgICBtX3N3aXRjaFJlbWFwLnJlc2l6ZShj
b2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzKCkpOwogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpOyAr
K2kpCiAgICAgICAgICAgICBtX2lkZW50aWZpZXJSZW1hcFtpXSA9IGk7Ci0gICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsg
KytpKQotICAgICAgICAgICAgbV9zd2l0Y2hSZW1hcFtpXSA9IGk7CisKKyAgICAgICAgYnl0ZUNv
ZGVQYXJzZXItPm1fZ3JhcGgubV9zd2l0Y2hKdW1wVGFibGVzLnJlc2l6ZShieXRlQ29kZVBhcnNl
ci0+bV9ncmFwaC5tX3N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpICsgY29kZUJsb2NrLT5udW1iZXJP
ZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKTsgKytp
KSB7CisgICAgICAgICAgICBtX3N3aXRjaFJlbWFwW2ldID0gYnl0ZUNvZGVQYXJzZXItPm1fZ3Jh
cGgubV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpOworICAgICAgICAgICAgYnl0ZUNv
ZGVQYXJzZXItPm1fZ3JhcGgubV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKCZjb2Rl
QmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGkpKTsKKyAgICAgICAgfQogICAgIH0KICAg
ICAKICAgICBtX2FyZ3VtZW50UG9zaXRpb25zLnJlc2l6ZShhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpc1dpdGhGaXh1cCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNGI4
OGY0MTNlYzI1OWIxMjVjMmY1OWNkNzc3OTQ3NDFmYjdhMzRhMS4uZDFmYjM2YTA3NDVmMWE2ZmY5
ZGU0NDJkMjA4OTA4YTc5ZDcyMGEzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
aApAQCAtMTA2NCw2ICsxMDY0LDkgQEAgY2xhc3MgR3JhcGggZmluYWwgOiBwdWJsaWMgdmlydHVh
bCBTY2FubmFibGUgewogICAgIFByZWZpeCYgcHJlZml4KCkgeyByZXR1cm4gbV9wcmVmaXg7IH0K
ICAgICB2b2lkIG5leHRQaGFzZSgpIHsgbV9wcmVmaXgucGhhc2VOdW1iZXIrKzsgfQogCisgICAg
Y29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2VkU3dpdGNoSnVtcFRhYmxlKHVu
c2lnbmVkIGluZGV4KSB7IHJldHVybiAqbV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXNbaW5kZXhd
OyB9CisgICAgU2ltcGxlSnVtcFRhYmxlJiBzd2l0Y2hKdW1wVGFibGUodW5zaWduZWQgaW5kZXgp
IHsgcmV0dXJuIG1fc3dpdGNoSnVtcFRhYmxlc1tpbmRleF07IH0KKwogICAgIFN0YWNrQ2hlY2sg
bV9zdGFja0NoZWNrZXI7CiAgICAgVk0mIG1fdm07CiAgICAgUGxhbiYgbV9wbGFuOwpAQCAtMTA3
NCw2ICsxMDc3LDkgQEAgY2xhc3MgR3JhcGggZmluYWwgOiBwdWJsaWMgdmlydHVhbCBTY2FubmFi
bGUgewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMT4gbV9yb290czsKICAgICBWZWN0b3I8RWRn
ZSwgMTY+IG1fdmFyQXJnQ2hpbGRyZW47CiAKKyAgICBWZWN0b3I8Y29uc3QgVW5saW5rZWRTaW1w
bGVKdW1wVGFibGUqPiBtX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlczsKKyAgICBWZWN0b3I8U2lt
cGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CisKICAgICBIYXNoTWFwPEVuY29kZWRK
U1ZhbHVlLCBGcm96ZW5WYWx1ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVI
YXNoVHJhaXRzPiBtX2Zyb3plblZhbHVlTWFwOwogICAgIEJhZzxGcm96ZW5WYWx1ZT4gbV9mcm96
ZW5WYWx1ZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAKaW5kZXggMzE4ZjAxNTZjMTRmZDg2MzYzZmIyOWZlOWVhZmZkMWMyOTg4M2YxNS4uNjc0ZDhm
N2FhZTMxMTg0NzQzN2RiYThkMThhOTJjODJkM2I3YzZiNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTE3NiwxMiArMTc2LDE0IEBAIHZvaWQg
SklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICAKICAgICBtX2dy
YXBoLnJlZ2lzdGVyRnJvemVuVmFsdWVzKCk7CiAKLSAgICBpZiAobV9jb2RlQmxvY2stPm51bWJl
ck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkpIHsKKyAgICBpZiAobV9jb2RlQmxv
Y2stPm51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkgfHwgIW1fZ3JhcGgu
bV9zd2l0Y2hKdW1wVGFibGVzLmlzRW1wdHkoKSkgewogICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG1fY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICBtX2NvZGVCbG9jay0+ZW5z
dXJlSklURGF0YShsb2NrZXIpLm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IEZpeGVkVmVjdG9y
PFN0cmluZ0p1bXBUYWJsZT4obV9jb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0
Y2hKdW1wVGFibGVzKCkpOworICAgICAgICBpZiAobV9jb2RlQmxvY2stPm51bWJlck9mVW5saW5r
ZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkpCisgICAgICAgICAgICBtX2NvZGVCbG9jay0+ZW5z
dXJlSklURGF0YShsb2NrZXIpLm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IEZpeGVkVmVjdG9y
PFN0cmluZ0p1bXBUYWJsZT4obV9jb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0
Y2hKdW1wVGFibGVzKCkpOworICAgICAgICBpZiAoIW1fZ3JhcGgubV9zd2l0Y2hKdW1wVGFibGVz
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLT5lbnN1cmVKSVREYXRhKGxvY2tl
cikubV9zd2l0Y2hKdW1wVGFibGVzID0gV1RGTW92ZShtX2dyYXBoLm1fc3dpdGNoSnVtcFRhYmxl
cyk7CiAgICAgfQogCi0gICAgQml0VmVjdG9yIHVzZWRKdW1wVGFibGVzOwogICAgIGZvciAoQmFn
PFN3aXRjaERhdGE+OjppdGVyYXRvciBpdGVyID0gbV9ncmFwaC5tX3N3aXRjaERhdGEuYmVnaW4o
KTsgISFpdGVyOyArK2l0ZXIpIHsKICAgICAgICAgU3dpdGNoRGF0YSYgZGF0YSA9ICoqaXRlcjsK
ICAgICAgICAgaWYgKCFkYXRhLmRpZFVzZUp1bXBUYWJsZSkKQEAgLTE5MiwyNiArMTk0LDE5IEBA
IHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICAgICAg
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRhdGEua2luZCA9PSBTd2l0Y2hJbW0gfHwgZGF0YS5r
aW5kID09IFN3aXRjaENoYXIpOwogICAgICAgICAKLSAgICAgICAgdXNlZEp1bXBUYWJsZXMuc2V0
KGRhdGEuc3dpdGNoVGFibGVJbmRleCk7Ci0gICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUg
PSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGRhdGEuc3dpdGNoVGFibGVJbmRleCk7Ci0g
ICAgICAgIHRhYmxlLmN0aURlZmF1bHQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNTd2l0Y2hQ
dHJUYWc+KG1fYmxvY2tIZWFkc1tkYXRhLmZhbGxUaHJvdWdoLmJsb2NrLT5pbmRleF0pOwotICAg
ICAgICB0YWJsZS5jdGlPZmZzZXRzLmdyb3codGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCkpOwot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSB0YWJsZS5jdGlPZmZzZXRzLnNpemUoKTsgai0tOykK
LSAgICAgICAgICAgIHRhYmxlLmN0aU9mZnNldHNbal0gPSB0YWJsZS5jdGlEZWZhdWx0OworICAg
ICAgICBjb25zdCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgdW5saW5rZWRUYWJsZSA9IG1fZ3Jh
cGgudW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoZGF0YS5zd2l0Y2hUYWJsZUluZGV4KTsKKyAgICAg
ICAgU2ltcGxlSnVtcFRhYmxlJiBsaW5rZWRUYWJsZSA9IG1fY29kZUJsb2NrLT5zd2l0Y2hKdW1w
VGFibGUoZGF0YS5zd2l0Y2hUYWJsZUluZGV4KTsKKyAgICAgICAgbGlua2VkVGFibGUubV9jdGlE
ZWZhdWx0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTU3dpdGNoUHRyVGFnPihtX2Jsb2NrSGVh
ZHNbZGF0YS5mYWxsVGhyb3VnaC5ibG9jay0+aW5kZXhdKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQobGlua2VkVGFibGUubV9jdGlPZmZzZXRzLnNpemUoKSA9PSB1bmxpbmtlZFRhYmxlLm1fYnJh
bmNoT2Zmc2V0cy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBsaW5rZWRUYWJs
ZS5tX2N0aU9mZnNldHMuc2l6ZSgpOyBqLS07KQorICAgICAgICAgICAgbGlua2VkVGFibGUubV9j
dGlPZmZzZXRzW2pdID0gbGlua2VkVGFibGUubV9jdGlEZWZhdWx0OwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGogPSBkYXRhLmNhc2VzLnNpemUoKTsgai0tOykgewogICAgICAgICAgICAgU3dpdGNo
Q2FzZSYgbXlDYXNlID0gZGF0YS5jYXNlc1tqXTsKLSAgICAgICAgICAgIHRhYmxlLmN0aU9mZnNl
dHNbbXlDYXNlLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKGRhdGEua2luZCkgLSB0YWJsZS5taW5d
ID0KKyAgICAgICAgICAgIGxpbmtlZFRhYmxlLm1fY3RpT2Zmc2V0c1tteUNhc2UudmFsdWUuc3dp
dGNoTG9va3VwVmFsdWUoZGF0YS5raW5kKSAtIHVubGlua2VkVGFibGUubV9taW5dID0KICAgICAg
ICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNTd2l0Y2hQdHJUYWc+KG1fYmxvY2tI
ZWFkc1tteUNhc2UudGFyZ2V0LmJsb2NrLT5pbmRleF0pOwogICAgICAgICB9CiAgICAgfQogICAg
IAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBU
YWJsZXMoKTsgaS0tOykgewotICAgICAgICBpZiAodXNlZEp1bXBUYWJsZXMuZ2V0KGkpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICBtX2NvZGVCbG9jay0+c3dpdGNo
SnVtcFRhYmxlKGkpLmNsZWFyKCk7Ci0gICAgfQotCiAgICAgLy8gTk9URTogd2UgY2Fubm90IGNs
ZWFyIHN0cmluZyBzd2l0Y2ggdGFibGVzIGJlY2F1c2UgKDEpIHdlJ3JlIHJ1bm5pbmcgY29uY3Vy
cmVudGx5CiAgICAgLy8gYW5kIHdlIGNhbm5vdCBkZXJlZiBTdHJpbmdJbXBsJ3MgYW5kICgyKSBp
dCB3b3VsZCBiZSB3ZWlyZCB0byBkZXJlZiB0aG9zZQogICAgIC8vIFN0cmluZ0ltcGwncyBzaW5j
ZSB3ZSByZWZlciB0byB0aGVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKaW5kZXggY2QxMzcxMmE0NTNmNWY1MjI1NTU2OTRkMTZjMzllYTQwNGMyNGViNy4u
ZTIxYTM1YjVmZjliMDgzZTg2NDRkZjUwNTM5ZTVjMTRlZDE0MzBjOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yNjkwLDIwICsyNjkwLDIwIEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TdHJDYXQzLCBKU1N0cmluZyosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBq
c1N0cmluZyhnbG9iYWxPYmplY3QsIHN0cjEsIHN0cjIsIHN0cjMpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkZpbmRTd2l0Y2hJbW1UYXJnZXRGb3JEb3VibGUsIGNo
YXIqLCAoVk0qIHZtUG9pbnRlciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBzaXplX3Qg
dGFibGVJbmRleCkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRmluZFN3aXRj
aEltbVRhcmdldEZvckRvdWJsZSwgY2hhciosIChWTSogdm1Qb2ludGVyLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIHNpemVfdCB0YWJsZUluZGV4LCBpbnQzMl90IG1pbikpCiB7CiAgICAg
Vk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsKLSAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2Nr
LT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CisgICAgY29uc3QgU2ltcGxlSnVtcFRhYmxl
JiBsaW5rZWRUYWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBB
U1NFUlQodmFsdWUuaXNEb3VibGUoKSk7CiAgICAgZG91YmxlIGFzRG91YmxlID0gdmFsdWUuYXNE
b3VibGUoKTsKICAgICBpbnQzMl90IGFzSW50MzIgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pihhc0Rv
dWJsZSk7CiAgICAgaWYgKGFzRG91YmxlID09IGFzSW50MzIpCi0gICAgICAgIHJldHVybiB0YWJs
ZS5jdGlGb3JWYWx1ZShhc0ludDMyKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKLSAgICBy
ZXR1cm4gdGFibGUuY3RpRGVmYXVsdC5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKKyAgICAg
ICAgcmV0dXJuIGxpbmtlZFRhYmxlLmN0aUZvclZhbHVlKG1pbiwgYXNJbnQzMikuZXhlY3V0YWJs
ZUFkZHJlc3M8Y2hhcio+KCk7CisgICAgcmV0dXJuIGxpbmtlZFRhYmxlLm1fY3RpRGVmYXVsdC5l
eGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblN3aXRjaFN0cmluZywgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBzaXplX3QgdGFibGVJbmRleCwgSlNTdHJpbmcqIHN0cmluZykpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDIyMWI0YzQyNzdhZmI4ZjBkZjI5NmM1
NTBiZjQzZTIyNDAzYTNkZjkuLjE0MjgyNzM5Zjc3MzVmNmI0MmUyZGMxM2Q4NWQxNGY1ZTdlOWMz
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0yNjgs
NyArMjY4LDcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYWtlUm9wZTIs
IEpTU3RyaW5nKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNTdHIKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTWFrZVJvcGUzLCBKU1N0cmluZyosIChKU0dsb2JhbE9iamVjdCosIEpT
U3RyaW5nKiwgSlNTdHJpbmcqLCBKU1N0cmluZyopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uU3RyQ2F0MiwgSlNTdHJpbmcqLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uU3RyQ2F0MywgSlNTdHJpbmcqLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkZpbmRTd2l0Y2hJbW1UYXJnZXRGb3JEb3VibGUsIGNoYXIqLCAoVk0q
LCBFbmNvZGVkSlNWYWx1ZSwgc2l6ZV90IHRhYmxlSW5kZXgpKTsKK0pTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZSwgY2hhciosIChW
TSosIEVuY29kZWRKU1ZhbHVlLCBzaXplX3QgdGFibGVJbmRleCwgaW50MzJfdCkpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hTdHJpbmcsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBzaXplX3QgdGFibGVJbmRleCwgSlNTdHJpbmcqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdJbXBsTGVzcywgdWludHB0cl90LCAo
U3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkNvbXBhcmVTdHJpbmdJbXBsTGVzc0VxLCB1aW50cHRyX3QsIChTdHJpbmdJbXBsKiwg
U3RyaW5nSW1wbCopKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKaW5kZXggZTJiNGU5ZTE3YTdjY2QxZGIxNzU1MzRjMWIzNzU3NWMyZTUyMzkx
Zi4uNWYxMzkzY2VlNzIwMGRmODc3MGM4MDBjY2IyNzhlZTUzYjI2MjQ4NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTExNTA0LDEz
ICsxMTUwNCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkZ2Ug
ZWRnZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbnRKdW1wKAogICAgIFN3aXRj
aERhdGEqIGRhdGEsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gpCiB7Ci0gICAgU2ltcGxl
SnVtcFRhYmxlJiB0YWJsZSA9IG1faml0LmNvZGVCbG9jaygpLT5zd2l0Y2hKdW1wVGFibGUoZGF0
YS0+c3dpdGNoVGFibGVJbmRleCk7Ci0gICAgdGFibGUuZW5zdXJlQ1RJVGFibGUoKTsKLSAgICBt
X2ppdC5zdWIzMihJbW0zMih0YWJsZS5taW4pLCB2YWx1ZSk7CisgICAgY29uc3QgVW5saW5rZWRT
aW1wbGVKdW1wVGFibGUmIHVubGlua2VkVGFibGUgPSBtX2ppdC5ncmFwaCgpLnVubGlua2VkU3dp
dGNoSnVtcFRhYmxlKGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpOworICAgIFNpbXBsZUp1bXBUYWJs
ZSYgbGlua2VkVGFibGUgPSBtX2ppdC5ncmFwaCgpLnN3aXRjaEp1bXBUYWJsZShkYXRhLT5zd2l0
Y2hUYWJsZUluZGV4KTsKKyAgICBsaW5rZWRUYWJsZS5lbnN1cmVDVElUYWJsZSh1bmxpbmtlZFRh
YmxlKTsKKyAgICBtX2ppdC5zdWIzMihJbW0zMih1bmxpbmtlZFRhYmxlLm1fbWluKSwgdmFsdWUp
OwogICAgIGFkZEJyYW5jaCgKLSAgICAgICAgbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkFi
b3ZlT3JFcXVhbCwgdmFsdWUsIEltbTMyKHRhYmxlLmN0aU9mZnNldHMuc2l6ZSgpKSksCisgICAg
ICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsIHZhbHVlLCBJbW0z
MihsaW5rZWRUYWJsZS5tX2N0aU9mZnNldHMuc2l6ZSgpKSksCiAgICAgICAgIGRhdGEtPmZhbGxU
aHJvdWdoLmJsb2NrKTsKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIodGFibGUuY3RpT2Zm
c2V0cy5iZWdpbigpKSwgc2NyYXRjaCk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGxp
bmtlZFRhYmxlLm1fY3RpT2Zmc2V0cy5iZWdpbigpKSwgc2NyYXRjaCk7CiAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHNjcmF0Y2gsIHZhbHVlLCBKSVRDb21waWxlcjo6
U2NhbGVQdHIpLCBzY3JhdGNoKTsKICAgICAKICAgICBtX2ppdC5mYXJKdW1wKHNjcmF0Y2gsIEpT
U3dpdGNoUHRyVGFnKTsKQEAgLTExNTQwLDggKzExNTQxLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRTd2l0Y2hJbW0oTm9kZSogbm9kZSwgU3dpdGNoRGF0YSogZGF0YSkKICAgICAgICAg
ZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgc2NyYXRjaCk7
CiAgICAgICAgIG5vdEludDMyLmxpbmsoJm1faml0KTsKICAgICAgICAgYWRkQnJhbmNoKG1faml0
LmJyYW5jaElmTm90TnVtYmVyKHZhbHVlUmVncywgc2NyYXRjaCksIGRhdGEtPmZhbGxUaHJvdWdo
LmJsb2NrKTsKKworICAgICAgICBjb25zdCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgdW5saW5r
ZWRUYWJsZSA9IG1faml0LmdyYXBoKCkudW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoZGF0YS0+c3dp
dGNoVGFibGVJbmRleCk7CiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2gp
OwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkZpbmRTd2l0Y2hJbW1UYXJnZXRGb3JE
b3VibGUsIHNjcmF0Y2gsICZ2bSgpLCB2YWx1ZVJlZ3MsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkZpbmRTd2l0Y2hJbW1UYXJnZXRGb3JE
b3VibGUsIHNjcmF0Y2gsICZ2bSgpLCB2YWx1ZVJlZ3MsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgs
IHVubGlua2VkVGFibGUubV9taW4pOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7
CiAKICAgICAgICAgbV9qaXQuZmFySnVtcChzY3JhdGNoLCBKU1N3aXRjaFB0clRhZyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCBjNzc2MjE4ZDhkNDNlNWFhYjFlMjU2
YzRkNTZlYzZmNDNkZjEzYTE1Li4xYjI1NDNlNTFiMWVjYTczM2E4YmNkMjkzZDFlMWVmNDkzMDI4
YjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTQ1LDkgKzQ1LDYg
QEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdy
YXBoLm1fY29kZUJsb2NrOwogICAgIFZNJiB2bSA9IGdyYXBoLm1fdm07CiAgICAgCi0gICAgLy8g
QjMgd2lsbCBjcmVhdGUgaXRzIG93biBqdW1wIHRhYmxlcyBhcyBuZWVkZWQuCi0gICAgY29kZUJs
b2NrLT5jbGVhclN3aXRjaEp1bXBUYWJsZXMoKTsKLQogICAgIHN0YXRlLmppdENvZGUtPmNvbW1v
bi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ID0gZ3JhcGgucmVxdWlyZWRSZWdpc3RlckNv
dW50Rm9yRXhpdCgpOwogICAgIAogICAgIGlmICghZ3JhcGgubV9wbGFuLmlubGluZUNhbGxGcmFt
ZXMoKS0+aXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDg4ZDNmZDJh
NTY5YWE0ZGFkZWYxNTVlMGQxZWU5ZTc0YTdmMzJhOTQuLmI2NmExM2YyOTJmY2FmNTc0NmYxOTg5
MmEyODQ0ZjA5MzY3OGZhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTcxNCw2
ICs3MTQsMTQgQEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waWxhdGlv
bkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGlmIChtX2NvZGVC
bG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKSB8fCBtX2NvZGVCbG9jay0+
bnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSkgeworICAgICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICBpZiAo
bV9jb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzKCkpCisgICAgICAg
ICAgICBtX2NvZGVCbG9jay0+ZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3dpdGNoSnVtcFRhYmxl
cyA9IEZpeGVkVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4obV9jb2RlQmxvY2stPm51bWJlck9mVW5s
aW5rZWRTd2l0Y2hKdW1wVGFibGVzKCkpOworICAgICAgICBpZiAobV9jb2RlQmxvY2stPm51bWJl
ck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkpCisgICAgICAgICAgICBtX2NvZGVC
bG9jay0+ZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IEZp
eGVkVmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4obV9jb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRT
dHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkpOworICAgIH0KKwogICAgIGlmIChVTkxJS0VMWShPcHRp
b25zOjpkdW1wRGlzYXNzZW1ibHkoKSB8fCAobV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyICYm
IE9wdGlvbnM6OmRpc2Fzc2VtYmxlQmFzZWxpbmVGb3JQcm9maWxlcigpKSkpCiAgICAgICAgIG1f
ZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxKSVREaXNhc3NlbWJsZXI+KG1fY29kZUJsb2NrKTsK
ICAgICBpZiAoVU5MSUtFTFkobV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyKSkgewpAQCAtODU3
LDMyICs4NjUsMjggQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICBpZiAocGF0
Y2hCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkKICAgICAgICAgcmV0dXJuIENvbXBpbGF0aW9u
RmFpbGVkOwogCi0gICAgaWYgKG1fY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3RyaW5nU3dp
dGNoSnVtcFRhYmxlcygpKSB7Ci0gICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9j
b2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5lbnN1cmVKSVREYXRhKGxv
Y2tlcikubV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gRml4ZWRWZWN0b3I8U3RyaW5nSnVtcFRh
YmxlPihtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMo
KSk7Ci0gICAgfQotCiAgICAgLy8gVHJhbnNsYXRlIHZQQyBvZmZzZXRzIGludG8gYWRkcmVzc2Vz
IGluIEpJVCBnZW5lcmF0ZWQgY29kZSwgZm9yIHN3aXRjaCB0YWJsZXMuCiAgICAgZm9yIChhdXRv
JiByZWNvcmQgOiBtX3N3aXRjaGVzKSB7CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
ID0gcmVjb3JkLmJ5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAKICAgICAgICAgaWYgKHJlY29yZC50
eXBlICE9IFN3aXRjaFJlY29yZDo6U3RyaW5nKSB7CiAgICAgICAgICAgICBBU1NFUlQocmVjb3Jk
LnR5cGUgPT0gU3dpdGNoUmVjb3JkOjpJbW1lZGlhdGUgfHwgcmVjb3JkLnR5cGUgPT0gU3dpdGNo
UmVjb3JkOjpDaGFyYWN0ZXIpOyAKLSAgICAgICAgICAgIEFTU0VSVChyZWNvcmQuanVtcFRhYmxl
LnNpbXBsZUp1bXBUYWJsZS0+YnJhbmNoT2Zmc2V0cy5zaXplKCkgPT0gcmVjb3JkLmp1bXBUYWJs
ZS5zaW1wbGVKdW1wVGFibGUtPmN0aU9mZnNldHMuc2l6ZSgpKTsKIAotICAgICAgICAgICAgYXV0
byogc2ltcGxlSnVtcFRhYmxlID0gcmVjb3JkLmp1bXBUYWJsZS5zaW1wbGVKdW1wVGFibGU7Ci0g
ICAgICAgICAgICBzaW1wbGVKdW1wVGFibGUtPmN0aURlZmF1bHQgPSBwYXRjaEJ1ZmZlci5sb2Nh
dGlvbk9mPEpTU3dpdGNoUHRyVGFnPihtX2xhYmVsc1tieXRlY29kZU9mZnNldCArIHJlY29yZC5k
ZWZhdWx0T2Zmc2V0XSk7CisgICAgICAgICAgICB1bnNpZ25lZCB0YWJsZUluZGV4ID0gcmVjb3Jk
LnRhYmxlSW5kZXg7CisgICAgICAgICAgICBjb25zdCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYg
dW5saW5rZWRUYWJsZSA9IG1fY29kZUJsb2NrLT51bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSh0YWJs
ZUluZGV4KTsKKyAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgbGlua2VkVGFibGUgPSBtX2Nv
ZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgICAgICAgICAgbGlua2Vk
VGFibGUubV9jdGlEZWZhdWx0ID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU1N3aXRjaFB0clRh
Zz4obV9sYWJlbHNbYnl0ZWNvZGVPZmZzZXQgKyByZWNvcmQuZGVmYXVsdE9mZnNldF0pOwogCi0g
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcmVjb3JkLmp1bXBUYWJsZS5zaW1w
bGVKdW1wVGFibGUtPmJyYW5jaE9mZnNldHMuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBvZmZzZXQgPSByZWNvcmQuanVtcFRhYmxlLnNpbXBsZUp1bXBUYWJsZS0+YnJh
bmNoT2Zmc2V0c1tqXTsKLSAgICAgICAgICAgICAgICBzaW1wbGVKdW1wVGFibGUtPmN0aU9mZnNl
dHNbal0gPSBvZmZzZXQKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCB1bmxp
bmtlZFRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAg
IHVuc2lnbmVkIG9mZnNldCA9IHVubGlua2VkVGFibGUubV9icmFuY2hPZmZzZXRzW2pdOworICAg
ICAgICAgICAgICAgIGxpbmtlZFRhYmxlLm1fY3RpT2Zmc2V0c1tqXSA9IG9mZnNldAogICAgICAg
ICAgICAgICAgICAgICA/IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNTd2l0Y2hQdHJUYWc+KG1f
bGFiZWxzW2J5dGVjb2RlT2Zmc2V0ICsgb2Zmc2V0XSkKLSAgICAgICAgICAgICAgICAgICAgOiBz
aW1wbGVKdW1wVGFibGUtPmN0aURlZmF1bHQ7CisgICAgICAgICAgICAgICAgICAgIDogbGlua2Vk
VGFibGUubV9jdGlEZWZhdWx0OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgQVNTRVJUKHJlY29yZC50eXBlID09IFN3aXRjaFJlY29yZDo6U3RyaW5nKTsKIAot
ICAgICAgICAgICAgdW5zaWduZWQgdGFibGVJbmRleCA9IHJlY29yZC5qdW1wVGFibGUudGFibGVJ
bmRleDsKKyAgICAgICAgICAgIHVuc2lnbmVkIHRhYmxlSW5kZXggPSByZWNvcmQudGFibGVJbmRl
eDsKICAgICAgICAgICAgIGNvbnN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiB1bmxpbmtlZFRh
YmxlID0gbV9jb2RlQmxvY2stPnVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5k
ZXgpOwogICAgICAgICAgICAgU3RyaW5nSnVtcFRhYmxlJiBsaW5rZWRUYWJsZSA9IG1fY29kZUJs
b2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CiAgICAgICAgICAgICBsaW5r
ZWRUYWJsZS5tX2N0aURlZmF1bHQgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTU3dpdGNoUHRy
VGFnPihtX2xhYmVsc1tieXRlY29kZU9mZnNldCArIHJlY29yZC5kZWZhdWx0T2Zmc2V0XSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAyMWQyYTZjN2Y3MGNhNmUxNmYxYmQ5ZmY3ZGNmMzhh
NjNhYzI5MzllLi43MTA0MDFkOWI1Njg0NzM2YTc5NWMxY2M0ZTFlYWYyMmJmZDQ1YmQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTEyNiwyOCArMTI2LDE2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIFR5cGUgdHlwZTsKIAotICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICBT
aW1wbGVKdW1wVGFibGUqIHNpbXBsZUp1bXBUYWJsZTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHRh
YmxlSW5kZXg7Ci0gICAgICAgIH0ganVtcFRhYmxlOwotCiAgICAgICAgIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgdW5zaWduZWQgZGVmYXVsdE9mZnNldDsKLQotICAgICAg
ICBTd2l0Y2hSZWNvcmQoU2ltcGxlSnVtcFRhYmxlKiBqdW1wVGFibGUsIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCwgdW5zaWduZWQgZGVmYXVsdE9mZnNldCwgVHlwZSB0eXBlKQotICAgICAg
ICAgICAgOiB0eXBlKHR5cGUpCi0gICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJ
bmRleCkKLSAgICAgICAgICAgICwgZGVmYXVsdE9mZnNldChkZWZhdWx0T2Zmc2V0KQotICAgICAg
ICB7Ci0gICAgICAgICAgICB0aGlzLT5qdW1wVGFibGUuc2ltcGxlSnVtcFRhYmxlID0ganVtcFRh
YmxlOwotICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIHRhYmxlSW5kZXg7CiAKICAgICAgICAg
U3dpdGNoUmVjb3JkKHVuc2lnbmVkIHRhYmxlSW5kZXgsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJ
bmRleCwgdW5zaWduZWQgZGVmYXVsdE9mZnNldCwgVHlwZSB0eXBlKQogICAgICAgICAgICAgOiB0
eXBlKHR5cGUpCiAgICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKICAg
ICAgICAgICAgICwgZGVmYXVsdE9mZnNldChkZWZhdWx0T2Zmc2V0KQorICAgICAgICAgICAgLCB0
YWJsZUluZGV4KHRhYmxlSW5kZXgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMtPmp1bXBU
YWJsZS50YWJsZUluZGV4ID0gdGFibGVJbmRleDsKICAgICAgICAgfQogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDEwMjU2NTUwODlkZDgzOTkz
NWZjOWY1Y2EwYWNiMjRjOWU2ZjMzMTQuLjgzMmI5YWI4Y2Q1ZjQxZTExZGI0N2UzOWJlZGUxZmFi
NTFmYzc1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAt
OTAwLDEyICs5MDAsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBzY3J1dGlu
ZWUgPSBieXRlY29kZS5tX3NjcnV0aW5lZTsKIAogICAgIC8vIGNyZWF0ZSBqdW1wIHRhYmxlIGZv
ciBzd2l0Y2ggZGVzdGluYXRpb25zLCB0cmFjayB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQuCi0gICAg
U2ltcGxlSnVtcFRhYmxlKiBqdW1wVGFibGUgPSAmbV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJs
ZSh0YWJsZUluZGV4KTsKLSAgICBtX3N3aXRjaGVzLmFwcGVuZChTd2l0Y2hSZWNvcmQoanVtcFRh
YmxlLCBtX2J5dGVjb2RlSW5kZXgsIGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29yZDo6SW1tZWRp
YXRlKSk7Ci0gICAganVtcFRhYmxlLT5lbnN1cmVDVElUYWJsZSgpOworICAgIGNvbnN0IFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9jb2RlQmxvY2stPnVubGlua2Vk
U3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgIFNpbXBsZUp1bXBUYWJsZSYgbGlua2Vk
VGFibGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgIG1f
c3dpdGNoZXMuYXBwZW5kKFN3aXRjaFJlY29yZCh0YWJsZUluZGV4LCBtX2J5dGVjb2RlSW5kZXgs
IGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29yZDo6SW1tZWRpYXRlKSk7CisgICAgbGlua2VkVGFi
bGUuZW5zdXJlQ1RJVGFibGUodW5saW5rZWRUYWJsZSk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHNjcnV0aW5lZSwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dp
dGNoSW1tV2l0aFVua25vd25LZXlUeXBlLCBUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgcmVnVDAsIHRh
YmxlSW5kZXgpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25v
d25LZXlUeXBlLCBUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgcmVnVDAsIHRhYmxlSW5kZXgsIHVubGlu
a2VkVGFibGUubV9taW4pOwogICAgIGZhckp1bXAocmV0dXJuVmFsdWVHUFIsIEpTU3dpdGNoUHRy
VGFnKTsKIH0KIApAQCAtOTE3LDEyICs5MTgsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNo
X2NoYXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgc2NydXRpbmVlID0gYnl0ZWNvZGUubV9zY3J1dGluZWU7CiAKICAgICAvLyBjcmVh
dGUganVtcCB0YWJsZSBmb3Igc3dpdGNoIGRlc3RpbmF0aW9ucywgdHJhY2sgdGhpcyBzd2l0Y2gg
c3RhdGVtZW50LgotICAgIFNpbXBsZUp1bXBUYWJsZSoganVtcFRhYmxlID0gJm1fY29kZUJsb2Nr
LT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7Ci0gICAgbV9zd2l0Y2hlcy5hcHBlbmQoU3dp
dGNoUmVjb3JkKGp1bXBUYWJsZSwgbV9ieXRlY29kZUluZGV4LCBkZWZhdWx0T2Zmc2V0LCBTd2l0
Y2hSZWNvcmQ6OkNoYXJhY3RlcikpOwotICAgIGp1bXBUYWJsZS0+ZW5zdXJlQ1RJVGFibGUoKTsK
KyAgICBjb25zdCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgdW5saW5rZWRUYWJsZSA9IG1fY29k
ZUJsb2NrLT51bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKKyAgICBTaW1wbGVK
dW1wVGFibGUmIGxpbmtlZFRhYmxlID0gbV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0YWJs
ZUluZGV4KTsKKyAgICBtX3N3aXRjaGVzLmFwcGVuZChTd2l0Y2hSZWNvcmQodGFibGVJbmRleCwg
bV9ieXRlY29kZUluZGV4LCBkZWZhdWx0T2Zmc2V0LCBTd2l0Y2hSZWNvcmQ6OkNoYXJhY3Rlcikp
OworICAgIGxpbmtlZFRhYmxlLmVuc3VyZUNUSVRhYmxlKHVubGlua2VkVGFibGUpOwogCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzY3J1dGluZWUsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHRhYmxlSW5kZXgpOworICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgdGFibGVJbmRleCwg
dW5saW5rZWRUYWJsZS5tX21pbik7CiAgICAgZmFySnVtcChyZXR1cm5WYWx1ZUdQUiwgSlNTd2l0
Y2hQdHJUYWcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAKaW5kZXggZWRhMjYzZTQ0YzVmYzkxMjFjYTgyY2RjMzJiMGY1ZTVkOThmMTY4Ny4u
YWJmMTdiM2ZhMzA1NWZjYmRmNjkxYzQyZDY3ODI1MmU3YzQzNjlkNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtOTk0LDEyICs5OTQsMTMg
QEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBzY3J1dGluZWUgPSBieXRlY29kZS5t
X3NjcnV0aW5lZTsKIAogICAgIC8vIGNyZWF0ZSBqdW1wIHRhYmxlIGZvciBzd2l0Y2ggZGVzdGlu
YXRpb25zLCB0cmFjayB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQuCi0gICAgU2ltcGxlSnVtcFRhYmxl
KiBqdW1wVGFibGUgPSAmbV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsK
LSAgICBtX3N3aXRjaGVzLmFwcGVuZChTd2l0Y2hSZWNvcmQoanVtcFRhYmxlLCBtX2J5dGVjb2Rl
SW5kZXgsIGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29yZDo6SW1tZWRpYXRlKSk7Ci0gICAganVt
cFRhYmxlLT5lbnN1cmVDVElUYWJsZSgpOworICAgIGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlJiB1bmxpbmtlZFRhYmxlID0gbV9jb2RlQmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxl
KHRhYmxlSW5kZXgpOworICAgIFNpbXBsZUp1bXBUYWJsZSYgbGlua2VkVGFibGUgPSBtX2NvZGVC
bG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgIG1fc3dpdGNoZXMuYXBwZW5k
KFN3aXRjaFJlY29yZCh0YWJsZUluZGV4LCBtX2J5dGVjb2RlSW5kZXgsIGRlZmF1bHRPZmZzZXQs
IFN3aXRjaFJlY29yZDo6SW1tZWRpYXRlKSk7CisgICAgbGlua2VkVGFibGUuZW5zdXJlQ1RJVGFi
bGUodW5saW5rZWRUYWJsZSk7CiAKICAgICBlbWl0TG9hZChzY3J1dGluZWUsIHJlZ1QxLCByZWdU
MCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93bktleVR5
cGUsIFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCB0YWJs
ZUluZGV4KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3du
S2V5VHlwZSwgVHJ1c3RlZEltbVB0cigmdm0oKSksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCks
IHRhYmxlSW5kZXgsIHVubGlua2VkVGFibGUubV9taW4pOwogICAgIGZhckp1bXAocmV0dXJuVmFs
dWVHUFIsIE5vUHRyVGFnKTsKIH0KIApAQCAtMTAxMSwxMiArMTAxMiwxMyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9zd2l0Y2hfY2hhcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIFZpcnR1YWxSZWdpc3RlciBzY3J1dGluZWUgPSBieXRlY29kZS5tX3NjcnV0aW5lZTsK
IAogICAgIC8vIGNyZWF0ZSBqdW1wIHRhYmxlIGZvciBzd2l0Y2ggZGVzdGluYXRpb25zLCB0cmFj
ayB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQuCi0gICAgU2ltcGxlSnVtcFRhYmxlKiBqdW1wVGFibGUg
PSAmbV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKLSAgICBtX3N3aXRj
aGVzLmFwcGVuZChTd2l0Y2hSZWNvcmQoanVtcFRhYmxlLCBtX2J5dGVjb2RlSW5kZXgsIGRlZmF1
bHRPZmZzZXQsIFN3aXRjaFJlY29yZDo6Q2hhcmFjdGVyKSk7Ci0gICAganVtcFRhYmxlLT5lbnN1
cmVDVElUYWJsZSgpOworICAgIGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtl
ZFRhYmxlID0gbV9jb2RlQmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgp
OworICAgIFNpbXBsZUp1bXBUYWJsZSYgbGlua2VkVGFibGUgPSBtX2NvZGVCbG9jay0+c3dpdGNo
SnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgIG1fc3dpdGNoZXMuYXBwZW5kKFN3aXRjaFJlY29y
ZCh0YWJsZUluZGV4LCBtX2J5dGVjb2RlSW5kZXgsIGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29y
ZDo6Q2hhcmFjdGVyKSk7CisgICAgbGlua2VkVGFibGUuZW5zdXJlQ1RJVGFibGUodW5saW5rZWRU
YWJsZSk7CiAKICAgICBlbWl0TG9hZChzY3J1dGluZWUsIHJlZ1QxLCByZWdUMCk7Ci0gICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlLCBtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHRhYmxlSW5k
ZXgpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5
VHlwZSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVn
VDApLCB0YWJsZUluZGV4LCB1bmxpbmtlZFRhYmxlLm1fbWluKTsKICAgICBmYXJKdW1wKHJldHVy
blZhbHVlR1BSLCBOb1B0clRhZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCmluZGV4IGIyNTAwZjBlNjIwOThjYjZiZWVjYmE3YzViZjMzYzcwMTlm
NWI0MDIuLjdlMjM0NzAzMGNjOGRiN2U1MWRjM2Y3ZmFkYzQxOTI1NmRiZmJlM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjc4OSw3ICsyNzg5
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1l
LCBDYWxsRnJhbWUqLCAoSlNHbG9iYWxPYmplY3QKICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwog
fQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtu
b3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkS2V5LCBzaXplX3QgdGFibGVJbmRleCkpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5LCBz
aXplX3QgdGFibGVJbmRleCwgaW50MzJfdCBtaW4pKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CkBAIC0yNzk5LDE1ICsyNzk5LDE2IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKEpTR2xvYmFsCiAg
ICAgSlNWYWx1ZSBrZXkgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSk7CiAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogCi0gICAgU2ltcGxlSnVt
cFRhYmxlJiBqdW1wVGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4
KTsKLSAgICB2b2lkKiByZXN1bHQgPSBqdW1wVGFibGUuY3RpRGVmYXVsdC5leGVjdXRhYmxlQWRk
cmVzcygpOworICAgIGNvbnN0IFNpbXBsZUp1bXBUYWJsZSYgbGlua2VkVGFibGUgPSBjb2RlQmxv
Y2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT51
bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KS5tX21pbiA9PSBtaW4pOworICAgIHZv
aWQqIHJlc3VsdCA9IGxpbmtlZFRhYmxlLm1fY3RpRGVmYXVsdC5leGVjdXRhYmxlQWRkcmVzcygp
OwogCiAgICAgaWYgKGtleS5pc1N0cmluZygpKSB7CiAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcg
PSBhc1N0cmluZyhrZXkpOwogICAgICAgICBpZiAoc3RyaW5nLT5sZW5ndGgoKSA9PSAxKSB7CiAg
ICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBzdHJpbmctPnZhbHVlKGdsb2JhbE9iamVjdCk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwotICAg
ICAgICAgICAgcmVzdWx0ID0ganVtcFRhYmxlLmN0aUZvclZhbHVlKHZhbHVlWzBdKS5leGVjdXRh
YmxlQWRkcmVzcygpOworICAgICAgICAgICAgcmVzdWx0ID0gbGlua2VkVGFibGUuY3RpRm9yVmFs
dWUobWluLCB2YWx1ZVswXSkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtMjgxNSw3ICsyODE2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocmVzdWx0KTsKIH0KIAotSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChW
TSogdm1Qb2ludGVyLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5LCBzaXplX3QgdGFibGVJbmRl
eCkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25v
d25LZXlUeXBlLCBjaGFyKiwgKFZNKiB2bVBvaW50ZXIsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRL
ZXksIHNpemVfdCB0YWJsZUluZGV4LCBpbnQzMl90IG1pbikpCiB7CiAgICAgVk0mIHZtID0gKnZt
UG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CkBAIC0yODIzLDE0ICsyODI0LDE1IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93bktleVR5cGUsIGNoYXIqLCAoVk0qIHZtUG9pCiAgICAg
SlNWYWx1ZSBrZXkgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSk7CiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogCi0gICAgU2ltcGxlSnVtcFRh
YmxlJiBqdW1wVGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsK
KyAgICBjb25zdCBTaW1wbGVKdW1wVGFibGUmIGxpbmtlZFRhYmxlID0gY29kZUJsb2NrLT5zd2l0
Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+dW5saW5rZWRT
d2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCkubV9taW4gPT0gbWluKTsKICAgICB2b2lkKiByZXN1
bHQ7CiAgICAgaWYgKGtleS5pc0ludDMyKCkpCi0gICAgICAgIHJlc3VsdCA9IGp1bXBUYWJsZS5j
dGlGb3JWYWx1ZShrZXkuYXNJbnQzMigpKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICBy
ZXN1bHQgPSBsaW5rZWRUYWJsZS5jdGlGb3JWYWx1ZShtaW4sIGtleS5hc0ludDMyKCkpLmV4ZWN1
dGFibGVBZGRyZXNzKCk7CiAgICAgZWxzZSBpZiAoa2V5LmlzRG91YmxlKCkgJiYga2V5LmFzRG91
YmxlKCkgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oa2V5LmFzRG91YmxlKCkpKQotICAgICAgICBy
ZXN1bHQgPSBqdW1wVGFibGUuY3RpRm9yVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oa2V5LmFz
RG91YmxlKCkpKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICByZXN1bHQgPSBsaW5rZWRU
YWJsZS5jdGlGb3JWYWx1ZShtaW4sIHN0YXRpY19jYXN0PGludDMyX3Q+KGtleS5hc0RvdWJsZSgp
KSkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGp1bXBU
YWJsZS5jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIHJlc3VsdCA9IGxp
bmtlZFRhYmxlLm1fY3RpRGVmYXVsdC5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgIGFzc2VydElz
VGFnZ2VkV2l0aDxKU1N3aXRjaFB0clRhZz4ocmVzdWx0KTsKICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4ocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKaW5kZXggYzg2MTEwYTE5OTYzNjEyY2MxZTk2YzY5MzlhOWUyNGZiZTkwMTdl
Zi4uOTdhMDkwZGUyODdkNjZjZDMxOWQ0MmE3N2FlNDViNDEyOGUwNmUxZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTI4MCw4ICsyODAsOCBAQCBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZCwgRW5jb2Rl
ZEpTVmFsdWUsIChKU0dsb2JhbAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25H
ZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkpOwogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmlj
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRw
dHJfdCkpOwogCi1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaENoYXJX
aXRoVW5rbm93bktleVR5cGUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4KSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChWTSosIEVuY29kZWRK
U1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgsIGludDMyX3Qg
bWluKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaEltbVdpdGhV
bmtub3duS2V5VHlwZSwgY2hhciosIChWTSosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRh
YmxlSW5kZXgsIGludDMyX3QgbWluKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblN3aXRjaFN0cmluZ1dpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpKTsKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0RnJvbVNjb3BlLCBFbmNvZGVkSlNWYWx1ZSwgKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0VG9TY29wZSwgdm9pZCwgKEpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDc4YjZmNjZmY2EwOWExNTY0
NDU5NWRlMjU3NTM3NzgxYzdlMTYxYTUuLmIwNGYwZGNlYzExNDlmNGRmZWViZTQxMDVkNTVmZmIx
OGFiMDAwZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcApAQCAtMTU5Nyw3ICsxNTk3LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3N3aXRjaF9pbW0pCiAgICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0PGludDMy
X3Q+KHZhbHVlKTsKICAgICBpbnQgZGVmYXVsdE9mZnNldCA9IEpVTVBfT0ZGU0VUKGJ5dGVjb2Rl
Lm1fZGVmYXVsdE9mZnNldCk7CiAgICAgaWYgKHZhbHVlID09IGludFZhbHVlKQotICAgICAgICBK
VU1QX1RPKGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGJ5dGVjb2RlLm1fdGFibGVJbmRleCku
b2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRlZmF1bHRPZmZzZXQpKTsKKyAgICAgICAgSlVNUF9U
Tyhjb2RlQmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGJ5dGVjb2RlLm1fdGFibGVJbmRl
eCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRlZmF1bHRPZmZzZXQpKTsKICAgICBlbHNlCiAg
ICAgICAgIEpVTVBfVE8oZGVmYXVsdE9mZnNldCk7CiAgICAgTExJTlRfRU5EKCk7CkBAIC0xNjEz
LDcgKzE2MTMsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3dpdGNoX2NoYXIp
CiAgICAgQVNTRVJUKHN0cmluZy0+bGVuZ3RoKCkgPT0gMSk7CiAgICAgaW50IGRlZmF1bHRPZmZz
ZXQgPSBKVU1QX09GRlNFVChieXRlY29kZS5tX2RlZmF1bHRPZmZzZXQpOwogICAgIFN0cmluZ0lt
cGwqIGltcGwgPSBzdHJpbmctPnZhbHVlKGdsb2JhbE9iamVjdCkuaW1wbCgpOwotICAgIEpVTVBf
VE8oY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KS5vZmZz
ZXRGb3JWYWx1ZSgoKmltcGwpWzBdLCBkZWZhdWx0T2Zmc2V0KSk7CisgICAgSlVNUF9UTyhjb2Rl
QmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGJ5dGVjb2RlLm1fdGFibGVJbmRleCkub2Zm
c2V0Rm9yVmFsdWUoKCppbXBsKVswXSwgZGVmYXVsdE9mZnNldCkpOwogICAgIExMSU5UX0VORCgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDZmNWE0ZDE4YjdmZjYzYWU4ZTM3OTk3ZThhYmM4
Y2YxMGJmYTI4ODMuLmVjMWE5NTlhZTU2ODM1MjQ0ZTc3NjE2ZWVjYmMyMTk1NjI4OTY5ZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCkBAIC0yMDMzLDEzICsyMDMzLDE0IEBAIGxsaW50T3BXaXRoSnVtcChv
cF9zd2l0Y2hfaW1tLCBPcFN3aXRjaEltbSwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0
Y2gpCiAgICAgZ2V0dShzaXplLCBPcFN3aXRjaEltbSwgbV90YWJsZUluZGV4LCB0MykKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MSwgdDApCiAgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQyCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKLSAg
ICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzCi0gICAgbG9hZHAgQ29kZUJsb2NrOjpS
YXJlRGF0YTo6bV9zd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3QyXSwgdDIKKyAgICBsb2FkcCBV
bmxpbmtlZENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgVW5s
aW5rZWRTaW1wbGVKdW1wVGFibGUsIHQzCisgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJh
cmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3Jh
Z2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCiAgICAgYWRkcCB0MywgdDIKICAg
ICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcFN3aXRjaEltbU5vdEludAotICAgIHN1YmkgU2ltcGxl
SnVtcFRhYmxlOjptaW5bdDJdLCB0MAotICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNo
T2Zmc2V0cyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0
YVt0Ml0sIHQyCisgICAgc3ViaSBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9taW5bdDJdLCB0
MAorICAgIGxvYWRwIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlOjptX2JyYW5jaE9mZnNldHMgKyBG
aXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0Mgog
ICAgIGJ0cHogdDIsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCiAgICAgYmlhZXEgdDAsIFJlZkNv
dW50ZWRBcnJheVN0b3JhZ2VOb25OdWxsU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxU
aHJvdWdoCiAgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCkBAIC0yMDYyLDkgKzIwNjMsMTAgQEAg
bGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9jaGFyLCBPcFN3aXRjaENoYXIsIG1hY3JvIChzaXpl
LCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgIGdldHUoc2l6ZSwgT3BTd2l0Y2hDaGFyLCBtX3Rh
YmxlSW5kZXgsIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQxLCB0
MCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
cmFyZURhdGFbdDJdLCB0MgotICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKLSAg
ICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JC
dWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVb
dDJdLCB0MgorICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIK
KyAgICBtdWxpIHNpemVvZiBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBV
bmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsg
Rml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIK
ICAgICBhZGRwIHQzLCB0MgogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2gKICAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIC5vcFN3
aXRjaENoYXJGYWxsVGhyb3VnaApAQCAtMjA3OCw4ICsyMDgwLDggQEAgbGxpbnRPcFdpdGhKdW1w
KG9wX3N3aXRjaF9jaGFyLCBPcFN3aXRjaENoYXIsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRp
c3BhdGNoKQogLm9wU3dpdGNoQ2hhcjhCaXQ6CiAgICAgbG9hZGIgW3QwXSwgdDAKIC5vcFN3aXRj
aENoYXJSZWFkeToKLSAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKLSAgICBs
b2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9y
YWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgorICAgIHN1YmkgVW5saW5rZWRT
aW1wbGVKdW1wVGFibGU6Om1fbWluW3QyXSwgdDAKKyAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1
bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNv
dW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKICAgICBidHB6IHQyLCAub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2gKICAgICBiaWFlcSB0MCwgUmVmQ291bnRlZEFycmF5U3RvcmFnZU5vbk51bGxTaXpl
T2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCiAgICAgbG9hZGkgW3QyLCB0MCwg
NF0sIHQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCmluZGV4IDUwZTJjMzg1NjlmZDM0YzU0NjA5MDJmMDljNjQzMjg1ODdk
YmFjNzIuLjE0YWQyYTQ5N2ZiMGE3YWY5MzdiMjczYTcwZDBhOWZiYWUzYmQyYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCkBAIC0yMTc4LDEzICsyMTc4LDE0IEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfaW1t
LCBPcFN3aXRjaEltbSwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgZ2V0
dShzaXplLCBPcFN3aXRjaEltbSwgbV90YWJsZUluZGV4LCB0MykKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHNpemUsIHQyLCB0MSkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgotICAgIG11bGkgc2l6ZW9mIFNp
bXBsZUp1bXBUYWJsZSwgdDMKLSAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3N3aXRj
aEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGxvYWRwIENvZGVC
bG9jazo6bV91bmxpbmtlZENvZGVbdDJdLCB0MgorICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2Nr
OjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBVbmxpbmtlZFNpbXBsZUp1bXBU
YWJsZSwgdDMKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6Om1fdW5saW5r
ZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRB
cnJheTo6bV9kYXRhW3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJxYiB0MSwgbnVtYmVy
VGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKLSAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3Qy
XSwgdDEKLSAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBGaXhlZFZl
Y3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgorICAgIHN1
YmkgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fbWluW3QyXSwgdDEKKyAgICBsb2FkcCBVbmxp
bmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRzICsgRml4ZWRWZWN0b3I6Om1fc3Rv
cmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKICAgICBidHB6IHQyLCAub3BT
d2l0Y2hJbW1GYWxsVGhyb3VnaAogICAgIGJpYWVxIHQxLCBSZWZDb3VudGVkQXJyYXlTdG9yYWdl
Tm9uTnVsbFNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAogICAgIGxvYWRp
cyBbdDIsIHQxLCA0XSwgdDEKQEAgLTIyMDcsOSArMjIwOCwxMCBAQCBsbGludE9wV2l0aEp1bXAo
b3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoQ2hhciwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlz
cGF0Y2gpCiAgICAgZ2V0dShzaXplLCBPcFN3aXRjaENoYXIsIG1fdGFibGVJbmRleCwgdDMpCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDEpCiAgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQyCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKLSAg
ICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzCi0gICAgbG9hZHAgQ29kZUJsb2NrOjpS
YXJlRGF0YTo6bV9zd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3QyXSwgdDIKKyAgICBsb2FkcCBV
bmxpbmtlZENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgVW5s
aW5rZWRTaW1wbGVKdW1wVGFibGUsIHQzCisgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJh
cmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3Jh
Z2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCiAgICAgYWRkcCB0MywgdDIKICAg
ICBidHFueiB0MSwgbm90Q2VsbE1hc2ssIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJi
bmVxIEpTQ2VsbDo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJv
dWdoCkBAIC0yMjIzLDggKzIyMjUsOCBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIs
IE9wU3dpdGNoQ2hhciwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAub3BTd2l0
Y2hDaGFyOEJpdDoKICAgICBsb2FkYiBbdDFdLCB0MAogLm9wU3dpdGNoQ2hhclJlYWR5OgotICAg
IHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAotICAgIGxvYWRwIFNpbXBsZUp1bXBU
YWJsZTo6YnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVk
QXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgc3ViaSBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6
bV9taW5bdDJdLCB0MAorICAgIGxvYWRwIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlOjptX2JyYW5j
aE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2Rh
dGFbdDJdLCB0MgogICAgIGJ0cHogdDIsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJp
YWVxIHQwLCBSZWZDb3VudGVkQXJyYXlTdG9yYWdlTm9uTnVsbFNpemVPZmZzZXRbdDJdLCAub3BT
d2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBsb2FkaXMgW3QyLCB0MCwgNF0sIHQxCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggNDNmZDQ0NzQ0
YzIwYmQwMzUxMzU5MjY1MjE1NzJkMzJmMTAyZTRmMS4uM2IyNzc1NTE4MTg5N2Y2Y2M3ZGIyNjUy
OGJhODI5NDI5NmJjYjAzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcApAQCAtODY1LDE0ICs4NjUsMTQgQEAgY2xhc3MgQ2FjaGVkU2ltcGxlSnVt
cFRhYmxlIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gewog
cHVibGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVubGlua2Vk
U2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUpCiAgICAgewotICAgICAgICBtX21pbiA9IGp1bXBU
YWJsZS5taW47Ci0gICAgICAgIG1fYnJhbmNoT2Zmc2V0cy5lbmNvZGUoZW5jb2RlciwganVtcFRh
YmxlLmJyYW5jaE9mZnNldHMpOworICAgICAgICBtX21pbiA9IGp1bXBUYWJsZS5tX21pbjsKKyAg
ICAgICAgbV9icmFuY2hPZmZzZXRzLmVuY29kZShlbmNvZGVyLCBqdW1wVGFibGUubV9icmFuY2hP
ZmZzZXRzKTsKICAgICB9CiAKICAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVbmxp
bmtlZFNpbXBsZUp1bXBUYWJsZSYganVtcFRhYmxlKSBjb25zdAogICAgIHsKLSAgICAgICAganVt
cFRhYmxlLm1pbiA9IG1fbWluOwotICAgICAgICBtX2JyYW5jaE9mZnNldHMuZGVjb2RlKGRlY29k
ZXIsIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzKTsKKyAgICAgICAganVtcFRhYmxlLm1fbWluID0g
bV9taW47CisgICAgICAgIG1fYnJhbmNoT2Zmc2V0cy5kZWNvZGUoZGVjb2RlciwganVtcFRhYmxl
Lm1fYnJhbmNoT2Zmc2V0cyk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTUwLDcgKzk1MCw3IEBA
IGNsYXNzIENhY2hlZENvZGVCbG9ja1JhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxp
bmtlZENvZGVCbG9jazo6UmFyZURhdGE+CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhJiByYXJlRGF0YSkKICAgICB7CiAg
ICAgICAgIG1fZXhjZXB0aW9uSGFuZGxlcnMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fZXhj
ZXB0aW9uSGFuZGxlcnMpOwotICAgICAgICBtX3N3aXRjaEp1bXBUYWJsZXMuZW5jb2RlKGVuY29k
ZXIsIHJhcmVEYXRhLm1fc3dpdGNoSnVtcFRhYmxlcyk7CisgICAgICAgIG1fdW5saW5rZWRTd2l0
Y2hKdW1wVGFibGVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3VubGlua2VkU3dpdGNoSnVt
cFRhYmxlcyk7CiAgICAgICAgIG1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmVuY29k
ZShlbmNvZGVyLCByYXJlRGF0YS5tX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcyk7CiAg
ICAgICAgIG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnMuZW5jb2RlKGVuY29kZXIsIHJhcmVE
YXRhLm1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnMpOwogICAgICAgICBtX3R5cGVQcm9maWxl
ckluZm9NYXAuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fdHlwZVByb2ZpbGVySW5mb01hcCk7
CkBAIC05NjUsNyArOTY1LDcgQEAgY2xhc3MgQ2FjaGVkQ29kZUJsb2NrUmFyZURhdGEgOiBwdWJs
aWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YT4KICAgICB7CiAgICAg
ICAgIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YSogcmFyZURhdGEgPSBuZXcgVW5saW5rZWRD
b2RlQmxvY2s6OlJhcmVEYXRhIHsgfTsKICAgICAgICAgbV9leGNlcHRpb25IYW5kbGVycy5kZWNv
ZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMpOwotICAgICAgICBtX3N3
aXRjaEp1bXBUYWJsZXMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJs
ZXMpOworICAgICAgICBtX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcy5kZWNvZGUoZGVjb2Rlciwg
cmFyZURhdGEtPm1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzKTsKICAgICAgICAgbV91bmxpbmtl
ZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5tX3VubGlu
a2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcyk7CiAgICAgICAgIG1fZXhwcmVzc2lvbkluZm9GYXRQ
b3NpdGlvbnMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5tX2V4cHJlc3Npb25JbmZvRmF0UG9z
aXRpb25zKTsKICAgICAgICAgbV90eXBlUHJvZmlsZXJJbmZvTWFwLmRlY29kZShkZWNvZGVyLCBy
YXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwKTsKQEAgLTk3OSw3ICs5NzksNyBAQCBjbGFz
cyBDYWNoZWRDb2RlQmxvY2tSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRD
b2RlQmxvY2s6OlJhcmVEYXRhPgogCiBwcml2YXRlOgogICAgIENhY2hlZFZlY3RvcjxVbmxpbmtl
ZEhhbmRsZXJJbmZvPiBtX2V4Y2VwdGlvbkhhbmRsZXJzOwotICAgIENhY2hlZFZlY3RvcjxDYWNo
ZWRTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKKyAgICBDYWNoZWRWZWN0b3I8
Q2FjaGVkU2ltcGxlSnVtcFRhYmxlPiBtX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlczsKICAgICBD
YWNoZWRWZWN0b3I8Q2FjaGVkU3RyaW5nSnVtcFRhYmxlPiBtX3VubGlua2VkU3RyaW5nU3dpdGNo
SnVtcFRhYmxlczsKICAgICBDYWNoZWRWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9z
aXRpb24+IG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CiAgICAgQ2FjaGVkSGFzaE1hcDx1
bnNpZ25lZCwgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNz
aW9uUmFuZ2U+IG1fdHlwZVByb2ZpbGVySW5mb01hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0ZpeGVkVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCmluZGV4IGUz
ZjBhOTM4NTQyN2QyNTk5NDNhOWUyMzg1NWRjZmZhNzU5ZThjMTguLjMyOGY5ODE1MTBiZjdiNjRm
NzMwZjFhYmI4ZWUxMTA4MzM3NmMxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVk
VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3IuaApAQCAtNzUsNiArNzUs
MTggQEAgY2xhc3MgRml4ZWRWZWN0b3IgewogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQog
CisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXI+CisgICAgZXhwbGljaXQgRml4ZWRWZWN0b3IoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIpCisgICAgICAgIDogbV9zdG9yYWdlKFdURk1vdmUo
b3RoZXIpKQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CisgICAgRml4ZWRWZWN0b3ImIG9wZXJhdG9yPShWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mJiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIG1fc3RvcmFnZSA9IFdURk1vdmUob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2Uuc2l6
ZSgpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLmlzRW1w
dHkoKTsgfQogICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5i
eXRlU2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXku
aCBiL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCmluZGV4IDY3YWQ3Nzc2ZTU4OTc3
NGFhMWY0YmFhMDQ1ZDJhNzE0Y2IwYmFjMGIuLmIwOWEzZjM2YWEwZTc0N2NkOTFjMGRlMTBiNzBm
NTM3ZThhMjMwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCkBAIC0xMTIsNiArMTEyLDI0
IEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7CiAgICAgICAgIEFTU0VSVChIZWFkZXI6OmZyb21Q
YXlsb2FkKGRhdGEpLT5sZW5ndGggPT0gb3RoZXIuc2l6ZSgpKTsKICAgICAgICAgVmVjdG9yVHlw
ZU9wZXJhdGlvbnM8VD46OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJlZ2luKCksIG90aGVyLmVu
ZCgpLCBkYXRhKTsKICAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHks
IHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAgICBleHBsaWNpdCBSZWZDb3VudGVkQXJyYXko
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIpCisgICAg
eworICAgICAgICBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4gdmVj
dG9yKFdURk1vdmUob3RoZXIpKTsKKyAgICAgICAgaWYgKHZlY3Rvci5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgIFB0clRyYWl0czo6ZXhjaGFuZ2UobV9kYXRhLCBudWxscHRyKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFQqIGRhdGEgPSAoc3RhdGljX2Nhc3Q8
SGVhZGVyKj4oUmVmQ291bnRlZEFycmF5TWFsbG9jOjptYWxsb2MoSGVhZGVyOjpzaXplKCkgKyBz
aXplb2YoVCkgKiB2ZWN0b3Iuc2l6ZSgpKSkpLT5wYXlsb2FkKCk7CisgICAgICAgIG1fZGF0YSA9
IGRhdGE7CisgICAgICAgIEhlYWRlcjo6ZnJvbVBheWxvYWQoZGF0YSktPnJlZkNvdW50ID0gMTsK
KyAgICAgICAgSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+bGVuZ3RoID0gdmVjdG9yLnNpemUo
KTsKKyAgICAgICAgQVNTRVJUKEhlYWRlcjo6ZnJvbVBheWxvYWQoZGF0YSktPmxlbmd0aCA9PSB2
ZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwg
dmVjdG9yLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgICAgIG5ldyAoZGF0YSArIGluZGV4KSBU
KFdURk1vdmUodmVjdG9yW2luZGV4XSkpOworICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPdGhlclRyYWl0cyA9IFB0clRyYWl0cz4KICAgICBSZWZDb3VudGVkQXJyYXkmIG9wZXJh
dG9yPShjb25zdCBSZWZDb3VudGVkQXJyYXk8VCwgT3RoZXJUcmFpdHM+JiBvdGhlcikKQEAgLTE0
OCw2ICsxNjYsMzIgQEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgT3ZlcmZsb3dIYW5kbGVyPgorICAgIFJlZkNvdW50ZWRBcnJheSYgb3BlcmF0b3I9KFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYmIG90aGVyKQorICAgIHsKKyAg
ICAgICAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+IHZlY3RvcihX
VEZNb3ZlKG90aGVyKSk7CisgICAgICAgIFQqIG9sZERhdGEgPSBkYXRhKCk7CisgICAgICAgIGlm
ICh2ZWN0b3IuaXNFbXB0eSgpKQorICAgICAgICAgICAgUHRyVHJhaXRzOjpleGNoYW5nZShtX2Rh
dGEsIG51bGxwdHIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFQqIGRhdGEgPSAoc3Rh
dGljX2Nhc3Q8SGVhZGVyKj4oUmVmQ291bnRlZEFycmF5TWFsbG9jOjptYWxsb2MoSGVhZGVyOjpz
aXplKCkgKyBzaXplb2YoVCkgKiB2ZWN0b3Iuc2l6ZSgpKSkpLT5wYXlsb2FkKCk7CisgICAgICAg
ICAgICBtX2RhdGEgPSBkYXRhOworICAgICAgICAgICAgSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRh
KS0+cmVmQ291bnQgPSAxOworICAgICAgICAgICAgSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+
bGVuZ3RoID0gdmVjdG9yLnNpemUoKTsKKyAgICAgICAgICAgIEFTU0VSVChIZWFkZXI6OmZyb21Q
YXlsb2FkKGRhdGEpLT5sZW5ndGggPT0gdmVjdG9yLnNpemUoKSk7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB2ZWN0b3Iuc2l6ZSgpOyArK2luZGV4KQorICAg
ICAgICAgICAgICAgIG5ldyAoZGF0YSArIGluZGV4KSBUKFdURk1vdmUodmVjdG9yW2luZGV4XSkp
OworICAgICAgICB9CisgICAgICAgIGlmICghb2xkRGF0YSkKKyAgICAgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICAgICAgaWYgKC0tSGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRhKS0+cmVmQ291
bnQpCisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIFZlY3RvclR5cGVPcGVyYXRp
b25zPFQ+OjpkZXN0cnVjdChvbGREYXRhLCBvbGREYXRhICsgSGVhZGVyOjpmcm9tUGF5bG9hZChv
bGREYXRhKS0+bGVuZ3RoKTsKKworICAgICAgICBSZWZDb3VudGVkQXJyYXlNYWxsb2M6OmZyZWUo
SGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRhKSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKICAgICB+UmVmQ291bnRlZEFycmF5KCkKICAgICB7CiAgICAgICAgIGlmICghbV9kYXRh
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425942</attachid>
            <date>2021-04-13 19:22:01 -0700</date>
            <delta_ts>2021-04-13 22:06:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224472-20210413192201.patch</filename>
            <type>text/plain</type>
            <size>70598</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1OTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MDQxODk2NzJkNWJlYzYxYWFlNDkzMDU5YWE0NDdjMDEyN2MzMjY5Li5jOTg2M2MxOWEzOWFhODQx
N2JkMTU0OTY0YTQ1ZWI1MDFkMWU5ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTAgQEAKKzIwMjEtMDQtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBEbyBub3QgY29weSBTaW1wbGVKdW1wVGFibGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ3MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXZvaWRz
IGNvcHlpbmcgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUgdG8gU2ltcGxlSnVtcFRhYmxlIGJ5IGRl
Y291cGxpbmcgQ1RJIGFkZHJlc3NlcyBmcm9tIGp1bXAgb2Zmc2V0IGluIFNpbXBsZUp1bXBUYWJs
ZS4KKyAgICAgICAgU2ltcGxlSnVtcFRhYmxlIGFuZCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSBh
cmUgYWxtb3N0IGlkZW50aWNhbC4gU2ltcGxlSnVtcFRhYmxlIGFkZHMgSklUIGp1bXAgdGFyZ2V0
IGZvciBlYWNoIGJyYW5jaC4KKyAgICAgICAgV2Ugc2hvdWxkIHVzZSBkYXRhIGZyb20gVW5saW5r
ZWRTaW1wbGVKdW1wVGFibGUgYW5kIGp1bXAgdmlhIFNpbXBsZUp1bXBUYWJsZS4gRG8gbm90IG5l
ZWQgdG8gaGF2ZSBjb3B5IG9mIGJyYW5jaGVzIGZyb20gVW5saW5rZWRTaW1wbGVKdW1wVGFibGUu
CisKKyAgICAgICAgVGhpcyB3YXkgcmVtb3ZlcyBWZWN0b3I8U2ltcGxlSnVtcFRhYmxlPiBmcm9t
IENvZGVCbG9jazo6UmFyZURhdGEuIEFuZCB0aGlzIGlzIG1vdmVkIHRvIENvZGVCbG9jazo6SklU
RGF0YS4gQW5kIGl0IG9ubHkgaW5jbHVkZXMganVtcCB0YXJnZXQgYWRkcmVzc2VzLAorICAgICAg
ICBhbmQgYnJhbmNoIG9mZnNldCBpbmZvcm1hdGlvbiBpcyBrZXB0IGluIFVubGlua2VkU2ltcGxl
SnVtcFRhYmxlIHNpZGUuIFdlIG5vIGxvbmdlciBuZWVkIHRvIGNhcmVmdWxseSBjb3B5IHRoZXNl
IHZlY3RvcnMgaW4gQ29kZUJsb2NrIGluY2x1ZGluZyBERkcgLyBGVEwgb25lcy4KKworICAgICAg
ICBJbiBMTEludCwgd2UgaW5zdGVhZCB1c2UgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUgZm9yIGp1
bXBpbmcuCisKKyAgICAgICAgSW4gQmFzZWxpbmUsIHdlIGZpcnN0IGFsbG9jYXRlIGVub3VnaCBG
aXhlZFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IGFuZCBmaWxsIGNvbnRlbnQgdmlhIFNpbXBsZUp1
bXBUYWJsZTo6ZW5zdXJlQ1RJVGFibGUoKSBjYWxsIHdoZW4gY29tcGlsaW5nIGNvcnJlc3BvbmRp
bmcKKyAgICAgICAgc3dpdGNoIG9wY29kZS4gRmluYWxseSB3ZSBmaWxsIHRoZXNlIGRhdGEgc3Ry
dWN0dXJlcyB3aXRoIGFjdHVhbCBjb2RlIGxvY2F0aW9ucyBpbiBKSVQ6OmxpbmsgZnVuY3Rpb24u
CisKKyAgICAgICAgSW4gREZHLCB3ZSBmaXJzdCBjb2xsZWN0IFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlIHdpdGhvdXQgY29weWluZy4gVGhpcyBpcyBPSyBzaW5jZSBpdCBpcyBrZXB0IGJ5IFVubGlu
a2VkQ29kZUJsb2NrLCBhbmQgVW5saW5rZWRDb2RlQmxvY2sgaXMga2VwdCBieSBiYXNlbGluZSBD
b2RlQmxvY2tzIHRoYXQKKyAgICAgICAgYXJlIGhhbmRsZWQgYnkgdGhpcyBERkcgY29tcGlsYXRp
b24uIFdlIGhvbGQgVmVjdG9yPGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlKj4gaW4gREZH
OjpHcmFwaCBhbmQgd2UgbWF0ZXJpYWxpemUgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4gaW4gREZH
OjpHcmFwaC4KKyAgICAgICAgRHVyaW5nIERGRyBjb21waWxhdGlvbiwgd2UgdG91Y2ggdGhpcyBE
Rkc6OkdyYXBoJ3MganVtcCB0YWJsZXMsIGFuZCBKSVQgY29tcGlsZXIgZ2VuZXJhdGVzIGNvZGUg
dmlhIHRoZXNlIHRhYmxlcy4gQW5kIHdoZW4gbGlua2luZywgd2UgbW92ZSB0aGUgY29udGVudCB0
byBDb2RlQmxvY2suCisKKyAgICAgICAgSW4gRlRMLCB3aGlsZSB3ZSB1c2UgVW5saW5rZWRTaW1w
bGVKdW1wVGFibGUgaW4gRlRMIGNvZGUgZ2VuZXJhdGlvbiwgRlRMIGRvIG5vdCB1c2UgU2ltcGxl
SnVtcFRhYmxlIGFuZCBpbnN0ZWFkIEZUTCB1c2VzIFN3aXRjaCBpbiBCMy4KKworICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrQnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wU3dpdGNoSnVtcFRhYmxlcyk6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3dpdGNoSnVtcFRhYmxlKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcyBj
b25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mU3dpdGNoSnVtcFRhYmxlcyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y2xlYXJTd2l0Y2hKdW1wVGFi
bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRTd2l0Y2hKdW1wVGFi
bGVGcm9tUHJvZmlsZWRDb2RlQmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0p1
bXBUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNpbXBsZUp1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFs
dWUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0p1bXBUYWJsZS5oOgorICAgICAgICAo
SlNDOjpTaW1wbGVKdW1wVGFibGU6OmVuc3VyZUNUSVRhYmxlKToKKyAgICAgICAgKEpTQzo6U2lt
cGxlSnVtcFRhYmxlOjpjdGlGb3JWYWx1ZSBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpTaW1wbGVKdW1wVGFibGU6OmNsb25lTm9uSklUUGFydCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlNpbXBsZUp1bXBUYWJsZTo6Y3RpRm9yVmFsdWUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpTaW1wbGVKdW1wVGFibGU6OmNsZWFyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRTaW1w
bGVKdW1wVGFibGU6Om9mZnNldEZvclZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRTaW1wbGVKdW1wVGFibGU6OmFkZCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjpudW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcyBjb25zdCk6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjp1bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSk6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpudW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6c3dpdGNoSnVtcFRhYmxl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpmaW5hbGl6
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6Om51bWJlck9mVW5saW5rZWRT
d2l0Y2hKdW1wVGFibGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3I6OmFkZFVubGlua2VkU3dpdGNoSnVtcFRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6Om51bWJlck9mU3dpdGNoSnVtcFRh
YmxlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yOjphZGRTd2l0Y2hKdW1wVGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6c3dpdGNoSnVtcFRhYmxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6YmVnaW5Td2l0Y2gpOgorICAgICAgICAoSlNDOjpwcmVwYXJlSnVt
cFRhYmxlRm9yU3dpdGNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVuZFN3
aXRjaCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZW1pdFN3aXRjaEludEp1bXApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoSW1tKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAg
ICAgKiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OlN3aXRjaFJlY29yZDo6U3dpdGNoUmVjb3Jk
KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9zd2l0Y2hfaW1tKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N3aXRjaF9jaGFy
KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3N3aXRjaF9pbW0pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3dpdGNo
X2NoYXIpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5o
OgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c206CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNh
Y2hlZFNpbXBsZUp1bXBUYWJsZTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkU2ltcGxl
SnVtcFRhYmxlOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2tS
YXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrUmFyZURhdGE6
OmRlY29kZSBjb25zdCk6CisKIDIwMjEtMDQtMTMgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNs
aW5nQHNvbnkuY29tPgogCiAgICAgICAgIE1vdmUgY2xvbmVVQnJlYWtJdGVyYXRvciBkZWNsYXJh
dGlvbiB0byBJbnRsV29ya2Fyb3VuZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCAwMGY5ZWM5N2NlNzJlOTZhZjdhMTNiM2I0
ZDZmOWU3M2JjZTUyMjNhLi4yMWNjY2M0OGVjYjhjMGRjM2UzNjBkZTUyOGJhM2EyMzI4YjdlZjc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1w
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBl
ci5jcHAKQEAgLTE3NCwxOCArMTc0LDE4IEBAIHZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpkdW1wRXhjZXB0aW9uSGFuZGxlcnMoKQogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+CiB2
b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcFN3aXRjaEp1bXBUYWJsZXMo
KQogewotICAgIGlmICh1bnNpZ25lZCBjb3VudCA9IHRoaXMtPmJsb2NrKCktPm51bWJlck9mU3dp
dGNoSnVtcFRhYmxlcygpKSB7CisgICAgaWYgKHVuc2lnbmVkIGNvdW50ID0gdGhpcy0+YmxvY2so
KS0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKSkgewogICAgICAgICB0aGlzLT5t
X291dC5wcmludGYoIlN3aXRjaCBKdW1wIFRhYmxlczpcbiIpOwogICAgICAgICB1bnNpZ25lZCBp
ID0gMDsKICAgICAgICAgZG8gewogICAgICAgICAgICAgdGhpcy0+bV9vdXQucHJpbnRmKCIgICUx
ZCA9IHtcbiIsIGkpOwotICAgICAgICAgICAgY29uc3QgYXV0byYgc3dpdGNoSnVtcFRhYmxlID0g
dGhpcy0+YmxvY2soKS0+c3dpdGNoSnVtcFRhYmxlKGkpOworICAgICAgICAgICAgY29uc3QgYXV0
byYgc3dpdGNoSnVtcFRhYmxlID0gdGhpcy0+YmxvY2soKS0+dW5saW5rZWRTd2l0Y2hKdW1wVGFi
bGUoaSk7CiAgICAgICAgICAgICBpbnQgZW50cnkgPSAwOwotICAgICAgICAgICAgYXV0byBlbmQg
PSBzd2l0Y2hKdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5lbmQoKTsKLSAgICAgICAgICAgIGZvciAo
YXV0byBpdGVyID0gc3dpdGNoSnVtcFRhYmxlLmJyYW5jaE9mZnNldHMuYmVnaW4oKTsgaXRlciAh
PSBlbmQ7ICsraXRlciwgKytlbnRyeSkgeworICAgICAgICAgICAgYXV0byBlbmQgPSBzd2l0Y2hK
dW1wVGFibGUubV9icmFuY2hPZmZzZXRzLmVuZCgpOworICAgICAgICAgICAgZm9yIChhdXRvIGl0
ZXIgPSBzd2l0Y2hKdW1wVGFibGUubV9icmFuY2hPZmZzZXRzLmJlZ2luKCk7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIsICsrZW50cnkpIHsKICAgICAgICAgICAgICAgICBpZiAoISppdGVyKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB0aGlzLT5tX291dC5wcmlu
dGYoIlx0XHQlNGQgPT4gJTA0ZFxuIiwgZW50cnkgKyBzd2l0Y2hKdW1wVGFibGUubWluLCAqaXRl
cik7CisgICAgICAgICAgICAgICAgdGhpcy0+bV9vdXQucHJpbnRmKCJcdFx0JTRkID0+ICUwNGRc
biIsIGVudHJ5ICsgc3dpdGNoSnVtcFRhYmxlLm1fbWluLCAqaXRlcik7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB0aGlzLT5tX291dC5wcmludGYoIiAgICAgIH1cbiIpOwogICAgICAgICAg
ICAgKytpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXggNGQ1N2RhNWEzMGUyZDE5ZjBj
ODVjYjVjZDlkYmYzNzA4NTMzNWY1Ny4uODI4ZDhhMDQzN2UyZWZkOWM2ZTNjYzhmMGY3ZTU0Y2Vl
YTM2OTlkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0yMTYsMTIgKzIxNiwxMiBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgIC8vIFNldHVwIHRo
ZSBnbG9iYWwgc3dpdGNoIGZvciB0aGUgZ2VuZXJhdG9yLgogICAgIHsKICAgICAgICAgYXV0byBu
ZXh0VG9FbnRlclBvaW50ID0gZW50ZXJQb2ludCgpLm5leHQoKTsKLSAgICAgICAgdW5zaWduZWQg
c3dpdGNoVGFibGVJbmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMo
KTsKKyAgICAgICAgdW5zaWduZWQgc3dpdGNoVGFibGVJbmRleCA9IG1fY29kZUJsb2NrLT5udW1i
ZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
c3RhdGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpTdGF0ZSkpOwotICAgICAgICBhdXRv
JiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7Ci0gICAgICAg
IGp1bXBUYWJsZS5taW4gPSAwOwotICAgICAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cyA9IEZp
eGVkVmVjdG9yPGludDMyX3Q+KG1feWllbGRzLnNpemUoKSArIDEpOwotICAgICAgICBzdGQ6OmZp
bGwoanVtcFRhYmxlLmJyYW5jaE9mZnNldHMuYmVnaW4oKSwganVtcFRhYmxlLmJyYW5jaE9mZnNl
dHMuZW5kKCksIDApOworICAgICAgICBhdXRvJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRk
VW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoKTsKKyAgICAgICAganVtcFRhYmxlLm1fbWluID0gMDsK
KyAgICAgICAganVtcFRhYmxlLm1fYnJhbmNoT2Zmc2V0cyA9IEZpeGVkVmVjdG9yPGludDMyX3Q+
KG1feWllbGRzLnNpemUoKSArIDEpOworICAgICAgICBzdGQ6OmZpbGwoanVtcFRhYmxlLm1fYnJh
bmNoT2Zmc2V0cy5iZWdpbigpLCBqdW1wVGFibGUubV9icmFuY2hPZmZzZXRzLmVuZCgpLCAwKTsK
ICAgICAgICAganVtcFRhYmxlLmFkZCgwLCBuZXh0VG9FbnRlclBvaW50Lm9mZnNldCgpKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1feWllbGRzLnNpemUoKTsgKytpKQogICAg
ICAgICAgICAganVtcFRhYmxlLmFkZChpICsgMSwgbV95aWVsZHNbaV0ucG9pbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBkYjgyODZhODc0
NzgzMGIzN2Y3MDE3ZmFjOTkyNzYyZDIxMzBiMDgzLi4zNzlhOGY3YTNiMzg3YzdiODZkZTFmMGUx
ZGU2M2VmMzE4NmM1NzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtMzIzLDkgKzMyMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKIAogICAg
IGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnkoKTsKLSAgICAgICAgCiAgICAgICAgIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMg
PSBvdGhlci5tX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzOwotICAgICAgICBtX3JhcmVE
YXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBU
YWJsZXM7CiAgICAgfQogfQogCkBAIC00MTcsNyArNDE1LDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKICAgICAgICAgbV9mdW5jdGlvbkV4cHJzW2ldLnNldCh2bSwgdGhpcywgdW5saW5rZWRF
eGVjdXRhYmxlLT5saW5rKHZtLCB0b3BMZXZlbEV4ZWN1dGFibGUsIG93bmVyRXhlY3V0YWJsZS0+
c291cmNlKCksIFdURjo6bnVsbG9wdCwgTm9JbnRyaW5zaWMsIG93bmVyRXhlY3V0YWJsZS0+aXNJ
bnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCkpKTsKICAgICB9CiAKLSAgICBpZiAodW5saW5rZWRDb2Rl
QmxvY2stPm51bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMoKSB8fCB1bmxpbmtlZENvZGVCbG9jay0+
bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCkpIHsKKyAgICBpZiAodW5saW5rZWRDb2RlQmxvY2st
Pm51bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMoKSkgewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlm
TmVjZXNzYXJ5KCk7CiAKICAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJs
b2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCkpIHsKQEAgLTQzMywxNiArNDMxLDYgQEAg
Ym9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJP
ZlN3aXRjaEp1bXBUYWJsZXMoKSkgewotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hK
dW1wVGFibGVzLnJlc2l6ZVRvRml0KGNvdW50KTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIFVubGlua2VkU2ltcGxlSnVt
cFRhYmxlJiBzb3VyY2VUYWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUo
aSk7Ci0gICAgICAgICAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiBkZXN0VGFibGUgPSBtX3JhcmVE
YXRhLT5tX3N3aXRjaEp1bXBUYWJsZXNbaV07Ci0gICAgICAgICAgICAgICAgZGVzdFRhYmxlLmJy
YW5jaE9mZnNldHMgPSBzb3VyY2VUYWJsZS5icmFuY2hPZmZzZXRzOwotICAgICAgICAgICAgICAg
IGRlc3RUYWJsZS5taW4gPSBzb3VyY2VUYWJsZS5taW47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KICAgICB9CiAKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBtb2R1
bGUgZW52aXJvbm1lbnRzLgpAQCAtMjExOSwxMyArMjEwNyw5IEBAIHZvaWQgQ29kZUJsb2NrOjpz
aHJpbmtUb0ZpdChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTaHJpbmtNb2RlIHNocmlua01v
ZGUpCiAgICAgaWYgKHNocmlua01vZGUgPT0gU2hyaW5rTW9kZTo6RWFybHlTaHJpbmspCiAgICAg
ICAgIG1fY29uc3RhbnRSZWdpc3RlcnMuc2hyaW5rVG9GaXQoKTsKICNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHNocmlua01vZGUpOwogICAgIG1fY29uc3RhbnRSZWdpc3RlcnMuc2hyaW5rVG9GaXQo
KTsKICNlbmRpZgotCi0gICAgaWYgKHNocmlua01vZGUgPT0gU2hyaW5rTW9kZTo6RWFybHlTaHJp
bmspIHsKLSAgICAgICAgaWYgKG1fcmFyZURhdGEpCi0gICAgICAgICAgICBtX3JhcmVEYXRhLT5t
X3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKLSAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hy
aW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJz
IGludG8gdGhlc2UgdGFibGVzLgogfQogCiAjaWYgRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA2ZjgwMDQ5NDk1MmE5MjA3MDdmNjRj
MDlmZjBmMzMyZmMwODA5ODA2Li4zMTFmNjU0MWEzZWMwN2NjMDVkMGViYzNmN2JiMzc4M2I1ODdl
MGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0y
NzgsNiArMjc4LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAg
IFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxD
YWxsTGlua0luZm8+PiBtX2luY29taW5nQ2FsbHM7CiAgICAgICAgIFNlbnRpbmVsTGlua2VkTGlz
dDxQb2x5bW9ycGhpY0NhbGxOb2RlLCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8UG9seW1vcnBoaWND
YWxsTm9kZT4+IG1faW5jb21pbmdQb2x5bW9ycGhpY0NhbGxzOwogICAgICAgICBGaXhlZFZlY3Rv
cjxSYXJlQ2FzZVByb2ZpbGU+IG1fcmFyZUNhc2VQcm9maWxlczsKKyAgICAgICAgRml4ZWRWZWN0
b3I8U2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIEZpeGVkVmVj
dG9yPFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UENUb0NvZGVPcmlnaW5NYXA+IG1fcGNUb0NvZGVPcmlnaW5NYXA7CiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gbV9jYWxsZWVTYXZl
UmVnaXN0ZXJzOwpAQCAtNjEzLDIxICs2MTQsMTUgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAKICAgICAvLyBKdW1wIFRhYmxlcwogCi0gICAgc2l6ZV90IG51bWJlck9mU3dp
dGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5t
X3N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpIDogMDsgfQotICAgIFNpbXBsZUp1bXBUYWJsZSYgc3dp
dGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEp
OyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9Ci0g
ICAgdm9pZCBjbGVhclN3aXRjaEp1bXBUYWJsZXMoKQotICAgIHsKLSAgICAgICAgaWYgKCFtX3Jh
cmVEYXRhKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRj
aEp1bXBUYWJsZXMuY2xlYXIoKTsKLSAgICB9Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgdm9p
ZCBhZGRTd2l0Y2hKdW1wVGFibGVGcm9tUHJvZmlsZWRDb2RlQmxvY2soU2ltcGxlSnVtcFRhYmxl
JiBwcm9maWxlZCkKKyNpZiBFTkFCTEUoSklUKQorICAgIFNpbXBsZUp1bXBUYWJsZSYgc3dpdGNo
SnVtcFRhYmxlKGludCB0YWJsZUluZGV4KQogICAgIHsKLSAgICAgICAgY3JlYXRlUmFyZURhdGFJ
Zk5lY2Vzc2FyeSgpOwotICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuYXBw
ZW5kKHByb2ZpbGVkLmNsb25lTm9uSklUUGFydCgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV9qaXREYXRhKTsKKyAgICAgICAgcmV0dXJuIG1faml0RGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVz
W3RhYmxlSW5kZXhdOwogICAgIH0KICNlbmRpZgorICAgIHNpemVfdCBudW1iZXJPZlVubGlua2Vk
U3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5udW1iZXJP
ZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpOyB9CisgICAgY29uc3QgVW5saW5rZWRTaW1wbGVK
dW1wVGFibGUmIHVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IHJldHVy
biBtX3VubGlua2VkQ29kZS0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7IH0K
IAogI2lmIEVOQUJMRShKSVQpCiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hKdW1w
VGFibGUoaW50IHRhYmxlSW5kZXgpCkBAIC04ODcsOSArODgyLDYgQEAgY2xhc3MgQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICBWZWN0b3I8SGFuZGxlcklu
Zm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7CiAKLSAgICAgICAgLy8gSnVtcCBUYWJsZXMKLSAgICAg
ICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwotCiAgICAgICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyQnVm
ZmVyPj4gbV9jYXRjaFByb2ZpbGVzOwogCiAgICAgICAgIERpcmVjdEV2YWxDb2RlQ2FjaGUgbV9k
aXJlY3RFdmFsQ29kZUNhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0p1bXBUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVt
cFRhYmxlLmNwcAppbmRleCBlMjJhZDAzYzljZTQxZDZhZjU4MTdmMzFkNjRmZWE1YmM3MDdkNmYw
Li40NDk1MmQ5MWY5NzE3MTY4NTlmMjJmMjQ5ZTUwNDkyMTY1ODMwZTE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcApAQCAtMzQsMTQgKzM0LDQgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLWludDMyX3QgU2ltcGxlSnVtcFRhYmxlOjpvZmZzZXRGb3JW
YWx1ZShpbnQzMl90IHZhbHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpCi17Ci0gICAgaWYgKHZh
bHVlID49IG1pbiAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUgLSBtaW4pIDwgYnJhbmNo
T2Zmc2V0cy5zaXplKCkpIHsKLSAgICAgICAgaW50MzJfdCBvZmZzZXQgPSBicmFuY2hPZmZzZXRz
W3ZhbHVlIC0gbWluXTsKLSAgICAgICAgaWYgKG9mZnNldCkKLSAgICAgICAgICAgIHJldHVybiBv
ZmZzZXQ7Ci0gICAgfQotICAgIHJldHVybiBkZWZhdWx0T2Zmc2V0OyAgICAgICAgCi19Ci0KIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0p1bXBUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJs
ZS5oCmluZGV4IGU3NmI1MDA1MDk2NmEyOTllOTNjYTNjZWM3ZWIzMzJjM2M5OTU3NGMuLmJhMDU2
MTMxYjkzZGZkMzkzNjBlNTljYTA1ZDJlODMwODUwOTI3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmgKQEAgLTUyLDQ5ICs1MiwyNSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICB9OwogI2VuZGlmCiAKLSAgICBzdHJ1Y3QgU2ltcGxlSnVtcFRhYmxlIHsKLSAg
ICAgICAgLy8gRklYTUU6IFRoZSB0d28gVmVjdG9ycyBjYW4gYmUgY29tYmluZWQgaW50byBvbmUg
VmVjdG9yPE9mZnNldExvY2F0aW9uPgotICAgICAgICBGaXhlZFZlY3RvcjxpbnQzMl90PiBicmFu
Y2hPZmZzZXRzOwotICAgICAgICBpbnQzMl90IG1pbiB7IElOVDMyX01JTiB9OwogI2lmIEVOQUJM
RShKSVQpCi0gICAgICAgIFZlY3RvcjxDb2RlTG9jYXRpb25MYWJlbDxKU1N3aXRjaFB0clRhZz4+
IGN0aU9mZnNldHM7Ci0gICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTU3dpdGNoUHRyVGFnPiBj
dGlEZWZhdWx0OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICAgICAgLy8gSklU
IHBhcnQgY2FuIGJlIGxhdGVyIGV4cGFuZGVkIHdpdGhvdXQgdGFraW5nIGEgbG9jayB3aGlsZSBu
b24tSklUIHBhcnQgaXMgc3RhYmxlIGFmdGVyIENvZGVCbG9jayBpcyBmaW5hbGl6ZWQuCi0gICAg
ICAgIFNpbXBsZUp1bXBUYWJsZSBjbG9uZU5vbkpJVFBhcnQoKSBjb25zdAotICAgICAgICB7Ci0g
ICAgICAgICAgICBTaW1wbGVKdW1wVGFibGUgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LmJy
YW5jaE9mZnNldHMgPSBicmFuY2hPZmZzZXRzOwotICAgICAgICAgICAgcmVzdWx0Lm1pbiA9IG1p
bjsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSNlbmRpZgorICAgIHN0
cnVjdCBTaW1wbGVKdW1wVGFibGUgeworICAgICAgICBGaXhlZFZlY3RvcjxDb2RlTG9jYXRpb25M
YWJlbDxKU1N3aXRjaFB0clRhZz4+IG1fY3RpT2Zmc2V0czsKKyAgICAgICAgQ29kZUxvY2F0aW9u
TGFiZWw8SlNTd2l0Y2hQdHJUYWc+IG1fY3RpRGVmYXVsdDsKIAotICAgICAgICBpbnQzMl90IG9m
ZnNldEZvclZhbHVlKGludDMyX3QgdmFsdWUsIGludDMyX3QgZGVmYXVsdE9mZnNldCk7Ci0jaWYg
RU5BQkxFKEpJVCkKLSAgICAgICAgdm9pZCBlbnN1cmVDVElUYWJsZSgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEFTU0VSVChjdGlPZmZzZXRzLmlzRW1wdHkoKSB8fCBjdGlPZmZzZXRzLnNpemUo
KSA9PSBicmFuY2hPZmZzZXRzLnNpemUoKSk7Ci0gICAgICAgICAgICBjdGlPZmZzZXRzLmdyb3co
YnJhbmNoT2Zmc2V0cy5zaXplKCkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpbmxp
bmUgQ29kZUxvY2F0aW9uTGFiZWw8SlNTd2l0Y2hQdHJUYWc+IGN0aUZvclZhbHVlKGludDMyX3Qg
dmFsdWUpCisgICAgICAgIHZvaWQgZW5zdXJlQ1RJVGFibGUoY29uc3QgVW5saW5rZWRTaW1wbGVK
dW1wVGFibGUmIHVubGlua2VkVGFibGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh2YWx1
ZSA+PSBtaW4gJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlIC0gbWluKSA8IGN0aU9mZnNl
dHMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjdGlPZmZzZXRzW3ZhbHVlIC0gbWlu
XTsKLSAgICAgICAgICAgIHJldHVybiBjdGlEZWZhdWx0OworICAgICAgICAgICAgaWYgKCFtX2N0
aU9mZnNldHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IG1fY3RpT2Zmc2V0cyA9IEZpeGVkVmVjdG9yPENvZGVMb2NhdGlvbkxhYmVsPEpTU3dpdGNoUHRy
VGFnPj4odW5saW5rZWRUYWJsZS5tX2JyYW5jaE9mZnNldHMuc2l6ZSgpKTsKICAgICAgICAgfQot
I2VuZGlmCiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICAgICAgdm9pZCBjbGVhcigpCisgICAg
ICAgIGlubGluZSBDb2RlTG9jYXRpb25MYWJlbDxKU1N3aXRjaFB0clRhZz4gY3RpRm9yVmFsdWUo
aW50MzJfdCBtaW4sIGludDMyX3QgdmFsdWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAg
IGJyYW5jaE9mZnNldHMgPSBGaXhlZFZlY3RvcjxpbnQzMl90PigpOwotICAgICAgICAgICAgY3Rp
T2Zmc2V0cy5jbGVhcigpOworICAgICAgICAgICAgaWYgKHZhbHVlID49IG1pbiAmJiBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4odmFsdWUgLSBtaW4pIDwgbV9jdGlPZmZzZXRzLnNpemUoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbV9jdGlPZmZzZXRzW3ZhbHVlIC0gbWluXTsKKyAgICAgICAgICAg
IHJldHVybiBtX2N0aURlZmF1bHQ7CiAgICAgICAgIH0KLSNlbmRpZgogICAgIH07CisjZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaAppbmRleCAzYmRhOWJiNDA5
N2Q2Y2EyOWJiYzljOGU4MmI0NzdlNWI3ZjMzNmI5Li5kYzY4NWI4Y2I0Y2ViMGFiNGI0ZWJjY2Mz
MjM5MTlhY2UxZDA2ZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgKQEAgLTYxLDE3ICs2MSwxNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBDQVNFX09QKE9wSmJlbG93ZXEpIFwKICAgICBjYXNlIG9w
X3N3aXRjaF9pbW06IHsgXAogICAgICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFz
PE9wU3dpdGNoSW1tPigpOyBcCi0gICAgICAgIGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0
Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KTsgXAotICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykgXAotICAgICAgICAgICAg
U1dJVENIX0NBU0UodGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7IFwKKyAgICAgICAgYXV0byYgdGFi
bGUgPSBjb2RlQmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGJ5dGVjb2RlLm1fdGFibGVJ
bmRleCk7IFwKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUubV9icmFuY2hPZmZzZXRz
LnNpemUoKTsgaS0tOykgXAorICAgICAgICAgICAgU1dJVENIX0NBU0UodGFibGUubV9icmFuY2hP
ZmZzZXRzW2ldKTsgXAogICAgICAgICBTV0lUQ0hfREVGQVVMVF9PRkZTRVQoT3BTd2l0Y2hJbW0p
OyBcCiAgICAgICAgIGJyZWFrOyBcCiAgICAgfSBcCiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjog
eyBcCiAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BTd2l0Y2hDaGFy
PigpOyBcCi0gICAgICAgIGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUo
Ynl0ZWNvZGUubV90YWJsZUluZGV4KTsgXAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJs
ZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykgXAotICAgICAgICAgICAgU1dJVENIX0NBU0Uo
dGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7IFwKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxv
Y2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGJ5dGVjb2RlLm1fdGFibGVJbmRleCk7IFwKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUubV9icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0t
OykgXAorICAgICAgICAgICAgU1dJVENIX0NBU0UodGFibGUubV9icmFuY2hPZmZzZXRzW2ldKTsg
XAogICAgICAgICBTV0lUQ0hfREVGQVVMVF9PRkZTRVQoT3BTd2l0Y2hDaGFyKTsgXAogICAgICAg
ICBicmVhazsgXAogICAgIH0gXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBhZDU3MTczMDg0NDM0N2YzNWE5OGZlNmIwOWM4
MzAzODUzNjdkZjEwLi5jYTYyNjg4NjViZDU5NzViNDc0NTE2ZGYwY2VlYzFiMzg4ZTdmYzNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaApAQCAtOTUsMTQgKzk1LDIzIEBAIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7
CiB9OwogCiBzdHJ1Y3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUgewotICAgIEZpeGVkVmVjdG9y
PGludDMyX3Q+IGJyYW5jaE9mZnNldHM7Ci0gICAgaW50MzJfdCBtaW47CisgICAgRml4ZWRWZWN0
b3I8aW50MzJfdD4gbV9icmFuY2hPZmZzZXRzOworICAgIGludDMyX3QgbV9taW47CisKKyAgICBp
bmxpbmUgaW50MzJfdCBvZmZzZXRGb3JWYWx1ZShpbnQzMl90IHZhbHVlLCBpbnQzMl90IGRlZmF1
bHRPZmZzZXQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAodmFsdWUgPj0gbV9taW4gJiYgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlIC0gbV9taW4pIDwgbV9icmFuY2hPZmZzZXRzLnNpemUo
KSkgeworICAgICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSBtX2JyYW5jaE9mZnNldHNbdmFsdWUg
LSBtX21pbl07CisgICAgICAgICAgICBpZiAob2Zmc2V0KQorICAgICAgICAgICAgICAgIHJldHVy
biBvZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRlZmF1bHRPZmZzZXQ7CisgICAg
fQogCi0gICAgaW50MzJfdCBvZmZzZXRGb3JWYWx1ZShpbnQzMl90IHZhbHVlLCBpbnQzMl90IGRl
ZmF1bHRPZmZzZXQpOwogICAgIHZvaWQgYWRkKGludDMyX3Qga2V5LCBpbnQzMl90IG9mZnNldCkK
ICAgICB7Ci0gICAgICAgIGlmICghYnJhbmNoT2Zmc2V0c1trZXldKQotICAgICAgICAgICAgYnJh
bmNoT2Zmc2V0c1trZXldID0gb2Zmc2V0OworICAgICAgICBpZiAoIW1fYnJhbmNoT2Zmc2V0c1tr
ZXldKQorICAgICAgICAgICAgbV9icmFuY2hPZmZzZXRzW2tleV0gPSBvZmZzZXQ7CiAgICAgfQog
fTsKIApAQCAtMTE5LDYgKzEyOCw4IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQog
CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwogICAgIGVudW0geyBD
YWxsRnVuY3Rpb24sIEFwcGx5RnVuY3Rpb24gfTsKIAogICAgIGJvb2wgaXNDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQpAQCAtMTk2LDggKzIwNyw4IEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICAvLyBKdW1wIFRh
YmxlcwogCi0gICAgc2l6ZV90IG51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpIDog
MDsgfQotICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBzd2l0Y2hKdW1wVGFibGUoaW50IHRh
YmxlSW5kZXgpIHsgQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zd2l0
Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CisgICAgc2l6ZV90IG51bWJlck9mVW5saW5rZWRT
d2l0Y2hKdW1wVGFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEt
Pm1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSA6IDA7IH0KKyAgICBjb25zdCBVbmxp
bmtlZFNpbXBsZUp1bXBUYWJsZSYgdW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5k
ZXgpIHsgQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV91bmxpbmtlZFN3
aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAogICAgIHNpemVfdCBudW1iZXJPZlVubGlu
a2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBt
X3JhcmVEYXRhLT5tX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkgOiAwOyB9
CiAgICAgY29uc3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIHVubGlua2VkU3RyaW5nU3dpdGNo
SnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1f
cmFyZURhdGEtPm1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9
CkBAIC00MTAsNyArNDIxLDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICAgICAgRml4ZWRWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4gbV9leGNlcHRp
b25IYW5kbGVyczsKIAogICAgICAgICAvLyBKdW1wIFRhYmxlcwotICAgICAgICBGaXhlZFZlY3Rv
cjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOworICAgICAgICBG
aXhlZFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV91bmxpbmtlZFN3aXRjaEp1bXBU
YWJsZXM7CiAgICAgICAgIEZpeGVkVmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPiBtX3Vu
bGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAogICAgICAgICBGaXhlZFZlY3RvcjxFeHBy
ZXNzaW9uUmFuZ2VJbmZvOjpGYXRQb3NpdGlvbj4gbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwCmluZGV4IGY5NmM2MDAyNmM2ZjJkZWM4NjgzYWRh
MTZkZGFlN2VmYTUwYTc1YzUuLmY3ODEwOWU4ODYxOTEzOWZhNTVhNzg2MzU2NTM5MmI3OGM2N2Nm
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQg
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmZpbmFsaXplKHN0ZDo6dW5pcXVlX3B0cjxJbnN0
cnVjdGlvblN0cmVhbT4gaW5zCiAKICAgICAgICAgaWYgKCFtX2NvZGVCbG9jay0+bV9yYXJlRGF0
YSkgewogICAgICAgICAgICAgaWYgKCFtX2V4Y2VwdGlvbkhhbmRsZXJzLmlzRW1wdHkoKQotICAg
ICAgICAgICAgICAgIHx8ICFtX3N3aXRjaEp1bXBUYWJsZXMuaXNFbXB0eSgpCisgICAgICAgICAg
ICAgICAgfHwgIW1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzLmlzRW1wdHkoKQogICAgICAgICAg
ICAgICAgIHx8ICFtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5pc0VtcHR5KCkKICAg
ICAgICAgICAgICAgICB8fCAhbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucy5pc0VtcHR5KCkK
ICAgICAgICAgICAgICAgICB8fCAhbV90eXBlUHJvZmlsZXJJbmZvTWFwLmlzRW1wdHkoKQpAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmZpbmFsaXpl
KHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gaW5zCiAgICAgICAgIH0KICAgICAg
ICAgaWYgKG1fY29kZUJsb2NrLT5tX3JhcmVEYXRhKSB7CiAgICAgICAgICAgICBtX2NvZGVCbG9j
ay0+bV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycyA9IFdURk1vdmUobV9leGNlcHRpb25I
YW5kbGVycyk7Ci0gICAgICAgICAgICBtX2NvZGVCbG9jay0+bV9yYXJlRGF0YS0+bV9zd2l0Y2hK
dW1wVGFibGVzID0gV1RGTW92ZShtX3N3aXRjaEp1bXBUYWJsZXMpOworICAgICAgICAgICAgbV9j
b2RlQmxvY2stPm1fcmFyZURhdGEtPm1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzID0gV1RGTW92
ZShtX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyk7CiAgICAgICAgICAgICBtX2NvZGVCbG9jay0+
bV9yYXJlRGF0YS0+bV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBXVEZNb3ZlKG1f
dW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKTsKICAgICAgICAgICAgIG1fY29kZUJsb2Nr
LT5tX3JhcmVEYXRhLT5tX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zID0gV1RGTW92ZShtX2V4
cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zKTsKICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5tX3Jh
cmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXAgPSBXVEZNb3ZlKG1fdHlwZVByb2ZpbGVySW5m
b01hcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4IDQ5MzBhNTY5MWRmN2JjZTlmNDU5NGEz
OGNkYTA3YTI3NGY3ZTc2MzEuLmY4MDc3NDAxYWZmYzhiNjUxNzUwZTFiZWY0Y2YyMDMzNTU3M2Fl
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCkBAIC05MCw5ICs5MCw5IEBAIGNsYXNzIFVubGlu
a2VkQ29kZUJsb2NrR2VuZXJhdG9yIHsKICAgICB1bnNpZ25lZCBqdW1wVGFyZ2V0KGludCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0c1tpbmRleF07IH0KICAgICB1bnNpZ25lZCBs
YXN0SnVtcFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHMubGFzdCgpOyB9CiAK
LSAgICBzaXplX3QgbnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9z
d2l0Y2hKdW1wVGFibGVzLnNpemUoKTsgfQotICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBh
ZGRTd2l0Y2hKdW1wVGFibGUoKSB7IG1fc3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoVW5saW5rZWRT
aW1wbGVKdW1wVGFibGUoKSk7IHJldHVybiBtX3N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9Ci0g
ICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHN3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRl
eCkgeyByZXR1cm4gbV9zd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CisgICAgc2l6ZV90
IG51bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzKCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZFN3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpOyB9CisgICAgVW5saW5rZWRTaW1wbGVKdW1wVGFi
bGUmIGFkZFVubGlua2VkU3dpdGNoSnVtcFRhYmxlKCkgeyBtX3VubGlua2VkU3dpdGNoSnVtcFRh
Ymxlcy5hcHBlbmQoVW5saW5rZWRTaW1wbGVKdW1wVGFibGUoKSk7IHJldHVybiBtX3VubGlua2Vk
U3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYg
dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgcmV0dXJuIG1fdW5saW5r
ZWRTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CiAKICAgICBzaXplX3QgbnVtYmVyT2ZV
bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2Vk
U3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaXplKCk7IH0KICAgICBVbmxpbmtlZFN0cmluZ0p1bXBU
YWJsZSYgYWRkVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IG1fdW5saW5rZWRTdHJp
bmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0
dXJuIG1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQpAQCAtMjE0LDcg
KzIxNCw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yIHsKICAgICBPdXRPZkxp
bmVKdW1wVGFyZ2V0cyBtX291dE9mTGluZUp1bXBUYXJnZXRzOwogICAgIC8vIEluIFJhcmVEYXRh
LgogICAgIFZlY3RvcjxVbmxpbmtlZEhhbmRsZXJJbmZvPiBtX2V4Y2VwdGlvbkhhbmRsZXJzOwot
ICAgIFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwor
ICAgIFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV91bmxpbmtlZFN3aXRjaEp1bXBU
YWJsZXM7CiAgICAgVmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPiBtX3VubGlua2VkU3Ry
aW5nU3dpdGNoSnVtcFRhYmxlczsKICAgICBWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0
UG9zaXRpb24+IG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CiAgICAgSGFzaE1hcDx1bnNp
Z25lZCwgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNzaW9u
UmFuZ2U+IG1fdHlwZVByb2ZpbGVySW5mb01hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggODY1MzI4
ZGFkZDljNjQ0OTRjMDY1ZGMxNzNlOGMzYjAxMDYwMzBjYS4uYjM1ZTY4ZmI1MjkxOGYwYTVkNzVl
ZmZiODRhNjFlZWY0MDcxN2ZlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQwMzYsMTQgKzQwMzYs
MTQgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5Td2l0Y2goUmVnaXN0ZXJJRCogc2Ny
dXRpbmVlUmVnaXN0ZXIsIFN3aXRjaEluZm86OlMKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICBjYXNlIFN3aXRjaEluZm86OlN3aXRjaEltbWVkaWF0ZTogewotICAgICAgICBzaXplX3QgdGFi
bGVJbmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKLSAgICAg
ICAgbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOworICAgICAgICBzaXplX3QgdGFi
bGVJbmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygp
OworICAgICAgICBtX2NvZGVCbG9jay0+YWRkVW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoKTsKICAg
ICAgICAgT3BTd2l0Y2hJbW06OmVtaXQodGhpcywgdGFibGVJbmRleCwgQm91bmRMYWJlbCgpLCBz
Y3J1dGluZWVSZWdpc3Rlcik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFN3aXRj
aEluZm86OlN3aXRjaENoYXJhY3RlcjogewotICAgICAgICBzaXplX3QgdGFibGVJbmRleCA9IG1f
Y29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKLSAgICAgICAgbV9jb2RlQmxv
Y2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOworICAgICAgICBzaXplX3QgdGFibGVJbmRleCA9IG1f
Y29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpOworICAgICAgICBt
X2NvZGVCbG9jay0+YWRkVW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoKTsKICAgICAgICAgT3BTd2l0
Y2hDaGFyOjplbWl0KHRoaXMsIHRhYmxlSW5kZXgsIEJvdW5kTGFiZWwoKSwgc2NydXRpbmVlUmVn
aXN0ZXIpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00MDkxLDkgKzQwOTEsOSBAQCBzdGF0
aWMgdm9pZCBwcmVwYXJlSnVtcFRhYmxlRm9yU3dpdGNoKAogICAgIGNvbnN0IFZlY3RvcjxSZWY8
TGFiZWw+LCA4PiYgbGFiZWxzLCBFeHByZXNzaW9uTm9kZSoqIG5vZGVzLCBpbnQzMl90IG1pbiwg
aW50MzJfdCBtYXgsCiAgICAgaW50MzJfdCAoKmtleUdldHRlcikoRXhwcmVzc2lvbk5vZGUqLCBp
bnQzMl90IG1pbiwgaW50MzJfdCBtYXgpKQogewotICAgIGp1bXBUYWJsZS5taW4gPSBtaW47Ci0g
ICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMgPSBGaXhlZFZlY3RvcjxpbnQzMl90PihtYXggLSBt
aW4gKyAxKTsKLSAgICBzdGQ6OmZpbGwoanVtcFRhYmxlLmJyYW5jaE9mZnNldHMuYmVnaW4oKSwg
anVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZW5kKCksIDApOworICAgIGp1bXBUYWJsZS5tX21pbiA9
IG1pbjsKKyAgICBqdW1wVGFibGUubV9icmFuY2hPZmZzZXRzID0gRml4ZWRWZWN0b3I8aW50MzJf
dD4obWF4IC0gbWluICsgMSk7CisgICAgc3RkOjpmaWxsKGp1bXBUYWJsZS5tX2JyYW5jaE9mZnNl
dHMuYmVnaW4oKSwganVtcFRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5lbmQoKSwgMCk7CiAgICAgZm9y
ICh1aW50MzJfdCBpID0gMDsgaSA8IGNsYXVzZUNvdW50OyArK2kpIHsKICAgICAgICAgLy8gV2Un
cmUgZW1pdHRpbmcgdGhpcyBhZnRlciB0aGUgY2xhdXNlIGxhYmVscyBzaG91bGQgaGF2ZSBiZWVu
IGZpeGVkLCBzbyAKICAgICAgICAgLy8gdGhlIGxhYmVscyBzaG91bGQgbm90IGJlICJmb3J3YXJk
IiByZWZlcmVuY2VzCkBAIC00MTI5LDcgKzQxMjksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbmRTd2l0Y2godWludDMyX3QgY2xhdXNlQ291bnQsIGNvbnN0IFZlY3RvcjxSZWY8TGFiZWw+
LAogICAgICAgICAgICAgcmV0dXJuIEJvdW5kTGFiZWwoKTsKICAgICAgICAgfSk7CiAKLSAgICAg
ICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5zd2l0
Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KTsKKyAgICAgICAgVW5saW5rZWRTaW1w
bGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT51bmxpbmtlZFN3aXRjaEp1bXBU
YWJsZShieXRlY29kZS5tX3RhYmxlSW5kZXgpOwogICAgICAgICBwcmVwYXJlSnVtcFRhYmxlRm9y
U3dpdGNoKAogICAgICAgICAgICAganVtcFRhYmxlLCBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0
LCBjbGF1c2VDb3VudCwgbGFiZWxzLCBub2RlcywgbWluLCBtYXgsCiAgICAgICAgICAgICBzd2l0
Y2hJbmZvLnN3aXRjaFR5cGUgPT0gU3dpdGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDNlMzA5
Y2Q5MTI1MWQ3OWQ0MjFmZGMyMjUxZmU3MzFlZjcxZTcwYjAuLjlhMGFhNThmOGRjMTEwYjUwMDQy
NGZkY2JmMGFlNTNkMmZjODkxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC02ODcyLDE0ICs2ODcyLDE0IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBkYXRhLmtp
bmQgPSBTd2l0Y2hJbW07CiAgICAgICAgICAgICBkYXRhLnN3aXRjaFRhYmxlSW5kZXggPSBtX2lu
bGluZVN0YWNrVG9wLT5tX3N3aXRjaFJlbWFwW2J5dGVjb2RlLm1fdGFibGVJbmRleF07CiAgICAg
ICAgICAgICBkYXRhLmZhbGxUaHJvdWdoLnNldEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgu
b2Zmc2V0KCkgKyBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fZGVmYXVsdE9mZnNldCkpOwotICAgICAg
ICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFi
bGUoZGF0YS5zd2l0Y2hUYWJsZUluZGV4KTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCF0YWJsZS5icmFuY2hPZmZzZXRzW2ldKQorICAgICAgICAgICAgY29uc3QgVW5saW5r
ZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2VkVGFibGUgPSBtX2dyYXBoLnVubGlua2VkU3dpdGNo
SnVtcFRhYmxlKGRhdGEuc3dpdGNoVGFibGVJbmRleCk7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgdW5saW5rZWRUYWJsZS5tX2JyYW5jaE9mZnNldHMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIXVubGlua2VkVGFibGUubV9icmFuY2hPZmZzZXRzW2ld
KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB1bnNpZ25l
ZCB0YXJnZXQgPSBtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIHRhYmxlLmJyYW5jaE9mZnNldHNb
aV07CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0ID0gbV9jdXJyZW50SW5kZXgub2Zm
c2V0KCkgKyB1bmxpbmtlZFRhYmxlLm1fYnJhbmNoT2Zmc2V0c1tpXTsKICAgICAgICAgICAgICAg
ICBpZiAodGFyZ2V0ID09IGRhdGEuZmFsbFRocm91Z2guYnl0ZWNvZGVJbmRleCgpKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBkYXRhLmNhc2VzLmFwcGVu
ZChTd2l0Y2hDYXNlOjp3aXRoQnl0ZWNvZGVJbmRleChtX2dyYXBoLmZyZWV6ZShqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90Pih0YWJsZS5taW4gKyBpKSkpLCB0YXJnZXQpKTsKKyAgICAgICAg
ICAgICAgICBkYXRhLmNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlOjp3aXRoQnl0ZWNvZGVJbmRleCht
X2dyYXBoLmZyZWV6ZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90Pih1bmxpbmtlZFRhYmxl
Lm1fbWluICsgaSkpKSwgdGFyZ2V0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhZGRU
b0dyYXBoKFN3aXRjaCwgT3BJbmZvKCZkYXRhKSwgZ2V0KGJ5dGVjb2RlLm1fc2NydXRpbmVlKSk7
CiAgICAgICAgICAgICBmbHVzaElmVGVybWluYWwoZGF0YSk7CkBAIC02ODkyLDE1ICs2ODkyLDE1
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICBkYXRhLmtpbmQgPSBTd2l0Y2hDaGFyOwogICAgICAgICAgICAgZGF0YS5zd2l0Y2hU
YWJsZUluZGV4ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9zd2l0Y2hSZW1hcFtieXRlY29kZS5tX3Rh
YmxlSW5kZXhdOwogICAgICAgICAgICAgZGF0YS5mYWxsVGhyb3VnaC5zZXRCeXRlY29kZUluZGV4
KG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsganVtcFRhcmdldChieXRlY29kZS5tX2RlZmF1bHRP
ZmZzZXQpKTsKLSAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBtX2NvZGVCbG9j
ay0+c3dpdGNoSnVtcFRhYmxlKGRhdGEuc3dpdGNoVGFibGVJbmRleCk7Ci0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7ICsraSkg
ewotICAgICAgICAgICAgICAgIGlmICghdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSkKKyAgICAgICAg
ICAgIGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9ncmFw
aC51bmxpbmtlZFN3aXRjaEp1bXBUYWJsZShkYXRhLnN3aXRjaFRhYmxlSW5kZXgpOworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVubGlua2VkVGFibGUubV9icmFuY2hPZmZz
ZXRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCF1bmxpbmtlZFRhYmxlLm1f
YnJhbmNoT2Zmc2V0c1tpXSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAgICAgdW5zaWduZWQgdGFyZ2V0ID0gbV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyB0YWJs
ZS5icmFuY2hPZmZzZXRzW2ldOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldCA9IG1f
Y3VycmVudEluZGV4Lm9mZnNldCgpICsgdW5saW5rZWRUYWJsZS5tX2JyYW5jaE9mZnNldHNbaV07
CiAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBkYXRhLmZhbGxUaHJvdWdoLmJ5dGVjb2Rl
SW5kZXgoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
ZGF0YS5jYXNlcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIFN3aXRjaENhc2U6OndpdGhC
eXRlY29kZUluZGV4KExhenlKU1ZhbHVlOjpzaW5nbGVDaGFyYWN0ZXJTdHJpbmcodGFibGUubWlu
ICsgaSksIHRhcmdldCkpOworICAgICAgICAgICAgICAgICAgICBTd2l0Y2hDYXNlOjp3aXRoQnl0
ZWNvZGVJbmRleChMYXp5SlNWYWx1ZTo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHVubGlua2VkVGFi
bGUubV9taW4gKyBpKSwgdGFyZ2V0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhZGRU
b0dyYXBoKFN3aXRjaCwgT3BJbmZvKCZkYXRhKSwgZ2V0KGJ5dGVjb2RlLm1fc2NydXRpbmVlKSk7
CiAgICAgICAgICAgICBmbHVzaElmVGVybWluYWwoZGF0YSk7CkBAIC04NTI2LDE2ICs4NTI2LDE4
IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAog
ICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+a2luZCA9IGtpbmQ7CiAgICAgICAgIAogICAgICAg
ICBtX2lkZW50aWZpZXJSZW1hcC5yZXNpemUoY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJz
KCkpOwotICAgICAgICBtX3N3aXRjaFJlbWFwLnJlc2l6ZShjb2RlQmxvY2stPm51bWJlck9mU3dp
dGNoSnVtcFRhYmxlcygpKTsKKyAgICAgICAgbV9zd2l0Y2hSZW1hcC5yZXNpemUoY29kZUJsb2Nr
LT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpKTsKIAogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpOyArK2kpIHsK
ICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiByZXAgPSBjb2RlQmxvY2stPmlkZW50aWZp
ZXIoaSkuaW1wbCgpOwogICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBieXRlQ29kZVBhcnNl
ci0+bV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShyZXApOwogICAgICAgICAgICAgbV9pZGVu
dGlmaWVyUmVtYXBbaV0gPSBpbmRleDsKICAgICAgICAgfQotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsgKytpKSB7
Ci0gICAgICAgICAgICBtX3N3aXRjaFJlbWFwW2ldID0gYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJs
b2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKLSAgICAgICAgICAgIGJ5dGVDb2RlUGFy
c2VyLT5tX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlRnJvbVByb2ZpbGVkQ29kZUJsb2Nr
KGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGkpKTsKKworICAgICAgICBieXRlQ29kZVBhcnNl
ci0+bV9ncmFwaC5tX3N3aXRjaEp1bXBUYWJsZXMucmVzaXplKGJ5dGVDb2RlUGFyc2VyLT5tX2dy
YXBoLm1fc3dpdGNoSnVtcFRhYmxlcy5zaXplKCkgKyBjb2RlQmxvY2stPm51bWJlck9mVW5saW5r
ZWRTd2l0Y2hKdW1wVGFibGVzKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Y29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpOyArK2kpIHsKKyAg
ICAgICAgICAgIG1fc3dpdGNoUmVtYXBbaV0gPSBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX3Vu
bGlua2VkU3dpdGNoSnVtcFRhYmxlcy5zaXplKCk7CisgICAgICAgICAgICBieXRlQ29kZVBhcnNl
ci0+bV9ncmFwaC5tX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoJmNvZGVCbG9jay0+
dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoaSkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gTWFjaGluZSBjb2RlIGJsb2NrIGNhc2UuCkBAIC04NTQ3LDExICs4NTQ5LDE1IEBA
IEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAg
ICAgICBtX2lubGluZUNhbGxGcmFtZSA9IG51bGxwdHI7CiAKICAgICAgICAgbV9pZGVudGlmaWVy
UmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKLSAgICAgICAg
bV9zd2l0Y2hSZW1hcC5yZXNpemUoY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMo
KSk7CisgICAgICAgIG1fc3dpdGNoUmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZVbmxp
bmtlZFN3aXRjaEp1bXBUYWJsZXMoKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCk7ICsraSkKICAgICAgICAgICAgIG1faWRl
bnRpZmllclJlbWFwW2ldID0gaTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2Rl
QmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOyArK2kpCi0gICAgICAgICAgICBtX3N3
aXRjaFJlbWFwW2ldID0gaTsKKworICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX3N3
aXRjaEp1bXBUYWJsZXMucmVzaXplKGJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLm1fc3dpdGNoSnVt
cFRhYmxlcy5zaXplKCkgKyBjb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFi
bGVzKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1i
ZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpOyArK2kpIHsKKyAgICAgICAgICAgIG1fc3dp
dGNoUmVtYXBbaV0gPSBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX3VubGlua2VkU3dpdGNoSnVt
cFRhYmxlcy5zaXplKCk7CisgICAgICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX3Vu
bGlua2VkU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoJmNvZGVCbG9jay0+dW5saW5rZWRTd2l0Y2hK
dW1wVGFibGUoaSkpOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIG1fYXJndW1lbnRQb3Np
dGlvbnMucmVzaXplKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZpeHVwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCA0Yjg4ZjQxM2VjMjU5YjEyNWMyZjU5Y2Q3
Nzc5NDc0MWZiN2EzNGExLi44MzhiODU2ZDEwMzQ2ZjE3Y2Q2MTcwOGIxMzk4NWJiN2FmM2M1MGFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC0xMDY0LDYgKzEwNjQsOSBA
QCBjbGFzcyBHcmFwaCBmaW5hbCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAgICAgUHJl
Zml4JiBwcmVmaXgoKSB7IHJldHVybiBtX3ByZWZpeDsgfQogICAgIHZvaWQgbmV4dFBoYXNlKCkg
eyBtX3ByZWZpeC5waGFzZU51bWJlcisrOyB9CiAKKyAgICBjb25zdCBVbmxpbmtlZFNpbXBsZUp1
bXBUYWJsZSYgdW5saW5rZWRTd2l0Y2hKdW1wVGFibGUodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJu
ICptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlc1tpbmRleF07IH0KKyAgICBTaW1wbGVKdW1wVGFi
bGUmIHN3aXRjaEp1bXBUYWJsZSh1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gbV9zd2l0Y2hKdW1w
VGFibGVzW2luZGV4XTsgfQorCiAgICAgU3RhY2tDaGVjayBtX3N0YWNrQ2hlY2tlcjsKICAgICBW
TSYgbV92bTsKICAgICBQbGFuJiBtX3BsYW47CkBAIC0xMDc0LDYgKzEwNzcsOSBAQCBjbGFzcyBH
cmFwaCBmaW5hbCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAgICAgVmVjdG9yPEJhc2lj
QmxvY2sqLCAxPiBtX3Jvb3RzOwogICAgIFZlY3RvcjxFZGdlLCAxNj4gbV92YXJBcmdDaGlsZHJl
bjsKIAorICAgIFZlY3Rvcjxjb25zdCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSo+IG1fdW5saW5r
ZWRTd2l0Y2hKdW1wVGFibGVzOyAvLyBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSBpcyBrZXB0IGJ5
IFVubGlua2VkQ29kZUJsb2NrcyByZXRhaW5lZCBieSBiYXNlbGluZSBDb2RlQmxvY2tzIGhhbmRs
ZWQgYnkgREZHIC8gRlRMLgorICAgIFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVt
cFRhYmxlczsKKwogICAgIEhhc2hNYXA8RW5jb2RlZEpTVmFsdWUsIEZyb3plblZhbHVlKiwgRW5j
b2RlZEpTVmFsdWVIYXNoLCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHM+IG1fZnJvemVuVmFsdWVN
YXA7CiAgICAgQmFnPEZyb3plblZhbHVlPiBtX2Zyb3plblZhbHVlczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCAzMThmMDE1NmMxNGZkODYz
NjNmYjI5ZmU5ZWFmZmQxYzI5ODgzZjE1Li42NzRkOGY3YWFlMzExODQ3NDM3ZGJhOGQxOGE5MmM4
MmQzYjdjNmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcApAQCAtMTc2LDEyICsxNzYsMTQgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKQogICAgIAogICAgIG1fZ3JhcGgucmVnaXN0ZXJGcm96ZW5WYWx1ZXMo
KTsKIAotICAgIGlmIChtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1
bXBUYWJsZXMoKSkgeworICAgIGlmIChtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN0cmlu
Z1N3aXRjaEp1bXBUYWJsZXMoKSB8fCAhbV9ncmFwaC5tX3N3aXRjaEp1bXBUYWJsZXMuaXNFbXB0
eSgpKSB7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9jb2RlQmxvY2stPm1f
bG9jayk7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5lbnN1cmVKSVREYXRhKGxvY2tlcikubV9zdHJp
bmdTd2l0Y2hKdW1wVGFibGVzID0gRml4ZWRWZWN0b3I8U3RyaW5nSnVtcFRhYmxlPihtX2NvZGVC
bG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSk7CisgICAgICAg
IGlmIChtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMo
KSkKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLT5lbnN1cmVKSVREYXRhKGxvY2tlcikubV9zdHJp
bmdTd2l0Y2hKdW1wVGFibGVzID0gRml4ZWRWZWN0b3I8U3RyaW5nSnVtcFRhYmxlPihtX2NvZGVC
bG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSk7CisgICAgICAg
IGlmICghbV9ncmFwaC5tX3N3aXRjaEp1bXBUYWJsZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAg
bV9jb2RlQmxvY2stPmVuc3VyZUpJVERhdGEobG9ja2VyKS5tX3N3aXRjaEp1bXBUYWJsZXMgPSBX
VEZNb3ZlKG1fZ3JhcGgubV9zd2l0Y2hKdW1wVGFibGVzKTsKICAgICB9CiAKLSAgICBCaXRWZWN0
b3IgdXNlZEp1bXBUYWJsZXM7CiAgICAgZm9yIChCYWc8U3dpdGNoRGF0YT46Oml0ZXJhdG9yIGl0
ZXIgPSBtX2dyYXBoLm1fc3dpdGNoRGF0YS5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikgewogICAg
ICAgICBTd2l0Y2hEYXRhJiBkYXRhID0gKippdGVyOwogICAgICAgICBpZiAoIWRhdGEuZGlkVXNl
SnVtcFRhYmxlKQpAQCAtMTkyLDI2ICsxOTQsMTkgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgICAgICAKICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZGF0YS5raW5kID09IFN3aXRjaEltbSB8fCBkYXRhLmtpbmQgPT0gU3dpdGNoQ2hhcik7CiAgICAg
ICAgIAotICAgICAgICB1c2VkSnVtcFRhYmxlcy5zZXQoZGF0YS5zd2l0Y2hUYWJsZUluZGV4KTsK
LSAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1fY29kZUJsb2NrLT5zd2l0Y2hKdW1w
VGFibGUoZGF0YS5zd2l0Y2hUYWJsZUluZGV4KTsKLSAgICAgICAgdGFibGUuY3RpRGVmYXVsdCA9
IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU1N3aXRjaFB0clRhZz4obV9ibG9ja0hlYWRzW2RhdGEu
ZmFsbFRocm91Z2guYmxvY2stPmluZGV4XSk7Ci0gICAgICAgIHRhYmxlLmN0aU9mZnNldHMuZ3Jv
dyh0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9
IHRhYmxlLmN0aU9mZnNldHMuc2l6ZSgpOyBqLS07KQotICAgICAgICAgICAgdGFibGUuY3RpT2Zm
c2V0c1tqXSA9IHRhYmxlLmN0aURlZmF1bHQ7CisgICAgICAgIGNvbnN0IFVubGlua2VkU2ltcGxl
SnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9ncmFwaC51bmxpbmtlZFN3aXRjaEp1bXBUYWJs
ZShkYXRhLnN3aXRjaFRhYmxlSW5kZXgpOworICAgICAgICBTaW1wbGVKdW1wVGFibGUmIGxpbmtl
ZFRhYmxlID0gbV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShkYXRhLnN3aXRjaFRhYmxlSW5k
ZXgpOworICAgICAgICBsaW5rZWRUYWJsZS5tX2N0aURlZmF1bHQgPSBsaW5rQnVmZmVyLmxvY2F0
aW9uT2Y8SlNTd2l0Y2hQdHJUYWc+KG1fYmxvY2tIZWFkc1tkYXRhLmZhbGxUaHJvdWdoLmJsb2Nr
LT5pbmRleF0pOworICAgICAgICBSRUxFQVNFX0FTU0VSVChsaW5rZWRUYWJsZS5tX2N0aU9mZnNl
dHMuc2l6ZSgpID09IHVubGlua2VkVGFibGUubV9icmFuY2hPZmZzZXRzLnNpemUoKSk7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IGxpbmtlZFRhYmxlLm1fY3RpT2Zmc2V0cy5zaXplKCk7IGot
LTspCisgICAgICAgICAgICBsaW5rZWRUYWJsZS5tX2N0aU9mZnNldHNbal0gPSBsaW5rZWRUYWJs
ZS5tX2N0aURlZmF1bHQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGRhdGEuY2FzZXMuc2l6
ZSgpOyBqLS07KSB7CiAgICAgICAgICAgICBTd2l0Y2hDYXNlJiBteUNhc2UgPSBkYXRhLmNhc2Vz
W2pdOwotICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tteUNhc2UudmFsdWUuc3dpdGNoTG9v
a3VwVmFsdWUoZGF0YS5raW5kKSAtIHRhYmxlLm1pbl0gPQorICAgICAgICAgICAgbGlua2VkVGFi
bGUubV9jdGlPZmZzZXRzW215Q2FzZS52YWx1ZS5zd2l0Y2hMb29rdXBWYWx1ZShkYXRhLmtpbmQp
IC0gdW5saW5rZWRUYWJsZS5tX21pbl0gPQogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9j
YXRpb25PZjxKU1N3aXRjaFB0clRhZz4obV9ibG9ja0hlYWRzW215Q2FzZS50YXJnZXQuYmxvY2st
PmluZGV4XSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
bV9jb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOyBpLS07KSB7Ci0gICAgICAg
IGlmICh1c2VkSnVtcFRhYmxlcy5nZXQoaSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgCi0gICAgICAgIG1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoaSkuY2xlYXIoKTsKLSAg
ICB9Ci0KICAgICAvLyBOT1RFOiB3ZSBjYW5ub3QgY2xlYXIgc3RyaW5nIHN3aXRjaCB0YWJsZXMg
YmVjYXVzZSAoMSkgd2UncmUgcnVubmluZyBjb25jdXJyZW50bHkKICAgICAvLyBhbmQgd2UgY2Fu
bm90IGRlcmVmIFN0cmluZ0ltcGwncyBhbmQgKDIpIGl0IHdvdWxkIGJlIHdlaXJkIHRvIGRlcmVm
IHRob3NlCiAgICAgLy8gU3RyaW5nSW1wbCdzIHNpbmNlIHdlIHJlZmVyIHRvIHRoZW0uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBjZDEzNzEyYTQ1
M2Y1ZjUyMjU1NTY5NGQxNmMzOWVhNDA0YzI0ZWI3Li5lMjFhMzViNWZmOWIwODNlODY0NGRmNTA1
MzllNWMxNGVkMTQzMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTI2OTAsMjAgKzI2OTAsMjAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblN0ckNhdDMsIEpTU3RyaW5nKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKGdsb2JhbE9iamVjdCwgc3Ry
MSwgc3RyMiwgc3RyMykpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
RmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZSwgY2hhciosIChWTSogdm1Qb2ludGVyLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIHNpemVfdCB0YWJsZUluZGV4KSkKK0pTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25GaW5kU3dpdGNoSW1tVGFyZ2V0Rm9yRG91YmxlLCBjaGFy
KiwgKFZNKiB2bVBvaW50ZXIsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgc2l6ZV90IHRh
YmxlSW5kZXgsIGludDMyX3QgbWluKSkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwotICAgIFNp
bXBsZUp1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUlu
ZGV4KTsKKyAgICBjb25zdCBTaW1wbGVKdW1wVGFibGUmIGxpbmtlZFRhYmxlID0gY29kZUJsb2Nr
LT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEFTU0VSVCh2YWx1ZS5pc0RvdWJsZSgpKTsK
ICAgICBkb3VibGUgYXNEb3VibGUgPSB2YWx1ZS5hc0RvdWJsZSgpOwogICAgIGludDMyX3QgYXNJ
bnQzMiA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGFzRG91YmxlKTsKICAgICBpZiAoYXNEb3VibGUg
PT0gYXNJbnQzMikKLSAgICAgICAgcmV0dXJuIHRhYmxlLmN0aUZvclZhbHVlKGFzSW50MzIpLmV4
ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwotICAgIHJldHVybiB0YWJsZS5jdGlEZWZhdWx0LmV4
ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOworICAgICAgICByZXR1cm4gbGlua2VkVGFibGUuY3Rp
Rm9yVmFsdWUobWluLCBhc0ludDMyKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKKyAgICBy
ZXR1cm4gbGlua2VkVGFibGUubV9jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigp
OwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCB0YWJsZUluZGV4LCBK
U1N0cmluZyogc3RyaW5nKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgKaW5kZXggMjIxYjRjNDI3N2FmYjhmMGRmMjk2YzU1MGJmNDNlMjI0MDNhM2RmOS4uMTQyODI3
MzlmNzczNWY2YjQyZTJkYzEzZDg1ZDE0ZjVlN2U5YzMwMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTI2OCw3ICsyNjgsNyBAQCBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1ha2VSb3BlMiwgSlNTdHJpbmcqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBKU1N0cgogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYWtlUm9wZTMs
IEpTU3RyaW5nKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqLCBKU1N0cmluZyosIEpTU3Ry
aW5nKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TdHJDYXQyLCBKU1N0
cmluZyosIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TdHJDYXQzLCBKU1N0cmluZyos
IChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRmluZFN3aXRj
aEltbVRhcmdldEZvckRvdWJsZSwgY2hhciosIChWTSosIEVuY29kZWRKU1ZhbHVlLCBzaXplX3Qg
dGFibGVJbmRleCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25GaW5kU3dp
dGNoSW1tVGFyZ2V0Rm9yRG91YmxlLCBjaGFyKiwgKFZNKiwgRW5jb2RlZEpTVmFsdWUsIHNpemVf
dCB0YWJsZUluZGV4LCBpbnQzMl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblN3aXRjaFN0cmluZywgY2hhciosIChKU0dsb2JhbE9iamVjdCosIHNpemVfdCB0YWJsZUlu
ZGV4LCBKU1N0cmluZyopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ29t
cGFyZVN0cmluZ0ltcGxMZXNzLCB1aW50cHRyX3QsIChTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ29tcGFyZVN0cmluZ0ltcGxM
ZXNzRXEsIHVpbnRwdHJfdCwgKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBlMmI0ZTll
MTdhN2NjZDFkYjE3NTUzNGMxYjM3NTc1YzJlNTIzOTFmLi41ZjEzOTNjZWU3MjAwZGY4NzcwYzgw
MGNjYjI3OGVlNTNiMjYyNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTE1MDQsMTMgKzExNTA0LDE0IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWRnZSBlZGdlKQogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFN3aXRjaEludEp1bXAoCiAgICAgU3dpdGNoRGF0YSogZGF0YSwgR1BSUmVnIHZhbHVl
LCBHUFJSZWcgc2NyYXRjaCkKIHsKLSAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0gbV9qaXQu
Y29kZUJsb2NrKCktPnN3aXRjaEp1bXBUYWJsZShkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KTsKLSAg
ICB0YWJsZS5lbnN1cmVDVElUYWJsZSgpOwotICAgIG1faml0LnN1YjMyKEltbTMyKHRhYmxlLm1p
biksIHZhbHVlKTsKKyAgICBjb25zdCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgdW5saW5rZWRU
YWJsZSA9IG1faml0LmdyYXBoKCkudW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoZGF0YS0+c3dpdGNo
VGFibGVJbmRleCk7CisgICAgU2ltcGxlSnVtcFRhYmxlJiBsaW5rZWRUYWJsZSA9IG1faml0Lmdy
YXBoKCkuc3dpdGNoSnVtcFRhYmxlKGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpOworICAgIGxpbmtl
ZFRhYmxlLmVuc3VyZUNUSVRhYmxlKHVubGlua2VkVGFibGUpOworICAgIG1faml0LnN1YjMyKElt
bTMyKHVubGlua2VkVGFibGUubV9taW4pLCB2YWx1ZSk7CiAgICAgYWRkQnJhbmNoKAotICAgICAg
ICBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCB2YWx1ZSwgSW1tMzIo
dGFibGUuY3RpT2Zmc2V0cy5zaXplKCkpKSwKKyAgICAgICAgbV9qaXQuYnJhbmNoMzIoSklUQ29t
cGlsZXI6OkFib3ZlT3JFcXVhbCwgdmFsdWUsIEltbTMyKGxpbmtlZFRhYmxlLm1fY3RpT2Zmc2V0
cy5zaXplKCkpKSwKICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwotICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbVB0cih0YWJsZS5jdGlPZmZzZXRzLmJlZ2luKCkpLCBzY3JhdGNoKTsK
KyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobGlua2VkVGFibGUubV9jdGlPZmZzZXRzLmJl
Z2luKCkpLCBzY3JhdGNoKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpCYXNlSW5k
ZXgoc2NyYXRjaCwgdmFsdWUsIEpJVENvbXBpbGVyOjpTY2FsZVB0ciksIHNjcmF0Y2gpOwogICAg
IAogICAgIG1faml0LmZhckp1bXAoc2NyYXRjaCwgSlNTd2l0Y2hQdHJUYWcpOwpAQCAtMTE1NDAs
OCArMTE1NDEsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbShOb2RlKiBu
b2RlLCBTd2l0Y2hEYXRhKiBkYXRhKQogICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2
YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBzY3JhdGNoKTsKICAgICAgICAgbm90SW50MzIubGluaygm
bV9qaXQpOwogICAgICAgICBhZGRCcmFuY2gobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIodmFsdWVS
ZWdzLCBzY3JhdGNoKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOworCisgICAgICAgIGNvbnN0
IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9qaXQuZ3JhcGgoKS51
bmxpbmtlZFN3aXRjaEp1bXBUYWJsZShkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KTsKICAgICAgICAg
c2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZSwgc2NyYXRjaCwgJnZtKCksIHZh
bHVlUmVncywgZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZSwgc2NyYXRjaCwgJnZtKCksIHZh
bHVlUmVncywgZGF0YS0+c3dpdGNoVGFibGVJbmRleCwgdW5saW5rZWRUYWJsZS5tX21pbik7CiAg
ICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKIAogICAgICAgICBtX2ppdC5mYXJKdW1w
KHNjcmF0Y2gsIEpTU3dpdGNoUHRyVGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsu
Y3BwCmluZGV4IGM3NzYyMThkOGQ0M2U1YWFiMWUyNTZjNGQ1NmVjNmY0M2RmMTNhMTUuLjFiMjU0
M2U1MWIxZWNhNzMzYThiY2QyOTNkMWUxZWY0OTMwMjhiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMaW5rLmNwcApAQCAtNDUsOSArNDUsNiBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRl
KQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZ3JhcGgubV9jb2RlQmxvY2s7CiAgICAgVk0m
IHZtID0gZ3JhcGgubV92bTsKICAgICAKLSAgICAvLyBCMyB3aWxsIGNyZWF0ZSBpdHMgb3duIGp1
bXAgdGFibGVzIGFzIG5lZWRlZC4KLSAgICBjb2RlQmxvY2stPmNsZWFyU3dpdGNoSnVtcFRhYmxl
cygpOwotCiAgICAgc3RhdGUuaml0Q29kZS0+Y29tbW9uLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZv
ckV4aXQgPSBncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCk7CiAgICAgCiAgICAg
aWYgKCFncmFwaC5tX3BsYW4uaW5saW5lQ2FsbEZyYW1lcygpLT5pc0VtcHR5KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKaW5kZXggODhkM2ZkMmE1NjlhYTRkYWRlZjE1NWUwZDFlZTllNzRh
N2YzMmE5NC4uYjY2YTEzZjI5MmZjYWY1NzQ2ZjE5ODkyYTI4NDRmMDkzNjc4ZmFhZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNzE0LDYgKzcxNCwxNCBAQCB2b2lkIEpJVDo6Y29t
cGlsZVdpdGhvdXRMaW5raW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCisgICAgaWYgKG1fY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dp
dGNoSnVtcFRhYmxlcygpIHx8IG1fY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3RyaW5nU3dp
dGNoSnVtcFRhYmxlcygpKSB7CisgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9j
b2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgIGlmIChtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxp
bmtlZFN3aXRjaEp1bXBUYWJsZXMoKSkKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLT5lbnN1cmVK
SVREYXRhKGxvY2tlcikubV9zd2l0Y2hKdW1wVGFibGVzID0gRml4ZWRWZWN0b3I8U2ltcGxlSnVt
cFRhYmxlPihtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKSk7
CisgICAgICAgIGlmIChtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1
bXBUYWJsZXMoKSkKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLT5lbnN1cmVKSVREYXRhKGxvY2tl
cikubV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gRml4ZWRWZWN0b3I8U3RyaW5nSnVtcFRhYmxl
PihtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSk7
CisgICAgfQorCiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpIHx8
IChtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYgT3B0aW9uczo6ZGlzYXNzZW1ibGVCYXNl
bGluZUZvclByb2ZpbGVyKCkpKSkKICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBtYWtlVW5pcXVl
PEpJVERpc2Fzc2VtYmxlcj4obV9jb2RlQmxvY2spOwogICAgIGlmIChVTkxJS0VMWShtX3ZtLT5t
X3BlckJ5dGVjb2RlUHJvZmlsZXIpKSB7CkBAIC04NTcsMzIgKzg2NSwyOCBAQCBDb21waWxhdGlv
blJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIGlmIChwYXRjaEJ1ZmZlci5kaWRGYWlsVG9BbGxvY2F0
ZSgpKQogICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25GYWlsZWQ7CiAKLSAgICBpZiAobV9jb2Rl
QmxvY2stPm51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkpIHsKLSAgICAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAg
ICAgbV9jb2RlQmxvY2stPmVuc3VyZUpJVERhdGEobG9ja2VyKS5tX3N0cmluZ1N3aXRjaEp1bXBU
YWJsZXMgPSBGaXhlZFZlY3RvcjxTdHJpbmdKdW1wVGFibGU+KG1fY29kZUJsb2NrLT5udW1iZXJP
ZlVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpKTsKLSAgICB9Ci0KICAgICAvLyBUcmFu
c2xhdGUgdlBDIG9mZnNldHMgaW50byBhZGRyZXNzZXMgaW4gSklUIGdlbmVyYXRlZCBjb2RlLCBm
b3Igc3dpdGNoIHRhYmxlcy4KICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fc3dpdGNoZXMpIHsK
ICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSByZWNvcmQuYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKTsKIAogICAgICAgICBpZiAocmVjb3JkLnR5cGUgIT0gU3dpdGNoUmVjb3JkOjpTdHJp
bmcpIHsKICAgICAgICAgICAgIEFTU0VSVChyZWNvcmQudHlwZSA9PSBTd2l0Y2hSZWNvcmQ6Oklt
bWVkaWF0ZSB8fCByZWNvcmQudHlwZSA9PSBTd2l0Y2hSZWNvcmQ6OkNoYXJhY3Rlcik7IAotICAg
ICAgICAgICAgQVNTRVJUKHJlY29yZC5qdW1wVGFibGUuc2ltcGxlSnVtcFRhYmxlLT5icmFuY2hP
ZmZzZXRzLnNpemUoKSA9PSByZWNvcmQuanVtcFRhYmxlLnNpbXBsZUp1bXBUYWJsZS0+Y3RpT2Zm
c2V0cy5zaXplKCkpOwogCi0gICAgICAgICAgICBhdXRvKiBzaW1wbGVKdW1wVGFibGUgPSByZWNv
cmQuanVtcFRhYmxlLnNpbXBsZUp1bXBUYWJsZTsKLSAgICAgICAgICAgIHNpbXBsZUp1bXBUYWJs
ZS0+Y3RpRGVmYXVsdCA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNTd2l0Y2hQdHJUYWc+KG1f
bGFiZWxzW2J5dGVjb2RlT2Zmc2V0ICsgcmVjb3JkLmRlZmF1bHRPZmZzZXRdKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHRhYmxlSW5kZXggPSByZWNvcmQudGFibGVJbmRleDsKKyAgICAgICAgICAg
IGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9jb2RlQmxv
Y2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgICAgICAgICAgU2lt
cGxlSnVtcFRhYmxlJiBsaW5rZWRUYWJsZSA9IG1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUo
dGFibGVJbmRleCk7CisgICAgICAgICAgICBsaW5rZWRUYWJsZS5tX2N0aURlZmF1bHQgPSBwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mPEpTU3dpdGNoUHRyVGFnPihtX2xhYmVsc1tieXRlY29kZU9mZnNl
dCArIHJlY29yZC5kZWZhdWx0T2Zmc2V0XSk7CiAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aiA9IDA7IGogPCByZWNvcmQuanVtcFRhYmxlLnNpbXBsZUp1bXBUYWJsZS0+YnJhbmNoT2Zmc2V0
cy5zaXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHJlY29y
ZC5qdW1wVGFibGUuc2ltcGxlSnVtcFRhYmxlLT5icmFuY2hPZmZzZXRzW2pdOwotICAgICAgICAg
ICAgICAgIHNpbXBsZUp1bXBUYWJsZS0+Y3RpT2Zmc2V0c1tqXSA9IG9mZnNldAorICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHVubGlua2VkVGFibGUubV9icmFuY2hPZmZzZXRz
LnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gdW5saW5r
ZWRUYWJsZS5tX2JyYW5jaE9mZnNldHNbal07CisgICAgICAgICAgICAgICAgbGlua2VkVGFibGUu
bV9jdGlPZmZzZXRzW2pdID0gb2Zmc2V0CiAgICAgICAgICAgICAgICAgICAgID8gcGF0Y2hCdWZm
ZXIubG9jYXRpb25PZjxKU1N3aXRjaFB0clRhZz4obV9sYWJlbHNbYnl0ZWNvZGVPZmZzZXQgKyBv
ZmZzZXRdKQotICAgICAgICAgICAgICAgICAgICA6IHNpbXBsZUp1bXBUYWJsZS0+Y3RpRGVmYXVs
dDsKKyAgICAgICAgICAgICAgICAgICAgOiBsaW5rZWRUYWJsZS5tX2N0aURlZmF1bHQ7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQocmVjb3JkLnR5
cGUgPT0gU3dpdGNoUmVjb3JkOjpTdHJpbmcpOwogCi0gICAgICAgICAgICB1bnNpZ25lZCB0YWJs
ZUluZGV4ID0gcmVjb3JkLmp1bXBUYWJsZS50YWJsZUluZGV4OworICAgICAgICAgICAgdW5zaWdu
ZWQgdGFibGVJbmRleCA9IHJlY29yZC50YWJsZUluZGV4OwogICAgICAgICAgICAgY29uc3QgVW5s
aW5rZWRTdHJpbmdKdW1wVGFibGUmIHVubGlua2VkVGFibGUgPSBtX2NvZGVCbG9jay0+dW5saW5r
ZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CiAgICAgICAgICAgICBTdHJpbmdK
dW1wVGFibGUmIGxpbmtlZFRhYmxlID0gbV9jb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJs
ZSh0YWJsZUluZGV4KTsKICAgICAgICAgICAgIGxpbmtlZFRhYmxlLm1fY3RpRGVmYXVsdCA9IHBh
dGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNTd2l0Y2hQdHJUYWc+KG1fbGFiZWxzW2J5dGVjb2RlT2Zm
c2V0ICsgcmVjb3JkLmRlZmF1bHRPZmZzZXRdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4
IDIxZDJhNmM3ZjcwY2E2ZTE2ZjFiZDlmZjdkY2YzOGE2M2FjMjkzOWUuLjcxMDQwMWQ5YjU2ODQ3
MzZhNzk1YzFjYzRlMWVhZjIyYmZkNDViZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAt
MTI2LDI4ICsxMjYsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgVHlwZSB0eXBlOwog
Ci0gICAgICAgIHVuaW9uIHsKLSAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSogc2ltcGxlSnVt
cFRhYmxlOwotICAgICAgICAgICAgdW5zaWduZWQgdGFibGVJbmRleDsKLSAgICAgICAgfSBqdW1w
VGFibGU7Ci0KICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4OwogICAgICAgICB1
bnNpZ25lZCBkZWZhdWx0T2Zmc2V0OwotCi0gICAgICAgIFN3aXRjaFJlY29yZChTaW1wbGVKdW1w
VGFibGUqIGp1bXBUYWJsZSwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCB1bnNpZ25lZCBk
ZWZhdWx0T2Zmc2V0LCBUeXBlIHR5cGUpCi0gICAgICAgICAgICA6IHR5cGUodHlwZSkKLSAgICAg
ICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQotICAgICAgICAgICAgLCBkZWZh
dWx0T2Zmc2V0KGRlZmF1bHRPZmZzZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMtPmp1
bXBUYWJsZS5zaW1wbGVKdW1wVGFibGUgPSBqdW1wVGFibGU7Ci0gICAgICAgIH0KKyAgICAgICAg
dW5zaWduZWQgdGFibGVJbmRleDsKIAogICAgICAgICBTd2l0Y2hSZWNvcmQodW5zaWduZWQgdGFi
bGVJbmRleCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCB1bnNpZ25lZCBkZWZhdWx0T2Zm
c2V0LCBUeXBlIHR5cGUpCiAgICAgICAgICAgICA6IHR5cGUodHlwZSkKICAgICAgICAgICAgICwg
Ynl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQogICAgICAgICAgICAgLCBkZWZhdWx0T2Zmc2V0
KGRlZmF1bHRPZmZzZXQpCisgICAgICAgICAgICAsIHRhYmxlSW5kZXgodGFibGVJbmRleCkKICAg
ICAgICAgewotICAgICAgICAgICAgdGhpcy0+anVtcFRhYmxlLnRhYmxlSW5kZXggPSB0YWJsZUlu
ZGV4OwogICAgICAgICB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKaW5kZXggMTAyNTY1NTA4OWRkODM5OTM1ZmM5ZjVjYTBhY2IyNGM5ZTZmMzMxNC4u
NzE5ODEwZDVkOGIxYzMyMDdlZTIwMDNlZWE1ZDkyYjM3YTRlNGFlMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC04OTQsMzUgKzg5NCw0MSBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfcGFyZW50X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9pbW0oY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUg
YSBmYXN0IHBhdGguCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNDUyMQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
U3dpdGNoSW1tPigpOwogICAgIHNpemVfdCB0YWJsZUluZGV4ID0gYnl0ZWNvZGUubV90YWJsZUlu
ZGV4OwogICAgIHVuc2lnbmVkIGRlZmF1bHRPZmZzZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvbiwgYnl0ZWNvZGUubV9kZWZhdWx0T2Zmc2V0KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
c2NydXRpbmVlID0gYnl0ZWNvZGUubV9zY3J1dGluZWU7CiAKICAgICAvLyBjcmVhdGUganVtcCB0
YWJsZSBmb3Igc3dpdGNoIGRlc3RpbmF0aW9ucywgdHJhY2sgdGhpcyBzd2l0Y2ggc3RhdGVtZW50
LgotICAgIFNpbXBsZUp1bXBUYWJsZSoganVtcFRhYmxlID0gJm1fY29kZUJsb2NrLT5zd2l0Y2hK
dW1wVGFibGUodGFibGVJbmRleCk7Ci0gICAgbV9zd2l0Y2hlcy5hcHBlbmQoU3dpdGNoUmVjb3Jk
KGp1bXBUYWJsZSwgbV9ieXRlY29kZUluZGV4LCBkZWZhdWx0T2Zmc2V0LCBTd2l0Y2hSZWNvcmQ6
OkltbWVkaWF0ZSkpOwotICAgIGp1bXBUYWJsZS0+ZW5zdXJlQ1RJVGFibGUoKTsKKyAgICBjb25z
dCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgdW5saW5rZWRUYWJsZSA9IG1fY29kZUJsb2NrLT51
bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKKyAgICBTaW1wbGVKdW1wVGFibGUm
IGxpbmtlZFRhYmxlID0gbV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsK
KyAgICBtX3N3aXRjaGVzLmFwcGVuZChTd2l0Y2hSZWNvcmQodGFibGVJbmRleCwgbV9ieXRlY29k
ZUluZGV4LCBkZWZhdWx0T2Zmc2V0LCBTd2l0Y2hSZWNvcmQ6OkltbWVkaWF0ZSkpOworICAgIGxp
bmtlZFRhYmxlLmVuc3VyZUNUSVRhYmxlKHVubGlua2VkVGFibGUpOwogCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihzY3J1dGluZWUsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZSwgVHJ1c3RlZEltbVB0cigmdm0oKSksIHJl
Z1QwLCB0YWJsZUluZGV4KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaEltbVdp
dGhVbmtub3duS2V5VHlwZSwgVHJ1c3RlZEltbVB0cigmdm0oKSksIHJlZ1QwLCB0YWJsZUluZGV4
LCB1bmxpbmtlZFRhYmxlLm1fbWluKTsKICAgICBmYXJKdW1wKHJldHVyblZhbHVlR1BSLCBKU1N3
aXRjaFB0clRhZyk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9jaGFyKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBoYXZlIGEgZmFzdCBwYXRoLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjQ1MjEKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcFN3aXRjaENoYXI+KCk7CiAgICAgc2l6ZV90IHRhYmxlSW5kZXggPSBieXRlY29kZS5t
X3RhYmxlSW5kZXg7CiAgICAgdW5zaWduZWQgZGVmYXVsdE9mZnNldCA9IGp1bXBUYXJnZXQoY3Vy
cmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX2RlZmF1bHRPZmZzZXQpOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBzY3J1dGluZWUgPSBieXRlY29kZS5tX3NjcnV0aW5lZTsKIAogICAgIC8vIGNyZWF0
ZSBqdW1wIHRhYmxlIGZvciBzd2l0Y2ggZGVzdGluYXRpb25zLCB0cmFjayB0aGlzIHN3aXRjaCBz
dGF0ZW1lbnQuCi0gICAgU2ltcGxlSnVtcFRhYmxlKiBqdW1wVGFibGUgPSAmbV9jb2RlQmxvY2st
PnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKLSAgICBtX3N3aXRjaGVzLmFwcGVuZChTd2l0
Y2hSZWNvcmQoanVtcFRhYmxlLCBtX2J5dGVjb2RlSW5kZXgsIGRlZmF1bHRPZmZzZXQsIFN3aXRj
aFJlY29yZDo6Q2hhcmFjdGVyKSk7Ci0gICAganVtcFRhYmxlLT5lbnN1cmVDVElUYWJsZSgpOwor
ICAgIGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9jb2Rl
QmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgIFNpbXBsZUp1
bXBUYWJsZSYgbGlua2VkVGFibGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxl
SW5kZXgpOworICAgIG1fc3dpdGNoZXMuYXBwZW5kKFN3aXRjaFJlY29yZCh0YWJsZUluZGV4LCBt
X2J5dGVjb2RlSW5kZXgsIGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29yZDo6Q2hhcmFjdGVyKSk7
CisgICAgbGlua2VkVGFibGUuZW5zdXJlQ1RJVGFibGUodW5saW5rZWRUYWJsZSk7CiAKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNjcnV0aW5lZSwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgdGFibGVJbmRleCk7CisgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCB0YWJsZUluZGV4LCB1
bmxpbmtlZFRhYmxlLm1fbWluKTsKICAgICBmYXJKdW1wKHJldHVyblZhbHVlR1BSLCBKU1N3aXRj
aFB0clRhZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAppbmRleCBlZGEyNjNlNDRjNWZjOTEyMWNhODJjZGMzMmIwZjVlNWQ5OGYxNjg3Li5h
YmYxN2IzZmEzMDU1ZmNiZGY2OTFjNDJkNjc4MjUyZTdjNDM2OWQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC05OTQsMTIgKzk5NCwxMyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfaW1tKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIHNjcnV0aW5lZSA9IGJ5dGVjb2RlLm1f
c2NydXRpbmVlOwogCiAgICAgLy8gY3JlYXRlIGp1bXAgdGFibGUgZm9yIHN3aXRjaCBkZXN0aW5h
dGlvbnMsIHRyYWNrIHRoaXMgc3dpdGNoIHN0YXRlbWVudC4KLSAgICBTaW1wbGVKdW1wVGFibGUq
IGp1bXBUYWJsZSA9ICZtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwot
ICAgIG1fc3dpdGNoZXMuYXBwZW5kKFN3aXRjaFJlY29yZChqdW1wVGFibGUsIG1fYnl0ZWNvZGVJ
bmRleCwgZGVmYXVsdE9mZnNldCwgU3dpdGNoUmVjb3JkOjpJbW1lZGlhdGUpKTsKLSAgICBqdW1w
VGFibGUtPmVuc3VyZUNUSVRhYmxlKCk7CisgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFi
bGUmIHVubGlua2VkVGFibGUgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUo
dGFibGVJbmRleCk7CisgICAgU2ltcGxlSnVtcFRhYmxlJiBsaW5rZWRUYWJsZSA9IG1fY29kZUJs
b2NrLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CisgICAgbV9zd2l0Y2hlcy5hcHBlbmQo
U3dpdGNoUmVjb3JkKHRhYmxlSW5kZXgsIG1fYnl0ZWNvZGVJbmRleCwgZGVmYXVsdE9mZnNldCwg
U3dpdGNoUmVjb3JkOjpJbW1lZGlhdGUpKTsKKyAgICBsaW5rZWRUYWJsZS5lbnN1cmVDVElUYWJs
ZSh1bmxpbmtlZFRhYmxlKTsKIAogICAgIGVtaXRMb2FkKHNjcnV0aW5lZSwgcmVnVDEsIHJlZ1Qw
KTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlw
ZSwgVHJ1c3RlZEltbVB0cigmdm0oKSksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHRhYmxl
SW5kZXgpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25L
ZXlUeXBlLCBUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwg
dGFibGVJbmRleCwgdW5saW5rZWRUYWJsZS5tX21pbik7CiAgICAgZmFySnVtcChyZXR1cm5WYWx1
ZUdQUiwgTm9QdHJUYWcpOwogfQogCkBAIC0xMDExLDEyICsxMDEyLDEzIEBAIHZvaWQgSklUOjpl
bWl0X29wX3N3aXRjaF9jaGFyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNjcnV0aW5lZSA9IGJ5dGVjb2RlLm1fc2NydXRpbmVlOwog
CiAgICAgLy8gY3JlYXRlIGp1bXAgdGFibGUgZm9yIHN3aXRjaCBkZXN0aW5hdGlvbnMsIHRyYWNr
IHRoaXMgc3dpdGNoIHN0YXRlbWVudC4KLSAgICBTaW1wbGVKdW1wVGFibGUqIGp1bXBUYWJsZSA9
ICZtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwotICAgIG1fc3dpdGNo
ZXMuYXBwZW5kKFN3aXRjaFJlY29yZChqdW1wVGFibGUsIG1fYnl0ZWNvZGVJbmRleCwgZGVmYXVs
dE9mZnNldCwgU3dpdGNoUmVjb3JkOjpDaGFyYWN0ZXIpKTsKLSAgICBqdW1wVGFibGUtPmVuc3Vy
ZUNUSVRhYmxlKCk7CisgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2Vk
VGFibGUgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7
CisgICAgU2ltcGxlSnVtcFRhYmxlJiBsaW5rZWRUYWJsZSA9IG1fY29kZUJsb2NrLT5zd2l0Y2hK
dW1wVGFibGUodGFibGVJbmRleCk7CisgICAgbV9zd2l0Y2hlcy5hcHBlbmQoU3dpdGNoUmVjb3Jk
KHRhYmxlSW5kZXgsIG1fYnl0ZWNvZGVJbmRleCwgZGVmYXVsdE9mZnNldCwgU3dpdGNoUmVjb3Jk
OjpDaGFyYWN0ZXIpKTsKKyAgICBsaW5rZWRUYWJsZS5lbnN1cmVDVElUYWJsZSh1bmxpbmtlZFRh
YmxlKTsKIAogICAgIGVtaXRMb2FkKHNjcnV0aW5lZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUsIG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgdGFibGVJbmRl
eCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlU
eXBlLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdU
MCksIHRhYmxlSW5kZXgsIHVubGlua2VkVGFibGUubV9taW4pOwogICAgIGZhckp1bXAocmV0dXJu
VmFsdWVHUFIsIE5vUHRyVGFnKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKaW5kZXggYjI1MDBmMGU2MjA5OGNiNmJlZWNiYTdjNWJmMzNjNzAxOWY1
YjQwMi4uN2UyMzQ3MDMwY2M4ZGI3ZTUxZGMzZjdmYWRjNDE5MjU2ZGJmYmUzZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yNzg5LDcgKzI3ODks
NyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUs
IENhbGxGcmFtZSosIChKU0dsb2JhbE9iamVjdAogICAgIHJldHVybiBuZXdDYWxsRnJhbWU7CiB9
CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25v
d25LZXlUeXBlLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRLZXksIHNpemVfdCB0YWJsZUluZGV4KSkKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRLZXksIHNp
emVfdCB0YWJsZUluZGV4LCBpbnQzMl90IG1pbikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTI3OTksMTUgKzI3OTksMTYgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUsIGNoYXIqLCAoSlNHbG9iYWwKICAg
ICBKU1ZhbHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAKLSAgICBTaW1wbGVKdW1w
VGFibGUmIGp1bXBUYWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgp
OwotICAgIHZvaWQqIHJlc3VsdCA9IGp1bXBUYWJsZS5jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRy
ZXNzKCk7CisgICAgY29uc3QgU2ltcGxlSnVtcFRhYmxlJiBsaW5rZWRUYWJsZSA9IGNvZGVCbG9j
ay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgIEFTU0VSVChjb2RlQmxvY2stPnVu
bGlua2VkU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpLm1fbWluID09IG1pbik7CisgICAgdm9p
ZCogcmVzdWx0ID0gbGlua2VkVGFibGUubV9jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRyZXNzKCk7
CiAKICAgICBpZiAoa2V5LmlzU3RyaW5nKCkpIHsKICAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9
IGFzU3RyaW5nKGtleSk7CiAgICAgICAgIGlmIChzdHJpbmctPmxlbmd0aCgpID09IDEpIHsKICAg
ICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHN0cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBqdW1wVGFibGUuY3RpRm9yVmFsdWUodmFsdWVbMF0pLmV4ZWN1dGFi
bGVBZGRyZXNzKCk7CisgICAgICAgICAgICByZXN1bHQgPSBsaW5rZWRUYWJsZS5jdGlGb3JWYWx1
ZShtaW4sIHZhbHVlWzBdKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0yODE1LDcgKzI4MTYsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
U3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbAogICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1bHQpOwogfQogCi1KU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKFZN
KiB2bVBvaW50ZXIsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRLZXksIHNpemVfdCB0YWJsZUluZGV4
KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93
bktleVR5cGUsIGNoYXIqLCAoVk0qIHZtUG9pbnRlciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEtl
eSwgc2l6ZV90IHRhYmxlSW5kZXgsIGludDMyX3QgbWluKSkKIHsKICAgICBWTSYgdm0gPSAqdm1Q
b2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKQEAgLTI4MjMsMTQgKzI4MjQsMTUgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChWTSogdm1Qb2kKICAgICBK
U1ZhbHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAKLSAgICBTaW1wbGVKdW1wVGFi
bGUmIGp1bXBUYWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwor
ICAgIGNvbnN0IFNpbXBsZUp1bXBUYWJsZSYgbGlua2VkVGFibGUgPSBjb2RlQmxvY2stPnN3aXRj
aEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT51bmxpbmtlZFN3
aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KS5tX21pbiA9PSBtaW4pOwogICAgIHZvaWQqIHJlc3Vs
dDsKICAgICBpZiAoa2V5LmlzSW50MzIoKSkKLSAgICAgICAgcmVzdWx0ID0ganVtcFRhYmxlLmN0
aUZvclZhbHVlKGtleS5hc0ludDMyKCkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIHJl
c3VsdCA9IGxpbmtlZFRhYmxlLmN0aUZvclZhbHVlKG1pbiwga2V5LmFzSW50MzIoKSkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKICAgICBlbHNlIGlmIChrZXkuaXNEb3VibGUoKSAmJiBrZXkuYXNEb3Vi
bGUoKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihrZXkuYXNEb3VibGUoKSkpCi0gICAgICAgIHJl
c3VsdCA9IGp1bXBUYWJsZS5jdGlGb3JWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90PihrZXkuYXNE
b3VibGUoKSkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIHJlc3VsdCA9IGxpbmtlZFRh
YmxlLmN0aUZvclZhbHVlKG1pbiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oa2V5LmFzRG91YmxlKCkp
KS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganVtcFRh
YmxlLmN0aURlZmF1bHQuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgcmVzdWx0ID0gbGlu
a2VkVGFibGUubV9jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgYXNzZXJ0SXNU
YWdnZWRXaXRoPEpTU3dpdGNoUHRyVGFnPihyZXN1bHQpOwogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAppbmRleCBjODYxMTBhMTk5NjM2MTJjYzFlOTZjNjkzOWE5ZTI0ZmJlOTAxN2Vm
Li45N2EwOTBkZTI4N2Q2NmNkMzE5ZDQyYTc3YWU0NWI0MTI4ZTA2ZTFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjgwLDggKzI4MCw4IEBAIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdl
dFByaXZhdGVOYW1lQnlJZE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMs
IEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0
cl90KSk7CiAKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoQ2hhcldp
dGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKFZNKiwgRW5jb2RlZEpT
VmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCwgaW50MzJfdCBt
aW4pKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVu
a25vd25LZXlUeXBlLCBjaGFyKiwgKFZNKiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFi
bGVJbmRleCwgaW50MzJfdCBtaW4pKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uU3dpdGNoU3RyaW5nV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25HZXRGcm9tU2NvcGUsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBJbnN0cnVjdGlvbiogYnl0ZWNvZGVQQykpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRUb1Njb3BlLCB2b2lkLCAoSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBJbnN0cnVjdGlvbiogYnl0ZWNvZGVQQykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNzhiNmY2NmZjYTA5YTE1NjQ0
NTk1ZGUyNTc1Mzc3ODFjN2UxNjFhNS4uYjA0ZjBkY2VjMTE0OWY0ZGZlZWJlNDEwNWQ1NWZmYjE4
YWIwMDBlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCkBAIC0xNTk3LDcgKzE1OTcsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfc3dpdGNoX2ltbSkKICAgICBpbnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJf
dD4odmFsdWUpOwogICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gSlVNUF9PRkZTRVQoYnl0ZWNvZGUu
bV9kZWZhdWx0T2Zmc2V0KTsKICAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpCi0gICAgICAgIEpV
TVBfVE8oY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KS5v
ZmZzZXRGb3JWYWx1ZShpbnRWYWx1ZSwgZGVmYXVsdE9mZnNldCkpOworICAgICAgICBKVU1QX1RP
KGNvZGVCbG9jay0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4
KS5vZmZzZXRGb3JWYWx1ZShpbnRWYWx1ZSwgZGVmYXVsdE9mZnNldCkpOwogICAgIGVsc2UKICAg
ICAgICAgSlVNUF9UTyhkZWZhdWx0T2Zmc2V0KTsKICAgICBMTElOVF9FTkQoKTsKQEAgLTE2MTMs
NyArMTYxMyw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfY2hhcikK
ICAgICBBU1NFUlQoc3RyaW5nLT5sZW5ndGgoKSA9PSAxKTsKICAgICBpbnQgZGVmYXVsdE9mZnNl
dCA9IEpVTVBfT0ZGU0VUKGJ5dGVjb2RlLm1fZGVmYXVsdE9mZnNldCk7CiAgICAgU3RyaW5nSW1w
bCogaW1wbCA9IHN0cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KS5pbXBsKCk7Ci0gICAgSlVNUF9U
Tyhjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShieXRlY29kZS5tX3RhYmxlSW5kZXgpLm9mZnNl
dEZvclZhbHVlKCgqaW1wbClbMF0sIGRlZmF1bHRPZmZzZXQpKTsKKyAgICBKVU1QX1RPKGNvZGVC
bG9jay0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KS5vZmZz
ZXRGb3JWYWx1ZSgoKmltcGwpWzBdLCBkZWZhdWx0T2Zmc2V0KSk7CiAgICAgTExJTlRfRU5EKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNmY1YTRkMThiN2ZmNjNhZThlMzc5OTdlOGFiYzhj
ZjEwYmZhMjg4My4uZWMxYTk1OWFlNTY4MzUyNDRlNzc2MTZlZWNiYzIxOTU2Mjg5NjlmZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20KQEAgLTIwMzMsMTMgKzIwMzMsMTQgQEAgbGxpbnRPcFdpdGhKdW1wKG9w
X3N3aXRjaF9pbW0sIE9wU3dpdGNoSW1tLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRj
aCkKICAgICBnZXR1KHNpemUsIE9wU3dpdGNoSW1tLCBtX3RhYmxlSW5kZXgsIHQzKQogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQxLCB0MCkKICAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgotICAg
IG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKLSAgICBsb2FkcCBDb2RlQmxvY2s6OlJh
cmVEYXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0Mgor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDJdLCB0MgorICAgIGxvYWRwIFVu
bGlua2VkQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBVbmxp
bmtlZFNpbXBsZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFy
ZURhdGE6Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFn
ZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAg
IGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNoSW1tTm90SW50Ci0gICAgc3ViaSBTaW1wbGVK
dW1wVGFibGU6Om1pblt0Ml0sIHQwCi0gICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hP
ZmZzZXRzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRh
W3QyXSwgdDIKKyAgICBzdWJpIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlOjptX21pblt0Ml0sIHQw
CisgICAgbG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fYnJhbmNoT2Zmc2V0cyArIEZp
eGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCiAg
ICAgYnRweiB0MiwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKICAgICBiaWFlcSB0MCwgUmVmQ291
bnRlZEFycmF5U3RvcmFnZU5vbk51bGxTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRo
cm91Z2gKICAgICBsb2FkaSBbdDIsIHQwLCA0XSwgdDEKQEAgLTIwNjIsOSArMjA2MywxMCBAQCBs
bGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoQ2hhciwgbWFjcm8gKHNpemUs
IGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgZ2V0dShzaXplLCBPcFN3aXRjaENoYXIsIG1fdGFi
bGVJbmRleCwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDEsIHQw
KQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9jazo6bV9y
YXJlRGF0YVt0Ml0sIHQyCi0gICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MwotICAg
IGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fc3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1
ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3VubGlua2VkQ29kZVt0
Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0Mgor
ICAgIG11bGkgc2l6ZW9mIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlLCB0MworICAgIGxvYWRwIFVu
bGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMgKyBG
aXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0Mgog
ICAgIGFkZHAgdDMsIHQyCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxs
VGhyb3VnaAogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgLm9wU3dp
dGNoQ2hhckZhbGxUaHJvdWdoCkBAIC0yMDc4LDggKzIwODAsOCBAQCBsbGludE9wV2l0aEp1bXAo
b3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoQ2hhciwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlz
cGF0Y2gpCiAub3BTd2l0Y2hDaGFyOEJpdDoKICAgICBsb2FkYiBbdDBdLCB0MAogLm9wU3dpdGNo
Q2hhclJlYWR5OgotICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAotICAgIGxv
YWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVjdG9yOjptX3N0b3Jh
Z2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgc3ViaSBVbmxpbmtlZFNp
bXBsZUp1bXBUYWJsZTo6bV9taW5bdDJdLCB0MAorICAgIGxvYWRwIFVubGlua2VkU2ltcGxlSnVt
cFRhYmxlOjptX2JyYW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291
bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgogICAgIGJ0cHogdDIsIC5vcFN3aXRjaENoYXJGYWxs
VGhyb3VnaAogICAgIGJpYWVxIHQwLCBSZWZDb3VudGVkQXJyYXlTdG9yYWdlTm9uTnVsbFNpemVP
ZmZzZXRbdDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBsb2FkaSBbdDIsIHQwLCA0
XSwgdDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KaW5kZXggNTBlMmMzODU2OWZkMzRjNTQ2MDkwMmYwOWM2NDMyODU4N2Ri
YWM3Mi4uMTRhZDJhNDk3ZmIwYTdhZjkzN2IyNzNhNzBkMGE5ZmJhZTNiZDJhNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KQEAgLTIxNzgsMTMgKzIxNzgsMTQgQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9pbW0s
IE9wU3dpdGNoSW1tLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBnZXR1
KHNpemUsIE9wU3dpdGNoSW1tLCBtX3RhYmxlSW5kZXgsIHQzKQogICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUoc2l6ZSwgdDIsIHQxKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAg
IGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCi0gICAgbXVsaSBzaXplb2YgU2lt
cGxlSnVtcFRhYmxlLCB0MwotICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fc3dpdGNo
SnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX3VubGlua2VkQ29kZVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6
Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlLCB0MworICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV91bmxpbmtl
ZFN3aXRjaEp1bXBUYWJsZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFy
cmF5OjptX2RhdGFbdDJdLCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAgYnFiIHQxLCBudW1iZXJU
YWcsIC5vcFN3aXRjaEltbU5vdEludAotICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJd
LCB0MQotICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVj
dG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgc3Vi
aSBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9taW5bdDJdLCB0MQorICAgIGxvYWRwIFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlOjptX2JyYW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9y
YWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgogICAgIGJ0cHogdDIsIC5vcFN3
aXRjaEltbUZhbGxUaHJvdWdoCiAgICAgYmlhZXEgdDEsIFJlZkNvdW50ZWRBcnJheVN0b3JhZ2VO
b25OdWxsU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCiAgICAgbG9hZGlz
IFt0MiwgdDEsIDRdLCB0MQpAQCAtMjIwNyw5ICsyMjA4LDEwIEBAIGxsaW50T3BXaXRoSnVtcChv
cF9zd2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNw
YXRjaCkKICAgICBnZXR1KHNpemUsIE9wU3dpdGNoQ2hhciwgbV90YWJsZUluZGV4LCB0MykKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MSkKICAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgotICAg
IG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKLSAgICBsb2FkcCBDb2RlQmxvY2s6OlJh
cmVEYXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0Mgor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDJdLCB0MgorICAgIGxvYWRwIFVu
bGlua2VkQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBVbmxp
bmtlZFNpbXBsZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFy
ZURhdGE6Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFn
ZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAg
IGJ0cW56IHQxLCBub3RDZWxsTWFzaywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCiAgICAgYmJu
ZXEgSlNDZWxsOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91
Z2gKQEAgLTIyMjMsOCArMjIyNSw4IEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfY2hhciwg
T3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKIC5vcFN3aXRj
aENoYXI4Qml0OgogICAgIGxvYWRiIFt0MV0sIHQwCiAub3BTd2l0Y2hDaGFyUmVhZHk6Ci0gICAg
c3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCi0gICAgbG9hZHAgU2ltcGxlSnVtcFRh
YmxlOjpicmFuY2hPZmZzZXRzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRB
cnJheTo6bV9kYXRhW3QyXSwgdDIKKyAgICBzdWJpIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlOjpt
X21pblt0Ml0sIHQwCisgICAgbG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fYnJhbmNo
T2Zmc2V0cyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0
YVt0Ml0sIHQyCiAgICAgYnRweiB0MiwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCiAgICAgYmlh
ZXEgdDAsIFJlZkNvdW50ZWRBcnJheVN0b3JhZ2VOb25OdWxsU2l6ZU9mZnNldFt0Ml0sIC5vcFN3
aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGxvYWRpcyBbdDIsIHQwLCA0XSwgdDEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA0M2ZkNDQ3NDRj
MjBiZDAzNTEzNTkyNjUyMTU3MmQzMmYxMDJlNGYxLi4zYjI3NzU1MTgxODk3ZjZjYzdkYjI2NTI4
YmE4Mjk0Mjk2YmNiMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCkBAIC04NjUsMTQgKzg2NSwxNCBAQCBjbGFzcyBDYWNoZWRTaW1wbGVKdW1w
VGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkU2ltcGxlSnVtcFRhYmxlPiB7CiBw
dWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVW5saW5rZWRT
aW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSkKICAgICB7Ci0gICAgICAgIG1fbWluID0ganVtcFRh
YmxlLm1pbjsKLSAgICAgICAgbV9icmFuY2hPZmZzZXRzLmVuY29kZShlbmNvZGVyLCBqdW1wVGFi
bGUuYnJhbmNoT2Zmc2V0cyk7CisgICAgICAgIG1fbWluID0ganVtcFRhYmxlLm1fbWluOworICAg
ICAgICBtX2JyYW5jaE9mZnNldHMuZW5jb2RlKGVuY29kZXIsIGp1bXBUYWJsZS5tX2JyYW5jaE9m
ZnNldHMpOwogICAgIH0KIAogICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUpIGNvbnN0CiAgICAgewotICAgICAgICBqdW1w
VGFibGUubWluID0gbV9taW47Ci0gICAgICAgIG1fYnJhbmNoT2Zmc2V0cy5kZWNvZGUoZGVjb2Rl
ciwganVtcFRhYmxlLmJyYW5jaE9mZnNldHMpOworICAgICAgICBqdW1wVGFibGUubV9taW4gPSBt
X21pbjsKKyAgICAgICAgbV9icmFuY2hPZmZzZXRzLmRlY29kZShkZWNvZGVyLCBqdW1wVGFibGUu
bV9icmFuY2hPZmZzZXRzKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05NTAsNyArOTUwLDcgQEAg
Y2xhc3MgQ2FjaGVkQ29kZUJsb2NrUmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlu
a2VkQ29kZUJsb2NrOjpSYXJlRGF0YT4KICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGEmIHJhcmVEYXRhKQogICAgIHsKICAg
ICAgICAgbV9leGNlcHRpb25IYW5kbGVycy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9leGNl
cHRpb25IYW5kbGVycyk7Ci0gICAgICAgIG1fc3dpdGNoSnVtcFRhYmxlcy5lbmNvZGUoZW5jb2Rl
ciwgcmFyZURhdGEubV9zd2l0Y2hKdW1wVGFibGVzKTsKKyAgICAgICAgbV91bmxpbmtlZFN3aXRj
aEp1bXBUYWJsZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fdW5saW5rZWRTd2l0Y2hKdW1w
VGFibGVzKTsKICAgICAgICAgbV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMuZW5jb2Rl
KGVuY29kZXIsIHJhcmVEYXRhLm1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKTsKICAg
ICAgICAgbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucy5lbmNvZGUoZW5jb2RlciwgcmFyZURh
dGEubV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucyk7CiAgICAgICAgIG1fdHlwZVByb2ZpbGVy
SW5mb01hcC5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV90eXBlUHJvZmlsZXJJbmZvTWFwKTsK
QEAgLTk2NSw3ICs5NjUsNyBAQCBjbGFzcyBDYWNoZWRDb2RlQmxvY2tSYXJlRGF0YSA6IHB1Ymxp
YyBDYWNoZWRPYmplY3Q8VW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhPgogICAgIHsKICAgICAg
ICAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhKiByYXJlRGF0YSA9IG5ldyBVbmxpbmtlZENv
ZGVCbG9jazo6UmFyZURhdGEgeyB9OwogICAgICAgICBtX2V4Y2VwdGlvbkhhbmRsZXJzLmRlY29k
ZShkZWNvZGVyLCByYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycyk7Ci0gICAgICAgIG1fc3dp
dGNoSnVtcFRhYmxlcy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxl
cyk7CisgICAgICAgIG1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzLmRlY29kZShkZWNvZGVyLCBy
YXJlRGF0YS0+bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMpOwogICAgICAgICBtX3VubGlua2Vk
U3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fdW5saW5r
ZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKTsKICAgICAgICAgbV9leHByZXNzaW9uSW5mb0ZhdFBv
c2l0aW9ucy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fZXhwcmVzc2lvbkluZm9GYXRQb3Np
dGlvbnMpOwogICAgICAgICBtX3R5cGVQcm9maWxlckluZm9NYXAuZGVjb2RlKGRlY29kZXIsIHJh
cmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXApOwpAQCAtOTc5LDcgKzk3OSw3IEBAIGNsYXNz
IENhY2hlZENvZGVCbG9ja1JhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtlZENv
ZGVCbG9jazo6UmFyZURhdGE+CiAKIHByaXZhdGU6CiAgICAgQ2FjaGVkVmVjdG9yPFVubGlua2Vk
SGFuZGxlckluZm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7Ci0gICAgQ2FjaGVkVmVjdG9yPENhY2hl
ZFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOworICAgIENhY2hlZFZlY3RvcjxD
YWNoZWRTaW1wbGVKdW1wVGFibGU+IG1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzOwogICAgIENh
Y2hlZFZlY3RvcjxDYWNoZWRTdHJpbmdKdW1wVGFibGU+IG1fdW5saW5rZWRTdHJpbmdTd2l0Y2hK
dW1wVGFibGVzOwogICAgIENhY2hlZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvOjpGYXRQb3Np
dGlvbj4gbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9uczsKICAgICBDYWNoZWRIYXNoTWFwPHVu
c2lnbmVkLCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6OlR5cGVQcm9maWxlckV4cHJlc3Np
b25SYW5nZT4gbV90eXBlUHJvZmlsZXJJbmZvTWFwOwo=
</data>
<flag name="review"
          id="446055"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="446070"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426037</attachid>
            <date>2021-04-14 13:10:06 -0700</date>
            <delta_ts>2021-04-14 20:26:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224472-20210414131006.patch</filename>
            <type>text/plain</type>
            <size>76789</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1OTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MDQxODk2NzJkNWJlYzYxYWFlNDkzMDU5YWE0NDdjMDEyN2MzMjY5Li5lMzAxMDBlNTFlMDc5N2Ey
ZWI0ZWQ0ZGE2NWZiYWY1MDdiMDRlOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTYgQEAKKzIwMjEtMDQtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBEbyBub3QgY29weSBTaW1wbGVKdW1wVGFibGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ3MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXZvaWRz
IGNvcHlpbmcgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUgdG8gU2ltcGxlSnVtcFRhYmxlIGJ5IGRl
Y291cGxpbmcgQ1RJIGFkZHJlc3NlcyBmcm9tIGp1bXAgb2Zmc2V0IGluIFNpbXBsZUp1bXBUYWJs
ZS4KKyAgICAgICAgU2ltcGxlSnVtcFRhYmxlIGFuZCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSBh
cmUgYWxtb3N0IGlkZW50aWNhbC4gU2ltcGxlSnVtcFRhYmxlIGFkZHMgSklUIGp1bXAgdGFyZ2V0
IGZvciBlYWNoIGJyYW5jaC4KKyAgICAgICAgV2Ugc2hvdWxkIHVzZSBkYXRhIGZyb20gVW5saW5r
ZWRTaW1wbGVKdW1wVGFibGUgYW5kIGp1bXAgdmlhIFNpbXBsZUp1bXBUYWJsZS4gRG8gbm90IG5l
ZWQgdG8gaGF2ZSBjb3B5IG9mIGJyYW5jaGVzIGZyb20gVW5saW5rZWRTaW1wbGVKdW1wVGFibGUu
CisKKyAgICAgICAgVGhpcyB3YXkgcmVtb3ZlcyBWZWN0b3I8U2ltcGxlSnVtcFRhYmxlPiBmcm9t
IENvZGVCbG9jazo6UmFyZURhdGEuIEFuZCB0aGlzIGlzIG1vdmVkIHRvIENvZGVCbG9jazo6SklU
RGF0YS4gQW5kIGl0IG9ubHkgaW5jbHVkZXMganVtcCB0YXJnZXQgYWRkcmVzc2VzLAorICAgICAg
ICBhbmQgYnJhbmNoIG9mZnNldCBpbmZvcm1hdGlvbiBpcyBrZXB0IGluIFVubGlua2VkU2ltcGxl
SnVtcFRhYmxlIHNpZGUuIFdlIG5vIGxvbmdlciBuZWVkIHRvIGNhcmVmdWxseSBjb3B5IHRoZXNl
IHZlY3RvcnMgaW4gQ29kZUJsb2NrIGluY2x1ZGluZyBERkcgLyBGVEwgb25lcy4KKworICAgICAg
ICBJbiBMTEludCwgd2UgaW5zdGVhZCB1c2UgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUgZm9yIGp1
bXBpbmcuCisKKyAgICAgICAgSW4gQmFzZWxpbmUsIHdlIGZpcnN0IGFsbG9jYXRlIGVub3VnaCBG
aXhlZFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IGFuZCBmaWxsIGNvbnRlbnQgdmlhIFNpbXBsZUp1
bXBUYWJsZTo6ZW5zdXJlQ1RJVGFibGUoKSBjYWxsIHdoZW4gY29tcGlsaW5nIGNvcnJlc3BvbmRp
bmcKKyAgICAgICAgc3dpdGNoIG9wY29kZS4gRmluYWxseSB3ZSBmaWxsIHRoZXNlIGRhdGEgc3Ry
dWN0dXJlcyB3aXRoIGFjdHVhbCBjb2RlIGxvY2F0aW9ucyBpbiBKSVQ6OmxpbmsgZnVuY3Rpb24u
CisKKyAgICAgICAgSW4gREZHLCB3ZSBmaXJzdCBjb2xsZWN0IFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlIHdpdGhvdXQgY29weWluZy4gVGhpcyBpcyBPSyBzaW5jZSBpdCBpcyBrZXB0IGJ5IFVubGlu
a2VkQ29kZUJsb2NrLCBhbmQgVW5saW5rZWRDb2RlQmxvY2sgaXMga2VwdCBieSBiYXNlbGluZSBD
b2RlQmxvY2tzIHRoYXQKKyAgICAgICAgYXJlIGhhbmRsZWQgYnkgdGhpcyBERkcgY29tcGlsYXRp
b24uIFdlIGhvbGQgVmVjdG9yPGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlKj4gaW4gREZH
OjpHcmFwaCBhbmQgd2UgbWF0ZXJpYWxpemUgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4gaW4gREZH
OjpHcmFwaC4KKyAgICAgICAgRHVyaW5nIERGRyBjb21waWxhdGlvbiwgd2UgdG91Y2ggdGhpcyBE
Rkc6OkdyYXBoJ3MganVtcCB0YWJsZXMsIGFuZCBKSVQgY29tcGlsZXIgZ2VuZXJhdGVzIGNvZGUg
dmlhIHRoZXNlIHRhYmxlcy4gQW5kIHdoZW4gbGlua2luZywgd2UgbW92ZSB0aGUgY29udGVudCB0
byBDb2RlQmxvY2suCisKKyAgICAgICAgSW4gRlRMLCB3aGlsZSB3ZSB1c2UgVW5saW5rZWRTaW1w
bGVKdW1wVGFibGUgaW4gRlRMIGNvZGUgZ2VuZXJhdGlvbiwgRlRMIGRvIG5vdCB1c2UgU2ltcGxl
SnVtcFRhYmxlIGFuZCBpbnN0ZWFkIEZUTCB1c2VzIFN3aXRjaCBpbiBCMy4KKworICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrQnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wU3dpdGNoSnVtcFRhYmxlcyk6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uOjpydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OnNocmlua1RvRml0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpzd2l0Y2hKdW1wVGFibGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Om51bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp1bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpjbGVhclN3aXRjaEp1bXBUYWJsZXMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFN3aXRjaEp1bXBUYWJsZUZyb21Qcm9maWxlZENvZGVC
bG9jayk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U2ltcGxlSnVtcFRhYmxlOjpvZmZzZXRGb3JWYWx1ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYnl0ZWNvZGUvSnVtcFRhYmxlLmg6CisgICAgICAgIChKU0M6OlNpbXBsZUp1bXBUYWJs
ZTo6ZW5zdXJlQ1RJVGFibGUpOgorICAgICAgICAoSlNDOjpTaW1wbGVKdW1wVGFibGU6OmN0aUZv
clZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2ltcGxlSnVtcFRhYmxlOjppc0VtcHR5IGNv
bnN0KToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNpbXBsZUp1bXBUYWJs
ZTo6Y2xvbmVOb25KSVRQYXJ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U2ltcGxl
SnVtcFRhYmxlOjpjdGlGb3JWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNpbXBsZUp1
bXBUYWJsZTo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0c0lubGluZXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6YWRkKToKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Om51bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1w
VGFibGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnVubGlua2Vk
U3dpdGNoSnVtcFRhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6
OnVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6Om51bWJlck9mU3dpdGNoSnVtcFRhYmxlcyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpzd2l0Y2hKdW1wVGFibGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6dW5saW5rZWRTdHJpbmdTd2l0
Y2hKdW1wVGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0
b3I6OmZpbmFsaXplKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6bnVtYmVy
T2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvcjo6YWRkVW5saW5rZWRTd2l0Y2hKdW1wVGFibGUpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6dW5saW5rZWRTd2l0Y2hKdW1wVGFi
bGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6bnVtYmVyT2ZT
d2l0Y2hKdW1wVGFibGVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3I6OmFkZFN3aXRjaEp1bXBUYWJsZSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpzd2l0Y2hKdW1wVGFibGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpblN3aXRjaCk6CisgICAgICAgIChKU0M6
OnByZXBhcmVKdW1wVGFibGVGb3JTd2l0Y2gpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW5kU3dpdGNoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tF
bnRyeSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAg
ICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbW0pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0U3dpdGNoQ2hhcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRTd2l0Y2hTdHJpbmcpOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlV2l0aG91dExpbmtpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgor
ICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6U3dpdGNoUmVjb3JkOjpTd2l0Y2hS
ZWNvcmQpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3N3aXRjaF9pbW0pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3dpdGNo
X2NoYXIpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9z
d2l0Y2hfY2hhcik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q2FjaGVkU2ltcGxlSnVtcFRhYmxlOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRT
aW1wbGVKdW1wVGFibGU6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVC
bG9ja1JhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2tSYXJl
RGF0YTo6ZGVjb2RlIGNvbnN0KToKKwogMjAyMS0wNC0xMyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mu
a2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgTW92ZSBjbG9uZVVCcmVha0l0ZXJhdG9yIGRl
Y2xhcmF0aW9uIHRvIEludGxXb3JrYXJvdW5kLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IDAwZjllYzk3Y2U3MmU5NmFmN2Ex
M2IzYjRkNmY5ZTczYmNlNTIyM2EuLjIxY2NjYzQ4ZWNiOGMwZGMzZTM2MGRlNTI4YmEzYTIzMjhi
N2VmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
RHVtcGVyLmNwcApAQCAtMTc0LDE4ICsxNzQsMTggQEAgdm9pZCBDb2RlQmxvY2tCeXRlY29kZUR1
bXBlcjxCbG9jaz46OmR1bXBFeGNlcHRpb25IYW5kbGVycygpCiB0ZW1wbGF0ZTxjbGFzcyBCbG9j
az4KIHZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wU3dpdGNoSnVtcFRh
YmxlcygpCiB7Ci0gICAgaWYgKHVuc2lnbmVkIGNvdW50ID0gdGhpcy0+YmxvY2soKS0+bnVtYmVy
T2ZTd2l0Y2hKdW1wVGFibGVzKCkpIHsKKyAgICBpZiAodW5zaWduZWQgY291bnQgPSB0aGlzLT5i
bG9jaygpLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpKSB7CiAgICAgICAgIHRo
aXMtPm1fb3V0LnByaW50ZigiU3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CiAgICAgICAgIHVuc2ln
bmVkIGkgPSAwOwogICAgICAgICBkbyB7CiAgICAgICAgICAgICB0aGlzLT5tX291dC5wcmludGYo
IiAgJTFkID0ge1xuIiwgaSk7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBzd2l0Y2hKdW1wVGFi
bGUgPSB0aGlzLT5ibG9jaygpLT5zd2l0Y2hKdW1wVGFibGUoaSk7CisgICAgICAgICAgICBjb25z
dCBhdXRvJiBzd2l0Y2hKdW1wVGFibGUgPSB0aGlzLT5ibG9jaygpLT51bmxpbmtlZFN3aXRjaEp1
bXBUYWJsZShpKTsKICAgICAgICAgICAgIGludCBlbnRyeSA9IDA7Ci0gICAgICAgICAgICBhdXRv
IGVuZCA9IHN3aXRjaEp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmVuZCgpOwotICAgICAgICAgICAg
Zm9yIChhdXRvIGl0ZXIgPSBzd2l0Y2hKdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyLCArK2VudHJ5KSB7CisgICAgICAgICAgICBhdXRvIGVuZCA9IHN3
aXRjaEp1bXBUYWJsZS5tX2JyYW5jaE9mZnNldHMuZW5kKCk7CisgICAgICAgICAgICBmb3IgKGF1
dG8gaXRlciA9IHN3aXRjaEp1bXBUYWJsZS5tX2JyYW5jaE9mZnNldHMuYmVnaW4oKTsgaXRlciAh
PSBlbmQ7ICsraXRlciwgKytlbnRyeSkgewogICAgICAgICAgICAgICAgIGlmICghKml0ZXIpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHRoaXMtPm1fb3V0
LnByaW50ZigiXHRcdCU0ZCA9PiAlMDRkXG4iLCBlbnRyeSArIHN3aXRjaEp1bXBUYWJsZS5taW4s
ICppdGVyKTsKKyAgICAgICAgICAgICAgICB0aGlzLT5tX291dC5wcmludGYoIlx0XHQlNGQgPT4g
JTA0ZFxuIiwgZW50cnkgKyBzd2l0Y2hKdW1wVGFibGUubV9taW4sICppdGVyKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHRoaXMtPm1fb3V0LnByaW50ZigiICAgICAgfVxuIik7CiAgICAg
ICAgICAgICArK2k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVEdW1wZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUR1bXBlci5oCmluZGV4IDVhNGUyMmU0NDQ0OGY5ZDY3MmRiNTk2YWVkYTBkNjhiNWY4NzMyZGEu
Ljg3MmY2YWJhMmNiZTU0ZTk2YTk0YzUxYWM1NDc1MDZhMjZjZDczNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uY3BwCmluZGV4IDRkNTdkYTVhMzBlMmQxOWYwYzg1Y2I1Y2Q5ZGJmMzcwODUz
MzVmNTcuLjE1YTY2YTk0NzhkZDhjNjBhMTIyNmY5ZjllY2U1NzAzZWYyMjdkOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTYsMTIgKzIxNiwxMiBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgIC8vIFNldHVwIHRoZSBnbG9iYWwgc3dp
dGNoIGZvciB0aGUgZ2VuZXJhdG9yLgogICAgIHsKICAgICAgICAgYXV0byBuZXh0VG9FbnRlclBv
aW50ID0gZW50ZXJQb2ludCgpLm5leHQoKTsKLSAgICAgICAgdW5zaWduZWQgc3dpdGNoVGFibGVJ
bmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKKyAgICAgICAg
dW5zaWduZWQgc3dpdGNoVGFibGVJbmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2Vk
U3dpdGNoSnVtcFRhYmxlcygpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3RhdGUgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpTdGF0ZSkpOwotICAgICAgICBhdXRvJiBqdW1wVGFibGUg
PSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7Ci0gICAgICAgIGp1bXBUYWJsZS5t
aW4gPSAwOwotICAgICAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cyA9IEZpeGVkVmVjdG9yPGlu
dDMyX3Q+KG1feWllbGRzLnNpemUoKSArIDEpOwotICAgICAgICBzdGQ6OmZpbGwoanVtcFRhYmxl
LmJyYW5jaE9mZnNldHMuYmVnaW4oKSwganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZW5kKCksIDAp
OworICAgICAgICBhdXRvJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkVW5saW5rZWRTd2l0
Y2hKdW1wVGFibGUoKTsKKyAgICAgICAganVtcFRhYmxlLm1fbWluID0gMDsKKyAgICAgICAganVt
cFRhYmxlLm1fYnJhbmNoT2Zmc2V0cyA9IEZpeGVkVmVjdG9yPGludDMyX3Q+KG1feWllbGRzLnNp
emUoKSArIDEpOworICAgICAgICBzdGQ6OmZpbGwoanVtcFRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5i
ZWdpbigpLCBqdW1wVGFibGUubV9icmFuY2hPZmZzZXRzLmVuZCgpLCAwKTsKICAgICAgICAganVt
cFRhYmxlLmFkZCgwLCBuZXh0VG9FbnRlclBvaW50Lm9mZnNldCgpKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1feWllbGRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAganVt
cFRhYmxlLmFkZChpICsgMSwgbV95aWVsZHNbaV0ucG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBkYjgyODZhODc0NzgzMGIzN2Y3MDE3
ZmFjOTkyNzYyZDIxMzBiMDgzLi4zNzlhOGY3YTNiMzg3YzdiODZkZTFmMGUxZGU2M2VmMzE4NmM1
NzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtMzIzLDkgKzMyMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKIAogICAgIGlmIChvdGhlci5t
X3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICAg
ICAgCiAgICAgICAgIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMgPSBvdGhlci5tX3Jh
cmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzOwotICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRj
aEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAg
fQogfQogCkBAIC00MTcsNyArNDE1LDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAg
ICAgbV9mdW5jdGlvbkV4cHJzW2ldLnNldCh2bSwgdGhpcywgdW5saW5rZWRFeGVjdXRhYmxlLT5s
aW5rKHZtLCB0b3BMZXZlbEV4ZWN1dGFibGUsIG93bmVyRXhlY3V0YWJsZS0+c291cmNlKCksIFdU
Rjo6bnVsbG9wdCwgTm9JbnRyaW5zaWMsIG93bmVyRXhlY3V0YWJsZS0+aXNJbnNpZGVPcmRpbmFy
eUZ1bmN0aW9uKCkpKTsKICAgICB9CiAKLSAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPm51bWJl
ck9mRXhjZXB0aW9uSGFuZGxlcnMoKSB8fCB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZTd2l0
Y2hKdW1wVGFibGVzKCkpIHsKKyAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRXhj
ZXB0aW9uSGFuZGxlcnMoKSkgewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7
CiAKICAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJP
ZkV4Y2VwdGlvbkhhbmRsZXJzKCkpIHsKQEAgLTQzMywxNiArNDMxLDYgQEAgYm9vbCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRh
YmxlLCBVbmxpbmsKICNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBU
YWJsZXMoKSkgewotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnJl
c2l6ZVRvRml0KGNvdW50KTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBzb3Vy
Y2VUYWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoaSk7Ci0gICAgICAg
ICAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiBkZXN0VGFibGUgPSBtX3JhcmVEYXRhLT5tX3N3aXRj
aEp1bXBUYWJsZXNbaV07Ci0gICAgICAgICAgICAgICAgZGVzdFRhYmxlLmJyYW5jaE9mZnNldHMg
PSBzb3VyY2VUYWJsZS5icmFuY2hPZmZzZXRzOwotICAgICAgICAgICAgICAgIGRlc3RUYWJsZS5t
aW4gPSBzb3VyY2VUYWJsZS5taW47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICB9CiAK
ICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1l
bnRzLgpAQCAtMjExOSwxMyArMjEwNyw5IEBAIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdChj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTaHJpbmtNb2RlIHNocmlua01vZGUpCiAgICAgaWYg
KHNocmlua01vZGUgPT0gU2hyaW5rTW9kZTo6RWFybHlTaHJpbmspCiAgICAgICAgIG1fY29uc3Rh
bnRSZWdpc3RlcnMuc2hyaW5rVG9GaXQoKTsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNocmlu
a01vZGUpOwogICAgIG1fY29uc3RhbnRSZWdpc3RlcnMuc2hyaW5rVG9GaXQoKTsKICNlbmRpZgot
Ci0gICAgaWYgKHNocmlua01vZGUgPT0gU2hyaW5rTW9kZTo6RWFybHlTaHJpbmspIHsKLSAgICAg
ICAgaWYgKG1fcmFyZURhdGEpCi0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBU
YWJsZXMuc2hyaW5rVG9GaXQoKTsKLSAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBi
ZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2Ug
dGFibGVzLgogfQogCiAjaWYgRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAppbmRleCA2ZjgwMDQ5NDk1MmE5MjA3MDdmNjRjMDlmZjBmMzMyZmMw
ODA5ODA2Li4zMTFmNjU0MWEzZWMwN2NjMDVkMGViYzNmN2JiMzc4M2I1ODdlMGVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0yNzgsNiArMjc4LDcg
QEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFNlbnRpbmVsTGlu
a2VkTGlzdDxDYWxsTGlua0luZm8sIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+
PiBtX2luY29taW5nQ2FsbHM7CiAgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxQb2x5bW9ycGhp
Y0NhbGxOb2RlLCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8UG9seW1vcnBoaWNDYWxsTm9kZT4+IG1f
aW5jb21pbmdQb2x5bW9ycGhpY0NhbGxzOwogICAgICAgICBGaXhlZFZlY3RvcjxSYXJlQ2FzZVBy
b2ZpbGU+IG1fcmFyZUNhc2VQcm9maWxlczsKKyAgICAgICAgRml4ZWRWZWN0b3I8U2ltcGxlSnVt
cFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIEZpeGVkVmVjdG9yPFN0cmluZ0p1
bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UENUb0NvZGVPcmlnaW5NYXA+IG1fcGNUb0NvZGVPcmlnaW5NYXA7CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwpA
QCAtNjEzLDIxICs2MTQsMTUgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAK
ICAgICAvLyBKdW1wIFRhYmxlcwogCi0gICAgc2l6ZV90IG51bWJlck9mU3dpdGNoSnVtcFRhYmxl
cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBU
YWJsZXMuc2l6ZSgpIDogMDsgfQotICAgIFNpbXBsZUp1bXBUYWJsZSYgc3dpdGNoSnVtcFRhYmxl
KGludCB0YWJsZUluZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9y
YXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9Ci0gICAgdm9pZCBjbGVh
clN3aXRjaEp1bXBUYWJsZXMoKQotICAgIHsKLSAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMu
Y2xlYXIoKTsKLSAgICB9Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgdm9pZCBhZGRTd2l0Y2hK
dW1wVGFibGVGcm9tUHJvZmlsZWRDb2RlQmxvY2soU2ltcGxlSnVtcFRhYmxlJiBwcm9maWxlZCkK
KyNpZiBFTkFCTEUoSklUKQorICAgIFNpbXBsZUp1bXBUYWJsZSYgc3dpdGNoSnVtcFRhYmxlKGlu
dCB0YWJsZUluZGV4KQogICAgIHsKLSAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgp
OwotICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKHByb2ZpbGVk
LmNsb25lTm9uSklUUGFydCgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9qaXREYXRhKTsK
KyAgICAgICAgcmV0dXJuIG1faml0RGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhd
OwogICAgIH0KICNlbmRpZgorICAgIHNpemVfdCBudW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRh
YmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5udW1iZXJPZlVubGlua2VkU3dp
dGNoSnVtcFRhYmxlcygpOyB9CisgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVu
bGlua2VkU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IHJldHVybiBtX3VubGlua2Vk
Q29kZS0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7IH0KIAogI2lmIEVOQUJM
RShKSVQpCiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRh
YmxlSW5kZXgpCkBAIC04ODcsOSArODgyLDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICBWZWN0b3I8SGFuZGxlckluZm8+IG1fZXhjZXB0
aW9uSGFuZGxlcnM7CiAKLSAgICAgICAgLy8gSnVtcCBUYWJsZXMKLSAgICAgICAgVmVjdG9yPFNp
bXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwotCiAgICAgICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyQnVmZmVyPj4gbV9jYXRj
aFByb2ZpbGVzOwogCiAgICAgICAgIERpcmVjdEV2YWxDb2RlQ2FjaGUgbV9kaXJlY3RFdmFsQ29k
ZUNhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBU
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcApp
bmRleCBlMjJhZDAzYzljZTQxZDZhZjU4MTdmMzFkNjRmZWE1YmM3MDdkNmYwLi40NDk1MmQ5MWY5
NzE3MTY4NTlmMjJmMjQ5ZTUwNDkyMTY1ODMwZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcApAQCAtMzQsMTQgKzM0LDQgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWludDMyX3QgU2ltcGxlSnVtcFRhYmxlOjpvZmZzZXRGb3JWYWx1ZShpbnQzMl90
IHZhbHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpCi17Ci0gICAgaWYgKHZhbHVlID49IG1pbiAm
JiBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUgLSBtaW4pIDwgYnJhbmNoT2Zmc2V0cy5zaXpl
KCkpIHsKLSAgICAgICAgaW50MzJfdCBvZmZzZXQgPSBicmFuY2hPZmZzZXRzW3ZhbHVlIC0gbWlu
XTsKLSAgICAgICAgaWYgKG9mZnNldCkKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXQ7Ci0gICAg
fQotICAgIHJldHVybiBkZWZhdWx0T2Zmc2V0OyAgICAgICAgCi19Ci0KIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oCmluZGV4IGU3
NmI1MDA1MDk2NmEyOTllOTNjYTNjZWM3ZWIzMzJjM2M5OTU3NGMuLjVkOGU5Njg3NTU4OTgyODEz
YjU2NjM0OWVkYTgxZjdhZjNiZjlkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9KdW1wVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSnVtcFRhYmxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKQEAgLTUyLDQ5ICs1MiwyNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogI2Vu
ZGlmCiAKLSAgICBzdHJ1Y3QgU2ltcGxlSnVtcFRhYmxlIHsKLSAgICAgICAgLy8gRklYTUU6IFRo
ZSB0d28gVmVjdG9ycyBjYW4gYmUgY29tYmluZWQgaW50byBvbmUgVmVjdG9yPE9mZnNldExvY2F0
aW9uPgotICAgICAgICBGaXhlZFZlY3RvcjxpbnQzMl90PiBicmFuY2hPZmZzZXRzOwotICAgICAg
ICBpbnQzMl90IG1pbiB7IElOVDMyX01JTiB9OwogI2lmIEVOQUJMRShKSVQpCi0gICAgICAgIFZl
Y3RvcjxDb2RlTG9jYXRpb25MYWJlbDxKU1N3aXRjaFB0clRhZz4+IGN0aU9mZnNldHM7Ci0gICAg
ICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTU3dpdGNoUHRyVGFnPiBjdGlEZWZhdWx0OwotI2VuZGlm
CisgICAgc3RydWN0IFNpbXBsZUp1bXBUYWJsZSB7CisgICAgICAgIEZpeGVkVmVjdG9yPENvZGVM
b2NhdGlvbkxhYmVsPEpTU3dpdGNoUHRyVGFnPj4gbV9jdGlPZmZzZXRzOworICAgICAgICBDb2Rl
TG9jYXRpb25MYWJlbDxKU1N3aXRjaFB0clRhZz4gbV9jdGlEZWZhdWx0OwogCi0jaWYgRU5BQkxF
KERGR19KSVQpCi0gICAgICAgIC8vIEpJVCBwYXJ0IGNhbiBiZSBsYXRlciBleHBhbmRlZCB3aXRo
b3V0IHRha2luZyBhIGxvY2sgd2hpbGUgbm9uLUpJVCBwYXJ0IGlzIHN0YWJsZSBhZnRlciBDb2Rl
QmxvY2sgaXMgZmluYWxpemVkLgotICAgICAgICBTaW1wbGVKdW1wVGFibGUgY2xvbmVOb25KSVRQ
YXJ0KCkgY29uc3QKKyAgICAgICAgdm9pZCBlbnN1cmVDVElUYWJsZShjb25zdCBVbmxpbmtlZFNp
bXBsZUp1bXBUYWJsZSYgdW5saW5rZWRUYWJsZSkKICAgICAgICAgewotICAgICAgICAgICAgU2lt
cGxlSnVtcFRhYmxlIHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC5icmFuY2hPZmZzZXRzID0g
YnJhbmNoT2Zmc2V0czsKLSAgICAgICAgICAgIHJlc3VsdC5taW4gPSBtaW47Ci0gICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgaWYgKCFpc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9jdGlPZmZzZXRzID0gRml4ZWRWZWN0b3I8Q29k
ZUxvY2F0aW9uTGFiZWw8SlNTd2l0Y2hQdHJUYWc+Pih1bmxpbmtlZFRhYmxlLm1fYnJhbmNoT2Zm
c2V0cy5zaXplKCkpOwogICAgICAgICB9Ci0jZW5kaWYKIAotICAgICAgICBpbnQzMl90IG9mZnNl
dEZvclZhbHVlKGludDMyX3QgdmFsdWUsIGludDMyX3QgZGVmYXVsdE9mZnNldCk7Ci0jaWYgRU5B
QkxFKEpJVCkKLSAgICAgICAgdm9pZCBlbnN1cmVDVElUYWJsZSgpCisgICAgICAgIGlubGluZSBD
b2RlTG9jYXRpb25MYWJlbDxKU1N3aXRjaFB0clRhZz4gY3RpRm9yVmFsdWUoaW50MzJfdCBtaW4s
IGludDMyX3QgdmFsdWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChjdGlP
ZmZzZXRzLmlzRW1wdHkoKSB8fCBjdGlPZmZzZXRzLnNpemUoKSA9PSBicmFuY2hPZmZzZXRzLnNp
emUoKSk7Ci0gICAgICAgICAgICBjdGlPZmZzZXRzLmdyb3coYnJhbmNoT2Zmc2V0cy5zaXplKCkp
OworICAgICAgICAgICAgaWYgKHZhbHVlID49IG1pbiAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
dmFsdWUgLSBtaW4pIDwgbV9jdGlPZmZzZXRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbV9jdGlPZmZzZXRzW3ZhbHVlIC0gbWluXTsKKyAgICAgICAgICAgIHJldHVybiBtX2N0aURl
ZmF1bHQ7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlubGluZSBDb2RlTG9jYXRpb25M
YWJlbDxKU1N3aXRjaFB0clRhZz4gY3RpRm9yVmFsdWUoaW50MzJfdCB2YWx1ZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKHZhbHVlID49IG1pbiAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
dmFsdWUgLSBtaW4pIDwgY3RpT2Zmc2V0cy5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGN0aU9mZnNldHNbdmFsdWUgLSBtaW5dOwotICAgICAgICAgICAgcmV0dXJuIGN0aURlZmF1bHQ7
Ci0gICAgICAgIH0KLSNlbmRpZgogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgICAgIHZvaWQg
Y2xlYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBicmFuY2hPZmZzZXRzID0gRml4ZWRWZWN0
b3I8aW50MzJfdD4oKTsKLSAgICAgICAgICAgIGN0aU9mZnNldHMuY2xlYXIoKTsKLSAgICAgICAg
fQotI2VuZGlmCisgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fY3RpT2Zm
c2V0cy5pc0VtcHR5KCk7IH0KICAgICB9OworI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHNJbmxpbmVzLmgKaW5kZXggM2JkYTliYjQwOTdkNmNhMjliYmM5YzhlODJiNDc3ZTVi
N2YzMzZiOS4uMzA2YzliNGM1ZDg5MDlhNWM4MzdkYWE2YTNlM2EwZTQ3NjZlZDNlYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzSW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNjEsMTcgKzYxLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IENBU0VfT1AoT3BKYmVsb3dlcSkgXAogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbTogeyBcCiAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BTd2l0Y2hJbW0+KCk7IFwKLSAg
ICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShieXRlY29kZS5t
X3RhYmxlSW5kZXgpOyBcCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9m
ZnNldHMuc2l6ZSgpOyBpLS07KSBcCi0gICAgICAgICAgICBTV0lUQ0hfQ0FTRSh0YWJsZS5icmFu
Y2hPZmZzZXRzW2ldKTsgXAorICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+dW5saW5r
ZWRTd2l0Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KTsgXAorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSB0YWJsZS5tX2JyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KSBcCisgICAg
ICAgICAgICBTV0lUQ0hfQ0FTRSh0YWJsZS5tX2JyYW5jaE9mZnNldHNbaV0pOyBcCiAgICAgICAg
IFNXSVRDSF9ERUZBVUxUX09GRlNFVChPcFN3aXRjaEltbSk7IFwKICAgICAgICAgYnJlYWs7IFwK
ICAgICB9IFwKICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7IFwKICAgICAgICAgYXV0byBieXRl
Y29kZSA9IGluc3RydWN0aW9uLT5hczxPcFN3aXRjaENoYXI+KCk7IFwKLSAgICAgICAgYXV0byYg
dGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShieXRlY29kZS5tX3RhYmxlSW5kZXgp
OyBcCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgp
OyBpLS07KSBcCi0gICAgICAgICAgICBTV0lUQ0hfQ0FTRSh0YWJsZS5icmFuY2hPZmZzZXRzW2ld
KTsgXAorICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+dW5saW5rZWRTd2l0Y2hKdW1w
VGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KTsgXAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSB0YWJsZS5tX2JyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KSBcCisgICAgICAgICAgICBTV0lU
Q0hfQ0FTRSh0YWJsZS5tX2JyYW5jaE9mZnNldHNbaV0pOyBcCiAgICAgICAgIFNXSVRDSF9ERUZB
VUxUX09GRlNFVChPcFN3aXRjaENoYXIpOyBcCiAgICAgICAgIGJyZWFrOyBcCiAgICAgfSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
CmluZGV4IGFkNTcxNzMwODQ0MzQ3ZjM1YTk4ZmU2YjA5YzgzMDM4NTM2N2RmMTAuLjNhYTU2MTNl
N2VkMTczYTY3ZjQwMGZjNGUwMmE1NTBiMmM4ODdiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC05NSwxNCArOTUsMjMg
QEAgc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlIHsKIH07CiAKIHN0cnVjdCBVbmxpbmtl
ZFNpbXBsZUp1bXBUYWJsZSB7Ci0gICAgRml4ZWRWZWN0b3I8aW50MzJfdD4gYnJhbmNoT2Zmc2V0
czsKLSAgICBpbnQzMl90IG1pbjsKKyAgICBGaXhlZFZlY3RvcjxpbnQzMl90PiBtX2JyYW5jaE9m
ZnNldHM7CisgICAgaW50MzJfdCBtX21pbjsKKworICAgIGlubGluZSBpbnQzMl90IG9mZnNldEZv
clZhbHVlKGludDMyX3QgdmFsdWUsIGludDMyX3QgZGVmYXVsdE9mZnNldCkgY29uc3QKKyAgICB7
CisgICAgICAgIGlmICh2YWx1ZSA+PSBtX21pbiAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFs
dWUgLSBtX21pbikgPCBtX2JyYW5jaE9mZnNldHMuc2l6ZSgpKSB7CisgICAgICAgICAgICBpbnQz
Ml90IG9mZnNldCA9IG1fYnJhbmNoT2Zmc2V0c1t2YWx1ZSAtIG1fbWluXTsKKyAgICAgICAgICAg
IGlmIChvZmZzZXQpCisgICAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gZGVmYXVsdE9mZnNldDsKKyAgICB9CiAKLSAgICBpbnQzMl90IG9mZnNl
dEZvclZhbHVlKGludDMyX3QgdmFsdWUsIGludDMyX3QgZGVmYXVsdE9mZnNldCk7CiAgICAgdm9p
ZCBhZGQoaW50MzJfdCBrZXksIGludDMyX3Qgb2Zmc2V0KQogICAgIHsKLSAgICAgICAgaWYgKCFi
cmFuY2hPZmZzZXRzW2tleV0pCi0gICAgICAgICAgICBicmFuY2hPZmZzZXRzW2tleV0gPSBvZmZz
ZXQ7CisgICAgICAgIGlmICghbV9icmFuY2hPZmZzZXRzW2tleV0pCisgICAgICAgICAgICBtX2Jy
YW5jaE9mZnNldHNba2V5XSA9IG9mZnNldDsKICAgICB9CiB9OwogCkBAIC0xMTksNiArMTI4LDgg
QEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKKyAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworCiAgICAgZW51bSB7IENhbGxGdW5jdGlvbiwgQXBwbHlGdW5j
dGlvbiB9OwogCiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nv
bnN0cnVjdG9yOyB9CkBAIC0xOTYsMTEgKzIwNywxMSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9j
ayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgLy8gSnVtcCBUYWJsZXMKIAotICAgIHNpemVfdCBu
dW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9y
YXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNpemUoKSA6IDA7IH0KLSAgICBVbmxpbmtlZFNp
bXBsZUp1bXBUYWJsZSYgc3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IEFTU0VSVCht
X3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlc1t0YWJsZUlu
ZGV4XTsgfQorICAgIHNpemVfdCBudW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX3VubGlua2VkU3dpdGNoSnVt
cFRhYmxlcy5zaXplKCkgOiAwOyB9CisgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUm
IHVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSBjb25zdCB7IEFTU0VSVCht
X3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVz
W3RhYmxlSW5kZXhdOyB9CiAKICAgICBzaXplX3QgbnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRj
aEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9yYXJlRGF0YS0+bV91
bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpIDogMDsgfQotICAgIGNvbnN0IFVu
bGlua2VkU3RyaW5nSnVtcFRhYmxlJiB1bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQg
dGFibGVJbmRleCkgeyBBU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3Vu
bGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQorICAgIGNvbnN0IFVu
bGlua2VkU3RyaW5nSnVtcFRhYmxlJiB1bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQg
dGFibGVJbmRleCkgY29uc3QgeyBBU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRh
LT5tX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQogCiAgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRGVjbChpbnQgaW5kZXgpIHsgcmV0
dXJuIG1fZnVuY3Rpb25EZWNsc1tpbmRleF0uZ2V0KCk7IH0KICAgICBzaXplX3QgbnVtYmVyT2ZG
dW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV9mdW5jdGlvbkRlY2xzLnNpemUoKTsgfQpAQCAtNDEw
LDcgKzQyMSw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgICAgIEZpeGVkVmVjdG9yPFVubGlua2VkSGFuZGxlckluZm8+IG1fZXhjZXB0aW9uSGFuZGxl
cnM7CiAKICAgICAgICAgLy8gSnVtcCBUYWJsZXMKLSAgICAgICAgRml4ZWRWZWN0b3I8VW5saW5r
ZWRTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKKyAgICAgICAgRml4ZWRWZWN0
b3I8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IG1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzOwog
ICAgICAgICBGaXhlZFZlY3RvcjxVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZT4gbV91bmxpbmtlZFN0
cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKICAgICAgICAgRml4ZWRWZWN0b3I8RXhwcmVzc2lvblJh
bmdlSW5mbzo6RmF0UG9zaXRpb24+IG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrR2VuZXJhdG9yLmNwcAppbmRleCBmOTZjNjAwMjZjNmYyZGVjODY4M2FkYTE2ZGRhZTdl
ZmE1MGE3NWM1Li5iM2ZlNjc2ZWQwNzdlNjlmYTIwZjg3NDUzNDkzYTRlZGE3MGVkNzNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgVW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3I6OmZpbmFsaXplKHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVh
bT4gaW5zCiAKICAgICAgICAgaWYgKCFtX2NvZGVCbG9jay0+bV9yYXJlRGF0YSkgewogICAgICAg
ICAgICAgaWYgKCFtX2V4Y2VwdGlvbkhhbmRsZXJzLmlzRW1wdHkoKQotICAgICAgICAgICAgICAg
IHx8ICFtX3N3aXRjaEp1bXBUYWJsZXMuaXNFbXB0eSgpCisgICAgICAgICAgICAgICAgfHwgIW1f
dW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzLmlzRW1wdHkoKQogICAgICAgICAgICAgICAgIHx8ICFt
X3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5pc0VtcHR5KCkKICAgICAgICAgICAgICAg
ICB8fCAhbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucy5pc0VtcHR5KCkKICAgICAgICAgICAg
ICAgICB8fCAhbV90eXBlUHJvZmlsZXJJbmZvTWFwLmlzRW1wdHkoKQpAQCAtMTQzLDcgKzE0Myw3
IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmZpbmFsaXplKHN0ZDo6dW5pcXVl
X3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gaW5zCiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fY29k
ZUJsb2NrLT5tX3JhcmVEYXRhKSB7CiAgICAgICAgICAgICBtX2NvZGVCbG9jay0+bV9yYXJlRGF0
YS0+bV9leGNlcHRpb25IYW5kbGVycyA9IFdURk1vdmUobV9leGNlcHRpb25IYW5kbGVycyk7Ci0g
ICAgICAgICAgICBtX2NvZGVCbG9jay0+bV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0g
V1RGTW92ZShtX3N3aXRjaEp1bXBUYWJsZXMpOworICAgICAgICAgICAgbV9jb2RlQmxvY2stPm1f
cmFyZURhdGEtPm1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzID0gV1RGTW92ZShtX3VubGlua2Vk
U3dpdGNoSnVtcFRhYmxlcyk7CiAgICAgICAgICAgICBtX2NvZGVCbG9jay0+bV9yYXJlRGF0YS0+
bV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBXVEZNb3ZlKG1fdW5saW5rZWRTdHJp
bmdTd2l0Y2hKdW1wVGFibGVzKTsKICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5tX3JhcmVEYXRh
LT5tX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zID0gV1RGTW92ZShtX2V4cHJlc3Npb25JbmZv
RmF0UG9zaXRpb25zKTsKICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5tX3JhcmVEYXRhLT5tX3R5
cGVQcm9maWxlckluZm9NYXAgPSBXVEZNb3ZlKG1fdHlwZVByb2ZpbGVySW5mb01hcCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvci5oCmluZGV4IDQ5MzBhNTY5MWRmN2JjZTlmNDU5NGEzOGNkYTA3YTI3NGY3
ZTc2MzEuLjQ5YWJiYWExYzczYjY1MjUwYWM1ZmRlOTUyMjMxODEwODhjNjU2ZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTkwLDkgKzkwLDkgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3IgewogICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVy
biBtX2p1bXBUYXJnZXRzW2luZGV4XTsgfQogICAgIHVuc2lnbmVkIGxhc3RKdW1wVGFyZ2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KIAotICAgIHNpemVfdCBudW1i
ZXJPZlN3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3N3aXRjaEp1bXBUYWJsZXMu
c2l6ZSgpOyB9Ci0gICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGFkZFN3aXRjaEp1bXBUYWJs
ZSgpIHsgbV9zd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSgp
KTsgcmV0dXJuIG1fc3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KLSAgICBVbmxpbmtlZFNpbXBs
ZUp1bXBUYWJsZSYgc3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IHJldHVybiBtX3N3
aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KKyAgICBzaXplX3QgbnVtYmVyT2ZVbmxpbmtl
ZFN3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkU3dpdGNoSnVtcFRh
Ymxlcy5zaXplKCk7IH0KKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgYWRkVW5saW5rZWRT
d2l0Y2hKdW1wVGFibGUoKSB7IG1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChVbmxp
bmtlZFNpbXBsZUp1bXBUYWJsZSgpKTsgcmV0dXJuIG1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVz
Lmxhc3QoKTsgfQorICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFN3aXRjaEp1
bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyByZXR1cm4gbV91bmxpbmtlZFN3aXRjaEp1bXBUYWJs
ZXNbdGFibGVJbmRleF07IH0KIAogICAgIHNpemVfdCBudW1iZXJPZlVubGlua2VkU3RyaW5nU3dp
dGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1w
VGFibGVzLnNpemUoKTsgfQogICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBhZGRVbmxpbmtl
ZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgbV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJs
ZXMuYXBwZW5kKFVubGlua2VkU3RyaW5nSnVtcFRhYmxlKCkpOyByZXR1cm4gbV91bmxpbmtlZFN0
cmluZ1N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CkBAIC0yMTQsNyArMjE0LDcgQEAgY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IgewogICAgIE91dE9mTGluZUp1bXBUYXJnZXRzIG1f
b3V0T2ZMaW5lSnVtcFRhcmdldHM7CiAgICAgLy8gSW4gUmFyZURhdGEuCiAgICAgVmVjdG9yPFVu
bGlua2VkSGFuZGxlckluZm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7Ci0gICAgVmVjdG9yPFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CisgICAgVmVjdG9yPFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlPiBtX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlczsKICAgICBWZWN0
b3I8VW5saW5rZWRTdHJpbmdKdW1wVGFibGU+IG1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzOwogICAgIFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvOjpGYXRQb3NpdGlvbj4gbV9leHBy
ZXNzaW9uSW5mb0ZhdFBvc2l0aW9uczsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBVbmxpbmtlZENv
ZGVCbG9jazo6UmFyZURhdGE6OlR5cGVQcm9maWxlckV4cHJlc3Npb25SYW5nZT4gbV90eXBlUHJv
ZmlsZXJJbmZvTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA4NjUzMjhkYWRkOWM2NDQ5NGMwNjVk
YzE3M2U4YzNiMDEwNjAzMGNhLi5hMmJjNjc1ZTAzZjM3ZTI2MDhiYjFjNzk4ODljNzE5YTM2NjA2
ZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBad2FyaWNoIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgog
ICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSwgUy5MLgogICoKQEAgLTQwMzYsMTQgKzQwMzYs
MTQgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5Td2l0Y2goUmVnaXN0ZXJJRCogc2Ny
dXRpbmVlUmVnaXN0ZXIsIFN3aXRjaEluZm86OlMKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICBjYXNlIFN3aXRjaEluZm86OlN3aXRjaEltbWVkaWF0ZTogewotICAgICAgICBzaXplX3QgdGFi
bGVJbmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKLSAgICAg
ICAgbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOworICAgICAgICBzaXplX3QgdGFi
bGVJbmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygp
OworICAgICAgICBtX2NvZGVCbG9jay0+YWRkVW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoKTsKICAg
ICAgICAgT3BTd2l0Y2hJbW06OmVtaXQodGhpcywgdGFibGVJbmRleCwgQm91bmRMYWJlbCgpLCBz
Y3J1dGluZWVSZWdpc3Rlcik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFN3aXRj
aEluZm86OlN3aXRjaENoYXJhY3RlcjogewotICAgICAgICBzaXplX3QgdGFibGVJbmRleCA9IG1f
Y29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKLSAgICAgICAgbV9jb2RlQmxv
Y2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOworICAgICAgICBzaXplX3QgdGFibGVJbmRleCA9IG1f
Y29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpOworICAgICAgICBt
X2NvZGVCbG9jay0+YWRkVW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoKTsKICAgICAgICAgT3BTd2l0
Y2hDaGFyOjplbWl0KHRoaXMsIHRhYmxlSW5kZXgsIEJvdW5kTGFiZWwoKSwgc2NydXRpbmVlUmVn
aXN0ZXIpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00MDkxLDkgKzQwOTEsOSBAQCBzdGF0
aWMgdm9pZCBwcmVwYXJlSnVtcFRhYmxlRm9yU3dpdGNoKAogICAgIGNvbnN0IFZlY3RvcjxSZWY8
TGFiZWw+LCA4PiYgbGFiZWxzLCBFeHByZXNzaW9uTm9kZSoqIG5vZGVzLCBpbnQzMl90IG1pbiwg
aW50MzJfdCBtYXgsCiAgICAgaW50MzJfdCAoKmtleUdldHRlcikoRXhwcmVzc2lvbk5vZGUqLCBp
bnQzMl90IG1pbiwgaW50MzJfdCBtYXgpKQogewotICAgIGp1bXBUYWJsZS5taW4gPSBtaW47Ci0g
ICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMgPSBGaXhlZFZlY3RvcjxpbnQzMl90PihtYXggLSBt
aW4gKyAxKTsKLSAgICBzdGQ6OmZpbGwoanVtcFRhYmxlLmJyYW5jaE9mZnNldHMuYmVnaW4oKSwg
anVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZW5kKCksIDApOworICAgIGp1bXBUYWJsZS5tX21pbiA9
IG1pbjsKKyAgICBqdW1wVGFibGUubV9icmFuY2hPZmZzZXRzID0gRml4ZWRWZWN0b3I8aW50MzJf
dD4obWF4IC0gbWluICsgMSk7CisgICAgc3RkOjpmaWxsKGp1bXBUYWJsZS5tX2JyYW5jaE9mZnNl
dHMuYmVnaW4oKSwganVtcFRhYmxlLm1fYnJhbmNoT2Zmc2V0cy5lbmQoKSwgMCk7CiAgICAgZm9y
ICh1aW50MzJfdCBpID0gMDsgaSA8IGNsYXVzZUNvdW50OyArK2kpIHsKICAgICAgICAgLy8gV2Un
cmUgZW1pdHRpbmcgdGhpcyBhZnRlciB0aGUgY2xhdXNlIGxhYmVscyBzaG91bGQgaGF2ZSBiZWVu
IGZpeGVkLCBzbyAKICAgICAgICAgLy8gdGhlIGxhYmVscyBzaG91bGQgbm90IGJlICJmb3J3YXJk
IiByZWZlcmVuY2VzCkBAIC00MTI5LDcgKzQxMjksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbmRTd2l0Y2godWludDMyX3QgY2xhdXNlQ291bnQsIGNvbnN0IFZlY3RvcjxSZWY8TGFiZWw+
LAogICAgICAgICAgICAgcmV0dXJuIEJvdW5kTGFiZWwoKTsKICAgICAgICAgfSk7CiAKLSAgICAg
ICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5zd2l0
Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KTsKKyAgICAgICAgVW5saW5rZWRTaW1w
bGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT51bmxpbmtlZFN3aXRjaEp1bXBU
YWJsZShieXRlY29kZS5tX3RhYmxlSW5kZXgpOwogICAgICAgICBwcmVwYXJlSnVtcFRhYmxlRm9y
U3dpdGNoKAogICAgICAgICAgICAganVtcFRhYmxlLCBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0
LCBjbGF1c2VDb3VudCwgbGFiZWxzLCBub2RlcywgbWluLCBtYXgsCiAgICAgICAgICAgICBzd2l0
Y2hJbmZvLnN3aXRjaFR5cGUgPT0gU3dpdGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDNlMzA5
Y2Q5MTI1MWQ3OWQ0MjFmZGMyMjUxZmU3MzFlZjcxZTcwYjAuLmI3M2JlYTFjOTZjMmFjZDM2YWNh
ZmYyZTExMjgyNGRiNjY3NmUxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjg3MiwxNCArNjg3MiwxNCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgZGF0YS5r
aW5kID0gU3dpdGNoSW1tOwogICAgICAgICAgICAgZGF0YS5zd2l0Y2hUYWJsZUluZGV4ID0gbV9p
bmxpbmVTdGFja1RvcC0+bV9zd2l0Y2hSZW1hcFtieXRlY29kZS5tX3RhYmxlSW5kZXhdOwogICAg
ICAgICAgICAgZGF0YS5mYWxsVGhyb3VnaC5zZXRCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4
Lm9mZnNldCgpICsganVtcFRhcmdldChieXRlY29kZS5tX2RlZmF1bHRPZmZzZXQpKTsKLSAgICAg
ICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRh
YmxlKGRhdGEuc3dpdGNoVGFibGVJbmRleCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
ICAgIGlmICghdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSkKKyAgICAgICAgICAgIGNvbnN0IFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9ncmFwaC51bmxpbmtlZFN3aXRj
aEp1bXBUYWJsZShkYXRhLnN3aXRjaFRhYmxlSW5kZXgpOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHVubGlua2VkVGFibGUubV9icmFuY2hPZmZzZXRzLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICAgICAgaWYgKCF1bmxpbmtlZFRhYmxlLm1fYnJhbmNoT2Zmc2V0c1tp
XSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgdW5zaWdu
ZWQgdGFyZ2V0ID0gbV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyB0YWJsZS5icmFuY2hPZmZzZXRz
W2ldOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldCA9IG1fY3VycmVudEluZGV4Lm9m
ZnNldCgpICsgdW5saW5rZWRUYWJsZS5tX2JyYW5jaE9mZnNldHNbaV07CiAgICAgICAgICAgICAg
ICAgaWYgKHRhcmdldCA9PSBkYXRhLmZhbGxUaHJvdWdoLmJ5dGVjb2RlSW5kZXgoKSkKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgZGF0YS5jYXNlcy5hcHBl
bmQoU3dpdGNoQ2FzZTo6d2l0aEJ5dGVjb2RlSW5kZXgobV9ncmFwaC5mcmVlemUoanNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4odGFibGUubWluICsgaSkpKSwgdGFyZ2V0KSk7CisgICAgICAg
ICAgICAgICAgZGF0YS5jYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZTo6d2l0aEJ5dGVjb2RlSW5kZXgo
bV9ncmFwaC5mcmVlemUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odW5saW5rZWRUYWJs
ZS5tX21pbiArIGkpKSksIHRhcmdldCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYWRk
VG9HcmFwaChTd2l0Y2gsIE9wSW5mbygmZGF0YSksIGdldChieXRlY29kZS5tX3NjcnV0aW5lZSkp
OwogICAgICAgICAgICAgZmx1c2hJZlRlcm1pbmFsKGRhdGEpOwpAQCAtNjg5MiwxNSArNjg5Miwx
NSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAg
ICAgICAgICAgZGF0YS5raW5kID0gU3dpdGNoQ2hhcjsKICAgICAgICAgICAgIGRhdGEuc3dpdGNo
VGFibGVJbmRleCA9IG1faW5saW5lU3RhY2tUb3AtPm1fc3dpdGNoUmVtYXBbYnl0ZWNvZGUubV90
YWJsZUluZGV4XTsKICAgICAgICAgICAgIGRhdGEuZmFsbFRocm91Z2guc2V0Qnl0ZWNvZGVJbmRl
eChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIGp1bXBUYXJnZXQoYnl0ZWNvZGUubV9kZWZhdWx0
T2Zmc2V0KSk7Ci0gICAgICAgICAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0gbV9jb2RlQmxv
Y2stPnN3aXRjaEp1bXBUYWJsZShkYXRhLnN3aXRjaFRhYmxlSW5kZXgpOwotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgICAgICAgICBpZiAoIXRhYmxlLmJyYW5jaE9mZnNldHNbaV0pCisgICAgICAg
ICAgICBjb25zdCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgdW5saW5rZWRUYWJsZSA9IG1fZ3Jh
cGgudW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoZGF0YS5zd2l0Y2hUYWJsZUluZGV4KTsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1bmxpbmtlZFRhYmxlLm1fYnJhbmNoT2Zm
c2V0cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghdW5saW5rZWRUYWJsZS5t
X2JyYW5jaE9mZnNldHNbaV0pCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHRhcmdldCA9IG1fY3VycmVudEluZGV4Lm9mZnNldCgpICsgdGFi
bGUuYnJhbmNoT2Zmc2V0c1tpXTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXQgPSBt
X2N1cnJlbnRJbmRleC5vZmZzZXQoKSArIHVubGlua2VkVGFibGUubV9icmFuY2hPZmZzZXRzW2ld
OwogICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gZGF0YS5mYWxsVGhyb3VnaC5ieXRlY29k
ZUluZGV4KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAg
IGRhdGEuY2FzZXMuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBTd2l0Y2hDYXNlOjp3aXRo
Qnl0ZWNvZGVJbmRleChMYXp5SlNWYWx1ZTo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHRhYmxlLm1p
biArIGkpLCB0YXJnZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgU3dpdGNoQ2FzZTo6d2l0aEJ5
dGVjb2RlSW5kZXgoTGF6eUpTVmFsdWU6OnNpbmdsZUNoYXJhY3RlclN0cmluZyh1bmxpbmtlZFRh
YmxlLm1fbWluICsgaSksIHRhcmdldCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYWRk
VG9HcmFwaChTd2l0Y2gsIE9wSW5mbygmZGF0YSksIGdldChieXRlY29kZS5tX3NjcnV0aW5lZSkp
OwogICAgICAgICAgICAgZmx1c2hJZlRlcm1pbmFsKGRhdGEpOwpAQCAtODUyNiwxNyArODUyNiwx
MSBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgK
ICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmtpbmQgPSBraW5kOwogICAgICAgICAKICAgICAg
ICAgbV9pZGVudGlmaWVyUmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVy
cygpKTsKLSAgICAgICAgbV9zd2l0Y2hSZW1hcC5yZXNpemUoY29kZUJsb2NrLT5udW1iZXJPZlN3
aXRjaEp1bXBUYWJsZXMoKSk7Ci0KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2Rl
QmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsgKytpKSB7CiAgICAgICAgICAgICBVbmlxdWVk
U3RyaW5nSW1wbCogcmVwID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGkpLmltcGwoKTsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGluZGV4ID0gYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGguaWRlbnRpZmll
cnMoKS5lbnN1cmUocmVwKTsKICAgICAgICAgICAgIG1faWRlbnRpZmllclJlbWFwW2ldID0gaW5k
ZXg7CiAgICAgICAgIH0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9j
ay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7ICsraSkgewotICAgICAgICAgICAgbV9zd2l0
Y2hSZW1hcFtpXSA9IGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hK
dW1wVGFibGVzKCk7Ci0gICAgICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPmFk
ZFN3aXRjaEp1bXBUYWJsZUZyb21Qcm9maWxlZENvZGVCbG9jayhjb2RlQmxvY2stPnN3aXRjaEp1
bXBUYWJsZShpKSk7Ci0gICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyBNYWNoaW5l
IGNvZGUgYmxvY2sgY2FzZS4KICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayA9PSBieXRlQ29kZVBh
cnNlci0+bV9jb2RlQmxvY2spOwpAQCAtODU0NywxMSArODU0MSwxNSBAQCBCeXRlQ29kZVBhcnNl
cjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgbV9pbmxpbmVD
YWxsRnJhbWUgPSBudWxscHRyOwogCiAgICAgICAgIG1faWRlbnRpZmllclJlbWFwLnJlc2l6ZShj
b2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7Ci0gICAgICAgIG1fc3dpdGNoUmVtYXAu
cmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCkpOwogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpOyAr
K2kpCiAgICAgICAgICAgICBtX2lkZW50aWZpZXJSZW1hcFtpXSA9IGk7Ci0gICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsg
KytpKQotICAgICAgICAgICAgbV9zd2l0Y2hSZW1hcFtpXSA9IGk7CisgICAgfQorCisgICAgbV9z
d2l0Y2hSZW1hcC5yZXNpemUoY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRh
YmxlcygpKTsKKyAgICBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX3N3aXRjaEp1bXBUYWJsZXMu
cmVzaXplKGJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLm1fc3dpdGNoSnVtcFRhYmxlcy5zaXplKCkg
KyBjb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzKCkpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTd2l0Y2hK
dW1wVGFibGVzKCk7ICsraSkgeworICAgICAgICBtX3N3aXRjaFJlbWFwW2ldID0gYnl0ZUNvZGVQ
YXJzZXItPm1fZ3JhcGgubV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpOworICAgICAg
ICBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcy5hcHBl
bmQoJmNvZGVCbG9jay0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoaSkpOwogICAgIH0KICAgICAK
ICAgICBtX2FyZ3VtZW50UG9zaXRpb25zLnJlc2l6ZShhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
c1dpdGhGaXh1cCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNGI4OGY0
MTNlYzI1OWIxMjVjMmY1OWNkNzc3OTQ3NDFmYjdhMzRhMS4uODUwNjVjNGVmZDM1YzQ4YzdmNWZk
YzFmY2U1YjFhNWVmY2E0Yzk4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApA
QCAtMTA2NCw2ICsxMDY0LDkgQEAgY2xhc3MgR3JhcGggZmluYWwgOiBwdWJsaWMgdmlydHVhbCBT
Y2FubmFibGUgewogICAgIFByZWZpeCYgcHJlZml4KCkgeyByZXR1cm4gbV9wcmVmaXg7IH0KICAg
ICB2b2lkIG5leHRQaGFzZSgpIHsgbV9wcmVmaXgucGhhc2VOdW1iZXIrKzsgfQogCisgICAgY29u
c3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2VkU3dpdGNoSnVtcFRhYmxlKHVuc2ln
bmVkIGluZGV4KSBjb25zdCB7IHJldHVybiAqbV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXNbaW5k
ZXhdOyB9CisgICAgU2ltcGxlSnVtcFRhYmxlJiBzd2l0Y2hKdW1wVGFibGUodW5zaWduZWQgaW5k
ZXgpIHsgcmV0dXJuIG1fc3dpdGNoSnVtcFRhYmxlc1tpbmRleF07IH0KKwogICAgIFN0YWNrQ2hl
Y2sgbV9zdGFja0NoZWNrZXI7CiAgICAgVk0mIG1fdm07CiAgICAgUGxhbiYgbV9wbGFuOwpAQCAt
MTA3NCw2ICsxMDc3LDkgQEAgY2xhc3MgR3JhcGggZmluYWwgOiBwdWJsaWMgdmlydHVhbCBTY2Fu
bmFibGUgewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMT4gbV9yb290czsKICAgICBWZWN0b3I8
RWRnZSwgMTY+IG1fdmFyQXJnQ2hpbGRyZW47CiAKKyAgICBWZWN0b3I8Y29uc3QgVW5saW5rZWRT
aW1wbGVKdW1wVGFibGUqPiBtX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlczsgLy8gVW5saW5rZWRT
aW1wbGVKdW1wVGFibGUgaXMga2VwdCBieSBVbmxpbmtlZENvZGVCbG9ja3MgcmV0YWluZWQgYnkg
YmFzZWxpbmUgQ29kZUJsb2NrcyBoYW5kbGVkIGJ5IERGRyAvIEZUTC4KKyAgICBWZWN0b3I8U2lt
cGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CisKICAgICBIYXNoTWFwPEVuY29kZWRK
U1ZhbHVlLCBGcm96ZW5WYWx1ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVI
YXNoVHJhaXRzPiBtX2Zyb3plblZhbHVlTWFwOwogICAgIEJhZzxGcm96ZW5WYWx1ZT4gbV9mcm96
ZW5WYWx1ZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAKaW5kZXggMzE4ZjAxNTZjMTRmZDg2MzYzZmIyOWZlOWVhZmZkMWMyOTg4M2YxNS4uMmI2ZTZj
MDdjZWY5MGUzN2ZmNzE3MzVmZjA0Mzk2N2ZiYTkwYTlmYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzYsNDIgKzE3NiwzOSBAQCB2b2lk
IEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgCiAgICAgbV9n
cmFwaC5yZWdpc3RlckZyb3plblZhbHVlcygpOwogCi0gICAgaWYgKG1fY29kZUJsb2NrLT5udW1i
ZXJPZlVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpKSB7CisgICAgaWYgKG1fY29kZUJs
b2NrLT5udW1iZXJPZlVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpIHx8ICFtX2dyYXBo
Lm1fc3dpdGNoSnVtcFRhYmxlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgbV9jb2RlQmxvY2stPmVu
c3VyZUpJVERhdGEobG9ja2VyKS5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBGaXhlZFZlY3Rv
cjxTdHJpbmdKdW1wVGFibGU+KG1fY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3RyaW5nU3dp
dGNoSnVtcFRhYmxlcygpKTsKKyAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5udW1iZXJPZlVubGlu
a2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpKQorICAgICAgICAgICAgbV9jb2RlQmxvY2stPmVu
c3VyZUpJVERhdGEobG9ja2VyKS5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBGaXhlZFZlY3Rv
cjxTdHJpbmdKdW1wVGFibGU+KG1fY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3RyaW5nU3dp
dGNoSnVtcFRhYmxlcygpKTsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fc3dpdGNoSnVtcFRhYmxl
cy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2NvZGVCbG9jay0+ZW5zdXJlSklURGF0YShsb2Nr
ZXIpLm1fc3dpdGNoSnVtcFRhYmxlcyA9IFdURk1vdmUobV9ncmFwaC5tX3N3aXRjaEp1bXBUYWJs
ZXMpOwogICAgIH0KIAotICAgIEJpdFZlY3RvciB1c2VkSnVtcFRhYmxlczsKICAgICBmb3IgKEJh
ZzxTd2l0Y2hEYXRhPjo6aXRlcmF0b3IgaXRlciA9IG1fZ3JhcGgubV9zd2l0Y2hEYXRhLmJlZ2lu
KCk7ICEhaXRlcjsgKytpdGVyKSB7CiAgICAgICAgIFN3aXRjaERhdGEmIGRhdGEgPSAqKml0ZXI7
Ci0gICAgICAgIGlmICghZGF0YS5kaWRVc2VKdW1wVGFibGUpCisgICAgICAgIGlmICghZGF0YS5k
aWRVc2VKdW1wVGFibGUpIHsKKyAgICAgICAgICAgIEFTU0VSVChkYXRhLmtpbmQgPT0gU3dpdGNo
U3RyaW5nIHx8IG1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoZGF0YS5zd2l0Y2hUYWJsZUlu
ZGV4KS5pc0VtcHR5KCkpOwogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGlmIChkYXRhLmtpbmQgPT0gU3dpdGNoU3RyaW5nKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIAogICAgICAgICBSRUxFQVNFX0FTU0VSVChkYXRhLmtpbmQgPT0g
U3dpdGNoSW1tIHx8IGRhdGEua2luZCA9PSBTd2l0Y2hDaGFyKTsKICAgICAgICAgCi0gICAgICAg
IHVzZWRKdW1wVGFibGVzLnNldChkYXRhLnN3aXRjaFRhYmxlSW5kZXgpOwotICAgICAgICBTaW1w
bGVKdW1wVGFibGUmIHRhYmxlID0gbV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShkYXRhLnN3
aXRjaFRhYmxlSW5kZXgpOwotICAgICAgICB0YWJsZS5jdGlEZWZhdWx0ID0gbGlua0J1ZmZlci5s
b2NhdGlvbk9mPEpTU3dpdGNoUHRyVGFnPihtX2Jsb2NrSGVhZHNbZGF0YS5mYWxsVGhyb3VnaC5i
bG9jay0+aW5kZXhdKTsKLSAgICAgICAgdGFibGUuY3RpT2Zmc2V0cy5ncm93KHRhYmxlLmJyYW5j
aE9mZnNldHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gdGFibGUuY3RpT2Zm
c2V0cy5zaXplKCk7IGotLTspCi0gICAgICAgICAgICB0YWJsZS5jdGlPZmZzZXRzW2pdID0gdGFi
bGUuY3RpRGVmYXVsdDsKKyAgICAgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVu
bGlua2VkVGFibGUgPSBtX2dyYXBoLnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGRhdGEuc3dpdGNo
VGFibGVJbmRleCk7CisgICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgbGlua2VkVGFibGUgPSBtX2Nv
ZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGRhdGEuc3dpdGNoVGFibGVJbmRleCk7CisgICAgICAg
IGxpbmtlZFRhYmxlLm1fY3RpRGVmYXVsdCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU1N3aXRj
aFB0clRhZz4obV9ibG9ja0hlYWRzW2RhdGEuZmFsbFRocm91Z2guYmxvY2stPmluZGV4XSk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtlZFRhYmxlLm1fY3RpT2Zmc2V0cy5zaXplKCkgPT0g
dW5saW5rZWRUYWJsZS5tX2JyYW5jaE9mZnNldHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBqID0gbGlua2VkVGFibGUubV9jdGlPZmZzZXRzLnNpemUoKTsgai0tOykKKyAgICAgICAg
ICAgIGxpbmtlZFRhYmxlLm1fY3RpT2Zmc2V0c1tqXSA9IGxpbmtlZFRhYmxlLm1fY3RpRGVmYXVs
dDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gZGF0YS5jYXNlcy5zaXplKCk7IGotLTspIHsK
ICAgICAgICAgICAgIFN3aXRjaENhc2UmIG15Q2FzZSA9IGRhdGEuY2FzZXNbal07Ci0gICAgICAg
ICAgICB0YWJsZS5jdGlPZmZzZXRzW215Q2FzZS52YWx1ZS5zd2l0Y2hMb29rdXBWYWx1ZShkYXRh
LmtpbmQpIC0gdGFibGUubWluXSA9CisgICAgICAgICAgICBsaW5rZWRUYWJsZS5tX2N0aU9mZnNl
dHNbbXlDYXNlLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKGRhdGEua2luZCkgLSB1bmxpbmtlZFRh
YmxlLm1fbWluXSA9CiAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTU3dp
dGNoUHRyVGFnPihtX2Jsb2NrSGVhZHNbbXlDYXNlLnRhcmdldC5ibG9jay0+aW5kZXhdKTsKICAg
ICAgICAgfQogICAgIH0KICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2NvZGVCbG9jay0+
bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7IGktLTspIHsKLSAgICAgICAgaWYgKHVzZWRKdW1w
VGFibGVzLmdldChpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAg
bV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShpKS5jbGVhcigpOwotICAgIH0KLQogICAgIC8v
IE5PVEU6IHdlIGNhbm5vdCBjbGVhciBzdHJpbmcgc3dpdGNoIHRhYmxlcyBiZWNhdXNlICgxKSB3
ZSdyZSBydW5uaW5nIGNvbmN1cnJlbnRseQogICAgIC8vIGFuZCB3ZSBjYW5ub3QgZGVyZWYgU3Ry
aW5nSW1wbCdzIGFuZCAoMikgaXQgd291bGQgYmUgd2VpcmQgdG8gZGVyZWYgdGhvc2UKICAgICAv
LyBTdHJpbmdJbXBsJ3Mgc2luY2Ugd2UgcmVmZXIgdG8gdGhlbS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGNkMTM3MTJhNDUzZjVmNTIyNTU1Njk0
ZDE2YzM5ZWE0MDRjMjRlYjcuLjJmYWZiYmQ3MzJhN2YyYjIxMTViYWIyYTc2MTNkYTYyMzc2YmQ2
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2OTAsMjAgKzI2OTAsMjAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN0
ckNhdDMsIEpTU3RyaW5nKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKGdsb2JhbE9iamVjdCwgc3RyMSwgc3RyMiwgc3Ry
MykpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRmluZFN3aXRjaElt
bVRhcmdldEZvckRvdWJsZSwgY2hhciosIChWTSogdm1Qb2ludGVyLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIHNpemVfdCB0YWJsZUluZGV4KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25GaW5kU3dpdGNoSW1tVGFyZ2V0Rm9yRG91YmxlLCBjaGFyKiwgKFZNKiB2bVBv
aW50ZXIsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgc2l6ZV90IHRhYmxlSW5kZXgsIGlu
dDMyX3QgbWluKSkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwotICAgIFNpbXBsZUp1bXBUYWJs
ZSYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKKyAgICBj
b25zdCBTaW1wbGVKdW1wVGFibGUmIGxpbmtlZFRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1w
VGFibGUodGFibGVJbmRleCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIEFTU0VSVCh2YWx1ZS5pc0RvdWJsZSgpKTsKICAgICBkb3VibGUg
YXNEb3VibGUgPSB2YWx1ZS5hc0RvdWJsZSgpOwogICAgIGludDMyX3QgYXNJbnQzMiA9IHN0YXRp
Y19jYXN0PGludDMyX3Q+KGFzRG91YmxlKTsKICAgICBpZiAoYXNEb3VibGUgPT0gYXNJbnQzMikK
LSAgICAgICAgcmV0dXJuIHRhYmxlLmN0aUZvclZhbHVlKGFzSW50MzIpLmV4ZWN1dGFibGVBZGRy
ZXNzPGNoYXIqPigpOwotICAgIHJldHVybiB0YWJsZS5jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRy
ZXNzPGNoYXIqPigpOworICAgICAgICByZXR1cm4gbGlua2VkVGFibGUuY3RpRm9yVmFsdWUobWlu
LCBhc0ludDMyKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKKyAgICByZXR1cm4gbGlua2Vk
VGFibGUubV9jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwogfQogCiBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCB0YWJsZUluZGV4LCBKU1N0cmluZyogc3Ry
aW5nKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggMjIx
YjRjNDI3N2FmYjhmMGRmMjk2YzU1MGJmNDNlMjI0MDNhM2RmOS4uOTQ5NTUxMjYyOWQzNDBhZDU1
NmFjYzNmNWNhNzkxZGJkZjY3ODk5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNjgsNyArMjY4LDcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25NYWtlUm9wZTIsIEpTU3RyaW5nKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNTdHIK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWFrZVJvcGUzLCBKU1N0cmluZyos
IChKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKiwgSlNTdHJpbmcqLCBKU1N0cmluZyopKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3RyQ2F0MiwgSlNTdHJpbmcqLCAoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3RyQ2F0MywgSlNTdHJpbmcqLCAoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSk7
Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkZpbmRTd2l0Y2hJbW1UYXJnZXRG
b3JEb3VibGUsIGNoYXIqLCAoVk0qLCBFbmNvZGVkSlNWYWx1ZSwgc2l6ZV90IHRhYmxlSW5kZXgp
KTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRmluZFN3aXRjaEltbVRhcmdl
dEZvckRvdWJsZSwgY2hhciosIChWTSosIEVuY29kZWRKU1ZhbHVlLCBzaXplX3QgdGFibGVJbmRl
eCwgaW50MzJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hT
dHJpbmcsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QgdGFibGVJbmRleCwgSlNTdHJp
bmcqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdJ
bXBsTGVzcywgdWludHB0cl90LCAoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdJbXBsTGVzc0VxLCB1aW50
cHRyX3QsIChTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZTJiNGU5ZTE3YTdjY2QxZGIx
NzU1MzRjMWIzNzU3NWMyZTUyMzkxZi4uMTI0YWI3M2Q2ZDMwMDI1NzNlODZiNDYwMjdkOTBlNGVl
MWVjY2VjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKQEAgLTExNTA0LDEzICsxMTUwNCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGUoTm9kZSosIEVkZ2UgZWRnZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0
Y2hJbnRKdW1wKAogICAgIFN3aXRjaERhdGEqIGRhdGEsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNj
cmF0Y2gpCiB7Ci0gICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1faml0LmNvZGVCbG9jaygp
LT5zd2l0Y2hKdW1wVGFibGUoZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7Ci0gICAgdGFibGUuZW5z
dXJlQ1RJVGFibGUoKTsKLSAgICBtX2ppdC5zdWIzMihJbW0zMih0YWJsZS5taW4pLCB2YWx1ZSk7
CisgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2VkVGFibGUgPSBtX2pp
dC5ncmFwaCgpLnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgp
OworICAgIFNpbXBsZUp1bXBUYWJsZSYgbGlua2VkVGFibGUgPSBtX2ppdC5ncmFwaCgpLnN3aXRj
aEp1bXBUYWJsZShkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KTsKKyAgICBsaW5rZWRUYWJsZS5lbnN1
cmVDVElUYWJsZSh1bmxpbmtlZFRhYmxlKTsKKyAgICBtX2ppdC5zdWIzMihJbW0zMih1bmxpbmtl
ZFRhYmxlLm1fbWluKSwgdmFsdWUpOwogICAgIGFkZEJyYW5jaCgKLSAgICAgICAgbV9qaXQuYnJh
bmNoMzIoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgdmFsdWUsIEltbTMyKHRhYmxlLmN0aU9m
ZnNldHMuc2l6ZSgpKSksCisgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpBYm92
ZU9yRXF1YWwsIHZhbHVlLCBJbW0zMihsaW5rZWRUYWJsZS5tX2N0aU9mZnNldHMuc2l6ZSgpKSks
CiAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKLSAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIodGFibGUuY3RpT2Zmc2V0cy5iZWdpbigpKSwgc2NyYXRjaCk7CisgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tUHRyKGxpbmtlZFRhYmxlLm1fY3RpT2Zmc2V0cy5iZWdpbigpKSwgc2Ny
YXRjaCk7CiAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHNjcmF0Y2gs
IHZhbHVlLCBKSVRDb21waWxlcjo6U2NhbGVQdHIpLCBzY3JhdGNoKTsKICAgICAKICAgICBtX2pp
dC5mYXJKdW1wKHNjcmF0Y2gsIEpTU3dpdGNoUHRyVGFnKTsKQEAgLTExNTQwLDggKzExNTQxLDEw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbW0oTm9kZSogbm9kZSwgU3dpdGNo
RGF0YSogZGF0YSkKICAgICAgICAgZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgdmFsdWVSZWdzLnBh
eWxvYWRHUFIoKSwgc2NyYXRjaCk7CiAgICAgICAgIG5vdEludDMyLmxpbmsoJm1faml0KTsKICAg
ICAgICAgYWRkQnJhbmNoKG1faml0LmJyYW5jaElmTm90TnVtYmVyKHZhbHVlUmVncywgc2NyYXRj
aCksIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKKworICAgICAgICBjb25zdCBVbmxpbmtlZFNp
bXBsZUp1bXBUYWJsZSYgdW5saW5rZWRUYWJsZSA9IG1faml0LmdyYXBoKCkudW5saW5rZWRTd2l0
Y2hKdW1wVGFibGUoZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7CiAgICAgICAgIHNpbGVudFNwaWxs
QWxsUmVnaXN0ZXJzKHNjcmF0Y2gpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkZp
bmRTd2l0Y2hJbW1UYXJnZXRGb3JEb3VibGUsIHNjcmF0Y2gsICZ2bSgpLCB2YWx1ZVJlZ3MsIGRh
dGEtPnN3aXRjaFRhYmxlSW5kZXgpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkZp
bmRTd2l0Y2hJbW1UYXJnZXRGb3JEb3VibGUsIHNjcmF0Y2gsICZ2bSgpLCB2YWx1ZVJlZ3MsIGRh
dGEtPnN3aXRjaFRhYmxlSW5kZXgsIHVubGlua2VkVGFibGUubV9taW4pOwogICAgICAgICBzaWxl
bnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAKICAgICAgICAgbV9qaXQuZmFySnVtcChzY3JhdGNoLCBK
U1N3aXRjaFB0clRhZyk7CkBAIC0xMTU1Myw2ICsxMTU1Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRTd2l0Y2hJbW0oTm9kZSogbm9kZSwgU3dpdGNoRGF0YSogZGF0YSkKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAg
IEFTU0VSVChkYXRhLT5kaWRVc2VKdW1wVGFibGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoTm9kZSogbm9kZSwgU3dpdGNoRGF0YSogZGF0YSwg
R1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCkKQEAgLTExNjI2LDYgKzExNjMwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXIoTm9kZSogbm9kZSwgU3dpdGNoRGF0YSog
ZGF0YSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorICAgIEFTU0VSVChkYXRhLT5kaWRVc2VKdW1wVGFibGUpOwogfQogCiBuYW1l
c3BhY2UgewpAQCAtMTE4NDQsNiArMTE4NDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
U3dpdGNoU3RyaW5nKE5vZGUqIG5vZGUsIFN3aXRjaERhdGEqIGRhdGEpCiB7CiAgICAgc3dpdGNo
IChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICBjYXNlIFN0cmluZ0lkZW50VXNlOiB7
CisgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBkbyBub3QgdXNlIEp1bXBUYWJsZSBpbiB0aGlzIGNh
c2UuCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IGM3NzYyMThkOGQ0M2U1YWFiMWUyNTZjNGQ1
NmVjNmY0M2RmMTNhMTUuLjA5OWMxNmNmZGRmNDA2ZmE3Yzk2NjQ3MTAzNDk3M2Y5OTllMWNhZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDkgKzQ1LDYgQEAg
dm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBo
Lm1fY29kZUJsb2NrOwogICAgIFZNJiB2bSA9IGdyYXBoLm1fdm07CiAgICAgCi0gICAgLy8gQjMg
d2lsbCBjcmVhdGUgaXRzIG93biBqdW1wIHRhYmxlcyBhcyBuZWVkZWQuCi0gICAgY29kZUJsb2Nr
LT5jbGVhclN3aXRjaEp1bXBUYWJsZXMoKTsKLQogICAgIHN0YXRlLmppdENvZGUtPmNvbW1vbi5y
ZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ID0gZ3JhcGgucmVxdWlyZWRSZWdpc3RlckNvdW50
Rm9yRXhpdCgpOwogICAgIAogICAgIGlmICghZ3JhcGgubV9wbGFuLmlubGluZUNhbGxGcmFtZXMo
KS0+aXNFbXB0eSgpKQpAQCAtNTUsNiArNTIsMTQgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkK
IAogICAgIGdyYXBoLnJlZ2lzdGVyRnJvemVuVmFsdWVzKCk7CiAKKyNpZiBBU1NFUlRfRU5BQkxF
RAorICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1f
bG9jayk7CisgICAgICAgIEFTU0VSVChjb2RlQmxvY2stPmVuc3VyZUpJVERhdGEobG9ja2VyKS5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKGNvZGVC
bG9jay0+ZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3dpdGNoSnVtcFRhYmxlcy5pc0VtcHR5KCkp
OworICAgIH0KKyNlbmRpZgorCiAgICAgLy8gQ3JlYXRlIHRoZSBlbnRyeXBvaW50LiBOb3RlIHRo
YXQgd2UgdXNlIHRoaXMgZW50cnlwb2ludCB0b3RhbGx5IGRpZmZlcmVudGx5CiAgICAgLy8gZGVw
ZW5kaW5nIG9uIHdoZXRoZXIgd2UncmUgZG9pbmcgT1NSIGVudHJ5IG9yIG5vdC4KICAgICBDQ2Fs
bEhlbHBlcnMgaml0KGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXgg
ODhkM2ZkMmE1NjlhYTRkYWRlZjE1NWUwZDFlZTllNzRhN2YzMmE5NC4uYjY2YTEzZjI5MmZjYWY1
NzQ2ZjE5ODkyYTI4NDRmMDkzNjc4ZmFhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApA
QCAtNzE0LDYgKzcxNCwxNCBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENv
bXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgaWYg
KG1fY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpIHx8IG1fY29k
ZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpKSB7CisgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9jb2RlQmxvY2stPm1fbG9jayk7CisgICAg
ICAgIGlmIChtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKSkK
KyAgICAgICAgICAgIG1fY29kZUJsb2NrLT5lbnN1cmVKSVREYXRhKGxvY2tlcikubV9zd2l0Y2hK
dW1wVGFibGVzID0gRml4ZWRWZWN0b3I8U2ltcGxlSnVtcFRhYmxlPihtX2NvZGVCbG9jay0+bnVt
YmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKSk7CisgICAgICAgIGlmIChtX2NvZGVCbG9j
ay0+bnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSkKKyAgICAgICAgICAg
IG1fY29kZUJsb2NrLT5lbnN1cmVKSVREYXRhKGxvY2tlcikubV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzID0gRml4ZWRWZWN0b3I8U3RyaW5nSnVtcFRhYmxlPihtX2NvZGVCbG9jay0+bnVtYmVyT2ZV
bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSk7CisgICAgfQorCiAgICAgaWYgKFVOTElL
RUxZKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpIHx8IChtX3ZtLT5tX3BlckJ5dGVjb2RlUHJv
ZmlsZXIgJiYgT3B0aW9uczo6ZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVyKCkpKSkKICAg
ICAgICAgbV9kaXNhc3NlbWJsZXIgPSBtYWtlVW5pcXVlPEpJVERpc2Fzc2VtYmxlcj4obV9jb2Rl
QmxvY2spOwogICAgIGlmIChVTkxJS0VMWShtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpKSB7
CkBAIC04NTcsMzIgKzg2NSwyOCBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAg
IGlmIChwYXRjaEJ1ZmZlci5kaWRGYWlsVG9BbGxvY2F0ZSgpKQogICAgICAgICByZXR1cm4gQ29t
cGlsYXRpb25GYWlsZWQ7CiAKLSAgICBpZiAobV9jb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRT
dHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkpIHsKLSAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgbV9jb2RlQmxvY2stPmVuc3VyZUpJ
VERhdGEobG9ja2VyKS5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBGaXhlZFZlY3RvcjxTdHJp
bmdKdW1wVGFibGU+KG1fY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3RyaW5nU3dpdGNoSnVt
cFRhYmxlcygpKTsKLSAgICB9Ci0KICAgICAvLyBUcmFuc2xhdGUgdlBDIG9mZnNldHMgaW50byBh
ZGRyZXNzZXMgaW4gSklUIGdlbmVyYXRlZCBjb2RlLCBmb3Igc3dpdGNoIHRhYmxlcy4KICAgICBm
b3IgKGF1dG8mIHJlY29yZCA6IG1fc3dpdGNoZXMpIHsKICAgICAgICAgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQgPSByZWNvcmQuYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKIAogICAgICAgICBpZiAo
cmVjb3JkLnR5cGUgIT0gU3dpdGNoUmVjb3JkOjpTdHJpbmcpIHsKICAgICAgICAgICAgIEFTU0VS
VChyZWNvcmQudHlwZSA9PSBTd2l0Y2hSZWNvcmQ6OkltbWVkaWF0ZSB8fCByZWNvcmQudHlwZSA9
PSBTd2l0Y2hSZWNvcmQ6OkNoYXJhY3Rlcik7IAotICAgICAgICAgICAgQVNTRVJUKHJlY29yZC5q
dW1wVGFibGUuc2ltcGxlSnVtcFRhYmxlLT5icmFuY2hPZmZzZXRzLnNpemUoKSA9PSByZWNvcmQu
anVtcFRhYmxlLnNpbXBsZUp1bXBUYWJsZS0+Y3RpT2Zmc2V0cy5zaXplKCkpOwogCi0gICAgICAg
ICAgICBhdXRvKiBzaW1wbGVKdW1wVGFibGUgPSByZWNvcmQuanVtcFRhYmxlLnNpbXBsZUp1bXBU
YWJsZTsKLSAgICAgICAgICAgIHNpbXBsZUp1bXBUYWJsZS0+Y3RpRGVmYXVsdCA9IHBhdGNoQnVm
ZmVyLmxvY2F0aW9uT2Y8SlNTd2l0Y2hQdHJUYWc+KG1fbGFiZWxzW2J5dGVjb2RlT2Zmc2V0ICsg
cmVjb3JkLmRlZmF1bHRPZmZzZXRdKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHRhYmxlSW5kZXgg
PSByZWNvcmQudGFibGVJbmRleDsKKyAgICAgICAgICAgIGNvbnN0IFVubGlua2VkU2ltcGxlSnVt
cFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9jb2RlQmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRh
YmxlKHRhYmxlSW5kZXgpOworICAgICAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiBsaW5rZWRUYWJs
ZSA9IG1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CisgICAgICAgICAg
ICBsaW5rZWRUYWJsZS5tX2N0aURlZmF1bHQgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTU3dp
dGNoUHRyVGFnPihtX2xhYmVsc1tieXRlY29kZU9mZnNldCArIHJlY29yZC5kZWZhdWx0T2Zmc2V0
XSk7CiAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZWNvcmQuanVtcFRh
YmxlLnNpbXBsZUp1bXBUYWJsZS0+YnJhbmNoT2Zmc2V0cy5zaXplKCk7ICsraikgewotICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHJlY29yZC5qdW1wVGFibGUuc2ltcGxlSnVtcFRh
YmxlLT5icmFuY2hPZmZzZXRzW2pdOwotICAgICAgICAgICAgICAgIHNpbXBsZUp1bXBUYWJsZS0+
Y3RpT2Zmc2V0c1tqXSA9IG9mZnNldAorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsg
aiA8IHVubGlua2VkVGFibGUubV9icmFuY2hPZmZzZXRzLnNpemUoKTsgKytqKSB7CisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gdW5saW5rZWRUYWJsZS5tX2JyYW5jaE9mZnNldHNb
al07CisgICAgICAgICAgICAgICAgbGlua2VkVGFibGUubV9jdGlPZmZzZXRzW2pdID0gb2Zmc2V0
CiAgICAgICAgICAgICAgICAgICAgID8gcGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU1N3aXRjaFB0
clRhZz4obV9sYWJlbHNbYnl0ZWNvZGVPZmZzZXQgKyBvZmZzZXRdKQotICAgICAgICAgICAgICAg
ICAgICA6IHNpbXBsZUp1bXBUYWJsZS0+Y3RpRGVmYXVsdDsKKyAgICAgICAgICAgICAgICAgICAg
OiBsaW5rZWRUYWJsZS5tX2N0aURlZmF1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBBU1NFUlQocmVjb3JkLnR5cGUgPT0gU3dpdGNoUmVjb3JkOjpTdHJp
bmcpOwogCi0gICAgICAgICAgICB1bnNpZ25lZCB0YWJsZUluZGV4ID0gcmVjb3JkLmp1bXBUYWJs
ZS50YWJsZUluZGV4OworICAgICAgICAgICAgdW5zaWduZWQgdGFibGVJbmRleCA9IHJlY29yZC50
YWJsZUluZGV4OwogICAgICAgICAgICAgY29uc3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIHVu
bGlua2VkVGFibGUgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGUo
dGFibGVJbmRleCk7CiAgICAgICAgICAgICBTdHJpbmdKdW1wVGFibGUmIGxpbmtlZFRhYmxlID0g
bV9jb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKICAgICAgICAg
ICAgIGxpbmtlZFRhYmxlLm1fY3RpRGVmYXVsdCA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNT
d2l0Y2hQdHJUYWc+KG1fbGFiZWxzW2J5dGVjb2RlT2Zmc2V0ICsgcmVjb3JkLmRlZmF1bHRPZmZz
ZXRdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDIxZDJhNmM3ZjcwY2E2ZTE2ZjFiZDlm
ZjdkY2YzOGE2M2FjMjkzOWUuLjFjMmI4NmNiMTI0YTRlY2Y0ZjY5MTQzOGFjMmExZjk1Zjg2NDFi
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyNiwyOCArMTI2LDE2IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIFR5cGUgdHlwZTsKIAotICAgICAgICB1bmlvbiB7Ci0gICAg
ICAgICAgICBTaW1wbGVKdW1wVGFibGUqIHNpbXBsZUp1bXBUYWJsZTsKLSAgICAgICAgICAgIHVu
c2lnbmVkIHRhYmxlSW5kZXg7Ci0gICAgICAgIH0ganVtcFRhYmxlOwotCiAgICAgICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleDsKICAgICAgICAgdW5zaWduZWQgZGVmYXVsdE9mZnNldDsK
LQotICAgICAgICBTd2l0Y2hSZWNvcmQoU2ltcGxlSnVtcFRhYmxlKiBqdW1wVGFibGUsIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgZGVmYXVsdE9mZnNldCwgVHlwZSB0eXBl
KQotICAgICAgICAgICAgOiB0eXBlKHR5cGUpCi0gICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgo
Ynl0ZWNvZGVJbmRleCkKLSAgICAgICAgICAgICwgZGVmYXVsdE9mZnNldChkZWZhdWx0T2Zmc2V0
KQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5qdW1wVGFibGUuc2ltcGxlSnVtcFRhYmxl
ID0ganVtcFRhYmxlOwotICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIHRhYmxlSW5kZXg7CiAK
ICAgICAgICAgU3dpdGNoUmVjb3JkKHVuc2lnbmVkIHRhYmxlSW5kZXgsIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCwgdW5zaWduZWQgZGVmYXVsdE9mZnNldCwgVHlwZSB0eXBlKQogICAgICAg
ICAgICAgOiB0eXBlKHR5cGUpCiAgICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJ
bmRleCkKICAgICAgICAgICAgICwgZGVmYXVsdE9mZnNldChkZWZhdWx0T2Zmc2V0KQorICAgICAg
ICAgICAgLCB0YWJsZUluZGV4KHRhYmxlSW5kZXgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRo
aXMtPmp1bXBUYWJsZS50YWJsZUluZGV4ID0gdGFibGVJbmRleDsKICAgICAgICAgfQogICAgIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDEwMjU2NTUw
ODlkZDgzOTkzNWZjOWY1Y2EwYWNiMjRjOWU2ZjMzMTQuLjcxOTgxMGQ1ZDhiMWMzMjA3ZWUyMDAz
ZWVhNWQ5MmIzN2E0ZTRhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcApAQCAtODk0LDM1ICs4OTQsNDEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3BhcmVudF9z
Y29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9zd2l0Y2hfaW1tKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgZmFzdCBwYXRoLgorICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ1MjEKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFN3aXRjaEltbT4oKTsKICAgICBzaXpl
X3QgdGFibGVJbmRleCA9IGJ5dGVjb2RlLm1fdGFibGVJbmRleDsKICAgICB1bnNpZ25lZCBkZWZh
dWx0T2Zmc2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fZGVm
YXVsdE9mZnNldCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNjcnV0aW5lZSA9IGJ5dGVjb2RlLm1f
c2NydXRpbmVlOwogCiAgICAgLy8gY3JlYXRlIGp1bXAgdGFibGUgZm9yIHN3aXRjaCBkZXN0aW5h
dGlvbnMsIHRyYWNrIHRoaXMgc3dpdGNoIHN0YXRlbWVudC4KLSAgICBTaW1wbGVKdW1wVGFibGUq
IGp1bXBUYWJsZSA9ICZtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwot
ICAgIG1fc3dpdGNoZXMuYXBwZW5kKFN3aXRjaFJlY29yZChqdW1wVGFibGUsIG1fYnl0ZWNvZGVJ
bmRleCwgZGVmYXVsdE9mZnNldCwgU3dpdGNoUmVjb3JkOjpJbW1lZGlhdGUpKTsKLSAgICBqdW1w
VGFibGUtPmVuc3VyZUNUSVRhYmxlKCk7CisgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFi
bGUmIHVubGlua2VkVGFibGUgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUo
dGFibGVJbmRleCk7CisgICAgU2ltcGxlSnVtcFRhYmxlJiBsaW5rZWRUYWJsZSA9IG1fY29kZUJs
b2NrLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CisgICAgbV9zd2l0Y2hlcy5hcHBlbmQo
U3dpdGNoUmVjb3JkKHRhYmxlSW5kZXgsIG1fYnl0ZWNvZGVJbmRleCwgZGVmYXVsdE9mZnNldCwg
U3dpdGNoUmVjb3JkOjpJbW1lZGlhdGUpKTsKKyAgICBsaW5rZWRUYWJsZS5lbnN1cmVDVElUYWJs
ZSh1bmxpbmtlZFRhYmxlKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc2NydXRpbmVl
LCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93
bktleVR5cGUsIFRydXN0ZWRJbW1QdHIoJnZtKCkpLCByZWdUMCwgdGFibGVJbmRleCk7CisgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93bktleVR5cGUsIFRydXN0
ZWRJbW1QdHIoJnZtKCkpLCByZWdUMCwgdGFibGVJbmRleCwgdW5saW5rZWRUYWJsZS5tX21pbik7
CiAgICAgZmFySnVtcChyZXR1cm5WYWx1ZUdQUiwgSlNTd2l0Y2hQdHJUYWcpOwogfQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9zd2l0Y2hfY2hhcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogeworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIGZhc3QgcGF0aC4KKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NTIxCiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTd2l0Y2hDaGFyPigpOwog
ICAgIHNpemVfdCB0YWJsZUluZGV4ID0gYnl0ZWNvZGUubV90YWJsZUluZGV4OwogICAgIHVuc2ln
bmVkIGRlZmF1bHRPZmZzZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNv
ZGUubV9kZWZhdWx0T2Zmc2V0KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NydXRpbmVlID0gYnl0
ZWNvZGUubV9zY3J1dGluZWU7CiAKICAgICAvLyBjcmVhdGUganVtcCB0YWJsZSBmb3Igc3dpdGNo
IGRlc3RpbmF0aW9ucywgdHJhY2sgdGhpcyBzd2l0Y2ggc3RhdGVtZW50LgotICAgIFNpbXBsZUp1
bXBUYWJsZSoganVtcFRhYmxlID0gJm1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJ
bmRleCk7Ci0gICAgbV9zd2l0Y2hlcy5hcHBlbmQoU3dpdGNoUmVjb3JkKGp1bXBUYWJsZSwgbV9i
eXRlY29kZUluZGV4LCBkZWZhdWx0T2Zmc2V0LCBTd2l0Y2hSZWNvcmQ6OkNoYXJhY3RlcikpOwot
ICAgIGp1bXBUYWJsZS0+ZW5zdXJlQ1RJVGFibGUoKTsKKyAgICBjb25zdCBVbmxpbmtlZFNpbXBs
ZUp1bXBUYWJsZSYgdW5saW5rZWRUYWJsZSA9IG1fY29kZUJsb2NrLT51bmxpbmtlZFN3aXRjaEp1
bXBUYWJsZSh0YWJsZUluZGV4KTsKKyAgICBTaW1wbGVKdW1wVGFibGUmIGxpbmtlZFRhYmxlID0g
bV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKKyAgICBtX3N3aXRjaGVz
LmFwcGVuZChTd2l0Y2hSZWNvcmQodGFibGVJbmRleCwgbV9ieXRlY29kZUluZGV4LCBkZWZhdWx0
T2Zmc2V0LCBTd2l0Y2hSZWNvcmQ6OkNoYXJhY3RlcikpOworICAgIGxpbmtlZFRhYmxlLmVuc3Vy
ZUNUSVRhYmxlKHVubGlua2VkVGFibGUpOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihz
Y3J1dGluZWUsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaENoYXJX
aXRoVW5rbm93bktleVR5cGUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgcmVnVDAsIHRhYmxlSW5kZXgpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dp
dGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCByZWdUMCwgdGFibGVJbmRleCwgdW5saW5rZWRUYWJsZS5tX21pbik7CiAg
ICAgZmFySnVtcChyZXR1cm5WYWx1ZUdQUiwgSlNTd2l0Y2hQdHJUYWcpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggZWRhMjYzZTQ0
YzVmYzkxMjFjYTgyY2RjMzJiMGY1ZTVkOThmMTY4Ny4uYWJmMTdiM2ZhMzA1NWZjYmRmNjkxYzQy
ZDY3ODI1MmU3YzQzNjlkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcApAQCAtOTk0LDEyICs5OTQsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dp
dGNoX2ltbShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1
YWxSZWdpc3RlciBzY3J1dGluZWUgPSBieXRlY29kZS5tX3NjcnV0aW5lZTsKIAogICAgIC8vIGNy
ZWF0ZSBqdW1wIHRhYmxlIGZvciBzd2l0Y2ggZGVzdGluYXRpb25zLCB0cmFjayB0aGlzIHN3aXRj
aCBzdGF0ZW1lbnQuCi0gICAgU2ltcGxlSnVtcFRhYmxlKiBqdW1wVGFibGUgPSAmbV9jb2RlQmxv
Y2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKLSAgICBtX3N3aXRjaGVzLmFwcGVuZChT
d2l0Y2hSZWNvcmQoanVtcFRhYmxlLCBtX2J5dGVjb2RlSW5kZXgsIGRlZmF1bHRPZmZzZXQsIFN3
aXRjaFJlY29yZDo6SW1tZWRpYXRlKSk7Ci0gICAganVtcFRhYmxlLT5lbnN1cmVDVElUYWJsZSgp
OworICAgIGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9j
b2RlQmxvY2stPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgIFNpbXBs
ZUp1bXBUYWJsZSYgbGlua2VkVGFibGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRh
YmxlSW5kZXgpOworICAgIG1fc3dpdGNoZXMuYXBwZW5kKFN3aXRjaFJlY29yZCh0YWJsZUluZGV4
LCBtX2J5dGVjb2RlSW5kZXgsIGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29yZDo6SW1tZWRpYXRl
KSk7CisgICAgbGlua2VkVGFibGUuZW5zdXJlQ1RJVGFibGUodW5saW5rZWRUYWJsZSk7CiAKICAg
ICBlbWl0TG9hZChzY3J1dGluZWUsIHJlZ1QxLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93bktleVR5cGUsIFRydXN0ZWRJbW1QdHIoJnZtKCkp
LCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCB0YWJsZUluZGV4KTsKKyAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZSwgVHJ1c3RlZEltbVB0cigm
dm0oKSksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHRhYmxlSW5kZXgsIHVubGlua2VkVGFi
bGUubV9taW4pOwogICAgIGZhckp1bXAocmV0dXJuVmFsdWVHUFIsIE5vUHRyVGFnKTsKIH0KIApA
QCAtMTAxMSwxMiArMTAxMiwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfY2hhcihjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBz
Y3J1dGluZWUgPSBieXRlY29kZS5tX3NjcnV0aW5lZTsKIAogICAgIC8vIGNyZWF0ZSBqdW1wIHRh
YmxlIGZvciBzd2l0Y2ggZGVzdGluYXRpb25zLCB0cmFjayB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQu
Ci0gICAgU2ltcGxlSnVtcFRhYmxlKiBqdW1wVGFibGUgPSAmbV9jb2RlQmxvY2stPnN3aXRjaEp1
bXBUYWJsZSh0YWJsZUluZGV4KTsKLSAgICBtX3N3aXRjaGVzLmFwcGVuZChTd2l0Y2hSZWNvcmQo
anVtcFRhYmxlLCBtX2J5dGVjb2RlSW5kZXgsIGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29yZDo6
Q2hhcmFjdGVyKSk7Ci0gICAganVtcFRhYmxlLT5lbnN1cmVDVElUYWJsZSgpOworICAgIGNvbnN0
IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlID0gbV9jb2RlQmxvY2stPnVu
bGlua2VkU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgIFNpbXBsZUp1bXBUYWJsZSYg
bGlua2VkVGFibGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwor
ICAgIG1fc3dpdGNoZXMuYXBwZW5kKFN3aXRjaFJlY29yZCh0YWJsZUluZGV4LCBtX2J5dGVjb2Rl
SW5kZXgsIGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29yZDo6Q2hhcmFjdGVyKSk7CisgICAgbGlu
a2VkVGFibGUuZW5zdXJlQ1RJVGFibGUodW5saW5rZWRUYWJsZSk7CiAKICAgICBlbWl0TG9hZChz
Y3J1dGluZWUsIHJlZ1QxLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0
Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpT
VmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHRhYmxlSW5kZXgpOworICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgbV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCB0YWJsZUluZGV4LCB1bmxpbmtl
ZFRhYmxlLm1fbWluKTsKICAgICBmYXJKdW1wKHJldHVyblZhbHVlR1BSLCBOb1B0clRhZyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGIy
NTAwZjBlNjIwOThjYjZiZWVjYmE3YzViZjMzYzcwMTlmNWI0MDIuLjdlMjM0NzAzMGNjOGRiN2U1
MWRjM2Y3ZmFkYzQxOTI1NmRiZmJlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcApAQCAtMjc4OSw3ICsyNzg5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lLCBDYWxsRnJhbWUqLCAoSlNHbG9iYWxP
YmplY3QKICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5LCBzaXpl
X3QgdGFibGVJbmRleCkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNo
Q2hhcldpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5LCBzaXplX3QgdGFibGVJbmRleCwgaW50MzJf
dCBtaW4pKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yNzk5LDE1ICsyNzk5
LDE2IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVu
a25vd25LZXlUeXBlLCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgSlNWYWx1ZSBrZXkgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEtleSk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpOwogCi0gICAgU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBjb2Rl
QmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKLSAgICB2b2lkKiByZXN1bHQgPSBq
dW1wVGFibGUuY3RpRGVmYXVsdC5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIGNvbnN0IFNpbXBs
ZUp1bXBUYWJsZSYgbGlua2VkVGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0YWJs
ZUluZGV4KTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT51bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSh0
YWJsZUluZGV4KS5tX21pbiA9PSBtaW4pOworICAgIHZvaWQqIHJlc3VsdCA9IGxpbmtlZFRhYmxl
Lm1fY3RpRGVmYXVsdC5leGVjdXRhYmxlQWRkcmVzcygpOwogCiAgICAgaWYgKGtleS5pc1N0cmlu
ZygpKSB7CiAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhrZXkpOwogICAgICAg
ICBpZiAoc3RyaW5nLT5sZW5ndGgoKSA9PSAxKSB7CiAgICAgICAgICAgICBTdHJpbmcgdmFsdWUg
PSBzdHJpbmctPnZhbHVlKGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwotICAgICAgICAgICAgcmVzdWx0ID0ganVtcFRh
YmxlLmN0aUZvclZhbHVlKHZhbHVlWzBdKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICAg
ICAgcmVzdWx0ID0gbGlua2VkVGFibGUuY3RpRm9yVmFsdWUobWluLCB2YWx1ZVswXSkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjgxNSw3ICsyODE2LDcgQEAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktl
eVR5cGUsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4ocmVzdWx0KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRj
aEltbVdpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChWTSogdm1Qb2ludGVyLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkS2V5LCBzaXplX3QgdGFibGVJbmRleCkpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwgKFZNKiB2
bVBvaW50ZXIsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRLZXksIHNpemVfdCB0YWJsZUluZGV4LCBp
bnQzMl90IG1pbikpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yODIzLDE0ICsyODI0LDE1
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93
bktleVR5cGUsIGNoYXIqLCAoVk0qIHZtUG9pCiAgICAgSlNWYWx1ZSBrZXkgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEtleSk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpOwogCi0gICAgU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBjb2RlQmxv
Y2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKKyAgICBjb25zdCBTaW1wbGVKdW1wVGFi
bGUmIGxpbmtlZFRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7
CisgICAgQVNTRVJUKGNvZGVCbG9jay0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRl
eCkubV9taW4gPT0gbWluKTsKICAgICB2b2lkKiByZXN1bHQ7CiAgICAgaWYgKGtleS5pc0ludDMy
KCkpCi0gICAgICAgIHJlc3VsdCA9IGp1bXBUYWJsZS5jdGlGb3JWYWx1ZShrZXkuYXNJbnQzMigp
KS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICByZXN1bHQgPSBsaW5rZWRUYWJsZS5jdGlG
b3JWYWx1ZShtaW4sIGtleS5hc0ludDMyKCkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgZWxz
ZSBpZiAoa2V5LmlzRG91YmxlKCkgJiYga2V5LmFzRG91YmxlKCkgPT0gc3RhdGljX2Nhc3Q8aW50
MzJfdD4oa2V5LmFzRG91YmxlKCkpKQotICAgICAgICByZXN1bHQgPSBqdW1wVGFibGUuY3RpRm9y
VmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oa2V5LmFzRG91YmxlKCkpKS5leGVjdXRhYmxlQWRk
cmVzcygpOworICAgICAgICByZXN1bHQgPSBsaW5rZWRUYWJsZS5jdGlGb3JWYWx1ZShtaW4sIHN0
YXRpY19jYXN0PGludDMyX3Q+KGtleS5hc0RvdWJsZSgpKSkuZXhlY3V0YWJsZUFkZHJlc3MoKTsK
ICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGp1bXBUYWJsZS5jdGlEZWZhdWx0LmV4ZWN1dGFi
bGVBZGRyZXNzKCk7CisgICAgICAgIHJlc3VsdCA9IGxpbmtlZFRhYmxlLm1fY3RpRGVmYXVsdC5l
eGVjdXRhYmxlQWRkcmVzcygpOwogICAgIGFzc2VydElzVGFnZ2VkV2l0aDxKU1N3aXRjaFB0clRh
Zz4ocmVzdWx0KTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocmVzdWx0KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggYzg2MTEw
YTE5OTYzNjEyY2MxZTk2YzY5MzlhOWUyNGZiZTkwMTdlZi4uOTdhMDkwZGUyODdkNjZjZDMxOWQ0
MmE3N2FlNDViNDEyOGUwNmUxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKQEAgLTI4MCw4ICsyODAsOCBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbAogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6
ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkpOwogCi1KU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4
KSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtu
b3duS2V5VHlwZSwgY2hhciosIChWTSosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxl
SW5kZXgpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoQ2hhcldp
dGhVbmtub3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGtleSwgc2l6ZV90IHRhYmxlSW5kZXgsIGludDMyX3QgbWluKSk7CitKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZSwgY2hhciosIChW
TSosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgsIGludDMyX3QgbWluKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN3aXRjaFN0cmluZ1dpdGhVbmtu
b3duS2V5VHlwZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGtleSwg
c2l6ZV90IHRhYmxlSW5kZXgpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
R2V0RnJvbVNjb3BlLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSW5z
dHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uUHV0VG9TY29wZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSW5zdHJ1Y3Rpb24q
IGJ5dGVjb2RlUEMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCmluZGV4IDc4YjZmNjZmY2EwOWExNTY0NDU5NWRlMjU3NTM3NzgxYzdlMTYxYTUu
LmIwNGYwZGNlYzExNDlmNGRmZWViZTQxMDVkNTVmZmIxOGFiMDAwZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTU5Nyw3ICsxNTk3
LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9pbW0pCiAgICAgaW50
MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKICAgICBpbnQgZGVm
YXVsdE9mZnNldCA9IEpVTVBfT0ZGU0VUKGJ5dGVjb2RlLm1fZGVmYXVsdE9mZnNldCk7CiAgICAg
aWYgKHZhbHVlID09IGludFZhbHVlKQotICAgICAgICBKVU1QX1RPKGNvZGVCbG9jay0+c3dpdGNo
SnVtcFRhYmxlKGJ5dGVjb2RlLm1fdGFibGVJbmRleCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUs
IGRlZmF1bHRPZmZzZXQpKTsKKyAgICAgICAgSlVNUF9UTyhjb2RlQmxvY2stPnVubGlua2VkU3dp
dGNoSnVtcFRhYmxlKGJ5dGVjb2RlLm1fdGFibGVJbmRleCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFs
dWUsIGRlZmF1bHRPZmZzZXQpKTsKICAgICBlbHNlCiAgICAgICAgIEpVTVBfVE8oZGVmYXVsdE9m
ZnNldCk7CiAgICAgTExJTlRfRU5EKCk7CkBAIC0xNjEzLDcgKzE2MTMsNyBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfc3dpdGNoX2NoYXIpCiAgICAgQVNTRVJUKHN0cmluZy0+bGVu
Z3RoKCkgPT0gMSk7CiAgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBKVU1QX09GRlNFVChieXRlY29k
ZS5tX2RlZmF1bHRPZmZzZXQpOwogICAgIFN0cmluZ0ltcGwqIGltcGwgPSBzdHJpbmctPnZhbHVl
KGdsb2JhbE9iamVjdCkuaW1wbCgpOwotICAgIEpVTVBfVE8oY29kZUJsb2NrLT5zd2l0Y2hKdW1w
VGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KS5vZmZzZXRGb3JWYWx1ZSgoKmltcGwpWzBdLCBk
ZWZhdWx0T2Zmc2V0KSk7CisgICAgSlVNUF9UTyhjb2RlQmxvY2stPnVubGlua2VkU3dpdGNoSnVt
cFRhYmxlKGJ5dGVjb2RlLm1fdGFibGVJbmRleCkub2Zmc2V0Rm9yVmFsdWUoKCppbXBsKVswXSwg
ZGVmYXVsdE9mZnNldCkpOwogICAgIExMSU5UX0VORCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmlu
ZGV4IDZmNWE0ZDE4YjdmZjYzYWU4ZTM3OTk3ZThhYmM4Y2YxMGJmYTI4ODMuLmVjMWE5NTlhZTU2
ODM1MjQ0ZTc3NjE2ZWVjYmMyMTk1NjI4OTY5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMDMz
LDEzICsyMDMzLDE0IEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfaW1tLCBPcFN3aXRjaElt
bSwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgZ2V0dShzaXplLCBPcFN3
aXRjaEltbSwgbV90YWJsZUluZGV4LCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNp
emUsIHQyLCB0MSwgdDApCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCi0gICAgbG9hZHAg
Q29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKLSAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1w
VGFibGUsIHQzCi0gICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9zd2l0Y2hKdW1wVGFi
bGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
dW5saW5rZWRDb2RlW3QyXSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9yYXJl
RGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUsIHQz
CisgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNo
SnVtcFRhYmxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1f
ZGF0YVt0Ml0sIHQyCiAgICAgYWRkcCB0MywgdDIKICAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5v
cFN3aXRjaEltbU5vdEludAotICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAot
ICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVjdG9yOjpt
X3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgc3ViaSBVbmxp
bmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9taW5bdDJdLCB0MAorICAgIGxvYWRwIFVubGlua2VkU2lt
cGxlSnVtcFRhYmxlOjptX2JyYW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsg
UmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgogICAgIGJ0cHogdDIsIC5vcFN3aXRjaElt
bUZhbGxUaHJvdWdoCiAgICAgYmlhZXEgdDAsIFJlZkNvdW50ZWRBcnJheVN0b3JhZ2VOb25OdWxs
U2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCiAgICAgbG9hZGkgW3QyLCB0
MCwgNF0sIHQxCkBAIC0yMDYyLDkgKzIwNjMsMTAgQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRj
aF9jaGFyLCBPcFN3aXRjaENoYXIsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQog
ICAgIGdldHUoc2l6ZSwgT3BTd2l0Y2hDaGFyLCBtX3RhYmxlSW5kZXgsIHQzKQogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQxLCB0MCkKICAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgotICAgIG11
bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKLSAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVE
YXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAg
IGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDJdLCB0MgorICAgIGxvYWRwIFVubGlu
a2VkQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBVbmxpbmtl
ZFNpbXBsZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURh
dGE6Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSAr
IFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJp
bmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBiYm5lcSBKU0Nl
bGw6Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaApAQCAt
MjA3OCw4ICsyMDgwLDggQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9jaGFyLCBPcFN3aXRj
aENoYXIsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogLm9wU3dpdGNoQ2hhcjhC
aXQ6CiAgICAgbG9hZGIgW3QwXSwgdDAKIC5vcFN3aXRjaENoYXJSZWFkeToKLSAgICBzdWJpIFNp
bXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKLSAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJy
YW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5Ojpt
X2RhdGFbdDJdLCB0MgorICAgIHN1YmkgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fbWluW3Qy
XSwgdDAKKyAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRz
ICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwg
dDIKICAgICBidHB6IHQyLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBiaWFlcSB0MCwg
UmVmQ291bnRlZEFycmF5U3RvcmFnZU5vbk51bGxTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hh
ckZhbGxUaHJvdWdoCiAgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDUw
ZTJjMzg1NjlmZDM0YzU0NjA5MDJmMDljNjQzMjg1ODdkYmFjNzIuLjE0YWQyYTQ5N2ZiMGE3YWY5
MzdiMjczYTcwZDBhOWZiYWUzYmQyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yMTc4LDEzICsyMTc4LDE0
IEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfaW1tLCBPcFN3aXRjaEltbSwgbWFjcm8gKHNp
emUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgZ2V0dShzaXplLCBPcFN3aXRjaEltbSwgbV90
YWJsZUluZGV4LCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MSkK
ICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFy
ZURhdGFbdDJdLCB0MgotICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKLSAgICBs
b2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbdDJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDJd
LCB0MgorICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAg
ICBtdWxpIHNpemVvZiBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBVbmxp
bmtlZENvZGVCbG9jazo6UmFyZURhdGE6Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4
ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKICAg
ICBhZGRwIHQzLCB0MgogICAgIGJxYiB0MSwgbnVtYmVyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQK
LSAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDEKLSAgICBsb2FkcCBTaW1wbGVK
dW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291
bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgorICAgIHN1YmkgVW5saW5rZWRTaW1wbGVKdW1wVGFi
bGU6Om1fbWluW3QyXSwgdDEKKyAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9i
cmFuY2hPZmZzZXRzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6
bV9kYXRhW3QyXSwgdDIKICAgICBidHB6IHQyLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAogICAg
IGJpYWVxIHQxLCBSZWZDb3VudGVkQXJyYXlTdG9yYWdlTm9uTnVsbFNpemVPZmZzZXRbdDJdLCAu
b3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAogICAgIGxvYWRpcyBbdDIsIHQxLCA0XSwgdDEKQEAgLTIy
MDcsOSArMjIwOCwxMCBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNo
Q2hhciwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgZ2V0dShzaXplLCBP
cFN3aXRjaENoYXIsIG1fdGFibGVJbmRleCwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzaXplLCB0MiwgdDEpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCi0gICAgbG9hZHAg
Q29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKLSAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1w
VGFibGUsIHQzCi0gICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9zd2l0Y2hKdW1wVGFi
bGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
dW5saW5rZWRDb2RlW3QyXSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9yYXJl
RGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUsIHQz
CisgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNo
SnVtcFRhYmxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1f
ZGF0YVt0Ml0sIHQyCiAgICAgYWRkcCB0MywgdDIKICAgICBidHFueiB0MSwgbm90Q2VsbE1hc2ss
IC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QxXSwg
U3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCkBAIC0yMjIzLDggKzIyMjUsOCBA
QCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoQ2hhciwgbWFjcm8gKHNp
emUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAub3BTd2l0Y2hDaGFyOEJpdDoKICAgICBsb2FkYiBb
dDFdLCB0MAogLm9wU3dpdGNoQ2hhclJlYWR5OgotICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjpt
aW5bdDJdLCB0MAotICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIEZp
eGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisg
ICAgc3ViaSBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9taW5bdDJdLCB0MAorICAgIGxvYWRw
IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlOjptX2JyYW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6
bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgogICAgIGJ0cHogdDIs
IC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJpYWVxIHQwLCBSZWZDb3VudGVkQXJyYXlT
dG9yYWdlTm9uTnVsbFNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAg
ICBsb2FkaXMgW3QyLCB0MCwgNF0sIHQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggNDNmZDQ0NzQ0YzIwYmQwMzUxMzU5MjY1MjE1NzJkMzJm
MTAyZTRmMS4uNWQ1YzBhOGM2YjYxNTY4OTg4ZmIzYjRiM2IxZjZiZjAwZjM2ZDI1NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg2NSwx
NCArODY1LDE0IEBAIGNsYXNzIENhY2hlZFNpbXBsZUp1bXBUYWJsZSA6IHB1YmxpYyBDYWNoZWRP
YmplY3Q8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYganVtcFRh
YmxlKQogICAgIHsKLSAgICAgICAgbV9taW4gPSBqdW1wVGFibGUubWluOwotICAgICAgICBtX2Jy
YW5jaE9mZnNldHMuZW5jb2RlKGVuY29kZXIsIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzKTsKKyAg
ICAgICAgbV9taW4gPSBqdW1wVGFibGUubV9taW47CisgICAgICAgIG1fYnJhbmNoT2Zmc2V0cy5l
bmNvZGUoZW5jb2RlciwganVtcFRhYmxlLm1fYnJhbmNoT2Zmc2V0cyk7CiAgICAgfQogCiAgICAg
dm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1
bXBUYWJsZSkgY29uc3QKICAgICB7Ci0gICAgICAgIGp1bXBUYWJsZS5taW4gPSBtX21pbjsKLSAg
ICAgICAgbV9icmFuY2hPZmZzZXRzLmRlY29kZShkZWNvZGVyLCBqdW1wVGFibGUuYnJhbmNoT2Zm
c2V0cyk7CisgICAgICAgIGp1bXBUYWJsZS5tX21pbiA9IG1fbWluOworICAgICAgICBtX2JyYW5j
aE9mZnNldHMuZGVjb2RlKGRlY29kZXIsIGp1bXBUYWJsZS5tX2JyYW5jaE9mZnNldHMpOwogICAg
IH0KIAogcHJpdmF0ZToKQEAgLTk1MCw3ICs5NTAsNyBAQCBjbGFzcyBDYWNoZWRDb2RlQmxvY2tS
YXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRh
PgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVubGlua2VkQ29kZUJs
b2NrOjpSYXJlRGF0YSYgcmFyZURhdGEpCiAgICAgewogICAgICAgICBtX2V4Y2VwdGlvbkhhbmRs
ZXJzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX2V4Y2VwdGlvbkhhbmRsZXJzKTsKLSAgICAg
ICAgbV9zd2l0Y2hKdW1wVGFibGVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3N3aXRjaEp1
bXBUYWJsZXMpOworICAgICAgICBtX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcy5lbmNvZGUoZW5j
b2RlciwgcmFyZURhdGEubV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMpOwogICAgICAgICBtX3Vu
bGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV91
bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMpOwogICAgICAgICBtX2V4cHJlc3Npb25JbmZv
RmF0UG9zaXRpb25zLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX2V4cHJlc3Npb25JbmZvRmF0
UG9zaXRpb25zKTsKICAgICAgICAgbV90eXBlUHJvZmlsZXJJbmZvTWFwLmVuY29kZShlbmNvZGVy
LCByYXJlRGF0YS5tX3R5cGVQcm9maWxlckluZm9NYXApOwpAQCAtOTY1LDcgKzk2NSw3IEBAIGNs
YXNzIENhY2hlZENvZGVCbG9ja1JhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtl
ZENvZGVCbG9jazo6UmFyZURhdGE+CiAgICAgewogICAgICAgICBVbmxpbmtlZENvZGVCbG9jazo6
UmFyZURhdGEqIHJhcmVEYXRhID0gbmV3IFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YSB7IH07
CiAgICAgICAgIG1fZXhjZXB0aW9uSGFuZGxlcnMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5t
X2V4Y2VwdGlvbkhhbmRsZXJzKTsKLSAgICAgICAgbV9zd2l0Y2hKdW1wVGFibGVzLmRlY29kZShk
ZWNvZGVyLCByYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzKTsKKyAgICAgICAgbV91bmxpbmtl
ZFN3aXRjaEp1bXBUYWJsZXMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5tX3VubGlua2VkU3dp
dGNoSnVtcFRhYmxlcyk7CiAgICAgICAgIG1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVz
LmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJs
ZXMpOwogICAgICAgICBtX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zLmRlY29kZShkZWNvZGVy
LCByYXJlRGF0YS0+bV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucyk7CiAgICAgICAgIG1fdHlw
ZVByb2ZpbGVySW5mb01hcC5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVy
SW5mb01hcCk7CkBAIC05NzksNyArOTc5LDcgQEAgY2xhc3MgQ2FjaGVkQ29kZUJsb2NrUmFyZURh
dGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YT4KIAog
cHJpdmF0ZToKICAgICBDYWNoZWRWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4gbV9leGNlcHRp
b25IYW5kbGVyczsKLSAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkU2ltcGxlSnVtcFRhYmxlPiBtX3N3
aXRjaEp1bXBUYWJsZXM7CisgICAgQ2FjaGVkVmVjdG9yPENhY2hlZFNpbXBsZUp1bXBUYWJsZT4g
bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXM7CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZFN0cmlu
Z0p1bXBUYWJsZT4gbV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAgICAgQ2FjaGVk
VmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9uPiBtX2V4cHJlc3Npb25JbmZv
RmF0UG9zaXRpb25zOwogICAgIENhY2hlZEhhc2hNYXA8dW5zaWduZWQsIFVubGlua2VkQ29kZUJs
b2NrOjpSYXJlRGF0YTo6VHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdlPiBtX3R5cGVQcm9maWxl
ckluZm9NYXA7Cg==
</data>
<flag name="commit-queue"
          id="446246"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>