<?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>217442</bug_id>
          
          <creation_ts>2020-10-07 13:17:17 -0700</creation_ts>
          <short_desc>Constructing a AudioWorkletNode should construct an AudioWorkletProcessor on the Worklet thread</short_desc>
          <delta_ts>2020-10-07 17:28:06 -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>WebKit2</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>
          
          <blocked>217058</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1695647</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-07 13:17:17 -0700</bug_when>
    <thetext>Constructing a AudioWorkletNode should construct an AudioWorkletProcessor on the Worklet thread:
- https://www.w3.org/TR/webaudio/#AudioWorkletNode-constructors (Step 13)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695656</commentid>
    <comment_count>1</comment_count>
      <attachid>410773</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-07 13:41:15 -0700</bug_when>
    <thetext>Created attachment 410773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695657</commentid>
    <comment_count>2</comment_count>
      <attachid>410774</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-07 13:44:09 -0700</bug_when>
    <thetext>Created attachment 410774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695685</commentid>
    <comment_count>3</comment_count>
      <attachid>410774</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-10-07 14:39:22 -0700</bug_when>
    <thetext>Comment on attachment 410774
Patch

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

&gt; Source/WebCore/Modules/webaudio/AudioWorkletNode.cpp:144
&gt;  AudioWorkletNode::~AudioWorkletNode()
&gt;  {
&gt; +    ASSERT(isMainThread());
&gt; +    if (m_processor) {
&gt; +        if (auto* workletProxy = context().audioWorklet().proxy())
&gt; +            workletProxy-&gt;postTaskForModeToWorkletGlobalScope([m_processor = WTFMove(m_processor)](ScriptExecutionContext&amp;) { }, WorkerRunLoop::defaultMode());
&gt; +    }
&gt;      uninitialize();
&gt;  }
&gt;  
&gt; +void AudioWorkletNode::setProcessor(RefPtr&lt;AudioWorkletProcessor&gt;&amp;&amp; processor)
&gt; +{
&gt; +    ASSERT(!isMainThread());
&gt; +    m_processor = WTFMove(processor);
&gt; +}

This doesn&apos;t look right to me. m_processor is set on the worklet thread but checked on the main thread, which seems like a data race. Maybe it&apos;s not a real problem in practice because something guarantees synchronization before destruction. But I&apos;d prefer not to have think that hard.

Can we have the worklet thread do the construction and then have the main thread do the assignment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695689</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-07 14:42:22 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #3)
&gt; Comment on attachment 410774 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410774&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/AudioWorkletNode.cpp:144
&gt; &gt;  AudioWorkletNode::~AudioWorkletNode()
&gt; &gt;  {
&gt; &gt; +    ASSERT(isMainThread());
&gt; &gt; +    if (m_processor) {
&gt; &gt; +        if (auto* workletProxy = context().audioWorklet().proxy())
&gt; &gt; +            workletProxy-&gt;postTaskForModeToWorkletGlobalScope([m_processor = WTFMove(m_processor)](ScriptExecutionContext&amp;) { }, WorkerRunLoop::defaultMode());
&gt; &gt; +    }
&gt; &gt;      uninitialize();
&gt; &gt;  }
&gt; &gt;  
&gt; &gt; +void AudioWorkletNode::setProcessor(RefPtr&lt;AudioWorkletProcessor&gt;&amp;&amp; processor)
&gt; &gt; +{
&gt; &gt; +    ASSERT(!isMainThread());
&gt; &gt; +    m_processor = WTFMove(processor);
&gt; &gt; +}
&gt; 
&gt; This doesn&apos;t look right to me. m_processor is set on the worklet thread but
&gt; checked on the main thread, which seems like a data race. Maybe it&apos;s not a
&gt; real problem in practice because something guarantees synchronization before
&gt; destruction. But I&apos;d prefer not to have think that hard.
&gt; 
&gt; Can we have the worklet thread do the construction and then have the main
&gt; thread do the assignment?

I don&apos;t think your proposal is better for the long term since AudioWorkletNode::process() will use m_processor on the rendering thread to do audio processing.

How about I add a Lock to synchronize?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695705</commentid>
    <comment_count>5</comment_count>
      <attachid>410789</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-07 15:06:01 -0700</bug_when>
    <thetext>Created attachment 410789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695728</commentid>
    <comment_count>6</comment_count>
      <attachid>410789</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-10-07 15:56:51 -0700</bug_when>
    <thetext>Comment on attachment 410789
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695732</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-10-07 16:00:40 -0700</bug_when>
    <thetext>&gt; I don&apos;t think your proposal is better for the long term since
&gt; AudioWorkletNode::process() will use m_processor on the rendering thread to
&gt; do audio processing.
&gt; 
&gt; How about I add a Lock to synchronize?

I guess I don&apos;t have the full context, so I&apos;ll try to evaluate in future patches.

If AudioWorkletNode::process() might need m_processor right away, and can&apos;t wait for AudioWorklet::createProcessor() to call back to the main thread, it sounds like the right solution might be for AudioWorklet::createProcessor to wait synchronously on a semaphore until the processor has been created. Otherwise, a lock may have the same issues as a post-back to the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695739</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-07 16:31:30 -0700</bug_when>
    <thetext>Committed r268161: &lt;https://trac.webkit.org/changeset/268161&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410789.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695741</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-07 16:32:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/70070509&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695754</commentid>
    <comment_count>10</comment_count>
      <attachid>410789</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-10-07 17:09:22 -0700</bug_when>
    <thetext>Comment on attachment 410789
Patch

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

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:211
&gt; +#if ENABLE(WEB_AUDIO)

AppleWin and WinCairo debug builder can&apos;t compile this. I&apos;m suprised by using #if in ASSERT condition.

https://build.webkit.org/builders/Apple%20Win%2010%20Debug%20%28Build%29/builds/16462

&gt; C:\cygwin\home\buildbot\worker\win10-debug\build\Source\WebCore\dom/ScriptExecutionContext.cpp(214,1): error C2121: &apos;#&apos;: invalid character: possibly the result of a macro expansion (compiling source file C:\cygwin\home\buildbot\worker\win10-debug\build\WebKitBuild\Debug\DerivedSources\WebCore\unified-sources\UnifiedSource-be65d27a-16.cpp) [C:\cygwin\home\buildbot\worker\win10-debug\build\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695756</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-07 17:17:05 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #10)
&gt; Comment on attachment 410789 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410789&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ScriptExecutionContext.cpp:211
&gt; &gt; +#if ENABLE(WEB_AUDIO)
&gt; 
&gt; AppleWin and WinCairo debug builder can&apos;t compile this. I&apos;m suprised by
&gt; using #if in ASSERT condition.
&gt; 
&gt; https://build.webkit.org/builders/Apple%20Win%2010%20Debug%20%28Build%29/
&gt; builds/16462
&gt; 
&gt; &gt; C:\cygwin\home\buildbot\worker\win10-debug\build\Source\WebCore\dom/ScriptExecutionContext.cpp(214,1): error C2121: &apos;#&apos;: invalid character: possibly the result of a macro expansion (compiling source file C:\cygwin\home\buildbot\worker\win10-debug\build\WebKitBuild\Debug\DerivedSources\WebCore\unified-sources\UnifiedSource-be65d27a-16.cpp) [C:\cygwin\home\buildbot\worker\win10-debug\build\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]

Ok. Looking into fixing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695759</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-07 17:28:06 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #11)
&gt; (In reply to Fujii Hironori from comment #10)
&gt; &gt; Comment on attachment 410789 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=410789&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/ScriptExecutionContext.cpp:211
&gt; &gt; &gt; +#if ENABLE(WEB_AUDIO)
&gt; &gt; 
&gt; &gt; AppleWin and WinCairo debug builder can&apos;t compile this. I&apos;m suprised by
&gt; &gt; using #if in ASSERT condition.
&gt; &gt; 
&gt; &gt; https://build.webkit.org/builders/Apple%20Win%2010%20Debug%20%28Build%29/
&gt; &gt; builds/16462
&gt; &gt; 
&gt; &gt; &gt; C:\cygwin\home\buildbot\worker\win10-debug\build\Source\WebCore\dom/ScriptExecutionContext.cpp(214,1): error C2121: &apos;#&apos;: invalid character: possibly the result of a macro expansion (compiling source file C:\cygwin\home\buildbot\worker\win10-debug\build\WebKitBuild\Debug\DerivedSources\WebCore\unified-sources\UnifiedSource-be65d27a-16.cpp) [C:\cygwin\home\buildbot\worker\win10-debug\build\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]
&gt; 
&gt; Ok. Looking into fixing it.

Follow-up build fix in &lt;https://trac.webkit.org/changeset/268164&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410773</attachid>
            <date>2020-10-07 13:41:15 -0700</date>
            <delta_ts>2020-10-07 13:44:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217442-20201007134115.patch</filename>
            <type>text/plain</type>
            <size>63525</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmRmMTY5ZTg5YzAzNWRh
YTA5NzFkODFkMzg4NDc4Nzk1MmI3YzE0Yi4uMDlhNDAyNWM3MzAwNTA5OGNlZjBhNWE4YWJmN2E1
MGJkM2ZkOTYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAyMC0xMC0wNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIENvbnN0cnVjdGluZyBhIEF1
ZGlvV29ya2xldE5vZGUgc2hvdWxkIGNvbnN0cnVjdCBhbiBBdWRpb1dvcmtsZXRQcm9jZXNzb3Ig
b24gdGhlIFdvcmtsZXQgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTc0NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDb25zdHJ1Y3RpbmcgYSBBdWRpb1dvcmtsZXROb2RlIHNob3VsZCBjb25z
dHJ1Y3QgYW4gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIG9uIHRoZSBXb3JrbGV0IHRocmVhZDoKKyAg
ICAgICAgLSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXVkaW8vI0F1ZGlvV29ya2xldE5vZGUt
Y29uc3RydWN0b3JzIChTdGVwIDEzKQorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmViYXNlbGlu
ZWQgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXQ6OmNyZWF0ZVByb2Nlc3Nv
cik6CisgICAgICAgIEFkZCBjcmVhdGVQcm9jZXNzb3IoKSBmdW5jdGlvbiB0byBBdWRpb1dvcmts
ZXQgd2hpY2ggdGFrZXMgY2FyZSBvZiBob3BwaW5nIHRvIHRoZSB3b3JrbGV0IHRocmVhZAorICAg
ICAgICBpbiBvcmRlciB0byBjYWxsIGNyZWF0ZVByb2Nlc3NvcigpIG9uIHRoZSBBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Lmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGVQ
cm9jZXNzb3IpOgorICAgICAgICBDb25zdHJ1Y3QgYW4gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLCBh
cyBzcGVjaWZpZWQgaGVyZToKKyAgICAgICAgLSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXVk
aW8vI0F1ZGlvV29ya2xldFByb2Nlc3Nvci1pbnN0YW50aWF0aW9uCisKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjp0YWtlUGVuZGluZ1Byb2Nlc3NvckNvbnN0cnVj
dGlvbkRhdGEpOgorICAgICAgICBBIGZ1bmN0aW9uIHRvIHRha2UgdGhlIHBlbmRpbmcgUHJvY2Vz
c29yQ29uc3RydWN0aW9uRGF0YS4gVGhpcyBjb25zdHJ1Y3Rpb24KKyAgICAgICAgZGF0YSBnZXRz
IGluaXRpYWxpemVkIGluIGNyZWF0ZVByb2Nlc3NvcigpIGFuZCBnZXRzIGNvbnN1bWVkIGJ5Cisg
ICAgICAgIEF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmg6CisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Xb3JrbGV0Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgSW1wcm92ZSBBdWRpb1dvcmtsZXROb2Rl
IGNvbnN0cnVjdG9yIHRvIGFjdHVhbGx5IGNhdXNlIHRoZSBjb25zdHJ1Y3Rpb24gb2YKKyAgICAg
ICAgdGhlIEF1ZGlvV29ya2xldFByb2Nlc3NvciBvbiB0aGUgd29ya2xldCB0aHJlYWQsIHBhc3Np
bmcgaXQgdGhlIG9wdGlvbnMgYW5kCisgICAgICAgIHRoZSBNZXNzYWdlUG9ydC4gVGhpcyBpcyBh
cyBwZXIgdGhlIHNwZWNpZmljYXRpb24gaGVyZToKKyAgICAgICAgLSBodHRwczovL3d3dy53My5v
cmcvVFIvd2ViYXVkaW8vI0F1ZGlvV29ya2xldE5vZGUtY29uc3RydWN0b3JzCisKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvV29ya2xldE5vZGU6OkF1ZGlvV29ya2xldE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Xb3JrbGV0Tm9kZTo6fkF1ZGlvV29ya2xldE5vZGUpOgorCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1dvcmtsZXROb2RlOjpzZXRQcm9jZXNzb3IpOgorICAgICAgICBPbmNl
IHRoZSBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgaXMgY3JlYXRlZCBvbiB0aGUgd29ya2xldCB0aHJl
YWQsIHRoaXMgZ2V0cworICAgICAgICBjYWxsZWQgc28gdGhhdCB0aGUgQXVkaW9Xb3JrbGV0Tm9k
ZSBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIHByb2Nlc3Nvci4gVGhpcworICAgICAgICB3aWxsIGJl
IG5lZWRlZCBsYXRlciBvbiBvbmNlIEF1ZGlvV29ya2xldE5vZGU6OnByb2Nlc3MoKSBzdGFydHMg
ZG9pbmcgYXVkaW8KKyAgICAgICAgcHJvY2Vzc2luZyB0aHJvdWdoIHRoZSBBdWRpb1dvcmtsZXRQ
cm9jZXNzb3IuCisKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE5vZGU6OnByb2Nlc3Mp
OgorICAgICAgICBJbXByb3ZlIGNvbW1lbnQuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldE5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE5vZGUuaWRsOgorICAgICAgICBQYXNzIHRoZSBnbG9iYWwgb2JqZWN0IHRvIHRoZSBjb25z
dHJ1Y3Rvci4gSXQgaXMgbmVlZGVkIG5vdyB0aGF0IHRoZSBjb25zdHJ1Y3RvcgorICAgICAgICBz
ZXJpYWxpemVzIHNjcmlwdCB2YWx1ZXMgdG8gcGFzcyB0aGVtIHRvIHRoZSB3b3JrbGV0IHRocmVh
ZC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMu
aWRsOgorICAgICAgICBBZGQgW0pTR2VuZXJhdGVUb0pTT2JqZWN0XSB0byBBdWRpb1dvcmtsZXRO
b2RlT3B0aW9ucyBkaWN0aW9uYXJ5IHNvIHRoYXQgYQorICAgICAgICBjb252ZXJ0RGljdGlvbmFy
eVRvSlMoKSBmdW5jdGlvbiBnZXRzIGdlbmVyYXRlZCBmb3IgdGhpcyBkaWN0aW9uYXJ5LiBUaGlz
IGZ1bmN0aW9uCisgICAgICAgIGlzIGNhbGxlZCBieSB0aGUgQXVkaW9Xb3JrbGV0Tm9kZSBjb25z
dHJ1Y3Rvci4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6QXVkaW9Xb3JrbGV0
UHJvY2Vzc29yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nl
c3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpuYW1lIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6cG9ydCk6Cisg
ICAgICAgIEltcGxlbWVudCBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgY29uc3RydWN0b3Igc28gdGhh
dCBpdHMgcmV0cmlldmVzIHRoZSBwZW5kaW5nCisgICAgICAgIGNvbnN0cnVjdGlvbiBkYXRhIGZy
b20gdGhlIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlIGFuZCBwcm9wZXJseSBpbml0aWFsaXplcwor
ICAgICAgICBpdHMgbmFtZSBhbmQgcG9ydC4gVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoaXMgaXMg
aGVyZToKKyAgICAgICAgLSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXVkaW8vI2RvbS1hdWRp
b3dvcmtsZXRwcm9jZXNzb3ItYXVkaW93b3JrbGV0cHJvY2Vzc29yCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5pZGw6CisgICAgICAgIEluZGljYXRl
IHRoYXQgdGhlIGNvbnN0cnVjdG9yIG1heSB0aHJvdyBhbiBleGNlcHRpb24gYXMgcGVyIHRoZSBz
cGVjaWZpY2F0aW9uOgorICAgICAgICAtIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdWRpby8j
ZG9tLWF1ZGlvd29ya2xldHByb2Nlc3Nvci1hdWRpb3dvcmtsZXRwcm9jZXNzb3IgKFN0ZXAgMSkK
KyAgICAgICAgQWxzbyBwYXNzIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRvIHRoZSBjb25z
dHJ1Y3RvciBzaW5jZSB0aGUgY29uc3RydWN0b3IKKyAgICAgICAgbmVlZHMgdG8gcmV0cmlldmUg
dGhlIHBlbmRpbmcgY29uc3RydWN0aW9uIGRhdGEgZnJvbSBpdDoKKyAgICAgICAgLSBodHRwczov
L3d3dy53My5vcmcvVFIvd2ViYXVkaW8vI2RvbS1hdWRpb3dvcmtsZXRwcm9jZXNzb3ItYXVkaW93
b3JrbGV0cHJvY2Vzc29yIChTdGVwIDEpCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEuaDoKKworICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YTo6QXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yQ29uc3RydWN0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRQ
cm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE6OnBvcnQgY29uc3QpOgorICAg
ICAgICBBZGQgY2xhc3MgdG8gd3JhcCB0aGUgQXVkaW9Xb3JrbGV0UHJvY2VzcydzIGNvbnN0cnVj
dGlvbiBkYXRhOgorICAgICAgICAtIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdWRpby8jcGVu
ZGluZy1wcm9jZXNzb3ItY29uc3RydWN0aW9uLWRhdGEKKworICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmg6CisgICAgICAgIE1vdmUgVGhyZWFkU2FmZVJlZkNv
dW50ZWQgZnJvbSB0aGlzIGNsYXNzIHRvIHRoZSBwYXJlbnQgY2xhc3MgKFdvcmtlck9yV29ya2xl
dFRocmVhZCkKKyAgICAgICAgc2luY2UgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIg
bmVlZHMgdG8gcHJvdGVjdCBhIFdvcmtlck9yV29ya2xldFRocmVhZCBub3cuCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgaGVh
ZGVyIHRvIHByb2plY3QuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
UHJvcGVybHkgaGFuZGxlIFdvcmtsZXRHbG9iYWxTY29wZS4KKworICAgICAgICAqIGRvbS9NZXNz
YWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQu
aDoKKyAgICAgICAgVHdlYWsgTWVzc2FnZVBvcnQgQVBJIHRvIHN1cHBvcnQgZGlzZW50YW5nbGlu
Zy9lbnRhbmdsaW5nIGEgc2luZ2xlCisgICAgICAgIE1lc3NhZ2VQb3J0LiBQcmV2aW91c2x5IHdl
IGhhZCB0byBwYXNzIGFuIGFycmF5IG9mIHBvcnRzLgorCisgICAgICAgICogZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6Y3JlYXRlZE1lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KToKKyAgICAgICAgVHdlYWsgYXNzZXJ0
aW9ucyB0byBoYW5kbGUgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVzLgorCisgICAgICAgICogZG9t
L21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQpOgorICAgICAg
ICAqIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaDoKKyAgICAgICAg
KiBkb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpXb3Jr
ZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1v
dGVQb3J0Rm9yQWN0aXZpdHkpOgorICAgICAgICAqIGRvbS9tZXNzYWdlcG9ydHMvV29ya2VyTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaDoKKyAgICAgICAgVXBkYXRlIFdvcmtlck1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyIHRvIHVzZSBXb3JrZXJPcldvcmtsZXRTY29wZSBpbnN0ZWFkCisg
ICAgICAgIG9yIFdvcmtlckdsb2JhbFNjb3BlLiBUaGlzIGFsbG93cyB1cyB0byByZXVzZSB0aGlz
IGNsYXNzIGZvciBBdWRpb1dvcmtsZXRzCisgICAgICAgIHNvIHRoYXQgTWVzc2FnZVBvcnQgY29t
bXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBtYWluIHRocmVhZCBhbmQgdGhlIHdvcmtsZXQKKyAgICAg
ICAgdGhyZWFkIG5vdyB3b3Jrcy4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0
VGhyZWFkLmg6CisgICAgICAgIE1vdmUgVGhyZWFkU2FmZVJlZkNvdW50ZWQgZnJvbSBzdWJjbGFz
c2VzIHRvIHRoaXMgY2xhc3Mgc28gdGhhdAorICAgICAgICBXb3JrZXJNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlciBjYW4gcHJvdGVjdCBhIFdvcmtlck9yV29ya2xldFRocmVhZC4KKworICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bm90
aWZ5RmluaXNoZWQpOgorICAgICAgICBPbmx5IGV2YWx1YXRlIHRoZSBzY3JpcHQgaWYgd2UgaGF2
ZSBub3QgYWxyZWFkeSBldmFsdWF0ZWQgaXQgaW4gdGhpcyB3b3JrbGV0LgorICAgICAgICBJIGFt
IGFzc3VtaW5nIHRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugd2UgYXJlIG5vdCB0cmVhdGluZyB0aGUg
c2NyaXB0IGFzIGEgbW9kdWxlCisgICAgICAgIHlldCAoZHVlIHRvIGxhY2sgb2Ygc3VwcG9ydCBp
biB3b3JrZXJzKS4gV2l0aG91dCB0aGlzIGNoYW5nZXMsIHRoZSB3b3JrbGV0J3MKKyAgICAgICAg
c2NyaXB0IHdvdWxkIGdldCBpbiBhIGJhZCBzdGF0ZSB3aGVuIGltcG9ydGluZyBzZXZlcmFsIHRp
bWVzIHRoZSBzYW1lIG1vZHVsZQorICAgICAgICAod2hpY2ggaXMgc29tZXRoaW5nIHRoZSBXUFQg
dGVzdHMgZG8pLgorCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6Om1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyKToKKyAgICAgICAgSW5zdGFudGlhdGUgV29ya2VyTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIgaWYgbmVlZGVkLiBUaGlzIGlzIG5lZWRlZCBmb3IKKyAgICAg
ICAgTWVzc2FnZVBvcnQgY29tbXVuaWNhdGlvbiBpcyBBdWRpb1dvcmtsZXRzLgorCisgICAgICAg
ICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisKIDIwMjAtMTAtMDcgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtGbG9hdGluZ10gTW92ZSBG
bG9hdGluZ1N0YXRlOjp0b3AvYm90dG9tIGZ1bmN0aW9ucyBvdmVyIHRvIEZsb2F0aW5nQ29udGV4
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXQuY3Bw
CmluZGV4IDI0ZWQ0Yzg5NjhkN2FiNDdiNDQzNTIxNDY5YmRhOWJkMzBhNjc4NzcuLmYzZWEyMmUx
YTU0NmM2Mzk4ZDgzNzIzOTZmMWFlMjNhMmYyYzQwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldC5jcHAKQEAgLTMxLDggKzMxLDExIEBACiAj
aWYgRU5BQkxFKFdFQl9BVURJTykKICNpbmNsdWRlICJBdWRpb1dvcmtsZXQuaCIKIAorI2luY2x1
ZGUgIkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0TWVz
c2FnaW5nUHJveHkuaCIKKyNpbmNsdWRlICJBdWRpb1dvcmtsZXROb2RlLmgiCiAjaW5jbHVkZSAi
QmFzZUF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MSw2
ICs3NCwyMCBAQCBCYXNlQXVkaW9Db250ZXh0KiBBdWRpb1dvcmtsZXQ6OmF1ZGlvQ29udGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fYXVkaW9Db250ZXh0LmdldCgpOwogfQogCit2b2lkIEF1ZGlv
V29ya2xldDo6Y3JlYXRlUHJvY2Vzc29yKGNvbnN0IFN0cmluZyYgbmFtZSwgVHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCBwb3J0LCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG9wdGlvbnMsIEF1
ZGlvV29ya2xldE5vZGUmIG5vZGUpCit7CisgICAgVU5VU0VEX1BBUkFNKG5hbWUpOworICAgIGF1
dG8qIHByb3h5ID0gdGhpcy0+cHJveHkoKTsKKyAgICBBU1NFUlQocHJveHkpOworICAgIGlmICgh
cHJveHkpCisgICAgICAgIHJldHVybjsKKworICAgIHByb3h5LT5wb3N0VGFza0Zvck1vZGVUb1dv
cmtsZXRHbG9iYWxTY29wZShbbmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCksIHBvcnQsIG9wdGlv
bnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBub2RlID0gbWFrZVJlZihub2RlKV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIG5vZGUtPnNldFByb2Nlc3Nv
cihkb3duY2FzdDxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkuY3JlYXRlUHJvY2Vz
c29yKG5hbWUsIHBvcnQsIFdURk1vdmUob3B0aW9ucykpKTsKKyAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbbm9kZSA9IFdURk1vdmUobm9kZSldIHsgfSk7CisgICAgfSwgV29ya2VyUnVuTG9vcDo6
ZGVmYXVsdE1vZGUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXQuaAppbmRleCA5YWZjYmYxMDEyNDk4N2IyNGRiOTcxYTdlMDcyNDQ4ZjdmMzIy
ODhhLi43MjExZjZjZjZmZGI0YzY0Y2QzNThkMWE0NzM1ZjE2MzEzNDY4NzgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0LmgKQEAgLTI5LDExICsy
OSwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQorI2luY2x1ZGUg
Ik1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiV29ya2xldC5oIgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXVkaW9Xb3JrbGV0Tm9kZTsK
IGNsYXNzIEJhc2VBdWRpb0NvbnRleHQ7CiBjbGFzcyBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94
eTsKIApAQCAtNDUsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgQXVkaW9Xb3JrbGV0TWVzc2FnaW5n
UHJveHkqIHByb3h5KCkgY29uc3Q7CiAgICAgQmFzZUF1ZGlvQ29udGV4dCogYXVkaW9Db250ZXh0
KCkgY29uc3Q7CiAKKyAgICB2b2lkIGNyZWF0ZVByb2Nlc3Nvcihjb25zdCBTdHJpbmcmIG5hbWUs
IFRyYW5zZmVycmVkTWVzc2FnZVBvcnQsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIEF1
ZGlvV29ya2xldE5vZGUmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBdWRpb1dvcmtsZXQo
QmFzZUF1ZGlvQ29udGV4dCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGI4NTIzMDhm
ZmY1OThiM2E4MTEzZjAxY2MzNmQyMmY2YjIzMGFmMmIuLmQ2Y2IzYWNiOWU3NjE5MzE0YTc2ZDNm
ZmQ1Zjk4YWM3MGMzNzBjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0zNCw2ICszNCw4
IEBACiAjaW5jbHVkZSAiQXVkaW9QYXJhbURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJBdWRpb1dv
cmtsZXQuaCIKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oIgorI2luY2x1
ZGUgIkF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJK
U0F1ZGlvV29ya2xldFByb2Nlc3Nvci5oIgogI2luY2x1ZGUgIkpTQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKICNpbmNsdWRlIDx3
dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KQEAgLTEwOSw2ICsxMTEsMzUgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUHJvY2Vzc29yKFN0cmluZyYm
IG5hbWUsIFJlZjwKICAgICByZXR1cm4geyB9OwogfQogCitSZWZQdHI8QXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yPiBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlUHJvY2Vzc29yKGNvbnN0IFN0
cmluZyYgbmFtZSwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBSZWY8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmIG9wdGlvbnMpCit7CisgICAgYXV0byBjb25zdHJ1Y3RvciA9IG1fcHJvY2Vz
c29yQ29uc3RydWN0b3JNYXAuZ2V0KG5hbWUpOworICAgIEFTU0VSVChjb25zdHJ1Y3Rvcik7Cisg
ICAgaWYgKCFjb25zdHJ1Y3RvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBKU0M6
OkpTT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0gY29uc3RydWN0b3ItPmNhbGxiYWNrRGF0YSgpLT5j
YWxsYmFjaygpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ29uc3RydWN0b3ItPmdsb2Jh
bE9iamVjdCgpOworICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrIHsgZ2xvYmFsT2JqZWN0IH07CisKKyAgICBtX3BlbmRpbmdQcm9jZXNzb3JDb25zdHJ1
Y3Rpb25EYXRhID0gbWFrZVVuaXF1ZTxBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25E
YXRhPihTdHJpbmcgeyBuYW1lIH0sIE1lc3NhZ2VQb3J0OjplbnRhbmdsZSgqdGhpcywgV1RGTW92
ZShwb3J0KSkpOworCisgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGF1
dG8gYXJnID0gb3B0aW9ucy0+ZGVzZXJpYWxpemUoKmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpOb25UaHJvd2luZyk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgYXJncy5hcHBlbmQoYXJnKTsKKyAgICBBU1NF
UlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKKworICAgIGF1dG8qIG9iamVjdCA9IEpTQzo6Y29u
c3RydWN0KGdsb2JhbE9iamVjdCwganNDb25zdHJ1Y3RvciwgYXJncywgIkZhaWxlZCB0byBjb25z
dHJ1Y3QgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIik7CisgICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0
aW9uKCkgPT0gIW9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CisKKyAgICBhdXRvJiBqc1Byb2Nlc3NvciA9ICpKU0M6OmpzQ2FzdDxKU0F1ZGlvV29ya2xl
dFByb2Nlc3Nvcio+KG9iamVjdCk7CisgICAgcmV0dXJuICZqc1Byb2Nlc3Nvci53cmFwcGVkKCk7
Cit9CisKIHZvaWQgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OnByZXBhcmVGb3JUZXJtaW5hdGlv
bigpCiB7CiAgICAgaWYgKGF1dG8qIGRlZmF1bHRUYXNrR3JvdXAgPSB0aGlzLT5kZWZhdWx0VGFz
a0dyb3VwKCkpCkBAIC0xMzAsNiArMTYxLDExIEBAIHZvaWQgQXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGU6OnBvc3RUYXNrKFRhc2smJiB0YXNrKQogICAgIHRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFz
ayhXVEZNb3ZlKHRhc2spKTsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPEF1ZGlvV29ya2xldFByb2Nl
c3NvckNvbnN0cnVjdGlvbkRhdGE+IEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjp0YWtlUGVuZGlu
Z1Byb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEoKQoreworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdl
KG1fcGVuZGluZ1Byb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEsIG51bGxwdHIpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9i
YWxTY29wZS5oCmluZGV4IDQ0MTJjZmQwYjFlNDQ5YzQyMTA1YTU4MTA2MTAxNDM2M2ZiNWUzNWUu
LjJjZDdlMDBlMTNlNGQyNjBlZGJhMzgzYWYxMzgyMTgyOWE2NTYzOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNj
b3BlLmgKQEAgLTMwLDEwICszMCwxMyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICNpbmNs
dWRlICJBdWRpb1dvcmtsZXRUaHJlYWQuaCIKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2lu
Y2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE7CitjbGFzcyBBdWRpb1dv
cmtsZXRQcm9jZXNzb3I7CiBjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQ7CiBjbGFzcyBKU0F1ZGlv
V29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yOwogCkBAIC00OSw2ICs1Miw3IEBAIHB1YmxpYzoK
ICAgICB+QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoKTsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHJlZ2lzdGVyUHJvY2Vzc29yKFN0cmluZyYmIG5hbWUsIFJlZjxKU0F1ZGlvV29ya2xldFByb2Nl
c3NvckNvbnN0cnVjdG9yPiYmKTsKKyAgICBSZWZQdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPiBj
cmVhdGVQcm9jZXNzb3IoY29uc3QgU3RyaW5nJiBuYW1lLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
LCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG9wdGlvbnMpOwogCiAgICAgdm9pZCBzZXRD
dXJyZW50RnJhbWUoZmxvYXQgY3VycmVudEZyYW1lKSB7IG1fY3VycmVudEZyYW1lID0gY3VycmVu
dEZyYW1lOyB9CiAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vy
cmVudEZyYW1lOyB9CkBAIC02Miw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9zdFRh
c2soVGFzayYmKSBmaW5hbDsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1dvcmtsZXRQcm9j
ZXNzb3JDb25zdHJ1Y3Rpb25EYXRhPiB0YWtlUGVuZGluZ1Byb2Nlc3NvckNvbnN0cnVjdGlvbkRh
dGEoKTsKKwogcHJpdmF0ZToKICAgICBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZShBdWRpb1dvcmts
ZXRUaHJlYWQmLCBjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYpOwogCkBAIC03Miw2ICs3OCw3IEBA
IHByaXZhdGU6CiAgICAgc2l6ZV90IG1fY3VycmVudEZyYW1lIHsgMCB9OwogICAgIGNvbnN0IGZs
b2F0IG1fc2FtcGxlUmF0ZTsKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEpTQXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yQ29uc3RydWN0b3I+PiBtX3Byb2Nlc3NvckNvbnN0cnVjdG9yTWFwOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhPiBt
X3BlbmRpbmdQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0Tm9kZS5jcHAKaW5kZXggNGEwYjZjOGZjZjgwYTVhN2E0MTBmZjY1MmJhNTQwYjUxOGE1
MTgyNC4uOTZmYzczNDA3OTdjOWIyMTJkNGM5NDgwMTA3Zjg1MTFmNDYyOTkxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3Bw
CkBAIC0zNSwxNyArMzUsMjQgQEAKICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKICNpbmNs
dWRlICJBdWRpb1BhcmFtLmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbU1hcC5oIgorI2luY2x1ZGUg
IkF1ZGlvV29ya2xldC5oIgorI2luY2x1ZGUgIkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Lmgi
CiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaCIKKyNpbmNsdWRlICJBdWRpb1dv
cmtsZXRQcm9jZXNzb3IuaCIKICNpbmNsdWRlICJCYXNlQXVkaW9Db250ZXh0LmgiCisjaW5jbHVk
ZSAiSlNBdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVs
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKKyNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9Xb3Jr
bGV0Tm9kZSk7CiAKLUV4Y2VwdGlvbk9yPFJlZjxBdWRpb1dvcmtsZXROb2RlPj4gQXVkaW9Xb3Jr
bGV0Tm9kZTo6Y3JlYXRlKEJhc2VBdWRpb0NvbnRleHQmIGNvbnRleHQsIFN0cmluZyYmIG5hbWUs
IEF1ZGlvV29ya2xldE5vZGVPcHRpb25zJiYgb3B0aW9ucykKK0V4Y2VwdGlvbk9yPFJlZjxBdWRp
b1dvcmtsZXROb2RlPj4gQXVkaW9Xb3JrbGV0Tm9kZTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCwgU3RyaW5nJiYgbmFt
ZSwgQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMmJiBvcHRpb25zKQogewogICAgIGlmICghb3B0aW9u
cy5udW1iZXJPZklucHV0cyAmJiAhb3B0aW9ucy5udW1iZXJPZk91dHB1dHMpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk51bWJlciBvZiBpbnB1dHMgYW5k
IG91dHB1dHMgY2Fubm90IGJvdGggYmUgMCJfcyB9OwpAQCAtNjksMTAgKzc2LDIwIEBAIEV4Y2Vw
dGlvbk9yPFJlZjxBdWRpb1dvcmtsZXROb2RlPj4gQXVkaW9Xb3JrbGV0Tm9kZTo6Y3JlYXRlKEJh
c2VBdWRpb0NvbnRleHQmIGNvCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgIkNvbnRleHQgaXMgY2xvc2VkIl9zIH07CiAKICAgICBhdXRvIG1lc3NhZ2VDaGFu
bmVsID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0ZSgqY29udGV4dC5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwotICAgIC8vIEZJWE1FOiBQYXNzIG1lc3NhZ2VDaGFubmVsJ3MgcG9ydDIgdG8gdGhl
IEF1ZGlvV29ya2xldFByb2Nlc3Nvci4KKyAgICBhdXRvIG5vZGVNZXNzYWdlUG9ydCA9IG1lc3Nh
Z2VDaGFubmVsLT5wb3J0MSgpOworICAgIGF1dG8gcHJvY2Vzc29yTWVzc2FnZVBvcnQgPSBtZXNz
YWdlQ2hhbm5lbC0+cG9ydDIoKTsKKworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHNlcmlhbGl6ZWRPcHRpb25zOworICAgIHsKKyAgICAgICAgYXV0byBsb2NrID0gSlNDOjpKU0xv
Y2tIb2xkZXIgeyAmZ2xvYmFsT2JqZWN0IH07CisgICAgICAgIGF1dG8qIGpzT3B0aW9ucyA9IGNv
bnZlcnREaWN0aW9uYXJ5VG9KUyhnbG9iYWxPYmplY3QsICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLCBvcHRpb25zKTsKKyAgICAgICAgc2VyaWFsaXplZE9w
dGlvbnMgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIGpzT3B0
aW9ucywgU2VyaWFsaXphdGlvbkVycm9yTW9kZTo6Tm9uVGhyb3dpbmcpOworICAgICAgICBpZiAo
IXNlcmlhbGl6ZWRPcHRpb25zKQorICAgICAgICAgICAgc2VyaWFsaXplZE9wdGlvbnMgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpOworICAgIH0KIAogICAgIGF1dG8gcGFyYW1l
dGVyRGF0YSA9IFdURk1vdmUob3B0aW9ucy5wYXJhbWV0ZXJEYXRhKTsKLSAgICBhdXRvIG5vZGUg
PSBhZG9wdFJlZigqbmV3IEF1ZGlvV29ya2xldE5vZGUoY29udGV4dCwgV1RGTW92ZShuYW1lKSwg
V1RGTW92ZShvcHRpb25zKSwgKm1lc3NhZ2VDaGFubmVsLT5wb3J0MSgpKSk7CisgICAgYXV0byBu
b2RlID0gYWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXROb2RlKGNvbnRleHQsIG5hbWUsIFdURk1v
dmUob3B0aW9ucyksICpub2RlTWVzc2FnZVBvcnQpKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gbm9k
ZS0+aGFuZGxlQXVkaW9Ob2RlT3B0aW9ucyhvcHRpb25zLCB7IDIsIENoYW5uZWxDb3VudE1vZGU6
Ok1heCwgQ2hhbm5lbEludGVycHJldGF0aW9uOjpTcGVha2VycyB9KTsKICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKQpAQCAtOTAsMTUgKzEwNywxOCBAQCBFeGNlcHRpb25PcjxSZWY8QXVk
aW9Xb3JrbGV0Tm9kZT4+IEF1ZGlvV29ya2xldE5vZGU6OmNyZWF0ZShCYXNlQXVkaW9Db250ZXh0
JiBjbwogICAgICAgICB9CiAgICAgfQogCisgICAgY29udGV4dC5hdWRpb1dvcmtsZXQoKS5jcmVh
dGVQcm9jZXNzb3IobmFtZSwgcHJvY2Vzc29yTWVzc2FnZVBvcnQtPmRpc2VudGFuZ2xlKCksIHNl
cmlhbGl6ZWRPcHRpb25zLnJlbGVhc2VOb25OdWxsKCksIG5vZGUpOworCiAgICAgcmV0dXJuIG5v
ZGU7CiB9CiAKLUF1ZGlvV29ya2xldE5vZGU6OkF1ZGlvV29ya2xldE5vZGUoQmFzZUF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgU3RyaW5nJiYgbmFtZSwgQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMmJiBv
cHRpb25zLCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCkKK0F1ZGlvV29ya2xldE5vZGU6OkF1ZGlv
V29ya2xldE5vZGUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBBdWRpb1dvcmtsZXROb2RlT3B0aW9ucyYmIG9wdGlvbnMsIFJlZjxNZXNzYWdlUG9ydD4mJiBw
b3J0KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIE5vZGVUeXBlV29ya2xldCkKLSAgICAsIG1f
bmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3BhcmFtZXRl
cnMoQXVkaW9QYXJhbU1hcDo6Y3JlYXRlKCkpCiAgICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkK
IHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBvcHRpb25zLm51bWJlck9mSW5wdXRzOyArK2kpCiAgICAgICAgIGFkZElucHV0KCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9wdGlvbnMubnVtYmVyT2ZPdXRwdXRzOyArK2kp
CkBAIC0xMDksMTQgKzEyOSwyNyBAQCBBdWRpb1dvcmtsZXROb2RlOjpBdWRpb1dvcmtsZXROb2Rl
KEJhc2VBdWRpb0NvbnRleHQmIGNvbnRleHQsIFN0cmluZyYmIG5hbWUsIEF1ZAogCiBBdWRpb1dv
cmtsZXROb2RlOjp+QXVkaW9Xb3JrbGV0Tm9kZSgpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAobV9wcm9jZXNzb3IpIHsKKyAgICAgICAgaWYgKGF1dG8qIHdvcmtsZXRQ
cm94eSA9IGNvbnRleHQoKS5hdWRpb1dvcmtsZXQoKS5wcm94eSgpKQorICAgICAgICAgICAgd29y
a2xldFByb3h5LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtsZXRHbG9iYWxTY29wZShbbV9wcm9jZXNz
b3IgPSBXVEZNb3ZlKG1fcHJvY2Vzc29yKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsgfSwg
V29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAgfQogICAgIHVuaW5pdGlhbGl6ZSgp
OwogfQogCit2b2lkIEF1ZGlvV29ya2xldE5vZGU6OnNldFByb2Nlc3NvcihSZWZQdHI8QXVkaW9X
b3JrbGV0UHJvY2Vzc29yPiYmIHByb2Nlc3NvcikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKKyAgICBXVEZMb2dBbHdheXMoIkNIUklTOiBTZXQgcHJvY2Vzc29yIHRvICVwIiwgcHJv
Y2Vzc29yLmdldCgpKTsKKyAgICBtX3Byb2Nlc3NvciA9IFdURk1vdmUocHJvY2Vzc29yKTsKK30K
Kwogdm9pZCBBdWRpb1dvcmtsZXROb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
CiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1l
c1RvUHJvY2Vzcyk7CiAKLSAgICAvLyBGSVhNRTogRG8gYWN0dWFsIHByb2Nlc3NpbmcuCisgICAg
Ly8gRklYTUU6IERvIGFjdHVhbCBwcm9jZXNzaW5nIHZpYSBtX3Byb2Nlc3Nvci4KICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzKCk7ICsraSkKICAgICAgICAgb3V0
cHV0KGkpLT5idXMoKS0+emVybygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaAppbmRleCBjZmUyZGNiNDJmMGJkYWRhNmM4OGRl
NTljOWRlN2NjYzg2Nzk5ZGIyLi4yNWYwNGI5ZGNhODNjOTcxNzNmMDVlOTY4OGExNTBjMzgyM2Fh
MTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE5vZGUuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBdWRpb1BhcmFtTWFwOworY2xhc3MgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOwogY2xhc3MgTWVz
c2FnZVBvcnQ7CiAKIHN0cnVjdCBBdWRpb1dvcmtsZXROb2RlT3B0aW9uczsKQEAgLTQyLDE0ICs0
MywxNiBAQCBzdHJ1Y3QgQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnM7CiBjbGFzcyBBdWRpb1dvcmts
ZXROb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChB
dWRpb1dvcmtsZXROb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEF1
ZGlvV29ya2xldE5vZGU+PiBjcmVhdGUoQmFzZUF1ZGlvQ29udGV4dCYsIFN0cmluZyYmIG5hbWUs
IEF1ZGlvV29ya2xldE5vZGVPcHRpb25zJiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
QXVkaW9Xb3JrbGV0Tm9kZT4+IGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgQmFzZUF1ZGlv
Q29udGV4dCYsIFN0cmluZyYmIG5hbWUsIEF1ZGlvV29ya2xldE5vZGVPcHRpb25zJiYpOwogICAg
IH5BdWRpb1dvcmtsZXROb2RlKCk7CiAKICAgICBBdWRpb1BhcmFtTWFwJiBwYXJhbWV0ZXJzKCkg
eyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOyB9CiAgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSB7
IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KIAorICAgIHZvaWQgc2V0UHJvY2Vzc29yKFJlZlB0cjxB
dWRpb1dvcmtsZXRQcm9jZXNzb3I+JiYpOworCiBwcml2YXRlOgotICAgIEF1ZGlvV29ya2xldE5v
ZGUoQmFzZUF1ZGlvQ29udGV4dCYsIFN0cmluZyYmIG5hbWUsIEF1ZGlvV29ya2xldE5vZGVPcHRp
b25zJiYsIFJlZjxNZXNzYWdlUG9ydD4mJik7CisgICAgQXVkaW9Xb3JrbGV0Tm9kZShCYXNlQXVk
aW9Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBBdWRpb1dvcmtsZXROb2RlT3B0aW9ucyYm
LCBSZWY8TWVzc2FnZVBvcnQ+JiYpOwogCiAgICAgLy8gQXVkaW9Ob2RlLgogICAgIHZvaWQgcHJv
Y2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKQEAgLTYwLDYgKzYzLDcgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFJlZjxBdWRpb1BhcmFtTWFwPiBtX3BhcmFt
ZXRlcnM7CiAgICAgUmVmPE1lc3NhZ2VQb3J0PiBtX3BvcnQ7CisgICAgUmVmUHRyPEF1ZGlvV29y
a2xldFByb2Nlc3Nvcj4gbV9wcm9jZXNzb3I7IC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgb24gdGhl
IHJlbmRlcmluZyB0aHJlYWQuCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmlkbApp
bmRleCA1NjI3MTQ4NjYzZjA0MjE4YjFlNTUwNTE3NWIwNDk1YTU0NjkxMjA2Li43MTE1YWZjZTAz
OWM2ZTVlMjY3ODdjMTNkZjFjZjA3ZThkNmZmMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5pZGwKQEAgLTMzLDcgKzMzLDcg
QEAKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKICAgICBTZWN1cmVDb250ZXh0CiBdIGludGVy
ZmFjZSBBdWRpb1dvcmtsZXROb2RlIDogQXVkaW9Ob2RlIHsKLSAgICBjb25zdHJ1Y3RvciAoQmFz
ZUF1ZGlvQ29udGV4dCBjb250ZXh0LCBET01TdHJpbmcgbmFtZSwgb3B0aW9uYWwgQXVkaW9Xb3Jr
bGV0Tm9kZU9wdGlvbnMgb3B0aW9ucyk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gY29u
c3RydWN0b3IgKEJhc2VBdWRpb0NvbnRleHQgY29udGV4dCwgRE9NU3RyaW5nIG5hbWUsIG9wdGlv
bmFsIEF1ZGlvV29ya2xldE5vZGVPcHRpb25zIG9wdGlvbnMpOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBBdWRpb1BhcmFtTWFwIHBhcmFtZXRlcnM7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1l
c3NhZ2VQb3J0IHBvcnQ7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnByb2Nlc3NvcmVy
cm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXROb2RlT3B0aW9ucy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldE5vZGVPcHRpb25zLmlkbAppbmRleCBhOWUxOWI2OTVlMDZmMjMxMzg4ZTczNWIy
YjYwNTI5NzlmMTFmOTA1Li4yOWMxOGMzYTQwYmFiM2Q1ZTJkMTMyOWU5NTUyMWY5YmY5NjllNjc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dE5vZGVPcHRpb25zLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldE5vZGVPcHRpb25zLmlkbApAQCAtMjksNiArMjksNyBAQAogWwogICAgIENvbmRp
dGlvbmFsPVdFQl9BVURJTywKICAgICBFbmFibGVkQnlTZXR0aW5nPUF1ZGlvV29ya2xldCwKKyAg
ICBKU0dlbmVyYXRlVG9KU09iamVjdAogXSBkaWN0aW9uYXJ5IEF1ZGlvV29ya2xldE5vZGVPcHRp
b25zIDogQXVkaW9Ob2RlT3B0aW9ucyB7CiAgICAgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0
cyA9IDE7CiAgICAgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dHMgPSAxOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNz
b3IuY3BwCmluZGV4IGM0NzZiMjFlNmU2OGZhY2I2OGFjZWQ4ZTFjZjIzN2JmMGQxYmYyODIuLjQ1
YTk3OGU4OTc4MmMxMzhmOTUyM2UyYTg5Zjg0YTc3MWU4ZGZkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5j
cHAKQEAgLTMxLDEwICszMSwyOCBAQAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAjaW5jbHVkZSAi
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmgiCiAKKyNpbmNsdWRlICJBdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZS5oIgorI2luY2x1ZGUgIkF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEu
aCIKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1
ZGlvV29ya2xldFByb2Nlc3Nvcjo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yKCkKK0V4Y2VwdGlvbk9y
PFJlZjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+PiBBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQoreworICAgIGF1dG8gY29uc3RydWN0
aW9uRGF0YSA9IGRvd25jYXN0PEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS50YWtl
UGVuZGluZ1Byb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEoKTsKKyAgICBpZiAoIWNvbnN0cnVjdGlv
bkRhdGEpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJObyBwZW5kaW5n
IGNvbnN0cnVjdGlvbiBkYXRhIGZvciB0aGlzIHdvcmtsZXQgcHJvY2Vzc29yIl9zIH07CisKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoKmNvbnN0cnVjdGlv
bkRhdGEpKTsKK30KKworQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjp+QXVkaW9Xb3JrbGV0UHJvY2Vz
c29yKCkgPSBkZWZhdWx0OworCitBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OkF1ZGlvV29ya2xldFBy
b2Nlc3Nvcihjb25zdCBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhJiBjb25z
dHJ1Y3Rpb25EYXRhKQorICAgIDogbV9uYW1lKGNvbnN0cnVjdGlvbkRhdGEubmFtZSgpKQorICAg
ICwgbV9wb3J0KGNvbnN0cnVjdGlvbkRhdGEucG9ydCgpKQogeworICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaAppbmRl
eCA3M2Q2MjhmY2ZkM2I4YjkxNzkwZGNmZjRmNGE5NmZkZTY5N2M0ZjY3Li41ZmQzYTllZGIzMDQx
NmExMWI0NDVhYjU2MzQyM2JkMzcyYzkyNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmgKQEAgLTI5LDI0ICsy
OSwzMCBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQorI2luY2x1ZGUg
IkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBdWRpb1dv
cmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhOwogY2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi1jbGFzcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3Ig
OiBwdWJsaWMgUmVmQ291bnRlZDxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+IHsKK2NsYXNzIEF1ZGlv
V29ya2xldFByb2Nlc3NvciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb1dvcmts
ZXRQcm9jZXNzb3I+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvV29ya2xldFByb2Nl
c3Nvcj4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlv
V29ya2xldFByb2Nlc3Nvcik7Ci0gICAgfQorICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8QXVk
aW9Xb3JrbGV0UHJvY2Vzc29yPj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAg
ICB+QXVkaW9Xb3JrbGV0UHJvY2Vzc29yKCk7CiAKLSAgICBNZXNzYWdlUG9ydCogcG9ydCgpIHsg
cmV0dXJuIG51bGxwdHI7IH0KKyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVy
biBtX25hbWU7IH0KKyAgICBNZXNzYWdlUG9ydCYgcG9ydCgpIHsgcmV0dXJuIG1fcG9ydC5nZXQo
KTsgfQogCiBwcml2YXRlOgotICAgIEF1ZGlvV29ya2xldFByb2Nlc3NvcigpOworICAgIGV4cGxp
Y2l0IEF1ZGlvV29ya2xldFByb2Nlc3Nvcihjb25zdCBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25z
dHJ1Y3Rpb25EYXRhJik7CisKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFJlZjxNZXNzYWdlUG9y
dD4gbV9wb3J0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaWRs
CmluZGV4IDdjNTEzZjcyNjNlMGIyMjY1M2E3MzE5YTg1YTJjODMzMzU1NTVmZTQuLmQyNjYxMzE3
MjE5MDFlY2IxNzMzZjVhNjE4MGRkZmU5YjQ0ZTU1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5pZGwKQEAg
LTMxLDYgKzMxLDYgQEAKICAgICBFeHBvc2VkPUF1ZGlvV29ya2xldCwKICAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlCiBdIGludGVyZmFjZSBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgewotICAg
IGNvbnN0cnVjdG9yKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1h
eVRocm93RXhjZXB0aW9uXSBjb25zdHJ1Y3RvcigpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBN
ZXNzYWdlUG9ydCBwb3J0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rp
b25EYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDkyODEwY2FjODYyNWFmYjRkMDRiY2I0NTQwNTFmNjZhODAw
MWM3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YS5oCkBAIC0wLDAgKzEsNTcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3Ry
dWN0aW9uRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YShTdHJpbmcmJiBuYW1lLCBSZWY8
TWVzc2FnZVBvcnQ+JiYgcG9ydCkKKyAgICAgICAgOiBtX25hbWUoV1RGTW92ZShuYW1lKSkKKyAg
ICAgICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKKyAgICB7IH0KKworICAgIGNvbnN0IFN0cmlu
ZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIE1lc3NhZ2VQb3J0JiBwb3J0
KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5n
IG1fbmFtZTsKKyAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaAppbmRleCAw
NTZlZGYzOGVkMWYzODllMDBjNjQ2OTJmMTFmZjUyNGJlNWU3MGRmLi4wMzBjNjFmOWQ1MTgwMjI5
MmNiMzQzODE0ZDkxMGMyYmVhN2IzZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKQEAgLTM0LDcgKzM0LDYgQEAKICNp
bmNsdWRlICJXb3JrbGV0UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQyLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGU7CiBjbGFzcyBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTsKIAotY2xhc3MgQXVk
aW9Xb3JrbGV0VGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvV29ya2xl
dFRocmVhZD4sIHB1YmxpYyBXb3JrZXJPcldvcmtsZXRUaHJlYWQgeworY2xhc3MgQXVkaW9Xb3Jr
bGV0VGhyZWFkIDogcHVibGljIFdvcmtlck9yV29ya2xldFRocmVhZCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxBdWRpb1dvcmtsZXRUaHJlYWQ+IGNyZWF0ZShBdWRpb1dvcmtsZXRNZXNzYWdp
bmdQcm94eSYgbWVzc2FnaW5nUHJveHksIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA0MzI2NGRkZmYxOWFmYWFiZGFkZjZkOGM2NDVmMjM1NDI4OWNmOGEx
Li5jOWVhYzk3NDViYzZkOGQ2MmMwYTljYjhjN2QwMWJjZWQ4ZWU2MjliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDQ1LDYg
KzI0NDUsNyBAQAogCQk4MzIxNTA3RTFGMjdFQTFCMDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzIxNTA3
QjFGMjdFQTE1MDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmggKi87IH07CiAJCTgzMjZCRjhF
MjREMzVDMzMwMDFGOEE4NSAvKiBPdmVyU2FtcGxlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyNkJGODkyNEQzNUMyMDAwMUY4QTg1IC8qIE92
ZXJTYW1wbGVUeXBlLmggKi87IH07CiAJCTgzMjZCRjhGMjREMzVDMzkwMDFGOEE4NSAvKiBXYXZl
U2hhcGVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODMyNkJGOEMyNEQzNUMyMDAwMUY4QTg1IC8qIFdhdmVTaGFwZXJPcHRpb25zLmggKi87
IH07CisJCTgzMjc0RkNGMjUyRTI2QjcwMDFFMzVEQyAvKiBBdWRpb1dvcmtsZXRQcm9jZXNzb3JD
b25zdHJ1Y3Rpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzI3NEZDRDI1MkUyNkE4MDAxRTM1REMgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Q29uc3RydWN0aW9uRGF0YS5oICovOyB9OwogCQk4MzJCODQzNDE5RDhFNTUxMDBCMjYwNTUgLyog
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzJCODQzMzE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1l
bnRCYXNlLmggKi87IH07CiAJCTgzM0FFNTI5MjREMzg2RjIwMDAxN0M0QiAvKiBPZmZsaW5lQXVk
aW9Db21wbGV0aW9uRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzNBRTUyODI0RDM4NkUxMDAwMTdDNEIgLyogT2ZmbGluZUF1ZGlvQ29t
cGxldGlvbkV2ZW50SW5pdC5oICovOyB9OwogCQk4MzNCOUUzMjFGNTA4RDg1MDBFMEU0MjggLyog
SlNGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzM0I5RTJGMUY1MDhEODAwMEUwRTQyOCAvKiBKU0ZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeS5oICovOyB9OwpAQCAtMTA2MDcsNiArMTA2MDgsNyBAQAogCQk4MzI2
QkY4QjI0RDM1QzIwMDAxRjhBODUgLyogT3ZlclNhbXBsZVR5cGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE92ZXJTYW1w
bGVUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyNkJGOEMyNEQzNUMy
MDAwMUY4QTg1IC8qIFdhdmVTaGFwZXJPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhdmVTaGFw
ZXJPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMjZCRjhEMjREMzVD
MjEwMDFGOEE4NSAvKiBXYXZlU2hhcGVyT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2F2ZVNoYXBlck9wdGlv
bnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzI3NEZDRDI1MkUyNkE4MDAx
RTM1REMgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMjlBNDE3MUVDMjVCMkIwMDhFRDRCRSAvKiBEb2N1bWVu
dEFuZEVsZW1lbnRFdmVudEhhbmRsZXJzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1
bWVudEFuZEVsZW1lbnRFdmVudEhhbmRsZXJzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODMyOURDQzIxQzdBNkFFMzAwNzMwQjMzIC8qIEhUTUxIeXBlcmxpbmtFbGVtZW50VXRp
bHMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzJCODQzMzE5RDhFNTUxMDBCMjYw
NTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzAwMDksNiArMzAwMTEsNyBAQAogCQkJCTgzQkI4QjVCMjUyNjc3NTUwMEQ4OUYwQiAv
KiBBdWRpb1dvcmtsZXRQcm9jZXNzb3IuY3BwICovLAogCQkJCTgzQkI4QjVEMjUyNjc3NTUwMEQ4
OUYwQiAvKiBBdWRpb1dvcmtsZXRQcm9jZXNzb3IuaCAqLywKIAkJCQk4M0JCOEI1RTI1MjY3NzU2
MDBEODlGMEIgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmlkbCAqLywKKwkJCQk4MzI3NEZDRDI1
MkUyNkE4MDAxRTM1REMgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YS5o
ICovLAogCQkJCTgzNzI2RUY4MjUyNjc5QjIwMEM2MTE0RSAvKiBBdWRpb1dvcmtsZXRQcm9jZXNz
b3JDb25zdHJ1Y3Rvci5oICovLAogCQkJCTgzNzI2RUZBMjUyNjc5QjMwMEM2MTE0RSAvKiBBdWRp
b1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5pZGwgKi8sCiAJCQkJODNGQzk5NEEyNTI1NTdF
ODAwMTc3NjE4IC8qIEF1ZGlvV29ya2xldFRocmVhZC5jcHAgKi8sCkBAIC0zMDYyNSw2ICszMDYy
OCw3IEBACiAJCQkJODNCOTg3MDkyNTIyNUY3MjAwQTkzOUYxIC8qIEF1ZGlvV29ya2xldE5vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzQjk4NzBBMjUyMjVGNzYwMEE5MzlGMSAvKiBBdWRpb1dv
cmtsZXROb2RlT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCQjhCNUYyNTI2Nzc2NDAw
RDg5RjBCIC8qIEF1ZGlvV29ya2xldFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMy
NzRGQ0YyNTJFMjZCNzAwMUUzNURDIC8qIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlv
bkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzI2RUZCMjUyNjc5QzUwMEM2MTE0RSAvKiBB
dWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNG
Qzk5NEIyNTI1NTdFQTAwMTc3NjE4IC8qIEF1ZGlvV29ya2xldFRocmVhZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0VFNjg0NjExMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA0ZTI2ZDdmOTUxMjVmMGNlNDU2NjExM2VlMjgzOTQx
NTA3Y2I1OWE0Li5hZTA5N2VlYjhjMDBhODlmYjc5NzRkMjE2MDJiZWQ3YWIyZWNmNGVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBA
IC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlZENsb25lLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisj
aW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
QnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29kZUJsb2NrLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNJbnRlcm5hbFByb21pc2UuaD4KQEAgLTM0NSw2ICsz
NDYsOSBAQCBKU0RPTUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBET01XcmFwcAogICAgIGlmIChpczxXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4oY29udGV4dCkuc2NyaXB0KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpOwogCisgICAg
aWYgKGlzPFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgIHJldHVybiBkb3du
Y2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyKCk7CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCmluZGV4IDhiZDMzOTRlYmYz
MjkyZTk2ZGVlNjA0ODY4YjVkODZjNDc3OTU5ZGMuLjlkZjhmY2QyOWRkYzNmOThmMTAyNTk1YzBj
M2VmYTQ0M2U2ODVhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApAQCAtMTY1LDcg
KzE2NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSlNDOjpKU1ZhCiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
dm9pZCBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGUoKQorVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBN
ZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGUoKQogewogICAgIEFTU0VSVChtX2VudGFuZ2xlZCk7CiAg
ICAgbV9lbnRhbmdsZWQgPSBmYWxzZTsKQEAgLTE4MCw2ICsxODAsOCBAQCB2b2lkIE1lc3NhZ2VQ
b3J0OjpkaXNlbnRhbmdsZSgpCiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT53aWxsRGVz
dHJveURlc3RydWN0aW9uT2JzZXJ2ZXIoKnRoaXMpOwogCiAgICAgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0gbnVsbHB0cjsKKworICAgIHJldHVybiB7IGlkZW50aWZpZXIoKSwgcmVtb3RlSWRl
bnRpZmllcigpIH07CiB9CiAKIHZvaWQgTWVzc2FnZVBvcnQ6OnJlZ2lzdGVyTG9jYWxBY3Rpdml0
eSgpCkBAIC0zNzgsMTAgKzM4MCw4IEBAIEV4Y2VwdGlvbk9yPFRyYW5zZmVycmVkTWVzc2FnZVBv
cnRBcnJheT4gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoVmVjdG9yPFJlCiAgICAgLy8g
UGFzc2VkLWluIHBvcnRzIHBhc3NlZCB2YWxpZGl0eSBjaGVja3MsIHNvIHdlIGNhbiBkaXNlbnRh
bmdsZSB0aGVtLgogICAgIFRyYW5zZmVycmVkTWVzc2FnZVBvcnRBcnJheSBwb3J0QXJyYXk7CiAg
ICAgcG9ydEFycmF5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocG9ydHMuc2l6ZSgpKTsKLSAgICBm
b3IgKGF1dG8mIHBvcnQgOiBwb3J0cykgewotICAgICAgICBwb3J0QXJyYXkudW5jaGVja2VkQXBw
ZW5kKHsgcG9ydC0+aWRlbnRpZmllcigpLCBwb3J0LT5yZW1vdGVJZGVudGlmaWVyKCkgfSk7Ci0g
ICAgICAgIHBvcnQtPmRpc2VudGFuZ2xlKCk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcG9ydCA6
IHBvcnRzKQorICAgICAgICBwb3J0QXJyYXkudW5jaGVja2VkQXBwZW5kKHBvcnQtPmRpc2VudGFu
Z2xlKCkpOwogCiAgICAgcmV0dXJuIHBvcnRBcnJheTsKIH0KQEAgLTM5NSwxNCArMzk1LDE4IEBA
IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjCiAKICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0
Pj4gcG9ydHM7CiAgICAgcG9ydHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0cmFuc2ZlcnJlZFBv
cnRzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiB0cmFuc2ZlcnJlZFBvcnQgOiB0cmFuc2ZlcnJl
ZFBvcnRzKSB7Ci0gICAgICAgIGF1dG8gcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUoY29udGV4
dCwgdHJhbnNmZXJyZWRQb3J0LmZpcnN0LCB0cmFuc2ZlcnJlZFBvcnQuc2Vjb25kKTsKLSAgICAg
ICAgcG9ydC0+ZW50YW5nbGUoKTsKLSAgICAgICAgcG9ydHMudW5jaGVja2VkQXBwZW5kKFdURk1v
dmUocG9ydCkpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIHRyYW5zZmVycmVkUG9ydCA6IHRyYW5z
ZmVycmVkUG9ydHMpCisgICAgICAgIHBvcnRzLnVuY2hlY2tlZEFwcGVuZChNZXNzYWdlUG9ydDo6
ZW50YW5nbGUoY29udGV4dCwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpKSk7CiAgICAgcmV0dXJu
IHBvcnRzOwogfQogCitSZWY8TWVzc2FnZVBvcnQ+IE1lc3NhZ2VQb3J0OjplbnRhbmdsZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJh
bnNmZXJyZWRQb3J0KQoreworICAgIGF1dG8gcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUoY29u
dGV4dCwgdHJhbnNmZXJyZWRQb3J0LmZpcnN0LCB0cmFuc2ZlcnJlZFBvcnQuc2Vjb25kKTsKKyAg
ICBwb3J0LT5lbnRhbmdsZSgpOworICAgIHJldHVybiBwb3J0OworfQorCiBib29sIE1lc3NhZ2VQ
b3J0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2
ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVu
dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAppbmRleCBhYWNhNDg5NWRhMWJmNmI4ZTJiMDcw
ZjQ1MGViMjAyOTY3N2RhMGVkLi5jNmJmOGQxZTNlY2VjNDFlY2YwYWM2NjYwODNjYjdiNjFiZDhj
MmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaApAQCAtOTIsNiArOTIsOSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBmaW5hbDsKIAorICAgIFRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQgZGlzZW50YW5nbGUoKTsKKyAgICBzdGF0aWMgUmVmPE1lc3NhZ2VQb3J0
PiBlbnRhbmdsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZXNzYWdlUG9ydChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgTWVz
c2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGUpOwogCkBAIC0xMDQsOCArMTA3LDYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IGNsb3NlKCk7IH0KICAgICBib29sIHZpcnR1YWxI
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZGlzZW50YW5nbGUo
KTsKLQogICAgIHZvaWQgcmVnaXN0ZXJMb2NhbEFjdGl2aXR5KCk7CiAKICAgICAvLyBBIHBvcnQg
c3RhcnRzIG91dCBpdHMgbGlmZSBlbnRhbmdsZWQsIGFuZCByZW1haW5zIGVudGFuZ2xlZCB1bnRp
bCBpdCBpcyBjbG9zZWQgb3IgaXMgY2xvbmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDc2MmQ1MzgxZjZkNDBiNTRhMDA1M2QyM2U3MWY1
MTM5ZjdlNTJhYmIuLjU1MmNmOGQ4YmUwNjU4ZjVjNDk2YTIzYjZlMWQzODBjYjIyMWQ4ZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTI4
LDYgKzI4LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAKKyNpbmNsdWRlICJBdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oIgorI2lu
Y2x1ZGUgIkF1ZGlvV29ya2xldFRocmVhZC5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgog
I2luY2x1ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAiRE9NVGltZXIuaCIKQEAgLTIwNSw3ICsy
MDcsMTEgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaXNwYXRjaE1lc3NhZ2VQb3J0
RXZlbnRzKCkKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y3JlYXRlZE1lc3NhZ2VQb3J0
KE1lc3NhZ2VQb3J0JiBtZXNzYWdlUG9ydCkKIHsKICAgICBBU1NFUlQoKGlzPERvY3VtZW50Pigq
dGhpcykgJiYgaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29w
ZT4oKnRoaXMpICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCku
dGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKSk7CisgICAgICAgIHx8IChpczxXb3JrZXJH
bG9iYWxTY29wZT4oKnRoaXMpICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcyku
dGhyZWFkKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKQorI2lmIEVOQUJMRShXRUJf
QVVESU8pCisgICAgICAgIHx8IChpczxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpICYm
IGRvd25jYXN0PEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFk
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKQorI2VuZGlmCisgICAgICAgICk7CiAKICAgICBtX21l
c3NhZ2VQb3J0cy5hZGQoJm1lc3NhZ2VQb3J0KTsKIH0KQEAgLTIxMyw4ICsyMTksMTEgQEAgdm9p
ZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjcmVhdGVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQm
IG1lc3NhZ2VQb3J0KQogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkZXN0cm95ZWRNZXNz
YWdlUG9ydChNZXNzYWdlUG9ydCYgbWVzc2FnZVBvcnQpCiB7CiAgICAgQVNTRVJUKChpczxEb2N1
bWVudD4oKnRoaXMpICYmIGlzTWFpblRocmVhZCgpKQotICAgICAgICB8fCAoaXM8V29ya2VyR2xv
YmFsU2NvcGU+KCp0aGlzKSAmJiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnRo
cmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkpOwotCisgICAgICAgIHx8IChp
czxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
PigqdGhpcykudGhyZWFkKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKQorI2lmIEVO
QUJMRShXRUJfQVVESU8pCisgICAgICAgIHx8IChpczxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4o
KnRoaXMpICYmIGRvd25jYXN0PEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFk
KCkudGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKQorI2VuZGlmCisgICAgICAgICk7CiAg
ICAgbV9tZXNzYWdlUG9ydHMucmVtb3ZlKCZtZXNzYWdlUG9ydCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlci5jcHAKaW5kZXggMTJhYTlmMmNmYmYxMmQzZTA4OWE1YmExYjA4NzY2NDhjMWYx
NjU1MC4uZmM1MTNlZTFjODRiN2JiOGU0OTZhM2E3MGE0MTY0ODA2MDAzYTc5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5oIgogI2luY2x1
ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NTksNiArNjAsOSBAQCBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6OmZyb21Db250ZXh0KFNjcmlwdEV4ZWN1dAogICAgIGlmIChpczxEb2N1bWVu
dD4oY29udGV4dCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCku
bWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKTsKIAorICAgIGlmIChpczxXb3JrbGV0R2xvYmFs
U2NvcGU+KGNvbnRleHQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2xldEdsb2JhbFNj
b3BlPihjb250ZXh0KS5tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpOworCiAgICAgcmV0dXJu
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5tZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBv
cnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2Fn
ZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgKaW5kZXggYTM5MDc1NzU5ZTk5NjRhNWUz
OGExZThjODNjNTczNWQyYWQ1MDFmZS4uZWExOGY5M2Q2NjY4NDY4MDNhZjMzMzE3ZmI5OTMxZmQ3
ZWZkMGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9y
dHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaApAQCAtMzMsNyArMzMsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIC8vIFdoZW4gYSBtZXNzYWdlIHBvcnQgaXMgdHJhbnNmZXJyZWQsIGl0IGlz
IHJlcHJlc2VudGVkIGJ5IGEgcGFpciBvZiBpZGVudGlmaWVycy4KIC8vIFRoZSBmaXJzdCBpZGVu
dGlmaWVyIGlzIHRoZSBwb3J0IGJlaW5nIHRyYW5zZmVycmVkIGFuZCB0aGUgc2Vjb25kIGlzIGl0
cyByZW1vdGUgcG9ydC4KLXR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdl
UG9ydElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj4+IFRyYW5zZmVy
cmVkTWVzc2FnZVBvcnRBcnJheTsKK3VzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgPSBzdGQ6
OnBhaXI8V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlUG9y
dElkZW50aWZpZXI+OwordXNpbmcgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydEFycmF5ID0gVmVjdG9y
PFRyYW5zZmVycmVkTWVzc2FnZVBvcnQ+OwogCiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMgewogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvV29ya2Vy
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCmluZGV4IGYxZjA5OWM2NDBhYjZhNDRlODg4
NDIwNzVjMTM0NTBiNDZiY2JjMzguLjcxZDNlMTg2Mjg2NDFhYWFiYzhiYmQwNDVlNWU4NjI3NWE1
YmE0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvV29ya2Vy
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9t
ZXNzYWdlcG9ydHMvV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCkBAIC0yNywx
NCArMjcsMTQgQEAKICNpbmNsdWRlICJXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5o
IgogCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29w
ZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
V29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtlck1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjpXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcihXb3JrZXJH
bG9iYWxTY29wZSYgc2NvcGUpCitXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6V29y
a2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
IHNjb3BlKQogICAgIDogbV9zY29wZShzY29wZSkKIHsKIH0KQEAgLTkxLDEwICs5MSw5IEBAIHZv
aWQgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnRha2VBbGxNZXNzYWdlc0ZvclBv
cnQoY29uc3QgTWVzc2FnZVBvcnRJCiAgICAgdWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyID0g
KyttX2xhc3RDYWxsYmFja0lkZW50aWZpZXI7CiAgICAgbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFj
a3MuYWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgd29ya2VyVGhyZWFkID0gbWFrZVJlZihtX3Njb3BlLnRocmVh
ZCgpKSwgY2FsbGJhY2tJZGVudGlmaWVyLCBpZGVudGlmaWVyXSgpIG11dGFibGUgeworICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHdvcmtlclRocmVhZCA9IG1ha2VSZWZQdHIobV9zY29wZS53
b3JrZXJPcldvcmtsZXRUaHJlYWQoKSksIGNhbGxiYWNrSWRlbnRpZmllciwgaWRlbnRpZmllcl0o
KSBtdXRhYmxlIHsKICAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRv
bigpLnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoaWRlbnRpZmllciwgW3RoaXMsIHdvcmtlclRocmVh
ZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgY2FsbGJhY2tJZGVudGlmaWVyXShWZWN0b3I8TWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYgbWVzc2FnZXMsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgewotICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dFRhc2tGb3JNb2RlKFt0aGlzLCBjYWxsYmFja0lkZW50aWZpZXIsIG1lc3NhZ2VzID0gV1RGTW92
ZShtZXNzYWdlcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KHNjb3BlLCB0aGlzID09ICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLm1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCkpOworICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2tGb3JNb2RlKFt0aGlzLCBjYWxsYmFja0lkZW50aWZpZXIsIG1lc3NhZ2Vz
ID0gV1RGTW92ZShtZXNzYWdlcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKGF1dG8mKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBtX3Rha2VBbGxN
ZXNzYWdlc0NhbGxiYWNrcy50YWtlKGNhbGxiYWNrSWRlbnRpZmllcikoV1RGTW92ZShtZXNzYWdl
cyksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewogICAgICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTEwOCwxMCArMTA3LDkg
QEAgdm9pZCBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1vdGVQb3J0
Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVAKICAgICB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZp
ZXIgPSArK21fbGFzdENhbGxiYWNrSWRlbnRpZmllcjsKICAgICBtX2FjdGl2aXR5Q2FsbGJhY2tz
LmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIHdvcmtlclRocmVhZCA9IG1ha2VSZWYobV9zY29wZS50aHJlYWQo
KSksIGNhbGxiYWNrSWRlbnRpZmllciwgcmVtb3RlVGFyZ2V0XSgpIG11dGFibGUgeworICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHdvcmtlclRocmVhZCA9IG1ha2VSZWZQdHIobV9zY29wZS53
b3JrZXJPcldvcmtsZXRUaHJlYWQoKSksIGNhbGxiYWNrSWRlbnRpZmllciwgcmVtb3RlVGFyZ2V0
XSgpIG11dGFibGUgewogICAgICAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xl
dG9uKCkuY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkocmVtb3RlVGFyZ2V0LCBbdGhpcywgd29y
a2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpLCBjYWxsYmFja0lkZW50aWZpZXJdKGF1
dG8gaGFzQWN0aXZpdHkpIHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBv
c3RUYXNrRm9yTW9kZShbdGhpcywgY2FsbGJhY2tJZGVudGlmaWVyLCBoYXNBY3Rpdml0eV0oYXV0
byYgc2NvcGUpIG11dGFibGUgewotICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUs
IHRoaXMgPT0gJmRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkubWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXIoKSk7CisgICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5w
b3N0VGFza0Zvck1vZGUoW3RoaXMsIGNhbGxiYWNrSWRlbnRpZmllciwgaGFzQWN0aXZpdHldKGF1
dG8mKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBtX2FjdGl2aXR5Q2FsbGJhY2tzLnRha2Uo
Y2FsbGJhY2tJZGVudGlmaWVyKShoYXNBY3Rpdml0eSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJS
dW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyLmgKaW5kZXggM2UzZTg2YTA4YWU1Y2M0NGE4MTE0NzQzYTcyMzMzNDRhMGI3
ZTdhYy4uYWYxMjA0YzRkNzRlNmZlYTAzM2RkY2U4NDVkYmI4MjBlMTFlN2RhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvV29ya2Vy
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZTsKIAogY2xhc3MgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXIgZmluYWwgOiBwdWJsaWMgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmtlck1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyKFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgZXhwbGljaXQg
V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmKTsKICAgICB+V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKTsKIAogcHJpdmF0
ZToKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRha2VBbGxNZXNzYWdlc0Zv
clBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+
JiYpIGZpbmFsOwogICAgIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVz
c2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKSBmaW5hbDsKIAotICAgIFdvcmtlckdsb2JhbFNjb3Bl
JiBtX3Njb3BlOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3Njb3BlOwogCiAg
ICAgdWludDY0X3QgbV9sYXN0Q2FsbGJhY2tJZGVudGlmaWVyIHsgMCB9OwogICAgIEhhc2hNYXA8
dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPj4gbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFj
a3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRo
cmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaApp
bmRleCAyMjBkZmM0ZWNkZTM0YWNiZDQ3MTVmNWU4Y2YxNTBiMDg2ODRhOTI5Li4zNzgwOTYxYzc5
NDk4NTdhMWUyMDVmOGMzMTI5NjJjMDcwYmVhZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKwogbmFtZXNw
YWNlIFdURiB7CiBjbGFzcyBUaHJlYWQ7CiB9CkBAIC0zNCw3ICszNiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFdvcmtlckxvYWRlclByb3h5OwogY2xhc3MgV29ya2VyUnVuTG9vcDsK
IAotY2xhc3MgV29ya2VyT3JXb3JrbGV0VGhyZWFkIHsKK2NsYXNzIFdvcmtlck9yV29ya2xldFRo
cmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrZXJPcldvcmtsZXRUaHJlYWQ+
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJPcldvcmtsZXRUaHJlYWQoKSA9IGRlZmF1
bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IDYyNDRiM2NjMDA4
MWNiNjA1YTE3ZjZkNDlhZTI4NDYyZTc2ODQxNTEuLjEyMTRiOTE5ZGEzNGQzMmYyZmNhYzlhMjk4
MTJmNmZkNmE4N2ExMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAt
NzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgV29ya2VyUGFyYW1ldGVycyBpc29sYXRlZENvcHko
KSBjb25zdDsKIH07CiAKLWNsYXNzIFdvcmtlclRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxXb3JrZXJUaHJlYWQ+LCBwdWJsaWMgV29ya2VyT3JXb3JrbGV0VGhyZWFkIHsKK2Ns
YXNzIFdvcmtlclRocmVhZCA6IHB1YmxpYyBXb3JrZXJPcldvcmtsZXRUaHJlYWQgewogcHVibGlj
OgogICAgIHZpcnR1YWwgfldvcmtlclRocmVhZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCA1NjM4MDBkYTBiZmM5MmYzOWM0OTkz
YmM1NDVkNjM0YmNjYjg4MzE1Li4zYWY5OTNmODY5ZWE4YmVlM2U1NjFhMTU5NDdhN2Y4NWVlMzNm
MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRMb29wLmgiCisjaW5j
bHVkZSAiV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXb3Jr
ZXJTY3JpcHRMb2FkZXIuaCIKICNpbmNsdWRlICJXb3JrbGV0UGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgpAQCAtMjI3LDEwICsyMjgsMTQgQEAgdm9p
ZCBXb3JrbGV0R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlzaGVkKCkKICAgICB9CiAKICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIHJ1biBhcyBhIG1vZHVsZSBzY3JpcHQgYnV0IHdl
IGRvbid0IHN1cHBvcnQgdGhpcyBpbiB3b3JrZXJzIHlldC4KLSAgICBOYWtlZFB0cjxKU0M6OkV4
Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VD
b2RlKG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgVVJMKG1fc2NyaXB0TG9hZGVyLT5yZXNwb25z
ZVVSTCgpKSksIGV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgbV9zY3Jp
cHQtPnNldEV4Y2VwdGlvbihleGNlcHRpb24pOworICAgIFVSTCBtb2R1bGVVUkwobV9zY3JpcHRM
b2FkZXItPnJlc3BvbnNlVVJMKCkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ldmFsdWF0ZWRN
b2R1bGVzLmFkZChtb2R1bGVVUkwpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewor
ICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOworICAgICAgICBtX3Nj
cmlwdC0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShtX3NjcmlwdExvYWRlci0+c2NyaXB0KCks
IFdURk1vdmUobW9kdWxlVVJMKSksIGV4Y2VwdGlvbik7CisgICAgICAgIGlmIChleGNlcHRpb24p
CisgICAgICAgICAgICBtX3NjcmlwdC0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7CisgICAgfQog
CiAgICAgZGlkQ29tcGxldGVTY3JpcHRGZXRjaEpvYihXVEZNb3ZlKGNvbXBsZXRlZEpvYiksIHsg
fSk7CiB9CkBAIC0yNDQsNCArMjQ5LDExIEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaWRD
b21wbGV0ZVNjcmlwdEZldGNoSm9iKFNjcmlwdEZldGNoSm9iJiYgam9iLCBPcHRpb25hCiAgICAg
cHJvY2Vzc05leHRTY3JpcHRGZXRjaEpvYklmTmVlZGVkKCk7CiB9CiAKK01lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyJiBXb3JrbGV0R2xvYmFsU2NvcGU6Om1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyKCkKK3sKKyAgICBpZiAoIW1fbWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIpCisgICAgICAg
IG1fbWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgPSBtYWtlVW5pcXVlPFdvcmtlck1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyPigqdGhpcyk7CisgICAgcmV0dXJuICptX21lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDE0OGJiYjUzM2M1ZDJkNmY3
ZjA4OWJkOTNkN2MyMDYxYWU3Yzg5NTUuLjA4MGQyMDFmMDM0NGIwYjdjMmQ5ZWY3MzljZGE1ZjJk
NTZmYTcyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9i
YWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29w
ZS5oCkBAIC00OCw3ICs0OCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV2ZW50
TG9vcFRhc2tHcm91cDsKK2NsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOwogY2xhc3Mg
V29ya2VyRXZlbnRMb29wOworY2xhc3MgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI7
CiBjbGFzcyBXb3JrZXJTY3JpcHRMb2FkZXI7CiAKIHN0cnVjdCBXb3JrbGV0UGFyYW1ldGVyczsK
QEAgLTcxLDYgKzczLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvV29ya2xl
dEdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisgICAgTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIG1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCk7CisK
ICAgICBFdmVudExvb3BUYXNrR3JvdXAmIGV2ZW50TG9vcCgpIGZpbmFsOwogCiAgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsgfQpAQCAtMTc2LDggKzE4MCwx
MSBAQCBwcml2YXRlOgogICAgIEpTQzo6UnVudGltZUZsYWdzIG1fanNSdW50aW1lRmxhZ3M7CiAg
ICAgT3B0aW9uYWw8U2NyaXB0U291cmNlQ29kZT4gbV9jb2RlOwogCisgICAgc3RkOjp1bmlxdWVf
cHRyPFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyPiBtX21lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOworCiAgICAgUmVmUHRyPFdvcmtlclNjcmlwdExvYWRlcj4gbV9zY3JpcHRMb2Fk
ZXI7CiAgICAgRGVxdWU8U2NyaXB0RmV0Y2hKb2I+IG1fc2NyaXB0RmV0Y2hKb2JzOworICAgIEhh
c2hTZXQ8VVJMPiBtX2V2YWx1YXRlZE1vZHVsZXM7CiAKICAgICBib29sIG1faXNDbG9zaW5nIHsg
ZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGY0ODlkY2Y1ZDI5NTE0N2RjN2YyYjZhNTNiOWYyMjBkZGEx
YjkyOS4uMDUyZWMwOTgyY2RlNTg1MWJjNDQ3YTFiMDY0Mzc4NDAyOWE5NzE2NCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIwLTEwLTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgQ29uc3RydWN0aW5nIGEgQXVkaW9Xb3JrbGV0Tm9kZSBzaG91bGQgY29uc3Ry
dWN0IGFuIEF1ZGlvV29ya2xldFByb2Nlc3NvciBvbiB0aGUgV29ya2xldCB0aHJlYWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzQ0MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuc2tpcCBhIGZldyB0
ZXN0cyB0aGF0IGFyZSBubyBsb25nZXIgdGltaW5nIG91dC4KKworICAgICAgICAqIFRlc3RFeHBl
Y3RhdGlvbnM6CisKIDIwMjAtMTAtMDcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY4MDg1LgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggODM3YTk0ODRhYzM2NGM5ZjgwYTgyNzgzYjJhMmU1
YjI3NTAyZjYyOS4uZWUzOWIxYTI2N2EwOWM3MTBmNGE0MDI3MWZjNzYzNDJjMDE2NjdlOCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMTAtMDcg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBDb25zdHJ1Y3Rpbmcg
YSBBdWRpb1dvcmtsZXROb2RlIHNob3VsZCBjb25zdHJ1Y3QgYW4gQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yIG9uIHRoZSBXb3JrbGV0IHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZSBXUFQgdGVzdHMgbm93IHRoYXQgd2UgYXJlIHBh
c3NpbmcgbW9yZSBjaGVja3MuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVk
aW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0LWludGVyZmFjZS9wcm9jZXNzaW5nLWFm
dGVyLXJlc3VtZS5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVk
aW93b3JrbGV0LW1lc3NhZ2Vwb3J0Lmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWlu
dGVyZmFjZS9hdWRpb3dvcmtsZXRnbG9iYWxzY29wZS10aW1pbmctaW5mby5odHRwcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1h
cGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0cHJvY2Vzc29yLW9wdGlv
bnMuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJh
dWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL3Byb2Nlc3Nvci1j
b25zdHJ1Y3Rpb24tcG9ydC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZh
Y2Uvc3VzcGVuZGVkLWNvbnRleHQtbWVzc2FnZXBvcnQuaHR0cHMtZXhwZWN0ZWQudHh0OgorCiAy
MDIwLTEwLTA3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIHN1cmUgdG8gZmlyZSB0aGUgY29ycmVjdCBzZXQgb2YgZXZlbnRzIGluIGNhc2UgTWVkaWFS
ZWNvcmRlciBzdHJlYW0gaGFzIHRyYWNrIGNoYW5nZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDk0
OWQ5YTg5ZDQzODM3MGM0YTI2ZGRmMTBkYmE0NTM4MTMzNTE3NTMuLjQ0MmRlMzUwZDU4ZThhOTU0
YmY0ZWI3NDFhOTNkNDU2OTFhYzg0OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzIwLDIwICsz
MjAsMTUgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMv
c2NyaXB0aW5nL2V2ZW50LWxvb3BzL2Z1bGx5X2FjdGkKIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtbWVkaWFzdHJlYW1hdWRpb3NvdXJj
ZW5vZGUtaW50ZXJmYWNlL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2RlLXJvdXRpbmcuaHRtbCBb
IFNraXAgXQogCiAjIFRoZXNlIHdlYmF1ZGlvIHRlc3RzIGFyZSB0aW1pbmcgb3V0IGR1ZSB0byBs
YWNrIGZvciBzdXBwb3J0IGZvciBBdWRpb1dvcmtsZXQuCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvY29udGV4dC1pbnRlcmZh
Y2UvcHJvY2Vzc2luZy1hZnRlci1yZXN1bWUuaHR0cHMuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dv
cmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldC1tZXNzYWdlcG9ydC5odHRwcy5odG1sIFsgU2tp
cCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1h
cGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0LXBvc3RtZXNzYWdlLXNo
YXJlZGFycmF5YnVmZmVyLmh0dHBzLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVy
ZmFjZS9hdWRpb3dvcmtsZXRnbG9iYWxzY29wZS10aW1pbmctaW5mby5odHRwcy5odG1sIFsgU2tp
cCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1h
cGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0bm9kZS1hdXRvbWF0aWMt
cHVsbC5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93
b3JrbGV0bm9kZS1vbmVycm9yLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWlu
dGVyZmFjZS9hdWRpb3dvcmtsZXRub2RlLW91dHB1dC1jaGFubmVsLWNvdW50Lmh0dHBzLmh0bWwg
WyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1
ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXRwcm9jZXNzb3It
b3B0aW9ucy5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVk
aW93b3JrbGV0cHJvY2Vzc29yLXByb2Nlc3MtZnJvemVuLWFycmF5Lmh0dHBzLmh0bWwgWyBTa2lw
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFw
aS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXRwcm9jZXNzb3ItcHJvY2Vz
cy16ZXJvLW91dHB1dHMuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJm
YWNlL2F1ZGlvd29ya2xldHByb2Nlc3Nvci1wcm9taXNlcy5odHRwcy5odG1sIFsgU2tpcCBdCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhl
LWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvcHJvY2Vzcy1nZXR0ZXIuaHR0cHMuaHRtbCBbIFNraXAg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBp
L3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL3Byb2Nlc3MtcGFyYW1ldGVycy5odHRwcy5odG1s
IFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1h
dWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2Uvc3VzcGVuZGVkLWNvbnRleHQtbWVz
c2FnZXBvcnQuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1jaGFubmVsbWVyZ2Vybm9kZS1pbnRlcmZh
Y2UvYWN0aXZlLXByb2Nlc3NpbmcuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1jb252b2x2ZXJub2Rl
LWludGVyZmFjZS9hY3RpdmUtcHJvY2Vzc2luZy5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW1lZGlh
ZWxlbWVudGF1ZGlvc291cmNlbm9kZS1pbnRlcmZhY2UvY29ycy1jaGVjay5odHRwcy5odG1sIFsg
U2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvY29udGV4dC1pbnRlcmZhY2Uv
cHJvY2Vzc2luZy1hZnRlci1yZXN1bWUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hdWRpb2NvbnRleHQtaW50ZXJmYWNlL3Byb2Nlc3NpbmctYWZ0ZXItcmVzdW1lLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCA2ZTA2MDQ5YTkzNjkwOTZkMTY3ZDllZmUyNDY5MzkzOWQwNDI5NzYw
Li40NmRmOGM2YWY1YzhiZTM5NmYzMDFmN2MxODk2ODAwNGRjOGU0MjUzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1h
dWRpby1hcGkvdGhlLWF1ZGlvY29udGV4dC1pbnRlcmZhY2UvcHJvY2Vzc2luZy1hZnRlci1yZXN1
bWUuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0LWlu
dGVyZmFjZS9wcm9jZXNzaW5nLWFmdGVyLXJlc3VtZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEs
NSArMSwzIEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1U
SU1FT1VUIFRlc3QgY29uc2lzdGVuY3kgb2YgcHJvY2Vzc2luZyBhZnRlciByZXN1bWUoKSBUZXN0
IHRpbWVkIG91dAorUEFTUyBUZXN0IGNvbnNpc3RlbmN5IG9mIHByb2Nlc3NpbmcgYWZ0ZXIgcmVz
dW1lKCkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNl
L2F1ZGlvd29ya2xldC1tZXNzYWdlcG9ydC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkv
dGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0LW1lc3NhZ2Vwb3J0Lmh0dHBz
LWV4cGVjdGVkLnR4dAppbmRleCBiYzEwMmM2NjRlOTIxZWIwNTI2MWE3Y2I4NzkyN2Q2OTAxMzQ4
OWQyLi40NGQ5YzE5YTA2MzExZTM0ZGY1ZjQ1N2Y2OThmZDhkODYwZWM1NTIxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3Ro
ZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0LW1lc3Nh
Z2Vwb3J0Lmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xl
dC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0LW1lc3NhZ2Vwb3J0Lmh0dHBzLWV4cGVjdGVkLnR4dApA
QCAtMSw5ICsxLDEzIEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVs
bAotCiBQQVNTICMgQVVESVQgVEFTSyBSVU5ORVIgU1RBUlRFRC4KLVRJTUVPVVQgRXhlY3V0aW5n
ICJUZXN0IHBvc3RNZXNzYWdlIGZyb20gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHRvIEF1ZGlvV29y
a2xldE5vZGUiIFRlc3QgdGltZWQgb3V0Ci1OT1RSVU4gRXhlY3V0aW5nICJUZXN0IHBvc3RNZXNz
YWdlIGZyb20gQXVkaW9Xb3JrbGV0Tm9kZSB0byBBdWRpb1dvcmtsZXRQcm9jZXNzb3IiCi1OT1RS
VU4gQXVkaXQgcmVwb3J0CitQQVNTIEV4ZWN1dGluZyAiVGVzdCBwb3N0TWVzc2FnZSBmcm9tIEF1
ZGlvV29ya2xldFByb2Nlc3NvciB0byBBdWRpb1dvcmtsZXROb2RlIgorUEFTUyBFeGVjdXRpbmcg
IlRlc3QgcG9zdE1lc3NhZ2UgZnJvbSBBdWRpb1dvcmtsZXROb2RlIHRvIEF1ZGlvV29ya2xldFBy
b2Nlc3NvciIKK1BBU1MgQXVkaXQgcmVwb3J0CiBQQVNTID4gW1Rlc3QgcG9zdE1lc3NhZ2UgZnJv
bSBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgdG8gQXVkaW9Xb3JrbGV0Tm9kZV0KK1BBU1MgICBUaGUg
aW5pdGlhbCBtZXNzYWdlIGZyb20gUG9ydFByb2Nlc3NvciBpcyBlcXVhbCB0byBjcmVhdGVkLgor
UEFTUyA8IFtUZXN0IHBvc3RNZXNzYWdlIGZyb20gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHRvIEF1
ZGlvV29ya2xldE5vZGVdIEFsbCBhc3NlcnRpb25zIHBhc3NlZC4gKHRvdGFsIDEgYXNzZXJ0aW9u
cykKK1BBU1MgPiBbVGVzdCBwb3N0TWVzc2FnZSBmcm9tIEF1ZGlvV29ya2xldE5vZGUgdG8gQXVk
aW9Xb3JrbGV0UHJvY2Vzc29yXQorUEFTUyAgIFRoZSByZXNwb25zZSBmcm9tIFBvcnRQcm9jZXNz
b3IgaXMgZXF1YWwgdG8gaGVsbG8uCitQQVNTIDwgW1Rlc3QgcG9zdE1lc3NhZ2UgZnJvbSBBdWRp
b1dvcmtsZXROb2RlIHRvIEF1ZGlvV29ya2xldFByb2Nlc3Nvcl0gQWxsIGFzc2VydGlvbnMgcGFz
c2VkLiAodG90YWwgMSBhc3NlcnRpb25zKQorUEFTUyAjIEFVRElUIFRBU0sgUlVOTkVSIEZJTklT
SEVEOiAyIHRhc2tzIHJhbiBzdWNjZXNzZnVsbHkuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90
aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXRnbG9iYWxzY29wZS10aW1pbmct
aW5mby5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRl
cmZhY2UvYXVkaW93b3JrbGV0Z2xvYmFsc2NvcGUtdGltaW5nLWluZm8uaHR0cHMtZXhwZWN0ZWQu
dHh0CmluZGV4IDVhMWFlMDllOTg4ZjE3OGMxYmYzMzY2OWMwMzRkMzEzODg3NmUzNTkuLjUwYWQ5
OTI0YjRiNWJkNjU3NzE1Njg0ZTNjMmI3NDFmZTgzMDgxYjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFw
aS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXRnbG9iYWxzY29wZS10aW1p
bmctaW5mby5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmts
ZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldGdsb2JhbHNjb3BlLXRpbWluZy1pbmZvLmh0dHBzLWV4
cGVjdGVkLnR4dApAQCAtMSw4ICsxLDE2IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBt
ZXNzYWdlID0gbnVsbAotCiBQQVNTICMgQVVESVQgVEFTSyBSVU5ORVIgU1RBUlRFRC4KLVRJTUVP
VVQgRXhlY3V0aW5nICJDaGVjayB0aGUgdGltaW5nIGluZm9ybWF0aW9uIGZyb20gQXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yIiBUZXN0IHRpbWVkIG91dAotTk9UUlVOIEF1ZGl0IHJlcG9ydAorUEFTUyBF
eGVjdXRpbmcgIkNoZWNrIHRoZSB0aW1pbmcgaW5mb3JtYXRpb24gZnJvbSBBdWRpb1dvcmtsZXRQ
cm9jZXNzb3IiCitQQVNTIEF1ZGl0IHJlcG9ydAogUEFTUyA+IFtDaGVjayB0aGUgdGltaW5nIGlu
Zm9ybWF0aW9uIGZyb20gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yXQorUEFTUyAgIGN1cnJlbnRGcmFt
ZSBmcm9tIHRoZSBwcm9jZXNzb3IgYXQgMCBpcyBlcXVhbCB0byAwLgorUEFTUyAgIGN1cnJlbnRU
aW1lIGZyb20gdGhlIHByb2Nlc3NvciBhdCAwIGlzIGVxdWFsIHRvIDAuCitQQVNTICAgY3VycmVu
dEZyYW1lIGZyb20gdGhlIHByb2Nlc3NvciBhdCAxMjggaXMgZXF1YWwgdG8gMTI4LgorUEFTUyAg
IGN1cnJlbnRUaW1lIGZyb20gdGhlIHByb2Nlc3NvciBhdCAwLjAwMjY2NjY2NjY2NjY2NjY2NjYg
aXMgZXF1YWwgdG8gMC4wMDI2NjY2NjY2NjY2NjY2NjY2LgorUEFTUyAgIGN1cnJlbnRGcmFtZSBm
cm9tIHRoZSBwcm9jZXNzb3IgYXQgMjU2IGlzIGVxdWFsIHRvIDI1Ni4KK1BBU1MgICBjdXJyZW50
VGltZSBmcm9tIHRoZSBwcm9jZXNzb3IgYXQgMC4wMDUzMzMzMzMzMzMzMzMzMzMgaXMgZXF1YWwg
dG8gMC4wMDUzMzMzMzMzMzMzMzMzMzMuCitQQVNTICAgY3VycmVudEZyYW1lIGZyb20gdGhlIHBy
b2Nlc3NvciBhdCAzODQgaXMgZXF1YWwgdG8gMzg0LgorUEFTUyAgIGN1cnJlbnRUaW1lIGZyb20g
dGhlIHByb2Nlc3NvciBhdCAwLjAwOCBpcyBlcXVhbCB0byAwLjAwOC4KK1BBU1MgPCBbQ2hlY2sg
dGhlIHRpbWluZyBpbmZvcm1hdGlvbiBmcm9tIEF1ZGlvV29ya2xldFByb2Nlc3Nvcl0gQWxsIGFz
c2VydGlvbnMgcGFzc2VkLiAodG90YWwgOCBhc3NlcnRpb25zKQorUEFTUyAjIEFVRElUIFRBU0sg
UlVOTkVSIEZJTklTSEVEOiAxIHRhc2tzIHJhbiBzdWNjZXNzZnVsbHkuCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhl
LWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXRwcm9jZXNz
b3Itb3B0aW9ucy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xl
dC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0cHJvY2Vzc29yLW9wdGlvbnMuaHR0cHMtZXhwZWN0ZWQu
dHh0CmluZGV4IDcxYmY2MDgwOGUzNjkwMzk3NWE4NTJlNmQ1ZjllZDg2ZDk2OWYyOTYuLmM4ZTdk
N2Q4YjFjYzgwZmVkYzNlODY4MTBhZDNjYThiMjBlNTA4MDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFw
aS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXRwcm9jZXNzb3Itb3B0aW9u
cy5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50
ZXJmYWNlL2F1ZGlvd29ya2xldHByb2Nlc3Nvci1vcHRpb25zLmh0dHBzLWV4cGVjdGVkLnR4dApA
QCAtMSw5ICsxLDE2IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVs
bAotCiBQQVNTICMgQVVESVQgVEFTSyBSVU5ORVIgU1RBUlRFRC4KLVRJTUVPVVQgRXhlY3V0aW5n
ICJ2YWxpZC1wcm9jZXNzb3ItZGF0YSIgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBFeGVjdXRpbmcg
ImVtcHR5LW9wdGlvbiIKLU5PVFJVTiBBdWRpdCByZXBvcnQKK1BBU1MgRXhlY3V0aW5nICJ2YWxp
ZC1wcm9jZXNzb3ItZGF0YSIKK1BBU1MgRXhlY3V0aW5nICJlbXB0eS1vcHRpb24iCitQQVNTIEF1
ZGl0IHJlcG9ydAogUEFTUyA+IFt2YWxpZC1wcm9jZXNzb3ItZGF0YV0KK1BBU1MgICB8ZGVzY3Jp
cHRpb258IGZpZWxkIGluIHByb2Nlc3Nvck9wdGlvbnMgZnJvbSBwcm9jZXNzb3IoImZvbyIpIGlz
IGVxdWFsIHRvIHRoZSBmaWVsZCBpbiBub2RlIGNvbnN0cnVjdG9yIG9wdGlvbnMgKCJmb28iKS4K
K1BBU1MgICB8cGF5bG9hZHwgYXJyYXkgaW4gcHJvY2Vzc29yT3B0aW9ucyBmcm9tIHByb2Nlc3Nv
cihbMCwxLDIsM10pIGlzIGlkZW50aWNhbCB0byB0aGUgYXJyYXkgdGhlIGFycmF5IGluIG5vZGUg
Y29uc3RydWN0b3Igb3B0aW9ucyAoWzAsMSwyLDNdKS4KK1BBU1MgPCBbdmFsaWQtcHJvY2Vzc29y
LWRhdGFdIEFsbCBhc3NlcnRpb25zIHBhc3NlZC4gKHRvdGFsIDIgYXNzZXJ0aW9ucykKK1BBU1Mg
PiBbZW1wdHktb3B0aW9uXQorUEFTUyAgIE51bWJlciBvZiBwcm9wZXJ0aWVzIGluIGRhdGEgZnJv
bSBwcm9jZXNzb3IgaXMgZXF1YWwgdG8gMi4KK1BBU1MgICB8bnVtYmVyT2ZJbnB1dHN8IGZpZWxk
IGluIGRhdGEgZnJvbSBwcm9jZXNzb3IgaXMgZXF1YWwgdG8gMS4KK1BBU1MgICB8bnVtYmVyT2ZP
dXRwdXRzfCBmaWVsZCBpbiBkYXRhIGZyb20gcHJvY2Vzc29yIGlzIGlkZW50aWNhbCB0byB0aGUg
YXJyYXkgMS4KK1BBU1MgPCBbZW1wdHktb3B0aW9uXSBBbGwgYXNzZXJ0aW9ucyBwYXNzZWQuICh0
b3RhbCAzIGFzc2VydGlvbnMpCitQQVNTICMgQVVESVQgVEFTSyBSVU5ORVIgRklOSVNIRUQ6IDIg
dGFza3MgcmFuIHN1Y2Nlc3NmdWxseS4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRp
b3dvcmtsZXQtaW50ZXJmYWNlL3Byb2Nlc3Nvci1jb25zdHJ1Y3Rpb24tcG9ydC5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvcHJvY2Vzc29y
LWNvbnN0cnVjdGlvbi1wb3J0Lmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA2MmU5ODM4MDliMzhl
NjA2YWRmYTgyN2JhODA3NThhM2UyYzYxNWRjLi5mNjBlYzhjMjA0NDQwZmUwZTBhYjBhNDg3NjUz
ZDVkOTE1NWRkYzE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRl
cmZhY2UvcHJvY2Vzc29yLWNvbnN0cnVjdGlvbi1wb3J0Lmh0dHBzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3Ro
ZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvcHJvY2Vzc29yLWNvbnN0cnVj
dGlvbi1wb3J0Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDggQEAKIAogSGFybmVzcyBF
cnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKLVRJTUVPVVQgc3VwZXIoKSBhZnRlciBu
ZXcgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKCkgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBuZXcgQXVk
aW9Xb3JrbGV0UHJvY2Vzc29yKCkgYWZ0ZXIgc3VwZXIoKQotTk9UUlVOIG5ldyBBdWRpb1dvcmts
ZXRQcm9jZXNzb3IoKSBhZnRlciBuZXcgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKCkKLU5PVFJVTiBT
aW5nbGV0b24gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yCitQQVNTIHN1cGVyKCkgYWZ0ZXIgbmV3IEF1
ZGlvV29ya2xldFByb2Nlc3NvcigpCitQQVNTIG5ldyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoKSBh
ZnRlciBzdXBlcigpCitQQVNTIG5ldyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoKSBhZnRlciBuZXcg
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yKCkKK1RJTUVPVVQgU2luZ2xldG9uIEF1ZGlvV29ya2xldFBy
b2Nlc3NvciBUZXN0IHRpbWVkIG91dAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlv
d29ya2xldC1pbnRlcmZhY2Uvc3VzcGVuZGVkLWNvbnRleHQtbWVzc2FnZXBvcnQuaHR0cHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL3N1c3BlbmRl
ZC1jb250ZXh0LW1lc3NhZ2Vwb3J0Lmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCBmMjk4NzM1ZjM1
ZWVkMmM0MmNjYTM3NmUzN2Q4YTk0MmJiOGM2ODUyLi5lYjViMjE4MDY4NTlhODQ3MTNmYTdlMGQw
NjY0YTM1ZGNmMDVkOTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1p
bnRlcmZhY2Uvc3VzcGVuZGVkLWNvbnRleHQtbWVzc2FnZXBvcnQuaHR0cHMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVk
aW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9zdXNwZW5kZWQtY29u
dGV4dC1tZXNzYWdlcG9ydC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw1IEBACiAKLUhh
cm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIHJlYWx0aW1l
IHN1c3BlbmRlZCBUZXN0IHRpbWVkIG91dAotTk9UUlVOIG9mZmxpbmUgYmVmb3JlIHN0YXJ0Ci1O
T1RSVU4gb2ZmbGluZSBvbiBjb21wbGV0ZQorUEFTUyByZWFsdGltZSBzdXNwZW5kZWQKK1BBU1Mg
b2ZmbGluZSBiZWZvcmUgc3RhcnQKK0ZBSUwgb2ZmbGluZSBvbiBjb21wbGV0ZSBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJJbnZhbGlkU3RhdGVF
cnJvcjogQ29udGV4dCBpcyBjbG9zZWQiCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410774</attachid>
            <date>2020-10-07 13:44:09 -0700</date>
            <delta_ts>2020-10-07 15:05:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217442-20201007134408.patch</filename>
            <type>text/plain</type>
            <size>63434</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmRmMTY5ZTg5YzAzNWRh
YTA5NzFkODFkMzg4NDc4Nzk1MmI3YzE0Yi4uMDlhNDAyNWM3MzAwNTA5OGNlZjBhNWE4YWJmN2E1
MGJkM2ZkOTYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAyMC0xMC0wNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIENvbnN0cnVjdGluZyBhIEF1
ZGlvV29ya2xldE5vZGUgc2hvdWxkIGNvbnN0cnVjdCBhbiBBdWRpb1dvcmtsZXRQcm9jZXNzb3Ig
b24gdGhlIFdvcmtsZXQgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTc0NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDb25zdHJ1Y3RpbmcgYSBBdWRpb1dvcmtsZXROb2RlIHNob3VsZCBjb25z
dHJ1Y3QgYW4gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIG9uIHRoZSBXb3JrbGV0IHRocmVhZDoKKyAg
ICAgICAgLSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXVkaW8vI0F1ZGlvV29ya2xldE5vZGUt
Y29uc3RydWN0b3JzIChTdGVwIDEzKQorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmViYXNlbGlu
ZWQgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXQ6OmNyZWF0ZVByb2Nlc3Nv
cik6CisgICAgICAgIEFkZCBjcmVhdGVQcm9jZXNzb3IoKSBmdW5jdGlvbiB0byBBdWRpb1dvcmts
ZXQgd2hpY2ggdGFrZXMgY2FyZSBvZiBob3BwaW5nIHRvIHRoZSB3b3JrbGV0IHRocmVhZAorICAg
ICAgICBpbiBvcmRlciB0byBjYWxsIGNyZWF0ZVByb2Nlc3NvcigpIG9uIHRoZSBBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Lmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGVQ
cm9jZXNzb3IpOgorICAgICAgICBDb25zdHJ1Y3QgYW4gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLCBh
cyBzcGVjaWZpZWQgaGVyZToKKyAgICAgICAgLSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXVk
aW8vI0F1ZGlvV29ya2xldFByb2Nlc3Nvci1pbnN0YW50aWF0aW9uCisKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjp0YWtlUGVuZGluZ1Byb2Nlc3NvckNvbnN0cnVj
dGlvbkRhdGEpOgorICAgICAgICBBIGZ1bmN0aW9uIHRvIHRha2UgdGhlIHBlbmRpbmcgUHJvY2Vz
c29yQ29uc3RydWN0aW9uRGF0YS4gVGhpcyBjb25zdHJ1Y3Rpb24KKyAgICAgICAgZGF0YSBnZXRz
IGluaXRpYWxpemVkIGluIGNyZWF0ZVByb2Nlc3NvcigpIGFuZCBnZXRzIGNvbnN1bWVkIGJ5Cisg
ICAgICAgIEF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmg6CisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Xb3JrbGV0Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgSW1wcm92ZSBBdWRpb1dvcmtsZXROb2Rl
IGNvbnN0cnVjdG9yIHRvIGFjdHVhbGx5IGNhdXNlIHRoZSBjb25zdHJ1Y3Rpb24gb2YKKyAgICAg
ICAgdGhlIEF1ZGlvV29ya2xldFByb2Nlc3NvciBvbiB0aGUgd29ya2xldCB0aHJlYWQsIHBhc3Np
bmcgaXQgdGhlIG9wdGlvbnMgYW5kCisgICAgICAgIHRoZSBNZXNzYWdlUG9ydC4gVGhpcyBpcyBh
cyBwZXIgdGhlIHNwZWNpZmljYXRpb24gaGVyZToKKyAgICAgICAgLSBodHRwczovL3d3dy53My5v
cmcvVFIvd2ViYXVkaW8vI0F1ZGlvV29ya2xldE5vZGUtY29uc3RydWN0b3JzCisKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvV29ya2xldE5vZGU6OkF1ZGlvV29ya2xldE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Xb3JrbGV0Tm9kZTo6fkF1ZGlvV29ya2xldE5vZGUpOgorCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1dvcmtsZXROb2RlOjpzZXRQcm9jZXNzb3IpOgorICAgICAgICBPbmNl
IHRoZSBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgaXMgY3JlYXRlZCBvbiB0aGUgd29ya2xldCB0aHJl
YWQsIHRoaXMgZ2V0cworICAgICAgICBjYWxsZWQgc28gdGhhdCB0aGUgQXVkaW9Xb3JrbGV0Tm9k
ZSBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIHByb2Nlc3Nvci4gVGhpcworICAgICAgICB3aWxsIGJl
IG5lZWRlZCBsYXRlciBvbiBvbmNlIEF1ZGlvV29ya2xldE5vZGU6OnByb2Nlc3MoKSBzdGFydHMg
ZG9pbmcgYXVkaW8KKyAgICAgICAgcHJvY2Vzc2luZyB0aHJvdWdoIHRoZSBBdWRpb1dvcmtsZXRQ
cm9jZXNzb3IuCisKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE5vZGU6OnByb2Nlc3Mp
OgorICAgICAgICBJbXByb3ZlIGNvbW1lbnQuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldE5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE5vZGUuaWRsOgorICAgICAgICBQYXNzIHRoZSBnbG9iYWwgb2JqZWN0IHRvIHRoZSBjb25z
dHJ1Y3Rvci4gSXQgaXMgbmVlZGVkIG5vdyB0aGF0IHRoZSBjb25zdHJ1Y3RvcgorICAgICAgICBz
ZXJpYWxpemVzIHNjcmlwdCB2YWx1ZXMgdG8gcGFzcyB0aGVtIHRvIHRoZSB3b3JrbGV0IHRocmVh
ZC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMu
aWRsOgorICAgICAgICBBZGQgW0pTR2VuZXJhdGVUb0pTT2JqZWN0XSB0byBBdWRpb1dvcmtsZXRO
b2RlT3B0aW9ucyBkaWN0aW9uYXJ5IHNvIHRoYXQgYQorICAgICAgICBjb252ZXJ0RGljdGlvbmFy
eVRvSlMoKSBmdW5jdGlvbiBnZXRzIGdlbmVyYXRlZCBmb3IgdGhpcyBkaWN0aW9uYXJ5LiBUaGlz
IGZ1bmN0aW9uCisgICAgICAgIGlzIGNhbGxlZCBieSB0aGUgQXVkaW9Xb3JrbGV0Tm9kZSBjb25z
dHJ1Y3Rvci4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6QXVkaW9Xb3JrbGV0
UHJvY2Vzc29yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nl
c3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpuYW1lIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6cG9ydCk6Cisg
ICAgICAgIEltcGxlbWVudCBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgY29uc3RydWN0b3Igc28gdGhh
dCBpdHMgcmV0cmlldmVzIHRoZSBwZW5kaW5nCisgICAgICAgIGNvbnN0cnVjdGlvbiBkYXRhIGZy
b20gdGhlIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlIGFuZCBwcm9wZXJseSBpbml0aWFsaXplcwor
ICAgICAgICBpdHMgbmFtZSBhbmQgcG9ydC4gVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoaXMgaXMg
aGVyZToKKyAgICAgICAgLSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXVkaW8vI2RvbS1hdWRp
b3dvcmtsZXRwcm9jZXNzb3ItYXVkaW93b3JrbGV0cHJvY2Vzc29yCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5pZGw6CisgICAgICAgIEluZGljYXRl
IHRoYXQgdGhlIGNvbnN0cnVjdG9yIG1heSB0aHJvdyBhbiBleGNlcHRpb24gYXMgcGVyIHRoZSBz
cGVjaWZpY2F0aW9uOgorICAgICAgICAtIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdWRpby8j
ZG9tLWF1ZGlvd29ya2xldHByb2Nlc3Nvci1hdWRpb3dvcmtsZXRwcm9jZXNzb3IgKFN0ZXAgMSkK
KyAgICAgICAgQWxzbyBwYXNzIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRvIHRoZSBjb25z
dHJ1Y3RvciBzaW5jZSB0aGUgY29uc3RydWN0b3IKKyAgICAgICAgbmVlZHMgdG8gcmV0cmlldmUg
dGhlIHBlbmRpbmcgY29uc3RydWN0aW9uIGRhdGEgZnJvbSBpdDoKKyAgICAgICAgLSBodHRwczov
L3d3dy53My5vcmcvVFIvd2ViYXVkaW8vI2RvbS1hdWRpb3dvcmtsZXRwcm9jZXNzb3ItYXVkaW93
b3JrbGV0cHJvY2Vzc29yIChTdGVwIDEpCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEuaDoKKworICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YTo6QXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yQ29uc3RydWN0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRQ
cm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE6OnBvcnQgY29uc3QpOgorICAg
ICAgICBBZGQgY2xhc3MgdG8gd3JhcCB0aGUgQXVkaW9Xb3JrbGV0UHJvY2VzcydzIGNvbnN0cnVj
dGlvbiBkYXRhOgorICAgICAgICAtIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdWRpby8jcGVu
ZGluZy1wcm9jZXNzb3ItY29uc3RydWN0aW9uLWRhdGEKKworICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmg6CisgICAgICAgIE1vdmUgVGhyZWFkU2FmZVJlZkNv
dW50ZWQgZnJvbSB0aGlzIGNsYXNzIHRvIHRoZSBwYXJlbnQgY2xhc3MgKFdvcmtlck9yV29ya2xl
dFRocmVhZCkKKyAgICAgICAgc2luY2UgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIg
bmVlZHMgdG8gcHJvdGVjdCBhIFdvcmtlck9yV29ya2xldFRocmVhZCBub3cuCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgaGVh
ZGVyIHRvIHByb2plY3QuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
UHJvcGVybHkgaGFuZGxlIFdvcmtsZXRHbG9iYWxTY29wZS4KKworICAgICAgICAqIGRvbS9NZXNz
YWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQu
aDoKKyAgICAgICAgVHdlYWsgTWVzc2FnZVBvcnQgQVBJIHRvIHN1cHBvcnQgZGlzZW50YW5nbGlu
Zy9lbnRhbmdsaW5nIGEgc2luZ2xlCisgICAgICAgIE1lc3NhZ2VQb3J0LiBQcmV2aW91c2x5IHdl
IGhhZCB0byBwYXNzIGFuIGFycmF5IG9mIHBvcnRzLgorCisgICAgICAgICogZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6Y3JlYXRlZE1lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KToKKyAgICAgICAgVHdlYWsgYXNzZXJ0
aW9ucyB0byBoYW5kbGUgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVzLgorCisgICAgICAgICogZG9t
L21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQpOgorICAgICAg
ICAqIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaDoKKyAgICAgICAg
KiBkb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpXb3Jr
ZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1v
dGVQb3J0Rm9yQWN0aXZpdHkpOgorICAgICAgICAqIGRvbS9tZXNzYWdlcG9ydHMvV29ya2VyTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaDoKKyAgICAgICAgVXBkYXRlIFdvcmtlck1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyIHRvIHVzZSBXb3JrZXJPcldvcmtsZXRTY29wZSBpbnN0ZWFkCisg
ICAgICAgIG9yIFdvcmtlckdsb2JhbFNjb3BlLiBUaGlzIGFsbG93cyB1cyB0byByZXVzZSB0aGlz
IGNsYXNzIGZvciBBdWRpb1dvcmtsZXRzCisgICAgICAgIHNvIHRoYXQgTWVzc2FnZVBvcnQgY29t
bXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBtYWluIHRocmVhZCBhbmQgdGhlIHdvcmtsZXQKKyAgICAg
ICAgdGhyZWFkIG5vdyB3b3Jrcy4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0
VGhyZWFkLmg6CisgICAgICAgIE1vdmUgVGhyZWFkU2FmZVJlZkNvdW50ZWQgZnJvbSBzdWJjbGFz
c2VzIHRvIHRoaXMgY2xhc3Mgc28gdGhhdAorICAgICAgICBXb3JrZXJNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlciBjYW4gcHJvdGVjdCBhIFdvcmtlck9yV29ya2xldFRocmVhZC4KKworICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bm90
aWZ5RmluaXNoZWQpOgorICAgICAgICBPbmx5IGV2YWx1YXRlIHRoZSBzY3JpcHQgaWYgd2UgaGF2
ZSBub3QgYWxyZWFkeSBldmFsdWF0ZWQgaXQgaW4gdGhpcyB3b3JrbGV0LgorICAgICAgICBJIGFt
IGFzc3VtaW5nIHRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugd2UgYXJlIG5vdCB0cmVhdGluZyB0aGUg
c2NyaXB0IGFzIGEgbW9kdWxlCisgICAgICAgIHlldCAoZHVlIHRvIGxhY2sgb2Ygc3VwcG9ydCBp
biB3b3JrZXJzKS4gV2l0aG91dCB0aGlzIGNoYW5nZXMsIHRoZSB3b3JrbGV0J3MKKyAgICAgICAg
c2NyaXB0IHdvdWxkIGdldCBpbiBhIGJhZCBzdGF0ZSB3aGVuIGltcG9ydGluZyBzZXZlcmFsIHRp
bWVzIHRoZSBzYW1lIG1vZHVsZQorICAgICAgICAod2hpY2ggaXMgc29tZXRoaW5nIHRoZSBXUFQg
dGVzdHMgZG8pLgorCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6Om1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyKToKKyAgICAgICAgSW5zdGFudGlhdGUgV29ya2VyTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIgaWYgbmVlZGVkLiBUaGlzIGlzIG5lZWRlZCBmb3IKKyAgICAg
ICAgTWVzc2FnZVBvcnQgY29tbXVuaWNhdGlvbiBpcyBBdWRpb1dvcmtsZXRzLgorCisgICAgICAg
ICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisKIDIwMjAtMTAtMDcgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtGbG9hdGluZ10gTW92ZSBG
bG9hdGluZ1N0YXRlOjp0b3AvYm90dG9tIGZ1bmN0aW9ucyBvdmVyIHRvIEZsb2F0aW5nQ29udGV4
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXQuY3Bw
CmluZGV4IDI0ZWQ0Yzg5NjhkN2FiNDdiNDQzNTIxNDY5YmRhOWJkMzBhNjc4NzcuLmY5NjBhZmY5
OWYwNTRlOWYzYTA5NmQ4YjM0YzUwNDllZmExMjg5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldC5jcHAKQEAgLTMxLDggKzMxLDExIEBACiAj
aWYgRU5BQkxFKFdFQl9BVURJTykKICNpbmNsdWRlICJBdWRpb1dvcmtsZXQuaCIKIAorI2luY2x1
ZGUgIkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0TWVz
c2FnaW5nUHJveHkuaCIKKyNpbmNsdWRlICJBdWRpb1dvcmtsZXROb2RlLmgiCiAjaW5jbHVkZSAi
QmFzZUF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MSw2
ICs3NCwxOSBAQCBCYXNlQXVkaW9Db250ZXh0KiBBdWRpb1dvcmtsZXQ6OmF1ZGlvQ29udGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fYXVkaW9Db250ZXh0LmdldCgpOwogfQogCit2b2lkIEF1ZGlv
V29ya2xldDo6Y3JlYXRlUHJvY2Vzc29yKGNvbnN0IFN0cmluZyYgbmFtZSwgVHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCBwb3J0LCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG9wdGlvbnMsIEF1
ZGlvV29ya2xldE5vZGUmIG5vZGUpCit7CisgICAgYXV0byogcHJveHkgPSB0aGlzLT5wcm94eSgp
OworICAgIEFTU0VSVChwcm94eSk7CisgICAgaWYgKCFwcm94eSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2xldEdsb2JhbFNjb3BlKFtuYW1lID0g
bmFtZS5pc29sYXRlZENvcHkoKSwgcG9ydCwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIG5v
ZGUgPSBtYWtlUmVmKG5vZGUpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKKyAgICAgICAgbm9kZS0+c2V0UHJvY2Vzc29yKGRvd25jYXN0PEF1ZGlvV29ya2xldEds
b2JhbFNjb3BlPihjb250ZXh0KS5jcmVhdGVQcm9jZXNzb3IobmFtZSwgcG9ydCwgV1RGTW92ZShv
cHRpb25zKSkpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtub2RlID0gV1RGTW92ZShub2Rl
KV0geyB9KTsKKyAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldC5oCmluZGV4IDlhZmNi
ZjEwMTI0OTg3YjI0ZGI5NzFhN2UwNzI0NDhmN2YzMjI4OGEuLjcyMTFmNmNmNmZkYjRjNjRjZDM1
OGQxYTQ3MzVmMTYzMTM0Njg3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXQuaApAQCAtMjksMTEgKzI5LDEzIEBACiAjcHJhZ21hIG9uY2UKIAog
I2lmIEVOQUJMRShXRUJfQVVESU8pCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRl
ICJXb3JrbGV0LmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBBdWRpb1dvcmtsZXROb2RlOwogY2xhc3MgQmFzZUF1ZGlvQ29udGV4dDsK
IGNsYXNzIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5OwogCkBAIC00NSw2ICs0Nyw4IEBAIHB1
YmxpYzoKICAgICBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSogcHJveHkoKSBjb25zdDsKICAg
ICBCYXNlQXVkaW9Db250ZXh0KiBhdWRpb0NvbnRleHQoKSBjb25zdDsKIAorICAgIHZvaWQgY3Jl
YXRlUHJvY2Vzc29yKGNvbnN0IFN0cmluZyYgbmFtZSwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCwg
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgQXVkaW9Xb3JrbGV0Tm9kZSYpOworCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IEF1ZGlvV29ya2xldChCYXNlQXVkaW9Db250ZXh0Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggYjg1MjMwOGZmZjU5OGIzYTgxMTNmMDFjYzM2ZDIyZjZi
MjMwYWYyYi4uZDZjYjNhY2I5ZTc2MTkzMTRhNzZkM2ZmZDVmOThhYzcwYzM3MGNmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJBdWRpb1BhcmFt
RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkF1ZGlvV29ya2xldC5oIgogI2luY2x1ZGUgIkF1ZGlv
V29ya2xldE1lc3NhZ2luZ1Byb3h5LmgiCisjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Q29uc3RydWN0aW9uRGF0YS5oIgorI2luY2x1ZGUgIkpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmgi
CiAjaW5jbHVkZSAiSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgpA
QCAtMTA5LDYgKzExMSwzNSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZTo6cmVnaXN0ZXJQcm9jZXNzb3IoU3RyaW5nJiYgbmFtZSwgUmVmPAogICAgIHJldHVybiB7
IH07CiB9CiAKK1JlZlB0cjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+IEF1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlOjpjcmVhdGVQcm9jZXNzb3IoY29uc3QgU3RyaW5nJiBuYW1lLCBUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0IHBvcnQsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgb3B0aW9ucykKK3sK
KyAgICBhdXRvIGNvbnN0cnVjdG9yID0gbV9wcm9jZXNzb3JDb25zdHJ1Y3Rvck1hcC5nZXQobmFt
ZSk7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yKTsKKyAgICBpZiAoIWNvbnN0cnVjdG9yKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEpTQzo6SlNPYmplY3QqIGpzQ29uc3RydWN0b3Ig
PSBjb25zdHJ1Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmNhbGxiYWNrKCk7CisgICAgYXV0byogZ2xv
YmFsT2JqZWN0ID0ganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNDOjpWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sgeyBnbG9iYWxPYmplY3QgfTsK
KworICAgIG1fcGVuZGluZ1Byb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEgPSBtYWtlVW5pcXVlPEF1
ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE+KFN0cmluZyB7IG5hbWUgfSwgTWVz
c2FnZVBvcnQ6OmVudGFuZ2xlKCp0aGlzLCBXVEZNb3ZlKHBvcnQpKSk7CisKKyAgICBKU0M6Ok1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXV0byBhcmcgPSBvcHRpb25zLT5kZXNlcmlh
bGl6ZSgqZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIFNlcmlhbGl6YXRpb25FcnJvck1vZGU6
Ok5vblRocm93aW5nKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
KyAgICBhcmdzLmFwcGVuZChhcmcpOworICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkp
OworCisgICAgYXV0byogb2JqZWN0ID0gSlNDOjpjb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCBqc0Nv
bnN0cnVjdG9yLCBhcmdzLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCBBdWRpb1dvcmtsZXRQcm9jZXNz
b3IiKTsKKyAgICBBU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhb2JqZWN0KTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIGF1dG8mIGpzUHJvY2Vz
c29yID0gKkpTQzo6anNDYXN0PEpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKj4ob2JqZWN0KTsKKyAg
ICByZXR1cm4gJmpzUHJvY2Vzc29yLndyYXBwZWQoKTsKK30KKwogdm9pZCBBdWRpb1dvcmtsZXRH
bG9iYWxTY29wZTo6cHJlcGFyZUZvclRlcm1pbmF0aW9uKCkKIHsKICAgICBpZiAoYXV0byogZGVm
YXVsdFRhc2tHcm91cCA9IHRoaXMtPmRlZmF1bHRUYXNrR3JvdXAoKSkKQEAgLTEzMCw2ICsxNjEs
MTEgQEAgdm9pZCBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6cG9zdFRhc2soVGFzayYmIHRhc2sp
CiAgICAgdGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwogfQogCitz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YT4gQXVk
aW9Xb3JrbGV0R2xvYmFsU2NvcGU6OnRha2VQZW5kaW5nUHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0
YSgpCit7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nUHJvY2Vzc29yQ29uc3Ry
dWN0aW9uRGF0YSwgbnVsbHB0cik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggNDQxMmNmZDBi
MWU0NDljNDIxMDVhNTgxMDYxMDE0MzYzZmI1ZTM1ZS4uMmNkN2UwMGUxM2U0ZDI2MGVkYmEzODNh
ZjEzODIxODI5YTY1NjM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMzAsMTAgKzMwLDEzIEBA
CiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogI2luY2x1ZGUgIkF1ZGlvV29ya2xldFRocmVhZC5o
IgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3Bl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Q29uc3RydWN0aW9uRGF0YTsKK2NsYXNzIEF1ZGlvV29ya2xldFByb2Nlc3NvcjsKIGNsYXNzIEF1
ZGlvV29ya2xldFRocmVhZDsKIGNsYXNzIEpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0
b3I7CiAKQEAgLTQ5LDYgKzUyLDcgQEAgcHVibGljOgogICAgIH5BdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZSgpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVnaXN0ZXJQcm9jZXNzb3IoU3RyaW5n
JiYgbmFtZSwgUmVmPEpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3I+JiYpOworICAg
IFJlZlB0cjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+IGNyZWF0ZVByb2Nlc3Nvcihjb25zdCBTdHJp
bmcmIG5hbWUsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYgb3B0aW9ucyk7CiAKICAgICB2b2lkIHNldEN1cnJlbnRGcmFtZShmbG9hdCBjdXJyZW50
RnJhbWUpIHsgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7IH0KICAgICBzaXplX3QgY3Vy
cmVudEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KQEAgLTYyLDYgKzY2
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBwb3N0VGFzayhUYXNrJiYpIGZpbmFsOwogCisgICAg
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE+IHRh
a2VQZW5kaW5nUHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YSgpOworCiBwcml2YXRlOgogICAgIEF1
ZGlvV29ya2xldEdsb2JhbFNjb3BlKEF1ZGlvV29ya2xldFRocmVhZCYsIGNvbnN0IFdvcmtsZXRQ
YXJhbWV0ZXJzJik7CiAKQEAgLTcyLDYgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9j
dXJyZW50RnJhbWUgeyAwIH07CiAgICAgY29uc3QgZmxvYXQgbV9zYW1wbGVSYXRlOwogICAgIEhh
c2hNYXA8U3RyaW5nLCBSZWZQdHI8SlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvcj4+
IG1fcHJvY2Vzc29yQ29uc3RydWN0b3JNYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvV29y
a2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE+IG1fcGVuZGluZ1Byb2Nlc3NvckNvbnN0cnVj
dGlvbkRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcAppbmRleCA0YTBi
NmM4ZmNmODBhNWE3YTQxMGZmNjUyYmE1NDBiNTE4YTUxODI0Li41NDQ0YTMyZmQxMDdiODllMDRj
MzNmY2M0NDg1ZDBkY2MzNjllNmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAKQEAgLTM1LDE3ICszNSwyNCBAQAogI2lu
Y2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKICNpbmNs
dWRlICJBdWRpb1BhcmFtTWFwLmgiCisjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0LmgiCisjaW5jbHVk
ZSAiQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaCIKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRO
b2RlT3B0aW9ucy5oIgorI2luY2x1ZGUgIkF1ZGlvV29ya2xldFByb2Nlc3Nvci5oIgogI2luY2x1
ZGUgIkJhc2VBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlICJKU0F1ZGlvV29ya2xldE5vZGVPcHRp
b25zLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUNoYW5uZWwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9y
dC5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIldvcmtl
clJ1bkxvb3AuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb1dvcmtsZXROb2RlKTsKIAotRXhjZXB0aW9uT3I8
UmVmPEF1ZGlvV29ya2xldE5vZGU+PiBBdWRpb1dvcmtsZXROb2RlOjpjcmVhdGUoQmFzZUF1ZGlv
Q29udGV4dCYgY29udGV4dCwgU3RyaW5nJiYgbmFtZSwgQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMm
JiBvcHRpb25zKQorRXhjZXB0aW9uT3I8UmVmPEF1ZGlvV29ya2xldE5vZGU+PiBBdWRpb1dvcmts
ZXROb2RlOjpjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBCYXNlQXVk
aW9Db250ZXh0JiBjb250ZXh0LCBTdHJpbmcmJiBuYW1lLCBBdWRpb1dvcmtsZXROb2RlT3B0aW9u
cyYmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFvcHRpb25zLm51bWJlck9mSW5wdXRzICYmICFvcHRp
b25zLm51bWJlck9mT3V0cHV0cykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBv
cnRlZEVycm9yLCAiTnVtYmVyIG9mIGlucHV0cyBhbmQgb3V0cHV0cyBjYW5ub3QgYm90aCBiZSAw
Il9zIH07CkBAIC02OSwxMCArNzYsMjAgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvV29ya2xldE5v
ZGU+PiBBdWRpb1dvcmtsZXROb2RlOjpjcmVhdGUoQmFzZUF1ZGlvQ29udGV4dCYgY28KICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQ29udGV4dCBpcyBjbG9z
ZWQiX3MgfTsKIAogICAgIGF1dG8gbWVzc2FnZUNoYW5uZWwgPSBNZXNzYWdlQ2hhbm5lbDo6Y3Jl
YXRlKCpjb250ZXh0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgLy8gRklYTUU6IFBh
c3MgbWVzc2FnZUNoYW5uZWwncyBwb3J0MiB0byB0aGUgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLgor
ICAgIGF1dG8gbm9kZU1lc3NhZ2VQb3J0ID0gbWVzc2FnZUNoYW5uZWwtPnBvcnQxKCk7CisgICAg
YXV0byBwcm9jZXNzb3JNZXNzYWdlUG9ydCA9IG1lc3NhZ2VDaGFubmVsLT5wb3J0MigpOworCisg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZE9wdGlvbnM7CisgICAg
eworICAgICAgICBhdXRvIGxvY2sgPSBKU0M6OkpTTG9ja0hvbGRlciB7ICZnbG9iYWxPYmplY3Qg
fTsKKyAgICAgICAgYXV0byoganNPcHRpb25zID0gY29udmVydERpY3Rpb25hcnlUb0pTKGdsb2Jh
bE9iamVjdCwgKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCks
IG9wdGlvbnMpOworICAgICAgICBzZXJpYWxpemVkT3B0aW9ucyA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwganNPcHRpb25zLCBTZXJpYWxpemF0aW9uRXJyb3JN
b2RlOjpOb25UaHJvd2luZyk7CisgICAgICAgIGlmICghc2VyaWFsaXplZE9wdGlvbnMpCisgICAg
ICAgICAgICBzZXJpYWxpemVkT3B0aW9ucyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZh
bHVlKCk7CisgICAgfQogCiAgICAgYXV0byBwYXJhbWV0ZXJEYXRhID0gV1RGTW92ZShvcHRpb25z
LnBhcmFtZXRlckRhdGEpOwotICAgIGF1dG8gbm9kZSA9IGFkb3B0UmVmKCpuZXcgQXVkaW9Xb3Jr
bGV0Tm9kZShjb250ZXh0LCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKG9wdGlvbnMpLCAqbWVzc2Fn
ZUNoYW5uZWwtPnBvcnQxKCkpKTsKKyAgICBhdXRvIG5vZGUgPSBhZG9wdFJlZigqbmV3IEF1ZGlv
V29ya2xldE5vZGUoY29udGV4dCwgbmFtZSwgV1RGTW92ZShvcHRpb25zKSwgKm5vZGVNZXNzYWdl
UG9ydCkpOwogCiAgICAgYXV0byByZXN1bHQgPSBub2RlLT5oYW5kbGVBdWRpb05vZGVPcHRpb25z
KG9wdGlvbnMsIHsgMiwgQ2hhbm5lbENvdW50TW9kZTo6TWF4LCBDaGFubmVsSW50ZXJwcmV0YXRp
b246OlNwZWFrZXJzIH0pOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC05MCwx
NSArMTA3LDE4IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb1dvcmtsZXROb2RlPj4gQXVkaW9Xb3Jr
bGV0Tm9kZTo6Y3JlYXRlKEJhc2VBdWRpb0NvbnRleHQmIGNvCiAgICAgICAgIH0KICAgICB9CiAK
KyAgICBjb250ZXh0LmF1ZGlvV29ya2xldCgpLmNyZWF0ZVByb2Nlc3NvcihuYW1lLCBwcm9jZXNz
b3JNZXNzYWdlUG9ydC0+ZGlzZW50YW5nbGUoKSwgc2VyaWFsaXplZE9wdGlvbnMucmVsZWFzZU5v
bk51bGwoKSwgbm9kZSk7CisKICAgICByZXR1cm4gbm9kZTsKIH0KIAotQXVkaW9Xb3JrbGV0Tm9k
ZTo6QXVkaW9Xb3JrbGV0Tm9kZShCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0LCBTdHJpbmcmJiBu
YW1lLCBBdWRpb1dvcmtsZXROb2RlT3B0aW9ucyYmIG9wdGlvbnMsIFJlZjxNZXNzYWdlUG9ydD4m
JiBwb3J0KQorQXVkaW9Xb3JrbGV0Tm9kZTo6QXVkaW9Xb3JrbGV0Tm9kZShCYXNlQXVkaW9Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEF1ZGlvV29ya2xldE5vZGVPcHRpb25z
JiYgb3B0aW9ucywgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCiAgICAgOiBBdWRpb05vZGUoY29u
dGV4dCwgTm9kZVR5cGVXb3JrbGV0KQotICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAg
LCBtX25hbWUobmFtZSkKICAgICAsIG1fcGFyYW1ldGVycyhBdWRpb1BhcmFtTWFwOjpjcmVhdGUo
KSkKICAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQpKQogeworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9wdGlvbnMubnVtYmVyT2ZJbnB1
dHM7ICsraSkKICAgICAgICAgYWRkSW5wdXQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgb3B0aW9ucy5udW1iZXJPZk91dHB1dHM7ICsraSkKQEAgLTEwOSwxNCArMTI5LDI2IEBAIEF1
ZGlvV29ya2xldE5vZGU6OkF1ZGlvV29ya2xldE5vZGUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4
dCwgU3RyaW5nJiYgbmFtZSwgQXVkCiAKIEF1ZGlvV29ya2xldE5vZGU6On5BdWRpb1dvcmtsZXRO
b2RlKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX3Byb2Nlc3Nv
cikgeworICAgICAgICBpZiAoYXV0byogd29ya2xldFByb3h5ID0gY29udGV4dCgpLmF1ZGlvV29y
a2xldCgpLnByb3h5KCkpCisgICAgICAgICAgICB3b3JrbGV0UHJveHktPnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2xldEdsb2JhbFNjb3BlKFttX3Byb2Nlc3NvciA9IFdURk1vdmUobV9wcm9jZXNzb3Ip
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeyB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9k
ZSgpKTsKKyAgICB9CiAgICAgdW5pbml0aWFsaXplKCk7CiB9CiAKK3ZvaWQgQXVkaW9Xb3JrbGV0
Tm9kZTo6c2V0UHJvY2Vzc29yKFJlZlB0cjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+JiYgcHJvY2Vz
c29yKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIG1fcHJvY2Vzc29yID0g
V1RGTW92ZShwcm9jZXNzb3IpOworfQorCiB2b2lkIEF1ZGlvV29ya2xldE5vZGU6OnByb2Nlc3Mo
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVzVG9Qcm9jZXNzKTsKIAotICAgIC8vIEZJWE1FOiBEbyBh
Y3R1YWwgcHJvY2Vzc2luZy4KKyAgICAvLyBGSVhNRTogRG8gYWN0dWFsIHByb2Nlc3Npbmcgdmlh
IG1fcHJvY2Vzc29yLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZk91dHB1
dHMoKTsgKytpKQogICAgICAgICBvdXRwdXQoaSktPmJ1cygpLT56ZXJvKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5oCmluZGV4
IGNmZTJkY2I0MmYwYmRhZGE2Yzg4ZGU1OWM5ZGU3Y2NjODY3OTlkYjIuLjI1ZjA0YjlkY2E4M2M5
NzE3M2YwNWU5Njg4YTE1MGMzODIzYWExNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvUGFyYW1NYXA7CitjbGFzcyBBdWRpb1dvcmts
ZXRQcm9jZXNzb3I7CiBjbGFzcyBNZXNzYWdlUG9ydDsKIAogc3RydWN0IEF1ZGlvV29ya2xldE5v
ZGVPcHRpb25zOwpAQCAtNDIsMTQgKzQzLDE2IEBAIHN0cnVjdCBBdWRpb1dvcmtsZXROb2RlT3B0
aW9uczsKIGNsYXNzIEF1ZGlvV29ya2xldE5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvV29ya2xldE5vZGUpOwogcHVibGljOgotICAgIHN0
YXRpYyBFeGNlcHRpb25PcjxSZWY8QXVkaW9Xb3JrbGV0Tm9kZT4+IGNyZWF0ZShCYXNlQXVkaW9D
b250ZXh0JiwgU3RyaW5nJiYgbmFtZSwgQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMmJik7CisgICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb1dvcmtsZXROb2RlPj4gY3JlYXRlKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBCYXNlQXVkaW9Db250ZXh0JiwgU3RyaW5nJiYgbmFtZSwgQXVkaW9Xb3Jr
bGV0Tm9kZU9wdGlvbnMmJik7CiAgICAgfkF1ZGlvV29ya2xldE5vZGUoKTsKIAogICAgIEF1ZGlv
UGFyYW1NYXAmIHBhcmFtZXRlcnMoKSB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KICAg
ICBNZXNzYWdlUG9ydCYgcG9ydCgpIHsgcmV0dXJuIG1fcG9ydC5nZXQoKTsgfQogCisgICAgdm9p
ZCBzZXRQcm9jZXNzb3IoUmVmUHRyPEF1ZGlvV29ya2xldFByb2Nlc3Nvcj4mJik7CisKIHByaXZh
dGU6Ci0gICAgQXVkaW9Xb3JrbGV0Tm9kZShCYXNlQXVkaW9Db250ZXh0JiwgU3RyaW5nJiYgbmFt
ZSwgQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMmJiwgUmVmPE1lc3NhZ2VQb3J0PiYmKTsKKyAgICBB
dWRpb1dvcmtsZXROb2RlKEJhc2VBdWRpb0NvbnRleHQmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEF1
ZGlvV29ya2xldE5vZGVPcHRpb25zJiYsIFJlZjxNZXNzYWdlUG9ydD4mJik7CiAKICAgICAvLyBB
dWRpb05vZGUuCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFs
OwpAQCAtNjAsNiArNjMsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX25hbWU7CiAgICAgUmVm
PEF1ZGlvUGFyYW1NYXA+IG1fcGFyYW1ldGVyczsKICAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9y
dDsKKyAgICBSZWZQdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPiBtX3Byb2Nlc3NvcjsgLy8gU2hv
dWxkIG9ubHkgYmUgdXNlZCBvbiB0aGUgcmVuZGVyaW5nIHRocmVhZC4KIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0Tm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldE5vZGUuaWRsCmluZGV4IDU2MjcxNDg2NjNmMDQyMThiMWU1NTA1MTc1YjA0
OTVhNTQ2OTEyMDYuLjcxMTVhZmNlMDM5YzZlNWUyNjc4N2MxM2RmMWNmMDdlOGQ2ZmYwZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9k
ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRO
b2RlLmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAg
IFNlY3VyZUNvbnRleHQKIF0gaW50ZXJmYWNlIEF1ZGlvV29ya2xldE5vZGUgOiBBdWRpb05vZGUg
ewotICAgIGNvbnN0cnVjdG9yIChCYXNlQXVkaW9Db250ZXh0IGNvbnRleHQsIERPTVN0cmluZyBu
YW1lLCBvcHRpb25hbCBBdWRpb1dvcmtsZXROb2RlT3B0aW9ucyBvcHRpb25zKTsKKyAgICBbQ2Fs
bFdpdGg9R2xvYmFsT2JqZWN0XSBjb25zdHJ1Y3RvciAoQmFzZUF1ZGlvQ29udGV4dCBjb250ZXh0
LCBET01TdHJpbmcgbmFtZSwgb3B0aW9uYWwgQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMgb3B0aW9u
cyk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvUGFyYW1NYXAgcGFyYW1ldGVyczsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgTWVzc2FnZVBvcnQgcG9ydDsKICAgICBhdHRyaWJ1dGUgRXZl
bnRIYW5kbGVyIG9ucHJvY2Vzc29yZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGVPcHRpb25zLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaWRsCmluZGV4IGE5
ZTE5YjY5NWUwNmYyMzEzODhlNzM1YjJiNjA1Mjk3OWYxMWY5MDUuLjI5YzE4YzNhNDBiYWIzZDVl
MmQxMzI5ZTk1NTIxZjliZjk2OWU2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaWRsCkBAIC0yOSw2
ICsyOSw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogICAgIEVuYWJsZWRCeVNl
dHRpbmc9QXVkaW9Xb3JrbGV0LAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0CiBdIGRpY3Rpb25h
cnkgQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMgOiBBdWRpb05vZGVPcHRpb25zIHsKICAgICB1bnNp
Z25lZCBsb25nIG51bWJlck9mSW5wdXRzID0gMTsKICAgICB1bnNpZ25lZCBsb25nIG51bWJlck9m
T3V0cHV0cyA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5jcHAKaW5kZXggYzQ3NmIyMWU2ZTY4ZmFjYjY4YWNl
ZDhlMWNmMjM3YmYwZDFiZjI4Mi4uNDVhOTc4ZTg5NzgyYzEzOGY5NTIzZTJhODlmODRhNzcxZThk
ZmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcApAQCAtMzEsMTAgKzMxLDI4IEBACiAjaWYgRU5BQkxF
KFdFQl9BVURJTykKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRQcm9jZXNzb3IuaCIKIAorI2luY2x1
ZGUgIkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yQ29uc3RydWN0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpBdWRpb1dvcmtsZXRQ
cm9jZXNzb3IoKQorRXhjZXB0aW9uT3I8UmVmPEF1ZGlvV29ya2xldFByb2Nlc3Nvcj4+IEF1ZGlv
V29ya2xldFByb2Nlc3Nvcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
Cit7CisgICAgYXV0byBjb25zdHJ1Y3Rpb25EYXRhID0gZG93bmNhc3Q8QXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGU+KGNvbnRleHQpLnRha2VQZW5kaW5nUHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YSgp
OworICAgIGlmICghY29uc3RydWN0aW9uRGF0YSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciwgIk5vIHBlbmRpbmcgY29uc3RydWN0aW9uIGRhdGEgZm9yIHRoaXMgd29ya2xl
dCBwcm9jZXNzb3IiX3MgfTsKKworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvV29ya2xl
dFByb2Nlc3NvcigqY29uc3RydWN0aW9uRGF0YSkpOworfQorCitBdWRpb1dvcmtsZXRQcm9jZXNz
b3I6On5BdWRpb1dvcmtsZXRQcm9jZXNzb3IoKSA9IGRlZmF1bHQ7CisKK0F1ZGlvV29ya2xldFBy
b2Nlc3Nvcjo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yKGNvbnN0IEF1ZGlvV29ya2xldFByb2Nlc3Nv
ckNvbnN0cnVjdGlvbkRhdGEmIGNvbnN0cnVjdGlvbkRhdGEpCisgICAgOiBtX25hbWUoY29uc3Ry
dWN0aW9uRGF0YS5uYW1lKCkpCisgICAgLCBtX3BvcnQoY29uc3RydWN0aW9uRGF0YS5wb3J0KCkp
CiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0UHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFByb2Nlc3Nvci5oCmluZGV4IDczZDYyOGZjZmQzYjhiOTE3OTBkY2ZmNGY0YTk2ZmRl
Njk3YzRmNjcuLjVmZDNhOWVkYjMwNDE2YTExYjQ0NWFiNTYzNDIzYmQzNzJjOTI0NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQ
cm9jZXNzb3IuaApAQCAtMjksMjQgKzI5LDMwIEBACiAjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJM
RShXRUJfQVVESU8pCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE7CiBj
bGFzcyBNZXNzYWdlUG9ydDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWNsYXNz
IEF1ZGlvV29ya2xldFByb2Nlc3NvciA6IHB1YmxpYyBSZWZDb3VudGVkPEF1ZGlvV29ya2xldFBy
b2Nlc3Nvcj4geworY2xhc3MgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPEF1ZGlvV29ya2xldFByb2Nlc3Nvcj4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKTsKLSAgICB9CisgICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+PiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpOworICAgIH5BdWRpb1dvcmtsZXRQcm9jZXNzb3IoKTsKIAotICAg
IE1lc3NhZ2VQb3J0KiBwb3J0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIGNvbnN0IFN0cmlu
ZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIE1lc3NhZ2VQb3J0JiBwb3J0
KCkgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQXVkaW9Xb3JrbGV0
UHJvY2Vzc29yKCk7CisgICAgZXhwbGljaXQgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKGNvbnN0IEF1
ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEmKTsKKworICAgIFN0cmluZyBtX25h
bWU7CisgICAgUmVmPE1lc3NhZ2VQb3J0PiBtX3BvcnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFByb2Nlc3Nvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFByb2Nlc3Nvci5pZGwKaW5kZXggN2M1MTNmNzI2M2UwYjIyNjUzYTczMTlhODVh
MmM4MzMzNTU1NWZlNC4uZDI2NjEzMTcyMTkwMWVjYjE3MzNmNWE2MTgwZGRmZTliNDRlNTViMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQ
cm9jZXNzb3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0UHJvY2Vzc29yLmlkbApAQCAtMzEsNiArMzEsNiBAQAogICAgIEV4cG9zZWQ9QXVkaW9X
b3JrbGV0LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKIF0gaW50ZXJmYWNlIEF1ZGlv
V29ya2xldFByb2Nlc3NvciB7Ci0gICAgY29uc3RydWN0b3IoKTsKKyAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKCk7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQb3J0IHBvcnQ7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25z
dHJ1Y3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTI4MTBjYWM4NjI1
YWZiNGQwNGJjYjQ1NDA1MWY2NmE4MDAxYzdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25E
YXRhLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNp
bmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRp
b1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25E
YXRhKFN0cmluZyYmIG5hbWUsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0KQorICAgICAgICA6IG1f
bmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQpKQorICAg
IHsgfQorCisgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9
CisgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0K
KworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9w
b3J0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFRocmVhZC5oCmluZGV4IDA1NmVkZjM4ZWQxZjM4OWUwMGM2NDY5MmYxMWZmNTI0YmU1
ZTcwZGYuLjAzMGM2MWY5ZDUxODAyMjkyY2IzNDM4MTRkOTEwYzJiZWE3YjNlYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQu
aApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIldvcmtsZXRQYXJhbWV0ZXJzLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTsKIGNsYXNzIEF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5OwogCi1jbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8QXVkaW9Xb3JrbGV0VGhyZWFkPiwgcHVibGljIFdvcmtlck9yV29ya2xldFRo
cmVhZCB7CitjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQgOiBwdWJsaWMgV29ya2VyT3JXb3JrbGV0
VGhyZWFkIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEF1ZGlvV29ya2xldFRocmVhZD4gY3Jl
YXRlKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSwgY29uc3QgV29y
a2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQzMjY0ZGRmZjE5YWZhYWJk
YWRmNmQ4YzY0NWYyMzU0Mjg5Y2Y4YTEuLmM5ZWFjOTc0NWJjNmQ4ZDYyYzBhOWNiOGM3ZDAxYmNl
ZDhlZTYyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTI0NDUsNiArMjQ0NSw3IEBACiAJCTgzMjE1MDdFMUYyN0VBMUIwMDk1
QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzMjE1MDdCMUYyN0VBMTUwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFj
b24uaCAqLzsgfTsKIAkJODMyNkJGOEUyNEQzNUMzMzAwMUY4QTg1IC8qIE92ZXJTYW1wbGVUeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzI2QkY4
OTI0RDM1QzIwMDAxRjhBODUgLyogT3ZlclNhbXBsZVR5cGUuaCAqLzsgfTsKIAkJODMyNkJGOEYy
NEQzNUMzOTAwMUY4QTg1IC8qIFdhdmVTaGFwZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzI2QkY4QzI0RDM1QzIwMDAxRjhBODUgLyog
V2F2ZVNoYXBlck9wdGlvbnMuaCAqLzsgfTsKKwkJODMyNzRGQ0YyNTJFMjZCNzAwMUUzNURDIC8q
IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMjc0RkNEMjUyRTI2QTgwMDFFMzVEQyAv
KiBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhLmggKi87IH07CiAJCTgzMkI4
NDM0MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkI4NDMzMTlEOEU1NTEwMEIy
NjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLzsgfTsKIAkJODMzQUU1MjkyNEQzODZG
MjAwMDE3QzRCIC8qIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudEluaXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzM0FFNTI4MjREMzg2RTEwMDAx
N0M0QiAvKiBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnRJbml0LmggKi87IH07CiAJCTgzM0I5
RTMyMUY1MDhEODUwMEUwRTQyOCAvKiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMzQjlFMkYxRjUwOEQ4
MDAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggKi87IH07CkBAIC0xMDYw
Nyw2ICsxMDYwOCw3IEBACiAJCTgzMjZCRjhCMjREMzVDMjAwMDFGOEE4NSAvKiBPdmVyU2FtcGxl
VHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gT3ZlclNhbXBsZVR5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzI2QkY4QzI0RDM1QzIwMDAxRjhBODUgLyogV2F2ZVNoYXBlck9wdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2F2ZVNoYXBlck9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODMyNkJGOEQyNEQzNUMyMTAwMUY4QTg1IC8qIFdhdmVTaGFwZXJPcHRpb25zLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXYXZlU2hhcGVyT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTgzMjc0RkNEMjUyRTI2QTgwMDFFMzVEQyAvKiBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25z
dHJ1Y3Rpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0
cnVjdGlvbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyOUE0MTcxRUMy
NUIyQjAwOEVENEJFIC8qIERvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzI5RENDMjFDN0E2QUUzMDA3MzBCMzMgLyog
SFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRN
TEh5cGVybGlua0VsZW1lbnRVdGlscy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDAwOSw2ICszMDAxMSw3IEBACiAJCQkJODNC
QjhCNUIyNTI2Nzc1NTAwRDg5RjBCIC8qIEF1ZGlvV29ya2xldFByb2Nlc3Nvci5jcHAgKi8sCiAJ
CQkJODNCQjhCNUQyNTI2Nzc1NTAwRDg5RjBCIC8qIEF1ZGlvV29ya2xldFByb2Nlc3Nvci5oICov
LAogCQkJCTgzQkI4QjVFMjUyNjc3NTYwMEQ4OUYwQiAvKiBBdWRpb1dvcmtsZXRQcm9jZXNzb3Iu
aWRsICovLAorCQkJCTgzMjc0RkNEMjUyRTI2QTgwMDFFMzVEQyAvKiBBdWRpb1dvcmtsZXRQcm9j
ZXNzb3JDb25zdHJ1Y3Rpb25EYXRhLmggKi8sCiAJCQkJODM3MjZFRjgyNTI2NzlCMjAwQzYxMTRF
IC8qIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmggKi8sCiAJCQkJODM3MjZFRkEy
NTI2NzlCMzAwQzYxMTRFIC8qIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmlkbCAq
LywKIAkJCQk4M0ZDOTk0QTI1MjU1N0U4MDAxNzc2MTggLyogQXVkaW9Xb3JrbGV0VGhyZWFkLmNw
cCAqLywKQEAgLTMwNjI1LDYgKzMwNjI4LDcgQEAKIAkJCQk4M0I5ODcwOTI1MjI1RjcyMDBBOTM5
RjEgLyogQXVkaW9Xb3JrbGV0Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCOTg3MEEyNTIy
NUY3NjAwQTkzOUYxIC8qIEF1ZGlvV29ya2xldE5vZGVPcHRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4M0JCOEI1RjI1MjY3NzY0MDBEODlGMEIgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4MzI3NEZDRjI1MkUyNkI3MDAxRTM1REMgLyogQXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM3MjZF
RkIyNTI2NzlDNTAwQzYxMTRFIC8qIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4M0ZDOTk0QjI1MjU1N0VBMDAxNzc2MTggLyogQXVkaW9Xb3Jr
bGV0VGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ2MTEyRDI2RTM4MDBFNzk0MTUg
LyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDRlMjZkN2Y5
NTEyNWYwY2U0NTY2MTEzZWUyODM5NDE1MDdjYjU5YTQuLmFlMDk3ZWViOGMwMGE4OWZiNzk3NGQy
MTYwMmJlZDdhYjJlY2Y0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1
cmVkQ2xvbmUuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAi
V29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Db2RlQmxvY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0ludGVybmFs
UHJvbWlzZS5oPgpAQCAtMzQ1LDYgKzM0Niw5IEBAIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9N
R2xvYmFsT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIERPTVdyYXBwCiAg
ICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5zY3JpcHQoKS0+d29ya2VyR2xvYmFs
U2NvcGVXcmFwcGVyKCk7CiAKKyAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0
KSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCku
c2NyaXB0KCktPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKTsKKwogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dC5jcHAKaW5kZXggOGJkMzM5NGViZjMyOTJlOTZkZWU2MDQ4NjhiNWQ4NmM0Nzc5NTlkYy4uOWRm
OGZjZDI5ZGRjM2Y5OGYxMDI1OTVjMGMzZWZhNDQzZTY4NWFlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVzc2Fn
ZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBKU0M6OkpTVmEK
ICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZSgpCitU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZSgpCiB7CiAgICAg
QVNTRVJUKG1fZW50YW5nbGVkKTsKICAgICBtX2VudGFuZ2xlZCA9IGZhbHNlOwpAQCAtMTgwLDYg
KzE4MCw4IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlKCkKICAgICBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPndpbGxEZXN0cm95RGVzdHJ1Y3Rpb25PYnNlcnZlcigqdGhpcyk7CiAK
ICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBudWxscHRyOworCisgICAgcmV0dXJuIHsg
aWRlbnRpZmllcigpLCByZW1vdGVJZGVudGlmaWVyKCkgfTsKIH0KIAogdm9pZCBNZXNzYWdlUG9y
dDo6cmVnaXN0ZXJMb2NhbEFjdGl2aXR5KCkKQEAgLTM3OCwxMCArMzgwLDggQEAgRXhjZXB0aW9u
T3I8VHJhbnNmZXJyZWRNZXNzYWdlUG9ydEFycmF5PiBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQ
b3J0cyhWZWN0b3I8UmUKICAgICAvLyBQYXNzZWQtaW4gcG9ydHMgcGFzc2VkIHZhbGlkaXR5IGNo
ZWNrcywgc28gd2UgY2FuIGRpc2VudGFuZ2xlIHRoZW0uCiAgICAgVHJhbnNmZXJyZWRNZXNzYWdl
UG9ydEFycmF5IHBvcnRBcnJheTsKICAgICBwb3J0QXJyYXkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShwb3J0cy5zaXplKCkpOwotICAgIGZvciAoYXV0byYgcG9ydCA6IHBvcnRzKSB7Ci0gICAgICAg
IHBvcnRBcnJheS51bmNoZWNrZWRBcHBlbmQoeyBwb3J0LT5pZGVudGlmaWVyKCksIHBvcnQtPnJl
bW90ZUlkZW50aWZpZXIoKSB9KTsKLSAgICAgICAgcG9ydC0+ZGlzZW50YW5nbGUoKTsKLSAgICB9
CisgICAgZm9yIChhdXRvJiBwb3J0IDogcG9ydHMpCisgICAgICAgIHBvcnRBcnJheS51bmNoZWNr
ZWRBcHBlbmQocG9ydC0+ZGlzZW50YW5nbGUoKSk7CiAKICAgICByZXR1cm4gcG9ydEFycmF5Owog
fQpAQCAtMzk1LDE0ICszOTUsMTggQEAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IE1lc3Nh
Z2VQb3J0OjplbnRhbmdsZVBvcnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGMKIAogICAgIFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKICAgICBwb3J0cy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHRyYW5zZmVycmVkUG9ydHMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIHRyYW5z
ZmVycmVkUG9ydCA6IHRyYW5zZmVycmVkUG9ydHMpIHsKLSAgICAgICAgYXV0byBwb3J0ID0gTWVz
c2FnZVBvcnQ6OmNyZWF0ZShjb250ZXh0LCB0cmFuc2ZlcnJlZFBvcnQuZmlyc3QsIHRyYW5zZmVy
cmVkUG9ydC5zZWNvbmQpOwotICAgICAgICBwb3J0LT5lbnRhbmdsZSgpOwotICAgICAgICBwb3J0
cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShwb3J0KSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYg
dHJhbnNmZXJyZWRQb3J0IDogdHJhbnNmZXJyZWRQb3J0cykKKyAgICAgICAgcG9ydHMudW5jaGVj
a2VkQXBwZW5kKE1lc3NhZ2VQb3J0OjplbnRhbmdsZShjb250ZXh0LCBXVEZNb3ZlKHRyYW5zZmVy
cmVkUG9ydCkpKTsKICAgICByZXR1cm4gcG9ydHM7CiB9CiAKK1JlZjxNZXNzYWdlUG9ydD4gTWVz
c2FnZVBvcnQ6OmVudGFuZ2xlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQpCit7CisgICAgYXV0byBwb3J0ID0g
TWVzc2FnZVBvcnQ6OmNyZWF0ZShjb250ZXh0LCB0cmFuc2ZlcnJlZFBvcnQuZmlyc3QsIHRyYW5z
ZmVycmVkUG9ydC5zZWNvbmQpOworICAgIHBvcnQtPmVudGFuZ2xlKCk7CisgICAgcmV0dXJuIHBv
cnQ7Cit9CisKIGJvb2wgTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0
cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3QgQWRk
RXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKGV2ZW50VHlwZSA9PSBl
dmVudE5hbWVzKCkubWVzc2FnZUV2ZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCmluZGV4
IGFhY2E0ODk1ZGExYmY2YjhlMmIwNzBmNDUwZWIyMDI5Njc3ZGEwZWQuLmM2YmY4ZDFlM2VjZWM0
MWVjZjBhYzY2NjA4M2NiN2I2MWJkOGMyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCkBA
IC05Miw2ICs5Miw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYp
IGZpbmFsOwogCisgICAgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBkaXNlbnRhbmdsZSgpOworICAg
IHN0YXRpYyBSZWY8TWVzc2FnZVBvcnQ+IGVudGFuZ2xlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1l
c3NhZ2VQb3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBNZXNzYWdlUG9ydElkZW50
aWZpZXImIGxvY2FsLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSk7CiAKQEAg
LTEwNCw4ICsxMDcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsIHsgY2xvc2Uo
KTsgfQogICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwog
Ci0gICAgdm9pZCBkaXNlbnRhbmdsZSgpOwotCiAgICAgdm9pZCByZWdpc3RlckxvY2FsQWN0aXZp
dHkoKTsKIAogICAgIC8vIEEgcG9ydCBzdGFydHMgb3V0IGl0cyBsaWZlIGVudGFuZ2xlZCwgYW5k
IHJlbWFpbnMgZW50YW5nbGVkIHVudGlsIGl0IGlzIGNsb3NlZCBvciBpcyBjbG9uZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggNzYyZDUz
ODFmNmQ0MGI1NGEwMDUzZDIzZTcxZjUxMzlmN2U1MmFiYi4uNTUyY2Y4ZDhiZTA2NThmNWM0OTZh
MjNiNmUxZDM4MGNiMjIxZDhlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAorI2luY2x1ZGUgIkF1ZGlvV29y
a2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0VGhyZWFkLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJE
T01UaW1lci5oIgpAQCAtMjA1LDcgKzIwNywxMSBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OmRpc3BhdGNoTWVzc2FnZVBvcnRFdmVudHMoKQogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpjcmVhdGVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmIG1lc3NhZ2VQb3J0KQogewogICAg
IEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCp0aGlzKSAmJiBpc01haW5UaHJlYWQoKSkKLSAgICAgICAg
fHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykgJiYgZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KCp0aGlzKS50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpKTsK
KyAgICAgICAgfHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykgJiYgZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KCp0aGlzKS50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyAgICAgICAgfHwgKGlzPEF1ZGlvV29ya2xl
dEdsb2JhbFNjb3BlPigqdGhpcykgJiYgZG93bmNhc3Q8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+
KCp0aGlzKS50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpCisjZW5kaWYK
KyAgICAgICAgKTsKIAogICAgIG1fbWVzc2FnZVBvcnRzLmFkZCgmbWVzc2FnZVBvcnQpOwogfQpA
QCAtMjEzLDggKzIxOSwxMSBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0ZWRN
ZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYgbWVzc2FnZVBvcnQpCiB2b2lkIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNzYWdlUG9ydCkK
IHsKICAgICBBU1NFUlQoKGlzPERvY3VtZW50PigqdGhpcykgJiYgaXNNYWluVGhyZWFkKCkpCi0g
ICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmIGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKSk7Ci0KKyAgICAgICAgfHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykgJiYgZG93
bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyAgICAgICAgfHwgKGlzPEF1
ZGlvV29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykgJiYgZG93bmNhc3Q8QXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGU+KCp0aGlzKS50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
CisjZW5kaWYKKyAgICAgICAgKTsKICAgICBtX21lc3NhZ2VQb3J0cy5yZW1vdmUoJm1lc3NhZ2VQ
b3J0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9N
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2Fn
ZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcAppbmRleCAxMmFhOWYyY2ZiZjEy
ZDNlMDg5YTViYTFiMDg3NjY0OGMxZjE2NTUwLi5mYzUxM2VlMWM4NGI3YmI4ZTQ5NmEzYTcwYTQx
NjQ4MDYwMDNhNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRz
L01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
bWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXJJbXBsLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRl
ICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OSw2ICs2MCw5IEBAIE1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyJiBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQoU2NyaXB0RXhl
Y3V0CiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGRvd25j
YXN0PERvY3VtZW50Pihjb250ZXh0KS5tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpOwogCisg
ICAgaWYgKGlzPFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgIHJldHVybiBk
b3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLm1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyKCk7CisKICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRl
eHQpLm1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaApp
bmRleCBhMzkwNzU3NTllOTk2NGE1ZTM4YTFlOGM4M2M1NzM1ZDJhZDUwMWZlLi5lYTE4ZjkzZDY2
Njg0NjgwM2FmMzMzMTdmYjk5MzFmZDdlZmQwZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oCkBAIC0z
Myw3ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gV2hlbiBhIG1lc3NhZ2UgcG9y
dCBpcyB0cmFuc2ZlcnJlZCwgaXQgaXMgcmVwcmVzZW50ZWQgYnkgYSBwYWlyIG9mIGlkZW50aWZp
ZXJzLgogLy8gVGhlIGZpcnN0IGlkZW50aWZpZXIgaXMgdGhlIHBvcnQgYmVpbmcgdHJhbnNmZXJy
ZWQgYW5kIHRoZSBzZWNvbmQgaXMgaXRzIHJlbW90ZSBwb3J0LgotdHlwZWRlZiBWZWN0b3I8c3Rk
OjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyPj4gVHJhbnNmZXJyZWRNZXNzYWdlUG9ydEFycmF5OwordXNpbmcgVHJhbnNm
ZXJyZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47Cit1c2luZyBUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0QXJyYXkgPSBWZWN0b3I8VHJhbnNmZXJyZWRNZXNzYWdlUG9ydD47CiAKIHN0cnVj
dCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyB7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9y
dHMvV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKaW5k
ZXggZjFmMDk5YzY0MGFiNmE0NGU4ODg0MjA3NWMxMzQ1MGI0NmJjYmMzOC4uNzFkM2UxODYyODY0
MWFhYWJjOGJiZDA0NWU1ZTg2Mjc1YTViYTQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlci5jcHAKQEAgLTI3LDE0ICsyNywxNCBAQAogI2luY2x1ZGUgIldvcmtlck1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCiAKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2lu
Y2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Oldvcmtlck1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyKFdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSkKK1dvcmtlck1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyOjpXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcihXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgc2NvcGUpCiAgICAgOiBtX3Njb3BlKHNjb3BlKQogewog
fQpAQCAtOTEsMTAgKzkxLDkgQEAgdm9pZCBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydEkKICAgICB1aW50NjRf
dCBjYWxsYmFja0lkZW50aWZpZXIgPSArK21fbGFzdENhbGxiYWNrSWRlbnRpZmllcjsKICAgICBt
X3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3b3JrZXJUaHJlYWQg
PSBtYWtlUmVmKG1fc2NvcGUudGhyZWFkKCkpLCBjYWxsYmFja0lkZW50aWZpZXIsIGlkZW50aWZp
ZXJdKCkgbXV0YWJsZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd29ya2VyVGhyZWFk
ID0gbWFrZVJlZlB0cihtX3Njb3BlLndvcmtlck9yV29ya2xldFRocmVhZCgpKSwgY2FsbGJhY2tJ
ZGVudGlmaWVyLCBpZGVudGlmaWVyXSgpIG11dGFibGUgewogICAgICAgICBNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkudGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChpZGVudGlm
aWVyLCBbdGhpcywgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpLCBjYWxsYmFj
a0lkZW50aWZpZXJdKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiBtZXNzYWdlcywg
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7Ci0gICAgICAgICAgICB3b3Jr
ZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3RoaXMsIGNhbGxiYWNrSWRlbnRp
ZmllciwgbWVzc2FnZXMgPSBXVEZNb3ZlKG1lc3NhZ2VzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYgc2NvcGUpIG11dGFibGUgewotICAgICAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsIHRoaXMgPT0gJmRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihzY29wZSkubWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKSk7CisgICAgICAg
ICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3RoaXMsIGNhbGxi
YWNrSWRlbnRpZmllciwgbWVzc2FnZXMgPSBXVEZNb3ZlKG1lc3NhZ2VzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIG1fdGFrZUFsbE1lc3NhZ2VzQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJZGVu
dGlmaWVyKShXVEZNb3ZlKG1lc3NhZ2VzKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAgICAg
IH0pOwpAQCAtMTA4LDEwICsxMDcsOSBAQCB2b2lkIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUAogICAgIHVp
bnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciA9ICsrbV9sYXN0Q2FsbGJhY2tJZGVudGlmaWVyOwog
ICAgIG1fYWN0aXZpdHlDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShj
YWxsYmFjaykpOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd29ya2VyVGhyZWFkID0g
bWFrZVJlZihtX3Njb3BlLnRocmVhZCgpKSwgY2FsbGJhY2tJZGVudGlmaWVyLCByZW1vdGVUYXJn
ZXRdKCkgbXV0YWJsZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd29ya2VyVGhyZWFk
ID0gbWFrZVJlZlB0cihtX3Njb3BlLndvcmtlck9yV29ya2xldFRocmVhZCgpKSwgY2FsbGJhY2tJ
ZGVudGlmaWVyLCByZW1vdGVUYXJnZXRdKCkgbXV0YWJsZSB7CiAgICAgICAgIE1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5jaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShy
ZW1vdGVUYXJnZXQsIFt0aGlzLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCks
IGNhbGxiYWNrSWRlbnRpZmllcl0oYXV0byBoYXNBY3Rpdml0eSkgewotICAgICAgICAgICAgd29y
a2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFt0aGlzLCBjYWxsYmFja0lkZW50
aWZpZXIsIGhhc0FjdGl2aXR5XShhdXRvJiBzY29wZSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChzY29wZSwgdGhpcyA9PSAmZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KHNjb3BlKS5tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpKTsKKyAgICAgICAgICAgIHdv
cmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbdGhpcywgY2FsbGJhY2tJZGVu
dGlmaWVyLCBoYXNBY3Rpdml0eV0oYXV0byYpIG11dGFibGUgewogICAgICAgICAgICAgICAgIG1f
YWN0aXZpdHlDYWxsYmFja3MudGFrZShjYWxsYmFja0lkZW50aWZpZXIpKGhhc0FjdGl2aXR5KTsK
ICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogICAgICAgICB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvV29ya2VyTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9y
dHMvV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAppbmRleCAzZTNlODZhMDhhZTVj
YzQ0YTgxMTQ3NDNhNzIzMzM0NGEwYjdlN2FjLi5hZjEyMDRjNGQ3NGU2ZmVhMDMzZGRjZTg0NWRi
YjgyMGUxMWU3ZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRz
L1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCkBAIC0z
MiwxMiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXb3JrZXJHbG9i
YWxTY29wZTsKK2NsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogCiBjbGFzcyBXb3Jr
ZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoV29ya2VyR2xvYmFs
U2NvcGUmKTsKKyAgICBleHBsaWNpdCBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcihX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogICAgIH5Xb3JrZXJNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcigpOwogCiBwcml2YXRlOgpAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4m
JiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBjaGVja1JlbW90ZVBv
cnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spIGZpbmFsOwog
Ci0gICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fc2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUmIG1fc2NvcGU7CiAKICAgICB1aW50NjRfdCBtX2xhc3RDYWxsYmFja0lkZW50aWZp
ZXIgeyAwIH07CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+PiBt
X3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck9yV29ya2xldFRocmVhZC5oCmluZGV4IDIyMGRmYzRlY2RlMzRhY2JkNDcxNWY1ZThjZjE1
MGIwODY4NGE5MjkuLjM3ODA5NjFjNzk0OTg1N2ExZTIwNWY4YzMxMjk2MmMwNzBiZWFmODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaApAQCAt
MjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRocmVhZDsKIH0KQEAgLTM0
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV29ya2VyTG9hZGVyUHJveHk7
CiBjbGFzcyBXb3JrZXJSdW5Mb29wOwogCi1jbGFzcyBXb3JrZXJPcldvcmtsZXRUaHJlYWQgewor
Y2xhc3MgV29ya2VyT3JXb3JrbGV0VGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFdvcmtlck9yV29ya2xldFRocmVhZD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfldvcmtlck9y
V29ya2xldFRocmVhZCgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmgKaW5kZXggNjI0NGIzY2MwMDgxY2I2MDVhMTdmNmQ0OWFlMjg0NjJlNzY4NDE1MS4uMTIx
NGI5MTlkYTM0ZDMyZjJmY2FjOWEyOTgxMmY2ZmQ2YTg3YTEyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBXb3JrZXJQ
YXJhbWV0ZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogfTsKIAotY2xhc3MgV29ya2VyVGhyZWFk
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdvcmtlclRocmVhZD4sIHB1YmxpYyBXb3Jr
ZXJPcldvcmtsZXRUaHJlYWQgeworY2xhc3MgV29ya2VyVGhyZWFkIDogcHVibGljIFdvcmtlck9y
V29ya2xldFRocmVhZCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2VyVGhyZWFkKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4
IDU2MzgwMGRhMGJmYzkyZjM5YzQ5OTNiYzU0NWQ2MzRiY2NiODgzMTUuLjNhZjk5M2Y4NjllYThi
ZWUzZTU2MWExNTk0N2E3Zjg1ZWUzM2YzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luUG9saWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJX
b3JrZXJFdmVudExvb3AuaCIKKyNpbmNsdWRlICJXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogI2luY2x1ZGUgIldvcmts
ZXRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CkBA
IC0yMjcsMTAgKzIyOCwxNCBAQCB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNo
ZWQoKQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgYmUgcnVuIGFz
IGEgbW9kdWxlIHNjcmlwdCBidXQgd2UgZG9uJ3Qgc3VwcG9ydCB0aGlzIGluIHdvcmtlcnMgeWV0
LgotICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247Ci0gICAgbV9zY3JpcHQt
PmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBVUkwo
bV9zY3JpcHRMb2FkZXItPnJlc3BvbnNlVVJMKCkpKSwgZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhj
ZXB0aW9uKQotICAgICAgICBtX3NjcmlwdC0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7CisgICAg
VVJMIG1vZHVsZVVSTChtX3NjcmlwdExvYWRlci0+cmVzcG9uc2VVUkwoKSk7CisgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX2V2YWx1YXRlZE1vZHVsZXMuYWRkKG1vZHVsZVVSTCk7CisgICAgaWYgKGFk
ZFJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBl
eGNlcHRpb247CisgICAgICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKG1f
c2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgV1RGTW92ZShtb2R1bGVVUkwpKSwgZXhjZXB0aW9uKTsK
KyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIG1fc2NyaXB0LT5zZXRFeGNlcHRp
b24oZXhjZXB0aW9uKTsKKyAgICB9CiAKICAgICBkaWRDb21wbGV0ZVNjcmlwdEZldGNoSm9iKFdU
Rk1vdmUoY29tcGxldGVkSm9iKSwgeyB9KTsKIH0KQEAgLTI0NCw0ICsyNDksMTEgQEAgdm9pZCBX
b3JrbGV0R2xvYmFsU2NvcGU6OmRpZENvbXBsZXRlU2NyaXB0RmV0Y2hKb2IoU2NyaXB0RmV0Y2hK
b2ImJiBqb2IsIE9wdGlvbmEKICAgICBwcm9jZXNzTmV4dFNjcmlwdEZldGNoSm9iSWZOZWVkZWQo
KTsKIH0KIAorTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIFdvcmtsZXRHbG9iYWxTY29wZTo6
bWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKQoreworICAgIGlmICghbV9tZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlcikKKyAgICAgICAgbV9tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciA9IG1h
a2VVbmlxdWU8V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI+KCp0aGlzKTsKKyAgICBy
ZXR1cm4gKm1fbWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9i
YWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgK
aW5kZXggMTQ4YmJiNTMzYzVkMmQ2ZjdmMDg5YmQ5M2Q3YzIwNjFhZTdjODk1NS4uMDgwZDIwMWYw
MzQ0YjBiN2MyZDllZjczOWNkYTVmMmQ1NmZhNzI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTQ4LDcgKzQ4LDkgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRXZlbnRMb29wVGFza0dyb3VwOworY2xhc3MgTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI7CiBjbGFzcyBXb3JrZXJFdmVudExvb3A7CitjbGFzcyBXb3JrZXJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjsKIGNsYXNzIFdvcmtlclNjcmlwdExvYWRlcjsKIAogc3Ry
dWN0IFdvcmtsZXRQYXJhbWV0ZXJzOwpAQCAtNzEsNiArNzMsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGlzQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogI2VuZGlmCiAKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgbWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXIoKTsKKwogICAgIEV2ZW50TG9vcFRhc2tHcm91cCYgZXZlbnRMb29w
KCkgZmluYWw7CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
dXJsOyB9CkBAIC0xNzYsOCArMTgwLDExIEBAIHByaXZhdGU6CiAgICAgSlNDOjpSdW50aW1lRmxh
Z3MgbV9qc1J1bnRpbWVGbGFnczsKICAgICBPcHRpb25hbDxTY3JpcHRTb3VyY2VDb2RlPiBtX2Nv
ZGU7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI+IG1fbWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI7CisKICAgICBSZWZQdHI8V29ya2VyU2Ny
aXB0TG9hZGVyPiBtX3NjcmlwdExvYWRlcjsKICAgICBEZXF1ZTxTY3JpcHRGZXRjaEpvYj4gbV9z
Y3JpcHRGZXRjaEpvYnM7CisgICAgSGFzaFNldDxVUkw+IG1fZXZhbHVhdGVkTW9kdWxlczsKIAog
ICAgIGJvb2wgbV9pc0Nsb3NpbmcgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZjQ4OWRjZjVkMjk1
MTQ3ZGM3ZjJiNmE1M2I5ZjIyMGRkYTFiOTI5Li4wNTJlYzA5ODJjZGU1ODUxYmM0NDdhMWIwNjQz
Nzg0MDI5YTk3MTY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTAtMDcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBDb25zdHJ1Y3RpbmcgYSBBdWRpb1dv
cmtsZXROb2RlIHNob3VsZCBjb25zdHJ1Y3QgYW4gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIG9uIHRo
ZSBXb3JrbGV0IHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE3NDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVW5za2lwIGEgZmV3IHRlc3RzIHRoYXQgYXJlIG5vIGxvbmdlciB0aW1pbmcgb3V0
LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0xMC0wNyAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2
ZXJ0aW5nIHIyNjgwODUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA4MzdhOTQ4
NGFjMzY0YzlmODBhODI3ODNiMmEyZTViMjc1MDJmNjI5Li5lZTM5YjFhMjY3YTA5YzcxMGY0YTQw
MjcxZmM3NjM0MmMwMTY2N2U4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAyMC0xMC0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIENvbnN0cnVjdGluZyBhIEF1ZGlvV29ya2xldE5vZGUgc2hvdWxkIGNvbnN0cnVj
dCBhbiBBdWRpb1dvcmtsZXRQcm9jZXNzb3Igb24gdGhlIFdvcmtsZXQgdGhyZWFkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc0NDIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWJhc2VsaW5lIFdQVCB0
ZXN0cyBub3cgdGhhdCB3ZSBhcmUgcGFzc2luZyBtb3JlIGNoZWNrcy4KKworICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2NvbnRleHQt
aW50ZXJmYWNlL3Byb2Nlc3NpbmctYWZ0ZXItcmVzdW1lLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVk
aW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXQtbWVzc2FnZXBvcnQuaHR0cHMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8t
YXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldGdsb2JhbHNjb3BlLXRp
bWluZy1pbmZvLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRp
b3dvcmtsZXRwcm9jZXNzb3Itb3B0aW9ucy5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xl
dC1pbnRlcmZhY2UvcHJvY2Vzc29yLWNvbnN0cnVjdGlvbi1wb3J0Lmh0dHBzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90
aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9zdXNwZW5kZWQtY29udGV4dC1tZXNzYWdlcG9ydC5o
dHRwcy1leHBlY3RlZC50eHQ6CisKIDIwMjAtMTAtMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSB0byBmaXJlIHRoZSBjb3JyZWN0IHNldCBv
ZiBldmVudHMgaW4gY2FzZSBNZWRpYVJlY29yZGVyIHN0cmVhbSBoYXMgdHJhY2sgY2hhbmdlcwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggOTQ5ZDlhODlkNDM4MzcwYzRhMjZkZGYxMGRiYTQ1MzgxMzM1
MTc1My4uNDQyZGUzNTBkNThlOGE5NTRiZjRlYjc0MWE5M2Q0NTY5MWFjODQ5NyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0zMjAsMjAgKzMyMCwxNSBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnQtbG9vcHMvZnVsbHlfYWN0aQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1tZWRpYXN0cmVhbWF1ZGlvc291cmNlbm9kZS1pbnRlcmZhY2UvbWVkaWFzdHJlYW1hdWRpb3Nv
dXJjZW5vZGUtcm91dGluZy5odG1sIFsgU2tpcCBdCiAKICMgVGhlc2Ugd2ViYXVkaW8gdGVzdHMg
YXJlIHRpbWluZyBvdXQgZHVlIHRvIGxhY2sgZm9yIHN1cHBvcnQgZm9yIEF1ZGlvV29ya2xldC4K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90
aGUtYXVkaW9jb250ZXh0LWludGVyZmFjZS9wcm9jZXNzaW5nLWFmdGVyLXJlc3VtZS5odHRwcy5o
dG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3Ro
ZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0LW1lc3Nh
Z2Vwb3J0Lmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRp
b3dvcmtsZXQtcG9zdG1lc3NhZ2Utc2hhcmVkYXJyYXlidWZmZXIuaHR0cHMuaHRtbCBbIFNraXAg
XQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBp
L3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldGdsb2JhbHNjb3BlLXRpbWlu
Zy1pbmZvLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRp
b3dvcmtsZXRub2RlLWF1dG9tYXRpYy1wdWxsLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93
b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXRub2RlLW9uZXJyb3IuaHR0cHMuaHRtbCBbIFNr
aXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8t
YXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldG5vZGUtb3V0cHV0LWNo
YW5uZWwtY291bnQuaHR0cHMuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNl
L2F1ZGlvd29ya2xldHByb2Nlc3Nvci1vcHRpb25zLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVk
aW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXRwcm9jZXNzb3ItcHJvY2Vzcy1mcm96ZW4t
YXJyYXkuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlv
d29ya2xldHByb2Nlc3Nvci1wcm9jZXNzLXplcm8tb3V0cHV0cy5odHRwcy5odG1sIFsgU2tpcCBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkv
dGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0cHJvY2Vzc29yLXByb21pc2Vz
Lmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
YXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9wcm9jZXNzLWdl
dHRlci5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvcHJvY2Vz
cy1wYXJhbWV0ZXJzLmh0dHBzLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFj
ZS9zdXNwZW5kZWQtY29udGV4dC1tZXNzYWdlcG9ydC5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWNo
YW5uZWxtZXJnZXJub2RlLWludGVyZmFjZS9hY3RpdmUtcHJvY2Vzc2luZy5odHRwcy5odG1sIFsg
U2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRp
by1hcGkvdGhlLWNvbnZvbHZlcm5vZGUtaW50ZXJmYWNlL2FjdGl2ZS1wcm9jZXNzaW5nLmh0dHBz
Lmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8v
dGhlLWF1ZGlvLWFwaS90aGUtbWVkaWFlbGVtZW50YXVkaW9zb3VyY2Vub2RlLWludGVyZmFjZS9j
b3JzLWNoZWNrLmh0dHBzLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUt
YXVkaW9jb250ZXh0LWludGVyZmFjZS9wcm9jZXNzaW5nLWFmdGVyLXJlc3VtZS5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvY29udGV4dC1pbnRlcmZhY2UvcHJvY2Vzc2lu
Zy1hZnRlci1yZXN1bWUuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDZlMDYwNDlhOTM2OTA5NmQx
NjdkOWVmZTI0NjkzOTM5ZDA0Mjk3NjAuLjQ2ZGY4YzZhZjVjOGJlMzk2ZjMwMWY3YzE4OTY4MDA0
ZGM4ZTQyNTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0LWludGVyZmFj
ZS9wcm9jZXNzaW5nLWFmdGVyLXJlc3VtZS5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8t
YXBpL3RoZS1hdWRpb2NvbnRleHQtaW50ZXJmYWNlL3Byb2Nlc3NpbmctYWZ0ZXItcmVzdW1lLmh0
dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9V
VCksIG1lc3NhZ2UgPSBudWxsCi0KLVRJTUVPVVQgVGVzdCBjb25zaXN0ZW5jeSBvZiBwcm9jZXNz
aW5nIGFmdGVyIHJlc3VtZSgpIFRlc3QgdGltZWQgb3V0CitQQVNTIFRlc3QgY29uc2lzdGVuY3kg
b2YgcHJvY2Vzc2luZyBhZnRlciByZXN1bWUoKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhl
LWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0LW1lc3NhZ2Vwb3J0Lmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dv
cmtsZXQtbWVzc2FnZXBvcnQuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGJjMTAyYzY2NGU5MjFl
YjA1MjYxYTdjYjg3OTI3ZDY5MDEzNDg5ZDIuLjQ0ZDljMTlhMDYzMTFlMzRkZjVmNDU3ZjY5OGZk
OGQ4NjBlYzU1MjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVy
ZmFjZS9hdWRpb3dvcmtsZXQtbWVzc2FnZXBvcnQuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1
ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXQtbWVzc2FnZXBv
cnQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsMTMgQEAKIAotSGFybmVzcyBFcnJvciAo
VElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KIFBBU1MgIyBBVURJVCBUQVNLIFJVTk5FUiBTVEFS
VEVELgotVElNRU9VVCBFeGVjdXRpbmcgIlRlc3QgcG9zdE1lc3NhZ2UgZnJvbSBBdWRpb1dvcmts
ZXRQcm9jZXNzb3IgdG8gQXVkaW9Xb3JrbGV0Tm9kZSIgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBF
eGVjdXRpbmcgIlRlc3QgcG9zdE1lc3NhZ2UgZnJvbSBBdWRpb1dvcmtsZXROb2RlIHRvIEF1ZGlv
V29ya2xldFByb2Nlc3NvciIKLU5PVFJVTiBBdWRpdCByZXBvcnQKK1BBU1MgRXhlY3V0aW5nICJU
ZXN0IHBvc3RNZXNzYWdlIGZyb20gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHRvIEF1ZGlvV29ya2xl
dE5vZGUiCitQQVNTIEV4ZWN1dGluZyAiVGVzdCBwb3N0TWVzc2FnZSBmcm9tIEF1ZGlvV29ya2xl
dE5vZGUgdG8gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIgorUEFTUyBBdWRpdCByZXBvcnQKIFBBU1Mg
PiBbVGVzdCBwb3N0TWVzc2FnZSBmcm9tIEF1ZGlvV29ya2xldFByb2Nlc3NvciB0byBBdWRpb1dv
cmtsZXROb2RlXQorUEFTUyAgIFRoZSBpbml0aWFsIG1lc3NhZ2UgZnJvbSBQb3J0UHJvY2Vzc29y
IGlzIGVxdWFsIHRvIGNyZWF0ZWQuCitQQVNTIDwgW1Rlc3QgcG9zdE1lc3NhZ2UgZnJvbSBBdWRp
b1dvcmtsZXRQcm9jZXNzb3IgdG8gQXVkaW9Xb3JrbGV0Tm9kZV0gQWxsIGFzc2VydGlvbnMgcGFz
c2VkLiAodG90YWwgMSBhc3NlcnRpb25zKQorUEFTUyA+IFtUZXN0IHBvc3RNZXNzYWdlIGZyb20g
QXVkaW9Xb3JrbGV0Tm9kZSB0byBBdWRpb1dvcmtsZXRQcm9jZXNzb3JdCitQQVNTICAgVGhlIHJl
c3BvbnNlIGZyb20gUG9ydFByb2Nlc3NvciBpcyBlcXVhbCB0byBoZWxsby4KK1BBU1MgPCBbVGVz
dCBwb3N0TWVzc2FnZSBmcm9tIEF1ZGlvV29ya2xldE5vZGUgdG8gQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yXSBBbGwgYXNzZXJ0aW9ucyBwYXNzZWQuICh0b3RhbCAxIGFzc2VydGlvbnMpCitQQVNTICMg
QVVESVQgVEFTSyBSVU5ORVIgRklOSVNIRUQ6IDIgdGFza3MgcmFuIHN1Y2Nlc3NmdWxseS4KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29y
a2xldGdsb2JhbHNjb3BlLXRpbWluZy1pbmZvLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFw
aS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXRnbG9iYWxzY29wZS10aW1p
bmctaW5mby5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNWExYWUwOWU5ODhmMTc4YzFiZjMzNjY5
YzAzNGQzMTM4ODc2ZTM1OS4uNTBhZDk5MjRiNGI1YmQ2NTc3MTU2ODRlM2MyYjc0MWZlODMwODFi
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlv
d29ya2xldGdsb2JhbHNjb3BlLXRpbWluZy1pbmZvLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1h
dWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0Z2xvYmFsc2Nv
cGUtdGltaW5nLWluZm8uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsMTYgQEAKIAotSGFy
bmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KIFBBU1MgIyBBVURJVCBUQVNL
IFJVTk5FUiBTVEFSVEVELgotVElNRU9VVCBFeGVjdXRpbmcgIkNoZWNrIHRoZSB0aW1pbmcgaW5m
b3JtYXRpb24gZnJvbSBBdWRpb1dvcmtsZXRQcm9jZXNzb3IiIFRlc3QgdGltZWQgb3V0Ci1OT1RS
VU4gQXVkaXQgcmVwb3J0CitQQVNTIEV4ZWN1dGluZyAiQ2hlY2sgdGhlIHRpbWluZyBpbmZvcm1h
dGlvbiBmcm9tIEF1ZGlvV29ya2xldFByb2Nlc3NvciIKK1BBU1MgQXVkaXQgcmVwb3J0CiBQQVNT
ID4gW0NoZWNrIHRoZSB0aW1pbmcgaW5mb3JtYXRpb24gZnJvbSBBdWRpb1dvcmtsZXRQcm9jZXNz
b3JdCitQQVNTICAgY3VycmVudEZyYW1lIGZyb20gdGhlIHByb2Nlc3NvciBhdCAwIGlzIGVxdWFs
IHRvIDAuCitQQVNTICAgY3VycmVudFRpbWUgZnJvbSB0aGUgcHJvY2Vzc29yIGF0IDAgaXMgZXF1
YWwgdG8gMC4KK1BBU1MgICBjdXJyZW50RnJhbWUgZnJvbSB0aGUgcHJvY2Vzc29yIGF0IDEyOCBp
cyBlcXVhbCB0byAxMjguCitQQVNTICAgY3VycmVudFRpbWUgZnJvbSB0aGUgcHJvY2Vzc29yIGF0
IDAuMDAyNjY2NjY2NjY2NjY2NjY2NiBpcyBlcXVhbCB0byAwLjAwMjY2NjY2NjY2NjY2NjY2NjYu
CitQQVNTICAgY3VycmVudEZyYW1lIGZyb20gdGhlIHByb2Nlc3NvciBhdCAyNTYgaXMgZXF1YWwg
dG8gMjU2LgorUEFTUyAgIGN1cnJlbnRUaW1lIGZyb20gdGhlIHByb2Nlc3NvciBhdCAwLjAwNTMz
MzMzMzMzMzMzMzMzMyBpcyBlcXVhbCB0byAwLjAwNTMzMzMzMzMzMzMzMzMzMy4KK1BBU1MgICBj
dXJyZW50RnJhbWUgZnJvbSB0aGUgcHJvY2Vzc29yIGF0IDM4NCBpcyBlcXVhbCB0byAzODQuCitQ
QVNTICAgY3VycmVudFRpbWUgZnJvbSB0aGUgcHJvY2Vzc29yIGF0IDAuMDA4IGlzIGVxdWFsIHRv
IDAuMDA4LgorUEFTUyA8IFtDaGVjayB0aGUgdGltaW5nIGluZm9ybWF0aW9uIGZyb20gQXVkaW9X
b3JrbGV0UHJvY2Vzc29yXSBBbGwgYXNzZXJ0aW9ucyBwYXNzZWQuICh0b3RhbCA4IGFzc2VydGlv
bnMpCitQQVNTICMgQVVESVQgVEFTSyBSVU5ORVIgRklOSVNIRUQ6IDEgdGFza3MgcmFuIHN1Y2Nl
c3NmdWxseS4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJm
YWNlL2F1ZGlvd29ya2xldHByb2Nlc3Nvci1vcHRpb25zLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1
ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXRwcm9jZXNzb3It
b3B0aW9ucy5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzFiZjYwODA4ZTM2OTAzOTc1YTg1MmU2
ZDVmOWVkODZkOTY5ZjI5Ni4uYzhlN2Q3ZDhiMWNjODBmZWRjM2U4NjgxMGFkM2NhOGIyMGU1MDgw
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlv
d29ya2xldHByb2Nlc3Nvci1vcHRpb25zLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1h
cGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0cHJvY2Vzc29yLW9wdGlv
bnMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsMTYgQEAKIAotSGFybmVzcyBFcnJvciAo
VElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KIFBBU1MgIyBBVURJVCBUQVNLIFJVTk5FUiBTVEFS
VEVELgotVElNRU9VVCBFeGVjdXRpbmcgInZhbGlkLXByb2Nlc3Nvci1kYXRhIiBUZXN0IHRpbWVk
IG91dAotTk9UUlVOIEV4ZWN1dGluZyAiZW1wdHktb3B0aW9uIgotTk9UUlVOIEF1ZGl0IHJlcG9y
dAorUEFTUyBFeGVjdXRpbmcgInZhbGlkLXByb2Nlc3Nvci1kYXRhIgorUEFTUyBFeGVjdXRpbmcg
ImVtcHR5LW9wdGlvbiIKK1BBU1MgQXVkaXQgcmVwb3J0CiBQQVNTID4gW3ZhbGlkLXByb2Nlc3Nv
ci1kYXRhXQorUEFTUyAgIHxkZXNjcmlwdGlvbnwgZmllbGQgaW4gcHJvY2Vzc29yT3B0aW9ucyBm
cm9tIHByb2Nlc3NvcigiZm9vIikgaXMgZXF1YWwgdG8gdGhlIGZpZWxkIGluIG5vZGUgY29uc3Ry
dWN0b3Igb3B0aW9ucyAoImZvbyIpLgorUEFTUyAgIHxwYXlsb2FkfCBhcnJheSBpbiBwcm9jZXNz
b3JPcHRpb25zIGZyb20gcHJvY2Vzc29yKFswLDEsMiwzXSkgaXMgaWRlbnRpY2FsIHRvIHRoZSBh
cnJheSB0aGUgYXJyYXkgaW4gbm9kZSBjb25zdHJ1Y3RvciBvcHRpb25zIChbMCwxLDIsM10pLgor
UEFTUyA8IFt2YWxpZC1wcm9jZXNzb3ItZGF0YV0gQWxsIGFzc2VydGlvbnMgcGFzc2VkLiAodG90
YWwgMiBhc3NlcnRpb25zKQorUEFTUyA+IFtlbXB0eS1vcHRpb25dCitQQVNTICAgTnVtYmVyIG9m
IHByb3BlcnRpZXMgaW4gZGF0YSBmcm9tIHByb2Nlc3NvciBpcyBlcXVhbCB0byAyLgorUEFTUyAg
IHxudW1iZXJPZklucHV0c3wgZmllbGQgaW4gZGF0YSBmcm9tIHByb2Nlc3NvciBpcyBlcXVhbCB0
byAxLgorUEFTUyAgIHxudW1iZXJPZk91dHB1dHN8IGZpZWxkIGluIGRhdGEgZnJvbSBwcm9jZXNz
b3IgaXMgaWRlbnRpY2FsIHRvIHRoZSBhcnJheSAxLgorUEFTUyA8IFtlbXB0eS1vcHRpb25dIEFs
bCBhc3NlcnRpb25zIHBhc3NlZC4gKHRvdGFsIDMgYXNzZXJ0aW9ucykKK1BBU1MgIyBBVURJVCBU
QVNLIFJVTk5FUiBGSU5JU0hFRDogMiB0YXNrcyByYW4gc3VjY2Vzc2Z1bGx5LgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlv
L3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvcHJvY2Vzc29yLWNvbnN0
cnVjdGlvbi1wb3J0Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3Jr
bGV0LWludGVyZmFjZS9wcm9jZXNzb3ItY29uc3RydWN0aW9uLXBvcnQuaHR0cHMtZXhwZWN0ZWQu
dHh0CmluZGV4IDYyZTk4MzgwOWIzOGU2MDZhZGZhODI3YmE4MDc1OGEzZTJjNjE1ZGMuLmY2MGVj
OGMyMDQ0NDBmZTBlMGFiMGE0ODc2NTNkNWQ5MTU1ZGRjMTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFw
aS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9wcm9jZXNzb3ItY29uc3RydWN0aW9uLXBvcnQu
aHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVy
ZmFjZS9wcm9jZXNzb3ItY29uc3RydWN0aW9uLXBvcnQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0x
LDggKzEsOCBAQAogCiBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIAot
VElNRU9VVCBzdXBlcigpIGFmdGVyIG5ldyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoKSBUZXN0IHRp
bWVkIG91dAotTk9UUlVOIG5ldyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoKSBhZnRlciBzdXBlcigp
Ci1OT1RSVU4gbmV3IEF1ZGlvV29ya2xldFByb2Nlc3NvcigpIGFmdGVyIG5ldyBBdWRpb1dvcmts
ZXRQcm9jZXNzb3IoKQotTk9UUlVOIFNpbmdsZXRvbiBBdWRpb1dvcmtsZXRQcm9jZXNzb3IKK1BB
U1Mgc3VwZXIoKSBhZnRlciBuZXcgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKCkKK1BBU1MgbmV3IEF1
ZGlvV29ya2xldFByb2Nlc3NvcigpIGFmdGVyIHN1cGVyKCkKK1BBU1MgbmV3IEF1ZGlvV29ya2xl
dFByb2Nlc3NvcigpIGFmdGVyIG5ldyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoKQorVElNRU9VVCBT
aW5nbGV0b24gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIFRlc3QgdGltZWQgb3V0CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8v
dGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9zdXNwZW5kZWQtY29udGV4
dC1tZXNzYWdlcG9ydC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29y
a2xldC1pbnRlcmZhY2Uvc3VzcGVuZGVkLWNvbnRleHQtbWVzc2FnZXBvcnQuaHR0cHMtZXhwZWN0
ZWQudHh0CmluZGV4IGYyOTg3MzVmMzVlZWQyYzQyY2NhMzc2ZTM3ZDhhOTQyYmI4YzY4NTIuLmVi
NWIyMTgwNjg1OWE4NDcxM2ZhN2UwZDA2NjRhMzVkY2YwNWQ5NzAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlv
LWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9zdXNwZW5kZWQtY29udGV4dC1tZXNzYWdl
cG9ydC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQt
aW50ZXJmYWNlL3N1c3BlbmRlZC1jb250ZXh0LW1lc3NhZ2Vwb3J0Lmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMSw3ICsxLDUgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBu
dWxsCi0KLVRJTUVPVVQgcmVhbHRpbWUgc3VzcGVuZGVkIFRlc3QgdGltZWQgb3V0Ci1OT1RSVU4g
b2ZmbGluZSBiZWZvcmUgc3RhcnQKLU5PVFJVTiBvZmZsaW5lIG9uIGNvbXBsZXRlCitQQVNTIHJl
YWx0aW1lIHN1c3BlbmRlZAorUEFTUyBvZmZsaW5lIGJlZm9yZSBzdGFydAorRkFJTCBvZmZsaW5l
IG9uIGNvbXBsZXRlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVl
OiBvYmplY3QgIkludmFsaWRTdGF0ZUVycm9yOiBDb250ZXh0IGlzIGNsb3NlZCIKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410789</attachid>
            <date>2020-10-07 15:06:01 -0700</date>
            <delta_ts>2020-10-07 16:31:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217442-20201007150600.patch</filename>
            <type>text/plain</type>
            <size>67124</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTI2NDU1N2UzNjczNGY5
MDczNTQ3ZmY4NjcxMzY5NWY5YTA5NGUzNy4uYjk2YmQ1NGI0MDhiYWE3YzkwZDI4YjliOWM0OTM1
NTIwMDljNjBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAyMC0xMC0wNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIENvbnN0cnVjdGluZyBhIEF1
ZGlvV29ya2xldE5vZGUgc2hvdWxkIGNvbnN0cnVjdCBhbiBBdWRpb1dvcmtsZXRQcm9jZXNzb3Ig
b24gdGhlIFdvcmtsZXQgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTc0NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDb25zdHJ1Y3RpbmcgYSBBdWRpb1dvcmtsZXROb2RlIHNob3VsZCBjb25z
dHJ1Y3QgYW4gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIG9uIHRoZSBXb3JrbGV0IHRocmVhZDoKKyAg
ICAgICAgLSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXVkaW8vI0F1ZGlvV29ya2xldE5vZGUt
Y29uc3RydWN0b3JzIChTdGVwIDEzKQorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmViYXNlbGlu
ZWQgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXQ6OmNyZWF0ZVByb2Nlc3Nv
cik6CisgICAgICAgIEFkZCBjcmVhdGVQcm9jZXNzb3IoKSBmdW5jdGlvbiB0byBBdWRpb1dvcmts
ZXQgd2hpY2ggdGFrZXMgY2FyZSBvZiBob3BwaW5nIHRvIHRoZSB3b3JrbGV0IHRocmVhZAorICAg
ICAgICBpbiBvcmRlciB0byBjYWxsIGNyZWF0ZVByb2Nlc3NvcigpIG9uIHRoZSBBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Lmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGVQ
cm9jZXNzb3IpOgorICAgICAgICBDb25zdHJ1Y3QgYW4gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLCBh
cyBzcGVjaWZpZWQgaGVyZToKKyAgICAgICAgLSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXVk
aW8vI0F1ZGlvV29ya2xldFByb2Nlc3Nvci1pbnN0YW50aWF0aW9uCisKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjp0YWtlUGVuZGluZ1Byb2Nlc3NvckNvbnN0cnVj
dGlvbkRhdGEpOgorICAgICAgICBBIGZ1bmN0aW9uIHRvIHRha2UgdGhlIHBlbmRpbmcgUHJvY2Vz
c29yQ29uc3RydWN0aW9uRGF0YS4gVGhpcyBjb25zdHJ1Y3Rpb24KKyAgICAgICAgZGF0YSBnZXRz
IGluaXRpYWxpemVkIGluIGNyZWF0ZVByb2Nlc3NvcigpIGFuZCBnZXRzIGNvbnN1bWVkIGJ5Cisg
ICAgICAgIEF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6Y3JlYXRlKCkuCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmg6CisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Xb3JrbGV0Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgSW1wcm92ZSBBdWRpb1dvcmtsZXROb2Rl
IGNvbnN0cnVjdG9yIHRvIGFjdHVhbGx5IGNhdXNlIHRoZSBjb25zdHJ1Y3Rpb24gb2YKKyAgICAg
ICAgdGhlIEF1ZGlvV29ya2xldFByb2Nlc3NvciBvbiB0aGUgd29ya2xldCB0aHJlYWQsIHBhc3Np
bmcgaXQgdGhlIG9wdGlvbnMgYW5kCisgICAgICAgIHRoZSBNZXNzYWdlUG9ydC4gVGhpcyBpcyBh
cyBwZXIgdGhlIHNwZWNpZmljYXRpb24gaGVyZToKKyAgICAgICAgLSBodHRwczovL3d3dy53My5v
cmcvVFIvd2ViYXVkaW8vI0F1ZGlvV29ya2xldE5vZGUtY29uc3RydWN0b3JzCisKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvV29ya2xldE5vZGU6OkF1ZGlvV29ya2xldE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Xb3JrbGV0Tm9kZTo6fkF1ZGlvV29ya2xldE5vZGUpOgorCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1dvcmtsZXROb2RlOjpzZXRQcm9jZXNzb3IpOgorICAgICAgICBPbmNl
IHRoZSBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgaXMgY3JlYXRlZCBvbiB0aGUgd29ya2xldCB0aHJl
YWQsIHRoaXMgZ2V0cworICAgICAgICBjYWxsZWQgc28gdGhhdCB0aGUgQXVkaW9Xb3JrbGV0Tm9k
ZSBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIHByb2Nlc3Nvci4gVGhpcworICAgICAgICB3aWxsIGJl
IG5lZWRlZCBsYXRlciBvbiBvbmNlIEF1ZGlvV29ya2xldE5vZGU6OnByb2Nlc3MoKSBzdGFydHMg
ZG9pbmcgYXVkaW8KKyAgICAgICAgcHJvY2Vzc2luZyB0aHJvdWdoIHRoZSBBdWRpb1dvcmtsZXRQ
cm9jZXNzb3IuCisKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE5vZGU6OnByb2Nlc3Mp
OgorICAgICAgICBJbXByb3ZlIGNvbW1lbnQuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldE5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE5vZGUuaWRsOgorICAgICAgICBQYXNzIHRoZSBnbG9iYWwgb2JqZWN0IHRvIHRoZSBjb25z
dHJ1Y3Rvci4gSXQgaXMgbmVlZGVkIG5vdyB0aGF0IHRoZSBjb25zdHJ1Y3RvcgorICAgICAgICBz
ZXJpYWxpemVzIHNjcmlwdCB2YWx1ZXMgdG8gcGFzcyB0aGVtIHRvIHRoZSB3b3JrbGV0IHRocmVh
ZC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMu
aWRsOgorICAgICAgICBBZGQgW0pTR2VuZXJhdGVUb0pTT2JqZWN0XSB0byBBdWRpb1dvcmtsZXRO
b2RlT3B0aW9ucyBkaWN0aW9uYXJ5IHNvIHRoYXQgYQorICAgICAgICBjb252ZXJ0RGljdGlvbmFy
eVRvSlMoKSBmdW5jdGlvbiBnZXRzIGdlbmVyYXRlZCBmb3IgdGhpcyBkaWN0aW9uYXJ5LiBUaGlz
IGZ1bmN0aW9uCisgICAgICAgIGlzIGNhbGxlZCBieSB0aGUgQXVkaW9Xb3JrbGV0Tm9kZSBjb25z
dHJ1Y3Rvci4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6QXVkaW9Xb3JrbGV0
UHJvY2Vzc29yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nl
c3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpuYW1lIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6cG9ydCk6Cisg
ICAgICAgIEltcGxlbWVudCBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgY29uc3RydWN0b3Igc28gdGhh
dCBpdHMgcmV0cmlldmVzIHRoZSBwZW5kaW5nCisgICAgICAgIGNvbnN0cnVjdGlvbiBkYXRhIGZy
b20gdGhlIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlIGFuZCBwcm9wZXJseSBpbml0aWFsaXplcwor
ICAgICAgICBpdHMgbmFtZSBhbmQgcG9ydC4gVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoaXMgaXMg
aGVyZToKKyAgICAgICAgLSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXVkaW8vI2RvbS1hdWRp
b3dvcmtsZXRwcm9jZXNzb3ItYXVkaW93b3JrbGV0cHJvY2Vzc29yCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5pZGw6CisgICAgICAgIEluZGljYXRl
IHRoYXQgdGhlIGNvbnN0cnVjdG9yIG1heSB0aHJvdyBhbiBleGNlcHRpb24gYXMgcGVyIHRoZSBz
cGVjaWZpY2F0aW9uOgorICAgICAgICAtIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdWRpby8j
ZG9tLWF1ZGlvd29ya2xldHByb2Nlc3Nvci1hdWRpb3dvcmtsZXRwcm9jZXNzb3IgKFN0ZXAgMSkK
KyAgICAgICAgQWxzbyBwYXNzIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRvIHRoZSBjb25z
dHJ1Y3RvciBzaW5jZSB0aGUgY29uc3RydWN0b3IKKyAgICAgICAgbmVlZHMgdG8gcmV0cmlldmUg
dGhlIHBlbmRpbmcgY29uc3RydWN0aW9uIGRhdGEgZnJvbSBpdDoKKyAgICAgICAgLSBodHRwczov
L3d3dy53My5vcmcvVFIvd2ViYXVkaW8vI2RvbS1hdWRpb3dvcmtsZXRwcm9jZXNzb3ItYXVkaW93
b3JrbGV0cHJvY2Vzc29yIChTdGVwIDEpCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEuaDoKKworICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YTo6QXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yQ29uc3RydWN0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRQ
cm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE6OnBvcnQgY29uc3QpOgorICAg
ICAgICBBZGQgY2xhc3MgdG8gd3JhcCB0aGUgQXVkaW9Xb3JrbGV0UHJvY2VzcydzIGNvbnN0cnVj
dGlvbiBkYXRhOgorICAgICAgICAtIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdWRpby8jcGVu
ZGluZy1wcm9jZXNzb3ItY29uc3RydWN0aW9uLWRhdGEKKworICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmg6CisgICAgICAgIE1vdmUgVGhyZWFkU2FmZVJlZkNv
dW50ZWQgZnJvbSB0aGlzIGNsYXNzIHRvIHRoZSBwYXJlbnQgY2xhc3MgKFdvcmtlck9yV29ya2xl
dFRocmVhZCkKKyAgICAgICAgc2luY2UgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIg
bmVlZHMgdG8gcHJvdGVjdCBhIFdvcmtlck9yV29ya2xldFRocmVhZCBub3cuCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgaGVh
ZGVyIHRvIHByb2plY3QuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
UHJvcGVybHkgaGFuZGxlIFdvcmtsZXRHbG9iYWxTY29wZS4KKworICAgICAgICAqIGRvbS9NZXNz
YWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQu
aDoKKyAgICAgICAgVHdlYWsgTWVzc2FnZVBvcnQgQVBJIHRvIHN1cHBvcnQgZGlzZW50YW5nbGlu
Zy9lbnRhbmdsaW5nIGEgc2luZ2xlCisgICAgICAgIE1lc3NhZ2VQb3J0LiBQcmV2aW91c2x5IHdl
IGhhZCB0byBwYXNzIGFuIGFycmF5IG9mIHBvcnRzLgorCisgICAgICAgICogZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6Y3JlYXRlZE1lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KToKKyAgICAgICAgVHdlYWsgYXNzZXJ0
aW9ucyB0byBoYW5kbGUgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVzLgorCisgICAgICAgICogZG9t
L21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQpOgorICAgICAg
ICAqIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaDoKKyAgICAgICAg
KiBkb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpXb3Jr
ZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1v
dGVQb3J0Rm9yQWN0aXZpdHkpOgorICAgICAgICAqIGRvbS9tZXNzYWdlcG9ydHMvV29ya2VyTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaDoKKyAgICAgICAgVXBkYXRlIFdvcmtlck1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyIHRvIHVzZSBXb3JrZXJPcldvcmtsZXRTY29wZSBpbnN0ZWFkCisg
ICAgICAgIG9yIFdvcmtlckdsb2JhbFNjb3BlLiBUaGlzIGFsbG93cyB1cyB0byByZXVzZSB0aGlz
IGNsYXNzIGZvciBBdWRpb1dvcmtsZXRzCisgICAgICAgIHNvIHRoYXQgTWVzc2FnZVBvcnQgY29t
bXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBtYWluIHRocmVhZCBhbmQgdGhlIHdvcmtsZXQKKyAgICAg
ICAgdGhyZWFkIG5vdyB3b3Jrcy4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0
VGhyZWFkLmg6CisgICAgICAgIE1vdmUgVGhyZWFkU2FmZVJlZkNvdW50ZWQgZnJvbSBzdWJjbGFz
c2VzIHRvIHRoaXMgY2xhc3Mgc28gdGhhdAorICAgICAgICBXb3JrZXJNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlciBjYW4gcHJvdGVjdCBhIFdvcmtlck9yV29ya2xldFRocmVhZC4KKworICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bm90
aWZ5RmluaXNoZWQpOgorICAgICAgICBPbmx5IGV2YWx1YXRlIHRoZSBzY3JpcHQgaWYgd2UgaGF2
ZSBub3QgYWxyZWFkeSBldmFsdWF0ZWQgaXQgaW4gdGhpcyB3b3JrbGV0LgorICAgICAgICBJIGFt
IGFzc3VtaW5nIHRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugd2UgYXJlIG5vdCB0cmVhdGluZyB0aGUg
c2NyaXB0IGFzIGEgbW9kdWxlCisgICAgICAgIHlldCAoZHVlIHRvIGxhY2sgb2Ygc3VwcG9ydCBp
biB3b3JrZXJzKS4gV2l0aG91dCB0aGlzIGNoYW5nZXMsIHRoZSB3b3JrbGV0J3MKKyAgICAgICAg
c2NyaXB0IHdvdWxkIGdldCBpbiBhIGJhZCBzdGF0ZSB3aGVuIGltcG9ydGluZyBzZXZlcmFsIHRp
bWVzIHRoZSBzYW1lIG1vZHVsZQorICAgICAgICAod2hpY2ggaXMgc29tZXRoaW5nIHRoZSBXUFQg
dGVzdHMgZG8pLgorCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6Om1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyKToKKyAgICAgICAgSW5zdGFudGlhdGUgV29ya2VyTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIgaWYgbmVlZGVkLiBUaGlzIGlzIG5lZWRlZCBmb3IKKyAgICAg
ICAgTWVzc2FnZVBvcnQgY29tbXVuaWNhdGlvbiBpcyBBdWRpb1dvcmtsZXRzLgorCisgICAgICAg
ICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisKIDIwMjAtMTAtMDcgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3RkOjptYXggdG8gbWFrZSBz
dXJlIHRoZSBsaW5lIGdhcCBpcyBhbHdheXMgbGFyZ2VyIHRoYW4gMCAoc2VlIEZJWE1FKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0LmNwcAppbmRl
eCAyNGVkNGM4OTY4ZDdhYjQ3YjQ0MzUyMTQ2OWJkYTliZDMwYTY3ODc3Li5mOTYwYWZmOTlmMDU0
ZTlmM2EwOTZkOGIzNGM1MDQ5ZWZhMTI4OTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXQuY3BwCkBAIC0zMSw4ICszMSwxMSBAQAogI2lmIEVO
QUJMRShXRUJfQVVESU8pCiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0LmgiCiAKKyNpbmNsdWRlICJB
dWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkF1ZGlvV29ya2xldE1lc3NhZ2lu
Z1Byb3h5LmgiCisjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0Tm9kZS5oIgogI2luY2x1ZGUgIkJhc2VB
dWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzEsNiArNzQs
MTkgQEAgQmFzZUF1ZGlvQ29udGV4dCogQXVkaW9Xb3JrbGV0OjphdWRpb0NvbnRleHQoKSBjb25z
dAogICAgIHJldHVybiBtX2F1ZGlvQ29udGV4dC5nZXQoKTsKIH0KIAordm9pZCBBdWRpb1dvcmts
ZXQ6OmNyZWF0ZVByb2Nlc3Nvcihjb25zdCBTdHJpbmcmIG5hbWUsIFRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQgcG9ydCwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBvcHRpb25zLCBBdWRpb1dv
cmtsZXROb2RlJiBub2RlKQoreworICAgIGF1dG8qIHByb3h5ID0gdGhpcy0+cHJveHkoKTsKKyAg
ICBBU1NFUlQocHJveHkpOworICAgIGlmICghcHJveHkpCisgICAgICAgIHJldHVybjsKKworICAg
IHByb3h5LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtsZXRHbG9iYWxTY29wZShbbmFtZSA9IG5hbWUu
aXNvbGF0ZWRDb3B5KCksIHBvcnQsIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBub2RlID0g
bWFrZVJlZihub2RlKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7
CisgICAgICAgIG5vZGUtPnNldFByb2Nlc3Nvcihkb3duY2FzdDxBdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZT4oY29udGV4dCkuY3JlYXRlUHJvY2Vzc29yKG5hbWUsIHBvcnQsIFdURk1vdmUob3B0aW9u
cykpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbbm9kZSA9IFdURk1vdmUobm9kZSldIHsg
fSk7CisgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXQuaAppbmRleCA5YWZjYmYxMDEy
NDk4N2IyNGRiOTcxYTdlMDcyNDQ4ZjdmMzIyODhhLi43MjExZjZjZjZmZGI0YzY0Y2QzNThkMWE0
NzM1ZjE2MzEzNDY4NzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0LmgKQEAgLTI5LDExICsyOSwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBF
TkFCTEUoV0VCX0FVRElPKQorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiV29y
a2xldC5oIgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgQXVkaW9Xb3JrbGV0Tm9kZTsKIGNsYXNzIEJhc2VBdWRpb0NvbnRleHQ7CiBjbGFz
cyBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTsKIApAQCAtNDUsNiArNDcsOCBAQCBwdWJsaWM6
CiAgICAgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkqIHByb3h5KCkgY29uc3Q7CiAgICAgQmFz
ZUF1ZGlvQ29udGV4dCogYXVkaW9Db250ZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lkIGNyZWF0ZVBy
b2Nlc3Nvcihjb25zdCBTdHJpbmcmIG5hbWUsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQsIFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIEF1ZGlvV29ya2xldE5vZGUmKTsKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBBdWRpb1dvcmtsZXQoQmFzZUF1ZGlvQ29udGV4dCYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCmluZGV4IGI4NTIzMDhmZmY1OThiM2E4MTEzZjAxY2MzNmQyMmY2YjIzMGFm
MmIuLmQ2Y2IzYWNiOWU3NjE5MzE0YTc2ZDNmZmQ1Zjk4YWM3MGMzNzBjZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiQXVkaW9QYXJhbURlc2Ny
aXB0b3IuaCIKICNpbmNsdWRlICJBdWRpb1dvcmtsZXQuaCIKICNpbmNsdWRlICJBdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eS5oIgorI2luY2x1ZGUgIkF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0
cnVjdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJKU0F1ZGlvV29ya2xldFByb2Nlc3Nvci5oIgogI2lu
Y2x1ZGUgIkpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJK
U0RPTUNvbnZlcnQuaCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KQEAgLTEw
OSw2ICsxMTEsMzUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6
OnJlZ2lzdGVyUHJvY2Vzc29yKFN0cmluZyYmIG5hbWUsIFJlZjwKICAgICByZXR1cm4geyB9Owog
fQogCitSZWZQdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPiBBdWRpb1dvcmtsZXRHbG9iYWxTY29w
ZTo6Y3JlYXRlUHJvY2Vzc29yKGNvbnN0IFN0cmluZyYgbmFtZSwgVHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCBwb3J0LCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG9wdGlvbnMpCit7CisgICAg
YXV0byBjb25zdHJ1Y3RvciA9IG1fcHJvY2Vzc29yQ29uc3RydWN0b3JNYXAuZ2V0KG5hbWUpOwor
ICAgIEFTU0VSVChjb25zdHJ1Y3Rvcik7CisgICAgaWYgKCFjb25zdHJ1Y3RvcikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBKU0M6OkpTT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0gY29u
c3RydWN0b3ItPmNhbGxiYWNrRGF0YSgpLT5jYWxsYmFjaygpOworICAgIGF1dG8qIGdsb2JhbE9i
amVjdCA9IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOworICAgIEpTQzo6Vk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrIHsgZ2xvYmFsT2JqZWN0IH07CisKKyAg
ICBtX3BlbmRpbmdQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhID0gbWFrZVVuaXF1ZTxBdWRpb1dv
cmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhPihTdHJpbmcgeyBuYW1lIH0sIE1lc3NhZ2VQ
b3J0OjplbnRhbmdsZSgqdGhpcywgV1RGTW92ZShwb3J0KSkpOworCisgICAgSlNDOjpNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGF1dG8gYXJnID0gb3B0aW9ucy0+ZGVzZXJpYWxpemUo
Kmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpOb25U
aHJvd2luZyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAg
YXJncy5hcHBlbmQoYXJnKTsKKyAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKKwor
ICAgIGF1dG8qIG9iamVjdCA9IEpTQzo6Y29uc3RydWN0KGdsb2JhbE9iamVjdCwganNDb25zdHJ1
Y3RvciwgYXJncywgIkZhaWxlZCB0byBjb25zdHJ1Y3QgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIik7
CisgICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIW9iamVjdCk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBhdXRvJiBqc1Byb2Nlc3NvciA9
ICpKU0M6OmpzQ2FzdDxKU0F1ZGlvV29ya2xldFByb2Nlc3Nvcio+KG9iamVjdCk7CisgICAgcmV0
dXJuICZqc1Byb2Nlc3Nvci53cmFwcGVkKCk7Cit9CisKIHZvaWQgQXVkaW9Xb3JrbGV0R2xvYmFs
U2NvcGU6OnByZXBhcmVGb3JUZXJtaW5hdGlvbigpCiB7CiAgICAgaWYgKGF1dG8qIGRlZmF1bHRU
YXNrR3JvdXAgPSB0aGlzLT5kZWZhdWx0VGFza0dyb3VwKCkpCkBAIC0xMzAsNiArMTYxLDExIEBA
IHZvaWQgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OnBvc3RUYXNrKFRhc2smJiB0YXNrKQogICAg
IHRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKIH0KIAorc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE+IEF1ZGlvV29y
a2xldEdsb2JhbFNjb3BlOjp0YWtlUGVuZGluZ1Byb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEoKQor
eworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1Byb2Nlc3NvckNvbnN0cnVjdGlv
bkRhdGEsIG51bGxwdHIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDQ0MTJjZmQwYjFlNDQ5
YzQyMTA1YTU4MTA2MTAxNDM2M2ZiNWUzNWUuLjJjZDdlMDBlMTNlNGQyNjBlZGJhMzgzYWYxMzgy
MTgyOWE2NTYzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTMwLDEwICszMCwxMyBAQAogCiAj
aWYgRU5BQkxFKFdFQl9BVURJTykKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRUaHJlYWQuaCIKKyNp
bmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0
cnVjdGlvbkRhdGE7CitjbGFzcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3I7CiBjbGFzcyBBdWRpb1dv
cmtsZXRUaHJlYWQ7CiBjbGFzcyBKU0F1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yOwog
CkBAIC00OSw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICB+QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUo
KTsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlZ2lzdGVyUHJvY2Vzc29yKFN0cmluZyYmIG5h
bWUsIFJlZjxKU0F1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yPiYmKTsKKyAgICBSZWZQ
dHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPiBjcmVhdGVQcm9jZXNzb3IoY29uc3QgU3RyaW5nJiBu
YW1lLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0LCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYm
IG9wdGlvbnMpOwogCiAgICAgdm9pZCBzZXRDdXJyZW50RnJhbWUoZmxvYXQgY3VycmVudEZyYW1l
KSB7IG1fY3VycmVudEZyYW1lID0gY3VycmVudEZyYW1lOyB9CiAgICAgc2l6ZV90IGN1cnJlbnRG
cmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1lOyB9CkBAIC02Miw2ICs2Niw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcG9zdFRhc2soVGFzayYmKSBmaW5hbDsKIAorICAgIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhPiB0YWtlUGVu
ZGluZ1Byb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEoKTsKKwogcHJpdmF0ZToKICAgICBBdWRpb1dv
cmtsZXRHbG9iYWxTY29wZShBdWRpb1dvcmtsZXRUaHJlYWQmLCBjb25zdCBXb3JrbGV0UGFyYW1l
dGVycyYpOwogCkBAIC03Miw2ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fY3VycmVu
dEZyYW1lIHsgMCB9OwogICAgIGNvbnN0IGZsb2F0IG1fc2FtcGxlUmF0ZTsKICAgICBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPEpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3I+PiBtX3By
b2Nlc3NvckNvbnN0cnVjdG9yTWFwOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1dvcmtsZXRQ
cm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhPiBtX3BlbmRpbmdQcm9jZXNzb3JDb25zdHJ1Y3Rpb25E
YXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAKaW5kZXggNGEwYjZjOGZj
ZjgwYTVhN2E0MTBmZjY1MmJhNTQwYjUxOGE1MTgyNC4uNmJlNzliOTkzZmI2NTk5YTgyNjMwODll
ZTA4NDNjYmMzMjUxNmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCkBAIC0zNSwxNyArMzUsMjQgQEAKICNpbmNsdWRl
ICJBdWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCiAjaW5jbHVkZSAi
QXVkaW9QYXJhbU1hcC5oIgorI2luY2x1ZGUgIkF1ZGlvV29ya2xldC5oIgorI2luY2x1ZGUgIkF1
ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmgiCiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0Tm9kZU9w
dGlvbnMuaCIKKyNpbmNsdWRlICJBdWRpb1dvcmtsZXRQcm9jZXNzb3IuaCIKICNpbmNsdWRlICJC
YXNlQXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiSlNBdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVsLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIK
KyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJXb3JrZXJSdW5M
b29wLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoQXVkaW9Xb3JrbGV0Tm9kZSk7CiAKLUV4Y2VwdGlvbk9yPFJlZjxB
dWRpb1dvcmtsZXROb2RlPj4gQXVkaW9Xb3JrbGV0Tm9kZTo6Y3JlYXRlKEJhc2VBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIFN0cmluZyYmIG5hbWUsIEF1ZGlvV29ya2xldE5vZGVPcHRpb25zJiYgb3B0
aW9ucykKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb1dvcmtsZXROb2RlPj4gQXVkaW9Xb3JrbGV0Tm9k
ZTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgQmFzZUF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgU3RyaW5nJiYgbmFtZSwgQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMmJiBv
cHRpb25zKQogewogICAgIGlmICghb3B0aW9ucy5udW1iZXJPZklucHV0cyAmJiAhb3B0aW9ucy5u
dW1iZXJPZk91dHB1dHMpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciwgIk51bWJlciBvZiBpbnB1dHMgYW5kIG91dHB1dHMgY2Fubm90IGJvdGggYmUgMCJfcyB9
OwpAQCAtNjksMTAgKzc2LDIwIEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb1dvcmtsZXROb2RlPj4g
QXVkaW9Xb3JrbGV0Tm9kZTo6Y3JlYXRlKEJhc2VBdWRpb0NvbnRleHQmIGNvCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkNvbnRleHQgaXMgY2xvc2VkIl9z
IH07CiAKICAgICBhdXRvIG1lc3NhZ2VDaGFubmVsID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0ZSgq
Y29udGV4dC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIC8vIEZJWE1FOiBQYXNzIG1l
c3NhZ2VDaGFubmVsJ3MgcG9ydDIgdG8gdGhlIEF1ZGlvV29ya2xldFByb2Nlc3Nvci4KKyAgICBh
dXRvIG5vZGVNZXNzYWdlUG9ydCA9IG1lc3NhZ2VDaGFubmVsLT5wb3J0MSgpOworICAgIGF1dG8g
cHJvY2Vzc29yTWVzc2FnZVBvcnQgPSBtZXNzYWdlQ2hhbm5lbC0+cG9ydDIoKTsKKworICAgIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRPcHRpb25zOworICAgIHsKKyAg
ICAgICAgYXV0byBsb2NrID0gSlNDOjpKU0xvY2tIb2xkZXIgeyAmZ2xvYmFsT2JqZWN0IH07Cisg
ICAgICAgIGF1dG8qIGpzT3B0aW9ucyA9IGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhnbG9iYWxPYmpl
Y3QsICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLCBvcHRp
b25zKTsKKyAgICAgICAgc2VyaWFsaXplZE9wdGlvbnMgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZShnbG9iYWxPYmplY3QsIGpzT3B0aW9ucywgU2VyaWFsaXphdGlvbkVycm9yTW9kZTo6
Tm9uVGhyb3dpbmcpOworICAgICAgICBpZiAoIXNlcmlhbGl6ZWRPcHRpb25zKQorICAgICAgICAg
ICAgc2VyaWFsaXplZE9wdGlvbnMgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgp
OworICAgIH0KIAogICAgIGF1dG8gcGFyYW1ldGVyRGF0YSA9IFdURk1vdmUob3B0aW9ucy5wYXJh
bWV0ZXJEYXRhKTsKLSAgICBhdXRvIG5vZGUgPSBhZG9wdFJlZigqbmV3IEF1ZGlvV29ya2xldE5v
ZGUoY29udGV4dCwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShvcHRpb25zKSwgKm1lc3NhZ2VDaGFu
bmVsLT5wb3J0MSgpKSk7CisgICAgYXV0byBub2RlID0gYWRvcHRSZWYoKm5ldyBBdWRpb1dvcmts
ZXROb2RlKGNvbnRleHQsIG5hbWUsIFdURk1vdmUob3B0aW9ucyksICpub2RlTWVzc2FnZVBvcnQp
KTsKIAogICAgIGF1dG8gcmVzdWx0ID0gbm9kZS0+aGFuZGxlQXVkaW9Ob2RlT3B0aW9ucyhvcHRp
b25zLCB7IDIsIENoYW5uZWxDb3VudE1vZGU6Ok1heCwgQ2hhbm5lbEludGVycHJldGF0aW9uOjpT
cGVha2VycyB9KTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtOTAsMTUgKzEw
NywxOCBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9Xb3JrbGV0Tm9kZT4+IEF1ZGlvV29ya2xldE5v
ZGU6OmNyZWF0ZShCYXNlQXVkaW9Db250ZXh0JiBjbwogICAgICAgICB9CiAgICAgfQogCisgICAg
Y29udGV4dC5hdWRpb1dvcmtsZXQoKS5jcmVhdGVQcm9jZXNzb3IobmFtZSwgcHJvY2Vzc29yTWVz
c2FnZVBvcnQtPmRpc2VudGFuZ2xlKCksIHNlcmlhbGl6ZWRPcHRpb25zLnJlbGVhc2VOb25OdWxs
KCksIG5vZGUpOworCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLUF1ZGlvV29ya2xldE5vZGU6OkF1
ZGlvV29ya2xldE5vZGUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCwgU3RyaW5nJiYgbmFtZSwg
QXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMmJiBvcHRpb25zLCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9y
dCkKK0F1ZGlvV29ya2xldE5vZGU6OkF1ZGlvV29ya2xldE5vZGUoQmFzZUF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBBdWRpb1dvcmtsZXROb2RlT3B0aW9ucyYmIG9w
dGlvbnMsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQs
IE5vZGVUeXBlV29ya2xldCkKLSAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICwgbV9u
YW1lKG5hbWUpCiAgICAgLCBtX3BhcmFtZXRlcnMoQXVkaW9QYXJhbU1hcDo6Y3JlYXRlKCkpCiAg
ICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcHRpb25zLm51bWJlck9mSW5wdXRzOyAr
K2kpCiAgICAgICAgIGFkZElucHV0KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9w
dGlvbnMubnVtYmVyT2ZPdXRwdXRzOyArK2kpCkBAIC0xMDksMTQgKzEyOSwzMCBAQCBBdWRpb1dv
cmtsZXROb2RlOjpBdWRpb1dvcmtsZXROb2RlKEJhc2VBdWRpb0NvbnRleHQmIGNvbnRleHQsIFN0
cmluZyYmIG5hbWUsIEF1ZAogCiBBdWRpb1dvcmtsZXROb2RlOjp+QXVkaW9Xb3JrbGV0Tm9kZSgp
CiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICB7CisgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9wcm9jZXNzb3JMb2NrKTsKKyAgICAgICAgaWYgKG1fcHJvY2Vzc29y
KSB7CisgICAgICAgICAgICBpZiAoYXV0byogd29ya2xldFByb3h5ID0gY29udGV4dCgpLmF1ZGlv
V29ya2xldCgpLnByb3h5KCkpCisgICAgICAgICAgICAgICAgd29ya2xldFByb3h5LT5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtsZXRHbG9iYWxTY29wZShbbV9wcm9jZXNzb3IgPSBXVEZNb3ZlKG1fcHJv
Y2Vzc29yKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsgfSwgV29ya2VyUnVuTG9vcDo6ZGVm
YXVsdE1vZGUoKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgdW5pbml0aWFsaXplKCk7CiB9CiAK
K3ZvaWQgQXVkaW9Xb3JrbGV0Tm9kZTo6c2V0UHJvY2Vzc29yKFJlZlB0cjxBdWRpb1dvcmtsZXRQ
cm9jZXNzb3I+JiYgcHJvY2Vzc29yKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzb3JMb2NrKTsKKyAgICBtX3Byb2Nl
c3NvciA9IFdURk1vdmUocHJvY2Vzc29yKTsKK30KKwogdm9pZCBBdWRpb1dvcmtsZXROb2RlOjpw
cm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lc1RvUHJvY2Vzcyk7CiAKLSAgICAvLyBGSVhN
RTogRG8gYWN0dWFsIHByb2Nlc3NpbmcuCisgICAgLy8gRklYTUU6IERvIGFjdHVhbCBwcm9jZXNz
aW5nIHZpYSBtX3Byb2Nlc3Nvci4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVy
T2ZPdXRwdXRzKCk7ICsraSkKICAgICAgICAgb3V0cHV0KGkpLT5idXMoKS0+emVybygpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUu
aAppbmRleCBjZmUyZGNiNDJmMGJkYWRhNmM4OGRlNTljOWRlN2NjYzg2Nzk5ZGIyLi45NWM3ZjY3
NTBmMDVmMTJmMzk3NjI0NWRhZGI3MTMxZjExNDg1NDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaApAQCAtMzEsMTAgKzMxLDEy
IEBACiAjaWYgRU5BQkxFKFdFQl9BVURJTykKIAogI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9Q
YXJhbU1hcDsKK2NsYXNzIEF1ZGlvV29ya2xldFByb2Nlc3NvcjsKIGNsYXNzIE1lc3NhZ2VQb3J0
OwogCiBzdHJ1Y3QgQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnM7CkBAIC00MiwxNCArNDQsMTYgQEAg
c3RydWN0IEF1ZGlvV29ya2xldE5vZGVPcHRpb25zOwogY2xhc3MgQXVkaW9Xb3JrbGV0Tm9kZSA6
IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9Xb3Jr
bGV0Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb1dvcmts
ZXROb2RlPj4gY3JlYXRlKEJhc2VBdWRpb0NvbnRleHQmLCBTdHJpbmcmJiBuYW1lLCBBdWRpb1dv
cmtsZXROb2RlT3B0aW9ucyYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvV29y
a2xldE5vZGU+PiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEJhc2VBdWRpb0NvbnRleHQm
LCBTdHJpbmcmJiBuYW1lLCBBdWRpb1dvcmtsZXROb2RlT3B0aW9ucyYmKTsKICAgICB+QXVkaW9X
b3JrbGV0Tm9kZSgpOwogCiAgICAgQXVkaW9QYXJhbU1hcCYgcGFyYW1ldGVycygpIHsgcmV0dXJu
IG1fcGFyYW1ldGVycy5nZXQoKTsgfQogICAgIE1lc3NhZ2VQb3J0JiBwb3J0KCkgeyByZXR1cm4g
bV9wb3J0LmdldCgpOyB9CiAKKyAgICB2b2lkIHNldFByb2Nlc3NvcihSZWZQdHI8QXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yPiYmKTsKKwogcHJpdmF0ZToKLSAgICBBdWRpb1dvcmtsZXROb2RlKEJhc2VB
dWRpb0NvbnRleHQmLCBTdHJpbmcmJiBuYW1lLCBBdWRpb1dvcmtsZXROb2RlT3B0aW9ucyYmLCBS
ZWY8TWVzc2FnZVBvcnQ+JiYpOworICAgIEF1ZGlvV29ya2xldE5vZGUoQmFzZUF1ZGlvQ29udGV4
dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMmJiwgUmVmPE1l
c3NhZ2VQb3J0PiYmKTsKIAogICAgIC8vIEF1ZGlvTm9kZS4KICAgICB2b2lkIHByb2Nlc3Moc2l6
ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CkBAIC02MCw2ICs2NCw4IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1fbmFtZTsKICAgICBSZWY8QXVkaW9QYXJhbU1hcD4gbV9wYXJhbWV0ZXJzOwog
ICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0OworICAgIExvY2sgbV9wcm9jZXNzb3JMb2NrOwor
ICAgIFJlZlB0cjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+IG1fcHJvY2Vzc29yOyAvLyBTaG91bGQg
b25seSBiZSB1c2VkIG9uIHRoZSByZW5kZXJpbmcgdGhyZWFkLgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXROb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0Tm9kZS5pZGwKaW5kZXggNTYyNzE0ODY2M2YwNDIxOGIxZTU1MDUxNzViMDQ5NWE1
NDY5MTIwNi4uNzExNWFmY2UwMzljNmU1ZTI2Nzg3YzEzZGYxY2YwN2U4ZDZmZjBmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUu
aWRsCkBAIC0zMyw3ICszMyw3IEBACiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiAgICAgU2Vj
dXJlQ29udGV4dAogXSBpbnRlcmZhY2UgQXVkaW9Xb3JrbGV0Tm9kZSA6IEF1ZGlvTm9kZSB7Ci0g
ICAgY29uc3RydWN0b3IgKEJhc2VBdWRpb0NvbnRleHQgY29udGV4dCwgRE9NU3RyaW5nIG5hbWUs
IG9wdGlvbmFsIEF1ZGlvV29ya2xldE5vZGVPcHRpb25zIG9wdGlvbnMpOworICAgIFtDYWxsV2l0
aD1HbG9iYWxPYmplY3RdIGNvbnN0cnVjdG9yIChCYXNlQXVkaW9Db250ZXh0IGNvbnRleHQsIERP
TVN0cmluZyBuYW1lLCBvcHRpb25hbCBBdWRpb1dvcmtsZXROb2RlT3B0aW9ucyBvcHRpb25zKTsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbU1hcCBwYXJhbWV0ZXJzOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OwogICAgIGF0dHJpYnV0ZSBFdmVudEhh
bmRsZXIgb25wcm9jZXNzb3JlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5pZGwKaW5kZXggYTllMTli
Njk1ZTA2ZjIzMTM4OGU3MzViMmI2MDUyOTc5ZjExZjkwNS4uMjljMThjM2E0MGJhYjNkNWUyZDEz
MjllOTU1MjFmOWJmOTY5ZTY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5pZGwKQEAgLTI5LDYgKzI5
LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgRW5hYmxlZEJ5U2V0dGlu
Zz1BdWRpb1dvcmtsZXQsCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QKIF0gZGljdGlvbmFyeSBB
dWRpb1dvcmtsZXROb2RlT3B0aW9ucyA6IEF1ZGlvTm9kZU9wdGlvbnMgewogICAgIHVuc2lnbmVk
IGxvbmcgbnVtYmVyT2ZJbnB1dHMgPSAxOwogICAgIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRw
dXRzID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0UHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcAppbmRleCBjNDc2YjIxZTZlNjhmYWNiNjhhY2VkOGUx
Y2YyMzdiZjBkMWJmMjgyLi40NWE5NzhlODk3ODJjMTM4Zjk1MjNlMmE4OWY4NGE3NzFlOGRmZDVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRQcm9jZXNzb3IuY3BwCkBAIC0zMSwxMCArMzEsMjggQEAKICNpZiBFTkFCTEUoV0VC
X0FVRElPKQogI2luY2x1ZGUgIkF1ZGlvV29ya2xldFByb2Nlc3Nvci5oIgogCisjaW5jbHVkZSAi
QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJBdWRpb1dvcmtsZXRQcm9jZXNz
b3JDb25zdHJ1Y3Rpb25EYXRhLmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1BdWRpb1dvcmtsZXRQcm9jZXNzb3I6OkF1ZGlvV29ya2xldFByb2Nl
c3NvcigpCitFeGNlcHRpb25PcjxSZWY8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPj4gQXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3sK
KyAgICBhdXRvIGNvbnN0cnVjdGlvbkRhdGEgPSBkb3duY2FzdDxBdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZT4oY29udGV4dCkudGFrZVBlbmRpbmdQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhKCk7Cisg
ICAgaWYgKCFjb25zdHJ1Y3Rpb25EYXRhKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAiTm8gcGVuZGluZyBjb25zdHJ1Y3Rpb24gZGF0YSBmb3IgdGhpcyB3b3JrbGV0IHBy
b2Nlc3NvciJfcyB9OworCisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yKCpjb25zdHJ1Y3Rpb25EYXRhKSk7Cit9CisKK0F1ZGlvV29ya2xldFByb2Nlc3Nvcjo6
fkF1ZGlvV29ya2xldFByb2Nlc3NvcigpID0gZGVmYXVsdDsKKworQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3IoY29uc3QgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29u
c3RydWN0aW9uRGF0YSYgY29uc3RydWN0aW9uRGF0YSkKKyAgICA6IG1fbmFtZShjb25zdHJ1Y3Rp
b25EYXRhLm5hbWUoKSkKKyAgICAsIG1fcG9ydChjb25zdHJ1Y3Rpb25EYXRhLnBvcnQoKSkKIHsK
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yLmgKaW5kZXggNzNkNjI4ZmNmZDNiOGI5MTc5MGRjZmY0ZjRhOTZmZGU2OTdj
NGY2Ny4uNWZkM2E5ZWRiMzA0MTZhMTFiNDQ1YWI1NjM0MjNiZDM3MmM5MjQ2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nl
c3Nvci5oCkBAIC0yOSwyNCArMjksMzAgQEAKICNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFdF
Ql9BVURJTykKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YTsKIGNsYXNz
IE1lc3NhZ2VQb3J0OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgQXVk
aW9Xb3JrbGV0UHJvY2Vzc29yIDogcHVibGljIFJlZkNvdW50ZWQ8QXVkaW9Xb3JrbGV0UHJvY2Vz
c29yPiB7CitjbGFzcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IpOwotICAgIH0KKyAgICBzdGF0aWMg
RXhjZXB0aW9uT3I8UmVmPEF1ZGlvV29ya2xldFByb2Nlc3Nvcj4+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jik7CisgICAgfkF1ZGlvV29ya2xldFByb2Nlc3NvcigpOwogCi0gICAgTWVz
c2FnZVBvcnQqIHBvcnQoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgY29uc3QgU3RyaW5nJiBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSB7
IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBBdWRpb1dvcmtsZXRQcm9j
ZXNzb3IoKTsKKyAgICBleHBsaWNpdCBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoY29uc3QgQXVkaW9X
b3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YSYpOworCisgICAgU3RyaW5nIG1fbmFtZTsK
KyAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0UHJvY2Vzc29yLmlkbAppbmRleCA3YzUxM2Y3MjYzZTBiMjI2NTNhNzMxOWE4NWEyYzgz
MzM1NTU1ZmU0Li5kMjY2MTMxNzIxOTAxZWNiMTczM2Y1YTYxODBkZGZlOWI0NGU1NWIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nl
c3Nvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRQcm9jZXNzb3IuaWRsCkBAIC0zMSw2ICszMSw2IEBACiAgICAgRXhwb3NlZD1BdWRpb1dvcmts
ZXQsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgQXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yIHsKLSAgICBjb25zdHJ1Y3RvcigpOworICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gY29uc3RydWN0b3IoKTsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgTWVzc2FnZVBvcnQgcG9ydDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVj
dGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5MjgxMGNhYzg2MjVhZmI0
ZDA0YmNiNDU0MDUxZjY2YTgwMDFjN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEu
aApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1
ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvV29y
a2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEo
U3RyaW5nJiYgbmFtZSwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCisgICAgICAgIDogbV9uYW1l
KFdURk1vdmUobmFtZSkpCisgICAgICAgICwgbV9wb3J0KFdURk1vdmUocG9ydCkpCisgICAgeyB9
CisKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAg
ICBNZXNzYWdlUG9ydCYgcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydC5nZXQoKTsgfQorCitw
cml2YXRlOgorICAgIFN0cmluZyBtX25hbWU7CisgICAgUmVmPE1lc3NhZ2VQb3J0PiBtX3BvcnQ7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
RElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0VGhyZWFkLmgKaW5kZXggMDU2ZWRmMzhlZDFmMzg5ZTAwYzY0NjkyZjExZmY1MjRiZTVlNzBk
Zi4uMDMwYzYxZjlkNTE4MDIyOTJjYjM0MzgxNGQ5MTBjMmJlYTdiM2ViOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCkBA
IC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiV29ya2xldFBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00Miw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOwogY2xhc3MgQXVkaW9Xb3JrbGV0TWVzc2FnaW5n
UHJveHk7CiAKLWNsYXNzIEF1ZGlvV29ya2xldFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxBdWRpb1dvcmtsZXRUaHJlYWQ+LCBwdWJsaWMgV29ya2VyT3JXb3JrbGV0VGhyZWFk
IHsKK2NsYXNzIEF1ZGlvV29ya2xldFRocmVhZCA6IHB1YmxpYyBXb3JrZXJPcldvcmtsZXRUaHJl
YWQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QXVkaW9Xb3JrbGV0VGhyZWFkPiBjcmVhdGUo
QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkmIG1lc3NhZ2luZ1Byb3h5LCBjb25zdCBXb3JrbGV0
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDg4YTY2NTk5YWIxYmMyNDE1OTI3
ZDdjZTRmNjIzNGE5MjA3MmI3ZS4uZmQ3NDAzODMwNWY2MTk4ZDkxOGUzNjhhNDQ0ZmRkNzgyYWRm
OWFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjQ0NSw2ICsyNDQ1LDcgQEAKIAkJODMyMTUwN0UxRjI3RUExQjAwOTVCMTM2
IC8qIE5hdmlnYXRvckJlYWNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODMyMTUwN0IxRjI3RUExNTAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5o
ICovOyB9OwogCQk4MzI2QkY4RTI0RDM1QzMzMDAxRjhBODUgLyogT3ZlclNhbXBsZVR5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMjZCRjg5MjRE
MzVDMjAwMDFGOEE4NSAvKiBPdmVyU2FtcGxlVHlwZS5oICovOyB9OwogCQk4MzI2QkY4RjI0RDM1
QzM5MDAxRjhBODUgLyogV2F2ZVNoYXBlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMjZCRjhDMjREMzVDMjAwMDFGOEE4NSAvKiBXYXZl
U2hhcGVyT3B0aW9ucy5oICovOyB9OworCQk4MzI3NEZDRjI1MkUyNkI3MDAxRTM1REMgLyogQXVk
aW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyNzRGQ0QyNTJFMjZBODAwMUUzNURDIC8qIEF1
ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEuaCAqLzsgfTsKIAkJODMyQjg0MzQx
OUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQjg0MzMxOUQ4RTU1MTAwQjI2MDU1
IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oICovOyB9OwogCQk4MzNBRTUyOTI0RDM4NkYyMDAw
MTdDNEIgLyogT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMzQUU1MjgyNEQzODZFMTAwMDE3QzRC
IC8qIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudEluaXQuaCAqLzsgfTsKIAkJODMzQjlFMzIx
RjUwOEQ4NTAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNCOUUyRjFGNTA4RDgwMDBF
MEU0MjggLyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCAqLzsgfTsKQEAgLTEwNjEwLDYg
KzEwNjExLDcgQEAKIAkJODMyNkJGOEIyNEQzNUMyMDAwMUY4QTg1IC8qIE92ZXJTYW1wbGVUeXBl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBPdmVyU2FtcGxlVHlwZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMjZCRjhDMjREMzVDMjAwMDFGOEE4NSAvKiBXYXZlU2hhcGVyT3B0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXYXZlU2hhcGVyT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzI2QkY4RDI0RDM1QzIxMDAxRjhBODUgLyogV2F2ZVNoYXBlck9wdGlvbnMuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdhdmVTaGFwZXJPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODMyNzRGQ0QyNTJFMjZBODAwMUUzNURDIC8qIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVj
dGlvbkRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0
aW9uRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzI5QTQxNzFFQzI1QjJC
MDA4RUQ0QkUgLyogRG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5kbGVycy5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gRG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5kbGVycy5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMjlEQ0MyMUM3QTZBRTMwMDczMEIzMyAvKiBIVE1M
SHlwZXJsaW5rRWxlbWVudFV0aWxzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MSHlw
ZXJsaW5rRWxlbWVudFV0aWxzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMy
Qjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlRWxlbWVudEJhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NTc1LDYgKzI4NTc3LDggQEAKIAkJCQk2RkI0N0U2
MTIyNzc0MjVBMDBDN0JDQjAgLyogTGF5b3V0SW50ZWdyYXRpb25MaW5lLmggKi8sCiAJCQkJRTRE
MzNGNDIyNTJDNTBBODAwODM3RDA1IC8qIExheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmNw
cCAqLywKIAkJCQlFNEQzM0YzRjI1MkM0QjgyMDA4MzdEMDUgLyogTGF5b3V0SW50ZWdyYXRpb25M
aW5lSXRlcmF0b3IuaCAqLywKKwkJCQlFNEQzM0Y0MzI1MkM1MEUyMDA4MzdEMDUgLyogTGF5b3V0
SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JMZWdhY3lQYXRoLmggKi8sCisJCQkJRTREMzNGNDUyNTJD
NTBGQjAwODM3RDA1IC8qIExheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5o
ICovLAogCQkJCUU0QUJBQkRFMjM2MDg5M0QwMEZBNDM0NSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxp
bmVMYXlvdXQuY3BwICovLAogCQkJCUU0QUJBQkRCMjM2MDg4RkQwMEZBNDM0NSAvKiBMYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCAqLywKIAkJCQlFNDMxMkFCNTI0QjMyNjU2MDA2NzgzNDkg
LyogTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0aW9uLmNwcCAqLywKQEAgLTI4NTgyLDggKzI4NTg2
LDYgQEAKIAkJCQk2RkNFMUExODIyNjE4QUIzMDA0RjAzNDMgLyogTGF5b3V0SW50ZWdyYXRpb25S
dW4uaCAqLywKIAkJCQlFNEE2NjRDNzI1MjFCNzc5MDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRp
b25SdW5JdGVyYXRvci5jcHAgKi8sCiAJCQkJRTRBNjY0QzYyNTIxQjc3ODAwNzA4MURDIC8qIExh
eW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCAqLywKLQkJCQlFNEQzM0Y0MzI1MkM1MEUyMDA4
MzdEMDUgLyogTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JMZWdhY3lQYXRoLmggKi8sCi0J
CQkJRTREMzNGNDUyNTJDNTBGQjAwODM3RDA1IC8qIExheW91dEludGVncmF0aW9uTGluZUl0ZXJh
dG9yTW9kZXJuUGF0aC5oICovLAogCQkJCUU0QTY2NEM1MjUyMUI3NzgwMDcwODFEQyAvKiBMYXlv
dXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oICovLAogCQkJCUU0QTY2NEM0MjUy
MUI3NzcwMDcwODFEQyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5o
ICovLAogCQkJKTsKQEAgLTMwMDIwLDYgKzMwMDIyLDcgQEAKIAkJCQk4M0JCOEI1QjI1MjY3NzU1
MDBEODlGMEIgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcCAqLywKIAkJCQk4M0JCOEI1RDI1
MjY3NzU1MDBEODlGMEIgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmggKi8sCiAJCQkJODNCQjhC
NUUyNTI2Nzc1NjAwRDg5RjBCIC8qIEF1ZGlvV29ya2xldFByb2Nlc3Nvci5pZGwgKi8sCisJCQkJ
ODMyNzRGQ0QyNTJFMjZBODAwMUUzNURDIC8qIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVj
dGlvbkRhdGEuaCAqLywKIAkJCQk4MzcyNkVGODI1MjY3OUIyMDBDNjExNEUgLyogQXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaCAqLywKIAkJCQk4MzcyNkVGQTI1MjY3OUIzMDBDNjEx
NEUgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaWRsICovLAogCQkJCTgzRkM5
OTRBMjUyNTU3RTgwMDE3NzYxOCAvKiBBdWRpb1dvcmtsZXRUaHJlYWQuY3BwICovLApAQCAtMzA2
MzYsNiArMzA2MzksNyBAQAogCQkJCTgzQjk4NzA5MjUyMjVGNzIwMEE5MzlGMSAvKiBBdWRpb1dv
cmtsZXROb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0I5ODcwQTI1MjI1Rjc2MDBBOTM5RjEg
LyogQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQkI4QjVG
MjUyNjc3NjQwMEQ4OUYwQiAvKiBBdWRpb1dvcmtsZXRQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICov
LAorCQkJCTgzMjc0RkNGMjUyRTI2QjcwMDFFMzVEQyAvKiBBdWRpb1dvcmtsZXRQcm9jZXNzb3JD
b25zdHJ1Y3Rpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzcyNkVGQjI1MjY3OUM1MDBD
NjExNEUgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzRkM5OTRCMjUyNTU3RUEwMDE3NzYxOCAvKiBBdWRpb1dvcmtsZXRUaHJlYWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTdFRTY4NDYxMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTU0Nyw3ICszMTU1MSw2IEBACiAJ
CQkJMzcxRjRGRkMwRDI1RTdGMzAwRUNFMEQ1IC8qIEZvbnRSYW5nZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyQUIwQUY3MUU2QjNDNkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9uQWxnb3JpdGht
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE2QjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udFNl
bGVjdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQlFNEQzM0Y0NjI1MkM1MEZDMDA4MzdEMDUgLyog
TGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNDE5MDQxRjFDQzY0ODZCMDBDMzVGNUQgLyogRm9udFNlbGVjdG9yQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNDhEMkE2QzIxNTYyM0I0MDBDNjc1MkIgLyogRm9udFNoYWRvdy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEE2RTlGQzgxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZvbnRUYWdn
ZWRTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjkyOCw2ICszMjkzMSw5IEBACiAJCQkJ
RTQwM0I3QTIyNTFCMTE5MzAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uQ292ZXJhZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0NTFDNjM0MjM5NDA1OEYwMDk5MzE5MCAvKiBMYXlvdXRJbnRl
Z3JhdGlvbklubGluZUNvbnRlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGQjQ3RTYzMjI3NzQy
NUEwMEM3QkNCMCAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxpbmUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUU0RDMzRjQxMjUyQzRCODMwMDgzN0QwNSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTREMzNGNDQyNTJDNTBFMjAwODM3RDA1IC8qIExheW91
dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTGVnYWN5UGF0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTREMzNGNDYyNTJDNTBGQzAwODM3RDA1IC8qIExheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9y
TW9kZXJuUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBQkFCREQyMzYwODhGRTAwRkE0MzQ1
IC8qIExheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQw
M0I3QTMyNTFCMTFDMTAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkZDRTFBMUEyMjYxOEFCRDAwNEYwMzQzIC8qIExheW91dEludGVn
cmF0aW9uUnVuLmggaW4gSGVhZGVycyAqLywKQEAgLTMzMDM5LDcgKzMzMDQ1LDYgQEAKIAkJCQk0
OUQ1REMyQzBGNDIzQTczMDA4RjIwRkQgLyogTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUM3MEVGODZENDcwMDlEMENBRiAvKiBNYXRyaXhUcmFu
c2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQkM4REFEMUFBQTMwMjIwMEUx
QzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
RTREMzNGNDEyNTJDNEI4MzAwODM3RDA1IC8qIExheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFCQ0M2MTExMjRERkNCMDBCRTcwREQgLyogTWVkaWFD
YW5TdGFydExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRENDOUJDRjIyMzg3RTlBMDBG
RkI1MUMgLyogTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCUNEQ0M5QkQxMjIzODdFQUEwMEZGQjUxQyAvKiBNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5n
SW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDUyMiw3ICszNDUyNyw2IEBACiAJCQkJMEYxQTBD
MzgyMjlBNDgxODAwRDM3QURCIC8qIFZlbG9jaXR5RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
REY0RTM4RTAyNTI3OTU5NTAwMkE3NDgxIC8qIFZlcnNpb25DaGVja3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQTI1NzE1MTI5M0MwMTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUu
aCBpbiBIZWFkZXJzICovLAotCQkJCUU0RDMzRjQ0MjUyQzUwRTIwMDgzN0QwNSAvKiBMYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVJdGVyYXRvckxlZ2FjeVBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTUy
QjBENEMwMUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJM0ZCQzRBRjQxODk4ODE1NjAwNDZFRTM4IC8qIFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkIwRDRDMjFDNTdG
RjkxMDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAppbmRleCA0ZTI2ZDdmOTUxMjVmMGNlNDU2NjExM2VlMjgzOTQxNTA3Y2I1OWE0Li5hZTA5N2Vl
YjhjMDBhODlmYjc5NzRkMjE2MDJiZWQ3YWIyZWNmNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAj
aW5jbHVkZSAiU3RydWN0dXJlZENsb25lLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2xldEds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29kZUJsb2NrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNJbnRlcm5hbFByb21pc2UuaD4KQEAgLTM0NSw2ICszNDYsOSBAQCBKU0RPTUdsb2Jh
bE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBET01XcmFwcAogICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCiAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuc2NyaXB0
KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpOwogCisgICAgaWYgKGlzPFdvcmtsZXRHbG9i
YWxTY29wZT4oY29udGV4dCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFs
U2NvcGU+KGNvbnRleHQpLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCk7CisK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZVBvcnQuY3BwCmluZGV4IDhiZDMzOTRlYmYzMjkyZTk2ZGVlNjA0ODY4YjVk
ODZjNDc3OTU5ZGMuLjlkZjhmY2QyOWRkYzNmOThmMTAyNTk1YzBjM2VmYTQ0M2U2ODVhZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBz
dGF0ZSwgSlNDOjpKU1ZhCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBNZXNzYWdlUG9ydDo6
ZGlzZW50YW5nbGUoKQorVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBNZXNzYWdlUG9ydDo6ZGlzZW50
YW5nbGUoKQogewogICAgIEFTU0VSVChtX2VudGFuZ2xlZCk7CiAgICAgbV9lbnRhbmdsZWQgPSBm
YWxzZTsKQEAgLTE4MCw2ICsxODAsOCBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZSgp
CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT53aWxsRGVzdHJveURlc3RydWN0aW9uT2Jz
ZXJ2ZXIoKnRoaXMpOwogCiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbnVsbHB0cjsK
KworICAgIHJldHVybiB7IGlkZW50aWZpZXIoKSwgcmVtb3RlSWRlbnRpZmllcigpIH07CiB9CiAK
IHZvaWQgTWVzc2FnZVBvcnQ6OnJlZ2lzdGVyTG9jYWxBY3Rpdml0eSgpCkBAIC0zNzgsMTAgKzM4
MCw4IEBAIEV4Y2VwdGlvbk9yPFRyYW5zZmVycmVkTWVzc2FnZVBvcnRBcnJheT4gTWVzc2FnZVBv
cnQ6OmRpc2VudGFuZ2xlUG9ydHMoVmVjdG9yPFJlCiAgICAgLy8gUGFzc2VkLWluIHBvcnRzIHBh
c3NlZCB2YWxpZGl0eSBjaGVja3MsIHNvIHdlIGNhbiBkaXNlbnRhbmdsZSB0aGVtLgogICAgIFRy
YW5zZmVycmVkTWVzc2FnZVBvcnRBcnJheSBwb3J0QXJyYXk7CiAgICAgcG9ydEFycmF5LnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkocG9ydHMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIHBvcnQgOiBw
b3J0cykgewotICAgICAgICBwb3J0QXJyYXkudW5jaGVja2VkQXBwZW5kKHsgcG9ydC0+aWRlbnRp
ZmllcigpLCBwb3J0LT5yZW1vdGVJZGVudGlmaWVyKCkgfSk7Ci0gICAgICAgIHBvcnQtPmRpc2Vu
dGFuZ2xlKCk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcG9ydCA6IHBvcnRzKQorICAgICAgICBw
b3J0QXJyYXkudW5jaGVja2VkQXBwZW5kKHBvcnQtPmRpc2VudGFuZ2xlKCkpOwogCiAgICAgcmV0
dXJuIHBvcnRBcnJheTsKIH0KQEAgLTM5NSwxNCArMzk1LDE4IEBAIFZlY3RvcjxSZWZQdHI8TWVz
c2FnZVBvcnQ+PiBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjCiAKICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7CiAgICAgcG9y
dHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0cmFuc2ZlcnJlZFBvcnRzLnNpemUoKSk7Ci0gICAg
Zm9yIChhdXRvJiB0cmFuc2ZlcnJlZFBvcnQgOiB0cmFuc2ZlcnJlZFBvcnRzKSB7Ci0gICAgICAg
IGF1dG8gcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUoY29udGV4dCwgdHJhbnNmZXJyZWRQb3J0
LmZpcnN0LCB0cmFuc2ZlcnJlZFBvcnQuc2Vjb25kKTsKLSAgICAgICAgcG9ydC0+ZW50YW5nbGUo
KTsKLSAgICAgICAgcG9ydHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUocG9ydCkpOwotICAgIH0K
KyAgICBmb3IgKGF1dG8mIHRyYW5zZmVycmVkUG9ydCA6IHRyYW5zZmVycmVkUG9ydHMpCisgICAg
ICAgIHBvcnRzLnVuY2hlY2tlZEFwcGVuZChNZXNzYWdlUG9ydDo6ZW50YW5nbGUoY29udGV4dCwg
V1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpKSk7CiAgICAgcmV0dXJuIHBvcnRzOwogfQogCitSZWY8
TWVzc2FnZVBvcnQ+IE1lc3NhZ2VQb3J0OjplbnRhbmdsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0KQorewor
ICAgIGF1dG8gcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUoY29udGV4dCwgdHJhbnNmZXJyZWRQ
b3J0LmZpcnN0LCB0cmFuc2ZlcnJlZFBvcnQuc2Vjb25kKTsKKyAgICBwb3J0LT5lbnRhbmdsZSgp
OworICAgIHJldHVybiBwb3J0OworfQorCiBib29sIE1lc3NhZ2VQb3J0OjphZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlz
dGVuZXIsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuaAppbmRleCBhYWNhNDg5NWRhMWJmNmI4ZTJiMDcwZjQ1MGViMjAyOTY3N2RhMGVk
Li5jNmJmOGQxZTNlY2VjNDFlY2YwYWM2NjYwODNjYjdiNjFiZDhjMmE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnQuaApAQCAtOTIsNiArOTIsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpc3Bh
dGNoRXZlbnQoRXZlbnQmKSBmaW5hbDsKIAorICAgIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgZGlz
ZW50YW5nbGUoKTsKKyAgICBzdGF0aWMgUmVmPE1lc3NhZ2VQb3J0PiBlbnRhbmdsZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmKTsKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBNZXNzYWdlUG9ydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVy
JiByZW1vdGUpOwogCkBAIC0xMDQsOCArMTA3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3Ao
KSBmaW5hbCB7IGNsb3NlKCk7IH0KICAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZGlzZW50YW5nbGUoKTsKLQogICAgIHZvaWQgcmVn
aXN0ZXJMb2NhbEFjdGl2aXR5KCk7CiAKICAgICAvLyBBIHBvcnQgc3RhcnRzIG91dCBpdHMgbGlm
ZSBlbnRhbmdsZWQsIGFuZCByZW1haW5zIGVudGFuZ2xlZCB1bnRpbCBpdCBpcyBjbG9zZWQgb3Ig
aXMgY2xvbmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwCmluZGV4IDc2MmQ1MzgxZjZkNDBiNTRhMDA1M2QyM2U3MWY1MTM5ZjdlNTJhYmIuLjU1MmNm
OGQ4YmUwNjU4ZjVjNDk2YTIzYjZlMWQzODBjYjIyMWQ4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKKyNp
bmNsdWRlICJBdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIkF1ZGlvV29ya2xl
dFRocmVhZC5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkNvbW1vblZN
LmgiCiAjaW5jbHVkZSAiRE9NVGltZXIuaCIKQEAgLTIwNSw3ICsyMDcsMTEgQEAgdm9pZCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpkaXNwYXRjaE1lc3NhZ2VQb3J0RXZlbnRzKCkKIHZvaWQgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6Y3JlYXRlZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNz
YWdlUG9ydCkKIHsKICAgICBBU1NFUlQoKGlzPERvY3VtZW50PigqdGhpcykgJiYgaXNNYWluVGhy
ZWFkKCkpCi0gICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmIGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKSk7CisgICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMp
ICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkKCkg
PT0gJlRocmVhZDo6Y3VycmVudCgpKQorI2lmIEVOQUJMRShXRUJfQVVESU8pCisgICAgICAgIHx8
IChpczxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpICYmIGRvd25jYXN0PEF1ZGlvV29y
a2xldEdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6Y3Vy
cmVudCgpKQorI2VuZGlmCisgICAgICAgICk7CiAKICAgICBtX21lc3NhZ2VQb3J0cy5hZGQoJm1l
c3NhZ2VQb3J0KTsKIH0KQEAgLTIxMyw4ICsyMTksMTEgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpjcmVhdGVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmIG1lc3NhZ2VQb3J0KQogdm9p
ZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9y
dCYgbWVzc2FnZVBvcnQpCiB7CiAgICAgQVNTRVJUKChpczxEb2N1bWVudD4oKnRoaXMpICYmIGlz
TWFpblRocmVhZCgpKQotICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSAm
JiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZCgpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSkpOwotCisgICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29w
ZT4oKnRoaXMpICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCku
dGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKQorI2lmIEVOQUJMRShXRUJfQVVESU8pCisg
ICAgICAgIHx8IChpczxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpICYmIGRvd25jYXN0
PEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkKCkgPT0gJlRo
cmVhZDo6Y3VycmVudCgpKQorI2VuZGlmCisgICAgICAgICk7CiAgICAgbV9tZXNzYWdlUG9ydHMu
cmVtb3ZlKCZtZXNzYWdlUG9ydCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKaW5k
ZXggMTJhYTlmMmNmYmYxMmQzZTA4OWE1YmExYjA4NzY2NDhjMWYxNjU1MC4uZmM1MTNlZTFjODRi
N2JiOGU0OTZhM2E3MGE0MTY0ODA2MDAzYTc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNj
b3BlLmgiCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTksNiArNjAsOSBAQCBNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlciYgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmZyb21D
b250ZXh0KFNjcmlwdEV4ZWN1dAogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpCiAgICAg
ICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkubWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIoKTsKIAorICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpKQor
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS5tZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcigpOworCiAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0KS5tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzLmgKaW5kZXggYTM5MDc1NzU5ZTk5NjRhNWUzOGExZThjODNjNTczNWQyYWQ1
MDFmZS4uZWExOGY5M2Q2NjY4NDY4MDNhZjMzMzE3ZmI5OTMxZmQ3ZWZkMGU2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMuaApAQCAtMzMsNyArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFdo
ZW4gYSBtZXNzYWdlIHBvcnQgaXMgdHJhbnNmZXJyZWQsIGl0IGlzIHJlcHJlc2VudGVkIGJ5IGEg
cGFpciBvZiBpZGVudGlmaWVycy4KIC8vIFRoZSBmaXJzdCBpZGVudGlmaWVyIGlzIHRoZSBwb3J0
IGJlaW5nIHRyYW5zZmVycmVkIGFuZCB0aGUgc2Vjb25kIGlzIGl0cyByZW1vdGUgcG9ydC4KLXR5
cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIsIFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj4+IFRyYW5zZmVycmVkTWVzc2FnZVBvcnRBcnJh
eTsKK3VzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXI+OwordXNp
bmcgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydEFycmF5ID0gVmVjdG9yPFRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQ+OwogCiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgewogICAgIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvV29ya2VyTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuY3BwCmluZGV4IGYxZjA5OWM2NDBhYjZhNDRlODg4NDIwNzVjMTM0NTBiNDZiY2Jj
MzguLjcxZDNlMTg2Mjg2NDFhYWFiYzhiYmQwNDVlNWU4NjI3NWE1YmE0MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvV29ya2VyTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvV29ya2Vy
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCkBAIC0yNywxNCArMjcsMTQgQEAKICNpbmNs
dWRlICJXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgogCiAjaW5jbHVkZSAiTWVz
c2FnZVBvcnQuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpX
b3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcihXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUp
CitXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6V29ya2VyTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHNjb3BlKQogICAgIDogbV9z
Y29wZShzY29wZSkKIHsKIH0KQEAgLTkxLDEwICs5MSw5IEBAIHZvaWQgV29ya2VyTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXI6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBv
cnRJCiAgICAgdWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyID0gKyttX2xhc3RDYWxsYmFja0lk
ZW50aWZpZXI7CiAgICAgbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRl
bnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbdGhp
cywgd29ya2VyVGhyZWFkID0gbWFrZVJlZihtX3Njb3BlLnRocmVhZCgpKSwgY2FsbGJhY2tJZGVu
dGlmaWVyLCBpZGVudGlmaWVyXSgpIG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Ro
aXMsIHdvcmtlclRocmVhZCA9IG1ha2VSZWZQdHIobV9zY29wZS53b3JrZXJPcldvcmtsZXRUaHJl
YWQoKSksIGNhbGxiYWNrSWRlbnRpZmllciwgaWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKICAgICAg
ICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnRha2VBbGxNZXNzYWdl
c0ZvclBvcnQoaWRlbnRpZmllciwgW3RoaXMsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2Vy
VGhyZWFkKSwgY2FsbGJhY2tJZGVudGlmaWVyXShWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHM+JiYgbWVzc2FnZXMsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgewot
ICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFt0aGlz
LCBjYWxsYmFja0lkZW50aWZpZXIsIG1lc3NhZ2VzID0gV1RGTW92ZShtZXNzYWdlcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mIHNjb3BlKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHNjb3BlLCB0aGlzID09ICZk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLm1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyKCkpOworICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JN
b2RlKFt0aGlzLCBjYWxsYmFja0lkZW50aWZpZXIsIG1lc3NhZ2VzID0gV1RGTW92ZShtZXNzYWdl
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8m
KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrcy50
YWtlKGNhbGxiYWNrSWRlbnRpZmllcikoV1RGTW92ZShtZXNzYWdlcyksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
ICAgICAgICAgICAgICAgICB9KTsKQEAgLTEwOCwxMCArMTA3LDkgQEAgdm9pZCBXb3JrZXJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3Qg
TWVzc2FnZVAKICAgICB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIgPSArK21fbGFzdENhbGxi
YWNrSWRlbnRpZmllcjsKICAgICBtX2FjdGl2aXR5Q2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50
aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IHdvcmtlclRocmVhZCA9IG1ha2VSZWYobV9zY29wZS50aHJlYWQoKSksIGNhbGxiYWNrSWRlbnRp
ZmllciwgcmVtb3RlVGFyZ2V0XSgpIG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Ro
aXMsIHdvcmtlclRocmVhZCA9IG1ha2VSZWZQdHIobV9zY29wZS53b3JrZXJPcldvcmtsZXRUaHJl
YWQoKSksIGNhbGxiYWNrSWRlbnRpZmllciwgcmVtb3RlVGFyZ2V0XSgpIG11dGFibGUgewogICAg
ICAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkuY2hlY2tSZW1vdGVQ
b3J0Rm9yQWN0aXZpdHkocmVtb3RlVGFyZ2V0LCBbdGhpcywgd29ya2VyVGhyZWFkID0gV1RGTW92
ZSh3b3JrZXJUaHJlYWQpLCBjYWxsYmFja0lkZW50aWZpZXJdKGF1dG8gaGFzQWN0aXZpdHkpIHsK
LSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbdGhp
cywgY2FsbGJhY2tJZGVudGlmaWVyLCBoYXNBY3Rpdml0eV0oYXV0byYgc2NvcGUpIG11dGFibGUg
ewotICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsIHRoaXMgPT0gJmRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkubWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKSk7
CisgICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3Ro
aXMsIGNhbGxiYWNrSWRlbnRpZmllciwgaGFzQWN0aXZpdHldKGF1dG8mKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBtX2FjdGl2aXR5Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJZGVudGlmaWVy
KShoYXNBY3Rpdml0eSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9k
ZSgpKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2Fn
ZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKaW5k
ZXggM2UzZTg2YTA4YWU1Y2M0NGE4MTE0NzQzYTcyMzMzNDRhMGI3ZTdhYy4uYWYxMjA0YzRkNzRl
NmZlYTAzM2RkY2U4NDVkYmI4MjBlMTFlN2RhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvV29ya2VyTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuaApAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZTsKIAogY2xhc3MgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgZmluYWwgOiBwdWJs
aWMgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyKFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgZXhwbGljaXQgV29ya2VyTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmKTsKICAgICB+V29ya2Vy
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKTsKIAogcHJpdmF0ZToKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpIGZpbmFsOwogICAgIHZv
aWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVy
JiByZW1vdGVUYXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNh
bGxiYWNrKSBmaW5hbDsKIAotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3Njb3BlOworICAgIFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3Njb3BlOwogCiAgICAgdWludDY0X3QgbV9sYXN0
Q2FsbGJhY2tJZGVudGlmaWVyIHsgMCB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlv
bjx2b2lkKCk+JiYpPj4gbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAppbmRleCAyMjBkZmM0ZWNkZTM0
YWNiZDQ3MTVmNWU4Y2YxNTBiMDg2ODRhOTI5Li4zNzgwOTYxYzc5NDk4NTdhMWUyMDVmOGMzMTI5
NjJjMDcwYmVhZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9y
V29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0VGhyZWFkLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKwogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBU
aHJlYWQ7CiB9CkBAIC0zNCw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdv
cmtlckxvYWRlclByb3h5OwogY2xhc3MgV29ya2VyUnVuTG9vcDsKIAotY2xhc3MgV29ya2VyT3JX
b3JrbGV0VGhyZWFkIHsKK2NsYXNzIFdvcmtlck9yV29ya2xldFRocmVhZCA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxXb3JrZXJPcldvcmtsZXRUaHJlYWQ+IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5Xb3JrZXJPcldvcmtsZXRUaHJlYWQoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IDYyNDRiM2NjMDA4MWNiNjA1YTE3ZjZkNDlhZTI4
NDYyZTc2ODQxNTEuLjEyMTRiOTE5ZGEzNGQzMmYyZmNhYzlhMjk4MTJmNmZkNmE4N2ExMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtNzYsNyArNzYsNyBAQCBwdWJs
aWM6CiAgICAgV29ya2VyUGFyYW1ldGVycyBpc29sYXRlZENvcHkoKSBjb25zdDsKIH07CiAKLWNs
YXNzIFdvcmtlclRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrZXJUaHJl
YWQ+LCBwdWJsaWMgV29ya2VyT3JXb3JrbGV0VGhyZWFkIHsKK2NsYXNzIFdvcmtlclRocmVhZCA6
IHB1YmxpYyBXb3JrZXJPcldvcmtsZXRUaHJlYWQgewogcHVibGljOgogICAgIHZpcnR1YWwgfldv
cmtlclRocmVhZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAppbmRleCA1NjM4MDBkYTBiZmM5MmYzOWM0OTkzYmM1NDVkNjM0YmNjYjg4MzE1
Li4zYWY5OTNmODY5ZWE4YmVlM2U1NjFhMTU5NDdhN2Y4NWVlMzNmMzU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRMb29wLmgiCisjaW5jbHVkZSAiV29ya2VyTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIK
ICNpbmNsdWRlICJXb3JrbGV0UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0V4Y2VwdGlvbi5oPgpAQCAtMjI3LDEwICsyMjgsMTQgQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2Nv
cGU6Om5vdGlmeUZpbmlzaGVkKCkKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
cmVhbGx5IGJlIHJ1biBhcyBhIG1vZHVsZSBzY3JpcHQgYnV0IHdlIGRvbid0IHN1cHBvcnQgdGhp
cyBpbiB3b3JrZXJzIHlldC4KLSAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9u
OwotICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKG1fc2NyaXB0TG9hZGVy
LT5zY3JpcHQoKSwgVVJMKG1fc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVSTCgpKSksIGV4Y2VwdGlv
bik7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgbV9zY3JpcHQtPnNldEV4Y2VwdGlvbihl
eGNlcHRpb24pOworICAgIFVSTCBtb2R1bGVVUkwobV9zY3JpcHRMb2FkZXItPnJlc3BvbnNlVVJM
KCkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ldmFsdWF0ZWRNb2R1bGVzLmFkZChtb2R1bGVV
UkwpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBOYWtlZFB0cjxK
U0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOworICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoU2Ny
aXB0U291cmNlQ29kZShtX3NjcmlwdExvYWRlci0+c2NyaXB0KCksIFdURk1vdmUobW9kdWxlVVJM
KSksIGV4Y2VwdGlvbik7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAgICBtX3Nj
cmlwdC0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7CisgICAgfQogCiAgICAgZGlkQ29tcGxldGVT
Y3JpcHRGZXRjaEpvYihXVEZNb3ZlKGNvbXBsZXRlZEpvYiksIHsgfSk7CiB9CkBAIC0yNDQsNCAr
MjQ5LDExIEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaWRDb21wbGV0ZVNjcmlwdEZldGNo
Sm9iKFNjcmlwdEZldGNoSm9iJiYgam9iLCBPcHRpb25hCiAgICAgcHJvY2Vzc05leHRTY3JpcHRG
ZXRjaEpvYklmTmVlZGVkKCk7CiB9CiAKK01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyJiBXb3Jr
bGV0R2xvYmFsU2NvcGU6Om1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCkKK3sKKyAgICBpZiAo
IW1fbWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIpCisgICAgICAgIG1fbWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIgPSBtYWtlVW5pcXVlPFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
PigqdGhpcyk7CisgICAgcmV0dXJuICptX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRHbG9iYWxTY29wZS5oCmluZGV4IDE0OGJiYjUzM2M1ZDJkNmY3ZjA4OWJkOTNkN2MyMDYxYWU3
Yzg5NTUuLjA4MGQyMDFmMDM0NGIwYjdjMmQ5ZWY3MzljZGE1ZjJkNTZmYTcyOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC00OCw3ICs0OCw5
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV2ZW50TG9vcFRhc2tHcm91cDsKK2Ns
YXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOwogY2xhc3MgV29ya2VyRXZlbnRMb29wOwor
Y2xhc3MgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI7CiBjbGFzcyBXb3JrZXJTY3Jp
cHRMb2FkZXI7CiAKIHN0cnVjdCBXb3JrbGV0UGFyYW1ldGVyczsKQEAgLTcxLDYgKzczLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXImIG1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCk7CisKICAgICBFdmVudExvb3BUYXNr
R3JvdXAmIGV2ZW50TG9vcCgpIGZpbmFsOwogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3VybDsgfQpAQCAtMTc2LDggKzE4MCwxMSBAQCBwcml2YXRlOgogICAg
IEpTQzo6UnVudGltZUZsYWdzIG1fanNSdW50aW1lRmxhZ3M7CiAgICAgT3B0aW9uYWw8U2NyaXB0
U291cmNlQ29kZT4gbV9jb2RlOwogCisgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyPiBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOworCiAgICAg
UmVmUHRyPFdvcmtlclNjcmlwdExvYWRlcj4gbV9zY3JpcHRMb2FkZXI7CiAgICAgRGVxdWU8U2Ny
aXB0RmV0Y2hKb2I+IG1fc2NyaXB0RmV0Y2hKb2JzOworICAgIEhhc2hTZXQ8VVJMPiBtX2V2YWx1
YXRlZE1vZHVsZXM7CiAKICAgICBib29sIG1faXNDbG9zaW5nIHsgZmFsc2UgfTsKIH07CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZWYzZDlkYzkxMTY0NGI0MTMwNTdlNDQ3YTZkOTYwYmVjMjIyODk5MC4uYjEzOTVkYTc5ZmNl
YTgxYTI1ZWRjOGQwODFkMTRhYmUyODI2ZDEwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTEwLTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ29uc3Ry
dWN0aW5nIGEgQXVkaW9Xb3JrbGV0Tm9kZSBzaG91bGQgY29uc3RydWN0IGFuIEF1ZGlvV29ya2xl
dFByb2Nlc3NvciBvbiB0aGUgV29ya2xldCB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzQ0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuc2tpcCBhIGZldyB0ZXN0cyB0aGF0IGFyZSBubyBs
b25nZXIgdGltaW5nIG91dC4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAt
MTAtMDcgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWEg
aW4gR1BVIFByb2Nlc3NdIFVuc2tpcCBzb21lIGxheW91dCB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKaW5kZXggYjYyZWYwMDdjZTRkMWU5MmVjNmUxMDhkYWFjNzk4M2Q2ZTg1ZDQ0
ZS4uYmYxYTJjYzUyOTAxZDM0YWE0NjUzZDY3MzY1MzgzODVkZTIyMDg3YiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMTAtMDcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBDb25zdHJ1Y3RpbmcgYSBBdWRpb1dv
cmtsZXROb2RlIHNob3VsZCBjb25zdHJ1Y3QgYW4gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIG9uIHRo
ZSBXb3JrbGV0IHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE3NDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmViYXNlbGluZSBXUFQgdGVzdHMgbm93IHRoYXQgd2UgYXJlIHBhc3NpbmcgbW9y
ZSBjaGVja3MuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1
ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0LWludGVyZmFjZS9wcm9jZXNzaW5nLWFmdGVyLXJlc3Vt
ZS5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1
ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0
LW1lc3NhZ2Vwb3J0Lmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9h
dWRpb3dvcmtsZXRnbG9iYWxzY29wZS10aW1pbmctaW5mby5odHRwcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1
ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0cHJvY2Vzc29yLW9wdGlvbnMuaHR0cHMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUt
YXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL3Byb2Nlc3Nvci1jb25zdHJ1Y3Rp
b24tcG9ydC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2Uvc3VzcGVu
ZGVkLWNvbnRleHQtbWVzc2FnZXBvcnQuaHR0cHMtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTEwLTA3
ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBjbGlwLXBhdGg6
IHBhdGgoKSBpZ25vcmVzIHBhZ2Ugem9vbWluZyAoQ29tbWFuZC0rKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggMGYyMTIzM2ZhYjYzMzNiY2RjNDY3ZTc0OTllNjc4NjYxMzk3YmY0My4uMzc0M2M3ODBm
MTU3ZDBhZTIyY2Q5NGVlODQ0NGFkMDkyNjM4YzQ4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0z
MjAsMjAgKzMyMCwxNSBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2Vi
YXBwYXBpcy9zY3JpcHRpbmcvZXZlbnQtbG9vcHMvZnVsbHlfYWN0aQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1tZWRpYXN0cmVhbWF1
ZGlvc291cmNlbm9kZS1pbnRlcmZhY2UvbWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUtcm91dGlu
Zy5odG1sIFsgU2tpcCBdCiAKICMgVGhlc2Ugd2ViYXVkaW8gdGVzdHMgYXJlIHRpbWluZyBvdXQg
ZHVlIHRvIGxhY2sgZm9yIHN1cHBvcnQgZm9yIEF1ZGlvV29ya2xldC4KLWltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0
LWludGVyZmFjZS9wcm9jZXNzaW5nLWFmdGVyLXJlc3VtZS5odHRwcy5odG1sIFsgU2tpcCBdCi1p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhl
LWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0LW1lc3NhZ2Vwb3J0Lmh0dHBzLmh0
bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhl
LWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXQtcG9zdG1l
c3NhZ2Utc2hhcmVkYXJyYXlidWZmZXIuaHR0cHMuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmts
ZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldGdsb2JhbHNjb3BlLXRpbWluZy1pbmZvLmh0dHBzLmh0
bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhl
LWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXRub2RlLWF1
dG9tYXRpYy1wdWxsLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFj
ZS9hdWRpb3dvcmtsZXRub2RlLW9uZXJyb3IuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dv
cmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldG5vZGUtb3V0cHV0LWNoYW5uZWwtY291bnQuaHR0
cHMuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRp
by90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldHBy
b2Nlc3Nvci1vcHRpb25zLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVy
ZmFjZS9hdWRpb3dvcmtsZXRwcm9jZXNzb3ItcHJvY2Vzcy1mcm96ZW4tYXJyYXkuaHR0cHMuaHRt
bCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUt
YXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldHByb2Nlc3Nv
ci1wcm9jZXNzLXplcm8tb3V0cHV0cy5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xl
dC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0cHJvY2Vzc29yLXByb21pc2VzLmh0dHBzLmh0bWwgWyBT
a2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlv
LWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9wcm9jZXNzLWdldHRlci5odHRwcy5odG1s
IFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1h
dWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvcHJvY2Vzcy1wYXJhbWV0ZXJzLmh0
dHBzLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVk
aW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9zdXNwZW5kZWQtY29u
dGV4dC1tZXNzYWdlcG9ydC5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWNoYW5uZWxtZXJnZXJub2Rl
LWludGVyZmFjZS9hY3RpdmUtcHJvY2Vzc2luZy5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWNvbnZv
bHZlcm5vZGUtaW50ZXJmYWNlL2FjdGl2ZS1wcm9jZXNzaW5nLmh0dHBzLmh0bWwgWyBTa2lwIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90
aGUtbWVkaWFlbGVtZW50YXVkaW9zb3VyY2Vub2RlLWludGVyZmFjZS9jb3JzLWNoZWNrLmh0dHBz
Lmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0LWlu
dGVyZmFjZS9wcm9jZXNzaW5nLWFmdGVyLXJlc3VtZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRp
by1hcGkvdGhlLWF1ZGlvY29udGV4dC1pbnRlcmZhY2UvcHJvY2Vzc2luZy1hZnRlci1yZXN1bWUu
aHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDZlMDYwNDlhOTM2OTA5NmQxNjdkOWVmZTI0NjkzOTM5
ZDA0Mjk3NjAuLjQ2ZGY4YzZhZjVjOGJlMzk2ZjMwMWY3YzE4OTY4MDA0ZGM4ZTQyNTMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVk
aW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0LWludGVyZmFjZS9wcm9jZXNzaW5nLWFm
dGVyLXJlc3VtZS5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2Nv
bnRleHQtaW50ZXJmYWNlL3Byb2Nlc3NpbmctYWZ0ZXItcmVzdW1lLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBu
dWxsCi0KLVRJTUVPVVQgVGVzdCBjb25zaXN0ZW5jeSBvZiBwcm9jZXNzaW5nIGFmdGVyIHJlc3Vt
ZSgpIFRlc3QgdGltZWQgb3V0CitQQVNTIFRlc3QgY29uc2lzdGVuY3kgb2YgcHJvY2Vzc2luZyBh
ZnRlciByZXN1bWUoKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1p
bnRlcmZhY2UvYXVkaW93b3JrbGV0LW1lc3NhZ2Vwb3J0Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1
ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXQtbWVzc2FnZXBv
cnQuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGJjMTAyYzY2NGU5MjFlYjA1MjYxYTdjYjg3OTI3
ZDY5MDEzNDg5ZDIuLjQ0ZDljMTlhMDYzMTFlMzRkZjVmNDU3ZjY5OGZkOGQ4NjBlYzU1MjEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
YXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmts
ZXQtbWVzc2FnZXBvcnQuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVk
aW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXQtbWVzc2FnZXBvcnQuaHR0cHMtZXhwZWN0
ZWQudHh0CkBAIC0xLDkgKzEsMTMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3Nh
Z2UgPSBudWxsCi0KIFBBU1MgIyBBVURJVCBUQVNLIFJVTk5FUiBTVEFSVEVELgotVElNRU9VVCBF
eGVjdXRpbmcgIlRlc3QgcG9zdE1lc3NhZ2UgZnJvbSBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgdG8g
QXVkaW9Xb3JrbGV0Tm9kZSIgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBFeGVjdXRpbmcgIlRlc3Qg
cG9zdE1lc3NhZ2UgZnJvbSBBdWRpb1dvcmtsZXROb2RlIHRvIEF1ZGlvV29ya2xldFByb2Nlc3Nv
ciIKLU5PVFJVTiBBdWRpdCByZXBvcnQKK1BBU1MgRXhlY3V0aW5nICJUZXN0IHBvc3RNZXNzYWdl
IGZyb20gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHRvIEF1ZGlvV29ya2xldE5vZGUiCitQQVNTIEV4
ZWN1dGluZyAiVGVzdCBwb3N0TWVzc2FnZSBmcm9tIEF1ZGlvV29ya2xldE5vZGUgdG8gQXVkaW9X
b3JrbGV0UHJvY2Vzc29yIgorUEFTUyBBdWRpdCByZXBvcnQKIFBBU1MgPiBbVGVzdCBwb3N0TWVz
c2FnZSBmcm9tIEF1ZGlvV29ya2xldFByb2Nlc3NvciB0byBBdWRpb1dvcmtsZXROb2RlXQorUEFT
UyAgIFRoZSBpbml0aWFsIG1lc3NhZ2UgZnJvbSBQb3J0UHJvY2Vzc29yIGlzIGVxdWFsIHRvIGNy
ZWF0ZWQuCitQQVNTIDwgW1Rlc3QgcG9zdE1lc3NhZ2UgZnJvbSBBdWRpb1dvcmtsZXRQcm9jZXNz
b3IgdG8gQXVkaW9Xb3JrbGV0Tm9kZV0gQWxsIGFzc2VydGlvbnMgcGFzc2VkLiAodG90YWwgMSBh
c3NlcnRpb25zKQorUEFTUyA+IFtUZXN0IHBvc3RNZXNzYWdlIGZyb20gQXVkaW9Xb3JrbGV0Tm9k
ZSB0byBBdWRpb1dvcmtsZXRQcm9jZXNzb3JdCitQQVNTICAgVGhlIHJlc3BvbnNlIGZyb20gUG9y
dFByb2Nlc3NvciBpcyBlcXVhbCB0byBoZWxsby4KK1BBU1MgPCBbVGVzdCBwb3N0TWVzc2FnZSBm
cm9tIEF1ZGlvV29ya2xldE5vZGUgdG8gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yXSBBbGwgYXNzZXJ0
aW9ucyBwYXNzZWQuICh0b3RhbCAxIGFzc2VydGlvbnMpCitQQVNTICMgQVVESVQgVEFTSyBSVU5O
RVIgRklOSVNIRUQ6IDIgdGFza3MgcmFuIHN1Y2Nlc3NmdWxseS4KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVk
aW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldGdsb2JhbHNjb3Bl
LXRpbWluZy1pbmZvLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3Jr
bGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXRnbG9iYWxzY29wZS10aW1pbmctaW5mby5odHRwcy1l
eHBlY3RlZC50eHQKaW5kZXggNWExYWUwOWU5ODhmMTc4YzFiZjMzNjY5YzAzNGQzMTM4ODc2ZTM1
OS4uNTBhZDk5MjRiNGI1YmQ2NTc3MTU2ODRlM2MyYjc0MWZlODMwODFiOSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUt
YXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldGdsb2JhbHNj
b3BlLXRpbWluZy1pbmZvLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1
ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0Z2xvYmFsc2NvcGUtdGltaW5nLWluZm8u
aHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsMTYgQEAKIAotSGFybmVzcyBFcnJvciAoVElN
RU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KIFBBU1MgIyBBVURJVCBUQVNLIFJVTk5FUiBTVEFSVEVE
LgotVElNRU9VVCBFeGVjdXRpbmcgIkNoZWNrIHRoZSB0aW1pbmcgaW5mb3JtYXRpb24gZnJvbSBB
dWRpb1dvcmtsZXRQcm9jZXNzb3IiIFRlc3QgdGltZWQgb3V0Ci1OT1RSVU4gQXVkaXQgcmVwb3J0
CitQQVNTIEV4ZWN1dGluZyAiQ2hlY2sgdGhlIHRpbWluZyBpbmZvcm1hdGlvbiBmcm9tIEF1ZGlv
V29ya2xldFByb2Nlc3NvciIKK1BBU1MgQXVkaXQgcmVwb3J0CiBQQVNTID4gW0NoZWNrIHRoZSB0
aW1pbmcgaW5mb3JtYXRpb24gZnJvbSBBdWRpb1dvcmtsZXRQcm9jZXNzb3JdCitQQVNTICAgY3Vy
cmVudEZyYW1lIGZyb20gdGhlIHByb2Nlc3NvciBhdCAwIGlzIGVxdWFsIHRvIDAuCitQQVNTICAg
Y3VycmVudFRpbWUgZnJvbSB0aGUgcHJvY2Vzc29yIGF0IDAgaXMgZXF1YWwgdG8gMC4KK1BBU1Mg
ICBjdXJyZW50RnJhbWUgZnJvbSB0aGUgcHJvY2Vzc29yIGF0IDEyOCBpcyBlcXVhbCB0byAxMjgu
CitQQVNTICAgY3VycmVudFRpbWUgZnJvbSB0aGUgcHJvY2Vzc29yIGF0IDAuMDAyNjY2NjY2NjY2
NjY2NjY2NiBpcyBlcXVhbCB0byAwLjAwMjY2NjY2NjY2NjY2NjY2NjYuCitQQVNTICAgY3VycmVu
dEZyYW1lIGZyb20gdGhlIHByb2Nlc3NvciBhdCAyNTYgaXMgZXF1YWwgdG8gMjU2LgorUEFTUyAg
IGN1cnJlbnRUaW1lIGZyb20gdGhlIHByb2Nlc3NvciBhdCAwLjAwNTMzMzMzMzMzMzMzMzMzMyBp
cyBlcXVhbCB0byAwLjAwNTMzMzMzMzMzMzMzMzMzMy4KK1BBU1MgICBjdXJyZW50RnJhbWUgZnJv
bSB0aGUgcHJvY2Vzc29yIGF0IDM4NCBpcyBlcXVhbCB0byAzODQuCitQQVNTICAgY3VycmVudFRp
bWUgZnJvbSB0aGUgcHJvY2Vzc29yIGF0IDAuMDA4IGlzIGVxdWFsIHRvIDAuMDA4LgorUEFTUyA8
IFtDaGVjayB0aGUgdGltaW5nIGluZm9ybWF0aW9uIGZyb20gQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
XSBBbGwgYXNzZXJ0aW9ucyBwYXNzZWQuICh0b3RhbCA4IGFzc2VydGlvbnMpCitQQVNTICMgQVVE
SVQgVEFTSyBSVU5ORVIgRklOSVNIRUQ6IDEgdGFza3MgcmFuIHN1Y2Nlc3NmdWxseS4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJh
dWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xl
dHByb2Nlc3Nvci1vcHRpb25zLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVk
aW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXRwcm9jZXNzb3Itb3B0aW9ucy5odHRwcy1l
eHBlY3RlZC50eHQKaW5kZXggNzFiZjYwODA4ZTM2OTAzOTc1YTg1MmU2ZDVmOWVkODZkOTY5ZjI5
Ni4uYzhlN2Q3ZDhiMWNjODBmZWRjM2U4NjgxMGFkM2NhOGIyMGU1MDgwNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUt
YXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldHByb2Nlc3Nv
ci1vcHRpb25zLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29y
a2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0cHJvY2Vzc29yLW9wdGlvbnMuaHR0cHMtZXhwZWN0
ZWQudHh0CkBAIC0xLDkgKzEsMTYgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3Nh
Z2UgPSBudWxsCi0KIFBBU1MgIyBBVURJVCBUQVNLIFJVTk5FUiBTVEFSVEVELgotVElNRU9VVCBF
eGVjdXRpbmcgInZhbGlkLXByb2Nlc3Nvci1kYXRhIiBUZXN0IHRpbWVkIG91dAotTk9UUlVOIEV4
ZWN1dGluZyAiZW1wdHktb3B0aW9uIgotTk9UUlVOIEF1ZGl0IHJlcG9ydAorUEFTUyBFeGVjdXRp
bmcgInZhbGlkLXByb2Nlc3Nvci1kYXRhIgorUEFTUyBFeGVjdXRpbmcgImVtcHR5LW9wdGlvbiIK
K1BBU1MgQXVkaXQgcmVwb3J0CiBQQVNTID4gW3ZhbGlkLXByb2Nlc3Nvci1kYXRhXQorUEFTUyAg
IHxkZXNjcmlwdGlvbnwgZmllbGQgaW4gcHJvY2Vzc29yT3B0aW9ucyBmcm9tIHByb2Nlc3Nvcigi
Zm9vIikgaXMgZXF1YWwgdG8gdGhlIGZpZWxkIGluIG5vZGUgY29uc3RydWN0b3Igb3B0aW9ucyAo
ImZvbyIpLgorUEFTUyAgIHxwYXlsb2FkfCBhcnJheSBpbiBwcm9jZXNzb3JPcHRpb25zIGZyb20g
cHJvY2Vzc29yKFswLDEsMiwzXSkgaXMgaWRlbnRpY2FsIHRvIHRoZSBhcnJheSB0aGUgYXJyYXkg
aW4gbm9kZSBjb25zdHJ1Y3RvciBvcHRpb25zIChbMCwxLDIsM10pLgorUEFTUyA8IFt2YWxpZC1w
cm9jZXNzb3ItZGF0YV0gQWxsIGFzc2VydGlvbnMgcGFzc2VkLiAodG90YWwgMiBhc3NlcnRpb25z
KQorUEFTUyA+IFtlbXB0eS1vcHRpb25dCitQQVNTICAgTnVtYmVyIG9mIHByb3BlcnRpZXMgaW4g
ZGF0YSBmcm9tIHByb2Nlc3NvciBpcyBlcXVhbCB0byAyLgorUEFTUyAgIHxudW1iZXJPZklucHV0
c3wgZmllbGQgaW4gZGF0YSBmcm9tIHByb2Nlc3NvciBpcyBlcXVhbCB0byAxLgorUEFTUyAgIHxu
dW1iZXJPZk91dHB1dHN8IGZpZWxkIGluIGRhdGEgZnJvbSBwcm9jZXNzb3IgaXMgaWRlbnRpY2Fs
IHRvIHRoZSBhcnJheSAxLgorUEFTUyA8IFtlbXB0eS1vcHRpb25dIEFsbCBhc3NlcnRpb25zIHBh
c3NlZC4gKHRvdGFsIDMgYXNzZXJ0aW9ucykKK1BBU1MgIyBBVURJVCBUQVNLIFJVTk5FUiBGSU5J
U0hFRDogMiB0YXNrcyByYW4gc3VjY2Vzc2Z1bGx5LgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkv
dGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvcHJvY2Vzc29yLWNvbnN0cnVjdGlvbi1wb3J0Lmh0
dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9w
cm9jZXNzb3ItY29uc3RydWN0aW9uLXBvcnQuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDYyZTk4
MzgwOWIzOGU2MDZhZGZhODI3YmE4MDc1OGEzZTJjNjE1ZGMuLmY2MGVjOGMyMDQ0NDBmZTBlMGFi
MGE0ODc2NTNkNWQ5MTU1ZGRjMTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3Jr
bGV0LWludGVyZmFjZS9wcm9jZXNzb3ItY29uc3RydWN0aW9uLXBvcnQuaHR0cHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
YXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9wcm9jZXNzb3It
Y29uc3RydWN0aW9uLXBvcnQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsOCBAQAogCiBI
YXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIAotVElNRU9VVCBzdXBlcigp
IGFmdGVyIG5ldyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoKSBUZXN0IHRpbWVkIG91dAotTk9UUlVO
IG5ldyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoKSBhZnRlciBzdXBlcigpCi1OT1RSVU4gbmV3IEF1
ZGlvV29ya2xldFByb2Nlc3NvcigpIGFmdGVyIG5ldyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoKQot
Tk9UUlVOIFNpbmdsZXRvbiBBdWRpb1dvcmtsZXRQcm9jZXNzb3IKK1BBU1Mgc3VwZXIoKSBhZnRl
ciBuZXcgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKCkKK1BBU1MgbmV3IEF1ZGlvV29ya2xldFByb2Nl
c3NvcigpIGFmdGVyIHN1cGVyKCkKK1BBU1MgbmV3IEF1ZGlvV29ya2xldFByb2Nlc3NvcigpIGFm
dGVyIG5ldyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoKQorVElNRU9VVCBTaW5nbGV0b24gQXVkaW9X
b3JrbGV0UHJvY2Vzc29yIFRlc3QgdGltZWQgb3V0CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90
aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9zdXNwZW5kZWQtY29udGV4dC1tZXNzYWdlcG9ydC5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2Uv
c3VzcGVuZGVkLWNvbnRleHQtbWVzc2FnZXBvcnQuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGYy
OTg3MzVmMzVlZWQyYzQyY2NhMzc2ZTM3ZDhhOTQyYmI4YzY4NTIuLmViNWIyMTgwNjg1OWE4NDcx
M2ZhN2UwZDA2NjRhMzVkY2YwNWQ5NzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93
b3JrbGV0LWludGVyZmFjZS9zdXNwZW5kZWQtY29udGV4dC1tZXNzYWdlcG9ydC5odHRwcy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL3N1c3Bl
bmRlZC1jb250ZXh0LW1lc3NhZ2Vwb3J0Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDUg
QEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLVRJTUVPVVQg
cmVhbHRpbWUgc3VzcGVuZGVkIFRlc3QgdGltZWQgb3V0Ci1OT1RSVU4gb2ZmbGluZSBiZWZvcmUg
c3RhcnQKLU5PVFJVTiBvZmZsaW5lIG9uIGNvbXBsZXRlCitQQVNTIHJlYWx0aW1lIHN1c3BlbmRl
ZAorUEFTUyBvZmZsaW5lIGJlZm9yZSBzdGFydAorRkFJTCBvZmZsaW5lIG9uIGNvbXBsZXRlIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkludmFs
aWRTdGF0ZUVycm9yOiBDb250ZXh0IGlzIGNsb3NlZCIKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>