<?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>207634</bug_id>
          
          <creation_ts>2020-02-12 07:52:17 -0800</creation_ts>
          <short_desc>[GStreamer] Internal audio rendering support</short_desc>
          <delta_ts>2020-09-30 07:11:16 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>annulen</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cturner</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jbedard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1618006</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-02-12 07:52:17 -0800</bug_when>
    <thetext>I have a WIP patch ready for discussion and bikeshedding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618010</commentid>
    <comment_count>1</comment_count>
      <attachid>390523</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-02-12 07:54:23 -0800</bug_when>
    <thetext>Created attachment 390523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618011</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-02-12 07:55:04 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618012</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-02-12 08:04:06 -0800</bug_when>
    <thetext>With this patch several things would be possible:

- internal audio mixing in the WebProcess, meaning that the sound server would have a single connection with the WebProcess, thus avoiding UI inconsistencies in the GNOME settings
- audio off-loading to the UIProcess. For this some changes would be needed in WPEBackend-FDO, WIP branch there: https://github.com/Igalia/WPEBackend-fdo/tree/audio and this would allow GstWPE to receive audio and inject it back into the pipeline. WIP branch there: https://gitlab.freedesktop.org/philn/gst-plugins-bad/commits/wpe-audio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618014</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-02-12 08:10:53 -0800</bug_when>
    <thetext>Another idea would be to mix in the WebProcess and off-load to the UIProcess. This isn&apos;t supported but could perhaps be useful for WebKitGTK-based browsers. Showing the app name in the GNOME settings then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618443</commentid>
    <comment_count>5</comment_count>
      <attachid>390523</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-02-13 04:25:38 -0800</bug_when>
    <thetext>Comment on attachment 390523
Patch

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

I know you didn&apos;t mark r? but considering a so big patch I thought it could be a good idea to pre-review this.

&gt; Source/WebCore/platform/graphics/MediaPlayerEnums.h:119
&gt; +WTF::String convertEnumerationToString(MediaPlayerEnums::AudioRenderingPolicy);

Do you need the WTF::?

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:36
&gt; +    const char* environmentVariable = getenv(&quot;WEBKIT_GST_USE_AUDIOMIXER&quot;);

g_getenv?

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:52
&gt; +    m_pipeline = adoptGRef(GST_ELEMENT_CAST(g_object_ref_sink(gst_element_factory_make(&quot;pipeline&quot;, &quot;webkitaudiomixer&quot;))));

I think you can avoid the ref_sink, the ELEMENT_CAST and the adopt and let the the operator= do the ref_sink for you, as you do below for the audiomixer.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:55
&gt; +    GRefPtr&lt;GstClock&gt; clock = gst_system_clock_obtain();

This is transfer full, you need to adopt.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:103
&gt; +    GstElement* src = gst_element_factory_make(&quot;proxysrc&quot;, nullptr);

I think we should ASSERT or RELEASE_ASSERT on src being GST_IS_BIN or we&apos;ll have trouble later.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:111
&gt; +        if (factory &amp;&amp; !strcmp(GST_OBJECT_NAME(factory), &quot;queue&quot;))

g_strcmp0

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:131
&gt; +    return WTFMove(mixerPad);

No need to move here, there is copy elision.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1573
&gt; +    if (!audioSink)
&gt; +        return nullptr;

Isn&apos;t this a disaster? Shouldn&apos;t we GST_ERROR and ASSERT or RELEASE_ASSERT on this?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:3002
&gt; +        GRefPtr&lt;GstClock&gt; clock = gst_system_clock_obtain();

adopt

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:47
&gt; +    gboolean enableInternalMixing;

I think this should be bool

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:50
&gt; +    int m_streamId;

I think you can remove the m_, current trend.

Personal thought, considering these are attributes of a GObject, if we combine this with our coding style I think we should add m_ to all attributes. But obviously not now and not without a discussion.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:83
&gt; +            GST_ERROR_OBJECT(sink, &quot;Failed to create proxysink&quot;);

We can ASSERT_NOT_REACHED as well.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:99
&gt; +            return GST_PAD_PROBE_OK;

I guess the idea is letting the events continue downstream the pipeline, right?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:154
&gt; +            uint32_t id = sink-&gt;priv-&gt;m_streamId;
&gt; +            auto* buffer = gst_sample_get_buffer(sample.get());
&gt; +            auto mappedBuffer = GstMappedBuffer::create(buffer, GST_MAP_READ);
&gt; +            int32_t fd = memfd_create(&quot;audio-buffer&quot;, MFD_CLOEXEC);
&gt; +            ftruncate(fd, mappedBuffer-&gt;size());
&gt; +            write(fd, mappedBuffer-&gt;data(), mappedBuffer-&gt;size());
&gt; +            lseek(fd, 0, SEEK_SET);
&gt; +
&gt; +            wpe_audio_source_packet(wpeAudioSource, id, fd, mappedBuffer-&gt;size(), [](void* data) {
&gt; +                gst_buffer_unref(GST_BUFFER_CAST(data));
&gt; +            }, gst_buffer_ref(buffer));
&gt; +            close(fd);

I don&apos;t manage to understand this piece of code. You map the buffer, create the fd, write to it (copy the data), then call wpe_audio_source_packet by passing the reffed buffer (whose contents should be on the fd and then close the fd and unref the buffer in the callback. Can you please explain? I think a comment in the code would be interesting.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:203
&gt; +static GstObject* getInternalVolumeProxy(WebKitAudioSink* sink)

I think the name is not very appropriate since you are not returning a volume proxy element, am I missing anything?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:274
&gt; +        g_value_set_boolean(value, sink-&gt;priv-&gt;enableInternalMixing);

Now I see where the other gboolean is coming from. I think this is still borderline with the agreement of using gtypes for variables, since this is not a &quot;variable&quot;, more like an object attribute. Anyway, this is a personal preference.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:290
&gt; +                                     // || GST_QUERY_TYPE(query) == GST_QUERY_DURATION

I guess you need to remove this

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:294
&gt; +            // if (gst_pad_query(sink-&gt;priv-&gt;mixerPad.get(), query))
&gt; +            //     return TRUE;

And this

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:311
&gt; +    if (sink-&gt;priv-&gt;enableInternalMixing &amp;&amp; (stateChange == GST_STATE_CHANGE_NULL_TO_READY)) {

You don&apos;t need the inner () enclosing stateChange comparison.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:321
&gt; +    if (!sink-&gt;priv-&gt;enableInternalMixing &amp;&amp; (stateChange == GST_STATE_CHANGE_PLAYING_TO_PAUSED)) {

ditto

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:332
&gt; +    if (sink-&gt;priv-&gt;enableInternalMixing &amp;&amp; (stateChange == GST_STATE_CHANGE_READY_TO_NULL) &amp;&amp; (result &gt; GST_STATE_CHANGE_FAILURE))

ditto and result as well

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:333
&gt; +        mixer.unregisterProducer(WTFMove(sink-&gt;priv-&gt;mixerPad));

It is a good idea that you only move local variables or parameters (mainly &amp;&amp; ones), not attributes from objects cause this pattern behavior can be undefined with respect of the original variable (depending on if there is a move constructor and how it behaves, etc.) and also depends on what the callee is doing with the variable. In this case, as you are not assigning the parameter anywhere, nothing will happen and the attribute will remain as it is. I think what you want to do is probably passing the bare pointer (or a const GRefPtr&amp;) and after the call, assigning the smart pointer to nullptr to release it.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:336
&gt; +    if (!sink-&gt;priv-&gt;enableInternalMixing &amp;&amp; sink-&gt;priv-&gt;sourceStarted &amp;&amp; (stateChange == GST_STATE_CHANGE_PAUSED_TO_PLAYING) &amp;&amp; (result &gt; GST_STATE_CHANGE_FAILURE)) {

re-ditto

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:354
&gt; +        g_param_spec_double(&quot;volume&quot;, &quot;Volume&quot;, &quot;The audio volume, 1.0=100%&quot;, 0.0, 10.0, 1.0,

Unless required in order to force floating point math, do not append .0, .f and .0f to floating point literals.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:811
&gt; +    case PROP_AUDIO_RENDERING_POLICY: {
&gt; +        webView-&gt;priv-&gt;audioRenderingPolicy = static_cast&lt;WebKitAudioRenderingPolicy&gt;(g_value_get_enum(value));
&gt; +        break;
&gt; +    }

You don&apos;t need the { }

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:475
&gt; +    , m_audioRenderingPolicy(AudioRenderingPolicy::HostDefault)

I&apos;m sure Alexander would be extremely happy if we just used InternalMixing as default :)

&gt; Source/cmake/GStreamerChecks.cmake:40
&gt; +            message(FATAL_ERROR &quot;WPEBackend-fdo is required for audio passthrough support&quot;)

Isn&apos;t it that if we just used host default (pulseaudio) we are going to have passthrough? Am I missing anything?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618451</commentid>
    <comment_count>6</comment_count>
      <attachid>390523</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-02-13 05:18:23 -0800</bug_when>
    <thetext>Comment on attachment 390523
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:154
&gt;&gt; +            close(fd);
&gt; 
&gt; I don&apos;t manage to understand this piece of code. You map the buffer, create the fd, write to it (copy the data), then call wpe_audio_source_packet by passing the reffed buffer (whose contents should be on the fd and then close the fd and unref the buffer in the callback. Can you please explain? I think a comment in the code would be interesting.

I wrote this wpe_audio_source_packet() API to not be tied to GStreamer APIs, the last arg is passed as an opaque pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618900</commentid>
    <comment_count>7</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-02-14 00:52:31 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #6)
&gt; Comment on attachment 390523 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=390523&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:154
&gt; &gt;&gt; +            close(fd);
&gt; &gt; 
&gt; &gt; I don&apos;t manage to understand this piece of code. You map the buffer, create the fd, write to it (copy the data), then call wpe_audio_source_packet by passing the reffed buffer (whose contents should be on the fd and then close the fd and unref the buffer in the callback. Can you please explain? I think a comment in the code would be interesting.
&gt; 
&gt; I wrote this wpe_audio_source_packet() API to not be tied to GStreamer APIs,
&gt; the last arg is passed as an opaque pointer.

I guess what I miss is the implementation of that function. Anyway, my question still stands. If you write to the fd and pass the fd to the function (where the fd contains the copied data), why do you need to keep the alive buffer around?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622221</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-02-24 10:23:24 -0800</bug_when>
    <thetext>You&apos;re right, as there is a copy there&apos;s no need to keep the buffer around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653409</commentid>
    <comment_count>9</comment_count>
      <attachid>390523</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-05-17 08:20:01 -0700</bug_when>
    <thetext>Comment on attachment 390523
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:99
&gt;&gt; +            return GST_PAD_PROBE_OK;
&gt; 
&gt; I guess the idea is letting the events continue downstream the pipeline, right?

There&apos;s no downstream, as this is a sink.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:203
&gt;&gt; +static GstObject* getInternalVolumeProxy(WebKitAudioSink* sink)
&gt; 
&gt; I think the name is not very appropriate since you are not returning a volume proxy element, am I missing anything?

The returned object is expected to have volume and mute properties. To me it&apos;s like a black box with those 2 properties.

&gt;&gt; Source/cmake/GStreamerChecks.cmake:40
&gt;&gt; +            message(FATAL_ERROR &quot;WPEBackend-fdo is required for audio passthrough support&quot;)
&gt; 
&gt; Isn&apos;t it that if we just used host default (pulseaudio) we are going to have passthrough? Am I missing anything?

No, passthrough is not a good term explaining what this will do. I&apos;ll rephrase this if this feature ever lands again in Bugzilla.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653413</commentid>
    <comment_count>10</comment_count>
      <attachid>399592</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-05-17 09:31:08 -0700</bug_when>
    <thetext>Created attachment 399592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653551</commentid>
    <comment_count>11</comment_count>
      <attachid>399592</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-05-18 04:06:19 -0700</bug_when>
    <thetext>Comment on attachment 399592
Patch

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        2 values, HostDefault (default) and InternalMixing. A third value might be added for

Given my former opinions you could think I would support host default as default but I really think once we have the oportunity of having this option, the default should be to internal mixing.

&gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:100
&gt; -    GRefPtr&lt;GstElement&gt; audioSink = gst_element_factory_make(&quot;autoaudiosink&quot;, nullptr);
&gt; +    MediaPlayerEnums::AudioRenderingPolicy audioRenderingPolicy = callback.audioRenderingPolicy();
&gt; +    GstElement* audioSink = createAudioSinkForPolicy(audioRenderingPolicy);

Why did you remove the smart pointer? You could still be leaking this on line 118.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:285
&gt; +
&gt; +

Maybe remove these.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:26
&gt; +

Remove this?

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:48
&gt; +    m_pipeline = adoptGRef(GST_ELEMENT_CAST(gst_element_factory_make(&quot;pipeline&quot;, &quot;webkitaudiomixer&quot;)));

You can&apos;t adopt there, make returns floating.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:110
&gt; +        }), nullptr) == GST_ITERATOR_RESYNC)

This line needs proper intentation.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:249
&gt; +        mixer.unregisterProducer(WTFMove(sink-&gt;priv-&gt;mixerPad));

I see what you try to do here but this very call does not have the effect you&apos;re trying to achieve. The unregisterProducer method takes an r-value reference but does nothing with it so the sink-&gt;priv-&gt;mixerPad field is going to be very alive after this call. I think the proper signature for that method would be a const GRefPtr&amp; and then asigning it to null here.

These kind of calls can be undefined behavior as well depending on how you define the r-value operators and constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655839</commentid>
    <comment_count>12</comment_count>
      <attachid>399592</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-05-25 05:50:39 -0700</bug_when>
    <thetext>Comment on attachment 399592
Patch

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

I&apos;m generally confused why we&apos;re adding a separate pipeline and various special cases for clocks. Internal mixing sounded in theory like a really easy thing, these proxies and separate pipelines at least deserve some explanation in the ChangeLog.

&gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:94
&gt; +    switch (context().document()-&gt;page()-&gt;chrome().client().audioRenderingPolicy()) {

page() can be null, potentially the calls as well. I&apos;d break this conditional down and carefully check for nulls.

&gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:68
&gt; +    MediaPlayerEnums::AudioRenderingPolicy m_audioRenderingPolicy;

Initialize to HostDefault?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:7075
&gt; +    switch (document().page()-&gt;chrome().client().audioRenderingPolicy()) {

Refactor as above

&gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:99
&gt; +    MediaPlayerEnums::AudioRenderingPolicy audioRenderingPolicy = callback.audioRenderingPolicy();

let context provide some brevity: auto policy = callback.audioRenderingPolicy()

&gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:107
&gt; +    if (GST_IS_BIN(audioSink)) {

The ChangeLog should describe why you&apos;re doing what you do.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:51
&gt; +    auto clock = adoptGRef(gst_system_clock_obtain());

Why?

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:103
&gt; +    // Workaround to reduce the latency introduced by the queue in the proxysrc element.

Is there an upstream bug for this?

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:152
&gt; +    GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(GST_BIN_CAST(m_pipeline.get()), GST_DEBUG_GRAPH_SHOW_ALL, &quot;audio-mixer-after-producer-unregistration&quot;);

Nit, I&apos;d rename this as addProducer / removeProducer.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.h:29
&gt; +static GstClockTime mixerBaseTime()

Please explain the clock stuff in the ChangeLog, it&apos;s weird GStreamer requires user-code to do all this.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:2757
&gt; +    if (GStreamerAudioMixer::isAllowed()) {

ChangeLog should explain this

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:84
&gt; +    // basesink, we have to take care of it ourselves.

Why doesn&apos;t it inherit from basesink? This seems like a design bug forcing clients to handle such arcana.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:99
&gt; +            g_object_notify(G_OBJECT(sink), &quot;mute&quot;);

Why?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:148
&gt; +        if (!internalObject) {

if (auto* internalObject = getInternalVolumeProxy(sink)) {
   g_object_set(...)
} else {
   GST_WARNING;
}
break

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:156
&gt; +        GstObject* internalObject = getInternalVolumeProxy(sink);

Ditto

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:180
&gt; +        if (!internalObject) {

Ditto

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:191
&gt; +        if (!internalObject) {

Ditto

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:496
&gt; +    , m_audioRenderingPolicy(AudioRenderingPolicy::HostDefault)

Better to use member initialization</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655881</commentid>
    <comment_count>13</comment_count>
      <attachid>399592</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-05-25 09:28:34 -0700</bug_when>
    <thetext>Comment on attachment 399592
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:51
&gt;&gt; +    auto clock = adoptGRef(gst_system_clock_obtain());
&gt; 
&gt; Why?

I&apos;m just following the docs: https://gstreamer.freedesktop.org/documentation/proxy/proxysrc.html?gi-language=c#proxysrc
The audio mixer pipeline is live... Anyway, I&apos;ll explain all the gritty details in the ChangeLog!!!

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:84
&gt;&gt; +    // basesink, we have to take care of it ourselves.
&gt; 
&gt; Why doesn&apos;t it inherit from basesink? This seems like a design bug forcing clients to handle such arcana.

This is a bin, it can&apos;t inherit from basesink.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:148
&gt;&gt; +        if (!internalObject) {
&gt; 
&gt; if (auto* internalObject = getInternalVolumeProxy(sink)) {
&gt;    g_object_set(...)
&gt; } else {
&gt;    GST_WARNING;
&gt; }
&gt; break

We do early returns, usually. Why shouldn&apos;t it be the case here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655917</commentid>
    <comment_count>14</comment_count>
      <attachid>399592</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-05-25 12:40:36 -0700</bug_when>
    <thetext>Comment on attachment 399592
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:51
&gt;&gt;&gt; +    auto clock = adoptGRef(gst_system_clock_obtain());
&gt;&gt; 
&gt;&gt; Why?
&gt; 
&gt; I&apos;m just following the docs: https://gstreamer.freedesktop.org/documentation/proxy/proxysrc.html?gi-language=c#proxysrc
&gt; The audio mixer pipeline is live... Anyway, I&apos;ll explain all the gritty details in the ChangeLog!!!

Please do, it will help other maintainers and potentially yourself in the future, docs can easily drift out of sync with code.

&gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:84
&gt;&gt;&gt; +    // basesink, we have to take care of it ourselves.
&gt;&gt; 
&gt;&gt; Why doesn&apos;t it inherit from basesink? This seems like a design bug forcing clients to handle such arcana.
&gt; 
&gt; This is a bin, it can&apos;t inherit from basesink.

Of course, but I&apos;m not talking about WebKitAudioSink, I was referring to your comment: why proxysink and basesink are not sharing such arcana. It seems pretty wrong to have to do this in WebKit.

&gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:148
&gt;&gt;&gt; +        if (!internalObject) {
&gt;&gt; 
&gt;&gt; if (auto* internalObject = getInternalVolumeProxy(sink)) {
&gt;&gt;    g_object_set(...)
&gt;&gt; } else {
&gt;&gt;    GST_WARNING;
&gt;&gt; }
&gt;&gt; break
&gt; 
&gt; We do early returns, usually. Why shouldn&apos;t it be the case here?

We&apos;re inconsistent about it :) I get nits often enough about adopting `if (auto* foo = fooer()) { success; }` pattern than it seems like a WebKit guideline. As you wish.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668899</commentid>
    <comment_count>15</comment_count>
      <attachid>399592</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-05 10:28:41 -0700</bug_when>
    <thetext>Comment on attachment 399592
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:496
&gt;&gt; +    , m_audioRenderingPolicy(AudioRenderingPolicy::HostDefault)
&gt; 
&gt; Better to use member initialization

Usually yes, but this is a big header file and the enum is forward-declared. I would avoid including the header declaring it if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668901</commentid>
    <comment_count>16</comment_count>
      <attachid>390523</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-05 10:32:44 -0700</bug_when>
    <thetext>Comment on attachment 390523
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:154
&gt;&gt;&gt;&gt; +            close(fd);
&gt;&gt;&gt; 
&gt;&gt;&gt; I don&apos;t manage to understand this piece of code. You map the buffer, create the fd, write to it (copy the data), then call wpe_audio_source_packet by passing the reffed buffer (whose contents should be on the fd and then close the fd and unref the buffer in the callback. Can you please explain? I think a comment in the code would be interesting.
&gt;&gt; 
&gt;&gt; I wrote this wpe_audio_source_packet() API to not be tied to GStreamer APIs, the last arg is passed as an opaque pointer.
&gt; 
&gt; I guess what I miss is the implementation of that function. Anyway, my question still stands. If you write to the fd and pass the fd to the function (where the fd contains the copied data), why do you need to keep the alive buffer around?

Actually, getting back to this and reading the memfd and mmap man pages... IIUC there&apos;s no copy here, the buffer contents are reffed into a memory region, not copied. So in the end I think we need a destroy-notify mechanism here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673879</commentid>
    <comment_count>17</comment_count>
      <attachid>404938</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-22 10:22:44 -0700</bug_when>
    <thetext>Created attachment 404938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673929</commentid>
    <comment_count>18</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-22 12:32:25 -0700</bug_when>
    <thetext>I&apos;ll check the GTK API failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674146</commentid>
    <comment_count>19</comment_count>
      <attachid>405026</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-23 02:28:05 -0700</bug_when>
    <thetext>Created attachment 405026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674152</commentid>
    <comment_count>20</comment_count>
      <attachid>405026</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-23 03:35:13 -0700</bug_when>
    <thetext>Comment on attachment 405026
Patch

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

&gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:97
&gt; +        case ChromeClient::AudioRenderingPolicy::HostDefault:

I think a better name is needed here, instead of HostDefault. Because if we ever make the default to internal-mixing, host-default will no longer be the default. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674200</commentid>
    <comment_count>21</comment_count>
      <attachid>405036</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-23 07:08:06 -0700</bug_when>
    <thetext>Created attachment 405036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674213</commentid>
    <comment_count>22</comment_count>
      <attachid>405036</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-07-23 08:11:49 -0700</bug_when>
    <thetext>Comment on attachment 405036
Patch

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

Other than minor changes, the GStreamer part LGTM after the required tweaks. I am though deferring the rest of the review who someone with more knownledge.

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:1708
&gt; +    static_assert(!static_cast&lt;size_t&gt;(MediaPlayerEnums::AudioRenderingPolicy::HostDefault), &quot;MediaPlayerEnums::AudioRenderingPolicy::HostDefault is not 0 as expected&quot;);
&gt; +    static_assert(static_cast&lt;size_t&gt;(MediaPlayerEnums::AudioRenderingPolicy::InternalMixing) == 1, &quot;MediaPlayerEnums::AudioRenderingPolicy::InternalMixing is not 1 as expected&quot;);
&gt; +    static_assert(static_cast&lt;size_t&gt;(MediaPlayerEnums::AudioRenderingPolicy::External) == 2, &quot;MediaPlayerEnums::AudioRenderingPolicy::External is not 2 as expected&quot;);

I am not saying you need to change this but IMHO this is one of the cases to break the style rules regarding the == 0 :)

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:427
&gt; +GstElement* createAudioSinkForPolicy(MediaPlayerEnums::AudioRenderingPolicy audioRenderingPolicy)

Not to do now but a reflection for possible improvements. I think we should tend to return smart pointers here. Then if we return something and there&apos;s an error in the caller, we&apos;ll have less possibilities of having a memory leak. This said, once we do this for things like elements, we shouldn&apos;t do any leakRef() on them when assigning them to something that takes ownership because then we&apos;ll have a leak! (the smart pointer will sink the ref, then GStreamer will try to sink_ref again but as it is already sinked, it will just bump it)

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:44
&gt; +    gulong padEventProbeId;
&gt; +    gulong padBufferProbeId;

I see these checked during disposal, but never set to anything anywhere. Should they be removed?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:90
&gt; +        if (isMapped)
&gt; +            gst_buffer_unmap(buffer, &amp;info);
&gt; +        gst_buffer_unref(buffer);

This looks like a job for the new and shiny GstMappedOwnedBuffer!

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:148
&gt; +    wpe_audio_source_packet(wpeAudioSource, sink-&gt;priv-&gt;m_streamId, std::get&lt;0&gt;(*mapData), std::get&lt;1&gt;(*mapData), [](void* data) {

Can&apos;t you just do mapData-&gt;first and second?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:150
&gt; +        auto* holder = reinterpret_cast&lt;AudioPacketHolder*&gt;(data);
&gt; +        delete holder;

I guess wpe_audio_source_packet is a C callback, right? Otherwise you could capture AudioPackedHolder in a UniqueRef in the lambda.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:208
&gt; +        GST_ERROR_OBJECT(sink, &quot;WPEBackend-FDO Audio extension is missing, update to WPEBackend-FDO 1.8.x.&quot;);

Let&apos;s ASSERT_NOT_REACHED after this

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:211
&gt; +        GST_ERROR_OBJECT(sink, &quot;External audio rendering is supported only in WPEWebKit&quot;);

Ditto

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:230
&gt; +    if (priv-&gt;padEventProbeId) {
&gt; +        GRefPtr&lt;GstPad&gt; sinkPad = adoptGRef(gst_element_get_static_pad(priv-&gt;interaudioSink.get(), &quot;sink&quot;));
&gt; +        gst_pad_remove_probe(sinkPad.get(), priv-&gt;padEventProbeId);
&gt; +        priv-&gt;padEventProbeId = 0;
&gt; +    }
&gt; +
&gt; +    if (priv-&gt;padBufferProbeId) {
&gt; +        GRefPtr&lt;GstPad&gt; sinkPad = adoptGRef(gst_element_get_static_pad(priv-&gt;interaudioSink.get(), &quot;sink&quot;));
&gt; +        gst_pad_remove_probe(sinkPad.get(), priv-&gt;padBufferProbeId);
&gt; +        priv-&gt;padBufferProbeId = 0;
&gt; +    }

As I said above, I can&apos;t find the code where these are set/initialized, so I think we can remove this.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:235
&gt; +#if PLATFORM(WPE) &amp;&amp; USE(WPEBACKEND_FDO_AUDIO_EXTENSION)
&gt; +    if (priv-&gt;wpeAudioSource)
&gt; +        wpe_audio_source_destroy(priv-&gt;wpeAudioSource);
&gt; +#endif

Can&apos;t we make priv-&gt;wpeAudioSource a unique_ptr with a custom deleter and avoid this?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:259
&gt; +            GST_WARNING_OBJECT(sink, &quot;No associated mixer pad, can&apos;t set %s property&quot;, g_param_spec_get_name(pspec));

ASSERT_NOT_REACHED?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:268
&gt; +            GST_WARNING_OBJECT(sink, &quot;No associated mixer pad, can&apos;t set %s property&quot;, g_param_spec_get_name(pspec));

Ditto

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:290
&gt; +        if (!internalObject) {

ditto

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:300
&gt; +            GST_WARNING_OBJECT(sink, &quot;No associated mixer pad, can&apos;t get %s property&quot;, g_param_spec_get_name(pspec));

ditto

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:328
&gt; +            GST_ELEMENT_ERROR(sink, CORE, MISSING_PLUGIN, (nullptr), (&quot;no interaudiosink&quot;));

ditto

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:351
&gt; +    if (priv-&gt;enableInternalMixing &amp;&amp; (stateChange == GST_STATE_CHANGE_READY_TO_NULL) &amp;&amp; (result &gt; GST_STATE_CHANGE_FAILURE)) {

you can remove the internal () ()

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:356
&gt; +    if (!priv-&gt;enableInternalMixing &amp;&amp; (priv-&gt;sourceState == GST_STATE_PAUSED) &amp;&amp; (stateChange == GST_STATE_CHANGE_PAUSED_TO_PLAYING) &amp;&amp; (result &gt; GST_STATE_CHANGE_FAILURE)) {

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674250</commentid>
    <comment_count>23</comment_count>
      <attachid>405036</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-23 09:27:45 -0700</bug_when>
    <thetext>Comment on attachment 405036
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:1708
&gt;&gt; +    static_assert(static_cast&lt;size_t&gt;(MediaPlayerEnums::AudioRenderingPolicy::External) == 2, &quot;MediaPlayerEnums::AudioRenderingPolicy::External is not 2 as expected&quot;);
&gt; 
&gt; I am not saying you need to change this but IMHO this is one of the cases to break the style rules regarding the == 0 :)

I followed the same approach as the other enums used in this file.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:44
&gt;&gt; +    gulong padBufferProbeId;
&gt; 
&gt; I see these checked during disposal, but never set to anything anywhere. Should they be removed?

Right, I forgot to remove this when I switched from the proxy to inter plugin.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:150
&gt;&gt; +        delete holder;
&gt; 
&gt; I guess wpe_audio_source_packet is a C callback, right? Otherwise you could capture AudioPackedHolder in a UniqueRef in the lambda.

Yes, this is a C callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674579</commentid>
    <comment_count>24</comment_count>
      <attachid>405036</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-24 03:26:26 -0700</bug_when>
    <thetext>Comment on attachment 405036
Patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        the WebProcess wil forward audio samples to the UIProcess, using a Wayland protocol defined

wil -&gt; will

&gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:95
&gt; +    auto* page = context().document()-&gt;page();
&gt; +    if (page) {

if (auto* page = context().document()-&gt;page()) {

&gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:107
&gt; +        default:
&gt; +            ASSERT_NOT_REACHED();

Better not to add default when we are handling all possible options.

&gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:44
&gt; +    MediaPlayerEnums::AudioRenderingPolicy audioRenderingPolicy() const final { return m_audioRenderingPolicy; }

Why do we cache the value in this case? The media player is always calling the chrome client to ask for it. Can the value change?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:7026
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();

Ditto.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:7028
&gt; +    return MediaPlayerEnums::AudioRenderingPolicy::HostDefault;

We can add RELEASE_ASSERT_NOT_REACHED() here to avoid this return and make the gcc happy.

&gt; Source/WebCore/platform/graphics/MediaPlayerEnums.h:114
&gt; +    enum class AudioRenderingPolicy : uint8_t {
&gt; +        HostDefault,
&gt; +        InternalMixing,
&gt; +        External
&gt; +    };

Why is this enum defined twice?

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:33
&gt; +bool GStreamerAudioMixer::isAllowed()

isAvailable?

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:60
&gt; +    gst_element_set_state(m_pipeline.get(), GST_STATE_NULL);

This is never destroyed, if we really need to change pipeline state it should be done somewhere else.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.h:41
&gt; +protected:
&gt; +    GStreamerAudioMixer();
&gt; +    ~GStreamerAudioMixer();

Why is this protected?

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:427
&gt;&gt; +GstElement* createAudioSinkForPolicy(MediaPlayerEnums::AudioRenderingPolicy audioRenderingPolicy)
&gt; 
&gt; Not to do now but a reflection for possible improvements. I think we should tend to return smart pointers here. Then if we return something and there&apos;s an error in the caller, we&apos;ll have less possibilities of having a memory leak. This said, once we do this for things like elements, we shouldn&apos;t do any leakRef() on them when assigning them to something that takes ownership because then we&apos;ll have a leak! (the smart pointer will sink the ref, then GStreamer will try to sink_ref again but as it is already sinked, it will just bump it)

If this is always expected to be added to a &quot;container&quot; that sinks the ref, it&apos;s ok to use raw pointer.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:432
&gt; +        audioSink = webkitAudioSinkNew(false);

Better use an enum instead of a boolean or different New methods webkitAudioSinkNew() and  webkitAudioSinkNewInternal().

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:81
&gt; +    AudioPacketHolder(GstBuffer* buffer)

explicit

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:84
&gt; +    { }
&gt; +    ~AudioPacketHolder()

Add an empty line there

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:234
&gt; +    if (priv-&gt;wpeAudioSource)
&gt; +        wpe_audio_source_destroy(priv-&gt;wpeAudioSource);

Dispose is called multiple times, you need to set the value to nullptr, or even better use g_clear_pointer(&amp;priv-&gt;wpeAudioSource, wpe_audio_source_destroy);

&gt; Source/WebKit/Shared/AudioRenderingPolicy.h:28
&gt; +enum class AudioRenderingPolicy : uint8_t {
&gt; +    HostDefault,
&gt; +    InternalMixing,
&gt; +    External
&gt; +};

And here again.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1335
&gt; +     * WebKitWebView::audio-rendering-policy:

WebKitWebView::audio-rendering-policy: -&gt; WebKitWebView:audio-rendering-policy:

:: means it&apos;s a signal.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1337
&gt; +     * Whether the #WebKitWebView should manage audio rendering through the host

This sound like the property is boolean rather than an enum.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1345
&gt; +     *

Maybe it&apos;s just me, but this sound more like a Mode, not a Policy, so maybe audio-rendering-mode?

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:2341
&gt; +    case WEBKIT_AUDIO_RENDERING_POLICY_HOST_DEFAULT:
&gt; +        policy = WebKit::AudioRenderingPolicy::HostDefault;
&gt; +        break;
&gt; +    case WEBKIT_AUDIO_RENDERING_POLICY_INTERNAL_MIXING:
&gt; +        policy = WebKit::AudioRenderingPolicy::InternalMixing;
&gt; +        break;
&gt; +#if PLATFORM(WPE)
&gt; +    case WEBKIT_AUDIO_RENDERING_POLICY_EXTERNAL:

I think I would use Default, Internal, External or Host/System, Internal, External

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:2346
&gt; +    getPage(webView).setAudioRenderingPolicy(policy);

Why is this called here and not when the property is set? If it&apos;s construct only, then a page configuration option should be used instead.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebView.h:210
&gt; + * @WEBKIT_AUDIO_RENDERING_POLICY_INTERNAL_MIXING: perform internal mixing and render the resulting stream to host audio daemon.
&gt; + * Audio rendering policy.

Add an empty line betwen these

&gt; Source/WebKit/UIProcess/gstreamer/WebPageProxyGStreamer.cpp:48
&gt; +    m_audioRenderingPolicy = policy;
&gt; +    m_process-&gt;send(Messages::WebPage::SetAudioRenderingPolicy(policy), m_webPageID);

Since this is set on construction and can&apos;t be changed better to use page configuration and send it to the web process as intialization parameter (this should be done in any case, to ensure it&apos;s initialized if set before the process is launched).

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:1323
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();

Remove the default.

&gt; Tools/MiniBrowser/gtk/main.c:91
&gt; +        &quot;audio-rendering-policy&quot;, audioRenderingPolicy,

This should be initialized in all other web view creates. I think we need a public getter for the property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674582</commentid>
    <comment_count>25</comment_count>
      <attachid>405036</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-24 04:04:28 -0700</bug_when>
    <thetext>Comment on attachment 405036
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1337
&gt;&gt; +     * Whether the #WebKitWebView should manage audio rendering through the host
&gt; 
&gt; This sound like the property is boolean rather than an enum.

In GTK it could be a boolean yes because the enum has 2 values only. But in WPE there&apos;s 3 values, so I&apos;d prefer to keep the API consistent and keep the enum prop in both ports.

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1345
&gt;&gt; +     *
&gt; 
&gt; Maybe it&apos;s just me, but this sound more like a Mode, not a Policy, so maybe audio-rendering-mode?

SGTM!

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:2341
&gt;&gt; +    case WEBKIT_AUDIO_RENDERING_POLICY_EXTERNAL:
&gt; 
&gt; I think I would use Default, Internal, External or Host/System, Internal, External

Host, Internal, External ... yes, why not</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674604</commentid>
    <comment_count>26</comment_count>
      <attachid>405036</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-24 05:45:23 -0700</bug_when>
    <thetext>Comment on attachment 405036
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1337
&gt;&gt;&gt; +     * Whether the #WebKitWebView should manage audio rendering through the host
&gt;&gt; 
&gt;&gt; This sound like the property is boolean rather than an enum.
&gt; 
&gt; In GTK it could be a boolean yes because the enum has 2 values only. But in WPE there&apos;s 3 values, so I&apos;d prefer to keep the API consistent and keep the enum prop in both ports.

Exactly, I meant the description starting with whether sounds like it&apos;s a boolean property, but it isn&apos;t, so I would rephrase it.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1354
&gt; +            _(&quot;Whether the view is internally rendering audio&quot;),

And here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674636</commentid>
    <comment_count>27</comment_count>
      <attachid>405036</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-24 07:59:55 -0700</bug_when>
    <thetext>Comment on attachment 405036
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayerEnums.h:114
&gt;&gt; +    };
&gt; 
&gt; Why is this enum defined twice?

I haven&apos;t managed to keep a single one, WebKit IPC seems to require another one. I&apos;ll try to debug this...

&gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:427
&gt;&gt;&gt; +GstElement* createAudioSinkForPolicy(MediaPlayerEnums::AudioRenderingPolicy audioRenderingPolicy)
&gt;&gt; 
&gt;&gt; Not to do now but a reflection for possible improvements. I think we should tend to return smart pointers here. Then if we return something and there&apos;s an error in the caller, we&apos;ll have less possibilities of having a memory leak. This said, once we do this for things like elements, we shouldn&apos;t do any leakRef() on them when assigning them to something that takes ownership because then we&apos;ll have a leak! (the smart pointer will sink the ref, then GStreamer will try to sink_ref again but as it is already sinked, it will just bump it)
&gt; 
&gt; If this is always expected to be added to a &quot;container&quot; that sinks the ref, it&apos;s ok to use raw pointer.

Right, the element will always be added to a GstBin.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:234
&gt;&gt; +        wpe_audio_source_destroy(priv-&gt;wpeAudioSource);
&gt; 
&gt; Dispose is called multiple times, you need to set the value to nullptr, or even better use g_clear_pointer(&amp;priv-&gt;wpeAudioSource, wpe_audio_source_destroy);

I&apos;m switching to a GUniquePtr&lt;struct wpe_audio_source&gt;..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674999</commentid>
    <comment_count>28</comment_count>
      <attachid>405225</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-25 03:59:11 -0700</bug_when>
    <thetext>Created attachment 405225
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675000</commentid>
    <comment_count>29</comment_count>
      <attachid>405226</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-25 04:05:14 -0700</bug_when>
    <thetext>Created attachment 405226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685229</commentid>
    <comment_count>30</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-09-03 04:35:38 -0700</bug_when>
    <thetext>Some discussed-elsewhere TODO:

- add env var to enable/disable internal mixing.
- remove WebView API controlling rendering policy
- enable WPE external rendering only if a client is connected through wayland IPC. (Is this even doable? IDK)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692412</commentid>
    <comment_count>31</comment_count>
      <attachid>409843</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-09-27 10:20:40 -0700</bug_when>
    <thetext>Created attachment 409843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692413</commentid>
    <comment_count>32</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-09-27 10:23:36 -0700</bug_when>
    <thetext>WPE EWS likely to fail, needs https://github.com/Igalia/WPEBackend-fdo/pull/122</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692417</commentid>
    <comment_count>33</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-09-27 11:02:14 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #32)
&gt; WPE EWS likely to fail, needs
&gt; https://github.com/Igalia/WPEBackend-fdo/pull/122

Hah. Forgot to update the SDK, how fortunate :)

Could NOT find WPEBackend_fdo: Found unsuitable version &quot;1.7.0&quot;, but required is at least &quot;1.8.0&quot; (found /usr/include/wpe-fdo-1.0)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692874</commentid>
    <comment_count>34</comment_count>
      <attachid>409843</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-09-29 03:53:47 -0700</bug_when>
    <thetext>Comment on attachment 409843
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:186
&gt; +    if (value &amp;&amp; equalIgnoringASCIICase(value, &quot;1&quot;)) {

Nit: You probably don&apos;t need to ignore case here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693361</commentid>
    <comment_count>35</comment_count>
      <attachid>410113</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-09-30 06:41:14 -0700</bug_when>
    <thetext>Created attachment 410113
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693369</commentid>
    <comment_count>36</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-09-30 07:10:30 -0700</bug_when>
    <thetext>Committed r267787: &lt;https://trac.webkit.org/changeset/267787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693370</commentid>
    <comment_count>37</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-30 07:11:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/69790013&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390523</attachid>
            <date>2020-02-12 07:54:23 -0800</date>
            <delta_ts>2020-05-17 09:31:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207634-20200212155421.patch</filename>
            <type>text/plain</type>
            <size>86030</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAK
aW5kZXggMjY3MmQ2NWU2OGZlYjAxNjI4YmVmMGYwZTBiMGFkNGQzMWY0NWI3Yy4uOGM0ZmRiN2U1
NWZiYTZkYTQxZTc4ZDM2ZjNlOTYzNGNjOWZkNjQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcApAQCAtMzAsNiArMzAsOSBAQAogCiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAj
aW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgorI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1
ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtODQsOCArODcsMjYgQEAgdm9pZCBEZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZURlc3RpbmF0aW9uKCkKIHsKICAgICBmbG9hdCBoYXJk
d2FyZVNhbXBsZVJhdGUgPSBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKTsK
ICAgICBMT0coV2ViQXVkaW8sICI+Pj4+IGhhcmR3YXJlU2FtcGxlUmF0ZSA9ICVmXG4iLCBoYXJk
d2FyZVNhbXBsZVJhdGUpOwotICAgIAorCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBNZWRpYVBs
YXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeSBhdWRpb1JlbmRlcmluZ1BvbGljeTsKKyAg
ICBzd2l0Y2ggKGNvbnRleHQoKS5kb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgp
LmF1ZGlvUmVuZGVyaW5nUG9saWN5KCkpIHsKKyAgICBjYXNlIENocm9tZUNsaWVudDo6QXVkaW9S
ZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OgorICAgICAgICBhdWRpb1JlbmRlcmluZ1BvbGlj
eSA9IE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaHJvbWVDbGllbnQ6OkF1ZGlvUmVuZGVyaW5nUG9s
aWN5OjpJbnRlcm5hbE1peGluZzoKKyAgICAgICAgYXVkaW9SZW5kZXJpbmdQb2xpY3kgPSBNZWRp
YVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SW50ZXJuYWxNaXhpbmc7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6
RXh0ZXJuYWw6CisgICAgICAgIGF1ZGlvUmVuZGVyaW5nUG9saWN5ID0gTWVkaWFQbGF5ZXJFbnVt
czo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkV4dGVybmFsOworICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgbV9kZXN0
aW5hdGlvbiA9IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgqdGhpcywgbV9pbnB1dERldmljZUlk
LCBtX251bWJlck9mSW5wdXRDaGFubmVscywgY2hhbm5lbENvdW50KCksIGhhcmR3YXJlU2FtcGxl
UmF0ZSwgYXVkaW9SZW5kZXJpbmdQb2xpY3kpOworI2Vsc2UKICAgICBtX2Rlc3RpbmF0aW9uID0g
QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCp0aGlzLCBtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCBjaGFubmVsQ291bnQoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKKyNl
bmRpZgogfQogCiB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6ZW5hYmxlSW5wdXQo
Y29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggYTczYmMwYjRjMmZlZWIzMTNkZmU3NzVjODhkOGVhOWQwOTlhMGJm
NS4uNDQ2NzU5MmNhMDdhMzBlODk0ZTQyZWFjYmRiMzk1M2FiZDI4ZWZhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC03MTg2LDYgKzcxODYsMjQgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0
cmluZyYgZGV0YWlscywgY29uc3QKIAogICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5j
bGllbnQoKS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoZGV0YWlscywgZGVzY3Jp
cHRpb24sIGNhbGxiYWNrKTsKIH0KKworTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQ
b2xpY3kgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJBdWRpb1JlbmRlcmluZ1BvbGljeSgp
IGNvbnN0Cit7CisgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDsKKworICAg
IHN3aXRjaCAoZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmF1ZGlvUmVuZGVy
aW5nUG9saWN5KCkpIHsKKyAgICBjYXNlIENocm9tZUNsaWVudDo6QXVkaW9SZW5kZXJpbmdQb2xp
Y3k6Okhvc3REZWZhdWx0OgorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9S
ZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OworICAgIGNhc2UgQ2hyb21lQ2xpZW50OjpBdWRp
b1JlbmRlcmluZ1BvbGljeTo6SW50ZXJuYWxNaXhpbmc6CisgICAgICAgIHJldHVybiBNZWRpYVBs
YXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SW50ZXJuYWxNaXhpbmc7CisgICAgY2Fz
ZSBDaHJvbWVDbGllbnQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpFeHRlcm5hbDoKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpFeHRlcm5hbDsK
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAg
cmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVs
dDsKK30KICNlbmRpZgogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUJlaGF2aW9yUmVz
dHJpY3Rpb25zQWZ0ZXJGaXJzdFVzZXJHZXN0dXJlKE1lZGlhRWxlbWVudFNlc3Npb246OkJlaGF2
aW9yUmVzdHJpY3Rpb25zIG1hc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CmluZGV4IDU1MjJmOGNlNTJhMDM5NzcwODZlYmQ2MDM5NGI2YjlhODEyZTU4NWIuLmRiNDhmMTg1
ODgzZjgxMTVjODBjZDdkYjBlNDJkZGJhOGRjM2Y5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCkBAIC03NTQsNiArNzU0LDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShH
U1RSRUFNRVIpCiAgICAgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0
cmluZyYgZGV0YWlscywgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgTWVkaWFQbGF5ZXJSZXF1
ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKSBmaW5hbDsKKyAgICBNZWRpYVBsYXll
ckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeSBtZWRpYVBsYXllckF1ZGlvUmVuZGVyaW5nUG9s
aWN5KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAogICAgIHZvaWQgcGVuZGluZ0FjdGlvblRpbWVy
RmlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDk4OWJhZjRhN2Q3ZjMz
NTQ1OTMyYmQ5MzA0M2VmNDNiYTdhYTUxMmEuLmNjNzE3OGQxNjI4NWI4NTJjMTAwM2YzNzkzZDA5
N2IxNjljMGE4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtNDc5LDYgKzQ3
OSw5IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKICAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0
cmluZyYgLypkZXRhaWxzKi8sIGNvbnN0IFN0cmluZyYgLypkZXNjcmlwdGlvbiovLCBNZWRpYVBs
YXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYpIHsgfQorCisgICAgZW51
bSBjbGFzcyBBdWRpb1JlbmRlcmluZ1BvbGljeSB7IEhvc3REZWZhdWx0LCBJbnRlcm5hbE1peGlu
ZywgRXh0ZXJuYWwgfTsKKyAgICB2aXJ0dWFsIEF1ZGlvUmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVu
ZGVyaW5nUG9saWN5KCkgY29uc3QgeyByZXR1cm4gQXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3RE
ZWZhdWx0OyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRJbnZhbGlkYXRlRG9jdW1l
bnRNYXJrZXJSZWN0cygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
R1N0cmVhbWVyLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtl
CmluZGV4IGVmYTVlNzU2OTUyMjc2MmRkOGFlYzdjZWJlMzM0YWE4MTk3ODVmZjYuLjhiMzhmMTRj
ZGU4YmU1ZThkOWM1MGI0ZjRlY2MwYjgwYjIwMjljYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9HU3RyZWFtZXIuY21ha2UKQEAgLTksNiArOSw3IEBAIGlmIChFTkFCTEVfVklERU8gT1IgRU5B
QkxFX1dFQl9BVURJTykKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlv
VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR0xWaWRlb1NpbmtHU3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dzdEFsbG9jYXRvckZhc3RNYWxsb2MuY3BwCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCkBAIC0y
MSw2ICsyMiw3IEBAIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykKICAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIu
Y3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFt
ZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lci5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdEF1ZGlvU2lua0dTdHJlYW1lci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKIAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENsZWFyS2V5RGVjcnlwdG9yR1N0cmVhbWVyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5h
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5o
CmluZGV4IDJjYmFmNDhlYjUwZjU1ZDZkYWFlZjliNDNhNjg2YmY0ZGM3YTc5MTcuLjRmMmQ4ZDQ0
MWFhMWQwOWFjZDhmYjgyMGZjZDkyODQxNGU0NzAzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmgKQEAgLTMyLDYgKzMyLDEwIEBACiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYg
VVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJNZWRpYVBsYXllckVudW1zLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0lPQ2FsbGJhY2s7CkBAIC00NSw3ICs0
OSwxMSBAQCBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uIHsKIHB1YmxpYzoKICAgICAvLyBQYXNzIGlu
IChudW1iZXJPZklucHV0Q2hhbm5lbHMgPiAwKSBpZiBsaXZlL2xvY2FsIGF1ZGlvIGlucHV0IGlz
IGRlc2lyZWQuCiAgICAgLy8gUG9ydC1zcGVjaWZpYyBkZXZpY2UgaWRlbnRpZmljYXRpb24gaW5m
b3JtYXRpb24gZm9yIGxpdmUvbG9jYWwgaW5wdXQgc3RyZWFtcyBjYW4gYmUgcGFzc2VkIGluIHRo
ZSBpbnB1dERldmljZUlkLgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgY29uc3Qg
U3RyaW5nJiBpbnB1dERldmljZUlkLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVu
c2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIE1lZGlhUGxh
eWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5KTsKKyNlbHNlCiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgY29u
c3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOworI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uKCkgPSBkZWZhdWx0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0
aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXggMWE1NDk1ZmQ3NjRkOWMz
Y2M2ZWRiNTgxZmE0ODBlYWVhZDE0NTliZi4uM2M1MDVhODRmMjdlNzI0ZTlmZWJiZjJlMWEzZWMy
Y2E4ZjM3NTBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApA
QCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9DaGFubmVsLmgiCiAjaW5jbHVkZSAi
QXVkaW9Tb3VyY2VQcm92aWRlci5oIgotI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKKyNp
bmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaCIKICNpbmNsdWRlIDxnc3QvYXVkaW8v
Z3N0YXVkaW9iYXNlc2luay5oPgpAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgdm9pZCBhdXRvQXVk
aW9TaW5rQ2hpbGRBZGRlZENhbGxiYWNrKEdzdENoaWxkUHJveHkqLCBHT2JqZWN0KiBvYmplY3Qs
IGdjaAogICAgICAgICBnX29iamVjdF9zZXQoR1NUX0FVRElPX0JBU0VfU0lOSyhvYmplY3QpLCAi
YnVmZmVyLXRpbWUiLCBzdGF0aWNfY2FzdDxnaW50NjQ+KDEwMDAwMCksIG51bGxwdHIpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3Jl
YXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIG51
bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSkKK3N0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rl
c3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgY29uc3QgU3RyaW5n
JiwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRl
cmluZ1BvbGljeSBhdWRpb1JlbmRlcmluZ1BvbGljeSkKIHsKICAgICAvLyBGSVhNRTogbWFrZSB1
c2Ugb2YgaW5wdXREZXZpY2VJZCBhcyBhcHByb3ByaWF0ZS4KIApAQCAtNjIsNyArNjIsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRl
KEF1ZGlvSU9DYWxsYmFjayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9
IDIpCiAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUs
ICVmKSAtIHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIG1ha2VV
bmlxdWU8QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcj4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI+KGNhbGxiYWNr
LCBzYW1wbGVSYXRlLCBhdWRpb1JlbmRlcmluZ1BvbGljeSk7CiB9CiAKIGZsb2F0IEF1ZGlvRGVz
dGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCkBAIC03Nyw3ICs3Nyw3IEBAIHVuc2lnbmVk
IGxvbmcgQXVkaW9EZXN0aW5hdGlvbjo6bWF4Q2hhbm5lbENvdW50KCkKICAgICByZXR1cm4gMDsK
IH0KIAotQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9EZXN0
aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJh
Y2smIGNhbGxiYWNrLCBmbG9hdCBzYW1wbGVSYXRlLCBNZWRpYVBsYXllckVudW1zOjpBdWRpb1Jl
bmRlcmluZ1BvbGljeSBhdWRpb1JlbmRlcmluZ1BvbGljeSkKICAgICA6IG1fY2FsbGJhY2soY2Fs
bGJhY2spCiAgICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKDIsIGZyYW1lc1RvUHVs
bCwgZmFsc2UpKQogICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCkBAIC05NSwzNCArOTUs
MzYgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm92aWRl
ciIsICZtX2NhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZXMiLCBmcmFtZXNUb1B1
bGwsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdXRvYXVkaW9zaW5rIiwgbnVsbHB0cik7CisgICAgR3N0
RWxlbWVudCogYXVkaW9TaW5rID0gY3JlYXRlQXVkaW9TaW5rRm9yUG9saWN5KGF1ZGlvUmVuZGVy
aW5nUG9saWN5KTsKICAgICBtX2F1ZGlvU2lua0F2YWlsYWJsZSA9IGF1ZGlvU2luazsKICAgICBp
ZiAoIWF1ZGlvU2luaykgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0
cmVhbWVyIGF1dG9hdWRpb3NpbmsgZWxlbWVudCIpOworICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVudCIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgZ19zaWduYWxfY29ubmVjdChhdWRpb1NpbmsuZ2V0KCksICJjaGls
ZC1hZGRlZCIsIEdfQ0FMTEJBQ0soYXV0b0F1ZGlvU2lua0NoaWxkQWRkZWRDYWxsYmFjayksIG51
bGxwdHIpOwotCi0gICAgLy8gQXV0b2F1ZGlvc2luayBkb2VzIHRoZSByZWFsIHNpbmsgZGV0ZWN0
aW9uIGluIHRoZSBHU1RfU1RBVEVfTlVMTC0+UkVBRFkgdHJhbnNpdGlvbgotICAgIC8vIHNvIGl0
J3MgYmVzdCB0byByb2xsIGl0IHRvIFJFQURZIGFzIHNvb24gYXMgcG9zc2libGUgdG8gZW5zdXJl
IHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtCi0gICAgLy8gYXVkaW9zaW5rIHdhcyBsb2FkZWQgY29y
cmVjdGx5LgotICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRlQ2hhbmdlUmV0dXJuID0gZ3N0
X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlvU2luay5nZXQoKSwgR1NUX1NUQVRFX1JFQURZKTsKLSAg
ICBpZiAoc3RhdGVDaGFuZ2VSZXR1cm4gPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNoYW5nZSBhdXRvYXVkaW9zaW5rIGVsZW1lbnQg
c3RhdGUiKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlvU2luay5nZXQoKSwg
R1NUX1NUQVRFX05VTEwpOwotICAgICAgICBtX2F1ZGlvU2lua0F2YWlsYWJsZSA9IGZhbHNlOwot
ICAgICAgICByZXR1cm47CisgICAgaWYgKEdTVF9JU19CSU4oYXVkaW9TaW5rKSkgeworICAgICAg
ICBnX3NpZ25hbF9jb25uZWN0KGF1ZGlvU2luaywgImNoaWxkLWFkZGVkIiwgR19DQUxMQkFDSyhh
dXRvQXVkaW9TaW5rQ2hpbGRBZGRlZENhbGxiYWNrKSwgbnVsbHB0cik7CisKKyAgICAgICAgLy8g
QXV0b2F1ZGlvc2luayBkb2VzIHRoZSByZWFsIHNpbmsgZGV0ZWN0aW9uIGluIHRoZSBHU1RfU1RB
VEVfTlVMTC0+UkVBRFkgdHJhbnNpdGlvbgorICAgICAgICAvLyBzbyBpdCdzIGJlc3QgdG8gcm9s
bCBpdCB0byBSRUFEWSBhcyBzb29uIGFzIHBvc3NpYmxlIHRvIGVuc3VyZSB0aGUgdW5kZXJseWlu
ZyBwbGF0Zm9ybQorICAgICAgICAvLyBhdWRpb3Npbmsgd2FzIGxvYWRlZCBjb3JyZWN0bHkuCisg
ICAgICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRlQ2hhbmdlUmV0dXJuID0gZ3N0X2VsZW1l
bnRfc2V0X3N0YXRlKGF1ZGlvU2luaywgR1NUX1NUQVRFX1JFQURZKTsKKyAgICAgICAgaWYgKHN0
YXRlQ2hhbmdlUmV0dXJuID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgeworICAgICAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY2hhbmdlIGF1dG9hdWRpb3NpbmsgZWxlbWVudCBzdGF0
ZSIpOworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlvU2luaywgR1NUX1NU
QVRFX05VTEwpOworICAgICAgICAgICAgbV9hdWRpb1NpbmtBdmFpbGFibGUgPSBmYWxzZTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEdzdEVsZW1lbnQqIGF1
ZGlvQ29udmVydCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9jb252ZXJ0IiwgbnVs
bHB0cik7CiAgICAgR3N0RWxlbWVudCogYXVkaW9SZXNhbXBsZSA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfbWFrZSgiYXVkaW9yZXNhbXBsZSIsIG51bGxwdHIpOwotICAgIGdzdF9iaW5fYWRkX21hbnko
R1NUX0JJTihtX3BpcGVsaW5lKSwgd2Via2l0QXVkaW9TcmMsIGF1ZGlvQ29udmVydCwgYXVkaW9S
ZXNhbXBsZSwgYXVkaW9TaW5rLmdldCgpLCBudWxscHRyKTsKKyAgICBnc3RfYmluX2FkZF9tYW55
KEdTVF9CSU5fQ0FTVChtX3BpcGVsaW5lKSwgd2Via2l0QXVkaW9TcmMsIGF1ZGlvQ29udmVydCwg
YXVkaW9SZXNhbXBsZSwgYXVkaW9TaW5rLCBudWxscHRyKTsKIAogICAgIC8vIExpbmsgc3JjIHBh
ZHMgZnJvbSB3ZWJraXRBdWRpb1NyYyB0byBhdWRpb0NvbnZlcnQgISBhdWRpb1Jlc2FtcGxlICEg
YXV0b2F1ZGlvc2luay4KICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbCh3ZWJraXRBdWRp
b1NyYywgInNyYyIsIGF1ZGlvQ29udmVydCwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9U
SElORyk7CiAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoYXVkaW9Db252ZXJ0LCAic3Jj
IiwgYXVkaW9SZXNhbXBsZSwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7Ci0g
ICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoYXVkaW9SZXNhbXBsZSwgInNyYyIsIGF1ZGlv
U2luay5nZXQoKSwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CisgICAgZ3N0
X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoYXVkaW9SZXNhbXBsZSwgInNyYyIsIGF1ZGlvU2luaywg
InNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CiB9CiAKIEF1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXI6On5BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lci5oCmluZGV4IDNiODlmZWJjNjI3YTQ3NjU4NmQyYzMzOGQyZjJm
NTU5NzlhYzkyMDEuLjFiNWNiNDEwNDE2YjRiYzdmZWU4OTBkOTQ3MTk2NTc4Mjk2ZGVmODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaApAQCAtMjEsNiArMjEsNyBAQAog
CiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgiCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJFbnVtcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
dHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVudDsKQEAgLTMxLDcgKzMyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyIDog
cHVibGljIEF1ZGlvRGVzdGluYXRpb24gewogcHVibGljOgotICAgIEF1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVSYXRlLCBN
ZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeSk7CiAgICAgdmlydHVhbCB+QXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lcigpOwogCiAgICAgdm9pZCBzdGFydCgpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwCmluZGV4IDU0YjM5
ZjQ1YTViYTcwMGVlMGU5YmFhMTY1MzZkMjE4ODRlZDEwZjguLjBkNjY2MWQ0NWZlOTBlMDgyMmYz
ZThiYWUzMmIyZWUwMjAzMjRjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRl
ckdTdHJlYW1lci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0
cmVhbWVyOjp+QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcigpCiAgICAgZ19vYmplY3RfdW5y
ZWYobV9mcm9udFJpZ2h0QWRhcHRlcik7CiB9CiAKLXZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lcjo6Y29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCogYXVkaW9CaW4sIEdzdEVsZW1l
bnQqIHRlZVByZWRlY2Vzc29yKQordm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpj
b25maWd1cmVBdWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0JpbiwgR3N0RWxlbWVudCogYXVkaW9T
aW5rKQogewogICAgIG1fYXVkaW9TaW5rQmluID0gYXVkaW9CaW47CiAKQEAgLTE1MiwyMSArMTUy
LDEyIEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y29uZmlndXJlQXVkaW9C
aW4oR3N0RWxlbWVudCogYXVkaW9CaW4sIEdzdEVsCiAgICAgR3N0RWxlbWVudCogYXVkaW9SZXNh
bXBsZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9yZXNhbXBsZSIsIG51bGxwdHIp
OwogICAgIEdzdEVsZW1lbnQqIGF1ZGlvUmVzYW1wbGUyID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKCJhdWRpb3Jlc2FtcGxlIiwgbnVsbHB0cik7CiAgICAgR3N0RWxlbWVudCogdm9sdW1lRWxl
bWVudCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgidm9sdW1lIiwgInZvbHVtZSIpOwotICAg
IEdzdEVsZW1lbnQqIGF1ZGlvU2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b2F1
ZGlvc2luayIsIG51bGxwdHIpOwogCiAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fYXVk
aW9TaW5rQmluLmdldCgpKSwgYXVkaW9UZWUsIGF1ZGlvUXVldWUsIGF1ZGlvQ29udmVydCwgYXVk
aW9SZXNhbXBsZSwgdm9sdW1lRWxlbWVudCwgYXVkaW9Db252ZXJ0MiwgYXVkaW9SZXNhbXBsZTIs
IGF1ZGlvU2luaywgbnVsbHB0cik7CiAKLSAgICAvLyBJbiBjYXNlcyB3aGVyZSB0aGUgYXVkaW8t
c2luayBuZWVkcyBlbGVtZW50cyBiZWZvcmUgdGVlIChzdWNoCi0gICAgLy8gYXMgc2NhbGV0ZW1w
bykgdGhleSBuZWVkIHRvIGJlIGxpbmtlZCB0byB0ZWUgd2hpY2ggaW4gdGhpcyBjYXNlCi0gICAg
Ly8gZG9lc24ndCBuZWVkIGEgZ2hvc3QgcGFkLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHRlZVBy
ZWRlY2Vzc29yCi0gICAgLy8gY2hhaW4gYWxyZWFkeSBjb25maWd1cmVkIGEgZ2hvc3QgcGFkLgot
ICAgIGlmICh0ZWVQcmVkZWNlc3NvcikKLSAgICAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1
bGwodGVlUHJlZGVjZXNzb3IsICJzcmMiLCBhdWRpb1RlZSwgInNpbmsiLCBHU1RfUEFEX0xJTktf
Q0hFQ0tfTk9USElORyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEFkZCBhIGdob3N0cGFkIHRv
IHRoZSBiaW4gc28gaXQgY2FuIHByb3h5IHRvIHRlZS4KLSAgICAgICAgR1JlZlB0cjxHc3RQYWQ+
IGF1ZGlvVGVlU2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChh
dWRpb1RlZSwgInNpbmsiKSk7Ci0gICAgICAgIGdzdF9lbGVtZW50X2FkZF9wYWQobV9hdWRpb1Np
bmtCaW4uZ2V0KCksIGdzdF9naG9zdF9wYWRfbmV3KCJzaW5rIiwgYXVkaW9UZWVTaW5rUGFkLmdl
dCgpKSk7Ci0gICAgfQorICAgIC8vIEFkZCBhIGdob3N0cGFkIHRvIHRoZSBiaW4gc28gaXQgY2Fu
IHByb3h5IHRvIHRlZS4KKyAgICBHUmVmUHRyPEdzdFBhZD4gYXVkaW9UZWVTaW5rUGFkID0gYWRv
cHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKGF1ZGlvVGVlLCAic2luayIpKTsKKyAg
ICBnc3RfZWxlbWVudF9hZGRfcGFkKG1fYXVkaW9TaW5rQmluLmdldCgpLCBnc3RfZ2hvc3RfcGFk
X25ldygic2luayIsIGF1ZGlvVGVlU2lua1BhZC5nZXQoKSkpOwogCiAgICAgLy8gTGluayBhIG5l
dyBzcmMgcGFkIGZyb20gdGVlIHRvIHF1ZXVlICEgYXVkaW9jb252ZXJ0ICEKICAgICAvLyBhdWRp
b3Jlc2FtcGxlICEgdm9sdW1lICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3Vy
Y2VQcm92aWRlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaAppbmRleCBkNmJhMjJhMzExZTU5
ZjczYTgxNzI4ZWRmNDQ1MTdkYWRkNTNlZmIwLi5lNGY2NTEyZjEyYTAzZjEzOWM0MzdkYzIwZDcx
NzI0YjFkNGIyMzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVy
LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIEF1ZGlvU291cmNlUHJvdmlkZXJHU3Ry
ZWFtZXIoKTsKICAgICB+QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcigpOwogCi0gICAgdm9p
ZCBjb25maWd1cmVBdWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0JpbiwgR3N0RWxlbWVudCogdGVl
UHJlZGVjZXNzb3IpOworICAgIHZvaWQgY29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCogYXVk
aW9CaW4sIEdzdEVsZW1lbnQqIGF1ZGlvU2luayk7CiAKICAgICB2b2lkIHByb3ZpZGVJbnB1dChB
dWRpb0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
Q2xpZW50KEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCBjYTcxZTdl
MGI1ODZjN2I1NWIxMTI3MzJiYWQ1OWIwMWQ4YTQxODFiLi5jZWNhMTRmNWEwZmEzMWMwMDliZmMz
MDQzYzY1M2ZmMWNlODg4NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xNjk5LDYgKzE2OTksMjEgQEAgU3RyaW5nIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kgZW51bWVy
YXRpb25WYWx1ZSkKICAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVy
YXRpb25WYWx1ZSldOwogfQogCisjaWYgVVNFKEdTVFJFQU1FUikKK1N0cmluZyBjb252ZXJ0RW51
bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeSBl
bnVtZXJhdGlvblZhbHVlKQoreworICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IHZhbHVlc1tdID0geworICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiSG9zdERl
ZmF1bHQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkludGVybmFsTWl4aW5n
IiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJFeHRlcm5hbCIpLAorICAgIH07
CisgICAgc3RhdGljX2Fzc2VydCghc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVudW1z
OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQpLCAiTWVkaWFQbGF5ZXJFbnVtczo6
QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0IGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7
CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyRW51bXM6
OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpJbnRlcm5hbE1peGluZykgPT0gMSwgIk1lZGlhUGxheWVy
RW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpJbnRlcm5hbE1peGluZyBpcyBub3QgMSBhcyBl
eHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBs
YXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6RXh0ZXJuYWwpID09IDIsICJNZWRpYVBs
YXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6RXh0ZXJuYWwgaXMgbm90IDIgYXMgZXhw
ZWN0ZWQiKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVl
KSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CisgICAgcmV0dXJuIHZhbHVlc1tzdGF0aWNf
Y2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKK30KKyNlbmRpZgogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4
IDdlNmNiOGEzOTBkZjdmZTFhN2FhZTAxNzM5ZGM5NDhmNzc2NjIxZWUuLjM1MTM2Yzc1MzkxYzZh
ODMwYmU0NjFiNThiYjE3YjExNWRlMTgzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjYzLDYgKzI2Myw3IEBAIHB1YmxpYzoKIAog
I2lmIFVTRShHU1RSRUFNRVIpCiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2lu
Z1BsdWdpbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5ZXJSZXF1ZXN0
SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKSB7IH07CisgICAgdmlydHVhbCBNZWRpYVBs
YXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeSBtZWRpYVBsYXllckF1ZGlvUmVuZGVyaW5n
UG9saWN5KCkgY29uc3QgeyByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQ
b2xpY3k6Okhvc3REZWZhdWx0OyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBs
YXllclNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0yNzYs
NiArMjc3LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IHZvaWQqIG1lZGlhUGxheWVy
TG9nSWRlbnRpZmllcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIGNvbnN0IExv
Z2dlciYgbWVkaWFQbGF5ZXJMb2dnZXIoKSA9IDA7CiAjZW5kaWYKKworICAgIHZpcnR1YWwgYm9v
bCBtZWRpYVBsYXllclNob3VsZEludGVybmFsbHlSZW5kZXJBdWRpbygpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KKworCiB9OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVBsYXllciA6IHB1
YmxpYyBNZWRpYVBsYXllckVudW1zLCBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVBsYXllcj4gewpA
QCAtNjI3LDYgKzYzMiw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAgdm9p
ZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQ
bHVnaW5zQ2FsbGJhY2smIGNhbGxiYWNrKSB7IGNsaWVudCgpLnJlcXVlc3RJbnN0YWxsTWlzc2lu
Z1BsdWdpbnMoZGV0YWlscywgZGVzY3JpcHRpb24sIGNhbGxiYWNrKTsgfQorICAgIE1lZGlhUGxh
eWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29u
c3QgeyByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJBdWRpb1JlbmRlcmluZ1BvbGljeSgpOyB9
CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyRW51bXMuaAppbmRleCBhOWYwNDlmN2JmMTM1M2VkNzRiYmM5NjI0
ZDI0MmRkZjc3NDcxOTc5Li4xMDQ5ZWRkYjk2OThjMGUxOGNlMDhkYzYyNWJjOWY4YTkyYzhhYmUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ckVudW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJFbnVtcy5oCkBAIC05OSw2ICs5OSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIE1lZGlhRm91bmRh
dGlvbiwKICAgICAgICAgTW9ja01TRSwKICAgICB9OworCisjaWYgVVNFKEdTVFJFQU1FUikKKyAg
ICBlbnVtIGNsYXNzIEF1ZGlvUmVuZGVyaW5nUG9saWN5IDogdWludDhfdCB7CisgICAgICAgIEhv
c3REZWZhdWx0LAorICAgICAgICBJbnRlcm5hbE1peGluZywKKyAgICAgICAgRXh0ZXJuYWwKKyAg
ICB9OworI2VuZGlmCiB9OwogCiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVk
aWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSk7CkBAIC0xMDcsNiArMTE1LDkgQEAgU3RyaW5nIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQpOwogU3Ry
aW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRz
VHlwZSk7CiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVt
czo6QnVmZmVyaW5nUG9saWN5KTsKIAorI2lmIFVTRShHU1RSRUFNRVIpCitXVEY6OlN0cmluZyBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmlu
Z1BvbGljeSk7CisjZW5kaWYKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogCkBAIC0yMjQsNCAr
MjM1LDE0IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyPiB7CiAgICAgPjsKIH07CiAKKyNpZiBVU0Uo
R1NUUkVBTUVSKQordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeT4geworICAgIHN0YXRpYyBXVEY6OlN0
cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRl
cmluZ1BvbGljeSBwb2xpY3kpCisgICAgeworICAgICAgICByZXR1cm4gY29udmVydEVudW1lcmF0
aW9uVG9TdHJpbmcocG9saWN5KTsKKyAgICB9Cit9OworI2VuZGlmCisKIH07IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJBdWRpb01peGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb01peGVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWM5
MjAxOWI3ZWY5ZTJhMzE5NzBhZDNmMDEyOTkyOTNiMjY5YjE4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlv
TWl4ZXIuY3BwCkBAIC0wLDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEln
YWxpYSBTLkwKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFp
bnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyQXVkaW9NaXhl
ci5oIgorCisjaWYgVVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5o
IgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyh3ZWJraXRfbWVkaWFfZ3N0X2F1ZGlvX21p
eGVyX2RlYnVnKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tZWRpYV9nc3RfYXVk
aW9fbWl4ZXJfZGVidWcKKworYm9vbCBHU3RyZWFtZXJBdWRpb01peGVyOjppc0FsbG93ZWQoKQor
eworICAgIGNvbnN0IGNoYXIqIGVudmlyb25tZW50VmFyaWFibGUgPSBnZXRlbnYoIldFQktJVF9H
U1RfVVNFX0FVRElPTUlYRVIiKTsKKyAgICBpZiAoIWVudmlyb25tZW50VmFyaWFibGUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB3ZWJraXRHc3RDaGVja1ZlcnNpb24oMSwg
MTYsIDEpICYmIGdfYXNjaWlfZGlnaXRfdmFsdWUoZW52aXJvbm1lbnRWYXJpYWJsZVswXSk7Cit9
CisKK0dTdHJlYW1lckF1ZGlvTWl4ZXImIEdTdHJlYW1lckF1ZGlvTWl4ZXI6OnNpbmdsZXRvbigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEdTdHJlYW1lckF1ZGlvTWl4ZXI+IHNoYXJl
ZEluc3RhbmNlOworICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsKK30KKworR1N0cmVhbWVyQXVk
aW9NaXhlcjo6R1N0cmVhbWVyQXVkaW9NaXhlcigpCit7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZ
X0lOSVQod2Via2l0X21lZGlhX2dzdF9hdWRpb19taXhlcl9kZWJ1ZywgIndlYmtpdGF1ZGlvbWl4
ZXIiLCAwLCAiV2ViS2l0IEdTdHJlYW1lciBhdWRpbyBtaXhlciIpOworICAgIG1fcGlwZWxpbmUg
PSBhZG9wdEdSZWYoR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9yZWZfc2luayhnc3RfZWxlbWVu
dF9mYWN0b3J5X21ha2UoInBpcGVsaW5lIiwgIndlYmtpdGF1ZGlvbWl4ZXIiKSkpKTsKKyAgICBj
b25uZWN0U2ltcGxlQnVzTWVzc2FnZUNhbGxiYWNrKG1fcGlwZWxpbmUuZ2V0KCkpOworCisgICAg
R1JlZlB0cjxHc3RDbG9jaz4gY2xvY2sgPSBnc3Rfc3lzdGVtX2Nsb2NrX29idGFpbigpOworICAg
IGdzdF9waXBlbGluZV91c2VfY2xvY2soR1NUX1BJUEVMSU5FX0NBU1QobV9waXBlbGluZS5nZXQo
KSksIGNsb2NrLmdldCgpKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfYmFzZV90aW1lKG1fcGlwZWxp
bmUuZ2V0KCksIG1peGVyQmFzZVRpbWUoKSk7CisKKyAgICBtX21peGVyID0gZ3N0X2VsZW1lbnRf
ZmFjdG9yeV9tYWtlKCJhdWRpb21peGVyIiwgbnVsbHB0cik7CisgICAgR3N0RWxlbWVudCogYXVk
aW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdXRvYXVkaW9zaW5rIiwgbnVsbHB0
cik7CisKKyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU5fQ0FTVChtX3BpcGVsaW5lLmdldCgp
KSwgbV9taXhlci5nZXQoKSwgYXVkaW9TaW5rLCBudWxscHRyKTsKKyAgICBnc3RfZWxlbWVudF9s
aW5rKG1fbWl4ZXIuZ2V0KCksIGF1ZGlvU2luayk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRl
KG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9SRUFEWSk7Cit9CisKK0dTdHJlYW1lckF1ZGlv
TWl4ZXI6On5HU3RyZWFtZXJBdWRpb01peGVyKCkKK3sKKyAgICBnc3RfZWxlbWVudF9zZXRfc3Rh
dGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworfQorCit2b2lkIEdTdHJlYW1l
ckF1ZGlvTWl4ZXI6OmVuc3VyZVN0YXRlKEdzdFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKQorewor
I2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDE0LCAwKQorICAgIEdTVF9ERUJVR19PQkpFQ1QobV9w
aXBlbGluZS5nZXQoKSwgIkhhbmRsaW5nICVzIHRyYW5zaXRpb24gKCV1IG1peGVyIHBhZHMpIiwg
Z3N0X3N0YXRlX2NoYW5nZV9nZXRfbmFtZShzdGF0ZUNoYW5nZSksIG1fbWl4ZXItPm51bXNpbmtw
YWRzKTsKKyNlbmRpZgorICAgIHN3aXRjaCAoc3RhdGVDaGFuZ2UpIHsKKyAgICBjYXNlIEdTVF9T
VEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgorICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3Rh
dGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1BBVVNFRCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUExBWUlORzoKKyAgICAgICAgZ3N0
X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QTEFZSU5HKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BMQVlJTkdfVE9fUEFV
U0VEOgorICAgICAgICBpZiAobV9taXhlci0+bnVtc2lua3BhZHMgPT0gMSkKKyAgICAgICAgICAg
IGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUEFVU0VE
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19S
RUFEWToKKyAgICAgICAgaWYgKG1fbWl4ZXItPm51bXNpbmtwYWRzID09IDEpCisgICAgICAgICAg
ICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1JFQURZ
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05V
TEw6CisgICAgICAgIGlmIChtX21peGVyLT5udW1zaW5rcGFkcyA9PSAxKQorICAgICAgICAgICAg
Z3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQor
CitHUmVmUHRyPEdzdFBhZD4gR1N0cmVhbWVyQXVkaW9NaXhlcjo6cmVnaXN0ZXJQcm9kdWNlcihH
c3RFbGVtZW50KiBwcm94eVNpbmspCit7CisgICAgR3N0RWxlbWVudCogc3JjID0gZ3N0X2VsZW1l
bnRfZmFjdG9yeV9tYWtlKCJwcm94eXNyYyIsIG51bGxwdHIpOworICAgIGdfb2JqZWN0X3NldChz
cmMsICJwcm94eXNpbmsiLCBwcm94eVNpbmssIG51bGxwdHIpOworCisgICAgLy8gV29ya2Fyb3Vu
ZCB0byByZWR1Y2UgdGhlIGxhdGVuY3kgaW50cm9kdWNlZCBieSB0aGUgcXVldWUgaW4gdGhlIHBy
b3h5c3JjIGVsZW1lbnQuCisgICAgR1VuaXF1ZVB0cjxHc3RJdGVyYXRvcj4gaXRlcmF0b3IoZ3N0
X2Jpbl9pdGVyYXRlX2VsZW1lbnRzKEdTVF9CSU5fQ0FTVChzcmMpKSk7CisgICAgd2hpbGUgKGdz
dF9pdGVyYXRvcl9mb3JlYWNoKGl0ZXJhdG9yLmdldCgpLCBzdGF0aWNfY2FzdDxHc3RJdGVyYXRv
ckZvcmVhY2hGdW5jdGlvbj4oW10oY29uc3QgR1ZhbHVlKiBpdGVtLCBncG9pbnRlcikgeworICAg
ICAgICBHc3RFbGVtZW50KiBlbGVtZW50ID0gR1NUX0VMRU1FTlRfQ0FTVChnX3ZhbHVlX2dldF9v
YmplY3QoaXRlbSkpOworICAgICAgICBHc3RFbGVtZW50RmFjdG9yeSogZmFjdG9yeSA9IGdzdF9l
bGVtZW50X2dldF9mYWN0b3J5KGVsZW1lbnQpOworICAgICAgICBpZiAoZmFjdG9yeSAmJiAhc3Ry
Y21wKEdTVF9PQkpFQ1RfTkFNRShmYWN0b3J5KSwgInF1ZXVlIikpCisgICAgICAgICAgICBnX29i
amVjdF9zZXQoZWxlbWVudCwgIm1heC1zaXplLWJ1ZmZlcnMiLCAxLCBudWxscHRyKTsKKyAgICAg
ICAgfSksIG51bGxwdHIpID09IEdTVF9JVEVSQVRPUl9SRVNZTkMpCisgICAgICAgIGdzdF9pdGVy
YXRvcl9yZXN5bmMoaXRlcmF0b3IuZ2V0KCkpOworCisgICAgZ3N0X2Jpbl9hZGQoR1NUX0JJTl9D
QVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCBzcmMpOworCisgICAgYm9vbCBzaG91bGRTdGFydCA9ICFt
X21peGVyLT5udW1zaW5rcGFkczsKKworICAgIEdSZWZQdHI8R3N0UGFkPiBtaXhlclBhZCA9IGFk
b3B0R1JlZihnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQobV9taXhlci5nZXQoKSwgInNpbmtf
JXUiKSk7CisgICAgR1JlZlB0cjxHc3RQYWQ+IHNyY1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVu
dF9nZXRfc3RhdGljX3BhZChzcmMsICJzcmMiKSk7CisgICAgZ3N0X3BhZF9saW5rKHNyY1BhZC5n
ZXQoKSwgbWl4ZXJQYWQuZ2V0KCkpOworCisgICAgaWYgKHNob3VsZFN0YXJ0KQorICAgICAgICBn
c3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1JFQURZKTsK
KyAgICBlbHNlCisgICAgICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQoc3Jj
KTsKKworICAgIEdTVF9ERUJVR19PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIlJlZ2lzdGVyZWQg
YXVkaW8gcHJvZHVjZXIgJSIgR1NUX1BUUl9GT1JNQVQsIG1peGVyUGFkLmdldCgpKTsKKyAgICBH
U1RfREVCVUdfQklOX1RPX0RPVF9GSUxFX1dJVEhfVFMoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUu
Z2V0KCkpLCBHU1RfREVCVUdfR1JBUEhfU0hPV19BTEwsICJhdWRpby1taXhlci1hZnRlci1wcm9k
dWNlci1yZWdpc3RyYXRpb24iKTsKKyAgICByZXR1cm4gV1RGTW92ZShtaXhlclBhZCk7Cit9CisK
K3ZvaWQgR1N0cmVhbWVyQXVkaW9NaXhlcjo6dW5yZWdpc3RlclByb2R1Y2VyKEdSZWZQdHI8R3N0
UGFkPiYmIG1peGVyUGFkKQoreworICAgIEdTVF9ERUJVR19PQkpFQ1QobV9waXBlbGluZS5nZXQo
KSwgIlVucmVnaXN0ZXJpbmcgYXVkaW8gcHJvZHVjZXIgJSIgR1NUX1BUUl9GT1JNQVQsIG1peGVy
UGFkLmdldCgpKTsKKworICAgIEdSZWZQdHI8R3N0UGFkPiBwZWVyID0gYWRvcHRHUmVmKGdzdF9w
YWRfZ2V0X3BlZXIobWl4ZXJQYWQuZ2V0KCkpKTsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHBy
b3h5U3JjID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3BhcmVudF9lbGVtZW50KHBlZXIuZ2V0KCkp
KTsKKyAgICBHU1RfTE9HX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAicHJveHlzcmM6ICUiIEdT
VF9QVFJfRk9STUFULCBwcm94eVNyYy5nZXQoKSk7CisKKyAgICBnX29iamVjdF9zZXQocHJveHlT
cmMuZ2V0KCksICJwcm94eXNpbmsiLCBudWxscHRyLCBudWxscHRyKTsKKworICAgIGdzdF9lbGVt
ZW50X3NldF9sb2NrZWRfc3RhdGUocHJveHlTcmMuZ2V0KCksIHRydWUpOworICAgIGdzdF9lbGVt
ZW50X3NldF9zdGF0ZShwcm94eVNyYy5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworCisgICAgZ3N0
X3BhZF91bmxpbmsocGVlci5nZXQoKSwgbWl4ZXJQYWQuZ2V0KCkpOworICAgIGdzdF9lbGVtZW50
X3JlbGVhc2VfcmVxdWVzdF9wYWQobV9taXhlci5nZXQoKSwgbWl4ZXJQYWQuZ2V0KCkpOworCisg
ICAgZ3N0X2Jpbl9yZW1vdmUoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCBwcm94eVNy
Yy5nZXQoKSk7CisKKyAgICBpZiAoIW1fbWl4ZXItPm51bXNpbmtwYWRzKQorICAgICAgICBnc3Rf
ZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworCisg
ICAgR1NUX0RFQlVHX0JJTl9UT19ET1RfRklMRV9XSVRIX1RTKEdTVF9CSU5fQ0FTVChtX3BpcGVs
aW5lLmdldCgpKSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMLCAiYXVkaW8tbWl4ZXItYWZ0ZXIt
cHJvZHVjZXItdW5yZWdpc3RyYXRpb24iKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9N
aXhlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckF1ZGlvTWl4ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDA0YmMzNTQ5ZWFkZjQ1ZTcyODI2MDZmYWIz
NmI1YjI3ZGI3M2E4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuaApAQCAtMCwwICsxLDYwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwKKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgIkdS
ZWZQdHJHU3RyZWFtZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgR3N0Q2xv
Y2tUaW1lIG1peGVyQmFzZVRpbWUoKQoreworICAgIHN0YXRpYyBHc3RDbG9ja1RpbWUgbWl4ZXJC
YXNlVGltZSA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgICAgaWYoIUdTVF9DTE9DS19USU1FX0lT
X1ZBTElEKG1peGVyQmFzZVRpbWUpKSB7CisgICAgICAgIEdSZWZQdHI8R3N0Q2xvY2s+IGNsb2Nr
ID0gZ3N0X3N5c3RlbV9jbG9ja19vYnRhaW4oKTsKKyAgICAgICAgbWl4ZXJCYXNlVGltZSA9IGdz
dF9jbG9ja19nZXRfdGltZShjbG9jay5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBtaXhlckJh
c2VUaW1lOworfQorCitjbGFzcyBHU3RyZWFtZXJBdWRpb01peGVyIHsKKyAgICBmcmllbmQgTmV2
ZXJEZXN0cm95ZWQ8R1N0cmVhbWVyQXVkaW9NaXhlcj47CitwdWJsaWM6CisgICAgc3RhdGljIGJv
b2wgaXNBbGxvd2VkKCk7CisgICAgc3RhdGljIEdTdHJlYW1lckF1ZGlvTWl4ZXImIHNpbmdsZXRv
bigpOworCisgICAgdm9pZCBlbnN1cmVTdGF0ZShHc3RTdGF0ZUNoYW5nZSk7CisgICAgR1JlZlB0
cjxHc3RQYWQ+IHJlZ2lzdGVyUHJvZHVjZXIoR3N0RWxlbWVudCopOworICAgIHZvaWQgdW5yZWdp
c3RlclByb2R1Y2VyKEdSZWZQdHI8R3N0UGFkPiYmKTsKKworcHJvdGVjdGVkOgorICAgIEdTdHJl
YW1lckF1ZGlvTWl4ZXIoKTsKKyAgICB+R1N0cmVhbWVyQXVkaW9NaXhlcigpOworCitwcml2YXRl
OgorICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9waXBlbGluZTsKKyAgICBHUmVmUHRyPEdzdEVs
ZW1lbnQ+IG1fbWl4ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAwODliZjc0
Zjc0ZWM2NGE2ZjgwNDQ1YzM1M2RkYTM1MTJhYjM1NGQ0Li41MjFiODExNzYwMjE3MmFjMDc5YjNh
MTE3NjkzZTEwZDJhMmYyODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtMjQs
NiArMjQsNyBAQAogI2lmIFVTRShHU1RSRUFNRVIpCiAKICNpbmNsdWRlICJHTFZpZGVvU2lua0dT
dHJlYW1lci5oIgorI2luY2x1ZGUgIkdTdHJlYW1lckF1ZGlvTWl4ZXIuaCIKICNpbmNsdWRlICJH
c3RBbGxvY2F0b3JGYXN0TWFsbG9jLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgpAQCAtNTMsNiArNTQsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUo
VklERU8pCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAi
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgiCiAjZW5kaWYKIApAQCAtMzAwLDYgKzMwMiw3IEBA
IGJvb2wgaW5pdGlhbGl6ZUdTdHJlYW1lckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMoKQogI2lm
IFVTRShHU1RSRUFNRVJfR0wpCiAgICAgICAgIGdzdF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJr
aXRnbHZpZGVvc2luayIsIEdTVF9SQU5LX1BSSU1BUlksIFdFQktJVF9UWVBFX0dMX1ZJREVPX1NJ
TkspOwogI2VuZGlmCisgICAgICAgIGdzdF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXRhdWRp
b3NpbmsiLCBHU1RfUkFOS19NQVJHSU5BTCwgV0VCS0lUX1RZUEVfQVVESU9fU0lOSyk7CiAjZW5k
aWYKICAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM5MSw2ICszOTQsMzMgQEAgYm9vbCBp
c0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQogICAgIHJldHVybiBw
bHVnaW47CiB9CiAKK0dzdEVsZW1lbnQqIGNyZWF0ZUF1ZGlvU2lua0ZvclBvbGljeShNZWRpYVBs
YXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeSBhdWRpb1JlbmRlcmluZ1BvbGljeSkKK3sK
KyAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBudWxscHRyOworICAgIHN3aXRjaCAoYXVkaW9S
ZW5kZXJpbmdQb2xpY3kpIHsKKyAgICBjYXNlIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVy
aW5nUG9saWN5OjpFeHRlcm5hbDoKKyAgICAgICAgYXVkaW9TaW5rID0gd2Via2l0QXVkaW9TaW5r
TmV3KGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZWRpYVBsYXllckVudW1zOjpB
dWRpb1JlbmRlcmluZ1BvbGljeTo6SW50ZXJuYWxNaXhpbmc6CisgICAgICAgIGlmIChHU3RyZWFt
ZXJBdWRpb01peGVyOjppc0FsbG93ZWQoKSkgeworICAgICAgICAgICAgYXVkaW9TaW5rID0gd2Vi
a2l0QXVkaW9TaW5rTmV3KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgR1NUX1dBUk5JTkcoIkludGVybmFsIGF1ZGlvIG1peGluZyByZXF1ZXN0IGNhbm5vdCBi
ZSBmdWxmaWxsZWQuIEZhbGxpbmcgYmFjayB0byBhdXRvYXVkaW9zaW5rIik7CisgICAgICAgIEZB
TExUSFJPVUdICisgICAgY2FzZSBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGlj
eTo6SG9zdERlZmF1bHQ6CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXVkaW9TaW5rID0gZ3N0X2Vs
ZW1lbnRfZmFjdG9yeV9tYWtlKCJhdXRvYXVkaW9zaW5rIiwgbnVsbHB0cik7CisgICAgICAgIGlm
ICghYXVkaW9TaW5rKSB7CisgICAgICAgICAgICBHU1RfV0FSTklORygiR1N0cmVhbWVyJ3MgYXV0
b2F1ZGlvc2luayBub3QgZm91bmQuIFBsZWFzZSBjaGVjayB5b3VyIGdzdC1wbHVnaW5zLWdvb2Qg
aW5zdGFsbGF0aW9uIik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gYXVkaW9TaW5rOworfQorCiB9CiAK
ICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IDk2
OWM3YzMzNGI5NTAzYTIxYTcyZTM3OWYxMzdjMjdhNmI5MTgxMjUuLjAyMDA4OTA4NjIwZWQ3YmE0
ZDhiZTRkY2RlYzEzZjM0NmYyNmNlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAgLTIz
LDYgKzIzLDcgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJHUmVmUHRyR1N0
cmVhbWVyLmgiCiAjaW5jbHVkZSAiR1VuaXF1ZVB0ckdTdHJlYW1lci5oIgorI2luY2x1ZGUgIk1l
ZGlhUGxheWVyRW51bXMuaCIKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3Zp
ZGVvL3ZpZGVvLWZvcm1hdC5oPgogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby1pbmZvLmg+CkBA
IC0yMjMsNiArMjI0LDggQEAgZW51bSBjbGFzcyBHc3RWaWRlb0RlY29kZXJQbGF0Zm9ybSB7IElt
eFZQVSwgVmlkZW80TGludXggfTsKIAogYm9vbCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShj
b25zdCBjaGFyKiBuYW1lKTsKIAorR3N0RWxlbWVudCogY3JlYXRlQXVkaW9TaW5rRm9yUG9saWN5
KE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5KTsKKwogfQogCiAjaWZuZGVm
IEdTVF9CVUZGRVJfRFRTX09SX1BUUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCA5ODlmMWYyMTZjZGI3NTIxNGQyNzk4NDE4YWMxYTY0OTdm
ZjUzNjM4Li45OWZmMjQ2YmRhZTliNjEwNzk3ZGYyNWM3Mjc3ZTc1ZjY4ZjliYjhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKIAogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdTdHJlYW1lckF1ZGlvTWl4ZXIuaCIKICNp
bmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKICNpbmNsdWRlICJHU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXIuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKQEAgLTQzLDYgKzQ0LDcgQEAK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNp
bmNsdWRlICJWaWRlb1NpbmtHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1NpbmtH
U3RyZWFtZXIuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCIKIAogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKQEAgLTQ2MSwxMSArNDYzLDYgQEAgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKCkKICAgICBpZiAoV0VC
S0lUX0lTX1dFQl9TUkMobV9zb3VyY2UuZ2V0KCkpICYmIEdTVF9PQkpFQ1RfUEFSRU5UKG1fc291
cmNlLmdldCgpKSkKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5j
KEdTVF9FTEVNRU5UX1BBUkVOVChtX3NvdXJjZS5nZXQoKSksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3Bv
aW50ZXI+KHVyaURlY29kZUJpbkVsZW1lbnRBZGRlZENhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBp
ZiAobV9hdXRvQXVkaW9TaW5rKSB7Ci0gICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5l
Y3RfYnlfZnVuYyhHX09CSkVDVChtX2F1dG9BdWRpb1NpbmsuZ2V0KCkpLAotICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4oc2V0QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzQ2FsbGJh
Y2spLCB0aGlzKTsKLSAgICB9Ci0KICAgICBtX3JlYWR5VGltZXJIYW5kbGVyLnN0b3AoKTsKICAg
ICBmb3IgKGF1dG8mIG1pc3NpbmdQbHVnaW5DYWxsYmFjayA6IG1fbWlzc2luZ1BsdWdpbkNhbGxi
YWNrcykgewogICAgICAgICBpZiAobWlzc2luZ1BsdWdpbkNhbGxiYWNrKQpAQCAtNzM0LDE3ICs3
MzEsMTYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNlZWsoY29uc3QgTWVk
aWFUaW1lJiBtZWRpYVRpbWUpCiAKICAgICAvLyBBdm9pZCB1c2VsZXNzIHNlZWtpbmcuCiAgICAg
aWYgKG1lZGlhVGltZSA9PSBjdXJyZW50TWVkaWFUaW1lKCkpIHsKLSAgICAgICAgR1NUX0RFQlVH
X09CSkVDVChwaXBlbGluZSgpLCAiW1NlZWtdIHNlZWsgdG8gRU9TIHBvc2l0aW9uIHVuaGFuZGxl
ZCIpOworICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJbU2Vla10gQWxyZWFk
eSBhdCByZXF1ZXN0ZWQgcG9zaXRpb24uIEFib3J0aW5nLiIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgTWVkaWFUaW1lIHRpbWUgPSBzdGQ6Om1pbihtZWRpYVRpbWUsIGR1cmF0aW9u
TWVkaWFUaW1lKCkpOwotCiAgICAgaWYgKG1faXNMaXZlU3RyZWFtKSB7CiAgICAgICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIltTZWVrXSBMaXZlIHN0cmVhbSBzZWVrIHVuaGFuZGxl
ZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgTWVkaWFUaW1lIHRpbWUgPSBzdGQ6
Om1pbihtZWRpYVRpbWUsIGR1cmF0aW9uTWVkaWFUaW1lKCkpOwogICAgIEdTVF9JTkZPX09CSkVD
VChwaXBlbGluZSgpLCAiW1NlZWtdIHNlZWtpbmcgdG8gJXMiLCB0b1N0cmluZyh0aW1lKS51dGY4
KCkuZGF0YSgpKTsKIAogICAgIGlmIChtX2lzU2Vla2luZykgewpAQCAtMTIxNSwxOCArMTIxMSwy
MSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UGxheWJpblVSTChjb25z
dCBVUkwmIHVybCkKIAogc3RhdGljIHZvaWQgc2V0U3luY09uQ2xvY2soR3N0RWxlbWVudCAqZWxl
bWVudCwgYm9vbCBzeW5jKQogeworICAgIC8vIFRoZSBwcm94eXNpbmsgZWxlbWVudCBoYXMgbm8g
InN5bmMiIHByb3BlcnR5LgorICAgIGlmIChXRUJLSVRfSVNfQVVESU9fU0lOSyhlbGVtZW50KSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFHU1RfSVNfQklOKGVsZW1lbnQpKSB7Ci0gICAg
ICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAic3luYyIsIHN5bmMsIE5VTEwpOworICAgICAgICBn
X29iamVjdF9zZXQoZWxlbWVudCwgInN5bmMiLCBzeW5jLCBudWxscHRyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIEdzdEl0ZXJhdG9yKiBpdCA9IGdzdF9iaW5faXRlcmF0ZV9zaW5r
cyhHU1RfQklOKGVsZW1lbnQpKTsKLSAgICB3aGlsZSAoZ3N0X2l0ZXJhdG9yX2ZvcmVhY2goaXQs
IChHc3RJdGVyYXRvckZvcmVhY2hGdW5jdGlvbikoW10oY29uc3QgR1ZhbHVlKiBpdGVtLCB2b2lk
KiBzeW5jUHRyKSB7CisgICAgR1VuaXF1ZVB0cjxHc3RJdGVyYXRvcj4gaXRlcmF0b3IoZ3N0X2Jp
bl9pdGVyYXRlX3NpbmtzKEdTVF9CSU5fQ0FTVChlbGVtZW50KSkpOworICAgIHdoaWxlIChnc3Rf
aXRlcmF0b3JfZm9yZWFjaChpdGVyYXRvci5nZXQoKSwgc3RhdGljX2Nhc3Q8R3N0SXRlcmF0b3JG
b3JlYWNoRnVuY3Rpb24+KFtdKGNvbnN0IEdWYWx1ZSogaXRlbSwgdm9pZCogc3luY1B0cikgewog
ICAgICAgICBib29sKiBzeW5jID0gc3RhdGljX2Nhc3Q8Ym9vbCo+KHN5bmNQdHIpOwotICAgICAg
ICBzZXRTeW5jT25DbG9jayhHU1RfRUxFTUVOVChnX3ZhbHVlX2dldF9vYmplY3QoaXRlbSkpLCAq
c3luYyk7CisgICAgICAgIHNldFN5bmNPbkNsb2NrKEdTVF9FTEVNRU5UX0NBU1QoZ192YWx1ZV9n
ZXRfb2JqZWN0KGl0ZW0pKSwgKnN5bmMpOwogICAgIH0pLCAmc3luYykgPT0gR1NUX0lURVJBVE9S
X1JFU1lOQykKLSAgICAgICAgZ3N0X2l0ZXJhdG9yX3Jlc3luYyhpdCk7Ci0gICAgZ3N0X2l0ZXJh
dG9yX2ZyZWUoaXQpOworICAgICAgICBnc3RfaXRlcmF0b3JfcmVzeW5jKGl0ZXJhdG9yLmdldCgp
KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN5bmNPbkNsb2NrKGJv
b2wgc3luYykKQEAgLTE1NjcsMjYgKzE1NjYsMjcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IK
IAogR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1Np
bmsoKQogewotICAgIG1fYXV0b0F1ZGlvU2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgi
YXV0b2F1ZGlvc2luayIsIG51bGxwdHIpOwotICAgIGlmICghbV9hdXRvQXVkaW9TaW5rKSB7Ci0g
ICAgICAgIEdTVF9XQVJOSU5HKCJHU3RyZWFtZXIncyBhdXRvYXVkaW9zaW5rIG5vdCBmb3VuZC4g
UGxlYXNlIGNoZWNrIHlvdXIgZ3N0LXBsdWdpbnMtZ29vZCBpbnN0YWxsYXRpb24iKTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgIEdTVF9JTkZPX09CSkVDVChtX3BpcGVsaW5l
LmdldCgpLCAiQ3JlYXRpbmcgYXVkaW8gc2luayBmb3IgJXMgcmVuZGVyaW5nIHBvbGljeSIsIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKG1fcGxheWVyLT5hdWRpb1JlbmRlcmluZ1BvbGljeSgp
KS51dGY4KCkuZGF0YSgpKTsKIAotICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX2F1dG9B
dWRpb1NpbmsuZ2V0KCksICJjaGlsZC1hZGRlZCIsIEdfQ0FMTEJBQ0soc2V0QXVkaW9TdHJlYW1Q
cm9wZXJ0aWVzQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBj
cmVhdGVBdWRpb1NpbmtGb3JQb2xpY3kobV9wbGF5ZXItPmF1ZGlvUmVuZGVyaW5nUG9saWN5KCkp
OworICAgIGlmICghYXVkaW9TaW5rKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogI2lmIEVO
QUJMRShXRUJfQVVESU8pCiAgICAgR3N0RWxlbWVudCogYXVkaW9TaW5rQmluID0gZ3N0X2Jpbl9u
ZXcoImF1ZGlvLXNpbmsiKTsKICAgICBlbnN1cmVBdWRpb1NvdXJjZVByb3ZpZGVyKCk7Ci0gICAg
bV9hdWRpb1NvdXJjZVByb3ZpZGVyLT5jb25maWd1cmVBdWRpb0JpbihhdWRpb1NpbmtCaW4sIG51
bGxwdHIpOworICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlci0+Y29uZmlndXJlQXVkaW9CaW4oYXVk
aW9TaW5rQmluLCBhdWRpb1NpbmspOwogICAgIHJldHVybiBhdWRpb1NpbmtCaW47CiAjZWxzZQot
ICAgIHJldHVybiBtX2F1dG9BdWRpb1NpbmsuZ2V0KCk7CisgICAgcmV0dXJuIGF1ZGlvU2luazsK
ICNlbmRpZgogfQogCiBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmF1
ZGlvU2luaygpIGNvbnN0CiB7CisgICAgaWYgKCFtX3BpcGVsaW5lKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKwogICAgIEdzdEVsZW1lbnQqIHNpbms7CiAgICAgZ19vYmplY3RfZ2V0KG1fcGlw
ZWxpbmUuZ2V0KCksICJhdWRpby1zaW5rIiwgJnNpbmssIG51bGxwdHIpOwogICAgIHJldHVybiBz
aW5rOwpAQCAtMjk5Nyw2ICsyOTk3LDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjcmVhdGVHU1RQbGF5QmluKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAg
c3RhdGljIEF0b21pYzx1aW50MzJfdD4gcGlwZWxpbmVJZDsKICAgICBzZXRQaXBlbGluZShnc3Rf
ZWxlbWVudF9mYWN0b3J5X21ha2UocGxheWJpbk5hbWUsCiAgICAgICAgIChwaXBlbGluZU5hbWUu
aXNFbXB0eSgpID8gbWFrZVN0cmluZygibWVkaWEtcGxheWVyLSIsIHBpcGVsaW5lSWQuZXhjaGFu
Z2VBZGQoMSkpIDogcGlwZWxpbmVOYW1lKS51dGY4KCkuZGF0YSgpKSk7CisKKyAgICBpZiAoR1N0
cmVhbWVyQXVkaW9NaXhlcjo6aXNBbGxvd2VkKCkpIHsKKyAgICAgICAgR1JlZlB0cjxHc3RDbG9j
az4gY2xvY2sgPSBnc3Rfc3lzdGVtX2Nsb2NrX29idGFpbigpOworICAgICAgICBnc3RfcGlwZWxp
bmVfdXNlX2Nsb2NrKEdTVF9QSVBFTElORV9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCBjbG9jay5n
ZXQoKSk7CisgICAgICAgIGdzdF9lbGVtZW50X3NldF9iYXNlX3RpbWUobV9waXBlbGluZS5nZXQo
KSwgbWl4ZXJCYXNlVGltZSgpKTsKKyAgICB9CisKICAgICBzZXRTdHJlYW1Wb2x1bWVFbGVtZW50
KEdTVF9TVFJFQU1fVk9MVU1FKG1fcGlwZWxpbmUuZ2V0KCkpKTsKIAogICAgIEdTVF9JTkZPX09C
SkVDVChwaXBlbGluZSgpLCAiVXNpbmcgbGVnYWN5IHBsYXliaW4gZWxlbWVudDogJXMiLCBib29s
Rm9yUHJpbnRpbmcobV9pc0xlZ2FjeVBsYXliaW4pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1
ZGlvU2lua0dTdHJlYW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ4MzliZWM4ZjZiODg3NzlkMDBlZjU0
NmQxMTU1NTlmMGE5MDI1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCkBAIC0w
LDAgKzEsMzc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwKKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmgiCisKKyNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlICJHU3RyZWFtZXJB
dWRpb01peGVyLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCisjaW5jbHVkZSA8Z3N0
L2FwcC9nc3RhcHBzaW5rLmg+CisjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5z
Lmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5o
PgorCisjaWYgUExBVEZPUk0oV1BFKQorI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtRGlzcGxheUxpYldQRS5oIgorI2luY2x1ZGUgPHdwZS9leHRlbnNpb25z
L2F1ZGlvLmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0cnVjdCBf
V2ViS2l0QXVkaW9TaW5rUHJpdmF0ZSB7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBwcm94eVNp
bms7CisgICAgR1JlZlB0cjxHc3RQYWQ+IG1peGVyUGFkOworICAgIGd1bG9uZyBwYWRFdmVudFBy
b2JlSWQ7CisgICAgZ3Vsb25nIHBhZEJ1ZmZlclByb2JlSWQ7CisgICAgR1JlZlB0cjxHc3RFbGVt
ZW50PiB2b2x1bWVFbGVtZW50OworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXBwc2luazsKKyAg
ICBnYm9vbGVhbiBlbmFibGVJbnRlcm5hbE1peGluZzsKKyNpZiBQTEFURk9STShXUEUpCisgICAg
c3RydWN0IHdwZV9hdWRpb19zb3VyY2UqIHdwZUF1ZGlvU291cmNlOworICAgIGludCBtX3N0cmVh
bUlkOworICAgIGJvb2wgc291cmNlU3RhcnRlZDsKKyNlbmRpZgorfTsKKworZW51bSB7CisgICAg
UFJPUF8wLAorICAgIFBST1BfVk9MVU1FLAorICAgIFBST1BfTVVURSwKKyAgICBQUk9QX0VOQUJM
RV9JTlRFUk5BTF9NSVhJTkcsCit9OworCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lu
a1RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUoInNpbmsiLCBHU1RfUEFEX1NJTkss
IEdTVF9QQURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQUygiYXVkaW8veC1yYXciKSk7CisK
K0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMod2Via2l0X2F1ZGlvX3NpbmtfZGVidWcpOworI2Rl
ZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X2F1ZGlvX3NpbmtfZGVidWcKKworI2RlZmluZSB3
ZWJraXRfYXVkaW9fc2lua19wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCitXRUJLSVRfREVGSU5F
X1RZUEVfV0lUSF9DT0RFKFdlYktpdEF1ZGlvU2luaywgd2Via2l0X2F1ZGlvX3NpbmssIEdTVF9U
WVBFX0JJTiwKKyAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoR1NUX1RZUEVfU1RSRUFNX1ZPTFVN
RSwgbnVsbHB0cik7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X2F1ZGlvX3Np
bmtfZGVidWcsICJ3ZWJraXRhdWRpb3NpbmsiLCAwLCAid2Via2l0IGF1ZGlvIHNpbmsgZWxlbWVu
dCIpCispCisKK3N0YXRpYyB2b2lkIHdlYktpdEF1ZGlvU2lua0NvbnN0cnVjdGVkKEdPYmplY3Qq
IG9iamVjdCkKK3sKKyAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGNvbnN0cnVj
dGVkLCAob2JqZWN0KSk7CisKKyAgICBXZWJLaXRBdWRpb1NpbmsqIHNpbmsgPSBXRUJLSVRfQVVE
SU9fU0lOSyhvYmplY3QpOworCisgICAgaWYgKHNpbmstPnByaXYtPmVuYWJsZUludGVybmFsTWl4
aW5nKSB7CisgICAgICAgIHNpbmstPnByaXYtPnByb3h5U2luayA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfbWFrZSgicHJveHlzaW5rIiwgbnVsbHB0cik7CisgICAgICAgIGlmICghc2luay0+cHJpdi0+
cHJveHlTaW5rKSB7CisgICAgICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNpbmssICJGYWlsZWQg
dG8gY3JlYXRlIHByb3h5c2luayIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgZ3N0X2Jpbl9hZGQoR1NUX0JJTl9DQVNUKHNpbmspLCBzaW5rLT5wcml2LT5wcm94
eVNpbmsuZ2V0KCkpOworCisgICAgICAgIEdSZWZQdHI8R3N0UGFkPiB0YXJnZXRQYWQgPSBhZG9w
dEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoc2luay0+cHJpdi0+cHJveHlTaW5rLmdl
dCgpLCAic2luayIpKTsKKworICAgICAgICAvLyBJbnRlcmNlcHQgRU9TIGV2ZW50cyBhbmQgcmVs
YXkgdGhlbSB0byB0aGUgYnVzIGFzIEVPUyBtZXNzYWdlcy4gTm9ybWFsbHkKKyAgICAgICAgLy8g
YmFzZXNpbmsgaXMgaW4gY2hhcmdlIG9mIHRoaXMgYnV0IGJlY2F1c2UgcHJveHlzaW5rIGRvZXNu
J3QgaW5oZXJpdCBmcm9tCisgICAgICAgIC8vIGJhc2VzaW5rLCB3ZSBoYXZlIHRvIHRha2UgY2Fy
ZSBvZiBpdCBvdXJzZWx2ZXMuCisgICAgICAgIHNpbmstPnByaXYtPnBhZEV2ZW50UHJvYmVJZCA9
IGdzdF9wYWRfYWRkX3Byb2JlKHRhcmdldFBhZC5nZXQoKSwgR1NUX1BBRF9QUk9CRV9UWVBFX0VW
RU5UX0RPV05TVFJFQU0sIFtdKEdzdFBhZCogcGFkLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sICBn
cG9pbnRlcikgLT4gR3N0UGFkUHJvYmVSZXR1cm4geworICAgICAgICAgICAgaWYgKEdTVF9FVkVO
VF9UWVBFKEdTVF9QQURfUFJPQkVfSU5GT19FVkVOVChpbmZvKSkgIT0gR1NUX0VWRU5UX0VPUykK
KyAgICAgICAgICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKKyAgICAgICAgICAgIEdS
ZWZQdHI8R3N0RWxlbWVudD4gc2luayA9IGFkb3B0R1JlZihnc3RfcGFkX2dldF9wYXJlbnRfZWxl
bWVudChwYWQpKTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShzaW5rLmdl
dCgpLCBnc3RfbWVzc2FnZV9uZXdfZW9zKEdTVF9PQkpFQ1RfQ0FTVChzaW5rLmdldCgpKSkpOwor
ICAgICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisgICAgICAgIH0sIG51bGxwdHIs
IG51bGxwdHIpOworCisgICAgICAgIHNpbmstPnByaXYtPnBhZEJ1ZmZlclByb2JlSWQgPSBnc3Rf
cGFkX2FkZF9wcm9iZSh0YXJnZXRQYWQuZ2V0KCksIEdTVF9QQURfUFJPQkVfVFlQRV9CVUZGRVIs
IFtdKEdzdFBhZCogcGFkLCBHc3RQYWRQcm9iZUluZm8qLCBncG9pbnRlcikgLT4gR3N0UGFkUHJv
YmVSZXR1cm4geworICAgICAgICAgICAgc3RhdGljIGJvb2wgbm90aWZpZWQgPSBmYWxzZTsKKyAg
ICAgICAgICAgIGlmICghbm90aWZpZWQpIHsKKyAgICAgICAgICAgICAgICBub3RpZmllZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBzaW5rID0gYWRvcHRHUmVm
KGdzdF9wYWRfZ2V0X3BhcmVudF9lbGVtZW50KHBhZCkpOworICAgICAgICAgICAgICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChzaW5rLmdldCgpKSwgInZvbHVtZSIpOworICAgICAgICAgICAg
ICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzaW5rLmdldCgpKSwgIm11dGUiKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOworICAgICAgICB9
LCBudWxscHRyLCBudWxscHRyKTsKKworICAgICAgICBHc3RQYWQqIHNpbmtQYWQgPSB3ZWJraXRH
c3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZSgmc2lua1RlbXBsYXRlLCAic2luayIsIHRhcmdl
dFBhZC5nZXQoKSk7CisgICAgICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoR1NUX0VMRU1FTlRfQ0FT
VChzaW5rKSwgc2lua1BhZCk7CisgICAgICAgIEdTVF9PQkpFQ1RfRkxBR19TRVQoc2lua1BhZCwg
R1NUX1BBRF9GTEFHX05FRURfUEFSRU5UKTsKKyAgICB9IGVsc2UgeworI2lmIFBMQVRGT1JNKFdQ
RSkKKyAgICAgICAgc2luay0+cHJpdi0+c291cmNlU3RhcnRlZCA9IGZhbHNlOworICAgICAgICBh
dXRvJiBzaGFyZWREaXNwbGF5ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCk7Cisg
ICAgICAgIGlmIChpczxQbGF0Zm9ybURpc3BsYXlMaWJXUEU+KHNoYXJlZERpc3BsYXkpKQorICAg
ICAgICAgICAgc2luay0+cHJpdi0+d3BlQXVkaW9Tb3VyY2UgPSB3cGVfYXVkaW9fc291cmNlX2Ny
ZWF0ZShkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlMaWJXUEU+KHNoYXJlZERpc3BsYXkpLmJhY2tl
bmQoKSk7CisKKyAgICAgICAgc2luay0+cHJpdi0+dm9sdW1lRWxlbWVudCA9IGdzdF9lbGVtZW50
X2ZhY3RvcnlfbWFrZSgidm9sdW1lIiwgbnVsbHB0cik7CisgICAgICAgIHNpbmstPnByaXYtPmFw
cHNpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImFwcHNpbmsiLCBudWxscHRyKTsKKyAg
ICAgICAgZ3N0X2FwcF9zaW5rX3NldF9lbWl0X3NpZ25hbHMoR1NUX0FQUF9TSU5LKHNpbmstPnBy
aXYtPmFwcHNpbmsuZ2V0KCkpLCBUUlVFKTsKKworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHNp
bmstPnByaXYtPmFwcHNpbmsuZ2V0KCksICJuZXctc2FtcGxlIiwgR19DQUxMQkFDSygrW10oR3N0
RWxlbWVudCogYXBwc2luaywgV2ViS2l0QXVkaW9TaW5rKiBzaW5rKSAtPiBHc3RGbG93UmV0dXJu
IHsKKyAgICAgICAgICAgIEdSZWZQdHI8R3N0U2FtcGxlPiBzYW1wbGUgPSBhZG9wdEdSZWYoZ3N0
X2FwcF9zaW5rX3B1bGxfc2FtcGxlKEdTVF9BUFBfU0lOSyhhcHBzaW5rKSkpOworICAgICAgICAg
ICAgc3RydWN0IHdwZV9hdWRpb19zb3VyY2UqIHdwZUF1ZGlvU291cmNlID0gc2luay0+cHJpdi0+
d3BlQXVkaW9Tb3VyY2U7CisgICAgICAgICAgICBzdGF0aWMgQXRvbWljPGludDMyX3Q+IHVuaXF1
ZUlkOworCisgICAgICAgICAgICBpZiAoIXNpbmstPnByaXYtPnNvdXJjZVN0YXJ0ZWQpIHsKKyAg
ICAgICAgICAgICAgICBzaW5rLT5wcml2LT5tX3N0cmVhbUlkID0gdW5pcXVlSWQuZXhjaGFuZ2VB
ZGQoMSk7CisgICAgICAgICAgICAgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2Nh
cHMoc2FtcGxlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBHc3RBdWRpb0luZm8gaW5mbzsKKyAg
ICAgICAgICAgICAgICBnc3RfYXVkaW9faW5mb19pbml0KCZpbmZvKTsKKyAgICAgICAgICAgICAg
ICBnc3RfYXVkaW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpOworICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGZvcm1hdCA9IGdzdF9hdWRpb19mb3JtYXRfdG9fc3RyaW5nKEdTVF9BVURJ
T19JTkZPX0ZPUk1BVCgmaW5mbykpOworICAgICAgICAgICAgICAgIHdwZV9hdWRpb19zb3VyY2Vf
c3RhcnQod3BlQXVkaW9Tb3VyY2UsIHNpbmstPnByaXYtPm1fc3RyZWFtSWQsIEdTVF9BVURJT19J
TkZPX0NIQU5ORUxTICgmaW5mbyksIGZvcm1hdCwgR1NUX0FVRElPX0lORk9fUkFURSgmaW5mbykp
OworICAgICAgICAgICAgICAgIHNpbmstPnByaXYtPnNvdXJjZVN0YXJ0ZWQgPSB0cnVlOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB1aW50MzJfdCBpZCA9IHNpbmstPnByaXYtPm1fc3Ry
ZWFtSWQ7CisgICAgICAgICAgICBhdXRvKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIo
c2FtcGxlLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gbWFwcGVkQnVmZmVyID0gR3N0TWFwcGVk
QnVmZmVyOjpjcmVhdGUoYnVmZmVyLCBHU1RfTUFQX1JFQUQpOworICAgICAgICAgICAgaW50MzJf
dCBmZCA9IG1lbWZkX2NyZWF0ZSgiYXVkaW8tYnVmZmVyIiwgTUZEX0NMT0VYRUMpOworICAgICAg
ICAgICAgZnRydW5jYXRlKGZkLCBtYXBwZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB3
cml0ZShmZCwgbWFwcGVkQnVmZmVyLT5kYXRhKCksIG1hcHBlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIGxzZWVrKGZkLCAwLCBTRUVLX1NFVCk7CisKKyAgICAgICAgICAgIHdwZV9hdWRp
b19zb3VyY2VfcGFja2V0KHdwZUF1ZGlvU291cmNlLCBpZCwgZmQsIG1hcHBlZEJ1ZmZlci0+c2l6
ZSgpLCBbXSh2b2lkKiBkYXRhKSB7CisgICAgICAgICAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihH
U1RfQlVGRkVSX0NBU1QoZGF0YSkpOworICAgICAgICAgICAgfSwgZ3N0X2J1ZmZlcl9yZWYoYnVm
ZmVyKSk7CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICByZXR1cm4gR1NUX0ZM
T1dfT0s7CisgICAgICAgIH0pLCBzaW5rKTsKKworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHNp
bmstPnByaXYtPmFwcHNpbmsuZ2V0KCksICJlb3MiLCBHX0NBTExCQUNLKCtbXShHc3RFbGVtZW50
KiwgV2ViS2l0QXVkaW9TaW5rKiBzaW5rKSB7CisgICAgICAgICAgICBzdHJ1Y3Qgd3BlX2F1ZGlv
X3NvdXJjZSogd3BlQXVkaW9Tb3VyY2UgPSBzaW5rLT5wcml2LT53cGVBdWRpb1NvdXJjZTsKKyAg
ICAgICAgICAgIHdwZV9hdWRpb19zb3VyY2Vfc3RvcCh3cGVBdWRpb1NvdXJjZSwgc2luay0+cHJp
di0+bV9zdHJlYW1JZCk7CisgICAgICAgIH0pLCBzaW5rKTsKKworICAgICAgICBnc3RfYmluX2Fk
ZF9tYW55KEdTVF9CSU5fQ0FTVChzaW5rKSwgc2luay0+cHJpdi0+dm9sdW1lRWxlbWVudC5nZXQo
KSwgc2luay0+cHJpdi0+YXBwc2luay5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIGdzdF9lbGVt
ZW50X2xpbmsoc2luay0+cHJpdi0+dm9sdW1lRWxlbWVudC5nZXQoKSwgc2luay0+cHJpdi0+YXBw
c2luay5nZXQoKSk7CisKKyAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHRhcmdldFBhZCA9IGFkb3B0
R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChzaW5rLT5wcml2LT52b2x1bWVFbGVtZW50
LmdldCgpLCAic2luayIpKTsKKyAgICAgICAgR3N0UGFkKiBzaW5rUGFkID0gd2Via2l0R3N0R2hv
c3RQYWRGcm9tU3RhdGljVGVtcGxhdGUoJnNpbmtUZW1wbGF0ZSwgInNpbmsiLCB0YXJnZXRQYWQu
Z2V0KCkpOworICAgICAgICBnc3RfZWxlbWVudF9hZGRfcGFkKEdTVF9FTEVNRU5UX0NBU1Qoc2lu
ayksIHNpbmtQYWQpOworICAgICAgICBHU1RfT0JKRUNUX0ZMQUdfU0VUKHNpbmtQYWQsIEdTVF9Q
QURfRkxBR19ORUVEX1BBUkVOVCk7CisjZWxzZQorICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNp
bmssICJFeHRlcm5hbCBhdWRpbyByZW5kZXJpbmcgaXMgc3VwcG9ydGVkIG9ubHkgaW4gV1BFV2Vi
S2l0Iik7CisgICAgICAgIHJldHVybjsKKyNlbmRpZgorICAgIH0KKworICAgIEdTVF9PQkpFQ1Rf
RkxBR19TRVQoc2luaywgR1NUX0VMRU1FTlRfRkxBR19TSU5LKTsKK30KKworc3RhdGljIHZvaWQg
d2ViS2l0QXVkaW9TaW5rRGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0QXVk
aW9TaW5rUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9BVURJT19TSU5LKG9iamVjdCktPnByaXY7CisK
KyAgICBpZiAocHJpdi0+cGFkRXZlbnRQcm9iZUlkKSB7CisgICAgICAgIEdSZWZQdHI8R3N0UGFk
PiBzaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHByaXYtPnBy
b3h5U2luay5nZXQoKSwgInNpbmsiKSk7CisgICAgICAgIGdzdF9wYWRfcmVtb3ZlX3Byb2JlKHNp
bmtQYWQuZ2V0KCksIHByaXYtPnBhZEV2ZW50UHJvYmVJZCk7CisgICAgICAgIHByaXYtPnBhZEV2
ZW50UHJvYmVJZCA9IDA7CisgICAgfQorCisgICAgaWYgKHByaXYtPnBhZEJ1ZmZlclByb2JlSWQp
IHsKKyAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1l
bnRfZ2V0X3N0YXRpY19wYWQocHJpdi0+cHJveHlTaW5rLmdldCgpLCAic2luayIpKTsKKyAgICAg
ICAgZ3N0X3BhZF9yZW1vdmVfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJpdi0+cGFkQnVmZmVyUHJv
YmVJZCk7CisgICAgICAgIHByaXYtPnBhZEJ1ZmZlclByb2JlSWQgPSAwOworICAgIH0KKworI2lm
IFBMQVRGT1JNKFdQRSkKKyAgICBpZiAocHJpdi0+d3BlQXVkaW9Tb3VyY2UpCisgICAgICAgIHdw
ZV9hdWRpb19zb3VyY2VfZGVzdHJveShwcml2LT53cGVBdWRpb1NvdXJjZSk7CisjZW5kaWYKKwor
ICAgIEdTVF9DQUxMX1BBUkVOVChHX09CSkVDVF9DTEFTUywgZGlzcG9zZSwgKG9iamVjdCkpOwor
fQorCitzdGF0aWMgR3N0T2JqZWN0KiBnZXRJbnRlcm5hbFZvbHVtZVByb3h5KFdlYktpdEF1ZGlv
U2luayogc2luaykKK3sKKyAgICBpZiAoc2luay0+cHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhpbmcp
IHsKKyAgICAgICAgaWYgKCFzaW5rLT5wcml2LT5taXhlclBhZCkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgICAgIHJldHVybiBHU1RfT0JKRUNUX0NBU1Qoc2luay0+cHJpdi0+
bWl4ZXJQYWQuZ2V0KCkpOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gR1NUX09CSkVDVF9D
QVNUKHNpbmstPnByaXYtPnZvbHVtZUVsZW1lbnQuZ2V0KCkpOworfQorCitzdGF0aWMgdm9pZCB3
ZWJLaXRBdWRpb1NpbmtTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwg
Y29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0QXVk
aW9TaW5rKiBzaW5rID0gV0VCS0lUX0FVRElPX1NJTksob2JqZWN0KTsKKworICAgIHN3aXRjaCAo
cHJvcElEKSB7CisgICAgY2FzZSBQUk9QX1ZPTFVNRTogeworICAgICAgICBHc3RPYmplY3QqIGlu
dGVybmFsT2JqZWN0ID0gZ2V0SW50ZXJuYWxWb2x1bWVQcm94eShzaW5rKTsKKyAgICAgICAgaWYg
KCFpbnRlcm5hbE9iamVjdCkgeworICAgICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUKHNpbmss
ICJObyBhc3NvY2lhdGVkIG1peGVyIHBhZCwgY2FuJ3Qgc2V0ICVzIHByb3BlcnR5IiwgZ19wYXJh
bV9zcGVjX2dldF9uYW1lKHBzcGVjKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgZ19vYmplY3Rfc2V0KGludGVybmFsT2JqZWN0LCAidm9sdW1lIiwgZ192YWx1ZV9n
ZXRfZG91YmxlKHZhbHVlKSwgbnVsbHB0cik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIFBST1BfTVVURTogeworICAgICAgICBHc3RPYmplY3QqIGludGVybmFsT2JqZWN0ID0gZ2V0
SW50ZXJuYWxWb2x1bWVQcm94eShzaW5rKTsKKyAgICAgICAgaWYgKCFpbnRlcm5hbE9iamVjdCkg
eworICAgICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUKHNpbmssICJObyBhc3NvY2lhdGVkIG1p
eGVyIHBhZCwgY2FuJ3Qgc2V0ICVzIHByb3BlcnR5IiwgZ19wYXJhbV9zcGVjX2dldF9uYW1lKHBz
cGVjKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZ19vYmplY3Rf
c2V0KGludGVybmFsT2JqZWN0LCAibXV0ZSIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpLCBu
dWxscHRyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9FTkFCTEVfSU5U
RVJOQUxfTUlYSU5HOgorICAgICAgICBzaW5rLT5wcml2LT5lbmFibGVJbnRlcm5hbE1peGluZyA9
IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
SUQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJL
aXRBdWRpb1NpbmtHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgR1Zh
bHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0QXVkaW9TaW5rKiBz
aW5rID0gV0VCS0lUX0FVRElPX1NJTksob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElEKSB7
CisgICAgY2FzZSBQUk9QX1ZPTFVNRTogeworICAgICAgICBHc3RPYmplY3QqIGludGVybmFsT2Jq
ZWN0ID0gZ2V0SW50ZXJuYWxWb2x1bWVQcm94eShzaW5rKTsKKyAgICAgICAgaWYgKCFpbnRlcm5h
bE9iamVjdCkgeworICAgICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUKHNpbmssICJObyBhc3Nv
Y2lhdGVkIG1peGVyIHBhZCwgY2FuJ3QgZ2V0ICVzIHByb3BlcnR5IiwgZ19wYXJhbV9zcGVjX2dl
dF9uYW1lKHBzcGVjKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
ZG91YmxlIHZvbHVtZTsKKyAgICAgICAgZ19vYmplY3RfZ2V0KGludGVybmFsT2JqZWN0LCAidm9s
dW1lIiwgJnZvbHVtZSwgbnVsbHB0cik7CisgICAgICAgIGdfdmFsdWVfc2V0X2RvdWJsZSh2YWx1
ZSwgdm9sdW1lKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9NVVRFOiB7
CisgICAgICAgIEdzdE9iamVjdCogaW50ZXJuYWxPYmplY3QgPSBnZXRJbnRlcm5hbFZvbHVtZVBy
b3h5KHNpbmspOworICAgICAgICBpZiAoIWludGVybmFsT2JqZWN0KSB7CisgICAgICAgICAgICBH
U1RfV0FSTklOR19PQkpFQ1Qoc2luaywgIk5vIGFzc29jaWF0ZWQgbWl4ZXIgcGFkLCBjYW4ndCBn
ZXQgJXMgcHJvcGVydHkiLCBnX3BhcmFtX3NwZWNfZ2V0X25hbWUocHNwZWMpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBnYm9vbGVhbiBtdXRlOworICAgICAgICBn
X29iamVjdF9nZXQoaW50ZXJuYWxPYmplY3QsICJtdXRlIiwgJm11dGUsIG51bGxwdHIpOworICAg
ICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBtdXRlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgUFJPUF9FTkFCTEVfSU5URVJOQUxfTUlYSU5HOgorICAgICAgICBnX3Zh
bHVlX3NldF9ib29sZWFuKHZhbHVlLCBzaW5rLT5wcml2LT5lbmFibGVJbnRlcm5hbE1peGluZyk7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5W
QUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcHNwZWMpOworICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJLaXRBdWRpb1NpbmtRdWVyeShHc3RFbGVt
ZW50KiBlbGVtZW50LCBHc3RRdWVyeSogcXVlcnkpCit7CisgICAgV2ViS2l0QXVkaW9TaW5rKiBz
aW5rID0gV0VCS0lUX0FVRElPX1NJTksoZWxlbWVudCk7CisKKyAgICBpZiAoc2luay0+cHJpdi0+
ZW5hYmxlSW50ZXJuYWxNaXhpbmcpIHsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzaW5rLCAi
SGFuZGxpbmcgJSIgR1NUX1BUUl9GT1JNQVQsIHF1ZXJ5KTsKKworICAgICAgICBpZiAoc2luay0+
cHJpdi0+bWl4ZXJQYWQgJiYgKChHU1RfUVVFUllfVFlQRShxdWVyeSkgPT0gR1NUX1FVRVJZX1BP
U0lUSU9OKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHx8IEdTVF9R
VUVSWV9UWVBFKHF1ZXJ5KSA9PSBHU1RfUVVFUllfRFVSQVRJT04KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApKSB7CisgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNp
bmssICJGb3J3YXJkaW5nIHRvIG1peGVyLXBhZCAlIiBHU1RfUFRSX0ZPUk1BVCwgc2luay0+cHJp
di0+bWl4ZXJQYWQuZ2V0KCkpOworICAgICAgICAgICAgLy8gaWYgKGdzdF9wYWRfcXVlcnkoc2lu
ay0+cHJpdi0+bWl4ZXJQYWQuZ2V0KCksIHF1ZXJ5KSkKKyAgICAgICAgICAgIC8vICAgICByZXR1
cm4gVFJVRTsKKyAgICAgICAgICAgIHJldHVybiBnc3RfcGFkX3F1ZXJ5KHNpbmstPnByaXYtPm1p
eGVyUGFkLmdldCgpLCBxdWVyeSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gR1NU
X0NBTExfUEFSRU5UX1dJVEhfREVGQVVMVChHU1RfRUxFTUVOVF9DTEFTUywgcXVlcnksIChlbGVt
ZW50LCBxdWVyeSksIEZBTFNFKTsKK30KKworc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdl
YktpdEF1ZGlvU2lua0NoYW5nZVN0YXRlKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFN0YXRlQ2hh
bmdlIHN0YXRlQ2hhbmdlKQoreworICAgIFdlYktpdEF1ZGlvU2luayogc2luayA9IFdFQktJVF9B
VURJT19TSU5LKGVsZW1lbnQpOworCisjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMTQsIDApCisg
ICAgR1NUX0RFQlVHX09CSkVDVChzaW5rLCAiSGFuZGxpbmcgJXMgdHJhbnNpdGlvbiIsIGdzdF9z
dGF0ZV9jaGFuZ2VfZ2V0X25hbWUoc3RhdGVDaGFuZ2UpKTsKKyNlbmRpZgorCisgICAgYXV0byYg
bWl4ZXIgPSBHU3RyZWFtZXJBdWRpb01peGVyOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoc2luay0+
cHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhpbmcgJiYgKHN0YXRlQ2hhbmdlID09IEdTVF9TVEFURV9D
SEFOR0VfTlVMTF9UT19SRUFEWSkpIHsKKyAgICAgICAgaWYgKCFzaW5rLT5wcml2LT5wcm94eVNp
bmspIHsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShlbGVtZW50LCBnc3Rf
bWlzc2luZ19lbGVtZW50X21lc3NhZ2VfbmV3KGVsZW1lbnQsICJwcm94eXNpbmsiKSk7CisgICAg
ICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihzaW5rLCBDT1JFLCBNSVNTSU5HX1BMVUdJTiwgKG51
bGxwdHIpLCAoIm5vIHByb3h5c2luayIpKTsKKyAgICAgICAgICAgIHJldHVybiBHU1RfU1RBVEVf
Q0hBTkdFX0ZBSUxVUkU7CisgICAgICAgIH0KKyAgICAgICAgc2luay0+cHJpdi0+bWl4ZXJQYWQg
PSBtaXhlci5yZWdpc3RlclByb2R1Y2VyKHNpbmstPnByaXYtPnByb3h5U2luay5nZXQoKSk7Cisg
ICAgfQorCisjaWYgUExBVEZPUk0oV1BFKQorICAgIGlmICghc2luay0+cHJpdi0+ZW5hYmxlSW50
ZXJuYWxNaXhpbmcgJiYgKHN0YXRlQ2hhbmdlID09IEdTVF9TVEFURV9DSEFOR0VfUExBWUlOR19U
T19QQVVTRUQpKSB7CisgICAgICAgIHN0cnVjdCB3cGVfYXVkaW9fc291cmNlKiB3cGVBdWRpb1Nv
dXJjZSA9IHNpbmstPnByaXYtPndwZUF1ZGlvU291cmNlOworICAgICAgICB3cGVfYXVkaW9fc291
cmNlX3BhdXNlKHdwZUF1ZGlvU291cmNlLCBzaW5rLT5wcml2LT5tX3N0cmVhbUlkKTsKKyAgICB9
CisjZW5kaWYKKworICAgIGlmIChzaW5rLT5wcml2LT5lbmFibGVJbnRlcm5hbE1peGluZykKKyAg
ICAgICAgbWl4ZXIuZW5zdXJlU3RhdGUoc3RhdGVDaGFuZ2UpOworCisgICAgR3N0U3RhdGVDaGFu
Z2VSZXR1cm4gcmVzdWx0ID0gR1NUX0NBTExfUEFSRU5UX1dJVEhfREVGQVVMVChHU1RfRUxFTUVO
VF9DTEFTUywgY2hhbmdlX3N0YXRlLCAoZWxlbWVudCwgc3RhdGVDaGFuZ2UpLCBHU1RfU1RBVEVf
Q0hBTkdFX0ZBSUxVUkUpOworCisgICAgaWYgKHNpbmstPnByaXYtPmVuYWJsZUludGVybmFsTWl4
aW5nICYmIChzdGF0ZUNoYW5nZSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05VTEwpICYm
IChyZXN1bHQgPiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpKQorICAgICAgICBtaXhlci51bnJl
Z2lzdGVyUHJvZHVjZXIoV1RGTW92ZShzaW5rLT5wcml2LT5taXhlclBhZCkpOworCisjaWYgUExB
VEZPUk0oV1BFKQorICAgIGlmICghc2luay0+cHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhpbmcgJiYg
c2luay0+cHJpdi0+c291cmNlU3RhcnRlZCAmJiAoc3RhdGVDaGFuZ2UgPT0gR1NUX1NUQVRFX0NI
QU5HRV9QQVVTRURfVE9fUExBWUlORykgJiYgKHJlc3VsdCA+IEdTVF9TVEFURV9DSEFOR0VfRkFJ
TFVSRSkpIHsKKyAgICAgICAgc3RydWN0IHdwZV9hdWRpb19zb3VyY2UqIHdwZUF1ZGlvU291cmNl
ID0gc2luay0+cHJpdi0+d3BlQXVkaW9Tb3VyY2U7CisgICAgICAgIHdwZV9hdWRpb19zb3VyY2Vf
cmVzdW1lKHdwZUF1ZGlvU291cmNlLCBzaW5rLT5wcml2LT5tX3N0cmVhbUlkKTsKKyAgICB9Cisj
ZW5kaWYKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9hdWRp
b19zaW5rX2NsYXNzX2luaXQoV2ViS2l0QXVkaW9TaW5rQ2xhc3MqIGtsYXNzKQoreworICAgIEdP
YmplY3RDbGFzcyogb2tsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIG9rbGFzcy0+
Y29uc3RydWN0ZWQgPSB3ZWJLaXRBdWRpb1NpbmtDb25zdHJ1Y3RlZDsKKyAgICBva2xhc3MtPmRp
c3Bvc2UgPSB3ZWJLaXRBdWRpb1NpbmtEaXNwb3NlOworICAgIG9rbGFzcy0+c2V0X3Byb3BlcnR5
ID0gd2ViS2l0QXVkaW9TaW5rU2V0UHJvcGVydHk7CisgICAgb2tsYXNzLT5nZXRfcHJvcGVydHkg
PSB3ZWJLaXRBdWRpb1NpbmtHZXRQcm9wZXJ0eTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkob2tsYXNzLCBQUk9QX1ZPTFVNRSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX2Rv
dWJsZSgidm9sdW1lIiwgIlZvbHVtZSIsICJUaGUgYXVkaW8gdm9sdW1lLCAxLjA9MTAwJSIsIDAu
MCwgMTAuMCwgMS4wLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KEdfUEFS
QU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KG9rbGFzcywgUFJPUF9NVVRFLAorICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigibXV0ZSIsICJNdXRlIiwgIk11dGUgdGhlIGF1ZGlvIGNoYW5uZWwgd2l0
aG91dCBjaGFuZ2luZyB0aGUgdm9sdW1lIiwgRkFMU0UsCisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxHUGFyYW1GbGFncz4oR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdT
KSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNzLCBQUk9QX0VO
QUJMRV9JTlRFUk5BTF9NSVhJTkcsCisgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFi
bGUtaW50ZXJuYWwtbWl4aW5nIiwgIkVuYWJsZSBJbnRlcm5hbCBNaXhpbmciLCAiUHJveHkgYXVk
aW8gYnVmZmVycyB0byB0aGUgYXVkaW9taXhlciIsIEZBTFNFLAorICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8R1BhcmFtRmxhZ3M+KEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RS
SU5HUyB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CisKKyAgICBHc3RFbGVtZW50Q2xhc3Mq
IGVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTKGtsYXNzKTsKKyAgICBnc3RfZWxlbWVudF9jbGFz
c19hZGRfc3RhdGljX3BhZF90ZW1wbGF0ZShla2xhc3MsICZzaW5rVGVtcGxhdGUpOworICAgIGdz
dF9lbGVtZW50X2NsYXNzX3NldF9tZXRhZGF0YShla2xhc3MsICJXZWJLaXQgQXVkaW8gc2luayBl
bGVtZW50IiwgIlNpbmsvQXVkaW8iLAorICAgICAgICAiUHJveGllcyBhdWRpbyBkYXRhIHRvIFdl
YktpdCdzIGF1ZGlvIG1peGVyIiwgIlBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+
Iik7CisKKyAgICBla2xhc3MtPnF1ZXJ5ID0gR1NUX0RFQlVHX0ZVTkNQVFIod2ViS2l0QXVkaW9T
aW5rUXVlcnkpOworICAgIGVrbGFzcy0+Y2hhbmdlX3N0YXRlID0gR1NUX0RFQlVHX0ZVTkNQVFIo
d2ViS2l0QXVkaW9TaW5rQ2hhbmdlU3RhdGUpOworfQorCitHc3RFbGVtZW50KiB3ZWJraXRBdWRp
b1NpbmtOZXcoYm9vbCBlbmFibGVJbnRlcm5hbE1peGluZykKK3sKKyAgICByZXR1cm4gR1NUX0VM
RU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQVVESU9fU0lOSywgImVuYWJsZS1p
bnRlcm5hbC1taXhpbmciLCBlbmFibGVJbnRlcm5hbE1peGluZywgbnVsbHB0cikpOworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dT
dHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdEF1ZGlvU2lua0dTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlNTBkZjk3YWVmZTZkNDUxZWFj
NmQwZWRiN2FlOTlmOWNjY2MwMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmgKQEAg
LTAsMCArMSw1MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICog
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorCitHX0JF
R0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQVVESU9fU0lOSyAgICAgICAgICAgICh3
ZWJraXRfYXVkaW9fc2lua19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfQVVESU9fU0lOSyhv
YmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRf
VFlQRV9BVURJT19TSU5LLCBXZWJLaXRBdWRpb1NpbmspKQorI2RlZmluZSBXRUJLSVRfQVVESU9f
U0lOS19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIFdF
QktJVF9UWVBFX0FVRElPX1NJTkssIFdlYktpdEF1ZGlvU2lua0NsYXNzKSkKKyNkZWZpbmUgV0VC
S0lUX0lTX0FVRElPX1NJTksob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQ
RSgob2JqKSwgV0VCS0lUX1RZUEVfQVVESU9fU0lOSykpCisjZGVmaW5lIFdFQktJVF9JU19BVURJ
T19TSU5LX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgV0VC
S0lUX1RZUEVfQVVESU9fU0lOSykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBdWRpb1Npbmsg
ICAgICAgIFdlYktpdEF1ZGlvU2luazsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBdWRpb1NpbmtD
bGFzcyAgIFdlYktpdEF1ZGlvU2lua0NsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1ZGlv
U2lua1ByaXZhdGUgV2ViS2l0QXVkaW9TaW5rUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRBdWRp
b1NpbmsgeworICAgIEdzdEJpbiBwYXJlbnQ7CisKKyAgICBXZWJLaXRBdWRpb1NpbmtQcml2YXRl
ICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRBdWRpb1NpbmtDbGFzcyB7CisgICAgR3N0Qmlu
Q2xhc3MgcGFyZW50Q2xhc3M7Cit9OworCitHVHlwZSB3ZWJraXRfYXVkaW9fc2lua19nZXRfdHlw
ZSh2b2lkKTsKKworR19FTkRfREVDTFMKKworR3N0RWxlbWVudCogd2Via2l0QXVkaW9TaW5rTmV3
KGJvb2wgZW5hYmxlSW50ZXJuYWxNaXhpbmcpOworCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXVkaW9S
ZW5kZXJpbmdQb2xpY3kuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1ZGlvUmVuZGVyaW5nUG9s
aWN5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTUwNmZjZmVlOWIxNjI4OTgxYTY5Zjc3NmYwM2Q2MDNkOWVhZmRh
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1ZGlvUmVuZGVyaW5n
UG9saWN5LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2Fs
aWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3Mg
QXVkaW9SZW5kZXJpbmdQb2xpY3kgOiB1aW50OF90IHsKKyAgICBIb3N0RGVmYXVsdCwKKyAgICBJ
bnRlcm5hbE1peGluZywKKyAgICBFeHRlcm5hbAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktp
dDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVz
PAorICAgICAgICBXZWJLaXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5LAorICAgICAgICBXZWJLaXQ6
OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdCwKKyAgICAgICAgV2ViS2l0OjpBdWRp
b1JlbmRlcmluZ1BvbGljeTo6SW50ZXJuYWxNaXhpbmcsCisgICAgICAgIFdlYktpdDo6QXVkaW9S
ZW5kZXJpbmdQb2xpY3k6OkV4dGVybmFsCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
LmNwcAppbmRleCA5NjMzMjY5MDM5YWVkODVlMTk5M2IyMzQ0NzM1MDliNGVjYjM5Yjc5Li5lYTg0
MTM3Njc2MzVkNTEzYjEzYzI2OGM4NWY0MTY0Y2U2YjQ5NTQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uLmgiCiAj
aW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiQXVkaW9SZW5k
ZXJpbmdQb2xpY3kuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiSW1h
Z2VPcHRpb25zLmgiCiAjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCkBAIC0yMDEsNiAr
MjAyLDkgQEAgZW51bSB7CiAgICAgUFJPUF9BVVRPTUFUSU9OX1BSRVNFTlRBVElPTl9UWVBFLAog
ICAgIFBST1BfRURJVEFCTEUsCiAgICAgUFJPUF9QQUdFX0lECisjaWYgUExBVEZPUk0oV1BFKQor
ICAgICwgUFJPUF9BVURJT19SRU5ERVJJTkdfUE9MSUNZCisjZW5kaWYKIH07CiAKIHR5cGVkZWYg
SGFzaE1hcDx1aW50NjRfdCwgR1JlZlB0cjxXZWJLaXRXZWJSZXNvdXJjZT4gPiBMb2FkaW5nUmVz
b3VyY2VzTWFwOwpAQCAtMzAyLDYgKzMwNiw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZh
dGUgewogICAgIEdSZWZQdHI8V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0PiBhdXRoZW50aWNh
dGlvblJlcXVlc3Q7CiAKICAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gd2Vi
c2l0ZURhdGFNYW5hZ2VyOworCisgICAgV2ViS2l0QXVkaW9SZW5kZXJpbmdQb2xpY3kgYXVkaW9S
ZW5kZXJpbmdQb2xpY3k7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0g
PSB7IDAsIH07CkBAIC03OTksNiArODA1LDEwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdT
ZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlCiAg
ICAgICAgIHdlYlZpZXctPnByaXYtPmJhY2tlbmQgPSBiYWNrZW5kID8gYWRvcHRHUmVmKHN0YXRp
Y19jYXN0PFdlYktpdFdlYlZpZXdCYWNrZW5kKj4oYmFja2VuZCkpIDogbnVsbHB0cjsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgUFJPUF9BVURJT19SRU5ERVJJTkdfUE9MSUNZOiB7
CisgICAgICAgIHdlYlZpZXctPnByaXYtPmF1ZGlvUmVuZGVyaW5nUG9saWN5ID0gc3RhdGljX2Nh
c3Q8V2ViS2l0QXVkaW9SZW5kZXJpbmdQb2xpY3k+KGdfdmFsdWVfZ2V0X2VudW0odmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQogI2VuZGlmCiAgICAgY2FzZSBQUk9QX1dFQl9DT05URVhU
OiB7CiAgICAgICAgIGdwb2ludGVyIHdlYkNvbnRleHQgPSBnX3ZhbHVlX2dldF9vYmplY3QodmFs
dWUpOwpAQCAtODQ5LDYgKzg1OSw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2Fz
ZSBQUk9QX0JBQ0tFTkQ6CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0YXRpY19ib3hlZCh2YWx1ZSwg
d2ViVmlldy0+cHJpdi0+YmFja2VuZC5nZXQoKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9BVURJT19SRU5ERVJJTkdfUE9MSUNZOgorICAgICAgICBnX3ZhbHVlX3NldF9lbnVtKHZh
bHVlLCB3ZWJWaWV3LT5wcml2LT5hdWRpb1JlbmRlcmluZ1BvbGljeSk7CisgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgY2FzZSBQUk9QX1dFQl9DT05URVhUOgogICAgICAgICBnX3ZhbHVlX3Nl
dF9vYmplY3QodmFsdWUsIHdlYlZpZXctPnByaXYtPmNvbnRleHQuZ2V0KCkpOwpAQCAtMTI2Niw2
ICsxMjc5LDMyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktp
dFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgMCwgR19NQVhVSU5UNjQs
IDAsCiAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKIAorI2lmIFBMQVRGT1JN
KFdQRSkKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjphdWRpby1yZW5kZXJpbmctcG9s
aWN5OgorICAgICAqCisgICAgICogV2hldGhlciB0aGUgI1dlYktpdFdlYlZpZXcgc2hvdWxkIG1h
bmFnZSBhdWRpbyByZW5kZXJpbmcgdGhyb3VnaCB0aGUgaG9zdAorICAgICAqIHBsYXRmb3JtIGF1
ZGlvIGRhZW1vbiAodXN1YWxseSBQdWxzZUF1ZGlvKS4gVGhpcyBpcyB0aGUgZGVmYXVsdAorICAg
ICAqIGJlaGF2aW91ciwgdGhlIHByb3BlcnR5IGlzIEBBVURJT19SRU5ERVJJTkdfUE9MSUNZX0hP
U1RfREVGQVVMVCBieSBkZWZhdWx0LgorICAgICAqCisgICAgICogVXNpbmcgQFdFQktJVF9BVURJ
T19SRU5ERVJJTkdfUE9MSUNZX0VYVEVSTkFMIGltcGxpZXMgdGhlIGFwcGxpY2F0aW9uIHdpbGwg
cmVjZWl2ZQorICAgICAqIG5vdGlmaWNhdGlvbnMgdGhyb3VnaCB0aGUgV1BFQmFja2VuZC1GRE8g
YXVkaW8gc291cmNlLiBJbiB0aGlzIGNhc2UgdGhlCisgICAgICogYXBwbGljYXRpb24gaXMgZXhw
ZWN0ZWQgdG8gbWFuYWdlIGF1ZGlvIHJlbmRlcmluZyBpdHNlbGYuCisgICAgICoKKyAgICAgKiBT
aW5jZTogMi4yOAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
CisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9BVURJT19SRU5ERVJJTkdfUE9M
SUNZLAorICAgICAgICBnX3BhcmFtX3NwZWNfZW51bSgKKyAgICAgICAgICAgICJhdWRpby1yZW5k
ZXJpbmctcG9saWN5IiwKKyAgICAgICAgICAgICJBdWRpbyBSZW5kZXJpbmcgUG9saWN5IiwKKyAg
ICAgICAgICAgIF8oIldoZXRoZXIgdGhlIHZpZXcgaXMgaW50ZXJuYWxseSByZW5kZXJpbmcgYXVk
aW8iKSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0FVRElPX1JFTkRFUklOR19QT0xJQ1ksCisg
ICAgICAgICAgICBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9IT1NUX0RFRkFVTFQsCisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklU
RSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CisjZW5kaWYKKwogICAgIC8qKgogICAgICAq
IFdlYktpdFdlYlZpZXc6OmxvYWQtY2hhbmdlZDoKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2Vi
S2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKQEAgLTIyMjcsNiArMjI2
NiwyMCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdXaWxsU3RhcnRMb2FkKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCiAgICAgLy8gY2xpZW50IGFwcGxpY2F0aW9uIHdpbGwgc3RpbGwgc2VlIHRoZSBVUkkg
dXBkYXRlIGltbWVkaWF0ZWx5LiBPdGhlcndpc2UsIHRoZSBVUkkgdXBkYXRlIHdpbGwgYmUgZGVs
YXllZCBhIGJpdC4KICAgICB3ZWJWaWV3LT5wcml2LT5pc0FjdGl2ZVVSSUNoYW5nZUJsb2NrZWQg
PSB0cnVlOwogCisgICAgV2ViS2l0OjpBdWRpb1JlbmRlcmluZ1BvbGljeSBwb2xpY3kgPSBXZWJL
aXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDsKKyAgICBzd2l0Y2ggKHdlYlZp
ZXctPnByaXYtPmF1ZGlvUmVuZGVyaW5nUG9saWN5KSB7CisgICAgY2FzZSBXRUJLSVRfQVVESU9f
UkVOREVSSU5HX1BPTElDWV9IT1NUX0RFRkFVTFQ6CisgICAgICAgIHBvbGljeSA9IFdlYktpdDo6
QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdFQktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZX0lOVEVSTkFMX01JWElORzoKKyAgICAg
ICAgcG9saWN5ID0gV2ViS2l0OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SW50ZXJuYWxNaXhpbmc7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lf
RVhURVJOQUw6CisgICAgICAgIHBvbGljeSA9IFdlYktpdDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6
OkV4dGVybmFsOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5z
ZXRBdWRpb1JlbmRlcmluZ1BvbGljeShwb2xpY3kpOworCiAgICAgLy8gVGhpcyBpcyBjYWxsZWQg
YmVmb3JlIE5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCks
IHRoZSBwYWdlIGxvYWQgc3RhdGUgaGFzbid0IGJlZW4gY29tbWl0dGVkIHlldC4KICAgICBhdXRv
JiBwYWdlTG9hZFN0YXRlID0gZ2V0UGFnZSh3ZWJWaWV3KS5wYWdlTG9hZFN0YXRlKCk7CiAgICAg
aWYgKHBhZ2VMb2FkU3RhdGUuaXNGaW5pc2hlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAppbmRleCAyYjJkNzhkMWJiNTNhMmZmZGI3MGMy
YTRiZGJjODg0YWY2MDM2ZjYwLi4xOWJiMTVlMjBmZTJhMDI5OTUyMGY0ODQ3ODUwZWM4Yzg1Y2Ix
NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdl
YlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZp
ZXcuaApAQCAtMTgzLDYgKzE4MywyMyBAQCB0eXBlZGVmIGVudW0gewogdHlwZWRlZiB2b2lkICgq
IFdlYktpdEZyYW1lRGlzcGxheWVkQ2FsbGJhY2spIChXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIg
ICAgICAgdXNlcl9kYXRhKTsKIAorCisvKioKKyAqIFdlYktpdEF1ZGlvUmVuZGVyaW5nUG9saWN5
OgorICogQFdFQktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZX0hPU1RfREVGQVVMVDogdXNlIGhv
c3QgYXVkaW8gZGFlbW9uICh1c3VhbGx5IFB1bHNlQXVkaW8pLgorICogQFdFQktJVF9BVURJT19S
RU5ERVJJTkdfUE9MSUNZX0lOVEVSTkFMX01JWElORzogcGVyZm9ybSBpbnRlcm5hbCBtaXhpbmcg
YW5kIHJlbmRlciB0aGUgcmVzdWx0aW5nIHN0cmVhbSB0byBob3N0IGF1ZGlvIGRhZW1vbi4KKyAq
IEBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9FWFRFUk5BTDogZGVmZXIgYXVkaW8gcmVu
ZGVyaW5nIHRvIGFwcGxpY2F0aW9uLgorICoKKyAqIEZvbworICoKKyAqIFNpbmNlOiAyLjI4Cisg
Ki8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfSE9T
VF9ERUZBVUxULAorICAgIFdFQktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZX0lOVEVSTkFMX01J
WElORywKKyAgICBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9FWFRFUk5BTCwKK30gV2Vi
S2l0QXVkaW9SZW5kZXJpbmdQb2xpY3k7CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiAgICAg
R09iamVjdCBwYXJlbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCAwYzJkYzY1MTVjNjZiNzk1
NzdhN2Q1ODA3Y2E0YTBmYmM1ZDA3NTM5Li42NjBhMTBlZWNjMDYxODg5OWQ5YWMyZmVkODU1NjFm
MTdjMmU4M2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2Rv
Y3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0xNzIsNiArMTcyLDcgQEAgV2ViS2l0
U2F2ZU1vZGUKIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50CiBXZWJLaXRXZWJQcm9jZXNzVGVy
bWluYXRpb25SZWFzb24KIFdlYktpdEZyYW1lRGlzcGxheWVkQ2FsbGJhY2sKK1dlYktpdEF1ZGlv
UmVuZGVyaW5nUG9saWN5CiAKIDxTVUJTRUNUSU9OIEVkaXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRf
RURJVElOR19DT01NQU5EX0NVVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggNzUyMmVmMTZmZWFlYjNhOGVhM2IyOGFhMzg2YzViZjlhZmM5ODdlYS4uMDQ2YmNm
MzdkM2ViMmY0ZTg2MDU4MGQ5Njg0NmJhZTU1ODdkNzQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMjYsNiArMjI2LDEwIEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9DYWlyb1V0aWxpdGllcy5oPgogI2VuZGlmCiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2lu
Y2x1ZGUgIkF1ZGlvUmVuZGVyaW5nUG9saWN5LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUg
PFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViTWVk
aWFTZXNzaW9uTWFuYWdlci5oPgpAQCAtNDY3LDYgKzQ3MSw5IEBAIFdlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgUmVmCiAjZW5kaWYKICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291bnQpCiAg
ICAgLCBtX3RyeUNsb3NlVGltZW91dFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBh
Z2VQcm94eTo6dHJ5Q2xvc2VUaW1lZE91dCkKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgICwgbV9h
dWRpb1JlbmRlcmluZ1BvbGljeShBdWRpb1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQpCisj
ZW5kaWYKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb25zdHJ1Y3Rv
cjoiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhNjcwODU2
ZDcxZWE2OGMzZjVlZWZhMDhjMGU3YzFiZjUxZmUwMjAyLi5jZDI4ZDJmMjA3YWE2N2JjNGFiOTEx
NDUyMGUzNDIyZWJjMDM4ZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMzQ0LDYgKzM0NCwxMCBAQCBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQ7CiBlbnVtIGNsYXNzIFVuZG9PclJlZG8gOiBib29sOwogZW51bSBjbGFzcyBXZWJDb250
ZW50TW9kZSA6IHVpbnQ4X3Q7CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorZW51bSBjbGFzcyBBdWRp
b1JlbmRlcmluZ1BvbGljeSA6IHVpbnQ4X3Q7CisjZW5kaWYKKwogdHlwZWRlZiBHZW5lcmljQ2Fs
bGJhY2s8QVBJOjpEYXRhKj4gRGF0YUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8
dWludDY0X3Q+IFVuc2lnbmVkQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxFZGl0
aW5nUmFuZ2U+IEVkaXRpbmdSYW5nZUNhbGxiYWNrOwpAQCAtMTY4Nyw2ICsxNjkxLDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIHJldm9rZUFjY2Vzc1RvQXNzZXRTZXJ2aWNlcygpOwogI2VuZGlmCiAK
KyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIEF1ZGlvUmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVuZGVy
aW5nUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1JlbmRlcmluZ1BvbGljeTsgfQorICAg
IHZvaWQgc2V0QXVkaW9SZW5kZXJpbmdQb2xpY3koQXVkaW9SZW5kZXJpbmdQb2xpY3kpOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNz
UHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9y
bUluaXRpYWxpemUoKTsKQEAgLTI3MjEsNiArMjczMCwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgTW9ub3RvbmljVGltZSBtX2RpZEZpbmlz
aERvY3VtZW50TG9hZEZvck1haW5GcmFtZVRpbWVzdGFtcDsKICNlbmRpZgorCisjaWYgVVNFKEdT
VFJFQU1FUikKKyAgICBBdWRpb1JlbmRlcmluZ1BvbGljeSBtX2F1ZGlvUmVuZGVyaW5nUG9saWN5
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5j
cHAKaW5kZXggZTNhZTUxNGIwMzdjZThmODgwNDk4YWZlMTJhMWY5ZWMzMWJhNjZiOC4uOGMyYmFk
NWQxNGIwZDY3M2RkNTE5ZWY3OTkzNTgyZTNmYWMxNWZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKIAogI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJBdWRpb1JlbmRlcmluZ1Bv
bGljeS5oIgogI2luY2x1ZGUgIkluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3QuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAKQEAgLTQxLDYgKzQyLDEyIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3Qg
U3RyaW5nJiBkZXRhaWxzLCBjb25zCiAgICAgcmVxdWVzdC0+ZGVueSgpOwogfQogCit2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0QXVkaW9SZW5kZXJpbmdQb2xpY3koQXVkaW9SZW5kZXJpbmdQb2xpY3kg
cG9saWN5KQoreworICAgIG1fYXVkaW9SZW5kZXJpbmdQb2xpY3kgPSBwb2xpY3k7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdWRpb1JlbmRlcmluZ1BvbGljeShw
b2xpY3kpLCBtX3dlYlBhZ2VJRCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAppbmRleCA4ZTRjOTM3NWQ3YjhjYzEwZmZhMDA4MDNkNDgyMTczYmU1YTM1NThhLi5iOGI1ODAz
OTVkMmM0ZDRhMWIyMWU1YWQ5OTg1MjYzZWE5NDNlOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cApAQCAtOTgsNiArOTgsMTAgQEAKICNpbmNsdWRlICJQcmludGVyTGlzdEd0ay5oIgogI2VuZGlm
CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIkF1ZGlvUmVuZGVyaW5nUG9saWN5Lmgi
CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjZW5kaWYKQEAgLTEzMDcsNiArMTMx
MSwxOSBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQ
bHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgYwogICAgIG1fcGFnZS5yZXF1ZXN0SW5zdGFs
bE1pc3NpbmdNZWRpYVBsdWdpbnMoZGV0YWlscywgZGVzY3JpcHRpb24sIGNhbGxiYWNrKTsKIH0K
IAorQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ1BvbGljeSBXZWJDaHJvbWVDbGllbnQ6OmF1
ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fcGFnZS5hdWRpb1Jl
bmRlcmluZ1BvbGljeSgpKSB7CisgICAgY2FzZSBXZWJLaXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5
OjpIb3N0RGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIENocm9tZUNsaWVudDo6QXVkaW9SZW5kZXJp
bmdQb2xpY3k6Okhvc3REZWZhdWx0OworICAgIGNhc2UgV2ViS2l0OjpBdWRpb1JlbmRlcmluZ1Bv
bGljeTo6SW50ZXJuYWxNaXhpbmc6CisgICAgICAgIHJldHVybiBDaHJvbWVDbGllbnQ6OkF1ZGlv
UmVuZGVyaW5nUG9saWN5OjpJbnRlcm5hbE1peGluZzsKKyAgICBjYXNlIFdlYktpdDo6QXVkaW9S
ZW5kZXJpbmdQb2xpY3k6OkV4dGVybmFsOgorICAgICAgICByZXR1cm4gQ2hyb21lQ2xpZW50OjpB
dWRpb1JlbmRlcmluZ1BvbGljeTo6RXh0ZXJuYWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQogI2VuZGlmCiAKIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
aW5kZXggYThhNGNjYWM1N2Q4MDhhYWE1NWQ4ZDc5NTFiYzVjNTQxYzYwZjJhZC4uMzZjMWQ3YTU5
NzJlOTQyMTVhNWI2ZjdkNDQ1NTk5MmUzMWFjZjY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAt
MzY1LDYgKzM2NSw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpCiAgICAgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3Qg
U3RyaW5nJiAvKmRldGFpbHMqLywgY29uc3QgU3RyaW5nJiAvKmRlc2NyaXB0aW9uKi8sIFdlYkNv
cmU6Ok1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJikgZmlu
YWw7CisgICAgQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ1BvbGljeSBhdWRpb1JlbmRlcmlu
Z1BvbGljeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKICAgICB2b2lkIGRpZEludmFsaWRhdGVE
b2N1bWVudE1hcmtlclJlY3RzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDUwOGJjYzEwMmViYTAwNjIwMzZiY2RjNWU4MDY2M2Y2
MDM0ZmQwZTMuLjhmMDVmNmRhODcwYTJiNWI1OTNiNTk4YWE1ZTYwNzc4OTMyMTViNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMDYsNiAr
MzA2LDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQor
I2luY2x1ZGUgIkF1ZGlvUmVuZGVyaW5nUG9saWN5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjay5oPgogI2VuZGlmCiAK
QEAgLTE0MzQsNiArMTQzNSw3IEBAIHZvaWQgV2ViUGFnZTo6Y2xvc2UoKQogICAgICAgICBtX2lu
c3RhbGxNZWRpYVBsdWdpbnNDYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogICAgICAgICBtX2luc3Rh
bGxNZWRpYVBsdWdpbnNDYWxsYmFjayA9IG51bGxwdHI7CiAgICAgfQorICAgIG1fYXVkaW9SZW5k
ZXJpbmdQb2xpY3kgPSBBdWRpb1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQ7CiAjZW5kaWYK
IAogICAgIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXIuaW52YWxpZGF0ZSgpOwpAQCAtNjQyMiw2
ICs2NDI0LDEzIEBAIHZvaWQgV2ViUGFnZTo6aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdl
ZChjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6SW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZChuZXdTaXplKSk7CiB9CiAKKyNpZiBF
TkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCitBdWRpb1JlbmRlcmluZ1BvbGljeSBXZWJQ
YWdlOjphdWRpb1JlbmRlcmluZ1BvbGljeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXVkaW9S
ZW5kZXJpbmdQb2xpY3k7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlOjphZGRVc2VyU2NyaXB0
KFN0cmluZyYmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmpl
Y3RlZEZyYW1lcywgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGlt
ZSkKIHsKICAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJj
ZSksIFVSTChXVEY6OmJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5n
PigpLCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGY5OGU5NDY0NzY4MmNhNzM0YzYwMzBlZmY3
YjgyYWYzYTM5ZmM3ODIuLjAxNjlmMDk3ZTQ5Nzg1NjkyZmI1MWIxNzdjOTc0MzUyZjdiZjU3YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTI2OSw2
ICsyNjksMTAgQEAgZW51bSBGaW5kT3B0aW9ucyA6IHVpbnQxNl90OwogZW51bSBjbGFzcyBEcmFn
Q29udHJvbGxlckFjdGlvbiA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kVHlwZSA6IHVpbnQ4X3Q7CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorZW51bSBjbGFzcyBB
dWRpb1JlbmRlcmluZ1BvbGljeSA6IHVpbnQ4X3Q7CisjZW5kaWYKKwogc3RydWN0IEF0dHJpYnV0
ZWRTdHJpbmc7CiBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOwogc3RydWN0IERhdGFE
ZXRlY3Rpb25SZXN1bHQ7CkBAIC0xMTE4LDYgKzExMjIsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFC
TEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAgICAgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3Np
bmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCBXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnND
YWxsYmFjayYpOworICAgIEF1ZGlvUmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVuZGVyaW5nUG9saWN5
KCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRkVXNlclNjcmlwdChTdHJpbmcmJiBzb3Vy
Y2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMsIFdlYkNvcmU6OlVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lKTsKQEAgLTE2MzcsNiArMTY0Miw3IEBAIHByaXZhdGU6CiAKICNpZiBF
TkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAgICAgdm9pZCBkaWRFbmRSZXF1ZXN0SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnModWludDMyX3QgcmVzdWx0KTsKKyAgICB2b2lkIHNldEF1
ZGlvUmVuZGVyaW5nUG9saWN5KEF1ZGlvUmVuZGVyaW5nUG9saWN5IHBvbGljeSkgeyBtX2F1ZGlv
UmVuZGVyaW5nUG9saWN5ID0gcG9saWN5OyB9CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0VXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbih1aW50MzJfdCk7CkBAIC0xOTk5LDYgKzIwMDUsNyBAQCBw
cml2YXRlOgogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogICAgIFJlZlB0
cjxXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFj
az4gbV9pbnN0YWxsTWVkaWFQbHVnaW5zQ2FsbGJhY2s7CisgICAgQXVkaW9SZW5kZXJpbmdQb2xp
Y3kgbV9hdWRpb1JlbmRlcmluZ1BvbGljeTsKICNlbmRpZgogCiAjaWYgVVNFKE9TX1NUQVRFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggYWI5N2IyYjkyNjA1OTkwN2NjZGNmOTljZGU5ZTViZjNkMjdkN2E0OS4uYjIz
ZmU3ZjM0YzU4OWQ1NjlmMDhkNDljYjU5OWQ3MmM3OTM4M2NlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01MzQs
NiArNTM0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3Qg
V2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogI2lmIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikKICAgICBEaWRFbmRSZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnModWludDMyX3QgcmVzdWx0KQorICAgIFNldEF1ZGlvUmVuZGVyaW5nUG9saWN5KGVudW06
dWludDhfdCBXZWJLaXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5IHBvbGljeSkKICNlbmRpZgogCiAg
ICAgU2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtlIGIvU291cmNlL2Nt
YWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZQppbmRleCAxOGIxMmY4MmE4ZDI4YzM0MjNmM2U2ZjMx
NDczODg5OGMxZjY0NzZjLi5mZDQ2OWI4YWU1MTYzZTk3OGMxNjVhYzczMDQ1NWRiM2JkOTUxY2Fk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtlCisrKyBiL1Nv
dXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2UKQEAgLTM0LDYgKzM0LDEzIEBAIGlmIChF
TkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykKICAgICAgICAgbWVzc2FnZShGQVRBTF9F
UlJPUiAiR1N0cmVhbWVyR0wgaXMgbmVlZGVkIGZvciBVU0VfR1NUUkVBTUVSX0dMLiIpCiAgICAg
ZW5kaWYgKCkKIAorICAgIGlmIChQT1JUIFNUUkVRVUFMICJXUEUiKQorICAgICAgICBmaW5kX3Bh
Y2thZ2UoV1BFQmFja2VuZC1mZG8gMS4zLjEpCisgICAgICAgIGlmIChOT1QgV1BFQkFDS0VORF9G
RE9fRk9VTkQpCisgICAgICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJXUEVCYWNrZW5kLWZk
byBpcyByZXF1aXJlZCBmb3IgYXVkaW8gcGFzc3Rocm91Z2ggc3VwcG9ydCIpCisgICAgICAgIGVu
ZGlmICgpCisgICAgZW5kaWYgKCkKKwogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9H
U1RSRUFNRVIgVFJVRSkKIGVuZGlmICgpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9ndGsucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrLnB5Cmlu
ZGV4IDY4YmMxNjkyM2Y4YWI3NjA5MWY1YjNlOTY0ZDA2NWM3OTQzZmY4ZDUuLmM0ODgxOTcwYzg1
Nzg5ZWJlZjQ1ZDM1ZTllZDRhNDA0ZTUyNWFmZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9ndGsucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0
ay5weQpAQCAtMTIzLDcgKzEyMyw4IEBAIGNsYXNzIEd0a1BvcnQoUG9ydCk6CiAgICAgICAgIGVu
dmlyb25tZW50WydURVNUX1JVTk5FUl9URVNUX1BMVUdJTl9QQVRIJ10gPSBzZWxmLl9idWlsZF9w
YXRoKCdsaWInLCAncGx1Z2lucycpCiAgICAgICAgIHNlbGYuX2NvcHlfdmFsdWVfZnJvbV9lbnZp
cm9uX2lmX3NldChlbnZpcm9ubWVudCwgJ1dFQktJVF9PVVRQVVRESVInKQogICAgICAgICBzZWxm
Ll9jb3B5X3ZhbHVlX2Zyb21fZW52aXJvbl9pZl9zZXQoZW52aXJvbm1lbnQsICdXRUJLSVRfVE9Q
X0xFVkVMJykKLSAgICAgICAgc2VsZi5fY29weV92YWx1ZV9mcm9tX2Vudmlyb25faWZfc2V0KGVu
dmlyb25tZW50LCAnVVNFX1BMQVlCSU4zJykKKyAgICAgICAgc2VsZi5fY29weV92YWx1ZV9mcm9t
X2Vudmlyb25faWZfc2V0KGVudmlyb25tZW50LCAnV0VCS0lUX0dTVF9VU0VfUExBWUJJTjMnKQor
ICAgICAgICBzZWxmLl9jb3B5X3ZhbHVlX2Zyb21fZW52aXJvbl9pZl9zZXQoZW52aXJvbm1lbnQs
ICdXRUJLSVRfR1NUX1VTRV9BVURJT01JWEVSJykKICAgICAgICAgc2VsZi5fY29weV92YWx1ZV9m
cm9tX2Vudmlyb25faWZfc2V0KGVudmlyb25tZW50LCAnR1NUX0RFQlVHJykKICAgICAgICAgc2Vs
Zi5fY29weV92YWx1ZV9mcm9tX2Vudmlyb25faWZfc2V0KGVudmlyb25tZW50LCAnR1NUX0RFQlVH
X0RVTVBfRE9UX0RJUicpCiAgICAgICAgIHNlbGYuX2NvcHlfdmFsdWVfZnJvbV9lbnZpcm9uX2lm
X3NldChlbnZpcm9ubWVudCwgJ0dTVF9ERUJVR19GSUxFJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlci5weQppbmRleCAxM2QxZDQ4ZTJlNjQ1NzIwZDI3OTFmNDkyMWU3YzlmZDEx
YjNlY2EyLi44NmE0ODZmNDgyMWE3M2EzMjhkMjJhMGRmZjMxOTgwZWViZTUyZmExIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC0yMjEsNiArMjIxLDcgQEAgX1BB
VEhfUlVMRVNfU1BFQ0lGSUVSID0gWwogICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2Vi
Q29yZScsICdwbGF0Zm9ybScsICdncmFwaGljcycsICdnc3RyZWFtZXInLCAnR0xWaWRlb1NpbmtH
U3RyZWFtZXIuaCcpLAogICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdw
bGF0Zm9ybScsICdncmFwaGljcycsICdnc3RyZWFtZXInLCAnVmlkZW9TaW5rR1N0cmVhbWVyLmNw
cCcpLAogICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScs
ICdncmFwaGljcycsICdnc3RyZWFtZXInLCAnV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCcp
LAorICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScsICdn
cmFwaGljcycsICdnc3RyZWFtZXInLCAnV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNwcCcpLAog
ICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScsICdhdWRp
bycsICdnc3RyZWFtZXInLCAnV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwJyksCiAg
ICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3JtJywgJ21lZGlh
c3RyZWFtJywgJ2dzdHJlYW1lcicsICdHU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5oJyksCiAg
ICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3JtJywgJ21lZGlh
c3RyZWFtJywgJ2dzdHJlYW1lcicsICdHU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAnKSwK
ZGlmZiAtLWdpdCBhL1Rvb2xzL2dzdHJlYW1lci9qaGJ1aWxkLm1vZHVsZXMgYi9Ub29scy9nc3Ry
ZWFtZXIvamhidWlsZC5tb2R1bGVzCmluZGV4IGI2YjNiOGQyM2FmYWIzZTQ1NGFiMjM5NWViYTE1
ZWFmOGVkZmQ3OTYuLjMzOGIwYmYyYzYyMGIyYzNhOTIyZDE2OTgwNzc3MTk3ZDVmOTBlNmQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL2dzdHJlYW1lci9qaGJ1aWxkLm1vZHVsZXMKKysrIGIvVG9vbHMvZ3N0
cmVhbWVyL2poYnVpbGQubW9kdWxlcwpAQCAtNTMsNiArNTMsNyBAQAogICAgICAgPGRlcCBwYWNr
YWdlPSJvcmMiLz4KICAgICA8L2RlcGVuZGVuY2llcz4KICAgICA8YnJhbmNoIGhhc2g9InNoYTI1
NjowMjIxMWMzNDQ3YzRkYWE1NTkxOWM1YzBmNDNhODJhNmZiYjUxNzQwZDU3ZmMzYWYwNjM5ZDQ2
ZjFjZjQzNzdkIiBtb2R1bGU9ImdzdHJlYW1lci9nc3RyZWFtZXItJHt2ZXJzaW9ufS50YXIueHoi
IHJlcG89ImdzdHJlYW1lciIgdmVyc2lvbj0iMS4xNi4xIj4KKyAgICAgIDxwYXRjaCBmaWxlPSJj
b3JlLTAwMDEtYWdncmVnYXRvci1BbHdheXMtaGFuZGxlLXNlcmlhbGl6ZWQtZXZlbnRzLXF1ZXJp
ZXMtZC5wYXRjaCIgc3RyaXA9IjEiLz4KICAgICA8L2JyYW5jaD4KICAgPC9tZXNvbj4KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvZ3N0cmVhbWVyL3BhdGNoZXMvY29yZS0wMDAxLWFnZ3JlZ2F0b3ItQWx3
YXlzLWhhbmRsZS1zZXJpYWxpemVkLWV2ZW50cy1xdWVyaWVzLWQucGF0Y2ggYi9Ub29scy9nc3Ry
ZWFtZXIvcGF0Y2hlcy9jb3JlLTAwMDEtYWdncmVnYXRvci1BbHdheXMtaGFuZGxlLXNlcmlhbGl6
ZWQtZXZlbnRzLXF1ZXJpZXMtZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTUyYzkyMGVmN2Y4NmM4MzQ1
OWJmZDdiN2FiN2M2OGQ1NzFjY2I2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvZ3N0cmVhbWVy
L3BhdGNoZXMvY29yZS0wMDAxLWFnZ3JlZ2F0b3ItQWx3YXlzLWhhbmRsZS1zZXJpYWxpemVkLWV2
ZW50cy1xdWVyaWVzLWQucGF0Y2gKQEAgLTAsMCArMSwyMDggQEAKK0Zyb20gNzQ3OTdlOTYyZmVi
OGVjOWMzODc1YzM3NjZkMTA3ODg2ZDJhMWI0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy
b206ID0/VVRGLTg/cT9TZWJhc3RpYW49MjBEcj1DMz1CNmdlPz0gPHNlYmFzdGlhbkBjZW50cmlj
dWxhci5jb20+CitEYXRlOiBNb24sIDE5IEF1ZyAyMDE5IDE4OjE5OjUwICswMzAwCitTdWJqZWN0
OiBbUEFUQ0hdIGFnZ3JlZ2F0b3I6IEFsd2F5cyBoYW5kbGUgc2VyaWFsaXplZCBldmVudHMvcXVl
cmllcyBkaXJlY3RseQorIGJlZm9yZSB3YWl0aW5nCisKK090aGVyd2lzZSBpdCBjYW4gaGFwcGVu
IHRoYXQgd2Ugc3RhcnQgd2FpdGluZyBmb3IgYW5vdGhlciBwYWQsIHdoaWxlIG9uZQorcGFkIGFs
cmVhZHkgaGFzIGV2ZW50cyB0aGF0IGNhbiBiZSBoYW5kbGVkIGFuZCBwb3RlbnRpYWxseSBhbHNv
IGEgYnVmZmVyCit0aGF0IGNhbiBiZSBoYW5kbGVkLiBUaGF0IGJ1ZmZlciB3b3VsZCB0aGVuIGhv
d2V2ZXIgbm90IGJlIGFjY2Vzc2libGUgYnkKK3RoZSBzdWJjbGFzcyBmcm9tIEdzdEFnZ3JlZ2F0
b3I6OmdldF9uZXh0X3RpbWUoKSBhcyB0aGVyZSB3b3VsZCBiZSB0aGUKK2V2ZW50cyBpbiBmcm9u
dCBvZiBpdCwgd2hpY2ggZG9lc24ndCBhbGxvdyB0aGUgc3ViY2xhc3MgdGhlbiB0bworY2FsY3Vs
YXRlIHRoZSBuZXh0IHRpbWUgYmFzZWQgb24gYWxyZWFkeSBhdmFpbGFibGUgYnVmZmVycy4KKwor
QXMgYSBzaWRlLWVmZmVjdCB0aGlzIGFsc28gYWxsb3dzIHJlbW92aW5nIHRoZSBkdXBsaWNhdGVk
IGV2ZW50IGhhbmRsaW5nCitjb2RlIGluIHRoZSBhZ2dyZWdhdGUgZnVuY3Rpb24gYXMgd2UnbGwg
YWx3YXlzIHJlcG9ydCBwYWRzIGFzIG5vdCByZWFkeQord2hlbiB0aGVyZSBpcyBhIHNlcmlhbGl6
ZWQgZXZlbnQgb3IgcXVlcnkgYXQgdGhlIHRvcCBvZiBhdCBsZWFzdCBvbmUKK3BhZCdzIHF1ZXVl
LgorCitGaXhlcyBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdHJl
YW1lci9pc3N1ZXMvNDI4CistLS0KKyBsaWJzL2dzdC9iYXNlL2dzdGFnZ3JlZ2F0b3IuYyB8IDEw
MyArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcx
IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlicy9nc3Qv
YmFzZS9nc3RhZ2dyZWdhdG9yLmMgYi9saWJzL2dzdC9iYXNlL2dzdGFnZ3JlZ2F0b3IuYworaW5k
ZXggZTgyODJkZTI2Li45ZWFhYTkwYWIgMTAwNjQ0CistLS0gYS9saWJzL2dzdC9iYXNlL2dzdGFn
Z3JlZ2F0b3IuYworKysrIGIvbGlicy9nc3QvYmFzZS9nc3RhZ2dyZWdhdG9yLmMKK0BAIC0zOTgs
OCArMzk4LDE1IEBAIGdzdF9hZ2dyZWdhdG9yX3BhZF9xdWV1ZV9pc19lbXB0eSAoR3N0QWdncmVn
YXRvclBhZCAqIHBhZCkKKyAgICAgICBwYWQtPnByaXYtPmNsaXBwZWRfYnVmZmVyID09IE5VTEwp
OworIH0KKyAKKysvKiBXaWxsIHJldHVybiBGQUxTRSBpZiB0aGVyZSdzIG5vIGJ1ZmZlciBhdmFp
bGFibGUgb24gZXZlcnkgbm9uLUVPUyBwYWQsIG9yCisrICogaWYgYXQgbGVhc3Qgb25lIG9mIHRo
ZSBwYWRzIGhhcyBhbiBldmVudCBvciBxdWVyeSBhdCB0aGUgdG9wIG9mIGl0cyBxdWV1ZS4KKysg
KgorKyAqIE9ubHkgcmV0dXJucyBUUlVFIGlmIGFsbCBub24tRU9TIHBhZHMgaGF2ZSBhIGJ1ZmZl
ciBhdmFpbGFibGUgYXQgdGhlIHRvcCBvZgorKyAqIHRoZWlyIHF1ZXVlIG9yIGEgY2xpcHBlZCBi
dWZmZXIgYWxyZWFkeS4KKysgKi8KKyBzdGF0aWMgZ2Jvb2xlYW4KKy1nc3RfYWdncmVnYXRvcl9j
aGVja19wYWRzX3JlYWR5IChHc3RBZ2dyZWdhdG9yICogc2VsZikKKytnc3RfYWdncmVnYXRvcl9j
aGVja19wYWRzX3JlYWR5IChHc3RBZ2dyZWdhdG9yICogc2VsZiwKKysgICAgZ2Jvb2xlYW4gKiBo
YXZlX2V2ZW50X29yX3F1ZXJ5X3JldCkKKyB7CisgICBHc3RBZ2dyZWdhdG9yUGFkICpwYWQgPSBO
VUxMOworICAgR0xpc3QgKmwsICpzaW5rcGFkczsKK0BAIC00MTksMTggKzQyNiwzMCBAQCBnc3Rf
YWdncmVnYXRvcl9jaGVja19wYWRzX3JlYWR5IChHc3RBZ2dyZWdhdG9yICogc2VsZikKKyAKKyAg
ICAgUEFEX0xPQ0sgKHBhZCk7CisgCistICAgIGlmIChwYWQtPnByaXYtPm51bV9idWZmZXJzID09
IDApIHsKKy0gICAgICBpZiAoIWdzdF9hZ2dyZWdhdG9yX3BhZF9xdWV1ZV9pc19lbXB0eSAocGFk
KSkKKy0gICAgICAgIGhhdmVfZXZlbnRfb3JfcXVlcnkgPSBUUlVFOworLSAgICAgIGlmICghcGFk
LT5wcml2LT5lb3MpIHsKKy0gICAgICAgIGhhdmVfYnVmZmVyID0gRkFMU0U7CisrICAgIC8qIElm
IHRoZXJlJ3MgYW4gZXZlbnQgb3IgcXVlcnkgYXQgdGhlIHRvcCBvZiB0aGUgcXVldWUgYW5kIHdl
IGRvbid0IHlldAorKyAgICAgKiBoYXZlIHRha2VuIHRoZSB0b3AgYnVmZmVyIG91dCBhbmQgc3Rv
cmVkIGl0IGFzIGNsaXBfYnVmZmVyLCByZW1lbWJlcgorKyAgICAgKiB0aGF0IGFuZCBleGl0IHRo
ZSBsb29wLiBXZSBmaXJzdCBoYXZlIHRvIGhhbmRsZSBhbGwgZXZlbnRzL3F1ZXJpZXMKKysgICAg
ICogYmVmb3JlIHdlIGhhbmRsZSBhbnkgYnVmZmVycy4gKi8KKysgICAgaWYgKCFwYWQtPnByaXYt
PmNsaXBwZWRfYnVmZmVyCisrICAgICAgICAmJiAoR1NUX0lTX0VWRU5UIChnX3F1ZXVlX3BlZWtf
dGFpbCAoJnBhZC0+cHJpdi0+ZGF0YSkpCisrICAgICAgICAgICAgfHwgR1NUX0lTX1FVRVJZIChn
X3F1ZXVlX3BlZWtfdGFpbCAoJnBhZC0+cHJpdi0+ZGF0YSkpKSkgeworKyAgICAgIFBBRF9VTkxP
Q0sgKHBhZCk7CisrICAgICAgaGF2ZV9ldmVudF9vcl9xdWVyeSA9IFRSVUU7CisrICAgICAgYnJl
YWs7CisrICAgIH0KKyAKKy0gICAgICAgIC8qIElmIG5vdCBsaXZlIHdlIG5lZWQgZGF0YSBvbiBh
bGwgcGFkcywgc28gbGVhdmUgdGhlIGxvb3AgKi8KKy0gICAgICAgIGlmICghc2VsZi0+cHJpdi0+
cGVlcl9sYXRlbmN5X2xpdmUpIHsKKy0gICAgICAgICAgUEFEX1VOTE9DSyAocGFkKTsKKy0gICAg
ICAgICAgZ290byBwYWRfbm90X3JlYWR5OworLSAgICAgICAgfQorLSAgICAgIH0KKysgICAgLyog
T3RoZXJ3aXNlIGNoZWNrIGlmIHdlIGhhdmUgYSBjbGlwcGVkIGJ1ZmZlciBvciBhIGJ1ZmZlciBh
dCB0aGUgdG9wIG9mCisrICAgICAqIHRoZSBxdWV1ZSwgYW5kIGlmIG5vdCB0aGVuIHRoaXMgcGFk
IGlzIG5vdCByZWFkeSB1bmxlc3MgaXQgaXMgYWxzbyBFT1MgKi8KKysgICAgaWYgKCFwYWQtPnBy
aXYtPmNsaXBwZWRfYnVmZmVyCisrICAgICAgICAmJiAhR1NUX0lTX0JVRkZFUiAoZ19xdWV1ZV9w
ZWVrX3RhaWwgKCZwYWQtPnByaXYtPmRhdGEpKSkgeworKyAgICAgIC8qIFdlIG11c3Qgbm90IGhh
dmUgYW55IGJ1ZmZlcnMgYXQgYWxsIGluIHRoaXMgcGFkIHRoZW4gYXMgb3RoZXJ3aXNlIHdlCisr
ICAgICAgICogd291bGQndmUgaGFkIGFuIGV2ZW50L3F1ZXJ5IGF0IHRoZSB0b3Agb2YgdGhlIHF1
ZXVlICovCisrICAgICAgZ19hc3NlcnQgKHBhZC0+cHJpdi0+bnVtX2J1ZmZlcnMgPT0gMCk7Cisr
CisrICAgICAgLyogT25seSBjb25zaWRlciB0aGlzIHBhZCBhcyB3b3J0aCB3YWl0aW5nIGZvciBp
ZiBpdCdzIG5vdCBhbHJlYWR5IEVPUy4KKysgICAgICAgKiBUaGVyZSdzIG5vIHBvaW50IGluIHdh
aXRpbmcgZm9yIGJ1ZmZlcnMgb24gRU9TIHBhZHMgKi8KKysgICAgICBpZiAoIXBhZC0+cHJpdi0+
ZW9zKQorKyAgICAgICAgaGF2ZV9idWZmZXIgPSBGQUxTRTsKKyAgICAgfSBlbHNlIGlmIChzZWxm
LT5wcml2LT5wZWVyX2xhdGVuY3lfbGl2ZSkgeworICAgICAgIC8qIEluIGxpdmUgbW9kZSwgaGF2
aW5nIGEgc2luZ2xlIHBhZCB3aXRoIGJ1ZmZlcnMgaXMgZW5vdWdoIHRvCisgICAgICAgICogZ2Vu
ZXJhdGUgYSBzdGFydCB0aW1lIGZyb20gaXQuIEluIG5vbi1saXZlIG1vZGUgYWxsIHBhZHMgbmVl
ZAorQEAgLTQ0Miw3ICs0NjEsMTAgQEAgZ3N0X2FnZ3JlZ2F0b3JfY2hlY2tfcGFkc19yZWFkeSAo
R3N0QWdncmVnYXRvciAqIHNlbGYpCisgICAgIFBBRF9VTkxPQ0sgKHBhZCk7CisgICB9CisgCist
ICBpZiAoIWhhdmVfYnVmZmVyICYmICFoYXZlX2V2ZW50X29yX3F1ZXJ5KQorKyAgaWYgKGhhdmVf
ZXZlbnRfb3JfcXVlcnkpCisrICAgIGdvdG8gcGFkX25vdF9yZWFkeV9idXRfZXZlbnRfb3JfcXVl
cnk7CisrCisrICBpZiAoIWhhdmVfYnVmZmVyKQorICAgICBnb3RvIHBhZF9ub3RfcmVhZHk7Cisg
CisgICBpZiAoaGF2ZV9idWZmZXIpCitAQCAtNDUwLDIzICs0NzIsNDIgQEAgZ3N0X2FnZ3JlZ2F0
b3JfY2hlY2tfcGFkc19yZWFkeSAoR3N0QWdncmVnYXRvciAqIHNlbGYpCisgCisgICBHU1RfT0JK
RUNUX1VOTE9DSyAoc2VsZik7CisgICBHU1RfTE9HX09CSkVDVCAoc2VsZiwgInBhZHMgYXJlIHJl
YWR5Iik7CisrCisrICBpZiAoaGF2ZV9ldmVudF9vcl9xdWVyeV9yZXQpCisrICAgICpoYXZlX2V2
ZW50X29yX3F1ZXJ5X3JldCA9IGhhdmVfZXZlbnRfb3JfcXVlcnk7CisrCisgICByZXR1cm4gVFJV
RTsKKyAKKyBub19zaW5rcGFkczoKKyAgIHsKKyAgICAgR1NUX0xPR19PQkpFQ1QgKHNlbGYsICJw
YWRzIG5vdCByZWFkeTogbm8gc2luayBwYWRzIik7CisgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChz
ZWxmKTsKKysKKysgICAgaWYgKGhhdmVfZXZlbnRfb3JfcXVlcnlfcmV0KQorKyAgICAgICpoYXZl
X2V2ZW50X29yX3F1ZXJ5X3JldCA9IGhhdmVfZXZlbnRfb3JfcXVlcnk7CisrCisgICAgIHJldHVy
biBGQUxTRTsKKyAgIH0KKyBwYWRfbm90X3JlYWR5OgorICAgeworLSAgICBpZiAoaGF2ZV9ldmVu
dF9vcl9xdWVyeSkKKy0gICAgICBHU1RfTE9HX09CSkVDVCAocGFkLCAicGFkIG5vdCByZWFkeSB0
byBiZSBhZ2dyZWdhdGVkIHlldCwiCistICAgICAgICAgICIgYnV0IHdha2luZyB1cCBmb3Igc2Vy
aWFsaXplZCBldmVudCIpOworLSAgICBlbHNlCistICAgICAgR1NUX0xPR19PQkpFQ1QgKHBhZCwg
InBhZCBub3QgcmVhZHkgdG8gYmUgYWdncmVnYXRlZCB5ZXQiKTsKKysgICAgR1NUX0xPR19PQkpF
Q1QgKHBhZCwgInBhZCBub3QgcmVhZHkgdG8gYmUgYWdncmVnYXRlZCB5ZXQiKTsKKyAgICAgR1NU
X09CSkVDVF9VTkxPQ0sgKHNlbGYpOworLSAgICByZXR1cm4gaGF2ZV9ldmVudF9vcl9xdWVyeTsK
KysKKysgICAgaWYgKGhhdmVfZXZlbnRfb3JfcXVlcnlfcmV0KQorKyAgICAgICpoYXZlX2V2ZW50
X29yX3F1ZXJ5X3JldCA9IGhhdmVfZXZlbnRfb3JfcXVlcnk7CisrCisrICAgIHJldHVybiBGQUxT
RTsKKysgIH0KKytwYWRfbm90X3JlYWR5X2J1dF9ldmVudF9vcl9xdWVyeToKKysgIHsKKysgICAg
R1NUX0xPR19PQkpFQ1QgKHBhZCwKKysgICAgICAgICJwYWQgbm90IHJlYWR5IHRvIGJlIGFnZ3Jl
Z2F0ZWQgeWV0LCBuZWVkIHRvIGhhbmRsZSBzZXJpYWxpemVkIGV2ZW50IG9yIHF1ZXJ5IGZpcnN0
Iik7CisrICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzZWxmKTsKKysKKysgICAgaWYgKGhhdmVfZXZl
bnRfb3JfcXVlcnlfcmV0KQorKyAgICAgICpoYXZlX2V2ZW50X29yX3F1ZXJ5X3JldCA9IGhhdmVf
ZXZlbnRfb3JfcXVlcnk7CisrCisrICAgIHJldHVybiBGQUxTRTsKKyAgIH0KKyB9CisgCitAQCAt
NjMwLDYgKzY3MSw3IEBAIGdzdF9hZ2dyZWdhdG9yX3dhaXRfYW5kX2NoZWNrIChHc3RBZ2dyZWdh
dG9yICogc2VsZiwgZ2Jvb2xlYW4gKiB0aW1lb3V0KQorICAgR3N0Q2xvY2tUaW1lIGxhdGVuY3k7
CisgICBHc3RDbG9ja1RpbWUgc3RhcnQ7CisgICBnYm9vbGVhbiByZXM7CisrICBnYm9vbGVhbiBo
YXZlX2V2ZW50X29yX3F1ZXJ5ID0gRkFMU0U7CisgCisgICAqdGltZW91dCA9IEZBTFNFOworIAor
QEAgLTYzNywxMyArNjc5LDIxIEBAIGdzdF9hZ2dyZWdhdG9yX3dhaXRfYW5kX2NoZWNrIChHc3RB
Z2dyZWdhdG9yICogc2VsZiwgZ2Jvb2xlYW4gKiB0aW1lb3V0KQorIAorICAgbGF0ZW5jeSA9IGdz
dF9hZ2dyZWdhdG9yX2dldF9sYXRlbmN5X3VubG9ja2VkIChzZWxmKTsKKyAKKy0gIGlmIChnc3Rf
YWdncmVnYXRvcl9jaGVja19wYWRzX3JlYWR5IChzZWxmKSkgeworKyAgaWYgKGdzdF9hZ2dyZWdh
dG9yX2NoZWNrX3BhZHNfcmVhZHkgKHNlbGYsICZoYXZlX2V2ZW50X29yX3F1ZXJ5KSkgeworICAg
ICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiYWxsIHBhZHMgaGF2ZSBkYXRhIik7CisgICAgIFNS
Q19VTkxPQ0sgKHNlbGYpOworIAorICAgICByZXR1cm4gVFJVRTsKKyAgIH0KKyAKKysgIC8qIElm
IHdlIGhhdmUgYW4gZXZlbnQgb3IgcXVlcnksIGltbWVkaWF0ZWx5IHJldHVybiBGQUxTRSBpbnN0
ZWFkIG9mIHdhaXRpbmcKKysgICAqIGFuZCBoYW5kbGUgaXQgaW1tZWRpYXRlbHkgKi8KKysgIGlm
IChoYXZlX2V2ZW50X29yX3F1ZXJ5KSB7CisrICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJI
YXZlIHNlcmlhbGl6ZWQgZXZlbnQgb3IgcXVlcnkgdG8gaGFuZGxlIGZpcnN0Iik7CisrICAgIFNS
Q19VTkxPQ0sgKHNlbGYpOworKyAgICByZXR1cm4gRkFMU0U7CisrICB9CisrCisgICAvKiBCZWZv
cmUgd2FpdGluZywgY2hlY2sgaWYgd2UncmUgYWN0dWFsbHkgc3RpbGwgcnVubmluZyAqLworICAg
aWYgKCFzZWxmLT5wcml2LT5ydW5uaW5nIHx8ICFzZWxmLT5wcml2LT5zZW5kX2VvcykgeworICAg
ICBTUkNfVU5MT0NLIChzZWxmKTsKK0BAIC03MjIsNyArNzcyLDcgQEAgZ3N0X2FnZ3JlZ2F0b3Jf
d2FpdF9hbmRfY2hlY2sgKEdzdEFnZ3JlZ2F0b3IgKiBzZWxmLCBnYm9vbGVhbiAqIHRpbWVvdXQp
CisgICAgIH0KKyAgIH0KKyAKKy0gIHJlcyA9IGdzdF9hZ2dyZWdhdG9yX2NoZWNrX3BhZHNfcmVh
ZHkgKHNlbGYpOworKyAgcmVzID0gZ3N0X2FnZ3JlZ2F0b3JfY2hlY2tfcGFkc19yZWFkeSAoc2Vs
ZiwgTlVMTCk7CisgICBTUkNfVU5MT0NLIChzZWxmKTsKKyAKKyAgIHJldHVybiByZXM7CitAQCAt
MTE3NSwxNyArMTIyNSw2IEBAIGdzdF9hZ2dyZWdhdG9yX2FnZ3JlZ2F0ZV9mdW5jIChHc3RBZ2dy
ZWdhdG9yICogc2VsZikKKyAgICAgaWYgKCFnc3RfYWdncmVnYXRvcl93YWl0X2FuZF9jaGVjayAo
c2VsZiwgJnRpbWVvdXQpKQorICAgICAgIGNvbnRpbnVlOworIAorLSAgICBldmVudHNfcXVlcnlf
ZGF0YS5wcm9jZXNzZWRfZXZlbnQgPSBGQUxTRTsKKy0gICAgZXZlbnRzX3F1ZXJ5X2RhdGEuZmxv
d19yZXQgPSBHU1RfRkxPV19PSzsKKy0gICAgZ3N0X2VsZW1lbnRfZm9yZWFjaF9zaW5rX3BhZCAo
R1NUX0VMRU1FTlRfQ0FTVCAoc2VsZiksCistICAgICAgICBnc3RfYWdncmVnYXRvcl9kb19ldmVu
dHNfYW5kX3F1ZXJpZXMsICZldmVudHNfcXVlcnlfZGF0YSk7CistCistICAgIGlmICgoZmxvd19y
ZXR1cm4gPSBldmVudHNfcXVlcnlfZGF0YS5mbG93X3JldCkgIT0gR1NUX0ZMT1dfT0spCistICAg
ICAgZ290byBoYW5kbGVfZXJyb3I7CistCistICAgIGlmIChldmVudHNfcXVlcnlfZGF0YS5wcm9j
ZXNzZWRfZXZlbnQpCistICAgICAgY29udGludWU7CistCisgICAgIGlmIChnc3RfcGFkX2NoZWNr
X3JlY29uZmlndXJlIChHU1RfQUdHUkVHQVRPUl9TUkNfUEFEIChzZWxmKSkpIHsKKyAgICAgICBp
ZiAoIWdzdF9hZ2dyZWdhdG9yX25lZ290aWF0ZV91bmxvY2tlZCAoc2VsZikpIHsKKyAgICAgICAg
IGdzdF9wYWRfbWFya19yZWNvbmZpZ3VyZSAoR1NUX0FHR1JFR0FUT1JfU1JDX1BBRCAoc2VsZikp
OworLS0gCisyLjI0LjAKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399592</attachid>
            <date>2020-05-17 09:31:08 -0700</date>
            <delta_ts>2020-07-22 10:22:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207634-20200517173106.patch</filename>
            <type>text/plain</type>
            <size>78682</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTg1Mzk5ODc4NDE1MWNl
ZjgxODEwMzQ1Y2NmOTRkNjZkM2I0M2U5Mi4uMDI3YjJiZjllY2M0MGUyMDMyZDdmYjgyNTcxNmE2
NjExMjNiNmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTA1LTE3ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBJbnRlcm5hbCBhdWRpbyByZW5kZXJpbmcgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGU6OmNyZWF0ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckF1ZGlvUmVuZGVyaW5nUG9saWN5IGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50OjphdWRpb1JlbmRlcmluZ1BvbGljeSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvSU9DYWxsYmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9JT0NhbGxiYWNrOjph
dWRpb1JlbmRlcmluZ1BvbGljeSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcik6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92
aWRlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVy
R1N0cmVhbWVyOjpjb25maWd1cmVBdWRpb0Jpbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXll
ckF1ZGlvUmVuZGVyaW5nUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyQ2xpZW50OjptZWRpYVBsYXllclNob3VsZEludGVybmFsbHlSZW5kZXJBdWRpbyBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oOgorICAgICAg
ICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRl
cmluZ1BvbGljeT46OnRvU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
R1N0cmVhbWVyQXVkaW9NaXhlcjo6aXNBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJl
YW1lckF1ZGlvTWl4ZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJB
dWRpb01peGVyOjpHU3RyZWFtZXJBdWRpb01peGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJl
YW1lckF1ZGlvTWl4ZXI6On5HU3RyZWFtZXJBdWRpb01peGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdTdHJlYW1lckF1ZGlvTWl4ZXI6OmVuc3VyZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lckF1ZGlvTWl4ZXI6OnJlZ2lzdGVyUHJvZHVjZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R1N0cmVhbWVyQXVkaW9NaXhlcjo6dW5yZWdpc3RlclByb2R1Y2VyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Om1peGVyQmFzZVRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5p
dGlhbGl6ZUdTdHJlYW1lckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlQXVkaW9TaW5rRm9yUG9saWN5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpzZWVrKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFN5bmNPbkNsb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlQXVkaW9TaW5rKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9TaW5r
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
Y3JlYXRlR1NUUGxheUJpbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5jcHA6IEFkZGVkLgorICAgICAgICAod2ViS2l0QXVk
aW9TaW5rQ29uc3RydWN0ZWQpOgorICAgICAgICAod2ViS2l0QXVkaW9TaW5rRGlzcG9zZSk6Cisg
ICAgICAgIChnZXRJbnRlcm5hbFZvbHVtZVByb3h5KToKKyAgICAgICAgKHdlYktpdEF1ZGlvU2lu
a1NldFByb3BlcnR5KToKKyAgICAgICAgKHdlYktpdEF1ZGlvU2lua0dldFByb3BlcnR5KToKKyAg
ICAgICAgKHdlYktpdEF1ZGlvU2lua1F1ZXJ5KToKKyAgICAgICAgKHdlYktpdEF1ZGlvU2lua0No
YW5nZVN0YXRlKToKKyAgICAgICAgKHdlYmtpdF9hdWRpb19zaW5rX2NsYXNzX2luaXQpOgorICAg
ICAgICAod2Via2l0QXVkaW9TaW5rTmV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmg6IEFkZGVkLgorCiAyMDIwLTA1LTE3
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBNb3ZlIHRvIG5ldyBQYXN0ZWJvYXJkIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MGE1ZWY1NTJkOWRh
MjA3OWM0YmM0NzA2OWU5ZjkwZDAwZTUxNzczLi4zY2RlMGE2NjVkNDAzMDkzZTM0Zjk2MmQyNjIy
ZTUxODk2MjkzODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA1LTE3ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBJbnRlcm5hbCBhdWRpbyByZW5kZXJpbmcgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW4gYXVkaW8gcmVuZGVyaW5nIHBvbGljeSBwcm9w
ZXJ0eSBpcyBpbnRyb2R1Y2VkIGluIHRoZSBXUEUgYW5kIEdUSyBwb3J0cy4gQ3VycmVudGx5IGl0
IGhhcworICAgICAgICAyIHZhbHVlcywgSG9zdERlZmF1bHQgKGRlZmF1bHQpIGFuZCBJbnRlcm5h
bE1peGluZy4gQSB0aGlyZCB2YWx1ZSBtaWdodCBiZSBhZGRlZCBmb3IKKyAgICAgICAgY2xpZW50
LXNpZGUgcmVuZGVyaW5nIHN1cHBvcnQuCisKKyAgICAgICAgV2hlbiBJbnRlcm5hbE1peGluZyBp
cyBzZWxlY3RlZCwgYSBzaW5nbGUgY29ubmVjdGlvbiB0byB0aGUgaG9zdCBzb3VuZCBkYWVtb24g
d2lsbCBiZQorICAgICAgICBtYWludGFpbmVkLiBUaGUgdmFyaW91cyBpbnRlcm5hbCBHU3RyZWFt
ZXIgYmFja2VuZHMgd2lsbCB1c2UgYW4gaW50ZXJuYWwgYXVkaW8gc2luaworICAgICAgICBwZXJm
b3JtaW5nIHRoZSBtaXhpbmcuIFRoZSBzaW5rIHdpbGwgcmVsYXkgdGhlIHJlc3VsdGluZyBhdWRp
byBzdHJlYW0gdG8gdGhlIGhvc3QgYXVkaW8KKyAgICAgICAgZGFlbW9uICh1c3VhbGx5IFB1bHNl
QXVkaW8pLgorCisgICAgICAgICogU2hhcmVkL0F1ZGlvUmVuZGVyaW5nUG9saWN5Lmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3R2V0
UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAg
ICAod2Via2l0V2ViVmlld1dpbGxTdGFydExvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4w
LXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6bV9hdWRpb1JlbmRlcmluZ1BvbGljeSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF1ZGlv
UmVuZGVyaW5nUG9saWN5IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3N0cmVhbWVyL1dl
YlBhZ2VQcm94eUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2V0QXVkaW9SZW5kZXJpbmdQb2xpY3kpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjphdWRpb1JlbmRlcmluZ1BvbGljeSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXVkaW9SZW5kZXJpbmdQb2xpY3kgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNldEF1ZGlvUmVuZGVyaW5nUG9saWN5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0wNS0xNyAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gTW92ZSB0byBuZXcg
UGFzdGVib2FyZCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCAxNzU5YWU0
YTVhNjM1YmMwNThlMzBjMzY1YzEzNDRmYmIzOTc5ZTE1Li4zOWFhMjNjMjk2NzJmOWYwZGIxMjY5
MDJiODJhZjkzZGFjMTM4YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC0z
MCw2ICszMCw5IEBACiAKICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRp
b0Rlc3RpbmF0aW9uLmgiCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiTWVkaWFTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgpA
QCAtODcsNiArOTAsMTggQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0
ZURlc3RpbmF0aW9uKCkKICAgICBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUgPSBBdWRpb0Rlc3Rp
bmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKTsKICAgICBMT0coV2ViQXVkaW8sICI+Pj4+IGhh
cmR3YXJlU2FtcGxlUmF0ZSA9ICVmXG4iLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwogCisjaWYgVVNF
KEdTVFJFQU1FUikKKyAgICBzd2l0Y2ggKGNvbnRleHQoKS5kb2N1bWVudCgpLT5wYWdlKCktPmNo
cm9tZSgpLmNsaWVudCgpLmF1ZGlvUmVuZGVyaW5nUG9saWN5KCkpIHsKKyAgICBjYXNlIENocm9t
ZUNsaWVudDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OgorICAgICAgICBtX2F1
ZGlvUmVuZGVyaW5nUG9saWN5ID0gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xp
Y3k6Okhvc3REZWZhdWx0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENocm9tZUNsaWVudDo6
QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkludGVybmFsTWl4aW5nOgorICAgICAgICBtX2F1ZGlvUmVu
ZGVyaW5nUG9saWN5ID0gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Oklu
dGVybmFsTWl4aW5nOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisjZW5kaWYKICAgICBtX2Rlc3RpbmF0aW9uID0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPm1lZGlhU3RyYXRlZ3koKS5jcmVhdGVBdWRpb0Rlc3RpbmF0aW9u
KCp0aGlzLCBtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBjaGFubmVs
Q291bnQoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgKaW5kZXggNmZkOTVjMGYzMDExNGNkZTMyYzI3ZmExOGE2MWFlMmNkZTUxMjhmYy4uYjVlYmFk
NTUyZWMxOTRmMDgxZWM2NTY5NDJmMzdiNzYzN2M1MjUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oCkBAIC0zOSw3ICszOSwxMSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCB+
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7Ci0gICAgCisKKyNpZiBVU0UoR1NUUkVBTUVS
KQorICAgIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVuZGVy
aW5nUG9saWN5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdWRpb1JlbmRlcmluZ1BvbGljeTsg
fQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlKEF1ZGlvQ29udGV4dCYpOwogICAgIHZvaWQgY3JlYXRlRGVzdGluYXRpb24oKTsKQEAg
LTU5LDYgKzYzLDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGlu
YXRpb24+IG1fZGVzdGluYXRpb247CiAgICAgU3RyaW5nIG1faW5wdXREZXZpY2VJZDsKICAgICB1
bnNpZ25lZCBtX251bWJlck9mSW5wdXRDaGFubmVscyB7IDAgfTsKKworI2lmIFVTRShHU1RSRUFN
RVIpCisgICAgTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3kgbV9hdWRpb1Jl
bmRlcmluZ1BvbGljeTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZWY5ZmJkNzQwYjFjMzU1
ZDcyODkzN2I2NTI3YjY4OGZjNTkwNzQwYi4uYzg0NTQ5NzlkZmQzY2ZlN2U4NTIxMTYxOTY0Y2Rl
NzY4ZDJkMjUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBA
IC03MDY2LDYgKzcwNjYsMjIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXF1ZXN0SW5zdGFs
bE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29uc3QKIAogICAgIGRvY3Vt
ZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRp
YVBsdWdpbnMoZGV0YWlscywgZGVzY3JpcHRpb24sIGNhbGxiYWNrKTsKIH0KKworTWVkaWFQbGF5
ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3kgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJBdWRpb1JlbmRlcmluZ1BvbGljeSgpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1bWVudCgpLnBh
Z2UoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9s
aWN5OjpIb3N0RGVmYXVsdDsKKworICAgIHN3aXRjaCAoZG9jdW1lbnQoKS5wYWdlKCktPmNocm9t
ZSgpLmNsaWVudCgpLmF1ZGlvUmVuZGVyaW5nUG9saWN5KCkpIHsKKyAgICBjYXNlIENocm9tZUNs
aWVudDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OgorICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OworICAg
IGNhc2UgQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SW50ZXJuYWxNaXhpbmc6
CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6
SW50ZXJuYWxNaXhpbmc7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1Bv
bGljeTo6SG9zdERlZmF1bHQ7Cit9CiAjZW5kaWYKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpy
ZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZShNZWRpYUVsZW1l
bnRTZXNzaW9uOjpCZWhhdmlvclJlc3RyaWN0aW9ucyBtYXNrKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAppbmRleCAyYjY4ZGU4OGZjODBjYmY0MWU4MmNmYjU5ZjQyYzA5Njgy
OTc2NTM2Li5hNGY5MmE0OTBiYmQzYmRlZTI5MGMyYTkwOTNmMjg3ZjY0ZmJhNjNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNzUwLDYgKzc1MCw3IEBAIHByaXZh
dGU6CiAKICNpZiBVU0UoR1NUUkVBTUVSKQogICAgIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5n
UGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJikgZmluYWw7
CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3kgbWVkaWFQbGF5ZXJB
dWRpb1JlbmRlcmluZ1BvbGljeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKICAgICB2b2lkIHBl
bmRpbmdBY3Rpb25UaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRl
eCBlYjA5MmI4MWE2NGYyODA1MGJkYjZiODVkMDI4OTg0OWI3MTllMmM2Li5kMjYyMjM1MzlmZTMx
YzdjMzE5N2QwYWZjYWIzZGI4MzM0M2NjNDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKQEAgLTQ5NCw2ICs0OTQsMTIgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoR1NUUkVBTUVSKQogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRp
YVBsdWdpbnMoY29uc3QgU3RyaW5nJiAvKmRldGFpbHMqLywgY29uc3QgU3RyaW5nJiAvKmRlc2Ny
aXB0aW9uKi8sIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNr
JikgeyB9CisKKyAgICBlbnVtIGNsYXNzIEF1ZGlvUmVuZGVyaW5nUG9saWN5IHsKKyAgICAgICAg
SG9zdERlZmF1bHQsCisgICAgICAgIEludGVybmFsTWl4aW5nLAorICAgIH07CisgICAgdmlydHVh
bCBBdWRpb1JlbmRlcmluZ1BvbGljeSBhdWRpb1JlbmRlcmluZ1BvbGljeSgpIGNvbnN0IHsgcmV0
dXJuIEF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDsgfQogI2VuZGlmCiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQppbmRleCA4MzQ3YmJjNmE5MDBhZTJlYzJj
ZTU5MzEzYjk4ZmQxYTE3YWIzNWYxLi5iMjc5YWRjYzgxYTE0ZDY3Y2NkMWI2NmFhNTY2ZjBmYWI1
OWYxNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCkBAIC05LDYg
KzksNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dMVmlkZW9TaW5rR1N0cmVhbWVy
LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlv
TWl4ZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Hc3RBbGxvY2F0
b3JGYXN0TWFsbG9jLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAtMjIsNiArMjMsNyBAQCBpZiAoRU5BQkxFX1ZJ
REVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3Bw
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJL
aXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSU9DYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9JT0NhbGxiYWNrLmgKaW5kZXggYTQzODkxZjBiZjQyZmQyYmRlMDZk
ZDAwYzkzMjRjZjFkYTIwYzViMi4uNzc2MWZhNTQ2Mzg0NmY4MzUyZTcxYmYzMDEyMzJmMmYwY2Ix
MzA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9JT0Nh
bGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9JT0NhbGxi
YWNrLmgKQEAgLTI2LDggKzI2LDExIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQXVk
aW9JT0NhbGxiYWNrX2gKLSNkZWZpbmUgQXVkaW9JT0NhbGxiYWNrX2gKKyNwcmFnbWEgb25jZQor
CisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJNZWRpYVBsYXllckVudW1zLmgiCisjZW5k
aWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw5ICs0NSwxMiBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nRGlkQ2hhbmdlKCkgPSAwOwogCisjaWYgVVNFKEdT
VFJFQU1FUikKKyAgICB2aXJ0dWFsIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9s
aWN5IGF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29uc3QgeyByZXR1cm4gTWVkaWFQbGF5ZXJFbnVt
czo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OyB9OworI2VuZGlmCisKICAgICB2
aXJ0dWFsIH5BdWRpb0lPQ2FsbGJhY2soKSA9IGRlZmF1bHQ7CiB9OwogCiB9IC8vIFdlYkNvcmUK
IAotI2VuZGlmIC8vIEF1ZGlvSU9DYWxsYmFja19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lci5jcHAKaW5kZXggMWE1NDk1ZmQ3NjRkOWMzY2M2ZWRiNTgxZmE0ODBlYWVhZDE0
NTliZi4uZjBmMGFkMWJhMTk2ZDI2ZmNjNWYzMGFhZjhmN2E5ODlmMzg0MTQ2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMjQsOCArMjQsOSBAQAogI2lu
Y2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaCIKIAogI2luY2x1ZGUgIkF1ZGlvQ2hh
bm5lbC5oIgorI2luY2x1ZGUgIkF1ZGlvSU9DYWxsYmFjay5oIgogI2luY2x1ZGUgIkF1ZGlvU291
cmNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAi
R1N0cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIldlYktp
dFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2dzdGF1ZGlv
YmFzZXNpbmsuaD4KQEAgLTk1LDM0ICs5NiwzNyBAQCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
OjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInByb3ZpZGVyIiwgJm1fY2FsbGJhY2ssCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImZyYW1lcyIsIGZyYW1lc1RvUHVsbCwgbnVsbHB0cikpOwogCi0gICAgR1JlZlB0cjxH
c3RFbGVtZW50PiBhdWRpb1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1dG9hdWRp
b3NpbmsiLCBudWxscHRyKTsKKyAgICBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1Bv
bGljeSBhdWRpb1JlbmRlcmluZ1BvbGljeSA9IGNhbGxiYWNrLmF1ZGlvUmVuZGVyaW5nUG9saWN5
KCk7CisgICAgR3N0RWxlbWVudCogYXVkaW9TaW5rID0gY3JlYXRlQXVkaW9TaW5rRm9yUG9saWN5
KGF1ZGlvUmVuZGVyaW5nUG9saWN5KTsKICAgICBtX2F1ZGlvU2lua0F2YWlsYWJsZSA9IGF1ZGlv
U2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBjcmVhdGUgR1N0cmVhbWVyIGF1dG9hdWRpb3NpbmsgZWxlbWVudCIpOworICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVudCIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZ19zaWduYWxfY29ubmVjdChhdWRpb1Npbmsu
Z2V0KCksICJjaGlsZC1hZGRlZCIsIEdfQ0FMTEJBQ0soYXV0b0F1ZGlvU2lua0NoaWxkQWRkZWRD
YWxsYmFjayksIG51bGxwdHIpOwotCi0gICAgLy8gQXV0b2F1ZGlvc2luayBkb2VzIHRoZSByZWFs
IHNpbmsgZGV0ZWN0aW9uIGluIHRoZSBHU1RfU1RBVEVfTlVMTC0+UkVBRFkgdHJhbnNpdGlvbgot
ICAgIC8vIHNvIGl0J3MgYmVzdCB0byByb2xsIGl0IHRvIFJFQURZIGFzIHNvb24gYXMgcG9zc2li
bGUgdG8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtCi0gICAgLy8gYXVkaW9zaW5rIHdh
cyBsb2FkZWQgY29ycmVjdGx5LgotICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRlQ2hhbmdl
UmV0dXJuID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlvU2luay5nZXQoKSwgR1NUX1NUQVRF
X1JFQURZKTsKLSAgICBpZiAoc3RhdGVDaGFuZ2VSZXR1cm4gPT0gR1NUX1NUQVRFX0NIQU5HRV9G
QUlMVVJFKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNoYW5nZSBhdXRvYXVkaW9z
aW5rIGVsZW1lbnQgc3RhdGUiKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlv
U2luay5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwotICAgICAgICBtX2F1ZGlvU2lua0F2YWlsYWJs
ZSA9IGZhbHNlOwotICAgICAgICByZXR1cm47CisgICAgaWYgKEdTVF9JU19CSU4oYXVkaW9TaW5r
KSkgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KGF1ZGlvU2luaywgImNoaWxkLWFkZGVkIiwg
R19DQUxMQkFDSyhhdXRvQXVkaW9TaW5rQ2hpbGRBZGRlZENhbGxiYWNrKSwgbnVsbHB0cik7CisK
KyAgICAgICAgLy8gQXV0b2F1ZGlvc2luayBkb2VzIHRoZSByZWFsIHNpbmsgZGV0ZWN0aW9uIGlu
IHRoZSBHU1RfU1RBVEVfTlVMTC0+UkVBRFkgdHJhbnNpdGlvbgorICAgICAgICAvLyBzbyBpdCdz
IGJlc3QgdG8gcm9sbCBpdCB0byBSRUFEWSBhcyBzb29uIGFzIHBvc3NpYmxlIHRvIGVuc3VyZSB0
aGUgdW5kZXJseWluZyBwbGF0Zm9ybQorICAgICAgICAvLyBhdWRpb3Npbmsgd2FzIGxvYWRlZCBj
b3JyZWN0bHkuCisgICAgICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRlQ2hhbmdlUmV0dXJu
ID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlvU2luaywgR1NUX1NUQVRFX1JFQURZKTsKKyAg
ICAgICAgaWYgKHN0YXRlQ2hhbmdlUmV0dXJuID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkg
eworICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY2hhbmdlIGF1dG9hdWRpb3Npbmsg
ZWxlbWVudCBzdGF0ZSIpOworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlv
U2luaywgR1NUX1NUQVRFX05VTEwpOworICAgICAgICAgICAgbV9hdWRpb1NpbmtBdmFpbGFibGUg
PSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEdz
dEVsZW1lbnQqIGF1ZGlvQ29udmVydCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9j
b252ZXJ0IiwgbnVsbHB0cik7CiAgICAgR3N0RWxlbWVudCogYXVkaW9SZXNhbXBsZSA9IGdzdF9l
bGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9yZXNhbXBsZSIsIG51bGxwdHIpOwotICAgIGdzdF9i
aW5fYWRkX21hbnkoR1NUX0JJTihtX3BpcGVsaW5lKSwgd2Via2l0QXVkaW9TcmMsIGF1ZGlvQ29u
dmVydCwgYXVkaW9SZXNhbXBsZSwgYXVkaW9TaW5rLmdldCgpLCBudWxscHRyKTsKKyAgICBnc3Rf
YmluX2FkZF9tYW55KEdTVF9CSU5fQ0FTVChtX3BpcGVsaW5lKSwgd2Via2l0QXVkaW9TcmMsIGF1
ZGlvQ29udmVydCwgYXVkaW9SZXNhbXBsZSwgYXVkaW9TaW5rLCBudWxscHRyKTsKIAogICAgIC8v
IExpbmsgc3JjIHBhZHMgZnJvbSB3ZWJraXRBdWRpb1NyYyB0byBhdWRpb0NvbnZlcnQgISBhdWRp
b1Jlc2FtcGxlICEgYXV0b2F1ZGlvc2luay4KICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVs
bCh3ZWJraXRBdWRpb1NyYywgInNyYyIsIGF1ZGlvQ29udmVydCwgInNpbmsiLCBHU1RfUEFEX0xJ
TktfQ0hFQ0tfTk9USElORyk7CiAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoYXVkaW9D
b252ZXJ0LCAic3JjIiwgYXVkaW9SZXNhbXBsZSwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tf
Tk9USElORyk7Ci0gICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoYXVkaW9SZXNhbXBsZSwg
InNyYyIsIGF1ZGlvU2luay5nZXQoKSwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElO
Ryk7CisgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoYXVkaW9SZXNhbXBsZSwgInNyYyIs
IGF1ZGlvU2luaywgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CiB9CiAKIEF1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oCmluZGV4IDNiODlmZWJjNjI3YTQ3NjU4
NmQyYzMzOGQyZjJmNTU5NzlhYzkyMDEuLmI0YTEyZGQ5MGU2YmE4MjE4NTEzN2Y4NGEwZmVkOTFk
ODc1M2QzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaApAQCAtMjEs
NiArMjEsNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3Rp
bmF0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJFbnVtcy5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJj
ZVByb3ZpZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcAppbmRleCA1NGIzOWY0NWE1
YmE3MDBlZTBlOWJhYTE2NTM2ZDIxODg0ZWQxMGY4Li4wZDY2NjFkNDVmZTkwZTA4MjJmM2U4YmFl
MzJiMmVlMDIwMzI0Y2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3Ry
ZWFtZXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1l
cjo6fkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIoKQogICAgIGdfb2JqZWN0X3VucmVmKG1f
ZnJvbnRSaWdodEFkYXB0ZXIpOwogfQogCi12b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFt
ZXI6OmNvbmZpZ3VyZUF1ZGlvQmluKEdzdEVsZW1lbnQqIGF1ZGlvQmluLCBHc3RFbGVtZW50KiB0
ZWVQcmVkZWNlc3NvcikKK3ZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y29uZmln
dXJlQXVkaW9CaW4oR3N0RWxlbWVudCogYXVkaW9CaW4sIEdzdEVsZW1lbnQqIGF1ZGlvU2luaykK
IHsKICAgICBtX2F1ZGlvU2lua0JpbiA9IGF1ZGlvQmluOwogCkBAIC0xNTIsMjEgKzE1MiwxMiBA
QCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmNvbmZpZ3VyZUF1ZGlvQmluKEdz
dEVsZW1lbnQqIGF1ZGlvQmluLCBHc3RFbAogICAgIEdzdEVsZW1lbnQqIGF1ZGlvUmVzYW1wbGUg
PSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1ZGlvcmVzYW1wbGUiLCBudWxscHRyKTsKICAg
ICBHc3RFbGVtZW50KiBhdWRpb1Jlc2FtcGxlMiA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgi
YXVkaW9yZXNhbXBsZSIsIG51bGxwdHIpOwogICAgIEdzdEVsZW1lbnQqIHZvbHVtZUVsZW1lbnQg
PSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInZvbHVtZSIsICJ2b2x1bWUiKTsKLSAgICBHc3RF
bGVtZW50KiBhdWRpb1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1dG9hdWRpb3Np
bmsiLCBudWxscHRyKTsKIAogICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX2F1ZGlvU2lu
a0Jpbi5nZXQoKSksIGF1ZGlvVGVlLCBhdWRpb1F1ZXVlLCBhdWRpb0NvbnZlcnQsIGF1ZGlvUmVz
YW1wbGUsIHZvbHVtZUVsZW1lbnQsIGF1ZGlvQ29udmVydDIsIGF1ZGlvUmVzYW1wbGUyLCBhdWRp
b1NpbmssIG51bGxwdHIpOwogCi0gICAgLy8gSW4gY2FzZXMgd2hlcmUgdGhlIGF1ZGlvLXNpbmsg
bmVlZHMgZWxlbWVudHMgYmVmb3JlIHRlZSAoc3VjaAotICAgIC8vIGFzIHNjYWxldGVtcG8pIHRo
ZXkgbmVlZCB0byBiZSBsaW5rZWQgdG8gdGVlIHdoaWNoIGluIHRoaXMgY2FzZQotICAgIC8vIGRv
ZXNuJ3QgbmVlZCBhIGdob3N0IHBhZC4gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB0ZWVQcmVkZWNl
c3NvcgotICAgIC8vIGNoYWluIGFscmVhZHkgY29uZmlndXJlZCBhIGdob3N0IHBhZC4KLSAgICBp
ZiAodGVlUHJlZGVjZXNzb3IpCi0gICAgICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkc19mdWxsKHRl
ZVByZWRlY2Vzc29yLCAic3JjIiwgYXVkaW9UZWUsICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNL
X05PVEhJTkcpOwotICAgIGVsc2UgewotICAgICAgICAvLyBBZGQgYSBnaG9zdHBhZCB0byB0aGUg
YmluIHNvIGl0IGNhbiBwcm94eSB0byB0ZWUuCi0gICAgICAgIEdSZWZQdHI8R3N0UGFkPiBhdWRp
b1RlZVNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoYXVkaW9U
ZWUsICJzaW5rIikpOwotICAgICAgICBnc3RfZWxlbWVudF9hZGRfcGFkKG1fYXVkaW9TaW5rQmlu
LmdldCgpLCBnc3RfZ2hvc3RfcGFkX25ldygic2luayIsIGF1ZGlvVGVlU2lua1BhZC5nZXQoKSkp
OwotICAgIH0KKyAgICAvLyBBZGQgYSBnaG9zdHBhZCB0byB0aGUgYmluIHNvIGl0IGNhbiBwcm94
eSB0byB0ZWUuCisgICAgR1JlZlB0cjxHc3RQYWQ+IGF1ZGlvVGVlU2lua1BhZCA9IGFkb3B0R1Jl
Zihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChhdWRpb1RlZSwgInNpbmsiKSk7CisgICAgZ3N0
X2VsZW1lbnRfYWRkX3BhZChtX2F1ZGlvU2lua0Jpbi5nZXQoKSwgZ3N0X2dob3N0X3BhZF9uZXco
InNpbmsiLCBhdWRpb1RlZVNpbmtQYWQuZ2V0KCkpKTsKIAogICAgIC8vIExpbmsgYSBuZXcgc3Jj
IHBhZCBmcm9tIHRlZSB0byBxdWV1ZSAhIGF1ZGlvY29udmVydCAhCiAgICAgLy8gYXVkaW9yZXNh
bXBsZSAhIHZvbHVtZSAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgIQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJv
dmlkZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmgKaW5kZXggZDZiYTIyYTMxMWU1OWY3M2E4
MTcyOGVkZjQ0NTE3ZGFkZDUzZWZiMC4uZTRmNjUxMmYxMmEwM2YxMzljNDM3ZGMyMGQ3MTcyNGIx
ZDRiMjM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5oCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVy
KCk7CiAgICAgfkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIoKTsKIAotICAgIHZvaWQgY29u
ZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCogYXVkaW9CaW4sIEdzdEVsZW1lbnQqIHRlZVByZWRl
Y2Vzc29yKTsKKyAgICB2b2lkIGNvbmZpZ3VyZUF1ZGlvQmluKEdzdEVsZW1lbnQqIGF1ZGlvQmlu
LCBHc3RFbGVtZW50KiBhdWRpb1NpbmspOwogCiAgICAgdm9pZCBwcm92aWRlSW5wdXQoQXVkaW9C
dXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENsaWVu
dChBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNWMyYWFmOGFjY2Iz
MTYwMDA4ZGNiZmFkMDlmNGY1ZmE4ZmE3OTE5YS4uYTVmMWRhMjMzYWFlOTQ3MDdmM2IzMGY2NThk
ODc4ZTQzYWJiZTAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcApAQCAtMTQ2Miw2ICsxNDYyLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXI6
OnNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oKQogCiAgICAgbV9wcml2YXRlLT5zaW11bGF0ZUF1
ZGlvSW50ZXJydXB0aW9uKCk7CiB9CisKK01lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5n
UG9saWN5IE1lZGlhUGxheWVyOjphdWRpb1JlbmRlcmluZ1BvbGljeSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyQXVkaW9SZW5kZXJpbmdQb2xpY3koKTsKK30KICNl
bmRpZgogCiB2b2lkIE1lZGlhUGxheWVyOjpiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpCkBAIC0x
Njk3LDYgKzE3MDIsMTkgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlh
UGxheWVyOjpCdWZmZXJpbmdQb2xpY3kgZW51bWVyYXRpb25WYWx1ZSkKICAgICByZXR1cm4gdmFs
dWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldOwogfQogCisjaWYgVVNF
KEdTVFJFQU1FUikKK1N0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXll
ckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeSBlbnVtZXJhdGlvblZhbHVlKQoreworICAgIHN0
YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHZhbHVlc1tdID0geworICAgICAgICBN
QUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiSG9zdERlZmF1bHQiKSwKKyAgICAgICAgTUFLRV9TVEFU
SUNfU1RSSU5HX0lNUEwoIkludGVybmFsTWl4aW5nIiksCisgICAgfTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KCFzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5n
UG9saWN5OjpIb3N0RGVmYXVsdCksICJNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1Bv
bGljeTo6SG9zdERlZmF1bHQgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQ
b2xpY3k6OkludGVybmFsTWl4aW5nKSA9PSAxLCAiTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5k
ZXJpbmdQb2xpY3k6OkludGVybmFsTWl4aW5nIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7CisgICAg
QVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlf
TEVOR1RIKHZhbHVlcykpOworICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90Pihl
bnVtZXJhdGlvblZhbHVlKV07Cit9CisjZW5kaWYKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA4NmE3ZDQ1OTBiZWFj
Y2RmYWE0NGU5NDk4NjYwMjIwMjJlMTVmNTNiLi45YjFjYjdhMTA5YTU4NWM5ODBkYWE2ZmViYjY3
N2U0N2M3N2UwMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmgKQEAgLTI2Myw2ICsyNjMsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoR1NUUkVB
TUVSKQogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5n
UGx1Z2luc0NhbGxiYWNrJikgeyB9OworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXJFbnVtczo6QXVk
aW9SZW5kZXJpbmdQb2xpY3kgbWVkaWFQbGF5ZXJBdWRpb1JlbmRlcmluZ1BvbGljeSgpIGNvbnN0
IHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVm
YXVsdDsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJTaG91bGREaXNh
YmxlU2xlZXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMjc4LDYgKzI3OSwxMCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCB2b2lkKiBtZWRpYVBsYXllckxvZ0lkZW50aWZpZXIo
KSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBjb25zdCBMb2dnZXImIG1lZGlhUGxh
eWVyTG9nZ2VyKCkgPSAwOwogI2VuZGlmCisKKyAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJT
aG91bGRJbnRlcm5hbGx5UmVuZGVyQXVkaW8oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKwog
fTsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFQbGF5ZXIgOiBwdWJsaWMgTWVkaWFQbGF5
ZXJFbnVtcywgcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFQbGF5ZXI+IHsKQEAgLTYyNyw2ICs2MzIs
NyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoR1NUUkVBTUVSKQogICAgIHZvaWQgcmVxdWVzdEluc3Rh
bGxNaXNzaW5nUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNr
JiBjYWxsYmFjaykgeyBjbGllbnQoKS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGRldGFp
bHMsIGRlc2NyaXB0aW9uLCBjYWxsYmFjayk7IH0KKyAgICBNZWRpYVBsYXllckVudW1zOjpBdWRp
b1JlbmRlcmluZ1BvbGljeSBhdWRpb1JlbmRlcmluZ1BvbGljeSgpIGNvbnN0OwogI2VuZGlmCiAK
ICAgICBjb25zdCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIHBsYXllclByaXZhdGUoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaAppbmRleCBhMDAxNTk3MWE4MjJi
NDZmN2FjYzFiODgwMzAzOGEyNzFhNDY3MWQ5Li5lYTBjZDM1Zjg5MzFkYTU1MDU3MDI4YjdjNDRl
NzAyZDg4NDQ1MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllckVudW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJFbnVtcy5oCkBAIC0xMDYsNiArMTA2LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgVGFyZ2V0VHlwZVRWT3V0CiAgICAgfTsKIAorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgZW51
bSBjbGFzcyBBdWRpb1JlbmRlcmluZ1BvbGljeSA6IHVpbnQ4X3QgeworICAgICAgICBIb3N0RGVm
YXVsdCwKKyAgICAgICAgSW50ZXJuYWxNaXhpbmcsCisgICAgfTsKKyNlbmRpZgogfTsKIAogU3Ry
aW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3Rh
dGUpOwpAQCAtMTE0LDYgKzEyMCw5IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkKTsKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUpOwogU3RyaW5nIGNvbnZlcnRF
bnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeSk7CiAK
KyNpZiBVU0UoR1NUUkVBTUVSKQorU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1l
ZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5KTsKKyNlbmRpZgogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAKQEAgLTI0MCw0ICsyNDksMTQgQEAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKICAgICA+OwogfTsKIAorI2lmIFVTRShHU1RSRUFNRVIpCit0ZW1wbGF0ZSA8Pgor
c3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVy
aW5nUG9saWN5PiB7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5IHBvbGljeSkKKyAgICB7
CisgICAgICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhwb2xpY3kpOworICAg
IH0KK307CisjZW5kaWYKKwogfTsgLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckF1ZGlvTWl4ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyZDhmMDgwN2ZjMWQzZTAzYWNlZmM0MTA0NDk4
OGViZDQyZGI3OGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5jcHAKQEAgLTAsMCArMSwxNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJHU3RyZWFtZXJBdWRpb01peGVyLmgiCisKKyNpZiBVU0UoR1NUUkVBTUVS
KQorCisjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHU1RfREVCVUdfQ0FURUdPUllf
U1RBVElDKHdlYmtpdF9tZWRpYV9nc3RfYXVkaW9fbWl4ZXJfZGVidWcpOworI2RlZmluZSBHU1Rf
Q0FUX0RFRkFVTFQgd2Via2l0X21lZGlhX2dzdF9hdWRpb19taXhlcl9kZWJ1ZworCitib29sIEdT
dHJlYW1lckF1ZGlvTWl4ZXI6OmlzQWxsb3dlZCgpCit7CisgICAgcmV0dXJuIHdlYmtpdEdzdENo
ZWNrVmVyc2lvbigxLCAxNiwgMik7Cit9CisKK0dTdHJlYW1lckF1ZGlvTWl4ZXImIEdTdHJlYW1l
ckF1ZGlvTWl4ZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEdT
dHJlYW1lckF1ZGlvTWl4ZXI+IHNoYXJlZEluc3RhbmNlOworICAgIHJldHVybiBzaGFyZWRJbnN0
YW5jZTsKK30KKworR1N0cmVhbWVyQXVkaW9NaXhlcjo6R1N0cmVhbWVyQXVkaW9NaXhlcigpCit7
CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X21lZGlhX2dzdF9hdWRpb19taXhl
cl9kZWJ1ZywgIndlYmtpdGF1ZGlvbWl4ZXIiLCAwLCAiV2ViS2l0IEdTdHJlYW1lciBhdWRpbyBt
aXhlciIpOworICAgIG1fcGlwZWxpbmUgPSBhZG9wdEdSZWYoR1NUX0VMRU1FTlRfQ0FTVChnc3Rf
ZWxlbWVudF9mYWN0b3J5X21ha2UoInBpcGVsaW5lIiwgIndlYmtpdGF1ZGlvbWl4ZXIiKSkpOwor
ICAgIGNvbm5lY3RTaW1wbGVCdXNNZXNzYWdlQ2FsbGJhY2sobV9waXBlbGluZS5nZXQoKSk7CisK
KyAgICBhdXRvIGNsb2NrID0gYWRvcHRHUmVmKGdzdF9zeXN0ZW1fY2xvY2tfb2J0YWluKCkpOwor
ICAgIGdzdF9waXBlbGluZV91c2VfY2xvY2soR1NUX1BJUEVMSU5FX0NBU1QobV9waXBlbGluZS5n
ZXQoKSksIGNsb2NrLmdldCgpKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfYmFzZV90aW1lKG1fcGlw
ZWxpbmUuZ2V0KCksIG1peGVyQmFzZVRpbWUoKSk7CisKKyAgICBtX21peGVyID0gZ3N0X2VsZW1l
bnRfZmFjdG9yeV9tYWtlKCJhdWRpb21peGVyIiwgbnVsbHB0cik7CisgICAgR3N0RWxlbWVudCog
YXVkaW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdXRvYXVkaW9zaW5rIiwgbnVs
bHB0cik7CisKKyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU5fQ0FTVChtX3BpcGVsaW5lLmdl
dCgpKSwgbV9taXhlci5nZXQoKSwgYXVkaW9TaW5rLCBudWxscHRyKTsKKyAgICBnc3RfZWxlbWVu
dF9saW5rKG1fbWl4ZXIuZ2V0KCksIGF1ZGlvU2luayk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0
YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9SRUFEWSk7Cit9CisKK0dTdHJlYW1lckF1
ZGlvTWl4ZXI6On5HU3RyZWFtZXJBdWRpb01peGVyKCkKK3sKKyAgICBnc3RfZWxlbWVudF9zZXRf
c3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworfQorCit2b2lkIEdTdHJl
YW1lckF1ZGlvTWl4ZXI6OmVuc3VyZVN0YXRlKEdzdFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKQor
eworI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDE0LCAwKQorICAgIEdTVF9ERUJVR19PQkpFQ1Qo
bV9waXBlbGluZS5nZXQoKSwgIkhhbmRsaW5nICVzIHRyYW5zaXRpb24gKCV1IG1peGVyIHBhZHMp
IiwgZ3N0X3N0YXRlX2NoYW5nZV9nZXRfbmFtZShzdGF0ZUNoYW5nZSksIG1fbWl4ZXItPm51bXNp
bmtwYWRzKTsKKyNlbmRpZgorICAgIHN3aXRjaCAoc3RhdGVDaGFuZ2UpIHsKKyAgICBjYXNlIEdT
VF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgorICAgICAgICBnc3RfZWxlbWVudF9zZXRf
c3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1BBVVNFRCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUExBWUlORzoKKyAgICAgICAg
Z3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QTEFZSU5H
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BMQVlJTkdfVE9f
UEFVU0VEOgorICAgICAgICBpZiAobV9taXhlci0+bnVtc2lua3BhZHMgPT0gMSkKKyAgICAgICAg
ICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUEFV
U0VEKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9U
T19SRUFEWToKKyAgICAgICAgaWYgKG1fbWl4ZXItPm51bXNpbmtwYWRzID09IDEpCisgICAgICAg
ICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1JF
QURZKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RP
X05VTEw6CisgICAgICAgIGlmIChtX21peGVyLT5udW1zaW5rcGFkcyA9PSAxKQorICAgICAgICAg
ICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9OVUxM
KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQor
fQorCitHUmVmUHRyPEdzdFBhZD4gR1N0cmVhbWVyQXVkaW9NaXhlcjo6cmVnaXN0ZXJQcm9kdWNl
cihHc3RFbGVtZW50KiBwcm94eVNpbmspCit7CisgICAgR3N0RWxlbWVudCogc3JjID0gZ3N0X2Vs
ZW1lbnRfZmFjdG9yeV9tYWtlKCJwcm94eXNyYyIsIG51bGxwdHIpOworICAgIGdfb2JqZWN0X3Nl
dChzcmMsICJwcm94eXNpbmsiLCBwcm94eVNpbmssIG51bGxwdHIpOworICAgIFJFTEVBU0VfQVNT
RVJUKEdTVF9JU19CSU4oc3JjKSk7CisKKyAgICAvLyBXb3JrYXJvdW5kIHRvIHJlZHVjZSB0aGUg
bGF0ZW5jeSBpbnRyb2R1Y2VkIGJ5IHRoZSBxdWV1ZSBpbiB0aGUgcHJveHlzcmMgZWxlbWVudC4K
KyAgICBHVW5pcXVlUHRyPEdzdEl0ZXJhdG9yPiBpdGVyYXRvcihnc3RfYmluX2l0ZXJhdGVfZWxl
bWVudHMoR1NUX0JJTl9DQVNUKHNyYykpKTsKKyAgICB3aGlsZSAoZ3N0X2l0ZXJhdG9yX2ZvcmVh
Y2goaXRlcmF0b3IuZ2V0KCksIHN0YXRpY19jYXN0PEdzdEl0ZXJhdG9yRm9yZWFjaEZ1bmN0aW9u
PihbXShjb25zdCBHVmFsdWUqIGl0ZW0sIGdwb2ludGVyKSB7CisgICAgICAgIEdzdEVsZW1lbnQq
IGVsZW1lbnQgPSBHU1RfRUxFTUVOVF9DQVNUKGdfdmFsdWVfZ2V0X29iamVjdChpdGVtKSk7Cisg
ICAgICAgIEdzdEVsZW1lbnRGYWN0b3J5KiBmYWN0b3J5ID0gZ3N0X2VsZW1lbnRfZ2V0X2ZhY3Rv
cnkoZWxlbWVudCk7CisgICAgICAgIGlmIChmYWN0b3J5ICYmICFnX3N0cmNtcDAoR1NUX09CSkVD
VF9OQU1FKGZhY3RvcnkpLCAicXVldWUiKSkKKyAgICAgICAgICAgIGdfb2JqZWN0X3NldChlbGVt
ZW50LCAibWF4LXNpemUtYnVmZmVycyIsIDEsIG51bGxwdHIpOworICAgICAgICB9KSwgbnVsbHB0
cikgPT0gR1NUX0lURVJBVE9SX1JFU1lOQykKKyAgICAgICAgZ3N0X2l0ZXJhdG9yX3Jlc3luYyhp
dGVyYXRvci5nZXQoKSk7CisKKyAgICBnc3RfYmluX2FkZChHU1RfQklOX0NBU1QobV9waXBlbGlu
ZS5nZXQoKSksIHNyYyk7CisKKyAgICBib29sIHNob3VsZFN0YXJ0ID0gIW1fbWl4ZXItPm51bXNp
bmtwYWRzOworCisgICAgR1JlZlB0cjxHc3RQYWQ+IG1peGVyUGFkID0gYWRvcHRHUmVmKGdzdF9l
bGVtZW50X2dldF9yZXF1ZXN0X3BhZChtX21peGVyLmdldCgpLCAic2lua18ldSIpKTsKKyAgICBH
UmVmUHRyPEdzdFBhZD4gc3JjUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNf
cGFkKHNyYywgInNyYyIpKTsKKyAgICBnc3RfcGFkX2xpbmsoc3JjUGFkLmdldCgpLCBtaXhlclBh
ZC5nZXQoKSk7CisKKyAgICBpZiAoc2hvdWxkU3RhcnQpCisgICAgICAgIGdzdF9lbGVtZW50X3Nl
dF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUkVBRFkpOworICAgIGVsc2UKKyAg
ICAgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChzcmMpOworCisgICAgR1NU
X0RFQlVHX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAiUmVnaXN0ZXJlZCBhdWRpbyBwcm9kdWNl
ciAlIiBHU1RfUFRSX0ZPUk1BVCwgbWl4ZXJQYWQuZ2V0KCkpOworICAgIEdTVF9ERUJVR19CSU5f
VE9fRE9UX0ZJTEVfV0lUSF9UUyhHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIEdTVF9E
RUJVR19HUkFQSF9TSE9XX0FMTCwgImF1ZGlvLW1peGVyLWFmdGVyLXByb2R1Y2VyLXJlZ2lzdHJh
dGlvbiIpOworICAgIHJldHVybiBtaXhlclBhZDsKK30KKwordm9pZCBHU3RyZWFtZXJBdWRpb01p
eGVyOjp1bnJlZ2lzdGVyUHJvZHVjZXIoR1JlZlB0cjxHc3RQYWQ+JiYgbWl4ZXJQYWQpCit7Cisg
ICAgR1NUX0RFQlVHX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAiVW5yZWdpc3RlcmluZyBhdWRp
byBwcm9kdWNlciAlIiBHU1RfUFRSX0ZPUk1BVCwgbWl4ZXJQYWQuZ2V0KCkpOworCisgICAgR1Jl
ZlB0cjxHc3RQYWQ+IHBlZXIgPSBhZG9wdEdSZWYoZ3N0X3BhZF9nZXRfcGVlcihtaXhlclBhZC5n
ZXQoKSkpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gcHJveHlTcmMgPSBhZG9wdEdSZWYoZ3N0
X3BhZF9nZXRfcGFyZW50X2VsZW1lbnQocGVlci5nZXQoKSkpOworICAgIEdTVF9MT0dfT0JKRUNU
KG1fcGlwZWxpbmUuZ2V0KCksICJwcm94eXNyYzogJSIgR1NUX1BUUl9GT1JNQVQsIHByb3h5U3Jj
LmdldCgpKTsKKworICAgIGdfb2JqZWN0X3NldChwcm94eVNyYy5nZXQoKSwgInByb3h5c2luayIs
IG51bGxwdHIsIG51bGxwdHIpOworCisgICAgZ3N0X2VsZW1lbnRfc2V0X2xvY2tlZF9zdGF0ZShw
cm94eVNyYy5nZXQoKSwgdHJ1ZSk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHByb3h5U3Jj
LmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CisKKyAgICBnc3RfcGFkX3VubGluayhwZWVyLmdldCgp
LCBtaXhlclBhZC5nZXQoKSk7CisgICAgZ3N0X2VsZW1lbnRfcmVsZWFzZV9yZXF1ZXN0X3BhZCht
X21peGVyLmdldCgpLCBtaXhlclBhZC5nZXQoKSk7CisKKyAgICBnc3RfYmluX3JlbW92ZShHU1Rf
QklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIHByb3h5U3JjLmdldCgpKTsKKworICAgIGlmICgh
bV9taXhlci0+bnVtc2lua3BhZHMpCisgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3Bp
cGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CisKKyAgICBHU1RfREVCVUdfQklOX1RPX0RP
VF9GSUxFX1dJVEhfVFMoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCBHU1RfREVCVUdf
R1JBUEhfU0hPV19BTEwsICJhdWRpby1taXhlci1hZnRlci1wcm9kdWNlci11bnJlZ2lzdHJhdGlv
biIpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb01peGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRiODgxNGYyMzhmNTNiY2E0NDA5YzU4NTJlYzAxZjljZGNiNGU0YWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQXVkaW9NaXhlci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgSWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEdTVFJFQU1FUikKKworI2lu
Y2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBHc3RDbG9ja1RpbWUgbWl4ZXJCYXNlVGltZSgp
Cit7CisgICAgc3RhdGljIEdzdENsb2NrVGltZSBtaXhlckJhc2VUaW1lID0gR1NUX0NMT0NLX1RJ
TUVfTk9ORTsKKyAgICBpZiAoIUdTVF9DTE9DS19USU1FX0lTX1ZBTElEKG1peGVyQmFzZVRpbWUp
KSB7CisgICAgICAgIGF1dG8gY2xvY2sgPSBhZG9wdEdSZWYoZ3N0X3N5c3RlbV9jbG9ja19vYnRh
aW4oKSk7CisgICAgICAgIG1peGVyQmFzZVRpbWUgPSBnc3RfY2xvY2tfZ2V0X3RpbWUoY2xvY2su
Z2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gbWl4ZXJCYXNlVGltZTsKK30KKworY2xhc3MgR1N0
cmVhbWVyQXVkaW9NaXhlciB7CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEdTdHJlYW1lckF1
ZGlvTWl4ZXI+OworcHVibGljOgorICAgIHN0YXRpYyBib29sIGlzQWxsb3dlZCgpOworICAgIHN0
YXRpYyBHU3RyZWFtZXJBdWRpb01peGVyJiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQgZW5zdXJl
U3RhdGUoR3N0U3RhdGVDaGFuZ2UpOworICAgIEdSZWZQdHI8R3N0UGFkPiByZWdpc3RlclByb2R1
Y2VyKEdzdEVsZW1lbnQqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJQcm9kdWNlcihHUmVmUHRyPEdz
dFBhZD4mJik7CisKK3Byb3RlY3RlZDoKKyAgICBHU3RyZWFtZXJBdWRpb01peGVyKCk7CisgICAg
fkdTdHJlYW1lckF1ZGlvTWl4ZXIoKTsKKworcHJpdmF0ZToKKyAgICBHUmVmUHRyPEdzdEVsZW1l
bnQ+IG1fcGlwZWxpbmU7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX21peGVyOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggYWQyNzc4NTdhN2Q3MTIyYjE5NzZhYzViNzFkZGEz
ZjBiMzZjNTdkZC4uMTE4YTAxNzg3YjYzODIyODA0OWM4Y2U0YjA5ZjQ0NGVlOTlhZTEwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBVU0UoR1NU
UkVBTUVSKQogCiAjaW5jbHVkZSAiR0xWaWRlb1NpbmtHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJH
U3RyZWFtZXJBdWRpb01peGVyLmgiCiAjaW5jbHVkZSAiR3N0QWxsb2NhdG9yRmFzdE1hbGxvYy5o
IgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTUz
LDYgKzU0LDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIldlYktp
dEF1ZGlvU2lua0dTdHJlYW1lci5oIgogI2luY2x1ZGUgIldlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5oIgogI2VuZGlmCiAKQEAgLTI5OSw2ICszMDEsNyBAQCBib29sIGluaXRpYWxpemVHU3RyZWFt
ZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRzKCkKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogICAg
ICAgICBnc3RfZWxlbWVudF9yZWdpc3RlcigwLCAid2Via2l0Z2x2aWRlb3NpbmsiLCBHU1RfUkFO
S19QUklNQVJZLCBXRUJLSVRfVFlQRV9HTF9WSURFT19TSU5LKTsKICNlbmRpZgorICAgICAgICBn
c3RfZWxlbWVudF9yZWdpc3RlcigwLCAid2Via2l0YXVkaW9zaW5rIiwgR1NUX1JBTktfTUFSR0lO
QUwsIFdFQktJVF9UWVBFX0FVRElPX1NJTkspOwogI2VuZGlmCiAgICAgfSk7CiAgICAgcmV0dXJu
IHRydWU7CkBAIC0zOTAsNiArMzkzLDMwIEBAIGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFi
bGUoY29uc3QgY2hhciogbmFtZSkKICAgICByZXR1cm4gcGx1Z2luOwogfQogCitHc3RFbGVtZW50
KiBjcmVhdGVBdWRpb1NpbmtGb3JQb2xpY3koTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJp
bmdQb2xpY3kgYXVkaW9SZW5kZXJpbmdQb2xpY3kpCit7CisgICAgR3N0RWxlbWVudCogYXVkaW9T
aW5rID0gbnVsbHB0cjsKKyAgICBzd2l0Y2ggKGF1ZGlvUmVuZGVyaW5nUG9saWN5KSB7CisgICAg
Y2FzZSBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SW50ZXJuYWxNaXhp
bmc6CisgICAgICAgIGlmIChHU3RyZWFtZXJBdWRpb01peGVyOjppc0FsbG93ZWQoKSkgeworICAg
ICAgICAgICAgYXVkaW9TaW5rID0gd2Via2l0QXVkaW9TaW5rTmV3KHRydWUpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgR1NUX1dBUk5JTkcoIkludGVybmFsIGF1ZGlv
IG1peGluZyByZXF1ZXN0IGNhbm5vdCBiZSBmdWxmaWxsZWQuIEZhbGxpbmcgYmFjayB0byBhdXRv
YXVkaW9zaW5rIik7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgTWVkaWFQbGF5ZXJF
bnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OgorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGF1ZGlvU2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b2F1ZGlvc2lu
ayIsIG51bGxwdHIpOworICAgICAgICBpZiAoIWF1ZGlvU2luaykgeworICAgICAgICAgICAgR1NU
X1dBUk5JTkcoIkdTdHJlYW1lcidzIGF1dG9hdWRpb3Npbmsgbm90IGZvdW5kLiBQbGVhc2UgY2hl
Y2sgeW91ciBnc3QtcGx1Z2lucy1nb29kIGluc3RhbGxhdGlvbiIpOworICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0
dXJuIGF1ZGlvU2luazsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uaAppbmRleCBhMWU1NjI0NGIxN2VhZTQ2YjllNTRkYWVmMmRiZGMxYTQw
MmJiNmU5Li43NzM4MzMzN2NhYTI1NWY2NGI3ZmQyMmZmZGFhYmVkNDdkNjhjODRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckNvbW1vbi5oCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiRmxvYXRTaXpl
LmgiCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkdVbmlxdWVQdHJH
U3RyZWFtZXIuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllckVudW1zLmgiCiAjaW5jbHVkZSA8Z3N0
L2dzdC5oPgogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby1mb3JtYXQuaD4KICNpbmNsdWRlIDxn
c3QvdmlkZW8vdmlkZW8taW5mby5oPgpAQCAtMjIzLDYgKzIyNCw4IEBAIGVudW0gY2xhc3MgR3N0
VmlkZW9EZWNvZGVyUGxhdGZvcm0geyBJbXhWUFUsIFZpZGVvNExpbnV4LCBPcGVuTUFYIH07CiAK
IGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSk7CiAKK0dz
dEVsZW1lbnQqIGNyZWF0ZUF1ZGlvU2lua0ZvclBvbGljeShNZWRpYVBsYXllckVudW1zOjpBdWRp
b1JlbmRlcmluZ1BvbGljeSk7CisKIH0KIAogI2lmbmRlZiBHU1RfQlVGRkVSX0RUU19PUl9QVFMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
ZmNkYmI3NWEyZGRiYjQwNjhlODQyOGU3MTA3ZWU5MTY1YTRlYzE0Ni4uM2U0ZmVhZWI0NGM2MDM2
NTdiMjAyOTcwNTRhODE0OGJkNDYyNTBkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoVklE
RU8pICYmIFVTRShHU1RSRUFNRVIpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJHU3RyZWFtZXJBdWRpb01peGVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9u
LmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmgiCiAjaW5jbHVkZSAiSFRU
UEhlYWRlck5hbWVzLmgiCkBAIC00Myw2ICs0NCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiVmlkZW9TaW5rR1N0cmVh
bWVyLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAi
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgiCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBA
IC0yNTAsMTEgKzI1Miw2IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6fk1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcigpCiAgICAgaWYgKFdFQktJVF9JU19XRUJfU1JDKG1fc291cmNl
LmdldCgpKSAmJiBHU1RfT0JKRUNUX1BBUkVOVChtX3NvdXJjZS5nZXQoKSkpCiAgICAgICAgIGdf
c2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhHU1RfRUxFTUVOVF9QQVJFTlQobV9z
b3VyY2UuZ2V0KCkpLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPih1cmlEZWNvZGVCaW5FbGVt
ZW50QWRkZWRDYWxsYmFjayksIHRoaXMpOwogCi0gICAgaWYgKG1fYXV0b0F1ZGlvU2luaykgewot
ICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoR19PQkpFQ1QobV9h
dXRvQXVkaW9TaW5rLmdldCgpKSwKLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50
ZXI+KHNldEF1ZGlvU3RyZWFtUHJvcGVydGllc0NhbGxiYWNrKSwgdGhpcyk7Ci0gICAgfQotCiAg
ICAgbV9yZWFkeVRpbWVySGFuZGxlci5zdG9wKCk7CiAgICAgZm9yIChhdXRvJiBtaXNzaW5nUGx1
Z2luQ2FsbGJhY2sgOiBtX21pc3NpbmdQbHVnaW5DYWxsYmFja3MpIHsKICAgICAgICAgaWYgKG1p
c3NpbmdQbHVnaW5DYWxsYmFjaykKQEAgLTUyNSwxNyArNTIyLDE2IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVrKGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lKQogCiAg
ICAgLy8gQXZvaWQgdXNlbGVzcyBzZWVraW5nLgogICAgIGlmIChtZWRpYVRpbWUgPT0gY3VycmVu
dE1lZGlhVGltZSgpKSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIltT
ZWVrXSBzZWVrIHRvIEVPUyBwb3NpdGlvbiB1bmhhbmRsZWQiKTsKKyAgICAgICAgR1NUX0RFQlVH
X09CSkVDVChwaXBlbGluZSgpLCAiW1NlZWtdIEFscmVhZHkgYXQgcmVxdWVzdGVkIHBvc2l0aW9u
LiBBYm9ydGluZy4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE1lZGlhVGltZSB0
aW1lID0gc3RkOjptaW4obWVkaWFUaW1lLCBkdXJhdGlvbk1lZGlhVGltZSgpKTsKLQogICAgIGlm
IChtX2lzTGl2ZVN0cmVhbSkgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCks
ICJbU2Vla10gTGl2ZSBzdHJlYW0gc2VlayB1bmhhbmRsZWQiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIE1lZGlhVGltZSB0aW1lID0gc3RkOjptaW4obWVkaWFUaW1lLCBkdXJhdGlv
bk1lZGlhVGltZSgpKTsKICAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIltTZWVrXSBz
ZWVraW5nIHRvICVzIiwgdG9TdHJpbmcodGltZSkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBpZiAo
bV9pc1NlZWtpbmcpIHsKQEAgLTEwMDcsMjEgKzEwMDMsMjEgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnNldFBsYXliaW5VUkwoY29uc3QgVVJMJiB1cmwpCiAKIHN0YXRpYyB2
b2lkIHNldFN5bmNPbkNsb2NrKEdzdEVsZW1lbnQgKmVsZW1lbnQsIGJvb2wgc3luYykKIHsKLSAg
ICBpZiAoIWVsZW1lbnQpCisgICAgLy8gVGhlIHByb3h5c2luayBlbGVtZW50IGhhcyBubyAic3lu
YyIgcHJvcGVydHkuCisgICAgaWYgKCFlbGVtZW50IHx8IFdFQktJVF9JU19BVURJT19TSU5LKGVs
ZW1lbnQpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIUdTVF9JU19CSU4oZWxlbWVudCkp
IHsKLSAgICAgICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQsICJzeW5jIiwgc3luYywgTlVMTCk7Cisg
ICAgICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAic3luYyIsIHN5bmMsIG51bGxwdHIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR3N0SXRlcmF0b3IqIGl0ID0gZ3N0X2Jpbl9pdGVy
YXRlX3NpbmtzKEdTVF9CSU4oZWxlbWVudCkpOwotICAgIHdoaWxlIChnc3RfaXRlcmF0b3JfZm9y
ZWFjaChpdCwgKEdzdEl0ZXJhdG9yRm9yZWFjaEZ1bmN0aW9uKShbXShjb25zdCBHVmFsdWUqIGl0
ZW0sIHZvaWQqIHN5bmNQdHIpIHsKKyAgICBHVW5pcXVlUHRyPEdzdEl0ZXJhdG9yPiBpdGVyYXRv
cihnc3RfYmluX2l0ZXJhdGVfc2lua3MoR1NUX0JJTl9DQVNUKGVsZW1lbnQpKSk7CisgICAgd2hp
bGUgKGdzdF9pdGVyYXRvcl9mb3JlYWNoKGl0ZXJhdG9yLmdldCgpLCBzdGF0aWNfY2FzdDxHc3RJ
dGVyYXRvckZvcmVhY2hGdW5jdGlvbj4oW10oY29uc3QgR1ZhbHVlKiBpdGVtLCB2b2lkKiBzeW5j
UHRyKSB7CiAgICAgICAgIGJvb2wqIHN5bmMgPSBzdGF0aWNfY2FzdDxib29sKj4oc3luY1B0cik7
Ci0gICAgICAgIHNldFN5bmNPbkNsb2NrKEdTVF9FTEVNRU5UKGdfdmFsdWVfZ2V0X29iamVjdChp
dGVtKSksICpzeW5jKTsKKyAgICAgICAgc2V0U3luY09uQ2xvY2soR1NUX0VMRU1FTlRfQ0FTVChn
X3ZhbHVlX2dldF9vYmplY3QoaXRlbSkpLCAqc3luYyk7CiAgICAgfSksICZzeW5jKSA9PSBHU1Rf
SVRFUkFUT1JfUkVTWU5DKQotICAgICAgICBnc3RfaXRlcmF0b3JfcmVzeW5jKGl0KTsKLSAgICBn
c3RfaXRlcmF0b3JfZnJlZShpdCk7CisgICAgICAgIGdzdF9pdGVyYXRvcl9yZXN5bmMoaXRlcmF0
b3IuZ2V0KCkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3luY09u
Q2xvY2soYm9vbCBzeW5jKQpAQCAtMTM2NiwyNiArMTM2MiwyOCBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6bG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRl
IG5ldHdvcgogCiBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0
ZUF1ZGlvU2luaygpCiB7Ci0gICAgbV9hdXRvQXVkaW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9y
eV9tYWtlKCJhdXRvYXVkaW9zaW5rIiwgbnVsbHB0cik7Ci0gICAgaWYgKCFtX2F1dG9BdWRpb1Np
bmspIHsKLSAgICAgICAgR1NUX1dBUk5JTkcoIkdTdHJlYW1lcidzIGF1dG9hdWRpb3Npbmsgbm90
IGZvdW5kLiBQbGVhc2UgY2hlY2sgeW91ciBnc3QtcGx1Z2lucy1nb29kIGluc3RhbGxhdGlvbiIp
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgR1NUX0lORk9fT0JKRUNUKG1f
cGlwZWxpbmUuZ2V0KCksICJDcmVhdGluZyBhdWRpbyBzaW5rIGZvciAlcyByZW5kZXJpbmcgcG9s
aWN5IiwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcobV9wbGF5ZXItPmF1ZGlvUmVuZGVyaW5n
UG9saWN5KCkpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVk
KG1fYXV0b0F1ZGlvU2luay5nZXQoKSwgImNoaWxkLWFkZGVkIiwgR19DQUxMQkFDSyhzZXRBdWRp
b1N0cmVhbVByb3BlcnRpZXNDYWxsYmFjayksIHRoaXMpOworICAgIEdzdEVsZW1lbnQqIGF1ZGlv
U2luayA9IGNyZWF0ZUF1ZGlvU2lua0ZvclBvbGljeShtX3BsYXllci0+YXVkaW9SZW5kZXJpbmdQ
b2xpY3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYXVkaW9TaW5rKTsKKyAgICBpZiAoIWF1ZGlv
U2luaykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQog
ICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2lua0JpbiA9IGdzdF9iaW5fbmV3KCJhdWRpby1zaW5rIik7
CiAgICAgZW5zdXJlQXVkaW9Tb3VyY2VQcm92aWRlcigpOwotICAgIG1fYXVkaW9Tb3VyY2VQcm92
aWRlci0+Y29uZmlndXJlQXVkaW9CaW4oYXVkaW9TaW5rQmluLCBudWxscHRyKTsKKyAgICBtX2F1
ZGlvU291cmNlUHJvdmlkZXItPmNvbmZpZ3VyZUF1ZGlvQmluKGF1ZGlvU2lua0JpbiwgYXVkaW9T
aW5rKTsKICAgICByZXR1cm4gYXVkaW9TaW5rQmluOwogI2Vsc2UKLSAgICByZXR1cm4gbV9hdXRv
QXVkaW9TaW5rLmdldCgpOworICAgIHJldHVybiBhdWRpb1Npbms7CiAjZW5kaWYKIH0KIAogR3N0
RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NpbmsoKSBjb25zdAog
eworICAgIGlmICghbV9waXBlbGluZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBH
c3RFbGVtZW50KiBzaW5rOwogICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAiYXVk
aW8tc2luayIsICZzaW5rLCBudWxscHRyKTsKICAgICByZXR1cm4gc2luazsKQEAgLTI3NTUsNiAr
Mjc1MywxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxh
eUJpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJgogICAgIHN0YXRpYyBBdG9taWM8dWlu
dDMyX3Q+IHBpcGVsaW5lSWQ7CiAgICAgc2V0UGlwZWxpbmUoZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKHBsYXliaW5OYW1lLAogICAgICAgICAocGlwZWxpbmVOYW1lLmlzRW1wdHkoKSA/IG1ha2VT
dHJpbmcoIm1lZGlhLXBsYXllci0iLCBwaXBlbGluZUlkLmV4Y2hhbmdlQWRkKDEpKSA6IHBpcGVs
aW5lTmFtZSkudXRmOCgpLmRhdGEoKSkpOworCisgICAgaWYgKEdTdHJlYW1lckF1ZGlvTWl4ZXI6
OmlzQWxsb3dlZCgpKSB7CisgICAgICAgIGF1dG8gY2xvY2sgPSBhZG9wdEdSZWYoZ3N0X3N5c3Rl
bV9jbG9ja19vYnRhaW4oKSk7CisgICAgICAgIGdzdF9waXBlbGluZV91c2VfY2xvY2soR1NUX1BJ
UEVMSU5FX0NBU1QobV9waXBlbGluZS5nZXQoKSksIGNsb2NrLmdldCgpKTsKKyAgICAgICAgZ3N0
X2VsZW1lbnRfc2V0X2Jhc2VfdGltZShtX3BpcGVsaW5lLmdldCgpLCBtaXhlckJhc2VUaW1lKCkp
OworICAgIH0KKwogICAgIHNldFN0cmVhbVZvbHVtZUVsZW1lbnQoR1NUX1NUUkVBTV9WT0xVTUUo
bV9waXBlbGluZS5nZXQoKSkpOwogCiAgICAgR1NUX0lORk9fT0JKRUNUKHBpcGVsaW5lKCksICJV
c2luZyBsZWdhY3kgcGxheWJpbiBlbGVtZW50OiAlcyIsIGJvb2xGb3JQcmludGluZyhtX2lzTGVn
YWN5UGxheWJpbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hYjM0MGE1MjUxNWRkMGQ2M2EzZDZjNjNjN2IwYTZkMDY3ZTFiMjFkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5jcHAKQEAgLTAsMCArMSwyODYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuaCIKKworI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgIkdTdHJlYW1lckF1ZGlvTWl4ZXIuaCIKKyNpbmNs
dWRlICJHU3RyZWFtZXJDb21tb24uaCIKKyNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4K
KyNpbmNsdWRlIDxnc3QvcGJ1dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KKworI2luY2x1ZGUgPHd0
Zi9nbGliL1dURkdUeXBlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdHJ1Y3Qg
X1dlYktpdEF1ZGlvU2lua1ByaXZhdGUgeworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gcHJveHlT
aW5rOworICAgIEdSZWZQdHI8R3N0UGFkPiBtaXhlclBhZDsKKyAgICBndWxvbmcgcGFkRXZlbnRQ
cm9iZUlkOworICAgIGd1bG9uZyBwYWRCdWZmZXJQcm9iZUlkOworICAgIEdSZWZQdHI8R3N0RWxl
bWVudD4gdm9sdW1lRWxlbWVudDsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGFwcHNpbms7Cisg
ICAgZ2Jvb2xlYW4gZW5hYmxlSW50ZXJuYWxNaXhpbmc7Cit9OworCitlbnVtIHsKKyAgICBQUk9Q
XzAsCisgICAgUFJPUF9WT0xVTUUsCisgICAgUFJPUF9NVVRFLAorICAgIFBST1BfRU5BQkxFX0lO
VEVSTkFMX01JWElORywKK307CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzaW5rVGVt
cGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSgic2luayIsIEdTVF9QQURfU0lOSywgR1NU
X1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTKCJhdWRpby94LXJhdyIpKTsKKworR1NU
X0RFQlVHX0NBVEVHT1JZX1NUQVRJQyh3ZWJraXRfYXVkaW9fc2lua19kZWJ1Zyk7CisjZGVmaW5l
IEdTVF9DQVRfREVGQVVMVCB3ZWJraXRfYXVkaW9fc2lua19kZWJ1ZworCisjZGVmaW5lIHdlYmtp
dF9hdWRpb19zaW5rX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKK1dFQktJVF9ERUZJTkVfVFlQ
RV9XSVRIX0NPREUoV2ViS2l0QXVkaW9TaW5rLCB3ZWJraXRfYXVkaW9fc2luaywgR1NUX1RZUEVf
QklOLAorICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShHU1RfVFlQRV9TVFJFQU1fVk9MVU1FLCBu
dWxscHRyKTsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRfYXVkaW9fc2lua19k
ZWJ1ZywgIndlYmtpdGF1ZGlvc2luayIsIDAsICJ3ZWJraXQgYXVkaW8gc2luayBlbGVtZW50IikK
KykKKworc3RhdGljIHZvaWQgd2ViS2l0QXVkaW9TaW5rQ29uc3RydWN0ZWQoR09iamVjdCogb2Jq
ZWN0KQoreworICAgIEdTVF9DQUxMX1BBUkVOVChHX09CSkVDVF9DTEFTUywgY29uc3RydWN0ZWQs
IChvYmplY3QpKTsKKworICAgIFdlYktpdEF1ZGlvU2luayogc2luayA9IFdFQktJVF9BVURJT19T
SU5LKG9iamVjdCk7CisKKyAgICBBU1NFUlQoc2luay0+cHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhp
bmcpOworCisgICAgc2luay0+cHJpdi0+cHJveHlTaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKCJwcm94eXNpbmsiLCBudWxscHRyKTsKKyAgICBpZiAoIXNpbmstPnByaXYtPnByb3h5U2lu
aykgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgR1NUX0VSUk9SX09C
SkVDVChzaW5rLCAiRmFpbGVkIHRvIGNyZWF0ZSBwcm94eXNpbmsiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGdzdF9iaW5fYWRkKEdTVF9CSU5fQ0FTVChzaW5rKSwgc2luay0+cHJp
di0+cHJveHlTaW5rLmdldCgpKTsKKworICAgIEdSZWZQdHI8R3N0UGFkPiB0YXJnZXRQYWQgPSBh
ZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoc2luay0+cHJpdi0+cHJveHlTaW5r
LmdldCgpLCAic2luayIpKTsKKworICAgIC8vIEludGVyY2VwdCBFT1MgZXZlbnRzIGFuZCByZWxh
eSB0aGVtIHRvIHRoZSBidXMgYXMgRU9TIG1lc3NhZ2VzLiBOb3JtYWxseQorICAgIC8vIGJhc2Vz
aW5rIGlzIGluIGNoYXJnZSBvZiB0aGlzIGJ1dCBiZWNhdXNlIHByb3h5c2luayBkb2Vzbid0IGlu
aGVyaXQgZnJvbQorICAgIC8vIGJhc2VzaW5rLCB3ZSBoYXZlIHRvIHRha2UgY2FyZSBvZiBpdCBv
dXJzZWx2ZXMuCisgICAgc2luay0+cHJpdi0+cGFkRXZlbnRQcm9iZUlkID0gZ3N0X3BhZF9hZGRf
cHJvYmUodGFyZ2V0UGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVfRVZFTlRfRE9XTlNUUkVB
TSwgW10oR3N0UGFkKiBwYWQsIEdzdFBhZFByb2JlSW5mbyogaW5mbywgIGdwb2ludGVyKSAtPiBH
c3RQYWRQcm9iZVJldHVybiB7CisgICAgICAgIGlmIChHU1RfRVZFTlRfVFlQRShHU1RfUEFEX1BS
T0JFX0lORk9fRVZFTlQoaW5mbykpICE9IEdTVF9FVkVOVF9FT1MpCisgICAgICAgICAgICByZXR1
cm4gR1NUX1BBRF9QUk9CRV9PSzsKKyAgICAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBzaW5rID0g
YWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3BhcmVudF9lbGVtZW50KHBhZCkpOworICAgICAgICBnc3Rf
ZWxlbWVudF9wb3N0X21lc3NhZ2Uoc2luay5nZXQoKSwgZ3N0X21lc3NhZ2VfbmV3X2VvcyhHU1Rf
T0JKRUNUX0NBU1Qoc2luay5nZXQoKSkpKTsKKyAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVf
T0s7CisgICAgfSwgbnVsbHB0ciwgbnVsbHB0cik7CisKKyAgICBzaW5rLT5wcml2LT5wYWRCdWZm
ZXJQcm9iZUlkID0gZ3N0X3BhZF9hZGRfcHJvYmUodGFyZ2V0UGFkLmdldCgpLCBHU1RfUEFEX1BS
T0JFX1RZUEVfQlVGRkVSLCBbXShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qLCBncG9pbnRlciB1
c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4geworICAgICAgICBzdGF0aWMgYm9vbCBub3Rp
ZmllZCA9IGZhbHNlOworICAgICAgICBpZiAoIW5vdGlmaWVkKSB7CisgICAgICAgICAgICBub3Rp
ZmllZCA9IHRydWU7CisgICAgICAgICAgICBHc3RFbGVtZW50KiBzaW5rID0gR1NUX0VMRU1FTlRf
Q0FTVCh1c2VyRGF0YSk7CisgICAgICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2lu
ayksICJ2b2x1bWUiKTsKKyAgICAgICAgICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzaW5r
KSwgIm11dGUiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsK
KyAgICB9LCBzaW5rLCBudWxscHRyKTsKKworICAgIEdzdFBhZCogc2lua1BhZCA9IHdlYmtpdEdz
dEdob3N0UGFkRnJvbVN0YXRpY1RlbXBsYXRlKCZzaW5rVGVtcGxhdGUsICJzaW5rIiwgdGFyZ2V0
UGFkLmdldCgpKTsKKyAgICBnc3RfZWxlbWVudF9hZGRfcGFkKEdTVF9FTEVNRU5UX0NBU1Qoc2lu
ayksIHNpbmtQYWQpOworICAgIEdTVF9PQkpFQ1RfRkxBR19TRVQoc2lua1BhZCwgR1NUX1BBRF9G
TEFHX05FRURfUEFSRU5UKTsKKworICAgIEdTVF9PQkpFQ1RfRkxBR19TRVQoc2luaywgR1NUX0VM
RU1FTlRfRkxBR19TSU5LKTsKK30KKworc3RhdGljIHZvaWQgd2ViS2l0QXVkaW9TaW5rRGlzcG9z
ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0QXVkaW9TaW5rUHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9BVURJT19TSU5LKG9iamVjdCktPnByaXY7CisKKyAgICBpZiAocHJpdi0+cGFkRXZl
bnRQcm9iZUlkKSB7CisgICAgICAgIEdSZWZQdHI8R3N0UGFkPiBzaW5rUGFkID0gYWRvcHRHUmVm
KGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHByaXYtPnByb3h5U2luay5nZXQoKSwgInNpbmsi
KSk7CisgICAgICAgIGdzdF9wYWRfcmVtb3ZlX3Byb2JlKHNpbmtQYWQuZ2V0KCksIHByaXYtPnBh
ZEV2ZW50UHJvYmVJZCk7CisgICAgICAgIHByaXYtPnBhZEV2ZW50UHJvYmVJZCA9IDA7CisgICAg
fQorCisgICAgaWYgKHByaXYtPnBhZEJ1ZmZlclByb2JlSWQpIHsKKyAgICAgICAgR1JlZlB0cjxH
c3RQYWQ+IHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocHJp
di0+cHJveHlTaW5rLmdldCgpLCAic2luayIpKTsKKyAgICAgICAgZ3N0X3BhZF9yZW1vdmVfcHJv
YmUoc2lua1BhZC5nZXQoKSwgcHJpdi0+cGFkQnVmZmVyUHJvYmVJZCk7CisgICAgICAgIHByaXYt
PnBhZEJ1ZmZlclByb2JlSWQgPSAwOworICAgIH0KKworICAgIEdTVF9DQUxMX1BBUkVOVChHX09C
SkVDVF9DTEFTUywgZGlzcG9zZSwgKG9iamVjdCkpOworfQorCitzdGF0aWMgR3N0T2JqZWN0KiBn
ZXRJbnRlcm5hbFZvbHVtZVByb3h5KFdlYktpdEF1ZGlvU2luayogc2luaykKK3sKKyAgICBpZiAo
c2luay0+cHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhpbmcpIHsKKyAgICAgICAgaWYgKCFzaW5rLT5w
cml2LT5taXhlclBhZCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIHJl
dHVybiBHU1RfT0JKRUNUX0NBU1Qoc2luay0+cHJpdi0+bWl4ZXJQYWQuZ2V0KCkpOworICAgIH0K
KyAgICByZXR1cm4gR1NUX09CSkVDVF9DQVNUKHNpbmstPnByaXYtPnZvbHVtZUVsZW1lbnQuZ2V0
KCkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJLaXRBdWRpb1NpbmtTZXRQcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BJRCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyog
cHNwZWMpCit7CisgICAgV2ViS2l0QXVkaW9TaW5rKiBzaW5rID0gV0VCS0lUX0FVRElPX1NJTkso
b2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElEKSB7CisgICAgY2FzZSBQUk9QX1ZPTFVNRTog
eworICAgICAgICBHc3RPYmplY3QqIGludGVybmFsT2JqZWN0ID0gZ2V0SW50ZXJuYWxWb2x1bWVQ
cm94eShzaW5rKTsKKyAgICAgICAgaWYgKCFpbnRlcm5hbE9iamVjdCkgeworICAgICAgICAgICAg
R1NUX1dBUk5JTkdfT0JKRUNUKHNpbmssICJObyBhc3NvY2lhdGVkIG1peGVyIHBhZCwgY2FuJ3Qg
c2V0ICVzIHByb3BlcnR5IiwgZ19wYXJhbV9zcGVjX2dldF9uYW1lKHBzcGVjKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZ19vYmplY3Rfc2V0KGludGVybmFsT2Jq
ZWN0LCAidm9sdW1lIiwgZ192YWx1ZV9nZXRfZG91YmxlKHZhbHVlKSwgbnVsbHB0cik7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfTVVURTogeworICAgICAgICBHc3RPYmpl
Y3QqIGludGVybmFsT2JqZWN0ID0gZ2V0SW50ZXJuYWxWb2x1bWVQcm94eShzaW5rKTsKKyAgICAg
ICAgaWYgKCFpbnRlcm5hbE9iamVjdCkgeworICAgICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNU
KHNpbmssICJObyBhc3NvY2lhdGVkIG1peGVyIHBhZCwgY2FuJ3Qgc2V0ICVzIHByb3BlcnR5Iiwg
Z19wYXJhbV9zcGVjX2dldF9uYW1lKHBzcGVjKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgZ19vYmplY3Rfc2V0KGludGVybmFsT2JqZWN0LCAibXV0ZSIsIGdfdmFs
dWVfZ2V0X2Jvb2xlYW4odmFsdWUpLCBudWxscHRyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2UgUFJPUF9FTkFCTEVfSU5URVJOQUxfTUlYSU5HOgorICAgICAgICBzaW5rLT5wcml2
LT5lbmFibGVJbnRlcm5hbE1peGluZyA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURf
UFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSUQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCitzdGF0aWMgdm9pZCB3ZWJLaXRBdWRpb1NpbmtHZXRQcm9wZXJ0eShHT2JqZWN0KiBv
YmplY3QsIGd1aW50IHByb3BJRCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7
CisgICAgV2ViS2l0QXVkaW9TaW5rKiBzaW5rID0gV0VCS0lUX0FVRElPX1NJTksob2JqZWN0KTsK
KworICAgIHN3aXRjaCAocHJvcElEKSB7CisgICAgY2FzZSBQUk9QX1ZPTFVNRTogeworICAgICAg
ICBHc3RPYmplY3QqIGludGVybmFsT2JqZWN0ID0gZ2V0SW50ZXJuYWxWb2x1bWVQcm94eShzaW5r
KTsKKyAgICAgICAgaWYgKCFpbnRlcm5hbE9iamVjdCkgeworICAgICAgICAgICAgR1NUX1dBUk5J
TkdfT0JKRUNUKHNpbmssICJObyBhc3NvY2lhdGVkIG1peGVyIHBhZCwgY2FuJ3QgZ2V0ICVzIHBy
b3BlcnR5IiwgZ19wYXJhbV9zcGVjX2dldF9uYW1lKHBzcGVjKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgZG91YmxlIHZvbHVtZTsKKyAgICAgICAgZ19vYmplY3Rf
Z2V0KGludGVybmFsT2JqZWN0LCAidm9sdW1lIiwgJnZvbHVtZSwgbnVsbHB0cik7CisgICAgICAg
IGdfdmFsdWVfc2V0X2RvdWJsZSh2YWx1ZSwgdm9sdW1lKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgUFJPUF9NVVRFOiB7CisgICAgICAgIEdzdE9iamVjdCogaW50ZXJuYWxPYmpl
Y3QgPSBnZXRJbnRlcm5hbFZvbHVtZVByb3h5KHNpbmspOworICAgICAgICBpZiAoIWludGVybmFs
T2JqZWN0KSB7CisgICAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1Qoc2luaywgIk5vIGFzc29j
aWF0ZWQgbWl4ZXIgcGFkLCBjYW4ndCBnZXQgJXMgcHJvcGVydHkiLCBnX3BhcmFtX3NwZWNfZ2V0
X25hbWUocHNwZWMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBi
b29sIG11dGU7CisgICAgICAgIGdfb2JqZWN0X2dldChpbnRlcm5hbE9iamVjdCwgIm11dGUiLCAm
bXV0ZSwgbnVsbHB0cik7CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIG11dGUp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX0VOQUJMRV9JTlRFUk5BTF9N
SVhJTkc6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHNpbmstPnByaXYtPmVu
YWJsZUludGVybmFsTWl4aW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwc3Bl
Yyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIGdib29sZWFuIHdlYktpdEF1
ZGlvU2lua1F1ZXJ5KEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFF1ZXJ5KiBxdWVyeSkKK3sKKyAg
ICBXZWJLaXRBdWRpb1NpbmsqIHNpbmsgPSBXRUJLSVRfQVVESU9fU0lOSyhlbGVtZW50KTsKKwor
ICAgIGlmIChzaW5rLT5wcml2LT5lbmFibGVJbnRlcm5hbE1peGluZykgeworICAgICAgICBHU1Rf
REVCVUdfT0JKRUNUKHNpbmssICJIYW5kbGluZyAlIiBHU1RfUFRSX0ZPUk1BVCwgcXVlcnkpOwor
CisgICAgICAgIGlmIChzaW5rLT5wcml2LT5taXhlclBhZCAmJiAoKEdTVF9RVUVSWV9UWVBFKHF1
ZXJ5KSA9PSBHU1RfUVVFUllfUE9TSVRJT04pKSkgeworICAgICAgICAgICAgR1NUX0RFQlVHX09C
SkVDVChzaW5rLCAiRm9yd2FyZGluZyB0byBtaXhlci1wYWQgJSIgR1NUX1BUUl9GT1JNQVQsIHNp
bmstPnByaXYtPm1peGVyUGFkLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBnc3RfcGFkX3F1
ZXJ5KHNpbmstPnByaXYtPm1peGVyUGFkLmdldCgpLCBxdWVyeSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gR1NUX0NBTExfUEFSRU5UX1dJVEhfREVGQVVMVChHU1RfRUxFTUVOVF9D
TEFTUywgcXVlcnksIChlbGVtZW50LCBxdWVyeSksIEZBTFNFKTsKK30KKworc3RhdGljIEdzdFN0
YXRlQ2hhbmdlUmV0dXJuIHdlYktpdEF1ZGlvU2lua0NoYW5nZVN0YXRlKEdzdEVsZW1lbnQqIGVs
ZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKQoreworICAgIFdlYktpdEF1ZGlvU2lu
ayogc2luayA9IFdFQktJVF9BVURJT19TSU5LKGVsZW1lbnQpOworCisjaWYgR1NUX0NIRUNLX1ZF
UlNJT04oMSwgMTQsIDApCisgICAgR1NUX0RFQlVHX09CSkVDVChzaW5rLCAiSGFuZGxpbmcgJXMg
dHJhbnNpdGlvbiIsIGdzdF9zdGF0ZV9jaGFuZ2VfZ2V0X25hbWUoc3RhdGVDaGFuZ2UpKTsKKyNl
bmRpZgorCisgICAgYXV0byYgbWl4ZXIgPSBHU3RyZWFtZXJBdWRpb01peGVyOjpzaW5nbGV0b24o
KTsKKyAgICBpZiAoc2luay0+cHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhpbmcgJiYgc3RhdGVDaGFu
Z2UgPT0gR1NUX1NUQVRFX0NIQU5HRV9OVUxMX1RPX1JFQURZKSB7CisgICAgICAgIGlmICghc2lu
ay0+cHJpdi0+cHJveHlTaW5rKSB7CisgICAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3Nh
Z2UoZWxlbWVudCwgZ3N0X21pc3NpbmdfZWxlbWVudF9tZXNzYWdlX25ldyhlbGVtZW50LCAicHJv
eHlzaW5rIikpOworICAgICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc2luaywgQ09SRSwgTUlT
U0lOR19QTFVHSU4sIChudWxscHRyKSwgKCJubyBwcm94eXNpbmsiKSk7CisgICAgICAgICAgICBy
ZXR1cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOworICAgICAgICB9CisgICAgICAgIHNpbmst
PnByaXYtPm1peGVyUGFkID0gbWl4ZXIucmVnaXN0ZXJQcm9kdWNlcihzaW5rLT5wcml2LT5wcm94
eVNpbmsuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChzaW5rLT5wcml2LT5lbmFibGVJbnRlcm5h
bE1peGluZykKKyAgICAgICAgbWl4ZXIuZW5zdXJlU3RhdGUoc3RhdGVDaGFuZ2UpOworCisgICAg
R3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmVzdWx0ID0gR1NUX0NBTExfUEFSRU5UX1dJVEhfREVGQVVM
VChHU1RfRUxFTUVOVF9DTEFTUywgY2hhbmdlX3N0YXRlLCAoZWxlbWVudCwgc3RhdGVDaGFuZ2Up
LCBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpOworCisgICAgaWYgKHNpbmstPnByaXYtPmVuYWJs
ZUludGVybmFsTWl4aW5nICYmIChzdGF0ZUNoYW5nZSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZ
X1RPX05VTEwpICYmIChyZXN1bHQgPiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpKQorICAgICAg
ICBtaXhlci51bnJlZ2lzdGVyUHJvZHVjZXIoV1RGTW92ZShzaW5rLT5wcml2LT5taXhlclBhZCkp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2F1ZGlvX3Np
bmtfY2xhc3NfaW5pdChXZWJLaXRBdWRpb1NpbmtDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVj
dENsYXNzKiBva2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgb2tsYXNzLT5jb25z
dHJ1Y3RlZCA9IHdlYktpdEF1ZGlvU2lua0NvbnN0cnVjdGVkOworICAgIG9rbGFzcy0+ZGlzcG9z
ZSA9IHdlYktpdEF1ZGlvU2lua0Rpc3Bvc2U7CisgICAgb2tsYXNzLT5zZXRfcHJvcGVydHkgPSB3
ZWJLaXRBdWRpb1NpbmtTZXRQcm9wZXJ0eTsKKyAgICBva2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdl
YktpdEF1ZGlvU2lua0dldFByb3BlcnR5OworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShva2xhc3MsIFBST1BfVk9MVU1FLAorICAgICAgICBnX3BhcmFtX3NwZWNfZG91Ymxl
KCJ2b2x1bWUiLCAiVm9sdW1lIiwgIlRoZSBhdWRpbyB2b2x1bWUsIDEuMD0xMDAlIiwgMCwgMTAs
IDEsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oR19QQVJBTV9SRUFEV1JJ
VEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkob2tsYXNzLCBQUk9QX01VVEUsCisgICAgICAgIGdfcGFyYW1fc3BlY19ib29s
ZWFuKCJtdXRlIiwgIk11dGUiLCAiTXV0ZSB0aGUgYXVkaW8gY2hhbm5lbCB3aXRob3V0IGNoYW5n
aW5nIHRoZSB2b2x1bWUiLCBGQUxTRSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZs
YWdzPihHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShva2xhc3MsIFBST1BfRU5BQkxFX0lOVEVS
TkFMX01JWElORywKKyAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1pbnRlcm5h
bC1taXhpbmciLCAiRW5hYmxlIEludGVybmFsIE1peGluZyIsICJQcm94eSBhdWRpbyBidWZmZXJz
IHRvIHRoZSBhdWRpb21peGVyIiwgRkFMU0UsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFy
YW1GbGFncz4oR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTIHwgR19Q
QVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIEdzdEVsZW1lbnRDbGFzcyogZWtsYXNzID0g
R1NUX0VMRU1FTlRfQ0xBU1Moa2xhc3MpOworICAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9zdGF0
aWNfcGFkX3RlbXBsYXRlKGVrbGFzcywgJnNpbmtUZW1wbGF0ZSk7CisgICAgZ3N0X2VsZW1lbnRf
Y2xhc3Nfc2V0X21ldGFkYXRhKGVrbGFzcywgIldlYktpdCBBdWRpbyBzaW5rIGVsZW1lbnQiLCAi
U2luay9BdWRpbyIsCisgICAgICAgICJQcm94aWVzIGF1ZGlvIGRhdGEgdG8gV2ViS2l0J3MgYXVk
aW8gbWl4ZXIiLCAiUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4iKTsKKworICAg
IGVrbGFzcy0+cXVlcnkgPSBHU1RfREVCVUdfRlVOQ1BUUih3ZWJLaXRBdWRpb1NpbmtRdWVyeSk7
CisgICAgZWtsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBHU1RfREVCVUdfRlVOQ1BUUih3ZWJLaXRBdWRp
b1NpbmtDaGFuZ2VTdGF0ZSk7Cit9CisKK0dzdEVsZW1lbnQqIHdlYmtpdEF1ZGlvU2lua05ldyhi
b29sIGVuYWJsZUludGVybmFsTWl4aW5nKQoreworICAgIHJldHVybiBHU1RfRUxFTUVOVF9DQVNU
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9BVURJT19TSU5LLCAiZW5hYmxlLWludGVybmFsLW1p
eGluZyIsIGVuYWJsZUludGVybmFsTWl4aW5nLCBudWxscHRyKSk7Cit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9T
aW5rR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ExMWJjYWU3ZTJkNjgzNjlmZTBkOTJmM2UwZjlm
ODVjZGQ2N2M3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuaApAQCAtMCwwICsxLDUz
IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoVklERU8pICYm
IFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKK0dfQkVHSU5fREVDTFMK
KworI2RlZmluZSBXRUJLSVRfVFlQRV9BVURJT19TSU5LICAgICAgICAgICAgKHdlYmtpdF9hdWRp
b19zaW5rX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9BVURJT19TSU5LKG9iaikgICAgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0FVRElP
X1NJTkssIFdlYktpdEF1ZGlvU2luaykpCisjZGVmaW5lIFdFQktJVF9BVURJT19TSU5LX0NMQVNT
KGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgV0VCS0lUX1RZUEVf
QVVESU9fU0lOSywgV2ViS2l0QXVkaW9TaW5rQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfQVVE
SU9fU0lOSyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBX
RUJLSVRfVFlQRV9BVURJT19TSU5LKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FVRElPX1NJTktfQ0xB
U1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCBXRUJLSVRfVFlQRV9B
VURJT19TSU5LKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1ZGlvU2luayAgICAgICAgV2Vi
S2l0QXVkaW9TaW5rOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1ZGlvU2lua0NsYXNzICAgV2Vi
S2l0QXVkaW9TaW5rQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXVkaW9TaW5rUHJpdmF0
ZSBXZWJLaXRBdWRpb1NpbmtQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdEF1ZGlvU2luayB7Cisg
ICAgR3N0QmluIHBhcmVudDsKKworICAgIFdlYktpdEF1ZGlvU2lua1ByaXZhdGUgKnByaXY7Cit9
OworCitzdHJ1Y3QgX1dlYktpdEF1ZGlvU2lua0NsYXNzIHsKKyAgICBHc3RCaW5DbGFzcyBwYXJl
bnRDbGFzczsKK307CisKK0dUeXBlIHdlYmtpdF9hdWRpb19zaW5rX2dldF90eXBlKHZvaWQpOwor
CitHX0VORF9ERUNMUworCitHc3RFbGVtZW50KiB3ZWJraXRBdWRpb1NpbmtOZXcoYm9vbCBlbmFi
bGVJbnRlcm5hbE1peGluZyk7CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdWRpb1JlbmRlcmluZ1Bv
bGljeS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXVkaW9SZW5kZXJpbmdQb2xpY3kuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNjRmNDQyNjNhOTJlYzg5M2M3YjFlNjEyOTNlM2IyMGI1ODNlYjk5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXVkaW9SZW5kZXJpbmdQb2xpY3kuaApA
QCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNw
cmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBBdWRpb1JlbmRl
cmluZ1BvbGljeSA6IHVpbnQ4X3QgeworICAgIEhvc3REZWZhdWx0LAorICAgIEludGVybmFsTWl4
aW5nCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpBdWRpb1JlbmRlcmluZ1BvbGljeT4g
eworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6QXVkaW9S
ZW5kZXJpbmdQb2xpY3ksCisgICAgICAgIFdlYktpdDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhv
c3REZWZhdWx0LAorICAgICAgICBXZWJLaXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpJbnRlcm5h
bE1peGluZworICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggMzkwYTA1
ODNkNzU0ZDExMzJiN2ZiNzNkNjQ5ODg4ZjRmYTJiMmI2Mi4uNDU4NzQ3MTJmZDM4NzRjNzk3M2Ji
NjUyZjI1NzI3NjY2ZmI2ZDM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJB
UElEYXRhLmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIkF1ZGlvUmVuZGVyaW5nUG9saWN5LmgiCiAj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgogI2lu
Y2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgpAQCAtMTk5LDcgKzIwMCw4IEBAIGVudW0gewog
ICAgIFBST1BfSVNfQ09OVFJPTExFRF9CWV9BVVRPTUFUSU9OLAogICAgIFBST1BfQVVUT01BVElP
Tl9QUkVTRU5UQVRJT05fVFlQRSwKICAgICBQUk9QX0VESVRBQkxFLAotICAgIFBST1BfUEFHRV9J
RAorICAgIFBST1BfUEFHRV9JRCwKKyAgICBQUk9QX0FVRElPX1JFTkRFUklOR19QT0xJQ1kKIH07
CiAKIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgR1JlZlB0cjxXZWJLaXRXZWJSZXNvdXJjZT4g
PiBMb2FkaW5nUmVzb3VyY2VzTWFwOwpAQCAtMzAxLDYgKzMwMyw4IEBAIHN0cnVjdCBfV2ViS2l0
V2ViVmlld1ByaXZhdGUgewogICAgIEdSZWZQdHI8V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0
PiBhdXRoZW50aWNhdGlvblJlcXVlc3Q7CiAKICAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRh
TWFuYWdlcj4gd2Vic2l0ZURhdGFNYW5hZ2VyOworCisgICAgV2ViS2l0QXVkaW9SZW5kZXJpbmdQ
b2xpY3kgYXVkaW9SZW5kZXJpbmdQb2xpY3k7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tM
QVNUX1NJR05BTF0gPSB7IDAsIH07CkBAIC03OTksNiArODAzLDEwIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29u
c3QgR1ZhbHVlCiAgICAgICAgIGJyZWFrOwogICAgIH0KICNlbmRpZgorICAgIGNhc2UgUFJPUF9B
VURJT19SRU5ERVJJTkdfUE9MSUNZOiB7CisgICAgICAgIHdlYlZpZXctPnByaXYtPmF1ZGlvUmVu
ZGVyaW5nUG9saWN5ID0gc3RhdGljX2Nhc3Q8V2ViS2l0QXVkaW9SZW5kZXJpbmdQb2xpY3k+KGdf
dmFsdWVfZ2V0X2VudW0odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2Ug
UFJPUF9XRUJfQ09OVEVYVDogewogICAgICAgICBncG9pbnRlciB3ZWJDb250ZXh0ID0gZ192YWx1
ZV9nZXRfb2JqZWN0KHZhbHVlKTsKICAgICAgICAgd2ViVmlldy0+cHJpdi0+Y29udGV4dCA9IHdl
YkNvbnRleHQgPyBXRUJLSVRfV0VCX0NPTlRFWFQod2ViQ29udGV4dCkgOiBudWxscHRyOwpAQCAt
ODQ4LDYgKzg1Niw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0JB
Q0tFTkQ6CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0YXRpY19ib3hlZCh2YWx1ZSwgd2ViVmlldy0+
cHJpdi0+YmFja2VuZC5nZXQoKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9BVURJ
T19SRU5ERVJJTkdfUE9MSUNZOgorICAgICAgICBnX3ZhbHVlX3NldF9lbnVtKHZhbHVlLCB3ZWJW
aWV3LT5wcml2LT5hdWRpb1JlbmRlcmluZ1BvbGljeSk7CisgICAgICAgIGJyZWFrOwogI2VuZGlm
CiAgICAgY2FzZSBQUk9QX1dFQl9DT05URVhUOgogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3Qo
dmFsdWUsIHdlYlZpZXctPnByaXYtPmNvbnRleHQuZ2V0KCkpOwpAQCAtMTI2NSw2ICsxMjc2LDI2
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdD
bGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgMCwgR19NQVhVSU5UNjQsIDAsCiAgICAg
ICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKIAorICAgIC8qKgorICAgICAqIFdlYktp
dFdlYlZpZXc6OmF1ZGlvLXJlbmRlcmluZy1wb2xpY3k6CisgICAgICoKKyAgICAgKiBXaGV0aGVy
IHRoZSAjV2ViS2l0V2ViVmlldyBzaG91bGQgbWFuYWdlIGF1ZGlvIHJlbmRlcmluZyB0aHJvdWdo
IHRoZSBob3N0CisgICAgICogcGxhdGZvcm0gYXVkaW8gZGFlbW9uICh1c3VhbGx5IFB1bHNlQXVk
aW8pLiBUaGlzIGlzIHRoZSBkZWZhdWx0CisgICAgICogYmVoYXZpb3VyLCB0aGUgcHJvcGVydHkg
aXMgQEFVRElPX1JFTkRFUklOR19QT0xJQ1lfSE9TVF9ERUZBVUxUIGJ5IGRlZmF1bHQuCisgICAg
ICoKKyAgICAgKiBTaW5jZTogMi4zMAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9BVURJT19S
RU5ERVJJTkdfUE9MSUNZLAorICAgICAgICBnX3BhcmFtX3NwZWNfZW51bSgKKyAgICAgICAgICAg
ICJhdWRpby1yZW5kZXJpbmctcG9saWN5IiwKKyAgICAgICAgICAgICJBdWRpbyBSZW5kZXJpbmcg
UG9saWN5IiwKKyAgICAgICAgICAgIF8oIldoZXRoZXIgdGhlIHZpZXcgaXMgaW50ZXJuYWxseSBy
ZW5kZXJpbmcgYXVkaW8iKSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0FVRElPX1JFTkRFUklO
R19QT0xJQ1ksCisgICAgICAgICAgICBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9IT1NU
X0RFRkFVTFQsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BB
UkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CisKICAgICAvKioKICAg
ICAgKiBXZWJLaXRXZWJWaWV3Ojpsb2FkLWNoYW5nZWQ6CiAgICAgICogQHdlYl92aWV3OiB0aGUg
I1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCkBAIC0yMjI2LDYg
KzIyNTcsMTcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3V2lsbFN0YXJ0TG9hZChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogICAgIC8vIGNsaWVudCBhcHBsaWNhdGlvbiB3aWxsIHN0aWxsIHNlZSB0aGUg
VVJJIHVwZGF0ZSBpbW1lZGlhdGVseS4gT3RoZXJ3aXNlLCB0aGUgVVJJIHVwZGF0ZSB3aWxsIGJl
IGRlbGF5ZWQgYSBiaXQuCiAgICAgd2ViVmlldy0+cHJpdi0+aXNBY3RpdmVVUklDaGFuZ2VCbG9j
a2VkID0gdHJ1ZTsKIAorICAgIFdlYktpdDo6QXVkaW9SZW5kZXJpbmdQb2xpY3kgcG9saWN5ID0g
V2ViS2l0OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQ7CisgICAgc3dpdGNoICh3
ZWJWaWV3LT5wcml2LT5hdWRpb1JlbmRlcmluZ1BvbGljeSkgeworICAgIGNhc2UgV0VCS0lUX0FV
RElPX1JFTkRFUklOR19QT0xJQ1lfSE9TVF9ERUZBVUxUOgorICAgICAgICBwb2xpY3kgPSBXZWJL
aXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9JTlRFUk5BTF9NSVhJTkc6Cisg
ICAgICAgIHBvbGljeSA9IFdlYktpdDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkludGVybmFsTWl4
aW5nOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5zZXRBdWRp
b1JlbmRlcmluZ1BvbGljeShwb2xpY3kpOworCiAgICAgLy8gVGhpcyBpcyBjYWxsZWQgYmVmb3Jl
IE5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCksIHRoZSBw
YWdlIGxvYWQgc3RhdGUgaGFzbid0IGJlZW4gY29tbWl0dGVkIHlldC4KICAgICBhdXRvJiBwYWdl
TG9hZFN0YXRlID0gZ2V0UGFnZSh3ZWJWaWV3KS5wYWdlTG9hZFN0YXRlKCk7CiAgICAgaWYgKHBh
Z2VMb2FkU3RhdGUuaXNGaW5pc2hlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCBjMTUzOWNjMjc4OWUwYzk0YWE0YTViMWZkMzhi
MGUxNTUzZDU4MTFjLi42MzQ5OTEzMDYxNzcyNDhlZWRlZGM5ZDI0Yzc1MDUyZGNmNjI0NWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApA
QCAtMjAyLDYgKzIwMiwxOSBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9XRUJfUFJPQ0VT
U19FWENFRURFRF9NRU1PUllfTElNSVQKIH0gV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uOwogCisvKioKKyAqIFdlYktpdEF1ZGlvUmVuZGVyaW5nUG9saWN5OgorICogQFdFQktJVF9B
VURJT19SRU5ERVJJTkdfUE9MSUNZX0hPU1RfREVGQVVMVDogdXNlIGhvc3QgYXVkaW8gZGFlbW9u
ICh1c3VhbGx5IFB1bHNlQXVkaW8pLgorICogQFdFQktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZ
X0lOVEVSTkFMX01JWElORzogcGVyZm9ybSBpbnRlcm5hbCBtaXhpbmcgYW5kIHJlbmRlciB0aGUg
cmVzdWx0aW5nIHN0cmVhbSB0byBob3N0IGF1ZGlvIGRhZW1vbi4KKyAqIEF1ZGlvIHJlbmRlcmlu
ZyBwb2xpY3kuCisgKgorICogU2luY2U6IDIuMzAKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBX
RUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9IT1NUX0RFRkFVTFQsCisgICAgV0VCS0lUX0FV
RElPX1JFTkRFUklOR19QT0xJQ1lfSU5URVJOQUxfTUlYSU5HLAorfSBXZWJLaXRBdWRpb1JlbmRl
cmluZ1BvbGljeTsKKwogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBXZWJLaXRXZWJWaWV3
QmFzZSBwYXJlbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDFiYzQy
NzBjOWY0MGU4ZmI4YzRmZTY2Y2U2ZTNiYjUwYjNmZjk3MTcuLjFjZTAwOWM3NGUyYmY1MzA2NTU1
NTE3MWI3OGVjZThkMzMyMTBjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApA
QCAtMTk4LDYgKzE5OCw3IEBAIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50CiBXZWJLaXRTbmFw
c2hvdE9wdGlvbnMKIFdlYktpdFNuYXBzaG90UmVnaW9uCiBXZWJLaXRXZWJQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24KK1dlYktpdEF1ZGlvUmVuZGVyaW5nUG9saWN5CiAKIDxTVUJTRUNUSU9OIEVk
aXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAppbmRleCAyYjJkNzhkMWJi
NTNhMmZmZGI3MGMyYTRiZGJjODg0YWY2MDM2ZjYwLi5jN2NiM2U4ZWI1ZDM3OGRhOTI1MmFjMDYx
OGE2OTk0MzNmY2M2ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFdlYlZpZXcuaApAQCAtMTgzLDYgKzE4MywyMCBAQCB0eXBlZGVmIGVudW0gewogdHlw
ZWRlZiB2b2lkICgqIFdlYktpdEZyYW1lRGlzcGxheWVkQ2FsbGJhY2spIChXZWJLaXRXZWJWaWV3
ICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ3BvaW50ZXIgICAgICAgdXNlcl9kYXRhKTsKIAorCisvKioKKyAqIFdlYktpdEF1ZGlvUmVu
ZGVyaW5nUG9saWN5OgorICogQFdFQktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZX0hPU1RfREVG
QVVMVDogdXNlIGhvc3QgYXVkaW8gZGFlbW9uICh1c3VhbGx5IFB1bHNlQXVkaW8pLgorICogQFdF
QktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZX0lOVEVSTkFMX01JWElORzogcGVyZm9ybSBpbnRl
cm5hbCBtaXhpbmcgYW5kIHJlbmRlciB0aGUgcmVzdWx0aW5nIHN0cmVhbSB0byBob3N0IGF1ZGlv
IGRhZW1vbi4KKyAqIEF1ZGlvIHJlbmRlcmluZyBwb2xpY3kuCisgKgorICogU2luY2U6IDIuMzAK
KyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9I
T1NUX0RFRkFVTFQsCisgICAgV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfSU5URVJOQUxf
TUlYSU5HLAorfSBXZWJLaXRBdWRpb1JlbmRlcmluZ1BvbGljeTsKKwogc3RydWN0IF9XZWJLaXRX
ZWJWaWV3IHsKICAgICBHT2JqZWN0IHBhcmVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CmluZGV4IDBj
MmRjNjUxNWM2NmI3OTU3N2E3ZDU4MDdjYTRhMGZiYzVkMDc1MzkuLjY2MGExMGVlY2MwNjE4ODk5
ZDlhYzJmZWQ4NTU2MWYxN2MyZTgzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKQEAgLTE3Miw2ICsx
NzIsNyBAQCBXZWJLaXRTYXZlTW9kZQogV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQKIFdlYktp
dFdlYlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbgogV2ViS2l0RnJhbWVEaXNwbGF5ZWRDYWxsYmFj
aworV2ViS2l0QXVkaW9SZW5kZXJpbmdQb2xpY3kKIAogPFNVQlNFQ1RJT04gRWRpdGluZyBDb21t
YW5kcz4KIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCA2NTQ3ZjRiMzhiZWZmYjMwY2E5NTRjOGE5N2IyOWJjNDMz
OTBmNjA2Li44NGNiZDZhNzJkMGQzNGMyNWZlODA4ODRmOTk0ZWQ1ZWM2Y2U4NmJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTIzMiw2ICsyMzIsMTAgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CiAjZW5kaWYKIAorI2lmIFVTRShH
U1RSRUFNRVIpCisjaW5jbHVkZSAiQXVkaW9SZW5kZXJpbmdQb2xpY3kuaCIKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmg+CkBAIC00ODgsNiArNDkyLDkgQEAgV2Vi
UGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzLCBSZWYKICAgICAsIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyhtX2Nv
bmZpZ3VyYXRpb24tPmlnbm9yZXNBcHBCb3VuZERvbWFpbnMoKSkKICAgICAsIG1fbGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyhtX2NvbmZpZ3VyYXRpb24tPmxpbWl0c05hdmlnYXRp
b25zVG9BcHBCb3VuZERvbWFpbnMoKSkKICNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAg
LCBtX2F1ZGlvUmVuZGVyaW5nUG9saWN5KEF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVs
dCkKKyNlbmRpZgogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnN0
cnVjdG9yOiIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDMy
ZWM0OTRkYjRkZTZmYjE5NWUwZTIyNzAxZjY4MmZiNzk3YzJkMTEuLjc5N2JhYWMxMjkxZTcwMDI2
OTAzNDc0NTIzYWNlN2RiNTM4YzdhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0zNjAsNiArMzYwLDEwIEBAIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCA6IGJvb2w7CiBlbnVtIGNsYXNzIFVuZG9PclJlZG8gOiBib29sOwogZW51bSBj
bGFzcyBXZWJDb250ZW50TW9kZSA6IHVpbnQ4X3Q7CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorZW51
bSBjbGFzcyBBdWRpb1JlbmRlcmluZ1BvbGljeSA6IHVpbnQ4X3Q7CisjZW5kaWYKKwogdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpEYXRhKj4gRGF0YUNhbGxiYWNrOwogdHlwZWRlZiBHZW5l
cmljQ2FsbGJhY2s8dWludDY0X3Q+IFVuc2lnbmVkQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWND
YWxsYmFjazxFZGl0aW5nUmFuZ2U+IEVkaXRpbmdSYW5nZUNhbGxiYWNrOwpAQCAtMTc2Nyw2ICsx
NzcxLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SGFzRXhlY3V0ZWRBcHBCb3VuZEJlaGF2
aW9yQmVmb3JlTmF2aWdhdGlvbigpIHsgbV9oYXNFeGVjdXRlZEFwcEJvdW5kQmVoYXZpb3JCZWZv
cmVOYXZpZ2F0aW9uID0gdHJ1ZTsgfQogICAgICAgICAKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAg
IEF1ZGlvUmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29uc3QgeyByZXR1
cm4gbV9hdWRpb1JlbmRlcmluZ1BvbGljeTsgfQorICAgIHZvaWQgc2V0QXVkaW9SZW5kZXJpbmdQ
b2xpY3koQXVkaW9SZW5kZXJpbmdQb2xpY3kpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTI4MjMs
NiArMjgzMiwxMiBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04p
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk+
IG1fcm91dGluZ0FyYml0cmF0b3I7CisKKyAgICBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBt
X2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjo6Tm8gfTsKKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBBdWRpb1JlbmRlcmlu
Z1BvbGljeSBtX2F1ZGlvUmVuZGVyaW5nUG9saWN5OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3Ry
ZWFtZXIuY3BwCmluZGV4IGUzYWU1MTRiMDM3Y2U4Zjg4MDQ5OGFmZTEyYTFmOWVjMzFiYTY2Yjgu
LjhjMmJhZDVkMTRiMGQ2NzNkZDUxOWVmNzk5MzU4MmUzZmFjMTVmZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3Ry
ZWFtZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAK
ICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAiQXVkaW9SZW5k
ZXJpbmdQb2xpY3kuaCIKICNpbmNsdWRlICJJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogCkBAIC00MSw2ICs0Miwx
MiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
KGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29ucwogICAgIHJlcXVlc3QtPmRlbnkoKTsKIH0KIAor
dm9pZCBXZWJQYWdlUHJveHk6OnNldEF1ZGlvUmVuZGVyaW5nUG9saWN5KEF1ZGlvUmVuZGVyaW5n
UG9saWN5IHBvbGljeSkKK3sKKyAgICBtX2F1ZGlvUmVuZGVyaW5nUG9saWN5ID0gcG9saWN5Owor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QXVkaW9SZW5kZXJpbmdQ
b2xpY3kocG9saWN5KSwgbV93ZWJQYWdlSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKaW5kZXggOTY2Nzg3ZjVjZjkwMDVjMjMwNzkxOTUzNzlhZGQyNzcxYjUwMzA4Zi4u
NDgwMDRiOWNkNGRmNWMwODJlYTY5YWVlYjExMjVjZDM0YzhlMmQ2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKQEAgLTEwMCw2ICsxMDAsMTAgQEAKICNpbmNsdWRlICJQcmludGVyTGlzdEd0ay5o
IgogI2VuZGlmCiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIkF1ZGlvUmVuZGVyaW5n
UG9saWN5LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjZW5kaWYKQEAgLTEz
MDYsNiArMTMxMCwxOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdEluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgYwogICAgIG1fcGFnZS5yZXF1
ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoZGV0YWlscywgZGVzY3JpcHRpb24sIGNhbGxi
YWNrKTsKIH0KIAorQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ1BvbGljeSBXZWJDaHJvbWVD
bGllbnQ6OmF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fcGFn
ZS5hdWRpb1JlbmRlcmluZ1BvbGljeSgpKSB7CisgICAgY2FzZSBXZWJLaXQ6OkF1ZGlvUmVuZGVy
aW5nUG9saWN5OjpIb3N0RGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIENocm9tZUNsaWVudDo6QXVk
aW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OworICAgIGNhc2UgV2ViS2l0OjpBdWRpb1Jl
bmRlcmluZ1BvbGljeTo6SW50ZXJuYWxNaXhpbmc6CisgICAgICAgIHJldHVybiBDaHJvbWVDbGll
bnQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpJbnRlcm5hbE1peGluZzsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIENocm9tZUNs
aWVudDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OworfQogI2VuZGlmCiAKIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKaW5kZXggZDk1ODk3ZWU2Zjc5MGZjZmExNTkxZTlkMWMwNGY5NmRkNTVj
YmQ1Mi4uNGQyNmNjY2E4ZTUyMWI1YjhhMWM3ODkyYzQ4ZWMyYTJiNjNjMGMyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaApAQCAtMzc5LDYgKzM3OSw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoVklE
RU8pICYmIFVTRShHU1RSRUFNRVIpCiAgICAgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRp
YVBsdWdpbnMoY29uc3QgU3RyaW5nJiAvKmRldGFpbHMqLywgY29uc3QgU3RyaW5nJiAvKmRlc2Ny
aXB0aW9uKi8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrJikgZmluYWw7CisgICAgQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ1BvbGlj
eSBhdWRpb1JlbmRlcmluZ1BvbGljeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKICAgICB2b2lk
IGRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDg2ODUzMWE0ZGZkNzE2NWY5
NmQ0OTkwNzUyNDZkYTE5OTIyZmUwOWUuLmM1ZGJkMTBkOTgzM2UyMDA1YmY5YWE2NDM4MjI3MzBm
MjkxMjgxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0zMDksNiArMzA5LDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIkF1ZGlvUmVuZGVyaW5nUG9saWN5LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFj
ay5oPgogI2VuZGlmCiAKQEAgLTEzOTQsNiArMTM5NSw3IEBAIHZvaWQgV2ViUGFnZTo6Y2xvc2Uo
KQogICAgICAgICBtX2luc3RhbGxNZWRpYVBsdWdpbnNDYWxsYmFjay0+aW52YWxpZGF0ZSgpOwog
ICAgICAgICBtX2luc3RhbGxNZWRpYVBsdWdpbnNDYWxsYmFjayA9IG51bGxwdHI7CiAgICAgfQor
ICAgIG1fYXVkaW9SZW5kZXJpbmdQb2xpY3kgPSBBdWRpb1JlbmRlcmluZ1BvbGljeTo6SG9zdERl
ZmF1bHQ7CiAjZW5kaWYKIAogICAgIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXIuaW52YWxpZGF0
ZSgpOwpAQCAtNjUxMiw2ICs2NTE0LDEzIEBAIHZvaWQgV2ViUGFnZTo6YWRkVXNlclNjcmlwdChT
dHJpbmcmJiBzb3VyY2UsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCBXCiAgICAg
bV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHQod29ybGQsIFdURk1vdmUodXNl
clNjcmlwdCkpOwogfQogCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQorQXVk
aW9SZW5kZXJpbmdQb2xpY3kgV2ViUGFnZTo6YXVkaW9SZW5kZXJpbmdQb2xpY3koKSBjb25zdAor
eworICAgIHJldHVybiBtX2F1ZGlvUmVuZGVyaW5nUG9saWN5OworfQorI2VuZGlmCisKIHZvaWQg
V2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFdlYkNvcmU6
OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCiB7CiAgICAgV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQgdXNlclN0eWxlU2hlZXQge3NvdXJjZSwgYWJvdXRCbGFua1VSTCgp
LCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBpbmplY3RlZEZyYW1lcywgVXNl
clN0eWxlVXNlckxldmVsIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggZmViMzBlYmM0MDhjNjIyZTNkNzcyZWQwZWQ0ZTk4YzcwNDhiMDE3NC4uMWU0
YjJhZGNlNTdlZDZjZDg4YjUyNDRkYzRmN2UxNDExMmEwYzE1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjc4LDYgKzI3OCwxMCBAQCBlbnVtIEZp
bmRPcHRpb25zIDogdWludDE2X3Q7CiBlbnVtIGNsYXNzIERyYWdDb250cm9sbGVyQWN0aW9uIDog
dWludDhfdDsKIGVudW0gY2xhc3MgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIDogdWludDhf
dDsKIAorI2lmIFVTRShHU1RSRUFNRVIpCitlbnVtIGNsYXNzIEF1ZGlvUmVuZGVyaW5nUG9saWN5
IDogdWludDhfdDsKKyNlbmRpZgorCiBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOwog
c3RydWN0IERhdGFEZXRlY3Rpb25SZXN1bHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4
dDsKQEAgLTExNDYsNiArMTE1MCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEdTVFJFQU1FUikKICAgICB2b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lu
cyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNv
cmU6Ok1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJik7Cisg
ICAgQXVkaW9SZW5kZXJpbmdQb2xpY3kgYXVkaW9SZW5kZXJpbmdQb2xpY3koKSBjb25zdDsKICNl
bmRpZgogCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZCYsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMsIFdl
YkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKQEAgLTE2ODAsNiArMTY4NSw3IEBAIHBy
aXZhdGU6CiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAgICAgdm9pZCBk
aWRFbmRSZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnModWludDMyX3QgcmVzdWx0KTsK
KyAgICB2b2lkIHNldEF1ZGlvUmVuZGVyaW5nUG9saWN5KEF1ZGlvUmVuZGVyaW5nUG9saWN5IHBv
bGljeSkgeyBtX2F1ZGlvUmVuZGVyaW5nUG9saWN5ID0gcG9saWN5OyB9CiAjZW5kaWYKIAogICAg
IHZvaWQgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbih1aW50MzJfdCk7CkBAIC0yMDUy
LDYgKzIwNTgsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVB
TUVSKQogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2lu
Z1BsdWdpbnNDYWxsYmFjaz4gbV9pbnN0YWxsTWVkaWFQbHVnaW5zQ2FsbGJhY2s7CisgICAgQXVk
aW9SZW5kZXJpbmdQb2xpY3kgbV9hdWRpb1JlbmRlcmluZ1BvbGljeTsKICNlbmRpZgogCiAjaWYg
VVNFKE9TX1NUQVRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZWViMDkwZmMzZDJmMjA1ZGMyYWFjNWE1ZDY3ZjE5
OTQ4Y2E2ZWRkMi4uMGJmZWZkMGUxZTNlN2RkOTVkNzFiYWI3MDUzMDUwZDZjZmFiYzA4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC01MzUsNiArNTM1LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKICAgICBEaWRFbmRSZXF1ZXN0SW5zdGFs
bE1pc3NpbmdNZWRpYVBsdWdpbnModWludDMyX3QgcmVzdWx0KQorICAgIFNldEF1ZGlvUmVuZGVy
aW5nUG9saWN5KGVudW06dWludDhfdCBXZWJLaXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5IHBvbGlj
eSkKICNlbmRpZgogCiAgICAgU2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbih1aW50MzJf
dCBkaXJlY3Rpb24pCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggZjZkY2UxZDY2Yjk3MTFkYjVmYWU2NzdiNjYyZmI3MmFhNzZmOGJjOS4uMmU5N2U2
YWRkZWYzMzgxMmI2Yjg3ODM3ZWM4ZGJjNTQyMGM3YzNhMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA1LTE3
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0
cmVhbWVyXSBJbnRlcm5hbCBhdWRpbyByZW5kZXJpbmcgc3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjM0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXIucHk6CisKIDIwMjAtMDUtMTYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIHNvbWUgQVBJIHRlc3QgZmlsZXMKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
bWFpbi5jCmluZGV4IDJmZjQ1YjkzOGNmZmFiZTk1ZmUxNzEzNzM5M2I4YjZjNTA2ZDQ5OTMuLjBk
MzRmYzZlYzEyZTQwNmQ5YWY1ZTBkNWVmMTc3MTJlMjY2YWU1ZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4u
YwpAQCAtNTUsNiArNTUsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29va2llc1BvbGljeTsKIHN0
YXRpYyBjb25zdCBjaGFyICpwcm94eTsKIHN0YXRpYyBnYm9vbGVhbiBkYXJrTW9kZTsKIHN0YXRp
YyBnYm9vbGVhbiBwcmludFZlcnNpb247CitzdGF0aWMgZ2Jvb2xlYW4gaW50ZXJuYWxBdWRpb01p
eGluZzsKIAogdHlwZWRlZiBlbnVtIHsKICAgICBNSU5JX0JST1dTRVJfRVJST1JfSU5WQUxJRF9B
Qk9VVF9QQVRICkBAIC03OSwxMSArODAsMTMgQEAgc3RhdGljIGdjaGFyICphcmd1bWVudFRvVVJM
KGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogCiBzdGF0aWMgV2ViS2l0V2ViVmlldyAqY3JlYXRlQnJv
d3NlclRhYihCcm93c2VyV2luZG93ICp3aW5kb3csIFdlYktpdFNldHRpbmdzICp3ZWJraXRTZXR0
aW5ncywgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICp1c2VyQ29udGVudE1hbmFnZXIpCiB7Cisg
ICAgV2ViS2l0QXVkaW9SZW5kZXJpbmdQb2xpY3kgYXVkaW9SZW5kZXJpbmdQb2xpY3kgPSBpbnRl
cm5hbEF1ZGlvTWl4aW5nID8gV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfSU5URVJOQUxf
TUlYSU5HIDogV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfSE9TVF9ERUZBVUxUOwogICAg
IFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX1dFQl9WSUVXLAogICAgICAgICAid2ViLWNvbnRleHQiLCBicm93c2VyX3dpbmRv
d19nZXRfd2ViX2NvbnRleHQod2luZG93KSwKICAgICAgICAgInNldHRpbmdzIiwgd2Via2l0U2V0
dGluZ3MsCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHVzZXJDb250ZW50TWFuYWdl
ciwKICAgICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIGF1dG9tYXRpb25Nb2Rl
LAorICAgICAgICAiYXVkaW8tcmVuZGVyaW5nLXBvbGljeSIsIGF1ZGlvUmVuZGVyaW5nUG9saWN5
LAogICAgICAgICBOVUxMKSk7CiAKICAgICBpZiAoZWRpdG9yTW9kZSkKQEAgLTEyMSw2ICsxMjQs
NyBAQCBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KICAg
ICB7ICJpZ25vcmUtaG9zdCIsIDAsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkdfQVJSQVksICZpZ25v
cmVIb3N0cywgIlNldCBwcm94eSBpZ25vcmUgaG9zdHMiLCAiSE9TVFMiIH0sCiAgICAgeyAiaWdu
b3JlLXRscy1lcnJvcnMiLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmlnbm9yZVRMU0Vycm9y
cywgIklnbm9yZSBUTFMgZXJyb3JzIiwgTlVMTCB9LAogICAgIHsgImNvbnRlbnQtZmlsdGVyIiwg
MCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FLCAmY29udGVudEZpbHRlciwgIkpTT04gd2l0aCBj
b250ZW50IGZpbHRlcmluZyBydWxlcyIsICJGSUxFIiB9LAorICAgIHsgImludGVybmFsLWF1ZGlv
LW1peGluZyIsICdpJywgMCwgR19PUFRJT05fQVJHX05PTkUsICZpbnRlcm5hbEF1ZGlvTWl4aW5n
LCAiUGVyZm9ybSBpbnRlcm5hbCBhdWRpbyBtaXhpbmcgb2YgbXVsdGltZWRpYSBjb250ZW50Iiwg
TlVMTH0sCiAgICAgeyAidmVyc2lvbiIsICd2JywgMCwgR19PUFRJT05fQVJHX05PTkUsICZwcmlu
dFZlcnNpb24sICJQcmludCB0aGUgV2ViS2l0R1RLIHZlcnNpb24iLCBOVUxMIH0sCiAgICAgeyBH
X09QVElPTl9SRU1BSU5JTkcsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVy
aUFyZ3VtZW50cywgMCwgIltVUkzigKZdIiB9LAogICAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggNThiMTE2YmM3YWE0
Y2YzOTcxYmZkOTgyNGQ3ZTM0OGZiZWMyNzRjMi4uMGJjMzJjNzNkZjRjZTg5ODhkMzlmYzcwZGNj
Y2I2ZTM5MzU5Y2M2NiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpA
QCAtMjIxLDYgKzIyMSw3IEBAIF9QQVRIX1JVTEVTX1NQRUNJRklFUiA9IFsKICAgICAgIG9zLnBh
dGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnZ3JhcGhpY3MnLCAnZ3N0
cmVhbWVyJywgJ0dMVmlkZW9TaW5rR1N0cmVhbWVyLmgnKSwKICAgICAgIG9zLnBhdGguam9pbign
U291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywg
J1ZpZGVvU2lua0dTdHJlYW1lci5jcHAnKSwKICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywg
J1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAnKSwKKyAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dl
YkNvcmUnLCAncGxhdGZvcm0nLCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ1dlYktpdEF1ZGlv
U2lua0dTdHJlYW1lci5jcHAnKSwKICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNv
cmUnLCAncGxhdGZvcm0nLCAnYXVkaW8nLCAnZ3N0cmVhbWVyJywgJ1dlYktpdFdlYkF1ZGlvU291
cmNlR1N0cmVhbWVyLmNwcCcpLAogICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29y
ZScsICdwbGF0Zm9ybScsICdtZWRpYXN0cmVhbScsICdnc3RyZWFtZXInLCAnR1N0cmVhbWVyTWVk
aWFTdHJlYW1Tb3VyY2UuaCcpLAogICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29y
ZScsICdwbGF0Zm9ybScsICdtZWRpYXN0cmVhbScsICdnc3RyZWFtZXInLCAnR1N0cmVhbWVyTWVk
aWFTdHJlYW1Tb3VyY2UuY3BwJyksCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404938</attachid>
            <date>2020-07-22 10:22:44 -0700</date>
            <delta_ts>2020-07-23 02:28:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207634-20200722102242.patch</filename>
            <type>text/plain</type>
            <size>103324</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Njk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGI3ZTQwOWFkNWIyNDJm
YmY2OGE0NTE5MzE5NjhhYTNiOTIyYjM2Ny4uNjYyMjFkNmM1MTQ1YmQ5M2VhZmFlMDZkY2E3ZjVk
NjU1MDEyYzBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAyMC0wNy0yMiAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1l
cl0gSW50ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBhIG5ldyBHU3RyZWFtZXIgYXVkaW9S
ZW5kZXJpbmdQb2xpY3koKSBBUEkgaW4gdGhlIENocm9tZUNsaWVudC4gSXQgaXMgdXNlZCBhdCB0
aGUKKyAgICAgICAgcGxhdGZvcm0gbGV2ZWwgYnkgdGhlIEdTdHJlYW1lciBiYWNrZW5kcyB3aGVu
IHRoZXkgbmVlZCB0byBkZWNpZGUgd2hpY2ggYXVkaW8gc2luayB0aGV5CisgICAgICAgIHNob3Vs
ZCB1c2UgZm9yIHJlbmRlcmluZy4KKworICAgICAgICBXaGVuIEludGVybmFsTWl4aW5nIGhhcyBi
ZWVuIGVuYWJsZWQgYXQgdGhlIFVJUHJvY2VzcyBsZXZlbCwgdGhlIGNvcnJlc3BvbmRpbmcgV2Vi
UHJvY2VzcworICAgICAgICB3aWxsIGhhdmUgaXRzIEdTdHJlYW1lciBiYWNrZW5kcyByZW5kZXIg
dG8gZGVkaWNhdGVkIFdlYktpdCBhdWRpbyBzaW5rcy4gVGhvc2Ugd2lsbCBmb3J3YXJkCisgICAg
ICAgIGJ1ZmZlcnMgdG8gYSBzaW5nbGV0b24gYXVkaW8gbWl4ZXIuIFRoZSByZXN1bHRpbmcgYXVk
aW8gc3RyZWFtIHdpbGwgdGhlbiBiZSByZW5kZXJlZCB0aHJvdWdoCisgICAgICAgIGhvc3QgZGVm
YXVsdCBhdWRpbyBzaW5rIChQdWxzZUF1ZGlvIGluIG1vc3QgY2FzZXMpLiBVc2luZyB0aGlzIGFw
cHJvYWNoLCBhcHBsaWNhdGlvbnMgd2lsbAorICAgICAgICBtYWludGFpbiBhIHNpbmdsZSBjb25u
ZWN0aW9uIHRvIHRoZSBhdWRpbyBkYWVtb24uCisKKyAgICAgICAgV2hlbiBFeHRlcm5hbCBoYXMg
YmVlbiBlbmFibGVkIGF0IHRoZSBXUEUgVUlQcm9jZXNzIGxldmVsLCB0aGUgV2ViS2l0IGF1ZGlv
IHNpbmtzIHJ1bm5pbmcgaW4KKyAgICAgICAgdGhlIFdlYlByb2Nlc3Mgd2lsIGZvcndhcmQgYXVk
aW8gc2FtcGxlcyB0byB0aGUgVUlQcm9jZXNzLCB1c2luZyBhIFdheWxhbmQgcHJvdG9jb2wgZGVm
aW5lZAorICAgICAgICBpbiB0aGUgV1BFQmFja2VuZC1GRE8gYmFja2VuZCBhbmQgZXhwb3NlZCB0
aHJvdWdoIGl0cyBhdWRpbyBleHRlbnNpb24uIFRoaXMgY2xpZW50LXNpZGUKKyAgICAgICAgcmVu
ZGVyaW5nIHN1cHBvcnQgYWxsb3dzIGFwcGxpY2F0aW9ucyB0byBoYXZlIGZ1bGwgY29udHJvbCBv
biB0aGUgYXVkaW8gc2FtcGxlcyByZW5kZXJpbmcuCisKKyAgICAgICAgRXhpc3RpbmcgbGF5b3V0
IHRlc3RzIGNvdmVyIHRoZSBIb3N0RGVmYXVsdCBwb2xpY3kuIEludGVybmFsTWl4aW5nIHNob3Vs
ZCBiZSBjb25zaWRlcmVkIGEKKyAgICAgICAgdGVjaG5vbG9neSBwcmV2aWV3IGFuZCBjYW4ndCBi
ZSBlbmFibGVkIGJ5IGRlZmF1bHQgeWV0LCBiZWNhdXNlIGF1ZGlvbWl4ZXIgbGFja3Mgc29tZQor
ICAgICAgICBmZWF0dXJlcyBzdWNoIGFzIHJldmVyc2UgcGxheWJhY2sgc3VwcG9ydC4gRXh0ZXJu
YWwgYXVkaW8gcmVuZGVyaW5nIHBvbGljeSBpcyBjb3ZlcmVkIGJ5IGEKKyAgICAgICAgbmV3IFdQ
RSBBUEkgdGVzdC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0
aW9uTm9kZTo6Y3JlYXRlRGVzdGluYXRpb24pOiBLZWVwIHRyYWNrIG9mIHRoZSBhdWRpbyByZW5k
ZXJpbmcKKyAgICAgICAgcG9saWN5IGNvbmZpZ3VyZWQgb24gdGhlIHBhZ2UuIFRoaXMgaXMgdGhl
biB1c2VkIGJ5IHRoZSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKKyAgICAgICAgQXVk
aW9EZXN0aW5hdGlvbk5vZGUuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJBdWRpb1Jl
bmRlcmluZ1BvbGljeSBjb25zdCk6IERpdHRvLCBidXQgZm9yCisgICAgICAgIEhUTUxNZWRpYUVs
ZW1lbnQgYW5kIGl0cyB1bmRlcmx5aW5nIE1lZGlhUGxheWVyUHJpdmF0ZS4KKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjphdWRpb1JlbmRlcmluZ1BvbGljeSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0F1ZGlvSU9DYWxsYmFjay5oOiBEaXR0bywgYnV0IGZvciB0aGUgV2ViQXVkaW8g
QXVkaW9JT0NhbGxiYWNrIGFuZCB0aGUKKyAgICAgICAgdW5kZXJseWluZyBBdWRpb0Rlc3RpbmF0
aW9uTm9kZSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvSU9DYWxsYmFj
azo6YXVkaW9SZW5kZXJpbmdQb2xpY3kgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIp
OiBDcmVhdGUgc2luayBkZXBlbmRpbmcgb24KKyAgICAgICAgc2VsZWN0ZWQgYXVkaW8gcmVuZGVy
aW5nIHBvbGljeSBhbmQgcHJvYmUgcGxhdGZvcm0gZm9yIGEgd29ya2luZyBhdWRpbyBvdXRwdXQg
ZGV2aWNlIG9ubHkKKyAgICAgICAgd2hlbiB0aGUgV2ViS2l0IGN1c3RvbSBhdWRpbyBzaW5rIGhh
c24ndCBiZWVuIHNlbGVjdGVkLiBUaGlzIGlzIG5lZWRlZCBvbmx5IGZvciB0aGUKKyAgICAgICAg
YXV0b2F1ZGlvc2luayBjYXNlLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y29uZmlndXJlQXVkaW9CaW4pOiBJbnN0
ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IHNpbmssCisgICAgICAgIGVtYmVkIHRoZSBvbmUgcHJvdmlk
ZWQgYnkgdGhlIHBsYXllciBpbnRvIHRoZSBhdWRpbyBiaW4uIFRoZSByZXN1bHRpbmcgYmluIGJl
Y29tZXMgdGhlCisgICAgICAgIHBsYXllciBhdWRpbyBzaW5rIGFuZCBpdCdzIGFibGUgdG8gcmVu
ZGVyIGJvdGggdG8gdGhlIFdlYkF1ZGlvIHByb3ZpZGVyIGFuZCB0aGUgdXN1YWwgc2luaywgYXMg
YmVmb3JlLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVBy
b3ZpZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmF1ZGlvUmVuZGVyaW5nUG9s
aWN5IGNvbnN0KTogUHJveHkgdGhlIGF1ZGlvIHJlbmRlcmluZyBwb2xpY3kgZnJvbQorICAgICAg
ICB0aGUgbWVkaWEgcGxheWVyIGNsaWVudCAoZWcgbWVkaWEgZWxlbWVudCB1c3VhbGx5KSB0byB0
aGUgcHJpdmF0ZSBwbGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckF1ZGlvUmVuZGVy
aW5nUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50Ojpt
ZWRpYVBsYXllclNob3VsZEludGVybmFsbHlSZW5kZXJBdWRpbyBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oOgorICAgICAgICAoV1RGOjpMb2dB
cmd1bWVudDxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeT46
OnRvU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQXVkaW9NaXhlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVk
aW9NaXhlcjo6aXNBbGxvd2VkKTogVGhlIG1peGVyIHJlcXVpcmVzIGEgcmVjZW50IEdTdHJlYW1l
ciB2ZXJzaW9uIGFuZAorICAgICAgICB0aGUgaW50ZXIgcGx1Z2luIChzaGlwcGVkIGluIGdzdC1w
bHVnaW5zLWJhZCB1bnRpbCB2ZXJzaW9uIDEuMjAgYXQgbGVhc3QpLgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6c2luZ2xldG9uKTogRW50cnkgcG9pbnQgZm9yIHRoZSBt
aXhlci4gVGhpcyBpcyB3aGVyZSB0aGUKKyAgICAgICAgc2luZ2xldG9uIGlzIGNyZWF0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb01peGVyOjpHU3RyZWFtZXJBdWRpb01peGVy
KTogQ29uZmlndXJlIHRoZSBzdGFuZGFsb25lIG1peGVyCisgICAgICAgIHBpcGVsaW5lLgorICAg
ICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6fkdTdHJlYW1lckF1ZGlvTWl4ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6ZW5zdXJlU3RhdGUpOiBM
YXppbHkgc3RhcnQvc3RvcCB0aGUgbWl4ZXIsIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgICAgbnVt
YmVyIG9mIGluY29taW5nIHN0cmVhbXMuIFRoZSBwaXBlbGluZSBzdGFydHMgd2hlbiB0aGUgZmly
c3QgaW5jb21pbmcgc3RyZWFtIGlzIGNvbm5lY3RlZCwKKyAgICAgICAgYW5kIHN0b3BzIHdoZW4g
dGhlIGxhc3Qgc3RyZWFtIGRpc2FwcGVhcnMuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJB
dWRpb01peGVyOjpyZWdpc3RlclByb2R1Y2VyKTogQ2xpZW50IHBpcGVsaW5lcyByZXF1aXJlIGFu
IGludGVyYXVkaW9zaW5rLCB0aGV5CisgICAgICAgIHdpbGwgcmVuZGVyIHRvIHRoYXQgc2luaywg
d2hpY2ggaW50ZXJuYWxseSBmb3J3YXJkcyBkYXRhIHRvIGEgdHdpbiBpbnRlcmF1ZGlvc3JjIGVs
ZW1lbnQsCisgICAgICAgIGNvbm5lY3RlZCB0byB0aGUgYXVkaW9taXhlci4KKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lckF1ZGlvTWl4ZXI6OnVucmVnaXN0ZXJQcm9kdWNlcik6IEdldCByaWQg
b2YgYW4gaW50ZXJhdWRpb3NpbmsgYW5kIGl0cyBpbnRlcmF1ZGlvc3JjLgorICAgICAgICBUaGlz
IGlzIGNhbGxlZCBieSB0aGUgV2ViS2l0IGF1ZGlvIHNpbmsgd2hlbiB0aGUgZWxlbWVudCBpcyBi
ZWluZyBkaXNwb3NlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQXVkaW9NaXhlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxp
emVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRzKTogUmVnaXN0ZXIgbmV3IGF1ZGlv
IHNpbmsgZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF1ZGlvU2lua0ZvclBvbGlj
eSk6IE5ldyB1dGlsaXR5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbiBhdWRpbyBzaW5rIGJhc2VkIG9u
CisgICAgICAgIHRoZSBzZWxlY3RlZCByZW5kZXJpbmcgcG9saWN5LgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6fk1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnNlZWspOiBEcml2ZS1ieSBjbGVhbi11cCwgbm8gbmVlZCB0byBjcmVhdGUg
dGhlIHNlZWsKKyAgICAgICAgTWVkaWF0aW1lIGJlZm9yZSB0aGUgZWFybHkgcmV0dXJuIGNoZWNr
aW5nIHRoaXMgaXMgYSBsaXZlIHN0cmVhbS4KKyAgICAgICAgKFdlYkNvcmU6OnNldFN5bmNPbkNs
b2NrKTogRml4dXAgY29kZSBzdHlsZSBpbiB0aGlzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlQXVkaW9TaW5rKTogVXNlIG5ldyBj
cmVhdGVBdWRpb1NpbmtGb3JQb2xpY3koKQorICAgICAgICB1dGlsaXR5IGZ1bmN0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NpbmsgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVh
dGVHU1RQbGF5QmluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5jcHA6IEFkZGVkLiBUaGlzIHNpbmsg
Y2FuIGVpdGhlcgorICAgICAgICBmb3J3YXJkIGluY29taW5nIHNhbXBsZXMgdG8gdGhlIHNoYXJl
ZCBhdWRpb21peGVyIHJ1bm5pbmcgaW4gaXRzIG93biBwaXBlbGluZSwgb3IgZm9yd2FyZAorICAg
ICAgICBzYW1wbGVzIHRvIHRoZSBVSVByb2Nlc3MgdXNpbmcgdGhlIFdQRUJhY2tlbmQtRkRPIGF1
ZGlvIGV4dGVuc2lvbi4KKyAgICAgICAgKEF1ZGlvUGFja2V0SG9sZGVyOjpBdWRpb1BhY2tldEhv
bGRlcik6IFdyYXBwZXIgYXJvdW5kIGF1ZGlvIGJ1ZmZlcnMsIGluIGNoYXJnZSBvZiBjcmVhdGlu
ZworICAgICAgICB0aGUgY29ycmVzcG9uZGluZyBtZW1mZCBkZXNjcmlwdG9yIGFuZCBhbHNvIGtl
ZXBpbmcgdHJhY2sgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgd3BlX2F1ZGlvX3BhY2tl
dF9leHBvcnQuCisgICAgICAgIChBdWRpb1BhY2tldEhvbGRlcjo6fkF1ZGlvUGFja2V0SG9sZGVy
KToKKyAgICAgICAgKEF1ZGlvUGFja2V0SG9sZGVyOjptYXApOiBDcmVhdGUgdGhlIG1lbWZkIGRl
c2NyaXB0b3IgYW5kIHJldHVybiBpdCBhbG9uZyB3aXRoIHRoZSBidWZmZXIgc2l6ZS4KKyAgICAg
ICAgKHdlYktpdEF1ZGlvU2lua0hhbmRsZVNhbXBsZSk6IEZvcndhcmQgaW5jb21pbmcgc2FtcGxl
cyB1c2luZyB0aGUgV1BFQmFja2VuZC1GRE8gYXVkaW8KKyAgICAgICAgZXh0ZW5zaW9uLiBUaGUg
d3BlX2F1ZGlvX3NvdXJjZSBzdGFydCBpcyBzeW5jaHJvbml6ZWQgd2l0aCB0aGUgYnVmZmVyIGZs
b3cuCisgICAgICAgICh3ZWJLaXRBdWRpb1NpbmtDb25zdHJ1Y3RlZCk6IFdoZW4gaW50ZXJuYWwg
bWl4aW5nIGhhcyBiZWVuIHJlcXVlc3RlZCwgY3JlYXRlIGFuCisgICAgICAgIGludGVyYXVkaW9z
aW5rIHRvIHdoaWNoIHNhbXBsZXMgd2lsbCBiZSBzZW50LiBJbnRlcm5hbGx5IHRoZSBpbnRlcmF1
ZGlvc2luayB3aWxsIGZvcndhcmQKKyAgICAgICAgZGF0YSB0byBpdHMgaW50ZXJhdWRpb3NyYyB3
aGljaCBpcyBjb25uZWN0ZWQgdG8gdGhlIGF1ZGlvbWl4ZXIuIE90aGVyd2lzZSwgaWYgZXh0ZXJu
YWwKKyAgICAgICAgcmVuZGVyaW5nIGhhcyBiZWVuIHJlcXVlc3RlZCwgY3JlYXRlIGFuIGFwcHNp
bmsgaW4gb3JkZXIgdG8gcmVsYXkgc2FtcGxlcyB0byB0aGUgVUlQcm9jZXNzLgorICAgICAgICAo
d2ViS2l0QXVkaW9TaW5rRGlzcG9zZSk6CisgICAgICAgIChnZXRJbnRlcm5hbFZvbHVtZU9iamVj
dCk6IFdoZW4gaW50ZXJuYWwgbWl4aW5nIGlzIGVuYWJsZWQsIHZvbHVtZSBhbmQgbXV0ZSBzdGF0
ZXMgYXJlCisgICAgICAgIHRyYWNrZWQgd2l0aGluIHRoZSBhdWRpb21peGVyIHNpbmsgcGFkcy4g
T3RoZXJ3aXNlIG91ciBhdWRpbyBzaW5rIG1hbmFnZXMgdGhpcyB1c2luZyBhIHZvbHVtZQorICAg
ICAgICBlbGVtZW50LgorICAgICAgICAod2ViS2l0QXVkaW9TaW5rU2V0UHJvcGVydHkpOiBQcm94
eSB2b2x1bWUgYW5kIG11dGUgcHJvcGVydGllcyBmcm9tIHRoZSBpbnRlcm5hbCB2b2x1bWUgcHJv
eHkuCisgICAgICAgICh3ZWJLaXRBdWRpb1NpbmtHZXRQcm9wZXJ0eSk6IERpdHRvLgorICAgICAg
ICAod2ViS2l0QXVkaW9TaW5rQ2hhbmdlU3RhdGUpOiBLZWVwIHRoZSBXUEUgYXVkaW8gc291cmNl
IHN0YXRlIHN5bmNocm9uaXplZCB3aXRoIHRoZSBlbGVtZW50CisgICAgICAgIHN0YXRlLCBpbiBv
cmRlciB0byBrbm93IHdoZW4gdGhlIHBhdXNlL3Jlc3VtZSBub3RpZmljYXRpb25zIHNob3VsZCBi
ZSBzZW50IHRvIHRoZSBVSVByb2Nlc3MuCisgICAgICAgIFRoaXMgaXMgYWxzbyB3aGVyZSBtYWlu
dGFpbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGludGVyYXVkaW9zaW5rIGFuZCB0aGUg
YXVkaW9taXhlciwgd2hlbgorICAgICAgICBpdCdzIGVuYWJsZWQuCisgICAgICAgICh3ZWJraXRf
YXVkaW9fc2lua19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdEF1ZGlvU2lua05ldyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJl
YW1lci5oOiBBZGRlZC4KKwogMjAyMC0wNy0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIGxpdmUgcmFuZ2VzIGZyb20gRWRpdG9yLmggYW5kIEVkaXRv
ckNsaWVudC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYzY2RkMmFhN2I0YTkwMmQxZjBkYzQzZGUxMDY1OGE5OWE1
MGMzZDkuLmVhYTU5YjkwMTMzMWU2ZmYyMjIwMzNmOTVjZDg5OWU3MWJhZTU2YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTEgQEAKKzIwMjAtMDctMjIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEludGVybmFsIGF1ZGlvIHJlbmRl
cmluZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc2MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBbiBhdWRpbyByZW5kZXJpbmcgcG9saWN5IHByb3BlcnR5IGlzIGludHJvZHVjZWQgaW4g
dGhlIFdQRSBhbmQgR1RLIHBvcnRzLiBDdXJyZW50bHkgaXQgaGFzCisgICAgICAgIDMgdmFsdWVz
LCBIb3N0RGVmYXVsdCAoZGVmYXVsdCksIEludGVybmFsTWl4aW5nIGFuZCBFeHRlcm5hbCAod2hp
Y2ggaXMgc3VwcG9ydGVkIG9ubHkgaW4gV1BFKS4KKworICAgICAgICBXaGVuIEludGVybmFsTWl4
aW5nIGlzIHNlbGVjdGVkLCBhIHNpbmdsZSBjb25uZWN0aW9uIHRvIHRoZSBob3N0IHNvdW5kIGRh
ZW1vbiB3aWxsIGJlCisgICAgICAgIG1haW50YWluZWQuIFRoZSB2YXJpb3VzIGludGVybmFsIEdT
dHJlYW1lciBiYWNrZW5kcyB3aWxsIHVzZSBhbiBpbnRlcm5hbCBhdWRpbyBzaW5rCisgICAgICAg
IHBlcmZvcm1pbmcgdGhlIG1peGluZy4gVGhlIHNpbmsgd2lsbCByZWxheSB0aGUgcmVzdWx0aW5n
IGF1ZGlvIHN0cmVhbSB0byB0aGUgaG9zdCBhdWRpbworICAgICAgICBkYWVtb24gKHVzdWFsbHkg
UHVsc2VBdWRpbykuCisKKyAgICAgICAgSW4gV1BFIHdoZW4gdGhlIEV4dGVybmFsIHBvbGljeSBp
cyBzZWxlY3RlZCwgYXVkaW8gc2FtcGxlcyB3aWxsIG5vIGxvbmdlciBiZSByZW5kZXJlZCBieQor
ICAgICAgICBXZWJLaXQsIGJ1dCBieSB0aGUgYXBwbGljYXRpb24uIFRvIHN1cHBvcnQgdGhpcyB1
c2UtY2FzZSwgdGhlIEZETyBXUEVCYWNrZW5kIG5vdyBleHBvc2VzIGFuCisgICAgICAgIGF1ZGlv
IHByb3RvY29sLCBpbiBjaGFyZ2Ugb2YgcmVsYXlpbmcgc2FtcGxlcyBmcm9tIHRoZSBXZWJQcm9j
ZXNzIHRvIHRoZSBVSVByb2Nlc3MsIHVzaW5nCisgICAgICAgIFdheWxhbmQgSVBDLiBUaGUgYXBw
bGljYXRpb24gaGFzIHRvIHJlZ2lzdGVyIGEgd3BlX2F1ZGlvX3JlY2VpdmVyIGFuZCBpbXBsZW1l
bnQgaXRzCisgICAgICAgIGNhbGxiYWNrcywgaW4gb3JkZXIgdG8gYmUgbm90aWZpZWQgb2YgdGhl
IGF1ZGlvIHNhbXBsZXMgYW5kIHN0YXRlIGNoYW5nZXMuIFNlZSB0aGUgQVBJIHRlc3RzCisgICAg
ICAgIGZvciBhbiBleGFtcGxlIG9mIGhvdyB0byBkbyB0aGlzLgorCisgICAgICAgICogU2hhcmVk
L0F1ZGlvUmVuZGVyaW5nUG9saWN5Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0
eSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0
X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViVmlld1dpbGxTdGFydExv
YWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9hdWRpb1JlbmRl
cmluZ1BvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF1ZGlvUmVuZGVyaW5nUG9saWN5IGNvbnN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0QXVkaW9SZW5kZXJpbmdQb2xpY3kpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjphdWRpb1JlbmRlcmluZ1BvbGljeSBj
b25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXVk
aW9SZW5kZXJpbmdQb2xpY3kgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEF1ZGlvUmVuZGVyaW5nUG9s
aWN5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KwogMjAyMC0wNy0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS11bV1BFXSBJVFA6IHVzZSB0aGUgZGF0YWJhc2Ugc3RvcmUgdW5jb25k
aXRpb25hbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggZGQ2N2NmZGUwMzRm
NjcyMzYwYjJjMjJlNjVmZDlmMTA5MTk3MjZhZC4uMGQwYTY0N2ZkYTI1ZWU3M2FkZDFjOWNlYjdk
ZWQ1OTNmZmIzNWViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMzAsNiAr
MzAsOSBAQAogCiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0
aW5hdGlvbi5oIgorI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik1lZGlhU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKQEAgLTg3
LDYgKzkwLDI0IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGVEZXN0
aW5hdGlvbigpCiAgICAgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlID0gQXVkaW9EZXN0aW5hdGlv
bjo6aGFyZHdhcmVTYW1wbGVSYXRlKCk7CiAgICAgTE9HKFdlYkF1ZGlvLCAiPj4+PiBoYXJkd2Fy
ZVNhbXBsZVJhdGUgPSAlZlxuIiwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKIAorI2lmIFVTRShHU1RS
RUFNRVIpCisgICAgYXV0byogcGFnZSA9IGNvbnRleHQoKS5kb2N1bWVudCgpLT5wYWdlKCk7Cisg
ICAgaWYgKHBhZ2UpIHsKKyAgICAgICAgc3dpdGNoIChwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5h
dWRpb1JlbmRlcmluZ1BvbGljeSgpKSB7CisgICAgICAgIGNhc2UgQ2hyb21lQ2xpZW50OjpBdWRp
b1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQ6CisgICAgICAgICAgICBtX2F1ZGlvUmVuZGVy
aW5nUG9saWN5ID0gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3RE
ZWZhdWx0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hyb21lQ2xpZW50OjpB
dWRpb1JlbmRlcmluZ1BvbGljeTo6SW50ZXJuYWxNaXhpbmc6CisgICAgICAgICAgICBtX2F1ZGlv
UmVuZGVyaW5nUG9saWN5ID0gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6
OkludGVybmFsTWl4aW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hyb21l
Q2xpZW50OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6RXh0ZXJuYWw6CisgICAgICAgICAgICBtX2F1
ZGlvUmVuZGVyaW5nUG9saWN5ID0gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xp
Y3k6OkV4dGVybmFsOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgog
ICAgIG1fZGVzdGluYXRpb24gPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVneSgp
LmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oKnRoaXMsIG1faW5wdXREZXZpY2VJZCwgbV9udW1iZXJP
ZklucHV0Q2hhbm5lbHMsIGNoYW5uZWxDb3VudCgpLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCAxYjgxMWFkOTU0Y2E5ODI3MWVlOWMyYmRh
YmY3NzAxZjliZTk4MzdiLi43OWI4MjU1OWU1MjJiOTA4YTAyODYxYTE3NjU2YTc4MmZmZTEwZTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTM5LDcgKzM5LDExIEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgCiAgICAgdmlydHVhbCB+RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7
Ci0gICAgCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlv
UmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9hdWRpb1JlbmRlcmluZ1BvbGljeTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEJhc2VBdWRpb0NvbnRleHQmLCBPcHRp
b25hbDxmbG9hdD4pOwogICAgIHZvaWQgY3JlYXRlRGVzdGluYXRpb24oKTsKQEAgLTU5LDYgKzYz
LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IG1f
ZGVzdGluYXRpb247CiAgICAgU3RyaW5nIG1faW5wdXREZXZpY2VJZDsKICAgICB1bnNpZ25lZCBt
X251bWJlck9mSW5wdXRDaGFubmVscyB7IDAgfTsKKworI2lmIFVTRShHU1RSRUFNRVIpCisgICAg
TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3kgbV9hdWRpb1JlbmRlcmluZ1Bv
bGljeSB7IE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVs
dCB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBlNGM0NGE0NDI2ZjNjNWY5OWRiYzQzZDBj
YjlkNTkxNjE4MTg5ZTE5Li40YjFiOGZmMTYyZmFiOWMxYzI4ZWEzOTNjMWU1OTNlMjBiZDc2YWQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTcwMDgsNiAr
NzAwOCwyNSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlcXVlc3RJbnN0YWxsTWlzc2luZ1Bs
dWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdAogCiAgICAgZG9jdW1lbnQoKS5wYWdl
KCktPmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhk
ZXRhaWxzLCBkZXNjcmlwdGlvbiwgY2FsbGJhY2spOwogfQorCitNZWRpYVBsYXllckVudW1zOjpB
dWRpb1JlbmRlcmluZ1BvbGljeSBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckF1ZGlvUmVu
ZGVyaW5nUG9saWN5KCkgY29uc3QKK3sKKyAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdl
KCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVk
aW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OworCisgICAgc3dpdGNoIChwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS5hdWRpb1JlbmRlcmluZ1BvbGljeSgpKSB7CisgICAgY2FzZSBDaHJvbWVD
bGllbnQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDsKKyAg
ICBjYXNlIENocm9tZUNsaWVudDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkludGVybmFsTWl4aW5n
OgorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6
OkludGVybmFsTWl4aW5nOworICAgIGNhc2UgQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ1Bv
bGljeTo6RXh0ZXJuYWw6CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpBdWRpb1Jl
bmRlcmluZ1BvbGljeTo6RXh0ZXJuYWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpBdWRpb1Jl
bmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQ7Cit9CiAjZW5kaWYKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpyZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZShN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpCZWhhdmlvclJlc3RyaWN0aW9ucyBtYXNrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAxNWM5YzNjMGQ4NmZhMDBkMzdiZWUyMTVm
NTRjMzE2NjE4YzE2ZGNlLi5kOTljOWZjMjJiZjZmNTkyZWZkMmVlNDQ2ZWFmMzIyOWU3NWJjMTIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNzQxLDYgKzc0MSw3
IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoR1NUUkVBTUVSKQogICAgIHZvaWQgcmVxdWVzdEluc3Rh
bGxNaXNzaW5nUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNr
JikgZmluYWw7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3kgbWVk
aWFQbGF5ZXJBdWRpb1JlbmRlcmluZ1BvbGljeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKICAg
ICB2b2lkIHBlbmRpbmdBY3Rpb25UaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAppbmRleCBjMGEwZDMwYmNmZGYzZjQxY2YwZThkN2YzZGU0YzI0YzAxZGI2Nzk4Li5kYjhj
NDBmZmVmODM5MDA0MDE4Mzc4ZGQ2ZGJkNjdkOWM5NDk1MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKQEAgLTQ5NCw2ICs0OTQsMTMgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKQogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiAvKmRldGFpbHMqLywgY29uc3QgU3RyaW5n
JiAvKmRlc2NyaXB0aW9uKi8sIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrJikgeyB9CisKKyAgICBlbnVtIGNsYXNzIEF1ZGlvUmVuZGVyaW5nUG9saWN5IHsK
KyAgICAgICAgSG9zdERlZmF1bHQsCisgICAgICAgIEludGVybmFsTWl4aW5nLAorICAgICAgICBF
eHRlcm5hbAorICAgIH07CisgICAgdmlydHVhbCBBdWRpb1JlbmRlcmluZ1BvbGljeSBhdWRpb1Jl
bmRlcmluZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIEF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0
RGVmYXVsdDsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkSW52YWxpZGF0ZURvY3Vt
ZW50TWFya2VyUmVjdHMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0dTdHJlYW1lci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFr
ZQppbmRleCA2YTJjYWUzNDIzZTNiZTE1ZmMwOTBmYmI3MmI1MWE1NmUzY2NkMWIxLi4wZjFhNDEy
MzQ0NmZmZTI1ZGE4YjEzZmNjZTdmN2I1OGRmMWQ3MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vR1N0cmVhbWVyLmNtYWtlCkBAIC05LDYgKzksNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVO
QUJMRV9XRUJfQVVESU8pCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dMVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9Hc3RBbGxvY2F0b3JGYXN0TWFsbG9jLmNwcAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAt
MjMsNiArMjQsNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVh
bWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCiAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSU9DYWxs
YmFjay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9JT0NhbGxiYWNrLmgK
aW5kZXggYTQzODkxZjBiZjQyZmQyYmRlMDZkZDAwYzkzMjRjZjFkYTIwYzViMi4uNzc2MWZhNTQ2
Mzg0NmY4MzUyZTcxYmYzMDEyMzJmMmYwY2IxMzA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9JT0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9JT0NhbGxiYWNrLmgKQEAgLTI2LDggKzI2LDExIEBACiAgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgQXVkaW9JT0NhbGxiYWNrX2gKLSNkZWZpbmUgQXVkaW9J
T0NhbGxiYWNrX2gKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRl
ICJNZWRpYVBsYXllckVudW1zLmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00Miw5ICs0NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nRGlk
Q2hhbmdlKCkgPSAwOwogCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICB2aXJ0dWFsIE1lZGlhUGxh
eWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29u
c3QgeyByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3RE
ZWZhdWx0OyB9OworI2VuZGlmCisKICAgICB2aXJ0dWFsIH5BdWRpb0lPQ2FsbGJhY2soKSA9IGRl
ZmF1bHQ7CiB9OwogCiB9IC8vIFdlYkNvcmUKIAotI2VuZGlmIC8vIEF1ZGlvSU9DYWxsYmFja19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXggMWE1NDk1ZmQ3
NjRkOWMzY2M2ZWRiNTgxZmE0ODBlYWVhZDE0NTliZi4uYzc2MjMwNTgwMjA3YWZkZjc2MTgwNWE5
Njk4YjcyMTFmODA5MTg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
LmNwcApAQCAtMjQsOSArMjQsMTEgQEAKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmgiCiAKICNpbmNsdWRlICJBdWRpb0NoYW5uZWwuaCIKKyNpbmNsdWRlICJBdWRpb0lPQ2Fs
bGJhY2suaCIKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiR1Jl
ZlB0ckdTdHJlYW1lci5oIgorI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgPGdzdC9hdWRp
by9nc3RhdWRpb2Jhc2VzaW5rLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgpAQCAtOTUsMjkgKzk3
LDM0IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvdmlk
ZXIiLCAmbV9jYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWVzIiwgZnJhbWVzVG9Q
dWxsLCBudWxscHRyKSk7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGdz
dF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b2F1ZGlvc2luayIsIG51bGxwdHIpOworICAgIGF1
dG8gYXVkaW9SZW5kZXJpbmdQb2xpY3kgPSBjYWxsYmFjay5hdWRpb1JlbmRlcmluZ1BvbGljeSgp
OworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3JlYXRlQXVkaW9TaW5rRm9y
UG9saWN5KGF1ZGlvUmVuZGVyaW5nUG9saWN5KTsKICAgICBtX2F1ZGlvU2lua0F2YWlsYWJsZSA9
IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewotICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1dG9hdWRpb3NpbmsgZWxlbWVudCIpOworICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVu
dCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZ19zaWduYWxfY29ubmVjdChhdWRp
b1NpbmsuZ2V0KCksICJjaGlsZC1hZGRlZCIsIEdfQ0FMTEJBQ0soYXV0b0F1ZGlvU2lua0NoaWxk
QWRkZWRDYWxsYmFjayksIG51bGxwdHIpOwotCi0gICAgLy8gQXV0b2F1ZGlvc2luayBkb2VzIHRo
ZSByZWFsIHNpbmsgZGV0ZWN0aW9uIGluIHRoZSBHU1RfU1RBVEVfTlVMTC0+UkVBRFkgdHJhbnNp
dGlvbgotICAgIC8vIHNvIGl0J3MgYmVzdCB0byByb2xsIGl0IHRvIFJFQURZIGFzIHNvb24gYXMg
cG9zc2libGUgdG8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtCi0gICAgLy8gYXVkaW9z
aW5rIHdhcyBsb2FkZWQgY29ycmVjdGx5LgotICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRl
Q2hhbmdlUmV0dXJuID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlvU2luay5nZXQoKSwgR1NU
X1NUQVRFX1JFQURZKTsKLSAgICBpZiAoc3RhdGVDaGFuZ2VSZXR1cm4gPT0gR1NUX1NUQVRFX0NI
QU5HRV9GQUlMVVJFKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNoYW5nZSBhdXRv
YXVkaW9zaW5rIGVsZW1lbnQgc3RhdGUiKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRl
KGF1ZGlvU2luay5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwotICAgICAgICBtX2F1ZGlvU2lua0F2
YWlsYWJsZSA9IGZhbHNlOwotICAgICAgICByZXR1cm47CisgICAgLy8gUHJvYmUgcGxhdGZvcm0g
ZWFybHkgb24gZm9yIGEgd29ya2luZyBhdWRpbyBvdXRwdXQgZGV2aWNlLiBUaGlzIGlzIG5vdCBu
ZWVkZWQgZm9yIHRoZSBXZWJLaXQKKyAgICAvLyBjdXN0b20gYXVkaW8gc2luayBiZWNhdXNlIGl0
IGRvZXNuJ3QgcmVseSBvbiBhdXRvYXVkaW9zaW5rLgorICAgIGlmICghV0VCS0lUX0lTX0FVRElP
X1NJTksoYXVkaW9TaW5rLmdldCgpKSkgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KGF1ZGlv
U2luay5nZXQoKSwgImNoaWxkLWFkZGVkIiwgR19DQUxMQkFDSyhhdXRvQXVkaW9TaW5rQ2hpbGRB
ZGRlZENhbGxiYWNrKSwgbnVsbHB0cik7CisKKyAgICAgICAgLy8gQXV0b2F1ZGlvc2luayBkb2Vz
IHRoZSByZWFsIHNpbmsgZGV0ZWN0aW9uIGluIHRoZSBHU1RfU1RBVEVfTlVMTC0+UkVBRFkgdHJh
bnNpdGlvbgorICAgICAgICAvLyBzbyBpdCdzIGJlc3QgdG8gcm9sbCBpdCB0byBSRUFEWSBhcyBz
b29uIGFzIHBvc3NpYmxlIHRvIGVuc3VyZSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybQorICAgICAg
ICAvLyBhdWRpb3Npbmsgd2FzIGxvYWRlZCBjb3JyZWN0bHkuCisgICAgICAgIEdzdFN0YXRlQ2hh
bmdlUmV0dXJuIHN0YXRlQ2hhbmdlUmV0dXJuID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlv
U2luay5nZXQoKSwgR1NUX1NUQVRFX1JFQURZKTsKKyAgICAgICAgaWYgKHN0YXRlQ2hhbmdlUmV0
dXJuID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgeworICAgICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gY2hhbmdlIGF1dG9hdWRpb3NpbmsgZWxlbWVudCBzdGF0ZSIpOworICAgICAg
ICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlvU2luay5nZXQoKSwgR1NUX1NUQVRFX05V
TEwpOworICAgICAgICAgICAgbV9hdWRpb1NpbmtBdmFpbGFibGUgPSBmYWxzZTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEdzdEVsZW1lbnQqIGF1ZGlvQ29u
dmVydCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9jb252ZXJ0IiwgbnVsbHB0cik7
CiAgICAgR3N0RWxlbWVudCogYXVkaW9SZXNhbXBsZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFr
ZSgiYXVkaW9yZXNhbXBsZSIsIG51bGxwdHIpOwotICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJ
TihtX3BpcGVsaW5lKSwgd2Via2l0QXVkaW9TcmMsIGF1ZGlvQ29udmVydCwgYXVkaW9SZXNhbXBs
ZSwgYXVkaW9TaW5rLmdldCgpLCBudWxscHRyKTsKKyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9C
SU5fQ0FTVChtX3BpcGVsaW5lKSwgd2Via2l0QXVkaW9TcmMsIGF1ZGlvQ29udmVydCwgYXVkaW9S
ZXNhbXBsZSwgYXVkaW9TaW5rLmdldCgpLCBudWxscHRyKTsKIAogICAgIC8vIExpbmsgc3JjIHBh
ZHMgZnJvbSB3ZWJraXRBdWRpb1NyYyB0byBhdWRpb0NvbnZlcnQgISBhdWRpb1Jlc2FtcGxlICEg
YXV0b2F1ZGlvc2luay4KICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbCh3ZWJraXRBdWRp
b1NyYywgInNyYyIsIGF1ZGlvQ29udmVydCwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9U
SElORyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaAppbmRleCAzYjg5ZmVi
YzYyN2E0NzY1ODZkMmMzMzhkMmYyZjU1OTc5YWM5MjAxLi5iNGExMmRkOTBlNmJhODIxODUxMzdm
ODRhMGZlZDkxZDg3NTNkMzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
LmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAi
QXVkaW9EZXN0aW5hdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyRW51bXMuaCIKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RFbGVtZW50IEdzdEVsZW1l
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKaW5kZXgg
NTRiMzlmNDVhNWJhNzAwZWUwZTliYWExNjUzNmQyMTg4NGVkMTBmOC4uNzAwZGNhMGM0NjYwOTk0
YjE4YzIwOGM1ZjRlNDU0NTdiNTE2YzFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVBy
b3ZpZGVyR1N0cmVhbWVyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIEF1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXI6On5BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKCkKICAgICBnX29iamVj
dF91bnJlZihtX2Zyb250UmlnaHRBZGFwdGVyKTsKIH0KIAotdm9pZCBBdWRpb1NvdXJjZVByb3Zp
ZGVyR1N0cmVhbWVyOjpjb25maWd1cmVBdWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0JpbiwgR3N0
RWxlbWVudCogdGVlUHJlZGVjZXNzb3IpCit2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFt
ZXI6OmNvbmZpZ3VyZUF1ZGlvQmluKEdzdEVsZW1lbnQqIGF1ZGlvQmluLCBHc3RFbGVtZW50KiBh
dWRpb1NpbmspCiB7CiAgICAgbV9hdWRpb1NpbmtCaW4gPSBhdWRpb0JpbjsKIApAQCAtMTUyLDI2
ICsxNTIsMTYgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpjb25maWd1cmVB
dWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0JpbiwgR3N0RWwKICAgICBHc3RFbGVtZW50KiBhdWRp
b1Jlc2FtcGxlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb3Jlc2FtcGxlIiwgbnVs
bHB0cik7CiAgICAgR3N0RWxlbWVudCogYXVkaW9SZXNhbXBsZTIgPSBnc3RfZWxlbWVudF9mYWN0
b3J5X21ha2UoImF1ZGlvcmVzYW1wbGUiLCBudWxscHRyKTsKICAgICBHc3RFbGVtZW50KiB2b2x1
bWVFbGVtZW50ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJ2b2x1bWUiLCAidm9sdW1lIik7
Ci0gICAgR3N0RWxlbWVudCogYXVkaW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJh
dXRvYXVkaW9zaW5rIiwgbnVsbHB0cik7CiAKICAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4o
bV9hdWRpb1NpbmtCaW4uZ2V0KCkpLCBhdWRpb1RlZSwgYXVkaW9RdWV1ZSwgYXVkaW9Db252ZXJ0
LCBhdWRpb1Jlc2FtcGxlLCB2b2x1bWVFbGVtZW50LCBhdWRpb0NvbnZlcnQyLCBhdWRpb1Jlc2Ft
cGxlMiwgYXVkaW9TaW5rLCBudWxscHRyKTsKIAotICAgIC8vIEluIGNhc2VzIHdoZXJlIHRoZSBh
dWRpby1zaW5rIG5lZWRzIGVsZW1lbnRzIGJlZm9yZSB0ZWUgKHN1Y2gKLSAgICAvLyBhcyBzY2Fs
ZXRlbXBvKSB0aGV5IG5lZWQgdG8gYmUgbGlua2VkIHRvIHRlZSB3aGljaCBpbiB0aGlzIGNhc2UK
LSAgICAvLyBkb2Vzbid0IG5lZWQgYSBnaG9zdCBwYWQuIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUg
dGVlUHJlZGVjZXNzb3IKLSAgICAvLyBjaGFpbiBhbHJlYWR5IGNvbmZpZ3VyZWQgYSBnaG9zdCBw
YWQuCi0gICAgaWYgKHRlZVByZWRlY2Vzc29yKQotICAgICAgICBnc3RfZWxlbWVudF9saW5rX3Bh
ZHNfZnVsbCh0ZWVQcmVkZWNlc3NvciwgInNyYyIsIGF1ZGlvVGVlLCAic2luayIsIEdTVF9QQURf
TElOS19DSEVDS19OT1RISU5HKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gQWRkIGEgZ2hvc3Rw
YWQgdG8gdGhlIGJpbiBzbyBpdCBjYW4gcHJveHkgdG8gdGVlLgotICAgICAgICBHUmVmUHRyPEdz
dFBhZD4gYXVkaW9UZWVTaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNf
cGFkKGF1ZGlvVGVlLCAic2luayIpKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfYWRkX3BhZChtX2F1
ZGlvU2lua0Jpbi5nZXQoKSwgZ3N0X2dob3N0X3BhZF9uZXcoInNpbmsiLCBhdWRpb1RlZVNpbmtQ
YWQuZ2V0KCkpKTsKLSAgICB9CisgICAgLy8gQWRkIGEgZ2hvc3RwYWQgdG8gdGhlIGJpbiBzbyBp
dCBjYW4gcHJveHkgdG8gdGVlLgorICAgIEdSZWZQdHI8R3N0UGFkPiBhdWRpb1RlZVNpbmtQYWQg
PSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoYXVkaW9UZWUsICJzaW5rIikp
OworICAgIGdzdF9lbGVtZW50X2FkZF9wYWQobV9hdWRpb1NpbmtCaW4uZ2V0KCksIGdzdF9naG9z
dF9wYWRfbmV3KCJzaW5rIiwgYXVkaW9UZWVTaW5rUGFkLmdldCgpKSk7CiAKLSAgICAvLyBMaW5r
IGEgbmV3IHNyYyBwYWQgZnJvbSB0ZWUgdG8gcXVldWUgISBhdWRpb2NvbnZlcnQgIQotICAgIC8v
IGF1ZGlvcmVzYW1wbGUgISB2b2x1bWUgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEK
LSAgICAvLyBhdXRvYXVkaW9zaW5rLiBUaGUgYXVkaW9yZXNhbXBsZSBhbmQgYXVkaW9jb252ZXJ0
IGFyZSBuZWVkZWQgdG8KLSAgICAvLyBlbnN1cmUgdGhlIGF1ZGlvIHNpbmsgcmVjZWl2ZXMgYnVm
ZmVycyBpbiB0aGUgY29ycmVjdCBmb3JtYXQuCisgICAgLy8gTGluayBhIG5ldyBzcmMgcGFkIGZy
b20gdGVlIHRvIHF1ZXVlICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIHZvbHVtZSAh
IGF1ZGlvY29udmVydCAhCisgICAgLy8gYXVkaW9yZXNhbXBsZSAhIGF1ZGlvc2luay4gVGhlIGF1
ZGlvcmVzYW1wbGUgYW5kIGF1ZGlvY29udmVydCBhcmUgbmVlZGVkIHRvIGVuc3VyZSB0aGUgYXVk
aW8KKyAgICAvLyBzaW5rIHJlY2VpdmVzIGJ1ZmZlcnMgaW4gdGhlIGNvcnJlY3QgZm9ybWF0Lgog
ICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkc19mdWxsKGF1ZGlvVGVlLCAic3JjXyV1IiwgYXVkaW9R
dWV1ZSwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CiAgICAgZ3N0X2VsZW1l
bnRfbGlua19wYWRzX2Z1bGwoYXVkaW9RdWV1ZSwgInNyYyIsIGF1ZGlvQ29udmVydCwgInNpbmsi
LCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CiAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRz
X2Z1bGwoYXVkaW9Db252ZXJ0LCAic3JjIiwgYXVkaW9SZXNhbXBsZSwgInNpbmsiLCBHU1RfUEFE
X0xJTktfQ0hFQ0tfTk9USElORyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3Ry
ZWFtZXIuaAppbmRleCBkNmJhMjJhMzExZTU5ZjczYTgxNzI4ZWRmNDQ1MTdkYWRkNTNlZmIwLi5l
NGY2NTEyZjEyYTAzZjEzOWM0MzdkYzIwZDcxNzI0YjFkNGIyMzcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIoKTsKICAgICB+QXVkaW9Tb3VyY2VQcm92
aWRlckdTdHJlYW1lcigpOwogCi0gICAgdm9pZCBjb25maWd1cmVBdWRpb0JpbihHc3RFbGVtZW50
KiBhdWRpb0JpbiwgR3N0RWxlbWVudCogdGVlUHJlZGVjZXNzb3IpOworICAgIHZvaWQgY29uZmln
dXJlQXVkaW9CaW4oR3N0RWxlbWVudCogYXVkaW9CaW4sIEdzdEVsZW1lbnQqIGF1ZGlvU2luayk7
CiAKICAgICB2b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q2xpZW50KEF1ZGlvU291cmNlUHJvdmlkZXJDbGll
bnQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcAppbmRleCBlZDZhNGVmMTc3Y2ZjZjc4Yzk4YzkzZTc1YmJjOGI4YzZmYTc2
NmUxLi5jNzFkNzMyM2NmMjc1Mjc1MTFkYzE0ODZmNmYxODZiYTczZmZiNmI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xNDU1
LDYgKzE0NTUsMTEgQEAgdm9pZCBNZWRpYVBsYXllcjo6c2ltdWxhdGVBdWRpb0ludGVycnVwdGlv
bigpCiAKICAgICBtX3ByaXZhdGUtPnNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oKTsKIH0KKwor
TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3kgTWVkaWFQbGF5ZXI6OmF1ZGlv
UmVuZGVyaW5nUG9saWN5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5
ZXJBdWRpb1JlbmRlcmluZ1BvbGljeSgpOworfQogI2VuZGlmCiAKIHZvaWQgTWVkaWFQbGF5ZXI6
OmJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCkKQEAgLTE2OTAsNiArMTY5NSwyMSBAQCBTdHJpbmcg
Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSBl
bnVtZXJhdGlvblZhbHVlKQogICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90Pihl
bnVtZXJhdGlvblZhbHVlKV07CiB9CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorU3RyaW5nIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9s
aWN5IGVudW1lcmF0aW9uVmFsdWUpCit7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gdmFsdWVzW10gPSB7CisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJI
b3N0RGVmYXVsdCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiSW50ZXJuYWxN
aXhpbmciKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkV4dGVybmFsIiksCisg
ICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVy
RW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdCksICJNZWRpYVBsYXllckVu
dW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQgaXMgbm90IDAgYXMgZXhwZWN0
ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJF
bnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkludGVybmFsTWl4aW5nKSA9PSAxLCAiTWVkaWFQ
bGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkludGVybmFsTWl4aW5nIGlzIG5vdCAx
IGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1l
ZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpFeHRlcm5hbCkgPT0gMiwgIk1l
ZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpFeHRlcm5hbCBpcyBub3QgMiBh
cyBleHBlY3RlZCIpOworICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9u
VmFsdWUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKKyAgICByZXR1cm4gdmFsdWVzW3N0
YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldOworfQorI2VuZGlmCiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
aW5kZXggNzdkNjZiNWE4ZGM2MzY0MmY0ZjU4N2Q4MmMzZDljMWQwOWE5OGM2Yy4uNzFkM2NmNTRm
OTNkM2UxZmRmMDc4NTQ4YjQ3ZTAyOTViMmIyYzRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0yNjEsNiArMjYxLDcgQEAgcHVibGlj
OgogCiAjaWYgVVNFKEdTVFJFQU1FUikKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXllclJl
cXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYpIHsgfTsKKyAgICB2aXJ0dWFsIE1l
ZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5IG1lZGlhUGxheWVyQXVkaW9SZW5k
ZXJpbmdQb2xpY3koKSBjb25zdCB7IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRl
cmluZ1BvbGljeTo6SG9zdERlZmF1bHQ7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIG1l
ZGlhUGxheWVyU2hvdWxkRGlzYWJsZVNsZWVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAg
LTI3Niw2ICsyNzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCB2b2lkKiBtZWRpYVBs
YXllckxvZ0lkZW50aWZpZXIoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBjb25z
dCBMb2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgPSAwOwogI2VuZGlmCisKKyAgICB2aXJ0dWFs
IGJvb2wgbWVkaWFQbGF5ZXJTaG91bGRJbnRlcm5hbGx5UmVuZGVyQXVkaW8oKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiB9OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVBsYXllciA6IHB1
YmxpYyBNZWRpYVBsYXllckVudW1zLCBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVBsYXllcj4gewpA
QCAtNjIzLDYgKzYyNiw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAgdm9p
ZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQ
bHVnaW5zQ2FsbGJhY2smIGNhbGxiYWNrKSB7IGNsaWVudCgpLnJlcXVlc3RJbnN0YWxsTWlzc2lu
Z1BsdWdpbnMoZGV0YWlscywgZGVzY3JpcHRpb24sIGNhbGxiYWNrKTsgfQorICAgIE1lZGlhUGxh
eWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29u
c3Q7CiAjZW5kaWYKIAogICAgIGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogcGxh
eWVyUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCmluZGV4
IGEwMDE1OTcxYTgyMmI0NmY3YWNjMWI4ODAzMDM4YTI3MWE0NjcxZDkuLjQ3MzQ3ZThlYjYwZmI5
NTVkZTJhNzczMTNmODZjMGViZTQ4YTkwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKQEAgLTEwNiw2ICsxMDYsMTMgQEAg
cHVibGljOgogICAgICAgICBUYXJnZXRUeXBlVFZPdXQKICAgICB9OwogCisjaWYgVVNFKEdTVFJF
QU1FUikKKyAgICBlbnVtIGNsYXNzIEF1ZGlvUmVuZGVyaW5nUG9saWN5IDogdWludDhfdCB7Cisg
ICAgICAgIEhvc3REZWZhdWx0LAorICAgICAgICBJbnRlcm5hbE1peGluZywKKyAgICAgICAgRXh0
ZXJuYWwKKyAgICB9OworI2VuZGlmCiB9OwogCiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9T
dHJpbmcoTWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSk7CkBAIC0xMTQsNiArMTIxLDkgQEAg
U3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyRW51bXM6OlByZWxv
YWQpOwogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyRW51bXM6
OlN1cHBvcnRzVHlwZSk7CiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQ
bGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5KTsKIAorI2lmIFVTRShHU1RSRUFNRVIpCitTdHJp
bmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5k
ZXJpbmdQb2xpY3kpOworI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIApAQCAtMjQw
LDQgKzI1MCwxNCBAQCB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgID47CiB9OwogCisj
aWYgVVNFKEdTVFJFQU1FUikKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k+IHsKKyAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QXVk
aW9SZW5kZXJpbmdQb2xpY3kgcG9saWN5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRF
bnVtZXJhdGlvblRvU3RyaW5nKHBvbGljeSk7CisgICAgfQorfTsKKyNlbmRpZgorCiB9OyAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTc2NmQ5M2IxMWQ4MWNiZDRlYzhiNGQ0ODYwYWQ1OTZkNGYyZTJjMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJBdWRpb01peGVyLmNwcApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBJZ2FsaWEgUy5MCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdTdHJlYW1lckF1
ZGlvTWl4ZXIuaCIKKworI2lmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlICJHU3RyZWFtZXJD
b21tb24uaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDKHdlYmtpdF9tZWRpYV9nc3RfYXVk
aW9fbWl4ZXJfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X21lZGlhX2dz
dF9hdWRpb19taXhlcl9kZWJ1ZworCitib29sIEdTdHJlYW1lckF1ZGlvTWl4ZXI6OmlzQWxsb3dl
ZCgpCit7CisgICAgcmV0dXJuIHdlYmtpdEdzdENoZWNrVmVyc2lvbigxLCAxNywgMikgJiYgaXNH
U3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoImludGVyIik7Cit9CisKK0dTdHJlYW1lckF1ZGlvTWl4
ZXImIEdTdHJlYW1lckF1ZGlvTWl4ZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEdTdHJlYW1lckF1ZGlvTWl4ZXI+IHNoYXJlZEluc3RhbmNlOworICAgIHJldHVy
biBzaGFyZWRJbnN0YW5jZTsKK30KKworR1N0cmVhbWVyQXVkaW9NaXhlcjo6R1N0cmVhbWVyQXVk
aW9NaXhlcigpCit7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X21lZGlhX2dz
dF9hdWRpb19taXhlcl9kZWJ1ZywgIndlYmtpdGF1ZGlvbWl4ZXIiLCAwLCAiV2ViS2l0IEdTdHJl
YW1lciBhdWRpbyBtaXhlciIpOworICAgIG1fcGlwZWxpbmUgPSBnc3RfZWxlbWVudF9mYWN0b3J5
X21ha2UoInBpcGVsaW5lIiwgIndlYmtpdGF1ZGlvbWl4ZXIiKTsKKyAgICBjb25uZWN0U2ltcGxl
QnVzTWVzc2FnZUNhbGxiYWNrKG1fcGlwZWxpbmUuZ2V0KCkpOworCisgICAgbV9taXhlciA9IGdz
dF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9taXhlciIsIG51bGxwdHIpOworICAgIEdzdEVs
ZW1lbnQqIGF1ZGlvU2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b2F1ZGlvc2lu
ayIsIG51bGxwdHIpOworCisgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOX0NBU1QobV9waXBl
bGluZS5nZXQoKSksIG1fbWl4ZXIuZ2V0KCksIGF1ZGlvU2luaywgbnVsbHB0cik7CisgICAgZ3N0
X2VsZW1lbnRfbGluayhtX21peGVyLmdldCgpLCBhdWRpb1NpbmspOworICAgIGdzdF9lbGVtZW50
X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUkVBRFkpOworfQorCitHU3Ry
ZWFtZXJBdWRpb01peGVyOjp+R1N0cmVhbWVyQXVkaW9NaXhlcigpCit7CisgICAgZ3N0X2VsZW1l
bnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKK30KKwordm9p
ZCBHU3RyZWFtZXJBdWRpb01peGVyOjplbnN1cmVTdGF0ZShHc3RTdGF0ZUNoYW5nZSBzdGF0ZUNo
YW5nZSkKK3sKKyNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAxNCwgMCkKKyAgICBHU1RfREVCVUdf
T0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJIYW5kbGluZyAlcyB0cmFuc2l0aW9uICgldSBtaXhl
ciBwYWRzKSIsIGdzdF9zdGF0ZV9jaGFuZ2VfZ2V0X25hbWUoc3RhdGVDaGFuZ2UpLCBtX21peGVy
LT5udW1zaW5rcGFkcyk7CisjZW5kaWYKKyAgICBzd2l0Y2ggKHN0YXRlQ2hhbmdlKSB7CisgICAg
Y2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BBVVNFRDoKKyAgICAgICAgZ3N0X2VsZW1l
bnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QQVVTRUQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1BMQVlJTkc6Cisg
ICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVf
UExBWUlORyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QTEFZ
SU5HX1RPX1BBVVNFRDoKKyAgICAgICAgaWYgKG1fbWl4ZXItPm51bXNpbmtwYWRzID09IDEpCisg
ICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NU
QVRFX1BBVVNFRCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9Q
QVVTRURfVE9fUkVBRFk6CisgICAgICAgIGlmIChtX21peGVyLT5udW1zaW5rcGFkcyA9PSAxKQor
ICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9T
VEFURV9SRUFEWSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9S
RUFEWV9UT19OVUxMOgorICAgICAgICBpZiAobV9taXhlci0+bnVtc2lua3BhZHMgPT0gMSkKKyAg
ICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RB
VEVfTlVMTCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKworR1JlZlB0cjxHc3RQYWQ+IEdTdHJlYW1lckF1ZGlvTWl4ZXI6OnJlZ2lzdGVy
UHJvZHVjZXIoR3N0RWxlbWVudCogaW50ZXJhdWRpb1NpbmspCit7CisgICAgR3N0RWxlbWVudCog
c3JjID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJpbnRlcmF1ZGlvc3JjIiwgbnVsbHB0cik7
CisgICAgZ19vYmplY3Rfc2V0KHNyYywgImNoYW5uZWwiLCBHU1RfRUxFTUVOVF9OQU1FKGludGVy
YXVkaW9TaW5rKSwgbnVsbHB0cik7CisgICAgZ19vYmplY3Rfc2V0KGludGVyYXVkaW9TaW5rLCAi
Y2hhbm5lbCIsIEdTVF9FTEVNRU5UX05BTUUoaW50ZXJhdWRpb1NpbmspLCBudWxscHRyKTsKKwor
ICAgIGdzdF9iaW5fYWRkKEdTVF9CSU5fQ0FTVChtX3BpcGVsaW5lLmdldCgpKSwgc3JjKTsKKwor
ICAgIGJvb2wgc2hvdWxkU3RhcnQgPSAhbV9taXhlci0+bnVtc2lua3BhZHM7CisKKyAgICBhdXRv
IG1peGVyUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9yZXF1ZXN0X3BhZChtX21peGVy
LmdldCgpLCAic2lua18ldSIpKTsKKyAgICBhdXRvIHNyY1BhZCA9IGFkb3B0R1JlZihnc3RfZWxl
bWVudF9nZXRfc3RhdGljX3BhZChzcmMsICJzcmMiKSk7CisgICAgZ3N0X3BhZF9saW5rKHNyY1Bh
ZC5nZXQoKSwgbWl4ZXJQYWQuZ2V0KCkpOworCisgICAgaWYgKHNob3VsZFN0YXJ0KQorICAgICAg
ICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1JFQURZ
KTsKKyAgICBlbHNlCisgICAgICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQo
c3JjKTsKKworICAgIEdTVF9ERUJVR19PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIlJlZ2lzdGVy
ZWQgYXVkaW8gcHJvZHVjZXIgJSIgR1NUX1BUUl9GT1JNQVQsIG1peGVyUGFkLmdldCgpKTsKKyAg
ICBHU1RfREVCVUdfQklOX1RPX0RPVF9GSUxFX1dJVEhfVFMoR1NUX0JJTl9DQVNUKG1fcGlwZWxp
bmUuZ2V0KCkpLCBHU1RfREVCVUdfR1JBUEhfU0hPV19BTEwsICJhdWRpby1taXhlci1hZnRlci1w
cm9kdWNlci1yZWdpc3RyYXRpb24iKTsKKyAgICByZXR1cm4gbWl4ZXJQYWQ7Cit9CisKK3ZvaWQg
R1N0cmVhbWVyQXVkaW9NaXhlcjo6dW5yZWdpc3RlclByb2R1Y2VyKGNvbnN0IEdSZWZQdHI8R3N0
UGFkPiYgbWl4ZXJQYWQpCit7CisgICAgR1NUX0RFQlVHX09CSkVDVChtX3BpcGVsaW5lLmdldCgp
LCAiVW5yZWdpc3RlcmluZyBhdWRpbyBwcm9kdWNlciAlIiBHU1RfUFRSX0ZPUk1BVCwgbWl4ZXJQ
YWQuZ2V0KCkpOworCisgICAgYXV0byBwZWVyID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3BlZXIo
bWl4ZXJQYWQuZ2V0KCkpKTsKKyAgICBhdXRvIGludGVyYXVkaW9TcmMgPSBhZG9wdEdSZWYoZ3N0
X3BhZF9nZXRfcGFyZW50X2VsZW1lbnQocGVlci5nZXQoKSkpOworICAgIEdTVF9MT0dfT0JKRUNU
KG1fcGlwZWxpbmUuZ2V0KCksICJpbnRlcmF1ZGlvc3JjOiAlIiBHU1RfUFRSX0ZPUk1BVCwgaW50
ZXJhdWRpb1NyYy5nZXQoKSk7CisKKyAgICBnc3RfZWxlbWVudF9zZXRfbG9ja2VkX3N0YXRlKGlu
dGVyYXVkaW9TcmMuZ2V0KCksIHRydWUpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShpbnRl
cmF1ZGlvU3JjLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CisKKyAgICBnc3RfcGFkX3VubGluayhw
ZWVyLmdldCgpLCBtaXhlclBhZC5nZXQoKSk7CisgICAgZ3N0X2VsZW1lbnRfcmVsZWFzZV9yZXF1
ZXN0X3BhZChtX21peGVyLmdldCgpLCBtaXhlclBhZC5nZXQoKSk7CisKKyAgICBnc3RfYmluX3Jl
bW92ZShHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIGludGVyYXVkaW9TcmMuZ2V0KCkp
OworCisgICAgaWYgKCFtX21peGVyLT5udW1zaW5rcGFkcykKKyAgICAgICAgZ3N0X2VsZW1lbnRf
c2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKKworICAgIEdTVF9E
RUJVR19CSU5fVE9fRE9UX0ZJTEVfV0lUSF9UUyhHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQo
KSksIEdTVF9ERUJVR19HUkFQSF9TSE9XX0FMTCwgImF1ZGlvLW1peGVyLWFmdGVyLXByb2R1Y2Vy
LXVucmVnaXN0cmF0aW9uIik7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRp
b01peGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmMTRmZjFmNjk2ODBlMjQ1ZDQ4ZjNjYzY3NDhhODhlNzhh
ZTIyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb01peGVyLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoR1NU
UkVBTUVSKQorCisjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgorI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1N0cmVhbWVyQXVkaW9N
aXhlciB7CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEdTdHJlYW1lckF1ZGlvTWl4ZXI+Owor
cHVibGljOgorICAgIHN0YXRpYyBib29sIGlzQWxsb3dlZCgpOworICAgIHN0YXRpYyBHU3RyZWFt
ZXJBdWRpb01peGVyJiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQgZW5zdXJlU3RhdGUoR3N0U3Rh
dGVDaGFuZ2UpOworICAgIEdSZWZQdHI8R3N0UGFkPiByZWdpc3RlclByb2R1Y2VyKEdzdEVsZW1l
bnQqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJQcm9kdWNlcihjb25zdCBHUmVmUHRyPEdzdFBhZD4m
KTsKKworcHJvdGVjdGVkOgorICAgIEdTdHJlYW1lckF1ZGlvTWl4ZXIoKTsKKyAgICB+R1N0cmVh
bWVyQXVkaW9NaXhlcigpOworCitwcml2YXRlOgorICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9w
aXBlbGluZTsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fbWl4ZXI7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1v
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcAppbmRleCBkYzcwMTZkMDgwNGU3N2FhNDg3ZTExOGJjNjJmM2ZhNTk0NTI3
MzIwLi42N2YyYjA5ZGI1OGYxOTkzYzIwMThmNmFlZDkyYmRmZWMwMjdjMGM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2lmIFVTRShHU1RSRUFNRVIp
CiAKICNpbmNsdWRlICJHTFZpZGVvU2lua0dTdHJlYW1lci5oIgorI2luY2x1ZGUgIkdTdHJlYW1l
ckF1ZGlvTWl4ZXIuaCIKICNpbmNsdWRlICJHc3RBbGxvY2F0b3JGYXN0TWFsbG9jLmgiCiAjaW5j
bHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtNTYsNiArNTcs
NyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9T
aW5rR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgiCiAj
ZW5kaWYKIApAQCAtMzIyLDYgKzMyNCw3IEBAIGJvb2wgaW5pdGlhbGl6ZUdTdHJlYW1lckFuZFJl
Z2lzdGVyV2ViS2l0RWxlbWVudHMoKQogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAgICAgICAgIGdz
dF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXRnbHZpZGVvc2luayIsIEdTVF9SQU5LX1BSSU1B
UlksIFdFQktJVF9UWVBFX0dMX1ZJREVPX1NJTkspOwogI2VuZGlmCisgICAgICAgIGdzdF9lbGVt
ZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXRhdWRpb3NpbmsiLCBHU1RfUkFOS19NQVJHSU5BTCwgV0VC
S0lUX1RZUEVfQVVESU9fU0lOSyk7CiAjZW5kaWYKICAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTQyMCw2ICs0MjMsMzMgQEAgYm9vbCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25z
dCBjaGFyKiBuYW1lKQogICAgIHJldHVybiBwbHVnaW47CiB9CiAKK0dzdEVsZW1lbnQqIGNyZWF0
ZUF1ZGlvU2lua0ZvclBvbGljeShNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGlj
eSBhdWRpb1JlbmRlcmluZ1BvbGljeSkKK3sKKyAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBu
dWxscHRyOworICAgIHN3aXRjaCAoYXVkaW9SZW5kZXJpbmdQb2xpY3kpIHsKKyAgICBjYXNlIE1l
ZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpFeHRlcm5hbDoKKyAgICAgICAg
YXVkaW9TaW5rID0gd2Via2l0QXVkaW9TaW5rTmV3KGZhbHNlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SW50ZXJuYWxN
aXhpbmc6CisgICAgICAgIGlmIChHU3RyZWFtZXJBdWRpb01peGVyOjppc0FsbG93ZWQoKSkgewor
ICAgICAgICAgICAgYXVkaW9TaW5rID0gd2Via2l0QXVkaW9TaW5rTmV3KHRydWUpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgR1NUX1dBUk5JTkcoIkludGVybmFsIGF1
ZGlvIG1peGluZyByZXF1ZXN0IGNhbm5vdCBiZSBmdWxmaWxsZWQuIEZhbGxpbmcgYmFjayB0byBh
dXRvYXVkaW9zaW5rIik7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgTWVkaWFQbGF5
ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OgorICAgIGRlZmF1bHQ6
CisgICAgICAgIGF1ZGlvU2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b2F1ZGlv
c2luayIsIG51bGxwdHIpOworICAgICAgICBpZiAoIWF1ZGlvU2luaykgeworICAgICAgICAgICAg
R1NUX1dBUk5JTkcoIkdTdHJlYW1lcidzIGF1dG9hdWRpb3Npbmsgbm90IGZvdW5kLiBQbGVhc2Ug
Y2hlY2sgeW91ciBnc3QtcGx1Z2lucy1nb29kIGluc3RhbGxhdGlvbiIpOworICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
cmV0dXJuIGF1ZGlvU2luazsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uaAppbmRleCAyZDU2OTJjOWRiMWVkYjM0MjAxZTk4YTY5OWQwY2Vm
NGE3ZDg1MWY1Li5lOTRkYWE5YjZkMTM4Y2QzOTIxZDllMGM4ZTE5NDUxZTY0NDkxOTcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5oCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiRmxvYXRT
aXplLmgiCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkdVbmlxdWVQ
dHJHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllckVudW1zLmgiCiAjaW5jbHVkZSA8
Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby1mb3JtYXQuaD4KICNpbmNsdWRl
IDxnc3QvdmlkZW8vdmlkZW8taW5mby5oPgpAQCAtMjMyLDYgKzIzMyw4IEBAIGVudW0gY2xhc3Mg
R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0geyBJbXhWUFUsIFZpZGVvNExpbnV4LCBPcGVuTUFYIH07
CiAKIGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSk7CiAK
K0dzdEVsZW1lbnQqIGNyZWF0ZUF1ZGlvU2lua0ZvclBvbGljeShNZWRpYVBsYXllckVudW1zOjpB
dWRpb1JlbmRlcmluZ1BvbGljeSk7CisKIH0KIAogI2lmbmRlZiBHU1RfQlVGRkVSX0RUU19PUl9Q
VFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5k
ZXggZGViYmI3YjUxNDYzMGRhMTNjYzI0MWFjNzg2Mjc1N2JkYmZlYjhlNS4uMmQ3MDIzMjE5ZjM4
ZWViNzM0MDEzNDY1NTFkMDM2NmNhNzkwNmJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUo
VklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
KyNpbmNsdWRlICJHU3RyZWFtZXJBdWRpb01peGVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29t
bW9uLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmgiCiAjaW5jbHVkZSAi
SFRUUEhlYWRlck5hbWVzLmgiCkBAIC00Myw2ICs0NCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiVmlkZW9TaW5rR1N0
cmVhbWVyLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaCIKQEAgLTIzNiw5ICsyMzgsOSBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgIGlmIChXRUJLSVRfSVNfV0VC
X1NSQyhtX3NvdXJjZS5nZXQoKSkgJiYgR1NUX09CSkVDVF9QQVJFTlQobV9zb3VyY2UuZ2V0KCkp
KQogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoR1NUX0VMRU1F
TlRfUEFSRU5UKG1fc291cmNlLmdldCgpKSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4odXJp
RGVjb2RlQmluRWxlbWVudEFkZGVkQ2FsbGJhY2spLCB0aGlzKTsKIAotICAgIGlmIChtX2F1dG9B
dWRpb1NpbmspIHsKLSAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5j
KEdfT0JKRUNUKG1fYXV0b0F1ZGlvU2luay5nZXQoKSksCi0gICAgICAgICAgICByZWludGVycHJl
dF9jYXN0PGdwb2ludGVyPihzZXRBdWRpb1N0cmVhbVByb3BlcnRpZXNDYWxsYmFjayksIHRoaXMp
OworICAgIGlmIChtX3BsYXllci0+YXVkaW9SZW5kZXJpbmdQb2xpY3koKSA9PSBNZWRpYVBsYXll
ckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQpIHsKKyAgICAgICAgYXV0
byogc2luayA9IGF1ZGlvU2luaygpOworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25u
ZWN0X2J5X2Z1bmMoR19PQkpFQ1Qoc2luayksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHNl
dEF1ZGlvU3RyZWFtUHJvcGVydGllc0NhbGxiYWNrKSwgdGhpcyk7CiAgICAgfQogCiAgICAgbV9y
ZWFkeVRpbWVySGFuZGxlci5zdG9wKCk7CkBAIC01MTgsMTcgKzUyMCwxNiBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2Vlayhjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSkK
IAogICAgIC8vIEF2b2lkIHVzZWxlc3Mgc2Vla2luZy4KICAgICBpZiAobWVkaWFUaW1lID09IGN1
cnJlbnRNZWRpYVRpbWUoKSkgewotICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCks
ICJbU2Vla10gc2VlayB0byBFT1MgcG9zaXRpb24gdW5oYW5kbGVkIik7CisgICAgICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIltTZWVrXSBBbHJlYWR5IGF0IHJlcXVlc3RlZCBwb3Np
dGlvbi4gQWJvcnRpbmcuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBNZWRpYVRp
bWUgdGltZSA9IHN0ZDo6bWluKG1lZGlhVGltZSwgZHVyYXRpb25NZWRpYVRpbWUoKSk7Ci0KICAg
ICBpZiAobV9pc0xpdmVTdHJlYW0pIHsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGlu
ZSgpLCAiW1NlZWtdIExpdmUgc3RyZWFtIHNlZWsgdW5oYW5kbGVkIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyAgICBNZWRpYVRpbWUgdGltZSA9IHN0ZDo6bWluKG1lZGlhVGltZSwgZHVy
YXRpb25NZWRpYVRpbWUoKSk7CiAgICAgR1NUX0lORk9fT0JKRUNUKHBpcGVsaW5lKCksICJbU2Vl
a10gc2Vla2luZyB0byAlcyIsIHRvU3RyaW5nKHRpbWUpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAg
aWYgKG1faXNTZWVraW5nKSB7CkBAIC0xMDAwLDIxICsxMDAxLDE3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRQbGF5YmluVVJMKGNvbnN0IFVSTCYgdXJsKQogCiBzdGF0
aWMgdm9pZCBzZXRTeW5jT25DbG9jayhHc3RFbGVtZW50ICplbGVtZW50LCBib29sIHN5bmMpCiB7
Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIUdTVF9JU19C
SU4oZWxlbWVudCkpIHsKLSAgICAgICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQsICJzeW5jIiwgc3lu
YywgTlVMTCk7CisgICAgICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAic3luYyIsIHN5bmMsIG51
bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR3N0SXRlcmF0b3IqIGl0ID0g
Z3N0X2Jpbl9pdGVyYXRlX3NpbmtzKEdTVF9CSU4oZWxlbWVudCkpOwotICAgIHdoaWxlIChnc3Rf
aXRlcmF0b3JfZm9yZWFjaChpdCwgKEdzdEl0ZXJhdG9yRm9yZWFjaEZ1bmN0aW9uKShbXShjb25z
dCBHVmFsdWUqIGl0ZW0sIHZvaWQqIHN5bmNQdHIpIHsKKyAgICBHVW5pcXVlUHRyPEdzdEl0ZXJh
dG9yPiBpdGVyYXRvcihnc3RfYmluX2l0ZXJhdGVfc2lua3MoR1NUX0JJTl9DQVNUKGVsZW1lbnQp
KSk7CisgICAgd2hpbGUgKGdzdF9pdGVyYXRvcl9mb3JlYWNoKGl0ZXJhdG9yLmdldCgpLCBzdGF0
aWNfY2FzdDxHc3RJdGVyYXRvckZvcmVhY2hGdW5jdGlvbj4oW10oY29uc3QgR1ZhbHVlKiBpdGVt
LCB2b2lkKiBzeW5jUHRyKSB7CiAgICAgICAgIGJvb2wqIHN5bmMgPSBzdGF0aWNfY2FzdDxib29s
Kj4oc3luY1B0cik7Ci0gICAgICAgIHNldFN5bmNPbkNsb2NrKEdTVF9FTEVNRU5UKGdfdmFsdWVf
Z2V0X29iamVjdChpdGVtKSksICpzeW5jKTsKKyAgICAgICAgc2V0U3luY09uQ2xvY2soR1NUX0VM
RU1FTlRfQ0FTVChnX3ZhbHVlX2dldF9vYmplY3QoaXRlbSkpLCAqc3luYyk7CiAgICAgfSksICZz
eW5jKSA9PSBHU1RfSVRFUkFUT1JfUkVTWU5DKQotICAgICAgICBnc3RfaXRlcmF0b3JfcmVzeW5j
KGl0KTsKLSAgICBnc3RfaXRlcmF0b3JfZnJlZShpdCk7CisgICAgICAgIGdzdF9pdGVyYXRvcl9y
ZXN5bmMoaXRlcmF0b3IuZ2V0KCkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6c3luY09uQ2xvY2soYm9vbCBzeW5jKQpAQCAtMTM1MywyNiArMTM1MCwzMSBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6
TmV0d29ya1N0YXRlIG5ldHdvcgogCiBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZUF1ZGlvU2luaygpCiB7Ci0gICAgbV9hdXRvQXVkaW9TaW5rID0gZ3N0X2Vs
ZW1lbnRfZmFjdG9yeV9tYWtlKCJhdXRvYXVkaW9zaW5rIiwgbnVsbHB0cik7Ci0gICAgaWYgKCFt
X2F1dG9BdWRpb1NpbmspIHsKLSAgICAgICAgR1NUX1dBUk5JTkcoIkdTdHJlYW1lcidzIGF1dG9h
dWRpb3Npbmsgbm90IGZvdW5kLiBQbGVhc2UgY2hlY2sgeW91ciBnc3QtcGx1Z2lucy1nb29kIGlu
c3RhbGxhdGlvbiIpOworICAgIEdTVF9JTkZPX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAiQ3Jl
YXRpbmcgYXVkaW8gc2luayBmb3IgJXMgcmVuZGVyaW5nIHBvbGljeSIsIGNvbnZlcnRFbnVtZXJh
dGlvblRvU3RyaW5nKG1fcGxheWVyLT5hdWRpb1JlbmRlcmluZ1BvbGljeSgpKS51dGY4KCkuZGF0
YSgpKTsKKworICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2luayA9IGNyZWF0ZUF1ZGlvU2lua0ZvclBv
bGljeShtX3BsYXllci0+YXVkaW9SZW5kZXJpbmdQb2xpY3koKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoYXVkaW9TaW5rKTsKKyAgICBpZiAoIWF1ZGlvU2luaykKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgfQogCi0gICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fYXV0b0F1ZGlvU2lu
ay5nZXQoKSwgImNoaWxkLWFkZGVkIiwgR19DQUxMQkFDSyhzZXRBdWRpb1N0cmVhbVByb3BlcnRp
ZXNDYWxsYmFjayksIHRoaXMpOworICAgIGlmIChtX3BsYXllci0+YXVkaW9SZW5kZXJpbmdQb2xp
Y3koKSA9PSAgTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZh
dWx0KQorICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoYXVkaW9TaW5rLCAiY2hpbGQt
YWRkZWQiLCBHX0NBTExCQUNLKHNldEF1ZGlvU3RyZWFtUHJvcGVydGllc0NhbGxiYWNrKSwgdGhp
cyk7CiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2lua0Jp
biA9IGdzdF9iaW5fbmV3KCJhdWRpby1zaW5rIik7CiAgICAgZW5zdXJlQXVkaW9Tb3VyY2VQcm92
aWRlcigpOwotICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlci0+Y29uZmlndXJlQXVkaW9CaW4oYXVk
aW9TaW5rQmluLCBudWxscHRyKTsKKyAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXItPmNvbmZpZ3Vy
ZUF1ZGlvQmluKGF1ZGlvU2lua0JpbiwgYXVkaW9TaW5rKTsKICAgICByZXR1cm4gYXVkaW9TaW5r
QmluOwogI2Vsc2UKLSAgICByZXR1cm4gbV9hdXRvQXVkaW9TaW5rLmdldCgpOworICAgIHJldHVy
biBhdWRpb1Npbms7CiAjZW5kaWYKIH0KIAogR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjphdWRpb1NpbmsoKSBjb25zdAogeworICAgIGlmICghbV9waXBlbGluZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBHc3RFbGVtZW50KiBzaW5rOwogICAgIGdfb2Jq
ZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAiYXVkaW8tc2luayIsICZzaW5rLCBudWxscHRyKTsK
ICAgICByZXR1cm4gc2luazsKQEAgLTI3NTgsNiArMjc2MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmCiAgICAgc3RhdGljIEF0b21pYzx1aW50MzJfdD4gcGlwZWxpbmVJZDsKICAgICBzZXRQ
aXBlbGluZShnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UocGxheWJpbk5hbWUsCiAgICAgICAgIChw
aXBlbGluZU5hbWUuaXNFbXB0eSgpID8gbWFrZVN0cmluZygibWVkaWEtcGxheWVyLSIsIHBpcGVs
aW5lSWQuZXhjaGFuZ2VBZGQoMSkpIDogcGlwZWxpbmVOYW1lKS51dGY4KCkuZGF0YSgpKSk7CisK
ICAgICBzZXRTdHJlYW1Wb2x1bWVFbGVtZW50KEdTVF9TVFJFQU1fVk9MVU1FKG1fcGlwZWxpbmUu
Z2V0KCkpKTsKIAogICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiVXNpbmcgbGVnYWN5
IHBsYXliaW4gZWxlbWVudDogJXMiLCBib29sRm9yUHJpbnRpbmcobV9pc0xlZ2FjeVBsYXliaW4p
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAx
ZWVjOWIyNjlmZmRkNmQxOWM0NjAxNWY5MWM0MGIzMWJlY2MwMGQ3Li45MWVhMjFhNmY5MGFkNzNl
MmQyMmVlZTA4NjBmZWY3YTU4YmM3NjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCkBAIC01MTMsNyArNTEzLDYgQEAgcHJpdmF0ZToKICNpZiBFTkFC
TEUoV0VCX0FVRElPKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0
cmVhbWVyPiBtX2F1ZGlvU291cmNlUHJvdmlkZXI7CiAjZW5kaWYKLSAgICBHUmVmUHRyPEdzdEVs
ZW1lbnQ+IG1fYXV0b0F1ZGlvU2luazsKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fZG93bmxv
YWRCdWZmZXI7CiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlz
c2luZ1BsdWdpbnNDYWxsYmFjaz4+IG1fbWlzc2luZ1BsdWdpbkNhbGxiYWNrczsKICAgICBIYXNo
TWFwPEF0b21TdHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4+IG1fYXVk
aW9UcmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ2M2I5ZDYyZTI2N2I3YjkwZjRjYmZhNDMwMThhNzUyNDBmM2EwYTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
V2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDM5NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5oIgorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0Uo
R1NUUkVBTUVSKQorCisjaW5jbHVkZSAiR1N0cmVhbWVyQXVkaW9NaXhlci5oIgorI2luY2x1ZGUg
IkdTdHJlYW1lckNvbW1vbi5oIgorI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc2luay5oPgorI2lu
Y2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgorI2luY2x1ZGUgPHN5cy9tbWFu
Lmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KKworI2lmIFBMQVRGT1JNKFdQRSkg
JiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTikKKyNpbmNsdWRlICJQbGF0Zm9y
bURpc3BsYXkuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXlMaWJXUEUuaCIKKyNpbmNsdWRl
IDx3cGUvZXh0ZW5zaW9ucy9hdWRpby5oPgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCitzdHJ1Y3QgX1dlYktpdEF1ZGlvU2lua1ByaXZhdGUgeworICAgIEdSZWZQdHI8R3N0
RWxlbWVudD4gaW50ZXJhdWRpb1Npbms7CisgICAgR1JlZlB0cjxHc3RQYWQ+IG1peGVyUGFkOwor
ICAgIGd1bG9uZyBwYWRFdmVudFByb2JlSWQ7CisgICAgZ3Vsb25nIHBhZEJ1ZmZlclByb2JlSWQ7
CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiB2b2x1bWVFbGVtZW50OworICAgIEdSZWZQdHI8R3N0
RWxlbWVudD4gYXBwc2luazsKKyAgICBnYm9vbGVhbiBlbmFibGVJbnRlcm5hbE1peGluZzsKKyNp
ZiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04pCisg
ICAgc3RydWN0IHdwZV9hdWRpb19zb3VyY2UqIHdwZUF1ZGlvU291cmNlOworICAgIGludCBtX3N0
cmVhbUlkOworCisgICAgLy8gd3BlX2F1ZGlvX3NvdXJjZSBzdGF0ZToKKyAgICAvLyAtIEdTVF9T
VEFURV9OVUxMOiBub3Qgc3RhcnRlZCBvciBFT1MKKyAgICAvLyAtIEdTVF9TVEFURV9QTEFZSU5H
OiBhdCBsZWFzdCBvbmUgcGFja2V0IHdhcyBlbWl0dGVkCisgICAgLy8gLSBHU1RfU1RBVEVfUEFV
U0VEOiBwYXVzZSBub3RpZmljYXRpb24gd2FzIHNlbnQKKyAgICBHc3RTdGF0ZSBzb3VyY2VTdGF0
ZTsKKyNlbmRpZgorfTsKKworZW51bSB7CisgICAgUFJPUF8wLAorICAgIFBST1BfVk9MVU1FLAor
ICAgIFBST1BfTVVURSwKKyAgICBQUk9QX0VOQUJMRV9JTlRFUk5BTF9NSVhJTkcsCit9OworCitz
dGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua1RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURf
VEVNUExBVEUoInNpbmsiLCBHU1RfUEFEX1NJTkssIEdTVF9QQURfQUxXQVlTLAorICAgIEdTVF9T
VEFUSUNfQ0FQUygiYXVkaW8veC1yYXciKSk7CisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMo
d2Via2l0X2F1ZGlvX3NpbmtfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0
X2F1ZGlvX3NpbmtfZGVidWcKKworI2RlZmluZSB3ZWJraXRfYXVkaW9fc2lua19wYXJlbnRfY2xh
c3MgcGFyZW50X2NsYXNzCitXRUJLSVRfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdEF1ZGlv
U2luaywgd2Via2l0X2F1ZGlvX3NpbmssIEdTVF9UWVBFX0JJTiwKKyAgICBHX0lNUExFTUVOVF9J
TlRFUkZBQ0UoR1NUX1RZUEVfU1RSRUFNX1ZPTFVNRSwgbnVsbHB0cik7CisgICAgR1NUX0RFQlVH
X0NBVEVHT1JZX0lOSVQod2Via2l0X2F1ZGlvX3NpbmtfZGVidWcsICJ3ZWJraXRhdWRpb3Npbmsi
LCAwLCAid2Via2l0IGF1ZGlvIHNpbmsgZWxlbWVudCIpCispCisKKyNpZiBQTEFURk9STShXUEUp
ICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04pCitzdHJ1Y3QgQXVkaW9QYWNr
ZXRIb2xkZXIgeworICAgIEF1ZGlvUGFja2V0SG9sZGVyKEdzdEJ1ZmZlciogYnVmZmVyKQorICAg
ICAgICA6IGJ1ZmZlcihnc3RfYnVmZmVyX3JlZihidWZmZXIpKQorICAgIHsgfQorICAgIH5BdWRp
b1BhY2tldEhvbGRlcigpCisgICAgeworICAgICAgICBpZiAoZmQpCisgICAgICAgICAgICBjbG9z
ZSgqZmQpOworICAgICAgICBpZiAoaXNNYXBwZWQpCisgICAgICAgICAgICBnc3RfYnVmZmVyX3Vu
bWFwKGJ1ZmZlciwgJmluZm8pOworICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7Cisg
ICAgfQorCisgICAgT3B0aW9uYWw8c3RkOjpwYWlyPHVpbnQzMl90LCBzaXplX3Q+PiBtYXAoKQor
ICAgIHsKKyAgICAgICAgaXNNYXBwZWQgPSBnc3RfYnVmZmVyX21hcChidWZmZXIsICZpbmZvLCBH
U1RfTUFQX1JFQUQpOworICAgICAgICBpZiAoIWlzTWFwcGVkKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICBmZCA9IG1lbWZkX2NyZWF0ZSgid3BlLWF1ZGlvLWJ1
ZmZlciIsIE1GRF9DTE9FWEVDKTsKKyAgICAgICAgaWYgKCpmZCA9PSAtMSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKGZ0cnVuY2F0ZSgqZmQsIGluZm8u
c2l6ZSkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
IHNzaXplX3QgYnl0ZXNXcml0dGVuID0gd3JpdGUoKmZkLCBpbmZvLmRhdGEsIGluZm8uc2l6ZSk7
CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPCAwKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1dyaXR0ZW4p
ICE9IGluZm8uc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgaWYgKGxzZWVrKCpmZCwgMCwgU0VFS19TRVQpID09IC0xKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KCpmZCksIGluZm8uc2l6ZSk7CisgICAgfQorCisgICAgT3B0aW9uYWw8aW50
MzJfdD4gZmQ7CisgICAgR3N0QnVmZmVyKiBidWZmZXI7CisgICAgR3N0TWFwSW5mbyBpbmZvIEdT
VF9NQVBfSU5GT19JTklUOworICAgIGJvb2wgaXNNYXBwZWQgeyBmYWxzZSB9OworfTsKKworc3Rh
dGljIHZvaWQgd2ViS2l0QXVkaW9TaW5rSGFuZGxlU2FtcGxlKFdlYktpdEF1ZGlvU2luayogc2lu
aywgR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlKQoreworICAgIHN0cnVjdCB3cGVfYXVkaW9f
c291cmNlKiB3cGVBdWRpb1NvdXJjZSA9IHNpbmstPnByaXYtPndwZUF1ZGlvU291cmNlOworICAg
IHN0YXRpYyBBdG9taWM8aW50MzJfdD4gdW5pcXVlSWQ7CisKKyAgICBpZiAoc2luay0+cHJpdi0+
c291cmNlU3RhdGUgPT0gR1NUX1NUQVRFX05VTEwpIHsKKyAgICAgICAgc2luay0+cHJpdi0+bV9z
dHJlYW1JZCA9IHVuaXF1ZUlkLmV4Y2hhbmdlQWRkKDEpOworICAgICAgICBHc3RDYXBzKiBjYXBz
ID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhzYW1wbGUuZ2V0KCkpOworICAgICAgICBHc3RBdWRpb0lu
Zm8gaW5mbzsKKyAgICAgICAgZ3N0X2F1ZGlvX2luZm9faW5pdCgmaW5mbyk7CisgICAgICAgIGdz
dF9hdWRpb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2Fwcyk7CisgICAgICAgIGNvbnN0IGNoYXIq
IGZvcm1hdCA9IGdzdF9hdWRpb19mb3JtYXRfdG9fc3RyaW5nKEdTVF9BVURJT19JTkZPX0ZPUk1B
VCgmaW5mbykpOworICAgICAgICB3cGVfYXVkaW9fc291cmNlX3N0YXJ0KHdwZUF1ZGlvU291cmNl
LCBzaW5rLT5wcml2LT5tX3N0cmVhbUlkLCBHU1RfQVVESU9fSU5GT19DSEFOTkVMUygmaW5mbyks
IGZvcm1hdCwgR1NUX0FVRElPX0lORk9fUkFURSgmaW5mbykpOworICAgICAgICBzaW5rLT5wcml2
LT5zb3VyY2VTdGF0ZSA9IEdTVF9TVEFURV9QTEFZSU5HOworICAgIH0KKworICAgIGF1dG8qIGhv
bGRlciA9IG5ldyBBdWRpb1BhY2tldEhvbGRlcihnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxl
LmdldCgpKSk7CisgICAgYXV0byBtYXBEYXRhID0gaG9sZGVyLT5tYXAoKTsKKyAgICBpZiAoIW1h
cERhdGEpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzaW5rLCAiVW5hYmxlIHRvIHByZXBh
cmUgc2hhcmVkIGF1ZGlvIGJ1ZmZlciIpOworICAgICAgICBkZWxldGUgaG9sZGVyOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIHdwZV9hdWRpb19zb3VyY2VfcGFja2V0KHdwZUF1ZGlvU291
cmNlLCBzaW5rLT5wcml2LT5tX3N0cmVhbUlkLCBzdGQ6OmdldDwwPigqbWFwRGF0YSksIHN0ZDo6
Z2V0PDE+KCptYXBEYXRhKSwgW10odm9pZCogZGF0YSkgeworICAgICAgICBhdXRvKiBob2xkZXIg
PSByZWludGVycHJldF9jYXN0PEF1ZGlvUGFja2V0SG9sZGVyKj4oZGF0YSk7CisgICAgICAgIGRl
bGV0ZSBob2xkZXI7CisgICAgfSwgaG9sZGVyKTsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCB3
ZWJLaXRBdWRpb1NpbmtDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCit7CisgICAgR1NUX0NB
TExfUEFSRU5UKEdfT0JKRUNUX0NMQVNTLCBjb25zdHJ1Y3RlZCwgKG9iamVjdCkpOworCisgICAg
V2ViS2l0QXVkaW9TaW5rKiBzaW5rID0gV0VCS0lUX0FVRElPX1NJTksob2JqZWN0KTsKKworICAg
IGlmIChzaW5rLT5wcml2LT5lbmFibGVJbnRlcm5hbE1peGluZykgeworICAgICAgICBzaW5rLT5w
cml2LT5pbnRlcmF1ZGlvU2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiaW50ZXJhdWRp
b3NpbmsiLCBudWxscHRyKTsKKyAgICAgICAgaWYgKCFzaW5rLT5wcml2LT5pbnRlcmF1ZGlvU2lu
aykgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBHU1Rf
RVJST1JfT0JKRUNUKHNpbmssICJGYWlsZWQgdG8gY3JlYXRlIGludGVyYXVkaW9zaW5rIik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBnc3RfYmluX2FkZChHU1Rf
QklOX0NBU1Qoc2luayksIHNpbmstPnByaXYtPmludGVyYXVkaW9TaW5rLmdldCgpKTsKKyAgICAg
ICAgR1JlZlB0cjxHc3RQYWQ+IHRhcmdldFBhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRf
c3RhdGljX3BhZChzaW5rLT5wcml2LT5pbnRlcmF1ZGlvU2luay5nZXQoKSwgInNpbmsiKSk7Cisg
ICAgICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoR1NUX0VMRU1FTlRfQ0FTVChzaW5rKSwgd2Via2l0
R3N0R2hvc3RQYWRGcm9tU3RhdGljVGVtcGxhdGUoJnNpbmtUZW1wbGF0ZSwgInNpbmsiLCB0YXJn
ZXRQYWQuZ2V0KCkpKTsKKyAgICB9IGVsc2UgeworI2lmIFBMQVRGT1JNKFdQRSkKKyNpZiBVU0Uo
V1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorICAgICAgICBzaW5rLT5wcml2LT5zb3Vy
Y2VTdGF0ZSA9IEdTVF9TVEFURV9OVUxMOworICAgICAgICBhdXRvJiBzaGFyZWREaXNwbGF5ID0g
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCk7CisgICAgICAgIGlmIChpczxQbGF0Zm9y
bURpc3BsYXlMaWJXUEU+KHNoYXJlZERpc3BsYXkpKQorICAgICAgICAgICAgc2luay0+cHJpdi0+
d3BlQXVkaW9Tb3VyY2UgPSB3cGVfYXVkaW9fc291cmNlX2NyZWF0ZShkb3duY2FzdDxQbGF0Zm9y
bURpc3BsYXlMaWJXUEU+KHNoYXJlZERpc3BsYXkpLmJhY2tlbmQoKSk7CisKKyAgICAgICAgc2lu
ay0+cHJpdi0+dm9sdW1lRWxlbWVudCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgidm9sdW1l
IiwgbnVsbHB0cik7CisgICAgICAgIHNpbmstPnByaXYtPmFwcHNpbmsgPSBnc3RfZWxlbWVudF9m
YWN0b3J5X21ha2UoImFwcHNpbmsiLCBudWxscHRyKTsKKyAgICAgICAgZ3N0X2FwcF9zaW5rX3Nl
dF9lbWl0X3NpZ25hbHMoR1NUX0FQUF9TSU5LKHNpbmstPnByaXYtPmFwcHNpbmsuZ2V0KCkpLCBU
UlVFKTsKKworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHNpbmstPnByaXYtPmFwcHNpbmsuZ2V0
KCksICJuZXctc2FtcGxlIiwgR19DQUxMQkFDSygrW10oR3N0RWxlbWVudCogYXBwc2luaywgV2Vi
S2l0QXVkaW9TaW5rKiBzaW5rKSAtPiBHc3RGbG93UmV0dXJuIHsKKyAgICAgICAgICAgIGF1dG8g
c2FtcGxlID0gYWRvcHRHUmVmKGdzdF9hcHBfc2lua19wdWxsX3NhbXBsZShHU1RfQVBQX1NJTkso
YXBwc2luaykpKTsKKyAgICAgICAgICAgIHdlYktpdEF1ZGlvU2lua0hhbmRsZVNhbXBsZShzaW5r
LCBXVEZNb3ZlKHNhbXBsZSkpOworICAgICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOworICAg
ICAgICB9KSwgc2luayk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2luay0+cHJpdi0+YXBw
c2luay5nZXQoKSwgIm5ldy1wcmVyb2xsIiwgR19DQUxMQkFDSygrW10oR3N0RWxlbWVudCogYXBw
c2luaywgV2ViS2l0QXVkaW9TaW5rKiBzaW5rKSAtPiBHc3RGbG93UmV0dXJuIHsKKyAgICAgICAg
ICAgIGF1dG8gc2FtcGxlID0gYWRvcHRHUmVmKGdzdF9hcHBfc2lua19wdWxsX3ByZXJvbGwoR1NU
X0FQUF9TSU5LKGFwcHNpbmspKSk7CisgICAgICAgICAgICB3ZWJLaXRBdWRpb1NpbmtIYW5kbGVT
YW1wbGUoc2luaywgV1RGTW92ZShzYW1wbGUpKTsKKyAgICAgICAgICAgIHJldHVybiBHU1RfRkxP
V19PSzsKKyAgICAgICAgfSksIHNpbmspOworCisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2lu
ay0+cHJpdi0+YXBwc2luay5nZXQoKSwgImVvcyIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQq
LCBXZWJLaXRBdWRpb1NpbmsqIHNpbmspIHsKKyAgICAgICAgICAgIHdwZV9hdWRpb19zb3VyY2Vf
c3RvcChzaW5rLT5wcml2LT53cGVBdWRpb1NvdXJjZSwgc2luay0+cHJpdi0+bV9zdHJlYW1JZCk7
CisgICAgICAgICAgICBzaW5rLT5wcml2LT5zb3VyY2VTdGF0ZSA9IEdTVF9TVEFURV9OVUxMOwor
ICAgICAgICB9KSwgc2luayk7CisKKyAgICAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOX0NB
U1Qoc2luayksIHNpbmstPnByaXYtPnZvbHVtZUVsZW1lbnQuZ2V0KCksIHNpbmstPnByaXYtPmFw
cHNpbmsuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBnc3RfZWxlbWVudF9saW5rKHNpbmstPnBy
aXYtPnZvbHVtZUVsZW1lbnQuZ2V0KCksIHNpbmstPnByaXYtPmFwcHNpbmsuZ2V0KCkpOworCisg
ICAgICAgIEdSZWZQdHI8R3N0UGFkPiB0YXJnZXRQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRf
Z2V0X3N0YXRpY19wYWQoc2luay0+cHJpdi0+dm9sdW1lRWxlbWVudC5nZXQoKSwgInNpbmsiKSk7
CisgICAgICAgIEdzdFBhZCogc2lua1BhZCA9IHdlYmtpdEdzdEdob3N0UGFkRnJvbVN0YXRpY1Rl
bXBsYXRlKCZzaW5rVGVtcGxhdGUsICJzaW5rIiwgdGFyZ2V0UGFkLmdldCgpKTsKKyAgICAgICAg
Z3N0X2VsZW1lbnRfYWRkX3BhZChHU1RfRUxFTUVOVF9DQVNUKHNpbmspLCBzaW5rUGFkKTsKKyAg
ICAgICAgR1NUX09CSkVDVF9GTEFHX1NFVChzaW5rUGFkLCBHU1RfUEFEX0ZMQUdfTkVFRF9QQVJF
TlQpOworI2Vsc2UKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzaW5rLCAiV1BFQmFja2VuZC1G
RE8gQXVkaW8gZXh0ZW5zaW9uIGlzIG1pc3NpbmcsIHVwZGF0ZSB0byBXUEVCYWNrZW5kLUZETyAx
LjgueC4iKTsKKyNlbmRpZgorI2Vsc2UKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzaW5rLCAi
RXh0ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIGlzIHN1cHBvcnRlZCBvbmx5IGluIFdQRVdlYktpdCIp
OworI2VuZGlmCisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJLaXRBdWRpb1NpbmtEaXNwb3Nl
KEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBhdXRvKiBwcml2ID0gV0VCS0lUX0FVRElPX1NJTkso
b2JqZWN0KS0+cHJpdjsKKworICAgIGlmIChwcml2LT5wYWRFdmVudFByb2JlSWQpIHsKKyAgICAg
ICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0
YXRpY19wYWQocHJpdi0+aW50ZXJhdWRpb1NpbmsuZ2V0KCksICJzaW5rIikpOworICAgICAgICBn
c3RfcGFkX3JlbW92ZV9wcm9iZShzaW5rUGFkLmdldCgpLCBwcml2LT5wYWRFdmVudFByb2JlSWQp
OworICAgICAgICBwcml2LT5wYWRFdmVudFByb2JlSWQgPSAwOworICAgIH0KKworICAgIGlmIChw
cml2LT5wYWRCdWZmZXJQcm9iZUlkKSB7CisgICAgICAgIEdSZWZQdHI8R3N0UGFkPiBzaW5rUGFk
ID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHByaXYtPmludGVyYXVkaW9T
aW5rLmdldCgpLCAic2luayIpKTsKKyAgICAgICAgZ3N0X3BhZF9yZW1vdmVfcHJvYmUoc2lua1Bh
ZC5nZXQoKSwgcHJpdi0+cGFkQnVmZmVyUHJvYmVJZCk7CisgICAgICAgIHByaXYtPnBhZEJ1ZmZl
clByb2JlSWQgPSAwOworICAgIH0KKworI2lmIFBMQVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tF
TkRfRkRPX0FVRElPX0VYVEVOU0lPTikKKyAgICBpZiAocHJpdi0+d3BlQXVkaW9Tb3VyY2UpCisg
ICAgICAgIHdwZV9hdWRpb19zb3VyY2VfZGVzdHJveShwcml2LT53cGVBdWRpb1NvdXJjZSk7Cisj
ZW5kaWYKKworICAgIEdTVF9DQUxMX1BBUkVOVChHX09CSkVDVF9DTEFTUywgZGlzcG9zZSwgKG9i
amVjdCkpOworfQorCitzdGF0aWMgR3N0T2JqZWN0KiBnZXRJbnRlcm5hbFZvbHVtZU9iamVjdChX
ZWJLaXRBdWRpb1NpbmsqIHNpbmspCit7CisgICAgaWYgKHNpbmstPnByaXYtPmVuYWJsZUludGVy
bmFsTWl4aW5nKSB7CisgICAgICAgIGlmICghc2luay0+cHJpdi0+bWl4ZXJQYWQpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gR1NUX09CSkVDVF9DQVNUKHNp
bmstPnByaXYtPm1peGVyUGFkLmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIEdTVF9PQkpFQ1Rf
Q0FTVChzaW5rLT5wcml2LT52b2x1bWVFbGVtZW50LmdldCgpKTsKK30KKworc3RhdGljIHZvaWQg
d2ViS2l0QXVkaW9TaW5rU2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQs
IGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdEF1
ZGlvU2luayogc2luayA9IFdFQktJVF9BVURJT19TSU5LKG9iamVjdCk7CisKKyAgICBzd2l0Y2gg
KHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9WT0xVTUU6IHsKKyAgICAgICAgR3N0T2JqZWN0KiBp
bnRlcm5hbE9iamVjdCA9IGdldEludGVybmFsVm9sdW1lT2JqZWN0KHNpbmspOworICAgICAgICBp
ZiAoIWludGVybmFsT2JqZWN0KSB7CisgICAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1Qoc2lu
aywgIk5vIGFzc29jaWF0ZWQgbWl4ZXIgcGFkLCBjYW4ndCBzZXQgJXMgcHJvcGVydHkiLCBnX3Bh
cmFtX3NwZWNfZ2V0X25hbWUocHNwZWMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBnX29iamVjdF9zZXRfcHJvcGVydHkoR19PQkpFQ1QoaW50ZXJuYWxPYmplY3Qp
LCAidm9sdW1lIiwgdmFsdWUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9Q
X01VVEU6IHsKKyAgICAgICAgR3N0T2JqZWN0KiBpbnRlcm5hbE9iamVjdCA9IGdldEludGVybmFs
Vm9sdW1lT2JqZWN0KHNpbmspOworICAgICAgICBpZiAoIWludGVybmFsT2JqZWN0KSB7CisgICAg
ICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1Qoc2luaywgIk5vIGFzc29jaWF0ZWQgbWl4ZXIgcGFk
LCBjYW4ndCBzZXQgJXMgcHJvcGVydHkiLCBnX3BhcmFtX3NwZWNfZ2V0X25hbWUocHNwZWMpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBnX29iamVjdF9zZXRfcHJv
cGVydHkoR19PQkpFQ1QoaW50ZXJuYWxPYmplY3QpLCAibXV0ZSIsIHZhbHVlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9FTkFCTEVfSU5URVJOQUxfTUlYSU5HOgorICAg
ICAgICBzaW5rLT5wcml2LT5lbmFibGVJbnRlcm5hbE1peGluZyA9IGdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSUQsIHBzcGVjKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJLaXRBdWRpb1NpbmtHZXRQcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0QXVkaW9TaW5rKiBzaW5rID0gV0VCS0lUX0FVRElP
X1NJTksob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElEKSB7CisgICAgY2FzZSBQUk9QX1ZP
TFVNRTogeworICAgICAgICBHc3RPYmplY3QqIGludGVybmFsT2JqZWN0ID0gZ2V0SW50ZXJuYWxW
b2x1bWVPYmplY3Qoc2luayk7CisgICAgICAgIGlmICghaW50ZXJuYWxPYmplY3QpIHsKKyAgICAg
ICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVChzaW5rLCAiTm8gYXNzb2NpYXRlZCBtaXhlciBwYWQs
IGNhbid0IGdldCAlcyBwcm9wZXJ0eSIsIGdfcGFyYW1fc3BlY19nZXRfbmFtZShwc3BlYykpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGdfb2JqZWN0X2dldF9wcm9w
ZXJ0eShHX09CSkVDVChpbnRlcm5hbE9iamVjdCksICJ2b2x1bWUiLCB2YWx1ZSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfTVVURTogeworICAgICAgICBHc3RPYmplY3Qq
IGludGVybmFsT2JqZWN0ID0gZ2V0SW50ZXJuYWxWb2x1bWVPYmplY3Qoc2luayk7CisgICAgICAg
IGlmICghaW50ZXJuYWxPYmplY3QpIHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVChz
aW5rLCAiTm8gYXNzb2NpYXRlZCBtaXhlciBwYWQsIGNhbid0IGdldCAlcyBwcm9wZXJ0eSIsIGdf
cGFyYW1fc3BlY19nZXRfbmFtZShwc3BlYykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGdfb2JqZWN0X2dldF9wcm9wZXJ0eShHX09CSkVDVChpbnRlcm5hbE9iamVj
dCksICJtdXRlIiwgdmFsdWUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9Q
X0VOQUJMRV9JTlRFUk5BTF9NSVhJTkc6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFs
dWUsIHNpbmstPnByaXYtPmVuYWJsZUludGVybmFsTWl4aW5nKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9i
amVjdCwgcHJvcElELCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGlj
IEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdlYktpdEF1ZGlvU2lua0NoYW5nZVN0YXRlKEdzdEVsZW1l
bnQqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKQoreworICAgIGF1dG8qIHNp
bmsgPSBXRUJLSVRfQVVESU9fU0lOSyhlbGVtZW50KTsKKyAgICBhdXRvKiBwcml2ID0gc2luay0+
cHJpdjsKKworI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDE0LCAwKQorICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc2luaywgIkhhbmRsaW5nICVzIHRyYW5zaXRpb24iLCBnc3Rfc3RhdGVfY2hhbmdlX2dl
dF9uYW1lKHN0YXRlQ2hhbmdlKSk7CisjZW5kaWYKKworICAgIGF1dG8mIG1peGVyID0gR1N0cmVh
bWVyQXVkaW9NaXhlcjo6c2luZ2xldG9uKCk7CisgICAgaWYgKHByaXYtPmVuYWJsZUludGVybmFs
TWl4aW5nICYmIHN0YXRlQ2hhbmdlID09IEdTVF9TVEFURV9DSEFOR0VfTlVMTF9UT19SRUFEWSkg
eworICAgICAgICBpZiAoIXByaXYtPmludGVyYXVkaW9TaW5rKSB7CisgICAgICAgICAgICBnc3Rf
ZWxlbWVudF9wb3N0X21lc3NhZ2UoZWxlbWVudCwgZ3N0X21pc3NpbmdfZWxlbWVudF9tZXNzYWdl
X25ldyhlbGVtZW50LCAiaW50ZXJhdWRpb3NpbmsiKSk7CisgICAgICAgICAgICBHU1RfRUxFTUVO
VF9FUlJPUihzaW5rLCBDT1JFLCBNSVNTSU5HX1BMVUdJTiwgKG51bGxwdHIpLCAoIm5vIGludGVy
YXVkaW9zaW5rIikpOworICAgICAgICAgICAgcmV0dXJuIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVS
RTsKKyAgICAgICAgfQorICAgICAgICBwcml2LT5taXhlclBhZCA9IG1peGVyLnJlZ2lzdGVyUHJv
ZHVjZXIocHJpdi0+aW50ZXJhdWRpb1NpbmsuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChwcml2
LT5lbmFibGVJbnRlcm5hbE1peGluZykKKyAgICAgICAgbWl4ZXIuZW5zdXJlU3RhdGUoc3RhdGVD
aGFuZ2UpOworCisgICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmVzdWx0ID0gR1NUX0NBTExfUEFS
RU5UX1dJVEhfREVGQVVMVChHU1RfRUxFTUVOVF9DTEFTUywgY2hhbmdlX3N0YXRlLCAoZWxlbWVu
dCwgc3RhdGVDaGFuZ2UpLCBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpOworCisjaWYgUExBVEZP
Uk0oV1BFKSAmJiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorICAgIGlmICgh
cHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhpbmcpIHsKKyAgICAgICAgYm9vbCBpc0VPUyA9IGdzdF9h
cHBfc2lua19pc19lb3MoR1NUX0FQUF9TSU5LKHByaXYtPmFwcHNpbmsuZ2V0KCkpKTsKKyAgICAg
ICAgaWYgKChzdGF0ZUNoYW5nZSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1BMQVlJTkdfVE9fUEFVU0VE
KSAmJiAhaXNFT1MpIHsKKyAgICAgICAgICAgIHdwZV9hdWRpb19zb3VyY2VfcGF1c2UocHJpdi0+
d3BlQXVkaW9Tb3VyY2UsIHByaXYtPm1fc3RyZWFtSWQpOworICAgICAgICAgICAgcHJpdi0+c291
cmNlU3RhdGUgPSBHU1RfU1RBVEVfUEFVU0VEOworICAgICAgICB9CisgICAgICAgIGlmIChzdGF0
ZUNoYW5nZSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWSAmJiBpc0VPUykKKyAg
ICAgICAgICAgIHByaXYtPnNvdXJjZVN0YXRlID0gR1NUX1NUQVRFX05VTEw7CisgICAgfQorI2Vu
ZGlmCisKKyAgICBpZiAocHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhpbmcgJiYgKHN0YXRlQ2hhbmdl
ID09IEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fTlVMTCkgJiYgKHJlc3VsdCA+IEdTVF9TVEFU
RV9DSEFOR0VfRkFJTFVSRSkpIHsKKyAgICAgICAgbWl4ZXIudW5yZWdpc3RlclByb2R1Y2VyKHBy
aXYtPm1peGVyUGFkKTsKKyAgICAgICAgcHJpdi0+bWl4ZXJQYWQgPSBudWxscHRyOworICAgIH0K
KyNpZiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04p
CisgICAgaWYgKCFwcml2LT5lbmFibGVJbnRlcm5hbE1peGluZyAmJiAocHJpdi0+c291cmNlU3Rh
dGUgPT0gR1NUX1NUQVRFX1BBVVNFRCkgJiYgKHN0YXRlQ2hhbmdlID09IEdTVF9TVEFURV9DSEFO
R0VfUEFVU0VEX1RPX1BMQVlJTkcpICYmIChyZXN1bHQgPiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxV
UkUpKSB7CisgICAgICAgIHdwZV9hdWRpb19zb3VyY2VfcmVzdW1lKHByaXYtPndwZUF1ZGlvU291
cmNlLCBwcml2LT5tX3N0cmVhbUlkKTsKKyAgICAgICAgcHJpdi0+c291cmNlU3RhdGUgPSBHU1Rf
U1RBVEVfUExBWUlORzsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF9hdWRpb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0QXVkaW9TaW5r
Q2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2tsYXNzID0gR19PQkpFQ1RfQ0xB
U1Moa2xhc3MpOworICAgIG9rbGFzcy0+Y29uc3RydWN0ZWQgPSB3ZWJLaXRBdWRpb1NpbmtDb25z
dHJ1Y3RlZDsKKyAgICBva2xhc3MtPmRpc3Bvc2UgPSB3ZWJLaXRBdWRpb1NpbmtEaXNwb3NlOwor
ICAgIG9rbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2ViS2l0QXVkaW9TaW5rU2V0UHJvcGVydHk7Cisg
ICAgb2tsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJLaXRBdWRpb1NpbmtHZXRQcm9wZXJ0eTsKKwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNzLCBQUk9QX1ZPTFVNRSwK
KyAgICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSgidm9sdW1lIiwgIlZvbHVtZSIsICJUaGUgYXVk
aW8gdm9sdW1lLCAxLjA9MTAwJSIsIDAsIDEwLCAxLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
R1BhcmFtRmxhZ3M+KEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykp
KTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9rbGFzcywgUFJPUF9NVVRF
LAorICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigibXV0ZSIsICJNdXRlIiwgIk11dGUgdGhl
IGF1ZGlvIGNoYW5uZWwgd2l0aG91dCBjaGFuZ2luZyB0aGUgdm9sdW1lIiwgRkFMU0UsCisgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BB
UkFNX1NUQVRJQ19TVFJJTkdTKSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkob2tsYXNzLCBQUk9QX0VOQUJMRV9JTlRFUk5BTF9NSVhJTkcsCisgICAgICAgIGdfcGFyYW1f
c3BlY19ib29sZWFuKCJlbmFibGUtaW50ZXJuYWwtbWl4aW5nIiwgIkVuYWJsZSBJbnRlcm5hbCBN
aXhpbmciLCAiUHJveHkgYXVkaW8gYnVmZmVycyB0byB0aGUgYXVkaW9taXhlciIsIEZBTFNFLAor
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KEdfUEFSQU1fUkVBRFdSSVRFIHwg
R19QQVJBTV9TVEFUSUNfU1RSSU5HUyB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CisKKyAg
ICBHc3RFbGVtZW50Q2xhc3MqIGVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTKGtsYXNzKTsKKyAg
ICBnc3RfZWxlbWVudF9jbGFzc19hZGRfc3RhdGljX3BhZF90ZW1wbGF0ZShla2xhc3MsICZzaW5r
VGVtcGxhdGUpOworICAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9tZXRhZGF0YShla2xhc3MsICJX
ZWJLaXQgQXVkaW8gc2luayBlbGVtZW50IiwgIlNpbmsvQXVkaW8iLAorICAgICAgICAiUHJveGll
cyBhdWRpbyBkYXRhIHRvIFdlYktpdCdzIGF1ZGlvIG1peGVyIiwgIlBoaWxpcHBlIE5vcm1hbmQg
PHBoaWxuQGlnYWxpYS5jb20+Iik7CisKKyAgICBla2xhc3MtPmNoYW5nZV9zdGF0ZSA9IEdTVF9E
RUJVR19GVU5DUFRSKHdlYktpdEF1ZGlvU2lua0NoYW5nZVN0YXRlKTsKK30KKworR3N0RWxlbWVu
dCogd2Via2l0QXVkaW9TaW5rTmV3KGJvb2wgZW5hYmxlSW50ZXJuYWxNaXhpbmcpCit7CisgICAg
cmV0dXJuIEdTVF9FTEVNRU5UX0NBU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0FVRElPX1NJ
TkssICJlbmFibGUtaW50ZXJuYWwtbWl4aW5nIiwgZW5hYmxlSW50ZXJuYWxNaXhpbmcsIG51bGxw
dHIpKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRBdWRpb1NpbmtHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTExYmNh
ZTdlMmQ2ODM2OWZlMGQ5MmYzZTBmOWY4NWNkZDY3YzcxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dT
dHJlYW1lci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDIwIEln
YWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgPGdzdC9n
c3QuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX0FVRElPX1NJTksg
ICAgICAgICAgICAod2Via2l0X2F1ZGlvX3NpbmtfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lU
X0FVRElPX1NJTksob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgo
b2JqKSwgV0VCS0lUX1RZUEVfQVVESU9fU0lOSywgV2ViS2l0QXVkaW9TaW5rKSkKKyNkZWZpbmUg
V0VCS0lUX0FVRElPX1NJTktfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FT
VCgoa2xhc3MpLCBXRUJLSVRfVFlQRV9BVURJT19TSU5LLCBXZWJLaXRBdWRpb1NpbmtDbGFzcykp
CisjZGVmaW5lIFdFQktJVF9JU19BVURJT19TSU5LKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0FVRElPX1NJTkspKQorI2RlZmluZSBX
RUJLSVRfSVNfQVVESU9fU0lOS19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBF
KChrbGFzcyksIFdFQktJVF9UWVBFX0FVRElPX1NJTkspKQorCit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0QXVkaW9TaW5rICAgICAgICBXZWJLaXRBdWRpb1Npbms7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0QXVkaW9TaW5rQ2xhc3MgICBXZWJLaXRBdWRpb1NpbmtDbGFzczsKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRBdWRpb1NpbmtQcml2YXRlIFdlYktpdEF1ZGlvU2lua1ByaXZhdGU7CisKK3N0cnVj
dCBfV2ViS2l0QXVkaW9TaW5rIHsKKyAgICBHc3RCaW4gcGFyZW50OworCisgICAgV2ViS2l0QXVk
aW9TaW5rUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0QXVkaW9TaW5rQ2xhc3Mg
eworICAgIEdzdEJpbkNsYXNzIHBhcmVudENsYXNzOworfTsKKworR1R5cGUgd2Via2l0X2F1ZGlv
X3NpbmtfZ2V0X3R5cGUodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisKK0dzdEVsZW1lbnQqIHdlYmtp
dEF1ZGlvU2lua05ldyhib29sIGVuYWJsZUludGVybmFsTWl4aW5nKTsKKworI2VuZGlmIC8vIEVO
QUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0F1ZGlvUmVuZGVyaW5nUG9saWN5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdWRp
b1JlbmRlcmluZ1BvbGljeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMTNhZmE0OWZhNTZiNmJiNGNmNTI5MzZm
OTljMTcxY2EwYTgxNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
dWRpb1JlbmRlcmluZ1BvbGljeS5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitlbnVtIGNsYXNzIEF1ZGlvUmVuZGVyaW5nUG9saWN5IDogdWludDhfdCB7CisgICAgSG9zdERl
ZmF1bHQsCisgICAgSW50ZXJuYWxNaXhpbmcsCisgICAgRXh0ZXJuYWwKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJLaXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5PiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpBdWRpb1JlbmRlcmluZ1BvbGljeSwKKyAg
ICAgICAgV2ViS2l0OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQsCisgICAgICAg
IFdlYktpdDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkludGVybmFsTWl4aW5nLAorICAgICAgICBX
ZWJLaXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpFeHRlcm5hbAorICAgID47Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggY2FmOGVmZTg4MWY2MzMzNzI2MDcxMDBlOGQ1MWIyMmRi
MTYwN2NlOC4uNDQwYjFlN2E2YjI0ZTNjNzFmNWY4Yjc5M2QxMmVjY2I2ZTdjMTFkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJBUElEYXRhLmgiCiAjaW5jbHVkZSAiQVBJTmF2
aWdhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1
ZGUgIkF1ZGlvUmVuZGVyaW5nUG9saWN5LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgogI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5o
IgpAQCAtMjAzLDcgKzIwNCw4IEBAIGVudW0gewogICAgIFBST1BfRURJVEFCTEUsCiAgICAgUFJP
UF9QQUdFX0lELAogICAgIFBST1BfSVNfTVVURUQsCi0gICAgUFJPUF9XRUJTSVRFX1BPTElDSUVT
CisgICAgUFJPUF9XRUJTSVRFX1BPTElDSUVTLAorICAgIFBST1BfQVVESU9fUkVOREVSSU5HX1BP
TElDWQogfTsKIAogdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPFdlYktpdFdlYlJl
c291cmNlPiA+IExvYWRpbmdSZXNvdXJjZXNNYXA7CkBAIC0zMDYsNiArMzA4LDggQEAgc3RydWN0
IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAKICAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRh
TWFuYWdlcj4gd2Vic2l0ZURhdGFNYW5hZ2VyOwogICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZVBv
bGljaWVzPiB3ZWJzaXRlUG9saWNpZXM7CisKKyAgICBXZWJLaXRBdWRpb1JlbmRlcmluZ1BvbGlj
eSBhdWRpb1JlbmRlcmluZ1BvbGljeTsKIH07CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1Rf
U0lHTkFMXSA9IHsgMCwgfTsKQEAgLTgwNyw2ICs4MTEsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0
V2ViVmlld1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBH
VmFsdWUKICAgICAgICAgYnJlYWs7CiAgICAgfQogI2VuZGlmCisgICAgY2FzZSBQUk9QX0FVRElP
X1JFTkRFUklOR19QT0xJQ1k6IHsKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+YXVkaW9SZW5kZXJp
bmdQb2xpY3kgPSBzdGF0aWNfY2FzdDxXZWJLaXRBdWRpb1JlbmRlcmluZ1BvbGljeT4oZ192YWx1
ZV9nZXRfZW51bSh2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQUk9Q
X1dFQl9DT05URVhUOiB7CiAgICAgICAgIGdwb2ludGVyIHdlYkNvbnRleHQgPSBnX3ZhbHVlX2dl
dF9vYmplY3QodmFsdWUpOwogICAgICAgICB3ZWJWaWV3LT5wcml2LT5jb250ZXh0ID0gd2ViQ29u
dGV4dCA/IFdFQktJVF9XRUJfQ09OVEVYVCh3ZWJDb250ZXh0KSA6IG51bGxwdHI7CkBAIC04NjMs
NiArODcxLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0dldFByb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHUKICAgICAgICAgZ192YWx1ZV9zZXRf
c3RhdGljX2JveGVkKHZhbHVlLCB3ZWJWaWV3LT5wcml2LT5iYWNrZW5kLmdldCgpKTsKICAgICAg
ICAgYnJlYWs7CiAjZW5kaWYKKyAgICBjYXNlIFBST1BfQVVESU9fUkVOREVSSU5HX1BPTElDWToK
KyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2YWx1ZSwgd2ViVmlldy0+cHJpdi0+YXVkaW9SZW5k
ZXJpbmdQb2xpY3kpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfV0VCX0NPTlRFWFQ6
CiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2ViVmlldy0+cHJpdi0+Y29udGV4
dC5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTMyMCw2ICsxMzMxLDMxIEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmll
d0NsYXNzKQogICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUywKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwg
R19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZp
ZXc6OmF1ZGlvLXJlbmRlcmluZy1wb2xpY3k6CisgICAgICoKKyAgICAgKiBXaGV0aGVyIHRoZSAj
V2ViS2l0V2ViVmlldyBzaG91bGQgbWFuYWdlIGF1ZGlvIHJlbmRlcmluZyB0aHJvdWdoIHRoZSBo
b3N0CisgICAgICogcGxhdGZvcm0gYXVkaW8gZGFlbW9uICh1c3VhbGx5IFB1bHNlQXVkaW8pLiBU
aGlzIGlzIHRoZSBkZWZhdWx0CisgICAgICogYmVoYXZpb3VyLCB0aGUgcHJvcGVydHkgaXMgQEFV
RElPX1JFTkRFUklOR19QT0xJQ1lfSE9TVF9ERUZBVUxUIGJ5IGRlZmF1bHQuCisgICAgICoKKyAg
ICAgKiBJbiBXUEVXZWJLaXQsIGFuIGFkZGl0aW9uYWwgcHJvcGVydHkgdmFsdWUgaXMgYXZhaWxh
YmxlLiBVc2luZworICAgICAqIEBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9FWFRFUk5B
TCBpbXBsaWVzIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlY2VpdmUgbm90aWZpY2F0aW9ucworICAg
ICAqIHRocm91Z2ggdGhlIFdQRUJhY2tlbmQtRkRPIGF1ZGlvIHNvdXJjZS4gSW4gdGhpcyBjYXNl
IHRoZSBhcHBsaWNhdGlvbiBpcyBleHBlY3RlZCB0byBtYW5hZ2UKKyAgICAgKiBhdWRpbyByZW5k
ZXJpbmcgaXRzZWxmLgorICAgICAqCisgICAgICogU2luY2U6IDIuMzAKKyAgICAgKi8KKyAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisg
ICAgICAgIFBST1BfQVVESU9fUkVOREVSSU5HX1BPTElDWSwKKyAgICAgICAgZ19wYXJhbV9zcGVj
X2VudW0oCisgICAgICAgICAgICAiYXVkaW8tcmVuZGVyaW5nLXBvbGljeSIsCisgICAgICAgICAg
ICAiQXVkaW8gUmVuZGVyaW5nIFBvbGljeSIsCisgICAgICAgICAgICBfKCJXaGV0aGVyIHRoZSB2
aWV3IGlzIGludGVybmFsbHkgcmVuZGVyaW5nIGF1ZGlvIiksCisgICAgICAgICAgICBXRUJLSVRf
VFlQRV9BVURJT19SRU5ERVJJTkdfUE9MSUNZLAorICAgICAgICAgICAgV0VCS0lUX0FVRElPX1JF
TkRFUklOR19QT0xJQ1lfSE9TVF9ERUZBVUxULAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1Bh
cmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZ
KSkpOworCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6bG9hZC1jaGFuZ2VkOgogICAg
ICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMg
ZW1pdHRlZApAQCAtMjI5Myw2ICsyMzI5LDIyIEBAIHZvaWQgd2Via2l0V2ViVmlld1dpbGxTdGFy
dExvYWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAvLyBjbGllbnQgYXBwbGljYXRpb24g
d2lsbCBzdGlsbCBzZWUgdGhlIFVSSSB1cGRhdGUgaW1tZWRpYXRlbHkuIE90aGVyd2lzZSwgdGhl
IFVSSSB1cGRhdGUgd2lsbCBiZSBkZWxheWVkIGEgYml0LgogICAgIHdlYlZpZXctPnByaXYtPmlz
QWN0aXZlVVJJQ2hhbmdlQmxvY2tlZCA9IHRydWU7CiAKKyAgICBXZWJLaXQ6OkF1ZGlvUmVuZGVy
aW5nUG9saWN5IHBvbGljeSA9IFdlYktpdDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZh
dWx0OworICAgIHN3aXRjaCAod2ViVmlldy0+cHJpdi0+YXVkaW9SZW5kZXJpbmdQb2xpY3kpIHsK
KyAgICBjYXNlIFdFQktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZX0hPU1RfREVGQVVMVDoKKyAg
ICAgICAgcG9saWN5ID0gV2ViS2l0OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQ7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lf
SU5URVJOQUxfTUlYSU5HOgorICAgICAgICBwb2xpY3kgPSBXZWJLaXQ6OkF1ZGlvUmVuZGVyaW5n
UG9saWN5OjpJbnRlcm5hbE1peGluZzsKKyAgICAgICAgYnJlYWs7CisjaWYgUExBVEZPUk0oV1BF
KQorICAgIGNhc2UgV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfRVhURVJOQUw6CisgICAg
ICAgIHBvbGljeSA9IFdlYktpdDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkV4dGVybmFsOworICAg
ICAgICBicmVhazsKKyNlbmRpZgorICAgIH0KKyAgICBnZXRQYWdlKHdlYlZpZXcpLnNldEF1ZGlv
UmVuZGVyaW5nUG9saWN5KHBvbGljeSk7CisKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBiZWZvcmUg
TmF2aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oKSwgdGhlIHBh
Z2UgbG9hZCBzdGF0ZSBoYXNuJ3QgYmVlbiBjb21taXR0ZWQgeWV0LgogICAgIGF1dG8mIHBhZ2VM
b2FkU3RhdGUgPSBnZXRQYWdlKHdlYlZpZXcpLnBhZ2VMb2FkU3RhdGUoKTsKICAgICBpZiAocGFn
ZUxvYWRTdGF0ZS5pc0ZpbmlzaGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGFjNTE2ODNiNjc1ZDVhOThiNjY1NTMyM2Y5YTUx
YzQ5ZTc2MjNhMWUuLjQ5NTcyYzM1OWU0YjQzYmM4ZDc4YjViMTdkMzE2ODczZTVlYTE5YWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBA
IC0yMDMsNiArMjAzLDE5IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX1dFQl9QUk9DRVNT
X0VYQ0VFREVEX01FTU9SWV9MSU1JVAogfSBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFz
b247CiAKKy8qKgorICogV2ViS2l0QXVkaW9SZW5kZXJpbmdQb2xpY3k6CisgKiBAV0VCS0lUX0FV
RElPX1JFTkRFUklOR19QT0xJQ1lfSE9TVF9ERUZBVUxUOiB1c2UgaG9zdCBhdWRpbyBkYWVtb24g
KHVzdWFsbHkgUHVsc2VBdWRpbykuCisgKiBAV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lf
SU5URVJOQUxfTUlYSU5HOiBwZXJmb3JtIGludGVybmFsIG1peGluZyBhbmQgcmVuZGVyIHRoZSBy
ZXN1bHRpbmcgc3RyZWFtIHRvIGhvc3QgYXVkaW8gZGFlbW9uLgorICogQXVkaW8gcmVuZGVyaW5n
IHBvbGljeS4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCit0eXBlZGVmIGVudW0geworICAgIFdF
QktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZX0hPU1RfREVGQVVMVCwKKyAgICBXRUJLSVRfQVVE
SU9fUkVOREVSSU5HX1BPTElDWV9JTlRFUk5BTF9NSVhJTkcsCit9IFdlYktpdEF1ZGlvUmVuZGVy
aW5nUG9saWN5OworCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIFdlYktpdFdlYlZpZXdC
YXNlIHBhcmVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggNjJiMGUx
MDg2YjA5OGYzMTUyZmNkMTc5M2ExM2FhMWQzZWViMDQ4My4uOWEwZjZhYWNkN2Q2YzVjNWQzMzk4
MTZlNWZkNDNmNjRhNzRlNjE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBA
IC0xOTksNiArMTk5LDcgQEAgV2ViS2l0U25hcHNob3RPcHRpb25zCiBXZWJLaXRTbmFwc2hvdFJl
Z2lvbgogV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uCiBXZWJLaXRBdXRvcGxheVBv
bGljeQorV2ViS2l0QXVkaW9SZW5kZXJpbmdQb2xpY3kKIAogPFNVQlNFQ1RJT04gRWRpdGluZyBD
b21tYW5kcz4KIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4IDIzMTQ5YjBiZjc0YWQwYjY2
ODM5MWZmOWQ2Y2YxZDk4ZmJjMTU4YTguLjE5Yjk2NjJhZmQwNGQzOGMxZmNmNzIwODdjYjBkN2Ji
ZWU3NTA5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
V2ViVmlldy5oCkBAIC0xODQsNiArMTg0LDIzIEBAIHR5cGVkZWYgZW51bSB7CiB0eXBlZGVmIHZv
aWQgKCogV2ViS2l0RnJhbWVEaXNwbGF5ZWRDYWxsYmFjaykgKFdlYktpdFdlYlZpZXcgKndlYl92
aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9p
bnRlciAgICAgICB1c2VyX2RhdGEpOwogCisKKy8qKgorICogV2ViS2l0QXVkaW9SZW5kZXJpbmdQ
b2xpY3k6CisgKiBAV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfSE9TVF9ERUZBVUxUOiB1
c2UgaG9zdCBhdWRpbyBkYWVtb24gKHVzdWFsbHkgUHVsc2VBdWRpbykuCisgKiBAV0VCS0lUX0FV
RElPX1JFTkRFUklOR19QT0xJQ1lfSU5URVJOQUxfTUlYSU5HOiBwZXJmb3JtIGludGVybmFsIG1p
eGluZyBhbmQgcmVuZGVyIHRoZSByZXN1bHRpbmcgc3RyZWFtIHRvIGhvc3QgYXVkaW8gZGFlbW9u
LgorICogQFdFQktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZX0VYVEVSTkFMOiBkZWZlciBhdWRp
byByZW5kZXJpbmcgdG8gYXBwbGljYXRpb24uCisgKgorICogQXVkaW8gcmVuZGVyaW5nIHBvbGlj
eS4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9B
VURJT19SRU5ERVJJTkdfUE9MSUNZX0hPU1RfREVGQVVMVCwKKyAgICBXRUJLSVRfQVVESU9fUkVO
REVSSU5HX1BPTElDWV9JTlRFUk5BTF9NSVhJTkcsCisgICAgV0VCS0lUX0FVRElPX1JFTkRFUklO
R19QT0xJQ1lfRVhURVJOQUwsCit9IFdlYktpdEF1ZGlvUmVuZGVyaW5nUG9saWN5OworCiBzdHJ1
Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIEdPYmplY3QgcGFyZW50OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50
eHQKaW5kZXggN2QxMjE0YjFjYjE1NzcyOGVlYTk1OWM4MGVjNjA0NjliODY0ODhhNC4uN2U2OGI0
Y2ZiOTdhMWQyOWQ4ZDMxM2UxZGZhMWNkMWU4NGExOGI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dApA
QCAtMTczLDYgKzE3Myw3IEBAIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50CiBXZWJLaXRXZWJQ
cm9jZXNzVGVybWluYXRpb25SZWFzb24KIFdlYktpdEZyYW1lRGlzcGxheWVkQ2FsbGJhY2sKIFdl
YktpdEF1dG9wbGF5UG9saWN5CitXZWJLaXRBdWRpb1JlbmRlcmluZ1BvbGljeQogCiA8U1VCU0VD
VElPTiBFZGl0aW5nIENvbW1hbmRzPgogV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGQ3ZjgyZjdiZTJmZWIzZjUx
ZTBmY2ZmYzJlMDI2ZGFiZTgxNjQ3ZmUuLjY5NjAzMWYwMWVmNTM3MmVjZmExNDUxOTRjZGZiZTY3
NWZkOTg4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
MjM3LDYgKzIzNywxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KICNl
bmRpZgogCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJBdWRpb1JlbmRlcmluZ1BvbGlj
eS5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJn
ZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KQEAgLTQ5
Niw2ICs1MDAsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdl
Q2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICAsIG1fdHJhbnNjb2RpbmdRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldl
YktpdC5JbWFnZVRyYW5zY29kaW5nIikpCiAjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAg
ICwgbV9hdWRpb1JlbmRlcmluZ1BvbGljeShBdWRpb1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1
bHQpCisjZW5kaWYKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb25z
dHJ1Y3RvcjoiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAz
MGIyNjk3YjBiZjdhY2VmZDQ4NGFhMjY2ODVjN2NjNTUzYzViZTdmLi40ZTIzZDQ0ZDA2YzE0MDc4
ZWJkZjQ5NTcxOTFiNTQ1ZWY1YzEyYWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMzY0LDYgKzM2NCwxMCBAQCBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQgOiBib29sOwogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKIGVudW0g
Y2xhc3MgV2ViQ29udGVudE1vZGUgOiB1aW50OF90OwogCisjaWYgVVNFKEdTVFJFQU1FUikKK2Vu
dW0gY2xhc3MgQXVkaW9SZW5kZXJpbmdQb2xpY3kgOiB1aW50OF90OworI2VuZGlmCisKIHR5cGVk
ZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RGF0YSo+IERhdGFDYWxsYmFjazsKIHR5cGVkZWYgR2Vu
ZXJpY0NhbGxiYWNrPHVpbnQ2NF90PiBVbnNpZ25lZENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmlj
Q2FsbGJhY2s8Y29uc3QgU3RyaW5nJj4gU3RyaW5nQ2FsbGJhY2s7CkBAIC0xNzg5LDYgKzE3OTMs
MTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBwcmVjb25uZWN0VG8oY29uc3QgVVJMJik7CiAKKyNp
ZiBVU0UoR1NUUkVBTUVSKQorICAgIEF1ZGlvUmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVuZGVyaW5n
UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1JlbmRlcmluZ1BvbGljeTsgfQorICAgIHZv
aWQgc2V0QXVkaW9SZW5kZXJpbmdQb2xpY3koQXVkaW9SZW5kZXJpbmdQb2xpY3kpOworI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJv
eHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemUoKTsKQEAgLTI4NDYsNiArMjg1NSwxMCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBSZWY8V29ya1F1ZXVlPiBtX3RyYW5zY29kaW5nUXVldWU7CiAjZW5kaWYKKwor
I2lmIFVTRShHU1RSRUFNRVIpCisgICAgQXVkaW9SZW5kZXJpbmdQb2xpY3kgbV9hdWRpb1JlbmRl
cmluZ1BvbGljeTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlH
U3RyZWFtZXIuY3BwCmluZGV4IGUzYWU1MTRiMDM3Y2U4Zjg4MDQ5OGFmZTEyYTFmOWVjMzFiYTY2
YjguLjhjMmJhZDVkMTRiMGQ2NzNkZDUxOWVmNzk5MzU4MmUzZmFjMTVmZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlH
U3RyZWFtZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAiQXVkaW9S
ZW5kZXJpbmdQb2xpY3kuaCIKICNpbmNsdWRlICJJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogCkBAIC00MSw2ICs0
MiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29ucwogICAgIHJlcXVlc3QtPmRlbnkoKTsKIH0K
IAordm9pZCBXZWJQYWdlUHJveHk6OnNldEF1ZGlvUmVuZGVyaW5nUG9saWN5KEF1ZGlvUmVuZGVy
aW5nUG9saWN5IHBvbGljeSkKK3sKKyAgICBtX2F1ZGlvUmVuZGVyaW5nUG9saWN5ID0gcG9saWN5
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QXVkaW9SZW5kZXJp
bmdQb2xpY3kocG9saWN5KSwgbV93ZWJQYWdlSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKaW5kZXggZWZjMDAzYmQwMTU5MTAwMDgyZGUzY2VmMWY2MDlmYTUyMjUxY2E1
YS4uMDY1YWNmOThmOGY3NDFlNWVmMWFmNDJkODg2MGQ5NDVjZmFhN2Q4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKQEAgLTEwMCw2ICsxMDAsMTAgQEAKICNpbmNsdWRlICJQcmludGVyTGlzdEd0
ay5oIgogI2VuZGlmCiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIkF1ZGlvUmVuZGVy
aW5nUG9saWN5LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAjaW5jbHVkZSA8
V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjZW5kaWYKQEAg
LTEzMDYsNiArMTMxMCwyMCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgYwogICAgIG1fcGFnZS5y
ZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoZGV0YWlscywgZGVzY3JpcHRpb24sIGNh
bGxiYWNrKTsKIH0KIAorQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ1BvbGljeSBXZWJDaHJv
bWVDbGllbnQ6OmF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1f
cGFnZS5hdWRpb1JlbmRlcmluZ1BvbGljeSgpKSB7CisgICAgY2FzZSBXZWJLaXQ6OkF1ZGlvUmVu
ZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIENocm9tZUNsaWVudDo6
QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OworICAgIGNhc2UgV2ViS2l0OjpBdWRp
b1JlbmRlcmluZ1BvbGljeTo6SW50ZXJuYWxNaXhpbmc6CisgICAgICAgIHJldHVybiBDaHJvbWVD
bGllbnQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpJbnRlcm5hbE1peGluZzsKKyAgICBjYXNlIFdl
YktpdDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkV4dGVybmFsOgorICAgICAgICByZXR1cm4gQ2hy
b21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6RXh0ZXJuYWw7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBDaHJvbWVD
bGllbnQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDsKK30KICNlbmRpZgogCiB2
b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCmluZGV4IGU3NWY0ODg1MmJmYTA2YjFhZDQwZTNiYmExZmEzY2MzZTNm
NDFhOGUuLjA3ZDNlNTY4YTJkNTE4NTg0NDk3N2YyNjM3YTY1OWJlYzAzZjQ5MjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKQEAgLTM3OSw2ICszNzksNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKQogICAgIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5nTWVk
aWFQbHVnaW5zKGNvbnN0IFN0cmluZyYgLypkZXRhaWxzKi8sIGNvbnN0IFN0cmluZyYgLypkZXNj
cmlwdGlvbiovLCBXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdp
bnNDYWxsYmFjayYpIGZpbmFsOworICAgIENocm9tZUNsaWVudDo6QXVkaW9SZW5kZXJpbmdQb2xp
Y3kgYXVkaW9SZW5kZXJpbmdQb2xpY3koKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAgICAgdm9p
ZCBkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkMjlhYTAxZDVhNjA2Mjg0
NjA1OWMzZGQxOTVmZDNhZDlkNWU1MDc5Li5lZTUyOGFkMzIzYTZhYTJhNjg3YWZiMDRjODkyOGMz
ZjhiNDBhNGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMzA5LDYgKzMwOSw3IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJBdWRpb1JlbmRlcmluZ1BvbGljeS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJh
Y2suaD4KICNlbmRpZgogCkBAIC0xNDE3LDYgKzE0MTgsNyBAQCB2b2lkIFdlYlBhZ2U6OmNsb3Nl
KCkKICAgICAgICAgbV9pbnN0YWxsTWVkaWFQbHVnaW5zQ2FsbGJhY2stPmludmFsaWRhdGUoKTsK
ICAgICAgICAgbV9pbnN0YWxsTWVkaWFQbHVnaW5zQ2FsbGJhY2sgPSBudWxscHRyOwogICAgIH0K
KyAgICBtX2F1ZGlvUmVuZGVyaW5nUG9saWN5ID0gQXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3RE
ZWZhdWx0OwogI2VuZGlmCiAKICAgICBtX3NhbmRib3hFeHRlbnNpb25UcmFja2VyLmludmFsaWRh
dGUoKTsKQEAgLTY1NDksNiArNjU1MSwxMyBAQCB2b2lkIFdlYlBhZ2U6OmFkZFVzZXJTY3JpcHQo
U3RyaW5nJiYgc291cmNlLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgVwogICAg
IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0KHdvcmxkLCBXVEZNb3ZlKHVz
ZXJTY3JpcHQpKTsKIH0KIAorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKK0F1
ZGlvUmVuZGVyaW5nUG9saWN5IFdlYlBhZ2U6OmF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9hdWRpb1JlbmRlcmluZ1BvbGljeTsKK30KKyNlbmRpZgorCiB2b2lk
IFdlYlBhZ2U6OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBXZWJDb3Jl
OjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewogICAgIFdlYkNv
cmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0IHtzb3VyY2UsIGFib3V0QmxhbmtVUkwo
KSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0ZWRGcmFtZXMsIFVz
ZXJTdHlsZVVzZXJMZXZlbCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IGExNTQ3NmMyNDY5ZTQ4N2NkYjE5OWEwODhhOGQ1YmEwNjE0ODU4ZWIuLjJl
N2RlMWI1NWFkZGUxMmE4Y2ZkZjg5MzgwOThlYTZhMTEyN2E0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTI4MSw2ICsyODEsMTAgQEAgZW51bSBj
bGFzcyBGaW5kT3B0aW9ucyA6IHVpbnQxNl90OwogZW51bSBjbGFzcyBEcmFnQ29udHJvbGxlckFj
dGlvbiA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSA6
IHVpbnQ4X3Q7CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorZW51bSBjbGFzcyBBdWRpb1JlbmRlcmlu
Z1BvbGljeSA6IHVpbnQ4X3Q7CisjZW5kaWYKKwogc3RydWN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZTsKIHN0cnVjdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Owogc3RydWN0IERvY3VtZW50RWRpdGlu
Z0NvbnRleHQ7CkBAIC0xMTUyLDYgKzExNTYsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVklE
RU8pICYmIFVTRShHU1RSRUFNRVIpCiAgICAgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRp
YVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFj
ayYpOworICAgIEF1ZGlvUmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29u
c3Q7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRkVXNlclNjcmlwdChTdHJpbmcmJiBzb3VyY2UsIElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJh
bWVzLCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7CkBAIC0xNzAxLDYgKzE3MDYs
NyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogICAg
IHZvaWQgZGlkRW5kUmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKHVpbnQzMl90IHJl
c3VsdCk7CisgICAgdm9pZCBzZXRBdWRpb1JlbmRlcmluZ1BvbGljeShBdWRpb1JlbmRlcmluZ1Bv
bGljeSBwb2xpY3kpIHsgbV9hdWRpb1JlbmRlcmluZ1BvbGljeSA9IHBvbGljeTsgfQogI2VuZGlm
CiAKICAgICB2b2lkIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24odWludDMyX3QpOwpA
QCAtMjA3OCw2ICsyMDg0LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNF
KEdTVFJFQU1FUikKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFs
bE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+IG1faW5zdGFsbE1lZGlhUGx1Z2luc0NhbGxiYWNrOwor
ICAgIEF1ZGlvUmVuZGVyaW5nUG9saWN5IG1fYXVkaW9SZW5kZXJpbmdQb2xpY3k7CiAjZW5kaWYK
IAogI2lmIFVTRShPU19TVEFURSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDcyZjAzODYxNjQ4Mzg2ZmJjODQxNTA4
NWMxNTNjZmVlNzUyNjc2YzYuLmZkYzM1OGNjNWIzOGFlNzQ0NWQ5M2Y4OGNiNWJiYmU2ZjNmOWM2
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtNTM3LDYgKzUzNyw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
CiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAgICAgRGlkRW5kUmVxdWVz
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKHVpbnQzMl90IHJlc3VsdCkKKyAgICBTZXRBdWRp
b1JlbmRlcmluZ1BvbGljeShlbnVtOnVpbnQ4X3QgV2ViS2l0OjpBdWRpb1JlbmRlcmluZ1BvbGlj
eSBwb2xpY3kpCiAjZW5kaWYKIAogICAgIFNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24o
dWludDMyX3QgZGlyZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRXUEVCYWNr
ZW5kX2Zkby5jbWFrZSBiL1NvdXJjZS9jbWFrZS9GaW5kV1BFQmFja2VuZF9mZG8uY21ha2UKaW5k
ZXggZDcwMWRmNTYyMmU3ZjZiZTIwZjQ3M2I3MjkyMmZiNDM1NjU4MzFmMS4uNDg3NTJkMDE2ODQw
YzFjNTE5NWU5YjZjZDY1YTg5MWNmMWJmNGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL0Zp
bmRXUEVCYWNrZW5kX2Zkby5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvRmluZFdQRUJhY2tlbmRf
ZmRvLmNtYWtlCkBAIC00Myw2ICs0MywxMSBAQCBmaW5kX2xpYnJhcnkoV1BFQkFDS0VORF9GRE9f
TElCUkFSSUVTCiAKIG1hcmtfYXNfYWR2YW5jZWQoV1BFQkFDS0VORF9GRE9fSU5DTFVERV9ESVJT
IFdQRUJBQ0tFTkRfRkRPX0xJQlJBUklFUykKIAorZmluZF9wYXRoKFdQRUJBQ0tFTkRfRkRPX0FV
RElPX0VYVEVOU0lPTgorICAgIE5BTUVTIHdwZS9leHRlbnNpb25zL2F1ZGlvLmgKKyAgICBISU5U
UyAke1BDX1dQRUJBQ0tFTkRfRkRPX0lOQ0xVREVESVJ9ICR7UENfV1BFQkFDS0VORF9GRE9fSU5D
TFVERV9ESVJTfQorKQorCiBpbmNsdWRlKEZpbmRQYWNrYWdlSGFuZGxlU3RhbmRhcmRBcmdzKQog
ZmluZF9wYWNrYWdlX2hhbmRsZV9zdGFuZGFyZF9hcmdzKFdQRUJhY2tlbmRfZmRvCiAgICAgUkVR
VUlSRURfVkFSUyBXUEVCQUNLRU5EX0ZET19JTkNMVURFX0RJUlMgV1BFQkFDS0VORF9GRE9fTElC
UkFSSUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtlIGIv
U291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZQppbmRleCBjYmYxZmUyMGVmNGFhNjRm
MDY1Zjk0MGVjOWI1MWNjZmNmNjRjYzgxLi5jODUwODc5MDE5NmQxNzJlZGViNDRjNmViZWI2YTRm
ZmRlY2MyMDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtl
CisrKyBiL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2UKQEAgLTM0LDYgKzM0LDE2
IEBAIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykKICAgICAgICAgbWVzc2Fn
ZShGQVRBTF9FUlJPUiAiR1N0cmVhbWVyR0wgaXMgbmVlZGVkIGZvciBVU0VfR1NUUkVBTUVSX0dM
LiIpCiAgICAgZW5kaWYgKCkKIAorICAgIGlmIChQT1JUIFNUUkVRVUFMICJXUEUiKQorICAgICAg
ICBmaW5kX3BhY2thZ2UoV1BFQmFja2VuZF9mZG8gMS43LjApCisgICAgICAgIGlmICgoTk9UIFdQ
RUJBQ0tFTkRfRkRPX0ZPVU5EKSBPUiBXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04gU1RS
RVFVQUwgIldQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTi1OT1RGT1VORCIpCisgICAgICAg
ICAgICBtZXNzYWdlKFdBUk5JTkcgIldQRUJhY2tlbmQtZmRvIGF1ZGlvIGV4dGVuc2lvbiBub3Qg
Zm91bmQuIERpc2FibGluZyBleHRlcm5hbCBhdWRpbyByZW5kZXJpbmcgc3VwcG9ydCIpCisgICAg
ICAgICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfV1BFQkFDS0VORF9GRE9fQVVESU9f
RVhURU5TSU9OIEZBTFNFKQorICAgICAgICBlbHNlICgpCisgICAgICAgICAgICBTRVRfQU5EX0VY
UE9TRV9UT19CVUlMRChVU0VfV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OIFRSVUUpCisg
ICAgICAgIGVuZGlmICgpCisgICAgZW5kaWYgKCkKKwogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JV
SUxEKFVTRV9HU1RSRUFNRVIgVFJVRSkKIGVuZGlmICgpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZGViMWQ1YTRhZDlhMGU2NmI1NDM1MmM5
NzljYTg2MGVlNmFkM2E5Li40YjIwNzNlMDY3OTZjYjVhZTlmZDg0YzZhMmI2NDE2NGZlY2I0YzQw
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzkgQEAKKzIwMjAtMDctMjIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEludGVybmFsIGF1ZGlvIHJlbmRlcmluZyBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDc2MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSBXUEUgQVBJIHRlc3QgZm9yIHRoZSBleHRlcm5hbC1hdWRpby1yZW5kZXJpbmcgcG9saWN5
IHN1cHBvcnQgYW5kIGFkZCBhIGNvbW1hbmQtbGluZQorICAgICAgICBhcmd1bWVudCB0byBhbGxv
dyBjb25maWd1cmluZyB0aGUgYXVkaW8gcmVuZGVyaW5nIHBvbGljeSBpbiB0aGUgR1RLIE1pbmlC
cm93c2VyLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAgICAgKGNy
ZWF0ZUJyb3dzZXJUYWIpOiBDb21tYW5kLWxpbmUgb3B0aW9uIGFsbG93aW5nIHRvIHN3aXRjaCBi
ZXR3ZWVuIHRoZSBob3N0LWRlZmF1bHQgYW5kCisgICAgICAgIGludGVybmFsLW1peGluZyBwb2xp
Y2llcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6IFdoaXRl
LWxpc3QgdGhlIG5ldyBhdWRpbyBzaW5rIGZyb20gdGhlIHN0eWxlIGNoZWNrZXIuCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZmlsZS13aXRoLXZpZGVvLmh0bWw6IE5ldyB1
dGlsaXR5IGZ1bmN0aW9ucyB0byBwYXVzZSBhbmQgc2VlayBpbiB0aGUgdmlkZW8uCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoK
KyAgICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6OnNldHVwKTogV1BFIHRlc3QgZm9y
IGV4dGVybmFsIGF1ZGlvIHJlbmRlcmluZyBzdXBwb3J0LiBBIHZpZGVvCisgICAgICAgIGZpbGUg
aXMgbG9hZGVkIHRocm91Z2ggdGhlIHdlYnZpZXcgYW5kIHRoZSB0ZXN0IHJlY2VpdmVzIG5vdGlm
aWNhdGlvbnMgZHVyaW5nIHBsYXliYWNrLiBJbgorICAgICAgICBvcmRlciB0byByZWR1Y2UgdGlt
ZW91dCByaXNrcywgYSBzZWVrIG5lYXIgdGhlIGVuZCBvZiB0aGUgdmlkZW8gaXMgcGVyZm9ybWVk
IGVhcmx5IG9uLgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6dGVhcmRvd24p
OgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6QXVkaW9SZW5kZXJpbmdXZWJW
aWV3VGVzdCk6CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0OjpoYW5kbGVTdGFy
dCk6CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0OjpoYW5kbGVTdG9wKToKKyAg
ICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6OmhhbmRsZVBhdXNlKToKKyAgICAgICAg
KEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6OmhhbmRsZVJlc3VtZSk6CisgICAgICAgIChBdWRp
b1JlbmRlcmluZ1dlYlZpZXdUZXN0OjpoYW5kbGVQYWNrZXQpOgorICAgICAgICAoQXVkaW9SZW5k
ZXJpbmdXZWJWaWV3VGVzdDo6d2FpdFVudGlsUGF1c2VkKToKKyAgICAgICAgKEF1ZGlvUmVuZGVy
aW5nV2ViVmlld1Rlc3Q6OndhaXRVbnRpbEVPUyk6CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dl
YlZpZXdUZXN0OjpzdGF0ZSBjb25zdCk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcDoKKyAgICAgICAg
KFdlYlZpZXdUZXN0Ojppbml0aWFsaXplV2ViVmlldyk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaDoKKyAgICAgICAgKiBidWlsZHN0cmVhbS9l
bGVtZW50cy9zZGsvd3BlYmFja2VuZC1mZG8uYnN0OiBCdW1wIHRvIGN1cnJlbnQgZ2l0IG1hc3Rl
ciwgMS43LngsIHdoaWNoIGhhcworICAgICAgICB0aGUgbmV3IGF1ZGlvIGV4dGVuc2lvbiwgdG8g
YmUgc2hpcHBlZCBpbiAxLjguMC4KKwogMjAyMC0wNy0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBJVFA6IHVzZSB0aGUg
ZGF0YWJhc2Ugc3RvcmUgdW5jb25kaXRpb25hbGx5CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCA2MWNi
NzI5ZTllOGUyNGQ4NWMwZDY3OGM2NGEzZGJhZTFjMDg1ZjYzLi44OTJjN2FlZjRhM2U0NjRhOGMw
N2JhNTkwOTcyMzE2NWU3ZmNmMDQ3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
bWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKQEAgLTU2LDYgKzU2LDcg
QEAgc3RhdGljIGNvbnN0IGNoYXIgKnByb3h5Owogc3RhdGljIGdib29sZWFuIGRhcmtNb2RlOwog
c3RhdGljIGdib29sZWFuIGVuYWJsZUlUUDsKIHN0YXRpYyBnYm9vbGVhbiBwcmludFZlcnNpb247
CitzdGF0aWMgZ2Jvb2xlYW4gaW50ZXJuYWxBdWRpb01peGluZzsKIAogdHlwZWRlZiBlbnVtIHsK
ICAgICBNSU5JX0JST1dTRVJfRVJST1JfSU5WQUxJRF9BQk9VVF9QQVRICkBAIC04MCwxMiArODEs
MTQgQEAgc3RhdGljIGdjaGFyICphcmd1bWVudFRvVVJMKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQog
CiBzdGF0aWMgV2ViS2l0V2ViVmlldyAqY3JlYXRlQnJvd3NlclRhYihCcm93c2VyV2luZG93ICp3
aW5kb3csIFdlYktpdFNldHRpbmdzICp3ZWJraXRTZXR0aW5ncywgV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyICp1c2VyQ29udGVudE1hbmFnZXIsIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqZGVmYXVs
dFdlYnNpdGVQb2xpY2llcykKIHsKKyAgICBXZWJLaXRBdWRpb1JlbmRlcmluZ1BvbGljeSBhdWRp
b1JlbmRlcmluZ1BvbGljeSA9IGludGVybmFsQXVkaW9NaXhpbmcgPyBXRUJLSVRfQVVESU9fUkVO
REVSSU5HX1BPTElDWV9JTlRFUk5BTF9NSVhJTkcgOiBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BP
TElDWV9IT1NUX0RFRkFVTFQ7CiAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IFdFQktJVF9X
RUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCiAgICAgICAgICJ3ZWIt
Y29udGV4dCIsIGJyb3dzZXJfd2luZG93X2dldF93ZWJfY29udGV4dCh3aW5kb3cpLAogICAgICAg
ICAic2V0dGluZ3MiLCB3ZWJraXRTZXR0aW5ncywKICAgICAgICAgInVzZXItY29udGVudC1tYW5h
Z2VyIiwgdXNlckNvbnRlbnRNYW5hZ2VyLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRv
bWF0aW9uIiwgYXV0b21hdGlvbk1vZGUsCiAgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgZGVm
YXVsdFdlYnNpdGVQb2xpY2llcywKKyAgICAgICAgImF1ZGlvLXJlbmRlcmluZy1wb2xpY3kiLCBh
dWRpb1JlbmRlcmluZ1BvbGljeSwKICAgICAgICAgTlVMTCkpOwogCiAgICAgaWYgKGVkaXRvck1v
ZGUpCkBAIC0xNDYsNiArMTQ5LDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5k
TGluZU9wdGlvbnNbXSA9CiAgICAgeyAiaWdub3JlLXRscy1lcnJvcnMiLCAwLCAwLCBHX09QVElP
Tl9BUkdfTk9ORSwgJmlnbm9yZVRMU0Vycm9ycywgIklnbm9yZSBUTFMgZXJyb3JzIiwgTlVMTCB9
LAogICAgIHsgImNvbnRlbnQtZmlsdGVyIiwgMCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FLCAm
Y29udGVudEZpbHRlciwgIkpTT04gd2l0aCBjb250ZW50IGZpbHRlcmluZyBydWxlcyIsICJGSUxF
IiB9LAogICAgIHsgImVuYWJsZS1pdHAiLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmVuYWJs
ZUlUUCwgIkVuYWJsZSBJbnRlbGxpZ2VudCBUcmFja2luZyBQcmV2ZW50aW9uIChJVFApIiwgTlVM
TCB9LAorICAgIHsgImludGVybmFsLWF1ZGlvLW1peGluZyIsICdpJywgMCwgR19PUFRJT05fQVJH
X05PTkUsICZpbnRlcm5hbEF1ZGlvTWl4aW5nLCAiUGVyZm9ybSBpbnRlcm5hbCBhdWRpbyBtaXhp
bmcgb2YgbXVsdGltZWRpYSBjb250ZW50IiwgTlVMTH0sCiAgICAgeyAidmVyc2lvbiIsICd2Jywg
MCwgR19PUFRJT05fQVJHX05PTkUsICZwcmludFZlcnNpb24sICJQcmludCB0aGUgV2ViS2l0R1RL
IHZlcnNpb24iLCBOVUxMIH0sCiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcsIDAsIDAsIEdfT1BU
SU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywgMCwgIltVUkzigKZdIiB9LAog
ICAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXIucHkKaW5kZXggNThiMTE2YmM3YWE0Y2YzOTcxYmZkOTgyNGQ3ZTM0OGZiZWMyNzRjMi4u
NGViZjBiZDhlNmU0ODM2MGRmZWQ1MmZmMzNhYTA2ZjUxOTVlZDUwYyAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMjIxLDYgKzIyMSw4IEBAIF9QQVRIX1JVTEVT
X1NQRUNJRklFUiA9IFsKICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAn
cGxhdGZvcm0nLCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ0dMVmlkZW9TaW5rR1N0cmVhbWVy
LmgnKSwKICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0n
LCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ1ZpZGVvU2lua0dTdHJlYW1lci5jcHAnKSwKICAg
ICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnZ3JhcGhp
Y3MnLCAnZ3N0cmVhbWVyJywgJ1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAnKSwKKyAgICAg
IG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnZ3JhcGhpY3Mn
LCAnZ3N0cmVhbWVyJywgJ1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5jcHAnKSwKKyAgICAgIG9z
LnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnZ3JhcGhpY3MnLCAn
Z3N0cmVhbWVyJywgJ1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5oJyksCiAgICAgICBvcy5wYXRo
LmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3JtJywgJ2F1ZGlvJywgJ2dzdHJlYW1l
cicsICdXZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAnKSwKICAgICAgIG9zLnBhdGgu
am9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnbWVkaWFzdHJlYW0nLCAnZ3N0
cmVhbWVyJywgJ0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmgnKSwKICAgICAgIG9zLnBhdGgu
am9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnbWVkaWFzdHJlYW0nLCAnZ3N0
cmVhbWVyJywgJ0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcCcpLApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZmlsZS13aXRoLXZpZGVvLmh0bWwgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9maWxlLXdpdGgtdmlkZW8uaHRtbAppbmRl
eCBhYTIyNTlhMGZjZTBiMGZkY2RlMDgxYWVkM2JkNzYwNzhjMzMwYmNlLi4wYjg3ZGJlZmEwZDc1
MzQxMWRjNDdlN2NkZjljODZkNDllNjdjNGY3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9maWxlLXdpdGgtdmlkZW8uaHRtbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9maWxlLXdpdGgtdmlkZW8uaHRtbApAQCAtNSw2ICs1LDE1IEBA
CiAgICAgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdC12aWRlbyIpLnBs
YXkoKTsKICAgICB9CisgICAgZnVuY3Rpb24gcGF1c2VWaWRlbygpCisgICAgeworICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdC12aWRlbyIpLnBhdXNlKCk7CisgICAgfQorICAg
IGZ1bmN0aW9uIHNlZWtOZWFyVGhlRW5kKCkKKyAgICB7CisgICAgICAgIGxldCB2aWRlbyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LXZpZGVvIik7CisgICAgICAgIHZpZGVvLmN1cnJl
bnRUaW1lID0gdmlkZW8uZHVyYXRpb24gLSAwLjU7CisgICAgfQogICA8L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggYWM3MDg0ODljOWYzZjIxNDg0NGNl
Y2Y4MmVmODMwZWJlYzZmMDhjYy4uOGZlZTQxODkwZDdiZTM5ZGEzYWQ4Y2YyZTIwYmQ4MGViYTY4
YTBiNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0yNCw2ICsyNCwxMCBAQAogI2luY2x1ZGUg
PGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCisjaWYgUExB
VEZPUk0oV1BFKSAmJiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorI2luY2x1
ZGUgPHdwZS9leHRlbnNpb25zL2F1ZGlvLmg+CisjZW5kaWYKKwogY2xhc3MgSXNQbGF5aW5nQXVk
aW9XZWJWaWV3VGVzdCA6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9H
TElCX1RFU1RfRklYVFVSRShJc1BsYXlpbmdBdWRpb1dlYlZpZXdUZXN0KTsKQEAgLTEzNDIsNiAr
MTM0NiwxMjkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGcmFtZURpc3BsYXllZChGcmFtZURp
c3BsYXllZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRG
T1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTikKK2VudW0gY2xh
c3MgUmVuZGVyaW5nU3RhdGUgeworICAgIFVua25vd24sCisgICAgU3RhcnRlZCwKKyAgICBQYXVz
ZWQsCisgICAgU3RvcHBlZAorfTsKKworY2xhc3MgQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdCA6
IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVS
RV9XSVRIX1NFVFVQX1RFQVJET1dOKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3QsIHNldHVwLCB0
ZWFyZG93bik7CisKKyAgICBzdGF0aWMgdm9pZCBzZXR1cCgpCisgICAgeworICAgICAgICBXZWJW
aWV3VGVzdDo6YXVkaW9SZW5kZXJpbmdQb2xpY3kgPSBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BP
TElDWV9FWFRFUk5BTDsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB0ZWFyZG93bigpCisgICAg
eworICAgICAgICBXZWJWaWV3VGVzdDo6YXVkaW9SZW5kZXJpbmdQb2xpY3kgPSBXRUJLSVRfQVVE
SU9fUkVOREVSSU5HX1BPTElDWV9IT1NUX0RFRkFVTFQ7CisgICAgfQorCisgICAgQXVkaW9SZW5k
ZXJpbmdXZWJWaWV3VGVzdCgpCisgICAgeworICAgICAgICB3cGVfYXVkaW9fcmVnaXN0ZXJfcmVj
ZWl2ZXIoJm1fYXVkaW9SZWNlaXZlciwgdGhpcyk7CisgICAgfQorCisgICAgdm9pZCBoYW5kbGVT
dGFydCh1aW50MzJfdCBpZCwgaW50MzJfdCBjaGFubmVscywgY29uc3QgY2hhciogbGF5b3V0LCBp
bnQzMl90IHNhbXBsZVJhdGUpCisgICAgeworICAgICAgICBnX2Fzc2VydChtX3N0YXRlID09IFJl
bmRlcmluZ1N0YXRlOjpVbmtub3duKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2UobV9zdHJlYW1J
ZC5oYXNWYWx1ZSgpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChpZCwgPT0sIDApOworICAg
ICAgICBtX3N0cmVhbUlkID0gaWQ7CisgICAgICAgIG1fc3RhdGUgPSBSZW5kZXJpbmdTdGF0ZTo6
U3RhcnRlZDsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KGNoYW5uZWxzLCA9PSwgMik7CisgICAg
ICAgIGdfYXNzZXJ0X2NtcHN0cihsYXlvdXQsID09LCAiUzE2TEUiKTsKKyAgICAgICAgZ19hc3Nl
cnRfY21waW50KHNhbXBsZVJhdGUsID09LCA0NDEwMCk7CisgICAgfQorCisgICAgdm9pZCBoYW5k
bGVTdG9wKHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludCgqbV9z
dHJlYW1JZCwgPT0sIGlkKTsKKyAgICAgICAgZ19hc3NlcnQobV9zdGF0ZSAhPSBSZW5kZXJpbmdT
dGF0ZTo6VW5rbm93bik7CisgICAgICAgIG1fc3RhdGUgPSBSZW5kZXJpbmdTdGF0ZTo6U3RvcHBl
ZDsKKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wKTsKKyAgICAgICAgbV9zdHJl
YW1JZC5yZXNldCgpOworICAgIH0KKworICAgIHZvaWQgaGFuZGxlUGF1c2UodWludDMyX3QgaWQp
CisgICAgeworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KCptX3N0cmVhbUlkLCA9PSwgaWQpOwor
ICAgICAgICBnX2Fzc2VydChtX3N0YXRlICE9IFJlbmRlcmluZ1N0YXRlOjpVbmtub3duKTsKKyAg
ICAgICAgbV9zdGF0ZSA9IFJlbmRlcmluZ1N0YXRlOjpQYXVzZWQ7CisgICAgfQorCisgICAgdm9p
ZCBoYW5kbGVSZXN1bWUodWludDMyX3QgaWQpCisgICAgeworICAgICAgICBnX2Fzc2VydF9jbXB1
aW50KCptX3N0cmVhbUlkLCA9PSwgaWQpOworICAgICAgICBnX2Fzc2VydChtX3N0YXRlID09IFJl
bmRlcmluZ1N0YXRlOjpQYXVzZWQpOworICAgICAgICBtX3N0YXRlID0gUmVuZGVyaW5nU3RhdGU6
OlN0YXJ0ZWQ7CisgICAgfQorCisgICAgdm9pZCBoYW5kbGVQYWNrZXQoc3RydWN0IHdwZV9hdWRp
b19wYWNrZXRfZXhwb3J0KiBwYWNrZXRfZXhwb3J0LCB1aW50MzJfdCBpZCwgaW50MzJfdCBmZCwg
dWludDMyX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoKm1fc3RyZWFt
SWQsID09LCBpZCk7CisgICAgICAgIGdfYXNzZXJ0KG1fc3RhdGUgPT0gUmVuZGVyaW5nU3RhdGU6
OlN0YXJ0ZWQgfHwgbV9zdGF0ZSA9PSBSZW5kZXJpbmdTdGF0ZTo6UGF1c2VkKTsKKyAgICAgICAg
Z19hc3NlcnRfY21wdWludChzaXplLCA+LCAwKTsKKyAgICAgICAgd3BlX2F1ZGlvX3BhY2tldF9l
eHBvcnRfcmVsZWFzZShwYWNrZXRfZXhwb3J0KTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRVbnRp
bFBhdXNlZCgpCisgICAgeworICAgICAgICBnX3RpbWVvdXRfYWRkKDIwMCwgW10oZ3BvaW50ZXIg
dXNlckRhdGEpIC0+IGdib29sZWFuIHsKKyAgICAgICAgICAgIGF1dG8qIHRlc3QgPSBzdGF0aWNf
Y2FzdDxBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0Kj4odXNlckRhdGEpOworICAgICAgICAgICAg
aWYgKHRlc3QtPnN0YXRlKCkgPT0gUmVuZGVyaW5nU3RhdGU6OlBhdXNlZCkgeworICAgICAgICAg
ICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOworICAgICAgICAgICAgICAgIHJldHVybiBHX1NP
VVJDRV9SRU1PVkU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gR19TT1VSQ0Vf
Q09OVElOVUU7CisgICAgICAgIH0sIHRoaXMpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9t
YWluTG9vcCk7CisgICAgfQorCisgICAgdm9pZCB3YWl0VW50aWxFT1MoKQorICAgIHsKKyAgICAg
ICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIFJlbmRlcmluZ1N0
YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQorCitwcml2YXRlOgorICAgIHN0
YXRpYyBjb25zdCBzdHJ1Y3Qgd3BlX2F1ZGlvX3JlY2VpdmVyIG1fYXVkaW9SZWNlaXZlcjsKKyAg
ICBSZW5kZXJpbmdTdGF0ZSBtX3N0YXRlIHsgUmVuZGVyaW5nU3RhdGU6OlVua25vd24gfTsKKyAg
ICBPcHRpb25hbDx1aW50MzJfdD4gbV9zdHJlYW1JZDsKK307CisKK2NvbnN0IHN0cnVjdCB3cGVf
YXVkaW9fcmVjZWl2ZXIgQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6bV9hdWRpb1JlY2VpdmVy
ID0geworICAgIFtdKHZvaWQqIGRhdGEsIHVpbnQzMl90IGlkLCBpbnQzMl90IGNoYW5uZWxzLCBj
b25zdCBjaGFyKiBsYXlvdXQsIGludDMyX3Qgc2FtcGxlUmF0ZSkgeyBzdGF0aWNfY2FzdDxBdWRp
b1JlbmRlcmluZ1dlYlZpZXdUZXN0Kj4oZGF0YSktPmhhbmRsZVN0YXJ0KGlkLCBjaGFubmVscywg
bGF5b3V0LCBzYW1wbGVSYXRlKTsgfSwKKyAgICBbXSh2b2lkKiBkYXRhLCBzdHJ1Y3Qgd3BlX2F1
ZGlvX3BhY2tldF9leHBvcnQqIHBhY2tldF9leHBvcnQsIHVpbnQzMl90IGlkLCBpbnQzMl90IGZk
LCB1aW50MzJfdCBzaXplKSB7IHN0YXRpY19jYXN0PEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Qq
PihkYXRhKS0+aGFuZGxlUGFja2V0KHBhY2tldF9leHBvcnQsIGlkLCBmZCwgc2l6ZSk7IH0sCisg
ICAgW10odm9pZCogZGF0YSwgdWludDMyX3QgaWQpIHsgc3RhdGljX2Nhc3Q8QXVkaW9SZW5kZXJp
bmdXZWJWaWV3VGVzdCo+KGRhdGEpLT5oYW5kbGVTdG9wKGlkKTsgfSwKKyAgICBbXSh2b2lkKiBk
YXRhLCB1aW50MzJfdCBpZCkgeyBzdGF0aWNfY2FzdDxBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0
Kj4oZGF0YSktPmhhbmRsZVBhdXNlKGlkKTsgfSwKKyAgICBbXSh2b2lkKiBkYXRhLCB1aW50MzJf
dCBpZCkgeyBzdGF0aWNfY2FzdDxBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0Kj4oZGF0YSktPmhh
bmRsZVJlc3VtZShpZCk7IH0KK307CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RXh0ZXJuYWxB
dWRpb1JlbmRlcmluZyhBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQoreworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VQYXRoKGdfYnVpbGRfZmlsZW5h
bWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKFRlc3Q6OldlYktpdDJSZXNvdXJjZXMpLmRhdGEoKSwg
ImZpbGUtd2l0aC12aWRlby5odG1sIiwgbnVsbHB0cikpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4g
cmVzb3VyY2VVUkwoZ19maWxlbmFtZV90b191cmkocmVzb3VyY2VQYXRoLmdldCgpLCBudWxscHRy
LCBudWxscHRyKSk7CisgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKHRlc3QtPm1fd2ViVmll
dywgcmVzb3VyY2VVUkwuZ2V0KCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OworCisgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJwbGF5Vmlk
ZW8oKTsiLCBudWxscHRyKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5zdGF0ZSgpID09IFJlbmRlcmlu
Z1N0YXRlOjpTdGFydGVkKTsKKyAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoInBhdXNlVmlkZW8oKTsiLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxQYXVz
ZWQoKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5zdGF0ZSgpID09IFJlbmRlcmluZ1N0YXRlOjpQYXVz
ZWQpOworCisgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJwbGF5
VmlkZW8oKTsgc2Vla05lYXJUaGVFbmQoKTsiLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50
aWxFT1MoKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5zdGF0ZSgpID09IFJlbmRlcmluZ1N0YXRlOjpT
dG9wcGVkKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2Vy
dmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBwYXRoLCBHSGFz
aFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikKIHsKICAgICBpZiAobWVzc2Fn
ZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkgewpAQCAtMTQwMiw2ICsxNTI5LDkgQEAgdm9p
ZCBiZWZvcmVBbGwoKQogI2VuZGlmCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmll
dyIsICJpcy1hdWRpby1tdXRlZCIsIHRlc3RXZWJWaWV3SXNBdWRpb011dGVkKTsKICAgICBXZWJW
aWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImF1dG9wbGF5LXBvbGljeSIsIHRlc3RXZWJW
aWV3QXV0b3BsYXlQb2xpY3kpOworI2lmIFBMQVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRf
RkRPX0FVRElPX0VYVEVOU0lPTikKKyAgICBBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0OjphZGQo
IldlYktpdFdlYlZpZXciLCAiZXh0ZXJuYWwtYXVkaW8tcmVuZGVyaW5nIiwgdGVzdFdlYlZpZXdF
eHRlcm5hbEF1ZGlvUmVuZGVyaW5nKTsKKyNlbmRpZgogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNw
cAppbmRleCA3YTEzZWI4Zjg0MDJkZjA1MTdhZjA2OGQ5MWQyYWZjZDA5ZGU5NjQ2Li44ZWMwODQ0
YTMzZmJmODRjZDMwNjQ2YTU4OTU1ZDZiMzI1NzY4YjUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAKIGJvb2wgV2ViVmlld1Rlc3Q6OnNob3VsZEluaXRpYWxpemVXZWJWaWV3SW5Db25zdHJ1
Y3RvciA9IHRydWU7CiBib29sIFdlYlZpZXdUZXN0OjpzaG91bGRDcmVhdGVFcGhlbWVyYWxXZWJW
aWV3ID0gZmFsc2U7CitXZWJLaXRBdWRpb1JlbmRlcmluZ1BvbGljeSBXZWJWaWV3VGVzdDo6YXVk
aW9SZW5kZXJpbmdQb2xpY3kgPSBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9IT1NUX0RF
RkFVTFQ7CiAKIFdlYlZpZXdUZXN0OjpXZWJWaWV3VGVzdCgpCiAgICAgOiBtX3VzZXJDb250ZW50
TWFuYWdlcihhZG9wdEdSZWYod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldygpKSkKQEAg
LTU5LDYgKzYwLDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6aW5pdGlhbGl6ZVdlYlZpZXcoKQogICAg
ICAgICAid2ViLWNvbnRleHQiLCBtX3dlYkNvbnRleHQuZ2V0KCksCiAgICAgICAgICJ1c2VyLWNv
bnRlbnQtbWFuYWdlciIsIG1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLAogICAgICAgICAiaXMt
ZXBoZW1lcmFsIiwgc2hvdWxkQ3JlYXRlRXBoZW1lcmFsV2ViVmlldywKKyAgICAgICAgImF1ZGlv
LXJlbmRlcmluZy1wb2xpY3kiLCBhdWRpb1JlbmRlcmluZ1BvbGljeSwKICAgICAgICAgbnVsbHB0
cikpOwogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZVdlYlZpZXcoKTsKICAgICBhc3NlcnRPYmplY3RJ
c0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1fd2ViVmlldykpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKaW5kZXggNzBk
NzkzN2E4YWI1ZWJhMWVlMDQxNGZlNTcyMWU0NGMxN2QzZTkyNS4uNzgzYzUwNzgyMjhkNzk1NGVh
NmEzN2QwN2UyYWQ2MWM1MzlmOGQxMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCkBAIC0zMSw2ICszMSw4IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBib29sIHNob3VsZEluaXRpYWxpemVXZWJWaWV3SW5Db25zdHJ1Y3RvcjsKICAg
ICBzdGF0aWMgYm9vbCBzaG91bGRDcmVhdGVFcGhlbWVyYWxXZWJWaWV3OworICAgIHN0YXRpYyBX
ZWJLaXRBdWRpb1JlbmRlcmluZ1BvbGljeSBhdWRpb1JlbmRlcmluZ1BvbGljeTsKKwogICAgIHZv
aWQgaW5pdGlhbGl6ZVdlYlZpZXcoKTsKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2Vi
VmlldygpOwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDRjOGMxM2Vi
N2NjNTJmZmYzNDAyNDBjNGVhNjQwY2M4ODc2MjM0N2IuLjVkODJlZDVlNTg1MjY2NzIyNTNmYzBk
MDE4MGQwMzVjODJmY2QxYjAgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNy0yMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gSW50ZXJuYWwgYXVkaW8gcmVuZGVy
aW5nIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU291cmNlL2NtYWtlL0ZpbmRXUEVCYWNrZW5kX2Zkby5jbWFrZTogQ2hlY2sgZm9yIHRo
ZSBhdWRpbyBleHRlbnNpb24gaGVhZGVyLiBDdXJyZW50bHkKKyAgICAgICAgb25seSBpbiBnaXQg
bWFzdGVyLCB1cGNvbWluZyAxLjguMCByZWxlYXNlLgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9H
U3RyZWFtZXJDaGVja3MuY21ha2U6IENoZWNrIGFuZCBlbmFibGUgZXh0ZXJuYWwgYXVkaW8gcmVu
ZGVyaW5nIHN1cHBvcnQgaWYKKyAgICAgICAgdGhlIFdQRUJhY2tlbmQtRkRPIGF1ZGlvIGV4dGVu
c2lvbiB3YXMgZm91bmQuCisKIDIwMjAtMDctMjEgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxh
cGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgT3B0aW9uc1dQ
RS5jbWFrZSBhbmQgTkVXUyBmb3IgdGhlIDIuMjkuMSByZWxlYXNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405026</attachid>
            <date>2020-07-23 02:28:05 -0700</date>
            <delta_ts>2020-07-23 07:07:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207634-20200723022803.patch</filename>
            <type>text/plain</type>
            <size>103345</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Njk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGI3ZTQwOWFkNWIyNDJm
YmY2OGE0NTE5MzE5NjhhYTNiOTIyYjM2Ny4uNjYyMjFkNmM1MTQ1YmQ5M2VhZmFlMDZkY2E3ZjVk
NjU1MDEyYzBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAyMC0wNy0yMiAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1l
cl0gSW50ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBhIG5ldyBHU3RyZWFtZXIgYXVkaW9S
ZW5kZXJpbmdQb2xpY3koKSBBUEkgaW4gdGhlIENocm9tZUNsaWVudC4gSXQgaXMgdXNlZCBhdCB0
aGUKKyAgICAgICAgcGxhdGZvcm0gbGV2ZWwgYnkgdGhlIEdTdHJlYW1lciBiYWNrZW5kcyB3aGVu
IHRoZXkgbmVlZCB0byBkZWNpZGUgd2hpY2ggYXVkaW8gc2luayB0aGV5CisgICAgICAgIHNob3Vs
ZCB1c2UgZm9yIHJlbmRlcmluZy4KKworICAgICAgICBXaGVuIEludGVybmFsTWl4aW5nIGhhcyBi
ZWVuIGVuYWJsZWQgYXQgdGhlIFVJUHJvY2VzcyBsZXZlbCwgdGhlIGNvcnJlc3BvbmRpbmcgV2Vi
UHJvY2VzcworICAgICAgICB3aWxsIGhhdmUgaXRzIEdTdHJlYW1lciBiYWNrZW5kcyByZW5kZXIg
dG8gZGVkaWNhdGVkIFdlYktpdCBhdWRpbyBzaW5rcy4gVGhvc2Ugd2lsbCBmb3J3YXJkCisgICAg
ICAgIGJ1ZmZlcnMgdG8gYSBzaW5nbGV0b24gYXVkaW8gbWl4ZXIuIFRoZSByZXN1bHRpbmcgYXVk
aW8gc3RyZWFtIHdpbGwgdGhlbiBiZSByZW5kZXJlZCB0aHJvdWdoCisgICAgICAgIGhvc3QgZGVm
YXVsdCBhdWRpbyBzaW5rIChQdWxzZUF1ZGlvIGluIG1vc3QgY2FzZXMpLiBVc2luZyB0aGlzIGFw
cHJvYWNoLCBhcHBsaWNhdGlvbnMgd2lsbAorICAgICAgICBtYWludGFpbiBhIHNpbmdsZSBjb25u
ZWN0aW9uIHRvIHRoZSBhdWRpbyBkYWVtb24uCisKKyAgICAgICAgV2hlbiBFeHRlcm5hbCBoYXMg
YmVlbiBlbmFibGVkIGF0IHRoZSBXUEUgVUlQcm9jZXNzIGxldmVsLCB0aGUgV2ViS2l0IGF1ZGlv
IHNpbmtzIHJ1bm5pbmcgaW4KKyAgICAgICAgdGhlIFdlYlByb2Nlc3Mgd2lsIGZvcndhcmQgYXVk
aW8gc2FtcGxlcyB0byB0aGUgVUlQcm9jZXNzLCB1c2luZyBhIFdheWxhbmQgcHJvdG9jb2wgZGVm
aW5lZAorICAgICAgICBpbiB0aGUgV1BFQmFja2VuZC1GRE8gYmFja2VuZCBhbmQgZXhwb3NlZCB0
aHJvdWdoIGl0cyBhdWRpbyBleHRlbnNpb24uIFRoaXMgY2xpZW50LXNpZGUKKyAgICAgICAgcmVu
ZGVyaW5nIHN1cHBvcnQgYWxsb3dzIGFwcGxpY2F0aW9ucyB0byBoYXZlIGZ1bGwgY29udHJvbCBv
biB0aGUgYXVkaW8gc2FtcGxlcyByZW5kZXJpbmcuCisKKyAgICAgICAgRXhpc3RpbmcgbGF5b3V0
IHRlc3RzIGNvdmVyIHRoZSBIb3N0RGVmYXVsdCBwb2xpY3kuIEludGVybmFsTWl4aW5nIHNob3Vs
ZCBiZSBjb25zaWRlcmVkIGEKKyAgICAgICAgdGVjaG5vbG9neSBwcmV2aWV3IGFuZCBjYW4ndCBi
ZSBlbmFibGVkIGJ5IGRlZmF1bHQgeWV0LCBiZWNhdXNlIGF1ZGlvbWl4ZXIgbGFja3Mgc29tZQor
ICAgICAgICBmZWF0dXJlcyBzdWNoIGFzIHJldmVyc2UgcGxheWJhY2sgc3VwcG9ydC4gRXh0ZXJu
YWwgYXVkaW8gcmVuZGVyaW5nIHBvbGljeSBpcyBjb3ZlcmVkIGJ5IGEKKyAgICAgICAgbmV3IFdQ
RSBBUEkgdGVzdC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0
aW9uTm9kZTo6Y3JlYXRlRGVzdGluYXRpb24pOiBLZWVwIHRyYWNrIG9mIHRoZSBhdWRpbyByZW5k
ZXJpbmcKKyAgICAgICAgcG9saWN5IGNvbmZpZ3VyZWQgb24gdGhlIHBhZ2UuIFRoaXMgaXMgdGhl
biB1c2VkIGJ5IHRoZSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKKyAgICAgICAgQXVk
aW9EZXN0aW5hdGlvbk5vZGUuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJBdWRpb1Jl
bmRlcmluZ1BvbGljeSBjb25zdCk6IERpdHRvLCBidXQgZm9yCisgICAgICAgIEhUTUxNZWRpYUVs
ZW1lbnQgYW5kIGl0cyB1bmRlcmx5aW5nIE1lZGlhUGxheWVyUHJpdmF0ZS4KKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjphdWRpb1JlbmRlcmluZ1BvbGljeSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0F1ZGlvSU9DYWxsYmFjay5oOiBEaXR0bywgYnV0IGZvciB0aGUgV2ViQXVkaW8g
QXVkaW9JT0NhbGxiYWNrIGFuZCB0aGUKKyAgICAgICAgdW5kZXJseWluZyBBdWRpb0Rlc3RpbmF0
aW9uTm9kZSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvSU9DYWxsYmFj
azo6YXVkaW9SZW5kZXJpbmdQb2xpY3kgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIp
OiBDcmVhdGUgc2luayBkZXBlbmRpbmcgb24KKyAgICAgICAgc2VsZWN0ZWQgYXVkaW8gcmVuZGVy
aW5nIHBvbGljeSBhbmQgcHJvYmUgcGxhdGZvcm0gZm9yIGEgd29ya2luZyBhdWRpbyBvdXRwdXQg
ZGV2aWNlIG9ubHkKKyAgICAgICAgd2hlbiB0aGUgV2ViS2l0IGN1c3RvbSBhdWRpbyBzaW5rIGhh
c24ndCBiZWVuIHNlbGVjdGVkLiBUaGlzIGlzIG5lZWRlZCBvbmx5IGZvciB0aGUKKyAgICAgICAg
YXV0b2F1ZGlvc2luayBjYXNlLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y29uZmlndXJlQXVkaW9CaW4pOiBJbnN0
ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IHNpbmssCisgICAgICAgIGVtYmVkIHRoZSBvbmUgcHJvdmlk
ZWQgYnkgdGhlIHBsYXllciBpbnRvIHRoZSBhdWRpbyBiaW4uIFRoZSByZXN1bHRpbmcgYmluIGJl
Y29tZXMgdGhlCisgICAgICAgIHBsYXllciBhdWRpbyBzaW5rIGFuZCBpdCdzIGFibGUgdG8gcmVu
ZGVyIGJvdGggdG8gdGhlIFdlYkF1ZGlvIHByb3ZpZGVyIGFuZCB0aGUgdXN1YWwgc2luaywgYXMg
YmVmb3JlLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVBy
b3ZpZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmF1ZGlvUmVuZGVyaW5nUG9s
aWN5IGNvbnN0KTogUHJveHkgdGhlIGF1ZGlvIHJlbmRlcmluZyBwb2xpY3kgZnJvbQorICAgICAg
ICB0aGUgbWVkaWEgcGxheWVyIGNsaWVudCAoZWcgbWVkaWEgZWxlbWVudCB1c3VhbGx5KSB0byB0
aGUgcHJpdmF0ZSBwbGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckF1ZGlvUmVuZGVy
aW5nUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50Ojpt
ZWRpYVBsYXllclNob3VsZEludGVybmFsbHlSZW5kZXJBdWRpbyBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oOgorICAgICAgICAoV1RGOjpMb2dB
cmd1bWVudDxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeT46
OnRvU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQXVkaW9NaXhlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVk
aW9NaXhlcjo6aXNBbGxvd2VkKTogVGhlIG1peGVyIHJlcXVpcmVzIGEgcmVjZW50IEdTdHJlYW1l
ciB2ZXJzaW9uIGFuZAorICAgICAgICB0aGUgaW50ZXIgcGx1Z2luIChzaGlwcGVkIGluIGdzdC1w
bHVnaW5zLWJhZCB1bnRpbCB2ZXJzaW9uIDEuMjAgYXQgbGVhc3QpLgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6c2luZ2xldG9uKTogRW50cnkgcG9pbnQgZm9yIHRoZSBt
aXhlci4gVGhpcyBpcyB3aGVyZSB0aGUKKyAgICAgICAgc2luZ2xldG9uIGlzIGNyZWF0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb01peGVyOjpHU3RyZWFtZXJBdWRpb01peGVy
KTogQ29uZmlndXJlIHRoZSBzdGFuZGFsb25lIG1peGVyCisgICAgICAgIHBpcGVsaW5lLgorICAg
ICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6fkdTdHJlYW1lckF1ZGlvTWl4ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6ZW5zdXJlU3RhdGUpOiBM
YXppbHkgc3RhcnQvc3RvcCB0aGUgbWl4ZXIsIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgICAgbnVt
YmVyIG9mIGluY29taW5nIHN0cmVhbXMuIFRoZSBwaXBlbGluZSBzdGFydHMgd2hlbiB0aGUgZmly
c3QgaW5jb21pbmcgc3RyZWFtIGlzIGNvbm5lY3RlZCwKKyAgICAgICAgYW5kIHN0b3BzIHdoZW4g
dGhlIGxhc3Qgc3RyZWFtIGRpc2FwcGVhcnMuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJB
dWRpb01peGVyOjpyZWdpc3RlclByb2R1Y2VyKTogQ2xpZW50IHBpcGVsaW5lcyByZXF1aXJlIGFu
IGludGVyYXVkaW9zaW5rLCB0aGV5CisgICAgICAgIHdpbGwgcmVuZGVyIHRvIHRoYXQgc2luaywg
d2hpY2ggaW50ZXJuYWxseSBmb3J3YXJkcyBkYXRhIHRvIGEgdHdpbiBpbnRlcmF1ZGlvc3JjIGVs
ZW1lbnQsCisgICAgICAgIGNvbm5lY3RlZCB0byB0aGUgYXVkaW9taXhlci4KKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lckF1ZGlvTWl4ZXI6OnVucmVnaXN0ZXJQcm9kdWNlcik6IEdldCByaWQg
b2YgYW4gaW50ZXJhdWRpb3NpbmsgYW5kIGl0cyBpbnRlcmF1ZGlvc3JjLgorICAgICAgICBUaGlz
IGlzIGNhbGxlZCBieSB0aGUgV2ViS2l0IGF1ZGlvIHNpbmsgd2hlbiB0aGUgZWxlbWVudCBpcyBi
ZWluZyBkaXNwb3NlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQXVkaW9NaXhlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxp
emVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRzKTogUmVnaXN0ZXIgbmV3IGF1ZGlv
IHNpbmsgZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF1ZGlvU2lua0ZvclBvbGlj
eSk6IE5ldyB1dGlsaXR5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbiBhdWRpbyBzaW5rIGJhc2VkIG9u
CisgICAgICAgIHRoZSBzZWxlY3RlZCByZW5kZXJpbmcgcG9saWN5LgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6fk1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnNlZWspOiBEcml2ZS1ieSBjbGVhbi11cCwgbm8gbmVlZCB0byBjcmVhdGUg
dGhlIHNlZWsKKyAgICAgICAgTWVkaWF0aW1lIGJlZm9yZSB0aGUgZWFybHkgcmV0dXJuIGNoZWNr
aW5nIHRoaXMgaXMgYSBsaXZlIHN0cmVhbS4KKyAgICAgICAgKFdlYkNvcmU6OnNldFN5bmNPbkNs
b2NrKTogRml4dXAgY29kZSBzdHlsZSBpbiB0aGlzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlQXVkaW9TaW5rKTogVXNlIG5ldyBj
cmVhdGVBdWRpb1NpbmtGb3JQb2xpY3koKQorICAgICAgICB1dGlsaXR5IGZ1bmN0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NpbmsgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVh
dGVHU1RQbGF5QmluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5jcHA6IEFkZGVkLiBUaGlzIHNpbmsg
Y2FuIGVpdGhlcgorICAgICAgICBmb3J3YXJkIGluY29taW5nIHNhbXBsZXMgdG8gdGhlIHNoYXJl
ZCBhdWRpb21peGVyIHJ1bm5pbmcgaW4gaXRzIG93biBwaXBlbGluZSwgb3IgZm9yd2FyZAorICAg
ICAgICBzYW1wbGVzIHRvIHRoZSBVSVByb2Nlc3MgdXNpbmcgdGhlIFdQRUJhY2tlbmQtRkRPIGF1
ZGlvIGV4dGVuc2lvbi4KKyAgICAgICAgKEF1ZGlvUGFja2V0SG9sZGVyOjpBdWRpb1BhY2tldEhv
bGRlcik6IFdyYXBwZXIgYXJvdW5kIGF1ZGlvIGJ1ZmZlcnMsIGluIGNoYXJnZSBvZiBjcmVhdGlu
ZworICAgICAgICB0aGUgY29ycmVzcG9uZGluZyBtZW1mZCBkZXNjcmlwdG9yIGFuZCBhbHNvIGtl
ZXBpbmcgdHJhY2sgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgd3BlX2F1ZGlvX3BhY2tl
dF9leHBvcnQuCisgICAgICAgIChBdWRpb1BhY2tldEhvbGRlcjo6fkF1ZGlvUGFja2V0SG9sZGVy
KToKKyAgICAgICAgKEF1ZGlvUGFja2V0SG9sZGVyOjptYXApOiBDcmVhdGUgdGhlIG1lbWZkIGRl
c2NyaXB0b3IgYW5kIHJldHVybiBpdCBhbG9uZyB3aXRoIHRoZSBidWZmZXIgc2l6ZS4KKyAgICAg
ICAgKHdlYktpdEF1ZGlvU2lua0hhbmRsZVNhbXBsZSk6IEZvcndhcmQgaW5jb21pbmcgc2FtcGxl
cyB1c2luZyB0aGUgV1BFQmFja2VuZC1GRE8gYXVkaW8KKyAgICAgICAgZXh0ZW5zaW9uLiBUaGUg
d3BlX2F1ZGlvX3NvdXJjZSBzdGFydCBpcyBzeW5jaHJvbml6ZWQgd2l0aCB0aGUgYnVmZmVyIGZs
b3cuCisgICAgICAgICh3ZWJLaXRBdWRpb1NpbmtDb25zdHJ1Y3RlZCk6IFdoZW4gaW50ZXJuYWwg
bWl4aW5nIGhhcyBiZWVuIHJlcXVlc3RlZCwgY3JlYXRlIGFuCisgICAgICAgIGludGVyYXVkaW9z
aW5rIHRvIHdoaWNoIHNhbXBsZXMgd2lsbCBiZSBzZW50LiBJbnRlcm5hbGx5IHRoZSBpbnRlcmF1
ZGlvc2luayB3aWxsIGZvcndhcmQKKyAgICAgICAgZGF0YSB0byBpdHMgaW50ZXJhdWRpb3NyYyB3
aGljaCBpcyBjb25uZWN0ZWQgdG8gdGhlIGF1ZGlvbWl4ZXIuIE90aGVyd2lzZSwgaWYgZXh0ZXJu
YWwKKyAgICAgICAgcmVuZGVyaW5nIGhhcyBiZWVuIHJlcXVlc3RlZCwgY3JlYXRlIGFuIGFwcHNp
bmsgaW4gb3JkZXIgdG8gcmVsYXkgc2FtcGxlcyB0byB0aGUgVUlQcm9jZXNzLgorICAgICAgICAo
d2ViS2l0QXVkaW9TaW5rRGlzcG9zZSk6CisgICAgICAgIChnZXRJbnRlcm5hbFZvbHVtZU9iamVj
dCk6IFdoZW4gaW50ZXJuYWwgbWl4aW5nIGlzIGVuYWJsZWQsIHZvbHVtZSBhbmQgbXV0ZSBzdGF0
ZXMgYXJlCisgICAgICAgIHRyYWNrZWQgd2l0aGluIHRoZSBhdWRpb21peGVyIHNpbmsgcGFkcy4g
T3RoZXJ3aXNlIG91ciBhdWRpbyBzaW5rIG1hbmFnZXMgdGhpcyB1c2luZyBhIHZvbHVtZQorICAg
ICAgICBlbGVtZW50LgorICAgICAgICAod2ViS2l0QXVkaW9TaW5rU2V0UHJvcGVydHkpOiBQcm94
eSB2b2x1bWUgYW5kIG11dGUgcHJvcGVydGllcyBmcm9tIHRoZSBpbnRlcm5hbCB2b2x1bWUgcHJv
eHkuCisgICAgICAgICh3ZWJLaXRBdWRpb1NpbmtHZXRQcm9wZXJ0eSk6IERpdHRvLgorICAgICAg
ICAod2ViS2l0QXVkaW9TaW5rQ2hhbmdlU3RhdGUpOiBLZWVwIHRoZSBXUEUgYXVkaW8gc291cmNl
IHN0YXRlIHN5bmNocm9uaXplZCB3aXRoIHRoZSBlbGVtZW50CisgICAgICAgIHN0YXRlLCBpbiBv
cmRlciB0byBrbm93IHdoZW4gdGhlIHBhdXNlL3Jlc3VtZSBub3RpZmljYXRpb25zIHNob3VsZCBi
ZSBzZW50IHRvIHRoZSBVSVByb2Nlc3MuCisgICAgICAgIFRoaXMgaXMgYWxzbyB3aGVyZSBtYWlu
dGFpbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGludGVyYXVkaW9zaW5rIGFuZCB0aGUg
YXVkaW9taXhlciwgd2hlbgorICAgICAgICBpdCdzIGVuYWJsZWQuCisgICAgICAgICh3ZWJraXRf
YXVkaW9fc2lua19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdEF1ZGlvU2lua05ldyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJl
YW1lci5oOiBBZGRlZC4KKwogMjAyMC0wNy0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIGxpdmUgcmFuZ2VzIGZyb20gRWRpdG9yLmggYW5kIEVkaXRv
ckNsaWVudC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYzY2RkMmFhN2I0YTkwMmQxZjBkYzQzZGUxMDY1OGE5OWE1
MGMzZDkuLmVhYTU5YjkwMTMzMWU2ZmYyMjIwMzNmOTVjZDg5OWU3MWJhZTU2YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTEgQEAKKzIwMjAtMDctMjIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEludGVybmFsIGF1ZGlvIHJlbmRl
cmluZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc2MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBbiBhdWRpbyByZW5kZXJpbmcgcG9saWN5IHByb3BlcnR5IGlzIGludHJvZHVjZWQgaW4g
dGhlIFdQRSBhbmQgR1RLIHBvcnRzLiBDdXJyZW50bHkgaXQgaGFzCisgICAgICAgIDMgdmFsdWVz
LCBIb3N0RGVmYXVsdCAoZGVmYXVsdCksIEludGVybmFsTWl4aW5nIGFuZCBFeHRlcm5hbCAod2hp
Y2ggaXMgc3VwcG9ydGVkIG9ubHkgaW4gV1BFKS4KKworICAgICAgICBXaGVuIEludGVybmFsTWl4
aW5nIGlzIHNlbGVjdGVkLCBhIHNpbmdsZSBjb25uZWN0aW9uIHRvIHRoZSBob3N0IHNvdW5kIGRh
ZW1vbiB3aWxsIGJlCisgICAgICAgIG1haW50YWluZWQuIFRoZSB2YXJpb3VzIGludGVybmFsIEdT
dHJlYW1lciBiYWNrZW5kcyB3aWxsIHVzZSBhbiBpbnRlcm5hbCBhdWRpbyBzaW5rCisgICAgICAg
IHBlcmZvcm1pbmcgdGhlIG1peGluZy4gVGhlIHNpbmsgd2lsbCByZWxheSB0aGUgcmVzdWx0aW5n
IGF1ZGlvIHN0cmVhbSB0byB0aGUgaG9zdCBhdWRpbworICAgICAgICBkYWVtb24gKHVzdWFsbHkg
UHVsc2VBdWRpbykuCisKKyAgICAgICAgSW4gV1BFIHdoZW4gdGhlIEV4dGVybmFsIHBvbGljeSBp
cyBzZWxlY3RlZCwgYXVkaW8gc2FtcGxlcyB3aWxsIG5vIGxvbmdlciBiZSByZW5kZXJlZCBieQor
ICAgICAgICBXZWJLaXQsIGJ1dCBieSB0aGUgYXBwbGljYXRpb24uIFRvIHN1cHBvcnQgdGhpcyB1
c2UtY2FzZSwgdGhlIEZETyBXUEVCYWNrZW5kIG5vdyBleHBvc2VzIGFuCisgICAgICAgIGF1ZGlv
IHByb3RvY29sLCBpbiBjaGFyZ2Ugb2YgcmVsYXlpbmcgc2FtcGxlcyBmcm9tIHRoZSBXZWJQcm9j
ZXNzIHRvIHRoZSBVSVByb2Nlc3MsIHVzaW5nCisgICAgICAgIFdheWxhbmQgSVBDLiBUaGUgYXBw
bGljYXRpb24gaGFzIHRvIHJlZ2lzdGVyIGEgd3BlX2F1ZGlvX3JlY2VpdmVyIGFuZCBpbXBsZW1l
bnQgaXRzCisgICAgICAgIGNhbGxiYWNrcywgaW4gb3JkZXIgdG8gYmUgbm90aWZpZWQgb2YgdGhl
IGF1ZGlvIHNhbXBsZXMgYW5kIHN0YXRlIGNoYW5nZXMuIFNlZSB0aGUgQVBJIHRlc3RzCisgICAg
ICAgIGZvciBhbiBleGFtcGxlIG9mIGhvdyB0byBkbyB0aGlzLgorCisgICAgICAgICogU2hhcmVk
L0F1ZGlvUmVuZGVyaW5nUG9saWN5Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0
eSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0
X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViVmlld1dpbGxTdGFydExv
YWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9hdWRpb1JlbmRl
cmluZ1BvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF1ZGlvUmVuZGVyaW5nUG9saWN5IGNvbnN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0QXVkaW9SZW5kZXJpbmdQb2xpY3kpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjphdWRpb1JlbmRlcmluZ1BvbGljeSBj
b25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXVk
aW9SZW5kZXJpbmdQb2xpY3kgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEF1ZGlvUmVuZGVyaW5nUG9s
aWN5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KwogMjAyMC0wNy0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS11bV1BFXSBJVFA6IHVzZSB0aGUgZGF0YWJhc2Ugc3RvcmUgdW5jb25k
aXRpb25hbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggZGQ2N2NmZGUwMzRm
NjcyMzYwYjJjMjJlNjVmZDlmMTA5MTk3MjZhZC4uMGQwYTY0N2ZkYTI1ZWU3M2FkZDFjOWNlYjdk
ZWQ1OTNmZmIzNWViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMzAsNiAr
MzAsOSBAQAogCiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0
aW5hdGlvbi5oIgorI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik1lZGlhU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKQEAgLTg3
LDYgKzkwLDI0IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGVEZXN0
aW5hdGlvbigpCiAgICAgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlID0gQXVkaW9EZXN0aW5hdGlv
bjo6aGFyZHdhcmVTYW1wbGVSYXRlKCk7CiAgICAgTE9HKFdlYkF1ZGlvLCAiPj4+PiBoYXJkd2Fy
ZVNhbXBsZVJhdGUgPSAlZlxuIiwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKIAorI2lmIFVTRShHU1RS
RUFNRVIpCisgICAgYXV0byogcGFnZSA9IGNvbnRleHQoKS5kb2N1bWVudCgpLT5wYWdlKCk7Cisg
ICAgaWYgKHBhZ2UpIHsKKyAgICAgICAgc3dpdGNoIChwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5h
dWRpb1JlbmRlcmluZ1BvbGljeSgpKSB7CisgICAgICAgIGNhc2UgQ2hyb21lQ2xpZW50OjpBdWRp
b1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQ6CisgICAgICAgICAgICBtX2F1ZGlvUmVuZGVy
aW5nUG9saWN5ID0gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3RE
ZWZhdWx0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hyb21lQ2xpZW50OjpB
dWRpb1JlbmRlcmluZ1BvbGljeTo6SW50ZXJuYWxNaXhpbmc6CisgICAgICAgICAgICBtX2F1ZGlv
UmVuZGVyaW5nUG9saWN5ID0gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6
OkludGVybmFsTWl4aW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hyb21l
Q2xpZW50OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6RXh0ZXJuYWw6CisgICAgICAgICAgICBtX2F1
ZGlvUmVuZGVyaW5nUG9saWN5ID0gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xp
Y3k6OkV4dGVybmFsOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgog
ICAgIG1fZGVzdGluYXRpb24gPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVneSgp
LmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oKnRoaXMsIG1faW5wdXREZXZpY2VJZCwgbV9udW1iZXJP
ZklucHV0Q2hhbm5lbHMsIGNoYW5uZWxDb3VudCgpLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCAxYjgxMWFkOTU0Y2E5ODI3MWVlOWMyYmRh
YmY3NzAxZjliZTk4MzdiLi43OWI4MjU1OWU1MjJiOTA4YTAyODYxYTE3NjU2YTc4MmZmZTEwZTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTM5LDcgKzM5LDExIEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgCiAgICAgdmlydHVhbCB+RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7
Ci0gICAgCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlv
UmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9hdWRpb1JlbmRlcmluZ1BvbGljeTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEJhc2VBdWRpb0NvbnRleHQmLCBPcHRp
b25hbDxmbG9hdD4pOwogICAgIHZvaWQgY3JlYXRlRGVzdGluYXRpb24oKTsKQEAgLTU5LDYgKzYz
LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IG1f
ZGVzdGluYXRpb247CiAgICAgU3RyaW5nIG1faW5wdXREZXZpY2VJZDsKICAgICB1bnNpZ25lZCBt
X251bWJlck9mSW5wdXRDaGFubmVscyB7IDAgfTsKKworI2lmIFVTRShHU1RSRUFNRVIpCisgICAg
TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3kgbV9hdWRpb1JlbmRlcmluZ1Bv
bGljeSB7IE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVs
dCB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBlNGM0NGE0NDI2ZjNjNWY5OWRiYzQzZDBj
YjlkNTkxNjE4MTg5ZTE5Li40YjFiOGZmMTYyZmFiOWMxYzI4ZWEzOTNjMWU1OTNlMjBiZDc2YWQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTcwMDgsNiAr
NzAwOCwyNSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlcXVlc3RJbnN0YWxsTWlzc2luZ1Bs
dWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdAogCiAgICAgZG9jdW1lbnQoKS5wYWdl
KCktPmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhk
ZXRhaWxzLCBkZXNjcmlwdGlvbiwgY2FsbGJhY2spOwogfQorCitNZWRpYVBsYXllckVudW1zOjpB
dWRpb1JlbmRlcmluZ1BvbGljeSBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckF1ZGlvUmVu
ZGVyaW5nUG9saWN5KCkgY29uc3QKK3sKKyAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdl
KCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVk
aW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OworCisgICAgc3dpdGNoIChwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS5hdWRpb1JlbmRlcmluZ1BvbGljeSgpKSB7CisgICAgY2FzZSBDaHJvbWVD
bGllbnQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDsKKyAg
ICBjYXNlIENocm9tZUNsaWVudDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkludGVybmFsTWl4aW5n
OgorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6
OkludGVybmFsTWl4aW5nOworICAgIGNhc2UgQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ1Bv
bGljeTo6RXh0ZXJuYWw6CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpBdWRpb1Jl
bmRlcmluZ1BvbGljeTo6RXh0ZXJuYWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpBdWRpb1Jl
bmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQ7Cit9CiAjZW5kaWYKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpyZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZShN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpCZWhhdmlvclJlc3RyaWN0aW9ucyBtYXNrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAxNWM5YzNjMGQ4NmZhMDBkMzdiZWUyMTVm
NTRjMzE2NjE4YzE2ZGNlLi5kOTljOWZjMjJiZjZmNTkyZWZkMmVlNDQ2ZWFmMzIyOWU3NWJjMTIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNzQxLDYgKzc0MSw3
IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoR1NUUkVBTUVSKQogICAgIHZvaWQgcmVxdWVzdEluc3Rh
bGxNaXNzaW5nUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNr
JikgZmluYWw7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3kgbWVk
aWFQbGF5ZXJBdWRpb1JlbmRlcmluZ1BvbGljeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKICAg
ICB2b2lkIHBlbmRpbmdBY3Rpb25UaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAppbmRleCBjMGEwZDMwYmNmZGYzZjQxY2YwZThkN2YzZGU0YzI0YzAxZGI2Nzk4Li5kYjhj
NDBmZmVmODM5MDA0MDE4Mzc4ZGQ2ZGJkNjdkOWM5NDk1MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKQEAgLTQ5NCw2ICs0OTQsMTMgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKQogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiAvKmRldGFpbHMqLywgY29uc3QgU3RyaW5n
JiAvKmRlc2NyaXB0aW9uKi8sIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrJikgeyB9CisKKyAgICBlbnVtIGNsYXNzIEF1ZGlvUmVuZGVyaW5nUG9saWN5IHsK
KyAgICAgICAgSG9zdERlZmF1bHQsCisgICAgICAgIEludGVybmFsTWl4aW5nLAorICAgICAgICBF
eHRlcm5hbAorICAgIH07CisgICAgdmlydHVhbCBBdWRpb1JlbmRlcmluZ1BvbGljeSBhdWRpb1Jl
bmRlcmluZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIEF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0
RGVmYXVsdDsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkSW52YWxpZGF0ZURvY3Vt
ZW50TWFya2VyUmVjdHMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0dTdHJlYW1lci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFr
ZQppbmRleCA2YTJjYWUzNDIzZTNiZTE1ZmMwOTBmYmI3MmI1MWE1NmUzY2NkMWIxLi4wZjFhNDEy
MzQ0NmZmZTI1ZGE4YjEzZmNjZTdmN2I1OGRmMWQ3MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vR1N0cmVhbWVyLmNtYWtlCkBAIC05LDYgKzksNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVO
QUJMRV9XRUJfQVVESU8pCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dMVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9Hc3RBbGxvY2F0b3JGYXN0TWFsbG9jLmNwcAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAt
MjMsNiArMjQsNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVh
bWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCiAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSU9DYWxs
YmFjay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9JT0NhbGxiYWNrLmgK
aW5kZXggYTQzODkxZjBiZjQyZmQyYmRlMDZkZDAwYzkzMjRjZjFkYTIwYzViMi4uNzc2MWZhNTQ2
Mzg0NmY4MzUyZTcxYmYzMDEyMzJmMmYwY2IxMzA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9JT0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9JT0NhbGxiYWNrLmgKQEAgLTI2LDggKzI2LDExIEBACiAgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgQXVkaW9JT0NhbGxiYWNrX2gKLSNkZWZpbmUgQXVkaW9J
T0NhbGxiYWNrX2gKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRl
ICJNZWRpYVBsYXllckVudW1zLmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00Miw5ICs0NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nRGlk
Q2hhbmdlKCkgPSAwOwogCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICB2aXJ0dWFsIE1lZGlhUGxh
eWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29u
c3QgeyByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3RE
ZWZhdWx0OyB9OworI2VuZGlmCisKICAgICB2aXJ0dWFsIH5BdWRpb0lPQ2FsbGJhY2soKSA9IGRl
ZmF1bHQ7CiB9OwogCiB9IC8vIFdlYkNvcmUKIAotI2VuZGlmIC8vIEF1ZGlvSU9DYWxsYmFja19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXggMWE1NDk1ZmQ3
NjRkOWMzY2M2ZWRiNTgxZmE0ODBlYWVhZDE0NTliZi4uYzc2MjMwNTgwMjA3YWZkZjc2MTgwNWE5
Njk4YjcyMTFmODA5MTg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
LmNwcApAQCAtMjQsOSArMjQsMTEgQEAKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmgiCiAKICNpbmNsdWRlICJBdWRpb0NoYW5uZWwuaCIKKyNpbmNsdWRlICJBdWRpb0lPQ2Fs
bGJhY2suaCIKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiR1Jl
ZlB0ckdTdHJlYW1lci5oIgorI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgPGdzdC9hdWRp
by9nc3RhdWRpb2Jhc2VzaW5rLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgpAQCAtOTUsMjkgKzk3
LDM0IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvdmlk
ZXIiLCAmbV9jYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWVzIiwgZnJhbWVzVG9Q
dWxsLCBudWxscHRyKSk7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGdz
dF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b2F1ZGlvc2luayIsIG51bGxwdHIpOworICAgIGF1
dG8gYXVkaW9SZW5kZXJpbmdQb2xpY3kgPSBjYWxsYmFjay5hdWRpb1JlbmRlcmluZ1BvbGljeSgp
OworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3JlYXRlQXVkaW9TaW5rRm9y
UG9saWN5KGF1ZGlvUmVuZGVyaW5nUG9saWN5KTsKICAgICBtX2F1ZGlvU2lua0F2YWlsYWJsZSA9
IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewotICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1dG9hdWRpb3NpbmsgZWxlbWVudCIpOworICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVu
dCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZ19zaWduYWxfY29ubmVjdChhdWRp
b1NpbmsuZ2V0KCksICJjaGlsZC1hZGRlZCIsIEdfQ0FMTEJBQ0soYXV0b0F1ZGlvU2lua0NoaWxk
QWRkZWRDYWxsYmFjayksIG51bGxwdHIpOwotCi0gICAgLy8gQXV0b2F1ZGlvc2luayBkb2VzIHRo
ZSByZWFsIHNpbmsgZGV0ZWN0aW9uIGluIHRoZSBHU1RfU1RBVEVfTlVMTC0+UkVBRFkgdHJhbnNp
dGlvbgotICAgIC8vIHNvIGl0J3MgYmVzdCB0byByb2xsIGl0IHRvIFJFQURZIGFzIHNvb24gYXMg
cG9zc2libGUgdG8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtCi0gICAgLy8gYXVkaW9z
aW5rIHdhcyBsb2FkZWQgY29ycmVjdGx5LgotICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRl
Q2hhbmdlUmV0dXJuID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlvU2luay5nZXQoKSwgR1NU
X1NUQVRFX1JFQURZKTsKLSAgICBpZiAoc3RhdGVDaGFuZ2VSZXR1cm4gPT0gR1NUX1NUQVRFX0NI
QU5HRV9GQUlMVVJFKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNoYW5nZSBhdXRv
YXVkaW9zaW5rIGVsZW1lbnQgc3RhdGUiKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRl
KGF1ZGlvU2luay5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwotICAgICAgICBtX2F1ZGlvU2lua0F2
YWlsYWJsZSA9IGZhbHNlOwotICAgICAgICByZXR1cm47CisgICAgLy8gUHJvYmUgcGxhdGZvcm0g
ZWFybHkgb24gZm9yIGEgd29ya2luZyBhdWRpbyBvdXRwdXQgZGV2aWNlLiBUaGlzIGlzIG5vdCBu
ZWVkZWQgZm9yIHRoZSBXZWJLaXQKKyAgICAvLyBjdXN0b20gYXVkaW8gc2luayBiZWNhdXNlIGl0
IGRvZXNuJ3QgcmVseSBvbiBhdXRvYXVkaW9zaW5rLgorICAgIGlmICghV0VCS0lUX0lTX0FVRElP
X1NJTksoYXVkaW9TaW5rLmdldCgpKSkgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KGF1ZGlv
U2luay5nZXQoKSwgImNoaWxkLWFkZGVkIiwgR19DQUxMQkFDSyhhdXRvQXVkaW9TaW5rQ2hpbGRB
ZGRlZENhbGxiYWNrKSwgbnVsbHB0cik7CisKKyAgICAgICAgLy8gQXV0b2F1ZGlvc2luayBkb2Vz
IHRoZSByZWFsIHNpbmsgZGV0ZWN0aW9uIGluIHRoZSBHU1RfU1RBVEVfTlVMTC0+UkVBRFkgdHJh
bnNpdGlvbgorICAgICAgICAvLyBzbyBpdCdzIGJlc3QgdG8gcm9sbCBpdCB0byBSRUFEWSBhcyBz
b29uIGFzIHBvc3NpYmxlIHRvIGVuc3VyZSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybQorICAgICAg
ICAvLyBhdWRpb3Npbmsgd2FzIGxvYWRlZCBjb3JyZWN0bHkuCisgICAgICAgIEdzdFN0YXRlQ2hh
bmdlUmV0dXJuIHN0YXRlQ2hhbmdlUmV0dXJuID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlv
U2luay5nZXQoKSwgR1NUX1NUQVRFX1JFQURZKTsKKyAgICAgICAgaWYgKHN0YXRlQ2hhbmdlUmV0
dXJuID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgeworICAgICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gY2hhbmdlIGF1dG9hdWRpb3NpbmsgZWxlbWVudCBzdGF0ZSIpOworICAgICAg
ICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlvU2luay5nZXQoKSwgR1NUX1NUQVRFX05V
TEwpOworICAgICAgICAgICAgbV9hdWRpb1NpbmtBdmFpbGFibGUgPSBmYWxzZTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEdzdEVsZW1lbnQqIGF1ZGlvQ29u
dmVydCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9jb252ZXJ0IiwgbnVsbHB0cik7
CiAgICAgR3N0RWxlbWVudCogYXVkaW9SZXNhbXBsZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFr
ZSgiYXVkaW9yZXNhbXBsZSIsIG51bGxwdHIpOwotICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJ
TihtX3BpcGVsaW5lKSwgd2Via2l0QXVkaW9TcmMsIGF1ZGlvQ29udmVydCwgYXVkaW9SZXNhbXBs
ZSwgYXVkaW9TaW5rLmdldCgpLCBudWxscHRyKTsKKyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9C
SU5fQ0FTVChtX3BpcGVsaW5lKSwgd2Via2l0QXVkaW9TcmMsIGF1ZGlvQ29udmVydCwgYXVkaW9S
ZXNhbXBsZSwgYXVkaW9TaW5rLmdldCgpLCBudWxscHRyKTsKIAogICAgIC8vIExpbmsgc3JjIHBh
ZHMgZnJvbSB3ZWJraXRBdWRpb1NyYyB0byBhdWRpb0NvbnZlcnQgISBhdWRpb1Jlc2FtcGxlICEg
YXV0b2F1ZGlvc2luay4KICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbCh3ZWJraXRBdWRp
b1NyYywgInNyYyIsIGF1ZGlvQ29udmVydCwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9U
SElORyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaAppbmRleCAzYjg5ZmVi
YzYyN2E0NzY1ODZkMmMzMzhkMmYyZjU1OTc5YWM5MjAxLi5iNGExMmRkOTBlNmJhODIxODUxMzdm
ODRhMGZlZDkxZDg3NTNkMzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
LmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAi
QXVkaW9EZXN0aW5hdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyRW51bXMuaCIKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RFbGVtZW50IEdzdEVsZW1l
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKaW5kZXgg
NTRiMzlmNDVhNWJhNzAwZWUwZTliYWExNjUzNmQyMTg4NGVkMTBmOC4uMTVjNDI2NmIzMTJjMjc4
ZmM3NzcwNDI2YjE1NTNhMTMzOTM2NTQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVBy
b3ZpZGVyR1N0cmVhbWVyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIEF1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXI6On5BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKCkKICAgICBnX29iamVj
dF91bnJlZihtX2Zyb250UmlnaHRBZGFwdGVyKTsKIH0KIAotdm9pZCBBdWRpb1NvdXJjZVByb3Zp
ZGVyR1N0cmVhbWVyOjpjb25maWd1cmVBdWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0JpbiwgR3N0
RWxlbWVudCogdGVlUHJlZGVjZXNzb3IpCit2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFt
ZXI6OmNvbmZpZ3VyZUF1ZGlvQmluKEdzdEVsZW1lbnQqIGF1ZGlvQmluLCBHc3RFbGVtZW50KiBh
dWRpb1NpbmspCiB7CiAgICAgbV9hdWRpb1NpbmtCaW4gPSBhdWRpb0JpbjsKIApAQCAtMTUyLDI2
ICsxNTIsMTYgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpjb25maWd1cmVB
dWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0JpbiwgR3N0RWwKICAgICBHc3RFbGVtZW50KiBhdWRp
b1Jlc2FtcGxlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb3Jlc2FtcGxlIiwgbnVs
bHB0cik7CiAgICAgR3N0RWxlbWVudCogYXVkaW9SZXNhbXBsZTIgPSBnc3RfZWxlbWVudF9mYWN0
b3J5X21ha2UoImF1ZGlvcmVzYW1wbGUiLCBudWxscHRyKTsKICAgICBHc3RFbGVtZW50KiB2b2x1
bWVFbGVtZW50ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJ2b2x1bWUiLCAidm9sdW1lIik7
Ci0gICAgR3N0RWxlbWVudCogYXVkaW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJh
dXRvYXVkaW9zaW5rIiwgbnVsbHB0cik7Ci0KLSAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4o
bV9hdWRpb1NpbmtCaW4uZ2V0KCkpLCBhdWRpb1RlZSwgYXVkaW9RdWV1ZSwgYXVkaW9Db252ZXJ0
LCBhdWRpb1Jlc2FtcGxlLCB2b2x1bWVFbGVtZW50LCBhdWRpb0NvbnZlcnQyLCBhdWRpb1Jlc2Ft
cGxlMiwgYXVkaW9TaW5rLCBudWxscHRyKTsKLQotICAgIC8vIEluIGNhc2VzIHdoZXJlIHRoZSBh
dWRpby1zaW5rIG5lZWRzIGVsZW1lbnRzIGJlZm9yZSB0ZWUgKHN1Y2gKLSAgICAvLyBhcyBzY2Fs
ZXRlbXBvKSB0aGV5IG5lZWQgdG8gYmUgbGlua2VkIHRvIHRlZSB3aGljaCBpbiB0aGlzIGNhc2UK
LSAgICAvLyBkb2Vzbid0IG5lZWQgYSBnaG9zdCBwYWQuIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUg
dGVlUHJlZGVjZXNzb3IKLSAgICAvLyBjaGFpbiBhbHJlYWR5IGNvbmZpZ3VyZWQgYSBnaG9zdCBw
YWQuCi0gICAgaWYgKHRlZVByZWRlY2Vzc29yKQotICAgICAgICBnc3RfZWxlbWVudF9saW5rX3Bh
ZHNfZnVsbCh0ZWVQcmVkZWNlc3NvciwgInNyYyIsIGF1ZGlvVGVlLCAic2luayIsIEdTVF9QQURf
TElOS19DSEVDS19OT1RISU5HKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gQWRkIGEgZ2hvc3Rw
YWQgdG8gdGhlIGJpbiBzbyBpdCBjYW4gcHJveHkgdG8gdGVlLgotICAgICAgICBHUmVmUHRyPEdz
dFBhZD4gYXVkaW9UZWVTaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNf
cGFkKGF1ZGlvVGVlLCAic2luayIpKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfYWRkX3BhZChtX2F1
ZGlvU2lua0Jpbi5nZXQoKSwgZ3N0X2dob3N0X3BhZF9uZXcoInNpbmsiLCBhdWRpb1RlZVNpbmtQ
YWQuZ2V0KCkpKTsKLSAgICB9CiAKLSAgICAvLyBMaW5rIGEgbmV3IHNyYyBwYWQgZnJvbSB0ZWUg
dG8gcXVldWUgISBhdWRpb2NvbnZlcnQgIQotICAgIC8vIGF1ZGlvcmVzYW1wbGUgISB2b2x1bWUg
ISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEKLSAgICAvLyBhdXRvYXVkaW9zaW5rLiBU
aGUgYXVkaW9yZXNhbXBsZSBhbmQgYXVkaW9jb252ZXJ0IGFyZSBuZWVkZWQgdG8KLSAgICAvLyBl
bnN1cmUgdGhlIGF1ZGlvIHNpbmsgcmVjZWl2ZXMgYnVmZmVycyBpbiB0aGUgY29ycmVjdCBmb3Jt
YXQuCisgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOX0NBU1QobV9hdWRpb1NpbmtCaW4uZ2V0
KCkpLCBhdWRpb1RlZSwgYXVkaW9RdWV1ZSwgYXVkaW9Db252ZXJ0LCBhdWRpb1Jlc2FtcGxlLCB2
b2x1bWVFbGVtZW50LCBhdWRpb0NvbnZlcnQyLCBhdWRpb1Jlc2FtcGxlMiwgYXVkaW9TaW5rLCBu
dWxscHRyKTsKKworICAgIC8vIEFkZCBhIGdob3N0cGFkIHRvIHRoZSBiaW4gc28gaXQgY2FuIHBy
b3h5IHRvIHRlZS4KKyAgICBhdXRvIGF1ZGlvVGVlU2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxl
bWVudF9nZXRfc3RhdGljX3BhZChhdWRpb1RlZSwgInNpbmsiKSk7CisgICAgZ3N0X2VsZW1lbnRf
YWRkX3BhZChtX2F1ZGlvU2lua0Jpbi5nZXQoKSwgZ3N0X2dob3N0X3BhZF9uZXcoInNpbmsiLCBh
dWRpb1RlZVNpbmtQYWQuZ2V0KCkpKTsKKworICAgIC8vIExpbmsgYSBuZXcgc3JjIHBhZCBmcm9t
IHRlZSB0byBxdWV1ZSAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISB2b2x1bWUgISBh
dWRpb2NvbnZlcnQgIQorICAgIC8vIGF1ZGlvcmVzYW1wbGUgISBhdWRpb3NpbmsuIFRoZSBhdWRp
b3Jlc2FtcGxlIGFuZCBhdWRpb2NvbnZlcnQgYXJlIG5lZWRlZCB0byBlbnN1cmUgdGhlIGF1ZGlv
CisgICAgLy8gc2luayByZWNlaXZlcyBidWZmZXJzIGluIHRoZSBjb3JyZWN0IGZvcm1hdC4KICAg
ICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChhdWRpb1RlZSwgInNyY18ldSIsIGF1ZGlvUXVl
dWUsICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwogICAgIGdzdF9lbGVtZW50
X2xpbmtfcGFkc19mdWxsKGF1ZGlvUXVldWUsICJzcmMiLCBhdWRpb0NvbnZlcnQsICJzaW5rIiwg
R1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwogICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkc19m
dWxsKGF1ZGlvQ29udmVydCwgInNyYyIsIGF1ZGlvUmVzYW1wbGUsICJzaW5rIiwgR1NUX1BBRF9M
SU5LX0NIRUNLX05PVEhJTkcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVh
bWVyLmgKaW5kZXggZDZiYTIyYTMxMWU1OWY3M2E4MTcyOGVkZjQ0NTE3ZGFkZDUzZWZiMC4uZTRm
NjUxMmYxMmEwM2YxMzljNDM3ZGMyMGQ3MTcyNGIxZDRiMjM3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3Ry
ZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKCk7CiAgICAgfkF1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXIoKTsKIAotICAgIHZvaWQgY29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCog
YXVkaW9CaW4sIEdzdEVsZW1lbnQqIHRlZVByZWRlY2Vzc29yKTsKKyAgICB2b2lkIGNvbmZpZ3Vy
ZUF1ZGlvQmluKEdzdEVsZW1lbnQqIGF1ZGlvQmluLCBHc3RFbGVtZW50KiBhdWRpb1NpbmspOwog
CiAgICAgdm9pZCBwcm92aWRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldENsaWVudChBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50
Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAKaW5kZXggZWQ2YTRlZjE3N2NmY2Y3OGM5OGM5M2U3NWJiYzhiOGM2ZmE3NjZl
MS4uYzcxZDczMjNjZjI3NTI3NTExZGMxNDg2ZjZmMTg2YmE3M2ZmYjZiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTQ1NSw2
ICsxNDU1LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24o
KQogCiAgICAgbV9wcml2YXRlLT5zaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKCk7CiB9CisKK01l
ZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5IE1lZGlhUGxheWVyOjphdWRpb1Jl
bmRlcmluZ1BvbGljeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVy
QXVkaW9SZW5kZXJpbmdQb2xpY3koKTsKK30KICNlbmRpZgogCiB2b2lkIE1lZGlhUGxheWVyOjpi
ZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpCkBAIC0xNjkwLDYgKzE2OTUsMjEgQEAgU3RyaW5nIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kgZW51
bWVyYXRpb25WYWx1ZSkKICAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51
bWVyYXRpb25WYWx1ZSldOwogfQogCisjaWYgVVNFKEdTVFJFQU1FUikKK1N0cmluZyBjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGlj
eSBlbnVtZXJhdGlvblZhbHVlKQoreworICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IHZhbHVlc1tdID0geworICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiSG9z
dERlZmF1bHQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkludGVybmFsTWl4
aW5nIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJFeHRlcm5hbCIpLAorICAg
IH07CisgICAgc3RhdGljX2Fzc2VydCghc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVu
dW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQpLCAiTWVkaWFQbGF5ZXJFbnVt
czo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0IGlzIG5vdCAwIGFzIGV4cGVjdGVk
Iik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyRW51
bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpJbnRlcm5hbE1peGluZykgPT0gMSwgIk1lZGlhUGxh
eWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpJbnRlcm5hbE1peGluZyBpcyBub3QgMSBh
cyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRp
YVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6RXh0ZXJuYWwpID09IDIsICJNZWRp
YVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6RXh0ZXJuYWwgaXMgbm90IDIgYXMg
ZXhwZWN0ZWQiKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZh
bHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CisgICAgcmV0dXJuIHZhbHVlc1tzdGF0
aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKK30KKyNlbmRpZgogfQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmlu
ZGV4IDc3ZDY2YjVhOGRjNjM2NDJmNGY1ODdkODJjM2Q5YzFkMDlhOThjNmMuLjcxZDNjZjU0Zjkz
ZDNlMWZkZjA3ODU0OGI0N2UwMjk1YjJiMmM0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjYxLDYgKzI2MSw3IEBAIHB1YmxpYzoK
IAogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RJbnN0YWxsTWlz
c2luZ1BsdWdpbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5ZXJSZXF1
ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKSB7IH07CisgICAgdmlydHVhbCBNZWRp
YVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeSBtZWRpYVBsYXllckF1ZGlvUmVuZGVy
aW5nUG9saWN5KCkgY29uc3QgeyByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJp
bmdQb2xpY3k6Okhvc3REZWZhdWx0OyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRp
YVBsYXllclNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0y
NzYsNiArMjc3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3Qgdm9pZCogbWVkaWFQbGF5
ZXJMb2dJZGVudGlmaWVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgY29uc3Qg
TG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpID0gMDsKICNlbmRpZgorCisgICAgdmlydHVhbCBi
b29sIG1lZGlhUGxheWVyU2hvdWxkSW50ZXJuYWxseVJlbmRlckF1ZGlvKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogfTsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFQbGF5ZXIgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJFbnVtcywgcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFQbGF5ZXI+IHsKQEAg
LTYyMyw2ICs2MjYsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoR1NUUkVBTUVSKQogICAgIHZvaWQg
cmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1
Z2luc0NhbGxiYWNrJiBjYWxsYmFjaykgeyBjbGllbnQoKS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdQ
bHVnaW5zKGRldGFpbHMsIGRlc2NyaXB0aW9uLCBjYWxsYmFjayk7IH0KKyAgICBNZWRpYVBsYXll
ckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeSBhdWRpb1JlbmRlcmluZ1BvbGljeSgpIGNvbnN0
OwogI2VuZGlmCiAKICAgICBjb25zdCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIHBsYXll
clByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaAppbmRleCBh
MDAxNTk3MWE4MjJiNDZmN2FjYzFiODgwMzAzOGEyNzFhNDY3MWQ5Li40NzM0N2U4ZWI2MGZiOTU1
ZGUyYTc3MzEzZjg2YzBlYmU0OGE5MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCkBAIC0xMDYsNiArMTA2LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgVGFyZ2V0VHlwZVRWT3V0CiAgICAgfTsKIAorI2lmIFVTRShHU1RSRUFN
RVIpCisgICAgZW51bSBjbGFzcyBBdWRpb1JlbmRlcmluZ1BvbGljeSA6IHVpbnQ4X3QgeworICAg
ICAgICBIb3N0RGVmYXVsdCwKKyAgICAgICAgSW50ZXJuYWxNaXhpbmcsCisgICAgICAgIEV4dGVy
bmFsCisgICAgfTsKKyNlbmRpZgogfTsKIAogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3Ry
aW5nKE1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGUpOwpAQCAtMTE0LDYgKzEyMSw5IEBAIFN0
cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpQcmVsb2Fk
KTsKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpT
dXBwb3J0c1R5cGUpOwogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxh
eWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeSk7CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorU3RyaW5n
IGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVy
aW5nUG9saWN5KTsKKyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAKQEAgLTI0MCw0
ICsyNTAsMTQgQEAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICA+OwogfTsKIAorI2lm
IFVTRShHU1RSRUFNRVIpCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5PiB7CisgICAgc3RhdGljIFdU
Rjo6U3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkF1ZGlv
UmVuZGVyaW5nUG9saWN5IHBvbGljeSkKKyAgICB7CisgICAgICAgIHJldHVybiBjb252ZXJ0RW51
bWVyYXRpb25Ub1N0cmluZyhwb2xpY3kpOworICAgIH0KK307CisjZW5kaWYKKwogfTsgLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU3NjZkOTNiMTFkODFjYmQ0ZWM4YjRkNDg2MGFkNTk2ZDRmMmUyYzMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
QXVkaW9NaXhlci5jcHAKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgSWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJBdWRp
b01peGVyLmgiCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiR1N0cmVhbWVyQ29t
bW9uLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyh3ZWJraXRfbWVkaWFfZ3N0X2F1ZGlv
X21peGVyX2RlYnVnKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tZWRpYV9nc3Rf
YXVkaW9fbWl4ZXJfZGVidWcKKworYm9vbCBHU3RyZWFtZXJBdWRpb01peGVyOjppc0FsbG93ZWQo
KQoreworICAgIHJldHVybiB3ZWJraXRHc3RDaGVja1ZlcnNpb24oMSwgMTcsIDIpICYmIGlzR1N0
cmVhbWVyUGx1Z2luQXZhaWxhYmxlKCJpbnRlciIpOworfQorCitHU3RyZWFtZXJBdWRpb01peGVy
JiBHU3RyZWFtZXJBdWRpb01peGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxHU3RyZWFtZXJBdWRpb01peGVyPiBzaGFyZWRJbnN0YW5jZTsKKyAgICByZXR1cm4g
c2hhcmVkSW5zdGFuY2U7Cit9CisKK0dTdHJlYW1lckF1ZGlvTWl4ZXI6OkdTdHJlYW1lckF1ZGlv
TWl4ZXIoKQoreworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtpdF9tZWRpYV9nc3Rf
YXVkaW9fbWl4ZXJfZGVidWcsICJ3ZWJraXRhdWRpb21peGVyIiwgMCwgIldlYktpdCBHU3RyZWFt
ZXIgYXVkaW8gbWl4ZXIiKTsKKyAgICBtX3BpcGVsaW5lID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKCJwaXBlbGluZSIsICJ3ZWJraXRhdWRpb21peGVyIik7CisgICAgY29ubmVjdFNpbXBsZUJ1
c01lc3NhZ2VDYWxsYmFjayhtX3BpcGVsaW5lLmdldCgpKTsKKworICAgIG1fbWl4ZXIgPSBnc3Rf
ZWxlbWVudF9mYWN0b3J5X21ha2UoImF1ZGlvbWl4ZXIiLCBudWxscHRyKTsKKyAgICBHc3RFbGVt
ZW50KiBhdWRpb1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1dG9hdWRpb3Npbmsi
LCBudWxscHRyKTsKKworICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTl9DQVNUKG1fcGlwZWxp
bmUuZ2V0KCkpLCBtX21peGVyLmdldCgpLCBhdWRpb1NpbmssIG51bGxwdHIpOworICAgIGdzdF9l
bGVtZW50X2xpbmsobV9taXhlci5nZXQoKSwgYXVkaW9TaW5rKTsKKyAgICBnc3RfZWxlbWVudF9z
ZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1JFQURZKTsKK30KKworR1N0cmVh
bWVyQXVkaW9NaXhlcjo6fkdTdHJlYW1lckF1ZGlvTWl4ZXIoKQoreworICAgIGdzdF9lbGVtZW50
X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Cit9CisKK3ZvaWQg
R1N0cmVhbWVyQXVkaW9NaXhlcjo6ZW5zdXJlU3RhdGUoR3N0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFu
Z2UpCit7CisjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMTQsIDApCisgICAgR1NUX0RFQlVHX09C
SkVDVChtX3BpcGVsaW5lLmdldCgpLCAiSGFuZGxpbmcgJXMgdHJhbnNpdGlvbiAoJXUgbWl4ZXIg
cGFkcykiLCBnc3Rfc3RhdGVfY2hhbmdlX2dldF9uYW1lKHN0YXRlQ2hhbmdlKSwgbV9taXhlci0+
bnVtc2lua3BhZHMpOworI2VuZGlmCisgICAgc3dpdGNoIChzdGF0ZUNoYW5nZSkgeworICAgIGNh
c2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6CisgICAgICAgIGdzdF9lbGVtZW50
X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19QTEFZSU5HOgorICAg
ICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1BM
QVlJTkcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUExBWUlO
R19UT19QQVVTRUQ6CisgICAgICAgIGlmIChtX21peGVyLT5udW1zaW5rcGFkcyA9PSAxKQorICAg
ICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFU
RV9QQVVTRUQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFV
U0VEX1RPX1JFQURZOgorICAgICAgICBpZiAobV9taXhlci0+bnVtc2lua3BhZHMgPT0gMSkKKyAg
ICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RB
VEVfUkVBRFkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVB
RFlfVE9fTlVMTDoKKyAgICAgICAgaWYgKG1fbWl4ZXItPm51bXNpbmtwYWRzID09IDEpCisgICAg
ICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRF
X05VTEwpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKK0dSZWZQdHI8R3N0UGFkPiBHU3RyZWFtZXJBdWRpb01peGVyOjpyZWdpc3RlclBy
b2R1Y2VyKEdzdEVsZW1lbnQqIGludGVyYXVkaW9TaW5rKQoreworICAgIEdzdEVsZW1lbnQqIHNy
YyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiaW50ZXJhdWRpb3NyYyIsIG51bGxwdHIpOwor
ICAgIGdfb2JqZWN0X3NldChzcmMsICJjaGFubmVsIiwgR1NUX0VMRU1FTlRfTkFNRShpbnRlcmF1
ZGlvU2luayksIG51bGxwdHIpOworICAgIGdfb2JqZWN0X3NldChpbnRlcmF1ZGlvU2luaywgImNo
YW5uZWwiLCBHU1RfRUxFTUVOVF9OQU1FKGludGVyYXVkaW9TaW5rKSwgbnVsbHB0cik7CisKKyAg
ICBnc3RfYmluX2FkZChHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIHNyYyk7CisKKyAg
ICBib29sIHNob3VsZFN0YXJ0ID0gIW1fbWl4ZXItPm51bXNpbmtwYWRzOworCisgICAgYXV0byBt
aXhlclBhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQobV9taXhlci5n
ZXQoKSwgInNpbmtfJXUiKSk7CisgICAgYXV0byBzcmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1l
bnRfZ2V0X3N0YXRpY19wYWQoc3JjLCAic3JjIikpOworICAgIGdzdF9wYWRfbGluayhzcmNQYWQu
Z2V0KCksIG1peGVyUGFkLmdldCgpKTsKKworICAgIGlmIChzaG91bGRTdGFydCkKKyAgICAgICAg
Z3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9SRUFEWSk7
CisgICAgZWxzZQorICAgICAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KHNy
Yyk7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJSZWdpc3RlcmVk
IGF1ZGlvIHByb2R1Y2VyICUiIEdTVF9QVFJfRk9STUFULCBtaXhlclBhZC5nZXQoKSk7CisgICAg
R1NUX0RFQlVHX0JJTl9UT19ET1RfRklMRV9XSVRIX1RTKEdTVF9CSU5fQ0FTVChtX3BpcGVsaW5l
LmdldCgpKSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMLCAiYXVkaW8tbWl4ZXItYWZ0ZXItcHJv
ZHVjZXItcmVnaXN0cmF0aW9uIik7CisgICAgcmV0dXJuIG1peGVyUGFkOworfQorCit2b2lkIEdT
dHJlYW1lckF1ZGlvTWl4ZXI6OnVucmVnaXN0ZXJQcm9kdWNlcihjb25zdCBHUmVmUHRyPEdzdFBh
ZD4mIG1peGVyUGFkKQoreworICAgIEdTVF9ERUJVR19PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwg
IlVucmVnaXN0ZXJpbmcgYXVkaW8gcHJvZHVjZXIgJSIgR1NUX1BUUl9GT1JNQVQsIG1peGVyUGFk
LmdldCgpKTsKKworICAgIGF1dG8gcGVlciA9IGFkb3B0R1JlZihnc3RfcGFkX2dldF9wZWVyKG1p
eGVyUGFkLmdldCgpKSk7CisgICAgYXV0byBpbnRlcmF1ZGlvU3JjID0gYWRvcHRHUmVmKGdzdF9w
YWRfZ2V0X3BhcmVudF9lbGVtZW50KHBlZXIuZ2V0KCkpKTsKKyAgICBHU1RfTE9HX09CSkVDVCht
X3BpcGVsaW5lLmdldCgpLCAiaW50ZXJhdWRpb3NyYzogJSIgR1NUX1BUUl9GT1JNQVQsIGludGVy
YXVkaW9TcmMuZ2V0KCkpOworCisgICAgZ3N0X2VsZW1lbnRfc2V0X2xvY2tlZF9zdGF0ZShpbnRl
cmF1ZGlvU3JjLmdldCgpLCB0cnVlKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoaW50ZXJh
dWRpb1NyYy5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworCisgICAgZ3N0X3BhZF91bmxpbmsocGVl
ci5nZXQoKSwgbWl4ZXJQYWQuZ2V0KCkpOworICAgIGdzdF9lbGVtZW50X3JlbGVhc2VfcmVxdWVz
dF9wYWQobV9taXhlci5nZXQoKSwgbWl4ZXJQYWQuZ2V0KCkpOworCisgICAgZ3N0X2Jpbl9yZW1v
dmUoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCBpbnRlcmF1ZGlvU3JjLmdldCgpKTsK
KworICAgIGlmICghbV9taXhlci0+bnVtc2lua3BhZHMpCisgICAgICAgIGdzdF9lbGVtZW50X3Nl
dF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CisKKyAgICBHU1RfREVC
VUdfQklOX1RPX0RPVF9GSUxFX1dJVEhfVFMoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkp
LCBHU1RfREVCVUdfR1JBUEhfU0hPV19BTEwsICJhdWRpby1taXhlci1hZnRlci1wcm9kdWNlci11
bnJlZ2lzdHJhdGlvbiIpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb01peGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9N
aXhlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY3ZjE0ZmYxZjY5NjgwZTI0NWQ0OGYzY2M2NzQ4YTg4ZTc4YWUy
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEdTVFJF
QU1FUikKKworI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdTdHJlYW1lckF1ZGlvTWl4
ZXIgeworICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxHU3RyZWFtZXJBdWRpb01peGVyPjsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpc0FsbG93ZWQoKTsKKyAgICBzdGF0aWMgR1N0cmVhbWVy
QXVkaW9NaXhlciYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIGVuc3VyZVN0YXRlKEdzdFN0YXRl
Q2hhbmdlKTsKKyAgICBHUmVmUHRyPEdzdFBhZD4gcmVnaXN0ZXJQcm9kdWNlcihHc3RFbGVtZW50
Kik7CisgICAgdm9pZCB1bnJlZ2lzdGVyUHJvZHVjZXIoY29uc3QgR1JlZlB0cjxHc3RQYWQ+Jik7
CisKK3Byb3RlY3RlZDoKKyAgICBHU3RyZWFtZXJBdWRpb01peGVyKCk7CisgICAgfkdTdHJlYW1l
ckF1ZGlvTWl4ZXIoKTsKKworcHJpdmF0ZToKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fcGlw
ZWxpbmU7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX21peGVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckNvbW1vbi5jcHAKaW5kZXggZGM3MDE2ZDA4MDRlNzdhYTQ4N2UxMThiYzYyZjNmYTU5NDUyNzMy
MC4uYjg4MWRhZjEzYmQwZTU2Mzk2NWI4NTZkNDE2MzE4ZTBkNTJiMGJhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1v
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBVU0UoR1NUUkVBTUVSKQog
CiAjaW5jbHVkZSAiR0xWaWRlb1NpbmtHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJB
dWRpb01peGVyLmgiCiAjaW5jbHVkZSAiR3N0QWxsb2NhdG9yRmFzdE1hbGxvYy5oIgogI2luY2x1
ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTU2LDYgKzU3LDcg
QEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIldlYktpdEF1ZGlvU2lu
a0dTdHJlYW1lci5oIgogI2luY2x1ZGUgIldlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oIgogI2Vu
ZGlmCiAKQEAgLTMyMiw2ICszMjQsNyBAQCBib29sIGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdp
c3RlcldlYktpdEVsZW1lbnRzKCkKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogICAgICAgICBnc3Rf
ZWxlbWVudF9yZWdpc3RlcigwLCAid2Via2l0Z2x2aWRlb3NpbmsiLCBHU1RfUkFOS19QUklNQVJZ
LCBXRUJLSVRfVFlQRV9HTF9WSURFT19TSU5LKTsKICNlbmRpZgorICAgICAgICBnc3RfZWxlbWVu
dF9yZWdpc3RlcigwLCAid2Via2l0YXVkaW9zaW5rIiwgR1NUX1JBTktfTUFSR0lOQUwsIFdFQktJ
VF9UWVBFX0FVRElPX1NJTkspOwogI2VuZGlmCiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CkBA
IC00MjAsNiArNDIzLDMyIEBAIGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3Qg
Y2hhciogbmFtZSkKICAgICByZXR1cm4gcGx1Z2luOwogfQogCitHc3RFbGVtZW50KiBjcmVhdGVB
dWRpb1NpbmtGb3JQb2xpY3koTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3kg
YXVkaW9SZW5kZXJpbmdQb2xpY3kpCit7CisgICAgR3N0RWxlbWVudCogYXVkaW9TaW5rID0gbnVs
bHB0cjsKKyAgICBzd2l0Y2ggKGF1ZGlvUmVuZGVyaW5nUG9saWN5KSB7CisgICAgY2FzZSBNZWRp
YVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6RXh0ZXJuYWw6CisgICAgICAgIGF1
ZGlvU2luayA9IHdlYmtpdEF1ZGlvU2lua05ldyhmYWxzZSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkludGVybmFsTWl4
aW5nOgorICAgICAgICBpZiAoR1N0cmVhbWVyQXVkaW9NaXhlcjo6aXNBbGxvd2VkKCkpIHsKKyAg
ICAgICAgICAgIGF1ZGlvU2luayA9IHdlYmtpdEF1ZGlvU2lua05ldyh0cnVlKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIEdTVF9XQVJOSU5HKCJJbnRlcm5hbCBhdWRp
byBtaXhpbmcgcmVxdWVzdCBjYW5ub3QgYmUgZnVsZmlsbGVkLiBGYWxsaW5nIGJhY2sgdG8gYXV0
b2F1ZGlvc2luayIpOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIE1lZGlhUGxheWVy
RW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDoKKyAgICAgICAgYXVkaW9T
aW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdXRvYXVkaW9zaW5rIiwgbnVsbHB0cik7
CisgICAgICAgIGlmICghYXVkaW9TaW5rKSB7CisgICAgICAgICAgICBHU1RfV0FSTklORygiR1N0
cmVhbWVyJ3MgYXV0b2F1ZGlvc2luayBub3QgZm91bmQuIFBsZWFzZSBjaGVjayB5b3VyIGdzdC1w
bHVnaW5zLWdvb2QgaW5zdGFsbGF0aW9uIik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gYXVkaW9TaW5r
OworfQorCiB9CiAKICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1v
bi5oCmluZGV4IDJkNTY5MmM5ZGIxZWRiMzQyMDFlOThhNjk5ZDBjZWY0YTdkODUxZjUuLmU5NGRh
YTliNmQxMzhjZDM5MjFkOWUwYzhlMTk0NTFlNjQ0OTE5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRl
ICJHUmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiR1VuaXF1ZVB0ckdTdHJlYW1lci5oIgor
I2luY2x1ZGUgIk1lZGlhUGxheWVyRW51bXMuaCIKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5j
bHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLWZvcm1hdC5oPgogI2luY2x1ZGUgPGdzdC92aWRlby92aWRl
by1pbmZvLmg+CkBAIC0yMzIsNiArMjMzLDggQEAgZW51bSBjbGFzcyBHc3RWaWRlb0RlY29kZXJQ
bGF0Zm9ybSB7IElteFZQVSwgVmlkZW80TGludXgsIE9wZW5NQVggfTsKIAogYm9vbCBpc0dTdHJl
YW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKTsKIAorR3N0RWxlbWVudCogY3Jl
YXRlQXVkaW9TaW5rRm9yUG9saWN5KE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9s
aWN5KTsKKwogfQogCiAjaWZuZGVmIEdTVF9CVUZGRVJfRFRTX09SX1BUUwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBkZWJiYjdiNTE0NjMw
ZGExM2NjMjQxYWM3ODYyNzU3YmRiZmViOGU1Li4yMTA5MWJhODZkMjc1OTU2M2UyMWZhZDczZDg5
MzdjYzVmY2ExZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdT
VFJFQU1FUikKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdTdHJl
YW1lckF1ZGlvTWl4ZXIuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKICNpbmNsdWRl
ICJHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMu
aCIKQEAgLTQzLDYgKzQ0LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlRpbWVSYW5nZXMuaCIKICNpbmNsdWRlICJWaWRlb1NpbmtHU3RyZWFtZXIuaCIKKyNpbmNs
dWRlICJXZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJTb3Vy
Y2VHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgog
I2luY2x1ZGUgIkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgpAQCAt
MjM2LDEwICsyMzgsOSBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIoKQogICAgIGlmIChXRUJLSVRfSVNfV0VCX1NSQyhtX3NvdXJjZS5n
ZXQoKSkgJiYgR1NUX09CSkVDVF9QQVJFTlQobV9zb3VyY2UuZ2V0KCkpKQogICAgICAgICBnX3Np
Z25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoR1NUX0VMRU1FTlRfUEFSRU5UKG1fc291
cmNlLmdldCgpKSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4odXJpRGVjb2RlQmluRWxlbWVu
dEFkZGVkQ2FsbGJhY2spLCB0aGlzKTsKIAotICAgIGlmIChtX2F1dG9BdWRpb1NpbmspIHsKLSAg
ICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKEdfT0JKRUNUKG1fYXV0
b0F1ZGlvU2luay5nZXQoKSksCi0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PGdwb2ludGVy
PihzZXRBdWRpb1N0cmVhbVByb3BlcnRpZXNDYWxsYmFjayksIHRoaXMpOwotICAgIH0KKyAgICBh
dXRvKiBzaW5rID0gYXVkaW9TaW5rKCk7CisgICAgaWYgKHNpbmsgJiYgIVdFQktJVF9JU19BVURJ
T19TSU5LKHNpbmspKQorICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1
bmMoR19PQkpFQ1Qoc2luayksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHNldEF1ZGlvU3Ry
ZWFtUHJvcGVydGllc0NhbGxiYWNrKSwgdGhpcyk7CiAKICAgICBtX3JlYWR5VGltZXJIYW5kbGVy
LnN0b3AoKTsKICAgICBmb3IgKGF1dG8mIG1pc3NpbmdQbHVnaW5DYWxsYmFjayA6IG1fbWlzc2lu
Z1BsdWdpbkNhbGxiYWNrcykgewpAQCAtNTE4LDE3ICs1MTksMTYgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnNlZWsoY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUpCiAKICAg
ICAvLyBBdm9pZCB1c2VsZXNzIHNlZWtpbmcuCiAgICAgaWYgKG1lZGlhVGltZSA9PSBjdXJyZW50
TWVkaWFUaW1lKCkpIHsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiW1Nl
ZWtdIHNlZWsgdG8gRU9TIHBvc2l0aW9uIHVuaGFuZGxlZCIpOworICAgICAgICBHU1RfREVCVUdf
T0JKRUNUKHBpcGVsaW5lKCksICJbU2Vla10gQWxyZWFkeSBhdCByZXF1ZXN0ZWQgcG9zaXRpb24u
IEFib3J0aW5nLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTWVkaWFUaW1lIHRp
bWUgPSBzdGQ6Om1pbihtZWRpYVRpbWUsIGR1cmF0aW9uTWVkaWFUaW1lKCkpOwotCiAgICAgaWYg
KG1faXNMaXZlU3RyZWFtKSB7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwg
IltTZWVrXSBMaXZlIHN0cmVhbSBzZWVrIHVuaGFuZGxlZCIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCisgICAgTWVkaWFUaW1lIHRpbWUgPSBzdGQ6Om1pbihtZWRpYVRpbWUsIGR1cmF0aW9u
TWVkaWFUaW1lKCkpOwogICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiW1NlZWtdIHNl
ZWtpbmcgdG8gJXMiLCB0b1N0cmluZyh0aW1lKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmICht
X2lzU2Vla2luZykgewpAQCAtMTAwNCwxNyArMTAwNCwxNiBAQCBzdGF0aWMgdm9pZCBzZXRTeW5j
T25DbG9jayhHc3RFbGVtZW50ICplbGVtZW50LCBib29sIHN5bmMpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmICghR1NUX0lTX0JJTihlbGVtZW50KSkgewotICAgICAgICBnX29iamVjdF9zZXQo
ZWxlbWVudCwgInN5bmMiLCBzeW5jLCBOVUxMKTsKKyAgICAgICAgZ19vYmplY3Rfc2V0KGVsZW1l
bnQsICJzeW5jIiwgc3luYywgbnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBHc3RJdGVyYXRvciogaXQgPSBnc3RfYmluX2l0ZXJhdGVfc2lua3MoR1NUX0JJTihlbGVtZW50
KSk7Ci0gICAgd2hpbGUgKGdzdF9pdGVyYXRvcl9mb3JlYWNoKGl0LCAoR3N0SXRlcmF0b3JGb3Jl
YWNoRnVuY3Rpb24pKFtdKGNvbnN0IEdWYWx1ZSogaXRlbSwgdm9pZCogc3luY1B0cikgeworICAg
IEdVbmlxdWVQdHI8R3N0SXRlcmF0b3I+IGl0ZXJhdG9yKGdzdF9iaW5faXRlcmF0ZV9zaW5rcyhH
U1RfQklOX0NBU1QoZWxlbWVudCkpKTsKKyAgICB3aGlsZSAoZ3N0X2l0ZXJhdG9yX2ZvcmVhY2go
aXRlcmF0b3IuZ2V0KCksIHN0YXRpY19jYXN0PEdzdEl0ZXJhdG9yRm9yZWFjaEZ1bmN0aW9uPihb
XShjb25zdCBHVmFsdWUqIGl0ZW0sIHZvaWQqIHN5bmNQdHIpIHsKICAgICAgICAgYm9vbCogc3lu
YyA9IHN0YXRpY19jYXN0PGJvb2wqPihzeW5jUHRyKTsKLSAgICAgICAgc2V0U3luY09uQ2xvY2so
R1NUX0VMRU1FTlQoZ192YWx1ZV9nZXRfb2JqZWN0KGl0ZW0pKSwgKnN5bmMpOworICAgICAgICBz
ZXRTeW5jT25DbG9jayhHU1RfRUxFTUVOVF9DQVNUKGdfdmFsdWVfZ2V0X29iamVjdChpdGVtKSks
ICpzeW5jKTsKICAgICB9KSwgJnN5bmMpID09IEdTVF9JVEVSQVRPUl9SRVNZTkMpCi0gICAgICAg
IGdzdF9pdGVyYXRvcl9yZXN5bmMoaXQpOwotICAgIGdzdF9pdGVyYXRvcl9mcmVlKGl0KTsKKyAg
ICAgICAgZ3N0X2l0ZXJhdG9yX3Jlc3luYyhpdGVyYXRvci5nZXQoKSk7CiB9CiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzeW5jT25DbG9jayhib29sIHN5bmMpCkBAIC0xMzUz
LDI2ICsxMzUyLDMxIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29yCiAKIEdzdEVsZW1lbnQqIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlQXVkaW9TaW5rKCkKIHsKLSAgICBtX2F1
dG9BdWRpb1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1dG9hdWRpb3NpbmsiLCBu
dWxscHRyKTsKLSAgICBpZiAoIW1fYXV0b0F1ZGlvU2luaykgewotICAgICAgICBHU1RfV0FSTklO
RygiR1N0cmVhbWVyJ3MgYXV0b2F1ZGlvc2luayBub3QgZm91bmQuIFBsZWFzZSBjaGVjayB5b3Vy
IGdzdC1wbHVnaW5zLWdvb2QgaW5zdGFsbGF0aW9uIik7CisgICAgR1NUX0lORk9fT0JKRUNUKG1f
cGlwZWxpbmUuZ2V0KCksICJDcmVhdGluZyBhdWRpbyBzaW5rIGZvciAlcyByZW5kZXJpbmcgcG9s
aWN5IiwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcobV9wbGF5ZXItPmF1ZGlvUmVuZGVyaW5n
UG9saWN5KCkpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgR3N0RWxlbWVudCogYXVkaW9TaW5rID0g
Y3JlYXRlQXVkaW9TaW5rRm9yUG9saWN5KG1fcGxheWVyLT5hdWRpb1JlbmRlcmluZ1BvbGljeSgp
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOworICAgIGlmICghYXVkaW9TaW5rKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CiAKLSAgICBnX3NpZ25hbF9jb25uZWN0X3N3
YXBwZWQobV9hdXRvQXVkaW9TaW5rLmdldCgpLCAiY2hpbGQtYWRkZWQiLCBHX0NBTExCQUNLKHNl
dEF1ZGlvU3RyZWFtUHJvcGVydGllc0NhbGxiYWNrKSwgdGhpcyk7CisgICAgaWYgKCFXRUJLSVRf
SVNfQVVESU9fU0lOSyhhdWRpb1NpbmspKQorICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBw
ZWQoYXVkaW9TaW5rLCAiY2hpbGQtYWRkZWQiLCBHX0NBTExCQUNLKHNldEF1ZGlvU3RyZWFtUHJv
cGVydGllc0NhbGxiYWNrKSwgdGhpcyk7CiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIEdz
dEVsZW1lbnQqIGF1ZGlvU2lua0JpbiA9IGdzdF9iaW5fbmV3KCJhdWRpby1zaW5rIik7CiAgICAg
ZW5zdXJlQXVkaW9Tb3VyY2VQcm92aWRlcigpOwotICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlci0+
Y29uZmlndXJlQXVkaW9CaW4oYXVkaW9TaW5rQmluLCBudWxscHRyKTsKKyAgICBtX2F1ZGlvU291
cmNlUHJvdmlkZXItPmNvbmZpZ3VyZUF1ZGlvQmluKGF1ZGlvU2lua0JpbiwgYXVkaW9TaW5rKTsK
ICAgICByZXR1cm4gYXVkaW9TaW5rQmluOwogI2Vsc2UKLSAgICByZXR1cm4gbV9hdXRvQXVkaW9T
aW5rLmdldCgpOworICAgIHJldHVybiBhdWRpb1Npbms7CiAjZW5kaWYKIH0KIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NpbmsoKSBjb25zdAogeworICAg
IGlmICghbV9waXBlbGluZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBHc3RFbGVt
ZW50KiBzaW5rOwogICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAiYXVkaW8tc2lu
ayIsICZzaW5rLCBudWxscHRyKTsKICAgICByZXR1cm4gc2luazsKQEAgLTI3NTgsNiArMjc2Miw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgc3RhdGljIEF0b21pYzx1aW50MzJfdD4g
cGlwZWxpbmVJZDsKICAgICBzZXRQaXBlbGluZShnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UocGxh
eWJpbk5hbWUsCiAgICAgICAgIChwaXBlbGluZU5hbWUuaXNFbXB0eSgpID8gbWFrZVN0cmluZygi
bWVkaWEtcGxheWVyLSIsIHBpcGVsaW5lSWQuZXhjaGFuZ2VBZGQoMSkpIDogcGlwZWxpbmVOYW1l
KS51dGY4KCkuZGF0YSgpKSk7CisKICAgICBzZXRTdHJlYW1Wb2x1bWVFbGVtZW50KEdTVF9TVFJF
QU1fVk9MVU1FKG1fcGlwZWxpbmUuZ2V0KCkpKTsKIAogICAgIEdTVF9JTkZPX09CSkVDVChwaXBl
bGluZSgpLCAiVXNpbmcgbGVnYWN5IHBsYXliaW4gZWxlbWVudDogJXMiLCBib29sRm9yUHJpbnRp
bmcobV9pc0xlZ2FjeVBsYXliaW4pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaAppbmRleCAxZWVjOWIyNjlmZmRkNmQxOWM0NjAxNWY5MWM0MGIzMWJlY2Mw
MGQ3Li45MWVhMjFhNmY5MGFkNzNlMmQyMmVlZTA4NjBmZWY3YTU4YmM3NjMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC01MTMsNyArNTEzLDYg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyPiBtX2F1ZGlvU291cmNlUHJvdmlkZXI7CiAjZW5k
aWYKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fYXV0b0F1ZGlvU2luazsKICAgICBHUmVmUHRy
PEdzdEVsZW1lbnQ+IG1fZG93bmxvYWRCdWZmZXI7CiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVBs
YXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4+IG1fbWlzc2luZ1BsdWdp
bkNhbGxiYWNrczsKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lcj4+IG1fYXVkaW9UcmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRp
b1NpbmtHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2M2I5ZDYyZTI2N2I3YjkwZjRjYmZhNDMw
MThhNzUyNDBmM2EwYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNwcApAQCAtMCww
ICsxLDM5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5oIgorCisjaWYg
RU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiR1N0cmVhbWVyQXVk
aW9NaXhlci5oIgorI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgorI2luY2x1ZGUgPGdzdC9h
cHAvZ3N0YXBwc2luay5oPgorI2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5o
PgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4K
KworI2lmIFBMQVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lP
TikKKyNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXkuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybURpc3Bs
YXlMaWJXUEUuaCIKKyNpbmNsdWRlIDx3cGUvZXh0ZW5zaW9ucy9hdWRpby5oPgorI2VuZGlmCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdHJ1Y3QgX1dlYktpdEF1ZGlvU2lua1ByaXZh
dGUgeworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gaW50ZXJhdWRpb1Npbms7CisgICAgR1JlZlB0
cjxHc3RQYWQ+IG1peGVyUGFkOworICAgIGd1bG9uZyBwYWRFdmVudFByb2JlSWQ7CisgICAgZ3Vs
b25nIHBhZEJ1ZmZlclByb2JlSWQ7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiB2b2x1bWVFbGVt
ZW50OworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXBwc2luazsKKyAgICBnYm9vbGVhbiBlbmFi
bGVJbnRlcm5hbE1peGluZzsKKyNpZiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZE
T19BVURJT19FWFRFTlNJT04pCisgICAgc3RydWN0IHdwZV9hdWRpb19zb3VyY2UqIHdwZUF1ZGlv
U291cmNlOworICAgIGludCBtX3N0cmVhbUlkOworCisgICAgLy8gd3BlX2F1ZGlvX3NvdXJjZSBz
dGF0ZToKKyAgICAvLyAtIEdTVF9TVEFURV9OVUxMOiBub3Qgc3RhcnRlZCBvciBFT1MKKyAgICAv
LyAtIEdTVF9TVEFURV9QTEFZSU5HOiBhdCBsZWFzdCBvbmUgcGFja2V0IHdhcyBlbWl0dGVkCisg
ICAgLy8gLSBHU1RfU1RBVEVfUEFVU0VEOiBwYXVzZSBub3RpZmljYXRpb24gd2FzIHNlbnQKKyAg
ICBHc3RTdGF0ZSBzb3VyY2VTdGF0ZTsKKyNlbmRpZgorfTsKKworZW51bSB7CisgICAgUFJPUF8w
LAorICAgIFBST1BfVk9MVU1FLAorICAgIFBST1BfTVVURSwKKyAgICBQUk9QX0VOQUJMRV9JTlRF
Uk5BTF9NSVhJTkcsCit9OworCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua1RlbXBs
YXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUoInNpbmsiLCBHU1RfUEFEX1NJTkssIEdTVF9Q
QURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQUygiYXVkaW8veC1yYXciKSk7CisKK0dTVF9E
RUJVR19DQVRFR09SWV9TVEFUSUMod2Via2l0X2F1ZGlvX3NpbmtfZGVidWcpOworI2RlZmluZSBH
U1RfQ0FUX0RFRkFVTFQgd2Via2l0X2F1ZGlvX3NpbmtfZGVidWcKKworI2RlZmluZSB3ZWJraXRf
YXVkaW9fc2lua19wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCitXRUJLSVRfREVGSU5FX1RZUEVf
V0lUSF9DT0RFKFdlYktpdEF1ZGlvU2luaywgd2Via2l0X2F1ZGlvX3NpbmssIEdTVF9UWVBFX0JJ
TiwKKyAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoR1NUX1RZUEVfU1RSRUFNX1ZPTFVNRSwgbnVs
bHB0cik7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X2F1ZGlvX3NpbmtfZGVi
dWcsICJ3ZWJraXRhdWRpb3NpbmsiLCAwLCAid2Via2l0IGF1ZGlvIHNpbmsgZWxlbWVudCIpCisp
CisKKyNpZiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJ
T04pCitzdHJ1Y3QgQXVkaW9QYWNrZXRIb2xkZXIgeworICAgIEF1ZGlvUGFja2V0SG9sZGVyKEdz
dEJ1ZmZlciogYnVmZmVyKQorICAgICAgICA6IGJ1ZmZlcihnc3RfYnVmZmVyX3JlZihidWZmZXIp
KQorICAgIHsgfQorICAgIH5BdWRpb1BhY2tldEhvbGRlcigpCisgICAgeworICAgICAgICBpZiAo
ZmQpCisgICAgICAgICAgICBjbG9zZSgqZmQpOworICAgICAgICBpZiAoaXNNYXBwZWQpCisgICAg
ICAgICAgICBnc3RfYnVmZmVyX3VubWFwKGJ1ZmZlciwgJmluZm8pOworICAgICAgICBnc3RfYnVm
ZmVyX3VucmVmKGJ1ZmZlcik7CisgICAgfQorCisgICAgT3B0aW9uYWw8c3RkOjpwYWlyPHVpbnQz
Ml90LCBzaXplX3Q+PiBtYXAoKQorICAgIHsKKyAgICAgICAgaXNNYXBwZWQgPSBnc3RfYnVmZmVy
X21hcChidWZmZXIsICZpbmZvLCBHU1RfTUFQX1JFQUQpOworICAgICAgICBpZiAoIWlzTWFwcGVk
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBmZCA9IG1lbWZk
X2NyZWF0ZSgid3BlLWF1ZGlvLWJ1ZmZlciIsIE1GRF9DTE9FWEVDKTsKKyAgICAgICAgaWYgKCpm
ZCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYg
KGZ0cnVuY2F0ZSgqZmQsIGluZm8uc2l6ZSkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIHNzaXplX3QgYnl0ZXNXcml0dGVuID0gd3JpdGUoKmZkLCBp
bmZvLmRhdGEsIGluZm8uc2l6ZSk7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPCAwKQorICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
c2l6ZV90PihieXRlc1dyaXR0ZW4pICE9IGluZm8uc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKGxzZWVrKCpmZCwgMCwgU0VFS19TRVQpID09IC0x
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCpmZCksIGluZm8uc2l6ZSk7CisgICAg
fQorCisgICAgT3B0aW9uYWw8aW50MzJfdD4gZmQ7CisgICAgR3N0QnVmZmVyKiBidWZmZXI7Cisg
ICAgR3N0TWFwSW5mbyBpbmZvIEdTVF9NQVBfSU5GT19JTklUOworICAgIGJvb2wgaXNNYXBwZWQg
eyBmYWxzZSB9OworfTsKKworc3RhdGljIHZvaWQgd2ViS2l0QXVkaW9TaW5rSGFuZGxlU2FtcGxl
KFdlYktpdEF1ZGlvU2luayogc2luaywgR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlKQorewor
ICAgIHN0cnVjdCB3cGVfYXVkaW9fc291cmNlKiB3cGVBdWRpb1NvdXJjZSA9IHNpbmstPnByaXYt
PndwZUF1ZGlvU291cmNlOworICAgIHN0YXRpYyBBdG9taWM8aW50MzJfdD4gdW5pcXVlSWQ7CisK
KyAgICBpZiAoc2luay0+cHJpdi0+c291cmNlU3RhdGUgPT0gR1NUX1NUQVRFX05VTEwpIHsKKyAg
ICAgICAgc2luay0+cHJpdi0+bV9zdHJlYW1JZCA9IHVuaXF1ZUlkLmV4Y2hhbmdlQWRkKDEpOwor
ICAgICAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhzYW1wbGUuZ2V0KCkp
OworICAgICAgICBHc3RBdWRpb0luZm8gaW5mbzsKKyAgICAgICAgZ3N0X2F1ZGlvX2luZm9faW5p
dCgmaW5mbyk7CisgICAgICAgIGdzdF9hdWRpb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2Fwcyk7
CisgICAgICAgIGNvbnN0IGNoYXIqIGZvcm1hdCA9IGdzdF9hdWRpb19mb3JtYXRfdG9fc3RyaW5n
KEdTVF9BVURJT19JTkZPX0ZPUk1BVCgmaW5mbykpOworICAgICAgICB3cGVfYXVkaW9fc291cmNl
X3N0YXJ0KHdwZUF1ZGlvU291cmNlLCBzaW5rLT5wcml2LT5tX3N0cmVhbUlkLCBHU1RfQVVESU9f
SU5GT19DSEFOTkVMUygmaW5mbyksIGZvcm1hdCwgR1NUX0FVRElPX0lORk9fUkFURSgmaW5mbykp
OworICAgICAgICBzaW5rLT5wcml2LT5zb3VyY2VTdGF0ZSA9IEdTVF9TVEFURV9QTEFZSU5HOwor
ICAgIH0KKworICAgIGF1dG8qIGhvbGRlciA9IG5ldyBBdWRpb1BhY2tldEhvbGRlcihnc3Rfc2Ft
cGxlX2dldF9idWZmZXIoc2FtcGxlLmdldCgpKSk7CisgICAgYXV0byBtYXBEYXRhID0gaG9sZGVy
LT5tYXAoKTsKKyAgICBpZiAoIW1hcERhdGEpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChz
aW5rLCAiVW5hYmxlIHRvIHByZXBhcmUgc2hhcmVkIGF1ZGlvIGJ1ZmZlciIpOworICAgICAgICBk
ZWxldGUgaG9sZGVyOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHdwZV9hdWRpb19zb3Vy
Y2VfcGFja2V0KHdwZUF1ZGlvU291cmNlLCBzaW5rLT5wcml2LT5tX3N0cmVhbUlkLCBzdGQ6Omdl
dDwwPigqbWFwRGF0YSksIHN0ZDo6Z2V0PDE+KCptYXBEYXRhKSwgW10odm9pZCogZGF0YSkgewor
ICAgICAgICBhdXRvKiBob2xkZXIgPSByZWludGVycHJldF9jYXN0PEF1ZGlvUGFja2V0SG9sZGVy
Kj4oZGF0YSk7CisgICAgICAgIGRlbGV0ZSBob2xkZXI7CisgICAgfSwgaG9sZGVyKTsKK30KKyNl
bmRpZgorCitzdGF0aWMgdm9pZCB3ZWJLaXRBdWRpb1NpbmtDb25zdHJ1Y3RlZChHT2JqZWN0KiBv
YmplY3QpCit7CisgICAgR1NUX0NBTExfUEFSRU5UKEdfT0JKRUNUX0NMQVNTLCBjb25zdHJ1Y3Rl
ZCwgKG9iamVjdCkpOworCisgICAgV2ViS2l0QXVkaW9TaW5rKiBzaW5rID0gV0VCS0lUX0FVRElP
X1NJTksob2JqZWN0KTsKKworICAgIGlmIChzaW5rLT5wcml2LT5lbmFibGVJbnRlcm5hbE1peGlu
ZykgeworICAgICAgICBzaW5rLT5wcml2LT5pbnRlcmF1ZGlvU2luayA9IGdzdF9lbGVtZW50X2Zh
Y3RvcnlfbWFrZSgiaW50ZXJhdWRpb3NpbmsiLCBudWxscHRyKTsKKyAgICAgICAgaWYgKCFzaW5r
LT5wcml2LT5pbnRlcmF1ZGlvU2luaykgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNpbmssICJGYWlsZWQgdG8gY3JlYXRl
IGludGVyYXVkaW9zaW5rIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBnc3RfYmluX2FkZChHU1RfQklOX0NBU1Qoc2luayksIHNpbmstPnByaXYtPmludGVyYXVk
aW9TaW5rLmdldCgpKTsKKyAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHRhcmdldFBhZCA9IGFkb3B0
R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChzaW5rLT5wcml2LT5pbnRlcmF1ZGlvU2lu
ay5nZXQoKSwgInNpbmsiKSk7CisgICAgICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoR1NUX0VMRU1F
TlRfQ0FTVChzaW5rKSwgd2Via2l0R3N0R2hvc3RQYWRGcm9tU3RhdGljVGVtcGxhdGUoJnNpbmtU
ZW1wbGF0ZSwgInNpbmsiLCB0YXJnZXRQYWQuZ2V0KCkpKTsKKyAgICB9IGVsc2UgeworI2lmIFBM
QVRGT1JNKFdQRSkKKyNpZiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorICAg
ICAgICBzaW5rLT5wcml2LT5zb3VyY2VTdGF0ZSA9IEdTVF9TVEFURV9OVUxMOworICAgICAgICBh
dXRvJiBzaGFyZWREaXNwbGF5ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCk7Cisg
ICAgICAgIGlmIChpczxQbGF0Zm9ybURpc3BsYXlMaWJXUEU+KHNoYXJlZERpc3BsYXkpKQorICAg
ICAgICAgICAgc2luay0+cHJpdi0+d3BlQXVkaW9Tb3VyY2UgPSB3cGVfYXVkaW9fc291cmNlX2Ny
ZWF0ZShkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlMaWJXUEU+KHNoYXJlZERpc3BsYXkpLmJhY2tl
bmQoKSk7CisKKyAgICAgICAgc2luay0+cHJpdi0+dm9sdW1lRWxlbWVudCA9IGdzdF9lbGVtZW50
X2ZhY3RvcnlfbWFrZSgidm9sdW1lIiwgbnVsbHB0cik7CisgICAgICAgIHNpbmstPnByaXYtPmFw
cHNpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImFwcHNpbmsiLCBudWxscHRyKTsKKyAg
ICAgICAgZ3N0X2FwcF9zaW5rX3NldF9lbWl0X3NpZ25hbHMoR1NUX0FQUF9TSU5LKHNpbmstPnBy
aXYtPmFwcHNpbmsuZ2V0KCkpLCBUUlVFKTsKKworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHNp
bmstPnByaXYtPmFwcHNpbmsuZ2V0KCksICJuZXctc2FtcGxlIiwgR19DQUxMQkFDSygrW10oR3N0
RWxlbWVudCogYXBwc2luaywgV2ViS2l0QXVkaW9TaW5rKiBzaW5rKSAtPiBHc3RGbG93UmV0dXJu
IHsKKyAgICAgICAgICAgIGF1dG8gc2FtcGxlID0gYWRvcHRHUmVmKGdzdF9hcHBfc2lua19wdWxs
X3NhbXBsZShHU1RfQVBQX1NJTksoYXBwc2luaykpKTsKKyAgICAgICAgICAgIHdlYktpdEF1ZGlv
U2lua0hhbmRsZVNhbXBsZShzaW5rLCBXVEZNb3ZlKHNhbXBsZSkpOworICAgICAgICAgICAgcmV0
dXJuIEdTVF9GTE9XX09LOworICAgICAgICB9KSwgc2luayk7CisgICAgICAgIGdfc2lnbmFsX2Nv
bm5lY3Qoc2luay0+cHJpdi0+YXBwc2luay5nZXQoKSwgIm5ldy1wcmVyb2xsIiwgR19DQUxMQkFD
SygrW10oR3N0RWxlbWVudCogYXBwc2luaywgV2ViS2l0QXVkaW9TaW5rKiBzaW5rKSAtPiBHc3RG
bG93UmV0dXJuIHsKKyAgICAgICAgICAgIGF1dG8gc2FtcGxlID0gYWRvcHRHUmVmKGdzdF9hcHBf
c2lua19wdWxsX3ByZXJvbGwoR1NUX0FQUF9TSU5LKGFwcHNpbmspKSk7CisgICAgICAgICAgICB3
ZWJLaXRBdWRpb1NpbmtIYW5kbGVTYW1wbGUoc2luaywgV1RGTW92ZShzYW1wbGUpKTsKKyAgICAg
ICAgICAgIHJldHVybiBHU1RfRkxPV19PSzsKKyAgICAgICAgfSksIHNpbmspOworCisgICAgICAg
IGdfc2lnbmFsX2Nvbm5lY3Qoc2luay0+cHJpdi0+YXBwc2luay5nZXQoKSwgImVvcyIsIEdfQ0FM
TEJBQ0soK1tdKEdzdEVsZW1lbnQqLCBXZWJLaXRBdWRpb1NpbmsqIHNpbmspIHsKKyAgICAgICAg
ICAgIHdwZV9hdWRpb19zb3VyY2Vfc3RvcChzaW5rLT5wcml2LT53cGVBdWRpb1NvdXJjZSwgc2lu
ay0+cHJpdi0+bV9zdHJlYW1JZCk7CisgICAgICAgICAgICBzaW5rLT5wcml2LT5zb3VyY2VTdGF0
ZSA9IEdTVF9TVEFURV9OVUxMOworICAgICAgICB9KSwgc2luayk7CisKKyAgICAgICAgZ3N0X2Jp
bl9hZGRfbWFueShHU1RfQklOX0NBU1Qoc2luayksIHNpbmstPnByaXYtPnZvbHVtZUVsZW1lbnQu
Z2V0KCksIHNpbmstPnByaXYtPmFwcHNpbmsuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBnc3Rf
ZWxlbWVudF9saW5rKHNpbmstPnByaXYtPnZvbHVtZUVsZW1lbnQuZ2V0KCksIHNpbmstPnByaXYt
PmFwcHNpbmsuZ2V0KCkpOworCisgICAgICAgIEdSZWZQdHI8R3N0UGFkPiB0YXJnZXRQYWQgPSBh
ZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoc2luay0+cHJpdi0+dm9sdW1lRWxl
bWVudC5nZXQoKSwgInNpbmsiKSk7CisgICAgICAgIEdzdFBhZCogc2lua1BhZCA9IHdlYmtpdEdz
dEdob3N0UGFkRnJvbVN0YXRpY1RlbXBsYXRlKCZzaW5rVGVtcGxhdGUsICJzaW5rIiwgdGFyZ2V0
UGFkLmdldCgpKTsKKyAgICAgICAgZ3N0X2VsZW1lbnRfYWRkX3BhZChHU1RfRUxFTUVOVF9DQVNU
KHNpbmspLCBzaW5rUGFkKTsKKyAgICAgICAgR1NUX09CSkVDVF9GTEFHX1NFVChzaW5rUGFkLCBH
U1RfUEFEX0ZMQUdfTkVFRF9QQVJFTlQpOworI2Vsc2UKKyAgICAgICAgR1NUX0VSUk9SX09CSkVD
VChzaW5rLCAiV1BFQmFja2VuZC1GRE8gQXVkaW8gZXh0ZW5zaW9uIGlzIG1pc3NpbmcsIHVwZGF0
ZSB0byBXUEVCYWNrZW5kLUZETyAxLjgueC4iKTsKKyNlbmRpZgorI2Vsc2UKKyAgICAgICAgR1NU
X0VSUk9SX09CSkVDVChzaW5rLCAiRXh0ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIGlzIHN1cHBvcnRl
ZCBvbmx5IGluIFdQRVdlYktpdCIpOworI2VuZGlmCisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3
ZWJLaXRBdWRpb1NpbmtEaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBhdXRvKiBwcml2
ID0gV0VCS0lUX0FVRElPX1NJTksob2JqZWN0KS0+cHJpdjsKKworICAgIGlmIChwcml2LT5wYWRF
dmVudFByb2JlSWQpIHsKKyAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQYWQgPSBhZG9wdEdS
ZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocHJpdi0+aW50ZXJhdWRpb1NpbmsuZ2V0KCks
ICJzaW5rIikpOworICAgICAgICBnc3RfcGFkX3JlbW92ZV9wcm9iZShzaW5rUGFkLmdldCgpLCBw
cml2LT5wYWRFdmVudFByb2JlSWQpOworICAgICAgICBwcml2LT5wYWRFdmVudFByb2JlSWQgPSAw
OworICAgIH0KKworICAgIGlmIChwcml2LT5wYWRCdWZmZXJQcm9iZUlkKSB7CisgICAgICAgIEdS
ZWZQdHI8R3N0UGFkPiBzaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNf
cGFkKHByaXYtPmludGVyYXVkaW9TaW5rLmdldCgpLCAic2luayIpKTsKKyAgICAgICAgZ3N0X3Bh
ZF9yZW1vdmVfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJpdi0+cGFkQnVmZmVyUHJvYmVJZCk7Cisg
ICAgICAgIHByaXYtPnBhZEJ1ZmZlclByb2JlSWQgPSAwOworICAgIH0KKworI2lmIFBMQVRGT1JN
KFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTikKKyAgICBpZiAocHJp
di0+d3BlQXVkaW9Tb3VyY2UpCisgICAgICAgIHdwZV9hdWRpb19zb3VyY2VfZGVzdHJveShwcml2
LT53cGVBdWRpb1NvdXJjZSk7CisjZW5kaWYKKworICAgIEdTVF9DQUxMX1BBUkVOVChHX09CSkVD
VF9DTEFTUywgZGlzcG9zZSwgKG9iamVjdCkpOworfQorCitzdGF0aWMgR3N0T2JqZWN0KiBnZXRJ
bnRlcm5hbFZvbHVtZU9iamVjdChXZWJLaXRBdWRpb1NpbmsqIHNpbmspCit7CisgICAgaWYgKHNp
bmstPnByaXYtPmVuYWJsZUludGVybmFsTWl4aW5nKSB7CisgICAgICAgIGlmICghc2luay0+cHJp
di0+bWl4ZXJQYWQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1
cm4gR1NUX09CSkVDVF9DQVNUKHNpbmstPnByaXYtPm1peGVyUGFkLmdldCgpKTsKKyAgICB9Cisg
ICAgcmV0dXJuIEdTVF9PQkpFQ1RfQ0FTVChzaW5rLT5wcml2LT52b2x1bWVFbGVtZW50LmdldCgp
KTsKK30KKworc3RhdGljIHZvaWQgd2ViS2l0QXVkaW9TaW5rU2V0UHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wSUQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBz
cGVjKQoreworICAgIFdlYktpdEF1ZGlvU2luayogc2luayA9IFdFQktJVF9BVURJT19TSU5LKG9i
amVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9WT0xVTUU6IHsK
KyAgICAgICAgR3N0T2JqZWN0KiBpbnRlcm5hbE9iamVjdCA9IGdldEludGVybmFsVm9sdW1lT2Jq
ZWN0KHNpbmspOworICAgICAgICBpZiAoIWludGVybmFsT2JqZWN0KSB7CisgICAgICAgICAgICBH
U1RfV0FSTklOR19PQkpFQ1Qoc2luaywgIk5vIGFzc29jaWF0ZWQgbWl4ZXIgcGFkLCBjYW4ndCBz
ZXQgJXMgcHJvcGVydHkiLCBnX3BhcmFtX3NwZWNfZ2V0X25hbWUocHNwZWMpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBnX29iamVjdF9zZXRfcHJvcGVydHkoR19P
QkpFQ1QoaW50ZXJuYWxPYmplY3QpLCAidm9sdW1lIiwgdmFsdWUpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBQUk9QX01VVEU6IHsKKyAgICAgICAgR3N0T2JqZWN0KiBpbnRlcm5h
bE9iamVjdCA9IGdldEludGVybmFsVm9sdW1lT2JqZWN0KHNpbmspOworICAgICAgICBpZiAoIWlu
dGVybmFsT2JqZWN0KSB7CisgICAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1Qoc2luaywgIk5v
IGFzc29jaWF0ZWQgbWl4ZXIgcGFkLCBjYW4ndCBzZXQgJXMgcHJvcGVydHkiLCBnX3BhcmFtX3Nw
ZWNfZ2V0X25hbWUocHNwZWMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBnX29iamVjdF9zZXRfcHJvcGVydHkoR19PQkpFQ1QoaW50ZXJuYWxPYmplY3QpLCAibXV0
ZSIsIHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9FTkFCTEVf
SU5URVJOQUxfTUlYSU5HOgorICAgICAgICBzaW5rLT5wcml2LT5lbmFibGVJbnRlcm5hbE1peGlu
ZyA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wSUQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3
ZWJLaXRBdWRpb1NpbmtHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwg
R1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0QXVkaW9TaW5r
KiBzaW5rID0gV0VCS0lUX0FVRElPX1NJTksob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElE
KSB7CisgICAgY2FzZSBQUk9QX1ZPTFVNRTogeworICAgICAgICBHc3RPYmplY3QqIGludGVybmFs
T2JqZWN0ID0gZ2V0SW50ZXJuYWxWb2x1bWVPYmplY3Qoc2luayk7CisgICAgICAgIGlmICghaW50
ZXJuYWxPYmplY3QpIHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVChzaW5rLCAiTm8g
YXNzb2NpYXRlZCBtaXhlciBwYWQsIGNhbid0IGdldCAlcyBwcm9wZXJ0eSIsIGdfcGFyYW1fc3Bl
Y19nZXRfbmFtZShwc3BlYykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGdfb2JqZWN0X2dldF9wcm9wZXJ0eShHX09CSkVDVChpbnRlcm5hbE9iamVjdCksICJ2b2x1
bWUiLCB2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfTVVURTog
eworICAgICAgICBHc3RPYmplY3QqIGludGVybmFsT2JqZWN0ID0gZ2V0SW50ZXJuYWxWb2x1bWVP
YmplY3Qoc2luayk7CisgICAgICAgIGlmICghaW50ZXJuYWxPYmplY3QpIHsKKyAgICAgICAgICAg
IEdTVF9XQVJOSU5HX09CSkVDVChzaW5rLCAiTm8gYXNzb2NpYXRlZCBtaXhlciBwYWQsIGNhbid0
IGdldCAlcyBwcm9wZXJ0eSIsIGdfcGFyYW1fc3BlY19nZXRfbmFtZShwc3BlYykpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGdfb2JqZWN0X2dldF9wcm9wZXJ0eShH
X09CSkVDVChpbnRlcm5hbE9iamVjdCksICJtdXRlIiwgdmFsdWUpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBQUk9QX0VOQUJMRV9JTlRFUk5BTF9NSVhJTkc6CisgICAgICAgIGdf
dmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHNpbmstPnByaXYtPmVuYWJsZUludGVybmFsTWl4aW5n
KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9J
TlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwc3BlYyk7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdlYktpdEF1ZGlvU2lu
a0NoYW5nZVN0YXRlKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHN0YXRlQ2hh
bmdlKQoreworICAgIGF1dG8qIHNpbmsgPSBXRUJLSVRfQVVESU9fU0lOSyhlbGVtZW50KTsKKyAg
ICBhdXRvKiBwcml2ID0gc2luay0+cHJpdjsKKworI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDE0
LCAwKQorICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2luaywgIkhhbmRsaW5nICVzIHRyYW5zaXRpb24i
LCBnc3Rfc3RhdGVfY2hhbmdlX2dldF9uYW1lKHN0YXRlQ2hhbmdlKSk7CisjZW5kaWYKKworICAg
IGF1dG8mIG1peGVyID0gR1N0cmVhbWVyQXVkaW9NaXhlcjo6c2luZ2xldG9uKCk7CisgICAgaWYg
KHByaXYtPmVuYWJsZUludGVybmFsTWl4aW5nICYmIHN0YXRlQ2hhbmdlID09IEdTVF9TVEFURV9D
SEFOR0VfTlVMTF9UT19SRUFEWSkgeworICAgICAgICBpZiAoIXByaXYtPmludGVyYXVkaW9TaW5r
KSB7CisgICAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoZWxlbWVudCwgZ3N0X21p
c3NpbmdfZWxlbWVudF9tZXNzYWdlX25ldyhlbGVtZW50LCAiaW50ZXJhdWRpb3NpbmsiKSk7Cisg
ICAgICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihzaW5rLCBDT1JFLCBNSVNTSU5HX1BMVUdJTiwg
KG51bGxwdHIpLCAoIm5vIGludGVyYXVkaW9zaW5rIikpOworICAgICAgICAgICAgcmV0dXJuIEdT
VF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKKyAgICAgICAgfQorICAgICAgICBwcml2LT5taXhlclBh
ZCA9IG1peGVyLnJlZ2lzdGVyUHJvZHVjZXIocHJpdi0+aW50ZXJhdWRpb1NpbmsuZ2V0KCkpOwor
ICAgIH0KKworICAgIGlmIChwcml2LT5lbmFibGVJbnRlcm5hbE1peGluZykKKyAgICAgICAgbWl4
ZXIuZW5zdXJlU3RhdGUoc3RhdGVDaGFuZ2UpOworCisgICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4g
cmVzdWx0ID0gR1NUX0NBTExfUEFSRU5UX1dJVEhfREVGQVVMVChHU1RfRUxFTUVOVF9DTEFTUywg
Y2hhbmdlX3N0YXRlLCAoZWxlbWVudCwgc3RhdGVDaGFuZ2UpLCBHU1RfU1RBVEVfQ0hBTkdFX0ZB
SUxVUkUpOworCisjaWYgUExBVEZPUk0oV1BFKSAmJiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9f
RVhURU5TSU9OKQorICAgIGlmICghcHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhpbmcpIHsKKyAgICAg
ICAgYm9vbCBpc0VPUyA9IGdzdF9hcHBfc2lua19pc19lb3MoR1NUX0FQUF9TSU5LKHByaXYtPmFw
cHNpbmsuZ2V0KCkpKTsKKyAgICAgICAgaWYgKChzdGF0ZUNoYW5nZSA9PSBHU1RfU1RBVEVfQ0hB
TkdFX1BMQVlJTkdfVE9fUEFVU0VEKSAmJiAhaXNFT1MpIHsKKyAgICAgICAgICAgIHdwZV9hdWRp
b19zb3VyY2VfcGF1c2UocHJpdi0+d3BlQXVkaW9Tb3VyY2UsIHByaXYtPm1fc3RyZWFtSWQpOwor
ICAgICAgICAgICAgcHJpdi0+c291cmNlU3RhdGUgPSBHU1RfU1RBVEVfUEFVU0VEOworICAgICAg
ICB9CisgICAgICAgIGlmIChzdGF0ZUNoYW5nZSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9U
T19SRUFEWSAmJiBpc0VPUykKKyAgICAgICAgICAgIHByaXYtPnNvdXJjZVN0YXRlID0gR1NUX1NU
QVRFX05VTEw7CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAocHJpdi0+ZW5hYmxlSW50ZXJuYWxN
aXhpbmcgJiYgKHN0YXRlQ2hhbmdlID09IEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fTlVMTCkg
JiYgKHJlc3VsdCA+IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkpIHsKKyAgICAgICAgbWl4ZXIu
dW5yZWdpc3RlclByb2R1Y2VyKHByaXYtPm1peGVyUGFkKTsKKyAgICAgICAgcHJpdi0+bWl4ZXJQ
YWQgPSBudWxscHRyOworICAgIH0KKyNpZiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNLRU5E
X0ZET19BVURJT19FWFRFTlNJT04pCisgICAgaWYgKCFwcml2LT5lbmFibGVJbnRlcm5hbE1peGlu
ZyAmJiAocHJpdi0+c291cmNlU3RhdGUgPT0gR1NUX1NUQVRFX1BBVVNFRCkgJiYgKHN0YXRlQ2hh
bmdlID09IEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1BMQVlJTkcpICYmIChyZXN1bHQgPiBH
U1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpKSB7CisgICAgICAgIHdwZV9hdWRpb19zb3VyY2VfcmVz
dW1lKHByaXYtPndwZUF1ZGlvU291cmNlLCBwcml2LT5tX3N0cmVhbUlkKTsKKyAgICAgICAgcHJp
di0+c291cmNlU3RhdGUgPSBHU1RfU1RBVEVfUExBWUlORzsKKyAgICB9CisjZW5kaWYKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9hdWRpb19zaW5rX2NsYXNz
X2luaXQoV2ViS2l0QXVkaW9TaW5rQ2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyog
b2tsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIG9rbGFzcy0+Y29uc3RydWN0ZWQg
PSB3ZWJLaXRBdWRpb1NpbmtDb25zdHJ1Y3RlZDsKKyAgICBva2xhc3MtPmRpc3Bvc2UgPSB3ZWJL
aXRBdWRpb1NpbmtEaXNwb3NlOworICAgIG9rbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2ViS2l0QXVk
aW9TaW5rU2V0UHJvcGVydHk7CisgICAgb2tsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJLaXRBdWRp
b1NpbmtHZXRQcm9wZXJ0eTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
b2tsYXNzLCBQUk9QX1ZPTFVNRSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSgidm9sdW1l
IiwgIlZvbHVtZSIsICJUaGUgYXVkaW8gdm9sdW1lLCAxLjA9MTAwJSIsIDAsIDEwLCAxLAorICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KEdfUEFSQU1fUkVBRFdSSVRFIHwgR19Q
QVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KG9rbGFzcywgUFJPUF9NVVRFLAorICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigibXV0
ZSIsICJNdXRlIiwgIk11dGUgdGhlIGF1ZGlvIGNoYW5uZWwgd2l0aG91dCBjaGFuZ2luZyB0aGUg
dm9sdW1lIiwgRkFMU0UsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oR19Q
QVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNzLCBQUk9QX0VOQUJMRV9JTlRFUk5BTF9NSVhJ
TkcsCisgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtaW50ZXJuYWwtbWl4aW5n
IiwgIkVuYWJsZSBJbnRlcm5hbCBNaXhpbmciLCAiUHJveHkgYXVkaW8gYnVmZmVycyB0byB0aGUg
YXVkaW9taXhlciIsIEZBTFNFLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+
KEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyB8IEdfUEFSQU1fQ09O
U1RSVUNUX09OTFkpKSk7CisKKyAgICBHc3RFbGVtZW50Q2xhc3MqIGVrbGFzcyA9IEdTVF9FTEVN
RU5UX0NMQVNTKGtsYXNzKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfc3RhdGljX3BhZF90
ZW1wbGF0ZShla2xhc3MsICZzaW5rVGVtcGxhdGUpOworICAgIGdzdF9lbGVtZW50X2NsYXNzX3Nl
dF9tZXRhZGF0YShla2xhc3MsICJXZWJLaXQgQXVkaW8gc2luayBlbGVtZW50IiwgIlNpbmsvQXVk
aW8iLAorICAgICAgICAiUHJveGllcyBhdWRpbyBkYXRhIHRvIFdlYktpdCdzIGF1ZGlvIG1peGVy
IiwgIlBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+Iik7CisKKyAgICBla2xhc3Mt
PmNoYW5nZV9zdGF0ZSA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdEF1ZGlvU2lua0NoYW5nZVN0
YXRlKTsKK30KKworR3N0RWxlbWVudCogd2Via2l0QXVkaW9TaW5rTmV3KGJvb2wgZW5hYmxlSW50
ZXJuYWxNaXhpbmcpCit7CisgICAgcmV0dXJuIEdTVF9FTEVNRU5UX0NBU1QoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX0FVRElPX1NJTkssICJlbmFibGUtaW50ZXJuYWwtbWl4aW5nIiwgZW5hYmxl
SW50ZXJuYWxNaXhpbmcsIG51bGxwdHIpKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jYTExYmNhZTdlMmQ2ODM2OWZlMGQ5MmYzZTBmOWY4NWNkZDY3YzcxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiAg
Q29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikKKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdF
QktJVF9UWVBFX0FVRElPX1NJTksgICAgICAgICAgICAod2Via2l0X2F1ZGlvX3NpbmtfZ2V0X3R5
cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0FVRElPX1NJTksob2JqKSAgICAgICAgICAgIChHX1RZUEVf
Q0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfQVVESU9fU0lOSywgV2ViS2l0
QXVkaW9TaW5rKSkKKyNkZWZpbmUgV0VCS0lUX0FVRElPX1NJTktfQ0xBU1Moa2xhc3MpICAgIChH
X1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCBXRUJLSVRfVFlQRV9BVURJT19TSU5LLCBX
ZWJLaXRBdWRpb1NpbmtDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19BVURJT19TSU5LKG9iaikg
ICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0FV
RElPX1NJTkspKQorI2RlZmluZSBXRUJLSVRfSVNfQVVESU9fU0lOS19DTEFTUyhrbGFzcykgKEdf
VFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksIFdFQktJVF9UWVBFX0FVRElPX1NJTkspKQor
Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXVkaW9TaW5rICAgICAgICBXZWJLaXRBdWRpb1Npbms7
Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXVkaW9TaW5rQ2xhc3MgICBXZWJLaXRBdWRpb1NpbmtD
bGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBdWRpb1NpbmtQcml2YXRlIFdlYktpdEF1ZGlv
U2lua1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0QXVkaW9TaW5rIHsKKyAgICBHc3RCaW4gcGFy
ZW50OworCisgICAgV2ViS2l0QXVkaW9TaW5rUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBf
V2ViS2l0QXVkaW9TaW5rQ2xhc3MgeworICAgIEdzdEJpbkNsYXNzIHBhcmVudENsYXNzOworfTsK
KworR1R5cGUgd2Via2l0X2F1ZGlvX3NpbmtfZ2V0X3R5cGUodm9pZCk7CisKK0dfRU5EX0RFQ0xT
CisKK0dzdEVsZW1lbnQqIHdlYmtpdEF1ZGlvU2lua05ldyhib29sIGVuYWJsZUludGVybmFsTWl4
aW5nKTsKKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1ZGlvUmVuZGVyaW5nUG9saWN5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdWRpb1JlbmRlcmluZ1BvbGljeS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMTNh
ZmE0OWZhNTZiNmJiNGNmNTI5MzZmOTljMTcxY2EwYTgxNTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdWRpb1JlbmRlcmluZ1BvbGljeS5oCkBAIC0wLDAgKzEsNDMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIGNsYXNzIEF1ZGlvUmVuZGVyaW5nUG9saWN5IDog
dWludDhfdCB7CisgICAgSG9zdERlZmF1bHQsCisgICAgSW50ZXJuYWxNaXhpbmcsCisgICAgRXh0
ZXJuYWwKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgV1RGIHsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5
PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpBdWRp
b1JlbmRlcmluZ1BvbGljeSwKKyAgICAgICAgV2ViS2l0OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6
SG9zdERlZmF1bHQsCisgICAgICAgIFdlYktpdDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkludGVy
bmFsTWl4aW5nLAorICAgICAgICBXZWJLaXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpFeHRlcm5h
bAorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggY2FmOGVmZTg4MWY2
MzMzNzI2MDcxMDBlOGQ1MWIyMmRiMTYwN2NlOC4uNDQwYjFlN2E2YjI0ZTNjNzFmNWY4Yjc5M2Qx
MmVjY2I2ZTdjMTFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJBUElEYXRh
LmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIkF1ZGlvUmVuZGVyaW5nUG9saWN5LmgiCiAjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgogI2luY2x1ZGUg
IldlYkNlcnRpZmljYXRlSW5mby5oIgpAQCAtMjAzLDcgKzIwNCw4IEBAIGVudW0gewogICAgIFBS
T1BfRURJVEFCTEUsCiAgICAgUFJPUF9QQUdFX0lELAogICAgIFBST1BfSVNfTVVURUQsCi0gICAg
UFJPUF9XRUJTSVRFX1BPTElDSUVTCisgICAgUFJPUF9XRUJTSVRFX1BPTElDSUVTLAorICAgIFBS
T1BfQVVESU9fUkVOREVSSU5HX1BPTElDWQogfTsKIAogdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90
LCBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiA+IExvYWRpbmdSZXNvdXJjZXNNYXA7CkBAIC0z
MDYsNiArMzA4LDggQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAKICAgICBHUmVm
UHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gd2Vic2l0ZURhdGFNYW5hZ2VyOwogICAgIEdS
ZWZQdHI8V2ViS2l0V2Vic2l0ZVBvbGljaWVzPiB3ZWJzaXRlUG9saWNpZXM7CisKKyAgICBXZWJL
aXRBdWRpb1JlbmRlcmluZ1BvbGljeSBhdWRpb1JlbmRlcmluZ1BvbGljeTsKIH07CiAKIHN0YXRp
YyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTgwNyw2ICs4MTEsMTAg
QEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUKICAgICAgICAgYnJlYWs7CiAgICAgfQogI2VuZGlm
CisgICAgY2FzZSBQUk9QX0FVRElPX1JFTkRFUklOR19QT0xJQ1k6IHsKKyAgICAgICAgd2ViVmll
dy0+cHJpdi0+YXVkaW9SZW5kZXJpbmdQb2xpY3kgPSBzdGF0aWNfY2FzdDxXZWJLaXRBdWRpb1Jl
bmRlcmluZ1BvbGljeT4oZ192YWx1ZV9nZXRfZW51bSh2YWx1ZSkpOworICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgY2FzZSBQUk9QX1dFQl9DT05URVhUOiB7CiAgICAgICAgIGdwb2ludGVyIHdl
YkNvbnRleHQgPSBnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpOwogICAgICAgICB3ZWJWaWV3LT5w
cml2LT5jb250ZXh0ID0gd2ViQ29udGV4dCA/IFdFQktJVF9XRUJfQ09OVEVYVCh3ZWJDb250ZXh0
KSA6IG51bGxwdHI7CkBAIC04NjMsNiArODcxLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHUK
ICAgICAgICAgZ192YWx1ZV9zZXRfc3RhdGljX2JveGVkKHZhbHVlLCB3ZWJWaWV3LT5wcml2LT5i
YWNrZW5kLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKKyAgICBjYXNlIFBST1BfQVVE
SU9fUkVOREVSSU5HX1BPTElDWToKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2YWx1ZSwgd2Vi
Vmlldy0+cHJpdi0+YXVkaW9SZW5kZXJpbmdQb2xpY3kpOworICAgICAgICBicmVhazsKICAgICBj
YXNlIFBST1BfV0VCX0NPTlRFWFQ6CiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwg
d2ViVmlldy0+cHJpdi0+Y29udGV4dC5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTMyMCw2
ICsxMzMxLDMxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktp
dFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VC
U0lURV9QT0xJQ0lFUywKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJL
SVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKIAorICAgIC8q
KgorICAgICAqIFdlYktpdFdlYlZpZXc6OmF1ZGlvLXJlbmRlcmluZy1wb2xpY3k6CisgICAgICoK
KyAgICAgKiBXaGV0aGVyIHRoZSAjV2ViS2l0V2ViVmlldyBzaG91bGQgbWFuYWdlIGF1ZGlvIHJl
bmRlcmluZyB0aHJvdWdoIHRoZSBob3N0CisgICAgICogcGxhdGZvcm0gYXVkaW8gZGFlbW9uICh1
c3VhbGx5IFB1bHNlQXVkaW8pLiBUaGlzIGlzIHRoZSBkZWZhdWx0CisgICAgICogYmVoYXZpb3Vy
LCB0aGUgcHJvcGVydHkgaXMgQEFVRElPX1JFTkRFUklOR19QT0xJQ1lfSE9TVF9ERUZBVUxUIGJ5
IGRlZmF1bHQuCisgICAgICoKKyAgICAgKiBJbiBXUEVXZWJLaXQsIGFuIGFkZGl0aW9uYWwgcHJv
cGVydHkgdmFsdWUgaXMgYXZhaWxhYmxlLiBVc2luZworICAgICAqIEBXRUJLSVRfQVVESU9fUkVO
REVSSU5HX1BPTElDWV9FWFRFUk5BTCBpbXBsaWVzIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlY2Vp
dmUgbm90aWZpY2F0aW9ucworICAgICAqIHRocm91Z2ggdGhlIFdQRUJhY2tlbmQtRkRPIGF1ZGlv
IHNvdXJjZS4gSW4gdGhpcyBjYXNlIHRoZSBhcHBsaWNhdGlvbiBpcyBleHBlY3RlZCB0byBtYW5h
Z2UKKyAgICAgKiBhdWRpbyByZW5kZXJpbmcgaXRzZWxmLgorICAgICAqCisgICAgICogU2luY2U6
IDIuMzAKKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAg
ICAgICBnT2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfQVVESU9fUkVOREVSSU5HX1BPTElDWSwK
KyAgICAgICAgZ19wYXJhbV9zcGVjX2VudW0oCisgICAgICAgICAgICAiYXVkaW8tcmVuZGVyaW5n
LXBvbGljeSIsCisgICAgICAgICAgICAiQXVkaW8gUmVuZGVyaW5nIFBvbGljeSIsCisgICAgICAg
ICAgICBfKCJXaGV0aGVyIHRoZSB2aWV3IGlzIGludGVybmFsbHkgcmVuZGVyaW5nIGF1ZGlvIiks
CisgICAgICAgICAgICBXRUJLSVRfVFlQRV9BVURJT19SRU5ERVJJTkdfUE9MSUNZLAorICAgICAg
ICAgICAgV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfSE9TVF9ERUZBVUxULAorICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBH
X1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmll
dzo6bG9hZC1jaGFuZ2VkOgogICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9u
IHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZApAQCAtMjI5Myw2ICsyMzI5LDIyIEBAIHZvaWQg
d2Via2l0V2ViVmlld1dpbGxTdGFydExvYWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAv
LyBjbGllbnQgYXBwbGljYXRpb24gd2lsbCBzdGlsbCBzZWUgdGhlIFVSSSB1cGRhdGUgaW1tZWRp
YXRlbHkuIE90aGVyd2lzZSwgdGhlIFVSSSB1cGRhdGUgd2lsbCBiZSBkZWxheWVkIGEgYml0Lgog
ICAgIHdlYlZpZXctPnByaXYtPmlzQWN0aXZlVVJJQ2hhbmdlQmxvY2tlZCA9IHRydWU7CiAKKyAg
ICBXZWJLaXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5IHBvbGljeSA9IFdlYktpdDo6QXVkaW9SZW5k
ZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OworICAgIHN3aXRjaCAod2ViVmlldy0+cHJpdi0+YXVk
aW9SZW5kZXJpbmdQb2xpY3kpIHsKKyAgICBjYXNlIFdFQktJVF9BVURJT19SRU5ERVJJTkdfUE9M
SUNZX0hPU1RfREVGQVVMVDoKKyAgICAgICAgcG9saWN5ID0gV2ViS2l0OjpBdWRpb1JlbmRlcmlu
Z1BvbGljeTo6SG9zdERlZmF1bHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0FV
RElPX1JFTkRFUklOR19QT0xJQ1lfSU5URVJOQUxfTUlYSU5HOgorICAgICAgICBwb2xpY3kgPSBX
ZWJLaXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpJbnRlcm5hbE1peGluZzsKKyAgICAgICAgYnJl
YWs7CisjaWYgUExBVEZPUk0oV1BFKQorICAgIGNhc2UgV0VCS0lUX0FVRElPX1JFTkRFUklOR19Q
T0xJQ1lfRVhURVJOQUw6CisgICAgICAgIHBvbGljeSA9IFdlYktpdDo6QXVkaW9SZW5kZXJpbmdQ
b2xpY3k6OkV4dGVybmFsOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIH0KKyAgICBnZXRQ
YWdlKHdlYlZpZXcpLnNldEF1ZGlvUmVuZGVyaW5nUG9saWN5KHBvbGljeSk7CisKICAgICAvLyBU
aGlzIGlzIGNhbGxlZCBiZWZvcmUgTmF2aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRQcm92aXNpb25h
bE5hdmlnYXRpb24oKSwgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBoYXNuJ3QgYmVlbiBjb21taXR0ZWQg
eWV0LgogICAgIGF1dG8mIHBhZ2VMb2FkU3RhdGUgPSBnZXRQYWdlKHdlYlZpZXcpLnBhZ2VMb2Fk
U3RhdGUoKTsKICAgICBpZiAocGFnZUxvYWRTdGF0ZS5pc0ZpbmlzaGVkKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGFjNTE2ODNi
Njc1ZDVhOThiNjY1NTMyM2Y5YTUxYzQ5ZTc2MjNhMWUuLjQ5NTcyYzM1OWU0YjQzYmM4ZDc4YjVi
MTdkMzE2ODczZTVlYTE5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5oCkBAIC0yMDMsNiArMjAzLDE5IEBAIHR5cGVkZWYgZW51bSB7CiAg
ICAgV0VCS0lUX1dFQl9QUk9DRVNTX0VYQ0VFREVEX01FTU9SWV9MSU1JVAogfSBXZWJLaXRXZWJQ
cm9jZXNzVGVybWluYXRpb25SZWFzb247CiAKKy8qKgorICogV2ViS2l0QXVkaW9SZW5kZXJpbmdQ
b2xpY3k6CisgKiBAV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfSE9TVF9ERUZBVUxUOiB1
c2UgaG9zdCBhdWRpbyBkYWVtb24gKHVzdWFsbHkgUHVsc2VBdWRpbykuCisgKiBAV0VCS0lUX0FV
RElPX1JFTkRFUklOR19QT0xJQ1lfSU5URVJOQUxfTUlYSU5HOiBwZXJmb3JtIGludGVybmFsIG1p
eGluZyBhbmQgcmVuZGVyIHRoZSByZXN1bHRpbmcgc3RyZWFtIHRvIGhvc3QgYXVkaW8gZGFlbW9u
LgorICogQXVkaW8gcmVuZGVyaW5nIHBvbGljeS4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCit0
eXBlZGVmIGVudW0geworICAgIFdFQktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZX0hPU1RfREVG
QVVMVCwKKyAgICBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9JTlRFUk5BTF9NSVhJTkcs
Cit9IFdlYktpdEF1ZGlvUmVuZGVyaW5nUG9saWN5OworCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcg
ewogICAgIFdlYktpdFdlYlZpZXdCYXNlIHBhcmVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0
aW9ucy50eHQKaW5kZXggNjJiMGUxMDg2YjA5OGYzMTUyZmNkMTc5M2ExM2FhMWQzZWViMDQ4My4u
OWEwZjZhYWNkN2Q2YzVjNWQzMzk4MTZlNWZkNDNmNjRhNzRlNjE2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25z
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay00LjAtc2VjdGlvbnMudHh0CkBAIC0xOTksNiArMTk5LDcgQEAgV2ViS2l0U25hcHNob3RPcHRp
b25zCiBXZWJLaXRTbmFwc2hvdFJlZ2lvbgogV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uCiBXZWJLaXRBdXRvcGxheVBvbGljeQorV2ViS2l0QXVkaW9SZW5kZXJpbmdQb2xpY3kKIAog
PFNVQlNFQ1RJT04gRWRpdGluZyBDb21tYW5kcz4KIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VU
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmlu
ZGV4IDIzMTQ5YjBiZjc0YWQwYjY2ODM5MWZmOWQ2Y2YxZDk4ZmJjMTU4YTguLjE5Yjk2NjJhZmQw
NGQzOGMxZmNmNzIwODdjYjBkN2JiZWU3NTA5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCkBAIC0xODQsNiArMTg0LDIzIEBAIHR5cGVk
ZWYgZW51bSB7CiB0eXBlZGVmIHZvaWQgKCogV2ViS2l0RnJhbWVEaXNwbGF5ZWRDYWxsYmFjaykg
KFdlYktpdFdlYlZpZXcgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICB1c2VyX2RhdGEpOwogCisKKy8qKgorICog
V2ViS2l0QXVkaW9SZW5kZXJpbmdQb2xpY3k6CisgKiBAV0VCS0lUX0FVRElPX1JFTkRFUklOR19Q
T0xJQ1lfSE9TVF9ERUZBVUxUOiB1c2UgaG9zdCBhdWRpbyBkYWVtb24gKHVzdWFsbHkgUHVsc2VB
dWRpbykuCisgKiBAV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfSU5URVJOQUxfTUlYSU5H
OiBwZXJmb3JtIGludGVybmFsIG1peGluZyBhbmQgcmVuZGVyIHRoZSByZXN1bHRpbmcgc3RyZWFt
IHRvIGhvc3QgYXVkaW8gZGFlbW9uLgorICogQFdFQktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZ
X0VYVEVSTkFMOiBkZWZlciBhdWRpbyByZW5kZXJpbmcgdG8gYXBwbGljYXRpb24uCisgKgorICog
QXVkaW8gcmVuZGVyaW5nIHBvbGljeS4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCit0eXBlZGVm
IGVudW0geworICAgIFdFQktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZX0hPU1RfREVGQVVMVCwK
KyAgICBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9JTlRFUk5BTF9NSVhJTkcsCisgICAg
V0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfRVhURVJOQUwsCit9IFdlYktpdEF1ZGlvUmVu
ZGVyaW5nUG9saWN5OworCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIEdPYmplY3QgcGFy
ZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mv
d3BlLTEuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2Rv
Y3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKaW5kZXggN2QxMjE0YjFjYjE1NzcyOGVlYTk1OWM4MGVj
NjA0NjliODY0ODhhNC4uN2U2OGI0Y2ZiOTdhMWQyOWQ4ZDMxM2UxZGZhMWNkMWU4NGExOGI5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAt
c2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93
cGUtMS4wLXNlY3Rpb25zLnR4dApAQCAtMTczLDYgKzE3Myw3IEBAIFdlYktpdEluc2VjdXJlQ29u
dGVudEV2ZW50CiBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb24KIFdlYktpdEZyYW1l
RGlzcGxheWVkQ2FsbGJhY2sKIFdlYktpdEF1dG9wbGF5UG9saWN5CitXZWJLaXRBdWRpb1JlbmRl
cmluZ1BvbGljeQogCiA8U1VCU0VDVElPTiBFZGl0aW5nIENvbW1hbmRzPgogV0VCS0lUX0VESVRJ
TkdfQ09NTUFORF9DVVQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IGQ3ZjgyZjdiZTJmZWIzZjUxZTBmY2ZmYzJlMDI2ZGFiZTgxNjQ3ZmUuLjY5NjAzMWYwMWVm
NTM3MmVjZmExNDUxOTRjZGZiZTY3NWZkOTg4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMjM3LDYgKzIzNywxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
Q2Fpcm9VdGlsaXRpZXMuaD4KICNlbmRpZgogCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRl
ICJBdWRpb1JlbmRlcmluZ1BvbGljeS5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhUGxheWJhY2tUYXJnZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIuaD4KQEAgLTQ5Niw2ICs1MDAsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJl
ZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fdHJhbnNjb2RpbmdRdWV1ZShXb3JrUXVldWU6
OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5JbWFnZVRyYW5zY29kaW5nIikpCiAjZW5kaWYKKyNp
ZiBVU0UoR1NUUkVBTUVSKQorICAgICwgbV9hdWRpb1JlbmRlcmluZ1BvbGljeShBdWRpb1JlbmRl
cmluZ1BvbGljeTo6SG9zdERlZmF1bHQpCisjZW5kaWYKIHsKICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJjb25zdHJ1Y3RvcjoiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCAzMGIyNjk3YjBiZjdhY2VmZDQ4NGFhMjY2ODVjN2NjNTUzYzVi
ZTdmLi40ZTIzZDQ0ZDA2YzE0MDc4ZWJkZjQ5NTcxOTFiNTQ1ZWY1YzEyYWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzY0LDYgKzM2NCwxMCBAQCBlbnVtIGNs
YXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBib29sOwogZW51bSBjbGFzcyBVbmRv
T3JSZWRvIDogYm9vbDsKIGVudW0gY2xhc3MgV2ViQ29udGVudE1vZGUgOiB1aW50OF90OwogCisj
aWYgVVNFKEdTVFJFQU1FUikKK2VudW0gY2xhc3MgQXVkaW9SZW5kZXJpbmdQb2xpY3kgOiB1aW50
OF90OworI2VuZGlmCisKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RGF0YSo+IERhdGFD
YWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPHVpbnQ2NF90PiBVbnNpZ25lZENhbGxi
YWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJj4gU3RyaW5nQ2FsbGJh
Y2s7CkBAIC0xNzg5LDYgKzE3OTMsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBwcmVjb25uZWN0
VG8oY29uc3QgVVJMJik7CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIEF1ZGlvUmVuZGVyaW5n
UG9saWN5IGF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1JlbmRl
cmluZ1BvbGljeTsgfQorICAgIHZvaWQgc2V0QXVkaW9SZW5kZXJpbmdQb2xpY3koQXVkaW9SZW5k
ZXJpbmdQb2xpY3kpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VD
bGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTI4NDYsNiArMjg1NSwxMCBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZWY8V29ya1F1ZXVlPiBtX3RyYW5zY29k
aW5nUXVldWU7CiAjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCisgICAgQXVkaW9SZW5kZXJp
bmdQb2xpY3kgbV9hdWRpb1JlbmRlcmluZ1BvbGljeTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFt
ZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dz
dHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCmluZGV4IGUzYWU1MTRiMDM3Y2U4Zjg4
MDQ5OGFmZTEyYTFmOWVjMzFiYTY2YjguLjhjMmJhZDVkMTRiMGQ2NzNkZDUxOWVmNzk5MzU4MmUz
ZmFjMTVmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9X
ZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dz
dHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpCisjaW5jbHVkZSAiQXVkaW9SZW5kZXJpbmdQb2xpY3kuaCIKICNpbmNsdWRlICJJbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGFnZUNs
aWVudC5oIgogCkBAIC00MSw2ICs0MiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdElu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29ucwogICAg
IHJlcXVlc3QtPmRlbnkoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNldEF1ZGlvUmVuZGVy
aW5nUG9saWN5KEF1ZGlvUmVuZGVyaW5nUG9saWN5IHBvbGljeSkKK3sKKyAgICBtX2F1ZGlvUmVu
ZGVyaW5nUG9saWN5ID0gcG9saWN5OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0QXVkaW9SZW5kZXJpbmdQb2xpY3kocG9saWN5KSwgbV93ZWJQYWdlSUQpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNF
KEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggZWZjMDAzYmQwMTU5MTAwMDgy
ZGUzY2VmMWY2MDlmYTUyMjUxY2E1YS4uMDY1YWNmOThmOGY3NDFlNWVmMWFmNDJkODg2MGQ5NDVj
ZmFhN2Q4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEwMCw2ICsxMDAsMTAgQEAKICNp
bmNsdWRlICJQcmludGVyTGlzdEd0ay5oIgogI2VuZGlmCiAKKyNpZiBVU0UoR1NUUkVBTUVSKQor
I2luY2x1ZGUgIkF1ZGlvUmVuZGVyaW5nUG9saWN5LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShX
RUJfQVVUSE4pCiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uLmg+CiAjZW5kaWYKQEAgLTEzMDYsNiArMTMxMCwyMCBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudDo6cmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0
YWlscywgYwogICAgIG1fcGFnZS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoZGV0
YWlscywgZGVzY3JpcHRpb24sIGNhbGxiYWNrKTsKIH0KIAorQ2hyb21lQ2xpZW50OjpBdWRpb1Jl
bmRlcmluZ1BvbGljeSBXZWJDaHJvbWVDbGllbnQ6OmF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29u
c3QKK3sKKyAgICBzd2l0Y2ggKG1fcGFnZS5hdWRpb1JlbmRlcmluZ1BvbGljeSgpKSB7CisgICAg
Y2FzZSBXZWJLaXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIENocm9tZUNsaWVudDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0Owor
ICAgIGNhc2UgV2ViS2l0OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SW50ZXJuYWxNaXhpbmc6Cisg
ICAgICAgIHJldHVybiBDaHJvbWVDbGllbnQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpJbnRlcm5h
bE1peGluZzsKKyAgICBjYXNlIFdlYktpdDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkV4dGVybmFs
OgorICAgICAgICByZXR1cm4gQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6RXh0
ZXJuYWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorICAgIHJldHVybiBDaHJvbWVDbGllbnQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVm
YXVsdDsKK30KICNlbmRpZgogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlkSW52YWxpZGF0ZURv
Y3VtZW50TWFya2VyUmVjdHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGU3NWY0ODg1MmJmYTA2
YjFhZDQwZTNiYmExZmEzY2MzZTNmNDFhOGUuLjA3ZDNlNTY4YTJkNTE4NTg0NDk3N2YyNjM3YTY1
OWJlYzAzZjQ5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM3OSw2ICszNzksNyBAQCBwcml2
YXRlOgogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogICAgIHZvaWQgcmVx
dWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmluZyYgLypkZXRhaWxzKi8s
IGNvbnN0IFN0cmluZyYgLypkZXNjcmlwdGlvbiovLCBXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVl
c3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYpIGZpbmFsOworICAgIENocm9tZUNsaWVu
dDo6QXVkaW9SZW5kZXJpbmdQb2xpY3kgYXVkaW9SZW5kZXJpbmdQb2xpY3koKSBjb25zdCBmaW5h
bDsKICNlbmRpZgogCiAgICAgdm9pZCBkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBkMjlhYTAxZDVhNjA2Mjg0NjA1OWMzZGQxOTVmZDNhZDlkNWU1MDc5Li5lZTUyOGFkMzIz
YTZhYTJhNjg3YWZiMDRjODkyOGMzZjhiNDBhNGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzA5LDYgKzMwOSw3IEBACiAjZW5kaWYKIAog
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJBdWRpb1JlbmRl
cmluZ1BvbGljeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFs
bE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2suaD4KICNlbmRpZgogCkBAIC0xNDE3LDYgKzE0MTgsNyBA
QCB2b2lkIFdlYlBhZ2U6OmNsb3NlKCkKICAgICAgICAgbV9pbnN0YWxsTWVkaWFQbHVnaW5zQ2Fs
bGJhY2stPmludmFsaWRhdGUoKTsKICAgICAgICAgbV9pbnN0YWxsTWVkaWFQbHVnaW5zQ2FsbGJh
Y2sgPSBudWxscHRyOwogICAgIH0KKyAgICBtX2F1ZGlvUmVuZGVyaW5nUG9saWN5ID0gQXVkaW9S
ZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OwogI2VuZGlmCiAKICAgICBtX3NhbmRib3hFeHRl
bnNpb25UcmFja2VyLmludmFsaWRhdGUoKTsKQEAgLTY1NDksNiArNjU1MSwxMyBAQCB2b2lkIFdl
YlBhZ2U6OmFkZFVzZXJTY3JpcHQoU3RyaW5nJiYgc291cmNlLCBJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkJiB3b3JsZCwgVwogICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2Ny
aXB0KHdvcmxkLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIAorI2lmIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikKK0F1ZGlvUmVuZGVyaW5nUG9saWN5IFdlYlBhZ2U6OmF1ZGlvUmVu
ZGVyaW5nUG9saWN5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hdWRpb1JlbmRlcmluZ1BvbGlj
eTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlBhZ2U6OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0
cmluZyYgc291cmNlLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVk
RnJhbWVzKQogewogICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0IHtz
b3VyY2UsIGFib3V0QmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4o
KSwgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZVVzZXJMZXZlbCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGExNTQ3NmMyNDY5ZTQ4N2NkYjE5OWEw
ODhhOGQ1YmEwNjE0ODU4ZWIuLjJlN2RlMWI1NWFkZGUxMmE4Y2ZkZjg5MzgwOThlYTZhMTEyN2E0
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTI4
MSw2ICsyODEsMTAgQEAgZW51bSBjbGFzcyBGaW5kT3B0aW9ucyA6IHVpbnQxNl90OwogZW51bSBj
bGFzcyBEcmFnQ29udHJvbGxlckFjdGlvbiA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZSA6IHVpbnQ4X3Q7CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorZW51
bSBjbGFzcyBBdWRpb1JlbmRlcmluZ1BvbGljeSA6IHVpbnQ4X3Q7CisjZW5kaWYKKwogc3RydWN0
IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTsKIHN0cnVjdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Owog
c3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHQ7CkBAIC0xMTUyLDYgKzExNTYsNyBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAgICAgdm9pZCByZXF1
ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25z
dCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnNDYWxsYmFjayYpOworICAgIEF1ZGlvUmVuZGVyaW5nUG9saWN5IGF1ZGlv
UmVuZGVyaW5nUG9saWN5KCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRkVXNlclNjcmlw
dChTdHJpbmcmJiBzb3VyY2UsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBXZWJDb3JlOjpV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzLCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZSk7CkBAIC0xNzAxLDYgKzE3MDYsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKQogICAgIHZvaWQgZGlkRW5kUmVxdWVzdEluc3RhbGxNaXNzaW5nTWVk
aWFQbHVnaW5zKHVpbnQzMl90IHJlc3VsdCk7CisgICAgdm9pZCBzZXRBdWRpb1JlbmRlcmluZ1Bv
bGljeShBdWRpb1JlbmRlcmluZ1BvbGljeSBwb2xpY3kpIHsgbV9hdWRpb1JlbmRlcmluZ1BvbGlj
eSA9IHBvbGljeTsgfQogI2VuZGlmCiAKICAgICB2b2lkIHNldFVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24odWludDMyX3QpOwpAQCAtMjA3OCw2ICsyMDg0LDcgQEAgcHJpdmF0ZToKIAogI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVk
aWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+IG1faW5zdGFsbE1l
ZGlhUGx1Z2luc0NhbGxiYWNrOworICAgIEF1ZGlvUmVuZGVyaW5nUG9saWN5IG1fYXVkaW9SZW5k
ZXJpbmdQb2xpY3k7CiAjZW5kaWYKIAogI2lmIFVTRShPU19TVEFURSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDcy
ZjAzODYxNjQ4Mzg2ZmJjODQxNTA4NWMxNTNjZmVlNzUyNjc2YzYuLmZkYzM1OGNjNWIzOGFlNzQ0
NWQ5M2Y4OGNiNWJiYmU2ZjNmOWM2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNTM3LDYgKzUzNyw3IEBAIEdl
bmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpCiAgICAgRGlkRW5kUmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKHVpbnQzMl90
IHJlc3VsdCkKKyAgICBTZXRBdWRpb1JlbmRlcmluZ1BvbGljeShlbnVtOnVpbnQ4X3QgV2ViS2l0
OjpBdWRpb1JlbmRlcmluZ1BvbGljeSBwb2xpY3kpCiAjZW5kaWYKIAogICAgIFNldFVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL2NtYWtlL0ZpbmRXUEVCYWNrZW5kX2Zkby5jbWFrZSBiL1NvdXJjZS9jbWFrZS9GaW5kV1BF
QmFja2VuZF9mZG8uY21ha2UKaW5kZXggZDcwMWRmNTYyMmU3ZjZiZTIwZjQ3M2I3MjkyMmZiNDM1
NjU4MzFmMS4uNDg3NTJkMDE2ODQwYzFjNTE5NWU5YjZjZDY1YTg5MWNmMWJmNGFlNyAxMDA2NDQK
LS0tIGEvU291cmNlL2NtYWtlL0ZpbmRXUEVCYWNrZW5kX2Zkby5jbWFrZQorKysgYi9Tb3VyY2Uv
Y21ha2UvRmluZFdQRUJhY2tlbmRfZmRvLmNtYWtlCkBAIC00Myw2ICs0MywxMSBAQCBmaW5kX2xp
YnJhcnkoV1BFQkFDS0VORF9GRE9fTElCUkFSSUVTCiAKIG1hcmtfYXNfYWR2YW5jZWQoV1BFQkFD
S0VORF9GRE9fSU5DTFVERV9ESVJTIFdQRUJBQ0tFTkRfRkRPX0xJQlJBUklFUykKIAorZmluZF9w
YXRoKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTgorICAgIE5BTUVTIHdwZS9leHRlbnNp
b25zL2F1ZGlvLmgKKyAgICBISU5UUyAke1BDX1dQRUJBQ0tFTkRfRkRPX0lOQ0xVREVESVJ9ICR7
UENfV1BFQkFDS0VORF9GRE9fSU5DTFVERV9ESVJTfQorKQorCiBpbmNsdWRlKEZpbmRQYWNrYWdl
SGFuZGxlU3RhbmRhcmRBcmdzKQogZmluZF9wYWNrYWdlX2hhbmRsZV9zdGFuZGFyZF9hcmdzKFdQ
RUJhY2tlbmRfZmRvCiAgICAgUkVRVUlSRURfVkFSUyBXUEVCQUNLRU5EX0ZET19JTkNMVURFX0RJ
UlMgV1BFQkFDS0VORF9GRE9fTElCUkFSSUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvR1N0
cmVhbWVyQ2hlY2tzLmNtYWtlIGIvU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZQpp
bmRleCBjYmYxZmUyMGVmNGFhNjRmMDY1Zjk0MGVjOWI1MWNjZmNmNjRjYzgxLi5jODUwODc5MDE5
NmQxNzJlZGViNDRjNmViZWI2YTRmZmRlY2MyMDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2Uv
R1N0cmVhbWVyQ2hlY2tzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3Mu
Y21ha2UKQEAgLTM0LDYgKzM0LDE2IEBAIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9B
VURJTykKICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiR1N0cmVhbWVyR0wgaXMgbmVlZGVk
IGZvciBVU0VfR1NUUkVBTUVSX0dMLiIpCiAgICAgZW5kaWYgKCkKIAorICAgIGlmIChQT1JUIFNU
UkVRVUFMICJXUEUiKQorICAgICAgICBmaW5kX3BhY2thZ2UoV1BFQmFja2VuZF9mZG8gMS43LjAp
CisgICAgICAgIGlmICgoTk9UIFdQRUJBQ0tFTkRfRkRPX0ZPVU5EKSBPUiBXUEVCQUNLRU5EX0ZE
T19BVURJT19FWFRFTlNJT04gU1RSRVFVQUwgIldQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lP
Ti1OT1RGT1VORCIpCisgICAgICAgICAgICBtZXNzYWdlKFdBUk5JTkcgIldQRUJhY2tlbmQtZmRv
IGF1ZGlvIGV4dGVuc2lvbiBub3QgZm91bmQuIERpc2FibGluZyBleHRlcm5hbCBhdWRpbyByZW5k
ZXJpbmcgc3VwcG9ydCIpCisgICAgICAgICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0Vf
V1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OIEZBTFNFKQorICAgICAgICBlbHNlICgpCisg
ICAgICAgICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfV1BFQkFDS0VORF9GRE9fQVVE
SU9fRVhURU5TSU9OIFRSVUUpCisgICAgICAgIGVuZGlmICgpCisgICAgZW5kaWYgKCkKKwogICAg
IFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9HU1RSRUFNRVIgVFJVRSkKIGVuZGlmICgpCiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZGVi
MWQ1YTRhZDlhMGU2NmI1NDM1MmM5NzljYTg2MGVlNmFkM2E5Li40YjIwNzNlMDY3OTZjYjVhZTlm
ZDg0YzZhMmI2NDE2NGZlY2I0YzQwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDctMjIgIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEludGVy
bmFsIGF1ZGlvIHJlbmRlcmluZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYSBXUEUgQVBJIHRlc3QgZm9yIHRoZSBleHRlcm5hbC1h
dWRpby1yZW5kZXJpbmcgcG9saWN5IHN1cHBvcnQgYW5kIGFkZCBhIGNvbW1hbmQtbGluZQorICAg
ICAgICBhcmd1bWVudCB0byBhbGxvdyBjb25maWd1cmluZyB0aGUgYXVkaW8gcmVuZGVyaW5nIHBv
bGljeSBpbiB0aGUgR1RLIE1pbmlCcm93c2VyLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3Rr
L21haW4uYzoKKyAgICAgICAgKGNyZWF0ZUJyb3dzZXJUYWIpOiBDb21tYW5kLWxpbmUgb3B0aW9u
IGFsbG93aW5nIHRvIHN3aXRjaCBiZXR3ZWVuIHRoZSBob3N0LWRlZmF1bHQgYW5kCisgICAgICAg
IGludGVybmFsLW1peGluZyBwb2xpY2llcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXIucHk6IFdoaXRlLWxpc3QgdGhlIG5ldyBhdWRpbyBzaW5rIGZyb20gdGhlIHN0
eWxlIGNoZWNrZXIuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZmlsZS13
aXRoLXZpZGVvLmh0bWw6IE5ldyB1dGlsaXR5IGZ1bmN0aW9ucyB0byBwYXVzZSBhbmQgc2VlayBp
biB0aGUgdmlkZW8uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6
OnNldHVwKTogV1BFIHRlc3QgZm9yIGV4dGVybmFsIGF1ZGlvIHJlbmRlcmluZyBzdXBwb3J0LiBB
IHZpZGVvCisgICAgICAgIGZpbGUgaXMgbG9hZGVkIHRocm91Z2ggdGhlIHdlYnZpZXcgYW5kIHRo
ZSB0ZXN0IHJlY2VpdmVzIG5vdGlmaWNhdGlvbnMgZHVyaW5nIHBsYXliYWNrLiBJbgorICAgICAg
ICBvcmRlciB0byByZWR1Y2UgdGltZW91dCByaXNrcywgYSBzZWVrIG5lYXIgdGhlIGVuZCBvZiB0
aGUgdmlkZW8gaXMgcGVyZm9ybWVkIGVhcmx5IG9uLgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdX
ZWJWaWV3VGVzdDo6dGVhcmRvd24pOgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVz
dDo6QXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdCk6CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dl
YlZpZXdUZXN0OjpoYW5kbGVTdGFydCk6CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdU
ZXN0OjpoYW5kbGVTdG9wKToKKyAgICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6Omhh
bmRsZVBhdXNlKToKKyAgICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6OmhhbmRsZVJl
c3VtZSk6CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0OjpoYW5kbGVQYWNrZXQp
OgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6d2FpdFVudGlsUGF1c2VkKToK
KyAgICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6OndhaXRVbnRpbEVPUyk6CisgICAg
ICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0OjpzdGF0ZSBjb25zdCk6CisgICAgICAgIChi
ZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZp
ZXdUZXN0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojppbml0aWFsaXplV2ViVmlldyk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaDoKKyAg
ICAgICAgKiBidWlsZHN0cmVhbS9lbGVtZW50cy9zZGsvd3BlYmFja2VuZC1mZG8uYnN0OiBCdW1w
IHRvIGN1cnJlbnQgZ2l0IG1hc3RlciwgMS43LngsIHdoaWNoIGhhcworICAgICAgICB0aGUgbmV3
IGF1ZGlvIGV4dGVuc2lvbiwgdG8gYmUgc2hpcHBlZCBpbiAxLjguMC4KKwogMjAyMC0wNy0yMiAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S11bV1BFXSBJVFA6IHVzZSB0aGUgZGF0YWJhc2Ugc3RvcmUgdW5jb25kaXRpb25hbGx5CmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL21haW4uYwppbmRleCA2MWNiNzI5ZTllOGUyNGQ4NWMwZDY3OGM2NGEzZGJhZTFjMDg1ZjYz
Li44OTJjN2FlZjRhM2U0NjRhOGMwN2JhNTkwOTcyMzE2NWU3ZmNmMDQ3IDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9t
YWluLmMKQEAgLTU2LDYgKzU2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnByb3h5Owogc3RhdGlj
IGdib29sZWFuIGRhcmtNb2RlOwogc3RhdGljIGdib29sZWFuIGVuYWJsZUlUUDsKIHN0YXRpYyBn
Ym9vbGVhbiBwcmludFZlcnNpb247CitzdGF0aWMgZ2Jvb2xlYW4gaW50ZXJuYWxBdWRpb01peGlu
ZzsKIAogdHlwZWRlZiBlbnVtIHsKICAgICBNSU5JX0JST1dTRVJfRVJST1JfSU5WQUxJRF9BQk9V
VF9QQVRICkBAIC04MCwxMiArODEsMTQgQEAgc3RhdGljIGdjaGFyICphcmd1bWVudFRvVVJMKGNv
bnN0IGNoYXIgKmZpbGVuYW1lKQogCiBzdGF0aWMgV2ViS2l0V2ViVmlldyAqY3JlYXRlQnJvd3Nl
clRhYihCcm93c2VyV2luZG93ICp3aW5kb3csIFdlYktpdFNldHRpbmdzICp3ZWJraXRTZXR0aW5n
cywgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICp1c2VyQ29udGVudE1hbmFnZXIsIFdlYktpdFdl
YnNpdGVQb2xpY2llcyAqZGVmYXVsdFdlYnNpdGVQb2xpY2llcykKIHsKKyAgICBXZWJLaXRBdWRp
b1JlbmRlcmluZ1BvbGljeSBhdWRpb1JlbmRlcmluZ1BvbGljeSA9IGludGVybmFsQXVkaW9NaXhp
bmcgPyBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9JTlRFUk5BTF9NSVhJTkcgOiBXRUJL
SVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9IT1NUX0RFRkFVTFQ7CiAgICAgV2ViS2l0V2ViVmll
dyAqd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X1ZJRVcsCiAgICAgICAgICJ3ZWItY29udGV4dCIsIGJyb3dzZXJfd2luZG93X2dldF93ZWJfY29u
dGV4dCh3aW5kb3cpLAogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRTZXR0aW5ncywKICAgICAg
ICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNlckNvbnRlbnRNYW5hZ2VyLAogICAgICAgICAi
aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgYXV0b21hdGlvbk1vZGUsCiAgICAgICAgICJ3
ZWJzaXRlLXBvbGljaWVzIiwgZGVmYXVsdFdlYnNpdGVQb2xpY2llcywKKyAgICAgICAgImF1ZGlv
LXJlbmRlcmluZy1wb2xpY3kiLCBhdWRpb1JlbmRlcmluZ1BvbGljeSwKICAgICAgICAgTlVMTCkp
OwogCiAgICAgaWYgKGVkaXRvck1vZGUpCkBAIC0xNDYsNiArMTQ5LDcgQEAgc3RhdGljIGNvbnN0
IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiaWdub3JlLXRscy1l
cnJvcnMiLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmlnbm9yZVRMU0Vycm9ycywgIklnbm9y
ZSBUTFMgZXJyb3JzIiwgTlVMTCB9LAogICAgIHsgImNvbnRlbnQtZmlsdGVyIiwgMCwgMCwgR19P
UFRJT05fQVJHX0ZJTEVOQU1FLCAmY29udGVudEZpbHRlciwgIkpTT04gd2l0aCBjb250ZW50IGZp
bHRlcmluZyBydWxlcyIsICJGSUxFIiB9LAogICAgIHsgImVuYWJsZS1pdHAiLCAwLCAwLCBHX09Q
VElPTl9BUkdfTk9ORSwgJmVuYWJsZUlUUCwgIkVuYWJsZSBJbnRlbGxpZ2VudCBUcmFja2luZyBQ
cmV2ZW50aW9uIChJVFApIiwgTlVMTCB9LAorICAgIHsgImludGVybmFsLWF1ZGlvLW1peGluZyIs
ICdpJywgMCwgR19PUFRJT05fQVJHX05PTkUsICZpbnRlcm5hbEF1ZGlvTWl4aW5nLCAiUGVyZm9y
bSBpbnRlcm5hbCBhdWRpbyBtaXhpbmcgb2YgbXVsdGltZWRpYSBjb250ZW50IiwgTlVMTH0sCiAg
ICAgeyAidmVyc2lvbiIsICd2JywgMCwgR19PUFRJT05fQVJHX05PTkUsICZwcmludFZlcnNpb24s
ICJQcmludCB0aGUgV2ViS2l0R1RLIHZlcnNpb24iLCBOVUxMIH0sCiAgICAgeyBHX09QVElPTl9S
RU1BSU5JTkcsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50
cywgMCwgIltVUkzigKZdIiB9LAogICAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggNThiMTE2YmM3YWE0Y2YzOTcxYmZk
OTgyNGQ3ZTM0OGZiZWMyNzRjMi4uNGViZjBiZDhlNmU0ODM2MGRmZWQ1MmZmMzNhYTA2ZjUxOTVl
ZDUwYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMjIxLDYg
KzIyMSw4IEBAIF9QQVRIX1JVTEVTX1NQRUNJRklFUiA9IFsKICAgICAgIG9zLnBhdGguam9pbign
U291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywg
J0dMVmlkZW9TaW5rR1N0cmVhbWVyLmgnKSwKICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywg
J1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ1ZpZGVvU2lu
a0dTdHJlYW1lci5jcHAnKSwKICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUn
LCAncGxhdGZvcm0nLCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAnKSwKKyAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAn
cGxhdGZvcm0nLCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ1dlYktpdEF1ZGlvU2lua0dTdHJl
YW1lci5jcHAnKSwKKyAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxh
dGZvcm0nLCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ1dlYktpdEF1ZGlvU2lua0dTdHJlYW1l
ci5oJyksCiAgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3Jt
JywgJ2F1ZGlvJywgJ2dzdHJlYW1lcicsICdXZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5j
cHAnKSwKICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0n
LCAnbWVkaWFzdHJlYW0nLCAnZ3N0cmVhbWVyJywgJ0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNl
LmgnKSwKICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0n
LCAnbWVkaWFzdHJlYW0nLCAnZ3N0cmVhbWVyJywgJ0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNl
LmNwcCcpLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZmls
ZS13aXRoLXZpZGVvLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9maWxl
LXdpdGgtdmlkZW8uaHRtbAppbmRleCBhYTIyNTlhMGZjZTBiMGZkY2RlMDgxYWVkM2JkNzYwNzhj
MzMwYmNlLi4wYjg3ZGJlZmEwZDc1MzQxMWRjNDdlN2NkZjljODZkNDllNjdjNGY3IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9maWxlLXdpdGgtdmlkZW8uaHRt
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9maWxlLXdpdGgtdmlkZW8u
aHRtbApAQCAtNSw2ICs1LDE1IEBACiAgICAgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdC12aWRlbyIpLnBsYXkoKTsKICAgICB9CisgICAgZnVuY3Rpb24gcGF1c2VWaWRl
bygpCisgICAgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdC12aWRlbyIp
LnBhdXNlKCk7CisgICAgfQorICAgIGZ1bmN0aW9uIHNlZWtOZWFyVGhlRW5kKCkKKyAgICB7Cisg
ICAgICAgIGxldCB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LXZpZGVvIik7
CisgICAgICAgIHZpZGVvLmN1cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb24gLSAwLjU7CisgICAg
fQogICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXgg
YWM3MDg0ODljOWYzZjIxNDg0NGNlY2Y4MmVmODMwZWJlYzZmMDhjYy4uOGZlZTQxODkwZDdiZTM5
ZGEzYWQ4Y2YyZTIwYmQ4MGViYTY4YTBiNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0yNCw2
ICsyNCwxMCBAQAogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIv
R1JlZlB0ci5oPgogCisjaWYgUExBVEZPUk0oV1BFKSAmJiBVU0UoV1BFQkFDS0VORF9GRE9fQVVE
SU9fRVhURU5TSU9OKQorI2luY2x1ZGUgPHdwZS9leHRlbnNpb25zL2F1ZGlvLmg+CisjZW5kaWYK
KwogY2xhc3MgSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdCA6IHB1YmxpYyBXZWJWaWV3VGVzdCB7
CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShJc1BsYXlpbmdBdWRpb1dlYlZp
ZXdUZXN0KTsKQEAgLTEzNDIsNiArMTM0NiwxMjkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdG
cmFtZURpc3BsYXllZChGcmFtZURpc3BsYXllZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB9
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElP
X0VYVEVOU0lPTikKK2VudW0gY2xhc3MgUmVuZGVyaW5nU3RhdGUgeworICAgIFVua25vd24sCisg
ICAgU3RhcnRlZCwKKyAgICBQYXVzZWQsCisgICAgU3RvcHBlZAorfTsKKworY2xhc3MgQXVkaW9S
ZW5kZXJpbmdXZWJWaWV3VGVzdCA6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6CisgICAg
TUFLRV9HTElCX1RFU1RfRklYVFVSRV9XSVRIX1NFVFVQX1RFQVJET1dOKEF1ZGlvUmVuZGVyaW5n
V2ViVmlld1Rlc3QsIHNldHVwLCB0ZWFyZG93bik7CisKKyAgICBzdGF0aWMgdm9pZCBzZXR1cCgp
CisgICAgeworICAgICAgICBXZWJWaWV3VGVzdDo6YXVkaW9SZW5kZXJpbmdQb2xpY3kgPSBXRUJL
SVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9FWFRFUk5BTDsKKyAgICB9CisKKyAgICBzdGF0aWMg
dm9pZCB0ZWFyZG93bigpCisgICAgeworICAgICAgICBXZWJWaWV3VGVzdDo6YXVkaW9SZW5kZXJp
bmdQb2xpY3kgPSBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9IT1NUX0RFRkFVTFQ7Cisg
ICAgfQorCisgICAgQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdCgpCisgICAgeworICAgICAgICB3
cGVfYXVkaW9fcmVnaXN0ZXJfcmVjZWl2ZXIoJm1fYXVkaW9SZWNlaXZlciwgdGhpcyk7CisgICAg
fQorCisgICAgdm9pZCBoYW5kbGVTdGFydCh1aW50MzJfdCBpZCwgaW50MzJfdCBjaGFubmVscywg
Y29uc3QgY2hhciogbGF5b3V0LCBpbnQzMl90IHNhbXBsZVJhdGUpCisgICAgeworICAgICAgICBn
X2Fzc2VydChtX3N0YXRlID09IFJlbmRlcmluZ1N0YXRlOjpVbmtub3duKTsKKyAgICAgICAgZ19h
c3NlcnRfZmFsc2UobV9zdHJlYW1JZC5oYXNWYWx1ZSgpKTsKKyAgICAgICAgZ19hc3NlcnRfY21w
dWludChpZCwgPT0sIDApOworICAgICAgICBtX3N0cmVhbUlkID0gaWQ7CisgICAgICAgIG1fc3Rh
dGUgPSBSZW5kZXJpbmdTdGF0ZTo6U3RhcnRlZDsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KGNo
YW5uZWxzLCA9PSwgMik7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihsYXlvdXQsID09LCAiUzE2
TEUiKTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KHNhbXBsZVJhdGUsID09LCA0NDEwMCk7Cisg
ICAgfQorCisgICAgdm9pZCBoYW5kbGVTdG9wKHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAg
Z19hc3NlcnRfY21wdWludCgqbV9zdHJlYW1JZCwgPT0sIGlkKTsKKyAgICAgICAgZ19hc3NlcnQo
bV9zdGF0ZSAhPSBSZW5kZXJpbmdTdGF0ZTo6VW5rbm93bik7CisgICAgICAgIG1fc3RhdGUgPSBS
ZW5kZXJpbmdTdGF0ZTo6U3RvcHBlZDsKKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5M
b29wKTsKKyAgICAgICAgbV9zdHJlYW1JZC5yZXNldCgpOworICAgIH0KKworICAgIHZvaWQgaGFu
ZGxlUGF1c2UodWludDMyX3QgaWQpCisgICAgeworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KCpt
X3N0cmVhbUlkLCA9PSwgaWQpOworICAgICAgICBnX2Fzc2VydChtX3N0YXRlICE9IFJlbmRlcmlu
Z1N0YXRlOjpVbmtub3duKTsKKyAgICAgICAgbV9zdGF0ZSA9IFJlbmRlcmluZ1N0YXRlOjpQYXVz
ZWQ7CisgICAgfQorCisgICAgdm9pZCBoYW5kbGVSZXN1bWUodWludDMyX3QgaWQpCisgICAgewor
ICAgICAgICBnX2Fzc2VydF9jbXB1aW50KCptX3N0cmVhbUlkLCA9PSwgaWQpOworICAgICAgICBn
X2Fzc2VydChtX3N0YXRlID09IFJlbmRlcmluZ1N0YXRlOjpQYXVzZWQpOworICAgICAgICBtX3N0
YXRlID0gUmVuZGVyaW5nU3RhdGU6OlN0YXJ0ZWQ7CisgICAgfQorCisgICAgdm9pZCBoYW5kbGVQ
YWNrZXQoc3RydWN0IHdwZV9hdWRpb19wYWNrZXRfZXhwb3J0KiBwYWNrZXRfZXhwb3J0LCB1aW50
MzJfdCBpZCwgaW50MzJfdCBmZCwgdWludDMyX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIGdfYXNz
ZXJ0X2NtcHVpbnQoKm1fc3RyZWFtSWQsID09LCBpZCk7CisgICAgICAgIGdfYXNzZXJ0KG1fc3Rh
dGUgPT0gUmVuZGVyaW5nU3RhdGU6OlN0YXJ0ZWQgfHwgbV9zdGF0ZSA9PSBSZW5kZXJpbmdTdGF0
ZTo6UGF1c2VkKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChzaXplLCA+LCAwKTsKKyAgICAg
ICAgd3BlX2F1ZGlvX3BhY2tldF9leHBvcnRfcmVsZWFzZShwYWNrZXRfZXhwb3J0KTsKKyAgICB9
CisKKyAgICB2b2lkIHdhaXRVbnRpbFBhdXNlZCgpCisgICAgeworICAgICAgICBnX3RpbWVvdXRf
YWRkKDIwMCwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKKyAgICAgICAgICAg
IGF1dG8qIHRlc3QgPSBzdGF0aWNfY2FzdDxBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0Kj4odXNl
ckRhdGEpOworICAgICAgICAgICAgaWYgKHRlc3QtPnN0YXRlKCkgPT0gUmVuZGVyaW5nU3RhdGU6
OlBhdXNlZCkgeworICAgICAgICAgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOworICAgICAg
ICAgICAgICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gR19TT1VSQ0VfQ09OVElOVUU7CisgICAgICAgIH0sIHRoaXMpOworICAgICAg
ICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgfQorCisgICAgdm9pZCB3YWl0VW50
aWxFT1MoKQorICAgIHsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAg
IH0KKworICAgIFJlbmRlcmluZ1N0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsg
fQorCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd3BlX2F1ZGlvX3JlY2VpdmVy
IG1fYXVkaW9SZWNlaXZlcjsKKyAgICBSZW5kZXJpbmdTdGF0ZSBtX3N0YXRlIHsgUmVuZGVyaW5n
U3RhdGU6OlVua25vd24gfTsKKyAgICBPcHRpb25hbDx1aW50MzJfdD4gbV9zdHJlYW1JZDsKK307
CisKK2NvbnN0IHN0cnVjdCB3cGVfYXVkaW9fcmVjZWl2ZXIgQXVkaW9SZW5kZXJpbmdXZWJWaWV3
VGVzdDo6bV9hdWRpb1JlY2VpdmVyID0geworICAgIFtdKHZvaWQqIGRhdGEsIHVpbnQzMl90IGlk
LCBpbnQzMl90IGNoYW5uZWxzLCBjb25zdCBjaGFyKiBsYXlvdXQsIGludDMyX3Qgc2FtcGxlUmF0
ZSkgeyBzdGF0aWNfY2FzdDxBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0Kj4oZGF0YSktPmhhbmRs
ZVN0YXJ0KGlkLCBjaGFubmVscywgbGF5b3V0LCBzYW1wbGVSYXRlKTsgfSwKKyAgICBbXSh2b2lk
KiBkYXRhLCBzdHJ1Y3Qgd3BlX2F1ZGlvX3BhY2tldF9leHBvcnQqIHBhY2tldF9leHBvcnQsIHVp
bnQzMl90IGlkLCBpbnQzMl90IGZkLCB1aW50MzJfdCBzaXplKSB7IHN0YXRpY19jYXN0PEF1ZGlv
UmVuZGVyaW5nV2ViVmlld1Rlc3QqPihkYXRhKS0+aGFuZGxlUGFja2V0KHBhY2tldF9leHBvcnQs
IGlkLCBmZCwgc2l6ZSk7IH0sCisgICAgW10odm9pZCogZGF0YSwgdWludDMyX3QgaWQpIHsgc3Rh
dGljX2Nhc3Q8QXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdCo+KGRhdGEpLT5oYW5kbGVTdG9wKGlk
KTsgfSwKKyAgICBbXSh2b2lkKiBkYXRhLCB1aW50MzJfdCBpZCkgeyBzdGF0aWNfY2FzdDxBdWRp
b1JlbmRlcmluZ1dlYlZpZXdUZXN0Kj4oZGF0YSktPmhhbmRsZVBhdXNlKGlkKTsgfSwKKyAgICBb
XSh2b2lkKiBkYXRhLCB1aW50MzJfdCBpZCkgeyBzdGF0aWNfY2FzdDxBdWRpb1JlbmRlcmluZ1dl
YlZpZXdUZXN0Kj4oZGF0YSktPmhhbmRsZVJlc3VtZShpZCk7IH0KK307CisKK3N0YXRpYyB2b2lk
IHRlc3RXZWJWaWV3RXh0ZXJuYWxBdWRpb1JlbmRlcmluZyhBdWRpb1JlbmRlcmluZ1dlYlZpZXdU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3Vy
Y2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKFRlc3Q6OldlYktp
dDJSZXNvdXJjZXMpLmRhdGEoKSwgImZpbGUtd2l0aC12aWRlby5odG1sIiwgbnVsbHB0cikpOwor
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VVUkwoZ19maWxlbmFtZV90b191cmkocmVzb3Vy
Y2VQYXRoLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgd2Via2l0X3dlYl92aWV3X2xv
YWRfdXJpKHRlc3QtPm1fd2ViVmlldywgcmVzb3VyY2VVUkwuZ2V0KCkpOworICAgIHRlc3QtPndh
aXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKCJwbGF5VmlkZW8oKTsiLCBudWxscHRyKTsKKyAgICBnX2Fzc2VydCh0ZXN0
LT5zdGF0ZSgpID09IFJlbmRlcmluZ1N0YXRlOjpTdGFydGVkKTsKKyAgICB0ZXN0LT5ydW5KYXZh
U2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoInBhdXNlVmlkZW8oKTsiLCBudWxscHRyKTsKKyAg
ICB0ZXN0LT53YWl0VW50aWxQYXVzZWQoKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5zdGF0ZSgpID09
IFJlbmRlcmluZ1N0YXRlOjpQYXVzZWQpOworCisgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdh
aXRVbnRpbEZpbmlzaGVkKCJwbGF5VmlkZW8oKTsgc2Vla05lYXJUaGVFbmQoKTsiLCBudWxscHRy
KTsKKyAgICB0ZXN0LT53YWl0VW50aWxFT1MoKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5zdGF0ZSgp
ID09IFJlbmRlcmluZ1N0YXRlOjpTdG9wcGVkKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgdm9pZCBz
ZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBj
b25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRl
cikKIHsKICAgICBpZiAobWVzc2FnZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkgewpAQCAt
MTQwMiw2ICsxNTI5LDkgQEAgdm9pZCBiZWZvcmVBbGwoKQogI2VuZGlmCiAgICAgV2ViVmlld1Rl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJpcy1hdWRpby1tdXRlZCIsIHRlc3RXZWJWaWV3SXNB
dWRpb011dGVkKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImF1dG9w
bGF5LXBvbGljeSIsIHRlc3RXZWJWaWV3QXV0b3BsYXlQb2xpY3kpOworI2lmIFBMQVRGT1JNKFdQ
RSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTikKKyAgICBBdWRpb1JlbmRl
cmluZ1dlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZXh0ZXJuYWwtYXVkaW8tcmVu
ZGVyaW5nIiwgdGVzdFdlYlZpZXdFeHRlcm5hbEF1ZGlvUmVuZGVyaW5nKTsKKyNlbmRpZgogfQog
CiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL1dlYlZpZXdUZXN0LmNwcAppbmRleCA3YTEzZWI4Zjg0MDJkZjA1MTdhZjA2OGQ5MWQy
YWZjZDA5ZGU5NjQ2Li44ZWMwODQ0YTMzZmJmODRjZDMwNjQ2YTU4OTU1ZDZiMzI1NzY4YjUyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVz
dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rl
c3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKIGJvb2wgV2ViVmlld1Rlc3Q6OnNob3VsZEluaXRp
YWxpemVXZWJWaWV3SW5Db25zdHJ1Y3RvciA9IHRydWU7CiBib29sIFdlYlZpZXdUZXN0OjpzaG91
bGRDcmVhdGVFcGhlbWVyYWxXZWJWaWV3ID0gZmFsc2U7CitXZWJLaXRBdWRpb1JlbmRlcmluZ1Bv
bGljeSBXZWJWaWV3VGVzdDo6YXVkaW9SZW5kZXJpbmdQb2xpY3kgPSBXRUJLSVRfQVVESU9fUkVO
REVSSU5HX1BPTElDWV9IT1NUX0RFRkFVTFQ7CiAKIFdlYlZpZXdUZXN0OjpXZWJWaWV3VGVzdCgp
CiAgICAgOiBtX3VzZXJDb250ZW50TWFuYWdlcihhZG9wdEdSZWYod2Via2l0X3VzZXJfY29udGVu
dF9tYW5hZ2VyX25ldygpKSkKQEAgLTU5LDYgKzYwLDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6aW5p
dGlhbGl6ZVdlYlZpZXcoKQogICAgICAgICAid2ViLWNvbnRleHQiLCBtX3dlYkNvbnRleHQuZ2V0
KCksCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIG1fdXNlckNvbnRlbnRNYW5hZ2Vy
LmdldCgpLAogICAgICAgICAiaXMtZXBoZW1lcmFsIiwgc2hvdWxkQ3JlYXRlRXBoZW1lcmFsV2Vi
VmlldywKKyAgICAgICAgImF1ZGlvLXJlbmRlcmluZy1wb2xpY3kiLCBhdWRpb1JlbmRlcmluZ1Bv
bGljeSwKICAgICAgICAgbnVsbHB0cikpOwogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZVdlYlZpZXco
KTsKICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1f
d2ViVmlldykpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvV2ViVmlld1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dl
YlZpZXdUZXN0LmgKaW5kZXggNzBkNzkzN2E4YWI1ZWJhMWVlMDQxNGZlNTcyMWU0NGMxN2QzZTky
NS4uNzgzYzUwNzgyMjhkNzk1NGVhNmEzN2QwN2UyYWQ2MWM1MzlmOGQxMyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCkBAIC0zMSw2
ICszMSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIHNob3VsZEluaXRpYWxpemVXZWJW
aWV3SW5Db25zdHJ1Y3RvcjsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRDcmVhdGVFcGhlbWVyYWxX
ZWJWaWV3OworICAgIHN0YXRpYyBXZWJLaXRBdWRpb1JlbmRlcmluZ1BvbGljeSBhdWRpb1JlbmRl
cmluZ1BvbGljeTsKKwogICAgIHZvaWQgaW5pdGlhbGl6ZVdlYlZpZXcoKTsKIAogICAgIHZvaWQg
cGxhdGZvcm1Jbml0aWFsaXplV2ViVmlldygpOwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hh
bmdlTG9nCmluZGV4IDRjOGMxM2ViN2NjNTJmZmYzNDAyNDBjNGVhNjQwY2M4ODc2MjM0N2IuLjVk
ODJlZDVlNTg1MjY2NzIyNTNmYzBkMDE4MGQwMzVjODJmY2QxYjAgMTAwNjQ0Ci0tLSBhL0NoYW5n
ZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNy0yMiAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0g
SW50ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL0ZpbmRXUEVCYWNrZW5kX2Zk
by5jbWFrZTogQ2hlY2sgZm9yIHRoZSBhdWRpbyBleHRlbnNpb24gaGVhZGVyLiBDdXJyZW50bHkK
KyAgICAgICAgb25seSBpbiBnaXQgbWFzdGVyLCB1cGNvbWluZyAxLjguMCByZWxlYXNlLgorICAg
ICAgICAqIFNvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2U6IENoZWNrIGFuZCBlbmFi
bGUgZXh0ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQgaWYKKyAgICAgICAgdGhlIFdQRUJh
Y2tlbmQtRkRPIGF1ZGlvIGV4dGVuc2lvbiB3YXMgZm91bmQuCisKIDIwMjAtMDctMjEgIEFkcmlh
biBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLiBVcGRhdGUgT3B0aW9uc1dQRS5jbWFrZSBhbmQgTkVXUyBmb3IgdGhlIDIuMjkuMSByZWxl
YXNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405036</attachid>
            <date>2020-07-23 07:08:06 -0700</date>
            <delta_ts>2020-07-25 03:59:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207634-20200723070804.patch</filename>
            <type>text/plain</type>
            <size>103403</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Njk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGI3ZTQwOWFkNWIyNDJm
YmY2OGE0NTE5MzE5NjhhYTNiOTIyYjM2Ny4uNjYyMjFkNmM1MTQ1YmQ5M2VhZmFlMDZkY2E3ZjVk
NjU1MDEyYzBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAyMC0wNy0yMiAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1l
cl0gSW50ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBhIG5ldyBHU3RyZWFtZXIgYXVkaW9S
ZW5kZXJpbmdQb2xpY3koKSBBUEkgaW4gdGhlIENocm9tZUNsaWVudC4gSXQgaXMgdXNlZCBhdCB0
aGUKKyAgICAgICAgcGxhdGZvcm0gbGV2ZWwgYnkgdGhlIEdTdHJlYW1lciBiYWNrZW5kcyB3aGVu
IHRoZXkgbmVlZCB0byBkZWNpZGUgd2hpY2ggYXVkaW8gc2luayB0aGV5CisgICAgICAgIHNob3Vs
ZCB1c2UgZm9yIHJlbmRlcmluZy4KKworICAgICAgICBXaGVuIEludGVybmFsTWl4aW5nIGhhcyBi
ZWVuIGVuYWJsZWQgYXQgdGhlIFVJUHJvY2VzcyBsZXZlbCwgdGhlIGNvcnJlc3BvbmRpbmcgV2Vi
UHJvY2VzcworICAgICAgICB3aWxsIGhhdmUgaXRzIEdTdHJlYW1lciBiYWNrZW5kcyByZW5kZXIg
dG8gZGVkaWNhdGVkIFdlYktpdCBhdWRpbyBzaW5rcy4gVGhvc2Ugd2lsbCBmb3J3YXJkCisgICAg
ICAgIGJ1ZmZlcnMgdG8gYSBzaW5nbGV0b24gYXVkaW8gbWl4ZXIuIFRoZSByZXN1bHRpbmcgYXVk
aW8gc3RyZWFtIHdpbGwgdGhlbiBiZSByZW5kZXJlZCB0aHJvdWdoCisgICAgICAgIGhvc3QgZGVm
YXVsdCBhdWRpbyBzaW5rIChQdWxzZUF1ZGlvIGluIG1vc3QgY2FzZXMpLiBVc2luZyB0aGlzIGFw
cHJvYWNoLCBhcHBsaWNhdGlvbnMgd2lsbAorICAgICAgICBtYWludGFpbiBhIHNpbmdsZSBjb25u
ZWN0aW9uIHRvIHRoZSBhdWRpbyBkYWVtb24uCisKKyAgICAgICAgV2hlbiBFeHRlcm5hbCBoYXMg
YmVlbiBlbmFibGVkIGF0IHRoZSBXUEUgVUlQcm9jZXNzIGxldmVsLCB0aGUgV2ViS2l0IGF1ZGlv
IHNpbmtzIHJ1bm5pbmcgaW4KKyAgICAgICAgdGhlIFdlYlByb2Nlc3Mgd2lsIGZvcndhcmQgYXVk
aW8gc2FtcGxlcyB0byB0aGUgVUlQcm9jZXNzLCB1c2luZyBhIFdheWxhbmQgcHJvdG9jb2wgZGVm
aW5lZAorICAgICAgICBpbiB0aGUgV1BFQmFja2VuZC1GRE8gYmFja2VuZCBhbmQgZXhwb3NlZCB0
aHJvdWdoIGl0cyBhdWRpbyBleHRlbnNpb24uIFRoaXMgY2xpZW50LXNpZGUKKyAgICAgICAgcmVu
ZGVyaW5nIHN1cHBvcnQgYWxsb3dzIGFwcGxpY2F0aW9ucyB0byBoYXZlIGZ1bGwgY29udHJvbCBv
biB0aGUgYXVkaW8gc2FtcGxlcyByZW5kZXJpbmcuCisKKyAgICAgICAgRXhpc3RpbmcgbGF5b3V0
IHRlc3RzIGNvdmVyIHRoZSBIb3N0RGVmYXVsdCBwb2xpY3kuIEludGVybmFsTWl4aW5nIHNob3Vs
ZCBiZSBjb25zaWRlcmVkIGEKKyAgICAgICAgdGVjaG5vbG9neSBwcmV2aWV3IGFuZCBjYW4ndCBi
ZSBlbmFibGVkIGJ5IGRlZmF1bHQgeWV0LCBiZWNhdXNlIGF1ZGlvbWl4ZXIgbGFja3Mgc29tZQor
ICAgICAgICBmZWF0dXJlcyBzdWNoIGFzIHJldmVyc2UgcGxheWJhY2sgc3VwcG9ydC4gRXh0ZXJu
YWwgYXVkaW8gcmVuZGVyaW5nIHBvbGljeSBpcyBjb3ZlcmVkIGJ5IGEKKyAgICAgICAgbmV3IFdQ
RSBBUEkgdGVzdC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0
aW9uTm9kZTo6Y3JlYXRlRGVzdGluYXRpb24pOiBLZWVwIHRyYWNrIG9mIHRoZSBhdWRpbyByZW5k
ZXJpbmcKKyAgICAgICAgcG9saWN5IGNvbmZpZ3VyZWQgb24gdGhlIHBhZ2UuIFRoaXMgaXMgdGhl
biB1c2VkIGJ5IHRoZSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKKyAgICAgICAgQXVk
aW9EZXN0aW5hdGlvbk5vZGUuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJBdWRpb1Jl
bmRlcmluZ1BvbGljeSBjb25zdCk6IERpdHRvLCBidXQgZm9yCisgICAgICAgIEhUTUxNZWRpYUVs
ZW1lbnQgYW5kIGl0cyB1bmRlcmx5aW5nIE1lZGlhUGxheWVyUHJpdmF0ZS4KKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjphdWRpb1JlbmRlcmluZ1BvbGljeSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0F1ZGlvSU9DYWxsYmFjay5oOiBEaXR0bywgYnV0IGZvciB0aGUgV2ViQXVkaW8g
QXVkaW9JT0NhbGxiYWNrIGFuZCB0aGUKKyAgICAgICAgdW5kZXJseWluZyBBdWRpb0Rlc3RpbmF0
aW9uTm9kZSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvSU9DYWxsYmFj
azo6YXVkaW9SZW5kZXJpbmdQb2xpY3kgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIp
OiBDcmVhdGUgc2luayBkZXBlbmRpbmcgb24KKyAgICAgICAgc2VsZWN0ZWQgYXVkaW8gcmVuZGVy
aW5nIHBvbGljeSBhbmQgcHJvYmUgcGxhdGZvcm0gZm9yIGEgd29ya2luZyBhdWRpbyBvdXRwdXQg
ZGV2aWNlIG9ubHkKKyAgICAgICAgd2hlbiB0aGUgV2ViS2l0IGN1c3RvbSBhdWRpbyBzaW5rIGhh
c24ndCBiZWVuIHNlbGVjdGVkLiBUaGlzIGlzIG5lZWRlZCBvbmx5IGZvciB0aGUKKyAgICAgICAg
YXV0b2F1ZGlvc2luayBjYXNlLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y29uZmlndXJlQXVkaW9CaW4pOiBJbnN0
ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IHNpbmssCisgICAgICAgIGVtYmVkIHRoZSBvbmUgcHJvdmlk
ZWQgYnkgdGhlIHBsYXllciBpbnRvIHRoZSBhdWRpbyBiaW4uIFRoZSByZXN1bHRpbmcgYmluIGJl
Y29tZXMgdGhlCisgICAgICAgIHBsYXllciBhdWRpbyBzaW5rIGFuZCBpdCdzIGFibGUgdG8gcmVu
ZGVyIGJvdGggdG8gdGhlIFdlYkF1ZGlvIHByb3ZpZGVyIGFuZCB0aGUgdXN1YWwgc2luaywgYXMg
YmVmb3JlLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVBy
b3ZpZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmF1ZGlvUmVuZGVyaW5nUG9s
aWN5IGNvbnN0KTogUHJveHkgdGhlIGF1ZGlvIHJlbmRlcmluZyBwb2xpY3kgZnJvbQorICAgICAg
ICB0aGUgbWVkaWEgcGxheWVyIGNsaWVudCAoZWcgbWVkaWEgZWxlbWVudCB1c3VhbGx5KSB0byB0
aGUgcHJpdmF0ZSBwbGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckF1ZGlvUmVuZGVy
aW5nUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50Ojpt
ZWRpYVBsYXllclNob3VsZEludGVybmFsbHlSZW5kZXJBdWRpbyBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oOgorICAgICAgICAoV1RGOjpMb2dB
cmd1bWVudDxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeT46
OnRvU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQXVkaW9NaXhlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVk
aW9NaXhlcjo6aXNBbGxvd2VkKTogVGhlIG1peGVyIHJlcXVpcmVzIGEgcmVjZW50IEdTdHJlYW1l
ciB2ZXJzaW9uIGFuZAorICAgICAgICB0aGUgaW50ZXIgcGx1Z2luIChzaGlwcGVkIGluIGdzdC1w
bHVnaW5zLWJhZCB1bnRpbCB2ZXJzaW9uIDEuMjAgYXQgbGVhc3QpLgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6c2luZ2xldG9uKTogRW50cnkgcG9pbnQgZm9yIHRoZSBt
aXhlci4gVGhpcyBpcyB3aGVyZSB0aGUKKyAgICAgICAgc2luZ2xldG9uIGlzIGNyZWF0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb01peGVyOjpHU3RyZWFtZXJBdWRpb01peGVy
KTogQ29uZmlndXJlIHRoZSBzdGFuZGFsb25lIG1peGVyCisgICAgICAgIHBpcGVsaW5lLgorICAg
ICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6fkdTdHJlYW1lckF1ZGlvTWl4ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6ZW5zdXJlU3RhdGUpOiBM
YXppbHkgc3RhcnQvc3RvcCB0aGUgbWl4ZXIsIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgICAgbnVt
YmVyIG9mIGluY29taW5nIHN0cmVhbXMuIFRoZSBwaXBlbGluZSBzdGFydHMgd2hlbiB0aGUgZmly
c3QgaW5jb21pbmcgc3RyZWFtIGlzIGNvbm5lY3RlZCwKKyAgICAgICAgYW5kIHN0b3BzIHdoZW4g
dGhlIGxhc3Qgc3RyZWFtIGRpc2FwcGVhcnMuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJB
dWRpb01peGVyOjpyZWdpc3RlclByb2R1Y2VyKTogQ2xpZW50IHBpcGVsaW5lcyByZXF1aXJlIGFu
IGludGVyYXVkaW9zaW5rLCB0aGV5CisgICAgICAgIHdpbGwgcmVuZGVyIHRvIHRoYXQgc2luaywg
d2hpY2ggaW50ZXJuYWxseSBmb3J3YXJkcyBkYXRhIHRvIGEgdHdpbiBpbnRlcmF1ZGlvc3JjIGVs
ZW1lbnQsCisgICAgICAgIGNvbm5lY3RlZCB0byB0aGUgYXVkaW9taXhlci4KKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lckF1ZGlvTWl4ZXI6OnVucmVnaXN0ZXJQcm9kdWNlcik6IEdldCByaWQg
b2YgYW4gaW50ZXJhdWRpb3NpbmsgYW5kIGl0cyBpbnRlcmF1ZGlvc3JjLgorICAgICAgICBUaGlz
IGlzIGNhbGxlZCBieSB0aGUgV2ViS2l0IGF1ZGlvIHNpbmsgd2hlbiB0aGUgZWxlbWVudCBpcyBi
ZWluZyBkaXNwb3NlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQXVkaW9NaXhlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxp
emVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRzKTogUmVnaXN0ZXIgbmV3IGF1ZGlv
IHNpbmsgZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF1ZGlvU2lua0ZvclBvbGlj
eSk6IE5ldyB1dGlsaXR5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbiBhdWRpbyBzaW5rIGJhc2VkIG9u
CisgICAgICAgIHRoZSBzZWxlY3RlZCByZW5kZXJpbmcgcG9saWN5LgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6fk1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnNlZWspOiBEcml2ZS1ieSBjbGVhbi11cCwgbm8gbmVlZCB0byBjcmVhdGUg
dGhlIHNlZWsKKyAgICAgICAgTWVkaWF0aW1lIGJlZm9yZSB0aGUgZWFybHkgcmV0dXJuIGNoZWNr
aW5nIHRoaXMgaXMgYSBsaXZlIHN0cmVhbS4KKyAgICAgICAgKFdlYkNvcmU6OnNldFN5bmNPbkNs
b2NrKTogRml4dXAgY29kZSBzdHlsZSBpbiB0aGlzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlQXVkaW9TaW5rKTogVXNlIG5ldyBj
cmVhdGVBdWRpb1NpbmtGb3JQb2xpY3koKQorICAgICAgICB1dGlsaXR5IGZ1bmN0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NpbmsgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVh
dGVHU1RQbGF5QmluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5jcHA6IEFkZGVkLiBUaGlzIHNpbmsg
Y2FuIGVpdGhlcgorICAgICAgICBmb3J3YXJkIGluY29taW5nIHNhbXBsZXMgdG8gdGhlIHNoYXJl
ZCBhdWRpb21peGVyIHJ1bm5pbmcgaW4gaXRzIG93biBwaXBlbGluZSwgb3IgZm9yd2FyZAorICAg
ICAgICBzYW1wbGVzIHRvIHRoZSBVSVByb2Nlc3MgdXNpbmcgdGhlIFdQRUJhY2tlbmQtRkRPIGF1
ZGlvIGV4dGVuc2lvbi4KKyAgICAgICAgKEF1ZGlvUGFja2V0SG9sZGVyOjpBdWRpb1BhY2tldEhv
bGRlcik6IFdyYXBwZXIgYXJvdW5kIGF1ZGlvIGJ1ZmZlcnMsIGluIGNoYXJnZSBvZiBjcmVhdGlu
ZworICAgICAgICB0aGUgY29ycmVzcG9uZGluZyBtZW1mZCBkZXNjcmlwdG9yIGFuZCBhbHNvIGtl
ZXBpbmcgdHJhY2sgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgd3BlX2F1ZGlvX3BhY2tl
dF9leHBvcnQuCisgICAgICAgIChBdWRpb1BhY2tldEhvbGRlcjo6fkF1ZGlvUGFja2V0SG9sZGVy
KToKKyAgICAgICAgKEF1ZGlvUGFja2V0SG9sZGVyOjptYXApOiBDcmVhdGUgdGhlIG1lbWZkIGRl
c2NyaXB0b3IgYW5kIHJldHVybiBpdCBhbG9uZyB3aXRoIHRoZSBidWZmZXIgc2l6ZS4KKyAgICAg
ICAgKHdlYktpdEF1ZGlvU2lua0hhbmRsZVNhbXBsZSk6IEZvcndhcmQgaW5jb21pbmcgc2FtcGxl
cyB1c2luZyB0aGUgV1BFQmFja2VuZC1GRE8gYXVkaW8KKyAgICAgICAgZXh0ZW5zaW9uLiBUaGUg
d3BlX2F1ZGlvX3NvdXJjZSBzdGFydCBpcyBzeW5jaHJvbml6ZWQgd2l0aCB0aGUgYnVmZmVyIGZs
b3cuCisgICAgICAgICh3ZWJLaXRBdWRpb1NpbmtDb25zdHJ1Y3RlZCk6IFdoZW4gaW50ZXJuYWwg
bWl4aW5nIGhhcyBiZWVuIHJlcXVlc3RlZCwgY3JlYXRlIGFuCisgICAgICAgIGludGVyYXVkaW9z
aW5rIHRvIHdoaWNoIHNhbXBsZXMgd2lsbCBiZSBzZW50LiBJbnRlcm5hbGx5IHRoZSBpbnRlcmF1
ZGlvc2luayB3aWxsIGZvcndhcmQKKyAgICAgICAgZGF0YSB0byBpdHMgaW50ZXJhdWRpb3NyYyB3
aGljaCBpcyBjb25uZWN0ZWQgdG8gdGhlIGF1ZGlvbWl4ZXIuIE90aGVyd2lzZSwgaWYgZXh0ZXJu
YWwKKyAgICAgICAgcmVuZGVyaW5nIGhhcyBiZWVuIHJlcXVlc3RlZCwgY3JlYXRlIGFuIGFwcHNp
bmsgaW4gb3JkZXIgdG8gcmVsYXkgc2FtcGxlcyB0byB0aGUgVUlQcm9jZXNzLgorICAgICAgICAo
d2ViS2l0QXVkaW9TaW5rRGlzcG9zZSk6CisgICAgICAgIChnZXRJbnRlcm5hbFZvbHVtZU9iamVj
dCk6IFdoZW4gaW50ZXJuYWwgbWl4aW5nIGlzIGVuYWJsZWQsIHZvbHVtZSBhbmQgbXV0ZSBzdGF0
ZXMgYXJlCisgICAgICAgIHRyYWNrZWQgd2l0aGluIHRoZSBhdWRpb21peGVyIHNpbmsgcGFkcy4g
T3RoZXJ3aXNlIG91ciBhdWRpbyBzaW5rIG1hbmFnZXMgdGhpcyB1c2luZyBhIHZvbHVtZQorICAg
ICAgICBlbGVtZW50LgorICAgICAgICAod2ViS2l0QXVkaW9TaW5rU2V0UHJvcGVydHkpOiBQcm94
eSB2b2x1bWUgYW5kIG11dGUgcHJvcGVydGllcyBmcm9tIHRoZSBpbnRlcm5hbCB2b2x1bWUgcHJv
eHkuCisgICAgICAgICh3ZWJLaXRBdWRpb1NpbmtHZXRQcm9wZXJ0eSk6IERpdHRvLgorICAgICAg
ICAod2ViS2l0QXVkaW9TaW5rQ2hhbmdlU3RhdGUpOiBLZWVwIHRoZSBXUEUgYXVkaW8gc291cmNl
IHN0YXRlIHN5bmNocm9uaXplZCB3aXRoIHRoZSBlbGVtZW50CisgICAgICAgIHN0YXRlLCBpbiBv
cmRlciB0byBrbm93IHdoZW4gdGhlIHBhdXNlL3Jlc3VtZSBub3RpZmljYXRpb25zIHNob3VsZCBi
ZSBzZW50IHRvIHRoZSBVSVByb2Nlc3MuCisgICAgICAgIFRoaXMgaXMgYWxzbyB3aGVyZSBtYWlu
dGFpbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGludGVyYXVkaW9zaW5rIGFuZCB0aGUg
YXVkaW9taXhlciwgd2hlbgorICAgICAgICBpdCdzIGVuYWJsZWQuCisgICAgICAgICh3ZWJraXRf
YXVkaW9fc2lua19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdEF1ZGlvU2lua05ldyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJl
YW1lci5oOiBBZGRlZC4KKwogMjAyMC0wNy0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIGxpdmUgcmFuZ2VzIGZyb20gRWRpdG9yLmggYW5kIEVkaXRv
ckNsaWVudC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYzY2RkMmFhN2I0YTkwMmQxZjBkYzQzZGUxMDY1OGE5OWE1
MGMzZDkuLmVhYTU5YjkwMTMzMWU2ZmYyMjIwMzNmOTVjZDg5OWU3MWJhZTU2YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTEgQEAKKzIwMjAtMDctMjIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEludGVybmFsIGF1ZGlvIHJlbmRl
cmluZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc2MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBbiBhdWRpbyByZW5kZXJpbmcgcG9saWN5IHByb3BlcnR5IGlzIGludHJvZHVjZWQgaW4g
dGhlIFdQRSBhbmQgR1RLIHBvcnRzLiBDdXJyZW50bHkgaXQgaGFzCisgICAgICAgIDMgdmFsdWVz
LCBIb3N0RGVmYXVsdCAoZGVmYXVsdCksIEludGVybmFsTWl4aW5nIGFuZCBFeHRlcm5hbCAod2hp
Y2ggaXMgc3VwcG9ydGVkIG9ubHkgaW4gV1BFKS4KKworICAgICAgICBXaGVuIEludGVybmFsTWl4
aW5nIGlzIHNlbGVjdGVkLCBhIHNpbmdsZSBjb25uZWN0aW9uIHRvIHRoZSBob3N0IHNvdW5kIGRh
ZW1vbiB3aWxsIGJlCisgICAgICAgIG1haW50YWluZWQuIFRoZSB2YXJpb3VzIGludGVybmFsIEdT
dHJlYW1lciBiYWNrZW5kcyB3aWxsIHVzZSBhbiBpbnRlcm5hbCBhdWRpbyBzaW5rCisgICAgICAg
IHBlcmZvcm1pbmcgdGhlIG1peGluZy4gVGhlIHNpbmsgd2lsbCByZWxheSB0aGUgcmVzdWx0aW5n
IGF1ZGlvIHN0cmVhbSB0byB0aGUgaG9zdCBhdWRpbworICAgICAgICBkYWVtb24gKHVzdWFsbHkg
UHVsc2VBdWRpbykuCisKKyAgICAgICAgSW4gV1BFIHdoZW4gdGhlIEV4dGVybmFsIHBvbGljeSBp
cyBzZWxlY3RlZCwgYXVkaW8gc2FtcGxlcyB3aWxsIG5vIGxvbmdlciBiZSByZW5kZXJlZCBieQor
ICAgICAgICBXZWJLaXQsIGJ1dCBieSB0aGUgYXBwbGljYXRpb24uIFRvIHN1cHBvcnQgdGhpcyB1
c2UtY2FzZSwgdGhlIEZETyBXUEVCYWNrZW5kIG5vdyBleHBvc2VzIGFuCisgICAgICAgIGF1ZGlv
IHByb3RvY29sLCBpbiBjaGFyZ2Ugb2YgcmVsYXlpbmcgc2FtcGxlcyBmcm9tIHRoZSBXZWJQcm9j
ZXNzIHRvIHRoZSBVSVByb2Nlc3MsIHVzaW5nCisgICAgICAgIFdheWxhbmQgSVBDLiBUaGUgYXBw
bGljYXRpb24gaGFzIHRvIHJlZ2lzdGVyIGEgd3BlX2F1ZGlvX3JlY2VpdmVyIGFuZCBpbXBsZW1l
bnQgaXRzCisgICAgICAgIGNhbGxiYWNrcywgaW4gb3JkZXIgdG8gYmUgbm90aWZpZWQgb2YgdGhl
IGF1ZGlvIHNhbXBsZXMgYW5kIHN0YXRlIGNoYW5nZXMuIFNlZSB0aGUgQVBJIHRlc3RzCisgICAg
ICAgIGZvciBhbiBleGFtcGxlIG9mIGhvdyB0byBkbyB0aGlzLgorCisgICAgICAgICogU2hhcmVk
L0F1ZGlvUmVuZGVyaW5nUG9saWN5Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0
eSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0
X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViVmlld1dpbGxTdGFydExv
YWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9hdWRpb1JlbmRl
cmluZ1BvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF1ZGlvUmVuZGVyaW5nUG9saWN5IGNvbnN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0QXVkaW9SZW5kZXJpbmdQb2xpY3kpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjphdWRpb1JlbmRlcmluZ1BvbGljeSBj
b25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXVk
aW9SZW5kZXJpbmdQb2xpY3kgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEF1ZGlvUmVuZGVyaW5nUG9s
aWN5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KwogMjAyMC0wNy0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS11bV1BFXSBJVFA6IHVzZSB0aGUgZGF0YWJhc2Ugc3RvcmUgdW5jb25k
aXRpb25hbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggZGQ2N2NmZGUwMzRm
NjcyMzYwYjJjMjJlNjVmZDlmMTA5MTk3MjZhZC4uMGQwYTY0N2ZkYTI1ZWU3M2FkZDFjOWNlYjdk
ZWQ1OTNmZmIzNWViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMzAsNiAr
MzAsOSBAQAogCiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0
aW5hdGlvbi5oIgorI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik1lZGlhU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKQEAgLTg3
LDYgKzkwLDI0IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGVEZXN0
aW5hdGlvbigpCiAgICAgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlID0gQXVkaW9EZXN0aW5hdGlv
bjo6aGFyZHdhcmVTYW1wbGVSYXRlKCk7CiAgICAgTE9HKFdlYkF1ZGlvLCAiPj4+PiBoYXJkd2Fy
ZVNhbXBsZVJhdGUgPSAlZlxuIiwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKIAorI2lmIFVTRShHU1RS
RUFNRVIpCisgICAgYXV0byogcGFnZSA9IGNvbnRleHQoKS5kb2N1bWVudCgpLT5wYWdlKCk7Cisg
ICAgaWYgKHBhZ2UpIHsKKyAgICAgICAgc3dpdGNoIChwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5h
dWRpb1JlbmRlcmluZ1BvbGljeSgpKSB7CisgICAgICAgIGNhc2UgQ2hyb21lQ2xpZW50OjpBdWRp
b1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQ6CisgICAgICAgICAgICBtX2F1ZGlvUmVuZGVy
aW5nUG9saWN5ID0gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3RE
ZWZhdWx0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hyb21lQ2xpZW50OjpB
dWRpb1JlbmRlcmluZ1BvbGljeTo6SW50ZXJuYWxNaXhpbmc6CisgICAgICAgICAgICBtX2F1ZGlv
UmVuZGVyaW5nUG9saWN5ID0gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6
OkludGVybmFsTWl4aW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hyb21l
Q2xpZW50OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6RXh0ZXJuYWw6CisgICAgICAgICAgICBtX2F1
ZGlvUmVuZGVyaW5nUG9saWN5ID0gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xp
Y3k6OkV4dGVybmFsOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgog
ICAgIG1fZGVzdGluYXRpb24gPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVneSgp
LmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oKnRoaXMsIG1faW5wdXREZXZpY2VJZCwgbV9udW1iZXJP
ZklucHV0Q2hhbm5lbHMsIGNoYW5uZWxDb3VudCgpLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCAxYjgxMWFkOTU0Y2E5ODI3MWVlOWMyYmRh
YmY3NzAxZjliZTk4MzdiLi43OWI4MjU1OWU1MjJiOTA4YTAyODYxYTE3NjU2YTc4MmZmZTEwZTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTM5LDcgKzM5LDExIEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgCiAgICAgdmlydHVhbCB+RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7
Ci0gICAgCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlv
UmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9hdWRpb1JlbmRlcmluZ1BvbGljeTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEJhc2VBdWRpb0NvbnRleHQmLCBPcHRp
b25hbDxmbG9hdD4pOwogICAgIHZvaWQgY3JlYXRlRGVzdGluYXRpb24oKTsKQEAgLTU5LDYgKzYz
LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IG1f
ZGVzdGluYXRpb247CiAgICAgU3RyaW5nIG1faW5wdXREZXZpY2VJZDsKICAgICB1bnNpZ25lZCBt
X251bWJlck9mSW5wdXRDaGFubmVscyB7IDAgfTsKKworI2lmIFVTRShHU1RSRUFNRVIpCisgICAg
TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3kgbV9hdWRpb1JlbmRlcmluZ1Bv
bGljeSB7IE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVs
dCB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBlNGM0NGE0NDI2ZjNjNWY5OWRiYzQzZDBj
YjlkNTkxNjE4MTg5ZTE5Li40YjFiOGZmMTYyZmFiOWMxYzI4ZWEzOTNjMWU1OTNlMjBiZDc2YWQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTcwMDgsNiAr
NzAwOCwyNSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlcXVlc3RJbnN0YWxsTWlzc2luZ1Bs
dWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdAogCiAgICAgZG9jdW1lbnQoKS5wYWdl
KCktPmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhk
ZXRhaWxzLCBkZXNjcmlwdGlvbiwgY2FsbGJhY2spOwogfQorCitNZWRpYVBsYXllckVudW1zOjpB
dWRpb1JlbmRlcmluZ1BvbGljeSBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckF1ZGlvUmVu
ZGVyaW5nUG9saWN5KCkgY29uc3QKK3sKKyAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdl
KCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVk
aW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0OworCisgICAgc3dpdGNoIChwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS5hdWRpb1JlbmRlcmluZ1BvbGljeSgpKSB7CisgICAgY2FzZSBDaHJvbWVD
bGllbnQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDsKKyAg
ICBjYXNlIENocm9tZUNsaWVudDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkludGVybmFsTWl4aW5n
OgorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6
OkludGVybmFsTWl4aW5nOworICAgIGNhc2UgQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ1Bv
bGljeTo6RXh0ZXJuYWw6CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpBdWRpb1Jl
bmRlcmluZ1BvbGljeTo6RXh0ZXJuYWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpBdWRpb1Jl
bmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQ7Cit9CiAjZW5kaWYKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpyZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZShN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpCZWhhdmlvclJlc3RyaWN0aW9ucyBtYXNrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAxNWM5YzNjMGQ4NmZhMDBkMzdiZWUyMTVm
NTRjMzE2NjE4YzE2ZGNlLi5kOTljOWZjMjJiZjZmNTkyZWZkMmVlNDQ2ZWFmMzIyOWU3NWJjMTIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNzQxLDYgKzc0MSw3
IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoR1NUUkVBTUVSKQogICAgIHZvaWQgcmVxdWVzdEluc3Rh
bGxNaXNzaW5nUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNr
JikgZmluYWw7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3kgbWVk
aWFQbGF5ZXJBdWRpb1JlbmRlcmluZ1BvbGljeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKICAg
ICB2b2lkIHBlbmRpbmdBY3Rpb25UaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAppbmRleCBjMGEwZDMwYmNmZGYzZjQxY2YwZThkN2YzZGU0YzI0YzAxZGI2Nzk4Li5kYjhj
NDBmZmVmODM5MDA0MDE4Mzc4ZGQ2ZGJkNjdkOWM5NDk1MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKQEAgLTQ5NCw2ICs0OTQsMTMgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKQogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiAvKmRldGFpbHMqLywgY29uc3QgU3RyaW5n
JiAvKmRlc2NyaXB0aW9uKi8sIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrJikgeyB9CisKKyAgICBlbnVtIGNsYXNzIEF1ZGlvUmVuZGVyaW5nUG9saWN5IHsK
KyAgICAgICAgSG9zdERlZmF1bHQsCisgICAgICAgIEludGVybmFsTWl4aW5nLAorICAgICAgICBF
eHRlcm5hbAorICAgIH07CisgICAgdmlydHVhbCBBdWRpb1JlbmRlcmluZ1BvbGljeSBhdWRpb1Jl
bmRlcmluZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIEF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0
RGVmYXVsdDsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkSW52YWxpZGF0ZURvY3Vt
ZW50TWFya2VyUmVjdHMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0dTdHJlYW1lci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFr
ZQppbmRleCA2YTJjYWUzNDIzZTNiZTE1ZmMwOTBmYmI3MmI1MWE1NmUzY2NkMWIxLi4wZjFhNDEy
MzQ0NmZmZTI1ZGE4YjEzZmNjZTdmN2I1OGRmMWQ3MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vR1N0cmVhbWVyLmNtYWtlCkBAIC05LDYgKzksNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVO
QUJMRV9XRUJfQVVESU8pCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dMVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9Hc3RBbGxvY2F0b3JGYXN0TWFsbG9jLmNwcAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAt
MjMsNiArMjQsNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVh
bWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCiAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSU9DYWxs
YmFjay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9JT0NhbGxiYWNrLmgK
aW5kZXggYTQzODkxZjBiZjQyZmQyYmRlMDZkZDAwYzkzMjRjZjFkYTIwYzViMi4uNzc2MWZhNTQ2
Mzg0NmY4MzUyZTcxYmYzMDEyMzJmMmYwY2IxMzA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9JT0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9JT0NhbGxiYWNrLmgKQEAgLTI2LDggKzI2LDExIEBACiAgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgQXVkaW9JT0NhbGxiYWNrX2gKLSNkZWZpbmUgQXVkaW9J
T0NhbGxiYWNrX2gKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRl
ICJNZWRpYVBsYXllckVudW1zLmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00Miw5ICs0NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nRGlk
Q2hhbmdlKCkgPSAwOwogCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICB2aXJ0dWFsIE1lZGlhUGxh
eWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29u
c3QgeyByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3RE
ZWZhdWx0OyB9OworI2VuZGlmCisKICAgICB2aXJ0dWFsIH5BdWRpb0lPQ2FsbGJhY2soKSA9IGRl
ZmF1bHQ7CiB9OwogCiB9IC8vIFdlYkNvcmUKIAotI2VuZGlmIC8vIEF1ZGlvSU9DYWxsYmFja19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXggMWE1NDk1ZmQ3
NjRkOWMzY2M2ZWRiNTgxZmE0ODBlYWVhZDE0NTliZi4uYzc2MjMwNTgwMjA3YWZkZjc2MTgwNWE5
Njk4YjcyMTFmODA5MTg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
LmNwcApAQCAtMjQsOSArMjQsMTEgQEAKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmgiCiAKICNpbmNsdWRlICJBdWRpb0NoYW5uZWwuaCIKKyNpbmNsdWRlICJBdWRpb0lPQ2Fs
bGJhY2suaCIKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiR1Jl
ZlB0ckdTdHJlYW1lci5oIgorI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgPGdzdC9hdWRp
by9nc3RhdWRpb2Jhc2VzaW5rLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgpAQCAtOTUsMjkgKzk3
LDM0IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvdmlk
ZXIiLCAmbV9jYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWVzIiwgZnJhbWVzVG9Q
dWxsLCBudWxscHRyKSk7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGdz
dF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b2F1ZGlvc2luayIsIG51bGxwdHIpOworICAgIGF1
dG8gYXVkaW9SZW5kZXJpbmdQb2xpY3kgPSBjYWxsYmFjay5hdWRpb1JlbmRlcmluZ1BvbGljeSgp
OworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3JlYXRlQXVkaW9TaW5rRm9y
UG9saWN5KGF1ZGlvUmVuZGVyaW5nUG9saWN5KTsKICAgICBtX2F1ZGlvU2lua0F2YWlsYWJsZSA9
IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewotICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1dG9hdWRpb3NpbmsgZWxlbWVudCIpOworICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVu
dCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZ19zaWduYWxfY29ubmVjdChhdWRp
b1NpbmsuZ2V0KCksICJjaGlsZC1hZGRlZCIsIEdfQ0FMTEJBQ0soYXV0b0F1ZGlvU2lua0NoaWxk
QWRkZWRDYWxsYmFjayksIG51bGxwdHIpOwotCi0gICAgLy8gQXV0b2F1ZGlvc2luayBkb2VzIHRo
ZSByZWFsIHNpbmsgZGV0ZWN0aW9uIGluIHRoZSBHU1RfU1RBVEVfTlVMTC0+UkVBRFkgdHJhbnNp
dGlvbgotICAgIC8vIHNvIGl0J3MgYmVzdCB0byByb2xsIGl0IHRvIFJFQURZIGFzIHNvb24gYXMg
cG9zc2libGUgdG8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtCi0gICAgLy8gYXVkaW9z
aW5rIHdhcyBsb2FkZWQgY29ycmVjdGx5LgotICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRl
Q2hhbmdlUmV0dXJuID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlvU2luay5nZXQoKSwgR1NU
X1NUQVRFX1JFQURZKTsKLSAgICBpZiAoc3RhdGVDaGFuZ2VSZXR1cm4gPT0gR1NUX1NUQVRFX0NI
QU5HRV9GQUlMVVJFKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNoYW5nZSBhdXRv
YXVkaW9zaW5rIGVsZW1lbnQgc3RhdGUiKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRl
KGF1ZGlvU2luay5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwotICAgICAgICBtX2F1ZGlvU2lua0F2
YWlsYWJsZSA9IGZhbHNlOwotICAgICAgICByZXR1cm47CisgICAgLy8gUHJvYmUgcGxhdGZvcm0g
ZWFybHkgb24gZm9yIGEgd29ya2luZyBhdWRpbyBvdXRwdXQgZGV2aWNlLiBUaGlzIGlzIG5vdCBu
ZWVkZWQgZm9yIHRoZSBXZWJLaXQKKyAgICAvLyBjdXN0b20gYXVkaW8gc2luayBiZWNhdXNlIGl0
IGRvZXNuJ3QgcmVseSBvbiBhdXRvYXVkaW9zaW5rLgorICAgIGlmICghV0VCS0lUX0lTX0FVRElP
X1NJTksoYXVkaW9TaW5rLmdldCgpKSkgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KGF1ZGlv
U2luay5nZXQoKSwgImNoaWxkLWFkZGVkIiwgR19DQUxMQkFDSyhhdXRvQXVkaW9TaW5rQ2hpbGRB
ZGRlZENhbGxiYWNrKSwgbnVsbHB0cik7CisKKyAgICAgICAgLy8gQXV0b2F1ZGlvc2luayBkb2Vz
IHRoZSByZWFsIHNpbmsgZGV0ZWN0aW9uIGluIHRoZSBHU1RfU1RBVEVfTlVMTC0+UkVBRFkgdHJh
bnNpdGlvbgorICAgICAgICAvLyBzbyBpdCdzIGJlc3QgdG8gcm9sbCBpdCB0byBSRUFEWSBhcyBz
b29uIGFzIHBvc3NpYmxlIHRvIGVuc3VyZSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybQorICAgICAg
ICAvLyBhdWRpb3Npbmsgd2FzIGxvYWRlZCBjb3JyZWN0bHkuCisgICAgICAgIEdzdFN0YXRlQ2hh
bmdlUmV0dXJuIHN0YXRlQ2hhbmdlUmV0dXJuID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlv
U2luay5nZXQoKSwgR1NUX1NUQVRFX1JFQURZKTsKKyAgICAgICAgaWYgKHN0YXRlQ2hhbmdlUmV0
dXJuID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgeworICAgICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gY2hhbmdlIGF1dG9hdWRpb3NpbmsgZWxlbWVudCBzdGF0ZSIpOworICAgICAg
ICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlvU2luay5nZXQoKSwgR1NUX1NUQVRFX05V
TEwpOworICAgICAgICAgICAgbV9hdWRpb1NpbmtBdmFpbGFibGUgPSBmYWxzZTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEdzdEVsZW1lbnQqIGF1ZGlvQ29u
dmVydCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9jb252ZXJ0IiwgbnVsbHB0cik7
CiAgICAgR3N0RWxlbWVudCogYXVkaW9SZXNhbXBsZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFr
ZSgiYXVkaW9yZXNhbXBsZSIsIG51bGxwdHIpOwotICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJ
TihtX3BpcGVsaW5lKSwgd2Via2l0QXVkaW9TcmMsIGF1ZGlvQ29udmVydCwgYXVkaW9SZXNhbXBs
ZSwgYXVkaW9TaW5rLmdldCgpLCBudWxscHRyKTsKKyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9C
SU5fQ0FTVChtX3BpcGVsaW5lKSwgd2Via2l0QXVkaW9TcmMsIGF1ZGlvQ29udmVydCwgYXVkaW9S
ZXNhbXBsZSwgYXVkaW9TaW5rLmdldCgpLCBudWxscHRyKTsKIAogICAgIC8vIExpbmsgc3JjIHBh
ZHMgZnJvbSB3ZWJraXRBdWRpb1NyYyB0byBhdWRpb0NvbnZlcnQgISBhdWRpb1Jlc2FtcGxlICEg
YXV0b2F1ZGlvc2luay4KICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbCh3ZWJraXRBdWRp
b1NyYywgInNyYyIsIGF1ZGlvQ29udmVydCwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9U
SElORyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaAppbmRleCAzYjg5ZmVi
YzYyN2E0NzY1ODZkMmMzMzhkMmYyZjU1OTc5YWM5MjAxLi5iNGExMmRkOTBlNmJhODIxODUxMzdm
ODRhMGZlZDkxZDg3NTNkMzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
LmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAi
QXVkaW9EZXN0aW5hdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyRW51bXMuaCIKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RFbGVtZW50IEdzdEVsZW1l
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKaW5kZXgg
NTRiMzlmNDVhNWJhNzAwZWUwZTliYWExNjUzNmQyMTg4NGVkMTBmOC4uMTVjNDI2NmIzMTJjMjc4
ZmM3NzcwNDI2YjE1NTNhMTMzOTM2NTQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVBy
b3ZpZGVyR1N0cmVhbWVyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIEF1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXI6On5BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKCkKICAgICBnX29iamVj
dF91bnJlZihtX2Zyb250UmlnaHRBZGFwdGVyKTsKIH0KIAotdm9pZCBBdWRpb1NvdXJjZVByb3Zp
ZGVyR1N0cmVhbWVyOjpjb25maWd1cmVBdWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0JpbiwgR3N0
RWxlbWVudCogdGVlUHJlZGVjZXNzb3IpCit2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFt
ZXI6OmNvbmZpZ3VyZUF1ZGlvQmluKEdzdEVsZW1lbnQqIGF1ZGlvQmluLCBHc3RFbGVtZW50KiBh
dWRpb1NpbmspCiB7CiAgICAgbV9hdWRpb1NpbmtCaW4gPSBhdWRpb0JpbjsKIApAQCAtMTUyLDI2
ICsxNTIsMTYgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpjb25maWd1cmVB
dWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0JpbiwgR3N0RWwKICAgICBHc3RFbGVtZW50KiBhdWRp
b1Jlc2FtcGxlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb3Jlc2FtcGxlIiwgbnVs
bHB0cik7CiAgICAgR3N0RWxlbWVudCogYXVkaW9SZXNhbXBsZTIgPSBnc3RfZWxlbWVudF9mYWN0
b3J5X21ha2UoImF1ZGlvcmVzYW1wbGUiLCBudWxscHRyKTsKICAgICBHc3RFbGVtZW50KiB2b2x1
bWVFbGVtZW50ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJ2b2x1bWUiLCAidm9sdW1lIik7
Ci0gICAgR3N0RWxlbWVudCogYXVkaW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJh
dXRvYXVkaW9zaW5rIiwgbnVsbHB0cik7Ci0KLSAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4o
bV9hdWRpb1NpbmtCaW4uZ2V0KCkpLCBhdWRpb1RlZSwgYXVkaW9RdWV1ZSwgYXVkaW9Db252ZXJ0
LCBhdWRpb1Jlc2FtcGxlLCB2b2x1bWVFbGVtZW50LCBhdWRpb0NvbnZlcnQyLCBhdWRpb1Jlc2Ft
cGxlMiwgYXVkaW9TaW5rLCBudWxscHRyKTsKLQotICAgIC8vIEluIGNhc2VzIHdoZXJlIHRoZSBh
dWRpby1zaW5rIG5lZWRzIGVsZW1lbnRzIGJlZm9yZSB0ZWUgKHN1Y2gKLSAgICAvLyBhcyBzY2Fs
ZXRlbXBvKSB0aGV5IG5lZWQgdG8gYmUgbGlua2VkIHRvIHRlZSB3aGljaCBpbiB0aGlzIGNhc2UK
LSAgICAvLyBkb2Vzbid0IG5lZWQgYSBnaG9zdCBwYWQuIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUg
dGVlUHJlZGVjZXNzb3IKLSAgICAvLyBjaGFpbiBhbHJlYWR5IGNvbmZpZ3VyZWQgYSBnaG9zdCBw
YWQuCi0gICAgaWYgKHRlZVByZWRlY2Vzc29yKQotICAgICAgICBnc3RfZWxlbWVudF9saW5rX3Bh
ZHNfZnVsbCh0ZWVQcmVkZWNlc3NvciwgInNyYyIsIGF1ZGlvVGVlLCAic2luayIsIEdTVF9QQURf
TElOS19DSEVDS19OT1RISU5HKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gQWRkIGEgZ2hvc3Rw
YWQgdG8gdGhlIGJpbiBzbyBpdCBjYW4gcHJveHkgdG8gdGVlLgotICAgICAgICBHUmVmUHRyPEdz
dFBhZD4gYXVkaW9UZWVTaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNf
cGFkKGF1ZGlvVGVlLCAic2luayIpKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfYWRkX3BhZChtX2F1
ZGlvU2lua0Jpbi5nZXQoKSwgZ3N0X2dob3N0X3BhZF9uZXcoInNpbmsiLCBhdWRpb1RlZVNpbmtQ
YWQuZ2V0KCkpKTsKLSAgICB9CiAKLSAgICAvLyBMaW5rIGEgbmV3IHNyYyBwYWQgZnJvbSB0ZWUg
dG8gcXVldWUgISBhdWRpb2NvbnZlcnQgIQotICAgIC8vIGF1ZGlvcmVzYW1wbGUgISB2b2x1bWUg
ISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEKLSAgICAvLyBhdXRvYXVkaW9zaW5rLiBU
aGUgYXVkaW9yZXNhbXBsZSBhbmQgYXVkaW9jb252ZXJ0IGFyZSBuZWVkZWQgdG8KLSAgICAvLyBl
bnN1cmUgdGhlIGF1ZGlvIHNpbmsgcmVjZWl2ZXMgYnVmZmVycyBpbiB0aGUgY29ycmVjdCBmb3Jt
YXQuCisgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOX0NBU1QobV9hdWRpb1NpbmtCaW4uZ2V0
KCkpLCBhdWRpb1RlZSwgYXVkaW9RdWV1ZSwgYXVkaW9Db252ZXJ0LCBhdWRpb1Jlc2FtcGxlLCB2
b2x1bWVFbGVtZW50LCBhdWRpb0NvbnZlcnQyLCBhdWRpb1Jlc2FtcGxlMiwgYXVkaW9TaW5rLCBu
dWxscHRyKTsKKworICAgIC8vIEFkZCBhIGdob3N0cGFkIHRvIHRoZSBiaW4gc28gaXQgY2FuIHBy
b3h5IHRvIHRlZS4KKyAgICBhdXRvIGF1ZGlvVGVlU2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxl
bWVudF9nZXRfc3RhdGljX3BhZChhdWRpb1RlZSwgInNpbmsiKSk7CisgICAgZ3N0X2VsZW1lbnRf
YWRkX3BhZChtX2F1ZGlvU2lua0Jpbi5nZXQoKSwgZ3N0X2dob3N0X3BhZF9uZXcoInNpbmsiLCBh
dWRpb1RlZVNpbmtQYWQuZ2V0KCkpKTsKKworICAgIC8vIExpbmsgYSBuZXcgc3JjIHBhZCBmcm9t
IHRlZSB0byBxdWV1ZSAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISB2b2x1bWUgISBh
dWRpb2NvbnZlcnQgIQorICAgIC8vIGF1ZGlvcmVzYW1wbGUgISBhdWRpb3NpbmsuIFRoZSBhdWRp
b3Jlc2FtcGxlIGFuZCBhdWRpb2NvbnZlcnQgYXJlIG5lZWRlZCB0byBlbnN1cmUgdGhlIGF1ZGlv
CisgICAgLy8gc2luayByZWNlaXZlcyBidWZmZXJzIGluIHRoZSBjb3JyZWN0IGZvcm1hdC4KICAg
ICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChhdWRpb1RlZSwgInNyY18ldSIsIGF1ZGlvUXVl
dWUsICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwogICAgIGdzdF9lbGVtZW50
X2xpbmtfcGFkc19mdWxsKGF1ZGlvUXVldWUsICJzcmMiLCBhdWRpb0NvbnZlcnQsICJzaW5rIiwg
R1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwogICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkc19m
dWxsKGF1ZGlvQ29udmVydCwgInNyYyIsIGF1ZGlvUmVzYW1wbGUsICJzaW5rIiwgR1NUX1BBRF9M
SU5LX0NIRUNLX05PVEhJTkcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVh
bWVyLmgKaW5kZXggZDZiYTIyYTMxMWU1OWY3M2E4MTcyOGVkZjQ0NTE3ZGFkZDUzZWZiMC4uZTRm
NjUxMmYxMmEwM2YxMzljNDM3ZGMyMGQ3MTcyNGIxZDRiMjM3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3Ry
ZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKCk7CiAgICAgfkF1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXIoKTsKIAotICAgIHZvaWQgY29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCog
YXVkaW9CaW4sIEdzdEVsZW1lbnQqIHRlZVByZWRlY2Vzc29yKTsKKyAgICB2b2lkIGNvbmZpZ3Vy
ZUF1ZGlvQmluKEdzdEVsZW1lbnQqIGF1ZGlvQmluLCBHc3RFbGVtZW50KiBhdWRpb1NpbmspOwog
CiAgICAgdm9pZCBwcm92aWRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldENsaWVudChBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50
Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAKaW5kZXggZWQ2YTRlZjE3N2NmY2Y3OGM5OGM5M2U3NWJiYzhiOGM2ZmE3NjZl
MS4uYzcxZDczMjNjZjI3NTI3NTExZGMxNDg2ZjZmMTg2YmE3M2ZmYjZiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTQ1NSw2
ICsxNDU1LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24o
KQogCiAgICAgbV9wcml2YXRlLT5zaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKCk7CiB9CisKK01l
ZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5IE1lZGlhUGxheWVyOjphdWRpb1Jl
bmRlcmluZ1BvbGljeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVy
QXVkaW9SZW5kZXJpbmdQb2xpY3koKTsKK30KICNlbmRpZgogCiB2b2lkIE1lZGlhUGxheWVyOjpi
ZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpCkBAIC0xNjkwLDYgKzE2OTUsMjEgQEAgU3RyaW5nIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kgZW51
bWVyYXRpb25WYWx1ZSkKICAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51
bWVyYXRpb25WYWx1ZSldOwogfQogCisjaWYgVVNFKEdTVFJFQU1FUikKK1N0cmluZyBjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGlj
eSBlbnVtZXJhdGlvblZhbHVlKQoreworICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IHZhbHVlc1tdID0geworICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiSG9z
dERlZmF1bHQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkludGVybmFsTWl4
aW5nIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJFeHRlcm5hbCIpLAorICAg
IH07CisgICAgc3RhdGljX2Fzc2VydCghc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVu
dW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQpLCAiTWVkaWFQbGF5ZXJFbnVt
czo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0IGlzIG5vdCAwIGFzIGV4cGVjdGVk
Iik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyRW51
bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpJbnRlcm5hbE1peGluZykgPT0gMSwgIk1lZGlhUGxh
eWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpJbnRlcm5hbE1peGluZyBpcyBub3QgMSBh
cyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRp
YVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6RXh0ZXJuYWwpID09IDIsICJNZWRp
YVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6RXh0ZXJuYWwgaXMgbm90IDIgYXMg
ZXhwZWN0ZWQiKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZh
bHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CisgICAgcmV0dXJuIHZhbHVlc1tzdGF0
aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKK30KKyNlbmRpZgogfQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmlu
ZGV4IDc3ZDY2YjVhOGRjNjM2NDJmNGY1ODdkODJjM2Q5YzFkMDlhOThjNmMuLjcxZDNjZjU0Zjkz
ZDNlMWZkZjA3ODU0OGI0N2UwMjk1YjJiMmM0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjYxLDYgKzI2MSw3IEBAIHB1YmxpYzoK
IAogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RJbnN0YWxsTWlz
c2luZ1BsdWdpbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5ZXJSZXF1
ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKSB7IH07CisgICAgdmlydHVhbCBNZWRp
YVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeSBtZWRpYVBsYXllckF1ZGlvUmVuZGVy
aW5nUG9saWN5KCkgY29uc3QgeyByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJp
bmdQb2xpY3k6Okhvc3REZWZhdWx0OyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRp
YVBsYXllclNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0y
NzYsNiArMjc3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3Qgdm9pZCogbWVkaWFQbGF5
ZXJMb2dJZGVudGlmaWVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgY29uc3Qg
TG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpID0gMDsKICNlbmRpZgorCisgICAgdmlydHVhbCBi
b29sIG1lZGlhUGxheWVyU2hvdWxkSW50ZXJuYWxseVJlbmRlckF1ZGlvKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogfTsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFQbGF5ZXIgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJFbnVtcywgcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFQbGF5ZXI+IHsKQEAg
LTYyMyw2ICs2MjYsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoR1NUUkVBTUVSKQogICAgIHZvaWQg
cmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1
Z2luc0NhbGxiYWNrJiBjYWxsYmFjaykgeyBjbGllbnQoKS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdQ
bHVnaW5zKGRldGFpbHMsIGRlc2NyaXB0aW9uLCBjYWxsYmFjayk7IH0KKyAgICBNZWRpYVBsYXll
ckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeSBhdWRpb1JlbmRlcmluZ1BvbGljeSgpIGNvbnN0
OwogI2VuZGlmCiAKICAgICBjb25zdCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIHBsYXll
clByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaAppbmRleCBh
MDAxNTk3MWE4MjJiNDZmN2FjYzFiODgwMzAzOGEyNzFhNDY3MWQ5Li40NzM0N2U4ZWI2MGZiOTU1
ZGUyYTc3MzEzZjg2YzBlYmU0OGE5MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCkBAIC0xMDYsNiArMTA2LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgVGFyZ2V0VHlwZVRWT3V0CiAgICAgfTsKIAorI2lmIFVTRShHU1RSRUFN
RVIpCisgICAgZW51bSBjbGFzcyBBdWRpb1JlbmRlcmluZ1BvbGljeSA6IHVpbnQ4X3QgeworICAg
ICAgICBIb3N0RGVmYXVsdCwKKyAgICAgICAgSW50ZXJuYWxNaXhpbmcsCisgICAgICAgIEV4dGVy
bmFsCisgICAgfTsKKyNlbmRpZgogfTsKIAogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3Ry
aW5nKE1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGUpOwpAQCAtMTE0LDYgKzEyMSw5IEBAIFN0
cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpQcmVsb2Fk
KTsKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpT
dXBwb3J0c1R5cGUpOwogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxh
eWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeSk7CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorU3RyaW5n
IGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVy
aW5nUG9saWN5KTsKKyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAKQEAgLTI0MCw0
ICsyNTAsMTQgQEAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICA+OwogfTsKIAorI2lm
IFVTRShHU1RSRUFNRVIpCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5PiB7CisgICAgc3RhdGljIFdU
Rjo6U3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkF1ZGlv
UmVuZGVyaW5nUG9saWN5IHBvbGljeSkKKyAgICB7CisgICAgICAgIHJldHVybiBjb252ZXJ0RW51
bWVyYXRpb25Ub1N0cmluZyhwb2xpY3kpOworICAgIH0KK307CisjZW5kaWYKKwogfTsgLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU3NjZkOTNiMTFkODFjYmQ0ZWM4YjRkNDg2MGFkNTk2ZDRmMmUyYzMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
QXVkaW9NaXhlci5jcHAKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgSWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJBdWRp
b01peGVyLmgiCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiR1N0cmVhbWVyQ29t
bW9uLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyh3ZWJraXRfbWVkaWFfZ3N0X2F1ZGlv
X21peGVyX2RlYnVnKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tZWRpYV9nc3Rf
YXVkaW9fbWl4ZXJfZGVidWcKKworYm9vbCBHU3RyZWFtZXJBdWRpb01peGVyOjppc0FsbG93ZWQo
KQoreworICAgIHJldHVybiB3ZWJraXRHc3RDaGVja1ZlcnNpb24oMSwgMTcsIDIpICYmIGlzR1N0
cmVhbWVyUGx1Z2luQXZhaWxhYmxlKCJpbnRlciIpOworfQorCitHU3RyZWFtZXJBdWRpb01peGVy
JiBHU3RyZWFtZXJBdWRpb01peGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxHU3RyZWFtZXJBdWRpb01peGVyPiBzaGFyZWRJbnN0YW5jZTsKKyAgICByZXR1cm4g
c2hhcmVkSW5zdGFuY2U7Cit9CisKK0dTdHJlYW1lckF1ZGlvTWl4ZXI6OkdTdHJlYW1lckF1ZGlv
TWl4ZXIoKQoreworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtpdF9tZWRpYV9nc3Rf
YXVkaW9fbWl4ZXJfZGVidWcsICJ3ZWJraXRhdWRpb21peGVyIiwgMCwgIldlYktpdCBHU3RyZWFt
ZXIgYXVkaW8gbWl4ZXIiKTsKKyAgICBtX3BpcGVsaW5lID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKCJwaXBlbGluZSIsICJ3ZWJraXRhdWRpb21peGVyIik7CisgICAgY29ubmVjdFNpbXBsZUJ1
c01lc3NhZ2VDYWxsYmFjayhtX3BpcGVsaW5lLmdldCgpKTsKKworICAgIG1fbWl4ZXIgPSBnc3Rf
ZWxlbWVudF9mYWN0b3J5X21ha2UoImF1ZGlvbWl4ZXIiLCBudWxscHRyKTsKKyAgICBHc3RFbGVt
ZW50KiBhdWRpb1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1dG9hdWRpb3Npbmsi
LCBudWxscHRyKTsKKworICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTl9DQVNUKG1fcGlwZWxp
bmUuZ2V0KCkpLCBtX21peGVyLmdldCgpLCBhdWRpb1NpbmssIG51bGxwdHIpOworICAgIGdzdF9l
bGVtZW50X2xpbmsobV9taXhlci5nZXQoKSwgYXVkaW9TaW5rKTsKKyAgICBnc3RfZWxlbWVudF9z
ZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1JFQURZKTsKK30KKworR1N0cmVh
bWVyQXVkaW9NaXhlcjo6fkdTdHJlYW1lckF1ZGlvTWl4ZXIoKQoreworICAgIGdzdF9lbGVtZW50
X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Cit9CisKK3ZvaWQg
R1N0cmVhbWVyQXVkaW9NaXhlcjo6ZW5zdXJlU3RhdGUoR3N0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFu
Z2UpCit7CisjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMTQsIDApCisgICAgR1NUX0RFQlVHX09C
SkVDVChtX3BpcGVsaW5lLmdldCgpLCAiSGFuZGxpbmcgJXMgdHJhbnNpdGlvbiAoJXUgbWl4ZXIg
cGFkcykiLCBnc3Rfc3RhdGVfY2hhbmdlX2dldF9uYW1lKHN0YXRlQ2hhbmdlKSwgbV9taXhlci0+
bnVtc2lua3BhZHMpOworI2VuZGlmCisgICAgc3dpdGNoIChzdGF0ZUNoYW5nZSkgeworICAgIGNh
c2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6CisgICAgICAgIGdzdF9lbGVtZW50
X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19QTEFZSU5HOgorICAg
ICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1BM
QVlJTkcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUExBWUlO
R19UT19QQVVTRUQ6CisgICAgICAgIGlmIChtX21peGVyLT5udW1zaW5rcGFkcyA9PSAxKQorICAg
ICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFU
RV9QQVVTRUQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFV
U0VEX1RPX1JFQURZOgorICAgICAgICBpZiAobV9taXhlci0+bnVtc2lua3BhZHMgPT0gMSkKKyAg
ICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RB
VEVfUkVBRFkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVB
RFlfVE9fTlVMTDoKKyAgICAgICAgaWYgKG1fbWl4ZXItPm51bXNpbmtwYWRzID09IDEpCisgICAg
ICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRF
X05VTEwpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKK0dSZWZQdHI8R3N0UGFkPiBHU3RyZWFtZXJBdWRpb01peGVyOjpyZWdpc3RlclBy
b2R1Y2VyKEdzdEVsZW1lbnQqIGludGVyYXVkaW9TaW5rKQoreworICAgIEdzdEVsZW1lbnQqIHNy
YyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiaW50ZXJhdWRpb3NyYyIsIG51bGxwdHIpOwor
ICAgIGdfb2JqZWN0X3NldChzcmMsICJjaGFubmVsIiwgR1NUX0VMRU1FTlRfTkFNRShpbnRlcmF1
ZGlvU2luayksIG51bGxwdHIpOworICAgIGdfb2JqZWN0X3NldChpbnRlcmF1ZGlvU2luaywgImNo
YW5uZWwiLCBHU1RfRUxFTUVOVF9OQU1FKGludGVyYXVkaW9TaW5rKSwgbnVsbHB0cik7CisKKyAg
ICBnc3RfYmluX2FkZChHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIHNyYyk7CisKKyAg
ICBib29sIHNob3VsZFN0YXJ0ID0gIW1fbWl4ZXItPm51bXNpbmtwYWRzOworCisgICAgYXV0byBt
aXhlclBhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQobV9taXhlci5n
ZXQoKSwgInNpbmtfJXUiKSk7CisgICAgYXV0byBzcmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1l
bnRfZ2V0X3N0YXRpY19wYWQoc3JjLCAic3JjIikpOworICAgIGdzdF9wYWRfbGluayhzcmNQYWQu
Z2V0KCksIG1peGVyUGFkLmdldCgpKTsKKworICAgIGlmIChzaG91bGRTdGFydCkKKyAgICAgICAg
Z3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9SRUFEWSk7
CisgICAgZWxzZQorICAgICAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KHNy
Yyk7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJSZWdpc3RlcmVk
IGF1ZGlvIHByb2R1Y2VyICUiIEdTVF9QVFJfRk9STUFULCBtaXhlclBhZC5nZXQoKSk7CisgICAg
R1NUX0RFQlVHX0JJTl9UT19ET1RfRklMRV9XSVRIX1RTKEdTVF9CSU5fQ0FTVChtX3BpcGVsaW5l
LmdldCgpKSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMLCAiYXVkaW8tbWl4ZXItYWZ0ZXItcHJv
ZHVjZXItcmVnaXN0cmF0aW9uIik7CisgICAgcmV0dXJuIG1peGVyUGFkOworfQorCit2b2lkIEdT
dHJlYW1lckF1ZGlvTWl4ZXI6OnVucmVnaXN0ZXJQcm9kdWNlcihjb25zdCBHUmVmUHRyPEdzdFBh
ZD4mIG1peGVyUGFkKQoreworICAgIEdTVF9ERUJVR19PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwg
IlVucmVnaXN0ZXJpbmcgYXVkaW8gcHJvZHVjZXIgJSIgR1NUX1BUUl9GT1JNQVQsIG1peGVyUGFk
LmdldCgpKTsKKworICAgIGF1dG8gcGVlciA9IGFkb3B0R1JlZihnc3RfcGFkX2dldF9wZWVyKG1p
eGVyUGFkLmdldCgpKSk7CisgICAgYXV0byBpbnRlcmF1ZGlvU3JjID0gYWRvcHRHUmVmKGdzdF9w
YWRfZ2V0X3BhcmVudF9lbGVtZW50KHBlZXIuZ2V0KCkpKTsKKyAgICBHU1RfTE9HX09CSkVDVCht
X3BpcGVsaW5lLmdldCgpLCAiaW50ZXJhdWRpb3NyYzogJSIgR1NUX1BUUl9GT1JNQVQsIGludGVy
YXVkaW9TcmMuZ2V0KCkpOworCisgICAgZ3N0X2VsZW1lbnRfc2V0X2xvY2tlZF9zdGF0ZShpbnRl
cmF1ZGlvU3JjLmdldCgpLCB0cnVlKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoaW50ZXJh
dWRpb1NyYy5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworCisgICAgZ3N0X3BhZF91bmxpbmsocGVl
ci5nZXQoKSwgbWl4ZXJQYWQuZ2V0KCkpOworICAgIGdzdF9lbGVtZW50X3JlbGVhc2VfcmVxdWVz
dF9wYWQobV9taXhlci5nZXQoKSwgbWl4ZXJQYWQuZ2V0KCkpOworCisgICAgZ3N0X2Jpbl9yZW1v
dmUoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCBpbnRlcmF1ZGlvU3JjLmdldCgpKTsK
KworICAgIGlmICghbV9taXhlci0+bnVtc2lua3BhZHMpCisgICAgICAgIGdzdF9lbGVtZW50X3Nl
dF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CisKKyAgICBHU1RfREVC
VUdfQklOX1RPX0RPVF9GSUxFX1dJVEhfVFMoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkp
LCBHU1RfREVCVUdfR1JBUEhfU0hPV19BTEwsICJhdWRpby1taXhlci1hZnRlci1wcm9kdWNlci11
bnJlZ2lzdHJhdGlvbiIpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb01peGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9N
aXhlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY3ZjE0ZmYxZjY5NjgwZTI0NWQ0OGYzY2M2NzQ4YTg4ZTc4YWUy
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEdTVFJF
QU1FUikKKworI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdTdHJlYW1lckF1ZGlvTWl4
ZXIgeworICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxHU3RyZWFtZXJBdWRpb01peGVyPjsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpc0FsbG93ZWQoKTsKKyAgICBzdGF0aWMgR1N0cmVhbWVy
QXVkaW9NaXhlciYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIGVuc3VyZVN0YXRlKEdzdFN0YXRl
Q2hhbmdlKTsKKyAgICBHUmVmUHRyPEdzdFBhZD4gcmVnaXN0ZXJQcm9kdWNlcihHc3RFbGVtZW50
Kik7CisgICAgdm9pZCB1bnJlZ2lzdGVyUHJvZHVjZXIoY29uc3QgR1JlZlB0cjxHc3RQYWQ+Jik7
CisKK3Byb3RlY3RlZDoKKyAgICBHU3RyZWFtZXJBdWRpb01peGVyKCk7CisgICAgfkdTdHJlYW1l
ckF1ZGlvTWl4ZXIoKTsKKworcHJpdmF0ZToKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fcGlw
ZWxpbmU7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX21peGVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckNvbW1vbi5jcHAKaW5kZXggZGM3MDE2ZDA4MDRlNzdhYTQ4N2UxMThiYzYyZjNmYTU5NDUyNzMy
MC4uMmZjZGI3M2RmMmY5YjYzN2U0M2IxMmI3ZmZmNzM0NTA3YjBlODU2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1v
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBVU0UoR1NUUkVBTUVSKQog
CiAjaW5jbHVkZSAiR0xWaWRlb1NpbmtHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJB
dWRpb01peGVyLmgiCiAjaW5jbHVkZSAiR3N0QWxsb2NhdG9yRmFzdE1hbGxvYy5oIgogI2luY2x1
ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTU2LDYgKzU3LDcg
QEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIldlYktpdEF1ZGlvU2lu
a0dTdHJlYW1lci5oIgogI2luY2x1ZGUgIldlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oIgogI2Vu
ZGlmCiAKQEAgLTMyMiw2ICszMjQsOCBAQCBib29sIGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdp
c3RlcldlYktpdEVsZW1lbnRzKCkKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogICAgICAgICBnc3Rf
ZWxlbWVudF9yZWdpc3RlcigwLCAid2Via2l0Z2x2aWRlb3NpbmsiLCBHU1RfUkFOS19QUklNQVJZ
LCBXRUJLSVRfVFlQRV9HTF9WSURFT19TSU5LKTsKICNlbmRpZgorICAgICAgICAvLyBXZSBkb24n
dCB3YW50IGF1dG9hdWRpb3NpbmsgdG8gYXV0b3BsdWcgb3VyIHNpbmsuCisgICAgICAgIGdzdF9l
bGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXRhdWRpb3NpbmsiLCBHU1RfUkFOS19OT05FLCBXRUJL
SVRfVFlQRV9BVURJT19TSU5LKTsKICNlbmRpZgogICAgIH0pOwogICAgIHJldHVybiB0cnVlOwpA
QCAtNDIwLDYgKzQyNCwzMiBAQCBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0
IGNoYXIqIG5hbWUpCiAgICAgcmV0dXJuIHBsdWdpbjsKIH0KIAorR3N0RWxlbWVudCogY3JlYXRl
QXVkaW9TaW5rRm9yUG9saWN5KE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5
IGF1ZGlvUmVuZGVyaW5nUG9saWN5KQoreworICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2luayA9IG51
bGxwdHI7CisgICAgc3dpdGNoIChhdWRpb1JlbmRlcmluZ1BvbGljeSkgeworICAgIGNhc2UgTWVk
aWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkV4dGVybmFsOgorICAgICAgICBh
dWRpb1NpbmsgPSB3ZWJraXRBdWRpb1NpbmtOZXcoZmFsc2UpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpJbnRlcm5hbE1p
eGluZzoKKyAgICAgICAgaWYgKEdTdHJlYW1lckF1ZGlvTWl4ZXI6OmlzQWxsb3dlZCgpKSB7Cisg
ICAgICAgICAgICBhdWRpb1NpbmsgPSB3ZWJraXRBdWRpb1NpbmtOZXcodHJ1ZSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBHU1RfV0FSTklORygiSW50ZXJuYWwgYXVk
aW8gbWl4aW5nIHJlcXVlc3QgY2Fubm90IGJlIGZ1bGZpbGxlZC4gRmFsbGluZyBiYWNrIHRvIGF1
dG9hdWRpb3NpbmsiKTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBNZWRpYVBsYXll
ckVudW1zOjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQ6CisgICAgICAgIGF1ZGlv
U2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b2F1ZGlvc2luayIsIG51bGxwdHIp
OworICAgICAgICBpZiAoIWF1ZGlvU2luaykgeworICAgICAgICAgICAgR1NUX1dBUk5JTkcoIkdT
dHJlYW1lcidzIGF1dG9hdWRpb3Npbmsgbm90IGZvdW5kLiBQbGVhc2UgY2hlY2sgeW91ciBnc3Qt
cGx1Z2lucy1nb29kIGluc3RhbGxhdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIGF1ZGlvU2lu
azsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uaAppbmRleCAyZDU2OTJjOWRiMWVkYjM0MjAxZTk4YTY5OWQwY2VmNGE3ZDg1MWY1Li5lOTRk
YWE5YjZkMTM4Y2QzOTIxZDllMGM4ZTE5NDUxZTY0NDkxOTcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5oCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVk
ZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkdVbmlxdWVQdHJHU3RyZWFtZXIuaCIK
KyNpbmNsdWRlICJNZWRpYVBsYXllckVudW1zLmgiCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2lu
Y2x1ZGUgPGdzdC92aWRlby92aWRlby1mb3JtYXQuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlk
ZW8taW5mby5oPgpAQCAtMjMyLDYgKzIzMyw4IEBAIGVudW0gY2xhc3MgR3N0VmlkZW9EZWNvZGVy
UGxhdGZvcm0geyBJbXhWUFUsIFZpZGVvNExpbnV4LCBPcGVuTUFYIH07CiAKIGJvb2wgaXNHU3Ry
ZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSk7CiAKK0dzdEVsZW1lbnQqIGNy
ZWF0ZUF1ZGlvU2lua0ZvclBvbGljeShNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ1Bv
bGljeSk7CisKIH0KIAogI2lmbmRlZiBHU1RfQlVGRkVSX0RUU19PUl9QVFMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggZGViYmI3YjUxNDYz
MGRhMTNjYzI0MWFjNzg2Mjc1N2JkYmZlYjhlNS4uMjEwOTFiYTg2ZDI3NTk1NjNlMjFmYWQ3M2Q4
OTM3Y2M1ZmNhMWU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShH
U1RSRUFNRVIpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHU3Ry
ZWFtZXJBdWRpb01peGVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVk
ZSAiR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVz
LmgiCkBAIC00Myw2ICs0NCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiVmlkZW9TaW5rR1N0cmVhbWVyLmgiCisjaW5j
bHVkZSAiV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIK
ICNpbmNsdWRlICJJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKQEAg
LTIzNiwxMCArMjM4LDkgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyKCkKICAgICBpZiAoV0VCS0lUX0lTX1dFQl9TUkMobV9zb3VyY2Uu
Z2V0KCkpICYmIEdTVF9PQkpFQ1RfUEFSRU5UKG1fc291cmNlLmdldCgpKSkKICAgICAgICAgZ19z
aWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKEdTVF9FTEVNRU5UX1BBUkVOVChtX3Nv
dXJjZS5nZXQoKSksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHVyaURlY29kZUJpbkVsZW1l
bnRBZGRlZENhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBpZiAobV9hdXRvQXVkaW9TaW5rKSB7Ci0g
ICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhHX09CSkVDVChtX2F1
dG9BdWRpb1NpbmsuZ2V0KCkpLAotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRl
cj4oc2V0QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzQ2FsbGJhY2spLCB0aGlzKTsKLSAgICB9CisgICAg
YXV0byogc2luayA9IGF1ZGlvU2luaygpOworICAgIGlmIChzaW5rICYmICFXRUJLSVRfSVNfQVVE
SU9fU0lOSyhzaW5rKSkKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9m
dW5jKEdfT0JKRUNUKHNpbmspLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihzZXRBdWRpb1N0
cmVhbVByb3BlcnRpZXNDYWxsYmFjayksIHRoaXMpOwogCiAgICAgbV9yZWFkeVRpbWVySGFuZGxl
ci5zdG9wKCk7CiAgICAgZm9yIChhdXRvJiBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sgOiBtX21pc3Np
bmdQbHVnaW5DYWxsYmFja3MpIHsKQEAgLTUxOCwxNyArNTE5LDE2IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVrKGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lKQogCiAg
ICAgLy8gQXZvaWQgdXNlbGVzcyBzZWVraW5nLgogICAgIGlmIChtZWRpYVRpbWUgPT0gY3VycmVu
dE1lZGlhVGltZSgpKSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIltT
ZWVrXSBzZWVrIHRvIEVPUyBwb3NpdGlvbiB1bmhhbmRsZWQiKTsKKyAgICAgICAgR1NUX0RFQlVH
X09CSkVDVChwaXBlbGluZSgpLCAiW1NlZWtdIEFscmVhZHkgYXQgcmVxdWVzdGVkIHBvc2l0aW9u
LiBBYm9ydGluZy4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE1lZGlhVGltZSB0
aW1lID0gc3RkOjptaW4obWVkaWFUaW1lLCBkdXJhdGlvbk1lZGlhVGltZSgpKTsKLQogICAgIGlm
IChtX2lzTGl2ZVN0cmVhbSkgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCks
ICJbU2Vla10gTGl2ZSBzdHJlYW0gc2VlayB1bmhhbmRsZWQiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIE1lZGlhVGltZSB0aW1lID0gc3RkOjptaW4obWVkaWFUaW1lLCBkdXJhdGlv
bk1lZGlhVGltZSgpKTsKICAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIltTZWVrXSBz
ZWVraW5nIHRvICVzIiwgdG9TdHJpbmcodGltZSkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBpZiAo
bV9pc1NlZWtpbmcpIHsKQEAgLTEwMDQsMTcgKzEwMDQsMTYgQEAgc3RhdGljIHZvaWQgc2V0U3lu
Y09uQ2xvY2soR3N0RWxlbWVudCAqZWxlbWVudCwgYm9vbCBzeW5jKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIUdTVF9JU19CSU4oZWxlbWVudCkpIHsKLSAgICAgICAgZ19vYmplY3Rfc2V0
KGVsZW1lbnQsICJzeW5jIiwgc3luYywgTlVMTCk7CisgICAgICAgIGdfb2JqZWN0X3NldChlbGVt
ZW50LCAic3luYyIsIHN5bmMsIG51bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgR3N0SXRlcmF0b3IqIGl0ID0gZ3N0X2Jpbl9pdGVyYXRlX3NpbmtzKEdTVF9CSU4oZWxlbWVu
dCkpOwotICAgIHdoaWxlIChnc3RfaXRlcmF0b3JfZm9yZWFjaChpdCwgKEdzdEl0ZXJhdG9yRm9y
ZWFjaEZ1bmN0aW9uKShbXShjb25zdCBHVmFsdWUqIGl0ZW0sIHZvaWQqIHN5bmNQdHIpIHsKKyAg
ICBHVW5pcXVlUHRyPEdzdEl0ZXJhdG9yPiBpdGVyYXRvcihnc3RfYmluX2l0ZXJhdGVfc2lua3Mo
R1NUX0JJTl9DQVNUKGVsZW1lbnQpKSk7CisgICAgd2hpbGUgKGdzdF9pdGVyYXRvcl9mb3JlYWNo
KGl0ZXJhdG9yLmdldCgpLCBzdGF0aWNfY2FzdDxHc3RJdGVyYXRvckZvcmVhY2hGdW5jdGlvbj4o
W10oY29uc3QgR1ZhbHVlKiBpdGVtLCB2b2lkKiBzeW5jUHRyKSB7CiAgICAgICAgIGJvb2wqIHN5
bmMgPSBzdGF0aWNfY2FzdDxib29sKj4oc3luY1B0cik7Ci0gICAgICAgIHNldFN5bmNPbkNsb2Nr
KEdTVF9FTEVNRU5UKGdfdmFsdWVfZ2V0X29iamVjdChpdGVtKSksICpzeW5jKTsKKyAgICAgICAg
c2V0U3luY09uQ2xvY2soR1NUX0VMRU1FTlRfQ0FTVChnX3ZhbHVlX2dldF9vYmplY3QoaXRlbSkp
LCAqc3luYyk7CiAgICAgfSksICZzeW5jKSA9PSBHU1RfSVRFUkFUT1JfUkVTWU5DKQotICAgICAg
ICBnc3RfaXRlcmF0b3JfcmVzeW5jKGl0KTsKLSAgICBnc3RfaXRlcmF0b3JfZnJlZShpdCk7Cisg
ICAgICAgIGdzdF9pdGVyYXRvcl9yZXN5bmMoaXRlcmF0b3IuZ2V0KCkpOwogfQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3luY09uQ2xvY2soYm9vbCBzeW5jKQpAQCAtMTM1
MywyNiArMTM1MiwzMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZGlu
Z0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcgogCiBHc3RFbGVtZW50KiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1ZGlvU2luaygpCiB7Ci0gICAgbV9h
dXRvQXVkaW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdXRvYXVkaW9zaW5rIiwg
bnVsbHB0cik7Ci0gICAgaWYgKCFtX2F1dG9BdWRpb1NpbmspIHsKLSAgICAgICAgR1NUX1dBUk5J
TkcoIkdTdHJlYW1lcidzIGF1dG9hdWRpb3Npbmsgbm90IGZvdW5kLiBQbGVhc2UgY2hlY2sgeW91
ciBnc3QtcGx1Z2lucy1nb29kIGluc3RhbGxhdGlvbiIpOworICAgIEdTVF9JTkZPX09CSkVDVCht
X3BpcGVsaW5lLmdldCgpLCAiQ3JlYXRpbmcgYXVkaW8gc2luayBmb3IgJXMgcmVuZGVyaW5nIHBv
bGljeSIsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKG1fcGxheWVyLT5hdWRpb1JlbmRlcmlu
Z1BvbGljeSgpKS51dGY4KCkuZGF0YSgpKTsKKworICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2luayA9
IGNyZWF0ZUF1ZGlvU2lua0ZvclBvbGljeShtX3BsYXllci0+YXVkaW9SZW5kZXJpbmdQb2xpY3ko
KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYXVkaW9TaW5rKTsKKyAgICBpZiAoIWF1ZGlvU2luaykK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQogCi0gICAgZ19zaWduYWxfY29ubmVjdF9z
d2FwcGVkKG1fYXV0b0F1ZGlvU2luay5nZXQoKSwgImNoaWxkLWFkZGVkIiwgR19DQUxMQkFDSyhz
ZXRBdWRpb1N0cmVhbVByb3BlcnRpZXNDYWxsYmFjayksIHRoaXMpOworICAgIGlmICghV0VCS0lU
X0lTX0FVRElPX1NJTksoYXVkaW9TaW5rKSkKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2Fw
cGVkKGF1ZGlvU2luaywgImNoaWxkLWFkZGVkIiwgR19DQUxMQkFDSyhzZXRBdWRpb1N0cmVhbVBy
b3BlcnRpZXNDYWxsYmFjayksIHRoaXMpOwogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBH
c3RFbGVtZW50KiBhdWRpb1NpbmtCaW4gPSBnc3RfYmluX25ldygiYXVkaW8tc2luayIpOwogICAg
IGVuc3VyZUF1ZGlvU291cmNlUHJvdmlkZXIoKTsKLSAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIt
PmNvbmZpZ3VyZUF1ZGlvQmluKGF1ZGlvU2lua0JpbiwgbnVsbHB0cik7CisgICAgbV9hdWRpb1Nv
dXJjZVByb3ZpZGVyLT5jb25maWd1cmVBdWRpb0JpbihhdWRpb1NpbmtCaW4sIGF1ZGlvU2luayk7
CiAgICAgcmV0dXJuIGF1ZGlvU2lua0JpbjsKICNlbHNlCi0gICAgcmV0dXJuIG1fYXV0b0F1ZGlv
U2luay5nZXQoKTsKKyAgICByZXR1cm4gYXVkaW9TaW5rOwogI2VuZGlmCiB9CiAKIEdzdEVsZW1l
bnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9TaW5rKCkgY29uc3QKIHsKKyAg
ICBpZiAoIW1fcGlwZWxpbmUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgR3N0RWxl
bWVudCogc2luazsKICAgICBnX29iamVjdF9nZXQobV9waXBlbGluZS5nZXQoKSwgImF1ZGlvLXNp
bmsiLCAmc2luaywgbnVsbHB0cik7CiAgICAgcmV0dXJuIHNpbms7CkBAIC0yNzU4LDYgKzI3NjIs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbihj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJgogICAgIHN0YXRpYyBBdG9taWM8dWludDMyX3Q+
IHBpcGVsaW5lSWQ7CiAgICAgc2V0UGlwZWxpbmUoZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKHBs
YXliaW5OYW1lLAogICAgICAgICAocGlwZWxpbmVOYW1lLmlzRW1wdHkoKSA/IG1ha2VTdHJpbmco
Im1lZGlhLXBsYXllci0iLCBwaXBlbGluZUlkLmV4Y2hhbmdlQWRkKDEpKSA6IHBpcGVsaW5lTmFt
ZSkudXRmOCgpLmRhdGEoKSkpOworCiAgICAgc2V0U3RyZWFtVm9sdW1lRWxlbWVudChHU1RfU1RS
RUFNX1ZPTFVNRShtX3BpcGVsaW5lLmdldCgpKSk7CiAKICAgICBHU1RfSU5GT19PQkpFQ1QocGlw
ZWxpbmUoKSwgIlVzaW5nIGxlZ2FjeSBwbGF5YmluIGVsZW1lbnQ6ICVzIiwgYm9vbEZvclByaW50
aW5nKG1faXNMZWdhY3lQbGF5YmluKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmgKaW5kZXggMWVlYzliMjY5ZmZkZDZkMTljNDYwMTVmOTFjNDBiMzFiZWNj
MDBkNy4uOTFlYTIxYTZmOTBhZDczZTJkMjJlZWUwODYwZmVmN2E1OGJjNzYzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtNTEzLDcgKzUxMyw2
IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyOwogI2Vu
ZGlmCi0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX2F1dG9BdWRpb1Npbms7CiAgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBtX2Rvd25sb2FkQnVmZmVyOwogICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFQ
bGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+PiBtX21pc3NpbmdQbHVn
aW5DYWxsYmFja3M7CiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8QXVkaW9UcmFja1By
aXZhdGVHU3RyZWFtZXI+PiBtX2F1ZGlvVHJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVk
aW9TaW5rR1N0cmVhbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjNiOWQ2MmUyNjdiN2I5MGY0Y2JmYTQz
MDE4YTc1MjQwZjNhMGE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5jcHAKQEAgLTAs
MCArMSwzOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTAorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuaCIKKworI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgIkdTdHJlYW1lckF1
ZGlvTWl4ZXIuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKKyNpbmNsdWRlIDxnc3Qv
YXBwL2dzdGFwcHNpbmsuaD4KKyNpbmNsdWRlIDxnc3QvcGJ1dGlscy9taXNzaW5nLXBsdWdpbnMu
aD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+
CisKKyNpZiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJ
T04pCisjaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1EaXNw
bGF5TGliV1BFLmgiCisjaW5jbHVkZSA8d3BlL2V4dGVuc2lvbnMvYXVkaW8uaD4KKyNlbmRpZgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RydWN0IF9XZWJLaXRBdWRpb1NpbmtQcml2
YXRlIHsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGludGVyYXVkaW9TaW5rOworICAgIEdSZWZQ
dHI8R3N0UGFkPiBtaXhlclBhZDsKKyAgICBndWxvbmcgcGFkRXZlbnRQcm9iZUlkOworICAgIGd1
bG9uZyBwYWRCdWZmZXJQcm9iZUlkOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gdm9sdW1lRWxl
bWVudDsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGFwcHNpbms7CisgICAgZ2Jvb2xlYW4gZW5h
YmxlSW50ZXJuYWxNaXhpbmc7CisjaWYgUExBVEZPUk0oV1BFKSAmJiBVU0UoV1BFQkFDS0VORF9G
RE9fQVVESU9fRVhURU5TSU9OKQorICAgIHN0cnVjdCB3cGVfYXVkaW9fc291cmNlKiB3cGVBdWRp
b1NvdXJjZTsKKyAgICBpbnQgbV9zdHJlYW1JZDsKKworICAgIC8vIHdwZV9hdWRpb19zb3VyY2Ug
c3RhdGU6CisgICAgLy8gLSBHU1RfU1RBVEVfTlVMTDogbm90IHN0YXJ0ZWQgb3IgRU9TCisgICAg
Ly8gLSBHU1RfU1RBVEVfUExBWUlORzogYXQgbGVhc3Qgb25lIHBhY2tldCB3YXMgZW1pdHRlZAor
ICAgIC8vIC0gR1NUX1NUQVRFX1BBVVNFRDogcGF1c2Ugbm90aWZpY2F0aW9uIHdhcyBzZW50Cisg
ICAgR3N0U3RhdGUgc291cmNlU3RhdGU7CisjZW5kaWYKK307CisKK2VudW0geworICAgIFBST1Bf
MCwKKyAgICBQUk9QX1ZPTFVNRSwKKyAgICBQUk9QX01VVEUsCisgICAgUFJPUF9FTkFCTEVfSU5U
RVJOQUxfTUlYSU5HLAorfTsKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmtUZW1w
bGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFKCJzaW5rIiwgR1NUX1BBRF9TSU5LLCBHU1Rf
UEFEX0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFMoImF1ZGlvL3gtcmF3IikpOworCitHU1Rf
REVCVUdfQ0FURUdPUllfU1RBVElDKHdlYmtpdF9hdWRpb19zaW5rX2RlYnVnKTsKKyNkZWZpbmUg
R1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9hdWRpb19zaW5rX2RlYnVnCisKKyNkZWZpbmUgd2Via2l0
X2F1ZGlvX3NpbmtfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcworV0VCS0lUX0RFRklORV9UWVBF
X1dJVEhfQ09ERShXZWJLaXRBdWRpb1NpbmssIHdlYmtpdF9hdWRpb19zaW5rLCBHU1RfVFlQRV9C
SU4sCisgICAgR19JTVBMRU1FTlRfSU5URVJGQUNFKEdTVF9UWVBFX1NUUkVBTV9WT0xVTUUsIG51
bGxwdHIpOworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtpdF9hdWRpb19zaW5rX2Rl
YnVnLCAid2Via2l0YXVkaW9zaW5rIiwgMCwgIndlYmtpdCBhdWRpbyBzaW5rIGVsZW1lbnQiKQor
KQorCisjaWYgUExBVEZPUk0oV1BFKSAmJiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5T
SU9OKQorc3RydWN0IEF1ZGlvUGFja2V0SG9sZGVyIHsKKyAgICBBdWRpb1BhY2tldEhvbGRlcihH
c3RCdWZmZXIqIGJ1ZmZlcikKKyAgICAgICAgOiBidWZmZXIoZ3N0X2J1ZmZlcl9yZWYoYnVmZmVy
KSkKKyAgICB7IH0KKyAgICB+QXVkaW9QYWNrZXRIb2xkZXIoKQorICAgIHsKKyAgICAgICAgaWYg
KGZkKQorICAgICAgICAgICAgY2xvc2UoKmZkKTsKKyAgICAgICAgaWYgKGlzTWFwcGVkKQorICAg
ICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChidWZmZXIsICZpbmZvKTsKKyAgICAgICAgZ3N0X2J1
ZmZlcl91bnJlZihidWZmZXIpOworICAgIH0KKworICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjx1aW50
MzJfdCwgc2l6ZV90Pj4gbWFwKCkKKyAgICB7CisgICAgICAgIGlzTWFwcGVkID0gZ3N0X2J1ZmZl
cl9tYXAoYnVmZmVyLCAmaW5mbywgR1NUX01BUF9SRUFEKTsKKyAgICAgICAgaWYgKCFpc01hcHBl
ZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgZmQgPSBtZW1m
ZF9jcmVhdGUoIndwZS1hdWRpby1idWZmZXIiLCBNRkRfQ0xPRVhFQyk7CisgICAgICAgIGlmICgq
ZmQgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGlm
IChmdHJ1bmNhdGUoKmZkLCBpbmZvLnNpemUpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBzc2l6ZV90IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKCpmZCwg
aW5mby5kYXRhLCBpbmZvLnNpemUpOworICAgICAgICBpZiAoYnl0ZXNXcml0dGVuIDwgMCkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0
PHNpemVfdD4oYnl0ZXNXcml0dGVuKSAhPSBpbmZvLnNpemUpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgIGlmIChsc2VlaygqZmQsIDAsIFNFRUtfU0VUKSA9PSAt
MSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQzMl90PigqZmQpLCBpbmZvLnNpemUpOworICAg
IH0KKworICAgIE9wdGlvbmFsPGludDMyX3Q+IGZkOworICAgIEdzdEJ1ZmZlciogYnVmZmVyOwor
ICAgIEdzdE1hcEluZm8gaW5mbyBHU1RfTUFQX0lORk9fSU5JVDsKKyAgICBib29sIGlzTWFwcGVk
IHsgZmFsc2UgfTsKK307CisKK3N0YXRpYyB2b2lkIHdlYktpdEF1ZGlvU2lua0hhbmRsZVNhbXBs
ZShXZWJLaXRBdWRpb1NpbmsqIHNpbmssIEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSkKK3sK
KyAgICBzdHJ1Y3Qgd3BlX2F1ZGlvX3NvdXJjZSogd3BlQXVkaW9Tb3VyY2UgPSBzaW5rLT5wcml2
LT53cGVBdWRpb1NvdXJjZTsKKyAgICBzdGF0aWMgQXRvbWljPGludDMyX3Q+IHVuaXF1ZUlkOwor
CisgICAgaWYgKHNpbmstPnByaXYtPnNvdXJjZVN0YXRlID09IEdTVF9TVEFURV9OVUxMKSB7Cisg
ICAgICAgIHNpbmstPnByaXYtPm1fc3RyZWFtSWQgPSB1bmlxdWVJZC5leGNoYW5nZUFkZCgxKTsK
KyAgICAgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMoc2FtcGxlLmdldCgp
KTsKKyAgICAgICAgR3N0QXVkaW9JbmZvIGluZm87CisgICAgICAgIGdzdF9hdWRpb19pbmZvX2lu
aXQoJmluZm8pOworICAgICAgICBnc3RfYXVkaW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMp
OworICAgICAgICBjb25zdCBjaGFyKiBmb3JtYXQgPSBnc3RfYXVkaW9fZm9ybWF0X3RvX3N0cmlu
ZyhHU1RfQVVESU9fSU5GT19GT1JNQVQoJmluZm8pKTsKKyAgICAgICAgd3BlX2F1ZGlvX3NvdXJj
ZV9zdGFydCh3cGVBdWRpb1NvdXJjZSwgc2luay0+cHJpdi0+bV9zdHJlYW1JZCwgR1NUX0FVRElP
X0lORk9fQ0hBTk5FTFMoJmluZm8pLCBmb3JtYXQsIEdTVF9BVURJT19JTkZPX1JBVEUoJmluZm8p
KTsKKyAgICAgICAgc2luay0+cHJpdi0+c291cmNlU3RhdGUgPSBHU1RfU1RBVEVfUExBWUlORzsK
KyAgICB9CisKKyAgICBhdXRvKiBob2xkZXIgPSBuZXcgQXVkaW9QYWNrZXRIb2xkZXIoZ3N0X3Nh
bXBsZV9nZXRfYnVmZmVyKHNhbXBsZS5nZXQoKSkpOworICAgIGF1dG8gbWFwRGF0YSA9IGhvbGRl
ci0+bWFwKCk7CisgICAgaWYgKCFtYXBEYXRhKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qo
c2luaywgIlVuYWJsZSB0byBwcmVwYXJlIHNoYXJlZCBhdWRpbyBidWZmZXIiKTsKKyAgICAgICAg
ZGVsZXRlIGhvbGRlcjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB3cGVfYXVkaW9fc291
cmNlX3BhY2tldCh3cGVBdWRpb1NvdXJjZSwgc2luay0+cHJpdi0+bV9zdHJlYW1JZCwgc3RkOjpn
ZXQ8MD4oKm1hcERhdGEpLCBzdGQ6OmdldDwxPigqbWFwRGF0YSksIFtdKHZvaWQqIGRhdGEpIHsK
KyAgICAgICAgYXV0byogaG9sZGVyID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb1BhY2tldEhvbGRl
cio+KGRhdGEpOworICAgICAgICBkZWxldGUgaG9sZGVyOworICAgIH0sIGhvbGRlcik7Cit9Cisj
ZW5kaWYKKworc3RhdGljIHZvaWQgd2ViS2l0QXVkaW9TaW5rQ29uc3RydWN0ZWQoR09iamVjdCog
b2JqZWN0KQoreworICAgIEdTVF9DQUxMX1BBUkVOVChHX09CSkVDVF9DTEFTUywgY29uc3RydWN0
ZWQsIChvYmplY3QpKTsKKworICAgIFdlYktpdEF1ZGlvU2luayogc2luayA9IFdFQktJVF9BVURJ
T19TSU5LKG9iamVjdCk7CisKKyAgICBpZiAoc2luay0+cHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhp
bmcpIHsKKyAgICAgICAgc2luay0+cHJpdi0+aW50ZXJhdWRpb1NpbmsgPSBnc3RfZWxlbWVudF9m
YWN0b3J5X21ha2UoImludGVyYXVkaW9zaW5rIiwgbnVsbHB0cik7CisgICAgICAgIGlmICghc2lu
ay0+cHJpdi0+aW50ZXJhdWRpb1NpbmspIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzaW5rLCAiRmFpbGVkIHRvIGNyZWF0
ZSBpbnRlcmF1ZGlvc2luayIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgZ3N0X2Jpbl9hZGQoR1NUX0JJTl9DQVNUKHNpbmspLCBzaW5rLT5wcml2LT5pbnRlcmF1
ZGlvU2luay5nZXQoKSk7CisgICAgICAgIEdSZWZQdHI8R3N0UGFkPiB0YXJnZXRQYWQgPSBhZG9w
dEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoc2luay0+cHJpdi0+aW50ZXJhdWRpb1Np
bmsuZ2V0KCksICJzaW5rIikpOworICAgICAgICBnc3RfZWxlbWVudF9hZGRfcGFkKEdTVF9FTEVN
RU5UX0NBU1Qoc2luayksIHdlYmtpdEdzdEdob3N0UGFkRnJvbVN0YXRpY1RlbXBsYXRlKCZzaW5r
VGVtcGxhdGUsICJzaW5rIiwgdGFyZ2V0UGFkLmdldCgpKSk7CisgICAgfSBlbHNlIHsKKyNpZiBQ
TEFURk9STShXUEUpCisjaWYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTikKKyAg
ICAgICAgc2luay0+cHJpdi0+c291cmNlU3RhdGUgPSBHU1RfU1RBVEVfTlVMTDsKKyAgICAgICAg
YXV0byYgc2hhcmVkRGlzcGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpOwor
ICAgICAgICBpZiAoaXM8UGxhdGZvcm1EaXNwbGF5TGliV1BFPihzaGFyZWREaXNwbGF5KSkKKyAg
ICAgICAgICAgIHNpbmstPnByaXYtPndwZUF1ZGlvU291cmNlID0gd3BlX2F1ZGlvX3NvdXJjZV9j
cmVhdGUoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5TGliV1BFPihzaGFyZWREaXNwbGF5KS5iYWNr
ZW5kKCkpOworCisgICAgICAgIHNpbmstPnByaXYtPnZvbHVtZUVsZW1lbnQgPSBnc3RfZWxlbWVu
dF9mYWN0b3J5X21ha2UoInZvbHVtZSIsIG51bGxwdHIpOworICAgICAgICBzaW5rLT5wcml2LT5h
cHBzaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhcHBzaW5rIiwgbnVsbHB0cik7Cisg
ICAgICAgIGdzdF9hcHBfc2lua19zZXRfZW1pdF9zaWduYWxzKEdTVF9BUFBfU0lOSyhzaW5rLT5w
cml2LT5hcHBzaW5rLmdldCgpKSwgVFJVRSk7CisKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChz
aW5rLT5wcml2LT5hcHBzaW5rLmdldCgpLCAibmV3LXNhbXBsZSIsIEdfQ0FMTEJBQ0soK1tdKEdz
dEVsZW1lbnQqIGFwcHNpbmssIFdlYktpdEF1ZGlvU2luayogc2luaykgLT4gR3N0Rmxvd1JldHVy
biB7CisgICAgICAgICAgICBhdXRvIHNhbXBsZSA9IGFkb3B0R1JlZihnc3RfYXBwX3NpbmtfcHVs
bF9zYW1wbGUoR1NUX0FQUF9TSU5LKGFwcHNpbmspKSk7CisgICAgICAgICAgICB3ZWJLaXRBdWRp
b1NpbmtIYW5kbGVTYW1wbGUoc2luaywgV1RGTW92ZShzYW1wbGUpKTsKKyAgICAgICAgICAgIHJl
dHVybiBHU1RfRkxPV19PSzsKKyAgICAgICAgfSksIHNpbmspOworICAgICAgICBnX3NpZ25hbF9j
b25uZWN0KHNpbmstPnByaXYtPmFwcHNpbmsuZ2V0KCksICJuZXctcHJlcm9sbCIsIEdfQ0FMTEJB
Q0soK1tdKEdzdEVsZW1lbnQqIGFwcHNpbmssIFdlYktpdEF1ZGlvU2luayogc2luaykgLT4gR3N0
Rmxvd1JldHVybiB7CisgICAgICAgICAgICBhdXRvIHNhbXBsZSA9IGFkb3B0R1JlZihnc3RfYXBw
X3NpbmtfcHVsbF9wcmVyb2xsKEdTVF9BUFBfU0lOSyhhcHBzaW5rKSkpOworICAgICAgICAgICAg
d2ViS2l0QXVkaW9TaW5rSGFuZGxlU2FtcGxlKHNpbmssIFdURk1vdmUoc2FtcGxlKSk7CisgICAg
ICAgICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CisgICAgICAgIH0pLCBzaW5rKTsKKworICAgICAg
ICBnX3NpZ25hbF9jb25uZWN0KHNpbmstPnByaXYtPmFwcHNpbmsuZ2V0KCksICJlb3MiLCBHX0NB
TExCQUNLKCtbXShHc3RFbGVtZW50KiwgV2ViS2l0QXVkaW9TaW5rKiBzaW5rKSB7CisgICAgICAg
ICAgICB3cGVfYXVkaW9fc291cmNlX3N0b3Aoc2luay0+cHJpdi0+d3BlQXVkaW9Tb3VyY2UsIHNp
bmstPnByaXYtPm1fc3RyZWFtSWQpOworICAgICAgICAgICAgc2luay0+cHJpdi0+c291cmNlU3Rh
dGUgPSBHU1RfU1RBVEVfTlVMTDsKKyAgICAgICAgfSksIHNpbmspOworCisgICAgICAgIGdzdF9i
aW5fYWRkX21hbnkoR1NUX0JJTl9DQVNUKHNpbmspLCBzaW5rLT5wcml2LT52b2x1bWVFbGVtZW50
LmdldCgpLCBzaW5rLT5wcml2LT5hcHBzaW5rLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgZ3N0
X2VsZW1lbnRfbGluayhzaW5rLT5wcml2LT52b2x1bWVFbGVtZW50LmdldCgpLCBzaW5rLT5wcml2
LT5hcHBzaW5rLmdldCgpKTsKKworICAgICAgICBHUmVmUHRyPEdzdFBhZD4gdGFyZ2V0UGFkID0g
YWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHNpbmstPnByaXYtPnZvbHVtZUVs
ZW1lbnQuZ2V0KCksICJzaW5rIikpOworICAgICAgICBHc3RQYWQqIHNpbmtQYWQgPSB3ZWJraXRH
c3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZSgmc2lua1RlbXBsYXRlLCAic2luayIsIHRhcmdl
dFBhZC5nZXQoKSk7CisgICAgICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoR1NUX0VMRU1FTlRfQ0FT
VChzaW5rKSwgc2lua1BhZCk7CisgICAgICAgIEdTVF9PQkpFQ1RfRkxBR19TRVQoc2lua1BhZCwg
R1NUX1BBRF9GTEFHX05FRURfUEFSRU5UKTsKKyNlbHNlCisgICAgICAgIEdTVF9FUlJPUl9PQkpF
Q1Qoc2luaywgIldQRUJhY2tlbmQtRkRPIEF1ZGlvIGV4dGVuc2lvbiBpcyBtaXNzaW5nLCB1cGRh
dGUgdG8gV1BFQmFja2VuZC1GRE8gMS44LnguIik7CisjZW5kaWYKKyNlbHNlCisgICAgICAgIEdT
VF9FUlJPUl9PQkpFQ1Qoc2luaywgIkV4dGVybmFsIGF1ZGlvIHJlbmRlcmluZyBpcyBzdXBwb3J0
ZWQgb25seSBpbiBXUEVXZWJLaXQiKTsKKyNlbmRpZgorICAgIH0KK30KKworc3RhdGljIHZvaWQg
d2ViS2l0QXVkaW9TaW5rRGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgYXV0byogcHJp
diA9IFdFQktJVF9BVURJT19TSU5LKG9iamVjdCktPnByaXY7CisKKyAgICBpZiAocHJpdi0+cGFk
RXZlbnRQcm9iZUlkKSB7CisgICAgICAgIEdSZWZQdHI8R3N0UGFkPiBzaW5rUGFkID0gYWRvcHRH
UmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHByaXYtPmludGVyYXVkaW9TaW5rLmdldCgp
LCAic2luayIpKTsKKyAgICAgICAgZ3N0X3BhZF9yZW1vdmVfcHJvYmUoc2lua1BhZC5nZXQoKSwg
cHJpdi0+cGFkRXZlbnRQcm9iZUlkKTsKKyAgICAgICAgcHJpdi0+cGFkRXZlbnRQcm9iZUlkID0g
MDsKKyAgICB9CisKKyAgICBpZiAocHJpdi0+cGFkQnVmZmVyUHJvYmVJZCkgeworICAgICAgICBH
UmVmUHRyPEdzdFBhZD4gc2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGlj
X3BhZChwcml2LT5pbnRlcmF1ZGlvU2luay5nZXQoKSwgInNpbmsiKSk7CisgICAgICAgIGdzdF9w
YWRfcmVtb3ZlX3Byb2JlKHNpbmtQYWQuZ2V0KCksIHByaXYtPnBhZEJ1ZmZlclByb2JlSWQpOwor
ICAgICAgICBwcml2LT5wYWRCdWZmZXJQcm9iZUlkID0gMDsKKyAgICB9CisKKyNpZiBQTEFURk9S
TShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04pCisgICAgaWYgKHBy
aXYtPndwZUF1ZGlvU291cmNlKQorICAgICAgICB3cGVfYXVkaW9fc291cmNlX2Rlc3Ryb3kocHJp
di0+d3BlQXVkaW9Tb3VyY2UpOworI2VuZGlmCisKKyAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpF
Q1RfQ0xBU1MsIGRpc3Bvc2UsIChvYmplY3QpKTsKK30KKworc3RhdGljIEdzdE9iamVjdCogZ2V0
SW50ZXJuYWxWb2x1bWVPYmplY3QoV2ViS2l0QXVkaW9TaW5rKiBzaW5rKQoreworICAgIGlmIChz
aW5rLT5wcml2LT5lbmFibGVJbnRlcm5hbE1peGluZykgeworICAgICAgICBpZiAoIXNpbmstPnBy
aXYtPm1peGVyUGFkKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0
dXJuIEdTVF9PQkpFQ1RfQ0FTVChzaW5rLT5wcml2LT5taXhlclBhZC5nZXQoKSk7CisgICAgfQor
ICAgIHJldHVybiBHU1RfT0JKRUNUX0NBU1Qoc2luay0+cHJpdi0+dm9sdW1lRWxlbWVudC5nZXQo
KSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdEF1ZGlvU2lua1NldFByb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcElELCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBw
c3BlYykKK3sKKyAgICBXZWJLaXRBdWRpb1NpbmsqIHNpbmsgPSBXRUJLSVRfQVVESU9fU0lOSyhv
YmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSUQpIHsKKyAgICBjYXNlIFBST1BfVk9MVU1FOiB7
CisgICAgICAgIEdzdE9iamVjdCogaW50ZXJuYWxPYmplY3QgPSBnZXRJbnRlcm5hbFZvbHVtZU9i
amVjdChzaW5rKTsKKyAgICAgICAgaWYgKCFpbnRlcm5hbE9iamVjdCkgeworICAgICAgICAgICAg
R1NUX1dBUk5JTkdfT0JKRUNUKHNpbmssICJObyBhc3NvY2lhdGVkIG1peGVyIHBhZCwgY2FuJ3Qg
c2V0ICVzIHByb3BlcnR5IiwgZ19wYXJhbV9zcGVjX2dldF9uYW1lKHBzcGVjKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZ19vYmplY3Rfc2V0X3Byb3BlcnR5KEdf
T0JKRUNUKGludGVybmFsT2JqZWN0KSwgInZvbHVtZSIsIHZhbHVlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgUFJPUF9NVVRFOiB7CisgICAgICAgIEdzdE9iamVjdCogaW50ZXJu
YWxPYmplY3QgPSBnZXRJbnRlcm5hbFZvbHVtZU9iamVjdChzaW5rKTsKKyAgICAgICAgaWYgKCFp
bnRlcm5hbE9iamVjdCkgeworICAgICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUKHNpbmssICJO
byBhc3NvY2lhdGVkIG1peGVyIHBhZCwgY2FuJ3Qgc2V0ICVzIHByb3BlcnR5IiwgZ19wYXJhbV9z
cGVjX2dldF9uYW1lKHBzcGVjKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgZ19vYmplY3Rfc2V0X3Byb3BlcnR5KEdfT0JKRUNUKGludGVybmFsT2JqZWN0KSwgIm11
dGUiLCB2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfRU5BQkxF
X0lOVEVSTkFMX01JWElORzoKKyAgICAgICAgc2luay0+cHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhp
bmcgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwg
cHJvcElELCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQg
d2ViS2l0QXVkaW9TaW5rR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQs
IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdEF1ZGlvU2lu
ayogc2luayA9IFdFQktJVF9BVURJT19TSU5LKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJ
RCkgeworICAgIGNhc2UgUFJPUF9WT0xVTUU6IHsKKyAgICAgICAgR3N0T2JqZWN0KiBpbnRlcm5h
bE9iamVjdCA9IGdldEludGVybmFsVm9sdW1lT2JqZWN0KHNpbmspOworICAgICAgICBpZiAoIWlu
dGVybmFsT2JqZWN0KSB7CisgICAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1Qoc2luaywgIk5v
IGFzc29jaWF0ZWQgbWl4ZXIgcGFkLCBjYW4ndCBnZXQgJXMgcHJvcGVydHkiLCBnX3BhcmFtX3Nw
ZWNfZ2V0X25hbWUocHNwZWMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBnX29iamVjdF9nZXRfcHJvcGVydHkoR19PQkpFQ1QoaW50ZXJuYWxPYmplY3QpLCAidm9s
dW1lIiwgdmFsdWUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX01VVEU6
IHsKKyAgICAgICAgR3N0T2JqZWN0KiBpbnRlcm5hbE9iamVjdCA9IGdldEludGVybmFsVm9sdW1l
T2JqZWN0KHNpbmspOworICAgICAgICBpZiAoIWludGVybmFsT2JqZWN0KSB7CisgICAgICAgICAg
ICBHU1RfV0FSTklOR19PQkpFQ1Qoc2luaywgIk5vIGFzc29jaWF0ZWQgbWl4ZXIgcGFkLCBjYW4n
dCBnZXQgJXMgcHJvcGVydHkiLCBnX3BhcmFtX3NwZWNfZ2V0X25hbWUocHNwZWMpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBnX29iamVjdF9nZXRfcHJvcGVydHko
R19PQkpFQ1QoaW50ZXJuYWxPYmplY3QpLCAibXV0ZSIsIHZhbHVlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgUFJPUF9FTkFCTEVfSU5URVJOQUxfTUlYSU5HOgorICAgICAgICBn
X3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBzaW5rLT5wcml2LT5lbmFibGVJbnRlcm5hbE1peGlu
Zyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5f
SU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcHNwZWMpOworICAgICAgICBicmVh
azsKKyAgICB9Cit9CisKK3N0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJLaXRBdWRpb1Np
bmtDaGFuZ2VTdGF0ZShHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSBzdGF0ZUNo
YW5nZSkKK3sKKyAgICBhdXRvKiBzaW5rID0gV0VCS0lUX0FVRElPX1NJTksoZWxlbWVudCk7Cisg
ICAgYXV0byogcHJpdiA9IHNpbmstPnByaXY7CisKKyNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAx
NCwgMCkKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNpbmssICJIYW5kbGluZyAlcyB0cmFuc2l0aW9u
IiwgZ3N0X3N0YXRlX2NoYW5nZV9nZXRfbmFtZShzdGF0ZUNoYW5nZSkpOworI2VuZGlmCisKKyAg
ICBhdXRvJiBtaXhlciA9IEdTdHJlYW1lckF1ZGlvTWl4ZXI6OnNpbmdsZXRvbigpOworICAgIGlm
IChwcml2LT5lbmFibGVJbnRlcm5hbE1peGluZyAmJiBzdGF0ZUNoYW5nZSA9PSBHU1RfU1RBVEVf
Q0hBTkdFX05VTExfVE9fUkVBRFkpIHsKKyAgICAgICAgaWYgKCFwcml2LT5pbnRlcmF1ZGlvU2lu
aykgeworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKGVsZW1lbnQsIGdzdF9t
aXNzaW5nX2VsZW1lbnRfbWVzc2FnZV9uZXcoZWxlbWVudCwgImludGVyYXVkaW9zaW5rIikpOwor
ICAgICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc2luaywgQ09SRSwgTUlTU0lOR19QTFVHSU4s
IChudWxscHRyKSwgKCJubyBpbnRlcmF1ZGlvc2luayIpKTsKKyAgICAgICAgICAgIHJldHVybiBH
U1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CisgICAgICAgIH0KKyAgICAgICAgcHJpdi0+bWl4ZXJQ
YWQgPSBtaXhlci5yZWdpc3RlclByb2R1Y2VyKHByaXYtPmludGVyYXVkaW9TaW5rLmdldCgpKTsK
KyAgICB9CisKKyAgICBpZiAocHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhpbmcpCisgICAgICAgIG1p
eGVyLmVuc3VyZVN0YXRlKHN0YXRlQ2hhbmdlKTsKKworICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJu
IHJlc3VsdCA9IEdTVF9DQUxMX1BBUkVOVF9XSVRIX0RFRkFVTFQoR1NUX0VMRU1FTlRfQ0xBU1Ms
IGNoYW5nZV9zdGF0ZSwgKGVsZW1lbnQsIHN0YXRlQ2hhbmdlKSwgR1NUX1NUQVRFX0NIQU5HRV9G
QUlMVVJFKTsKKworI2lmIFBMQVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElP
X0VYVEVOU0lPTikKKyAgICBpZiAoIXByaXYtPmVuYWJsZUludGVybmFsTWl4aW5nKSB7CisgICAg
ICAgIGJvb2wgaXNFT1MgPSBnc3RfYXBwX3NpbmtfaXNfZW9zKEdTVF9BUFBfU0lOSyhwcml2LT5h
cHBzaW5rLmdldCgpKSk7CisgICAgICAgIGlmICgoc3RhdGVDaGFuZ2UgPT0gR1NUX1NUQVRFX0NI
QU5HRV9QTEFZSU5HX1RPX1BBVVNFRCkgJiYgIWlzRU9TKSB7CisgICAgICAgICAgICB3cGVfYXVk
aW9fc291cmNlX3BhdXNlKHByaXYtPndwZUF1ZGlvU291cmNlLCBwcml2LT5tX3N0cmVhbUlkKTsK
KyAgICAgICAgICAgIHByaXYtPnNvdXJjZVN0YXRlID0gR1NUX1NUQVRFX1BBVVNFRDsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoc3RhdGVDaGFuZ2UgPT0gR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURf
VE9fUkVBRFkgJiYgaXNFT1MpCisgICAgICAgICAgICBwcml2LT5zb3VyY2VTdGF0ZSA9IEdTVF9T
VEFURV9OVUxMOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKHByaXYtPmVuYWJsZUludGVybmFs
TWl4aW5nICYmIChzdGF0ZUNoYW5nZSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05VTEwp
ICYmIChyZXN1bHQgPiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpKSB7CisgICAgICAgIG1peGVy
LnVucmVnaXN0ZXJQcm9kdWNlcihwcml2LT5taXhlclBhZCk7CisgICAgICAgIHByaXYtPm1peGVy
UGFkID0gbnVsbHB0cjsKKyAgICB9CisjaWYgUExBVEZPUk0oV1BFKSAmJiBVU0UoV1BFQkFDS0VO
RF9GRE9fQVVESU9fRVhURU5TSU9OKQorICAgIGlmICghcHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhp
bmcgJiYgKHByaXYtPnNvdXJjZVN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQpICYmIChzdGF0ZUNo
YW5nZSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19QTEFZSU5HKSAmJiAocmVzdWx0ID4g
R1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSkgeworICAgICAgICB3cGVfYXVkaW9fc291cmNlX3Jl
c3VtZShwcml2LT53cGVBdWRpb1NvdXJjZSwgcHJpdi0+bV9zdHJlYW1JZCk7CisgICAgICAgIHBy
aXYtPnNvdXJjZVN0YXRlID0gR1NUX1NUQVRFX1BMQVlJTkc7CisgICAgfQorI2VuZGlmCisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfYXVkaW9fc2lua19jbGFz
c19pbml0KFdlYktpdEF1ZGlvU2lua0NsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3Mq
IG9rbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBva2xhc3MtPmNvbnN0cnVjdGVk
ID0gd2ViS2l0QXVkaW9TaW5rQ29uc3RydWN0ZWQ7CisgICAgb2tsYXNzLT5kaXNwb3NlID0gd2Vi
S2l0QXVkaW9TaW5rRGlzcG9zZTsKKyAgICBva2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYktpdEF1
ZGlvU2lua1NldFByb3BlcnR5OworICAgIG9rbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2ViS2l0QXVk
aW9TaW5rR2V0UHJvcGVydHk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KG9rbGFzcywgUFJPUF9WT0xVTUUsCisgICAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUoInZvbHVt
ZSIsICJWb2x1bWUiLCAiVGhlIGF1ZGlvIHZvbHVtZSwgMS4wPTEwMCUiLCAwLCAxMCwgMSwKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihHX1BBUkFNX1JFQURXUklURSB8IEdf
UEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShva2xhc3MsIFBST1BfTVVURSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oIm11
dGUiLCAiTXV0ZSIsICJNdXRlIHRoZSBhdWRpbyBjaGFubmVsIHdpdGhvdXQgY2hhbmdpbmcgdGhl
IHZvbHVtZSIsIEZBTFNFLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KEdf
UEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9rbGFzcywgUFJPUF9FTkFCTEVfSU5URVJOQUxfTUlY
SU5HLAorICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWludGVybmFsLW1peGlu
ZyIsICJFbmFibGUgSW50ZXJuYWwgTWl4aW5nIiwgIlByb3h5IGF1ZGlvIGJ1ZmZlcnMgdG8gdGhl
IGF1ZGlvbWl4ZXIiLCBGQUxTRSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdz
PihHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MgfCBHX1BBUkFNX0NP
TlNUUlVDVF9PTkxZKSkpOworCisgICAgR3N0RWxlbWVudENsYXNzKiBla2xhc3MgPSBHU1RfRUxF
TUVOVF9DTEFTUyhrbGFzcyk7CisgICAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3N0YXRpY19wYWRf
dGVtcGxhdGUoZWtsYXNzLCAmc2lua1RlbXBsYXRlKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19z
ZXRfbWV0YWRhdGEoZWtsYXNzLCAiV2ViS2l0IEF1ZGlvIHNpbmsgZWxlbWVudCIsICJTaW5rL0F1
ZGlvIiwKKyAgICAgICAgIlByb3hpZXMgYXVkaW8gZGF0YSB0byBXZWJLaXQncyBhdWRpbyBtaXhl
ciIsICJQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPiIpOworCisgICAgZWtsYXNz
LT5jaGFuZ2Vfc3RhdGUgPSBHU1RfREVCVUdfRlVOQ1BUUih3ZWJLaXRBdWRpb1NpbmtDaGFuZ2VT
dGF0ZSk7Cit9CisKK0dzdEVsZW1lbnQqIHdlYmtpdEF1ZGlvU2lua05ldyhib29sIGVuYWJsZUlu
dGVybmFsTWl4aW5nKQoreworICAgIHJldHVybiBHU1RfRUxFTUVOVF9DQVNUKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9BVURJT19TSU5LLCAiZW5hYmxlLWludGVybmFsLW1peGluZyIsIGVuYWJs
ZUludGVybmFsTWl4aW5nLCBudWxscHRyKSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8p
ICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2ExMWJjYWU3ZTJkNjgzNjlmZTBkOTJmM2UwZjlmODVjZGQ2N2M3MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuaApAQCAtMCwwICsxLDUzIEBACisvKgorICog
IENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNB
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBX
RUJLSVRfVFlQRV9BVURJT19TSU5LICAgICAgICAgICAgKHdlYmtpdF9hdWRpb19zaW5rX2dldF90
eXBlKCkpCisjZGVmaW5lIFdFQktJVF9BVURJT19TSU5LKG9iaikgICAgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0FVRElPX1NJTkssIFdlYktp
dEF1ZGlvU2luaykpCisjZGVmaW5lIFdFQktJVF9BVURJT19TSU5LX0NMQVNTKGtsYXNzKSAgICAo
R19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgV0VCS0lUX1RZUEVfQVVESU9fU0lOSywg
V2ViS2l0QXVkaW9TaW5rQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfQVVESU9fU0lOSyhvYmop
ICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9B
VURJT19TSU5LKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FVRElPX1NJTktfQ0xBU1Moa2xhc3MpIChH
X1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCBXRUJLSVRfVFlQRV9BVURJT19TSU5LKSkK
KwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1ZGlvU2luayAgICAgICAgV2ViS2l0QXVkaW9TaW5r
OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1ZGlvU2lua0NsYXNzICAgV2ViS2l0QXVkaW9TaW5r
Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXVkaW9TaW5rUHJpdmF0ZSBXZWJLaXRBdWRp
b1NpbmtQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdEF1ZGlvU2luayB7CisgICAgR3N0QmluIHBh
cmVudDsKKworICAgIFdlYktpdEF1ZGlvU2lua1ByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3Qg
X1dlYktpdEF1ZGlvU2lua0NsYXNzIHsKKyAgICBHc3RCaW5DbGFzcyBwYXJlbnRDbGFzczsKK307
CisKK0dUeXBlIHdlYmtpdF9hdWRpb19zaW5rX2dldF90eXBlKHZvaWQpOworCitHX0VORF9ERUNM
UworCitHc3RFbGVtZW50KiB3ZWJraXRBdWRpb1NpbmtOZXcoYm9vbCBlbmFibGVJbnRlcm5hbE1p
eGluZyk7CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdWRpb1JlbmRlcmluZ1BvbGljeS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXVkaW9SZW5kZXJpbmdQb2xpY3kuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjEz
YWZhNDlmYTU2YjZiYjRjZjUyOTM2Zjk5YzE3MWNhMGE4MTU2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXVkaW9SZW5kZXJpbmdQb2xpY3kuaApAQCAtMCwwICsxLDQz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBBdWRpb1JlbmRlcmluZ1BvbGljeSA6
IHVpbnQ4X3QgeworICAgIEhvc3REZWZhdWx0LAorICAgIEludGVybmFsTWl4aW5nLAorICAgIEV4
dGVybmFsCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpBdWRpb1JlbmRlcmluZ1BvbGlj
eT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6QXVk
aW9SZW5kZXJpbmdQb2xpY3ksCisgICAgICAgIFdlYktpdDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6
Okhvc3REZWZhdWx0LAorICAgICAgICBXZWJLaXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpJbnRl
cm5hbE1peGluZywKKyAgICAgICAgV2ViS2l0OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6RXh0ZXJu
YWwKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGNhZjhlZmU4ODFm
NjMzMzcyNjA3MTAwZThkNTFiMjJkYjE2MDdjZTguLjQ0MGIxZTdhNmIyNGUzYzcxZjVmOGI3OTNk
MTJlY2NiNmU3YzExZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQVBJRGF0
YS5oIgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb24uaCIKICNpbmNsdWRlICJBUElTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJBdWRpb1JlbmRlcmluZ1BvbGljeS5oIgogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRl
ICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKQEAgLTIwMyw3ICsyMDQsOCBAQCBlbnVtIHsKICAgICBQ
Uk9QX0VESVRBQkxFLAogICAgIFBST1BfUEFHRV9JRCwKICAgICBQUk9QX0lTX01VVEVELAotICAg
IFBST1BfV0VCU0lURV9QT0xJQ0lFUworICAgIFBST1BfV0VCU0lURV9QT0xJQ0lFUywKKyAgICBQ
Uk9QX0FVRElPX1JFTkRFUklOR19QT0xJQ1kKIH07CiAKIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRf
dCwgR1JlZlB0cjxXZWJLaXRXZWJSZXNvdXJjZT4gPiBMb2FkaW5nUmVzb3VyY2VzTWFwOwpAQCAt
MzA2LDYgKzMwOCw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogCiAgICAgR1Jl
ZlB0cjxXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI+IHdlYnNpdGVEYXRhTWFuYWdlcjsKICAgICBH
UmVmUHRyPFdlYktpdFdlYnNpdGVQb2xpY2llcz4gd2Vic2l0ZVBvbGljaWVzOworCisgICAgV2Vi
S2l0QXVkaW9SZW5kZXJpbmdQb2xpY3kgYXVkaW9SZW5kZXJpbmdQb2xpY3k7CiB9OwogCiBzdGF0
aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CkBAIC04MDcsNiArODExLDEw
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3Qs
IGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlCiAgICAgICAgIGJyZWFrOwogICAgIH0KICNlbmRp
ZgorICAgIGNhc2UgUFJPUF9BVURJT19SRU5ERVJJTkdfUE9MSUNZOiB7CisgICAgICAgIHdlYlZp
ZXctPnByaXYtPmF1ZGlvUmVuZGVyaW5nUG9saWN5ID0gc3RhdGljX2Nhc3Q8V2ViS2l0QXVkaW9S
ZW5kZXJpbmdQb2xpY3k+KGdfdmFsdWVfZ2V0X2VudW0odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQogICAgIGNhc2UgUFJPUF9XRUJfQ09OVEVYVDogewogICAgICAgICBncG9pbnRlciB3
ZWJDb250ZXh0ID0gZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKTsKICAgICAgICAgd2ViVmlldy0+
cHJpdi0+Y29udGV4dCA9IHdlYkNvbnRleHQgPyBXRUJLSVRfV0VCX0NPTlRFWFQod2ViQ29udGV4
dCkgOiBudWxscHRyOwpAQCAtODYzLDYgKzg3MSw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZp
ZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1
CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0YXRpY19ib3hlZCh2YWx1ZSwgd2ViVmlldy0+cHJpdi0+
YmFja2VuZC5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCisgICAgY2FzZSBQUk9QX0FV
RElPX1JFTkRFUklOR19QT0xJQ1k6CisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFsdWUsIHdl
YlZpZXctPnByaXYtPmF1ZGlvUmVuZGVyaW5nUG9saWN5KTsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBQUk9QX1dFQl9DT05URVhUOgogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUs
IHdlYlZpZXctPnByaXYtPmNvbnRleHQuZ2V0KCkpOwogICAgICAgICBicmVhazsKQEAgLTEzMjAs
NiArMTMzMSwzMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJL
aXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dF
QlNJVEVfUE9MSUNJRVMsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VC
S0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CiAKKyAgICAv
KioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjphdWRpby1yZW5kZXJpbmctcG9saWN5OgorICAgICAq
CisgICAgICogV2hldGhlciB0aGUgI1dlYktpdFdlYlZpZXcgc2hvdWxkIG1hbmFnZSBhdWRpbyBy
ZW5kZXJpbmcgdGhyb3VnaCB0aGUgaG9zdAorICAgICAqIHBsYXRmb3JtIGF1ZGlvIGRhZW1vbiAo
dXN1YWxseSBQdWxzZUF1ZGlvKS4gVGhpcyBpcyB0aGUgZGVmYXVsdAorICAgICAqIGJlaGF2aW91
ciwgdGhlIHByb3BlcnR5IGlzIEBBVURJT19SRU5ERVJJTkdfUE9MSUNZX0hPU1RfREVGQVVMVCBi
eSBkZWZhdWx0LgorICAgICAqCisgICAgICogSW4gV1BFV2ViS2l0LCBhbiBhZGRpdGlvbmFsIHBy
b3BlcnR5IHZhbHVlIGlzIGF2YWlsYWJsZS4gVXNpbmcKKyAgICAgKiBAV0VCS0lUX0FVRElPX1JF
TkRFUklOR19QT0xJQ1lfRVhURVJOQUwgaW1wbGllcyB0aGUgYXBwbGljYXRpb24gd2lsbCByZWNl
aXZlIG5vdGlmaWNhdGlvbnMKKyAgICAgKiB0aHJvdWdoIHRoZSBXUEVCYWNrZW5kLUZETyBhdWRp
byBzb3VyY2UuIEluIHRoaXMgY2FzZSB0aGUgYXBwbGljYXRpb24gaXMgZXhwZWN0ZWQgdG8gbWFu
YWdlCisgICAgICogYXVkaW8gcmVuZGVyaW5nIGl0c2VsZi4KKyAgICAgKgorICAgICAqIFNpbmNl
OiAyLjMwCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAg
ICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX0FVRElPX1JFTkRFUklOR19QT0xJQ1ks
CisgICAgICAgIGdfcGFyYW1fc3BlY19lbnVtKAorICAgICAgICAgICAgImF1ZGlvLXJlbmRlcmlu
Zy1wb2xpY3kiLAorICAgICAgICAgICAgIkF1ZGlvIFJlbmRlcmluZyBQb2xpY3kiLAorICAgICAg
ICAgICAgXygiV2hldGhlciB0aGUgdmlldyBpcyBpbnRlcm5hbGx5IHJlbmRlcmluZyBhdWRpbyIp
LAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfQVVESU9fUkVOREVSSU5HX1BPTElDWSwKKyAgICAg
ICAgICAgIFdFQktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZX0hPU1RfREVGQVVMVCwKKyAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwg
R19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZp
ZXc6OmxvYWQtY2hhbmdlZDoKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBv
biB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKQEAgLTIyOTMsNiArMjMyOSwyMiBAQCB2b2lk
IHdlYmtpdFdlYlZpZXdXaWxsU3RhcnRMb2FkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAg
Ly8gY2xpZW50IGFwcGxpY2F0aW9uIHdpbGwgc3RpbGwgc2VlIHRoZSBVUkkgdXBkYXRlIGltbWVk
aWF0ZWx5LiBPdGhlcndpc2UsIHRoZSBVUkkgdXBkYXRlIHdpbGwgYmUgZGVsYXllZCBhIGJpdC4K
ICAgICB3ZWJWaWV3LT5wcml2LT5pc0FjdGl2ZVVSSUNoYW5nZUJsb2NrZWQgPSB0cnVlOwogCisg
ICAgV2ViS2l0OjpBdWRpb1JlbmRlcmluZ1BvbGljeSBwb2xpY3kgPSBXZWJLaXQ6OkF1ZGlvUmVu
ZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDsKKyAgICBzd2l0Y2ggKHdlYlZpZXctPnByaXYtPmF1
ZGlvUmVuZGVyaW5nUG9saWN5KSB7CisgICAgY2FzZSBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BP
TElDWV9IT1NUX0RFRkFVTFQ6CisgICAgICAgIHBvbGljeSA9IFdlYktpdDo6QXVkaW9SZW5kZXJp
bmdQb2xpY3k6Okhvc3REZWZhdWx0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9B
VURJT19SRU5ERVJJTkdfUE9MSUNZX0lOVEVSTkFMX01JWElORzoKKyAgICAgICAgcG9saWN5ID0g
V2ViS2l0OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SW50ZXJuYWxNaXhpbmc7CisgICAgICAgIGJy
ZWFrOworI2lmIFBMQVRGT1JNKFdQRSkKKyAgICBjYXNlIFdFQktJVF9BVURJT19SRU5ERVJJTkdf
UE9MSUNZX0VYVEVSTkFMOgorICAgICAgICBwb2xpY3kgPSBXZWJLaXQ6OkF1ZGlvUmVuZGVyaW5n
UG9saWN5OjpFeHRlcm5hbDsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICB9CisgICAgZ2V0
UGFnZSh3ZWJWaWV3KS5zZXRBdWRpb1JlbmRlcmluZ1BvbGljeShwb2xpY3kpOworCiAgICAgLy8g
VGhpcyBpcyBjYWxsZWQgYmVmb3JlIE5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxOYXZpZ2F0aW9uKCksIHRoZSBwYWdlIGxvYWQgc3RhdGUgaGFzbid0IGJlZW4gY29tbWl0dGVk
IHlldC4KICAgICBhdXRvJiBwYWdlTG9hZFN0YXRlID0gZ2V0UGFnZSh3ZWJWaWV3KS5wYWdlTG9h
ZFN0YXRlKCk7CiAgICAgaWYgKHBhZ2VMb2FkU3RhdGUuaXNGaW5pc2hlZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCBhYzUxNjgz
YjY3NWQ1YTk4YjY2NTUzMjNmOWE1MWM0OWU3NjIzYTFlLi40OTU3MmMzNTllNGI0M2JjOGQ3OGI1
YjE3ZDMxNjg3M2U1ZWExOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMjAzLDYgKzIwMywxOSBAQCB0eXBlZGVmIGVudW0gewog
ICAgIFdFQktJVF9XRUJfUFJPQ0VTU19FWENFRURFRF9NRU1PUllfTElNSVQKIH0gV2ViS2l0V2Vi
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOwogCisvKioKKyAqIFdlYktpdEF1ZGlvUmVuZGVyaW5n
UG9saWN5OgorICogQFdFQktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZX0hPU1RfREVGQVVMVDog
dXNlIGhvc3QgYXVkaW8gZGFlbW9uICh1c3VhbGx5IFB1bHNlQXVkaW8pLgorICogQFdFQktJVF9B
VURJT19SRU5ERVJJTkdfUE9MSUNZX0lOVEVSTkFMX01JWElORzogcGVyZm9ybSBpbnRlcm5hbCBt
aXhpbmcgYW5kIHJlbmRlciB0aGUgcmVzdWx0aW5nIHN0cmVhbSB0byBob3N0IGF1ZGlvIGRhZW1v
bi4KKyAqIEF1ZGlvIHJlbmRlcmluZyBwb2xpY3kuCisgKgorICogU2luY2U6IDIuMzAKKyAqLwor
dHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9IT1NUX0RF
RkFVTFQsCisgICAgV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfSU5URVJOQUxfTUlYSU5H
LAorfSBXZWJLaXRBdWRpb1JlbmRlcmluZ1BvbGljeTsKKwogc3RydWN0IF9XZWJLaXRXZWJWaWV3
IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSBwYXJlbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2Vj
dGlvbnMudHh0CmluZGV4IDYyYjBlMTA4NmIwOThmMzE1MmZjZDE3OTNhMTNhYTFkM2VlYjA0ODMu
LjlhMGY2YWFjZDdkNmM1YzVkMzM5ODE2ZTVmZDQzZjY0YTc0ZTYxNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9u
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTk5LDYgKzE5OSw3IEBAIFdlYktpdFNuYXBzaG90T3B0
aW9ucwogV2ViS2l0U25hcHNob3RSZWdpb24KIFdlYktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbgogV2ViS2l0QXV0b3BsYXlQb2xpY3kKK1dlYktpdEF1ZGlvUmVuZGVyaW5nUG9saWN5CiAK
IDxTVUJTRUNUSU9OIEVkaXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NV
VApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJW
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApp
bmRleCAyMzE0OWIwYmY3NGFkMGI2NjgzOTFmZjlkNmNmMWQ5OGZiYzE1OGE4Li4xOWI5NjYyYWZk
MDRkMzhjMWZjZjcyMDg3Y2IwZDdiYmVlNzUwOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApAQCAtMTg0LDYgKzE4NCwyMyBAQCB0eXBl
ZGVmIGVudW0gewogdHlwZWRlZiB2b2lkICgqIFdlYktpdEZyYW1lRGlzcGxheWVkQ2FsbGJhY2sp
IChXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgdXNlcl9kYXRhKTsKIAorCisvKioKKyAq
IFdlYktpdEF1ZGlvUmVuZGVyaW5nUG9saWN5OgorICogQFdFQktJVF9BVURJT19SRU5ERVJJTkdf
UE9MSUNZX0hPU1RfREVGQVVMVDogdXNlIGhvc3QgYXVkaW8gZGFlbW9uICh1c3VhbGx5IFB1bHNl
QXVkaW8pLgorICogQFdFQktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZX0lOVEVSTkFMX01JWElO
RzogcGVyZm9ybSBpbnRlcm5hbCBtaXhpbmcgYW5kIHJlbmRlciB0aGUgcmVzdWx0aW5nIHN0cmVh
bSB0byBob3N0IGF1ZGlvIGRhZW1vbi4KKyAqIEBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElD
WV9FWFRFUk5BTDogZGVmZXIgYXVkaW8gcmVuZGVyaW5nIHRvIGFwcGxpY2F0aW9uLgorICoKKyAq
IEF1ZGlvIHJlbmRlcmluZyBwb2xpY3kuCisgKgorICogU2luY2U6IDIuMzAKKyAqLwordHlwZWRl
ZiBlbnVtIHsKKyAgICBXRUJLSVRfQVVESU9fUkVOREVSSU5HX1BPTElDWV9IT1NUX0RFRkFVTFQs
CisgICAgV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfSU5URVJOQUxfTUlYSU5HLAorICAg
IFdFQktJVF9BVURJT19SRU5ERVJJTkdfUE9MSUNZX0VYVEVSTkFMLAorfSBXZWJLaXRBdWRpb1Jl
bmRlcmluZ1BvbGljeTsKKwogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBHT2JqZWN0IHBh
cmVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2Nz
L3dwZS0xLjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9k
b2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CmluZGV4IDdkMTIxNGIxY2IxNTc3MjhlZWE5NTljODBl
YzYwNDY5Yjg2NDg4YTQuLjdlNjhiNGNmYjk3YTFkMjlkOGQzMTNlMWRmYTFjZDFlODRhMThiOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4w
LXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mv
d3BlLTEuMC1zZWN0aW9ucy50eHQKQEAgLTE3Myw2ICsxNzMsNyBAQCBXZWJLaXRJbnNlY3VyZUNv
bnRlbnRFdmVudAogV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uCiBXZWJLaXRGcmFt
ZURpc3BsYXllZENhbGxiYWNrCiBXZWJLaXRBdXRvcGxheVBvbGljeQorV2ViS2l0QXVkaW9SZW5k
ZXJpbmdQb2xpY3kKIAogPFNVQlNFQ1RJT04gRWRpdGluZyBDb21tYW5kcz4KIFdFQktJVF9FRElU
SU5HX0NPTU1BTkRfQ1VUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBkN2Y4MmY3YmUyZmViM2Y1MWUwZmNmZmMyZTAyNmRhYmU4MTY0N2ZlLi42OTYwMzFmMDFl
ZjUzNzJlY2ZhMTQ1MTk0Y2RmYmU2NzVmZDk4ODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTIzNyw2ICsyMzcsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0NhaXJvVXRpbGl0aWVzLmg+CiAjZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVk
ZSAiQXVkaW9SZW5kZXJpbmdQb2xpY3kuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJNZWRpYVNl
c3Npb25NYW5hZ2VyLmg+CkBAIC00OTYsNiArNTAwLDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBS
ZWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX3RyYW5zY29kaW5nUXVldWUoV29ya1F1ZXVl
OjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuSW1hZ2VUcmFuc2NvZGluZyIpKQogI2VuZGlmCisj
aWYgVVNFKEdTVFJFQU1FUikKKyAgICAsIG1fYXVkaW9SZW5kZXJpbmdQb2xpY3koQXVkaW9SZW5k
ZXJpbmdQb2xpY3k6Okhvc3REZWZhdWx0KQorI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0b3I6Iik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggMzBiMjY5N2IwYmY3YWNlZmQ0ODRhYTI2Njg1YzdjYzU1M2M1
YmU3Zi4uNGUyM2Q0NGQwNmMxNDA3OGViZGY0OTU3MTkxYjU0NWVmNWMxMmFmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM2NCw2ICszNjQsMTAgQEAgZW51bSBj
bGFzcyBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IDogYm9vbDsKIGVudW0gY2xhc3MgVW5k
b09yUmVkbyA6IGJvb2w7CiBlbnVtIGNsYXNzIFdlYkNvbnRlbnRNb2RlIDogdWludDhfdDsKIAor
I2lmIFVTRShHU1RSRUFNRVIpCitlbnVtIGNsYXNzIEF1ZGlvUmVuZGVyaW5nUG9saWN5IDogdWlu
dDhfdDsKKyNlbmRpZgorCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkRhdGEqPiBEYXRh
Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazx1aW50NjRfdD4gVW5zaWduZWRDYWxs
YmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyY+IFN0cmluZ0NhbGxi
YWNrOwpAQCAtMTc4OSw2ICsxNzkzLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJlY29ubmVj
dFRvKGNvbnN0IFVSTCYpOwogCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBBdWRpb1JlbmRlcmlu
Z1BvbGljeSBhdWRpb1JlbmRlcmluZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9SZW5k
ZXJpbmdQb2xpY3k7IH0KKyAgICB2b2lkIHNldEF1ZGlvUmVuZGVyaW5nUG9saWN5KEF1ZGlvUmVu
ZGVyaW5nUG9saWN5KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdl
Q2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYp
OwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0yODQ2LDYgKzI4NTUsMTAgQEAg
cHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV90cmFuc2Nv
ZGluZ1F1ZXVlOwogI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIEF1ZGlvUmVuZGVy
aW5nUG9saWN5IG1fYXVkaW9SZW5kZXJpbmdQb2xpY3k7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0cmVh
bWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
c3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcAppbmRleCBlM2FlNTE0YjAzN2NlOGY4
ODA0OThhZmUxMmExZjllYzMxYmE2NmI4Li44YzJiYWQ1ZDE0YjBkNjczZGQ1MTllZjc5OTM1ODJl
M2ZhYzE1ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
c3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVB
TUVSKQorI2luY2x1ZGUgIkF1ZGlvUmVuZGVyaW5nUG9saWN5LmgiCiAjaW5jbHVkZSAiSW5zdGFs
bE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIlBhZ2VD
bGllbnQuaCIKIApAQCAtNDEsNiArNDIsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnMKICAg
ICByZXF1ZXN0LT5kZW55KCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRBdWRpb1JlbmRl
cmluZ1BvbGljeShBdWRpb1JlbmRlcmluZ1BvbGljeSBwb2xpY3kpCit7CisgICAgbV9hdWRpb1Jl
bmRlcmluZ1BvbGljeSA9IHBvbGljeTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldEF1ZGlvUmVuZGVyaW5nUG9saWN5KHBvbGljeSksIG1fd2ViUGFnZUlEKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVT
RShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGVmYzAwM2JkMDE1OTEwMDA4
MmRlM2NlZjFmNjA5ZmE1MjI1MWNhNWEuLjA2NWFjZjk4ZjhmNzQxZTVlZjFhZjQyZDg4NjBkOTQ1
Y2ZhYTdkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMDAsNiArMTAwLDEwIEBACiAj
aW5jbHVkZSAiUHJpbnRlckxpc3RHdGsuaCIKICNlbmRpZgogCisjaWYgVVNFKEdTVFJFQU1FUikK
KyNpbmNsdWRlICJBdWRpb1JlbmRlcmluZ1BvbGljeS5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUo
V0VCX0FVVEhOKQogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oPgogI2VuZGlmCkBAIC0xMzA2LDYgKzEzMTAsMjAgQEAgdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRl
dGFpbHMsIGMKICAgICBtX3BhZ2UucmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGRl
dGFpbHMsIGRlc2NyaXB0aW9uLCBjYWxsYmFjayk7CiB9CiAKK0Nocm9tZUNsaWVudDo6QXVkaW9S
ZW5kZXJpbmdQb2xpY3kgV2ViQ2hyb21lQ2xpZW50OjphdWRpb1JlbmRlcmluZ1BvbGljeSgpIGNv
bnN0Cit7CisgICAgc3dpdGNoIChtX3BhZ2UuYXVkaW9SZW5kZXJpbmdQb2xpY3koKSkgeworICAg
IGNhc2UgV2ViS2l0OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SG9zdERlZmF1bHQ6CisgICAgICAg
IHJldHVybiBDaHJvbWVDbGllbnQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDsK
KyAgICBjYXNlIFdlYktpdDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkludGVybmFsTWl4aW5nOgor
ICAgICAgICByZXR1cm4gQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SW50ZXJu
YWxNaXhpbmc7CisgICAgY2FzZSBXZWJLaXQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5OjpFeHRlcm5h
bDoKKyAgICAgICAgcmV0dXJuIENocm9tZUNsaWVudDo6QXVkaW9SZW5kZXJpbmdQb2xpY3k6OkV4
dGVybmFsOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICByZXR1cm4gQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ1BvbGljeTo6SG9zdERl
ZmF1bHQ7Cit9CiAjZW5kaWYKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpZEludmFsaWRhdGVE
b2N1bWVudE1hcmtlclJlY3RzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBlNzVmNDg4NTJiZmEw
NmIxYWQ0MGUzYmJhMWZhM2NjM2UzZjQxYThlLi4wN2QzZTU2OGEyZDUxODU4NDQ5NzdmMjYzN2E2
NTliZWMwM2Y0OTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNzksNiArMzc5LDcgQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKICAgICB2b2lkIHJl
cXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBTdHJpbmcmIC8qZGV0YWlscyov
LCBjb25zdCBTdHJpbmcmIC8qZGVzY3JpcHRpb24qLywgV2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXF1
ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKSBmaW5hbDsKKyAgICBDaHJvbWVDbGll
bnQ6OkF1ZGlvUmVuZGVyaW5nUG9saWN5IGF1ZGlvUmVuZGVyaW5nUG9saWN5KCkgY29uc3QgZmlu
YWw7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMo
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggZDI5YWEwMWQ1YTYwNjI4NDYwNTljM2RkMTk1ZmQzYWQ5ZDVlNTA3OS4uZWU1MjhhZDMy
M2E2YWEyYTY4N2FmYjA0Yzg5MjhjM2Y4YjQwYTRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMwOSw2ICszMDksNyBAQAogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAiQXVkaW9SZW5k
ZXJpbmdQb2xpY3kuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyUmVxdWVzdEluc3Rh
bGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmg+CiAjZW5kaWYKIApAQCAtMTQxNyw2ICsxNDE4LDcg
QEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAgICAgICAgIG1faW5zdGFsbE1lZGlhUGx1Z2luc0Nh
bGxiYWNrLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIG1faW5zdGFsbE1lZGlhUGx1Z2luc0NhbGxi
YWNrID0gbnVsbHB0cjsKICAgICB9CisgICAgbV9hdWRpb1JlbmRlcmluZ1BvbGljeSA9IEF1ZGlv
UmVuZGVyaW5nUG9saWN5OjpIb3N0RGVmYXVsdDsKICNlbmRpZgogCiAgICAgbV9zYW5kYm94RXh0
ZW5zaW9uVHJhY2tlci5pbnZhbGlkYXRlKCk7CkBAIC02NTQ5LDYgKzY1NTEsMTMgQEAgdm9pZCBX
ZWJQYWdlOjphZGRVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCYgd29ybGQsIFcKICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNj
cmlwdCh3b3JsZCwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKKyNpZiBFTkFCTEUoVklERU8p
ICYmIFVTRShHU1RSRUFNRVIpCitBdWRpb1JlbmRlcmluZ1BvbGljeSBXZWJQYWdlOjphdWRpb1Jl
bmRlcmluZ1BvbGljeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXVkaW9SZW5kZXJpbmdQb2xp
Y3k7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlOjphZGRVc2VyU3R5bGVTaGVldChjb25zdCBT
dHJpbmcmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3Rl
ZEZyYW1lcykKIHsKICAgICBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCB7
c291cmNlLCBhYm91dEJsYW5rVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+
KCksIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVVc2VyTGV2ZWwgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhMTU0NzZjMjQ2OWU0ODdjZGIxOTlh
MDg4YThkNWJhMDYxNDg1OGViLi4yZTdkZTFiNTVhZGRlMTJhOGNmZGY4OTM4MDk4ZWE2YTExMjdh
NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0y
ODEsNiArMjgxLDEwIEBAIGVudW0gY2xhc3MgRmluZE9wdGlvbnMgOiB1aW50MTZfdDsKIGVudW0g
Y2xhc3MgRHJhZ0NvbnRyb2xsZXJBY3Rpb24gOiB1aW50OF90OwogZW51bSBjbGFzcyBTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGUgOiB1aW50OF90OwogCisjaWYgVVNFKEdTVFJFQU1FUikKK2Vu
dW0gY2xhc3MgQXVkaW9SZW5kZXJpbmdQb2xpY3kgOiB1aW50OF90OworI2VuZGlmCisKIHN0cnVj
dCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU7CiBzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdDsK
IHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0OwpAQCAtMTE1Miw2ICsxMTU2LDcgQEAgcHVi
bGljOgogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogICAgIHZvaWQgcmVx
dWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFs
bE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKTsKKyAgICBBdWRpb1JlbmRlcmluZ1BvbGljeSBhdWRp
b1JlbmRlcmluZ1BvbGljeSgpIGNvbnN0OwogI2VuZGlmCiAKICAgICB2b2lkIGFkZFVzZXJTY3Jp
cHQoU3RyaW5nJiYgc291cmNlLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcywgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRp
bWUpOwpAQCAtMTcwMSw2ICsxNzA2LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikKICAgICB2b2lkIGRpZEVuZFJlcXVlc3RJbnN0YWxsTWlzc2luZ01l
ZGlhUGx1Z2lucyh1aW50MzJfdCByZXN1bHQpOworICAgIHZvaWQgc2V0QXVkaW9SZW5kZXJpbmdQ
b2xpY3koQXVkaW9SZW5kZXJpbmdQb2xpY3kgcG9saWN5KSB7IG1fYXVkaW9SZW5kZXJpbmdQb2xp
Y3kgPSBwb2xpY3k7IH0KICNlbmRpZgogCiAgICAgdm9pZCBzZXRVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uKHVpbnQzMl90KTsKQEAgLTIwNzgsNiArMjA4NCw3IEBAIHByaXZhdGU6CiAKICNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrPiBtX2luc3RhbGxN
ZWRpYVBsdWdpbnNDYWxsYmFjazsKKyAgICBBdWRpb1JlbmRlcmluZ1BvbGljeSBtX2F1ZGlvUmVu
ZGVyaW5nUG9saWN5OwogI2VuZGlmCiAKICNpZiBVU0UoT1NfU1RBVEUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA3
MmYwMzg2MTY0ODM4NmZiYzg0MTUwODVjMTUzY2ZlZTc1MjY3NmM2Li5mZGMzNThjYzViMzhhZTc0
NDVkOTNmODhjYjViYmJlNmYzZjljNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTUzNyw2ICs1MzcsNyBAQCBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVB
TUVSKQogICAgIERpZEVuZFJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyh1aW50MzJf
dCByZXN1bHQpCisgICAgU2V0QXVkaW9SZW5kZXJpbmdQb2xpY3koZW51bTp1aW50OF90IFdlYktp
dDo6QXVkaW9SZW5kZXJpbmdQb2xpY3kgcG9saWN5KQogI2VuZGlmCiAKICAgICBTZXRVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9jbWFrZS9GaW5kV1BFQmFja2VuZF9mZG8uY21ha2UgYi9Tb3VyY2UvY21ha2UvRmluZFdQ
RUJhY2tlbmRfZmRvLmNtYWtlCmluZGV4IGQ3MDFkZjU2MjJlN2Y2YmUyMGY0NzNiNzI5MjJmYjQz
NTY1ODMxZjEuLjQ4NzUyZDAxNjg0MGMxYzUxOTVlOWI2Y2Q2NWE4OTFjZjFiZjRhZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9jbWFrZS9GaW5kV1BFQmFja2VuZF9mZG8uY21ha2UKKysrIGIvU291cmNl
L2NtYWtlL0ZpbmRXUEVCYWNrZW5kX2Zkby5jbWFrZQpAQCAtNDMsNiArNDMsMTEgQEAgZmluZF9s
aWJyYXJ5KFdQRUJBQ0tFTkRfRkRPX0xJQlJBUklFUwogCiBtYXJrX2FzX2FkdmFuY2VkKFdQRUJB
Q0tFTkRfRkRPX0lOQ0xVREVfRElSUyBXUEVCQUNLRU5EX0ZET19MSUJSQVJJRVMpCiAKK2ZpbmRf
cGF0aChXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04KKyAgICBOQU1FUyB3cGUvZXh0ZW5z
aW9ucy9hdWRpby5oCisgICAgSElOVFMgJHtQQ19XUEVCQUNLRU5EX0ZET19JTkNMVURFRElSfSAk
e1BDX1dQRUJBQ0tFTkRfRkRPX0lOQ0xVREVfRElSU30KKykKKwogaW5jbHVkZShGaW5kUGFja2Fn
ZUhhbmRsZVN0YW5kYXJkQXJncykKIGZpbmRfcGFja2FnZV9oYW5kbGVfc3RhbmRhcmRfYXJncyhX
UEVCYWNrZW5kX2ZkbwogICAgIFJFUVVJUkVEX1ZBUlMgV1BFQkFDS0VORF9GRE9fSU5DTFVERV9E
SVJTIFdQRUJBQ0tFTkRfRkRPX0xJQlJBUklFUwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0dT
dHJlYW1lckNoZWNrcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2UK
aW5kZXggY2JmMWZlMjBlZjRhYTY0ZjA2NWY5NDBlYzliNTFjY2ZjZjY0Y2M4MS4uYzg1MDg3OTAx
OTZkMTcyZWRlYjQ0YzZlYmViNmE0ZmZkZWNjMjA5NiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
L0dTdHJlYW1lckNoZWNrcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tz
LmNtYWtlCkBAIC0zNCw2ICszNCwxNiBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJf
QVVESU8pCiAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkdTdHJlYW1lckdMIGlzIG5lZWRl
ZCBmb3IgVVNFX0dTVFJFQU1FUl9HTC4iKQogICAgIGVuZGlmICgpCiAKKyAgICBpZiAoUE9SVCBT
VFJFUVVBTCAiV1BFIikKKyAgICAgICAgZmluZF9wYWNrYWdlKFdQRUJhY2tlbmRfZmRvIDEuNy4w
KQorICAgICAgICBpZiAoKE5PVCBXUEVCQUNLRU5EX0ZET19GT1VORCkgT1IgV1BFQkFDS0VORF9G
RE9fQVVESU9fRVhURU5TSU9OIFNUUkVRVUFMICJXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJ
T04tTk9URk9VTkQiKQorICAgICAgICAgICAgbWVzc2FnZShXQVJOSU5HICJXUEVCYWNrZW5kLWZk
byBhdWRpbyBleHRlbnNpb24gbm90IGZvdW5kLiBEaXNhYmxpbmcgZXh0ZXJuYWwgYXVkaW8gcmVu
ZGVyaW5nIHN1cHBvcnQiKQorICAgICAgICAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNF
X1dQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTiBGQUxTRSkKKyAgICAgICAgZWxzZSAoKQor
ICAgICAgICAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1dQRUJBQ0tFTkRfRkRPX0FV
RElPX0VYVEVOU0lPTiBUUlVFKQorICAgICAgICBlbmRpZiAoKQorICAgIGVuZGlmICgpCisKICAg
ICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfR1NUUkVBTUVSIFRSVUUpCiBlbmRpZiAoKQog
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmRl
YjFkNWE0YWQ5YTBlNjZiNTQzNTJjOTc5Y2E4NjBlZTZhZDNhOS4uNGIyMDczZTA2Nzk2Y2I1YWU5
ZmQ4NGM2YTJiNjQxNjRmZWNiNGM0MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIwLTA3LTIyICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBJbnRl
cm5hbCBhdWRpbyByZW5kZXJpbmcgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgV1BFIEFQSSB0ZXN0IGZvciB0aGUgZXh0ZXJuYWwt
YXVkaW8tcmVuZGVyaW5nIHBvbGljeSBzdXBwb3J0IGFuZCBhZGQgYSBjb21tYW5kLWxpbmUKKyAg
ICAgICAgYXJndW1lbnQgdG8gYWxsb3cgY29uZmlndXJpbmcgdGhlIGF1ZGlvIHJlbmRlcmluZyBw
b2xpY3kgaW4gdGhlIEdUSyBNaW5pQnJvd3Nlci4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0
ay9tYWluLmM6CisgICAgICAgIChjcmVhdGVCcm93c2VyVGFiKTogQ29tbWFuZC1saW5lIG9wdGlv
biBhbGxvd2luZyB0byBzd2l0Y2ggYmV0d2VlbiB0aGUgaG9zdC1kZWZhdWx0IGFuZAorICAgICAg
ICBpbnRlcm5hbC1taXhpbmcgcG9saWNpZXMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2VyLnB5OiBXaGl0ZS1saXN0IHRoZSBuZXcgYXVkaW8gc2luayBmcm9tIHRoZSBz
dHlsZSBjaGVja2VyLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2ZpbGUt
d2l0aC12aWRlby5odG1sOiBOZXcgdXRpbGl0eSBmdW5jdGlvbnMgdG8gcGF1c2UgYW5kIHNlZWsg
aW4gdGhlIHZpZGVvLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0
OjpzZXR1cCk6IFdQRSB0ZXN0IGZvciBleHRlcm5hbCBhdWRpbyByZW5kZXJpbmcgc3VwcG9ydC4g
QSB2aWRlbworICAgICAgICBmaWxlIGlzIGxvYWRlZCB0aHJvdWdoIHRoZSB3ZWJ2aWV3IGFuZCB0
aGUgdGVzdCByZWNlaXZlcyBub3RpZmljYXRpb25zIGR1cmluZyBwbGF5YmFjay4gSW4KKyAgICAg
ICAgb3JkZXIgdG8gcmVkdWNlIHRpbWVvdXQgcmlza3MsIGEgc2VlayBuZWFyIHRoZSBlbmQgb2Yg
dGhlIHZpZGVvIGlzIHBlcmZvcm1lZCBlYXJseSBvbi4KKyAgICAgICAgKEF1ZGlvUmVuZGVyaW5n
V2ViVmlld1Rlc3Q6OnRlYXJkb3duKToKKyAgICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rl
c3Q6OkF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3QpOgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdX
ZWJWaWV3VGVzdDo6aGFuZGxlU3RhcnQpOgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3
VGVzdDo6aGFuZGxlU3RvcCk6CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0Ojpo
YW5kbGVQYXVzZSk6CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0OjpoYW5kbGVS
ZXN1bWUpOgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6aGFuZGxlUGFja2V0
KToKKyAgICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6OndhaXRVbnRpbFBhdXNlZCk6
CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0Ojp3YWl0VW50aWxFT1MpOgorICAg
ICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6c3RhdGUgY29uc3QpOgorICAgICAgICAo
YmVmb3JlQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJW
aWV3VGVzdC5jcHA6CisgICAgICAgIChXZWJWaWV3VGVzdDo6aW5pdGlhbGl6ZVdlYlZpZXcpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0Lmg6Cisg
ICAgICAgICogYnVpbGRzdHJlYW0vZWxlbWVudHMvc2RrL3dwZWJhY2tlbmQtZmRvLmJzdDogQnVt
cCB0byBjdXJyZW50IGdpdCBtYXN0ZXIsIDEuNy54LCB3aGljaCBoYXMKKyAgICAgICAgdGhlIG5l
dyBhdWRpbyBleHRlbnNpb24sIHRvIGJlIHNoaXBwZWQgaW4gMS44LjAuCisKIDIwMjAtMDctMjIg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdW1dQRV0gSVRQOiB1c2UgdGhlIGRhdGFiYXNlIHN0b3JlIHVuY29uZGl0aW9uYWxseQpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9tYWluLmMKaW5kZXggNjFjYjcyOWU5ZThlMjRkODVjMGQ2NzhjNjRhM2RiYWUxYzA4NWY2
My4uODkyYzdhZWY0YTNlNDY0YThjMDdiYTU5MDk3MjMxNjVlN2ZjZjA0NyAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
bWFpbi5jCkBAIC01Niw2ICs1Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpwcm94eTsKIHN0YXRp
YyBnYm9vbGVhbiBkYXJrTW9kZTsKIHN0YXRpYyBnYm9vbGVhbiBlbmFibGVJVFA7CiBzdGF0aWMg
Z2Jvb2xlYW4gcHJpbnRWZXJzaW9uOworc3RhdGljIGdib29sZWFuIGludGVybmFsQXVkaW9NaXhp
bmc7CiAKIHR5cGVkZWYgZW51bSB7CiAgICAgTUlOSV9CUk9XU0VSX0VSUk9SX0lOVkFMSURfQUJP
VVRfUEFUSApAQCAtODAsMTIgKzgxLDE0IEBAIHN0YXRpYyBnY2hhciAqYXJndW1lbnRUb1VSTChj
b25zdCBjaGFyICpmaWxlbmFtZSkKIAogc3RhdGljIFdlYktpdFdlYlZpZXcgKmNyZWF0ZUJyb3dz
ZXJUYWIoQnJvd3NlcldpbmRvdyAqd2luZG93LCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0dGlu
Z3MsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRX
ZWJzaXRlUG9saWNpZXMgKmRlZmF1bHRXZWJzaXRlUG9saWNpZXMpCiB7CisgICAgV2ViS2l0QXVk
aW9SZW5kZXJpbmdQb2xpY3kgYXVkaW9SZW5kZXJpbmdQb2xpY3kgPSBpbnRlcm5hbEF1ZGlvTWl4
aW5nID8gV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfSU5URVJOQUxfTUlYSU5HIDogV0VC
S0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfSE9TVF9ERUZBVUxUOwogICAgIFdlYktpdFdlYlZp
ZXcgKndlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dF
Ql9WSUVXLAogICAgICAgICAid2ViLWNvbnRleHQiLCBicm93c2VyX3dpbmRvd19nZXRfd2ViX2Nv
bnRleHQod2luZG93KSwKICAgICAgICAgInNldHRpbmdzIiwgd2Via2l0U2V0dGluZ3MsCiAgICAg
ICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHVzZXJDb250ZW50TWFuYWdlciwKICAgICAgICAg
ImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIGF1dG9tYXRpb25Nb2RlLAogICAgICAgICAi
d2Vic2l0ZS1wb2xpY2llcyIsIGRlZmF1bHRXZWJzaXRlUG9saWNpZXMsCisgICAgICAgICJhdWRp
by1yZW5kZXJpbmctcG9saWN5IiwgYXVkaW9SZW5kZXJpbmdQb2xpY3ksCiAgICAgICAgIE5VTEwp
KTsKIAogICAgIGlmIChlZGl0b3JNb2RlKQpAQCAtMTQ2LDYgKzE0OSw3IEBAIHN0YXRpYyBjb25z
dCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25zW10gPQogICAgIHsgImlnbm9yZS10bHMt
ZXJyb3JzIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZpZ25vcmVUTFNFcnJvcnMsICJJZ25v
cmUgVExTIGVycm9ycyIsIE5VTEwgfSwKICAgICB7ICJjb250ZW50LWZpbHRlciIsIDAsIDAsIEdf
T1BUSU9OX0FSR19GSUxFTkFNRSwgJmNvbnRlbnRGaWx0ZXIsICJKU09OIHdpdGggY29udGVudCBm
aWx0ZXJpbmcgcnVsZXMiLCAiRklMRSIgfSwKICAgICB7ICJlbmFibGUtaXRwIiwgMCwgMCwgR19P
UFRJT05fQVJHX05PTkUsICZlbmFibGVJVFAsICJFbmFibGUgSW50ZWxsaWdlbnQgVHJhY2tpbmcg
UHJldmVudGlvbiAoSVRQKSIsIE5VTEwgfSwKKyAgICB7ICJpbnRlcm5hbC1hdWRpby1taXhpbmci
LCAnaScsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmaW50ZXJuYWxBdWRpb01peGluZywgIlBlcmZv
cm0gaW50ZXJuYWwgYXVkaW8gbWl4aW5nIG9mIG11bHRpbWVkaWEgY29udGVudCIsIE5VTEx9LAog
ICAgIHsgInZlcnNpb24iLCAndicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmcHJpbnRWZXJzaW9u
LCAiUHJpbnQgdGhlIFdlYktpdEdUSyB2ZXJzaW9uIiwgTlVMTCB9LAogICAgIHsgR19PUFRJT05f
UkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVu
dHMsIDAsICJbVVJM4oCmXSIgfSwKICAgICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAgfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IDU4YjExNmJjN2FhNGNmMzk3MWJm
ZDk4MjRkN2UzNDhmYmVjMjc0YzIuLjRlYmYwYmQ4ZTZlNDgzNjBkZmVkNTJmZjMzYWEwNmY1MTk1
ZWQ1MGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTIyMSw2
ICsyMjEsOCBAQCBfUEFUSF9SVUxFU19TUEVDSUZJRVIgPSBbCiAgICAgICBvcy5wYXRoLmpvaW4o
J1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3JtJywgJ2dyYXBoaWNzJywgJ2dzdHJlYW1lcics
ICdHTFZpZGVvU2lua0dTdHJlYW1lci5oJyksCiAgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScs
ICdXZWJDb3JlJywgJ3BsYXRmb3JtJywgJ2dyYXBoaWNzJywgJ2dzdHJlYW1lcicsICdWaWRlb1Np
bmtHU3RyZWFtZXIuY3BwJyksCiAgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3Jl
JywgJ3BsYXRmb3JtJywgJ2dyYXBoaWNzJywgJ2dzdHJlYW1lcicsICdXZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwJyksCisgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywg
J3BsYXRmb3JtJywgJ2dyYXBoaWNzJywgJ2dzdHJlYW1lcicsICdXZWJLaXRBdWRpb1NpbmtHU3Ry
ZWFtZXIuY3BwJyksCisgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3Bs
YXRmb3JtJywgJ2dyYXBoaWNzJywgJ2dzdHJlYW1lcicsICdXZWJLaXRBdWRpb1NpbmtHU3RyZWFt
ZXIuaCcpLAogICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9y
bScsICdhdWRpbycsICdnc3RyZWFtZXInLCAnV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIu
Y3BwJyksCiAgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3Jt
JywgJ21lZGlhc3RyZWFtJywgJ2dzdHJlYW1lcicsICdHU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJj
ZS5oJyksCiAgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3Jt
JywgJ21lZGlhc3RyZWFtJywgJ2dzdHJlYW1lcicsICdHU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJj
ZS5jcHAnKSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2Zp
bGUtd2l0aC12aWRlby5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZmls
ZS13aXRoLXZpZGVvLmh0bWwKaW5kZXggYWEyMjU5YTBmY2UwYjBmZGNkZTA4MWFlZDNiZDc2MDc4
YzMzMGJjZS4uMGI4N2RiZWZhMGQ3NTM0MTFkYzQ3ZTdjZGY5Yzg2ZDQ5ZTY3YzRmNyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZmlsZS13aXRoLXZpZGVvLmh0
bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZmlsZS13aXRoLXZpZGVv
Lmh0bWwKQEAgLTUsNiArNSwxNSBAQAogICAgIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3QtdmlkZW8iKS5wbGF5KCk7CiAgICAgfQorICAgIGZ1bmN0aW9uIHBhdXNlVmlk
ZW8oKQorICAgIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QtdmlkZW8i
KS5wYXVzZSgpOworICAgIH0KKyAgICBmdW5jdGlvbiBzZWVrTmVhclRoZUVuZCgpCisgICAgewor
ICAgICAgICBsZXQgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdC12aWRlbyIp
OworICAgICAgICB2aWRlby5jdXJyZW50VGltZSA9IHZpZGVvLmR1cmF0aW9uIC0gMC41OworICAg
IH0KICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4
IGFjNzA4NDg5YzlmM2YyMTQ4NDRjZWNmODJlZjgzMGViZWM2ZjA4Y2MuLjhmZWU0MTg5MGQ3YmUz
OWRhM2FkOGNmMmUyMGJkODBlYmE2OGEwYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMjQs
NiArMjQsMTAgQEAKICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9nbGli
L0dSZWZQdHIuaD4KIAorI2lmIFBMQVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FV
RElPX0VYVEVOU0lPTikKKyNpbmNsdWRlIDx3cGUvZXh0ZW5zaW9ucy9hdWRpby5oPgorI2VuZGlm
CisKIGNsYXNzIElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3Qg
ewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoSXNQbGF5aW5nQXVkaW9XZWJW
aWV3VGVzdCk7CkBAIC0xMzQyLDYgKzEzNDYsMTI5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
RnJhbWVEaXNwbGF5ZWQoRnJhbWVEaXNwbGF5ZWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
fQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJ
T19FWFRFTlNJT04pCitlbnVtIGNsYXNzIFJlbmRlcmluZ1N0YXRlIHsKKyAgICBVbmtub3duLAor
ICAgIFN0YXJ0ZWQsCisgICAgUGF1c2VkLAorICAgIFN0b3BwZWQKK307CisKK2NsYXNzIEF1ZGlv
UmVuZGVyaW5nV2ViVmlld1Rlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3QgeworcHVibGljOgorICAg
IE1BS0VfR0xJQl9URVNUX0ZJWFRVUkVfV0lUSF9TRVRVUF9URUFSRE9XTihBdWRpb1JlbmRlcmlu
Z1dlYlZpZXdUZXN0LCBzZXR1cCwgdGVhcmRvd24pOworCisgICAgc3RhdGljIHZvaWQgc2V0dXAo
KQorICAgIHsKKyAgICAgICAgV2ViVmlld1Rlc3Q6OmF1ZGlvUmVuZGVyaW5nUG9saWN5ID0gV0VC
S0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfRVhURVJOQUw7CisgICAgfQorCisgICAgc3RhdGlj
IHZvaWQgdGVhcmRvd24oKQorICAgIHsKKyAgICAgICAgV2ViVmlld1Rlc3Q6OmF1ZGlvUmVuZGVy
aW5nUG9saWN5ID0gV0VCS0lUX0FVRElPX1JFTkRFUklOR19QT0xJQ1lfSE9TVF9ERUZBVUxUOwor
ICAgIH0KKworICAgIEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3QoKQorICAgIHsKKyAgICAgICAg
d3BlX2F1ZGlvX3JlZ2lzdGVyX3JlY2VpdmVyKCZtX2F1ZGlvUmVjZWl2ZXIsIHRoaXMpOworICAg
IH0KKworICAgIHZvaWQgaGFuZGxlU3RhcnQodWludDMyX3QgaWQsIGludDMyX3QgY2hhbm5lbHMs
IGNvbnN0IGNoYXIqIGxheW91dCwgaW50MzJfdCBzYW1wbGVSYXRlKQorICAgIHsKKyAgICAgICAg
Z19hc3NlcnQobV9zdGF0ZSA9PSBSZW5kZXJpbmdTdGF0ZTo6VW5rbm93bik7CisgICAgICAgIGdf
YXNzZXJ0X2ZhbHNlKG1fc3RyZWFtSWQuaGFzVmFsdWUoKSk7CisgICAgICAgIGdfYXNzZXJ0X2Nt
cHVpbnQoaWQsID09LCAwKTsKKyAgICAgICAgbV9zdHJlYW1JZCA9IGlkOworICAgICAgICBtX3N0
YXRlID0gUmVuZGVyaW5nU3RhdGU6OlN0YXJ0ZWQ7CisgICAgICAgIGdfYXNzZXJ0X2NtcGludChj
aGFubmVscywgPT0sIDIpOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIobGF5b3V0LCA9PSwgIlMx
NkxFIik7CisgICAgICAgIGdfYXNzZXJ0X2NtcGludChzYW1wbGVSYXRlLCA9PSwgNDQxMDApOwor
ICAgIH0KKworICAgIHZvaWQgaGFuZGxlU3RvcCh1aW50MzJfdCBpZCkKKyAgICB7CisgICAgICAg
IGdfYXNzZXJ0X2NtcHVpbnQoKm1fc3RyZWFtSWQsID09LCBpZCk7CisgICAgICAgIGdfYXNzZXJ0
KG1fc3RhdGUgIT0gUmVuZGVyaW5nU3RhdGU6OlVua25vd24pOworICAgICAgICBtX3N0YXRlID0g
UmVuZGVyaW5nU3RhdGU6OlN0b3BwZWQ7CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWlu
TG9vcCk7CisgICAgICAgIG1fc3RyZWFtSWQucmVzZXQoKTsKKyAgICB9CisKKyAgICB2b2lkIGhh
bmRsZVBhdXNlKHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludCgq
bV9zdHJlYW1JZCwgPT0sIGlkKTsKKyAgICAgICAgZ19hc3NlcnQobV9zdGF0ZSAhPSBSZW5kZXJp
bmdTdGF0ZTo6VW5rbm93bik7CisgICAgICAgIG1fc3RhdGUgPSBSZW5kZXJpbmdTdGF0ZTo6UGF1
c2VkOworICAgIH0KKworICAgIHZvaWQgaGFuZGxlUmVzdW1lKHVpbnQzMl90IGlkKQorICAgIHsK
KyAgICAgICAgZ19hc3NlcnRfY21wdWludCgqbV9zdHJlYW1JZCwgPT0sIGlkKTsKKyAgICAgICAg
Z19hc3NlcnQobV9zdGF0ZSA9PSBSZW5kZXJpbmdTdGF0ZTo6UGF1c2VkKTsKKyAgICAgICAgbV9z
dGF0ZSA9IFJlbmRlcmluZ1N0YXRlOjpTdGFydGVkOworICAgIH0KKworICAgIHZvaWQgaGFuZGxl
UGFja2V0KHN0cnVjdCB3cGVfYXVkaW9fcGFja2V0X2V4cG9ydCogcGFja2V0X2V4cG9ydCwgdWlu
dDMyX3QgaWQsIGludDMyX3QgZmQsIHVpbnQzMl90IHNpemUpCisgICAgeworICAgICAgICBnX2Fz
c2VydF9jbXB1aW50KCptX3N0cmVhbUlkLCA9PSwgaWQpOworICAgICAgICBnX2Fzc2VydChtX3N0
YXRlID09IFJlbmRlcmluZ1N0YXRlOjpTdGFydGVkIHx8IG1fc3RhdGUgPT0gUmVuZGVyaW5nU3Rh
dGU6OlBhdXNlZCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoc2l6ZSwgPiwgMCk7CisgICAg
ICAgIHdwZV9hdWRpb19wYWNrZXRfZXhwb3J0X3JlbGVhc2UocGFja2V0X2V4cG9ydCk7CisgICAg
fQorCisgICAgdm9pZCB3YWl0VW50aWxQYXVzZWQoKQorICAgIHsKKyAgICAgICAgZ190aW1lb3V0
X2FkZCgyMDAsIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CisgICAgICAgICAg
ICBhdXRvKiB0ZXN0ID0gc3RhdGljX2Nhc3Q8QXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdCo+KHVz
ZXJEYXRhKTsKKyAgICAgICAgICAgIGlmICh0ZXN0LT5zdGF0ZSgpID09IFJlbmRlcmluZ1N0YXRl
OjpQYXVzZWQpIHsKKyAgICAgICAgICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIEdfU09VUkNFX0NPTlRJTlVFOworICAgICAgICB9LCB0aGlzKTsKKyAgICAg
ICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHZvaWQgd2FpdFVu
dGlsRU9TKCkKKyAgICB7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAg
ICB9CisKKyAgICBSZW5kZXJpbmdTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7
IH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHdwZV9hdWRpb19yZWNlaXZl
ciBtX2F1ZGlvUmVjZWl2ZXI7CisgICAgUmVuZGVyaW5nU3RhdGUgbV9zdGF0ZSB7IFJlbmRlcmlu
Z1N0YXRlOjpVbmtub3duIH07CisgICAgT3B0aW9uYWw8dWludDMyX3Q+IG1fc3RyZWFtSWQ7Cit9
OworCitjb25zdCBzdHJ1Y3Qgd3BlX2F1ZGlvX3JlY2VpdmVyIEF1ZGlvUmVuZGVyaW5nV2ViVmll
d1Rlc3Q6Om1fYXVkaW9SZWNlaXZlciA9IHsKKyAgICBbXSh2b2lkKiBkYXRhLCB1aW50MzJfdCBp
ZCwgaW50MzJfdCBjaGFubmVscywgY29uc3QgY2hhciogbGF5b3V0LCBpbnQzMl90IHNhbXBsZVJh
dGUpIHsgc3RhdGljX2Nhc3Q8QXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdCo+KGRhdGEpLT5oYW5k
bGVTdGFydChpZCwgY2hhbm5lbHMsIGxheW91dCwgc2FtcGxlUmF0ZSk7IH0sCisgICAgW10odm9p
ZCogZGF0YSwgc3RydWN0IHdwZV9hdWRpb19wYWNrZXRfZXhwb3J0KiBwYWNrZXRfZXhwb3J0LCB1
aW50MzJfdCBpZCwgaW50MzJfdCBmZCwgdWludDMyX3Qgc2l6ZSkgeyBzdGF0aWNfY2FzdDxBdWRp
b1JlbmRlcmluZ1dlYlZpZXdUZXN0Kj4oZGF0YSktPmhhbmRsZVBhY2tldChwYWNrZXRfZXhwb3J0
LCBpZCwgZmQsIHNpemUpOyB9LAorICAgIFtdKHZvaWQqIGRhdGEsIHVpbnQzMl90IGlkKSB7IHN0
YXRpY19jYXN0PEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3QqPihkYXRhKS0+aGFuZGxlU3RvcChp
ZCk7IH0sCisgICAgW10odm9pZCogZGF0YSwgdWludDMyX3QgaWQpIHsgc3RhdGljX2Nhc3Q8QXVk
aW9SZW5kZXJpbmdXZWJWaWV3VGVzdCo+KGRhdGEpLT5oYW5kbGVQYXVzZShpZCk7IH0sCisgICAg
W10odm9pZCogZGF0YSwgdWludDMyX3QgaWQpIHsgc3RhdGljX2Nhc3Q8QXVkaW9SZW5kZXJpbmdX
ZWJWaWV3VGVzdCo+KGRhdGEpLT5oYW5kbGVSZXN1bWUoaWQpOyB9Cit9OworCitzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0V4dGVybmFsQXVkaW9SZW5kZXJpbmcoQXVkaW9SZW5kZXJpbmdXZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291
cmNlUGF0aChnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFJlc291cmNlc0RpcihUZXN0OjpXZWJL
aXQyUmVzb3VyY2VzKS5kYXRhKCksICJmaWxlLXdpdGgtdmlkZW8uaHRtbCIsIG51bGxwdHIpKTsK
KyAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlVVJMKGdfZmlsZW5hbWVfdG9fdXJpKHJlc291
cmNlUGF0aC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIHdlYmtpdF93ZWJfdmlld19s
b2FkX3VyaSh0ZXN0LT5tX3dlYlZpZXcsIHJlc291cmNlVVJMLmdldCgpKTsKKyAgICB0ZXN0LT53
YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0
VW50aWxGaW5pc2hlZCgicGxheVZpZGVvKCk7IiwgbnVsbHB0cik7CisgICAgZ19hc3NlcnQodGVz
dC0+c3RhdGUoKSA9PSBSZW5kZXJpbmdTdGF0ZTo6U3RhcnRlZCk7CisgICAgdGVzdC0+cnVuSmF2
YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJwYXVzZVZpZGVvKCk7IiwgbnVsbHB0cik7Cisg
ICAgdGVzdC0+d2FpdFVudGlsUGF1c2VkKCk7CisgICAgZ19hc3NlcnQodGVzdC0+c3RhdGUoKSA9
PSBSZW5kZXJpbmdTdGF0ZTo6UGF1c2VkKTsKKworICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRX
YWl0VW50aWxGaW5pc2hlZCgicGxheVZpZGVvKCk7IHNlZWtOZWFyVGhlRW5kKCk7IiwgbnVsbHB0
cik7CisgICAgdGVzdC0+d2FpdFVudGlsRU9TKCk7CisgICAgZ19hc3NlcnQodGVzdC0+c3RhdGUo
KSA9PSBSZW5kZXJpbmdTdGF0ZTo6U3RvcHBlZCk7Cit9CisjZW5kaWYKKwogc3RhdGljIHZvaWQg
c2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwg
Y29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50
ZXIpCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKQEAg
LTE0MDIsNiArMTUyOSw5IEBAIHZvaWQgYmVmb3JlQWxsKCkKICNlbmRpZgogICAgIFdlYlZpZXdU
ZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiaXMtYXVkaW8tbXV0ZWQiLCB0ZXN0V2ViVmlld0lz
QXVkaW9NdXRlZCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdXRv
cGxheS1wb2xpY3kiLCB0ZXN0V2ViVmlld0F1dG9wbGF5UG9saWN5KTsKKyNpZiBQTEFURk9STShX
UEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04pCisgICAgQXVkaW9SZW5k
ZXJpbmdXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImV4dGVybmFsLWF1ZGlvLXJl
bmRlcmluZyIsIHRlc3RXZWJWaWV3RXh0ZXJuYWxBdWRpb1JlbmRlcmluZyk7CisjZW5kaWYKIH0K
IAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKaW5kZXggN2ExM2ViOGY4NDAyZGYwNTE3YWYwNjhkOTFk
MmFmY2QwOWRlOTY0Ni4uOGVjMDg0NGEzM2ZiZjg0Y2QzMDY0NmE1ODk1NWQ2YjMyNTc2OGI1MiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rl
c3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdU
ZXN0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiBib29sIFdlYlZpZXdUZXN0OjpzaG91bGRJbml0
aWFsaXplV2ViVmlld0luQ29uc3RydWN0b3IgPSB0cnVlOwogYm9vbCBXZWJWaWV3VGVzdDo6c2hv
dWxkQ3JlYXRlRXBoZW1lcmFsV2ViVmlldyA9IGZhbHNlOworV2ViS2l0QXVkaW9SZW5kZXJpbmdQ
b2xpY3kgV2ViVmlld1Rlc3Q6OmF1ZGlvUmVuZGVyaW5nUG9saWN5ID0gV0VCS0lUX0FVRElPX1JF
TkRFUklOR19QT0xJQ1lfSE9TVF9ERUZBVUxUOwogCiBXZWJWaWV3VGVzdDo6V2ViVmlld1Rlc3Qo
KQogICAgIDogbV91c2VyQ29udGVudE1hbmFnZXIoYWRvcHRHUmVmKHdlYmtpdF91c2VyX2NvbnRl
bnRfbWFuYWdlcl9uZXcoKSkpCkBAIC01OSw2ICs2MCw3IEBAIHZvaWQgV2ViVmlld1Rlc3Q6Omlu
aXRpYWxpemVXZWJWaWV3KCkKICAgICAgICAgIndlYi1jb250ZXh0IiwgbV93ZWJDb250ZXh0Lmdl
dCgpLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCBtX3VzZXJDb250ZW50TWFuYWdl
ci5nZXQoKSwKICAgICAgICAgImlzLWVwaGVtZXJhbCIsIHNob3VsZENyZWF0ZUVwaGVtZXJhbFdl
YlZpZXcsCisgICAgICAgICJhdWRpby1yZW5kZXJpbmctcG9saWN5IiwgYXVkaW9SZW5kZXJpbmdQ
b2xpY3ksCiAgICAgICAgIG51bGxwdHIpKTsKICAgICBwbGF0Zm9ybUluaXRpYWxpemVXZWJWaWV3
KCk7CiAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCht
X3dlYlZpZXcpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1dlYlZpZXdUZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9X
ZWJWaWV3VGVzdC5oCmluZGV4IDcwZDc5MzdhOGFiNWViYTFlZTA0MTRmZTU3MjFlNDRjMTdkM2U5
MjUuLjc4M2M1MDc4MjI4ZDc5NTRlYTZhMzdkMDdlMmFkNjFjNTM5ZjhkMTMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaApAQCAtMzEs
NiArMzEsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbml0aWFsaXplV2Vi
Vmlld0luQ29uc3RydWN0b3I7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQ3JlYXRlRXBoZW1lcmFs
V2ViVmlldzsKKyAgICBzdGF0aWMgV2ViS2l0QXVkaW9SZW5kZXJpbmdQb2xpY3kgYXVkaW9SZW5k
ZXJpbmdQb2xpY3k7CisKICAgICB2b2lkIGluaXRpYWxpemVXZWJWaWV3KCk7CiAKICAgICB2b2lk
IHBsYXRmb3JtSW5pdGlhbGl6ZVdlYlZpZXcoKTsKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0No
YW5nZUxvZwppbmRleCA0YzhjMTNlYjdjYzUyZmZmMzQwMjQwYzRlYTY0MGNjODg3NjIzNDdiLi41
ZDgyZWQ1ZTU4NTI2NjcyMjUzZmMwZDAxODBkMDM1YzgyZmNkMWIwIDEwMDY0NAotLS0gYS9DaGFu
Z2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDctMjIgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJd
IEludGVybmFsIGF1ZGlvIHJlbmRlcmluZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9GaW5kV1BFQmFja2VuZF9m
ZG8uY21ha2U6IENoZWNrIGZvciB0aGUgYXVkaW8gZXh0ZW5zaW9uIGhlYWRlci4gQ3VycmVudGx5
CisgICAgICAgIG9ubHkgaW4gZ2l0IG1hc3RlciwgdXBjb21pbmcgMS44LjAgcmVsZWFzZS4KKyAg
ICAgICAgKiBTb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtlOiBDaGVjayBhbmQgZW5h
YmxlIGV4dGVybmFsIGF1ZGlvIHJlbmRlcmluZyBzdXBwb3J0IGlmCisgICAgICAgIHRoZSBXUEVC
YWNrZW5kLUZETyBhdWRpbyBleHRlbnNpb24gd2FzIGZvdW5kLgorCiAyMDIwLTA3LTIxICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gVXBkYXRlIE9wdGlvbnNXUEUuY21ha2UgYW5kIE5FV1MgZm9yIHRoZSAyLjI5LjEgcmVs
ZWFzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405225</attachid>
            <date>2020-07-25 03:59:11 -0700</date>
            <delta_ts>2020-07-25 04:05:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207634-20200725035909.patch</filename>
            <type>text/plain</type>
            <size>109741</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0ODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgwZDE5ZjgwYTJkZDIz
Y2YwZDBjNWQyMDE4YTM0ODZlZjM5NTdjMi4uMmJkZGZkZjA1MGU2ZThjMmNjMDUxNTgxZThkN2Yz
YjU5NDFlMGJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAyMC0wNy0yMiAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1l
cl0gSW50ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBhIG5ldyBHU3RyZWFtZXIgYXVkaW9S
ZW5kZXJpbmdNb2RlKCkgQVBJIGluIHRoZSBDaHJvbWVDbGllbnQuIEl0IGlzIHVzZWQgYXQgdGhl
CisgICAgICAgIHBsYXRmb3JtIGxldmVsIGJ5IHRoZSBHU3RyZWFtZXIgYmFja2VuZHMgd2hlbiB0
aGV5IG5lZWQgdG8gZGVjaWRlIHdoaWNoIGF1ZGlvIHNpbmsgdGhleQorICAgICAgICBzaG91bGQg
dXNlIGZvciByZW5kZXJpbmcuCisKKyAgICAgICAgV2hlbiBJbnRlcm5hbCBoYXMgYmVlbiBlbmFi
bGVkIGF0IHRoZSBVSVByb2Nlc3MgbGV2ZWwsIHRoZSBjb3JyZXNwb25kaW5nIFdlYlByb2Nlc3Mg
d2lsbAorICAgICAgICBoYXZlIGl0cyBHU3RyZWFtZXIgYmFja2VuZHMgcmVuZGVyIHRvIGRlZGlj
YXRlZCBXZWJLaXQgYXVkaW8gc2lua3MuIFRob3NlIHdpbGwgZm9yd2FyZAorICAgICAgICBidWZm
ZXJzIHRvIGEgc2luZ2xldG9uIGF1ZGlvIG1peGVyLiBUaGUgcmVzdWx0aW5nIGF1ZGlvIHN0cmVh
bSB3aWxsIHRoZW4gYmUgcmVuZGVyZWQgdGhyb3VnaAorICAgICAgICBob3N0IGRlZmF1bHQgYXVk
aW8gc2luayAoUHVsc2VBdWRpbyBpbiBtb3N0IGNhc2VzKS4gVXNpbmcgdGhpcyBhcHByb2FjaCwg
YXBwbGljYXRpb25zIHdpbGwKKyAgICAgICAgbWFpbnRhaW4gYSBzaW5nbGUgY29ubmVjdGlvbiB0
byB0aGUgYXVkaW8gZGFlbW9uLgorCisgICAgICAgIFdoZW4gRXh0ZXJuYWwgaGFzIGJlZW4gZW5h
YmxlZCBhdCB0aGUgV1BFIFVJUHJvY2VzcyBsZXZlbCwgdGhlIFdlYktpdCBhdWRpbyBzaW5rcyBy
dW5uaW5nIGluCisgICAgICAgIHRoZSBXZWJQcm9jZXNzIHdpbGwgZm9yd2FyZCBhdWRpbyBzYW1w
bGVzIHRvIHRoZSBVSVByb2Nlc3MsIHVzaW5nIGEgV2F5bGFuZCBwcm90b2NvbCBkZWZpbmVkCisg
ICAgICAgIGluIHRoZSBXUEVCYWNrZW5kLUZETyBiYWNrZW5kIGFuZCBleHBvc2VkIHRocm91Z2gg
aXRzIGF1ZGlvIGV4dGVuc2lvbi4gVGhpcyBjbGllbnQtc2lkZQorICAgICAgICByZW5kZXJpbmcg
c3VwcG9ydCBhbGxvd3MgYXBwbGljYXRpb25zIHRvIGhhdmUgZnVsbCBjb250cm9sIG9uIHRoZSBh
dWRpbyBzYW1wbGVzIHJlbmRlcmluZy4KKworICAgICAgICBFeGlzdGluZyBsYXlvdXQgdGVzdHMg
Y292ZXIgdGhlIEhvc3QgcG9saWN5LiBUaGUgSW50ZXJuYWwgbW9kZSBzaG91bGQgYmUgY29uc2lk
ZXJlZCBhCisgICAgICAgIHRlY2hub2xvZ3kgcHJldmlldyBhbmQgY2FuJ3QgYmUgZW5hYmxlZCBi
eSBkZWZhdWx0IHlldCwgYmVjYXVzZSBhdWRpb21peGVyIGxhY2tzIHNvbWUKKyAgICAgICAgZmVh
dHVyZXMgc3VjaCBhcyByZXZlcnNlIHBsYXliYWNrIHN1cHBvcnQuIEV4dGVybmFsIGF1ZGlvIHJl
bmRlcmluZyBwb2xpY3kgaXMgY292ZXJlZCBieSBhCisgICAgICAgIG5ldyBXUEUgQVBJIHRlc3Qu
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNy
ZWF0ZURlc3RpbmF0aW9uKTogS2VlcCB0cmFjayBvZiB0aGUgYXVkaW8gcmVuZGVyaW5nCisgICAg
ICAgIHBvbGljeSBjb25maWd1cmVkIG9uIHRoZSBwYWdlLiBUaGlzIGlzIHRoZW4gdXNlZCBieSB0
aGUgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24gb2YgdGhlCisgICAgICAgIEF1ZGlvRGVzdGluYXRp
b25Ob2RlLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQXVkaW9SZW5kZXJpbmdQb2xp
Y3kgY29uc3QpOiBEaXR0bywgYnV0IGZvcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGFuZCBp
dHMgdW5kZXJseWluZyBNZWRpYVBsYXllclByaXZhdGUuCisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudDo6YXVkaW9SZW5kZXJpbmdQb2xpY3kgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9B
dWRpb0lPQ2FsbGJhY2suaDogRGl0dG8sIGJ1dCBmb3IgdGhlIFdlYkF1ZGlvIEF1ZGlvSU9DYWxs
YmFjayBhbmQgdGhlCisgICAgICAgIHVuZGVybHlpbmcgQXVkaW9EZXN0aW5hdGlvbk5vZGUgaW1w
bGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2s6OmF1ZGlvUmVu
ZGVyaW5nUG9saWN5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKTogQ3JlYXRlIHNp
bmsgZGVwZW5kaW5nIG9uCisgICAgICAgIHNlbGVjdGVkIGF1ZGlvIHJlbmRlcmluZyBwb2xpY3kg
YW5kIHByb2JlIHBsYXRmb3JtIGZvciBhIHdvcmtpbmcgYXVkaW8gb3V0cHV0IGRldmljZSBvbmx5
CisgICAgICAgIHdoZW4gdGhlIFdlYktpdCBjdXN0b20gYXVkaW8gc2luayBoYXNuJ3QgYmVlbiBz
ZWxlY3RlZC4gVGhpcyBpcyBuZWVkZWQgb25seSBmb3IgdGhlCisgICAgICAgIGF1dG9hdWRpb3Np
bmsgY2FzZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmNvbmZpZ3VyZUF1ZGlvQmluKTogSW5zdGVhZCBvZiBjcmVh
dGluZyBhIG5ldyBzaW5rLAorICAgICAgICBlbWJlZCB0aGUgb25lIHByb3ZpZGVkIGJ5IHRoZSBw
bGF5ZXIgaW50byB0aGUgYXVkaW8gYmluLiBUaGUgcmVzdWx0aW5nIGJpbiBiZWNvbWVzIHRoZQor
ICAgICAgICBwbGF5ZXIgYXVkaW8gc2luayBhbmQgaXQncyBhYmxlIHRvIHJlbmRlciBib3RoIHRv
IHRoZSBXZWJBdWRpbyBwcm92aWRlciBhbmQgdGhlIHVzdWFsIHNpbmssIGFzIGJlZm9yZS4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJl
YW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjphdWRpb1JlbmRlcmluZ1BvbGljeSBjb25zdCk6
IFByb3h5IHRoZSBhdWRpbyByZW5kZXJpbmcgcG9saWN5IGZyb20KKyAgICAgICAgdGhlIG1lZGlh
IHBsYXllciBjbGllbnQgKGVnIG1lZGlhIGVsZW1lbnQgdXN1YWxseSkgdG8gdGhlIHByaXZhdGUg
cGxheWVyLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJBdWRpb1JlbmRlcmluZ1BvbGljeSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJT
aG91bGRJbnRlcm5hbGx5UmVuZGVyQXVkaW8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyRW51bXMuaDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k+Ojp0b1N0cmluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvTWl4ZXI6Omlz
QWxsb3dlZCk6IFRoZSBtaXhlciByZXF1aXJlcyBhIHJlY2VudCBHU3RyZWFtZXIgdmVyc2lvbiBh
bmQKKyAgICAgICAgdGhlIGludGVyIHBsdWdpbiAoc2hpcHBlZCBpbiBnc3QtcGx1Z2lucy1iYWQg
dW50aWwgdmVyc2lvbiAxLjIwIGF0IGxlYXN0KS4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1l
ckF1ZGlvTWl4ZXI6OnNpbmdsZXRvbik6IEVudHJ5IHBvaW50IGZvciB0aGUgbWl4ZXIuIFRoaXMg
aXMgd2hlcmUgdGhlCisgICAgICAgIHNpbmdsZXRvbiBpcyBjcmVhdGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6R1N0cmVhbWVyQXVkaW9NaXhlcik6IENvbmZpZ3Vy
ZSB0aGUgc3RhbmRhbG9uZSBtaXhlcgorICAgICAgICBwaXBlbGluZS4KKyAgICAgICAgKFdlYkNv
cmU6OkdTdHJlYW1lckF1ZGlvTWl4ZXI6On5HU3RyZWFtZXJBdWRpb01peGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvTWl4ZXI6OmVuc3VyZVN0YXRlKTogTGF6aWx5IHN0YXJ0
L3N0b3AgdGhlIG1peGVyLCBkZXBlbmRpbmcgb24gdGhlCisgICAgICAgIG51bWJlciBvZiBpbmNv
bWluZyBzdHJlYW1zLiBUaGUgcGlwZWxpbmUgc3RhcnRzIHdoZW4gdGhlIGZpcnN0IGluY29taW5n
IHN0cmVhbSBpcyBjb25uZWN0ZWQsCisgICAgICAgIGFuZCBzdG9wcyB3aGVuIHRoZSBsYXN0IHN0
cmVhbSBkaXNhcHBlYXJzLgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6
cmVnaXN0ZXJQcm9kdWNlcik6IENsaWVudCBwaXBlbGluZXMgcmVxdWlyZSBhbiBpbnRlcmF1ZGlv
c2luaywgdGhleQorICAgICAgICB3aWxsIHJlbmRlciB0byB0aGF0IHNpbmssIHdoaWNoIGludGVy
bmFsbHkgZm9yd2FyZHMgZGF0YSB0byBhIHR3aW4gaW50ZXJhdWRpb3NyYyBlbGVtZW50LAorICAg
ICAgICBjb25uZWN0ZWQgdG8gdGhlIGF1ZGlvbWl4ZXIuCisgICAgICAgIChXZWJDb3JlOjpHU3Ry
ZWFtZXJBdWRpb01peGVyOjp1bnJlZ2lzdGVyUHJvZHVjZXIpOiBHZXQgcmlkIG9mIGFuIGludGVy
YXVkaW9zaW5rIGFuZCBpdHMgaW50ZXJhdWRpb3NyYy4KKyAgICAgICAgVGhpcyBpcyBjYWxsZWQg
YnkgdGhlIFdlYktpdCBhdWRpbyBzaW5rIHdoZW4gdGhlIGVsZW1lbnQgaXMgYmVpbmcgZGlzcG9z
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlv
TWl4ZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplR1N0cmVhbWVy
QW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cyk6IFJlZ2lzdGVyIG5ldyBhdWRpbyBzaW5rIGVsZW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdWRpb1NpbmtGb3JQb2xpY3kpOiBOZXcgdXRp
bGl0eSBmdW5jdGlvbiB0byBjcmVhdGUgYW4gYXVkaW8gc2luayBiYXNlZCBvbgorICAgICAgICB0
aGUgc2VsZWN0ZWQgcmVuZGVyaW5nIHBvbGljeS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpzZWVrKTogRHJpdmUtYnkgY2xlYW4tdXAsIG5vIG5lZWQgdG8gY3JlYXRlIHRoZSBzZWVrCisg
ICAgICAgIE1lZGlhdGltZSBiZWZvcmUgdGhlIGVhcmx5IHJldHVybiBjaGVja2luZyB0aGlzIGlz
IGEgbGl2ZSBzdHJlYW0uCisgICAgICAgIChXZWJDb3JlOjpzZXRTeW5jT25DbG9jayk6IEZpeHVw
IGNvZGUgc3R5bGUgaW4gdGhpcyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1ZGlvU2luayk6IFVzZSBuZXcgY3JlYXRlQXVkaW9T
aW5rRm9yUG9saWN5KCkKKyAgICAgICAgdXRpbGl0eSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9TaW5rIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJp
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwOiBBZGRlZC4gVGhpcyBzaW5rIGNhbiBlaXRoZXIK
KyAgICAgICAgZm9yd2FyZCBpbmNvbWluZyBzYW1wbGVzIHRvIHRoZSBzaGFyZWQgYXVkaW9taXhl
ciBydW5uaW5nIGluIGl0cyBvd24gcGlwZWxpbmUsIG9yIGZvcndhcmQKKyAgICAgICAgc2FtcGxl
cyB0byB0aGUgVUlQcm9jZXNzIHVzaW5nIHRoZSBXUEVCYWNrZW5kLUZETyBhdWRpbyBleHRlbnNp
b24uCisgICAgICAgIChBdWRpb1BhY2tldEhvbGRlcjo6QXVkaW9QYWNrZXRIb2xkZXIpOiBXcmFw
cGVyIGFyb3VuZCBhdWRpbyBidWZmZXJzLCBpbiBjaGFyZ2Ugb2YgY3JlYXRpbmcKKyAgICAgICAg
dGhlIGNvcnJlc3BvbmRpbmcgbWVtZmQgZGVzY3JpcHRvciBhbmQgYWxzbyBrZWVwaW5nIHRyYWNr
IG9mIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgIHdwZV9hdWRpb19wYWNrZXRfZXhwb3J0Lgor
ICAgICAgICAoQXVkaW9QYWNrZXRIb2xkZXI6On5BdWRpb1BhY2tldEhvbGRlcik6CisgICAgICAg
IChBdWRpb1BhY2tldEhvbGRlcjo6bWFwKTogQ3JlYXRlIHRoZSBtZW1mZCBkZXNjcmlwdG9yIGFu
ZCByZXR1cm4gaXQgYWxvbmcgd2l0aCB0aGUgYnVmZmVyIHNpemUuCisgICAgICAgICh3ZWJLaXRB
dWRpb1NpbmtIYW5kbGVTYW1wbGUpOiBGb3J3YXJkIGluY29taW5nIHNhbXBsZXMgdXNpbmcgdGhl
IFdQRUJhY2tlbmQtRkRPIGF1ZGlvCisgICAgICAgIGV4dGVuc2lvbi4gVGhlIHdwZV9hdWRpb19z
b3VyY2Ugc3RhcnQgaXMgc3luY2hyb25pemVkIHdpdGggdGhlIGJ1ZmZlciBmbG93LgorICAgICAg
ICAod2ViS2l0QXVkaW9TaW5rQ29uc3RydWN0ZWQpOiBXaGVuIGludGVybmFsIG1peGluZyBoYXMg
YmVlbiByZXF1ZXN0ZWQsIGNyZWF0ZSBhbgorICAgICAgICBpbnRlcmF1ZGlvc2luayB0byB3aGlj
aCBzYW1wbGVzIHdpbGwgYmUgc2VudC4gSW50ZXJuYWxseSB0aGUgaW50ZXJhdWRpb3Npbmsgd2ls
bCBmb3J3YXJkCisgICAgICAgIGRhdGEgdG8gaXRzIGludGVyYXVkaW9zcmMgd2hpY2ggaXMgY29u
bmVjdGVkIHRvIHRoZSBhdWRpb21peGVyLiBPdGhlcndpc2UsIGlmIGV4dGVybmFsCisgICAgICAg
IHJlbmRlcmluZyBoYXMgYmVlbiByZXF1ZXN0ZWQsIGNyZWF0ZSBhbiBhcHBzaW5rIGluIG9yZGVy
IHRvIHJlbGF5IHNhbXBsZXMgdG8gdGhlIFVJUHJvY2Vzcy4KKyAgICAgICAgKHdlYktpdEF1ZGlv
U2lua0Rpc3Bvc2UpOgorICAgICAgICAoZ2V0SW50ZXJuYWxWb2x1bWVPYmplY3QpOiBXaGVuIGlu
dGVybmFsIG1peGluZyBpcyBlbmFibGVkLCB2b2x1bWUgYW5kIG11dGUgc3RhdGVzIGFyZQorICAg
ICAgICB0cmFja2VkIHdpdGhpbiB0aGUgYXVkaW9taXhlciBzaW5rIHBhZHMuIE90aGVyd2lzZSBv
dXIgYXVkaW8gc2luayBtYW5hZ2VzIHRoaXMgdXNpbmcgYSB2b2x1bWUKKyAgICAgICAgZWxlbWVu
dC4KKyAgICAgICAgKHdlYktpdEF1ZGlvU2lua1NldFByb3BlcnR5KTogUHJveHkgdm9sdW1lIGFu
ZCBtdXRlIHByb3BlcnRpZXMgZnJvbSB0aGUgaW50ZXJuYWwgdm9sdW1lIHByb3h5LgorICAgICAg
ICAod2ViS2l0QXVkaW9TaW5rR2V0UHJvcGVydHkpOiBEaXR0by4KKyAgICAgICAgKHdlYktpdEF1
ZGlvU2lua0NoYW5nZVN0YXRlKTogS2VlcCB0aGUgV1BFIGF1ZGlvIHNvdXJjZSBzdGF0ZSBzeW5j
aHJvbml6ZWQgd2l0aCB0aGUgZWxlbWVudAorICAgICAgICBzdGF0ZSwgaW4gb3JkZXIgdG8ga25v
dyB3aGVuIHRoZSBwYXVzZS9yZXN1bWUgbm90aWZpY2F0aW9ucyBzaG91bGQgYmUgc2VudCB0byB0
aGUgVUlQcm9jZXNzLgorICAgICAgICBUaGlzIGlzIGFsc28gd2hlcmUgbWFpbnRhaW4gdGhlIHJl
bGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBpbnRlcmF1ZGlvc2luayBhbmQgdGhlIGF1ZGlvbWl4ZXIs
IHdoZW4KKyAgICAgICAgaXQncyBlbmFibGVkLgorICAgICAgICAod2Via2l0X2F1ZGlvX3Npbmtf
Y2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRBdWRpb1NpbmtOZXcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuaDogQWRk
ZWQuCisKIDIwMjAtMDctMjQgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBnc3RfYnVmZmVyX3VubWFwOiBhc3NlcnRp
b24gJ0dTVF9JU19CVUZGRVIgKGJ1ZmZlciknIGZhaWxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjODE3ZmY3YmI2
ODY0MjAxNTMxMGZmYWU0ZjRlMzIzMzBiMmQzYzQ3Li40NzZjNjE4NmU5MDA3ZmFiZmVjZjgwMmI1
MmFkMTExOWIyYjUxMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA3LTIyICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVh
bWVyXSBJbnRlcm5hbCBhdWRpbyByZW5kZXJpbmcgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjM0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW4gYXVkaW8gcmVuZGVyaW5nIG1vZGUgcHJv
cGVydHkgaXMgaW50cm9kdWNlZCBpbiB0aGUgV1BFIGFuZCBHVEsgcG9ydHMuIEN1cnJlbnRseSBp
dCBoYXMKKyAgICAgICAgMyB2YWx1ZXMsIEhvc3QgKGRlZmF1bHQpLCBJbnRlcm5hbCBhbmQgRXh0
ZXJuYWwgKHdoaWNoIGlzIHN1cHBvcnRlZCBvbmx5IGluIFdQRSkuCisKKyAgICAgICAgV2hlbiBJ
bnRlcm5hbCBpcyBzZWxlY3RlZCwgYSBzaW5nbGUgY29ubmVjdGlvbiB0byB0aGUgaG9zdCBzb3Vu
ZCBkYWVtb24gd2lsbCBiZQorICAgICAgICBtYWludGFpbmVkLiBUaGUgdmFyaW91cyBpbnRlcm5h
bCBHU3RyZWFtZXIgYmFja2VuZHMgd2lsbCB1c2UgYW4gaW50ZXJuYWwgYXVkaW8gc2luaworICAg
ICAgICBwZXJmb3JtaW5nIHRoZSBtaXhpbmcuIFRoZSBzaW5rIHdpbGwgcmVsYXkgdGhlIHJlc3Vs
dGluZyBhdWRpbyBzdHJlYW0gdG8gdGhlIGhvc3QgYXVkaW8KKyAgICAgICAgZGFlbW9uICh1c3Vh
bGx5IFB1bHNlQXVkaW8pLgorCisgICAgICAgIEluIFdQRSB3aGVuIHRoZSBFeHRlcm5hbCBtb2Rl
IGlzIHNlbGVjdGVkLCBhdWRpbyBzYW1wbGVzIHdpbGwgbm8gbG9uZ2VyIGJlIHJlbmRlcmVkIGJ5
CisgICAgICAgIFdlYktpdCwgYnV0IGJ5IHRoZSBhcHBsaWNhdGlvbi4gVG8gc3VwcG9ydCB0aGlz
IHVzZS1jYXNlLCB0aGUgRkRPIFdQRUJhY2tlbmQgbm93IGV4cG9zZXMgYW4KKyAgICAgICAgYXVk
aW8gcHJvdG9jb2wsIGluIGNoYXJnZSBvZiByZWxheWluZyBzYW1wbGVzIGZyb20gdGhlIFdlYlBy
b2Nlc3MgdG8gdGhlIFVJUHJvY2VzcywgdXNpbmcKKyAgICAgICAgV2F5bGFuZCBJUEMuIFRoZSBh
cHBsaWNhdGlvbiBoYXMgdG8gcmVnaXN0ZXIgYSB3cGVfYXVkaW9fcmVjZWl2ZXIgYW5kIGltcGxl
bWVudCBpdHMKKyAgICAgICAgY2FsbGJhY2tzLCBpbiBvcmRlciB0byBiZSBub3RpZmllZCBvZiB0
aGUgYXVkaW8gc2FtcGxlcyBhbmQgc3RhdGUgY2hhbmdlcy4gU2VlIHRoZSBBUEkgdGVzdHMKKyAg
ICAgICAgZm9yIGFuIGV4YW1wbGUgb2YgaG93IHRvIGRvIHRoaXMuCisKKyAgICAgICAgKiBTaGFy
ZWQvQXVkaW9SZW5kZXJpbmdQb2xpY3kuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld1NldFByb3Bl
cnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3V2lsbFN0YXJ0
TG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0OgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2F1ZGlvUmVu
ZGVyaW5nUG9saWN5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXVkaW9SZW5kZXJpbmdQb2xpY3kgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRBdWRpb1JlbmRlcmluZ1BvbGljeSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmF1ZGlvUmVuZGVyaW5nUG9saWN5
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjph
dWRpb1JlbmRlcmluZ1BvbGljeSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0QXVkaW9SZW5kZXJpbmdQ
b2xpY3kpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorCiAyMDIwLTA3LTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVc2Ugb25lIHNvY2tldCBzZXJ2ZXIgZm9yIHRoZSB3aG9sZSBuZXR3b3JrIHByb2Nlc3Mg
aW5zdGVhZCBvZiBvbmUgc29ja2V0IHNlcnZlciBwZXIgd2ViIHByb2Nlc3MgY29ubmVjdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGRkNjdjZmRlMDM0ZjY3MjM2MGIyYzIy
ZTY1ZmQ5ZjEwOTE5NzI2YWQuLjVmMDgzMGYwMjFhMDk2ZmViN2VjNjUyMjRmMjgzYjYwNWFjZjg5
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTMwLDYgKzMwLDkgQEAKIAog
I2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIK
KyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVN0cmF0
ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCkBAIC05MCw2ICs5MywyNCBA
QCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlRGVzdGluYXRpb24oKQog
ICAgIG1fZGVzdGluYXRpb24gPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVneSgp
LmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oKnRoaXMsIG1faW5wdXREZXZpY2VJZCwgbV9udW1iZXJP
ZklucHV0Q2hhbm5lbHMsIGNoYW5uZWxDb3VudCgpLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwogfQog
CisjaWYgVVNFKEdTVFJFQU1FUikKK01lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9k
ZSBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0
Cit7CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBjb250ZXh0KCkuZG9jdW1lbnQoKS0+cGFnZSgpKSB7
CisgICAgICAgIHN3aXRjaCAocGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuYXVkaW9SZW5kZXJpbmdN
b2RlKCkpIHsKKyAgICAgICAgY2FzZSBDaHJvbWVDbGllbnQ6OkF1ZGlvUmVuZGVyaW5nTW9kZTo6
SG9zdDoKKyAgICAgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmlu
Z01vZGU6Okhvc3Q7CisgICAgICAgIGNhc2UgQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ01v
ZGU6OkludGVybmFsOgorICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlv
UmVuZGVyaW5nTW9kZTo6SW50ZXJuYWw7CisgICAgICAgIGNhc2UgQ2hyb21lQ2xpZW50OjpBdWRp
b1JlbmRlcmluZ01vZGU6OkV4dGVybmFsOgorICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
RW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZTo6RXh0ZXJuYWw7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlOjpIb3N0Owor
fQorI2VuZGlmCisKIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjplbmFibGVJbnB1
dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDFiODExYWQ5NTRjYTk4Mjcx
ZWU5YzJiZGFiZjc3MDFmOWJlOTgzN2IuLjdkYjM2NzhhOGE2ODgxNWI4YzBjNTVmMjk5YjY5ZDM1
OTlkYzlmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzksNyArMzksMTEgQEAg
cHVibGljOgogICAgIH0KICAgICAKICAgICB2aXJ0dWFsIH5EZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUoKTsKLSAgICAKKworI2lmIFVTRShHU1RSRUFNRVIpCisgICAgTWVkaWFQbGF5ZXJFbnVt
czo6QXVkaW9SZW5kZXJpbmdNb2RlIGF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0IGZpbmFsOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlKEJhc2VBdWRpb0NvbnRleHQmLCBPcHRpb25hbDxmbG9hdD4pOwogICAgIHZvaWQgY3JlYXRl
RGVzdGluYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDM3OWVkNzE1MWM3ODRkMWZlMjc3ZTU1MjEyODFhYzY1ZTU3OGM5ZTguLmE1ZTI0YzIyY2Yy
ZmQ5YWIxYmRmYjc5ZGQyNzIxMDFmYmIwOWIwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtNzAxNSw2ICs3MDE1LDIyIEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMs
IGNvbnN0CiAKICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucmVxdWVz
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGRldGFpbHMsIGRlc2NyaXB0aW9uLCBjYWxsYmFj
ayk7CiB9CisKK01lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZSBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0Cit7CisgICAgaWYg
KGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkgeworICAgICAgICBzd2l0Y2ggKHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLmF1ZGlvUmVuZGVyaW5nTW9kZSgpKSB7CisgICAgICAgIGNhc2Ug
Q2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ01vZGU6Okhvc3Q6CisgICAgICAgICAgICByZXR1
cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlOjpIb3N0OworICAgICAgICBj
YXNlIENocm9tZUNsaWVudDo6QXVkaW9SZW5kZXJpbmdNb2RlOjpJbnRlcm5hbDoKKyAgICAgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGU6OkludGVybmFs
OworICAgICAgICBjYXNlIENocm9tZUNsaWVudDo6QXVkaW9SZW5kZXJpbmdNb2RlOjpFeHRlcm5h
bDoKKyAgICAgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01v
ZGU6OkV4dGVybmFsOworICAgICAgICB9CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9k
ZTo6SG9zdDsKK30KICNlbmRpZgogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUJlaGF2
aW9yUmVzdHJpY3Rpb25zQWZ0ZXJGaXJzdFVzZXJHZXN0dXJlKE1lZGlhRWxlbWVudFNlc3Npb246
OkJlaGF2aW9yUmVzdHJpY3Rpb25zIG1hc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCmluZGV4IDczMDhiYzBiZTlhODg4MjU2MTFkZWEwNDY3NDJkODgzNTIxN2M3YWQuLmM2
MGYxZTU5OGYxMjlmMjY3ZGM1M2RmOGFiNDc0MThhNWQyNzNhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC03NDUsNiArNzQ1LDcgQEAgcHJpdmF0ZToKIAogI2lm
IFVTRShHU1RSRUFNRVIpCiAgICAgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNv
bnN0IFN0cmluZyYgZGV0YWlscywgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgTWVkaWFQbGF5
ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKSBmaW5hbDsKKyAgICBNZWRp
YVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGUgbWVkaWFQbGF5ZXJBdWRpb1JlbmRlcmlu
Z01vZGUoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAgICAgdm9pZCBwZW5kaW5nQWN0aW9uVGlt
ZXJGaXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggYzBhMGQzMGJjZmRm
M2Y0MWNmMGU4ZDdmM2RlNGMyNGMwMWRiNjc5OC4uYWNiMDU4MGJiYmEwNzhlYTFmYzAzMjhhNzQ1
YTIwMTUzZTY3NjI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC00OTUsNiAr
NDk1LDE0IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBT
dHJpbmcmIC8qZGV0YWlscyovLCBjb25zdCBTdHJpbmcmIC8qZGVzY3JpcHRpb24qLywgTWVkaWFQ
bGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKSB7IH0KICNlbmRpZgor
I2lmIFVTRShHU1RSRUFNRVIpCisgICAgZW51bSBjbGFzcyBBdWRpb1JlbmRlcmluZ01vZGUgewor
ICAgICAgICBIb3N0LAorICAgICAgICBJbnRlcm5hbCwKKyAgICAgICAgRXh0ZXJuYWwKKyAgICB9
OworICAgIHZpcnR1YWwgQXVkaW9SZW5kZXJpbmdNb2RlIGF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIEF1ZGlvUmVuZGVyaW5nTW9kZTo6SG9zdDsgfQorI2VuZGlmCiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCmluZGV4IDZhMmNhZTM0MjNlM2JlMTVm
YzA5MGZiYjcyYjUxYTU2ZTNjY2QxYjEuLjBmMWE0MTIzNDQ2ZmZlMjVkYThiMTNmY2NlN2Y3YjU4
ZGYxZDcxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKQEAgLTks
NiArOSw3IEBAIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNw
cAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR0xWaWRlb1NpbmtHU3RyZWFt
ZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVh
bWVyLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVk
aW9NaXhlci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckNvbW1vbi5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dzdEFsbG9j
YXRvckZhc3RNYWxsb2MuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCkBAIC0yMyw2ICsyNCw3IEBAIGlmIChFTkFCTEVf
VklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKyAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKIAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dl
YktpdENsZWFyS2V5RGVjcnlwdG9yR1N0cmVhbWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9JT0NhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0lPQ2FsbGJhY2suaAppbmRleCBhNDM4OTFmMGJmNDJmZDJiZGUw
NmRkMDBjOTMyNGNmMWRhMjBjNWIyLi40ODQwOTQyNzZlYjA0ZmU2YWJjMmZjMTA4N2M2MDhlMjU5
NDE0M2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0lP
Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0lPQ2Fs
bGJhY2suaApAQCAtMjYsOCArMjYsMTEgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBB
dWRpb0lPQ2FsbGJhY2tfaAotI2RlZmluZSBBdWRpb0lPQ2FsbGJhY2tfaAorI3ByYWdtYSBvbmNl
CisKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIk1lZGlhUGxheWVyRW51bXMuaCIKKyNl
bmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDkgKzQ1LDEyIEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBpc1BsYXlpbmdEaWRDaGFuZ2UoKSA9IDA7CiAKKyNpZiBVU0Uo
R1NUUkVBTUVSKQorICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdN
b2RlIGF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6
OkF1ZGlvUmVuZGVyaW5nTW9kZTo6SG9zdDsgfTsKKyNlbmRpZgorCiAgICAgdmlydHVhbCB+QXVk
aW9JT0NhbGxiYWNrKCkgPSBkZWZhdWx0OwogfTsKIAogfSAvLyBXZWJDb3JlCiAKLSNlbmRpZiAv
LyBBdWRpb0lPQ2FsbGJhY2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
Y3BwCmluZGV4IDFhNTQ5NWZkNzY0ZDljM2NjNmVkYjU4MWZhNDgwZWFlYWQxNDU5YmYuLjk3NTZm
MWVlMWRhODliYWU1NGJlZTg5NjFkODViYjFkYjNjMmFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTI0LDkgKzI0LDExIEBACiAjaW5jbHVkZSAiQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIgogCiAjaW5jbHVkZSAiQXVkaW9DaGFubmVsLmgiCisj
aW5jbHVkZSAiQXVkaW9JT0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRl
ci5oIgotI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJD
b21tb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9TaW5r
R1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaCIK
ICNpbmNsdWRlIDxnc3QvYXVkaW8vZ3N0YXVkaW9iYXNlc2luay5oPgogI2luY2x1ZGUgPGdzdC9n
c3QuaD4KQEAgLTk1LDI5ICs5NywzNCBAQCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInByb3ZpZGVyIiwgJm1fY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImZyYW1lcyIsIGZyYW1lc1RvUHVsbCwgbnVsbHB0cikpOwogCi0gICAgR1JlZlB0cjxHc3RFbGVt
ZW50PiBhdWRpb1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1dG9hdWRpb3Npbmsi
LCBudWxscHRyKTsKKyAgICBhdXRvIGF1ZGlvUmVuZGVyaW5nTW9kZSA9IGNhbGxiYWNrLmF1ZGlv
UmVuZGVyaW5nTW9kZSgpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3Jl
YXRlQXVkaW9TaW5rRm9yUG9saWN5KGF1ZGlvUmVuZGVyaW5nTW9kZSk7CiAgICAgbV9hdWRpb1Np
bmtBdmFpbGFibGUgPSBhdWRpb1Npbms7CiAgICAgaWYgKCFhdWRpb1NpbmspIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIEdTdHJlYW1lciBhdXRvYXVkaW9zaW5rIGVsZW1l
bnQiKTsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIEdTdHJlYW1lciBhdWRp
byBzaW5rIGVsZW1lbnQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGdfc2lnbmFs
X2Nvbm5lY3QoYXVkaW9TaW5rLmdldCgpLCAiY2hpbGQtYWRkZWQiLCBHX0NBTExCQUNLKGF1dG9B
dWRpb1NpbmtDaGlsZEFkZGVkQ2FsbGJhY2spLCBudWxscHRyKTsKLQotICAgIC8vIEF1dG9hdWRp
b3NpbmsgZG9lcyB0aGUgcmVhbCBzaW5rIGRldGVjdGlvbiBpbiB0aGUgR1NUX1NUQVRFX05VTEwt
PlJFQURZIHRyYW5zaXRpb24KLSAgICAvLyBzbyBpdCdzIGJlc3QgdG8gcm9sbCBpdCB0byBSRUFE
WSBhcyBzb29uIGFzIHBvc3NpYmxlIHRvIGVuc3VyZSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybQot
ICAgIC8vIGF1ZGlvc2luayB3YXMgbG9hZGVkIGNvcnJlY3RseS4KLSAgICBHc3RTdGF0ZUNoYW5n
ZVJldHVybiBzdGF0ZUNoYW5nZVJldHVybiA9IGdzdF9lbGVtZW50X3NldF9zdGF0ZShhdWRpb1Np
bmsuZ2V0KCksIEdTVF9TVEFURV9SRUFEWSk7Ci0gICAgaWYgKHN0YXRlQ2hhbmdlUmV0dXJuID09
IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBjaGFuZ2UgYXV0b2F1ZGlvc2luayBlbGVtZW50IHN0YXRlIik7Ci0gICAgICAgIGdzdF9lbGVt
ZW50X3NldF9zdGF0ZShhdWRpb1NpbmsuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICAgICAg
bV9hdWRpb1NpbmtBdmFpbGFibGUgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOworICAgIC8vIFBy
b2JlIHBsYXRmb3JtIGVhcmx5IG9uIGZvciBhIHdvcmtpbmcgYXVkaW8gb3V0cHV0IGRldmljZS4g
VGhpcyBpcyBub3QgbmVlZGVkIGZvciB0aGUgV2ViS2l0CisgICAgLy8gY3VzdG9tIGF1ZGlvIHNp
bmsgYmVjYXVzZSBpdCBkb2Vzbid0IHJlbHkgb24gYXV0b2F1ZGlvc2luay4KKyAgICBpZiAoIVdF
QktJVF9JU19BVURJT19TSU5LKGF1ZGlvU2luay5nZXQoKSkpIHsKKyAgICAgICAgZ19zaWduYWxf
Y29ubmVjdChhdWRpb1NpbmsuZ2V0KCksICJjaGlsZC1hZGRlZCIsIEdfQ0FMTEJBQ0soYXV0b0F1
ZGlvU2lua0NoaWxkQWRkZWRDYWxsYmFjayksIG51bGxwdHIpOworCisgICAgICAgIC8vIEF1dG9h
dWRpb3NpbmsgZG9lcyB0aGUgcmVhbCBzaW5rIGRldGVjdGlvbiBpbiB0aGUgR1NUX1NUQVRFX05V
TEwtPlJFQURZIHRyYW5zaXRpb24KKyAgICAgICAgLy8gc28gaXQncyBiZXN0IHRvIHJvbGwgaXQg
dG8gUkVBRFkgYXMgc29vbiBhcyBwb3NzaWJsZSB0byBlbnN1cmUgdGhlIHVuZGVybHlpbmcgcGxh
dGZvcm0KKyAgICAgICAgLy8gYXVkaW9zaW5rIHdhcyBsb2FkZWQgY29ycmVjdGx5LgorICAgICAg
ICBHc3RTdGF0ZUNoYW5nZVJldHVybiBzdGF0ZUNoYW5nZVJldHVybiA9IGdzdF9lbGVtZW50X3Nl
dF9zdGF0ZShhdWRpb1NpbmsuZ2V0KCksIEdTVF9TVEFURV9SRUFEWSk7CisgICAgICAgIGlmIChz
dGF0ZUNoYW5nZVJldHVybiA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpIHsKKyAgICAgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNoYW5nZSBhdXRvYXVkaW9zaW5rIGVsZW1lbnQgc3Rh
dGUiKTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShhdWRpb1NpbmsuZ2V0KCks
IEdTVF9TVEFURV9OVUxMKTsKKyAgICAgICAgICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gZmFs
c2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAKICAgICBHc3RFbGVt
ZW50KiBhdWRpb0NvbnZlcnQgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1ZGlvY29udmVy
dCIsIG51bGxwdHIpOwogICAgIEdzdEVsZW1lbnQqIGF1ZGlvUmVzYW1wbGUgPSBnc3RfZWxlbWVu
dF9mYWN0b3J5X21ha2UoImF1ZGlvcmVzYW1wbGUiLCBudWxscHRyKTsKLSAgICBnc3RfYmluX2Fk
ZF9tYW55KEdTVF9CSU4obV9waXBlbGluZSksIHdlYmtpdEF1ZGlvU3JjLCBhdWRpb0NvbnZlcnQs
IGF1ZGlvUmVzYW1wbGUsIGF1ZGlvU2luay5nZXQoKSwgbnVsbHB0cik7CisgICAgZ3N0X2Jpbl9h
ZGRfbWFueShHU1RfQklOX0NBU1QobV9waXBlbGluZSksIHdlYmtpdEF1ZGlvU3JjLCBhdWRpb0Nv
bnZlcnQsIGF1ZGlvUmVzYW1wbGUsIGF1ZGlvU2luay5nZXQoKSwgbnVsbHB0cik7CiAKICAgICAv
LyBMaW5rIHNyYyBwYWRzIGZyb20gd2Via2l0QXVkaW9TcmMgdG8gYXVkaW9Db252ZXJ0ICEgYXVk
aW9SZXNhbXBsZSAhIGF1dG9hdWRpb3NpbmsuCiAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1
bGwod2Via2l0QXVkaW9TcmMsICJzcmMiLCBhdWRpb0NvbnZlcnQsICJzaW5rIiwgR1NUX1BBRF9M
SU5LX0NIRUNLX05PVEhJTkcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgK
aW5kZXggM2I4OWZlYmM2MjdhNDc2NTg2ZDJjMzM4ZDJmMmY1NTk3OWFjOTIwMS4uYjRhMTJkZDkw
ZTZiYTgyMTg1MTM3Zjg0YTBmZWQ5MWQ4NzUzZDM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5oCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJBdWRpb0J1cy5o
IgogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllckVu
dW1zLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiB0eXBlZGVmIHN0cnVjdCBfR3N0RWxl
bWVudCBHc3RFbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFt
ZXIuY3BwCmluZGV4IDU0YjM5ZjQ1YTViYTcwMGVlMGU5YmFhMTY1MzZkMjE4ODRlZDEwZjguLjE1
YzQyNjZiMzEyYzI3OGZjNzc3MDQyNmIxNTUzYTEzMzkzNjU0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBBdWRp
b1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjp+QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcigp
CiAgICAgZ19vYmplY3RfdW5yZWYobV9mcm9udFJpZ2h0QWRhcHRlcik7CiB9CiAKLXZvaWQgQXVk
aW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCog
YXVkaW9CaW4sIEdzdEVsZW1lbnQqIHRlZVByZWRlY2Vzc29yKQordm9pZCBBdWRpb1NvdXJjZVBy
b3ZpZGVyR1N0cmVhbWVyOjpjb25maWd1cmVBdWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0Jpbiwg
R3N0RWxlbWVudCogYXVkaW9TaW5rKQogewogICAgIG1fYXVkaW9TaW5rQmluID0gYXVkaW9CaW47
CiAKQEAgLTE1MiwyNiArMTUyLDE2IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1l
cjo6Y29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCogYXVkaW9CaW4sIEdzdEVsCiAgICAgR3N0
RWxlbWVudCogYXVkaW9SZXNhbXBsZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9y
ZXNhbXBsZSIsIG51bGxwdHIpOwogICAgIEdzdEVsZW1lbnQqIGF1ZGlvUmVzYW1wbGUyID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb3Jlc2FtcGxlIiwgbnVsbHB0cik7CiAgICAgR3N0
RWxlbWVudCogdm9sdW1lRWxlbWVudCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgidm9sdW1l
IiwgInZvbHVtZSIpOwotICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2luayA9IGdzdF9lbGVtZW50X2Zh
Y3RvcnlfbWFrZSgiYXV0b2F1ZGlvc2luayIsIG51bGxwdHIpOwotCi0gICAgZ3N0X2Jpbl9hZGRf
bWFueShHU1RfQklOKG1fYXVkaW9TaW5rQmluLmdldCgpKSwgYXVkaW9UZWUsIGF1ZGlvUXVldWUs
IGF1ZGlvQ29udmVydCwgYXVkaW9SZXNhbXBsZSwgdm9sdW1lRWxlbWVudCwgYXVkaW9Db252ZXJ0
MiwgYXVkaW9SZXNhbXBsZTIsIGF1ZGlvU2luaywgbnVsbHB0cik7Ci0KLSAgICAvLyBJbiBjYXNl
cyB3aGVyZSB0aGUgYXVkaW8tc2luayBuZWVkcyBlbGVtZW50cyBiZWZvcmUgdGVlIChzdWNoCi0g
ICAgLy8gYXMgc2NhbGV0ZW1wbykgdGhleSBuZWVkIHRvIGJlIGxpbmtlZCB0byB0ZWUgd2hpY2gg
aW4gdGhpcyBjYXNlCi0gICAgLy8gZG9lc24ndCBuZWVkIGEgZ2hvc3QgcGFkLiBJdCBpcyBhc3N1
bWVkIHRoYXQgdGhlIHRlZVByZWRlY2Vzc29yCi0gICAgLy8gY2hhaW4gYWxyZWFkeSBjb25maWd1
cmVkIGEgZ2hvc3QgcGFkLgotICAgIGlmICh0ZWVQcmVkZWNlc3NvcikKLSAgICAgICAgZ3N0X2Vs
ZW1lbnRfbGlua19wYWRzX2Z1bGwodGVlUHJlZGVjZXNzb3IsICJzcmMiLCBhdWRpb1RlZSwgInNp
bmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8v
IEFkZCBhIGdob3N0cGFkIHRvIHRoZSBiaW4gc28gaXQgY2FuIHByb3h5IHRvIHRlZS4KLSAgICAg
ICAgR1JlZlB0cjxHc3RQYWQ+IGF1ZGlvVGVlU2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVu
dF9nZXRfc3RhdGljX3BhZChhdWRpb1RlZSwgInNpbmsiKSk7Ci0gICAgICAgIGdzdF9lbGVtZW50
X2FkZF9wYWQobV9hdWRpb1NpbmtCaW4uZ2V0KCksIGdzdF9naG9zdF9wYWRfbmV3KCJzaW5rIiwg
YXVkaW9UZWVTaW5rUGFkLmdldCgpKSk7Ci0gICAgfQogCi0gICAgLy8gTGluayBhIG5ldyBzcmMg
cGFkIGZyb20gdGVlIHRvIHF1ZXVlICEgYXVkaW9jb252ZXJ0ICEKLSAgICAvLyBhdWRpb3Jlc2Ft
cGxlICEgdm9sdW1lICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhCi0gICAgLy8gYXV0
b2F1ZGlvc2luay4gVGhlIGF1ZGlvcmVzYW1wbGUgYW5kIGF1ZGlvY29udmVydCBhcmUgbmVlZGVk
IHRvCi0gICAgLy8gZW5zdXJlIHRoZSBhdWRpbyBzaW5rIHJlY2VpdmVzIGJ1ZmZlcnMgaW4gdGhl
IGNvcnJlY3QgZm9ybWF0LgorICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTl9DQVNUKG1fYXVk
aW9TaW5rQmluLmdldCgpKSwgYXVkaW9UZWUsIGF1ZGlvUXVldWUsIGF1ZGlvQ29udmVydCwgYXVk
aW9SZXNhbXBsZSwgdm9sdW1lRWxlbWVudCwgYXVkaW9Db252ZXJ0MiwgYXVkaW9SZXNhbXBsZTIs
IGF1ZGlvU2luaywgbnVsbHB0cik7CisKKyAgICAvLyBBZGQgYSBnaG9zdHBhZCB0byB0aGUgYmlu
IHNvIGl0IGNhbiBwcm94eSB0byB0ZWUuCisgICAgYXV0byBhdWRpb1RlZVNpbmtQYWQgPSBhZG9w
dEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoYXVkaW9UZWUsICJzaW5rIikpOworICAg
IGdzdF9lbGVtZW50X2FkZF9wYWQobV9hdWRpb1NpbmtCaW4uZ2V0KCksIGdzdF9naG9zdF9wYWRf
bmV3KCJzaW5rIiwgYXVkaW9UZWVTaW5rUGFkLmdldCgpKSk7CisKKyAgICAvLyBMaW5rIGEgbmV3
IHNyYyBwYWQgZnJvbSB0ZWUgdG8gcXVldWUgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxl
ICEgdm9sdW1lICEgYXVkaW9jb252ZXJ0ICEKKyAgICAvLyBhdWRpb3Jlc2FtcGxlICEgYXVkaW9z
aW5rLiBUaGUgYXVkaW9yZXNhbXBsZSBhbmQgYXVkaW9jb252ZXJ0IGFyZSBuZWVkZWQgdG8gZW5z
dXJlIHRoZSBhdWRpbworICAgIC8vIHNpbmsgcmVjZWl2ZXMgYnVmZmVycyBpbiB0aGUgY29ycmVj
dCBmb3JtYXQuCiAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoYXVkaW9UZWUsICJzcmNf
JXUiLCBhdWRpb1F1ZXVlLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKICAg
ICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChhdWRpb1F1ZXVlLCAic3JjIiwgYXVkaW9Db252
ZXJ0LCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKICAgICBnc3RfZWxlbWVu
dF9saW5rX3BhZHNfZnVsbChhdWRpb0NvbnZlcnQsICJzcmMiLCBhdWRpb1Jlc2FtcGxlLCAic2lu
ayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQ
cm92aWRlckdTdHJlYW1lci5oCmluZGV4IGQ2YmEyMmEzMTFlNTlmNzNhODE3MjhlZGY0NDUxN2Rh
ZGQ1M2VmYjAuLmU0ZjY1MTJmMTJhMDNmMTM5YzQzN2RjMjBkNzE3MjRiMWQ0YjIzNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJj
ZVByb3ZpZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaApAQCAtNTcsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcigpOwogICAgIH5BdWRp
b1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKCk7CiAKLSAgICB2b2lkIGNvbmZpZ3VyZUF1ZGlvQmlu
KEdzdEVsZW1lbnQqIGF1ZGlvQmluLCBHc3RFbGVtZW50KiB0ZWVQcmVkZWNlc3Nvcik7CisgICAg
dm9pZCBjb25maWd1cmVBdWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0JpbiwgR3N0RWxlbWVudCog
YXVkaW9TaW5rKTsKIAogICAgIHZvaWQgcHJvdmlkZUlucHV0KEF1ZGlvQnVzKiwgc2l6ZV90IGZy
YW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDbGllbnQoQXVkaW9Tb3VyY2VQ
cm92aWRlckNsaWVudCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDUzY2E3Yzc0YTI2YmNlYTdhOTI4YmUyYmU1
MTIzMWEzNzQ1OThhNTIuLjcwMzI2MTEzMzUzMjhjNDgxODYyOGU1ZTViYmMzMmVmZWFmNjhmNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKQEAgLTE0NTUsNiArMTQ1NSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyOjpzaW11bGF0ZUF1ZGlv
SW50ZXJydXB0aW9uKCkKIAogICAgIG1fcHJpdmF0ZS0+c2ltdWxhdGVBdWRpb0ludGVycnVwdGlv
bigpOwogfQorCitNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGUgTWVkaWFQbGF5
ZXI6OmF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNsaWVudCgpLm1l
ZGlhUGxheWVyQXVkaW9SZW5kZXJpbmdNb2RlKCk7Cit9CiAjZW5kaWYKIAogdm9pZCBNZWRpYVBs
YXllcjo6YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQpAQCAtMTY5NCw2ICsxNjk5LDIxIEBAIFN0
cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9s
aWN5IGVudW1lcmF0aW9uVmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXpl
X3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKIH0KIAorI2lmIFVTRShHU1RSRUFNRVIpCitTdHJpbmcg
Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJp
bmdNb2RlIGVudW1lcmF0aW9uVmFsdWUpCit7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gdmFsdWVzW10gPSB7CisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBM
KCJIb3N0IiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJJbnRlcm5hbCIpLAor
ICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiRXh0ZXJuYWwiKSwKKyAgICB9OworICAg
IHN0YXRpY19hc3NlcnQoIXN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6QXVk
aW9SZW5kZXJpbmdNb2RlOjpIb3N0KSwgIk1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5n
TW9kZTo6SG9zdERlZmF1bHQgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdN
b2RlOjpJbnRlcm5hbCkgPT0gMSwgIk1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9k
ZTo6SW50ZXJuYWxNaXhpbmcgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdN
b2RlOjpFeHRlcm5hbCkgPT0gMiwgIk1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9k
ZTo6RXh0ZXJuYWwgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7
CisgICAgcmV0dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUp
XTsKK30KKyNlbmRpZgogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGVhMjU3ZjEyYWNmMDllMGJiZGZiMzI5YjExNTNj
Y2U1MWFjYWY0ZjMuLjdlYTBmY2Y0NTk0NzhkOWY4NzJhMWU5MWRiYTA2MTgxMTVjYTI4OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAt
MjYyLDYgKzI2Miw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2sm
KSB7IH07CisgICAgdmlydHVhbCBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGUg
bWVkaWFQbGF5ZXJBdWRpb1JlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVBsYXll
ckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGU6Okhvc3Q7IH0KICNlbmRpZgogCiAgICAgdmlydHVh
bCBib29sIG1lZGlhUGxheWVyU2hvdWxkRGlzYWJsZVNsZWVwKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KQEAgLTI3Nyw2ICsyNzgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCB2b2lk
KiBtZWRpYVBsYXllckxvZ0lkZW50aWZpZXIoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmly
dHVhbCBjb25zdCBMb2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgPSAwOwogI2VuZGlmCisKKyAg
ICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJTaG91bGRJbnRlcm5hbGx5UmVuZGVyQXVkaW8oKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiB9OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVBs
YXllciA6IHB1YmxpYyBNZWRpYVBsYXllckVudW1zLCBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVBs
YXllcj4gewpAQCAtNjI0LDYgKzYyNyw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShHU1RSRUFNRVIp
CiAgICAgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0
YWlscywgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFs
bE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smIGNhbGxiYWNrKSB7IGNsaWVudCgpLnJlcXVlc3RJbnN0
YWxsTWlzc2luZ1BsdWdpbnMoZGV0YWlscywgZGVzY3JpcHRpb24sIGNhbGxiYWNrKTsgfQorICAg
IE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZSBhdWRpb1JlbmRlcmluZ01vZGUo
KSBjb25zdDsKICNlbmRpZgogCiAgICAgY29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
KiBwbGF5ZXJQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1z
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgK
aW5kZXggYTAwMTU5NzFhODIyYjQ2ZjdhY2MxYjg4MDMwMzhhMjcxYTQ2NzFkOS4uYjE0NDg2OWJl
YmY3NWRjNDg2ZTIyMTI3ZDYzYjM3ZDAyZWYwZDE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaApAQCAtMTA2LDYgKzEwNiwx
MyBAQCBwdWJsaWM6CiAgICAgICAgIFRhcmdldFR5cGVUVk91dAogICAgIH07CiAKKyNpZiBVU0Uo
R1NUUkVBTUVSKQorICAgIGVudW0gY2xhc3MgQXVkaW9SZW5kZXJpbmdNb2RlIDogdWludDhfdCB7
CisgICAgICAgIEhvc3QsCisgICAgICAgIEludGVybmFsLAorICAgICAgICBFeHRlcm5hbAorICAg
IH07CisjZW5kaWYKIH07CiAKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRp
YVBsYXllckVudW1zOjpSZWFkeVN0YXRlKTsKQEAgLTExNCw2ICsxMjEsOSBAQCBTdHJpbmcgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCk7CiBTdHJp
bmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlKTsKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1z
OjpCdWZmZXJpbmdQb2xpY3kpOwogCisjaWYgVVNFKEdTVFJFQU1FUikKK1N0cmluZyBjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGUp
OworI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIApAQCAtMjQwLDQgKzI1MCwyMyBA
QCB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgID47CiB9OwogCisjaWYgVVNFKEdTVFJF
QU1FUikKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlPiB7Cit1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZSwKKyAgICBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGU6Okhvc3QsCisgICAg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlOjpJbnRlcm5hbCwK
KyAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGU6OkV4dGVy
bmFsCisgICAgPjsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlPiB7CisgICAgc3RhdGljIFdU
Rjo6U3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkF1ZGlv
UmVuZGVyaW5nTW9kZSBwb2xpY3kpCisgICAgeworICAgICAgICByZXR1cm4gY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcocG9saWN5KTsKKyAgICB9Cit9OworI2VuZGlmCisKIH07IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJBdWRpb01peGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb01peGVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZjgwZThlN2NmODJiZTBkZGZlYWI1YmMxMmFmZTFlZjA2MzBkMjJiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1
ZGlvTWl4ZXIuY3BwCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IElnYWxpYSBTLkwKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyQXVkaW9N
aXhlci5oIgorCisjaWYgVVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1v
bi5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMod2Via2l0X21lZGlhX2dzdF9hdWRpb19t
aXhlcl9kZWJ1Zyk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCB3ZWJraXRfbWVkaWFfZ3N0X2F1
ZGlvX21peGVyX2RlYnVnCisKK2Jvb2wgR1N0cmVhbWVyQXVkaW9NaXhlcjo6aXNBdmFpbGFibGUo
KQoreworICAgIHJldHVybiB3ZWJraXRHc3RDaGVja1ZlcnNpb24oMSwgMTcsIDIpICYmIGlzR1N0
cmVhbWVyUGx1Z2luQXZhaWxhYmxlKCJpbnRlciIpICYmIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxh
YmxlKCJhdWRpb21peGVyIik7Cit9CisKK0dTdHJlYW1lckF1ZGlvTWl4ZXImIEdTdHJlYW1lckF1
ZGlvTWl4ZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEdTdHJl
YW1lckF1ZGlvTWl4ZXI+IHNoYXJlZEluc3RhbmNlOworICAgIHJldHVybiBzaGFyZWRJbnN0YW5j
ZTsKK30KKworR1N0cmVhbWVyQXVkaW9NaXhlcjo6R1N0cmVhbWVyQXVkaW9NaXhlcigpCit7Cisg
ICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X21lZGlhX2dzdF9hdWRpb19taXhlcl9k
ZWJ1ZywgIndlYmtpdGF1ZGlvbWl4ZXIiLCAwLCAiV2ViS2l0IEdTdHJlYW1lciBhdWRpbyBtaXhl
ciIpOworICAgIG1fcGlwZWxpbmUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInBpcGVsaW5l
IiwgIndlYmtpdGF1ZGlvbWl4ZXIiKTsKKyAgICBjb25uZWN0U2ltcGxlQnVzTWVzc2FnZUNhbGxi
YWNrKG1fcGlwZWxpbmUuZ2V0KCkpOworCisgICAgbV9taXhlciA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfbWFrZSgiYXVkaW9taXhlciIsIG51bGxwdHIpOworICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2lu
ayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b2F1ZGlvc2luayIsIG51bGxwdHIpOwor
CisgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIG1f
bWl4ZXIuZ2V0KCksIGF1ZGlvU2luaywgbnVsbHB0cik7CisgICAgZ3N0X2VsZW1lbnRfbGluayht
X21peGVyLmdldCgpLCBhdWRpb1NpbmspOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3Bp
cGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUkVBRFkpOworfQorCit2b2lkIEdTdHJlYW1lckF1ZGlv
TWl4ZXI6OmVuc3VyZVN0YXRlKEdzdFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKQoreworI2lmIEdT
VF9DSEVDS19WRVJTSU9OKDEsIDE0LCAwKQorICAgIEdTVF9ERUJVR19PQkpFQ1QobV9waXBlbGlu
ZS5nZXQoKSwgIkhhbmRsaW5nICVzIHRyYW5zaXRpb24gKCV1IG1peGVyIHBhZHMpIiwgZ3N0X3N0
YXRlX2NoYW5nZV9nZXRfbmFtZShzdGF0ZUNoYW5nZSksIG1fbWl4ZXItPm51bXNpbmtwYWRzKTsK
KyNlbmRpZgorICAgIHN3aXRjaCAoc3RhdGVDaGFuZ2UpIHsKKyAgICBjYXNlIEdTVF9TVEFURV9D
SEFOR0VfUkVBRFlfVE9fUEFVU0VEOgorICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9w
aXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1BBVVNFRCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUExBWUlORzoKKyAgICAgICAgZ3N0X2VsZW1l
bnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QTEFZSU5HKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BMQVlJTkdfVE9fUEFVU0VEOgor
ICAgICAgICBpZiAobV9taXhlci0+bnVtc2lua3BhZHMgPT0gMSkKKyAgICAgICAgICAgIGdzdF9l
bGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWToK
KyAgICAgICAgaWYgKG1fbWl4ZXItPm51bXNpbmtwYWRzID09IDEpCisgICAgICAgICAgICBnc3Rf
ZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1JFQURZKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05VTEw6Cisg
ICAgICAgIGlmIChtX21peGVyLT5udW1zaW5rcGFkcyA9PSAxKQorICAgICAgICAgICAgZ3N0X2Vs
ZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitHUmVm
UHRyPEdzdFBhZD4gR1N0cmVhbWVyQXVkaW9NaXhlcjo6cmVnaXN0ZXJQcm9kdWNlcihHc3RFbGVt
ZW50KiBpbnRlcmF1ZGlvU2luaykKK3sKKyAgICBHc3RFbGVtZW50KiBzcmMgPSBnc3RfZWxlbWVu
dF9mYWN0b3J5X21ha2UoImludGVyYXVkaW9zcmMiLCBudWxscHRyKTsKKyAgICBnX29iamVjdF9z
ZXQoc3JjLCAiY2hhbm5lbCIsIEdTVF9FTEVNRU5UX05BTUUoaW50ZXJhdWRpb1NpbmspLCBudWxs
cHRyKTsKKyAgICBnX29iamVjdF9zZXQoaW50ZXJhdWRpb1NpbmssICJjaGFubmVsIiwgR1NUX0VM
RU1FTlRfTkFNRShpbnRlcmF1ZGlvU2luayksIG51bGxwdHIpOworCisgICAgZ3N0X2Jpbl9hZGQo
R1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCBzcmMpOworCisgICAgYm9vbCBzaG91bGRT
dGFydCA9ICFtX21peGVyLT5udW1zaW5rcGFkczsKKworICAgIGF1dG8gbWl4ZXJQYWQgPSBhZG9w
dEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3JlcXVlc3RfcGFkKG1fbWl4ZXIuZ2V0KCksICJzaW5rXyV1
IikpOworICAgIGF1dG8gc3JjUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNf
cGFkKHNyYywgInNyYyIpKTsKKyAgICBnc3RfcGFkX2xpbmsoc3JjUGFkLmdldCgpLCBtaXhlclBh
ZC5nZXQoKSk7CisKKyAgICBpZiAoc2hvdWxkU3RhcnQpCisgICAgICAgIGdzdF9lbGVtZW50X3Nl
dF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUkVBRFkpOworICAgIGVsc2UKKyAg
ICAgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChzcmMpOworCisgICAgR1NU
X0RFQlVHX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAiUmVnaXN0ZXJlZCBhdWRpbyBwcm9kdWNl
ciAlIiBHU1RfUFRSX0ZPUk1BVCwgbWl4ZXJQYWQuZ2V0KCkpOworICAgIEdTVF9ERUJVR19CSU5f
VE9fRE9UX0ZJTEVfV0lUSF9UUyhHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIEdTVF9E
RUJVR19HUkFQSF9TSE9XX0FMTCwgImF1ZGlvLW1peGVyLWFmdGVyLXByb2R1Y2VyLXJlZ2lzdHJh
dGlvbiIpOworICAgIHJldHVybiBtaXhlclBhZDsKK30KKwordm9pZCBHU3RyZWFtZXJBdWRpb01p
eGVyOjp1bnJlZ2lzdGVyUHJvZHVjZXIoY29uc3QgR1JlZlB0cjxHc3RQYWQ+JiBtaXhlclBhZCkK
K3sKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJVbnJlZ2lzdGVyaW5n
IGF1ZGlvIHByb2R1Y2VyICUiIEdTVF9QVFJfRk9STUFULCBtaXhlclBhZC5nZXQoKSk7CisKKyAg
ICBhdXRvIHBlZXIgPSBhZG9wdEdSZWYoZ3N0X3BhZF9nZXRfcGVlcihtaXhlclBhZC5nZXQoKSkp
OworICAgIGF1dG8gaW50ZXJhdWRpb1NyYyA9IGFkb3B0R1JlZihnc3RfcGFkX2dldF9wYXJlbnRf
ZWxlbWVudChwZWVyLmdldCgpKSk7CisgICAgR1NUX0xPR19PQkpFQ1QobV9waXBlbGluZS5nZXQo
KSwgImludGVyYXVkaW9zcmM6ICUiIEdTVF9QVFJfRk9STUFULCBpbnRlcmF1ZGlvU3JjLmdldCgp
KTsKKworICAgIGdzdF9lbGVtZW50X3NldF9sb2NrZWRfc3RhdGUoaW50ZXJhdWRpb1NyYy5nZXQo
KSwgdHJ1ZSk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGludGVyYXVkaW9TcmMuZ2V0KCks
IEdTVF9TVEFURV9OVUxMKTsKKworICAgIGdzdF9wYWRfdW5saW5rKHBlZXIuZ2V0KCksIG1peGVy
UGFkLmdldCgpKTsKKyAgICBnc3RfZWxlbWVudF9yZWxlYXNlX3JlcXVlc3RfcGFkKG1fbWl4ZXIu
Z2V0KCksIG1peGVyUGFkLmdldCgpKTsKKworICAgIGdzdF9iaW5fcmVtb3ZlKEdTVF9CSU5fQ0FT
VChtX3BpcGVsaW5lLmdldCgpKSwgaW50ZXJhdWRpb1NyYy5nZXQoKSk7CisKKyAgICBpZiAoIW1f
bWl4ZXItPm51bXNpbmtwYWRzKQorICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBl
bGluZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworCisgICAgR1NUX0RFQlVHX0JJTl9UT19ET1Rf
RklMRV9XSVRIX1RTKEdTVF9CSU5fQ0FTVChtX3BpcGVsaW5lLmdldCgpKSwgR1NUX0RFQlVHX0dS
QVBIX1NIT1dfQUxMLCAiYXVkaW8tbWl4ZXItYWZ0ZXItcHJvZHVjZXItdW5yZWdpc3RyYXRpb24i
KTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMWUyMTZmZTMwMTc2M2ZjMWE4NDEzZDgzOWU4M2IxNjllNzJlMzM4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckF1ZGlvTWl4ZXIuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIElnYWxpYSBTLkwKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNs
dWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHU3RyZWFtZXJBdWRpb01peGVyIHsKKyAgICBmcmll
bmQgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVhbWVyQXVkaW9NaXhlcj47CitwdWJsaWM6CisgICAgc3Rh
dGljIGJvb2wgaXNBdmFpbGFibGUoKTsKKyAgICBzdGF0aWMgR1N0cmVhbWVyQXVkaW9NaXhlciYg
c2luZ2xldG9uKCk7CisKKyAgICB2b2lkIGVuc3VyZVN0YXRlKEdzdFN0YXRlQ2hhbmdlKTsKKyAg
ICBHUmVmUHRyPEdzdFBhZD4gcmVnaXN0ZXJQcm9kdWNlcihHc3RFbGVtZW50Kik7CisgICAgdm9p
ZCB1bnJlZ2lzdGVyUHJvZHVjZXIoY29uc3QgR1JlZlB0cjxHc3RQYWQ+Jik7CisKK3ByaXZhdGU6
CisgICAgR1N0cmVhbWVyQXVkaW9NaXhlcigpOworCisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBt
X3BpcGVsaW5lOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9taXhlcjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwCmluZGV4IDQ0MTJjZDViYzBhNmQwMjNhNGFiM2YwMGY0YjkxNGY4ZTBl
NGI2YTguLmQyNGU0NTVmNDJlOThkNmRmYmM0MWY4ZjgxMDE2NmFkNTc3N2YwNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC0yNCw5ICsyNCwxMSBAQAogI2lmIFVTRShHU1RSRUFN
RVIpCiAKICNpbmNsdWRlICJHTFZpZGVvU2lua0dTdHJlYW1lci5oIgorI2luY2x1ZGUgIkdTdHJl
YW1lckF1ZGlvTWl4ZXIuaCIKICNpbmNsdWRlICJHc3RBbGxvY2F0b3JGYXN0TWFsbG9jLmgiCiAj
aW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUg
IldlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5oIgogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby1p
bmZvLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPG11dGV4PgpAQCAtMzIzLDYg
KzMyNSw4IEBAIGJvb2wgaW5pdGlhbGl6ZUdTdHJlYW1lckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVu
dHMoKQogICAgICAgICBnc3RfZWxlbWVudF9yZWdpc3RlcigwLCAid2Via2l0Z2x2aWRlb3Npbmsi
LCBHU1RfUkFOS19QUklNQVJZLCBXRUJLSVRfVFlQRV9HTF9WSURFT19TSU5LKTsKICNlbmRpZgog
I2VuZGlmCisgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgYXV0b2F1ZGlvc2luayB0byBhdXRvcGx1
ZyBvdXIgc2luay4KKyAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIoMCwgIndlYmtpdGF1ZGlv
c2luayIsIEdTVF9SQU5LX05PTkUsIFdFQktJVF9UWVBFX0FVRElPX1NJTkspOwogICAgIH0pOwog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDE2LDYgKzQyMCwzMiBAQCBib29sIGlzR1N0cmVhbWVy
UGx1Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgcmV0dXJuIHBsdWdpbjsKIH0K
IAorR3N0RWxlbWVudCogY3JlYXRlQXVkaW9TaW5rRm9yUG9saWN5KE1lZGlhUGxheWVyRW51bXM6
OkF1ZGlvUmVuZGVyaW5nTW9kZSBhdWRpb1JlbmRlcmluZ01vZGUpCit7CisgICAgR3N0RWxlbWVu
dCogYXVkaW9TaW5rID0gbnVsbHB0cjsKKyAgICBzd2l0Y2ggKGF1ZGlvUmVuZGVyaW5nTW9kZSkg
eworICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlOjpFeHRlcm5h
bDoKKyAgICAgICAgYXVkaW9TaW5rID0gd2Via2l0QXVkaW9TaW5rTmV3KCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlOjpJbnRl
cm5hbDoKKyAgICAgICAgaWYgKEdTdHJlYW1lckF1ZGlvTWl4ZXI6OmlzQXZhaWxhYmxlKCkpIHsK
KyAgICAgICAgICAgIGF1ZGlvU2luayA9IHdlYmtpdEF1ZGlvU2lua05ld0ludGVybmFsKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBHU1RfV0FSTklORygiSW50ZXJu
YWwgYXVkaW8gbWl4aW5nIHJlcXVlc3QgY2Fubm90IGJlIGZ1bGZpbGxlZC4gRmFsbGluZyBiYWNr
IHRvIGF1dG9hdWRpb3NpbmsiKTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBNZWRp
YVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGU6Okhvc3Q6CisgICAgICAgIGF1ZGlvU2lu
ayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b2F1ZGlvc2luayIsIG51bGxwdHIpOwor
ICAgICAgICBpZiAoIWF1ZGlvU2luaykgeworICAgICAgICAgICAgR1NUX1dBUk5JTkcoIkdTdHJl
YW1lcidzIGF1dG9hdWRpb3Npbmsgbm90IGZvdW5kLiBQbGVhc2UgY2hlY2sgeW91ciBnc3QtcGx1
Z2lucy1nb29kIGluc3RhbGxhdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIGF1ZGlvU2luazsK
K30KKwogfQogCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
aAppbmRleCAxZmRhMTA4ZTA5NjRhM2FjZmIxZmYyZTYxNzAxYjNmN2Q4Y2Y5MDczLi4xMDBlMDgz
N2FjNDg4OTM5MjY1NWRmZTUxOTYwYTQ5ZmZhYWNiODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1v
bi5oCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAi
R1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkdVbmlxdWVQdHJHU3RyZWFtZXIuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXllckVudW1zLmgiCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1
ZGUgPGdzdC92aWRlby92aWRlby1mb3JtYXQuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8t
aW5mby5oPgpAQCAtMjkyLDYgKzI5Myw4IEBAIGVudW0gY2xhc3MgR3N0VmlkZW9EZWNvZGVyUGxh
dGZvcm0geyBJbXhWUFUsIFZpZGVvNExpbnV4LCBPcGVuTUFYIH07CiAKIGJvb2wgaXNHU3RyZWFt
ZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSk7CiAKK0dzdEVsZW1lbnQqIGNyZWF0
ZUF1ZGlvU2lua0ZvclBvbGljeShNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGUp
OworCiB9CiAKICNpZm5kZWYgR1NUX0JVRkZFUl9EVFNfT1JfUFRTCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1VuaXF1ZVB0ckdTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dVbmlxdWVQ
dHJHU3RyZWFtZXIuaAppbmRleCBhYTA3NzQ4ZGQ3NTY1YjBhNjgyN2YzM2YzODMyYzVkYWNiZjRl
NWQwLi5iZjc0ZWNmMDJjYzIyZjYwNmViY2I5ZmU4NWMwMzRiMjZjNDA2NDQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1VuaXF1ZVB0ckdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HVW5pcXVlUHRyR1N0cmVhbWVyLmgKQEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSA8d3Bl
L2V4dGVuc2lvbnMvdmlkZW8tcGxhbmUtZGlzcGxheS1kbWFidWYuaD4KICNlbmRpZgogCisjaWYg
ZGVmaW5lZChCVUlMRElOR19XZWJDb3JlKSAmJiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNL
RU5EX0ZET19BVURJT19FWFRFTlNJT04pCisjaW5jbHVkZSA8d3BlL2V4dGVuc2lvbnMvYXVkaW8u
aD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogV1RGX0RFRklORV9HUFRSX0RFTEVURVIo
R3N0U3RydWN0dXJlLCBnc3Rfc3RydWN0dXJlX2ZyZWUpCkBAIC00OSw2ICs1Myw5IEBAIFdURl9E
RUZJTkVfR1BUUl9ERUxFVEVSKEdzdEF1ZGlvQ29udmVydGVyLCBnc3RfYXVkaW9fY29udmVydGVy
X2ZyZWUpCiBXVEZfREVGSU5FX0dQVFJfREVMRVRFUihzdHJ1Y3Qgd3BlX3ZpZGVvX3BsYW5lX2Rp
c3BsYXlfZG1hYnVmX3NvdXJjZSwgd3BlX3ZpZGVvX3BsYW5lX2Rpc3BsYXlfZG1hYnVmX3NvdXJj
ZV9kZXN0cm95KQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEJVSUxESU5HX1dlYkNvcmUpICYmIFBM
QVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTikKK1dURl9E
RUZJTkVfR1BUUl9ERUxFVEVSKHN0cnVjdCB3cGVfYXVkaW9fc291cmNlLCB3cGVfYXVkaW9fc291
cmNlX2Rlc3Ryb3kpCisjZW5kaWYKIH0KIAogI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGRlYmJi
N2I1MTQ2MzBkYTEzY2MyNDFhYzc4NjI3NTdiZGJmZWI4ZTUuLjExOTFmYmExZTM4YWEzNzRjMzc1
NmU2Yjg0YTc0NWZhNjY5NTJiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVk
ZSAiR1N0cmVhbWVyQXVkaW9NaXhlci5oIgogI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgog
I2luY2x1ZGUgIkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5oIgogI2luY2x1ZGUgIkhUVFBIZWFk
ZXJOYW1lcy5oIgpAQCAtNDMsNiArNDQsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlZpZGVvU2lua0dTdHJlYW1lci5o
IgorI2luY2x1ZGUgIldlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5oIgogI2luY2x1ZGUgIldlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVh
bWVyLmgiCiAjaW5jbHVkZSAiSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
LmgiCkBAIC0yMzYsMTAgKzIzOCw5IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6fk1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcigpCiAgICAgaWYgKFdFQktJVF9JU19XRUJfU1JDKG1f
c291cmNlLmdldCgpKSAmJiBHU1RfT0JKRUNUX1BBUkVOVChtX3NvdXJjZS5nZXQoKSkpCiAgICAg
ICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhHU1RfRUxFTUVOVF9QQVJF
TlQobV9zb3VyY2UuZ2V0KCkpLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPih1cmlEZWNvZGVC
aW5FbGVtZW50QWRkZWRDYWxsYmFjayksIHRoaXMpOwogCi0gICAgaWYgKG1fYXV0b0F1ZGlvU2lu
aykgewotICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoR19PQkpF
Q1QobV9hdXRvQXVkaW9TaW5rLmdldCgpKSwKLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
Z3BvaW50ZXI+KHNldEF1ZGlvU3RyZWFtUHJvcGVydGllc0NhbGxiYWNrKSwgdGhpcyk7Ci0gICAg
fQorICAgIGF1dG8qIHNpbmsgPSBhdWRpb1NpbmsoKTsKKyAgICBpZiAoc2luayAmJiAhV0VCS0lU
X0lTX0FVRElPX1NJTksoc2luaykpCisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5l
Y3RfYnlfZnVuYyhHX09CSkVDVChzaW5rKSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4oc2V0
QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzQ2FsbGJhY2spLCB0aGlzKTsKIAogICAgIG1fcmVhZHlUaW1l
ckhhbmRsZXIuc3RvcCgpOwogICAgIGZvciAoYXV0byYgbWlzc2luZ1BsdWdpbkNhbGxiYWNrIDog
bV9taXNzaW5nUGx1Z2luQ2FsbGJhY2tzKSB7CkBAIC01MTgsMTcgKzUxOSwxNiBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2Vlayhjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGlt
ZSkKIAogICAgIC8vIEF2b2lkIHVzZWxlc3Mgc2Vla2luZy4KICAgICBpZiAobWVkaWFUaW1lID09
IGN1cnJlbnRNZWRpYVRpbWUoKSkgewotICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5l
KCksICJbU2Vla10gc2VlayB0byBFT1MgcG9zaXRpb24gdW5oYW5kbGVkIik7CisgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIltTZWVrXSBBbHJlYWR5IGF0IHJlcXVlc3RlZCBw
b3NpdGlvbi4gQWJvcnRpbmcuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBNZWRp
YVRpbWUgdGltZSA9IHN0ZDo6bWluKG1lZGlhVGltZSwgZHVyYXRpb25NZWRpYVRpbWUoKSk7Ci0K
ICAgICBpZiAobV9pc0xpdmVTdHJlYW0pIHsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBl
bGluZSgpLCAiW1NlZWtdIExpdmUgc3RyZWFtIHNlZWsgdW5oYW5kbGVkIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBNZWRpYVRpbWUgdGltZSA9IHN0ZDo6bWluKG1lZGlhVGltZSwg
ZHVyYXRpb25NZWRpYVRpbWUoKSk7CiAgICAgR1NUX0lORk9fT0JKRUNUKHBpcGVsaW5lKCksICJb
U2Vla10gc2Vla2luZyB0byAlcyIsIHRvU3RyaW5nKHRpbWUpLnV0ZjgoKS5kYXRhKCkpOwogCiAg
ICAgaWYgKG1faXNTZWVraW5nKSB7CkBAIC0xMDA0LDE3ICsxMDA0LDE2IEBAIHN0YXRpYyB2b2lk
IHNldFN5bmNPbkNsb2NrKEdzdEVsZW1lbnQgKmVsZW1lbnQsIGJvb2wgc3luYykKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFHU1RfSVNfQklOKGVsZW1lbnQpKSB7Ci0gICAgICAgIGdfb2Jq
ZWN0X3NldChlbGVtZW50LCAic3luYyIsIHN5bmMsIE5VTEwpOworICAgICAgICBnX29iamVjdF9z
ZXQoZWxlbWVudCwgInN5bmMiLCBzeW5jLCBudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIEdzdEl0ZXJhdG9yKiBpdCA9IGdzdF9iaW5faXRlcmF0ZV9zaW5rcyhHU1RfQklO
KGVsZW1lbnQpKTsKLSAgICB3aGlsZSAoZ3N0X2l0ZXJhdG9yX2ZvcmVhY2goaXQsIChHc3RJdGVy
YXRvckZvcmVhY2hGdW5jdGlvbikoW10oY29uc3QgR1ZhbHVlKiBpdGVtLCB2b2lkKiBzeW5jUHRy
KSB7CisgICAgR1VuaXF1ZVB0cjxHc3RJdGVyYXRvcj4gaXRlcmF0b3IoZ3N0X2Jpbl9pdGVyYXRl
X3NpbmtzKEdTVF9CSU5fQ0FTVChlbGVtZW50KSkpOworICAgIHdoaWxlIChnc3RfaXRlcmF0b3Jf
Zm9yZWFjaChpdGVyYXRvci5nZXQoKSwgc3RhdGljX2Nhc3Q8R3N0SXRlcmF0b3JGb3JlYWNoRnVu
Y3Rpb24+KFtdKGNvbnN0IEdWYWx1ZSogaXRlbSwgdm9pZCogc3luY1B0cikgewogICAgICAgICBi
b29sKiBzeW5jID0gc3RhdGljX2Nhc3Q8Ym9vbCo+KHN5bmNQdHIpOwotICAgICAgICBzZXRTeW5j
T25DbG9jayhHU1RfRUxFTUVOVChnX3ZhbHVlX2dldF9vYmplY3QoaXRlbSkpLCAqc3luYyk7Cisg
ICAgICAgIHNldFN5bmNPbkNsb2NrKEdTVF9FTEVNRU5UX0NBU1QoZ192YWx1ZV9nZXRfb2JqZWN0
KGl0ZW0pKSwgKnN5bmMpOwogICAgIH0pLCAmc3luYykgPT0gR1NUX0lURVJBVE9SX1JFU1lOQykK
LSAgICAgICAgZ3N0X2l0ZXJhdG9yX3Jlc3luYyhpdCk7Ci0gICAgZ3N0X2l0ZXJhdG9yX2ZyZWUo
aXQpOworICAgICAgICBnc3RfaXRlcmF0b3JfcmVzeW5jKGl0ZXJhdG9yLmdldCgpKTsKIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN5bmNPbkNsb2NrKGJvb2wgc3luYykK
QEAgLTEzNTMsMjYgKzEzNTIsMzEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxl
bWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewot
ICAgIG1fYXV0b0F1ZGlvU2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b2F1ZGlv
c2luayIsIG51bGxwdHIpOwotICAgIGlmICghbV9hdXRvQXVkaW9TaW5rKSB7Ci0gICAgICAgIEdT
VF9XQVJOSU5HKCJHU3RyZWFtZXIncyBhdXRvYXVkaW9zaW5rIG5vdCBmb3VuZC4gUGxlYXNlIGNo
ZWNrIHlvdXIgZ3N0LXBsdWdpbnMtZ29vZCBpbnN0YWxsYXRpb24iKTsKKyAgICBHU1RfSU5GT19P
QkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIkNyZWF0aW5nIGF1ZGlvIHNpbmsgZm9yICVzIHJlbmRl
cmluZyBwb2xpY3kiLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhtX3BsYXllci0+YXVkaW9S
ZW5kZXJpbmdNb2RlKCkpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgR3N0RWxlbWVudCogYXVkaW9T
aW5rID0gY3JlYXRlQXVkaW9TaW5rRm9yUG9saWN5KG1fcGxheWVyLT5hdWRpb1JlbmRlcmluZ01v
ZGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYXVkaW9TaW5rKTsKKyAgICBpZiAoIWF1ZGlvU2lu
aykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQogCi0gICAgZ19zaWduYWxfY29ubmVj
dF9zd2FwcGVkKG1fYXV0b0F1ZGlvU2luay5nZXQoKSwgImNoaWxkLWFkZGVkIiwgR19DQUxMQkFD
SyhzZXRBdWRpb1N0cmVhbVByb3BlcnRpZXNDYWxsYmFjayksIHRoaXMpOworICAgIGlmICghV0VC
S0lUX0lTX0FVRElPX1NJTksoYXVkaW9TaW5rKSkKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdF9z
d2FwcGVkKGF1ZGlvU2luaywgImNoaWxkLWFkZGVkIiwgR19DQUxMQkFDSyhzZXRBdWRpb1N0cmVh
bVByb3BlcnRpZXNDYWxsYmFjayksIHRoaXMpOwogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAg
ICBHc3RFbGVtZW50KiBhdWRpb1NpbmtCaW4gPSBnc3RfYmluX25ldygiYXVkaW8tc2luayIpOwog
ICAgIGVuc3VyZUF1ZGlvU291cmNlUHJvdmlkZXIoKTsKLSAgICBtX2F1ZGlvU291cmNlUHJvdmlk
ZXItPmNvbmZpZ3VyZUF1ZGlvQmluKGF1ZGlvU2lua0JpbiwgbnVsbHB0cik7CisgICAgbV9hdWRp
b1NvdXJjZVByb3ZpZGVyLT5jb25maWd1cmVBdWRpb0JpbihhdWRpb1NpbmtCaW4sIGF1ZGlvU2lu
ayk7CiAgICAgcmV0dXJuIGF1ZGlvU2lua0JpbjsKICNlbHNlCi0gICAgcmV0dXJuIG1fYXV0b0F1
ZGlvU2luay5nZXQoKTsKKyAgICByZXR1cm4gYXVkaW9TaW5rOwogI2VuZGlmCiB9CiAKIEdzdEVs
ZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9TaW5rKCkgY29uc3QKIHsK
KyAgICBpZiAoIW1fcGlwZWxpbmUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgR3N0
RWxlbWVudCogc2luazsKICAgICBnX29iamVjdF9nZXQobV9waXBlbGluZS5nZXQoKSwgImF1ZGlv
LXNpbmsiLCAmc2luaywgbnVsbHB0cik7CiAgICAgcmV0dXJuIHNpbms7CkBAIC0yNzU4LDYgKzI3
NjIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJp
bihjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJgogICAgIHN0YXRpYyBBdG9taWM8dWludDMy
X3Q+IHBpcGVsaW5lSWQ7CiAgICAgc2V0UGlwZWxpbmUoZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtl
KHBsYXliaW5OYW1lLAogICAgICAgICAocGlwZWxpbmVOYW1lLmlzRW1wdHkoKSA/IG1ha2VTdHJp
bmcoIm1lZGlhLXBsYXllci0iLCBwaXBlbGluZUlkLmV4Y2hhbmdlQWRkKDEpKSA6IHBpcGVsaW5l
TmFtZSkudXRmOCgpLmRhdGEoKSkpOworCiAgICAgc2V0U3RyZWFtVm9sdW1lRWxlbWVudChHU1Rf
U1RSRUFNX1ZPTFVNRShtX3BpcGVsaW5lLmdldCgpKSk7CiAKICAgICBHU1RfSU5GT19PQkpFQ1Qo
cGlwZWxpbmUoKSwgIlVzaW5nIGxlZ2FjeSBwbGF5YmluIGVsZW1lbnQ6ICVzIiwgYm9vbEZvclBy
aW50aW5nKG1faXNMZWdhY3lQbGF5YmluKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmgKaW5kZXggMWVlYzliMjY5ZmZkZDZkMTljNDYwMTVmOTFjNDBiMzFi
ZWNjMDBkNy4uOTFlYTIxYTZmOTBhZDczZTJkMjJlZWUwODYwZmVmN2E1OGJjNzYzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtNTEzLDcgKzUx
Myw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyOwog
I2VuZGlmCi0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX2F1dG9BdWRpb1Npbms7CiAgICAgR1Jl
ZlB0cjxHc3RFbGVtZW50PiBtX2Rvd25sb2FkQnVmZmVyOwogICAgIFZlY3RvcjxSZWZQdHI8TWVk
aWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+PiBtX21pc3NpbmdQ
bHVnaW5DYWxsYmFja3M7CiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8QXVkaW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI+PiBtX2F1ZGlvVHJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
QXVkaW9TaW5rR1N0cmVhbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTU2OTkyYTJlNWU0NWQ1YjQxN2E5
NTMyMGZhZDA2MTY5MmUyMGJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5jcHAKQEAg
LTAsMCArMSwzNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTAorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuaCIKKwor
I2lmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlICJHU3RyZWFtZXJBdWRpb01peGVyLmgiCisj
aW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCisjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzaW5r
Lmg+CisjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+CisjaW5jbHVkZSA8
c3lzL21tYW4uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgorCisjaWYgUExBVEZP
Uk0oV1BFKSAmJiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorI2luY2x1ZGUg
IlBsYXRmb3JtRGlzcGxheS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheUxpYldQRS5oIgor
I2luY2x1ZGUgPHdwZS9leHRlbnNpb25zL2F1ZGlvLmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK3N0cnVjdCBfV2ViS2l0QXVkaW9TaW5rUHJpdmF0ZSB7CisgICAgR1Jl
ZlB0cjxHc3RFbGVtZW50PiBpbnRlcmF1ZGlvU2luazsKKyAgICBHUmVmUHRyPEdzdFBhZD4gbWl4
ZXJQYWQ7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiB2b2x1bWVFbGVtZW50OworICAgIEdSZWZQ
dHI8R3N0RWxlbWVudD4gYXBwc2luazsKKyAgICBnYm9vbGVhbiBlbmFibGVJbnRlcm5hbE1peGlu
ZzsKKyNpZiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJ
T04pCisgICAgR1VuaXF1ZVB0cjxzdHJ1Y3Qgd3BlX2F1ZGlvX3NvdXJjZT4gd3BlQXVkaW9Tb3Vy
Y2U7CisgICAgaW50IG1fc3RyZWFtSWQ7CisKKyAgICAvLyB3cGVfYXVkaW9fc291cmNlIHN0YXRl
OgorICAgIC8vIC0gR1NUX1NUQVRFX05VTEw6IG5vdCBzdGFydGVkIG9yIEVPUworICAgIC8vIC0g
R1NUX1NUQVRFX1BMQVlJTkc6IGF0IGxlYXN0IG9uZSBwYWNrZXQgd2FzIGVtaXR0ZWQKKyAgICAv
LyAtIEdTVF9TVEFURV9QQVVTRUQ6IHBhdXNlIG5vdGlmaWNhdGlvbiB3YXMgc2VudAorICAgIEdz
dFN0YXRlIHNvdXJjZVN0YXRlOworI2VuZGlmCit9OworCitlbnVtIHsKKyAgICBQUk9QXzAsCisg
ICAgUFJPUF9WT0xVTUUsCisgICAgUFJPUF9NVVRFLAorICAgIFBST1BfRU5BQkxFX0lOVEVSTkFM
X01JWElORywKK307CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzaW5rVGVtcGxhdGUg
PSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSgic2luayIsIEdTVF9QQURfU0lOSywgR1NUX1BBRF9B
TFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTKCJhdWRpby94LXJhdyIpKTsKKworR1NUX0RFQlVH
X0NBVEVHT1JZX1NUQVRJQyh3ZWJraXRfYXVkaW9fc2lua19kZWJ1Zyk7CisjZGVmaW5lIEdTVF9D
QVRfREVGQVVMVCB3ZWJraXRfYXVkaW9fc2lua19kZWJ1ZworCisjZGVmaW5lIHdlYmtpdF9hdWRp
b19zaW5rX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKK1dFQktJVF9ERUZJTkVfVFlQRV9XSVRI
X0NPREUoV2ViS2l0QXVkaW9TaW5rLCB3ZWJraXRfYXVkaW9fc2luaywgR1NUX1RZUEVfQklOLAor
ICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShHU1RfVFlQRV9TVFJFQU1fVk9MVU1FLCBudWxscHRy
KTsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRfYXVkaW9fc2lua19kZWJ1Zywg
IndlYmtpdGF1ZGlvc2luayIsIDAsICJ3ZWJraXQgYXVkaW8gc2luayBlbGVtZW50IikKKykKKwor
I2lmIFBMQVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTikK
K3N0cnVjdCBBdWRpb1BhY2tldEhvbGRlciB7CisgICAgZXhwbGljaXQgQXVkaW9QYWNrZXRIb2xk
ZXIoR3N0QnVmZmVyKiBidWZmZXIpCisgICAgeworICAgICAgICB0aGlzLT5idWZmZXIgPSBHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlcik7CisgICAgfQorCisgICAgfkF1ZGlvUGFj
a2V0SG9sZGVyKCkKKyAgICB7CisgICAgICAgIGlmIChmZCkKKyAgICAgICAgICAgIGNsb3NlKCpm
ZCk7CisgICAgfQorCisgICAgT3B0aW9uYWw8c3RkOjpwYWlyPHVpbnQzMl90LCBzaXplX3Q+PiBt
YXAoKQorICAgIHsKKyAgICAgICAgZmQgPSBtZW1mZF9jcmVhdGUoIndwZS1hdWRpby1idWZmZXIi
LCBNRkRfQ0xPRVhFQyk7CisgICAgICAgIGlmICgqZmQgPT0gLTEpCisgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGlmIChmdHJ1bmNhdGUoKmZkLCBidWZmZXItPnNp
emUoKSkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
IHNzaXplX3QgYnl0ZXNXcml0dGVuID0gd3JpdGUoKmZkLCBidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICBpZiAoYnl0ZXNXcml0dGVuIDwgMCkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0
ZXNXcml0dGVuKSAhPSBidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICAgICAgaWYgKGxzZWVrKCpmZCwgMCwgU0VFS19TRVQpID09IC0xKQorICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCpmZCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICB9
CisKKyAgICBPcHRpb25hbDxpbnQzMl90PiBmZDsKKyAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+IGJ1ZmZlcjsKK307CisKK3N0YXRpYyB2b2lkIHdlYktpdEF1ZGlvU2lua0hhbmRsZVNh
bXBsZShXZWJLaXRBdWRpb1NpbmsqIHNpbmssIEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSkK
K3sKKyAgICBzdHJ1Y3Qgd3BlX2F1ZGlvX3NvdXJjZSogd3BlQXVkaW9Tb3VyY2UgPSBzaW5rLT5w
cml2LT53cGVBdWRpb1NvdXJjZS5nZXQoKTsKKyAgICBzdGF0aWMgQXRvbWljPGludDMyX3Q+IHVu
aXF1ZUlkOworCisgICAgaWYgKHNpbmstPnByaXYtPnNvdXJjZVN0YXRlID09IEdTVF9TVEFURV9O
VUxMKSB7CisgICAgICAgIHNpbmstPnByaXYtPm1fc3RyZWFtSWQgPSB1bmlxdWVJZC5leGNoYW5n
ZUFkZCgxKTsKKyAgICAgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMoc2Ft
cGxlLmdldCgpKTsKKyAgICAgICAgR3N0QXVkaW9JbmZvIGluZm87CisgICAgICAgIGdzdF9hdWRp
b19pbmZvX2luaXQoJmluZm8pOworICAgICAgICBnc3RfYXVkaW9faW5mb19mcm9tX2NhcHMoJmlu
Zm8sIGNhcHMpOworICAgICAgICBjb25zdCBjaGFyKiBmb3JtYXQgPSBnc3RfYXVkaW9fZm9ybWF0
X3RvX3N0cmluZyhHU1RfQVVESU9fSU5GT19GT1JNQVQoJmluZm8pKTsKKyAgICAgICAgd3BlX2F1
ZGlvX3NvdXJjZV9zdGFydCh3cGVBdWRpb1NvdXJjZSwgc2luay0+cHJpdi0+bV9zdHJlYW1JZCwg
R1NUX0FVRElPX0lORk9fQ0hBTk5FTFMoJmluZm8pLCBmb3JtYXQsIEdTVF9BVURJT19JTkZPX1JB
VEUoJmluZm8pKTsKKyAgICAgICAgc2luay0+cHJpdi0+c291cmNlU3RhdGUgPSBHU1RfU1RBVEVf
UExBWUlORzsKKyAgICB9CisKKyAgICBhdXRvKiBob2xkZXIgPSBuZXcgQXVkaW9QYWNrZXRIb2xk
ZXIoZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKHNhbXBsZS5nZXQoKSkpOworICAgIGF1dG8gbWFwRGF0
YSA9IGhvbGRlci0+bWFwKCk7CisgICAgaWYgKCFtYXBEYXRhKSB7CisgICAgICAgIEdTVF9FUlJP
Ul9PQkpFQ1Qoc2luaywgIlVuYWJsZSB0byBwcmVwYXJlIHNoYXJlZCBhdWRpbyBidWZmZXIiKTsK
KyAgICAgICAgZGVsZXRlIGhvbGRlcjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB3cGVf
YXVkaW9fc291cmNlX3BhY2tldCh3cGVBdWRpb1NvdXJjZSwgc2luay0+cHJpdi0+bV9zdHJlYW1J
ZCwgbWFwRGF0YS0+Zmlyc3QsIG1hcERhdGEtPnNlY29uZCwgW10odm9pZCogZGF0YSkgeworICAg
ICAgICBhdXRvKiBob2xkZXIgPSByZWludGVycHJldF9jYXN0PEF1ZGlvUGFja2V0SG9sZGVyKj4o
ZGF0YSk7CisgICAgICAgIGRlbGV0ZSBob2xkZXI7CisgICAgfSwgaG9sZGVyKTsKK30KKyNlbmRp
ZgorCitzdGF0aWMgdm9pZCB3ZWJLaXRBdWRpb1NpbmtDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmpl
Y3QpCit7CisgICAgR1NUX0NBTExfUEFSRU5UKEdfT0JKRUNUX0NMQVNTLCBjb25zdHJ1Y3RlZCwg
KG9iamVjdCkpOworCisgICAgV2ViS2l0QXVkaW9TaW5rKiBzaW5rID0gV0VCS0lUX0FVRElPX1NJ
Tksob2JqZWN0KTsKKworICAgIGlmIChzaW5rLT5wcml2LT5lbmFibGVJbnRlcm5hbE1peGluZykg
eworICAgICAgICBzaW5rLT5wcml2LT5pbnRlcmF1ZGlvU2luayA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfbWFrZSgiaW50ZXJhdWRpb3NpbmsiLCBudWxscHRyKTsKKyAgICAgICAgaWYgKCFzaW5rLT5w
cml2LT5pbnRlcmF1ZGlvU2luaykgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNpbmssICJGYWlsZWQgdG8gY3JlYXRlIGlu
dGVyYXVkaW9zaW5rIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBnc3RfYmluX2FkZChHU1RfQklOX0NBU1Qoc2luayksIHNpbmstPnByaXYtPmludGVyYXVkaW9T
aW5rLmdldCgpKTsKKyAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHRhcmdldFBhZCA9IGFkb3B0R1Jl
Zihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChzaW5rLT5wcml2LT5pbnRlcmF1ZGlvU2luay5n
ZXQoKSwgInNpbmsiKSk7CisgICAgICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoR1NUX0VMRU1FTlRf
Q0FTVChzaW5rKSwgd2Via2l0R3N0R2hvc3RQYWRGcm9tU3RhdGljVGVtcGxhdGUoJnNpbmtUZW1w
bGF0ZSwgInNpbmsiLCB0YXJnZXRQYWQuZ2V0KCkpKTsKKyAgICB9IGVsc2UgeworI2lmIFBMQVRG
T1JNKFdQRSkKKyNpZiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorICAgICAg
ICBzaW5rLT5wcml2LT5zb3VyY2VTdGF0ZSA9IEdTVF9TVEFURV9OVUxMOworICAgICAgICBhdXRv
JiBzaGFyZWREaXNwbGF5ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCk7CisgICAg
ICAgIGlmIChpczxQbGF0Zm9ybURpc3BsYXlMaWJXUEU+KHNoYXJlZERpc3BsYXkpKQorICAgICAg
ICAgICAgc2luay0+cHJpdi0+d3BlQXVkaW9Tb3VyY2UucmVzZXQod3BlX2F1ZGlvX3NvdXJjZV9j
cmVhdGUoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5TGliV1BFPihzaGFyZWREaXNwbGF5KS5iYWNr
ZW5kKCkpKTsKKworICAgICAgICBzaW5rLT5wcml2LT52b2x1bWVFbGVtZW50ID0gZ3N0X2VsZW1l
bnRfZmFjdG9yeV9tYWtlKCJ2b2x1bWUiLCBudWxscHRyKTsKKyAgICAgICAgc2luay0+cHJpdi0+
YXBwc2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXBwc2luayIsIG51bGxwdHIpOwor
ICAgICAgICBnc3RfYXBwX3Npbmtfc2V0X2VtaXRfc2lnbmFscyhHU1RfQVBQX1NJTksoc2luay0+
cHJpdi0+YXBwc2luay5nZXQoKSksIFRSVUUpOworCisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
c2luay0+cHJpdi0+YXBwc2luay5nZXQoKSwgIm5ldy1zYW1wbGUiLCBHX0NBTExCQUNLKCtbXShH
c3RFbGVtZW50KiBhcHBzaW5rLCBXZWJLaXRBdWRpb1NpbmsqIHNpbmspIC0+IEdzdEZsb3dSZXR1
cm4geworICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBhZG9wdEdSZWYoZ3N0X2FwcF9zaW5rX3B1
bGxfc2FtcGxlKEdTVF9BUFBfU0lOSyhhcHBzaW5rKSkpOworICAgICAgICAgICAgd2ViS2l0QXVk
aW9TaW5rSGFuZGxlU2FtcGxlKHNpbmssIFdURk1vdmUoc2FtcGxlKSk7CisgICAgICAgICAgICBy
ZXR1cm4gR1NUX0ZMT1dfT0s7CisgICAgICAgIH0pLCBzaW5rKTsKKyAgICAgICAgZ19zaWduYWxf
Y29ubmVjdChzaW5rLT5wcml2LT5hcHBzaW5rLmdldCgpLCAibmV3LXByZXJvbGwiLCBHX0NBTExC
QUNLKCtbXShHc3RFbGVtZW50KiBhcHBzaW5rLCBXZWJLaXRBdWRpb1NpbmsqIHNpbmspIC0+IEdz
dEZsb3dSZXR1cm4geworICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBhZG9wdEdSZWYoZ3N0X2Fw
cF9zaW5rX3B1bGxfcHJlcm9sbChHU1RfQVBQX1NJTksoYXBwc2luaykpKTsKKyAgICAgICAgICAg
IHdlYktpdEF1ZGlvU2lua0hhbmRsZVNhbXBsZShzaW5rLCBXVEZNb3ZlKHNhbXBsZSkpOworICAg
ICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOworICAgICAgICB9KSwgc2luayk7CisKKyAgICAg
ICAgZ19zaWduYWxfY29ubmVjdChzaW5rLT5wcml2LT5hcHBzaW5rLmdldCgpLCAiZW9zIiwgR19D
QUxMQkFDSygrW10oR3N0RWxlbWVudCosIFdlYktpdEF1ZGlvU2luayogc2luaykgeworICAgICAg
ICAgICAgd3BlX2F1ZGlvX3NvdXJjZV9zdG9wKHNpbmstPnByaXYtPndwZUF1ZGlvU291cmNlLmdl
dCgpLCBzaW5rLT5wcml2LT5tX3N0cmVhbUlkKTsKKyAgICAgICAgICAgIHNpbmstPnByaXYtPnNv
dXJjZVN0YXRlID0gR1NUX1NUQVRFX05VTEw7CisgICAgICAgIH0pLCBzaW5rKTsKKworICAgICAg
ICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU5fQ0FTVChzaW5rKSwgc2luay0+cHJpdi0+dm9sdW1l
RWxlbWVudC5nZXQoKSwgc2luay0+cHJpdi0+YXBwc2luay5nZXQoKSwgbnVsbHB0cik7CisgICAg
ICAgIGdzdF9lbGVtZW50X2xpbmsoc2luay0+cHJpdi0+dm9sdW1lRWxlbWVudC5nZXQoKSwgc2lu
ay0+cHJpdi0+YXBwc2luay5nZXQoKSk7CisKKyAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHRhcmdl
dFBhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChzaW5rLT5wcml2LT52
b2x1bWVFbGVtZW50LmdldCgpLCAic2luayIpKTsKKyAgICAgICAgR3N0UGFkKiBzaW5rUGFkID0g
d2Via2l0R3N0R2hvc3RQYWRGcm9tU3RhdGljVGVtcGxhdGUoJnNpbmtUZW1wbGF0ZSwgInNpbmsi
LCB0YXJnZXRQYWQuZ2V0KCkpOworICAgICAgICBnc3RfZWxlbWVudF9hZGRfcGFkKEdTVF9FTEVN
RU5UX0NBU1Qoc2luayksIHNpbmtQYWQpOworICAgICAgICBHU1RfT0JKRUNUX0ZMQUdfU0VUKHNp
bmtQYWQsIEdTVF9QQURfRkxBR19ORUVEX1BBUkVOVCk7CisjZWxzZQorICAgICAgICBHU1RfRVJS
T1JfT0JKRUNUKHNpbmssICJXUEVCYWNrZW5kLUZETyBBdWRpbyBleHRlbnNpb24gaXMgbWlzc2lu
ZywgdXBkYXRlIHRvIFdQRUJhY2tlbmQtRkRPIDEuOC54LiIpOworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyNlbmRpZgorI2Vsc2UKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzaW5r
LCAiRXh0ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIGlzIHN1cHBvcnRlZCBvbmx5IGluIFdQRVdlYktp
dCIpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH0KK30KKwor
c3RhdGljIEdzdE9iamVjdCogZ2V0SW50ZXJuYWxWb2x1bWVPYmplY3QoV2ViS2l0QXVkaW9TaW5r
KiBzaW5rKQoreworICAgIGlmIChzaW5rLT5wcml2LT5lbmFibGVJbnRlcm5hbE1peGluZykgewor
ICAgICAgICBpZiAoIXNpbmstPnByaXYtPm1peGVyUGFkKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIEdTVF9PQkpFQ1RfQ0FTVChzaW5rLT5wcml2LT5taXhl
clBhZC5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBHU1RfT0JKRUNUX0NBU1Qoc2luay0+cHJp
di0+dm9sdW1lRWxlbWVudC5nZXQoKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdEF1ZGlvU2lu
a1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRBdWRpb1NpbmsqIHNpbmsg
PSBXRUJLSVRfQVVESU9fU0lOSyhvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSUQpIHsKKyAg
ICBjYXNlIFBST1BfVk9MVU1FOiB7CisgICAgICAgIEdzdE9iamVjdCogaW50ZXJuYWxPYmplY3Qg
PSBnZXRJbnRlcm5hbFZvbHVtZU9iamVjdChzaW5rKTsKKyAgICAgICAgaWYgKCFpbnRlcm5hbE9i
amVjdCkgeworICAgICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUKHNpbmssICJObyBhc3NvY2lh
dGVkIG1peGVyIHBhZCwgY2FuJ3Qgc2V0ICVzIHByb3BlcnR5IiwgZ19wYXJhbV9zcGVjX2dldF9u
YW1lKHBzcGVjKSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBnX29iamVjdF9zZXRfcHJvcGVydHkoR19P
QkpFQ1QoaW50ZXJuYWxPYmplY3QpLCAidm9sdW1lIiwgdmFsdWUpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBQUk9QX01VVEU6IHsKKyAgICAgICAgR3N0T2JqZWN0KiBpbnRlcm5h
bE9iamVjdCA9IGdldEludGVybmFsVm9sdW1lT2JqZWN0KHNpbmspOworICAgICAgICBpZiAoIWlu
dGVybmFsT2JqZWN0KSB7CisgICAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1Qoc2luaywgIk5v
IGFzc29jaWF0ZWQgbWl4ZXIgcGFkLCBjYW4ndCBzZXQgJXMgcHJvcGVydHkiLCBnX3BhcmFtX3Nw
ZWNfZ2V0X25hbWUocHNwZWMpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGdfb2JqZWN0X3NldF9wcm9w
ZXJ0eShHX09CSkVDVChpbnRlcm5hbE9iamVjdCksICJtdXRlIiwgdmFsdWUpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX0VOQUJMRV9JTlRFUk5BTF9NSVhJTkc6CisgICAg
ICAgIHNpbmstPnByaXYtPmVuYWJsZUludGVybmFsTWl4aW5nID0gZ192YWx1ZV9nZXRfYm9vbGVh
bih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNU
X1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcHNwZWMpOworICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdEF1ZGlvU2lua0dldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRBdWRpb1NpbmsqIHNpbmsgPSBXRUJLSVRfQVVESU9f
U0lOSyhvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSUQpIHsKKyAgICBjYXNlIFBST1BfVk9M
VU1FOiB7CisgICAgICAgIEdzdE9iamVjdCogaW50ZXJuYWxPYmplY3QgPSBnZXRJbnRlcm5hbFZv
bHVtZU9iamVjdChzaW5rKTsKKyAgICAgICAgaWYgKCFpbnRlcm5hbE9iamVjdCkgeworICAgICAg
ICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUKHNpbmssICJObyBhc3NvY2lhdGVkIG1peGVyIHBhZCwg
Y2FuJ3QgZ2V0ICVzIHByb3BlcnR5IiwgZ19wYXJhbV9zcGVjX2dldF9uYW1lKHBzcGVjKSk7Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBnX29iamVjdF9nZXRfcHJvcGVydHkoR19PQkpFQ1QoaW50ZXJuYWxP
YmplY3QpLCAidm9sdW1lIiwgdmFsdWUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBQUk9QX01VVEU6IHsKKyAgICAgICAgR3N0T2JqZWN0KiBpbnRlcm5hbE9iamVjdCA9IGdldElu
dGVybmFsVm9sdW1lT2JqZWN0KHNpbmspOworICAgICAgICBpZiAoIWludGVybmFsT2JqZWN0KSB7
CisgICAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1Qoc2luaywgIk5vIGFzc29jaWF0ZWQgbWl4
ZXIgcGFkLCBjYW4ndCBnZXQgJXMgcHJvcGVydHkiLCBnX3BhcmFtX3NwZWNfZ2V0X25hbWUocHNw
ZWMpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGdfb2JqZWN0X2dldF9wcm9wZXJ0eShHX09CSkVDVChp
bnRlcm5hbE9iamVjdCksICJtdXRlIiwgdmFsdWUpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBQUk9QX0VOQUJMRV9JTlRFUk5BTF9NSVhJTkc6CisgICAgICAgIGdfdmFsdWVfc2V0
X2Jvb2xlYW4odmFsdWUsIHNpbmstPnByaXYtPmVuYWJsZUludGVybmFsTWl4aW5nKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKworc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdlYktpdEF1ZGlvU2lua0NoYW5nZVN0
YXRlKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKQorewor
ICAgIGF1dG8qIHNpbmsgPSBXRUJLSVRfQVVESU9fU0lOSyhlbGVtZW50KTsKKyAgICBhdXRvKiBw
cml2ID0gc2luay0+cHJpdjsKKworI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDE0LCAwKQorICAg
IEdTVF9ERUJVR19PQkpFQ1Qoc2luaywgIkhhbmRsaW5nICVzIHRyYW5zaXRpb24iLCBnc3Rfc3Rh
dGVfY2hhbmdlX2dldF9uYW1lKHN0YXRlQ2hhbmdlKSk7CisjZW5kaWYKKworICAgIGF1dG8mIG1p
eGVyID0gR1N0cmVhbWVyQXVkaW9NaXhlcjo6c2luZ2xldG9uKCk7CisgICAgaWYgKHByaXYtPmVu
YWJsZUludGVybmFsTWl4aW5nICYmIHN0YXRlQ2hhbmdlID09IEdTVF9TVEFURV9DSEFOR0VfTlVM
TF9UT19SRUFEWSkgeworICAgICAgICBpZiAoIXByaXYtPmludGVyYXVkaW9TaW5rKSB7CisgICAg
ICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoZWxlbWVudCwgZ3N0X21pc3NpbmdfZWxl
bWVudF9tZXNzYWdlX25ldyhlbGVtZW50LCAiaW50ZXJhdWRpb3NpbmsiKSk7CisgICAgICAgICAg
ICBHU1RfRUxFTUVOVF9FUlJPUihzaW5rLCBDT1JFLCBNSVNTSU5HX1BMVUdJTiwgKG51bGxwdHIp
LCAoIm5vIGludGVyYXVkaW9zaW5rIikpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICByZXR1cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOworICAgICAg
ICB9CisgICAgICAgIHByaXYtPm1peGVyUGFkID0gbWl4ZXIucmVnaXN0ZXJQcm9kdWNlcihwcml2
LT5pbnRlcmF1ZGlvU2luay5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKHByaXYtPmVuYWJsZUlu
dGVybmFsTWl4aW5nKQorICAgICAgICBtaXhlci5lbnN1cmVTdGF0ZShzdGF0ZUNoYW5nZSk7CisK
KyAgICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXN1bHQgPSBHU1RfQ0FMTF9QQVJFTlRfV0lUSF9E
RUZBVUxUKEdTVF9FTEVNRU5UX0NMQVNTLCBjaGFuZ2Vfc3RhdGUsIChlbGVtZW50LCBzdGF0ZUNo
YW5nZSksIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSk7CisKKyNpZiBQTEFURk9STShXUEUpICYm
IFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04pCisgICAgaWYgKCFwcml2LT5lbmFi
bGVJbnRlcm5hbE1peGluZykgeworICAgICAgICBib29sIGlzRU9TID0gZ3N0X2FwcF9zaW5rX2lz
X2VvcyhHU1RfQVBQX1NJTksocHJpdi0+YXBwc2luay5nZXQoKSkpOworICAgICAgICBpZiAoKHN0
YXRlQ2hhbmdlID09IEdTVF9TVEFURV9DSEFOR0VfUExBWUlOR19UT19QQVVTRUQpICYmICFpc0VP
UykgeworICAgICAgICAgICAgd3BlX2F1ZGlvX3NvdXJjZV9wYXVzZShwcml2LT53cGVBdWRpb1Nv
dXJjZS5nZXQoKSwgcHJpdi0+bV9zdHJlYW1JZCk7CisgICAgICAgICAgICBwcml2LT5zb3VyY2VT
dGF0ZSA9IEdTVF9TVEFURV9QQVVTRUQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRlQ2hh
bmdlID09IEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1JFQURZICYmIGlzRU9TKQorICAgICAg
ICAgICAgcHJpdi0+c291cmNlU3RhdGUgPSBHU1RfU1RBVEVfTlVMTDsKKyAgICB9CisjZW5kaWYK
KworICAgIGlmIChwcml2LT5lbmFibGVJbnRlcm5hbE1peGluZyAmJiBzdGF0ZUNoYW5nZSA9PSBH
U1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05VTEwgJiYgcmVzdWx0ID4gR1NUX1NUQVRFX0NIQU5H
RV9GQUlMVVJFKSB7CisgICAgICAgIG1peGVyLnVucmVnaXN0ZXJQcm9kdWNlcihwcml2LT5taXhl
clBhZCk7CisgICAgICAgIHByaXYtPm1peGVyUGFkID0gbnVsbHB0cjsKKyAgICB9CisjaWYgUExB
VEZPUk0oV1BFKSAmJiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorICAgIGlm
ICghcHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhpbmcgJiYgcHJpdi0+c291cmNlU3RhdGUgPT0gR1NU
X1NUQVRFX1BBVVNFRCAmJiBzdGF0ZUNoYW5nZSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9U
T19QTEFZSU5HICYmIHJlc3VsdCA+IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgeworICAgICAg
ICB3cGVfYXVkaW9fc291cmNlX3Jlc3VtZShwcml2LT53cGVBdWRpb1NvdXJjZS5nZXQoKSwgcHJp
di0+bV9zdHJlYW1JZCk7CisgICAgICAgIHByaXYtPnNvdXJjZVN0YXRlID0gR1NUX1NUQVRFX1BM
QVlJTkc7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMg
dm9pZCB3ZWJraXRfYXVkaW9fc2lua19jbGFzc19pbml0KFdlYktpdEF1ZGlvU2lua0NsYXNzKiBr
bGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9rbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNz
KTsKKyAgICBva2xhc3MtPmNvbnN0cnVjdGVkID0gd2ViS2l0QXVkaW9TaW5rQ29uc3RydWN0ZWQ7
CisgICAgb2tsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJLaXRBdWRpb1NpbmtTZXRQcm9wZXJ0eTsK
KyAgICBva2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYktpdEF1ZGlvU2lua0dldFByb3BlcnR5Owor
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShva2xhc3MsIFBST1BfVk9MVU1F
LAorICAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlKCJ2b2x1bWUiLCAiVm9sdW1lIiwgIlRoZSBh
dWRpbyB2b2x1bWUsIDEuMD0xMDAlIiwgMCwgMTAsIDEsCisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxHUGFyYW1GbGFncz4oR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdT
KSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNzLCBQUk9QX01V
VEUsCisgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJtdXRlIiwgIk11dGUiLCAiTXV0ZSB0
aGUgYXVkaW8gY2hhbm5lbCB3aXRob3V0IGNoYW5naW5nIHRoZSB2b2x1bWUiLCBGQUxTRSwKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihHX1BBUkFNX1JFQURXUklURSB8IEdf
UEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShva2xhc3MsIFBST1BfRU5BQkxFX0lOVEVSTkFMX01JWElORywKKyAgICAgICAgZ19wYXJh
bV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1pbnRlcm5hbC1taXhpbmciLCAiRW5hYmxlIEludGVybmFs
IE1peGluZyIsICJQcm94eSBhdWRpbyBidWZmZXJzIHRvIHRoZSBhdWRpb21peGVyIiwgRkFMU0Us
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oR19QQVJBTV9SRUFEV1JJVEUg
fCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKwor
ICAgIEdzdEVsZW1lbnRDbGFzcyogZWtsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1Moa2xhc3MpOwor
ICAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9zdGF0aWNfcGFkX3RlbXBsYXRlKGVrbGFzcywgJnNp
bmtUZW1wbGF0ZSk7CisgICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X21ldGFkYXRhKGVrbGFzcywg
IldlYktpdCBBdWRpbyBzaW5rIGVsZW1lbnQiLCAiU2luay9BdWRpbyIsCisgICAgICAgICJQcm94
aWVzIGF1ZGlvIGRhdGEgdG8gV2ViS2l0J3MgYXVkaW8gbWl4ZXIiLCAiUGhpbGlwcGUgTm9ybWFu
ZCA8cGhpbG5AaWdhbGlhLmNvbT4iKTsKKworICAgIGVrbGFzcy0+Y2hhbmdlX3N0YXRlID0gR1NU
X0RFQlVHX0ZVTkNQVFIod2ViS2l0QXVkaW9TaW5rQ2hhbmdlU3RhdGUpOworfQorCitHc3RFbGVt
ZW50KiB3ZWJraXRBdWRpb1NpbmtOZXcoKQoreworICAgIHJldHVybiBHU1RfRUxFTUVOVF9DQVNU
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9BVURJT19TSU5LLCAiZW5hYmxlLWludGVybmFsLW1p
eGluZyIsIGZhbHNlLCBudWxscHRyKSk7Cit9CisKK0dzdEVsZW1lbnQqIHdlYmtpdEF1ZGlvU2lu
a05ld0ludGVybmFsKCkKK3sKKyAgICByZXR1cm4gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9u
ZXcoV0VCS0lUX1RZUEVfQVVESU9fU0lOSywgImVuYWJsZS1pbnRlcm5hbC1taXhpbmciLCB0cnVl
LCBudWxscHRyKSk7Cit9CisKKyNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lu
a0dTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3N2E4NDlkMzI2NjQ1OGIx
NDBjZDg3ZTJlZDg5N2VhMGU0YWExZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmgK
QEAgLTAsMCArMSw1NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
ICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNF
KEdTVFJFQU1FUikKKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworR19CRUdJTl9ERUNMUworCisj
ZGVmaW5lIFdFQktJVF9UWVBFX0FVRElPX1NJTksgICAgICAgICAgICAod2Via2l0X2F1ZGlvX3Np
bmtfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0FVRElPX1NJTksob2JqKSAgICAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfQVVESU9fU0lO
SywgV2ViS2l0QXVkaW9TaW5rKSkKKyNkZWZpbmUgV0VCS0lUX0FVRElPX1NJTktfQ0xBU1Moa2xh
c3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCBXRUJLSVRfVFlQRV9BVURJ
T19TSU5LLCBXZWJLaXRBdWRpb1NpbmtDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19BVURJT19T
SU5LKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJ
VF9UWVBFX0FVRElPX1NJTkspKQorI2RlZmluZSBXRUJLSVRfSVNfQVVESU9fU0lOS19DTEFTUyhr
bGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksIFdFQktJVF9UWVBFX0FVRElP
X1NJTkspKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXVkaW9TaW5rICAgICAgICBXZWJLaXRB
dWRpb1Npbms7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXVkaW9TaW5rQ2xhc3MgICBXZWJLaXRB
dWRpb1NpbmtDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBdWRpb1NpbmtQcml2YXRlIFdl
YktpdEF1ZGlvU2lua1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0QXVkaW9TaW5rIHsKKyAgICBH
c3RCaW4gcGFyZW50OworCisgICAgV2ViS2l0QXVkaW9TaW5rUHJpdmF0ZSAqcHJpdjsKK307CisK
K3N0cnVjdCBfV2ViS2l0QXVkaW9TaW5rQ2xhc3MgeworICAgIEdzdEJpbkNsYXNzIHBhcmVudENs
YXNzOworfTsKKworR1R5cGUgd2Via2l0X2F1ZGlvX3NpbmtfZ2V0X3R5cGUodm9pZCk7CisKK0df
RU5EX0RFQ0xTCisKK0dzdEVsZW1lbnQqIHdlYmtpdEF1ZGlvU2lua05ldygpOworR3N0RWxlbWVu
dCogd2Via2l0QXVkaW9TaW5rTmV3SW50ZXJuYWwoKTsKKworI2VuZGlmIC8vIFVTRShHU1RSRUFN
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCmluZGV4IGEzYjYxNTZlMWViMjA2OTViMTgxYjJhYWI2NDQwNDA4YWNlNjVmOGUuLjEx
OWU1NGJjMDU0YTk3NWQyZTkwOTBkNTlmNWQwNzA0YzU1MzYwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNjEsNiAr
MTYxLDEwIEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICNpZiBQTEFURk9STShHVEspCiAgICAgZW5jb2RlciA8PCB0
aGVtZU5hbWU7CiAjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCisgICAgZW5jb2RlciA8PCBh
dWRpb1JlbmRlcmluZ01vZGU7CisjZW5kaWYKIH0KIAogT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKQEAgLTUwOSw2ICs1MTMsMTQgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogCisjaWYgVVNFKEdTVFJFQU1F
UikKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmlu
Z01vZGU+IGF1ZGlvUmVuZGVyaW5nTW9kZTsKKyAgICBkZWNvZGVyID4+IGF1ZGlvUmVuZGVyaW5n
TW9kZTsKKyAgICBpZiAoIWF1ZGlvUmVuZGVyaW5nTW9kZSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLmF1ZGlvUmVuZGVyaW5nTW9kZSA9IFdURk1vdmUoKmF1
ZGlvUmVuZGVyaW5nTW9kZSk7CisjZW5kaWYKKwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
aW5kZXggNjY2YjU5NGU1NDY5NmYzMjI2NWFlMjAwODNhMTRjOGIxN2YyMTViZC4uYWZhMjJkOGI5
ODBjYzkzZjdiNmQwYzk2ZWFiYzJmZTBmN2U2MWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNTcsNiArNTcsMTAgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uTWFuaWZlc3QuaD4KICNlbmRpZgogCisjaWYgVVNF
KEdTVFJFQU1FUikKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyRW51bXMuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBFbmNvZGVyOwpAQCAt
MjM0LDYgKzIzOCwxMCBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIFN0cmluZyB0aGVtZU5hbWU7CiAjZW5kaWYKKworI2lmIFVTRShH
U1RSRUFNRVIpCisgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdN
b2RlIGF1ZGlvUmVuZGVyaW5nTW9kZTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcAppbmRleCA0MzFmY2VmNzg2YzliNWMzMDA0NzZhMzEyYTQ3ODhlMDk0MDQ0ZTQ5
Li44ZDM0NTQ3MjViNjJhMWYxZTk4NWUwYmI2NTg0YWY5YWE2ZmU1MTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKQEAg
LTk5LDYgKzk5LDEwIEBAIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246
OmNvcHkoKSBjb25zdAogICAgIGNvcHktPm1fbG9hZHNGcm9tTmV0d29yayA9IHRoaXMtPm1fbG9h
ZHNGcm9tTmV0d29yazsKICAgICBjb3B5LT5tX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERv
bWFpbnMgPSB0aGlzLT5tX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM7CiAKKyNp
ZiBVU0UoR1NUUkVBTUVSKQorICAgIGNvcHktPm1fYXVkaW9SZW5kZXJpbmdNb2RlID0gdGhpcy0+
bV9hdWRpb1JlbmRlcmluZ01vZGU7CisjZW5kaWYKKwogICAgIHJldHVybiBjb3B5OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5o
CmluZGV4IDEyMDljMzZlOGNmZGYwMzc3NDI5YzdiMTk0N2Y5ZTY1YzkyZmZiZGUuLjU2ZjAxYTY0
MDBkMmE2MGExYWFmMDE5N2Q0ZTBiNGU0MDUzMzdlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCkBAIC0zOSw2ICszOSwxMCBA
QCBPQkpDX1BST1RPQ09MKF9VSUNsaWNrSW50ZXJhY3Rpb25Ecml2aW5nKTsKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSA8
V2ViQ29yZS9NZWRpYVBsYXllckVudW1zLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBWaXNpdGVkTGlua1N0b3JlOwogY2xhc3MgV2ViUGFnZUdyb3VwOwpAQCAtMTYyLDgg
KzE2NiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
IHZhbHVlKSB7IG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSB2YWx1ZTsg
fQogICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzsgfQotICAgIAotcHJpdmF0ZToKKworI2lmIFVT
RShHU1RSRUFNRVIpCisgICAgdm9pZCBzZXRBdWRpb1JlbmRlcmluZ01vZGUoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlIG1vZGUpIHsgbV9hdWRpb1JlbmRlcmlu
Z01vZGUgPSBtb2RlOyB9CisgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5k
ZXJpbmdNb2RlIGF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9SZW5k
ZXJpbmdNb2RlOyB9CisjZW5kaWYKKworcHJpdmF0ZSA6CiAKICAgICBSZWZQdHI8V2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXI7CkBAIC0yMDcs
NiArMjE2LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvYWRzRnJvbU5ldHdvcmsgeyB0cnVl
IH07CiAgICAgYm9vbCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxz
ZSB9OwogICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIG1f
c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBXZWJDb3JlOjpTaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8gfTsKKworI2lmIFVTRShHU1RSRUFNRVIpCisg
ICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlIG1fYXVkaW9S
ZW5kZXJpbmdNb2RlOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAK
aW5kZXggMzAwYTBiZTEyMDk5NmMyNWUzNTdiNGJhNDIzNDk1MTM1ZjlhMmZlMC4uNDRhYTU1YTE2
ZDExYTBhZWZjZGIxMTgzZWQ4M2Y5NGNlYjc0YjNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTE5MTEsNiAr
MTkxMSwyNCBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaQogICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIodXNlckNvbnRlbnRNYW5hZ2VyID8gd2Via2l0VXNl
ckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRN
YW5hZ2VyKSA6IG51bGxwdHIpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250cm9sbGVk
QnlBdXRvbWF0aW9uKHdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24o
d2ViVmlldykpOwogCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGUgbW9kZSA9IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZTo6SG9zdDsKKyAgICBzd2l0Y2ggKHdlYmtpdF93ZWJfdmll
d19nZXRfYXVkaW9fcmVuZGVyaW5nX21vZGUod2ViVmlldykpIHsKKyAgICBjYXNlIFdFQktJVF9B
VURJT19SRU5ERVJJTkdfTU9ERV9IT1NUOgorICAgICAgICBtb2RlID0gV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlOjpIb3N0OworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdFQktJVF9BVURJT19SRU5ERVJJTkdfTU9ERV9JTlRFUk5BTDoKKyAgICAgICAgbW9k
ZSA9IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZTo6SW50ZXJu
YWw7CisgICAgICAgIGJyZWFrOworI2lmIFBMQVRGT1JNKFdQRSkKKyAgICBjYXNlIFdFQktJVF9B
VURJT19SRU5ERVJJTkdfTU9ERV9FWFRFUk5BTDoKKyAgICAgICAgbW9kZSA9IFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZTo6RXh0ZXJuYWw7CisgICAgICAgIGJy
ZWFrOworI2VuZGlmCisgICAgfQorICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRBdWRpb1JlbmRl
cmluZ01vZGUobW9kZSk7CisjZW5kaWYKKwogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciog
bWFuYWdlciA9IHdlYmtpdFdlYlZpZXdHZXRXZWJzaXRlRGF0YU1hbmFnZXIod2ViVmlldyk7CiAg
ICAgaWYgKCFtYW5hZ2VyKQogICAgICAgICBtYW5hZ2VyID0gY29udGV4dC0+cHJpdi0+d2Vic2l0
ZURhdGFNYW5hZ2VyLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBjYWY4ZWZlODgxZjYzMzM3MjYwNzEwMGU4ZDUx
YjIyZGIxNjA3Y2U4Li45ZTFjOGI4MWJmY2ZkMWQ4ZDhiYjBkZDhjOTY4NzUxMDc5M2Q0YmMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
LmNwcApAQCAtNzMsNiArNzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZv
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSlNET01FeGNlcHRpb25IYW5kbGluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5
ZXJFbnVtcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1VSTFNvdXAuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgpAQCAtMjAzLDcg
KzIwNCw4IEBAIGVudW0gewogICAgIFBST1BfRURJVEFCTEUsCiAgICAgUFJPUF9QQUdFX0lELAog
ICAgIFBST1BfSVNfTVVURUQsCi0gICAgUFJPUF9XRUJTSVRFX1BPTElDSUVTCisgICAgUFJPUF9X
RUJTSVRFX1BPTElDSUVTLAorICAgIFBST1BfQVVESU9fUkVOREVSSU5HX1BPTElDWQogfTsKIAog
dHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiA+IExv
YWRpbmdSZXNvdXJjZXNNYXA7CkBAIC0zMDYsNiArMzA4LDggQEAgc3RydWN0IF9XZWJLaXRXZWJW
aWV3UHJpdmF0ZSB7CiAKICAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gd2Vi
c2l0ZURhdGFNYW5hZ2VyOwogICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZVBvbGljaWVzPiB3ZWJz
aXRlUG9saWNpZXM7CisKKyAgICBXZWJLaXRBdWRpb1JlbmRlcmluZ01vZGUgYXVkaW9SZW5kZXJp
bmdNb2RlOwogfTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9
OwpAQCAtODA3LDYgKzgxMSwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZQogICAgICAgICBi
cmVhazsKICAgICB9CiAjZW5kaWYKKyAgICBjYXNlIFBST1BfQVVESU9fUkVOREVSSU5HX1BPTElD
WTogeworICAgICAgICB3ZWJWaWV3LT5wcml2LT5hdWRpb1JlbmRlcmluZ01vZGUgPSBzdGF0aWNf
Y2FzdDxXZWJLaXRBdWRpb1JlbmRlcmluZ01vZGU+KGdfdmFsdWVfZ2V0X2VudW0odmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgUFJPUF9XRUJfQ09OVEVYVDogewogICAg
ICAgICBncG9pbnRlciB3ZWJDb250ZXh0ID0gZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKTsKICAg
ICAgICAgd2ViVmlldy0+cHJpdi0+Y29udGV4dCA9IHdlYkNvbnRleHQgPyBXRUJLSVRfV0VCX0NP
TlRFWFQod2ViQ29udGV4dCkgOiBudWxscHRyOwpAQCAtODYzLDYgKzg3MSw5IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJ
ZCwgR1ZhbHVlKiB2YWx1CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0YXRpY19ib3hlZCh2YWx1ZSwg
d2ViVmlldy0+cHJpdi0+YmFja2VuZC5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCisg
ICAgY2FzZSBQUk9QX0FVRElPX1JFTkRFUklOR19QT0xJQ1k6CisgICAgICAgIGdfdmFsdWVfc2V0
X2VudW0odmFsdWUsIHdlYlZpZXctPnByaXYtPmF1ZGlvUmVuZGVyaW5nTW9kZSk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgUFJPUF9XRUJfQ09OVEVYVDoKICAgICAgICAgZ192YWx1ZV9zZXRf
b2JqZWN0KHZhbHVlLCB3ZWJWaWV3LT5wcml2LT5jb250ZXh0LmdldCgpKTsKICAgICAgICAgYnJl
YWs7CkBAIC0xMzIwLDYgKzEzMzEsMzYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Ns
YXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICBX
RUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1Bh
cmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZ
KSkpOwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzphdWRpby1yZW5kZXJpbmctbW9k
ZToKKyAgICAgKgorICAgICAqIFdoZXRoZXIgdGhlICNXZWJLaXRXZWJWaWV3IHNob3VsZCBtYW5h
Z2UgYXVkaW8gcmVuZGVyaW5nIHRocm91Z2ggdGhlIGhvc3QgcGxhdGZvcm0gYXVkaW8KKyAgICAg
KiBkYWVtb24gKHVzdWFsbHkgUHVsc2VBdWRpbykgb3IgdXNlIGFsdGVybmF0ZSByZW5kZXJpbmcg
bWV0aG9kcy4gVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIHRvCisgICAgICogcmVseSBvbiB0aGUg
aG9zdCBhdWRpbyBkYWVtb24sIHdoZW4gdGhlIHByb3BlcnR5IGlzIEBBVURJT19SRU5ERVJJTkdf
TU9ERV9IT1NULgorICAgICAqCisgICAgICogQW4gYWx0ZXJuYXRlIG1ldGhvZCwgc3VwcG9ydGVk
IGluIGJvdGggV1BFV2ViS2l0IGFuZCBXZWJLaXRHVEsgaXMgdG8gcGVyZm9ybSBhdWRpbyBtaXhp
bmcKKyAgICAgKiBpbnRlcm5hbGx5IGluIFdlYktpdC4gVGhpcyBjYW4gYmUgZGVzaXJlZCBpbiBz
b21lIGNhc2VzIHdoZXJlIHRoZSBhcHBsaWNhdGlvbiB3YW50cyBXZWJLaXQgdG8KKyAgICAgKiBt
YWludGFpbiBhIHNpbmdsZSBjb25uZWN0aW9uIHRvIHRoZSBhdWRpbyBkYWVtb24uIFNldCB0aGUg
cHJvcGVydHkgdG8KKyAgICAgKiBAV0VCS0lUX0FVRElPX1JFTkRFUklOR19NT0RFX0lOVEVSTkFM
IHRvIGVuYWJsZSB0aGlzIHJlbmRlcmluZyBtb2RlLgorICAgICAqCisgICAgICogSW4gV1BFV2Vi
S2l0LCBhbiBhZGRpdGlvbmFsIHByb3BlcnR5IHZhbHVlIGlzIGF2YWlsYWJsZS4gVXNpbmcKKyAg
ICAgKiBAV0VCS0lUX0FVRElPX1JFTkRFUklOR19NT0RFX0VYVEVSTkFMIGltcGxpZXMgdGhlIGFw
cGxpY2F0aW9uIHdpbGwgcmVjZWl2ZSBub3RpZmljYXRpb25zCisgICAgICogdGhyb3VnaCB0aGUg
V1BFQmFja2VuZC1GRE8gYXVkaW8gc291cmNlLiBJbiB0aGlzIGNhc2UgdGhlIGFwcGxpY2F0aW9u
IGlzIGV4cGVjdGVkIHRvIG1hbmFnZQorICAgICAqIGF1ZGlvIHJlbmRlcmluZyBpdHNlbGYuCisg
ICAgICoKKyAgICAgKiBTaW5jZTogMi4zMAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9BVURJ
T19SRU5ERVJJTkdfUE9MSUNZLAorICAgICAgICBnX3BhcmFtX3NwZWNfZW51bSgKKyAgICAgICAg
ICAgICJhdWRpby1yZW5kZXJpbmctbW9kZSIsCisgICAgICAgICAgICAiQXVkaW8gUmVuZGVyaW5n
IE1vZGUiLAorICAgICAgICAgICAgXygiQXVkaW8gcmVuZGVyaW5nIG1vZGUgc2V0IG9uIHRoaXMg
dmlldyIpLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfQVVESU9fUkVOREVSSU5HX01PREUsCisg
ICAgICAgICAgICBXRUJLSVRfQVVESU9fUkVOREVSSU5HX01PREVfSE9TVCwKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJB
TV9DT05TVFJVQ1RfT05MWSkpKTsKKwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6Omxv
YWQtY2hhbmdlZDoKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGlj
aCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKQEAgLTQ2OTksMyArNDc0MCwxOCBAQCBXZWJLaXRXZWJz
aXRlUG9saWNpZXMqIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaQogCiAgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPndlYnNpdGVQb2xpY2ll
cy5nZXQoKTsKIH0KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2F1ZGlvX3JlbmRlcmlu
Z19tb2RlOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogR2V0cyB0aGUg
YXVkaW8gcmVuZGVyaW5nIG1vZGUgc2V0IG9uIHRoZSBAd2ViX3ZpZXcuCisgKgorICogU2luY2U6
IDIuMzAKKyAqLworV2ViS2l0QXVkaW9SZW5kZXJpbmdNb2RlIHdlYmtpdF93ZWJfdmlld19nZXRf
YXVkaW9fcmVuZGVyaW5nX21vZGUoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIFdlYktpdEF1ZGlv
UmVuZGVyaW5nTW9kZTo6V0VCS0lUX0FVRElPX1JFTkRFUklOR19NT0RFX0hPU1QpOworCisgICAg
cmV0dXJuIHdlYlZpZXctPnByaXYtPmF1ZGlvUmVuZGVyaW5nTW9kZTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYWM1MTY4M2I2
NzVkNWE5OGI2NjU1MzIzZjlhNTFjNDllNzYyM2ExZS4uZmEzYTZlNDZkODY1NmM4NzFhN2QzZTY1
OGE1MjBkOGViM2RiNmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTIwMyw2ICsyMDMsMjAgQEAgdHlwZWRlZiBlbnVtIHsKICAg
ICBXRUJLSVRfV0VCX1BST0NFU1NfRVhDRUVERURfTUVNT1JZX0xJTUlUCiB9IFdlYktpdFdlYlBy
b2Nlc3NUZXJtaW5hdGlvblJlYXNvbjsKIAorLyoqCisgKiBXZWJLaXRBdWRpb1JlbmRlcmluZ01v
ZGU6CisgKiBAV0VCS0lUX0FVRElPX1JFTkRFUklOR19NT0RFX0hPU1Q6IHVzZSBob3N0IGF1ZGlv
IGRhZW1vbiAodXN1YWxseSBQdWxzZUF1ZGlvKS4KKyAqIEBXRUJLSVRfQVVESU9fUkVOREVSSU5H
X01PREVfSU5URVJOQUw6IHBlcmZvcm0gaW50ZXJuYWwgbWl4aW5nIGFuZCByZW5kZXIgdGhlIHJl
c3VsdGluZyBzdHJlYW0gdG8gaG9zdCBhdWRpbyBkYWVtb24uCisgKgorICogQXVkaW8gcmVuZGVy
aW5nIHBvbGljeS4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCit0eXBlZGVmIGVudW0geworICAg
IFdFQktJVF9BVURJT19SRU5ERVJJTkdfTU9ERV9IT1NULAorICAgIFdFQktJVF9BVURJT19SRU5E
RVJJTkdfTU9ERV9JTlRFUk5BTCwKK30gV2ViS2l0QXVkaW9SZW5kZXJpbmdNb2RlOworCiBzdHJ1
Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIFdlYktpdFdlYlZpZXdCYXNlIHBhcmVudDsKIApAQCAt
NTg5LDYgKzYwMyw4IEBAIHdlYmtpdF93ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQg
ICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcKIFdFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGlj
aWVzICoKIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyAgICAgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSBX
ZWJLaXRBdWRpb1JlbmRlcmluZ01vZGUKK3dlYmtpdF93ZWJfdmlld19nZXRfYXVkaW9fcmVuZGVy
aW5nX21vZGUgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3
KTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXgg
NjJiMGUxMDg2YjA5OGYzMTUyZmNkMTc5M2ExM2FhMWQzZWViMDQ4My4uNDYxNzE3ZmVlMDI5ZTFm
YmExYzE3YjA1MzFhYjViNTg5ZDNhN2JiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMu
dHh0CkBAIC0xOTksNiArMTk5LDcgQEAgV2ViS2l0U25hcHNob3RPcHRpb25zCiBXZWJLaXRTbmFw
c2hvdFJlZ2lvbgogV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uCiBXZWJLaXRBdXRv
cGxheVBvbGljeQorV2ViS2l0QXVkaW9SZW5kZXJpbmdNb2RlCiAKIDxTVUJTRUNUSU9OIEVkaXRp
bmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVApAQCAtMjkwLDYgKzI5MSw3
IEBAIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2gKIHdlYmtpdF93
ZWJfdmlld19zZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19nZXRfaW5w
dXRfbWV0aG9kX2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcwor
d2Via2l0X3dlYl92aWV3X2dldF9hdWRpb19yZW5kZXJpbmdfbW9kZQogCiA8U1VCU0VDVElPTiBX
ZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAppbmRleCAyMzE0OWIw
YmY3NGFkMGI2NjgzOTFmZjlkNmNmMWQ5OGZiYzE1OGE4Li4wNmFkMDlmNjE3YjZmMmRjN2ZmMDcy
ZmI1ZGU5MDA3NGRkN2Q2ZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdFdlYlZpZXcuaApAQCAtMTg0LDYgKzE4NCwyMyBAQCB0eXBlZGVmIGVudW0gewog
dHlwZWRlZiB2b2lkICgqIFdlYktpdEZyYW1lRGlzcGxheWVkQ2FsbGJhY2spIChXZWJLaXRXZWJW
aWV3ICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ3BvaW50ZXIgICAgICAgdXNlcl9kYXRhKTsKIAorCisvKioKKyAqIFdlYktpdEF1ZGlv
UmVuZGVyaW5nTW9kZToKKyAqIEBXRUJLSVRfQVVESU9fUkVOREVSSU5HX01PREVfSE9TVDogdXNl
IGhvc3QgYXVkaW8gZGFlbW9uICh1c3VhbGx5IFB1bHNlQXVkaW8pLgorICogQFdFQktJVF9BVURJ
T19SRU5ERVJJTkdfTU9ERV9JTlRFUk5BTDogcGVyZm9ybSBpbnRlcm5hbCBtaXhpbmcgYW5kIHJl
bmRlciB0aGUgcmVzdWx0aW5nIHN0cmVhbSB0byBob3N0IGF1ZGlvIGRhZW1vbi4KKyAqIEBXRUJL
SVRfQVVESU9fUkVOREVSSU5HX01PREVfRVhURVJOQUw6IGRlZmVyIGF1ZGlvIHJlbmRlcmluZyB0
byBhcHBsaWNhdGlvbi4KKyAqCisgKiBBdWRpbyByZW5kZXJpbmcgcG9saWN5LgorICoKKyAqIFNp
bmNlOiAyLjMwCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX0FVRElPX1JFTkRFUklO
R19NT0RFX0hPU1QsCisgICAgV0VCS0lUX0FVRElPX1JFTkRFUklOR19NT0RFX0lOVEVSTkFMLAor
ICAgIFdFQktJVF9BVURJT19SRU5ERVJJTkdfTU9ERV9FWFRFUk5BTCwKK30gV2ViS2l0QXVkaW9S
ZW5kZXJpbmdNb2RlOworCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIEdPYmplY3QgcGFy
ZW50OwogCkBAIC01NjUsNiArNTgyLDkgQEAgd2Via2l0X3dlYl92aWV3X2dldF9pbnB1dF9tZXRo
b2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldwogV0VCS0lUX0FQSSBXZWJLaXRX
ZWJzaXRlUG9saWNpZXMgKgogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzICAg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogCitX
RUJLSVRfQVBJIFdlYktpdEF1ZGlvUmVuZGVyaW5nTW9kZQord2Via2l0X3dlYl92aWV3X2dldF9h
dWRpb19yZW5kZXJpbmdfbW9kZSAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dApp
bmRleCA3ZDEyMTRiMWNiMTU3NzI4ZWVhOTU5YzgwZWM2MDQ2OWI4NjQ4OGE0Li41YjcwYWQyYjJl
ZDNiZTY5ZTU0MjUwMGQ3YzFiOTI3YmIyZjY1MDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0x
NzMsNiArMTczLDcgQEAgV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQKIFdlYktpdFdlYlByb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbgogV2ViS2l0RnJhbWVEaXNwbGF5ZWRDYWxsYmFjawogV2ViS2l0
QXV0b3BsYXlQb2xpY3kKK1dlYktpdEF1ZGlvUmVuZGVyaW5nTW9kZQogCiA8U1VCU0VDVElPTiBF
ZGl0aW5nIENvbW1hbmRzPgogV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQKQEAgLTI2Miw2ICsy
NjMsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoCiB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X2lucHV0X21ldGhvZF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2lucHV0X21ldGhvZF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNp
ZXMKK3dlYmtpdF93ZWJfdmlld19nZXRfYXVkaW9fcmVuZGVyaW5nX21vZGUKIAogPFNVQlNFQ1RJ
T04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4KIFdlYktpdEphdmFzY3JpcHRSZXN1bHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDExNTgzNDc1ZmY0ODc3NjMx
NWE1OGM0NDMyMmY1NjYyMzlkNGE2ZDEuLmZlODViMTFkNTU0NjFjOWYwMzhhNzEwNWE2NWNjZDFh
ZjA0NWQxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
NDk2LDYgKzQ5Niw5IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBh
Z2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgICwgbV90cmFuc2NvZGluZ1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUu
V2ViS2l0LkltYWdlVHJhbnNjb2RpbmciKSkKICNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpCisg
ICAgLCBtX2F1ZGlvUmVuZGVyaW5nTW9kZShtX2NvbmZpZ3VyYXRpb24tPmF1ZGlvUmVuZGVyaW5n
TW9kZSgpKQorI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
Y29uc3RydWN0b3I6Iik7CiAKQEAgLTc4ODMsNiArNzg4NiwxMCBAQCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94
eSYgcHJvYwogCiAgICAgcGFyYW1ldGVycy5uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3Mg
PSBwcmVmZXJlbmNlcygpLm5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcygpOwogCisjaWYg
VVNFKEdTVFJFQU1FUikKKyAgICBwYXJhbWV0ZXJzLmF1ZGlvUmVuZGVyaW5nTW9kZSA9IG1fYXVk
aW9SZW5kZXJpbmdNb2RlOworI2VuZGlmCisKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0MDg2OGZlMTE2OGY1YjFj
ODViZTkzZTIyNGRlMjc5ZjRmNGFjNmEyLi5mNGU5YjVjNzUxM2NlMDNkNmMzNjk4M2FiOTg0NjAx
ZDE1NmQ3NGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTUx
LDYgKzE1MSwxMCBAQCBPQkpDX0NMQVNTIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzR3RrLmgiCiAjZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVIpCisj
aW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllckVudW1zLmg+CisjZW5kaWYKKwogI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oPgpAQCAtMjg0Niw2ICsyODUwLDEw
IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJlZjxXb3JrUXVldWU+IG1fdHJh
bnNjb2RpbmdRdWV1ZTsKICNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGUgbV9hdWRpb1JlbmRlcmluZ01v
ZGU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAppbmRleCBlZmMwMDNiZDAxNTkxMDAwODJkZTNjZWYxZjYwOWZhNTIyNTFjYTVhLi41MmNm
YTViNzNiYWI3ZTE5MmYyNmE1N2MzMDYyNTY1NDIzMTg4Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcApAQCAtMTAwLDYgKzEwMCwxMCBAQAogI2luY2x1ZGUgIlByaW50ZXJMaXN0R3RrLmgiCiAj
ZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXll
ckVudW1zLmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjZW5kaWYKQEAgLTEz
MDYsNiArMTMxMCwxOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdEluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgYwogICAgIG1fcGFnZS5yZXF1
ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoZGV0YWlscywgZGVzY3JpcHRpb24sIGNhbGxi
YWNrKTsKIH0KIAorQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ01vZGUgV2ViQ2hyb21lQ2xp
ZW50OjphdWRpb1JlbmRlcmluZ01vZGUoKSBjb25zdAoreworICAgIHN3aXRjaCAobV9wYWdlLmF1
ZGlvUmVuZGVyaW5nTW9kZSgpKSB7CisgICAgY2FzZSBNZWRpYVBsYXllckVudW1zOjpBdWRpb1Jl
bmRlcmluZ01vZGU6Okhvc3Q6CisgICAgICAgIHJldHVybiBDaHJvbWVDbGllbnQ6OkF1ZGlvUmVu
ZGVyaW5nTW9kZTo6SG9zdDsKKyAgICBjYXNlIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVy
aW5nTW9kZTo6SW50ZXJuYWw6CisgICAgICAgIHJldHVybiBDaHJvbWVDbGllbnQ6OkF1ZGlvUmVu
ZGVyaW5nTW9kZTo6SW50ZXJuYWw7CisgICAgY2FzZSBNZWRpYVBsYXllckVudW1zOjpBdWRpb1Jl
bmRlcmluZ01vZGU6OkV4dGVybmFsOgorICAgICAgICByZXR1cm4gQ2hyb21lQ2xpZW50OjpBdWRp
b1JlbmRlcmluZ01vZGU6OkV4dGVybmFsOworICAgIH0KKyAgICByZXR1cm4gQ2hyb21lQ2xpZW50
OjpBdWRpb1JlbmRlcmluZ01vZGU6Okhvc3Q7Cit9CiAjZW5kaWYKIAogdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OmRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAppbmRleCBlNzVmNDg4NTJiZmEwNmIxYWQ0MGUzYmJhMWZhM2NjM2UzZjQxYThlLi41MTVkMzVj
MmU0OGI4NzdhOWNkZTE4MTQxMWQ4YTk4NzAyMWVmNzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBA
IC0zODAsNiArMzgwLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpCiAgICAgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3Qg
U3RyaW5nJiAvKmRldGFpbHMqLywgY29uc3QgU3RyaW5nJiAvKmRlc2NyaXB0aW9uKi8sIFdlYkNv
cmU6Ok1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJikgZmlu
YWw7CiAjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIENocm9tZUNsaWVudDo6QXVkaW9S
ZW5kZXJpbmdNb2RlIGF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0IGZpbmFsOworI2VuZGlmCiAK
ICAgICB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCkgZmluYWw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZmE5N2Yx
NzMyNGMyYTMwMzEwNjZlNTFjYWZjYzAzOTMzMDQ1ZjJmOS4uYzQ3ZTBkMjZmNTlhNzVjMTljMzdk
NjBmYmY5ZjNiMGVmZDI3Njc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTQ3OSw2ICs0NzksOSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiAgICAgLCBtX292ZXJyaWRkZW5NZWRpYVR5cGUocGFyYW1ldGVycy5vdmVycmlkZGVuTWVkaWFU
eXBlKQogICAgICwgbV9wcm9jZXNzRGlzcGxheU5hbWUocGFyYW1ldGVycy5wcm9jZXNzRGlzcGxh
eU5hbWUpCiAgICAgLCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMocGFyYW1l
dGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKQorI2lmIFVTRShHU1RSRUFN
RVIpCisgICAgLCBtX2F1ZGlvUmVuZGVyaW5nTW9kZShwYXJhbWV0ZXJzLmF1ZGlvUmVuZGVyaW5n
TW9kZSkKKyNlbmRpZgogewogICAgIEFTU0VSVChtX2lkZW50aWZpZXIpOwogCkBAIC02NTQ5LDYg
KzY1NTIsMTMgQEAgdm9pZCBXZWJQYWdlOjphZGRVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwg
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIFcKICAgICBtX3VzZXJDb250ZW50Q29u
dHJvbGxlci0+YWRkVXNlclNjcmlwdCh3b3JsZCwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAK
KyNpZiBVU0UoR1NUUkVBTUVSKQorV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5k
ZXJpbmdNb2RlIFdlYlBhZ2U6OmF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fYXVkaW9SZW5kZXJpbmdNb2RlOworfQorI2VuZGlmCisKIHZvaWQgV2ViUGFnZTo6YWRk
VXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCiB7CiAgICAgV2ViQ29yZTo6VXNlclN0eWxl
U2hlZXQgdXNlclN0eWxlU2hlZXQge3NvdXJjZSwgYWJvdXRCbGFua1VSTCgpLCBWZWN0b3I8U3Ry
aW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBpbmplY3RlZEZyYW1lcywgVXNlclN0eWxlVXNlckxl
dmVsIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
MjZkMjQzM2I2MTUxNThlZjc2OGMxNjY2MjA5ZmVhY2Y5NmZkZTdlZi4uYWUwMTZmYzI2Njk1MGU2
ZGU5ZWEwYjAxYmQ2MDg5MzA0MzYyNDBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTM3LDYgKzEzNywxMCBAQCB0eXBlZGVmIHN0cnVjdCBfQXRr
T2JqZWN0IEF0a09iamVjdDsKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbklkZW50aWZp
ZXIuaD4KICNlbmRpZgogCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhUGxheWVyRW51bXMuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVk
ZSAiRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJs
ZVNlbGVjdGlvbi5oPgpAQCAtMTE1Myw2ICsxMTU3LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShW
SURFTykgJiYgVVNFKEdTVFJFQU1FUikKICAgICB2b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2luZ01l
ZGlhUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRp
b24sIFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxi
YWNrJik7CiAjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZSBhdWRpb1JlbmRlcmluZ01vZGUoKSBjb25zdDsK
KyNlbmRpZgogCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgSW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMs
IFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKICAgICB2b2lkIGFkZFVzZXJTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzKTsKQEAgLTE3MDIsNiArMTcwOSw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFZJREVP
KSAmJiBVU0UoR1NUUkVBTUVSKQogICAgIHZvaWQgZGlkRW5kUmVxdWVzdEluc3RhbGxNaXNzaW5n
TWVkaWFQbHVnaW5zKHVpbnQzMl90IHJlc3VsdCk7CiAjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVS
KQorICAgIHZvaWQgc2V0QXVkaW9SZW5kZXJpbmdNb2RlKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZSBtb2RlKSB7IG1fYXVkaW9SZW5kZXJpbmdNb2RlID0gbW9k
ZTsgfQorI2VuZGlmCiAKICAgICB2b2lkIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24o
dWludDMyX3QpOwogCkBAIC0yMTM1LDYgKzIxNDUsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X25hdmlnYXRpb25IYXNPY2N1cmVkIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2Nv
cnNEaXNhYmxpbmdQYXR0ZXJuczsKKworI2lmIFVTRShHU1RSRUFNRVIpCisgICAgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlIG1fYXVkaW9SZW5kZXJpbmdNb2Rl
OworI2VuZGlmCiB9OwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvY21ha2UvRmluZFdQRUJhY2tlbmRfZmRvLmNtYWtlIGIvU291cmNlL2NtYWtlL0ZpbmRX
UEVCYWNrZW5kX2Zkby5jbWFrZQppbmRleCBkNzAxZGY1NjIyZTdmNmJlMjBmNDczYjcyOTIyZmI0
MzU2NTgzMWYxLi40ODc1MmQwMTY4NDBjMWM1MTk1ZTliNmNkNjVhODkxY2YxYmY0YWU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvY21ha2UvRmluZFdQRUJhY2tlbmRfZmRvLmNtYWtlCisrKyBiL1NvdXJj
ZS9jbWFrZS9GaW5kV1BFQmFja2VuZF9mZG8uY21ha2UKQEAgLTQzLDYgKzQzLDExIEBAIGZpbmRf
bGlicmFyeShXUEVCQUNLRU5EX0ZET19MSUJSQVJJRVMKIAogbWFya19hc19hZHZhbmNlZChXUEVC
QUNLRU5EX0ZET19JTkNMVURFX0RJUlMgV1BFQkFDS0VORF9GRE9fTElCUkFSSUVTKQogCitmaW5k
X3BhdGgoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OCisgICAgTkFNRVMgd3BlL2V4dGVu
c2lvbnMvYXVkaW8uaAorICAgIEhJTlRTICR7UENfV1BFQkFDS0VORF9GRE9fSU5DTFVERURJUn0g
JHtQQ19XUEVCQUNLRU5EX0ZET19JTkNMVURFX0RJUlN9CispCisKIGluY2x1ZGUoRmluZFBhY2th
Z2VIYW5kbGVTdGFuZGFyZEFyZ3MpCiBmaW5kX3BhY2thZ2VfaGFuZGxlX3N0YW5kYXJkX2FyZ3Mo
V1BFQmFja2VuZF9mZG8KICAgICBSRVFVSVJFRF9WQVJTIFdQRUJBQ0tFTkRfRkRPX0lOQ0xVREVf
RElSUyBXUEVCQUNLRU5EX0ZET19MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9H
U3RyZWFtZXJDaGVja3MuY21ha2UgYi9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtl
CmluZGV4IGNiZjFmZTIwZWY0YWE2NGYwNjVmOTQwZWM5YjUxY2NmY2Y2NGNjODEuLmM4NTA4Nzkw
MTk2ZDE3MmVkZWI0NGM2ZWJlYjZhNGZmZGVjYzIwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFr
ZS9HU3RyZWFtZXJDaGVja3MuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNr
cy5jbWFrZQpAQCAtMzQsNiArMzQsMTYgQEAgaWYgKEVOQUJMRV9WSURFTyBPUiBFTkFCTEVfV0VC
X0FVRElPKQogICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJHU3RyZWFtZXJHTCBpcyBuZWVk
ZWQgZm9yIFVTRV9HU1RSRUFNRVJfR0wuIikKICAgICBlbmRpZiAoKQogCisgICAgaWYgKFBPUlQg
U1RSRVFVQUwgIldQRSIpCisgICAgICAgIGZpbmRfcGFja2FnZShXUEVCYWNrZW5kX2ZkbyAxLjcu
MCkKKyAgICAgICAgaWYgKChOT1QgV1BFQkFDS0VORF9GRE9fRk9VTkQpIE9SIFdQRUJBQ0tFTkRf
RkRPX0FVRElPX0VYVEVOU0lPTiBTVFJFUVVBTCAiV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5T
SU9OLU5PVEZPVU5EIikKKyAgICAgICAgICAgIG1lc3NhZ2UoV0FSTklORyAiV1BFQmFja2VuZC1m
ZG8gYXVkaW8gZXh0ZW5zaW9uIG5vdCBmb3VuZC4gRGlzYWJsaW5nIGV4dGVybmFsIGF1ZGlvIHJl
bmRlcmluZyBzdXBwb3J0IikKKyAgICAgICAgICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9XUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04gRkFMU0UpCisgICAgICAgIGVsc2UgKCkK
KyAgICAgICAgICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9XUEVCQUNLRU5EX0ZET19B
VURJT19FWFRFTlNJT04gVFJVRSkKKyAgICAgICAgZW5kaWYgKCkKKyAgICBlbmRpZiAoKQorCiAg
ICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0dTVFJFQU1FUiBUUlVFKQogZW5kaWYgKCkK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBh
YjdjY2UyOGUwNTNhYzQ3M2I3YTQ3Y2Q5NGI4MTc5MjlkNTA0YTEuLmUwOThlOWQwOGIxZmViZDg5
ODRhZGMwMmQwYTE4NjljMDI2OGE0MTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMC0wNy0yMiAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gSW50
ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFdQRSBBUEkgdGVzdCBmb3IgdGhlIGV4dGVybmFs
LWF1ZGlvLXJlbmRlcmluZyBwb2xpY3kgc3VwcG9ydCBhbmQgYWRkIGEgY29tbWFuZC1saW5lCisg
ICAgICAgIGFyZ3VtZW50IHRvIGFsbG93IGNvbmZpZ3VyaW5nIHRoZSBhdWRpbyByZW5kZXJpbmcg
cG9saWN5IGluIHRoZSBHVEsgTWluaUJyb3dzZXIuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9n
dGsvbWFpbi5jOgorICAgICAgICAoY3JlYXRlQnJvd3NlclRhYik6IENvbW1hbmQtbGluZSBvcHRp
b24gYWxsb3dpbmcgdG8gc3dpdGNoIGJldHdlZW4gdGhlIGhvc3QtZGVmYXVsdCBhbmQKKyAgICAg
ICAgaW50ZXJuYWwtbWl4aW5nIHBvbGljaWVzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlci5weTogV2hpdGUtbGlzdCB0aGUgbmV3IGF1ZGlvIHNpbmsgZnJvbSB0aGUg
c3R5bGUgY2hlY2tlci4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9maWxl
LXdpdGgtdmlkZW8uaHRtbDogTmV3IHV0aWxpdHkgZnVuY3Rpb25zIHRvIHBhdXNlIGFuZCBzZWVr
IGluIHRoZSB2aWRlby4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVz
dDo6c2V0dXApOiBXUEUgdGVzdCBmb3IgZXh0ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQu
IEEgdmlkZW8KKyAgICAgICAgZmlsZSBpcyBsb2FkZWQgdGhyb3VnaCB0aGUgd2VidmlldyBhbmQg
dGhlIHRlc3QgcmVjZWl2ZXMgbm90aWZpY2F0aW9ucyBkdXJpbmcgcGxheWJhY2suIEluCisgICAg
ICAgIG9yZGVyIHRvIHJlZHVjZSB0aW1lb3V0IHJpc2tzLCBhIHNlZWsgbmVhciB0aGUgZW5kIG9m
IHRoZSB2aWRlbyBpcyBwZXJmb3JtZWQgZWFybHkgb24uCisgICAgICAgIChBdWRpb1JlbmRlcmlu
Z1dlYlZpZXdUZXN0Ojp0ZWFyZG93bik6CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdU
ZXN0OjpBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0KToKKyAgICAgICAgKEF1ZGlvUmVuZGVyaW5n
V2ViVmlld1Rlc3Q6OmhhbmRsZVN0YXJ0KToKKyAgICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmll
d1Rlc3Q6OmhhbmRsZVN0b3ApOgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6
aGFuZGxlUGF1c2UpOgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6aGFuZGxl
UmVzdW1lKToKKyAgICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6OmhhbmRsZVBhY2tl
dCk6CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0Ojp3YWl0VW50aWxQYXVzZWQp
OgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6d2FpdFVudGlsRU9TKToKKyAg
ICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6OnN0YXRlIGNvbnN0KToKKyAgICAgICAg
KGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2Vi
Vmlld1Rlc3QuY3BwOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OmluaXRpYWxpemVXZWJWaWV3KToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oOgor
ICAgICAgICAqIGJ1aWxkc3RyZWFtL2VsZW1lbnRzL3Nkay93cGViYWNrZW5kLWZkby5ic3Q6IEJ1
bXAgdG8gY3VycmVudCBnaXQgbWFzdGVyLCAxLjcueCwgd2hpY2ggaGFzCisgICAgICAgIHRoZSBu
ZXcgYXVkaW8gZXh0ZW5zaW9uLCB0byBiZSBzaGlwcGVkIGluIDEuOC4wLgorCiAyMDIwLTA3LTI0
ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dTdHJlYW1lcl0gZ3N0X2J1ZmZlcl91bm1hcDogYXNzZXJ0aW9uICdHU1RfSVNfQlVGRkVS
IChidWZmZXIpJyBmYWlsZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93
c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4
IDI2YmYzYmU4ZGJlNjg2OWE4MjdhMjkxZTcyYjFlZjJhMjJlMDdhMWUuLjc0MmQ1ZDUwOTNiMTEz
YjUwNTE0YzIzY2E0ZTYyZjE3ZTc4NGY1OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJX
aW5kb3cuYwpAQCAtNDcyLDYgKzQ3Miw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RGVjaWRl
UG9saWN5KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBvbGljeURlY2lzaW9uCiAgICAg
ICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250
ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRp
b24iLCB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcp
LAogICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0
ZV9wb2xpY2llcyh3ZWJWaWV3KSwKKyAgICAgICAgImF1ZGlvLXJlbmRlcmluZy1tb2RlIiwgd2Vi
a2l0X3dlYl92aWV3X2dldF9hdWRpb19yZW5kZXJpbmdfbW9kZSh3ZWJWaWV3KSwKICAgICAgICAg
TlVMTCkpOwogICAgIGJyb3dzZXJfd2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmll
dyk7CiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRf
bmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3JlcXVlc3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNjU4
LDYgKzY1OSw3IEBAIHN0YXRpYyB2b2lkIG5ld1RhYkNhbGxiYWNrKEdTaW1wbGVBY3Rpb24gKmFj
dGlvbiwgR1ZhcmlhbnQgKnBhcmFtZXRlciwgZ3BvaW50ZXIKICAgICAgICAgInVzZXItY29udGVu
dC1tYW5hZ2VyIiwgd2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJW
aWV3KSwKICAgICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIHdlYmtpdF93ZWJf
dmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCiAgICAgICAgICJ3ZWJz
aXRlLXBvbGljaWVzIiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZp
ZXcpLAorICAgICAgICAiYXVkaW8tcmVuZGVyaW5nLW1vZGUiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2F1ZGlvX3JlbmRlcmluZ19tb2RlKHdlYlZpZXcpLAogICAgICAgICBOVUxMKSkpOwogICAgIGd0
a193aWRnZXRfZ3JhYl9mb2N1cyh3aW5kb3ctPnVyaUVudHJ5KTsKICAgICBndGtfbm90ZWJvb2tf
c2V0X2N1cnJlbnRfcGFnZShHVEtfTk9URUJPT0sod2luZG93LT5ub3RlYm9vayksIC0xKTsKQEAg
LTY3OSw2ICs2ODEsNyBAQCBzdGF0aWMgdm9pZCBvcGVuUHJpdmF0ZVdpbmRvdyhHU2ltcGxlQWN0
aW9uICphY3Rpb24sIEdWYXJpYW50ICpwYXJhbWV0ZXIsIGdwb2ludAogICAgICAgICAiaXMtZXBo
ZW1lcmFsIiwgVFJVRSwKICAgICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIHdl
YmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCiAgICAg
ICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGlj
aWVzKHdlYlZpZXcpLAorICAgICAgICAiYXVkaW8tcmVuZGVyaW5nLW1vZGUiLCB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2F1ZGlvX3JlbmRlcmluZ19tb2RlKHdlYlZpZXcpLAogICAgICAgICBOVUxMKSk7
CiAgICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoR1RLX1dJTkRP
Vyh3aW5kb3cpLCB3aW5kb3ctPndlYkNvbnRleHQpOwogICAgIGd0a193aW5kb3dfc2V0X2FwcGxp
Y2F0aW9uKEdUS19XSU5ET1cobmV3V2luZG93KSwgZ3RrX3dpbmRvd19nZXRfYXBwbGljYXRpb24o
R1RLX1dJTkRPVyh3aW5kb3cpKSk7CkBAIC0xNDgwLDYgKzE0ODMsNyBAQCBXZWJLaXRXZWJWaWV3
ICpicm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKEJy
b3dzZXJXaW5kbwogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAiaXMtY29udHJv
bGxlZC1ieS1hdXRvbWF0aW9uIiwgVFJVRSwKICAgICAgICAgIndlYnNpdGUtcG9saWNpZXMiLCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldyksCisgICAgICAgICJh
dWRpby1yZW5kZXJpbmctbW9kZSIsIHdlYmtpdF93ZWJfdmlld19nZXRfYXVkaW9fcmVuZGVyaW5n
X21vZGUod2ViVmlldyksCiAgICAgICAgIE5VTEwpKTsKICAgICBHdGtXaWRnZXQgKm5ld1dpbmRv
dyA9IGJyb3dzZXJfd2luZG93X25ldyhHVEtfV0lORE9XKHdpbmRvdyksIHdpbmRvdy0+d2ViQ29u
dGV4dCk7CiAgICAgZ3RrX3dpbmRvd19zZXRfYXBwbGljYXRpb24oR1RLX1dJTkRPVyhuZXdXaW5k
b3cpLCBndGtfd2luZG93X2dldF9hcHBsaWNhdGlvbihHVEtfV0lORE9XKHdpbmRvdykpKTsKQEAg
LTE1MDIsNiArMTUwNiw3IEBAIFdlYktpdFdlYlZpZXcgKmJyb3dzZXJfd2luZG93X2NyZWF0ZV93
ZWJfdmlld19pbl9uZXdfdGFiX2Zvcl9hdXRvbWF0aW9uKEJyb3dzZXJXCiAgICAgICAgICJpcy1j
b250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBUUlVFLAogICAgICAgICAiYXV0b21hdGlvbi1wcmVz
ZW50YXRpb24tdHlwZSIsIFdFQktJVF9BVVRPTUFUSU9OX0JST1dTSU5HX0NPTlRFWFRfUFJFU0VO
VEFUSU9OX1RBQiwKICAgICAgICAgIndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldyksCisgICAgICAgICJhdWRpby1yZW5kZXJpbmct
bW9kZSIsIHdlYmtpdF93ZWJfdmlld19nZXRfYXVkaW9fcmVuZGVyaW5nX21vZGUod2ViVmlldyks
CiAgICAgICAgIE5VTEwpKTsKICAgICBicm93c2VyX3dpbmRvd19hcHBlbmRfdmlldyh3aW5kb3cs
IG5ld1dlYlZpZXcpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaShuZXdXZWJWaWV3LCAi
YWJvdXQ6YmxhbmsiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMg
Yi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4IDYxY2I3MjllOWU4ZTI0ZDg1YzBk
Njc4YzY0YTNkYmFlMWMwODVmNjMuLjA0MjBiMTExNDhjNzI1MTA1N2Q4ZDc4MGE5NzA2YjQwOWNm
NjA1ZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwpAQCAtNTYsNiArNTYsNyBAQCBzdGF0aWMgY29uc3Qg
Y2hhciAqcHJveHk7CiBzdGF0aWMgZ2Jvb2xlYW4gZGFya01vZGU7CiBzdGF0aWMgZ2Jvb2xlYW4g
ZW5hYmxlSVRQOwogc3RhdGljIGdib29sZWFuIHByaW50VmVyc2lvbjsKK3N0YXRpYyBnYm9vbGVh
biBpbnRlcm5hbEF1ZGlvTWl4aW5nOwogCiB0eXBlZGVmIGVudW0gewogICAgIE1JTklfQlJPV1NF
Ul9FUlJPUl9JTlZBTElEX0FCT1VUX1BBVEgKQEAgLTgwLDEyICs4MSwxNCBAQCBzdGF0aWMgZ2No
YXIgKmFyZ3VtZW50VG9VUkwoY29uc3QgY2hhciAqZmlsZW5hbWUpCiAKIHN0YXRpYyBXZWJLaXRX
ZWJWaWV3ICpjcmVhdGVCcm93c2VyVGFiKEJyb3dzZXJXaW5kb3cgKndpbmRvdywgV2ViS2l0U2V0
dGluZ3MgKndlYmtpdFNldHRpbmdzLCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKnVzZXJDb250
ZW50TWFuYWdlciwgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICpkZWZhdWx0V2Vic2l0ZVBvbGljaWVz
KQogeworICAgIFdlYktpdEF1ZGlvUmVuZGVyaW5nTW9kZSBhdWRpb1JlbmRlcmluZ01vZGUgPSBp
bnRlcm5hbEF1ZGlvTWl4aW5nID8gV0VCS0lUX0FVRElPX1JFTkRFUklOR19NT0RFX0lOVEVSTkFM
IDogV0VCS0lUX0FVRElPX1JFTkRFUklOR19NT0RFX0hPU1Q7CiAgICAgV2ViS2l0V2ViVmlldyAq
d2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJ
RVcsCiAgICAgICAgICJ3ZWItY29udGV4dCIsIGJyb3dzZXJfd2luZG93X2dldF93ZWJfY29udGV4
dCh3aW5kb3cpLAogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRTZXR0aW5ncywKICAgICAgICAg
InVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNlckNvbnRlbnRNYW5hZ2VyLAogICAgICAgICAiaXMt
Y29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgYXV0b21hdGlvbk1vZGUsCiAgICAgICAgICJ3ZWJz
aXRlLXBvbGljaWVzIiwgZGVmYXVsdFdlYnNpdGVQb2xpY2llcywKKyAgICAgICAgImF1ZGlvLXJl
bmRlcmluZy1tb2RlIiwgYXVkaW9SZW5kZXJpbmdNb2RlLAogICAgICAgICBOVUxMKSk7CiAKICAg
ICBpZiAoZWRpdG9yTW9kZSkKQEAgLTE0Niw2ICsxNDksNyBAQCBzdGF0aWMgY29uc3QgR09wdGlv
bkVudHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KICAgICB7ICJpZ25vcmUtdGxzLWVycm9ycyIs
IDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmaWdub3JlVExTRXJyb3JzLCAiSWdub3JlIFRMUyBl
cnJvcnMiLCBOVUxMIH0sCiAgICAgeyAiY29udGVudC1maWx0ZXIiLCAwLCAwLCBHX09QVElPTl9B
UkdfRklMRU5BTUUsICZjb250ZW50RmlsdGVyLCAiSlNPTiB3aXRoIGNvbnRlbnQgZmlsdGVyaW5n
IHJ1bGVzIiwgIkZJTEUiIH0sCiAgICAgeyAiZW5hYmxlLWl0cCIsIDAsIDAsIEdfT1BUSU9OX0FS
R19OT05FLCAmZW5hYmxlSVRQLCAiRW5hYmxlIEludGVsbGlnZW50IFRyYWNraW5nIFByZXZlbnRp
b24gKElUUCkiLCBOVUxMIH0sCisgICAgeyAiaW50ZXJuYWwtYXVkaW8tbWl4aW5nIiwgJ2knLCAw
LCBHX09QVElPTl9BUkdfTk9ORSwgJmludGVybmFsQXVkaW9NaXhpbmcsICJQZXJmb3JtIGludGVy
bmFsIGF1ZGlvIG1peGluZyBvZiBtdWx0aW1lZGlhIGNvbnRlbnQiLCBOVUxMfSwKICAgICB7ICJ2
ZXJzaW9uIiwgJ3YnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaW50VmVyc2lvbiwgIlByaW50
IHRoZSBXZWJLaXRHVEsgdmVyc2lvbiIsIE5VTEwgfSwKICAgICB7IEdfT1BUSU9OX1JFTUFJTklO
RywgMCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJndW1lbnRzLCAwLCAi
W1VSTOKApl0iIH0sCiAgICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlci5weQppbmRleCA1OGIxMTZiYzdhYTRjZjM5NzFiZmQ5ODI0ZDdl
MzQ4ZmJlYzI3NGMyLi40ZWJmMGJkOGU2ZTQ4MzYwZGZlZDUyZmYzM2FhMDZmNTE5NWVkNTBjIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC0yMjEsNiArMjIxLDgg
QEAgX1BBVEhfUlVMRVNfU1BFQ0lGSUVSID0gWwogICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2Un
LCAnV2ViQ29yZScsICdwbGF0Zm9ybScsICdncmFwaGljcycsICdnc3RyZWFtZXInLCAnR0xWaWRl
b1NpbmtHU3RyZWFtZXIuaCcpLAogICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29y
ZScsICdwbGF0Zm9ybScsICdncmFwaGljcycsICdnc3RyZWFtZXInLCAnVmlkZW9TaW5rR1N0cmVh
bWVyLmNwcCcpLAogICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0
Zm9ybScsICdncmFwaGljcycsICdnc3RyZWFtZXInLCAnV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcCcpLAorICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9y
bScsICdncmFwaGljcycsICdnc3RyZWFtZXInLCAnV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNw
cCcpLAorICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScs
ICdncmFwaGljcycsICdnc3RyZWFtZXInLCAnV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmgnKSwK
ICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnYXVk
aW8nLCAnZ3N0cmVhbWVyJywgJ1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCcpLAog
ICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScsICdtZWRp
YXN0cmVhbScsICdnc3RyZWFtZXInLCAnR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuaCcpLAog
ICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScsICdtZWRp
YXN0cmVhbScsICdnc3RyZWFtZXInLCAnR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwJyks
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9maWxlLXdpdGgt
dmlkZW8uaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2ZpbGUtd2l0aC12
aWRlby5odG1sCmluZGV4IGFhMjI1OWEwZmNlMGIwZmRjZGUwODFhZWQzYmQ3NjA3OGMzMzBiY2Uu
LjBiODdkYmVmYTBkNzUzNDExZGM0N2U3Y2RmOWM4NmQ0OWU2N2M0ZjcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2ZpbGUtd2l0aC12aWRlby5odG1sCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2ZpbGUtd2l0aC12aWRlby5odG1sCkBA
IC01LDYgKzUsMTUgQEAKICAgICB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXN0LXZpZGVvIikucGxheSgpOwogICAgIH0KKyAgICBmdW5jdGlvbiBwYXVzZVZpZGVvKCkKKyAg
ICB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LXZpZGVvIikucGF1c2Uo
KTsKKyAgICB9CisgICAgZnVuY3Rpb24gc2Vla05lYXJUaGVFbmQoKQorICAgIHsKKyAgICAgICAg
bGV0IHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QtdmlkZW8iKTsKKyAgICAg
ICAgdmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbiAtIDAuNTsKKyAgICB9CiAgIDwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCBhYzcwODQ4
OWM5ZjNmMjE0ODQ0Y2VjZjgyZWY4MzBlYmVjNmYwOGNjLi5hYzlhYjg5MTIxZmE3ZjhkNTY1MmMz
MGRkOWUwMWVmZGQyOWU1MDY3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTI0LDYgKzI0LDEw
IEBACiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRy
Lmg+CiAKKyNpZiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRF
TlNJT04pCisjaW5jbHVkZSA8d3BlL2V4dGVuc2lvbnMvYXVkaW8uaD4KKyNlbmRpZgorCiBjbGFz
cyBJc1BsYXlpbmdBdWRpb1dlYlZpZXdUZXN0IDogcHVibGljIFdlYlZpZXdUZXN0IHsKIHB1Ymxp
YzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3Qp
OwpAQCAtMTM0Miw2ICsxMzQ2LDEyOSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0ZyYW1lRGlz
cGxheWVkKEZyYW1lRGlzcGxheWVkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIH0KICNlbmRp
ZgogCisjaWYgUExBVEZPUk0oV1BFKSAmJiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5T
SU9OKQorZW51bSBjbGFzcyBSZW5kZXJpbmdTdGF0ZSB7CisgICAgVW5rbm93biwKKyAgICBTdGFy
dGVkLAorICAgIFBhdXNlZCwKKyAgICBTdG9wcGVkCit9OworCitjbGFzcyBBdWRpb1JlbmRlcmlu
Z1dlYlZpZXdUZXN0IDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dM
SUJfVEVTVF9GSVhUVVJFX1dJVEhfU0VUVVBfVEVBUkRPV04oQXVkaW9SZW5kZXJpbmdXZWJWaWV3
VGVzdCwgc2V0dXAsIHRlYXJkb3duKTsKKworICAgIHN0YXRpYyB2b2lkIHNldHVwKCkKKyAgICB7
CisgICAgICAgIFdlYlZpZXdUZXN0OjphdWRpb1JlbmRlcmluZ01vZGUgPSBXRUJLSVRfQVVESU9f
UkVOREVSSU5HX01PREVfRVhURVJOQUw7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdGVhcmRv
d24oKQorICAgIHsKKyAgICAgICAgV2ViVmlld1Rlc3Q6OmF1ZGlvUmVuZGVyaW5nTW9kZSA9IFdF
QktJVF9BVURJT19SRU5ERVJJTkdfTU9ERV9IT1NUOworICAgIH0KKworICAgIEF1ZGlvUmVuZGVy
aW5nV2ViVmlld1Rlc3QoKQorICAgIHsKKyAgICAgICAgd3BlX2F1ZGlvX3JlZ2lzdGVyX3JlY2Vp
dmVyKCZtX2F1ZGlvUmVjZWl2ZXIsIHRoaXMpOworICAgIH0KKworICAgIHZvaWQgaGFuZGxlU3Rh
cnQodWludDMyX3QgaWQsIGludDMyX3QgY2hhbm5lbHMsIGNvbnN0IGNoYXIqIGxheW91dCwgaW50
MzJfdCBzYW1wbGVSYXRlKQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQobV9zdGF0ZSA9PSBSZW5k
ZXJpbmdTdGF0ZTo6VW5rbm93bik7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKG1fc3RyZWFtSWQu
aGFzVmFsdWUoKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoaWQsID09LCAwKTsKKyAgICAg
ICAgbV9zdHJlYW1JZCA9IGlkOworICAgICAgICBtX3N0YXRlID0gUmVuZGVyaW5nU3RhdGU6OlN0
YXJ0ZWQ7CisgICAgICAgIGdfYXNzZXJ0X2NtcGludChjaGFubmVscywgPT0sIDIpOworICAgICAg
ICBnX2Fzc2VydF9jbXBzdHIobGF5b3V0LCA9PSwgIlMxNkxFIik7CisgICAgICAgIGdfYXNzZXJ0
X2NtcGludChzYW1wbGVSYXRlLCA9PSwgNDQxMDApOworICAgIH0KKworICAgIHZvaWQgaGFuZGxl
U3RvcCh1aW50MzJfdCBpZCkKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoKm1fc3Ry
ZWFtSWQsID09LCBpZCk7CisgICAgICAgIGdfYXNzZXJ0KG1fc3RhdGUgIT0gUmVuZGVyaW5nU3Rh
dGU6OlVua25vd24pOworICAgICAgICBtX3N0YXRlID0gUmVuZGVyaW5nU3RhdGU6OlN0b3BwZWQ7
CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7CisgICAgICAgIG1fc3RyZWFt
SWQucmVzZXQoKTsKKyAgICB9CisKKyAgICB2b2lkIGhhbmRsZVBhdXNlKHVpbnQzMl90IGlkKQor
ICAgIHsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludCgqbV9zdHJlYW1JZCwgPT0sIGlkKTsKKyAg
ICAgICAgZ19hc3NlcnQobV9zdGF0ZSAhPSBSZW5kZXJpbmdTdGF0ZTo6VW5rbm93bik7CisgICAg
ICAgIG1fc3RhdGUgPSBSZW5kZXJpbmdTdGF0ZTo6UGF1c2VkOworICAgIH0KKworICAgIHZvaWQg
aGFuZGxlUmVzdW1lKHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgZ19hc3NlcnRfY21wdWlu
dCgqbV9zdHJlYW1JZCwgPT0sIGlkKTsKKyAgICAgICAgZ19hc3NlcnQobV9zdGF0ZSA9PSBSZW5k
ZXJpbmdTdGF0ZTo6UGF1c2VkKTsKKyAgICAgICAgbV9zdGF0ZSA9IFJlbmRlcmluZ1N0YXRlOjpT
dGFydGVkOworICAgIH0KKworICAgIHZvaWQgaGFuZGxlUGFja2V0KHN0cnVjdCB3cGVfYXVkaW9f
cGFja2V0X2V4cG9ydCogcGFja2V0X2V4cG9ydCwgdWludDMyX3QgaWQsIGludDMyX3QgZmQsIHVp
bnQzMl90IHNpemUpCisgICAgeworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KCptX3N0cmVhbUlk
LCA9PSwgaWQpOworICAgICAgICBnX2Fzc2VydChtX3N0YXRlID09IFJlbmRlcmluZ1N0YXRlOjpT
dGFydGVkIHx8IG1fc3RhdGUgPT0gUmVuZGVyaW5nU3RhdGU6OlBhdXNlZCk7CisgICAgICAgIGdf
YXNzZXJ0X2NtcHVpbnQoc2l6ZSwgPiwgMCk7CisgICAgICAgIHdwZV9hdWRpb19wYWNrZXRfZXhw
b3J0X3JlbGVhc2UocGFja2V0X2V4cG9ydCk7CisgICAgfQorCisgICAgdm9pZCB3YWl0VW50aWxQ
YXVzZWQoKQorICAgIHsKKyAgICAgICAgZ190aW1lb3V0X2FkZCgyMDAsIFtdKGdwb2ludGVyIHVz
ZXJEYXRhKSAtPiBnYm9vbGVhbiB7CisgICAgICAgICAgICBhdXRvKiB0ZXN0ID0gc3RhdGljX2Nh
c3Q8QXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdCo+KHVzZXJEYXRhKTsKKyAgICAgICAgICAgIGlm
ICh0ZXN0LT5zdGF0ZSgpID09IFJlbmRlcmluZ1N0YXRlOjpQYXVzZWQpIHsKKyAgICAgICAgICAg
ICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gR19TT1VS
Q0VfUkVNT1ZFOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIEdfU09VUkNFX0NP
TlRJTlVFOworICAgICAgICB9LCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFp
bkxvb3ApOworICAgIH0KKworICAgIHZvaWQgd2FpdFVudGlsRU9TKCkKKyAgICB7CisgICAgICAg
IGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICB9CisKKyAgICBSZW5kZXJpbmdTdGF0
ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKworcHJpdmF0ZToKKyAgICBzdGF0
aWMgY29uc3Qgc3RydWN0IHdwZV9hdWRpb19yZWNlaXZlciBtX2F1ZGlvUmVjZWl2ZXI7CisgICAg
UmVuZGVyaW5nU3RhdGUgbV9zdGF0ZSB7IFJlbmRlcmluZ1N0YXRlOjpVbmtub3duIH07CisgICAg
T3B0aW9uYWw8dWludDMyX3Q+IG1fc3RyZWFtSWQ7Cit9OworCitjb25zdCBzdHJ1Y3Qgd3BlX2F1
ZGlvX3JlY2VpdmVyIEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6Om1fYXVkaW9SZWNlaXZlciA9
IHsKKyAgICBbXSh2b2lkKiBkYXRhLCB1aW50MzJfdCBpZCwgaW50MzJfdCBjaGFubmVscywgY29u
c3QgY2hhciogbGF5b3V0LCBpbnQzMl90IHNhbXBsZVJhdGUpIHsgc3RhdGljX2Nhc3Q8QXVkaW9S
ZW5kZXJpbmdXZWJWaWV3VGVzdCo+KGRhdGEpLT5oYW5kbGVTdGFydChpZCwgY2hhbm5lbHMsIGxh
eW91dCwgc2FtcGxlUmF0ZSk7IH0sCisgICAgW10odm9pZCogZGF0YSwgc3RydWN0IHdwZV9hdWRp
b19wYWNrZXRfZXhwb3J0KiBwYWNrZXRfZXhwb3J0LCB1aW50MzJfdCBpZCwgaW50MzJfdCBmZCwg
dWludDMyX3Qgc2l6ZSkgeyBzdGF0aWNfY2FzdDxBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0Kj4o
ZGF0YSktPmhhbmRsZVBhY2tldChwYWNrZXRfZXhwb3J0LCBpZCwgZmQsIHNpemUpOyB9LAorICAg
IFtdKHZvaWQqIGRhdGEsIHVpbnQzMl90IGlkKSB7IHN0YXRpY19jYXN0PEF1ZGlvUmVuZGVyaW5n
V2ViVmlld1Rlc3QqPihkYXRhKS0+aGFuZGxlU3RvcChpZCk7IH0sCisgICAgW10odm9pZCogZGF0
YSwgdWludDMyX3QgaWQpIHsgc3RhdGljX2Nhc3Q8QXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdCo+
KGRhdGEpLT5oYW5kbGVQYXVzZShpZCk7IH0sCisgICAgW10odm9pZCogZGF0YSwgdWludDMyX3Qg
aWQpIHsgc3RhdGljX2Nhc3Q8QXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdCo+KGRhdGEpLT5oYW5k
bGVSZXN1bWUoaWQpOyB9Cit9OworCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0V4dGVybmFsQXVk
aW9SZW5kZXJpbmcoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKK3sKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlUGF0aChnX2J1aWxkX2ZpbGVuYW1l
KFRlc3Q6OmdldFJlc291cmNlc0RpcihUZXN0OjpXZWJLaXQyUmVzb3VyY2VzKS5kYXRhKCksICJm
aWxlLXdpdGgtdmlkZW8uaHRtbCIsIG51bGxwdHIpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHJl
c291cmNlVVJMKGdfZmlsZW5hbWVfdG9fdXJpKHJlc291cmNlUGF0aC5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0cikpOworICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSh0ZXN0LT5tX3dlYlZpZXcs
IHJlc291cmNlVVJMLmdldCgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
KworICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgicGxheVZpZGVv
KCk7IiwgbnVsbHB0cik7CisgICAgZ19hc3NlcnQodGVzdC0+c3RhdGUoKSA9PSBSZW5kZXJpbmdT
dGF0ZTo6U3RhcnRlZCk7CisgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlz
aGVkKCJwYXVzZVZpZGVvKCk7IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsUGF1c2Vk
KCk7CisgICAgZ19hc3NlcnQodGVzdC0+c3RhdGUoKSA9PSBSZW5kZXJpbmdTdGF0ZTo6UGF1c2Vk
KTsKKworICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgicGxheVZp
ZGVvKCk7IHNlZWtOZWFyVGhlRW5kKCk7IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGls
RU9TKCk7CisgICAgZ19hc3NlcnQodGVzdC0+c3RhdGUoKSA9PSBSZW5kZXJpbmdTdGF0ZTo6U3Rv
cHBlZCk7Cit9CisjZW5kaWYKKwogc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZl
ciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hU
YWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgaWYgKG1lc3NhZ2Ut
Pm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKQEAgLTE0MDIsNiArMTUyOSw5IEBAIHZvaWQg
YmVmb3JlQWxsKCkKICNlbmRpZgogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAiaXMtYXVkaW8tbXV0ZWQiLCB0ZXN0V2ViVmlld0lzQXVkaW9NdXRlZCk7CiAgICAgV2ViVmll
d1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdXRvcGxheS1wb2xpY3kiLCB0ZXN0V2ViVmll
d0F1dG9wbGF5UG9saWN5KTsKKyNpZiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZE
T19BVURJT19FWFRFTlNJT04pCisgICAgQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgImV4dGVybmFsLWF1ZGlvLXJlbmRlcmluZyIsIHRlc3RXZWJWaWV3RXh0
ZXJuYWxBdWRpb1JlbmRlcmluZyk7CisjZW5kaWYKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAK
aW5kZXggN2ExM2ViOGY4NDAyZGYwNTE3YWYwNjhkOTFkMmFmY2QwOWRlOTY0Ni4uMWIxNDFlYzQ3
YmZiZmZjODJlNThjYmNlNTA5OGFjNGI2YTkyNWI1NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcApAQCAtMjYsNiArMjYsNyBA
QAogCiBib29sIFdlYlZpZXdUZXN0OjpzaG91bGRJbml0aWFsaXplV2ViVmlld0luQ29uc3RydWN0
b3IgPSB0cnVlOwogYm9vbCBXZWJWaWV3VGVzdDo6c2hvdWxkQ3JlYXRlRXBoZW1lcmFsV2ViVmll
dyA9IGZhbHNlOworV2ViS2l0QXVkaW9SZW5kZXJpbmdNb2RlIFdlYlZpZXdUZXN0OjphdWRpb1Jl
bmRlcmluZ01vZGUgPSBXRUJLSVRfQVVESU9fUkVOREVSSU5HX01PREVfSE9TVDsKIAogV2ViVmll
d1Rlc3Q6OldlYlZpZXdUZXN0KCkKICAgICA6IG1fdXNlckNvbnRlbnRNYW5hZ2VyKGFkb3B0R1Jl
Zih3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfbmV3KCkpKQpAQCAtNTksNiArNjAsNyBAQCB2
b2lkIFdlYlZpZXdUZXN0Ojppbml0aWFsaXplV2ViVmlldygpCiAgICAgICAgICJ3ZWItY29udGV4
dCIsIG1fd2ViQ29udGV4dC5nZXQoKSwKICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwg
bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksCiAgICAgICAgICJpcy1lcGhlbWVyYWwiLCBzaG91
bGRDcmVhdGVFcGhlbWVyYWxXZWJWaWV3LAorICAgICAgICAiYXVkaW8tcmVuZGVyaW5nLW1vZGUi
LCBhdWRpb1JlbmRlcmluZ01vZGUsCiAgICAgICAgIG51bGxwdHIpKTsKICAgICBwbGF0Zm9ybUlu
aXRpYWxpemVXZWJWaWV3KCk7CiAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVChtX3dlYlZpZXcpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCmluZGV4IDcwZDc5MzdhOGFiNWViYTFlZTA0MTRm
ZTU3MjFlNDRjMTdkM2U5MjUuLmNiODIzOTk4YTgyNmI1ZTg0ZWIxNzM3ZWNmZWQwN2IwN2VjY2Y3
MWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZp
ZXdUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmll
d1Rlc3QuaApAQCAtMzEsNiArMzEsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbml0aWFsaXplV2ViVmlld0luQ29uc3RydWN0b3I7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxk
Q3JlYXRlRXBoZW1lcmFsV2ViVmlldzsKKyAgICBzdGF0aWMgV2ViS2l0QXVkaW9SZW5kZXJpbmdN
b2RlIGF1ZGlvUmVuZGVyaW5nTW9kZTsKKwogICAgIHZvaWQgaW5pdGlhbGl6ZVdlYlZpZXcoKTsK
IAogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViVmlldygpOwpkaWZmIC0tZ2l0IGEvQ2hh
bmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDRjOGMxM2ViN2NjNTJmZmYzNDAyNDBjNGVhNjQwY2M4
ODc2MjM0N2IuLjVkODJlZDVlNTg1MjY2NzIyNTNmYzBkMDE4MGQwMzVjODJmY2QxYjAgMTAwNjQ0
Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0w
Ny0yMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dTdHJlYW1lcl0gSW50ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYzNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL0ZpbmRX
UEVCYWNrZW5kX2Zkby5jbWFrZTogQ2hlY2sgZm9yIHRoZSBhdWRpbyBleHRlbnNpb24gaGVhZGVy
LiBDdXJyZW50bHkKKyAgICAgICAgb25seSBpbiBnaXQgbWFzdGVyLCB1cGNvbWluZyAxLjguMCBy
ZWxlYXNlLgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2U6IENo
ZWNrIGFuZCBlbmFibGUgZXh0ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQgaWYKKyAgICAg
ICAgdGhlIFdQRUJhY2tlbmQtRkRPIGF1ZGlvIGV4dGVuc2lvbiB3YXMgZm91bmQuCisKIDIwMjAt
MDctMjEgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLiBVcGRhdGUgT3B0aW9uc1dQRS5jbWFrZSBhbmQgTkVXUyBmb3IgdGhl
IDIuMjkuMSByZWxlYXNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405226</attachid>
            <date>2020-07-25 04:05:14 -0700</date>
            <delta_ts>2020-09-27 10:20:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207634-20200725040512.patch</filename>
            <type>text/plain</type>
            <size>109720</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0ODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgwZDE5ZjgwYTJkZDIz
Y2YwZDBjNWQyMDE4YTM0ODZlZjM5NTdjMi4uMmJkZGZkZjA1MGU2ZThjMmNjMDUxNTgxZThkN2Yz
YjU5NDFlMGJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAyMC0wNy0yMiAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1l
cl0gSW50ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBhIG5ldyBHU3RyZWFtZXIgYXVkaW9S
ZW5kZXJpbmdNb2RlKCkgQVBJIGluIHRoZSBDaHJvbWVDbGllbnQuIEl0IGlzIHVzZWQgYXQgdGhl
CisgICAgICAgIHBsYXRmb3JtIGxldmVsIGJ5IHRoZSBHU3RyZWFtZXIgYmFja2VuZHMgd2hlbiB0
aGV5IG5lZWQgdG8gZGVjaWRlIHdoaWNoIGF1ZGlvIHNpbmsgdGhleQorICAgICAgICBzaG91bGQg
dXNlIGZvciByZW5kZXJpbmcuCisKKyAgICAgICAgV2hlbiBJbnRlcm5hbCBoYXMgYmVlbiBlbmFi
bGVkIGF0IHRoZSBVSVByb2Nlc3MgbGV2ZWwsIHRoZSBjb3JyZXNwb25kaW5nIFdlYlByb2Nlc3Mg
d2lsbAorICAgICAgICBoYXZlIGl0cyBHU3RyZWFtZXIgYmFja2VuZHMgcmVuZGVyIHRvIGRlZGlj
YXRlZCBXZWJLaXQgYXVkaW8gc2lua3MuIFRob3NlIHdpbGwgZm9yd2FyZAorICAgICAgICBidWZm
ZXJzIHRvIGEgc2luZ2xldG9uIGF1ZGlvIG1peGVyLiBUaGUgcmVzdWx0aW5nIGF1ZGlvIHN0cmVh
bSB3aWxsIHRoZW4gYmUgcmVuZGVyZWQgdGhyb3VnaAorICAgICAgICBob3N0IGRlZmF1bHQgYXVk
aW8gc2luayAoUHVsc2VBdWRpbyBpbiBtb3N0IGNhc2VzKS4gVXNpbmcgdGhpcyBhcHByb2FjaCwg
YXBwbGljYXRpb25zIHdpbGwKKyAgICAgICAgbWFpbnRhaW4gYSBzaW5nbGUgY29ubmVjdGlvbiB0
byB0aGUgYXVkaW8gZGFlbW9uLgorCisgICAgICAgIFdoZW4gRXh0ZXJuYWwgaGFzIGJlZW4gZW5h
YmxlZCBhdCB0aGUgV1BFIFVJUHJvY2VzcyBsZXZlbCwgdGhlIFdlYktpdCBhdWRpbyBzaW5rcyBy
dW5uaW5nIGluCisgICAgICAgIHRoZSBXZWJQcm9jZXNzIHdpbGwgZm9yd2FyZCBhdWRpbyBzYW1w
bGVzIHRvIHRoZSBVSVByb2Nlc3MsIHVzaW5nIGEgV2F5bGFuZCBwcm90b2NvbCBkZWZpbmVkCisg
ICAgICAgIGluIHRoZSBXUEVCYWNrZW5kLUZETyBiYWNrZW5kIGFuZCBleHBvc2VkIHRocm91Z2gg
aXRzIGF1ZGlvIGV4dGVuc2lvbi4gVGhpcyBjbGllbnQtc2lkZQorICAgICAgICByZW5kZXJpbmcg
c3VwcG9ydCBhbGxvd3MgYXBwbGljYXRpb25zIHRvIGhhdmUgZnVsbCBjb250cm9sIG9uIHRoZSBh
dWRpbyBzYW1wbGVzIHJlbmRlcmluZy4KKworICAgICAgICBFeGlzdGluZyBsYXlvdXQgdGVzdHMg
Y292ZXIgdGhlIEhvc3QgcG9saWN5LiBUaGUgSW50ZXJuYWwgbW9kZSBzaG91bGQgYmUgY29uc2lk
ZXJlZCBhCisgICAgICAgIHRlY2hub2xvZ3kgcHJldmlldyBhbmQgY2FuJ3QgYmUgZW5hYmxlZCBi
eSBkZWZhdWx0IHlldCwgYmVjYXVzZSBhdWRpb21peGVyIGxhY2tzIHNvbWUKKyAgICAgICAgZmVh
dHVyZXMgc3VjaCBhcyByZXZlcnNlIHBsYXliYWNrIHN1cHBvcnQuIEV4dGVybmFsIGF1ZGlvIHJl
bmRlcmluZyBwb2xpY3kgaXMgY292ZXJlZCBieSBhCisgICAgICAgIG5ldyBXUEUgQVBJIHRlc3Qu
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNy
ZWF0ZURlc3RpbmF0aW9uKTogS2VlcCB0cmFjayBvZiB0aGUgYXVkaW8gcmVuZGVyaW5nCisgICAg
ICAgIHBvbGljeSBjb25maWd1cmVkIG9uIHRoZSBwYWdlLiBUaGlzIGlzIHRoZW4gdXNlZCBieSB0
aGUgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24gb2YgdGhlCisgICAgICAgIEF1ZGlvRGVzdGluYXRp
b25Ob2RlLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQXVkaW9SZW5kZXJpbmdQb2xp
Y3kgY29uc3QpOiBEaXR0bywgYnV0IGZvcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGFuZCBp
dHMgdW5kZXJseWluZyBNZWRpYVBsYXllclByaXZhdGUuCisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudDo6YXVkaW9SZW5kZXJpbmdQb2xpY3kgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9B
dWRpb0lPQ2FsbGJhY2suaDogRGl0dG8sIGJ1dCBmb3IgdGhlIFdlYkF1ZGlvIEF1ZGlvSU9DYWxs
YmFjayBhbmQgdGhlCisgICAgICAgIHVuZGVybHlpbmcgQXVkaW9EZXN0aW5hdGlvbk5vZGUgaW1w
bGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2s6OmF1ZGlvUmVu
ZGVyaW5nUG9saWN5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKTogQ3JlYXRlIHNp
bmsgZGVwZW5kaW5nIG9uCisgICAgICAgIHNlbGVjdGVkIGF1ZGlvIHJlbmRlcmluZyBwb2xpY3kg
YW5kIHByb2JlIHBsYXRmb3JtIGZvciBhIHdvcmtpbmcgYXVkaW8gb3V0cHV0IGRldmljZSBvbmx5
CisgICAgICAgIHdoZW4gdGhlIFdlYktpdCBjdXN0b20gYXVkaW8gc2luayBoYXNuJ3QgYmVlbiBz
ZWxlY3RlZC4gVGhpcyBpcyBuZWVkZWQgb25seSBmb3IgdGhlCisgICAgICAgIGF1dG9hdWRpb3Np
bmsgY2FzZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmNvbmZpZ3VyZUF1ZGlvQmluKTogSW5zdGVhZCBvZiBjcmVh
dGluZyBhIG5ldyBzaW5rLAorICAgICAgICBlbWJlZCB0aGUgb25lIHByb3ZpZGVkIGJ5IHRoZSBw
bGF5ZXIgaW50byB0aGUgYXVkaW8gYmluLiBUaGUgcmVzdWx0aW5nIGJpbiBiZWNvbWVzIHRoZQor
ICAgICAgICBwbGF5ZXIgYXVkaW8gc2luayBhbmQgaXQncyBhYmxlIHRvIHJlbmRlciBib3RoIHRv
IHRoZSBXZWJBdWRpbyBwcm92aWRlciBhbmQgdGhlIHVzdWFsIHNpbmssIGFzIGJlZm9yZS4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJl
YW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjphdWRpb1JlbmRlcmluZ1BvbGljeSBjb25zdCk6
IFByb3h5IHRoZSBhdWRpbyByZW5kZXJpbmcgcG9saWN5IGZyb20KKyAgICAgICAgdGhlIG1lZGlh
IHBsYXllciBjbGllbnQgKGVnIG1lZGlhIGVsZW1lbnQgdXN1YWxseSkgdG8gdGhlIHByaXZhdGUg
cGxheWVyLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJBdWRpb1JlbmRlcmluZ1BvbGljeSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJT
aG91bGRJbnRlcm5hbGx5UmVuZGVyQXVkaW8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyRW51bXMuaDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdQb2xpY3k+Ojp0b1N0cmluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvTWl4ZXI6Omlz
QWxsb3dlZCk6IFRoZSBtaXhlciByZXF1aXJlcyBhIHJlY2VudCBHU3RyZWFtZXIgdmVyc2lvbiBh
bmQKKyAgICAgICAgdGhlIGludGVyIHBsdWdpbiAoc2hpcHBlZCBpbiBnc3QtcGx1Z2lucy1iYWQg
dW50aWwgdmVyc2lvbiAxLjIwIGF0IGxlYXN0KS4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1l
ckF1ZGlvTWl4ZXI6OnNpbmdsZXRvbik6IEVudHJ5IHBvaW50IGZvciB0aGUgbWl4ZXIuIFRoaXMg
aXMgd2hlcmUgdGhlCisgICAgICAgIHNpbmdsZXRvbiBpcyBjcmVhdGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6R1N0cmVhbWVyQXVkaW9NaXhlcik6IENvbmZpZ3Vy
ZSB0aGUgc3RhbmRhbG9uZSBtaXhlcgorICAgICAgICBwaXBlbGluZS4KKyAgICAgICAgKFdlYkNv
cmU6OkdTdHJlYW1lckF1ZGlvTWl4ZXI6On5HU3RyZWFtZXJBdWRpb01peGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvTWl4ZXI6OmVuc3VyZVN0YXRlKTogTGF6aWx5IHN0YXJ0
L3N0b3AgdGhlIG1peGVyLCBkZXBlbmRpbmcgb24gdGhlCisgICAgICAgIG51bWJlciBvZiBpbmNv
bWluZyBzdHJlYW1zLiBUaGUgcGlwZWxpbmUgc3RhcnRzIHdoZW4gdGhlIGZpcnN0IGluY29taW5n
IHN0cmVhbSBpcyBjb25uZWN0ZWQsCisgICAgICAgIGFuZCBzdG9wcyB3aGVuIHRoZSBsYXN0IHN0
cmVhbSBkaXNhcHBlYXJzLgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6
cmVnaXN0ZXJQcm9kdWNlcik6IENsaWVudCBwaXBlbGluZXMgcmVxdWlyZSBhbiBpbnRlcmF1ZGlv
c2luaywgdGhleQorICAgICAgICB3aWxsIHJlbmRlciB0byB0aGF0IHNpbmssIHdoaWNoIGludGVy
bmFsbHkgZm9yd2FyZHMgZGF0YSB0byBhIHR3aW4gaW50ZXJhdWRpb3NyYyBlbGVtZW50LAorICAg
ICAgICBjb25uZWN0ZWQgdG8gdGhlIGF1ZGlvbWl4ZXIuCisgICAgICAgIChXZWJDb3JlOjpHU3Ry
ZWFtZXJBdWRpb01peGVyOjp1bnJlZ2lzdGVyUHJvZHVjZXIpOiBHZXQgcmlkIG9mIGFuIGludGVy
YXVkaW9zaW5rIGFuZCBpdHMgaW50ZXJhdWRpb3NyYy4KKyAgICAgICAgVGhpcyBpcyBjYWxsZWQg
YnkgdGhlIFdlYktpdCBhdWRpbyBzaW5rIHdoZW4gdGhlIGVsZW1lbnQgaXMgYmVpbmcgZGlzcG9z
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlv
TWl4ZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplR1N0cmVhbWVy
QW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cyk6IFJlZ2lzdGVyIG5ldyBhdWRpbyBzaW5rIGVsZW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdWRpb1NpbmtGb3JQb2xpY3kpOiBOZXcgdXRp
bGl0eSBmdW5jdGlvbiB0byBjcmVhdGUgYW4gYXVkaW8gc2luayBiYXNlZCBvbgorICAgICAgICB0
aGUgc2VsZWN0ZWQgcmVuZGVyaW5nIHBvbGljeS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpzZWVrKTogRHJpdmUtYnkgY2xlYW4tdXAsIG5vIG5lZWQgdG8gY3JlYXRlIHRoZSBzZWVrCisg
ICAgICAgIE1lZGlhdGltZSBiZWZvcmUgdGhlIGVhcmx5IHJldHVybiBjaGVja2luZyB0aGlzIGlz
IGEgbGl2ZSBzdHJlYW0uCisgICAgICAgIChXZWJDb3JlOjpzZXRTeW5jT25DbG9jayk6IEZpeHVw
IGNvZGUgc3R5bGUgaW4gdGhpcyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1ZGlvU2luayk6IFVzZSBuZXcgY3JlYXRlQXVkaW9T
aW5rRm9yUG9saWN5KCkKKyAgICAgICAgdXRpbGl0eSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9TaW5rIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJp
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwOiBBZGRlZC4gVGhpcyBzaW5rIGNhbiBlaXRoZXIK
KyAgICAgICAgZm9yd2FyZCBpbmNvbWluZyBzYW1wbGVzIHRvIHRoZSBzaGFyZWQgYXVkaW9taXhl
ciBydW5uaW5nIGluIGl0cyBvd24gcGlwZWxpbmUsIG9yIGZvcndhcmQKKyAgICAgICAgc2FtcGxl
cyB0byB0aGUgVUlQcm9jZXNzIHVzaW5nIHRoZSBXUEVCYWNrZW5kLUZETyBhdWRpbyBleHRlbnNp
b24uCisgICAgICAgIChBdWRpb1BhY2tldEhvbGRlcjo6QXVkaW9QYWNrZXRIb2xkZXIpOiBXcmFw
cGVyIGFyb3VuZCBhdWRpbyBidWZmZXJzLCBpbiBjaGFyZ2Ugb2YgY3JlYXRpbmcKKyAgICAgICAg
dGhlIGNvcnJlc3BvbmRpbmcgbWVtZmQgZGVzY3JpcHRvciBhbmQgYWxzbyBrZWVwaW5nIHRyYWNr
IG9mIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgIHdwZV9hdWRpb19wYWNrZXRfZXhwb3J0Lgor
ICAgICAgICAoQXVkaW9QYWNrZXRIb2xkZXI6On5BdWRpb1BhY2tldEhvbGRlcik6CisgICAgICAg
IChBdWRpb1BhY2tldEhvbGRlcjo6bWFwKTogQ3JlYXRlIHRoZSBtZW1mZCBkZXNjcmlwdG9yIGFu
ZCByZXR1cm4gaXQgYWxvbmcgd2l0aCB0aGUgYnVmZmVyIHNpemUuCisgICAgICAgICh3ZWJLaXRB
dWRpb1NpbmtIYW5kbGVTYW1wbGUpOiBGb3J3YXJkIGluY29taW5nIHNhbXBsZXMgdXNpbmcgdGhl
IFdQRUJhY2tlbmQtRkRPIGF1ZGlvCisgICAgICAgIGV4dGVuc2lvbi4gVGhlIHdwZV9hdWRpb19z
b3VyY2Ugc3RhcnQgaXMgc3luY2hyb25pemVkIHdpdGggdGhlIGJ1ZmZlciBmbG93LgorICAgICAg
ICAod2ViS2l0QXVkaW9TaW5rQ29uc3RydWN0ZWQpOiBXaGVuIGludGVybmFsIG1peGluZyBoYXMg
YmVlbiByZXF1ZXN0ZWQsIGNyZWF0ZSBhbgorICAgICAgICBpbnRlcmF1ZGlvc2luayB0byB3aGlj
aCBzYW1wbGVzIHdpbGwgYmUgc2VudC4gSW50ZXJuYWxseSB0aGUgaW50ZXJhdWRpb3Npbmsgd2ls
bCBmb3J3YXJkCisgICAgICAgIGRhdGEgdG8gaXRzIGludGVyYXVkaW9zcmMgd2hpY2ggaXMgY29u
bmVjdGVkIHRvIHRoZSBhdWRpb21peGVyLiBPdGhlcndpc2UsIGlmIGV4dGVybmFsCisgICAgICAg
IHJlbmRlcmluZyBoYXMgYmVlbiByZXF1ZXN0ZWQsIGNyZWF0ZSBhbiBhcHBzaW5rIGluIG9yZGVy
IHRvIHJlbGF5IHNhbXBsZXMgdG8gdGhlIFVJUHJvY2Vzcy4KKyAgICAgICAgKHdlYktpdEF1ZGlv
U2lua0Rpc3Bvc2UpOgorICAgICAgICAoZ2V0SW50ZXJuYWxWb2x1bWVPYmplY3QpOiBXaGVuIGlu
dGVybmFsIG1peGluZyBpcyBlbmFibGVkLCB2b2x1bWUgYW5kIG11dGUgc3RhdGVzIGFyZQorICAg
ICAgICB0cmFja2VkIHdpdGhpbiB0aGUgYXVkaW9taXhlciBzaW5rIHBhZHMuIE90aGVyd2lzZSBv
dXIgYXVkaW8gc2luayBtYW5hZ2VzIHRoaXMgdXNpbmcgYSB2b2x1bWUKKyAgICAgICAgZWxlbWVu
dC4KKyAgICAgICAgKHdlYktpdEF1ZGlvU2lua1NldFByb3BlcnR5KTogUHJveHkgdm9sdW1lIGFu
ZCBtdXRlIHByb3BlcnRpZXMgZnJvbSB0aGUgaW50ZXJuYWwgdm9sdW1lIHByb3h5LgorICAgICAg
ICAod2ViS2l0QXVkaW9TaW5rR2V0UHJvcGVydHkpOiBEaXR0by4KKyAgICAgICAgKHdlYktpdEF1
ZGlvU2lua0NoYW5nZVN0YXRlKTogS2VlcCB0aGUgV1BFIGF1ZGlvIHNvdXJjZSBzdGF0ZSBzeW5j
aHJvbml6ZWQgd2l0aCB0aGUgZWxlbWVudAorICAgICAgICBzdGF0ZSwgaW4gb3JkZXIgdG8ga25v
dyB3aGVuIHRoZSBwYXVzZS9yZXN1bWUgbm90aWZpY2F0aW9ucyBzaG91bGQgYmUgc2VudCB0byB0
aGUgVUlQcm9jZXNzLgorICAgICAgICBUaGlzIGlzIGFsc28gd2hlcmUgbWFpbnRhaW4gdGhlIHJl
bGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBpbnRlcmF1ZGlvc2luayBhbmQgdGhlIGF1ZGlvbWl4ZXIs
IHdoZW4KKyAgICAgICAgaXQncyBlbmFibGVkLgorICAgICAgICAod2Via2l0X2F1ZGlvX3Npbmtf
Y2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRBdWRpb1NpbmtOZXcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuaDogQWRk
ZWQuCisKIDIwMjAtMDctMjQgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBnc3RfYnVmZmVyX3VubWFwOiBhc3NlcnRp
b24gJ0dTVF9JU19CVUZGRVIgKGJ1ZmZlciknIGZhaWxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjODE3ZmY3YmI2
ODY0MjAxNTMxMGZmYWU0ZjRlMzIzMzBiMmQzYzQ3Li40NzZjNjE4NmU5MDA3ZmFiZmVjZjgwMmI1
MmFkMTExOWIyYjUxMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA3LTIyICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVh
bWVyXSBJbnRlcm5hbCBhdWRpbyByZW5kZXJpbmcgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjM0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW4gYXVkaW8gcmVuZGVyaW5nIG1vZGUgcHJv
cGVydHkgaXMgaW50cm9kdWNlZCBpbiB0aGUgV1BFIGFuZCBHVEsgcG9ydHMuIEN1cnJlbnRseSBp
dCBoYXMKKyAgICAgICAgMyB2YWx1ZXMsIEhvc3QgKGRlZmF1bHQpLCBJbnRlcm5hbCBhbmQgRXh0
ZXJuYWwgKHdoaWNoIGlzIHN1cHBvcnRlZCBvbmx5IGluIFdQRSkuCisKKyAgICAgICAgV2hlbiBJ
bnRlcm5hbCBpcyBzZWxlY3RlZCwgYSBzaW5nbGUgY29ubmVjdGlvbiB0byB0aGUgaG9zdCBzb3Vu
ZCBkYWVtb24gd2lsbCBiZQorICAgICAgICBtYWludGFpbmVkLiBUaGUgdmFyaW91cyBpbnRlcm5h
bCBHU3RyZWFtZXIgYmFja2VuZHMgd2lsbCB1c2UgYW4gaW50ZXJuYWwgYXVkaW8gc2luaworICAg
ICAgICBwZXJmb3JtaW5nIHRoZSBtaXhpbmcuIFRoZSBzaW5rIHdpbGwgcmVsYXkgdGhlIHJlc3Vs
dGluZyBhdWRpbyBzdHJlYW0gdG8gdGhlIGhvc3QgYXVkaW8KKyAgICAgICAgZGFlbW9uICh1c3Vh
bGx5IFB1bHNlQXVkaW8pLgorCisgICAgICAgIEluIFdQRSB3aGVuIHRoZSBFeHRlcm5hbCBtb2Rl
IGlzIHNlbGVjdGVkLCBhdWRpbyBzYW1wbGVzIHdpbGwgbm8gbG9uZ2VyIGJlIHJlbmRlcmVkIGJ5
CisgICAgICAgIFdlYktpdCwgYnV0IGJ5IHRoZSBhcHBsaWNhdGlvbi4gVG8gc3VwcG9ydCB0aGlz
IHVzZS1jYXNlLCB0aGUgRkRPIFdQRUJhY2tlbmQgbm93IGV4cG9zZXMgYW4KKyAgICAgICAgYXVk
aW8gcHJvdG9jb2wsIGluIGNoYXJnZSBvZiByZWxheWluZyBzYW1wbGVzIGZyb20gdGhlIFdlYlBy
b2Nlc3MgdG8gdGhlIFVJUHJvY2VzcywgdXNpbmcKKyAgICAgICAgV2F5bGFuZCBJUEMuIFRoZSBh
cHBsaWNhdGlvbiBoYXMgdG8gcmVnaXN0ZXIgYSB3cGVfYXVkaW9fcmVjZWl2ZXIgYW5kIGltcGxl
bWVudCBpdHMKKyAgICAgICAgY2FsbGJhY2tzLCBpbiBvcmRlciB0byBiZSBub3RpZmllZCBvZiB0
aGUgYXVkaW8gc2FtcGxlcyBhbmQgc3RhdGUgY2hhbmdlcy4gU2VlIHRoZSBBUEkgdGVzdHMKKyAg
ICAgICAgZm9yIGFuIGV4YW1wbGUgb2YgaG93IHRvIGRvIHRoaXMuCisKKyAgICAgICAgKiBTaGFy
ZWQvQXVkaW9SZW5kZXJpbmdQb2xpY3kuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld1NldFByb3Bl
cnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3V2lsbFN0YXJ0
TG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0OgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2F1ZGlvUmVu
ZGVyaW5nUG9saWN5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXVkaW9SZW5kZXJpbmdQb2xpY3kgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRBdWRpb1JlbmRlcmluZ1BvbGljeSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmF1ZGlvUmVuZGVyaW5nUG9saWN5
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjph
dWRpb1JlbmRlcmluZ1BvbGljeSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0QXVkaW9SZW5kZXJpbmdQ
b2xpY3kpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorCiAyMDIwLTA3LTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVc2Ugb25lIHNvY2tldCBzZXJ2ZXIgZm9yIHRoZSB3aG9sZSBuZXR3b3JrIHByb2Nlc3Mg
aW5zdGVhZCBvZiBvbmUgc29ja2V0IHNlcnZlciBwZXIgd2ViIHByb2Nlc3MgY29ubmVjdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGRkNjdjZmRlMDM0ZjY3MjM2MGIyYzIy
ZTY1ZmQ5ZjEwOTE5NzI2YWQuLjVmMDgzMGYwMjFhMDk2ZmViN2VjNjUyMjRmMjgzYjYwNWFjZjg5
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTMwLDYgKzMwLDkgQEAKIAog
I2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIK
KyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVN0cmF0
ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCkBAIC05MCw2ICs5MywyNCBA
QCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlRGVzdGluYXRpb24oKQog
ICAgIG1fZGVzdGluYXRpb24gPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVneSgp
LmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oKnRoaXMsIG1faW5wdXREZXZpY2VJZCwgbV9udW1iZXJP
ZklucHV0Q2hhbm5lbHMsIGNoYW5uZWxDb3VudCgpLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwogfQog
CisjaWYgVVNFKEdTVFJFQU1FUikKK01lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9k
ZSBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0
Cit7CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBjb250ZXh0KCkuZG9jdW1lbnQoKS0+cGFnZSgpKSB7
CisgICAgICAgIHN3aXRjaCAocGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuYXVkaW9SZW5kZXJpbmdN
b2RlKCkpIHsKKyAgICAgICAgY2FzZSBDaHJvbWVDbGllbnQ6OkF1ZGlvUmVuZGVyaW5nTW9kZTo6
SG9zdDoKKyAgICAgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmlu
Z01vZGU6Okhvc3Q7CisgICAgICAgIGNhc2UgQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ01v
ZGU6OkludGVybmFsOgorICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlv
UmVuZGVyaW5nTW9kZTo6SW50ZXJuYWw7CisgICAgICAgIGNhc2UgQ2hyb21lQ2xpZW50OjpBdWRp
b1JlbmRlcmluZ01vZGU6OkV4dGVybmFsOgorICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
RW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZTo6RXh0ZXJuYWw7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlOjpIb3N0Owor
fQorI2VuZGlmCisKIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjplbmFibGVJbnB1
dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDFiODExYWQ5NTRjYTk4Mjcx
ZWU5YzJiZGFiZjc3MDFmOWJlOTgzN2IuLjdkYjM2NzhhOGE2ODgxNWI4YzBjNTVmMjk5YjY5ZDM1
OTlkYzlmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzksNyArMzksMTEgQEAg
cHVibGljOgogICAgIH0KICAgICAKICAgICB2aXJ0dWFsIH5EZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUoKTsKLSAgICAKKworI2lmIFVTRShHU1RSRUFNRVIpCisgICAgTWVkaWFQbGF5ZXJFbnVt
czo6QXVkaW9SZW5kZXJpbmdNb2RlIGF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0IGZpbmFsOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlKEJhc2VBdWRpb0NvbnRleHQmLCBPcHRpb25hbDxmbG9hdD4pOwogICAgIHZvaWQgY3JlYXRl
RGVzdGluYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDM3OWVkNzE1MWM3ODRkMWZlMjc3ZTU1MjEyODFhYzY1ZTU3OGM5ZTguLmE1ZTI0YzIyY2Yy
ZmQ5YWIxYmRmYjc5ZGQyNzIxMDFmYmIwOWIwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtNzAxNSw2ICs3MDE1LDIyIEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMs
IGNvbnN0CiAKICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucmVxdWVz
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGRldGFpbHMsIGRlc2NyaXB0aW9uLCBjYWxsYmFj
ayk7CiB9CisKK01lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZSBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0Cit7CisgICAgaWYg
KGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkgeworICAgICAgICBzd2l0Y2ggKHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLmF1ZGlvUmVuZGVyaW5nTW9kZSgpKSB7CisgICAgICAgIGNhc2Ug
Q2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ01vZGU6Okhvc3Q6CisgICAgICAgICAgICByZXR1
cm4gTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlOjpIb3N0OworICAgICAgICBj
YXNlIENocm9tZUNsaWVudDo6QXVkaW9SZW5kZXJpbmdNb2RlOjpJbnRlcm5hbDoKKyAgICAgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGU6OkludGVybmFs
OworICAgICAgICBjYXNlIENocm9tZUNsaWVudDo6QXVkaW9SZW5kZXJpbmdNb2RlOjpFeHRlcm5h
bDoKKyAgICAgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01v
ZGU6OkV4dGVybmFsOworICAgICAgICB9CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9k
ZTo6SG9zdDsKK30KICNlbmRpZgogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUJlaGF2
aW9yUmVzdHJpY3Rpb25zQWZ0ZXJGaXJzdFVzZXJHZXN0dXJlKE1lZGlhRWxlbWVudFNlc3Npb246
OkJlaGF2aW9yUmVzdHJpY3Rpb25zIG1hc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCmluZGV4IDczMDhiYzBiZTlhODg4MjU2MTFkZWEwNDY3NDJkODgzNTIxN2M3YWQuLmM2
MGYxZTU5OGYxMjlmMjY3ZGM1M2RmOGFiNDc0MThhNWQyNzNhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC03NDUsNiArNzQ1LDcgQEAgcHJpdmF0ZToKIAogI2lm
IFVTRShHU1RSRUFNRVIpCiAgICAgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNv
bnN0IFN0cmluZyYgZGV0YWlscywgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgTWVkaWFQbGF5
ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKSBmaW5hbDsKKyAgICBNZWRp
YVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGUgbWVkaWFQbGF5ZXJBdWRpb1JlbmRlcmlu
Z01vZGUoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAgICAgdm9pZCBwZW5kaW5nQWN0aW9uVGlt
ZXJGaXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggYzBhMGQzMGJjZmRm
M2Y0MWNmMGU4ZDdmM2RlNGMyNGMwMWRiNjc5OC4uYWNiMDU4MGJiYmEwNzhlYTFmYzAzMjhhNzQ1
YTIwMTUzZTY3NjI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC00OTUsNiAr
NDk1LDE0IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBT
dHJpbmcmIC8qZGV0YWlscyovLCBjb25zdCBTdHJpbmcmIC8qZGVzY3JpcHRpb24qLywgTWVkaWFQ
bGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKSB7IH0KICNlbmRpZgor
I2lmIFVTRShHU1RSRUFNRVIpCisgICAgZW51bSBjbGFzcyBBdWRpb1JlbmRlcmluZ01vZGUgewor
ICAgICAgICBIb3N0LAorICAgICAgICBJbnRlcm5hbCwKKyAgICAgICAgRXh0ZXJuYWwKKyAgICB9
OworICAgIHZpcnR1YWwgQXVkaW9SZW5kZXJpbmdNb2RlIGF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIEF1ZGlvUmVuZGVyaW5nTW9kZTo6SG9zdDsgfQorI2VuZGlmCiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCmluZGV4IDZhMmNhZTM0MjNlM2JlMTVm
YzA5MGZiYjcyYjUxYTU2ZTNjY2QxYjEuLjBmMWE0MTIzNDQ2ZmZlMjVkYThiMTNmY2NlN2Y3YjU4
ZGYxZDcxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKQEAgLTks
NiArOSw3IEBAIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNw
cAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR0xWaWRlb1NpbmtHU3RyZWFt
ZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVh
bWVyLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVk
aW9NaXhlci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckNvbW1vbi5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dzdEFsbG9j
YXRvckZhc3RNYWxsb2MuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCkBAIC0yMyw2ICsyNCw3IEBAIGlmIChFTkFCTEVf
VklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKyAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKIAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dl
YktpdENsZWFyS2V5RGVjcnlwdG9yR1N0cmVhbWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9JT0NhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0lPQ2FsbGJhY2suaAppbmRleCBhNDM4OTFmMGJmNDJmZDJiZGUw
NmRkMDBjOTMyNGNmMWRhMjBjNWIyLi40ODQwOTQyNzZlYjA0ZmU2YWJjMmZjMTA4N2M2MDhlMjU5
NDE0M2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0lP
Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0lPQ2Fs
bGJhY2suaApAQCAtMjYsOCArMjYsMTEgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBB
dWRpb0lPQ2FsbGJhY2tfaAotI2RlZmluZSBBdWRpb0lPQ2FsbGJhY2tfaAorI3ByYWdtYSBvbmNl
CisKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIk1lZGlhUGxheWVyRW51bXMuaCIKKyNl
bmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDkgKzQ1LDEyIEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBpc1BsYXlpbmdEaWRDaGFuZ2UoKSA9IDA7CiAKKyNpZiBVU0Uo
R1NUUkVBTUVSKQorICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdN
b2RlIGF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6
OkF1ZGlvUmVuZGVyaW5nTW9kZTo6SG9zdDsgfTsKKyNlbmRpZgorCiAgICAgdmlydHVhbCB+QXVk
aW9JT0NhbGxiYWNrKCkgPSBkZWZhdWx0OwogfTsKIAogfSAvLyBXZWJDb3JlCiAKLSNlbmRpZiAv
LyBBdWRpb0lPQ2FsbGJhY2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
Y3BwCmluZGV4IDFhNTQ5NWZkNzY0ZDljM2NjNmVkYjU4MWZhNDgwZWFlYWQxNDU5YmYuLjk3NTZm
MWVlMWRhODliYWU1NGJlZTg5NjFkODViYjFkYjNjMmFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTI0LDkgKzI0LDExIEBACiAjaW5jbHVkZSAiQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIgogCiAjaW5jbHVkZSAiQXVkaW9DaGFubmVsLmgiCisj
aW5jbHVkZSAiQXVkaW9JT0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRl
ci5oIgotI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJD
b21tb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9TaW5r
R1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaCIK
ICNpbmNsdWRlIDxnc3QvYXVkaW8vZ3N0YXVkaW9iYXNlc2luay5oPgogI2luY2x1ZGUgPGdzdC9n
c3QuaD4KQEAgLTk1LDI5ICs5NywzNCBAQCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInByb3ZpZGVyIiwgJm1fY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImZyYW1lcyIsIGZyYW1lc1RvUHVsbCwgbnVsbHB0cikpOwogCi0gICAgR1JlZlB0cjxHc3RFbGVt
ZW50PiBhdWRpb1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1dG9hdWRpb3Npbmsi
LCBudWxscHRyKTsKKyAgICBhdXRvIGF1ZGlvUmVuZGVyaW5nTW9kZSA9IGNhbGxiYWNrLmF1ZGlv
UmVuZGVyaW5nTW9kZSgpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3Jl
YXRlQXVkaW9TaW5rRm9yUG9saWN5KGF1ZGlvUmVuZGVyaW5nTW9kZSk7CiAgICAgbV9hdWRpb1Np
bmtBdmFpbGFibGUgPSBhdWRpb1Npbms7CiAgICAgaWYgKCFhdWRpb1NpbmspIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIEdTdHJlYW1lciBhdXRvYXVkaW9zaW5rIGVsZW1l
bnQiKTsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIEdTdHJlYW1lciBhdWRp
byBzaW5rIGVsZW1lbnQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGdfc2lnbmFs
X2Nvbm5lY3QoYXVkaW9TaW5rLmdldCgpLCAiY2hpbGQtYWRkZWQiLCBHX0NBTExCQUNLKGF1dG9B
dWRpb1NpbmtDaGlsZEFkZGVkQ2FsbGJhY2spLCBudWxscHRyKTsKLQotICAgIC8vIEF1dG9hdWRp
b3NpbmsgZG9lcyB0aGUgcmVhbCBzaW5rIGRldGVjdGlvbiBpbiB0aGUgR1NUX1NUQVRFX05VTEwt
PlJFQURZIHRyYW5zaXRpb24KLSAgICAvLyBzbyBpdCdzIGJlc3QgdG8gcm9sbCBpdCB0byBSRUFE
WSBhcyBzb29uIGFzIHBvc3NpYmxlIHRvIGVuc3VyZSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybQot
ICAgIC8vIGF1ZGlvc2luayB3YXMgbG9hZGVkIGNvcnJlY3RseS4KLSAgICBHc3RTdGF0ZUNoYW5n
ZVJldHVybiBzdGF0ZUNoYW5nZVJldHVybiA9IGdzdF9lbGVtZW50X3NldF9zdGF0ZShhdWRpb1Np
bmsuZ2V0KCksIEdTVF9TVEFURV9SRUFEWSk7Ci0gICAgaWYgKHN0YXRlQ2hhbmdlUmV0dXJuID09
IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBjaGFuZ2UgYXV0b2F1ZGlvc2luayBlbGVtZW50IHN0YXRlIik7Ci0gICAgICAgIGdzdF9lbGVt
ZW50X3NldF9zdGF0ZShhdWRpb1NpbmsuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICAgICAg
bV9hdWRpb1NpbmtBdmFpbGFibGUgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOworICAgIC8vIFBy
b2JlIHBsYXRmb3JtIGVhcmx5IG9uIGZvciBhIHdvcmtpbmcgYXVkaW8gb3V0cHV0IGRldmljZS4g
VGhpcyBpcyBub3QgbmVlZGVkIGZvciB0aGUgV2ViS2l0CisgICAgLy8gY3VzdG9tIGF1ZGlvIHNp
bmsgYmVjYXVzZSBpdCBkb2Vzbid0IHJlbHkgb24gYXV0b2F1ZGlvc2luay4KKyAgICBpZiAoIVdF
QktJVF9JU19BVURJT19TSU5LKGF1ZGlvU2luay5nZXQoKSkpIHsKKyAgICAgICAgZ19zaWduYWxf
Y29ubmVjdChhdWRpb1NpbmsuZ2V0KCksICJjaGlsZC1hZGRlZCIsIEdfQ0FMTEJBQ0soYXV0b0F1
ZGlvU2lua0NoaWxkQWRkZWRDYWxsYmFjayksIG51bGxwdHIpOworCisgICAgICAgIC8vIEF1dG9h
dWRpb3NpbmsgZG9lcyB0aGUgcmVhbCBzaW5rIGRldGVjdGlvbiBpbiB0aGUgR1NUX1NUQVRFX05V
TEwtPlJFQURZIHRyYW5zaXRpb24KKyAgICAgICAgLy8gc28gaXQncyBiZXN0IHRvIHJvbGwgaXQg
dG8gUkVBRFkgYXMgc29vbiBhcyBwb3NzaWJsZSB0byBlbnN1cmUgdGhlIHVuZGVybHlpbmcgcGxh
dGZvcm0KKyAgICAgICAgLy8gYXVkaW9zaW5rIHdhcyBsb2FkZWQgY29ycmVjdGx5LgorICAgICAg
ICBHc3RTdGF0ZUNoYW5nZVJldHVybiBzdGF0ZUNoYW5nZVJldHVybiA9IGdzdF9lbGVtZW50X3Nl
dF9zdGF0ZShhdWRpb1NpbmsuZ2V0KCksIEdTVF9TVEFURV9SRUFEWSk7CisgICAgICAgIGlmIChz
dGF0ZUNoYW5nZVJldHVybiA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpIHsKKyAgICAgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNoYW5nZSBhdXRvYXVkaW9zaW5rIGVsZW1lbnQgc3Rh
dGUiKTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShhdWRpb1NpbmsuZ2V0KCks
IEdTVF9TVEFURV9OVUxMKTsKKyAgICAgICAgICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gZmFs
c2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAKICAgICBHc3RFbGVt
ZW50KiBhdWRpb0NvbnZlcnQgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1ZGlvY29udmVy
dCIsIG51bGxwdHIpOwogICAgIEdzdEVsZW1lbnQqIGF1ZGlvUmVzYW1wbGUgPSBnc3RfZWxlbWVu
dF9mYWN0b3J5X21ha2UoImF1ZGlvcmVzYW1wbGUiLCBudWxscHRyKTsKLSAgICBnc3RfYmluX2Fk
ZF9tYW55KEdTVF9CSU4obV9waXBlbGluZSksIHdlYmtpdEF1ZGlvU3JjLCBhdWRpb0NvbnZlcnQs
IGF1ZGlvUmVzYW1wbGUsIGF1ZGlvU2luay5nZXQoKSwgbnVsbHB0cik7CisgICAgZ3N0X2Jpbl9h
ZGRfbWFueShHU1RfQklOX0NBU1QobV9waXBlbGluZSksIHdlYmtpdEF1ZGlvU3JjLCBhdWRpb0Nv
bnZlcnQsIGF1ZGlvUmVzYW1wbGUsIGF1ZGlvU2luay5nZXQoKSwgbnVsbHB0cik7CiAKICAgICAv
LyBMaW5rIHNyYyBwYWRzIGZyb20gd2Via2l0QXVkaW9TcmMgdG8gYXVkaW9Db252ZXJ0ICEgYXVk
aW9SZXNhbXBsZSAhIGF1dG9hdWRpb3NpbmsuCiAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1
bGwod2Via2l0QXVkaW9TcmMsICJzcmMiLCBhdWRpb0NvbnZlcnQsICJzaW5rIiwgR1NUX1BBRF9M
SU5LX0NIRUNLX05PVEhJTkcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgK
aW5kZXggM2I4OWZlYmM2MjdhNDc2NTg2ZDJjMzM4ZDJmMmY1NTk3OWFjOTIwMS4uYjRhMTJkZDkw
ZTZiYTgyMTg1MTM3Zjg0YTBmZWQ5MWQ4NzUzZDM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5oCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJBdWRpb0J1cy5o
IgogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllckVu
dW1zLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiB0eXBlZGVmIHN0cnVjdCBfR3N0RWxl
bWVudCBHc3RFbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFt
ZXIuY3BwCmluZGV4IDU0YjM5ZjQ1YTViYTcwMGVlMGU5YmFhMTY1MzZkMjE4ODRlZDEwZjguLjE1
YzQyNjZiMzEyYzI3OGZjNzc3MDQyNmIxNTUzYTEzMzkzNjU0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBBdWRp
b1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjp+QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcigp
CiAgICAgZ19vYmplY3RfdW5yZWYobV9mcm9udFJpZ2h0QWRhcHRlcik7CiB9CiAKLXZvaWQgQXVk
aW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCog
YXVkaW9CaW4sIEdzdEVsZW1lbnQqIHRlZVByZWRlY2Vzc29yKQordm9pZCBBdWRpb1NvdXJjZVBy
b3ZpZGVyR1N0cmVhbWVyOjpjb25maWd1cmVBdWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0Jpbiwg
R3N0RWxlbWVudCogYXVkaW9TaW5rKQogewogICAgIG1fYXVkaW9TaW5rQmluID0gYXVkaW9CaW47
CiAKQEAgLTE1MiwyNiArMTUyLDE2IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1l
cjo6Y29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCogYXVkaW9CaW4sIEdzdEVsCiAgICAgR3N0
RWxlbWVudCogYXVkaW9SZXNhbXBsZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9y
ZXNhbXBsZSIsIG51bGxwdHIpOwogICAgIEdzdEVsZW1lbnQqIGF1ZGlvUmVzYW1wbGUyID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb3Jlc2FtcGxlIiwgbnVsbHB0cik7CiAgICAgR3N0
RWxlbWVudCogdm9sdW1lRWxlbWVudCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgidm9sdW1l
IiwgInZvbHVtZSIpOwotICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2luayA9IGdzdF9lbGVtZW50X2Zh
Y3RvcnlfbWFrZSgiYXV0b2F1ZGlvc2luayIsIG51bGxwdHIpOwotCi0gICAgZ3N0X2Jpbl9hZGRf
bWFueShHU1RfQklOKG1fYXVkaW9TaW5rQmluLmdldCgpKSwgYXVkaW9UZWUsIGF1ZGlvUXVldWUs
IGF1ZGlvQ29udmVydCwgYXVkaW9SZXNhbXBsZSwgdm9sdW1lRWxlbWVudCwgYXVkaW9Db252ZXJ0
MiwgYXVkaW9SZXNhbXBsZTIsIGF1ZGlvU2luaywgbnVsbHB0cik7Ci0KLSAgICAvLyBJbiBjYXNl
cyB3aGVyZSB0aGUgYXVkaW8tc2luayBuZWVkcyBlbGVtZW50cyBiZWZvcmUgdGVlIChzdWNoCi0g
ICAgLy8gYXMgc2NhbGV0ZW1wbykgdGhleSBuZWVkIHRvIGJlIGxpbmtlZCB0byB0ZWUgd2hpY2gg
aW4gdGhpcyBjYXNlCi0gICAgLy8gZG9lc24ndCBuZWVkIGEgZ2hvc3QgcGFkLiBJdCBpcyBhc3N1
bWVkIHRoYXQgdGhlIHRlZVByZWRlY2Vzc29yCi0gICAgLy8gY2hhaW4gYWxyZWFkeSBjb25maWd1
cmVkIGEgZ2hvc3QgcGFkLgotICAgIGlmICh0ZWVQcmVkZWNlc3NvcikKLSAgICAgICAgZ3N0X2Vs
ZW1lbnRfbGlua19wYWRzX2Z1bGwodGVlUHJlZGVjZXNzb3IsICJzcmMiLCBhdWRpb1RlZSwgInNp
bmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8v
IEFkZCBhIGdob3N0cGFkIHRvIHRoZSBiaW4gc28gaXQgY2FuIHByb3h5IHRvIHRlZS4KLSAgICAg
ICAgR1JlZlB0cjxHc3RQYWQ+IGF1ZGlvVGVlU2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVu
dF9nZXRfc3RhdGljX3BhZChhdWRpb1RlZSwgInNpbmsiKSk7Ci0gICAgICAgIGdzdF9lbGVtZW50
X2FkZF9wYWQobV9hdWRpb1NpbmtCaW4uZ2V0KCksIGdzdF9naG9zdF9wYWRfbmV3KCJzaW5rIiwg
YXVkaW9UZWVTaW5rUGFkLmdldCgpKSk7Ci0gICAgfQogCi0gICAgLy8gTGluayBhIG5ldyBzcmMg
cGFkIGZyb20gdGVlIHRvIHF1ZXVlICEgYXVkaW9jb252ZXJ0ICEKLSAgICAvLyBhdWRpb3Jlc2Ft
cGxlICEgdm9sdW1lICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhCi0gICAgLy8gYXV0
b2F1ZGlvc2luay4gVGhlIGF1ZGlvcmVzYW1wbGUgYW5kIGF1ZGlvY29udmVydCBhcmUgbmVlZGVk
IHRvCi0gICAgLy8gZW5zdXJlIHRoZSBhdWRpbyBzaW5rIHJlY2VpdmVzIGJ1ZmZlcnMgaW4gdGhl
IGNvcnJlY3QgZm9ybWF0LgorICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTl9DQVNUKG1fYXVk
aW9TaW5rQmluLmdldCgpKSwgYXVkaW9UZWUsIGF1ZGlvUXVldWUsIGF1ZGlvQ29udmVydCwgYXVk
aW9SZXNhbXBsZSwgdm9sdW1lRWxlbWVudCwgYXVkaW9Db252ZXJ0MiwgYXVkaW9SZXNhbXBsZTIs
IGF1ZGlvU2luaywgbnVsbHB0cik7CisKKyAgICAvLyBBZGQgYSBnaG9zdHBhZCB0byB0aGUgYmlu
IHNvIGl0IGNhbiBwcm94eSB0byB0ZWUuCisgICAgYXV0byBhdWRpb1RlZVNpbmtQYWQgPSBhZG9w
dEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoYXVkaW9UZWUsICJzaW5rIikpOworICAg
IGdzdF9lbGVtZW50X2FkZF9wYWQobV9hdWRpb1NpbmtCaW4uZ2V0KCksIGdzdF9naG9zdF9wYWRf
bmV3KCJzaW5rIiwgYXVkaW9UZWVTaW5rUGFkLmdldCgpKSk7CisKKyAgICAvLyBMaW5rIGEgbmV3
IHNyYyBwYWQgZnJvbSB0ZWUgdG8gcXVldWUgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxl
ICEgdm9sdW1lICEgYXVkaW9jb252ZXJ0ICEKKyAgICAvLyBhdWRpb3Jlc2FtcGxlICEgYXVkaW9z
aW5rLiBUaGUgYXVkaW9yZXNhbXBsZSBhbmQgYXVkaW9jb252ZXJ0IGFyZSBuZWVkZWQgdG8gZW5z
dXJlIHRoZSBhdWRpbworICAgIC8vIHNpbmsgcmVjZWl2ZXMgYnVmZmVycyBpbiB0aGUgY29ycmVj
dCBmb3JtYXQuCiAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoYXVkaW9UZWUsICJzcmNf
JXUiLCBhdWRpb1F1ZXVlLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKICAg
ICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChhdWRpb1F1ZXVlLCAic3JjIiwgYXVkaW9Db252
ZXJ0LCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKICAgICBnc3RfZWxlbWVu
dF9saW5rX3BhZHNfZnVsbChhdWRpb0NvbnZlcnQsICJzcmMiLCBhdWRpb1Jlc2FtcGxlLCAic2lu
ayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQ
cm92aWRlckdTdHJlYW1lci5oCmluZGV4IGQ2YmEyMmEzMTFlNTlmNzNhODE3MjhlZGY0NDUxN2Rh
ZGQ1M2VmYjAuLmU0ZjY1MTJmMTJhMDNmMTM5YzQzN2RjMjBkNzE3MjRiMWQ0YjIzNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJj
ZVByb3ZpZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaApAQCAtNTcsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcigpOwogICAgIH5BdWRp
b1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKCk7CiAKLSAgICB2b2lkIGNvbmZpZ3VyZUF1ZGlvQmlu
KEdzdEVsZW1lbnQqIGF1ZGlvQmluLCBHc3RFbGVtZW50KiB0ZWVQcmVkZWNlc3Nvcik7CisgICAg
dm9pZCBjb25maWd1cmVBdWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0JpbiwgR3N0RWxlbWVudCog
YXVkaW9TaW5rKTsKIAogICAgIHZvaWQgcHJvdmlkZUlucHV0KEF1ZGlvQnVzKiwgc2l6ZV90IGZy
YW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDbGllbnQoQXVkaW9Tb3VyY2VQ
cm92aWRlckNsaWVudCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDUzY2E3Yzc0YTI2YmNlYTdhOTI4YmUyYmU1
MTIzMWEzNzQ1OThhNTIuLjEyMjRjZDI0ZThkMmZiNzEyNjZmMmVjZGE4YmNkOWMyMzZhZGQ4M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKQEAgLTE0NTUsNiArMTQ1NSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyOjpzaW11bGF0ZUF1ZGlv
SW50ZXJydXB0aW9uKCkKIAogICAgIG1fcHJpdmF0ZS0+c2ltdWxhdGVBdWRpb0ludGVycnVwdGlv
bigpOwogfQorCitNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGUgTWVkaWFQbGF5
ZXI6OmF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNsaWVudCgpLm1l
ZGlhUGxheWVyQXVkaW9SZW5kZXJpbmdNb2RlKCk7Cit9CiAjZW5kaWYKIAogdm9pZCBNZWRpYVBs
YXllcjo6YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQpAQCAtMTY5NCw2ICsxNjk5LDIxIEBAIFN0
cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9s
aWN5IGVudW1lcmF0aW9uVmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXpl
X3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKIH0KIAorI2lmIFVTRShHU1RSRUFNRVIpCitTdHJpbmcg
Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJp
bmdNb2RlIGVudW1lcmF0aW9uVmFsdWUpCit7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gdmFsdWVzW10gPSB7CisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBM
KCJIb3N0IiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJJbnRlcm5hbCIpLAor
ICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiRXh0ZXJuYWwiKSwKKyAgICB9OworICAg
IHN0YXRpY19hc3NlcnQoIXN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6QXVk
aW9SZW5kZXJpbmdNb2RlOjpIb3N0KSwgIk1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5n
TW9kZTo6SG9zdCBpcyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGU6Oklu
dGVybmFsKSA9PSAxLCAiTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlOjpJbnRl
cm5hbCBpcyBub3QgMSBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nh
c3Q8c2l6ZV90PihNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGU6OkV4dGVybmFs
KSA9PSAyLCAiTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlOjpFeHRlcm5hbCBp
cyBub3QgMiBhcyBleHBlY3RlZCIpOworICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVu
dW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKKyAgICByZXR1cm4g
dmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldOworfQorI2VuZGlm
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKaW5kZXggZWEyNTdmMTJhY2YwOWUwYmJkZmIzMjliMTE1M2NjZTUxYWNhZjRmMy4u
N2VhMGZjZjQ1OTQ3OGQ5Zjg3MmExZTkxZGJhMDYxODExNWNhMjg4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0yNjIsNiArMjYyLDcg
QEAgcHVibGljOgogCiAjaWYgVVNFKEdTVFJFQU1FUikKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBNZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYpIHsgfTsKKyAgICB2
aXJ0dWFsIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZSBtZWRpYVBsYXllckF1
ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlv
UmVuZGVyaW5nTW9kZTo6SG9zdDsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQ
bGF5ZXJTaG91bGREaXNhYmxlU2xlZXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMjc3
LDYgKzI3OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IHZvaWQqIG1lZGlhUGxheWVy
TG9nSWRlbnRpZmllcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIGNvbnN0IExv
Z2dlciYgbWVkaWFQbGF5ZXJMb2dnZXIoKSA9IDA7CiAjZW5kaWYKKworICAgIHZpcnR1YWwgYm9v
bCBtZWRpYVBsYXllclNob3VsZEludGVybmFsbHlSZW5kZXJBdWRpbygpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KIH07CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhUGxheWVyIDogcHVibGlj
IE1lZGlhUGxheWVyRW51bXMsIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUGxheWVyPiB7CkBAIC02
MjQsNiArNjI3LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKEdTVFJFQU1FUikKICAgICB2b2lkIHJl
cXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uLCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdp
bnNDYWxsYmFjayYgY2FsbGJhY2spIHsgY2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1
Z2lucyhkZXRhaWxzLCBkZXNjcmlwdGlvbiwgY2FsbGJhY2spOyB9CisgICAgTWVkaWFQbGF5ZXJF
bnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlIGF1ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0OwogI2Vu
ZGlmCiAKICAgICBjb25zdCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIHBsYXllclByaXZh
dGUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaAppbmRleCBhMDAxNTk3
MWE4MjJiNDZmN2FjYzFiODgwMzAzOGEyNzFhNDY3MWQ5Li5iMTQ0ODY5YmViZjc1ZGM0ODZlMjIx
MjdkNjNiMzdkMDJlZjBkMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCkBAIC0xMDYsNiArMTA2LDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgVGFyZ2V0VHlwZVRWT3V0CiAgICAgfTsKIAorI2lmIFVTRShHU1RSRUFNRVIpCisg
ICAgZW51bSBjbGFzcyBBdWRpb1JlbmRlcmluZ01vZGUgOiB1aW50OF90IHsKKyAgICAgICAgSG9z
dCwKKyAgICAgICAgSW50ZXJuYWwsCisgICAgICAgIEV4dGVybmFsCisgICAgfTsKKyNlbmRpZgog
fTsKIAogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyRW51bXM6
OlJlYWR5U3RhdGUpOwpAQCAtMTE0LDYgKzEyMSw5IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkKTsKIFN0cmluZyBjb252ZXJ0RW51
bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUpOwogU3RyaW5n
IGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1Bv
bGljeSk7CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRv
U3RyaW5nKE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZSk7CisjZW5kaWYKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogCkBAIC0yNDAsNCArMjUwLDIzIEBAIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CiAgICAgPjsKIH07CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQordGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpBdWRpb1Jl
bmRlcmluZ01vZGU+IHsKK3VzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlLAorICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZTo6SG9zdCwKKyAgICBXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGU6OkludGVybmFsLAorICAgIFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZTo6RXh0ZXJuYWwKKyAgICA+Owor
fTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGU+IHsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdG9T
dHJpbmcoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2Rl
IHBvbGljeSkKKyAgICB7CisgICAgICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
Zyhwb2xpY3kpOworICAgIH0KK307CisjZW5kaWYKKwogfTsgLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckF1ZGlvTWl4ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmODBlOGU3Y2Y4MmJl
MGRkZmVhYjViYzEyYWZlMWVmMDYzMGQyMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5jcHAK
QEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTAor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJBdWRpb01peGVyLmgiCisKKyNp
ZiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1NUX0RF
QlVHX0NBVEVHT1JZX1NUQVRJQyh3ZWJraXRfbWVkaWFfZ3N0X2F1ZGlvX21peGVyX2RlYnVnKTsK
KyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tZWRpYV9nc3RfYXVkaW9fbWl4ZXJfZGVi
dWcKKworYm9vbCBHU3RyZWFtZXJBdWRpb01peGVyOjppc0F2YWlsYWJsZSgpCit7CisgICAgcmV0
dXJuIHdlYmtpdEdzdENoZWNrVmVyc2lvbigxLCAxNywgMikgJiYgaXNHU3RyZWFtZXJQbHVnaW5B
dmFpbGFibGUoImludGVyIikgJiYgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoImF1ZGlvbWl4
ZXIiKTsKK30KKworR1N0cmVhbWVyQXVkaW9NaXhlciYgR1N0cmVhbWVyQXVkaW9NaXhlcjo6c2lu
Z2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVhbWVyQXVkaW9NaXhl
cj4gc2hhcmVkSW5zdGFuY2U7CisgICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOworfQorCitHU3Ry
ZWFtZXJBdWRpb01peGVyOjpHU3RyZWFtZXJBdWRpb01peGVyKCkKK3sKKyAgICBHU1RfREVCVUdf
Q0FURUdPUllfSU5JVCh3ZWJraXRfbWVkaWFfZ3N0X2F1ZGlvX21peGVyX2RlYnVnLCAid2Via2l0
YXVkaW9taXhlciIsIDAsICJXZWJLaXQgR1N0cmVhbWVyIGF1ZGlvIG1peGVyIik7CisgICAgbV9w
aXBlbGluZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicGlwZWxpbmUiLCAid2Via2l0YXVk
aW9taXhlciIpOworICAgIGNvbm5lY3RTaW1wbGVCdXNNZXNzYWdlQ2FsbGJhY2sobV9waXBlbGlu
ZS5nZXQoKSk7CisKKyAgICBtX21peGVyID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRp
b21peGVyIiwgbnVsbHB0cik7CisgICAgR3N0RWxlbWVudCogYXVkaW9TaW5rID0gZ3N0X2VsZW1l
bnRfZmFjdG9yeV9tYWtlKCJhdXRvYXVkaW9zaW5rIiwgbnVsbHB0cik7CisKKyAgICBnc3RfYmlu
X2FkZF9tYW55KEdTVF9CSU5fQ0FTVChtX3BpcGVsaW5lLmdldCgpKSwgbV9taXhlci5nZXQoKSwg
YXVkaW9TaW5rLCBudWxscHRyKTsKKyAgICBnc3RfZWxlbWVudF9saW5rKG1fbWl4ZXIuZ2V0KCks
IGF1ZGlvU2luayk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCks
IEdTVF9TVEFURV9SRUFEWSk7Cit9CisKK3ZvaWQgR1N0cmVhbWVyQXVkaW9NaXhlcjo6ZW5zdXJl
U3RhdGUoR3N0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpCit7CisjaWYgR1NUX0NIRUNLX1ZFUlNJ
T04oMSwgMTQsIDApCisgICAgR1NUX0RFQlVHX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAiSGFu
ZGxpbmcgJXMgdHJhbnNpdGlvbiAoJXUgbWl4ZXIgcGFkcykiLCBnc3Rfc3RhdGVfY2hhbmdlX2dl
dF9uYW1lKHN0YXRlQ2hhbmdlKSwgbV9taXhlci0+bnVtc2lua3BhZHMpOworI2VuZGlmCisgICAg
c3dpdGNoIChzdGF0ZUNoYW5nZSkgeworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9U
T19QQVVTRUQ6CisgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgp
LCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVf
Q0hBTkdFX1BBVVNFRF9UT19QTEFZSU5HOgorICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUo
bV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1BMQVlJTkcpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUExBWUlOR19UT19QQVVTRUQ6CisgICAgICAgIGlmICht
X21peGVyLT5udW1zaW5rcGFkcyA9PSAxKQorICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0
YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QQVVTRUQpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1JFQURZOgorICAgICAgICBpZiAo
bV9taXhlci0+bnVtc2lua3BhZHMgPT0gMSkKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9z
dGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUkVBRFkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fTlVMTDoKKyAgICAgICAgaWYgKG1f
bWl4ZXItPm51bXNpbmtwYWRzID09IDEpCisgICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3Rh
dGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK0dSZWZQdHI8R3N0UGFkPiBH
U3RyZWFtZXJBdWRpb01peGVyOjpyZWdpc3RlclByb2R1Y2VyKEdzdEVsZW1lbnQqIGludGVyYXVk
aW9TaW5rKQoreworICAgIEdzdEVsZW1lbnQqIHNyYyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFr
ZSgiaW50ZXJhdWRpb3NyYyIsIG51bGxwdHIpOworICAgIGdfb2JqZWN0X3NldChzcmMsICJjaGFu
bmVsIiwgR1NUX0VMRU1FTlRfTkFNRShpbnRlcmF1ZGlvU2luayksIG51bGxwdHIpOworICAgIGdf
b2JqZWN0X3NldChpbnRlcmF1ZGlvU2luaywgImNoYW5uZWwiLCBHU1RfRUxFTUVOVF9OQU1FKGlu
dGVyYXVkaW9TaW5rKSwgbnVsbHB0cik7CisKKyAgICBnc3RfYmluX2FkZChHU1RfQklOX0NBU1Qo
bV9waXBlbGluZS5nZXQoKSksIHNyYyk7CisKKyAgICBib29sIHNob3VsZFN0YXJ0ID0gIW1fbWl4
ZXItPm51bXNpbmtwYWRzOworCisgICAgYXV0byBtaXhlclBhZCA9IGFkb3B0R1JlZihnc3RfZWxl
bWVudF9nZXRfcmVxdWVzdF9wYWQobV9taXhlci5nZXQoKSwgInNpbmtfJXUiKSk7CisgICAgYXV0
byBzcmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoc3JjLCAic3Jj
IikpOworICAgIGdzdF9wYWRfbGluayhzcmNQYWQuZ2V0KCksIG1peGVyUGFkLmdldCgpKTsKKwor
ICAgIGlmIChzaG91bGRTdGFydCkKKyAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlw
ZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9SRUFEWSk7CisgICAgZWxzZQorICAgICAgICBnc3RfZWxl
bWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KHNyYyk7CisKKyAgICBHU1RfREVCVUdfT0JKRUNU
KG1fcGlwZWxpbmUuZ2V0KCksICJSZWdpc3RlcmVkIGF1ZGlvIHByb2R1Y2VyICUiIEdTVF9QVFJf
Rk9STUFULCBtaXhlclBhZC5nZXQoKSk7CisgICAgR1NUX0RFQlVHX0JJTl9UT19ET1RfRklMRV9X
SVRIX1RTKEdTVF9CSU5fQ0FTVChtX3BpcGVsaW5lLmdldCgpKSwgR1NUX0RFQlVHX0dSQVBIX1NI
T1dfQUxMLCAiYXVkaW8tbWl4ZXItYWZ0ZXItcHJvZHVjZXItcmVnaXN0cmF0aW9uIik7CisgICAg
cmV0dXJuIG1peGVyUGFkOworfQorCit2b2lkIEdTdHJlYW1lckF1ZGlvTWl4ZXI6OnVucmVnaXN0
ZXJQcm9kdWNlcihjb25zdCBHUmVmUHRyPEdzdFBhZD4mIG1peGVyUGFkKQoreworICAgIEdTVF9E
RUJVR19PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIlVucmVnaXN0ZXJpbmcgYXVkaW8gcHJvZHVj
ZXIgJSIgR1NUX1BUUl9GT1JNQVQsIG1peGVyUGFkLmdldCgpKTsKKworICAgIGF1dG8gcGVlciA9
IGFkb3B0R1JlZihnc3RfcGFkX2dldF9wZWVyKG1peGVyUGFkLmdldCgpKSk7CisgICAgYXV0byBp
bnRlcmF1ZGlvU3JjID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3BhcmVudF9lbGVtZW50KHBlZXIu
Z2V0KCkpKTsKKyAgICBHU1RfTE9HX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAiaW50ZXJhdWRp
b3NyYzogJSIgR1NUX1BUUl9GT1JNQVQsIGludGVyYXVkaW9TcmMuZ2V0KCkpOworCisgICAgZ3N0
X2VsZW1lbnRfc2V0X2xvY2tlZF9zdGF0ZShpbnRlcmF1ZGlvU3JjLmdldCgpLCB0cnVlKTsKKyAg
ICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoaW50ZXJhdWRpb1NyYy5nZXQoKSwgR1NUX1NUQVRFX05V
TEwpOworCisgICAgZ3N0X3BhZF91bmxpbmsocGVlci5nZXQoKSwgbWl4ZXJQYWQuZ2V0KCkpOwor
ICAgIGdzdF9lbGVtZW50X3JlbGVhc2VfcmVxdWVzdF9wYWQobV9taXhlci5nZXQoKSwgbWl4ZXJQ
YWQuZ2V0KCkpOworCisgICAgZ3N0X2Jpbl9yZW1vdmUoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUu
Z2V0KCkpLCBpbnRlcmF1ZGlvU3JjLmdldCgpKTsKKworICAgIGlmICghbV9taXhlci0+bnVtc2lu
a3BhZHMpCisgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBH
U1RfU1RBVEVfTlVMTCk7CisKKyAgICBHU1RfREVCVUdfQklOX1RPX0RPVF9GSUxFX1dJVEhfVFMo
R1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCBHU1RfREVCVUdfR1JBUEhfU0hPV19BTEws
ICJhdWRpby1taXhlci1hZnRlci1wcm9kdWNlci11bnJlZ2lzdHJhdGlvbiIpOworfQorCit9Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJBdWRpb01peGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExZTIxNmZl
MzAxNzYzZmMxYTg0MTNkODM5ZTgzYjE2OWU3MmUzMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhl
ci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMu
TAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgIkdSZWZQdHJH
U3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEdTdHJlYW1lckF1ZGlvTWl4ZXIgeworICAgIGZyaWVuZCBOZXZlckRlc3Ry
b3llZDxHU3RyZWFtZXJBdWRpb01peGVyPjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpc0F2
YWlsYWJsZSgpOworICAgIHN0YXRpYyBHU3RyZWFtZXJBdWRpb01peGVyJiBzaW5nbGV0b24oKTsK
KworICAgIHZvaWQgZW5zdXJlU3RhdGUoR3N0U3RhdGVDaGFuZ2UpOworICAgIEdSZWZQdHI8R3N0
UGFkPiByZWdpc3RlclByb2R1Y2VyKEdzdEVsZW1lbnQqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJQ
cm9kdWNlcihjb25zdCBHUmVmUHRyPEdzdFBhZD4mKTsKKworcHJpdmF0ZToKKyAgICBHU3RyZWFt
ZXJBdWRpb01peGVyKCk7CisKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fcGlwZWxpbmU7Cisg
ICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX21peGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5j
cHAKaW5kZXggNDQxMmNkNWJjMGE2ZDAyM2E0YWIzZjAwZjRiOTE0ZjhlMGU0YjZhOC4uZDI0ZTQ1
NWY0MmU5OGQ2ZGZiYzQxZjhmODEwMTY2YWQ1Nzc3ZjA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5jcHAKQEAgLTI0LDkgKzI0LDExIEBACiAjaWYgVVNFKEdTVFJFQU1FUikKIAogI2luY2x1
ZGUgIkdMVmlkZW9TaW5rR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyQXVkaW9NaXhl
ci5oIgogI2luY2x1ZGUgIkdzdEFsbG9jYXRvckZhc3RNYWxsb2MuaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9T
aW5rR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLWluZm8uaD4KICNpbmNs
dWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8bXV0ZXg+CkBAIC0zMjMsNiArMzI1LDggQEAgYm9v
bCBpbml0aWFsaXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpCiAgICAgICAg
IGdzdF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXRnbHZpZGVvc2luayIsIEdTVF9SQU5LX1BS
SU1BUlksIFdFQktJVF9UWVBFX0dMX1ZJREVPX1NJTkspOwogI2VuZGlmCiAjZW5kaWYKKyAgICAg
ICAgLy8gV2UgZG9uJ3Qgd2FudCBhdXRvYXVkaW9zaW5rIHRvIGF1dG9wbHVnIG91ciBzaW5rLgor
ICAgICAgICBnc3RfZWxlbWVudF9yZWdpc3RlcigwLCAid2Via2l0YXVkaW9zaW5rIiwgR1NUX1JB
TktfTk9ORSwgV0VCS0lUX1RZUEVfQVVESU9fU0lOSyk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC00MTYsNiArNDIwLDMyIEBAIGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFi
bGUoY29uc3QgY2hhciogbmFtZSkKICAgICByZXR1cm4gcGx1Z2luOwogfQogCitHc3RFbGVtZW50
KiBjcmVhdGVBdWRpb1NpbmtGb3JQb2xpY3koTWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJp
bmdNb2RlIGF1ZGlvUmVuZGVyaW5nTW9kZSkKK3sKKyAgICBHc3RFbGVtZW50KiBhdWRpb1Npbmsg
PSBudWxscHRyOworICAgIHN3aXRjaCAoYXVkaW9SZW5kZXJpbmdNb2RlKSB7CisgICAgY2FzZSBN
ZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGU6OkV4dGVybmFsOgorICAgICAgICBh
dWRpb1NpbmsgPSB3ZWJraXRBdWRpb1NpbmtOZXcoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGU6OkludGVybmFsOgorICAgICAg
ICBpZiAoR1N0cmVhbWVyQXVkaW9NaXhlcjo6aXNBdmFpbGFibGUoKSkgeworICAgICAgICAgICAg
YXVkaW9TaW5rID0gd2Via2l0QXVkaW9TaW5rTmV3SW50ZXJuYWwoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIEdTVF9XQVJOSU5HKCJJbnRlcm5hbCBhdWRpbyBtaXhp
bmcgcmVxdWVzdCBjYW5ub3QgYmUgZnVsZmlsbGVkLiBGYWxsaW5nIGJhY2sgdG8gYXV0b2F1ZGlv
c2luayIpOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIE1lZGlhUGxheWVyRW51bXM6
OkF1ZGlvUmVuZGVyaW5nTW9kZTo6SG9zdDoKKyAgICAgICAgYXVkaW9TaW5rID0gZ3N0X2VsZW1l
bnRfZmFjdG9yeV9tYWtlKCJhdXRvYXVkaW9zaW5rIiwgbnVsbHB0cik7CisgICAgICAgIGlmICgh
YXVkaW9TaW5rKSB7CisgICAgICAgICAgICBHU1RfV0FSTklORygiR1N0cmVhbWVyJ3MgYXV0b2F1
ZGlvc2luayBub3QgZm91bmQuIFBsZWFzZSBjaGVjayB5b3VyIGdzdC1wbHVnaW5zLWdvb2QgaW5z
dGFsbGF0aW9uIik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gYXVkaW9TaW5rOworfQorCiB9CiAKICNl
bmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IDFmZGEx
MDhlMDk2NGEzYWNmYjFmZjJlNjE3MDFiM2Y3ZDhjZjkwNzMuLjEwMGUwODM3YWM0ODg5MzkyNjU1
ZGZlNTE5NjBhNDlmZmFhY2I4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAgLTIzLDYg
KzIzLDcgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVh
bWVyLmgiCiAjaW5jbHVkZSAiR1VuaXF1ZVB0ckdTdHJlYW1lci5oIgorI2luY2x1ZGUgIk1lZGlh
UGxheWVyRW51bXMuaCIKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVv
L3ZpZGVvLWZvcm1hdC5oPgogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby1pbmZvLmg+CkBAIC0y
OTIsNiArMjkzLDggQEAgZW51bSBjbGFzcyBHc3RWaWRlb0RlY29kZXJQbGF0Zm9ybSB7IElteFZQ
VSwgVmlkZW80TGludXgsIE9wZW5NQVggfTsKIAogYm9vbCBpc0dTdHJlYW1lclBsdWdpbkF2YWls
YWJsZShjb25zdCBjaGFyKiBuYW1lKTsKIAorR3N0RWxlbWVudCogY3JlYXRlQXVkaW9TaW5rRm9y
UG9saWN5KE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZSk7CisKIH0KIAogI2lm
bmRlZiBHU1RfQlVGRkVSX0RUU19PUl9QVFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HVW5pcXVlUHRyR1N0cmVhbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1VuaXF1ZVB0ckdTdHJlYW1lci5o
CmluZGV4IGFhMDc3NDhkZDc1NjViMGE2ODI3ZjMzZjM4MzJjNWRhY2JmNGU1ZDAuLmJmNzRlY2Yw
MmNjMjJmNjA2ZWJjYjlmZTg1YzAzNGIyNmM0MDY0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HVW5pcXVlUHRyR1N0cmVhbWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dVbmlxdWVQdHJH
U3RyZWFtZXIuaApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlIDx3cGUvZXh0ZW5zaW9ucy92
aWRlby1wbGFuZS1kaXNwbGF5LWRtYWJ1Zi5oPgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEJVSUxE
SU5HX1dlYkNvcmUpICYmIFBMQVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElP
X0VYVEVOU0lPTikKKyNpbmNsdWRlIDx3cGUvZXh0ZW5zaW9ucy9hdWRpby5oPgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXVEYgewogCiBXVEZfREVGSU5FX0dQVFJfREVMRVRFUihHc3RTdHJ1Y3R1cmUs
IGdzdF9zdHJ1Y3R1cmVfZnJlZSkKQEAgLTQ5LDYgKzUzLDkgQEAgV1RGX0RFRklORV9HUFRSX0RF
TEVURVIoR3N0QXVkaW9Db252ZXJ0ZXIsIGdzdF9hdWRpb19jb252ZXJ0ZXJfZnJlZSkKIFdURl9E
RUZJTkVfR1BUUl9ERUxFVEVSKHN0cnVjdCB3cGVfdmlkZW9fcGxhbmVfZGlzcGxheV9kbWFidWZf
c291cmNlLCB3cGVfdmlkZW9fcGxhbmVfZGlzcGxheV9kbWFidWZfc291cmNlX2Rlc3Ryb3kpCiAj
ZW5kaWYKIAorI2lmIGRlZmluZWQoQlVJTERJTkdfV2ViQ29yZSkgJiYgUExBVEZPUk0oV1BFKSAm
JiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorV1RGX0RFRklORV9HUFRSX0RF
TEVURVIoc3RydWN0IHdwZV9hdWRpb19zb3VyY2UsIHdwZV9hdWRpb19zb3VyY2VfZGVzdHJveSkK
KyNlbmRpZgogfQogCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggZGViYmI3YjUxNDYzMGRhMTNj
YzI0MWFjNzg2Mjc1N2JkYmZlYjhlNS4uMTE5MWZiYTFlMzhhYTM3NGMzNzU2ZTZiODRhNzQ1ZmE2
Njk1MmJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJB
dWRpb01peGVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCkBA
IC00Myw2ICs0NCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJU
aW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiVmlkZW9TaW5rR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAi
V2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmgiCiAjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKICNpbmNs
dWRlICJJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKQEAgLTIzNiwx
MCArMjM4LDkgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyKCkKICAgICBpZiAoV0VCS0lUX0lTX1dFQl9TUkMobV9zb3VyY2UuZ2V0KCkp
ICYmIEdTVF9PQkpFQ1RfUEFSRU5UKG1fc291cmNlLmdldCgpKSkKICAgICAgICAgZ19zaWduYWxf
aGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKEdTVF9FTEVNRU5UX1BBUkVOVChtX3NvdXJjZS5n
ZXQoKSksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHVyaURlY29kZUJpbkVsZW1lbnRBZGRl
ZENhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBpZiAobV9hdXRvQXVkaW9TaW5rKSB7Ci0gICAgICAg
IGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhHX09CSkVDVChtX2F1dG9BdWRp
b1NpbmsuZ2V0KCkpLAotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4oc2V0
QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzQ2FsbGJhY2spLCB0aGlzKTsKLSAgICB9CisgICAgYXV0byog
c2luayA9IGF1ZGlvU2luaygpOworICAgIGlmIChzaW5rICYmICFXRUJLSVRfSVNfQVVESU9fU0lO
SyhzaW5rKSkKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKEdf
T0JKRUNUKHNpbmspLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihzZXRBdWRpb1N0cmVhbVBy
b3BlcnRpZXNDYWxsYmFjayksIHRoaXMpOwogCiAgICAgbV9yZWFkeVRpbWVySGFuZGxlci5zdG9w
KCk7CiAgICAgZm9yIChhdXRvJiBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sgOiBtX21pc3NpbmdQbHVn
aW5DYWxsYmFja3MpIHsKQEAgLTUxOCwxNyArNTE5LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpzZWVrKGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lKQogCiAgICAgLy8g
QXZvaWQgdXNlbGVzcyBzZWVraW5nLgogICAgIGlmIChtZWRpYVRpbWUgPT0gY3VycmVudE1lZGlh
VGltZSgpKSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIltTZWVrXSBz
ZWVrIHRvIEVPUyBwb3NpdGlvbiB1bmhhbmRsZWQiKTsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVD
VChwaXBlbGluZSgpLCAiW1NlZWtdIEFscmVhZHkgYXQgcmVxdWVzdGVkIHBvc2l0aW9uLiBBYm9y
dGluZy4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE1lZGlhVGltZSB0aW1lID0g
c3RkOjptaW4obWVkaWFUaW1lLCBkdXJhdGlvbk1lZGlhVGltZSgpKTsKLQogICAgIGlmIChtX2lz
TGl2ZVN0cmVhbSkgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJbU2Vl
a10gTGl2ZSBzdHJlYW0gc2VlayB1bmhhbmRsZWQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIE1lZGlhVGltZSB0aW1lID0gc3RkOjptaW4obWVkaWFUaW1lLCBkdXJhdGlvbk1lZGlh
VGltZSgpKTsKICAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIltTZWVrXSBzZWVraW5n
IHRvICVzIiwgdG9TdHJpbmcodGltZSkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBpZiAobV9pc1Nl
ZWtpbmcpIHsKQEAgLTEwMDQsMTcgKzEwMDQsMTYgQEAgc3RhdGljIHZvaWQgc2V0U3luY09uQ2xv
Y2soR3N0RWxlbWVudCAqZWxlbWVudCwgYm9vbCBzeW5jKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoIUdTVF9JU19CSU4oZWxlbWVudCkpIHsKLSAgICAgICAgZ19vYmplY3Rfc2V0KGVsZW1l
bnQsICJzeW5jIiwgc3luYywgTlVMTCk7CisgICAgICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAi
c3luYyIsIHN5bmMsIG51bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR3N0
SXRlcmF0b3IqIGl0ID0gZ3N0X2Jpbl9pdGVyYXRlX3NpbmtzKEdTVF9CSU4oZWxlbWVudCkpOwot
ICAgIHdoaWxlIChnc3RfaXRlcmF0b3JfZm9yZWFjaChpdCwgKEdzdEl0ZXJhdG9yRm9yZWFjaEZ1
bmN0aW9uKShbXShjb25zdCBHVmFsdWUqIGl0ZW0sIHZvaWQqIHN5bmNQdHIpIHsKKyAgICBHVW5p
cXVlUHRyPEdzdEl0ZXJhdG9yPiBpdGVyYXRvcihnc3RfYmluX2l0ZXJhdGVfc2lua3MoR1NUX0JJ
Tl9DQVNUKGVsZW1lbnQpKSk7CisgICAgd2hpbGUgKGdzdF9pdGVyYXRvcl9mb3JlYWNoKGl0ZXJh
dG9yLmdldCgpLCBzdGF0aWNfY2FzdDxHc3RJdGVyYXRvckZvcmVhY2hGdW5jdGlvbj4oW10oY29u
c3QgR1ZhbHVlKiBpdGVtLCB2b2lkKiBzeW5jUHRyKSB7CiAgICAgICAgIGJvb2wqIHN5bmMgPSBz
dGF0aWNfY2FzdDxib29sKj4oc3luY1B0cik7Ci0gICAgICAgIHNldFN5bmNPbkNsb2NrKEdTVF9F
TEVNRU5UKGdfdmFsdWVfZ2V0X29iamVjdChpdGVtKSksICpzeW5jKTsKKyAgICAgICAgc2V0U3lu
Y09uQ2xvY2soR1NUX0VMRU1FTlRfQ0FTVChnX3ZhbHVlX2dldF9vYmplY3QoaXRlbSkpLCAqc3lu
Yyk7CiAgICAgfSksICZzeW5jKSA9PSBHU1RfSVRFUkFUT1JfUkVTWU5DKQotICAgICAgICBnc3Rf
aXRlcmF0b3JfcmVzeW5jKGl0KTsKLSAgICBnc3RfaXRlcmF0b3JfZnJlZShpdCk7CisgICAgICAg
IGdzdF9pdGVyYXRvcl9yZXN5bmMoaXRlcmF0b3IuZ2V0KCkpOwogfQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3luY09uQ2xvY2soYm9vbCBzeW5jKQpAQCAtMTM1MywyNiAr
MTM1MiwzMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZGluZ0ZhaWxl
ZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcgogCiBHc3RFbGVtZW50KiBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1ZGlvU2luaygpCiB7Ci0gICAgbV9hdXRvQXVk
aW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdXRvYXVkaW9zaW5rIiwgbnVsbHB0
cik7Ci0gICAgaWYgKCFtX2F1dG9BdWRpb1NpbmspIHsKLSAgICAgICAgR1NUX1dBUk5JTkcoIkdT
dHJlYW1lcidzIGF1dG9hdWRpb3Npbmsgbm90IGZvdW5kLiBQbGVhc2UgY2hlY2sgeW91ciBnc3Qt
cGx1Z2lucy1nb29kIGluc3RhbGxhdGlvbiIpOworICAgIEdTVF9JTkZPX09CSkVDVChtX3BpcGVs
aW5lLmdldCgpLCAiQ3JlYXRpbmcgYXVkaW8gc2luayBmb3IgJXMgcmVuZGVyaW5nIHBvbGljeSIs
IGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKG1fcGxheWVyLT5hdWRpb1JlbmRlcmluZ01vZGUo
KSkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVB
dWRpb1NpbmtGb3JQb2xpY3kobV9wbGF5ZXItPmF1ZGlvUmVuZGVyaW5nTW9kZSgpKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOworICAgIGlmICghYXVkaW9TaW5rKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9CiAKLSAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9h
dXRvQXVkaW9TaW5rLmdldCgpLCAiY2hpbGQtYWRkZWQiLCBHX0NBTExCQUNLKHNldEF1ZGlvU3Ry
ZWFtUHJvcGVydGllc0NhbGxiYWNrKSwgdGhpcyk7CisgICAgaWYgKCFXRUJLSVRfSVNfQVVESU9f
U0lOSyhhdWRpb1NpbmspKQorICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoYXVkaW9T
aW5rLCAiY2hpbGQtYWRkZWQiLCBHX0NBTExCQUNLKHNldEF1ZGlvU3RyZWFtUHJvcGVydGllc0Nh
bGxiYWNrKSwgdGhpcyk7CiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIEdzdEVsZW1lbnQq
IGF1ZGlvU2lua0JpbiA9IGdzdF9iaW5fbmV3KCJhdWRpby1zaW5rIik7CiAgICAgZW5zdXJlQXVk
aW9Tb3VyY2VQcm92aWRlcigpOwotICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlci0+Y29uZmlndXJl
QXVkaW9CaW4oYXVkaW9TaW5rQmluLCBudWxscHRyKTsKKyAgICBtX2F1ZGlvU291cmNlUHJvdmlk
ZXItPmNvbmZpZ3VyZUF1ZGlvQmluKGF1ZGlvU2lua0JpbiwgYXVkaW9TaW5rKTsKICAgICByZXR1
cm4gYXVkaW9TaW5rQmluOwogI2Vsc2UKLSAgICByZXR1cm4gbV9hdXRvQXVkaW9TaW5rLmdldCgp
OworICAgIHJldHVybiBhdWRpb1Npbms7CiAjZW5kaWYKIH0KIAogR3N0RWxlbWVudCogTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NpbmsoKSBjb25zdAogeworICAgIGlmICghbV9w
aXBlbGluZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBHc3RFbGVtZW50KiBzaW5r
OwogICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAiYXVkaW8tc2luayIsICZzaW5r
LCBudWxscHRyKTsKICAgICByZXR1cm4gc2luazsKQEAgLTI3NTgsNiArMjc2Miw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmCiAgICAgc3RhdGljIEF0b21pYzx1aW50MzJfdD4gcGlwZWxpbmVJ
ZDsKICAgICBzZXRQaXBlbGluZShnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UocGxheWJpbk5hbWUs
CiAgICAgICAgIChwaXBlbGluZU5hbWUuaXNFbXB0eSgpID8gbWFrZVN0cmluZygibWVkaWEtcGxh
eWVyLSIsIHBpcGVsaW5lSWQuZXhjaGFuZ2VBZGQoMSkpIDogcGlwZWxpbmVOYW1lKS51dGY4KCku
ZGF0YSgpKSk7CisKICAgICBzZXRTdHJlYW1Wb2x1bWVFbGVtZW50KEdTVF9TVFJFQU1fVk9MVU1F
KG1fcGlwZWxpbmUuZ2V0KCkpKTsKIAogICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAi
VXNpbmcgbGVnYWN5IHBsYXliaW4gZWxlbWVudDogJXMiLCBib29sRm9yUHJpbnRpbmcobV9pc0xl
Z2FjeVBsYXliaW4pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaAppbmRleCAxZWVjOWIyNjlmZmRkNmQxOWM0NjAxNWY5MWM0MGIzMWJlY2MwMGQ3Li45MWVh
MjFhNmY5MGFkNzNlMmQyMmVlZTA4NjBmZWY3YTU4YmM3NjMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC01MTMsNyArNTEzLDYgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NvdXJj
ZVByb3ZpZGVyR1N0cmVhbWVyPiBtX2F1ZGlvU291cmNlUHJvdmlkZXI7CiAjZW5kaWYKLSAgICBH
UmVmUHRyPEdzdEVsZW1lbnQ+IG1fYXV0b0F1ZGlvU2luazsKICAgICBHUmVmUHRyPEdzdEVsZW1l
bnQ+IG1fZG93bmxvYWRCdWZmZXI7CiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVBsYXllclJlcXVl
c3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4+IG1fbWlzc2luZ1BsdWdpbkNhbGxiYWNr
czsKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4+IG1fYXVkaW9UcmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3Ry
ZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxNTY5OTJhMmU1ZTQ1ZDViNDE3YTk1MzIwZmFkMDYxNjky
ZTIwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDM3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5oIgorCisjaWYgVVNFKEdTVFJF
QU1FUikKKworI2luY2x1ZGUgIkdTdHJlYW1lckF1ZGlvTWl4ZXIuaCIKKyNpbmNsdWRlICJHU3Ry
ZWFtZXJDb21tb24uaCIKKyNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KKyNpbmNsdWRl
IDxnc3QvcGJ1dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgor
I2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CisKKyNpZiBQTEFURk9STShXUEUpICYmIFVT
RShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04pCisjaW5jbHVkZSAiUGxhdGZvcm1EaXNw
bGF5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5TGliV1BFLmgiCisjaW5jbHVkZSA8d3Bl
L2V4dGVuc2lvbnMvYXVkaW8uaD4KKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
Kworc3RydWN0IF9XZWJLaXRBdWRpb1NpbmtQcml2YXRlIHsKKyAgICBHUmVmUHRyPEdzdEVsZW1l
bnQ+IGludGVyYXVkaW9TaW5rOworICAgIEdSZWZQdHI8R3N0UGFkPiBtaXhlclBhZDsKKyAgICBH
UmVmUHRyPEdzdEVsZW1lbnQ+IHZvbHVtZUVsZW1lbnQ7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50
PiBhcHBzaW5rOworICAgIGdib29sZWFuIGVuYWJsZUludGVybmFsTWl4aW5nOworI2lmIFBMQVRG
T1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTikKKyAgICBHVW5p
cXVlUHRyPHN0cnVjdCB3cGVfYXVkaW9fc291cmNlPiB3cGVBdWRpb1NvdXJjZTsKKyAgICBpbnQg
bV9zdHJlYW1JZDsKKworICAgIC8vIHdwZV9hdWRpb19zb3VyY2Ugc3RhdGU6CisgICAgLy8gLSBH
U1RfU1RBVEVfTlVMTDogbm90IHN0YXJ0ZWQgb3IgRU9TCisgICAgLy8gLSBHU1RfU1RBVEVfUExB
WUlORzogYXQgbGVhc3Qgb25lIHBhY2tldCB3YXMgZW1pdHRlZAorICAgIC8vIC0gR1NUX1NUQVRF
X1BBVVNFRDogcGF1c2Ugbm90aWZpY2F0aW9uIHdhcyBzZW50CisgICAgR3N0U3RhdGUgc291cmNl
U3RhdGU7CisjZW5kaWYKK307CisKK2VudW0geworICAgIFBST1BfMCwKKyAgICBQUk9QX1ZPTFVN
RSwKKyAgICBQUk9QX01VVEUsCisgICAgUFJPUF9FTkFCTEVfSU5URVJOQUxfTUlYSU5HLAorfTsK
Kworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmtUZW1wbGF0ZSA9IEdTVF9TVEFUSUNf
UEFEX1RFTVBMQVRFKCJzaW5rIiwgR1NUX1BBRF9TSU5LLCBHU1RfUEFEX0FMV0FZUywKKyAgICBH
U1RfU1RBVElDX0NBUFMoImF1ZGlvL3gtcmF3IikpOworCitHU1RfREVCVUdfQ0FURUdPUllfU1RB
VElDKHdlYmtpdF9hdWRpb19zaW5rX2RlYnVnKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdl
YmtpdF9hdWRpb19zaW5rX2RlYnVnCisKKyNkZWZpbmUgd2Via2l0X2F1ZGlvX3NpbmtfcGFyZW50
X2NsYXNzIHBhcmVudF9jbGFzcworV0VCS0lUX0RFRklORV9UWVBFX1dJVEhfQ09ERShXZWJLaXRB
dWRpb1NpbmssIHdlYmtpdF9hdWRpb19zaW5rLCBHU1RfVFlQRV9CSU4sCisgICAgR19JTVBMRU1F
TlRfSU5URVJGQUNFKEdTVF9UWVBFX1NUUkVBTV9WT0xVTUUsIG51bGxwdHIpOworICAgIEdTVF9E
RUJVR19DQVRFR09SWV9JTklUKHdlYmtpdF9hdWRpb19zaW5rX2RlYnVnLCAid2Via2l0YXVkaW9z
aW5rIiwgMCwgIndlYmtpdCBhdWRpbyBzaW5rIGVsZW1lbnQiKQorKQorCisjaWYgUExBVEZPUk0o
V1BFKSAmJiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorc3RydWN0IEF1ZGlv
UGFja2V0SG9sZGVyIHsKKyAgICBleHBsaWNpdCBBdWRpb1BhY2tldEhvbGRlcihHc3RCdWZmZXIq
IGJ1ZmZlcikKKyAgICB7CisgICAgICAgIHRoaXMtPmJ1ZmZlciA9IEdzdE1hcHBlZE93bmVkQnVm
ZmVyOjpjcmVhdGUoYnVmZmVyKTsKKyAgICB9CisKKyAgICB+QXVkaW9QYWNrZXRIb2xkZXIoKQor
ICAgIHsKKyAgICAgICAgaWYgKGZkKQorICAgICAgICAgICAgY2xvc2UoKmZkKTsKKyAgICB9CisK
KyAgICBPcHRpb25hbDxzdGQ6OnBhaXI8dWludDMyX3QsIHNpemVfdD4+IG1hcCgpCisgICAgewor
ICAgICAgICBmZCA9IG1lbWZkX2NyZWF0ZSgid3BlLWF1ZGlvLWJ1ZmZlciIsIE1GRF9DTE9FWEVD
KTsKKyAgICAgICAgaWYgKCpmZCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgaWYgKGZ0cnVuY2F0ZSgqZmQsIGJ1ZmZlci0+c2l6ZSgpKSA9PSAtMSkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgc3NpemVfdCBieXRl
c1dyaXR0ZW4gPSB3cml0ZSgqZmQsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPCAwKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1dyaXR0ZW4pICE9
IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICBpZiAobHNlZWsoKmZkLCAwLCBTRUVLX1NFVCkgPT0gLTEpCisgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oKmZkKSwgYnVmZmVyLT5zaXplKCkpOworICAgIH0KKworICAgIE9wdGlv
bmFsPGludDMyX3Q+IGZkOworICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4gYnVmZmVy
OworfTsKKworc3RhdGljIHZvaWQgd2ViS2l0QXVkaW9TaW5rSGFuZGxlU2FtcGxlKFdlYktpdEF1
ZGlvU2luayogc2luaywgR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlKQoreworICAgIHN0cnVj
dCB3cGVfYXVkaW9fc291cmNlKiB3cGVBdWRpb1NvdXJjZSA9IHNpbmstPnByaXYtPndwZUF1ZGlv
U291cmNlLmdldCgpOworICAgIHN0YXRpYyBBdG9taWM8aW50MzJfdD4gdW5pcXVlSWQ7CisKKyAg
ICBpZiAoc2luay0+cHJpdi0+c291cmNlU3RhdGUgPT0gR1NUX1NUQVRFX05VTEwpIHsKKyAgICAg
ICAgc2luay0+cHJpdi0+bV9zdHJlYW1JZCA9IHVuaXF1ZUlkLmV4Y2hhbmdlQWRkKDEpOworICAg
ICAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhzYW1wbGUuZ2V0KCkpOwor
ICAgICAgICBHc3RBdWRpb0luZm8gaW5mbzsKKyAgICAgICAgZ3N0X2F1ZGlvX2luZm9faW5pdCgm
aW5mbyk7CisgICAgICAgIGdzdF9hdWRpb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2Fwcyk7Cisg
ICAgICAgIGNvbnN0IGNoYXIqIGZvcm1hdCA9IGdzdF9hdWRpb19mb3JtYXRfdG9fc3RyaW5nKEdT
VF9BVURJT19JTkZPX0ZPUk1BVCgmaW5mbykpOworICAgICAgICB3cGVfYXVkaW9fc291cmNlX3N0
YXJ0KHdwZUF1ZGlvU291cmNlLCBzaW5rLT5wcml2LT5tX3N0cmVhbUlkLCBHU1RfQVVESU9fSU5G
T19DSEFOTkVMUygmaW5mbyksIGZvcm1hdCwgR1NUX0FVRElPX0lORk9fUkFURSgmaW5mbykpOwor
ICAgICAgICBzaW5rLT5wcml2LT5zb3VyY2VTdGF0ZSA9IEdTVF9TVEFURV9QTEFZSU5HOworICAg
IH0KKworICAgIGF1dG8qIGhvbGRlciA9IG5ldyBBdWRpb1BhY2tldEhvbGRlcihnc3Rfc2FtcGxl
X2dldF9idWZmZXIoc2FtcGxlLmdldCgpKSk7CisgICAgYXV0byBtYXBEYXRhID0gaG9sZGVyLT5t
YXAoKTsKKyAgICBpZiAoIW1hcERhdGEpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzaW5r
LCAiVW5hYmxlIHRvIHByZXBhcmUgc2hhcmVkIGF1ZGlvIGJ1ZmZlciIpOworICAgICAgICBkZWxl
dGUgaG9sZGVyOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHdwZV9hdWRpb19zb3VyY2Vf
cGFja2V0KHdwZUF1ZGlvU291cmNlLCBzaW5rLT5wcml2LT5tX3N0cmVhbUlkLCBtYXBEYXRhLT5m
aXJzdCwgbWFwRGF0YS0+c2Vjb25kLCBbXSh2b2lkKiBkYXRhKSB7CisgICAgICAgIGF1dG8qIGhv
bGRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9QYWNrZXRIb2xkZXIqPihkYXRhKTsKKyAgICAg
ICAgZGVsZXRlIGhvbGRlcjsKKyAgICB9LCBob2xkZXIpOworfQorI2VuZGlmCisKK3N0YXRpYyB2
b2lkIHdlYktpdEF1ZGlvU2lua0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBH
U1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGNvbnN0cnVjdGVkLCAob2JqZWN0KSk7CisK
KyAgICBXZWJLaXRBdWRpb1NpbmsqIHNpbmsgPSBXRUJLSVRfQVVESU9fU0lOSyhvYmplY3QpOwor
CisgICAgaWYgKHNpbmstPnByaXYtPmVuYWJsZUludGVybmFsTWl4aW5nKSB7CisgICAgICAgIHNp
bmstPnByaXYtPmludGVyYXVkaW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJpbnRl
cmF1ZGlvc2luayIsIG51bGxwdHIpOworICAgICAgICBpZiAoIXNpbmstPnByaXYtPmludGVyYXVk
aW9TaW5rKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IEdTVF9FUlJPUl9PQkpFQ1Qoc2luaywgIkZhaWxlZCB0byBjcmVhdGUgaW50ZXJhdWRpb3Npbmsi
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdzdF9iaW5fYWRk
KEdTVF9CSU5fQ0FTVChzaW5rKSwgc2luay0+cHJpdi0+aW50ZXJhdWRpb1NpbmsuZ2V0KCkpOwor
ICAgICAgICBHUmVmUHRyPEdzdFBhZD4gdGFyZ2V0UGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50
X2dldF9zdGF0aWNfcGFkKHNpbmstPnByaXYtPmludGVyYXVkaW9TaW5rLmdldCgpLCAic2luayIp
KTsKKyAgICAgICAgZ3N0X2VsZW1lbnRfYWRkX3BhZChHU1RfRUxFTUVOVF9DQVNUKHNpbmspLCB3
ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZSgmc2lua1RlbXBsYXRlLCAic2luayIs
IHRhcmdldFBhZC5nZXQoKSkpOworICAgIH0gZWxzZSB7CisjaWYgUExBVEZPUk0oV1BFKQorI2lm
IFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04pCisgICAgICAgIHNpbmstPnByaXYt
PnNvdXJjZVN0YXRlID0gR1NUX1NUQVRFX05VTEw7CisgICAgICAgIGF1dG8mIHNoYXJlZERpc3Bs
YXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKTsKKyAgICAgICAgaWYgKGlzPFBs
YXRmb3JtRGlzcGxheUxpYldQRT4oc2hhcmVkRGlzcGxheSkpCisgICAgICAgICAgICBzaW5rLT5w
cml2LT53cGVBdWRpb1NvdXJjZS5yZXNldCh3cGVfYXVkaW9fc291cmNlX2NyZWF0ZShkb3duY2Fz
dDxQbGF0Zm9ybURpc3BsYXlMaWJXUEU+KHNoYXJlZERpc3BsYXkpLmJhY2tlbmQoKSkpOworCisg
ICAgICAgIHNpbmstPnByaXYtPnZvbHVtZUVsZW1lbnQgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21h
a2UoInZvbHVtZSIsIG51bGxwdHIpOworICAgICAgICBzaW5rLT5wcml2LT5hcHBzaW5rID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhcHBzaW5rIiwgbnVsbHB0cik7CisgICAgICAgIGdzdF9h
cHBfc2lua19zZXRfZW1pdF9zaWduYWxzKEdTVF9BUFBfU0lOSyhzaW5rLT5wcml2LT5hcHBzaW5r
LmdldCgpKSwgVFJVRSk7CisKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChzaW5rLT5wcml2LT5h
cHBzaW5rLmdldCgpLCAibmV3LXNhbXBsZSIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqIGFw
cHNpbmssIFdlYktpdEF1ZGlvU2luayogc2luaykgLT4gR3N0Rmxvd1JldHVybiB7CisgICAgICAg
ICAgICBhdXRvIHNhbXBsZSA9IGFkb3B0R1JlZihnc3RfYXBwX3NpbmtfcHVsbF9zYW1wbGUoR1NU
X0FQUF9TSU5LKGFwcHNpbmspKSk7CisgICAgICAgICAgICB3ZWJLaXRBdWRpb1NpbmtIYW5kbGVT
YW1wbGUoc2luaywgV1RGTW92ZShzYW1wbGUpKTsKKyAgICAgICAgICAgIHJldHVybiBHU1RfRkxP
V19PSzsKKyAgICAgICAgfSksIHNpbmspOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHNpbmst
PnByaXYtPmFwcHNpbmsuZ2V0KCksICJuZXctcHJlcm9sbCIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVs
ZW1lbnQqIGFwcHNpbmssIFdlYktpdEF1ZGlvU2luayogc2luaykgLT4gR3N0Rmxvd1JldHVybiB7
CisgICAgICAgICAgICBhdXRvIHNhbXBsZSA9IGFkb3B0R1JlZihnc3RfYXBwX3NpbmtfcHVsbF9w
cmVyb2xsKEdTVF9BUFBfU0lOSyhhcHBzaW5rKSkpOworICAgICAgICAgICAgd2ViS2l0QXVkaW9T
aW5rSGFuZGxlU2FtcGxlKHNpbmssIFdURk1vdmUoc2FtcGxlKSk7CisgICAgICAgICAgICByZXR1
cm4gR1NUX0ZMT1dfT0s7CisgICAgICAgIH0pLCBzaW5rKTsKKworICAgICAgICBnX3NpZ25hbF9j
b25uZWN0KHNpbmstPnByaXYtPmFwcHNpbmsuZ2V0KCksICJlb3MiLCBHX0NBTExCQUNLKCtbXShH
c3RFbGVtZW50KiwgV2ViS2l0QXVkaW9TaW5rKiBzaW5rKSB7CisgICAgICAgICAgICB3cGVfYXVk
aW9fc291cmNlX3N0b3Aoc2luay0+cHJpdi0+d3BlQXVkaW9Tb3VyY2UuZ2V0KCksIHNpbmstPnBy
aXYtPm1fc3RyZWFtSWQpOworICAgICAgICAgICAgc2luay0+cHJpdi0+c291cmNlU3RhdGUgPSBH
U1RfU1RBVEVfTlVMTDsKKyAgICAgICAgfSksIHNpbmspOworCisgICAgICAgIGdzdF9iaW5fYWRk
X21hbnkoR1NUX0JJTl9DQVNUKHNpbmspLCBzaW5rLT5wcml2LT52b2x1bWVFbGVtZW50LmdldCgp
LCBzaW5rLT5wcml2LT5hcHBzaW5rLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgZ3N0X2VsZW1l
bnRfbGluayhzaW5rLT5wcml2LT52b2x1bWVFbGVtZW50LmdldCgpLCBzaW5rLT5wcml2LT5hcHBz
aW5rLmdldCgpKTsKKworICAgICAgICBHUmVmUHRyPEdzdFBhZD4gdGFyZ2V0UGFkID0gYWRvcHRH
UmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHNpbmstPnByaXYtPnZvbHVtZUVsZW1lbnQu
Z2V0KCksICJzaW5rIikpOworICAgICAgICBHc3RQYWQqIHNpbmtQYWQgPSB3ZWJraXRHc3RHaG9z
dFBhZEZyb21TdGF0aWNUZW1wbGF0ZSgmc2lua1RlbXBsYXRlLCAic2luayIsIHRhcmdldFBhZC5n
ZXQoKSk7CisgICAgICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoR1NUX0VMRU1FTlRfQ0FTVChzaW5r
KSwgc2lua1BhZCk7CisgICAgICAgIEdTVF9PQkpFQ1RfRkxBR19TRVQoc2lua1BhZCwgR1NUX1BB
RF9GTEFHX05FRURfUEFSRU5UKTsKKyNlbHNlCisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2lu
aywgIldQRUJhY2tlbmQtRkRPIEF1ZGlvIGV4dGVuc2lvbiBpcyBtaXNzaW5nLCB1cGRhdGUgdG8g
V1BFQmFja2VuZC1GRE8gMS44LnguIik7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
I2VuZGlmCisjZWxzZQorICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNpbmssICJFeHRlcm5hbCBh
dWRpbyByZW5kZXJpbmcgaXMgc3VwcG9ydGVkIG9ubHkgaW4gV1BFV2ViS2l0Iik7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfQorfQorCitzdGF0aWMgR3N0T2Jq
ZWN0KiBnZXRJbnRlcm5hbFZvbHVtZU9iamVjdChXZWJLaXRBdWRpb1NpbmsqIHNpbmspCit7Cisg
ICAgaWYgKHNpbmstPnByaXYtPmVuYWJsZUludGVybmFsTWl4aW5nKSB7CisgICAgICAgIGlmICgh
c2luay0+cHJpdi0+bWl4ZXJQYWQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
ICAgICByZXR1cm4gR1NUX09CSkVDVF9DQVNUKHNpbmstPnByaXYtPm1peGVyUGFkLmdldCgpKTsK
KyAgICB9CisgICAgcmV0dXJuIEdTVF9PQkpFQ1RfQ0FTVChzaW5rLT5wcml2LT52b2x1bWVFbGVt
ZW50LmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgd2ViS2l0QXVkaW9TaW5rU2V0UHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJh
bVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdEF1ZGlvU2luayogc2luayA9IFdFQktJVF9BVURJ
T19TSU5LKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9W
T0xVTUU6IHsKKyAgICAgICAgR3N0T2JqZWN0KiBpbnRlcm5hbE9iamVjdCA9IGdldEludGVybmFs
Vm9sdW1lT2JqZWN0KHNpbmspOworICAgICAgICBpZiAoIWludGVybmFsT2JqZWN0KSB7CisgICAg
ICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1Qoc2luaywgIk5vIGFzc29jaWF0ZWQgbWl4ZXIgcGFk
LCBjYW4ndCBzZXQgJXMgcHJvcGVydHkiLCBnX3BhcmFtX3NwZWNfZ2V0X25hbWUocHNwZWMpKTsK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGdfb2JqZWN0X3NldF9wcm9wZXJ0eShHX09CSkVDVChpbnRlcm5h
bE9iamVjdCksICJ2b2x1bWUiLCB2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIFBST1BfTVVURTogeworICAgICAgICBHc3RPYmplY3QqIGludGVybmFsT2JqZWN0ID0gZ2V0
SW50ZXJuYWxWb2x1bWVPYmplY3Qoc2luayk7CisgICAgICAgIGlmICghaW50ZXJuYWxPYmplY3Qp
IHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVChzaW5rLCAiTm8gYXNzb2NpYXRlZCBt
aXhlciBwYWQsIGNhbid0IHNldCAlcyBwcm9wZXJ0eSIsIGdfcGFyYW1fc3BlY19nZXRfbmFtZShw
c3BlYykpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZ19vYmplY3Rfc2V0X3Byb3BlcnR5KEdfT0JKRUNU
KGludGVybmFsT2JqZWN0KSwgIm11dGUiLCB2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIFBST1BfRU5BQkxFX0lOVEVSTkFMX01JWElORzoKKyAgICAgICAgc2luay0+cHJp
di0+ZW5hYmxlSW50ZXJuYWxNaXhpbmcgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElE
X1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKworc3RhdGljIHZvaWQgd2ViS2l0QXVkaW9TaW5rR2V0UHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wSUQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQor
eworICAgIFdlYktpdEF1ZGlvU2luayogc2luayA9IFdFQktJVF9BVURJT19TSU5LKG9iamVjdCk7
CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9WT0xVTUU6IHsKKyAgICAg
ICAgR3N0T2JqZWN0KiBpbnRlcm5hbE9iamVjdCA9IGdldEludGVybmFsVm9sdW1lT2JqZWN0KHNp
bmspOworICAgICAgICBpZiAoIWludGVybmFsT2JqZWN0KSB7CisgICAgICAgICAgICBHU1RfV0FS
TklOR19PQkpFQ1Qoc2luaywgIk5vIGFzc29jaWF0ZWQgbWl4ZXIgcGFkLCBjYW4ndCBnZXQgJXMg
cHJvcGVydHkiLCBnX3BhcmFtX3NwZWNfZ2V0X25hbWUocHNwZWMpKTsKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGdfb2JqZWN0X2dldF9wcm9wZXJ0eShHX09CSkVDVChpbnRlcm5hbE9iamVjdCksICJ2b2x1
bWUiLCB2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfTVVURTog
eworICAgICAgICBHc3RPYmplY3QqIGludGVybmFsT2JqZWN0ID0gZ2V0SW50ZXJuYWxWb2x1bWVP
YmplY3Qoc2luayk7CisgICAgICAgIGlmICghaW50ZXJuYWxPYmplY3QpIHsKKyAgICAgICAgICAg
IEdTVF9XQVJOSU5HX09CSkVDVChzaW5rLCAiTm8gYXNzb2NpYXRlZCBtaXhlciBwYWQsIGNhbid0
IGdldCAlcyBwcm9wZXJ0eSIsIGdfcGFyYW1fc3BlY19nZXRfbmFtZShwc3BlYykpOworICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgZ19vYmplY3RfZ2V0X3Byb3BlcnR5KEdfT0JKRUNUKGludGVybmFsT2JqZWN0
KSwgIm11dGUiLCB2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1Bf
RU5BQkxFX0lOVEVSTkFMX01JWElORzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgc2luay0+cHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhpbmcpOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2Jq
ZWN0LCBwcm9wSUQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMg
R3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0QXVkaW9TaW5rQ2hhbmdlU3RhdGUoR3N0RWxlbWVu
dCogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpCit7CisgICAgYXV0byogc2lu
ayA9IFdFQktJVF9BVURJT19TSU5LKGVsZW1lbnQpOworICAgIGF1dG8qIHByaXYgPSBzaW5rLT5w
cml2OworCisjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMTQsIDApCisgICAgR1NUX0RFQlVHX09C
SkVDVChzaW5rLCAiSGFuZGxpbmcgJXMgdHJhbnNpdGlvbiIsIGdzdF9zdGF0ZV9jaGFuZ2VfZ2V0
X25hbWUoc3RhdGVDaGFuZ2UpKTsKKyNlbmRpZgorCisgICAgYXV0byYgbWl4ZXIgPSBHU3RyZWFt
ZXJBdWRpb01peGVyOjpzaW5nbGV0b24oKTsKKyAgICBpZiAocHJpdi0+ZW5hYmxlSW50ZXJuYWxN
aXhpbmcgJiYgc3RhdGVDaGFuZ2UgPT0gR1NUX1NUQVRFX0NIQU5HRV9OVUxMX1RPX1JFQURZKSB7
CisgICAgICAgIGlmICghcHJpdi0+aW50ZXJhdWRpb1NpbmspIHsKKyAgICAgICAgICAgIGdzdF9l
bGVtZW50X3Bvc3RfbWVzc2FnZShlbGVtZW50LCBnc3RfbWlzc2luZ19lbGVtZW50X21lc3NhZ2Vf
bmV3KGVsZW1lbnQsICJpbnRlcmF1ZGlvc2luayIpKTsKKyAgICAgICAgICAgIEdTVF9FTEVNRU5U
X0VSUk9SKHNpbmssIENPUkUsIE1JU1NJTkdfUExVR0lOLCAobnVsbHB0ciksICgibm8gaW50ZXJh
dWRpb3NpbmsiKSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CisgICAgICAgIH0KKyAgICAgICAg
cHJpdi0+bWl4ZXJQYWQgPSBtaXhlci5yZWdpc3RlclByb2R1Y2VyKHByaXYtPmludGVyYXVkaW9T
aW5rLmdldCgpKTsKKyAgICB9CisKKyAgICBpZiAocHJpdi0+ZW5hYmxlSW50ZXJuYWxNaXhpbmcp
CisgICAgICAgIG1peGVyLmVuc3VyZVN0YXRlKHN0YXRlQ2hhbmdlKTsKKworICAgIEdzdFN0YXRl
Q2hhbmdlUmV0dXJuIHJlc3VsdCA9IEdTVF9DQUxMX1BBUkVOVF9XSVRIX0RFRkFVTFQoR1NUX0VM
RU1FTlRfQ0xBU1MsIGNoYW5nZV9zdGF0ZSwgKGVsZW1lbnQsIHN0YXRlQ2hhbmdlKSwgR1NUX1NU
QVRFX0NIQU5HRV9GQUlMVVJFKTsKKworI2lmIFBMQVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tF
TkRfRkRPX0FVRElPX0VYVEVOU0lPTikKKyAgICBpZiAoIXByaXYtPmVuYWJsZUludGVybmFsTWl4
aW5nKSB7CisgICAgICAgIGJvb2wgaXNFT1MgPSBnc3RfYXBwX3NpbmtfaXNfZW9zKEdTVF9BUFBf
U0lOSyhwcml2LT5hcHBzaW5rLmdldCgpKSk7CisgICAgICAgIGlmICgoc3RhdGVDaGFuZ2UgPT0g
R1NUX1NUQVRFX0NIQU5HRV9QTEFZSU5HX1RPX1BBVVNFRCkgJiYgIWlzRU9TKSB7CisgICAgICAg
ICAgICB3cGVfYXVkaW9fc291cmNlX3BhdXNlKHByaXYtPndwZUF1ZGlvU291cmNlLmdldCgpLCBw
cml2LT5tX3N0cmVhbUlkKTsKKyAgICAgICAgICAgIHByaXYtPnNvdXJjZVN0YXRlID0gR1NUX1NU
QVRFX1BBVVNFRDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RhdGVDaGFuZ2UgPT0gR1NUX1NU
QVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFkgJiYgaXNFT1MpCisgICAgICAgICAgICBwcml2LT5z
b3VyY2VTdGF0ZSA9IEdTVF9TVEFURV9OVUxMOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKHBy
aXYtPmVuYWJsZUludGVybmFsTWl4aW5nICYmIHN0YXRlQ2hhbmdlID09IEdTVF9TVEFURV9DSEFO
R0VfUkVBRFlfVE9fTlVMTCAmJiByZXN1bHQgPiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpIHsK
KyAgICAgICAgbWl4ZXIudW5yZWdpc3RlclByb2R1Y2VyKHByaXYtPm1peGVyUGFkKTsKKyAgICAg
ICAgcHJpdi0+bWl4ZXJQYWQgPSBudWxscHRyOworICAgIH0KKyNpZiBQTEFURk9STShXUEUpICYm
IFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04pCisgICAgaWYgKCFwcml2LT5lbmFi
bGVJbnRlcm5hbE1peGluZyAmJiBwcml2LT5zb3VyY2VTdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VE
ICYmIHN0YXRlQ2hhbmdlID09IEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1BMQVlJTkcgJiYg
cmVzdWx0ID4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSB7CisgICAgICAgIHdwZV9hdWRpb19z
b3VyY2VfcmVzdW1lKHByaXYtPndwZUF1ZGlvU291cmNlLmdldCgpLCBwcml2LT5tX3N0cmVhbUlk
KTsKKyAgICAgICAgcHJpdi0+c291cmNlU3RhdGUgPSBHU1RfU1RBVEVfUExBWUlORzsKKyAgICB9
CisjZW5kaWYKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9h
dWRpb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0QXVkaW9TaW5rQ2xhc3MqIGtsYXNzKQoreworICAg
IEdPYmplY3RDbGFzcyogb2tsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIG9rbGFz
cy0+Y29uc3RydWN0ZWQgPSB3ZWJLaXRBdWRpb1NpbmtDb25zdHJ1Y3RlZDsKKyAgICBva2xhc3Mt
PnNldF9wcm9wZXJ0eSA9IHdlYktpdEF1ZGlvU2lua1NldFByb3BlcnR5OworICAgIG9rbGFzcy0+
Z2V0X3Byb3BlcnR5ID0gd2ViS2l0QXVkaW9TaW5rR2V0UHJvcGVydHk7CisKKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9rbGFzcywgUFJPUF9WT0xVTUUsCisgICAgICAgIGdf
cGFyYW1fc3BlY19kb3VibGUoInZvbHVtZSIsICJWb2x1bWUiLCAiVGhlIGF1ZGlvIHZvbHVtZSwg
MS4wPTEwMCUiLCAwLCAxMCwgMSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdz
PihHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShva2xhc3MsIFBST1BfTVVURSwKKyAgICAgICAg
Z19wYXJhbV9zcGVjX2Jvb2xlYW4oIm11dGUiLCAiTXV0ZSIsICJNdXRlIHRoZSBhdWRpbyBjaGFu
bmVsIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHZvbHVtZSIsIEZBTFNFLAorICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNf
U1RSSU5HUykpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9rbGFzcywg
UFJPUF9FTkFCTEVfSU5URVJOQUxfTUlYSU5HLAorICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVh
bigiZW5hYmxlLWludGVybmFsLW1peGluZyIsICJFbmFibGUgSW50ZXJuYWwgTWl4aW5nIiwgIlBy
b3h5IGF1ZGlvIGJ1ZmZlcnMgdG8gdGhlIGF1ZGlvbWl4ZXIiLCBGQUxTRSwKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RB
VElDX1NUUklOR1MgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCisgICAgR3N0RWxlbWVu
dENsYXNzKiBla2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyhrbGFzcyk7CisgICAgZ3N0X2VsZW1l
bnRfY2xhc3NfYWRkX3N0YXRpY19wYWRfdGVtcGxhdGUoZWtsYXNzLCAmc2lua1RlbXBsYXRlKTsK
KyAgICBnc3RfZWxlbWVudF9jbGFzc19zZXRfbWV0YWRhdGEoZWtsYXNzLCAiV2ViS2l0IEF1ZGlv
IHNpbmsgZWxlbWVudCIsICJTaW5rL0F1ZGlvIiwKKyAgICAgICAgIlByb3hpZXMgYXVkaW8gZGF0
YSB0byBXZWJLaXQncyBhdWRpbyBtaXhlciIsICJQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2Fs
aWEuY29tPiIpOworCisgICAgZWtsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBHU1RfREVCVUdfRlVOQ1BU
Uih3ZWJLaXRBdWRpb1NpbmtDaGFuZ2VTdGF0ZSk7Cit9CisKK0dzdEVsZW1lbnQqIHdlYmtpdEF1
ZGlvU2lua05ldygpCit7CisgICAgcmV0dXJuIEdTVF9FTEVNRU5UX0NBU1QoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX0FVRElPX1NJTkssICJlbmFibGUtaW50ZXJuYWwtbWl4aW5nIiwgZmFsc2Us
IG51bGxwdHIpKTsKK30KKworR3N0RWxlbWVudCogd2Via2l0QXVkaW9TaW5rTmV3SW50ZXJuYWwo
KQoreworICAgIHJldHVybiBHU1RfRUxFTUVOVF9DQVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9BVURJT19TSU5LLCAiZW5hYmxlLWludGVybmFsLW1peGluZyIsIHRydWUsIG51bGxwdHIpKTsK
K30KKworI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9T
aW5rR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc3YTg0OWQzMjY2NDU4YjE0MGNkODdlMmVkODk3
ZWEwZTRhYTFkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuaApAQCAtMCwwICsxLDU0
IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoR1NUUkVBTUVSKQor
CisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lU
X1RZUEVfQVVESU9fU0lOSyAgICAgICAgICAgICh3ZWJraXRfYXVkaW9fc2lua19nZXRfdHlwZSgp
KQorI2RlZmluZSBXRUJLSVRfQVVESU9fU0lOSyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9BVURJT19TSU5LLCBXZWJLaXRBdWRp
b1NpbmspKQorI2RlZmluZSBXRUJLSVRfQVVESU9fU0lOS19DTEFTUyhrbGFzcykgICAgKEdfVFlQ
RV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIFdFQktJVF9UWVBFX0FVRElPX1NJTkssIFdlYktp
dEF1ZGlvU2lua0NsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FVRElPX1NJTksob2JqKSAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfQVVESU9f
U0lOSykpCisjZGVmaW5lIFdFQktJVF9JU19BVURJT19TSU5LX0NMQVNTKGtsYXNzKSAoR19UWVBF
X0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgV0VCS0lUX1RZUEVfQVVESU9fU0lOSykpCisKK3R5
cGVkZWYgc3RydWN0IF9XZWJLaXRBdWRpb1NpbmsgICAgICAgIFdlYktpdEF1ZGlvU2luazsKK3R5
cGVkZWYgc3RydWN0IF9XZWJLaXRBdWRpb1NpbmtDbGFzcyAgIFdlYktpdEF1ZGlvU2lua0NsYXNz
OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1ZGlvU2lua1ByaXZhdGUgV2ViS2l0QXVkaW9TaW5r
UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRBdWRpb1NpbmsgeworICAgIEdzdEJpbiBwYXJlbnQ7
CisKKyAgICBXZWJLaXRBdWRpb1NpbmtQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJL
aXRBdWRpb1NpbmtDbGFzcyB7CisgICAgR3N0QmluQ2xhc3MgcGFyZW50Q2xhc3M7Cit9OworCitH
VHlwZSB3ZWJraXRfYXVkaW9fc2lua19nZXRfdHlwZSh2b2lkKTsKKworR19FTkRfREVDTFMKKwor
R3N0RWxlbWVudCogd2Via2l0QXVkaW9TaW5rTmV3KCk7CitHc3RFbGVtZW50KiB3ZWJraXRBdWRp
b1NpbmtOZXdJbnRlcm5hbCgpOworCisjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXgg
YTNiNjE1NmUxZWIyMDY5NWIxODFiMmFhYjY0NDA0MDhhY2U2NWY4ZS4uMTE5ZTU0YmMwNTRhOTc1
ZDJlOTA5MGQ1OWY1ZDA3MDRjNTUzNjA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE2MSw2ICsxNjEsMTAgQEAgdm9p
ZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBlbmNvZGVyIDw8IHRoZW1lTmFtZTsKICNl
bmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBlbmNvZGVyIDw8IGF1ZGlvUmVuZGVyaW5n
TW9kZTsKKyNlbmRpZgogfQogCiBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpA
QCAtNTA5LDYgKzUxMywxNCBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIE9wdGlv
bmFsPFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZT4gYXVkaW9S
ZW5kZXJpbmdNb2RlOworICAgIGRlY29kZXIgPj4gYXVkaW9SZW5kZXJpbmdNb2RlOworICAgIGlm
ICghYXVkaW9SZW5kZXJpbmdNb2RlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHBhcmFtZXRlcnMuYXVkaW9SZW5kZXJpbmdNb2RlID0gV1RGTW92ZSgqYXVkaW9SZW5kZXJpbmdN
b2RlKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA2NjZiNTk0
ZTU0Njk2ZjMyMjY1YWUyMDA4M2ExNGM4YjE3ZjIxNWJkLi5hZmEyMmQ4Yjk4MGNjOTNmN2I2ZDBj
OTZlYWJjMmZlMGY3ZTYxYWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC01Nyw2ICs1NywxMCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvQXBwbGljYXRpb25NYW5pZmVzdC5oPgogI2VuZGlmCiAKKyNpZiBVU0UoR1NUUkVBTUVSKQor
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJFbnVtcy5oPgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBJUEMgewogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEVuY29kZXI7CkBAIC0yMzQsNiArMjM4LDEw
IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBQTEFURk9STShHVEsp
CiAgICAgU3RyaW5nIHRoZW1lTmFtZTsKICNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyAg
ICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGUgYXVkaW9SZW5k
ZXJpbmdNb2RlOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCmlu
ZGV4IDQzMWZjZWY3ODZjOWI1YzMwMDQ3NmEzMTJhNDc4OGUwOTQwNDRlNDkuLjhkMzQ1NDcyNWI2
MmExZjFlOTg1ZTBiYjY1ODRhZjlhYTZmZTUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcApAQCAtOTksNiArOTksMTAg
QEAgUmVmPFBhZ2VDb25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbjo6Y29weSgpIGNvbnN0
CiAgICAgY29weS0+bV9sb2Fkc0Zyb21OZXR3b3JrID0gdGhpcy0+bV9sb2Fkc0Zyb21OZXR3b3Jr
OwogICAgIGNvcHktPm1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IHRoaXMt
Pm1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczsKIAorI2lmIFVTRShHU1RSRUFN
RVIpCisgICAgY29weS0+bV9hdWRpb1JlbmRlcmluZ01vZGUgPSB0aGlzLT5tX2F1ZGlvUmVuZGVy
aW5nTW9kZTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIGNvcHk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXggMTIwOWMz
NmU4Y2ZkZjAzNzc0MjljN2IxOTQ3ZjllNjVjOTJmZmJkZS4uNTZmMDFhNjQwMGQyYTYwYTFhYWYw
MTk3ZDRlMGI0ZTQwNTMzN2U2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKQEAgLTM5LDYgKzM5LDEwIEBAIE9CSkNfUFJPVE9D
T0woX1VJQ2xpY2tJbnRlcmFjdGlvbkRyaXZpbmcpOwogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNlbmRpZgogCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlh
UGxheWVyRW51bXMuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFZpc2l0
ZWRMaW5rU3RvcmU7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CkBAIC0xNjIsOCArMTY2LDEzIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmco
V2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgdmFsdWUpIHsgbV9z
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9IHZhbHVlOyB9CiAgICAgV2ViQ29y
ZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nOyB9Ci0gICAgCi1wcml2YXRlOgorCisjaWYgVVNFKEdTVFJFQU1FUikK
KyAgICB2b2lkIHNldEF1ZGlvUmVuZGVyaW5nTW9kZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpBdWRpb1JlbmRlcmluZ01vZGUgbW9kZSkgeyBtX2F1ZGlvUmVuZGVyaW5nTW9kZSA9IG1vZGU7
IH0KKyAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGUgYXVk
aW9SZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1JlbmRlcmluZ01vZGU7IH0K
KyNlbmRpZgorCitwcml2YXRlIDoKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29s
PiBtX3Byb2Nlc3NQb29sOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5PiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKQEAgLTIwNyw2ICsyMTYsMTAgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fbG9hZHNGcm9tTmV0d29yayB7IHRydWUgfTsKICAgICBib29s
IG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CiAgICAgV2Vi
Q29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgbV9zaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZyB7IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nOjpObyB9OworCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGUgbV9hdWRpb1JlbmRlcmluZ01vZGU7
CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAzMDBhMGJl
MTIwOTk2YzI1ZTM1N2I0YmE0MjM0OTUxMzVmOWEyZmUwLi40NGFhNTVhMTZkMTFhMGFlZmNkYjEx
ODNlZDgzZjk0Y2ViNzRiM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTkxMSw2ICsxOTExLDI0IEBAIHZv
aWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQq
IGNvbnRleHQsIFdlYktpdFdlYlZpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFVzZXJDb250
ZW50Q29udHJvbGxlcih1c2VyQ29udGVudE1hbmFnZXIgPyB3ZWJraXRVc2VyQ29udGVudE1hbmFn
ZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpIDogbnVs
bHB0cik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24o
d2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSk7CiAK
KyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkF1ZGlv
UmVuZGVyaW5nTW9kZSBtb2RlID0gV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5k
ZXJpbmdNb2RlOjpIb3N0OworICAgIHN3aXRjaCAod2Via2l0X3dlYl92aWV3X2dldF9hdWRpb19y
ZW5kZXJpbmdfbW9kZSh3ZWJWaWV3KSkgeworICAgIGNhc2UgV0VCS0lUX0FVRElPX1JFTkRFUklO
R19NT0RFX0hPU1Q6CisgICAgICAgIG1vZGUgPSBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpB
dWRpb1JlbmRlcmluZ01vZGU6Okhvc3Q7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lU
X0FVRElPX1JFTkRFUklOR19NT0RFX0lOVEVSTkFMOgorICAgICAgICBtb2RlID0gV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlOjpJbnRlcm5hbDsKKyAgICAgICAg
YnJlYWs7CisjaWYgUExBVEZPUk0oV1BFKQorICAgIGNhc2UgV0VCS0lUX0FVRElPX1JFTkRFUklO
R19NT0RFX0VYVEVSTkFMOgorICAgICAgICBtb2RlID0gV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6QXVkaW9SZW5kZXJpbmdNb2RlOjpFeHRlcm5hbDsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYK
KyAgICB9CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldEF1ZGlvUmVuZGVyaW5nTW9kZShtb2Rl
KTsKKyNlbmRpZgorCiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0gd2Vi
a2l0V2ViVmlld0dldFdlYnNpdGVEYXRhTWFuYWdlcih3ZWJWaWV3KTsKICAgICBpZiAoIW1hbmFn
ZXIpCiAgICAgICAgIG1hbmFnZXIgPSBjb250ZXh0LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIu
Z2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlZpZXcuY3BwCmluZGV4IGNhZjhlZmU4ODFmNjMzMzcyNjA3MTAwZThkNTFiMjJkYjE2MDdjZTgu
LjQwZjliMGIyZDVkNjRjOGRiN2E2YjRiZTdlMzIyNGQ0YjY3YzRkMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC03Myw2
ICs3Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllckVudW1zLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMU291
cC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CkBAIC0yMDMsNyArMjA0LDggQEAgZW51
bSB7CiAgICAgUFJPUF9FRElUQUJMRSwKICAgICBQUk9QX1BBR0VfSUQsCiAgICAgUFJPUF9JU19N
VVRFRCwKLSAgICBQUk9QX1dFQlNJVEVfUE9MSUNJRVMKKyAgICBQUk9QX1dFQlNJVEVfUE9MSUNJ
RVMsCisgICAgUFJPUF9BVURJT19SRU5ERVJJTkdfTU9ERQogfTsKIAogdHlwZWRlZiBIYXNoTWFw
PHVpbnQ2NF90LCBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiA+IExvYWRpbmdSZXNvdXJjZXNN
YXA7CkBAIC0zMDYsNiArMzA4LDggQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAK
ICAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gd2Vic2l0ZURhdGFNYW5hZ2Vy
OwogICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZVBvbGljaWVzPiB3ZWJzaXRlUG9saWNpZXM7CisK
KyAgICBXZWJLaXRBdWRpb1JlbmRlcmluZ01vZGUgYXVkaW9SZW5kZXJpbmdNb2RlOwogfTsKIAog
c3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtODA3LDYgKzgx
MSwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZQogICAgICAgICBicmVhazsKICAgICB9CiAj
ZW5kaWYKKyAgICBjYXNlIFBST1BfQVVESU9fUkVOREVSSU5HX01PREU6IHsKKyAgICAgICAgd2Vi
Vmlldy0+cHJpdi0+YXVkaW9SZW5kZXJpbmdNb2RlID0gc3RhdGljX2Nhc3Q8V2ViS2l0QXVkaW9S
ZW5kZXJpbmdNb2RlPihnX3ZhbHVlX2dldF9lbnVtKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICBjYXNlIFBST1BfV0VCX0NPTlRFWFQ6IHsKICAgICAgICAgZ3BvaW50ZXIgd2Vi
Q29udGV4dCA9IGdfdmFsdWVfZ2V0X29iamVjdCh2YWx1ZSk7CiAgICAgICAgIHdlYlZpZXctPnBy
aXYtPmNvbnRleHQgPSB3ZWJDb250ZXh0ID8gV0VCS0lUX1dFQl9DT05URVhUKHdlYkNvbnRleHQp
IDogbnVsbHB0cjsKQEAgLTg2Myw2ICs4NzEsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3
R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQog
ICAgICAgICBnX3ZhbHVlX3NldF9zdGF0aWNfYm94ZWQodmFsdWUsIHdlYlZpZXctPnByaXYtPmJh
Y2tlbmQuZ2V0KCkpOwogICAgICAgICBicmVhazsKICNlbmRpZgorICAgIGNhc2UgUFJPUF9BVURJ
T19SRU5ERVJJTkdfTU9ERToKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2YWx1ZSwgd2ViVmll
dy0+cHJpdi0+YXVkaW9SZW5kZXJpbmdNb2RlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQ
Uk9QX1dFQl9DT05URVhUOgogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYlZp
ZXctPnByaXYtPmNvbnRleHQuZ2V0KCkpOwogICAgICAgICBicmVhazsKQEAgLTEzMjAsNiArMTMz
MSwzNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJW
aWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQlNJVEVf
UE9MSUNJRVMsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BB
UkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CiAKKyAgICAvKioKKyAg
ICAgKiBXZWJLaXRXZWJWaWV3OmF1ZGlvLXJlbmRlcmluZy1tb2RlOgorICAgICAqCisgICAgICog
V2hldGhlciB0aGUgI1dlYktpdFdlYlZpZXcgc2hvdWxkIG1hbmFnZSBhdWRpbyByZW5kZXJpbmcg
dGhyb3VnaCB0aGUgaG9zdCBwbGF0Zm9ybSBhdWRpbworICAgICAqIGRhZW1vbiAodXN1YWxseSBQ
dWxzZUF1ZGlvKSBvciB1c2UgYWx0ZXJuYXRlIHJlbmRlcmluZyBtZXRob2RzLiBUaGUgZGVmYXVs
dCBiZWhhdmlvdXIgaXMgdG8KKyAgICAgKiByZWx5IG9uIHRoZSBob3N0IGF1ZGlvIGRhZW1vbiwg
d2hlbiB0aGUgcHJvcGVydHkgaXMgQEFVRElPX1JFTkRFUklOR19NT0RFX0hPU1QuCisgICAgICoK
KyAgICAgKiBBbiBhbHRlcm5hdGUgbWV0aG9kLCBzdXBwb3J0ZWQgaW4gYm90aCBXUEVXZWJLaXQg
YW5kIFdlYktpdEdUSyBpcyB0byBwZXJmb3JtIGF1ZGlvIG1peGluZworICAgICAqIGludGVybmFs
bHkgaW4gV2ViS2l0LiBUaGlzIGNhbiBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMgd2hlcmUgdGhl
IGFwcGxpY2F0aW9uIHdhbnRzIFdlYktpdCB0bworICAgICAqIG1haW50YWluIGEgc2luZ2xlIGNv
bm5lY3Rpb24gdG8gdGhlIGF1ZGlvIGRhZW1vbi4gU2V0IHRoZSBwcm9wZXJ0eSB0bworICAgICAq
IEBXRUJLSVRfQVVESU9fUkVOREVSSU5HX01PREVfSU5URVJOQUwgdG8gZW5hYmxlIHRoaXMgcmVu
ZGVyaW5nIG1vZGUuCisgICAgICoKKyAgICAgKiBJbiBXUEVXZWJLaXQsIGFuIGFkZGl0aW9uYWwg
cHJvcGVydHkgdmFsdWUgaXMgYXZhaWxhYmxlLiBVc2luZworICAgICAqIEBXRUJLSVRfQVVESU9f
UkVOREVSSU5HX01PREVfRVhURVJOQUwgaW1wbGllcyB0aGUgYXBwbGljYXRpb24gd2lsbCByZWNl
aXZlIG5vdGlmaWNhdGlvbnMKKyAgICAgKiB0aHJvdWdoIHRoZSBXUEVCYWNrZW5kLUZETyBhdWRp
byBzb3VyY2UuIEluIHRoaXMgY2FzZSB0aGUgYXBwbGljYXRpb24gaXMgZXhwZWN0ZWQgdG8gbWFu
YWdlCisgICAgICogYXVkaW8gcmVuZGVyaW5nIGl0c2VsZi4KKyAgICAgKgorICAgICAqIFNpbmNl
OiAyLjMwCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAg
ICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX0FVRElPX1JFTkRFUklOR19NT0RFLAor
ICAgICAgICBnX3BhcmFtX3NwZWNfZW51bSgKKyAgICAgICAgICAgICJhdWRpby1yZW5kZXJpbmct
bW9kZSIsCisgICAgICAgICAgICAiQXVkaW8gUmVuZGVyaW5nIE1vZGUiLAorICAgICAgICAgICAg
XygiQXVkaW8gcmVuZGVyaW5nIG1vZGUgc2V0IG9uIHRoaXMgdmlldyIpLAorICAgICAgICAgICAg
V0VCS0lUX1RZUEVfQVVESU9fUkVOREVSSU5HX01PREUsCisgICAgICAgICAgICBXRUJLSVRfQVVE
SU9fUkVOREVSSU5HX01PREVfSE9TVCwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZs
YWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsK
KwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6OmxvYWQtY2hhbmdlZDoKICAgICAgKiBA
d2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0
ZWQKQEAgLTQ2OTksMyArNDc0MCwxOCBAQCBXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHdlYmtpdF93
ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaQogCiAgICAg
cmV0dXJuIHdlYlZpZXctPnByaXYtPndlYnNpdGVQb2xpY2llcy5nZXQoKTsKIH0KKworLyoqCisg
KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2F1ZGlvX3JlbmRlcmluZ19tb2RlOgorICogQHdlYl92aWV3
OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogR2V0cyB0aGUgYXVkaW8gcmVuZGVyaW5nIG1vZGUg
c2V0IG9uIHRoZSBAd2ViX3ZpZXcuCisgKgorICogU2luY2U6IDIuMzAKKyAqLworV2ViS2l0QXVk
aW9SZW5kZXJpbmdNb2RlIHdlYmtpdF93ZWJfdmlld19nZXRfYXVkaW9fcmVuZGVyaW5nX21vZGUo
V2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIFdlYktpdEF1ZGlvUmVuZGVyaW5nTW9kZTo6V0VCS0lU
X0FVRElPX1JFTkRFUklOR19NT0RFX0hPU1QpOworCisgICAgcmV0dXJuIHdlYlZpZXctPnByaXYt
PmF1ZGlvUmVuZGVyaW5nTW9kZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYWM1MTY4M2I2NzVkNWE5OGI2NjU1MzIzZjlhNTFj
NDllNzYyM2ExZS4uZmEzYTZlNDZkODY1NmM4NzFhN2QzZTY1OGE1MjBkOGViM2RiNmI4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAg
LTIwMyw2ICsyMDMsMjAgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfV0VCX1BST0NFU1Nf
RVhDRUVERURfTUVNT1JZX0xJTUlUCiB9IFdlYktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJlYXNv
bjsKIAorLyoqCisgKiBXZWJLaXRBdWRpb1JlbmRlcmluZ01vZGU6CisgKiBAV0VCS0lUX0FVRElP
X1JFTkRFUklOR19NT0RFX0hPU1Q6IHVzZSBob3N0IGF1ZGlvIGRhZW1vbiAodXN1YWxseSBQdWxz
ZUF1ZGlvKS4KKyAqIEBXRUJLSVRfQVVESU9fUkVOREVSSU5HX01PREVfSU5URVJOQUw6IHBlcmZv
cm0gaW50ZXJuYWwgbWl4aW5nIGFuZCByZW5kZXIgdGhlIHJlc3VsdGluZyBzdHJlYW0gdG8gaG9z
dCBhdWRpbyBkYWVtb24uCisgKgorICogQXVkaW8gcmVuZGVyaW5nIHBvbGljeS4KKyAqCisgKiBT
aW5jZTogMi4zMAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9BVURJT19SRU5ERVJJ
TkdfTU9ERV9IT1NULAorICAgIFdFQktJVF9BVURJT19SRU5ERVJJTkdfTU9ERV9JTlRFUk5BTCwK
K30gV2ViS2l0QXVkaW9SZW5kZXJpbmdNb2RlOworCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewog
ICAgIFdlYktpdFdlYlZpZXdCYXNlIHBhcmVudDsKIApAQCAtNTg5LDYgKzYwMyw4IEBAIHdlYmtp
dF93ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQgICAgICAgICAgICAgKFdlYktpdFdl
YlZpZXcKIFdFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICoKIHdlYmtpdF93ZWJfdmll
d19nZXRfd2Vic2l0ZV9wb2xpY2llcyAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSBXZWJLaXRBdWRpb1JlbmRlcmluZ01v
ZGUKK3dlYmtpdF93ZWJfdmlld19nZXRfYXVkaW9fcmVuZGVyaW5nX21vZGUgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIAogR19FTkRfREVDTFMKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggNjJiMGUxMDg2YjA5OGYzMTUyZmNk
MTc5M2ExM2FhMWQzZWViMDQ4My4uNDYxNzE3ZmVlMDI5ZTFmYmExYzE3YjA1MzFhYjViNTg5ZDNh
N2JiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC0xOTksNiArMTk5LDcg
QEAgV2ViS2l0U25hcHNob3RPcHRpb25zCiBXZWJLaXRTbmFwc2hvdFJlZ2lvbgogV2ViS2l0V2Vi
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uCiBXZWJLaXRBdXRvcGxheVBvbGljeQorV2ViS2l0QXVk
aW9SZW5kZXJpbmdNb2RlCiAKIDxTVUJTRUNUSU9OIEVkaXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRf
RURJVElOR19DT01NQU5EX0NVVApAQCAtMjkwLDYgKzI5MSw3IEBAIHdlYmtpdF93ZWJfdmlld19z
ZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2gKIHdlYmtpdF93ZWJfdmlld19zZXRfaW5wdXRfbWV0
aG9kX2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQKIHdl
YmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcword2Via2l0X3dlYl92aWV3X2dldF9h
dWRpb19yZW5kZXJpbmdfbW9kZQogCiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdFdlYlZpZXcuaAppbmRleCAyMzE0OWIwYmY3NGFkMGI2NjgzOTFmZjlkNmNm
MWQ5OGZiYzE1OGE4Li4wNmFkMDlmNjE3YjZmMmRjN2ZmMDcyZmI1ZGU5MDA3NGRkN2Q2ZTc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApA
QCAtMTg0LDYgKzE4NCwyMyBAQCB0eXBlZGVmIGVudW0gewogdHlwZWRlZiB2b2lkICgqIFdlYktp
dEZyYW1lRGlzcGxheWVkQ2FsbGJhY2spIChXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAg
dXNlcl9kYXRhKTsKIAorCisvKioKKyAqIFdlYktpdEF1ZGlvUmVuZGVyaW5nTW9kZToKKyAqIEBX
RUJLSVRfQVVESU9fUkVOREVSSU5HX01PREVfSE9TVDogdXNlIGhvc3QgYXVkaW8gZGFlbW9uICh1
c3VhbGx5IFB1bHNlQXVkaW8pLgorICogQFdFQktJVF9BVURJT19SRU5ERVJJTkdfTU9ERV9JTlRF
Uk5BTDogcGVyZm9ybSBpbnRlcm5hbCBtaXhpbmcgYW5kIHJlbmRlciB0aGUgcmVzdWx0aW5nIHN0
cmVhbSB0byBob3N0IGF1ZGlvIGRhZW1vbi4KKyAqIEBXRUJLSVRfQVVESU9fUkVOREVSSU5HX01P
REVfRVhURVJOQUw6IGRlZmVyIGF1ZGlvIHJlbmRlcmluZyB0byBhcHBsaWNhdGlvbi4KKyAqCisg
KiBBdWRpbyByZW5kZXJpbmcgcG9saWN5LgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK3R5cGVk
ZWYgZW51bSB7CisgICAgV0VCS0lUX0FVRElPX1JFTkRFUklOR19NT0RFX0hPU1QsCisgICAgV0VC
S0lUX0FVRElPX1JFTkRFUklOR19NT0RFX0lOVEVSTkFMLAorICAgIFdFQktJVF9BVURJT19SRU5E
RVJJTkdfTU9ERV9FWFRFUk5BTCwKK30gV2ViS2l0QXVkaW9SZW5kZXJpbmdNb2RlOworCiBzdHJ1
Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIEdPYmplY3QgcGFyZW50OwogCkBAIC01NjUsNiArNTgy
LDkgQEAgd2Via2l0X3dlYl92aWV3X2dldF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldwogV0VCS0lUX0FQSSBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKgogd2Vi
a2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogCitXRUJLSVRfQVBJIFdlYktpdEF1ZGlv
UmVuZGVyaW5nTW9kZQord2Via2l0X3dlYl92aWV3X2dldF9hdWRpb19yZW5kZXJpbmdfbW9kZSAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCiBHX0VO
RF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCA3ZDEyMTRiMWNiMTU3NzI4
ZWVhOTU5YzgwZWM2MDQ2OWI4NjQ4OGE0Li41YjcwYWQyYjJlZDNiZTY5ZTU0MjUwMGQ3YzFiOTI3
YmIyZjY1MDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2Rv
Y3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0xNzMsNiArMTczLDcgQEAgV2ViS2l0
SW5zZWN1cmVDb250ZW50RXZlbnQKIFdlYktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbgog
V2ViS2l0RnJhbWVEaXNwbGF5ZWRDYWxsYmFjawogV2ViS2l0QXV0b3BsYXlQb2xpY3kKK1dlYktp
dEF1ZGlvUmVuZGVyaW5nTW9kZQogCiA8U1VCU0VDVElPTiBFZGl0aW5nIENvbW1hbmRzPgogV0VC
S0lUX0VESVRJTkdfQ09NTUFORF9DVVQKQEAgLTI2Miw2ICsyNjMsNyBAQCB3ZWJraXRfd2ViX3Zp
ZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2lucHV0
X21ldGhvZF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0
CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMKK3dlYmtpdF93ZWJfdmlld19n
ZXRfYXVkaW9fcmVuZGVyaW5nX21vZGUKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJl
c3VsdD4KIFdlYktpdEphdmFzY3JpcHRSZXN1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDExNTgzNDc1ZmY0ODc3NjMxNWE1OGM0NDMyMmY1NjYyMzlkNGE2
ZDEuLmZlODViMTFkNTU0NjFjOWYwMzhhNzEwNWE2NWNjZDFhZjA0NWQxYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDk2LDYgKzQ5Niw5IEBAIFdlYlBh
Z2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQ
cm94eSYgcHJvY2VzcywgUmVmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV90cmFuc2NvZGlu
Z1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkltYWdlVHJhbnNjb2Rp
bmciKSkKICNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgLCBtX2F1ZGlvUmVuZGVyaW5n
TW9kZShtX2NvbmZpZ3VyYXRpb24tPmF1ZGlvUmVuZGVyaW5nTW9kZSgpKQorI2VuZGlmCiB7CiAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0b3I6Iik7CiAKQEAg
LTc4ODMsNiArNzg4NiwxMCBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94
eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogCiAgICAgcGFyYW1l
dGVycy5uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgPSBwcmVmZXJlbmNlcygpLm5lZWRz
SW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcygpOwogCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBw
YXJhbWV0ZXJzLmF1ZGlvUmVuZGVyaW5nTW9kZSA9IG1fYXVkaW9SZW5kZXJpbmdNb2RlOworI2Vu
ZGlmCisKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCA0MDg2OGZlMTE2OGY1YjFjODViZTkzZTIyNGRlMjc5ZjRmNGFj
NmEyLi5mNGU5YjVjNzUxM2NlMDNkNmMzNjk4M2FiOTg0NjAxZDE1NmQ3NGY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTUxLDYgKzE1MSwxMCBAQCBPQkpDX0NM
QVNTIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzR3Rr
LmgiCiAjZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRp
YVBsYXllckVudW1zLmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViTWVkaWFTZXNzaW9u
TWFuYWdlckNsaWVudC5oPgpAQCAtMjg0Niw2ICsyODUwLDEwIEBAIHByaXZhdGU6CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIFJlZjxXb3JrUXVldWU+IG1fdHJhbnNjb2RpbmdRdWV1ZTsKICNlbmRp
ZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpB
dWRpb1JlbmRlcmluZ01vZGUgbV9hdWRpb1JlbmRlcmluZ01vZGU7CisjZW5kaWYKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBlZmMwMDNiZDAx
NTkxMDAwODJkZTNjZWYxZjYwOWZhNTIyNTFjYTVhLi41MmNmYTViNzNiYWI3ZTE5MmYyNmE1N2Mz
MDYyNTY1NDIzMTg4Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTAwLDYgKzEwMCwx
MCBAQAogI2luY2x1ZGUgIlByaW50ZXJMaXN0R3RrLmgiCiAjZW5kaWYKIAorI2lmIFVTRShHU1RS
RUFNRVIpCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllckVudW1zLmg+CisjZW5kaWYKKwog
I2lmIEVOQUJMRShXRUJfQVVUSE4pCiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uLmg+CiAjZW5kaWYKQEAgLTEzMDYsNiArMTMxMCwxOCBAQCB2b2lk
IFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0
IFN0cmluZyYgZGV0YWlscywgYwogICAgIG1fcGFnZS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRp
YVBsdWdpbnMoZGV0YWlscywgZGVzY3JpcHRpb24sIGNhbGxiYWNrKTsKIH0KIAorQ2hyb21lQ2xp
ZW50OjpBdWRpb1JlbmRlcmluZ01vZGUgV2ViQ2hyb21lQ2xpZW50OjphdWRpb1JlbmRlcmluZ01v
ZGUoKSBjb25zdAoreworICAgIHN3aXRjaCAobV9wYWdlLmF1ZGlvUmVuZGVyaW5nTW9kZSgpKSB7
CisgICAgY2FzZSBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGU6Okhvc3Q6Cisg
ICAgICAgIHJldHVybiBDaHJvbWVDbGllbnQ6OkF1ZGlvUmVuZGVyaW5nTW9kZTo6SG9zdDsKKyAg
ICBjYXNlIE1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9kZTo6SW50ZXJuYWw6Cisg
ICAgICAgIHJldHVybiBDaHJvbWVDbGllbnQ6OkF1ZGlvUmVuZGVyaW5nTW9kZTo6SW50ZXJuYWw7
CisgICAgY2FzZSBNZWRpYVBsYXllckVudW1zOjpBdWRpb1JlbmRlcmluZ01vZGU6OkV4dGVybmFs
OgorICAgICAgICByZXR1cm4gQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ01vZGU6OkV4dGVy
bmFsOworICAgIH0KKyAgICByZXR1cm4gQ2hyb21lQ2xpZW50OjpBdWRpb1JlbmRlcmluZ01vZGU6
Okhvc3Q7Cit9CiAjZW5kaWYKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpZEludmFsaWRhdGVE
b2N1bWVudE1hcmtlclJlY3RzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBlNzVmNDg4NTJiZmEw
NmIxYWQ0MGUzYmJhMWZhM2NjM2UzZjQxYThlLi41MTVkMzVjMmU0OGI4NzdhOWNkZTE4MTQxMWQ4
YTk4NzAyMWVmNzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zODAsNiArMzgwLDkgQEAgcHJp
dmF0ZToKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAgICAgdm9pZCByZXF1
ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiAvKmRldGFpbHMqLywg
Y29uc3QgU3RyaW5nJiAvKmRlc2NyaXB0aW9uKi8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVxdWVz
dEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJikgZmluYWw7CiAjZW5kaWYKKyNpZiBVU0Uo
R1NUUkVBTUVSKQorICAgIENocm9tZUNsaWVudDo6QXVkaW9SZW5kZXJpbmdNb2RlIGF1ZGlvUmVu
ZGVyaW5nTW9kZSgpIGNvbnN0IGZpbmFsOworI2VuZGlmCiAKICAgICB2b2lkIGRpZEludmFsaWRh
dGVEb2N1bWVudE1hcmtlclJlY3RzKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZmE5N2YxNzMyNGMyYTMwMzEwNjZlNTFjYWZj
YzAzOTMzMDQ1ZjJmOS4uYzQ3ZTBkMjZmNTlhNzVjMTljMzdkNjBmYmY5ZjNiMGVmZDI3Njc2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQ3
OSw2ICs0NzksOSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX292ZXJyaWRkZW5N
ZWRpYVR5cGUocGFyYW1ldGVycy5vdmVycmlkZGVuTWVkaWFUeXBlKQogICAgICwgbV9wcm9jZXNz
RGlzcGxheU5hbWUocGFyYW1ldGVycy5wcm9jZXNzRGlzcGxheU5hbWUpCiAgICAgLCBtX2xpbWl0
c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9u
c1RvQXBwQm91bmREb21haW5zKQorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgLCBtX2F1ZGlvUmVu
ZGVyaW5nTW9kZShwYXJhbWV0ZXJzLmF1ZGlvUmVuZGVyaW5nTW9kZSkKKyNlbmRpZgogewogICAg
IEFTU0VSVChtX2lkZW50aWZpZXIpOwogCkBAIC02NTQ5LDYgKzY1NTIsMTMgQEAgdm9pZCBXZWJQ
YWdlOjphZGRVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZCYgd29ybGQsIFcKICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlw
dCh3b3JsZCwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQor
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QXVkaW9SZW5kZXJpbmdNb2RlIFdlYlBhZ2U6OmF1
ZGlvUmVuZGVyaW5nTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXVkaW9SZW5kZXJpbmdN
b2RlOworfQorI2VuZGlmCisKIHZvaWQgV2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQoY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0
ZWRGcmFtZXMpCiB7CiAgICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgdXNlclN0eWxlU2hlZXQg
e3NvdXJjZSwgYWJvdXRCbGFua1VSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5n
PigpLCBpbmplY3RlZEZyYW1lcywgVXNlclN0eWxlVXNlckxldmVsIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjZkMjQzM2I2MTUxNThlZjc2OGMx
NjY2MjA5ZmVhY2Y5NmZkZTdlZi4uYWUwMTZmYzI2Njk1MGU2ZGU5ZWEwYjAxYmQ2MDg5MzA0MzYy
NDBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
MTM3LDYgKzEzNywxMCBAQCB0eXBlZGVmIHN0cnVjdCBfQXRrT2JqZWN0IEF0a09iamVjdDsKICNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbklkZW50aWZpZXIuaD4KICNlbmRpZgogCisjaWYg
VVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyRW51bXMuaD4KKyNl
bmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiRHluYW1pY1ZpZXdwb3J0U2l6
ZVVwZGF0ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPgpAQCAtMTE1
Myw2ICsxMTU3LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikKICAgICB2b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBTdHJp
bmcmIGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJik7CiAjZW5kaWYKKyNpZiBV
U0UoR1NUUkVBTUVSKQorICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVy
aW5nTW9kZSBhdWRpb1JlbmRlcmluZ01vZGUoKSBjb25zdDsKKyNlbmRpZgogCiAgICAgdm9pZCBh
ZGRVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYs
IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMsIFdlYkNvcmU6OlVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lKTsKICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYg
c291cmNlLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKTsKQEAgLTE3MDIsNiAr
MTcwOSw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQog
ICAgIHZvaWQgZGlkRW5kUmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKHVpbnQzMl90
IHJlc3VsdCk7CiAjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIHZvaWQgc2V0QXVkaW9S
ZW5kZXJpbmdNb2RlKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkF1ZGlvUmVuZGVyaW5nTW9k
ZSBtb2RlKSB7IG1fYXVkaW9SZW5kZXJpbmdNb2RlID0gbW9kZTsgfQorI2VuZGlmCiAKICAgICB2
b2lkIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24odWludDMyX3QpOwogCkBAIC0yMTM1
LDYgKzIxNDUsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbGltaXRzTmF2aWdhdGlvbnNUb0Fw
cEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25hdmlnYXRpb25IYXNPY2N1cmVk
IHsgZmFsc2UgfTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsK
KworI2lmIFVTRShHU1RSRUFNRVIpCisgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QXVk
aW9SZW5kZXJpbmdNb2RlIG1fYXVkaW9SZW5kZXJpbmdNb2RlOworI2VuZGlmCiB9OwogCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvRmluZFdQRUJh
Y2tlbmRfZmRvLmNtYWtlIGIvU291cmNlL2NtYWtlL0ZpbmRXUEVCYWNrZW5kX2Zkby5jbWFrZQpp
bmRleCBkNzAxZGY1NjIyZTdmNmJlMjBmNDczYjcyOTIyZmI0MzU2NTgzMWYxLi40ODc1MmQwMTY4
NDBjMWM1MTk1ZTliNmNkNjVhODkxY2YxYmY0YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2Uv
RmluZFdQRUJhY2tlbmRfZmRvLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9GaW5kV1BFQmFja2Vu
ZF9mZG8uY21ha2UKQEAgLTQzLDYgKzQzLDExIEBAIGZpbmRfbGlicmFyeShXUEVCQUNLRU5EX0ZE
T19MSUJSQVJJRVMKIAogbWFya19hc19hZHZhbmNlZChXUEVCQUNLRU5EX0ZET19JTkNMVURFX0RJ
UlMgV1BFQkFDS0VORF9GRE9fTElCUkFSSUVTKQogCitmaW5kX3BhdGgoV1BFQkFDS0VORF9GRE9f
QVVESU9fRVhURU5TSU9OCisgICAgTkFNRVMgd3BlL2V4dGVuc2lvbnMvYXVkaW8uaAorICAgIEhJ
TlRTICR7UENfV1BFQkFDS0VORF9GRE9fSU5DTFVERURJUn0gJHtQQ19XUEVCQUNLRU5EX0ZET19J
TkNMVURFX0RJUlN9CispCisKIGluY2x1ZGUoRmluZFBhY2thZ2VIYW5kbGVTdGFuZGFyZEFyZ3Mp
CiBmaW5kX3BhY2thZ2VfaGFuZGxlX3N0YW5kYXJkX2FyZ3MoV1BFQmFja2VuZF9mZG8KICAgICBS
RVFVSVJFRF9WQVJTIFdQRUJBQ0tFTkRfRkRPX0lOQ0xVREVfRElSUyBXUEVCQUNLRU5EX0ZET19M
SUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2Ug
Yi9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtlCmluZGV4IGNiZjFmZTIwZWY0YWE2
NGYwNjVmOTQwZWM5YjUxY2NmY2Y2NGNjODEuLmM4NTA4NzkwMTk2ZDE3MmVkZWI0NGM2ZWJlYjZh
NGZmZGVjYzIwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21h
a2UKKysrIGIvU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZQpAQCAtMzQsNiArMzQs
MTYgQEAgaWYgKEVOQUJMRV9WSURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAgICAgICBtZXNz
YWdlKEZBVEFMX0VSUk9SICJHU3RyZWFtZXJHTCBpcyBuZWVkZWQgZm9yIFVTRV9HU1RSRUFNRVJf
R0wuIikKICAgICBlbmRpZiAoKQogCisgICAgaWYgKFBPUlQgU1RSRVFVQUwgIldQRSIpCisgICAg
ICAgIGZpbmRfcGFja2FnZShXUEVCYWNrZW5kX2ZkbyAxLjcuMCkKKyAgICAgICAgaWYgKChOT1Qg
V1BFQkFDS0VORF9GRE9fRk9VTkQpIE9SIFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTiBT
VFJFUVVBTCAiV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OLU5PVEZPVU5EIikKKyAgICAg
ICAgICAgIG1lc3NhZ2UoV0FSTklORyAiV1BFQmFja2VuZC1mZG8gYXVkaW8gZXh0ZW5zaW9uIG5v
dCBmb3VuZC4gRGlzYWJsaW5nIGV4dGVybmFsIGF1ZGlvIHJlbmRlcmluZyBzdXBwb3J0IikKKyAg
ICAgICAgICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9XUEVCQUNLRU5EX0ZET19BVURJ
T19FWFRFTlNJT04gRkFMU0UpCisgICAgICAgIGVsc2UgKCkKKyAgICAgICAgICAgIFNFVF9BTkRf
RVhQT1NFX1RPX0JVSUxEKFVTRV9XUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04gVFJVRSkK
KyAgICAgICAgZW5kaWYgKCkKKyAgICBlbmRpZiAoKQorCiAgICAgU0VUX0FORF9FWFBPU0VfVE9f
QlVJTEQoVVNFX0dTVFJFQU1FUiBUUlVFKQogZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBhYjdjY2UyOGUwNTNhYzQ3M2I3YTQ3
Y2Q5NGI4MTc5MjlkNTA0YTEuLmUwOThlOWQwOGIxZmViZDg5ODRhZGMwMmQwYTE4NjljMDI2OGE0
MTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzOSBAQAorMjAyMC0wNy0yMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gSW50ZXJuYWwgYXVkaW8gcmVuZGVyaW5n
IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIFdQRSBBUEkgdGVzdCBmb3IgdGhlIGV4dGVybmFsLWF1ZGlvLXJlbmRlcmluZyBwb2xp
Y3kgc3VwcG9ydCBhbmQgYWRkIGEgY29tbWFuZC1saW5lCisgICAgICAgIGFyZ3VtZW50IHRvIGFs
bG93IGNvbmZpZ3VyaW5nIHRoZSBhdWRpbyByZW5kZXJpbmcgcG9saWN5IGluIHRoZSBHVEsgTWlu
aUJyb3dzZXIuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAo
Y3JlYXRlQnJvd3NlclRhYik6IENvbW1hbmQtbGluZSBvcHRpb24gYWxsb3dpbmcgdG8gc3dpdGNo
IGJldHdlZW4gdGhlIGhvc3QtZGVmYXVsdCBhbmQKKyAgICAgICAgaW50ZXJuYWwtbWl4aW5nIHBv
bGljaWVzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weTogV2hp
dGUtbGlzdCB0aGUgbmV3IGF1ZGlvIHNpbmsgZnJvbSB0aGUgc3R5bGUgY2hlY2tlci4KKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9maWxlLXdpdGgtdmlkZW8uaHRtbDogTmV3
IHV0aWxpdHkgZnVuY3Rpb25zIHRvIHBhdXNlIGFuZCBzZWVrIGluIHRoZSB2aWRlby4KKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3Bw
OgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6c2V0dXApOiBXUEUgdGVzdCBm
b3IgZXh0ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQuIEEgdmlkZW8KKyAgICAgICAgZmls
ZSBpcyBsb2FkZWQgdGhyb3VnaCB0aGUgd2VidmlldyBhbmQgdGhlIHRlc3QgcmVjZWl2ZXMgbm90
aWZpY2F0aW9ucyBkdXJpbmcgcGxheWJhY2suIEluCisgICAgICAgIG9yZGVyIHRvIHJlZHVjZSB0
aW1lb3V0IHJpc2tzLCBhIHNlZWsgbmVhciB0aGUgZW5kIG9mIHRoZSB2aWRlbyBpcyBwZXJmb3Jt
ZWQgZWFybHkgb24uCisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0Ojp0ZWFyZG93
bik6CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0OjpBdWRpb1JlbmRlcmluZ1dl
YlZpZXdUZXN0KToKKyAgICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6OmhhbmRsZVN0
YXJ0KToKKyAgICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6OmhhbmRsZVN0b3ApOgor
ICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6aGFuZGxlUGF1c2UpOgorICAgICAg
ICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6aGFuZGxlUmVzdW1lKToKKyAgICAgICAgKEF1
ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6OmhhbmRsZVBhY2tldCk6CisgICAgICAgIChBdWRpb1Jl
bmRlcmluZ1dlYlZpZXdUZXN0Ojp3YWl0VW50aWxQYXVzZWQpOgorICAgICAgICAoQXVkaW9SZW5k
ZXJpbmdXZWJWaWV3VGVzdDo6d2FpdFVudGlsRU9TKToKKyAgICAgICAgKEF1ZGlvUmVuZGVyaW5n
V2ViVmlld1Rlc3Q6OnN0YXRlIGNvbnN0KToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwOgorICAgICAg
ICAoV2ViVmlld1Rlc3Q6OmluaXRpYWxpemVXZWJWaWV3KToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oOgorICAgICAgICAqIGJ1aWxkc3RyZWFt
L2VsZW1lbnRzL3Nkay93cGViYWNrZW5kLWZkby5ic3Q6IEJ1bXAgdG8gY3VycmVudCBnaXQgbWFz
dGVyLCAxLjcueCwgd2hpY2ggaGFzCisgICAgICAgIHRoZSBuZXcgYXVkaW8gZXh0ZW5zaW9uLCB0
byBiZSBzaGlwcGVkIGluIDEuOC4wLgorCiAyMDIwLTA3LTI0ICBYYWJpZXIgUm9kcmlndWV6IENh
bHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gZ3N0X2J1
ZmZlcl91bm1hcDogYXNzZXJ0aW9uICdHU1RfSVNfQlVGRkVSIChidWZmZXIpJyBmYWlsZWQKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IDI2YmYzYmU4ZGJlNjg2OWE4Mjdh
MjkxZTcyYjFlZjJhMjJlMDdhMWUuLjc0MmQ1ZDUwOTNiMTEzYjUwNTE0YzIzY2E0ZTYyZjE3ZTc4
NGY1OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMK
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwpAQCAtNDcyLDYgKzQ3
Miw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RGVjaWRlUG9saWN5KFdlYktpdFdlYlZpZXcg
KndlYlZpZXcsIFdlYktpdFBvbGljeURlY2lzaW9uCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFu
YWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyks
CiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCB3ZWJraXRfd2ViX3ZpZXdf
aXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcpLAogICAgICAgICAid2Vic2l0ZS1w
b2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwK
KyAgICAgICAgImF1ZGlvLXJlbmRlcmluZy1tb2RlIiwgd2Via2l0X3dlYl92aWV3X2dldF9hdWRp
b19yZW5kZXJpbmdfbW9kZSh3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIGJyb3dzZXJf
d2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7CiAgICAgd2Via2l0X3dlYl92
aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0
X3JlcXVlc3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNjU4LDYgKzY1OSw3IEBAIHN0YXRpYyB2
b2lkIG5ld1RhYkNhbGxiYWNrKEdTaW1wbGVBY3Rpb24gKmFjdGlvbiwgR1ZhcmlhbnQgKnBhcmFt
ZXRlciwgZ3BvaW50ZXIKICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgd2Via2l0X3dl
Yl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KSwKICAgICAgICAgImlzLWNv
bnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIHdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5
X2F1dG9tYXRpb24od2ViVmlldyksCiAgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgd2Via2l0
X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpLAorICAgICAgICAiYXVkaW8t
cmVuZGVyaW5nLW1vZGUiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2F1ZGlvX3JlbmRlcmluZ19tb2Rl
KHdlYlZpZXcpLAogICAgICAgICBOVUxMKSkpOwogICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyh3
aW5kb3ctPnVyaUVudHJ5KTsKICAgICBndGtfbm90ZWJvb2tfc2V0X2N1cnJlbnRfcGFnZShHVEtf
Tk9URUJPT0sod2luZG93LT5ub3RlYm9vayksIC0xKTsKQEAgLTY3OSw2ICs2ODEsNyBAQCBzdGF0
aWMgdm9pZCBvcGVuUHJpdmF0ZVdpbmRvdyhHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50
ICpwYXJhbWV0ZXIsIGdwb2ludAogICAgICAgICAiaXMtZXBoZW1lcmFsIiwgVFJVRSwKICAgICAg
ICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIHdlYmtpdF93ZWJfdmlld19pc19jb250
cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCiAgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVz
Iiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpLAorICAgICAg
ICAiYXVkaW8tcmVuZGVyaW5nLW1vZGUiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2F1ZGlvX3JlbmRl
cmluZ19tb2RlKHdlYlZpZXcpLAogICAgICAgICBOVUxMKSk7CiAgICAgR3RrV2lkZ2V0ICpuZXdX
aW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoR1RLX1dJTkRPVyh3aW5kb3cpLCB3aW5kb3ctPndl
YkNvbnRleHQpOwogICAgIGd0a193aW5kb3dfc2V0X2FwcGxpY2F0aW9uKEdUS19XSU5ET1cobmV3
V2luZG93KSwgZ3RrX3dpbmRvd19nZXRfYXBwbGljYXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpKSk7
CkBAIC0xNDgwLDYgKzE0ODMsNyBAQCBXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19nZXRf
b3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKEJyb3dzZXJXaW5kbwogICAgICAgICAi
dXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9t
YW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwg
VFJVRSwKICAgICAgICAgIndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dl
YnNpdGVfcG9saWNpZXMod2ViVmlldyksCisgICAgICAgICJhdWRpby1yZW5kZXJpbmctbW9kZSIs
IHdlYmtpdF93ZWJfdmlld19nZXRfYXVkaW9fcmVuZGVyaW5nX21vZGUod2ViVmlldyksCiAgICAg
ICAgIE5VTEwpKTsKICAgICBHdGtXaWRnZXQgKm5ld1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25l
dyhHVEtfV0lORE9XKHdpbmRvdyksIHdpbmRvdy0+d2ViQ29udGV4dCk7CiAgICAgZ3RrX3dpbmRv
d19zZXRfYXBwbGljYXRpb24oR1RLX1dJTkRPVyhuZXdXaW5kb3cpLCBndGtfd2luZG93X2dldF9h
cHBsaWNhdGlvbihHVEtfV0lORE9XKHdpbmRvdykpKTsKQEAgLTE1MDIsNiArMTUwNiw3IEBAIFdl
YktpdFdlYlZpZXcgKmJyb3dzZXJfd2luZG93X2NyZWF0ZV93ZWJfdmlld19pbl9uZXdfdGFiX2Zv
cl9hdXRvbWF0aW9uKEJyb3dzZXJXCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRp
b24iLCBUUlVFLAogICAgICAgICAiYXV0b21hdGlvbi1wcmVzZW50YXRpb24tdHlwZSIsIFdFQktJ
VF9BVVRPTUFUSU9OX0JST1dTSU5HX0NPTlRFWFRfUFJFU0VOVEFUSU9OX1RBQiwKICAgICAgICAg
IndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMo
d2ViVmlldyksCisgICAgICAgICJhdWRpby1yZW5kZXJpbmctbW9kZSIsIHdlYmtpdF93ZWJfdmll
d19nZXRfYXVkaW9fcmVuZGVyaW5nX21vZGUod2ViVmlldyksCiAgICAgICAgIE5VTEwpKTsKICAg
ICBicm93c2VyX3dpbmRvd19hcHBlbmRfdmlldyh3aW5kb3csIG5ld1dlYlZpZXcpOwogICAgIHdl
YmtpdF93ZWJfdmlld19sb2FkX3VyaShuZXdXZWJWaWV3LCAiYWJvdXQ6YmxhbmsiKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9n
dGsvbWFpbi5jCmluZGV4IDYxY2I3MjllOWU4ZTI0ZDg1YzBkNjc4YzY0YTNkYmFlMWMwODVmNjMu
LjA0MjBiMTExNDhjNzI1MTA1N2Q4ZDc4MGE5NzA2YjQwOWNmNjA1ZDYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21h
aW4uYwpAQCAtNTYsNiArNTYsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqcHJveHk7CiBzdGF0aWMg
Z2Jvb2xlYW4gZGFya01vZGU7CiBzdGF0aWMgZ2Jvb2xlYW4gZW5hYmxlSVRQOwogc3RhdGljIGdi
b29sZWFuIHByaW50VmVyc2lvbjsKK3N0YXRpYyBnYm9vbGVhbiBpbnRlcm5hbEF1ZGlvTWl4aW5n
OwogCiB0eXBlZGVmIGVudW0gewogICAgIE1JTklfQlJPV1NFUl9FUlJPUl9JTlZBTElEX0FCT1VU
X1BBVEgKQEAgLTgwLDEyICs4MSwxNCBAQCBzdGF0aWMgZ2NoYXIgKmFyZ3VtZW50VG9VUkwoY29u
c3QgY2hhciAqZmlsZW5hbWUpCiAKIHN0YXRpYyBXZWJLaXRXZWJWaWV3ICpjcmVhdGVCcm93c2Vy
VGFiKEJyb3dzZXJXaW5kb3cgKndpbmRvdywgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdz
LCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKnVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0V2Vi
c2l0ZVBvbGljaWVzICpkZWZhdWx0V2Vic2l0ZVBvbGljaWVzKQogeworICAgIFdlYktpdEF1ZGlv
UmVuZGVyaW5nTW9kZSBhdWRpb1JlbmRlcmluZ01vZGUgPSBpbnRlcm5hbEF1ZGlvTWl4aW5nID8g
V0VCS0lUX0FVRElPX1JFTkRFUklOR19NT0RFX0lOVEVSTkFMIDogV0VCS0lUX0FVRElPX1JFTkRF
UklOR19NT0RFX0hPU1Q7CiAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IFdFQktJVF9XRUJf
VklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCiAgICAgICAgICJ3ZWItY29u
dGV4dCIsIGJyb3dzZXJfd2luZG93X2dldF93ZWJfY29udGV4dCh3aW5kb3cpLAogICAgICAgICAi
c2V0dGluZ3MiLCB3ZWJraXRTZXR0aW5ncywKICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2Vy
IiwgdXNlckNvbnRlbnRNYW5hZ2VyLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0
aW9uIiwgYXV0b21hdGlvbk1vZGUsCiAgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgZGVmYXVs
dFdlYnNpdGVQb2xpY2llcywKKyAgICAgICAgImF1ZGlvLXJlbmRlcmluZy1tb2RlIiwgYXVkaW9S
ZW5kZXJpbmdNb2RlLAogICAgICAgICBOVUxMKSk7CiAKICAgICBpZiAoZWRpdG9yTW9kZSkKQEAg
LTE0Niw2ICsxNDksNyBAQCBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0
aW9uc1tdID0KICAgICB7ICJpZ25vcmUtdGxzLWVycm9ycyIsIDAsIDAsIEdfT1BUSU9OX0FSR19O
T05FLCAmaWdub3JlVExTRXJyb3JzLCAiSWdub3JlIFRMUyBlcnJvcnMiLCBOVUxMIH0sCiAgICAg
eyAiY29udGVudC1maWx0ZXIiLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUUsICZjb250ZW50
RmlsdGVyLCAiSlNPTiB3aXRoIGNvbnRlbnQgZmlsdGVyaW5nIHJ1bGVzIiwgIkZJTEUiIH0sCiAg
ICAgeyAiZW5hYmxlLWl0cCIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmZW5hYmxlSVRQLCAi
RW5hYmxlIEludGVsbGlnZW50IFRyYWNraW5nIFByZXZlbnRpb24gKElUUCkiLCBOVUxMIH0sCisg
ICAgeyAiaW50ZXJuYWwtYXVkaW8tbWl4aW5nIiwgJ2knLCAwLCBHX09QVElPTl9BUkdfTk9ORSwg
JmludGVybmFsQXVkaW9NaXhpbmcsICJQZXJmb3JtIGludGVybmFsIGF1ZGlvIG1peGluZyBvZiBt
dWx0aW1lZGlhIGNvbnRlbnQiLCBOVUxMfSwKICAgICB7ICJ2ZXJzaW9uIiwgJ3YnLCAwLCBHX09Q
VElPTl9BUkdfTk9ORSwgJnByaW50VmVyc2lvbiwgIlByaW50IHRoZSBXZWJLaXRHVEsgdmVyc2lv
biIsIE5VTEwgfSwKICAgICB7IEdfT1BUSU9OX1JFTUFJTklORywgMCwgMCwgR19PUFRJT05fQVJH
X0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJndW1lbnRzLCAwLCAiW1VSTOKApl0iIH0sCiAgICAgeyAw
LCAwLCAwLCAwLCAwLCAwLCAwIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5w
eQppbmRleCA1OGIxMTZiYzdhYTRjZjM5NzFiZmQ5ODI0ZDdlMzQ4ZmJlYzI3NGMyLi40ZWJmMGJk
OGU2ZTQ4MzYwZGZlZDUyZmYzM2FhMDZmNTE5NWVkNTBjIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2VyLnB5CkBAIC0yMjEsNiArMjIxLDggQEAgX1BBVEhfUlVMRVNfU1BFQ0lG
SUVSID0gWwogICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9y
bScsICdncmFwaGljcycsICdnc3RyZWFtZXInLCAnR0xWaWRlb1NpbmtHU3RyZWFtZXIuaCcpLAog
ICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScsICdncmFw
aGljcycsICdnc3RyZWFtZXInLCAnVmlkZW9TaW5rR1N0cmVhbWVyLmNwcCcpLAogICAgICAgb3Mu
cGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScsICdncmFwaGljcycsICdn
c3RyZWFtZXInLCAnV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCcpLAorICAgICAgb3MucGF0
aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScsICdncmFwaGljcycsICdnc3Ry
ZWFtZXInLCAnV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNwcCcpLAorICAgICAgb3MucGF0aC5q
b2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScsICdncmFwaGljcycsICdnc3RyZWFt
ZXInLCAnV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmgnKSwKICAgICAgIG9zLnBhdGguam9pbign
U291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnYXVkaW8nLCAnZ3N0cmVhbWVyJywgJ1dl
YktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCcpLAogICAgICAgb3MucGF0aC5qb2luKCdT
b3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScsICdtZWRpYXN0cmVhbScsICdnc3RyZWFtZXIn
LCAnR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuaCcpLAogICAgICAgb3MucGF0aC5qb2luKCdT
b3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScsICdtZWRpYXN0cmVhbScsICdnc3RyZWFtZXIn
LCAnR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwJyksCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9maWxlLXdpdGgtdmlkZW8uaHRtbCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2ZpbGUtd2l0aC12aWRlby5odG1sCmluZGV4IGFhMjI1
OWEwZmNlMGIwZmRjZGUwODFhZWQzYmQ3NjA3OGMzMzBiY2UuLjBiODdkYmVmYTBkNzUzNDExZGM0
N2U3Y2RmOWM4NmQ0OWU2N2M0ZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L2ZpbGUtd2l0aC12aWRlby5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L2ZpbGUtd2l0aC12aWRlby5odG1sCkBAIC01LDYgKzUsMTUgQEAKICAgICB7
CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LXZpZGVvIikucGxheSgpOwog
ICAgIH0KKyAgICBmdW5jdGlvbiBwYXVzZVZpZGVvKCkKKyAgICB7CisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LXZpZGVvIikucGF1c2UoKTsKKyAgICB9CisgICAgZnVuY3Rp
b24gc2Vla05lYXJUaGVFbmQoKQorICAgIHsKKyAgICAgICAgbGV0IHZpZGVvID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3QtdmlkZW8iKTsKKyAgICAgICAgdmlkZW8uY3VycmVudFRpbWUg
PSB2aWRlby5kdXJhdGlvbiAtIDAuNTsKKyAgICB9CiAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYktpdFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCBhYzcwODQ4OWM5ZjNmMjE0ODQ0Y2VjZjgyZWY4
MzBlYmVjNmYwOGNjLi5hYzlhYjg5MTIxZmE3ZjhkNTY1MmMzMGRkOWUwMWVmZGQyOWU1MDY3IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktp
dFdlYlZpZXcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTI0LDYgKzI0LDEwIEBACiAjaW5jbHVkZSA8Z2xpYi9n
c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKKyNpZiBQTEFURk9STShX
UEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04pCisjaW5jbHVkZSA8d3Bl
L2V4dGVuc2lvbnMvYXVkaW8uaD4KKyNlbmRpZgorCiBjbGFzcyBJc1BsYXlpbmdBdWRpb1dlYlZp
ZXdUZXN0IDogcHVibGljIFdlYlZpZXdUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVT
VF9GSVhUVVJFKElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3QpOwpAQCAtMTM0Miw2ICsxMzQ2LDEy
OSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0ZyYW1lRGlzcGxheWVkKEZyYW1lRGlzcGxheWVk
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oV1BF
KSAmJiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorZW51bSBjbGFzcyBSZW5k
ZXJpbmdTdGF0ZSB7CisgICAgVW5rbm93biwKKyAgICBTdGFydGVkLAorICAgIFBhdXNlZCwKKyAg
ICBTdG9wcGVkCit9OworCitjbGFzcyBBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0IDogcHVibGlj
IFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFX1dJVEhf
U0VUVVBfVEVBUkRPV04oQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdCwgc2V0dXAsIHRlYXJkb3du
KTsKKworICAgIHN0YXRpYyB2b2lkIHNldHVwKCkKKyAgICB7CisgICAgICAgIFdlYlZpZXdUZXN0
OjphdWRpb1JlbmRlcmluZ01vZGUgPSBXRUJLSVRfQVVESU9fUkVOREVSSU5HX01PREVfRVhURVJO
QUw7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdGVhcmRvd24oKQorICAgIHsKKyAgICAgICAg
V2ViVmlld1Rlc3Q6OmF1ZGlvUmVuZGVyaW5nTW9kZSA9IFdFQktJVF9BVURJT19SRU5ERVJJTkdf
TU9ERV9IT1NUOworICAgIH0KKworICAgIEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3QoKQorICAg
IHsKKyAgICAgICAgd3BlX2F1ZGlvX3JlZ2lzdGVyX3JlY2VpdmVyKCZtX2F1ZGlvUmVjZWl2ZXIs
IHRoaXMpOworICAgIH0KKworICAgIHZvaWQgaGFuZGxlU3RhcnQodWludDMyX3QgaWQsIGludDMy
X3QgY2hhbm5lbHMsIGNvbnN0IGNoYXIqIGxheW91dCwgaW50MzJfdCBzYW1wbGVSYXRlKQorICAg
IHsKKyAgICAgICAgZ19hc3NlcnQobV9zdGF0ZSA9PSBSZW5kZXJpbmdTdGF0ZTo6VW5rbm93bik7
CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKG1fc3RyZWFtSWQuaGFzVmFsdWUoKSk7CisgICAgICAg
IGdfYXNzZXJ0X2NtcHVpbnQoaWQsID09LCAwKTsKKyAgICAgICAgbV9zdHJlYW1JZCA9IGlkOwor
ICAgICAgICBtX3N0YXRlID0gUmVuZGVyaW5nU3RhdGU6OlN0YXJ0ZWQ7CisgICAgICAgIGdfYXNz
ZXJ0X2NtcGludChjaGFubmVscywgPT0sIDIpOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIobGF5
b3V0LCA9PSwgIlMxNkxFIik7CisgICAgICAgIGdfYXNzZXJ0X2NtcGludChzYW1wbGVSYXRlLCA9
PSwgNDQxMDApOworICAgIH0KKworICAgIHZvaWQgaGFuZGxlU3RvcCh1aW50MzJfdCBpZCkKKyAg
ICB7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoKm1fc3RyZWFtSWQsID09LCBpZCk7CisgICAg
ICAgIGdfYXNzZXJ0KG1fc3RhdGUgIT0gUmVuZGVyaW5nU3RhdGU6OlVua25vd24pOworICAgICAg
ICBtX3N0YXRlID0gUmVuZGVyaW5nU3RhdGU6OlN0b3BwZWQ7CisgICAgICAgIGdfbWFpbl9sb29w
X3F1aXQobV9tYWluTG9vcCk7CisgICAgICAgIG1fc3RyZWFtSWQucmVzZXQoKTsKKyAgICB9CisK
KyAgICB2b2lkIGhhbmRsZVBhdXNlKHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgZ19hc3Nl
cnRfY21wdWludCgqbV9zdHJlYW1JZCwgPT0sIGlkKTsKKyAgICAgICAgZ19hc3NlcnQobV9zdGF0
ZSAhPSBSZW5kZXJpbmdTdGF0ZTo6VW5rbm93bik7CisgICAgICAgIG1fc3RhdGUgPSBSZW5kZXJp
bmdTdGF0ZTo6UGF1c2VkOworICAgIH0KKworICAgIHZvaWQgaGFuZGxlUmVzdW1lKHVpbnQzMl90
IGlkKQorICAgIHsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludCgqbV9zdHJlYW1JZCwgPT0sIGlk
KTsKKyAgICAgICAgZ19hc3NlcnQobV9zdGF0ZSA9PSBSZW5kZXJpbmdTdGF0ZTo6UGF1c2VkKTsK
KyAgICAgICAgbV9zdGF0ZSA9IFJlbmRlcmluZ1N0YXRlOjpTdGFydGVkOworICAgIH0KKworICAg
IHZvaWQgaGFuZGxlUGFja2V0KHN0cnVjdCB3cGVfYXVkaW9fcGFja2V0X2V4cG9ydCogcGFja2V0
X2V4cG9ydCwgdWludDMyX3QgaWQsIGludDMyX3QgZmQsIHVpbnQzMl90IHNpemUpCisgICAgewor
ICAgICAgICBnX2Fzc2VydF9jbXB1aW50KCptX3N0cmVhbUlkLCA9PSwgaWQpOworICAgICAgICBn
X2Fzc2VydChtX3N0YXRlID09IFJlbmRlcmluZ1N0YXRlOjpTdGFydGVkIHx8IG1fc3RhdGUgPT0g
UmVuZGVyaW5nU3RhdGU6OlBhdXNlZCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoc2l6ZSwg
PiwgMCk7CisgICAgICAgIHdwZV9hdWRpb19wYWNrZXRfZXhwb3J0X3JlbGVhc2UocGFja2V0X2V4
cG9ydCk7CisgICAgfQorCisgICAgdm9pZCB3YWl0VW50aWxQYXVzZWQoKQorICAgIHsKKyAgICAg
ICAgZ190aW1lb3V0X2FkZCgyMDAsIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7
CisgICAgICAgICAgICBhdXRvKiB0ZXN0ID0gc3RhdGljX2Nhc3Q8QXVkaW9SZW5kZXJpbmdXZWJW
aWV3VGVzdCo+KHVzZXJEYXRhKTsKKyAgICAgICAgICAgIGlmICh0ZXN0LT5zdGF0ZSgpID09IFJl
bmRlcmluZ1N0YXRlOjpQYXVzZWQpIHsKKyAgICAgICAgICAgICAgICB0ZXN0LT5xdWl0TWFpbkxv
b3AoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIEdfU09VUkNFX0NPTlRJTlVFOworICAgICAgICB9LCB0
aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0KKworICAg
IHZvaWQgd2FpdFVudGlsRU9TKCkKKyAgICB7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21h
aW5Mb29wKTsKKyAgICB9CisKKyAgICBSZW5kZXJpbmdTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGU7IH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHdwZV9h
dWRpb19yZWNlaXZlciBtX2F1ZGlvUmVjZWl2ZXI7CisgICAgUmVuZGVyaW5nU3RhdGUgbV9zdGF0
ZSB7IFJlbmRlcmluZ1N0YXRlOjpVbmtub3duIH07CisgICAgT3B0aW9uYWw8dWludDMyX3Q+IG1f
c3RyZWFtSWQ7Cit9OworCitjb25zdCBzdHJ1Y3Qgd3BlX2F1ZGlvX3JlY2VpdmVyIEF1ZGlvUmVu
ZGVyaW5nV2ViVmlld1Rlc3Q6Om1fYXVkaW9SZWNlaXZlciA9IHsKKyAgICBbXSh2b2lkKiBkYXRh
LCB1aW50MzJfdCBpZCwgaW50MzJfdCBjaGFubmVscywgY29uc3QgY2hhciogbGF5b3V0LCBpbnQz
Ml90IHNhbXBsZVJhdGUpIHsgc3RhdGljX2Nhc3Q8QXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdCo+
KGRhdGEpLT5oYW5kbGVTdGFydChpZCwgY2hhbm5lbHMsIGxheW91dCwgc2FtcGxlUmF0ZSk7IH0s
CisgICAgW10odm9pZCogZGF0YSwgc3RydWN0IHdwZV9hdWRpb19wYWNrZXRfZXhwb3J0KiBwYWNr
ZXRfZXhwb3J0LCB1aW50MzJfdCBpZCwgaW50MzJfdCBmZCwgdWludDMyX3Qgc2l6ZSkgeyBzdGF0
aWNfY2FzdDxBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0Kj4oZGF0YSktPmhhbmRsZVBhY2tldChw
YWNrZXRfZXhwb3J0LCBpZCwgZmQsIHNpemUpOyB9LAorICAgIFtdKHZvaWQqIGRhdGEsIHVpbnQz
Ml90IGlkKSB7IHN0YXRpY19jYXN0PEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3QqPihkYXRhKS0+
aGFuZGxlU3RvcChpZCk7IH0sCisgICAgW10odm9pZCogZGF0YSwgdWludDMyX3QgaWQpIHsgc3Rh
dGljX2Nhc3Q8QXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdCo+KGRhdGEpLT5oYW5kbGVQYXVzZShp
ZCk7IH0sCisgICAgW10odm9pZCogZGF0YSwgdWludDMyX3QgaWQpIHsgc3RhdGljX2Nhc3Q8QXVk
aW9SZW5kZXJpbmdXZWJWaWV3VGVzdCo+KGRhdGEpLT5oYW5kbGVSZXN1bWUoaWQpOyB9Cit9Owor
CitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0V4dGVybmFsQXVkaW9SZW5kZXJpbmcoQXVkaW9SZW5k
ZXJpbmdXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBHVW5pcXVlUHRy
PGNoYXI+IHJlc291cmNlUGF0aChnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFJlc291cmNlc0Rp
cihUZXN0OjpXZWJLaXQyUmVzb3VyY2VzKS5kYXRhKCksICJmaWxlLXdpdGgtdmlkZW8uaHRtbCIs
IG51bGxwdHIpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlVVJMKGdfZmlsZW5hbWVf
dG9fdXJpKHJlc291cmNlUGF0aC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIHdlYmtp
dF93ZWJfdmlld19sb2FkX3VyaSh0ZXN0LT5tX3dlYlZpZXcsIHJlc291cmNlVVJMLmdldCgpKTsK
KyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIHRlc3QtPnJ1bkphdmFT
Y3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgicGxheVZpZGVvKCk7IiwgbnVsbHB0cik7CisgICAg
Z19hc3NlcnQodGVzdC0+c3RhdGUoKSA9PSBSZW5kZXJpbmdTdGF0ZTo6U3RhcnRlZCk7CisgICAg
dGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJwYXVzZVZpZGVvKCk7Iiwg
bnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsUGF1c2VkKCk7CisgICAgZ19hc3NlcnQodGVz
dC0+c3RhdGUoKSA9PSBSZW5kZXJpbmdTdGF0ZTo6UGF1c2VkKTsKKworICAgIHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgicGxheVZpZGVvKCk7IHNlZWtOZWFyVGhlRW5k
KCk7IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsRU9TKCk7CisgICAgZ19hc3NlcnQo
dGVzdC0+c3RhdGUoKSA9PSBSZW5kZXJpbmdTdGF0ZTo6U3RvcHBlZCk7Cit9CisjZW5kaWYKKwog
c3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2Fn
ZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250
ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhP
RF9HRVQpIHsKQEAgLTE0MDIsNiArMTUyOSw5IEBAIHZvaWQgYmVmb3JlQWxsKCkKICNlbmRpZgog
ICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiaXMtYXVkaW8tbXV0ZWQiLCB0
ZXN0V2ViVmlld0lzQXVkaW9NdXRlZCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJhdXRvcGxheS1wb2xpY3kiLCB0ZXN0V2ViVmlld0F1dG9wbGF5UG9saWN5KTsKKyNp
ZiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04pCisg
ICAgQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImV4dGVy
bmFsLWF1ZGlvLXJlbmRlcmluZyIsIHRlc3RXZWJWaWV3RXh0ZXJuYWxBdWRpb1JlbmRlcmluZyk7
CisjZW5kaWYKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKaW5kZXggN2ExM2ViOGY4NDAyZGYw
NTE3YWYwNjhkOTFkMmFmY2QwOWRlOTY0Ni4uMWIxNDFlYzQ3YmZiZmZjODJlNThjYmNlNTA5OGFj
NGI2YTkyNWI1NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1dlYlZpZXdUZXN0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiBib29sIFdlYlZpZXdUZXN0
OjpzaG91bGRJbml0aWFsaXplV2ViVmlld0luQ29uc3RydWN0b3IgPSB0cnVlOwogYm9vbCBXZWJW
aWV3VGVzdDo6c2hvdWxkQ3JlYXRlRXBoZW1lcmFsV2ViVmlldyA9IGZhbHNlOworV2ViS2l0QXVk
aW9SZW5kZXJpbmdNb2RlIFdlYlZpZXdUZXN0OjphdWRpb1JlbmRlcmluZ01vZGUgPSBXRUJLSVRf
QVVESU9fUkVOREVSSU5HX01PREVfSE9TVDsKIAogV2ViVmlld1Rlc3Q6OldlYlZpZXdUZXN0KCkK
ICAgICA6IG1fdXNlckNvbnRlbnRNYW5hZ2VyKGFkb3B0R1JlZih3ZWJraXRfdXNlcl9jb250ZW50
X21hbmFnZXJfbmV3KCkpKQpAQCAtNTksNiArNjAsNyBAQCB2b2lkIFdlYlZpZXdUZXN0Ojppbml0
aWFsaXplV2ViVmlldygpCiAgICAgICAgICJ3ZWItY29udGV4dCIsIG1fd2ViQ29udGV4dC5nZXQo
KSwKICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgbV91c2VyQ29udGVudE1hbmFnZXIu
Z2V0KCksCiAgICAgICAgICJpcy1lcGhlbWVyYWwiLCBzaG91bGRDcmVhdGVFcGhlbWVyYWxXZWJW
aWV3LAorICAgICAgICAiYXVkaW8tcmVuZGVyaW5nLW1vZGUiLCBhdWRpb1JlbmRlcmluZ01vZGUs
CiAgICAgICAgIG51bGxwdHIpKTsKICAgICBwbGF0Zm9ybUluaXRpYWxpemVXZWJWaWV3KCk7CiAg
ICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChtX3dlYlZp
ZXcpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dl
YlZpZXdUZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3
VGVzdC5oCmluZGV4IDcwZDc5MzdhOGFiNWViYTFlZTA0MTRmZTU3MjFlNDRjMTdkM2U5MjUuLmNi
ODIzOTk4YTgyNmI1ZTg0ZWIxNzM3ZWNmZWQwN2IwN2VjY2Y3MWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaApAQCAtMzEsNiArMzEs
OCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbml0aWFsaXplV2ViVmlld0lu
Q29uc3RydWN0b3I7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQ3JlYXRlRXBoZW1lcmFsV2ViVmll
dzsKKyAgICBzdGF0aWMgV2ViS2l0QXVkaW9SZW5kZXJpbmdNb2RlIGF1ZGlvUmVuZGVyaW5nTW9k
ZTsKKwogICAgIHZvaWQgaW5pdGlhbGl6ZVdlYlZpZXcoKTsKIAogICAgIHZvaWQgcGxhdGZvcm1J
bml0aWFsaXplV2ViVmlldygpOwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmlu
ZGV4IDRjOGMxM2ViN2NjNTJmZmYzNDAyNDBjNGVhNjQwY2M4ODc2MjM0N2IuLjVkODJlZDVlNTg1
MjY2NzIyNTNmYzBkMDE4MGQwMzVjODJmY2QxYjAgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysg
Yi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNy0yMiAgUGhpbGlwcGUgTm9ybWFu
ZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gSW50ZXJuYWwg
YXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL0ZpbmRXUEVCYWNrZW5kX2Zkby5jbWFrZTog
Q2hlY2sgZm9yIHRoZSBhdWRpbyBleHRlbnNpb24gaGVhZGVyLiBDdXJyZW50bHkKKyAgICAgICAg
b25seSBpbiBnaXQgbWFzdGVyLCB1cGNvbWluZyAxLjguMCByZWxlYXNlLgorICAgICAgICAqIFNv
dXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2U6IENoZWNrIGFuZCBlbmFibGUgZXh0ZXJu
YWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQgaWYKKyAgICAgICAgdGhlIFdQRUJhY2tlbmQtRkRP
IGF1ZGlvIGV4dGVuc2lvbiB3YXMgZm91bmQuCisKIDIwMjAtMDctMjEgIEFkcmlhbiBQZXJleiBk
ZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRh
dGUgT3B0aW9uc1dQRS5jbWFrZSBhbmQgTkVXUyBmb3IgdGhlIDIuMjkuMSByZWxlYXNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409843</attachid>
            <date>2020-09-27 10:20:40 -0700</date>
            <delta_ts>2020-09-30 06:41:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207634-20200927102038.patch</filename>
            <type>text/plain</type>
            <size>61706</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ0NDRhZmM5Y2NlNGY5
YmU3NmVhYThmYTJiNzhkMDJmNDVhMTkwMS4uODFjNDgwYzA2NWIzNzkyM2I5YzdlNTAwNWFlNWFj
MWQ2YTY4YjhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMC0wOS0yNyAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1l
cl0gSW50ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0d28gZmVh
dHVyZXMgcmVnYXJkaW5nIGF1ZGlvIHJlbmRlcmluZzoKKworICAgICAgICAxLiBJbnRlcm5hbCBh
dWRpbyBtaXhpbmcgZW5hYmxlZCBhdCBydW50aW1lIHdpdGggdGhlIFdFQktJVF9HU1RfRU5BQkxF
X0FVRElPX01JWEVSPTEKKyAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUuIFdoZW4gdGhpcyBp
cyBlbmFibGVkLCB0aGUgV2ViUHJvY2VzcyB3aWxsIGhhdmUgaXRzIEdTdHJlYW1lciBiYWNrZW5k
cworICAgICAgICByZW5kZXIgdG8gZGVkaWNhdGVkIFdlYktpdCBhdWRpbyBzaW5rcy4gVGhvc2Ug
d2lsbCBmb3J3YXJkIGJ1ZmZlcnMgdG8gYSBzaW5nbGV0b24gYXVkaW8KKyAgICAgICAgbWl4ZXIu
IFRoZSByZXN1bHRpbmcgYXVkaW8gc3RyZWFtIHdpbGwgdGhlbiBiZSByZW5kZXJlZCB0aHJvdWdo
IHRoZSBkZWZhdWx0IGF1ZGlvIHNpbmsKKyAgICAgICAgKFB1bHNlQXVkaW8gaW4gbW9zdCBjYXNl
cykuIFVzaW5nIHRoaXMgYXBwcm9hY2gsIGFwcGxpY2F0aW9ucyB3aWxsIG1haW50YWluIGEgc2lu
Z2xlCisgICAgICAgIGNvbm5lY3Rpb24gdG8gdGhlIGF1ZGlvIGRhZW1vbi4KKworICAgICAgICAy
LiBGb3IgV1BFLCBleHRlcm5hbCBhdWRpbyBwYXNzLXRocm91Z2guIFRvIGVuYWJsZSB0aGlzLCB0
aGUgYXBwbGljYXRpb24gaGFzIHRvIHJlZ2lzdGVyIGFuCisgICAgICAgIGF1ZGlvIHJlY2VpdmVy
IHVzaW5nIHRoZSBXUEVCYWNrZW5kLUZETyB3cGVfYXVkaW9fcmVnaXN0ZXJfcmVjZWl2ZXIoKSBB
UEkuIFdoZW4gdGhpcyBpcworICAgICAgICBlbmFibGVkLCB0aGUgV2ViS2l0IGF1ZGlvIHNpbmtz
IHJ1bm5pbmcgaW4gdGhlIFdlYlByb2Nlc3Mgd2lsbCBmb3J3YXJkIGF1ZGlvIHNhbXBsZXMgdG8g
dGhlCisgICAgICAgIFVJUHJvY2VzcywgdXNpbmcgYSBXYXlsYW5kIHByb3RvY29sIGRlZmluZWQg
aW4gdGhlIFdQRUJhY2tlbmQtRkRPIGJhY2tlbmQgYW5kIGV4cG9zZWQKKyAgICAgICAgdGhyb3Vn
aCBpdHMgYXVkaW8gZXh0ZW5zaW9uLiBUaGlzIGNsaWVudC1zaWRlIHJlbmRlcmluZyBzdXBwb3J0
IGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gaGF2ZQorICAgICAgICBmdWxsIGNvbnRyb2wgb24gdGhl
IGF1ZGlvIHNhbXBsZXMgcmVuZGVyaW5nLgorCisgICAgICAgIFRoZSBJbnRlcm5hbCBtb2RlIHNo
b3VsZCBiZSBjb25zaWRlcmVkIGEgdGVjaG5vbG9neSBwcmV2aWV3IGFuZCBjYW4ndCBiZSBlbmFi
bGVkIGJ5IGRlZmF1bHQKKyAgICAgICAgeWV0LCBiZWNhdXNlIGF1ZGlvbWl4ZXIgbGFja3Mgc29t
ZSBmZWF0dXJlcyBzdWNoIGFzIHJldmVyc2UgcGxheWJhY2sgc3VwcG9ydC4gRXh0ZXJuYWwgYXVk
aW8KKyAgICAgICAgcmVuZGVyaW5nIHBvbGljeSBpcyBjb3ZlcmVkIGJ5IGEgbmV3IFdQRSBBUEkg
dGVzdC4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyKTogQ3JlYXRlIHNpbmsgZGVwZW5kaW5nIG9uCisgICAgICAgIHNlbGVjdGVk
IGF1ZGlvIHJlbmRlcmluZyBwb2xpY3kgYW5kIHByb2JlIHBsYXRmb3JtIGZvciBhIHdvcmtpbmcg
YXVkaW8gb3V0cHV0IGRldmljZSBvbmx5CisgICAgICAgIHdoZW4gdGhlIFdlYktpdCBjdXN0b20g
YXVkaW8gc2luayBoYXNuJ3QgYmVlbiBzZWxlY3RlZC4gVGhpcyBpcyBuZWVkZWQgb25seSBmb3Ig
dGhlCisgICAgICAgIGF1dG9hdWRpb3NpbmsgY2FzZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpjb25maWd1cmVBdWRpb0Jpbik6
IEluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgc2luaywKKyAgICAgICAgZW1iZWQgdGhlIG9uZSBw
cm92aWRlZCBieSB0aGUgcGxheWVyIGludG8gdGhlIGF1ZGlvIGJpbi4gVGhlIHJlc3VsdGluZyBi
aW4gYmVjb21lcyB0aGUKKyAgICAgICAgcGxheWVyIGF1ZGlvIHNpbmsgYW5kIGl0J3MgYWJsZSB0
byByZW5kZXIgYm90aCB0byB0aGUgV2ViQXVkaW8gcHJvdmlkZXIgYW5kIHRoZSB1c3VhbCBzaW5r
LCBhcyBiZWZvcmUuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291
cmNlUHJvdmlkZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
R1N0cmVhbWVyQXVkaW9NaXhlcjo6aXNBbGxvd2VkKTogVGhlIG1peGVyIHJlcXVpcmVzIGEgcmVj
ZW50IEdTdHJlYW1lciB2ZXJzaW9uIGFuZAorICAgICAgICB0aGUgaW50ZXIgcGx1Z2luIChzaGlw
cGVkIGluIGdzdC1wbHVnaW5zLWJhZCB1bnRpbCB2ZXJzaW9uIDEuMjAgYXQgbGVhc3QpLgorICAg
ICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6c2luZ2xldG9uKTogRW50cnkgcG9p
bnQgZm9yIHRoZSBtaXhlci4gVGhpcyBpcyB3aGVyZSB0aGUKKyAgICAgICAgc2luZ2xldG9uIGlz
IGNyZWF0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb01peGVyOjpHU3RyZWFt
ZXJBdWRpb01peGVyKTogQ29uZmlndXJlIHRoZSBzdGFuZGFsb25lIG1peGVyCisgICAgICAgIHBp
cGVsaW5lLgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6fkdTdHJlYW1l
ckF1ZGlvTWl4ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6ZW5z
dXJlU3RhdGUpOiBMYXppbHkgc3RhcnQvc3RvcCB0aGUgbWl4ZXIsIGRlcGVuZGluZyBvbiB0aGUK
KyAgICAgICAgbnVtYmVyIG9mIGluY29taW5nIHN0cmVhbXMuIFRoZSBwaXBlbGluZSBzdGFydHMg
d2hlbiB0aGUgZmlyc3QgaW5jb21pbmcgc3RyZWFtIGlzIGNvbm5lY3RlZCwKKyAgICAgICAgYW5k
IHN0b3BzIHdoZW4gdGhlIGxhc3Qgc3RyZWFtIGRpc2FwcGVhcnMuCisgICAgICAgIChXZWJDb3Jl
OjpHU3RyZWFtZXJBdWRpb01peGVyOjpyZWdpc3RlclByb2R1Y2VyKTogQ2xpZW50IHBpcGVsaW5l
cyByZXF1aXJlIGFuIGludGVyYXVkaW9zaW5rLCB0aGV5CisgICAgICAgIHdpbGwgcmVuZGVyIHRv
IHRoYXQgc2luaywgd2hpY2ggaW50ZXJuYWxseSBmb3J3YXJkcyBkYXRhIHRvIGEgdHdpbiBpbnRl
cmF1ZGlvc3JjIGVsZW1lbnQsCisgICAgICAgIGNvbm5lY3RlZCB0byB0aGUgYXVkaW9taXhlci4K
KyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvTWl4ZXI6OnVucmVnaXN0ZXJQcm9kdWNl
cik6IEdldCByaWQgb2YgYW4gaW50ZXJhdWRpb3NpbmsgYW5kIGl0cyBpbnRlcmF1ZGlvc3JjLgor
ICAgICAgICBUaGlzIGlzIGNhbGxlZCBieSB0aGUgV2ViS2l0IGF1ZGlvIHNpbmsgd2hlbiB0aGUg
ZWxlbWVudCBpcyBiZWluZyBkaXNwb3NlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRzKTogUmVnaXN0
ZXIgbmV3IGF1ZGlvIHNpbmsgZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRm
b3JtQXVkaW9TaW5rKTogTmV3IHV0aWxpdHkgZnVuY3Rpb24gdG8gY3JlYXRlIGFuIGF1ZGlvIHNp
bmsgYmFzZWQgb24KKyAgICAgICAgdGhlIGRlc2lyZWQgYW5kIGltcGxpZWQgcnVudGltZSByZW5k
ZXJpbmcgcG9saWN5LgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUdTdHJlYW1lckFuZFJl
Z2lzdGVyV2ViS2l0RWxlbWVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1VuaXF1ZVB0ckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
c2Vlayk6IERyaXZlLWJ5IGNsZWFuLXVwLCBubyBuZWVkIHRvIGNyZWF0ZSB0aGUgc2VlaworICAg
ICAgICBNZWRpYXRpbWUgYmVmb3JlIHRoZSBlYXJseSByZXR1cm4gY2hlY2tpbmcgdGhpcyBpcyBh
IGxpdmUgc3RyZWFtLgorICAgICAgICAoV2ViQ29yZTo6c2V0U3luY09uQ2xvY2spOiBGaXh1cCBj
b2RlIHN0eWxlIGluIHRoaXMgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmspOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NpbmsgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0
cmVhbWVyLmNwcDogQWRkZWQuIFRoaXMgc2luayBjYW4gZWl0aGVyCisgICAgICAgIGZvcndhcmQg
aW5jb21pbmcgc2FtcGxlcyB0byB0aGUgc2hhcmVkIGF1ZGlvbWl4ZXIgcnVubmluZyBpbiBpdHMg
b3duIHBpcGVsaW5lLCBvciBmb3J3YXJkCisgICAgICAgIHNhbXBsZXMgdG8gdGhlIFVJUHJvY2Vz
cyB1c2luZyB0aGUgV1BFQmFja2VuZC1GRE8gYXVkaW8gZXh0ZW5zaW9uLgorICAgICAgICAoQXVk
aW9QYWNrZXRIb2xkZXI6OkF1ZGlvUGFja2V0SG9sZGVyKTogV3JhcHBlciBhcm91bmQgYXVkaW8g
YnVmZmVycywgaW4gY2hhcmdlIG9mIGNyZWF0aW5nCisgICAgICAgIHRoZSBjb3JyZXNwb25kaW5n
IG1lbWZkIGRlc2NyaXB0b3IgYW5kIGFsc28ga2VlcGluZyB0cmFjayBvZiB0aGUgY29ycmVzcG9u
ZGluZworICAgICAgICB3cGVfYXVkaW9fcGFja2V0X2V4cG9ydC4KKyAgICAgICAgKEF1ZGlvUGFj
a2V0SG9sZGVyOjp+QXVkaW9QYWNrZXRIb2xkZXIpOgorICAgICAgICAoQXVkaW9QYWNrZXRIb2xk
ZXI6Om1hcCk6IENyZWF0ZSB0aGUgbWVtZmQgZGVzY3JpcHRvciBhbmQgcmV0dXJuIGl0IGFsb25n
IHdpdGggdGhlIGJ1ZmZlciBzaXplLgorICAgICAgICAod2ViS2l0QXVkaW9TaW5rSGFuZGxlU2Ft
cGxlKTogRm9yd2FyZCBpbmNvbWluZyBzYW1wbGVzIHVzaW5nIHRoZSBXUEVCYWNrZW5kLUZETyBh
dWRpbworICAgICAgICBleHRlbnNpb24uIFRoZSB3cGVfYXVkaW9fc291cmNlIHN0YXJ0IGlzIHN5
bmNocm9uaXplZCB3aXRoIHRoZSBidWZmZXIgZmxvdy4KKyAgICAgICAgKHdlYktpdEF1ZGlvU2lu
a0NvbmZpZ3VyZSk6IFdoZW4gaW50ZXJuYWwgbWl4aW5nIGhhcyBiZWVuIHJlcXVlc3RlZCwgY3Jl
YXRlIGFuCisgICAgICAgIGludGVyYXVkaW9zaW5rIHRvIHdoaWNoIHNhbXBsZXMgd2lsbCBiZSBz
ZW50LiBJbnRlcm5hbGx5IHRoZSBpbnRlcmF1ZGlvc2luayB3aWxsIGZvcndhcmQKKyAgICAgICAg
ZGF0YSB0byBpdHMgaW50ZXJhdWRpb3NyYyB3aGljaCBpcyBjb25uZWN0ZWQgdG8gdGhlIGF1ZGlv
bWl4ZXIuIE90aGVyd2lzZSwgaWYgZXh0ZXJuYWwKKyAgICAgICAgcmVuZGVyaW5nIGhhcyBiZWVu
IHJlcXVlc3RlZCwgY3JlYXRlIGFuIGFwcHNpbmsgaW4gb3JkZXIgdG8gcmVsYXkgc2FtcGxlcyB0
byB0aGUgVUlQcm9jZXNzLgorICAgICAgICAod2ViS2l0QXVkaW9TaW5rRGlzcG9zZSk6CisgICAg
ICAgIChnZXRJbnRlcm5hbFZvbHVtZU9iamVjdCk6IFdoZW4gaW50ZXJuYWwgbWl4aW5nIGlzIGVu
YWJsZWQsIHZvbHVtZSBhbmQgbXV0ZSBzdGF0ZXMgYXJlCisgICAgICAgIHRyYWNrZWQgd2l0aGlu
IHRoZSBhdWRpb21peGVyIHNpbmsgcGFkcy4gT3RoZXJ3aXNlIG91ciBhdWRpbyBzaW5rIG1hbmFn
ZXMgdGhpcyB1c2luZyBhIHZvbHVtZQorICAgICAgICBlbGVtZW50LgorICAgICAgICAod2ViS2l0
QXVkaW9TaW5rU2V0UHJvcGVydHkpOiBQcm94eSB2b2x1bWUgYW5kIG11dGUgcHJvcGVydGllcyBm
cm9tIHRoZSBpbnRlcm5hbCB2b2x1bWUgcHJveHkuCisgICAgICAgICh3ZWJLaXRBdWRpb1NpbmtH
ZXRQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAod2ViS2l0QXVkaW9TaW5rQ2hhbmdlU3RhdGUp
OiBLZWVwIHRoZSBXUEUgYXVkaW8gc291cmNlIHN0YXRlIHN5bmNocm9uaXplZCB3aXRoIHRoZSBl
bGVtZW50CisgICAgICAgIHN0YXRlLCBpbiBvcmRlciB0byBrbm93IHdoZW4gdGhlIHBhdXNlL3Jl
c3VtZSBub3RpZmljYXRpb25zIHNob3VsZCBiZSBzZW50IHRvIHRoZSBVSVByb2Nlc3MuCisgICAg
ICAgIFRoaXMgaXMgYWxzbyB3aGVyZSBtYWludGFpbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4g
dGhlIGludGVyYXVkaW9zaW5rIGFuZCB0aGUgYXVkaW9taXhlciwgd2hlbgorICAgICAgICBpdCdz
IGVuYWJsZWQuCisgICAgICAgICh3ZWJraXRfYXVkaW9fc2lua19jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdEF1ZGlvU2lua05ldyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5oOiBBZGRlZC4KKwogMjAyMC0wOS0yNyAg
Um9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIENsZWFuIHVwIHR5cGUgcGFy
YW1ldGVyIGZvciBFdmVudCBpZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0dTdHJlYW1lci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFr
ZQppbmRleCBjMTk0ZDZjYWQ3NTlhNDYyMGU3NzBiZmZjNTJlMGEzOTgyZmNiOWFmLi4wZDcxOGNl
Y2UwYzAwMTM2NGU4NzQ3ODZhMjkxMzRhYzg0YmZjMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vR1N0cmVhbWVyLmNtYWtlCkBAIC05LDYgKzksNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVO
QUJMRV9XRUJfQVVESU8pCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dMVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9Hc3RBbGxvY2F0b3JGYXN0TWFsbG9jLmNwcAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAt
MjMsNiArMjQsNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVh
bWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCiAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBkYjY5YzVi
OTcyYjQ0MjQyMGNhYzY1NmI4NTdhNDc0ZGM3M2EyYjM1Li44ZmRlYjZhMjQyNDg0OWNhYzE3YmJl
OTBhYWU3MTJhODlhMjRkMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIuY3BwCkBAIC0yNiw4ICsyNiw5IEBACiAjaW5jbHVkZSAiQXVkaW9DaGFubmVsLmgiCiAjaW5j
bHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIkF1ZGlvVXRpbGl0aWVzLmgi
Ci0jaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgorI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1v
bi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1NpbmtHU3Ry
ZWFtZXIuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5oIgogI2lu
Y2x1ZGUgPGdzdC9hdWRpby9nc3RhdWRpb2Jhc2VzaW5rLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5o
PgpAQCAtOTIsMjkgKzkzLDMzIEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAicHJvdmlkZXIiLCAmbV9jYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJh
bWVzIiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBudWxscHRyKSk7CiAKLSAg
ICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFr
ZSgiYXV0b2F1ZGlvc2luayIsIG51bGxwdHIpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVk
aW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoKTsKICAgICBtX2F1ZGlvU2lua0F2YWls
YWJsZSA9IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewotICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1dG9hdWRpb3NpbmsgZWxlbWVudCIpOwor
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsg
ZWxlbWVudCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZ19zaWduYWxfY29ubmVj
dChhdWRpb1NpbmsuZ2V0KCksICJjaGlsZC1hZGRlZCIsIEdfQ0FMTEJBQ0soYXV0b0F1ZGlvU2lu
a0NoaWxkQWRkZWRDYWxsYmFjayksIG51bGxwdHIpOwotCi0gICAgLy8gQXV0b2F1ZGlvc2luayBk
b2VzIHRoZSByZWFsIHNpbmsgZGV0ZWN0aW9uIGluIHRoZSBHU1RfU1RBVEVfTlVMTC0+UkVBRFkg
dHJhbnNpdGlvbgotICAgIC8vIHNvIGl0J3MgYmVzdCB0byByb2xsIGl0IHRvIFJFQURZIGFzIHNv
b24gYXMgcG9zc2libGUgdG8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtCi0gICAgLy8g
YXVkaW9zaW5rIHdhcyBsb2FkZWQgY29ycmVjdGx5LgotICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJu
IHN0YXRlQ2hhbmdlUmV0dXJuID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlvU2luay5nZXQo
KSwgR1NUX1NUQVRFX1JFQURZKTsKLSAgICBpZiAoc3RhdGVDaGFuZ2VSZXR1cm4gPT0gR1NUX1NU
QVRFX0NIQU5HRV9GQUlMVVJFKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNoYW5n
ZSBhdXRvYXVkaW9zaW5rIGVsZW1lbnQgc3RhdGUiKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKGF1ZGlvU2luay5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwotICAgICAgICBtX2F1ZGlv
U2lua0F2YWlsYWJsZSA9IGZhbHNlOwotICAgICAgICByZXR1cm47CisgICAgLy8gUHJvYmUgcGxh
dGZvcm0gZWFybHkgb24gZm9yIGEgd29ya2luZyBhdWRpbyBvdXRwdXQgZGV2aWNlLiBUaGlzIGlz
IG5vdCBuZWVkZWQgZm9yIHRoZSBXZWJLaXQKKyAgICAvLyBjdXN0b20gYXVkaW8gc2luayBiZWNh
dXNlIGl0IGRvZXNuJ3QgcmVseSBvbiBhdXRvYXVkaW9zaW5rLgorICAgIGlmICghV0VCS0lUX0lT
X0FVRElPX1NJTksoYXVkaW9TaW5rLmdldCgpKSkgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0
KGF1ZGlvU2luay5nZXQoKSwgImNoaWxkLWFkZGVkIiwgR19DQUxMQkFDSyhhdXRvQXVkaW9TaW5r
Q2hpbGRBZGRlZENhbGxiYWNrKSwgbnVsbHB0cik7CisKKyAgICAgICAgLy8gQXV0b2F1ZGlvc2lu
ayBkb2VzIHRoZSByZWFsIHNpbmsgZGV0ZWN0aW9uIGluIHRoZSBHU1RfU1RBVEVfTlVMTC0+UkVB
RFkgdHJhbnNpdGlvbgorICAgICAgICAvLyBzbyBpdCdzIGJlc3QgdG8gcm9sbCBpdCB0byBSRUFE
WSBhcyBzb29uIGFzIHBvc3NpYmxlIHRvIGVuc3VyZSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybQor
ICAgICAgICAvLyBhdWRpb3Npbmsgd2FzIGxvYWRlZCBjb3JyZWN0bHkuCisgICAgICAgIEdzdFN0
YXRlQ2hhbmdlUmV0dXJuIHN0YXRlQ2hhbmdlUmV0dXJuID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRl
KGF1ZGlvU2luay5nZXQoKSwgR1NUX1NUQVRFX1JFQURZKTsKKyAgICAgICAgaWYgKHN0YXRlQ2hh
bmdlUmV0dXJuID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgeworICAgICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gY2hhbmdlIGF1dG9hdWRpb3NpbmsgZWxlbWVudCBzdGF0ZSIpOwor
ICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlvU2luay5nZXQoKSwgR1NUX1NU
QVRFX05VTEwpOworICAgICAgICAgICAgbV9hdWRpb1NpbmtBdmFpbGFibGUgPSBmYWxzZTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEdzdEVsZW1lbnQqIGF1
ZGlvQ29udmVydCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9jb252ZXJ0IiwgbnVs
bHB0cik7CiAgICAgR3N0RWxlbWVudCogYXVkaW9SZXNhbXBsZSA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfbWFrZSgiYXVkaW9yZXNhbXBsZSIsIG51bGxwdHIpOwotICAgIGdzdF9iaW5fYWRkX21hbnko
R1NUX0JJTihtX3BpcGVsaW5lKSwgd2Via2l0QXVkaW9TcmMsIGF1ZGlvQ29udmVydCwgYXVkaW9S
ZXNhbXBsZSwgYXVkaW9TaW5rLmdldCgpLCBudWxscHRyKTsKKyAgICBnc3RfYmluX2FkZF9tYW55
KEdTVF9CSU5fQ0FTVChtX3BpcGVsaW5lKSwgd2Via2l0QXVkaW9TcmMsIGF1ZGlvQ29udmVydCwg
YXVkaW9SZXNhbXBsZSwgYXVkaW9TaW5rLmdldCgpLCBudWxscHRyKTsKIAogICAgIC8vIExpbmsg
c3JjIHBhZHMgZnJvbSB3ZWJraXRBdWRpb1NyYyB0byBhdWRpb0NvbnZlcnQgISBhdWRpb1Jlc2Ft
cGxlICEgYXV0b2F1ZGlvc2luay4KICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbCh3ZWJr
aXRBdWRpb1NyYywgInNyYyIsIGF1ZGlvQ29udmVydCwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hF
Q0tfTk9USElORyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5j
cHAKaW5kZXggNTRiMzlmNDVhNWJhNzAwZWUwZTliYWExNjUzNmQyMTg4NGVkMTBmOC4uMTVjNDI2
NmIzMTJjMjc4ZmM3NzcwNDI2YjE1NTNhMTMzOTM2NTQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIEF1ZGlvU291
cmNlUHJvdmlkZXJHU3RyZWFtZXI6On5BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKCkKICAg
ICBnX29iamVjdF91bnJlZihtX2Zyb250UmlnaHRBZGFwdGVyKTsKIH0KIAotdm9pZCBBdWRpb1Nv
dXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpjb25maWd1cmVBdWRpb0JpbihHc3RFbGVtZW50KiBhdWRp
b0JpbiwgR3N0RWxlbWVudCogdGVlUHJlZGVjZXNzb3IpCit2b2lkIEF1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXI6OmNvbmZpZ3VyZUF1ZGlvQmluKEdzdEVsZW1lbnQqIGF1ZGlvQmluLCBHc3RF
bGVtZW50KiBhdWRpb1NpbmspCiB7CiAgICAgbV9hdWRpb1NpbmtCaW4gPSBhdWRpb0JpbjsKIApA
QCAtMTUyLDI2ICsxNTIsMTYgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpj
b25maWd1cmVBdWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0JpbiwgR3N0RWwKICAgICBHc3RFbGVt
ZW50KiBhdWRpb1Jlc2FtcGxlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb3Jlc2Ft
cGxlIiwgbnVsbHB0cik7CiAgICAgR3N0RWxlbWVudCogYXVkaW9SZXNhbXBsZTIgPSBnc3RfZWxl
bWVudF9mYWN0b3J5X21ha2UoImF1ZGlvcmVzYW1wbGUiLCBudWxscHRyKTsKICAgICBHc3RFbGVt
ZW50KiB2b2x1bWVFbGVtZW50ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJ2b2x1bWUiLCAi
dm9sdW1lIik7Ci0gICAgR3N0RWxlbWVudCogYXVkaW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9y
eV9tYWtlKCJhdXRvYXVkaW9zaW5rIiwgbnVsbHB0cik7Ci0KLSAgICBnc3RfYmluX2FkZF9tYW55
KEdTVF9CSU4obV9hdWRpb1NpbmtCaW4uZ2V0KCkpLCBhdWRpb1RlZSwgYXVkaW9RdWV1ZSwgYXVk
aW9Db252ZXJ0LCBhdWRpb1Jlc2FtcGxlLCB2b2x1bWVFbGVtZW50LCBhdWRpb0NvbnZlcnQyLCBh
dWRpb1Jlc2FtcGxlMiwgYXVkaW9TaW5rLCBudWxscHRyKTsKLQotICAgIC8vIEluIGNhc2VzIHdo
ZXJlIHRoZSBhdWRpby1zaW5rIG5lZWRzIGVsZW1lbnRzIGJlZm9yZSB0ZWUgKHN1Y2gKLSAgICAv
LyBhcyBzY2FsZXRlbXBvKSB0aGV5IG5lZWQgdG8gYmUgbGlua2VkIHRvIHRlZSB3aGljaCBpbiB0
aGlzIGNhc2UKLSAgICAvLyBkb2Vzbid0IG5lZWQgYSBnaG9zdCBwYWQuIEl0IGlzIGFzc3VtZWQg
dGhhdCB0aGUgdGVlUHJlZGVjZXNzb3IKLSAgICAvLyBjaGFpbiBhbHJlYWR5IGNvbmZpZ3VyZWQg
YSBnaG9zdCBwYWQuCi0gICAgaWYgKHRlZVByZWRlY2Vzc29yKQotICAgICAgICBnc3RfZWxlbWVu
dF9saW5rX3BhZHNfZnVsbCh0ZWVQcmVkZWNlc3NvciwgInNyYyIsIGF1ZGlvVGVlLCAic2luayIs
IEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gQWRk
IGEgZ2hvc3RwYWQgdG8gdGhlIGJpbiBzbyBpdCBjYW4gcHJveHkgdG8gdGVlLgotICAgICAgICBH
UmVmUHRyPEdzdFBhZD4gYXVkaW9UZWVTaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dl
dF9zdGF0aWNfcGFkKGF1ZGlvVGVlLCAic2luayIpKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfYWRk
X3BhZChtX2F1ZGlvU2lua0Jpbi5nZXQoKSwgZ3N0X2dob3N0X3BhZF9uZXcoInNpbmsiLCBhdWRp
b1RlZVNpbmtQYWQuZ2V0KCkpKTsKLSAgICB9CiAKLSAgICAvLyBMaW5rIGEgbmV3IHNyYyBwYWQg
ZnJvbSB0ZWUgdG8gcXVldWUgISBhdWRpb2NvbnZlcnQgIQotICAgIC8vIGF1ZGlvcmVzYW1wbGUg
ISB2b2x1bWUgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEKLSAgICAvLyBhdXRvYXVk
aW9zaW5rLiBUaGUgYXVkaW9yZXNhbXBsZSBhbmQgYXVkaW9jb252ZXJ0IGFyZSBuZWVkZWQgdG8K
LSAgICAvLyBlbnN1cmUgdGhlIGF1ZGlvIHNpbmsgcmVjZWl2ZXMgYnVmZmVycyBpbiB0aGUgY29y
cmVjdCBmb3JtYXQuCisgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOX0NBU1QobV9hdWRpb1Np
bmtCaW4uZ2V0KCkpLCBhdWRpb1RlZSwgYXVkaW9RdWV1ZSwgYXVkaW9Db252ZXJ0LCBhdWRpb1Jl
c2FtcGxlLCB2b2x1bWVFbGVtZW50LCBhdWRpb0NvbnZlcnQyLCBhdWRpb1Jlc2FtcGxlMiwgYXVk
aW9TaW5rLCBudWxscHRyKTsKKworICAgIC8vIEFkZCBhIGdob3N0cGFkIHRvIHRoZSBiaW4gc28g
aXQgY2FuIHByb3h5IHRvIHRlZS4KKyAgICBhdXRvIGF1ZGlvVGVlU2lua1BhZCA9IGFkb3B0R1Jl
Zihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChhdWRpb1RlZSwgInNpbmsiKSk7CisgICAgZ3N0
X2VsZW1lbnRfYWRkX3BhZChtX2F1ZGlvU2lua0Jpbi5nZXQoKSwgZ3N0X2dob3N0X3BhZF9uZXco
InNpbmsiLCBhdWRpb1RlZVNpbmtQYWQuZ2V0KCkpKTsKKworICAgIC8vIExpbmsgYSBuZXcgc3Jj
IHBhZCBmcm9tIHRlZSB0byBxdWV1ZSAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISB2
b2x1bWUgISBhdWRpb2NvbnZlcnQgIQorICAgIC8vIGF1ZGlvcmVzYW1wbGUgISBhdWRpb3Npbmsu
IFRoZSBhdWRpb3Jlc2FtcGxlIGFuZCBhdWRpb2NvbnZlcnQgYXJlIG5lZWRlZCB0byBlbnN1cmUg
dGhlIGF1ZGlvCisgICAgLy8gc2luayByZWNlaXZlcyBidWZmZXJzIGluIHRoZSBjb3JyZWN0IGZv
cm1hdC4KICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChhdWRpb1RlZSwgInNyY18ldSIs
IGF1ZGlvUXVldWUsICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwogICAgIGdz
dF9lbGVtZW50X2xpbmtfcGFkc19mdWxsKGF1ZGlvUXVldWUsICJzcmMiLCBhdWRpb0NvbnZlcnQs
ICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwogICAgIGdzdF9lbGVtZW50X2xp
bmtfcGFkc19mdWxsKGF1ZGlvQ29udmVydCwgInNyYyIsIGF1ZGlvUmVzYW1wbGUsICJzaW5rIiwg
R1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3Zp
ZGVyR1N0cmVhbWVyLmgKaW5kZXggZDZiYTIyYTMxMWU1OWY3M2E4MTcyOGVkZjQ0NTE3ZGFkZDUz
ZWZiMC4uZTRmNjUxMmYxMmEwM2YxMzljNDM3ZGMyMGQ3MTcyNGIxZDRiMjM3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJv
dmlkZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1
YmxpYzoKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKCk7CiAgICAgfkF1ZGlvU291
cmNlUHJvdmlkZXJHU3RyZWFtZXIoKTsKIAotICAgIHZvaWQgY29uZmlndXJlQXVkaW9CaW4oR3N0
RWxlbWVudCogYXVkaW9CaW4sIEdzdEVsZW1lbnQqIHRlZVByZWRlY2Vzc29yKTsKKyAgICB2b2lk
IGNvbmZpZ3VyZUF1ZGlvQmluKEdzdEVsZW1lbnQqIGF1ZGlvQmluLCBHc3RFbGVtZW50KiBhdWRp
b1NpbmspOwogCiAgICAgdm9pZCBwcm92aWRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENsaWVudChBdWRpb1NvdXJjZVByb3Zp
ZGVyQ2xpZW50Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzA5MDQwN2M3NTYwZjU2MzAyZmNkMDRjODc2ZmI3MzZjZmQzYWFjNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJBdWRpb01peGVyLmNwcApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdT
dHJlYW1lckF1ZGlvTWl4ZXIuaCIKKworI2lmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlICJH
U3RyZWFtZXJDb21tb24uaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDKHdlYmtpdF9tZWRp
YV9nc3RfYXVkaW9fbWl4ZXJfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0
X21lZGlhX2dzdF9hdWRpb19taXhlcl9kZWJ1ZworCitib29sIEdTdHJlYW1lckF1ZGlvTWl4ZXI6
OmlzQXZhaWxhYmxlKCkKK3sKKyAgICByZXR1cm4gd2Via2l0R3N0Q2hlY2tWZXJzaW9uKDEsIDE4
LCAwKSAmJiBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZSgiaW50ZXIiKSAmJiBpc0dTdHJlYW1l
clBsdWdpbkF2YWlsYWJsZSgiYXVkaW9taXhlciIpOworfQorCitHU3RyZWFtZXJBdWRpb01peGVy
JiBHU3RyZWFtZXJBdWRpb01peGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxHU3RyZWFtZXJBdWRpb01peGVyPiBzaGFyZWRJbnN0YW5jZTsKKyAgICByZXR1cm4g
c2hhcmVkSW5zdGFuY2U7Cit9CisKK0dTdHJlYW1lckF1ZGlvTWl4ZXI6OkdTdHJlYW1lckF1ZGlv
TWl4ZXIoKQoreworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtpdF9tZWRpYV9nc3Rf
YXVkaW9fbWl4ZXJfZGVidWcsICJ3ZWJraXRhdWRpb21peGVyIiwgMCwgIldlYktpdCBHU3RyZWFt
ZXIgYXVkaW8gbWl4ZXIiKTsKKyAgICBtX3BpcGVsaW5lID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKCJwaXBlbGluZSIsICJ3ZWJraXRhdWRpb21peGVyIik7CisgICAgY29ubmVjdFNpbXBsZUJ1
c01lc3NhZ2VDYWxsYmFjayhtX3BpcGVsaW5lLmdldCgpKTsKKworICAgIG1fbWl4ZXIgPSBnc3Rf
ZWxlbWVudF9mYWN0b3J5X21ha2UoImF1ZGlvbWl4ZXIiLCBudWxscHRyKTsKKyAgICBHc3RFbGVt
ZW50KiBhdWRpb1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1dG9hdWRpb3Npbmsi
LCBudWxscHRyKTsKKworICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTl9DQVNUKG1fcGlwZWxp
bmUuZ2V0KCkpLCBtX21peGVyLmdldCgpLCBhdWRpb1NpbmssIG51bGxwdHIpOworICAgIGdzdF9l
bGVtZW50X2xpbmsobV9taXhlci5nZXQoKSwgYXVkaW9TaW5rKTsKKyAgICBnc3RfZWxlbWVudF9z
ZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1JFQURZKTsKK30KKwordm9pZCBH
U3RyZWFtZXJBdWRpb01peGVyOjplbnN1cmVTdGF0ZShHc3RTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5n
ZSkKK3sKKyNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAxNCwgMCkKKyAgICBHU1RfREVCVUdfT0JK
RUNUKG1fcGlwZWxpbmUuZ2V0KCksICJIYW5kbGluZyAlcyB0cmFuc2l0aW9uICgldSBtaXhlciBw
YWRzKSIsIGdzdF9zdGF0ZV9jaGFuZ2VfZ2V0X25hbWUoc3RhdGVDaGFuZ2UpLCBtX21peGVyLT5u
dW1zaW5rcGFkcyk7CisjZW5kaWYKKyAgICBzd2l0Y2ggKHN0YXRlQ2hhbmdlKSB7CisgICAgY2Fz
ZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BBVVNFRDoKKyAgICAgICAgZ3N0X2VsZW1lbnRf
c2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QQVVTRUQpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1BMQVlJTkc6CisgICAg
ICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUExB
WUlORyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QTEFZSU5H
X1RPX1BBVVNFRDoKKyAgICAgICAgaWYgKG1fbWl4ZXItPm51bXNpbmtwYWRzID09IDEpCisgICAg
ICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRF
X1BBVVNFRCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVT
RURfVE9fUkVBRFk6CisgICAgICAgIGlmIChtX21peGVyLT5udW1zaW5rcGFkcyA9PSAxKQorICAg
ICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFU
RV9SRUFEWSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFE
WV9UT19OVUxMOgorICAgICAgICBpZiAobV9taXhlci0+bnVtc2lua3BhZHMgPT0gMSkKKyAgICAg
ICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVf
TlVMTCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKworR1JlZlB0cjxHc3RQYWQ+IEdTdHJlYW1lckF1ZGlvTWl4ZXI6OnJlZ2lzdGVyUHJv
ZHVjZXIoR3N0RWxlbWVudCogaW50ZXJhdWRpb1NpbmspCit7CisgICAgR3N0RWxlbWVudCogc3Jj
ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJpbnRlcmF1ZGlvc3JjIiwgbnVsbHB0cik7Cisg
ICAgZ19vYmplY3Rfc2V0KHNyYywgImNoYW5uZWwiLCBHU1RfRUxFTUVOVF9OQU1FKGludGVyYXVk
aW9TaW5rKSwgbnVsbHB0cik7CisgICAgZ19vYmplY3Rfc2V0KGludGVyYXVkaW9TaW5rLCAiY2hh
bm5lbCIsIEdTVF9FTEVNRU5UX05BTUUoaW50ZXJhdWRpb1NpbmspLCBudWxscHRyKTsKKworICAg
IEdzdEVsZW1lbnQqIGF1ZGlvUmVzYW1wbGUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1
ZGlvcmVzYW1wbGUiLCBudWxscHRyKTsKKyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU5fQ0FT
VChtX3BpcGVsaW5lLmdldCgpKSwgc3JjLCBhdWRpb1Jlc2FtcGxlLCBudWxscHRyKTsKKyAgICBn
c3RfZWxlbWVudF9saW5rKHNyYywgYXVkaW9SZXNhbXBsZSk7CisKKyAgICBib29sIHNob3VsZFN0
YXJ0ID0gIW1fbWl4ZXItPm51bXNpbmtwYWRzOworCisgICAgYXV0byBtaXhlclBhZCA9IGFkb3B0
R1JlZihnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQobV9taXhlci5nZXQoKSwgInNpbmtfJXUi
KSk7CisgICAgYXV0byBzcmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19w
YWQoYXVkaW9SZXNhbXBsZSwgInNyYyIpKTsKKyAgICBnc3RfcGFkX2xpbmsoc3JjUGFkLmdldCgp
LCBtaXhlclBhZC5nZXQoKSk7CisKKyAgICBpZiAoc2hvdWxkU3RhcnQpCisgICAgICAgIGdzdF9l
bGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUkVBRFkpOworICAg
IGVsc2UgeworICAgICAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KHNyYyk7
CisgICAgICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQoYXVkaW9SZXNhbXBs
ZSk7CisgICAgfQorCisgICAgR1NUX0RFQlVHX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAiUmVn
aXN0ZXJlZCBhdWRpbyBwcm9kdWNlciAlIiBHU1RfUFRSX0ZPUk1BVCwgbWl4ZXJQYWQuZ2V0KCkp
OworICAgIEdTVF9ERUJVR19CSU5fVE9fRE9UX0ZJTEVfV0lUSF9UUyhHU1RfQklOX0NBU1QobV9w
aXBlbGluZS5nZXQoKSksIEdTVF9ERUJVR19HUkFQSF9TSE9XX0FMTCwgImF1ZGlvLW1peGVyLWFm
dGVyLXByb2R1Y2VyLXJlZ2lzdHJhdGlvbiIpOworICAgIHJldHVybiBtaXhlclBhZDsKK30KKwor
dm9pZCBHU3RyZWFtZXJBdWRpb01peGVyOjp1bnJlZ2lzdGVyUHJvZHVjZXIoY29uc3QgR1JlZlB0
cjxHc3RQYWQ+JiBtaXhlclBhZCkKK3sKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fcGlwZWxpbmUu
Z2V0KCksICJVbnJlZ2lzdGVyaW5nIGF1ZGlvIHByb2R1Y2VyICUiIEdTVF9QVFJfRk9STUFULCBt
aXhlclBhZC5nZXQoKSk7CisKKyAgICBhdXRvIHBlZXIgPSBhZG9wdEdSZWYoZ3N0X3BhZF9nZXRf
cGVlcihtaXhlclBhZC5nZXQoKSkpOworICAgIGF1dG8gYXVkaW9SZXNhbXBsZSA9IGFkb3B0R1Jl
Zihnc3RfcGFkX2dldF9wYXJlbnRfZWxlbWVudChwZWVyLmdldCgpKSk7CisgICAgYXV0byByZXNh
bXBsZVBlZXJQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoYXVkaW9S
ZXNhbXBsZS5nZXQoKSwgInNpbmsiKSk7CisgICAgYXV0byByZXNhbXBsZVBlZXIgPSBhZG9wdEdS
ZWYoZ3N0X3BhZF9nZXRfcGVlcihyZXNhbXBsZVBlZXJQYWQuZ2V0KCkpKTsKKyAgICBhdXRvIGlu
dGVyYXVkaW9TcmMgPSBhZG9wdEdSZWYoZ3N0X3BhZF9nZXRfcGFyZW50X2VsZW1lbnQocmVzYW1w
bGVQZWVyLmdldCgpKSk7CisgICAgR1NUX0xPR19PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgImlu
dGVyYXVkaW9zcmM6ICUiIEdTVF9QVFJfRk9STUFULCBpbnRlcmF1ZGlvU3JjLmdldCgpKTsKKwor
ICAgIGdzdF9lbGVtZW50X3NldF9sb2NrZWRfc3RhdGUoaW50ZXJhdWRpb1NyYy5nZXQoKSwgdHJ1
ZSk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGludGVyYXVkaW9TcmMuZ2V0KCksIEdTVF9T
VEFURV9OVUxMKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoYXVkaW9SZXNhbXBsZS5nZXQo
KSwgR1NUX1NUQVRFX05VTEwpOworCisgICAgZ3N0X3BhZF91bmxpbmsocGVlci5nZXQoKSwgbWl4
ZXJQYWQuZ2V0KCkpOworICAgIGdzdF9lbGVtZW50X3VubGluayhpbnRlcmF1ZGlvU3JjLmdldCgp
LCBhdWRpb1Jlc2FtcGxlLmdldCgpKTsKKworICAgIGdzdF9lbGVtZW50X3JlbGVhc2VfcmVxdWVz
dF9wYWQobV9taXhlci5nZXQoKSwgbWl4ZXJQYWQuZ2V0KCkpOworCisgICAgZ3N0X2Jpbl9yZW1v
dmVfbWFueShHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIGludGVyYXVkaW9TcmMuZ2V0
KCksIGF1ZGlvUmVzYW1wbGUuZ2V0KCksIG51bGxwdHIpOworCisgICAgaWYgKCFtX21peGVyLT5u
dW1zaW5rcGFkcykKKyAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0
KCksIEdTVF9TVEFURV9OVUxMKTsKKworICAgIEdTVF9ERUJVR19CSU5fVE9fRE9UX0ZJTEVfV0lU
SF9UUyhHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIEdTVF9ERUJVR19HUkFQSF9TSE9X
X0FMTCwgImF1ZGlvLW1peGVyLWFmdGVyLXByb2R1Y2VyLXVucmVnaXN0cmF0aW9uIik7Cit9CisK
K30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb01peGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFl
MjE2ZmUzMDE3NjNmYzFhODQxM2Q4MzllODNiMTY5ZTcyZTMzOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRp
b01peGVyLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2Fs
aWEgUy5MCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiR1Jl
ZlB0ckdTdHJlYW1lci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgR1N0cmVhbWVyQXVkaW9NaXhlciB7CisgICAgZnJpZW5kIE5ldmVy
RGVzdHJveWVkPEdTdHJlYW1lckF1ZGlvTWl4ZXI+OworcHVibGljOgorICAgIHN0YXRpYyBib29s
IGlzQXZhaWxhYmxlKCk7CisgICAgc3RhdGljIEdTdHJlYW1lckF1ZGlvTWl4ZXImIHNpbmdsZXRv
bigpOworCisgICAgdm9pZCBlbnN1cmVTdGF0ZShHc3RTdGF0ZUNoYW5nZSk7CisgICAgR1JlZlB0
cjxHc3RQYWQ+IHJlZ2lzdGVyUHJvZHVjZXIoR3N0RWxlbWVudCopOworICAgIHZvaWQgdW5yZWdp
c3RlclByb2R1Y2VyKGNvbnN0IEdSZWZQdHI8R3N0UGFkPiYpOworCitwcml2YXRlOgorICAgIEdT
dHJlYW1lckF1ZGlvTWl4ZXIoKTsKKworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9waXBlbGlu
ZTsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fbWl4ZXI7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmNwcAppbmRleCBmMmRhM2ZiMzQ1YWVmYTg3MWY1MTI1OWNmMTI1ZDA1MjFlNzY1YjYxLi43
YWQxYzJiYTgzNmUwYjVlYTczYmIxMTEwMWRkN2M4NzZjMmVmNGI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcApAQCAtMjQsOSArMjQsMTEgQEAKICNpZiBVU0UoR1NUUkVBTUVSKQogCiAj
aW5jbHVkZSAiR0xWaWRlb1NpbmtHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJBdWRp
b01peGVyLmgiCiAjaW5jbHVkZSAiR3N0QWxsb2NhdG9yRmFzdE1hbGxvYy5oIgogI2luY2x1ZGUg
IkludFNpemUuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJLaXRB
dWRpb1NpbmtHU3RyZWFtZXIuaCIKICNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8taW5mby5oPgog
I2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxtdXRleD4KQEAgLTMxOCw2ICszMjAsOCBA
QCBib29sIGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRzKCkKICAg
ICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIoMCwgIndlYmtpdGdsdmlkZW9zaW5rIiwgR1NUX1JB
TktfUFJJTUFSWSwgV0VCS0lUX1RZUEVfR0xfVklERU9fU0lOSyk7CiAjZW5kaWYKICNlbmRpZgor
ICAgICAgICAvLyBXZSBkb24ndCB3YW50IGF1dG9hdWRpb3NpbmsgdG8gYXV0b3BsdWcgb3VyIHNp
bmsuCisgICAgICAgIGdzdF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXRhdWRpb3NpbmsiLCBH
U1RfUkFOS19OT05FLCBXRUJLSVRfVFlQRV9BVURJT19TSU5LKTsKIAogICAgICAgICAvLyBJZiB0
aGUgRkRLLUFBQyBkZWNvZGVyIGlzIGF2YWlsYWJsZSwgcHJvbW90ZSBpdCBhbmQgZG93bnJhbmsg
dGhlCiAgICAgICAgIC8vIGxpYmF2IEFBQyBkZWNvZGVycywgZHVlIHRvIHRoZWlyIGJyb2tlbiBM
QyBzdXBwb3J0LCBhcyByZXBvcnRlZCBpbjoKQEAgLTQyNiw2ICs0MzAsMjYgQEAgYm9vbCBpc0dT
dHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQogICAgIHJldHVybiBwbHVn
aW47CiB9CiAKK0dzdEVsZW1lbnQqIGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKCkKK3sKKyAgICBH
c3RFbGVtZW50KiBhdWRpb1NpbmsgPSB3ZWJraXRBdWRpb1NpbmtOZXcoKTsKKyAgICBpZiAoIWF1
ZGlvU2luaykgeworICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBXZWJLaXQgYXVkaW8gc2luayBj
b25maWd1cmF0aW9uIGZhaWxlZC4gSXQgY2FuIGhhcHBlbiBmb3IgdGhlIGZvbGxvd2luZyByZWFz
b25zOgorICAgICAgICAvLyAtIGF1ZGlvIG1peGluZyB3YXMgbm90IHJlcXVlc3RlZCB1c2luZyB0
aGUgV0VCS0lUX0dTVF9FTkFCTEVfQVVESU9fTUlYRVIKKyAgICAgICAgLy8gLSBhdWRpbyBtaXhp
bmcgd2FzIHJlcXVlc3RlZCB1c2luZyB0aGUgV0VCS0lUX0dTVF9FTkFCTEVfQVVESU9fTUlYRVIg
YnV0IHRoZSBhdWRpbyBtaXhlcgorICAgICAgICAvLyAgIHJ1bnRpbWUgcmVxdWlyZW1lbnRzIGFy
ZSBub3QgZnVsbGZpbGxlZC4KKyAgICAgICAgLy8gLSB0aGUgc2luayB3YXMgY3JlYXRlZCBmb3Ig
dGhlIFdQRSBwb3J0LCBhdWRpbyBtaXhpbmcgd2FzIG5vdCByZXF1ZXN0ZWQgYW5kIG5vCisgICAg
ICAgIC8vICAgV1BFQmFja2VuZC1GRE8gYXVkaW8gcmVjZWl2ZXIgaGFzIGJlZW4gcmVnaXN0ZXJl
ZCBhdCBydW50aW1lLgorICAgICAgICBhdWRpb1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21h
a2UoImF1dG9hdWRpb3NpbmsiLCBudWxscHRyKTsKKyAgICB9CisgICAgaWYgKCFhdWRpb1Npbmsp
IHsKKyAgICAgICAgR1NUX1dBUk5JTkcoIkdTdHJlYW1lcidzIGF1dG9hdWRpb3Npbmsgbm90IGZv
dW5kLiBQbGVhc2UgY2hlY2sgeW91ciBnc3QtcGx1Z2lucy1nb29kIGluc3RhbGxhdGlvbiIpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gYXVkaW9TaW5rOwor
fQorCiB9CiAKICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5o
CmluZGV4IDFmZGExMDhlMDk2NGEzYWNmYjFmZjJlNjE3MDFiM2Y3ZDhjZjkwNzMuLjI5NTMwYjU2
NzhkZWQ2YzI3YTY4MzVhNjYxOTkzMjVkMTc0ZThlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmgKQEAgLTI5Miw2ICsyOTIsOCBAQCBlbnVtIGNsYXNzIEdzdFZpZGVvRGVjb2RlclBsYXRmb3Jt
IHsgSW14VlBVLCBWaWRlbzRMaW51eCwgT3Blbk1BWCB9OwogCiBib29sIGlzR1N0cmVhbWVyUGx1
Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpOwogCitHc3RFbGVtZW50KiBjcmVhdGVQbGF0
Zm9ybUF1ZGlvU2luaygpOworCiB9CiAKICNpZm5kZWYgR1NUX0JVRkZFUl9EVFNfT1JfUFRTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1Vu
aXF1ZVB0ckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dVbmlxdWVQdHJHU3RyZWFtZXIuaAppbmRleCBhYTA3NzQ4ZGQ3NTY1YjBhNjgyN2Yz
M2YzODMyYzVkYWNiZjRlNWQwLi5iZjc0ZWNmMDJjYzIyZjYwNmViY2I5ZmU4NWMwMzRiMjZjNDA2
NDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1VuaXF1ZVB0ckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HVW5pcXVlUHRyR1N0cmVhbWVyLmgKQEAgLTM0LDYgKzM0LDEwIEBA
CiAjaW5jbHVkZSA8d3BlL2V4dGVuc2lvbnMvdmlkZW8tcGxhbmUtZGlzcGxheS1kbWFidWYuaD4K
ICNlbmRpZgogCisjaWYgZGVmaW5lZChCVUlMRElOR19XZWJDb3JlKSAmJiBQTEFURk9STShXUEUp
ICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04pCisjaW5jbHVkZSA8d3BlL2V4
dGVuc2lvbnMvYXVkaW8uaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogV1RGX0RFRklO
RV9HUFRSX0RFTEVURVIoR3N0U3RydWN0dXJlLCBnc3Rfc3RydWN0dXJlX2ZyZWUpCkBAIC00OSw2
ICs1Myw5IEBAIFdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKEdzdEF1ZGlvQ29udmVydGVyLCBnc3Rf
YXVkaW9fY29udmVydGVyX2ZyZWUpCiBXVEZfREVGSU5FX0dQVFJfREVMRVRFUihzdHJ1Y3Qgd3Bl
X3ZpZGVvX3BsYW5lX2Rpc3BsYXlfZG1hYnVmX3NvdXJjZSwgd3BlX3ZpZGVvX3BsYW5lX2Rpc3Bs
YXlfZG1hYnVmX3NvdXJjZV9kZXN0cm95KQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEJVSUxESU5H
X1dlYkNvcmUpICYmIFBMQVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VY
VEVOU0lPTikKK1dURl9ERUZJTkVfR1BUUl9ERUxFVEVSKHN0cnVjdCB3cGVfYXVkaW9fc291cmNl
LCB3cGVfYXVkaW9fc291cmNlX2Rlc3Ryb3kpCisjZW5kaWYKIH0KIAogI2VuZGlmIC8vIFVTRShH
U1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IGUyYmU4OWFiZGMwMjVkNzU0Yzg4OWVhM2VmZjQzMDZjMTg2ZjhkZTEuLjNiZjJl
MTNkZjkyYWY3ZTRiN2M3NzMzMDRiMmMxZDA4NmExZmI4OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYg
RU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyQXVkaW9NaXhlci5oIgogI2luY2x1ZGUgIkdTdHJl
YW1lckNvbW1vbi5oIgogI2luY2x1ZGUgIkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5oIgogI2lu
Y2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgpAQCAtNDMsNiArNDQsNyBAQAogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlZpZGVv
U2lua0dTdHJlYW1lci5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5oIgog
I2luY2x1ZGUgIldlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkF1ZGlvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmgiCkBAIC0yMzYsMTAgKzIzOCw5IEBAIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcigpCiAgICAgaWYgKFdFQktJ
VF9JU19XRUJfU1JDKG1fc291cmNlLmdldCgpKSAmJiBHU1RfT0JKRUNUX1BBUkVOVChtX3NvdXJj
ZS5nZXQoKSkpCiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhH
U1RfRUxFTUVOVF9QQVJFTlQobV9zb3VyY2UuZ2V0KCkpLCByZWludGVycHJldF9jYXN0PGdwb2lu
dGVyPih1cmlEZWNvZGVCaW5FbGVtZW50QWRkZWRDYWxsYmFjayksIHRoaXMpOwogCi0gICAgaWYg
KG1fYXV0b0F1ZGlvU2luaykgewotICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0
X2J5X2Z1bmMoR19PQkpFQ1QobV9hdXRvQXVkaW9TaW5rLmdldCgpKSwKLSAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHNldEF1ZGlvU3RyZWFtUHJvcGVydGllc0NhbGxiYWNr
KSwgdGhpcyk7Ci0gICAgfQorICAgIGF1dG8qIHNpbmsgPSBhdWRpb1NpbmsoKTsKKyAgICBpZiAo
c2luayAmJiAhV0VCS0lUX0lTX0FVRElPX1NJTksoc2luaykpCisgICAgICAgIGdfc2lnbmFsX2hh
bmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhHX09CSkVDVChzaW5rKSwgcmVpbnRlcnByZXRfY2Fz
dDxncG9pbnRlcj4oc2V0QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzQ2FsbGJhY2spLCB0aGlzKTsKIAog
ICAgIG1fcmVhZHlUaW1lckhhbmRsZXIuc3RvcCgpOwogICAgIGZvciAoYXV0byYgbWlzc2luZ1Bs
dWdpbkNhbGxiYWNrIDogbV9taXNzaW5nUGx1Z2luQ2FsbGJhY2tzKSB7CkBAIC01MTgsMTcgKzUx
OSwxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2Vlayhjb25zdCBNZWRp
YVRpbWUmIG1lZGlhVGltZSkKIAogICAgIC8vIEF2b2lkIHVzZWxlc3Mgc2Vla2luZy4KICAgICBp
ZiAobWVkaWFUaW1lID09IGN1cnJlbnRNZWRpYVRpbWUoKSkgewotICAgICAgICBHU1RfREVCVUdf
T0JKRUNUKHBpcGVsaW5lKCksICJbU2Vla10gc2VlayB0byBFT1MgcG9zaXRpb24gdW5oYW5kbGVk
Iik7CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIltTZWVrXSBBbHJlYWR5
IGF0IHJlcXVlc3RlZCBwb3NpdGlvbi4gQWJvcnRpbmcuIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBNZWRpYVRpbWUgdGltZSA9IHN0ZDo6bWluKG1lZGlhVGltZSwgZHVyYXRpb25N
ZWRpYVRpbWUoKSk7Ci0KICAgICBpZiAobV9pc0xpdmVTdHJlYW0pIHsKICAgICAgICAgR1NUX0RF
QlVHX09CSkVDVChwaXBlbGluZSgpLCAiW1NlZWtdIExpdmUgc3RyZWFtIHNlZWsgdW5oYW5kbGVk
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBNZWRpYVRpbWUgdGltZSA9IHN0ZDo6
bWluKG1lZGlhVGltZSwgZHVyYXRpb25NZWRpYVRpbWUoKSk7CiAgICAgR1NUX0lORk9fT0JKRUNU
KHBpcGVsaW5lKCksICJbU2Vla10gc2Vla2luZyB0byAlcyIsIHRvU3RyaW5nKHRpbWUpLnV0Zjgo
KS5kYXRhKCkpOwogCiAgICAgaWYgKG1faXNTZWVraW5nKSB7CkBAIC0xMDA0LDE3ICsxMDA0LDE2
IEBAIHN0YXRpYyB2b2lkIHNldFN5bmNPbkNsb2NrKEdzdEVsZW1lbnQgKmVsZW1lbnQsIGJvb2wg
c3luYykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFHU1RfSVNfQklOKGVsZW1lbnQpKSB7
Ci0gICAgICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAic3luYyIsIHN5bmMsIE5VTEwpOworICAg
ICAgICBnX29iamVjdF9zZXQoZWxlbWVudCwgInN5bmMiLCBzeW5jLCBudWxscHRyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIEdzdEl0ZXJhdG9yKiBpdCA9IGdzdF9iaW5faXRlcmF0
ZV9zaW5rcyhHU1RfQklOKGVsZW1lbnQpKTsKLSAgICB3aGlsZSAoZ3N0X2l0ZXJhdG9yX2ZvcmVh
Y2goaXQsIChHc3RJdGVyYXRvckZvcmVhY2hGdW5jdGlvbikoW10oY29uc3QgR1ZhbHVlKiBpdGVt
LCB2b2lkKiBzeW5jUHRyKSB7CisgICAgR1VuaXF1ZVB0cjxHc3RJdGVyYXRvcj4gaXRlcmF0b3Io
Z3N0X2Jpbl9pdGVyYXRlX3NpbmtzKEdTVF9CSU5fQ0FTVChlbGVtZW50KSkpOworICAgIHdoaWxl
IChnc3RfaXRlcmF0b3JfZm9yZWFjaChpdGVyYXRvci5nZXQoKSwgc3RhdGljX2Nhc3Q8R3N0SXRl
cmF0b3JGb3JlYWNoRnVuY3Rpb24+KFtdKGNvbnN0IEdWYWx1ZSogaXRlbSwgdm9pZCogc3luY1B0
cikgewogICAgICAgICBib29sKiBzeW5jID0gc3RhdGljX2Nhc3Q8Ym9vbCo+KHN5bmNQdHIpOwot
ICAgICAgICBzZXRTeW5jT25DbG9jayhHU1RfRUxFTUVOVChnX3ZhbHVlX2dldF9vYmplY3QoaXRl
bSkpLCAqc3luYyk7CisgICAgICAgIHNldFN5bmNPbkNsb2NrKEdTVF9FTEVNRU5UX0NBU1QoZ192
YWx1ZV9nZXRfb2JqZWN0KGl0ZW0pKSwgKnN5bmMpOwogICAgIH0pLCAmc3luYykgPT0gR1NUX0lU
RVJBVE9SX1JFU1lOQykKLSAgICAgICAgZ3N0X2l0ZXJhdG9yX3Jlc3luYyhpdCk7Ci0gICAgZ3N0
X2l0ZXJhdG9yX2ZyZWUoaXQpOworICAgICAgICBnc3RfaXRlcmF0b3JfcmVzeW5jKGl0ZXJhdG9y
LmdldCgpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN5bmNPbkNs
b2NrKGJvb2wgc3luYykKQEAgLTEzNTMsMjYgKzEzNTIsMjkgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBu
ZXR3b3IKIAogR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVB
dWRpb1NpbmsoKQogewotICAgIG1fYXV0b0F1ZGlvU2luayA9IGdzdF9lbGVtZW50X2ZhY3Rvcnlf
bWFrZSgiYXV0b2F1ZGlvc2luayIsIG51bGxwdHIpOwotICAgIGlmICghbV9hdXRvQXVkaW9TaW5r
KSB7Ci0gICAgICAgIEdTVF9XQVJOSU5HKCJHU3RyZWFtZXIncyBhdXRvYXVkaW9zaW5rIG5vdCBm
b3VuZC4gUGxlYXNlIGNoZWNrIHlvdXIgZ3N0LXBsdWdpbnMtZ29vZCBpbnN0YWxsYXRpb24iKTsK
KyAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGF1ZGlvU2luayk7CisgICAgaWYgKCFhdWRpb1NpbmspCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBl
ZChtX2F1dG9BdWRpb1NpbmsuZ2V0KCksICJjaGlsZC1hZGRlZCIsIEdfQ0FMTEJBQ0soc2V0QXVk
aW9TdHJlYW1Qcm9wZXJ0aWVzQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBpZiAoIVdFQktJVF9JU19B
VURJT19TSU5LKGF1ZGlvU2luaykpCisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChh
dWRpb1NpbmssICJjaGlsZC1hZGRlZCIsIEdfQ0FMTEJBQ0soc2V0QXVkaW9TdHJlYW1Qcm9wZXJ0
aWVzQ2FsbGJhY2spLCB0aGlzKTsKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgR3N0RWxl
bWVudCogYXVkaW9TaW5rQmluID0gZ3N0X2Jpbl9uZXcoImF1ZGlvLXNpbmsiKTsKICAgICBlbnN1
cmVBdWRpb1NvdXJjZVByb3ZpZGVyKCk7Ci0gICAgbV9hdWRpb1NvdXJjZVByb3ZpZGVyLT5jb25m
aWd1cmVBdWRpb0JpbihhdWRpb1NpbmtCaW4sIG51bGxwdHIpOworICAgIG1fYXVkaW9Tb3VyY2VQ
cm92aWRlci0+Y29uZmlndXJlQXVkaW9CaW4oYXVkaW9TaW5rQmluLCBhdWRpb1NpbmspOwogICAg
IHJldHVybiBhdWRpb1NpbmtCaW47CiAjZWxzZQotICAgIHJldHVybiBtX2F1dG9BdWRpb1Npbmsu
Z2V0KCk7CisgICAgcmV0dXJuIGF1ZGlvU2luazsKICNlbmRpZgogfQogCiBHc3RFbGVtZW50KiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmF1ZGlvU2luaygpIGNvbnN0CiB7CisgICAgaWYg
KCFtX3BpcGVsaW5lKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIEdzdEVsZW1lbnQq
IHNpbms7CiAgICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUuZ2V0KCksICJhdWRpby1zaW5rIiwg
JnNpbmssIG51bGxwdHIpOwogICAgIHJldHVybiBzaW5rOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGNkZmFkOTE4OGNiYTdiZGM5OGNjM2JiNjk1
ZTJjYzE0YTc3NWFlYmUuLmYzMWQzNzViMDJkYTA5NzkyODlhY2MyMDBkZDg2MmZhZTEzNDEwNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTUx
Myw3ICs1MTMsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI+IG1fYXVkaW9Tb3VyY2VQcm92
aWRlcjsKICNlbmRpZgotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9hdXRvQXVkaW9TaW5rOwog
ICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9kb3dubG9hZEJ1ZmZlcjsKICAgICBWZWN0b3I8UmVm
UHRyPE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrPj4gbV9t
aXNzaW5nUGx1Z2luQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPEF1
ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyPj4gbV9hdWRpb1RyYWNrczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY1MDE1M2Q1Y2U0NGIw
YTJjZTkxOGRjYjFkYjVlMzJkYjRmODYyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIu
Y3BwCkBAIC0wLDAgKzEsMzMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBT
LkwKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVy
LmgiCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiR1N0cmVhbWVyQXVkaW9NaXhl
ci5oIgorI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgorI2luY2x1ZGUgPGdzdC9hcHAvZ3N0
YXBwc2luay5oPgorI2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgorI2lu
Y2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KKworI2lm
IFBMQVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTikKKyNp
bmNsdWRlICJQbGF0Zm9ybURpc3BsYXkuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXlMaWJX
UEUuaCIKKyNpbmNsdWRlIDx3cGUvZXh0ZW5zaW9ucy9hdWRpby5oPgorI2VuZGlmCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitzdHJ1Y3QgX1dlYktpdEF1ZGlvU2lua1ByaXZhdGUgewor
ICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gaW50ZXJBdWRpb1Npbms7CisgICAgR1JlZlB0cjxHc3RQ
YWQ+IG1peGVyUGFkOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gdm9sdW1lRWxlbWVudDsKKyAg
ICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGFwcHNpbms7CisKKyNpZiBQTEFURk9STShXUEUpICYmIFVT
RShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04pCisgICAgR1VuaXF1ZVB0cjxzdHJ1Y3Qg
d3BlX2F1ZGlvX3NvdXJjZT4gd3BlQXVkaW9Tb3VyY2U7CisgICAgaW50IG1fc3RyZWFtSWQ7CisK
KyAgICAvLyB3cGVfYXVkaW9fc291cmNlIHN0YXRlOgorICAgIC8vIC0gR1NUX1NUQVRFX05VTEw6
IG5vdCBzdGFydGVkIG9yIEVPUworICAgIC8vIC0gR1NUX1NUQVRFX1BMQVlJTkc6IGF0IGxlYXN0
IG9uZSBwYWNrZXQgd2FzIGVtaXR0ZWQKKyAgICAvLyAtIEdTVF9TVEFURV9QQVVTRUQ6IHBhdXNl
IG5vdGlmaWNhdGlvbiB3YXMgc2VudAorICAgIEdzdFN0YXRlIHNvdXJjZVN0YXRlOworI2VuZGlm
Cit9OworCitlbnVtIHsKKyAgICBQUk9QXzAsCisgICAgUFJPUF9WT0xVTUUsCisgICAgUFJPUF9N
VVRFLAorfTsKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmtUZW1wbGF0ZSA9IEdT
VF9TVEFUSUNfUEFEX1RFTVBMQVRFKCJzaW5rIiwgR1NUX1BBRF9TSU5LLCBHU1RfUEFEX0FMV0FZ
UywKKyAgICBHU1RfU1RBVElDX0NBUFMoImF1ZGlvL3gtcmF3IikpOworCitHU1RfREVCVUdfQ0FU
RUdPUllfU1RBVElDKHdlYmtpdF9hdWRpb19zaW5rX2RlYnVnKTsKKyNkZWZpbmUgR1NUX0NBVF9E
RUZBVUxUIHdlYmtpdF9hdWRpb19zaW5rX2RlYnVnCisKKyNkZWZpbmUgd2Via2l0X2F1ZGlvX3Np
bmtfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcworV0VCS0lUX0RFRklORV9UWVBFX1dJVEhfQ09E
RShXZWJLaXRBdWRpb1NpbmssIHdlYmtpdF9hdWRpb19zaW5rLCBHU1RfVFlQRV9CSU4sCisgICAg
R19JTVBMRU1FTlRfSU5URVJGQUNFKEdTVF9UWVBFX1NUUkVBTV9WT0xVTUUsIG51bGxwdHIpOwor
ICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtpdF9hdWRpb19zaW5rX2RlYnVnLCAid2Vi
a2l0YXVkaW9zaW5rIiwgMCwgIndlYmtpdCBhdWRpbyBzaW5rIGVsZW1lbnQiKQorKQorCisjaWYg
UExBVEZPUk0oV1BFKSAmJiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorc3Ry
dWN0IEF1ZGlvUGFja2V0SG9sZGVyIHsKKyAgICBleHBsaWNpdCBBdWRpb1BhY2tldEhvbGRlcihH
c3RCdWZmZXIqIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIHRoaXMtPmJ1ZmZlciA9IEdzdE1hcHBl
ZE93bmVkQnVmZmVyOjpjcmVhdGUoYnVmZmVyKTsKKyAgICB9CisKKyAgICB+QXVkaW9QYWNrZXRI
b2xkZXIoKQorICAgIHsKKyAgICAgICAgaWYgKGZkKQorICAgICAgICAgICAgY2xvc2UoKmZkKTsK
KyAgICB9CisKKyAgICBPcHRpb25hbDxzdGQ6OnBhaXI8dWludDMyX3QsIHNpemVfdD4+IG1hcCgp
CisgICAgeworICAgICAgICBmZCA9IG1lbWZkX2NyZWF0ZSgid3BlLWF1ZGlvLWJ1ZmZlciIsIE1G
RF9DTE9FWEVDKTsKKyAgICAgICAgaWYgKCpmZCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKGZ0cnVuY2F0ZSgqZmQsIGJ1ZmZlci0+c2l6ZSgp
KSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgc3Np
emVfdCBieXRlc1dyaXR0ZW4gPSB3cml0ZSgqZmQsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPCAwKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1dy
aXR0ZW4pICE9IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBpZiAobHNlZWsoKmZkLCAwLCBTRUVLX1NFVCkgPT0gLTEpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cihzdGF0aWNfY2FzdDx1aW50MzJfdD4oKmZkKSwgYnVmZmVyLT5zaXplKCkpOworICAgIH0KKwor
ICAgIE9wdGlvbmFsPGludDMyX3Q+IGZkOworICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZl
cj4gYnVmZmVyOworfTsKKworc3RhdGljIHZvaWQgd2ViS2l0QXVkaW9TaW5rSGFuZGxlU2FtcGxl
KFdlYktpdEF1ZGlvU2luayogc2luaywgR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlKQorewor
ICAgIGF1dG8qIHdwZUF1ZGlvU291cmNlID0gc2luay0+cHJpdi0+d3BlQXVkaW9Tb3VyY2UuZ2V0
KCk7CisgICAgc3RhdGljIEF0b21pYzxpbnQzMl90PiB1bmlxdWVJZDsKKworICAgIGlmIChzaW5r
LT5wcml2LT5zb3VyY2VTdGF0ZSA9PSBHU1RfU1RBVEVfTlVMTCkgeworICAgICAgICBzaW5rLT5w
cml2LT5tX3N0cmVhbUlkID0gdW5pcXVlSWQuZXhjaGFuZ2VBZGQoMSk7CisgICAgICAgIEdzdENh
cHMqIGNhcHMgPSBnc3Rfc2FtcGxlX2dldF9jYXBzKHNhbXBsZS5nZXQoKSk7CisgICAgICAgIEdz
dEF1ZGlvSW5mbyBpbmZvOworICAgICAgICBnc3RfYXVkaW9faW5mb19pbml0KCZpbmZvKTsKKyAg
ICAgICAgZ3N0X2F1ZGlvX2luZm9fZnJvbV9jYXBzKCZpbmZvLCBjYXBzKTsKKyAgICAgICAgY29u
c3QgY2hhciogZm9ybWF0ID0gZ3N0X2F1ZGlvX2Zvcm1hdF90b19zdHJpbmcoR1NUX0FVRElPX0lO
Rk9fRk9STUFUKCZpbmZvKSk7CisgICAgICAgIHdwZV9hdWRpb19zb3VyY2Vfc3RhcnQod3BlQXVk
aW9Tb3VyY2UsIHNpbmstPnByaXYtPm1fc3RyZWFtSWQsIEdTVF9BVURJT19JTkZPX0NIQU5ORUxT
KCZpbmZvKSwgZm9ybWF0LCBHU1RfQVVESU9fSU5GT19SQVRFKCZpbmZvKSk7CisgICAgICAgIHNp
bmstPnByaXYtPnNvdXJjZVN0YXRlID0gR1NUX1NUQVRFX1BMQVlJTkc7CisgICAgfQorCisgICAg
YXV0byogaG9sZGVyID0gbmV3IEF1ZGlvUGFja2V0SG9sZGVyKGdzdF9zYW1wbGVfZ2V0X2J1ZmZl
cihzYW1wbGUuZ2V0KCkpKTsKKyAgICBhdXRvIG1hcERhdGEgPSBob2xkZXItPm1hcCgpOworICAg
IGlmICghbWFwRGF0YSkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNpbmssICJVbmFibGUg
dG8gcHJlcGFyZSBzaGFyZWQgYXVkaW8gYnVmZmVyIik7CisgICAgICAgIGRlbGV0ZSBob2xkZXI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgd3BlX2F1ZGlvX3NvdXJjZV9wYWNrZXQod3Bl
QXVkaW9Tb3VyY2UsIHNpbmstPnByaXYtPm1fc3RyZWFtSWQsIG1hcERhdGEtPmZpcnN0LCBtYXBE
YXRhLT5zZWNvbmQsIFtdKHZvaWQqIGRhdGEpIHsKKyAgICAgICAgYXV0byogaG9sZGVyID0gcmVp
bnRlcnByZXRfY2FzdDxBdWRpb1BhY2tldEhvbGRlcio+KGRhdGEpOworICAgICAgICBkZWxldGUg
aG9sZGVyOworICAgIH0sIGhvbGRlcik7Cit9CisjZW5kaWYKKworc3RhdGljIGJvb2wgd2ViS2l0
QXVkaW9TaW5rQ29uZmlndXJlKFdlYktpdEF1ZGlvU2luayogc2luaykKK3sKKyNpZiBQTEFURk9S
TShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04pCisgICAgc2luay0+
cHJpdi0+c291cmNlU3RhdGUgPSBHU1RfU1RBVEVfTlVMTDsKKyAgICBhdXRvJiBzaGFyZWREaXNw
bGF5ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCk7CisgICAgaWYgKGlzPFBsYXRm
b3JtRGlzcGxheUxpYldQRT4oc2hhcmVkRGlzcGxheSkpIHsKKyAgICAgICAgc2luay0+cHJpdi0+
d3BlQXVkaW9Tb3VyY2UucmVzZXQod3BlX2F1ZGlvX3NvdXJjZV9jcmVhdGUoZG93bmNhc3Q8UGxh
dGZvcm1EaXNwbGF5TGliV1BFPihzaGFyZWREaXNwbGF5KS5iYWNrZW5kKCkpKTsKKyAgICAgICAg
aWYgKHdwZV9hdWRpb19zb3VyY2VfaGFzX3JlY2VpdmVyKHNpbmstPnByaXYtPndwZUF1ZGlvU291
cmNlLmdldCgpKSkgeworICAgICAgICAgICAgc2luay0+cHJpdi0+dm9sdW1lRWxlbWVudCA9IGdz
dF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgidm9sdW1lIiwgbnVsbHB0cik7CisgICAgICAgICAgICBz
aW5rLT5wcml2LT5hcHBzaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhcHBzaW5rIiwg
bnVsbHB0cik7CisgICAgICAgICAgICBnc3RfYXBwX3Npbmtfc2V0X2VtaXRfc2lnbmFscyhHU1Rf
QVBQX1NJTksoc2luay0+cHJpdi0+YXBwc2luay5nZXQoKSksIFRSVUUpOworCisgICAgICAgICAg
ICBnX3NpZ25hbF9jb25uZWN0KHNpbmstPnByaXYtPmFwcHNpbmsuZ2V0KCksICJuZXctc2FtcGxl
IiwgR19DQUxMQkFDSygrW10oR3N0RWxlbWVudCogYXBwc2luaywgV2ViS2l0QXVkaW9TaW5rKiBz
aW5rKSAtPiBHc3RGbG93UmV0dXJuIHsKKyAgICAgICAgICAgICAgICBhdXRvIHNhbXBsZSA9IGFk
b3B0R1JlZihnc3RfYXBwX3NpbmtfcHVsbF9zYW1wbGUoR1NUX0FQUF9TSU5LKGFwcHNpbmspKSk7
CisgICAgICAgICAgICAgICAgd2ViS2l0QXVkaW9TaW5rSGFuZGxlU2FtcGxlKHNpbmssIFdURk1v
dmUoc2FtcGxlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOworICAgICAg
ICAgICAgfSksIHNpbmspOworICAgICAgICAgICAgZ19zaWduYWxfY29ubmVjdChzaW5rLT5wcml2
LT5hcHBzaW5rLmdldCgpLCAibmV3LXByZXJvbGwiLCBHX0NBTExCQUNLKCtbXShHc3RFbGVtZW50
KiBhcHBzaW5rLCBXZWJLaXRBdWRpb1NpbmsqIHNpbmspIC0+IEdzdEZsb3dSZXR1cm4geworICAg
ICAgICAgICAgICAgIGF1dG8gc2FtcGxlID0gYWRvcHRHUmVmKGdzdF9hcHBfc2lua19wdWxsX3By
ZXJvbGwoR1NUX0FQUF9TSU5LKGFwcHNpbmspKSk7CisgICAgICAgICAgICAgICAgd2ViS2l0QXVk
aW9TaW5rSGFuZGxlU2FtcGxlKHNpbmssIFdURk1vdmUoc2FtcGxlKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIEdTVF9GTE9XX09LOworICAgICAgICAgICAgfSksIHNpbmspOworCisgICAgICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0KHNpbmstPnByaXYtPmFwcHNpbmsuZ2V0KCksICJlb3MiLCBH
X0NBTExCQUNLKCtbXShHc3RFbGVtZW50KiwgV2ViS2l0QXVkaW9TaW5rKiBzaW5rKSB7CisgICAg
ICAgICAgICAgICAgd3BlX2F1ZGlvX3NvdXJjZV9zdG9wKHNpbmstPnByaXYtPndwZUF1ZGlvU291
cmNlLmdldCgpLCBzaW5rLT5wcml2LT5tX3N0cmVhbUlkKTsKKyAgICAgICAgICAgICAgICBzaW5r
LT5wcml2LT5zb3VyY2VTdGF0ZSA9IEdTVF9TVEFURV9OVUxMOworICAgICAgICAgICAgfSksIHNp
bmspOworCisgICAgICAgICAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU5fQ0FTVChzaW5rKSwg
c2luay0+cHJpdi0+dm9sdW1lRWxlbWVudC5nZXQoKSwgc2luay0+cHJpdi0+YXBwc2luay5nZXQo
KSwgbnVsbHB0cik7CisgICAgICAgICAgICBnc3RfZWxlbWVudF9saW5rKHNpbmstPnByaXYtPnZv
bHVtZUVsZW1lbnQuZ2V0KCksIHNpbmstPnByaXYtPmFwcHNpbmsuZ2V0KCkpOworCisgICAgICAg
ICAgICBhdXRvIHRhcmdldFBhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3Bh
ZChzaW5rLT5wcml2LT52b2x1bWVFbGVtZW50LmdldCgpLCAic2luayIpKTsKKyAgICAgICAgICAg
IEdzdFBhZCogc2lua1BhZCA9IHdlYmtpdEdzdEdob3N0UGFkRnJvbVN0YXRpY1RlbXBsYXRlKCZz
aW5rVGVtcGxhdGUsICJzaW5rIiwgdGFyZ2V0UGFkLmdldCgpKTsKKyAgICAgICAgICAgIGdzdF9l
bGVtZW50X2FkZF9wYWQoR1NUX0VMRU1FTlRfQ0FTVChzaW5rKSwgc2lua1BhZCk7CisgICAgICAg
ICAgICBHU1RfT0JKRUNUX0ZMQUdfU0VUKHNpbmtQYWQsIEdTVF9QQURfRkxBR19ORUVEX1BBUkVO
VCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgor
CisgICAgY29uc3QgY2hhciogdmFsdWUgPSBnX2dldGVudigiV0VCS0lUX0dTVF9FTkFCTEVfQVVE
SU9fTUlYRVIiKTsKKyAgICBpZiAodmFsdWUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1
ZSwgIjEiKSkgeworICAgICAgICBpZiAoIUdTdHJlYW1lckF1ZGlvTWl4ZXI6OmlzQXZhaWxhYmxl
KCkpIHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJJbnRlcm5hbCBhdWRpbyBtaXhpbmcgcmVx
dWVzdCBjYW5ub3QgYmUgZnVsZmlsbGVkLiIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisKKyAgICAgICAgc2luay0+cHJpdi0+aW50ZXJBdWRpb1NpbmsgPSBnc3RfZWxl
bWVudF9mYWN0b3J5X21ha2UoImludGVyYXVkaW9zaW5rIiwgbnVsbHB0cik7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHNpbmstPnByaXYtPmludGVyQXVkaW9TaW5rKTsKKworICAgICAgICBnc3Rf
YmluX2FkZChHU1RfQklOX0NBU1Qoc2luayksIHNpbmstPnByaXYtPmludGVyQXVkaW9TaW5rLmdl
dCgpKTsKKyAgICAgICAgYXV0byB0YXJnZXRQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0
X3N0YXRpY19wYWQoc2luay0+cHJpdi0+aW50ZXJBdWRpb1NpbmsuZ2V0KCksICJzaW5rIikpOwor
ICAgICAgICBnc3RfZWxlbWVudF9hZGRfcGFkKEdTVF9FTEVNRU5UX0NBU1Qoc2luayksIHdlYmtp
dEdzdEdob3N0UGFkRnJvbVN0YXRpY1RlbXBsYXRlKCZzaW5rVGVtcGxhdGUsICJzaW5rIiwgdGFy
Z2V0UGFkLmdldCgpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3N0YXRpYyBHc3RPYmplY3QqIGdldEludGVybmFsVm9sdW1lT2JqZWN0KFdl
YktpdEF1ZGlvU2luayogc2luaykKK3sKKyAgICBpZiAoc2luay0+cHJpdi0+dm9sdW1lRWxlbWVu
dCkKKyAgICAgICAgcmV0dXJuIEdTVF9PQkpFQ1RfQ0FTVChzaW5rLT5wcml2LT52b2x1bWVFbGVt
ZW50LmdldCgpKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKHNpbmstPnByaXYtPm1peGVyUGFkKTsK
KyAgICByZXR1cm4gR1NUX09CSkVDVF9DQVNUKHNpbmstPnByaXYtPm1peGVyUGFkLmdldCgpKTsK
K30KKworc3RhdGljIHZvaWQgd2ViS2l0QXVkaW9TaW5rU2V0UHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wSUQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVj
KQoreworICAgIFdlYktpdEF1ZGlvU2luayogc2luayA9IFdFQktJVF9BVURJT19TSU5LKG9iamVj
dCk7CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9WT0xVTUU6IHsKKyAg
ICAgICAgR3N0T2JqZWN0KiBpbnRlcm5hbE9iamVjdCA9IGdldEludGVybmFsVm9sdW1lT2JqZWN0
KHNpbmspOworICAgICAgICBnX29iamVjdF9zZXRfcHJvcGVydHkoR19PQkpFQ1QoaW50ZXJuYWxP
YmplY3QpLCAidm9sdW1lIiwgdmFsdWUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBQUk9QX01VVEU6IHsKKyAgICAgICAgR3N0T2JqZWN0KiBpbnRlcm5hbE9iamVjdCA9IGdldElu
dGVybmFsVm9sdW1lT2JqZWN0KHNpbmspOworICAgICAgICBnX29iamVjdF9zZXRfcHJvcGVydHko
R19PQkpFQ1QoaW50ZXJuYWxPYmplY3QpLCAibXV0ZSIsIHZhbHVlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9Q
RVJUWV9JRChvYmplY3QsIHByb3BJRCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9
CisKK3N0YXRpYyB2b2lkIHdlYktpdEF1ZGlvU2lua0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAg
ICBXZWJLaXRBdWRpb1NpbmsqIHNpbmsgPSBXRUJLSVRfQVVESU9fU0lOSyhvYmplY3QpOworCisg
ICAgc3dpdGNoIChwcm9wSUQpIHsKKyAgICBjYXNlIFBST1BfVk9MVU1FOiB7CisgICAgICAgIEdz
dE9iamVjdCogaW50ZXJuYWxPYmplY3QgPSBnZXRJbnRlcm5hbFZvbHVtZU9iamVjdChzaW5rKTsK
KyAgICAgICAgZ19vYmplY3RfZ2V0X3Byb3BlcnR5KEdfT0JKRUNUKGludGVybmFsT2JqZWN0KSwg
InZvbHVtZSIsIHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9N
VVRFOiB7CisgICAgICAgIEdzdE9iamVjdCogaW50ZXJuYWxPYmplY3QgPSBnZXRJbnRlcm5hbFZv
bHVtZU9iamVjdChzaW5rKTsKKyAgICAgICAgZ19vYmplY3RfZ2V0X3Byb3BlcnR5KEdfT0JKRUNU
KGludGVybmFsT2JqZWN0KSwgIm11dGUiLCB2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wSUQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0
aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0QXVkaW9TaW5rQ2hhbmdlU3RhdGUoR3N0RWxl
bWVudCogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpCit7CisgICAgYXV0byog
c2luayA9IFdFQktJVF9BVURJT19TSU5LKGVsZW1lbnQpOworICAgIGF1dG8qIHByaXYgPSBzaW5r
LT5wcml2OworCisjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMTQsIDApCisgICAgR1NUX0RFQlVH
X09CSkVDVChzaW5rLCAiSGFuZGxpbmcgJXMgdHJhbnNpdGlvbiIsIGdzdF9zdGF0ZV9jaGFuZ2Vf
Z2V0X25hbWUoc3RhdGVDaGFuZ2UpKTsKKyNlbmRpZgorCisgICAgYXV0byYgbWl4ZXIgPSBHU3Ry
ZWFtZXJBdWRpb01peGVyOjpzaW5nbGV0b24oKTsKKyAgICBpZiAocHJpdi0+aW50ZXJBdWRpb1Np
bmsgJiYgc3RhdGVDaGFuZ2UgPT0gR1NUX1NUQVRFX0NIQU5HRV9OVUxMX1RPX1JFQURZKQorICAg
ICAgICBwcml2LT5taXhlclBhZCA9IG1peGVyLnJlZ2lzdGVyUHJvZHVjZXIocHJpdi0+aW50ZXJB
dWRpb1NpbmsuZ2V0KCkpOworCisgICAgaWYgKHByaXYtPm1peGVyUGFkKQorICAgICAgICBtaXhl
ci5lbnN1cmVTdGF0ZShzdGF0ZUNoYW5nZSk7CisKKyAgICBHc3RTdGF0ZUNoYW5nZVJldHVybiBy
ZXN1bHQgPSBHU1RfQ0FMTF9QQVJFTlRfV0lUSF9ERUZBVUxUKEdTVF9FTEVNRU5UX0NMQVNTLCBj
aGFuZ2Vfc3RhdGUsIChlbGVtZW50LCBzdGF0ZUNoYW5nZSksIEdTVF9TVEFURV9DSEFOR0VfRkFJ
TFVSRSk7CisKKyNpZiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19F
WFRFTlNJT04pCisgICAgaWYgKHByaXYtPmFwcHNpbmspIHsKKyAgICAgICAgYm9vbCBpc0VPUyA9
IGdzdF9hcHBfc2lua19pc19lb3MoR1NUX0FQUF9TSU5LKHByaXYtPmFwcHNpbmsuZ2V0KCkpKTsK
KyAgICAgICAgaWYgKChzdGF0ZUNoYW5nZSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1BMQVlJTkdfVE9f
UEFVU0VEKSAmJiAhaXNFT1MpIHsKKyAgICAgICAgICAgIHdwZV9hdWRpb19zb3VyY2VfcGF1c2Uo
cHJpdi0+d3BlQXVkaW9Tb3VyY2UuZ2V0KCksIHByaXYtPm1fc3RyZWFtSWQpOworICAgICAgICAg
ICAgcHJpdi0+c291cmNlU3RhdGUgPSBHU1RfU1RBVEVfUEFVU0VEOworICAgICAgICB9CisgICAg
ICAgIGlmIChzdGF0ZUNoYW5nZSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWSAm
JiBpc0VPUykKKyAgICAgICAgICAgIHByaXYtPnNvdXJjZVN0YXRlID0gR1NUX1NUQVRFX05VTEw7
CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAocHJpdi0+bWl4ZXJQYWQgJiYgc3RhdGVDaGFuZ2Ug
PT0gR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19OVUxMICYmIHJlc3VsdCA+IEdTVF9TVEFURV9D
SEFOR0VfRkFJTFVSRSkgeworICAgICAgICBtaXhlci51bnJlZ2lzdGVyUHJvZHVjZXIocHJpdi0+
bWl4ZXJQYWQpOworICAgICAgICBwcml2LT5taXhlclBhZCA9IG51bGxwdHI7CisgICAgfQorI2lm
IFBMQVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTikKKyAg
ICBpZiAocHJpdi0+YXBwc2luayAmJiBwcml2LT5zb3VyY2VTdGF0ZSA9PSBHU1RfU1RBVEVfUEFV
U0VEICYmIHN0YXRlQ2hhbmdlID09IEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1BMQVlJTkcg
JiYgcmVzdWx0ID4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSB7CisgICAgICAgIHdwZV9hdWRp
b19zb3VyY2VfcmVzdW1lKHByaXYtPndwZUF1ZGlvU291cmNlLmdldCgpLCBwcml2LT5tX3N0cmVh
bUlkKTsKKyAgICAgICAgcHJpdi0+c291cmNlU3RhdGUgPSBHU1RfU1RBVEVfUExBWUlORzsKKyAg
ICB9CisjZW5kaWYKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtp
dF9hdWRpb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0QXVkaW9TaW5rQ2xhc3MqIGtsYXNzKQorewor
ICAgIEdPYmplY3RDbGFzcyogb2tsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIG9r
bGFzcy0+c2V0X3Byb3BlcnR5ID0gd2ViS2l0QXVkaW9TaW5rU2V0UHJvcGVydHk7CisgICAgb2ts
YXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJLaXRBdWRpb1NpbmtHZXRQcm9wZXJ0eTsKKworICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNzLCBQUk9QX1ZPTFVNRSwKKyAgICAg
ICAgZ19wYXJhbV9zcGVjX2RvdWJsZSgidm9sdW1lIiwgIlZvbHVtZSIsICJUaGUgYXVkaW8gdm9s
dW1lLCAxLjA9MTAwJSIsIDAsIDEwLCAxLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFt
RmxhZ3M+KEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9rbGFzcywgUFJPUF9NVVRFLAorICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigibXV0ZSIsICJNdXRlIiwgIk11dGUgdGhlIGF1ZGlv
IGNoYW5uZWwgd2l0aG91dCBjaGFuZ2luZyB0aGUgdm9sdW1lIiwgRkFMU0UsCisgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NU
QVRJQ19TVFJJTkdTKSkpOworCisgICAgR3N0RWxlbWVudENsYXNzKiBla2xhc3MgPSBHU1RfRUxF
TUVOVF9DTEFTUyhrbGFzcyk7CisgICAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3N0YXRpY19wYWRf
dGVtcGxhdGUoZWtsYXNzLCAmc2lua1RlbXBsYXRlKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19z
ZXRfbWV0YWRhdGEoZWtsYXNzLCAiV2ViS2l0IEF1ZGlvIHNpbmsgZWxlbWVudCIsICJTaW5rL0F1
ZGlvIiwKKyAgICAgICAgIlByb3hpZXMgYXVkaW8gZGF0YSB0byBXZWJLaXQncyBhdWRpbyBtaXhl
ciBvciB0byBhIFdQRSBleHRlcm5hbCBhdWRpbyBoYW5kbGVyIiwKKyAgICAgICAgIlBoaWxpcHBl
IE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+Iik7CisKKyAgICBla2xhc3MtPmNoYW5nZV9zdGF0
ZSA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdEF1ZGlvU2lua0NoYW5nZVN0YXRlKTsKK30KKwor
R3N0RWxlbWVudCogd2Via2l0QXVkaW9TaW5rTmV3KCkKK3sKKyAgICBhdXRvKiBzaW5rID0gR1NU
X0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQVVESU9fU0lOSywgbnVsbHB0
cikpOworICAgIGlmICghd2ViS2l0QXVkaW9TaW5rQ29uZmlndXJlKFdFQktJVF9BVURJT19TSU5L
KHNpbmspKSkgeworICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHNpbmspOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIHNpbms7Cit9CisKKyNlbmRpZiAvLyBVU0Uo
R1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY4OTAyNDQ4YjY0ZmJiMTUyODJhYjZmMTJlOTE0OTliMDFjNGIzNjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0QXVkaW9TaW5rR1N0cmVhbWVyLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqICBDb3B5cmln
aHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgPGdzdC9nc3Qu
aD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX0FVRElPX1NJTksgICAg
ICAgICAgICAod2Via2l0X2F1ZGlvX3NpbmtfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0FV
RElPX1NJTksob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2Jq
KSwgV0VCS0lUX1RZUEVfQVVESU9fU0lOSywgV2ViS2l0QXVkaW9TaW5rKSkKKyNkZWZpbmUgV0VC
S0lUX0FVRElPX1NJTktfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgo
a2xhc3MpLCBXRUJLSVRfVFlQRV9BVURJT19TSU5LLCBXZWJLaXRBdWRpb1NpbmtDbGFzcykpCisj
ZGVmaW5lIFdFQktJVF9JU19BVURJT19TSU5LKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lO
U1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0FVRElPX1NJTkspKQorI2RlZmluZSBXRUJL
SVRfSVNfQVVESU9fU0lOS19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChr
bGFzcyksIFdFQktJVF9UWVBFX0FVRElPX1NJTkspKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
QXVkaW9TaW5rICAgICAgICBXZWJLaXRBdWRpb1Npbms7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
QXVkaW9TaW5rQ2xhc3MgICBXZWJLaXRBdWRpb1NpbmtDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRBdWRpb1NpbmtQcml2YXRlIFdlYktpdEF1ZGlvU2lua1ByaXZhdGU7CisKK3N0cnVjdCBf
V2ViS2l0QXVkaW9TaW5rIHsKKyAgICBHc3RCaW4gcGFyZW50OworCisgICAgV2ViS2l0QXVkaW9T
aW5rUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0QXVkaW9TaW5rQ2xhc3Mgewor
ICAgIEdzdEJpbkNsYXNzIHBhcmVudENsYXNzOworfTsKKworR1R5cGUgd2Via2l0X2F1ZGlvX3Np
bmtfZ2V0X3R5cGUodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisKK0dzdEVsZW1lbnQqIHdlYmtpdEF1
ZGlvU2lua05ldygpOworCisjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9jbWFrZS9GaW5kV1BFQmFja2VuZF9mZG8uY21ha2UgYi9Tb3VyY2UvY21ha2UvRmluZFdQ
RUJhY2tlbmRfZmRvLmNtYWtlCmluZGV4IGQ3MDFkZjU2MjJlN2Y2YmUyMGY0NzNiNzI5MjJmYjQz
NTY1ODMxZjEuLjQ4NzUyZDAxNjg0MGMxYzUxOTVlOWI2Y2Q2NWE4OTFjZjFiZjRhZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9jbWFrZS9GaW5kV1BFQmFja2VuZF9mZG8uY21ha2UKKysrIGIvU291cmNl
L2NtYWtlL0ZpbmRXUEVCYWNrZW5kX2Zkby5jbWFrZQpAQCAtNDMsNiArNDMsMTEgQEAgZmluZF9s
aWJyYXJ5KFdQRUJBQ0tFTkRfRkRPX0xJQlJBUklFUwogCiBtYXJrX2FzX2FkdmFuY2VkKFdQRUJB
Q0tFTkRfRkRPX0lOQ0xVREVfRElSUyBXUEVCQUNLRU5EX0ZET19MSUJSQVJJRVMpCiAKK2ZpbmRf
cGF0aChXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04KKyAgICBOQU1FUyB3cGUvZXh0ZW5z
aW9ucy9hdWRpby5oCisgICAgSElOVFMgJHtQQ19XUEVCQUNLRU5EX0ZET19JTkNMVURFRElSfSAk
e1BDX1dQRUJBQ0tFTkRfRkRPX0lOQ0xVREVfRElSU30KKykKKwogaW5jbHVkZShGaW5kUGFja2Fn
ZUhhbmRsZVN0YW5kYXJkQXJncykKIGZpbmRfcGFja2FnZV9oYW5kbGVfc3RhbmRhcmRfYXJncyhX
UEVCYWNrZW5kX2ZkbwogICAgIFJFUVVJUkVEX1ZBUlMgV1BFQkFDS0VORF9GRE9fSU5DTFVERV9E
SVJTIFdQRUJBQ0tFTkRfRkRPX0xJQlJBUklFUwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0dT
dHJlYW1lckNoZWNrcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2UK
aW5kZXggN2E1YmE0NTI1NDkyZTBhZDhhZDEwZGRkYzczZjZiMWRiYzRiN2IzNS4uN2RiNjg4ZTBl
M2Q4NzhlM2FkMDA4YTBjZDI3ZjEzYTc3NDdiMTVjZCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
L0dTdHJlYW1lckNoZWNrcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tz
LmNtYWtlCkBAIC0xLDUgKzEsMTUgQEAKIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9B
VURJTykKIAorICAgIGlmIChQT1JUIFNUUkVRVUFMICJXUEUiKQorICAgICAgICBmaW5kX3BhY2th
Z2UoV1BFQmFja2VuZF9mZG8gMS44LjApCisgICAgICAgIGlmICgoTk9UIFdQRUJBQ0tFTkRfRkRP
X0ZPVU5EKSBPUiBXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04gU1RSRVFVQUwgIldQRUJB
Q0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTi1OT1RGT1VORCIpCisgICAgICAgICAgICBtZXNzYWdl
KFdBUk5JTkcgIldQRUJhY2tlbmQtZmRvIGF1ZGlvIGV4dGVuc2lvbiBub3QgZm91bmQuIERpc2Fi
bGluZyBleHRlcm5hbCBhdWRpbyByZW5kZXJpbmcgc3VwcG9ydCIpCisgICAgICAgICAgICBTRVRf
QU5EX0VYUE9TRV9UT19CVUlMRChVU0VfV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OIEZB
TFNFKQorICAgICAgICBlbHNlICgpCisgICAgICAgICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlM
RChVU0VfV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OIFRSVUUpCisgICAgICAgIGVuZGlm
ICgpCisgICAgZW5kaWYgKCkKKwogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9HU1RS
RUFNRVIgVFJVRSkKICAgICAgIGlmIChVU0VfR1NUUkVBTUVSX0ZVTEwpCiAgICAgICAgICAgZmlu
ZF9wYWNrYWdlKEdTdHJlYW1lciAxLjE3LjAgUkVRVUlSRUQgQ09NUE9ORU5UUyBmdWxsKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY3OWRhNmY1
YzYwNzEwNzk4NmIyNzkwNzg4ZmMyOTliODBiODQ1MmIuLjQzNzRiYjAyOTU0ZmIyZGQyYmRkOTU5
NWNlMTE3YWVlODFmM2NlZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0wOS0yNyAgUGhpbGlwcGUgTm9ybWFu
ZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gSW50ZXJuYWwg
YXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OiBXaGl0
ZS1saXN0IHRoZSBuZXcgYXVkaW8gc2luayBmcm9tIHRoZSBzdHlsZSBjaGVja2VyLgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2ZpbGUtd2l0aC12aWRlby5odG1sOiBOZXcg
dXRpbGl0eSBmdW5jdGlvbnMgdG8gcGF1c2UgYW5kIHNlZWsgaW4gdGhlIHZpZGVvLgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHA6
IFdQRSB0ZXN0IGZvciBleHRlcm5hbCBhdWRpbworICAgICAgICByZW5kZXJpbmcgc3VwcG9ydC4g
QSB2aWRlbyBmaWxlIGlzIGxvYWRlZCB0aHJvdWdoIHRoZSB3ZWJ2aWV3IGFuZCB0aGUgdGVzdCBy
ZWNlaXZlcworICAgICAgICBub3RpZmljYXRpb25zIGR1cmluZyBwbGF5YmFjay4gSW4gb3JkZXIg
dG8gcmVkdWNlIHRpbWVvdXQgcmlza3MsIGEgc2VlayBuZWFyIHRoZSBlbmQgb2YgdGhlCisgICAg
ICAgIHZpZGVvIGlzIHBlcmZvcm1lZCBlYXJseSBvbi4KKyAgICAgICAgKEF1ZGlvUmVuZGVyaW5n
V2ViVmlld1Rlc3Q6OnNldHVwKToKKyAgICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6
OnRlYXJkb3duKToKKyAgICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6OkF1ZGlvUmVu
ZGVyaW5nV2ViVmlld1Rlc3QpOgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6
aGFuZGxlU3RhcnQpOgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6aGFuZGxl
U3RvcCk6CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0OjpoYW5kbGVQYXVzZSk6
CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0OjpoYW5kbGVSZXN1bWUpOgorICAg
ICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6aGFuZGxlUGFja2V0KToKKyAgICAgICAg
KEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6OndhaXRVbnRpbFBhdXNlZCk6CisgICAgICAgIChB
dWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0Ojp3YWl0VW50aWxFT1MpOgorICAgICAgICAoQXVkaW9S
ZW5kZXJpbmdXZWJWaWV3VGVzdDo6c3RhdGUgY29uc3QpOgorICAgICAgICAoYmVmb3JlQWxsKToK
KwogMjAyMC0wOS0yNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
Q2hhbmdlIGR1bXBBc1RleHQgdG8gc3RyaXAgdHJhaWxpbmcgc3BhY2VzCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggNThiMTE2YmM3YWE0Y2YzOTcxYmZkOTgyNGQ3
ZTM0OGZiZWMyNzRjMi4uNGViZjBiZDhlNmU0ODM2MGRmZWQ1MmZmMzNhYTA2ZjUxOTVlZDUwYyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMjIxLDYgKzIyMSw4
IEBAIF9QQVRIX1JVTEVTX1NQRUNJRklFUiA9IFsKICAgICAgIG9zLnBhdGguam9pbignU291cmNl
JywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ0dMVmlk
ZW9TaW5rR1N0cmVhbWVyLmgnKSwKICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNv
cmUnLCAncGxhdGZvcm0nLCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ1ZpZGVvU2lua0dTdHJl
YW1lci5jcHAnKSwKICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxh
dGZvcm0nLCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAnKSwKKyAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZv
cm0nLCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5j
cHAnKSwKKyAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0n
LCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5oJyks
CiAgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3JtJywgJ2F1
ZGlvJywgJ2dzdHJlYW1lcicsICdXZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAnKSwK
ICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnbWVk
aWFzdHJlYW0nLCAnZ3N0cmVhbWVyJywgJ0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmgnKSwK
ICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnbWVk
aWFzdHJlYW0nLCAnZ3N0cmVhbWVyJywgJ0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcCcp
LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZmlsZS13aXRo
LXZpZGVvLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9maWxlLXdpdGgt
dmlkZW8uaHRtbAppbmRleCBhYTIyNTlhMGZjZTBiMGZkY2RlMDgxYWVkM2JkNzYwNzhjMzMwYmNl
Li4wYjg3ZGJlZmEwZDc1MzQxMWRjNDdlN2NkZjljODZkNDllNjdjNGY3IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9maWxlLXdpdGgtdmlkZW8uaHRtbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9maWxlLXdpdGgtdmlkZW8uaHRtbApA
QCAtNSw2ICs1LDE1IEBACiAgICAgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGVzdC12aWRlbyIpLnBsYXkoKTsKICAgICB9CisgICAgZnVuY3Rpb24gcGF1c2VWaWRlbygpCisg
ICAgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdC12aWRlbyIpLnBhdXNl
KCk7CisgICAgfQorICAgIGZ1bmN0aW9uIHNlZWtOZWFyVGhlRW5kKCkKKyAgICB7CisgICAgICAg
IGxldCB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LXZpZGVvIik7CisgICAg
ICAgIHZpZGVvLmN1cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb24gLSAwLjU7CisgICAgfQogICA8
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZjUyMjYx
Njg3NmEyYjBlMzI0NGUwNTcxMWMwMjZmOGUyZjViNGUzNy4uYmE2MjQxMjI1Y2QzYWU2ZDZhZDk4
Y2YxYWRjM2I0ZDY1MTNiMWZkNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0yNCw2ICsyNCwx
MCBAQAogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0
ci5oPgogCisjaWYgUExBVEZPUk0oV1BFKSAmJiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhU
RU5TSU9OKQorI2luY2x1ZGUgPHdwZS9leHRlbnNpb25zL2F1ZGlvLmg+CisjZW5kaWYKKwogY2xh
c3MgSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdCA6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CiBwdWJs
aWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShJc1BsYXlpbmdBdWRpb1dlYlZpZXdUZXN0
KTsKQEAgLTEzNDMsNiArMTM0NywxMjggQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGcmFtZURp
c3BsYXllZChGcmFtZURpc3BsYXllZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB9CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVO
U0lPTikKK2VudW0gY2xhc3MgUmVuZGVyaW5nU3RhdGUgeworICAgIFVua25vd24sCisgICAgU3Rh
cnRlZCwKKyAgICBQYXVzZWQsCisgICAgU3RvcHBlZAorfTsKKworY2xhc3MgQXVkaW9SZW5kZXJp
bmdXZWJWaWV3VGVzdCA6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9H
TElCX1RFU1RfRklYVFVSRV9XSVRIX1NFVFVQX1RFQVJET1dOKEF1ZGlvUmVuZGVyaW5nV2ViVmll
d1Rlc3QsIHNldHVwLCB0ZWFyZG93bik7CisKKyAgICBzdGF0aWMgdm9pZCBzZXR1cCgpCisgICAg
eworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHRlYXJkb3duKCkKKyAgICB7CisgICAgICAgIHdw
ZV9hdWRpb19yZWdpc3Rlcl9yZWNlaXZlcihudWxscHRyLCBudWxscHRyKTsKKyAgICB9CisKKyAg
ICBBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0KCkKKyAgICB7CisgICAgICAgIHdwZV9hdWRpb19y
ZWdpc3Rlcl9yZWNlaXZlcigmbV9hdWRpb1JlY2VpdmVyLCB0aGlzKTsKKyAgICB9CisKKyAgICB2
b2lkIGhhbmRsZVN0YXJ0KHVpbnQzMl90IGlkLCBpbnQzMl90IGNoYW5uZWxzLCBjb25zdCBjaGFy
KiBsYXlvdXQsIGludDMyX3Qgc2FtcGxlUmF0ZSkKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0KG1f
c3RhdGUgPT0gUmVuZGVyaW5nU3RhdGU6OlVua25vd24pOworICAgICAgICBnX2Fzc2VydF9mYWxz
ZShtX3N0cmVhbUlkLmhhc1ZhbHVlKCkpOworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGlkLCA9
PSwgMCk7CisgICAgICAgIG1fc3RyZWFtSWQgPSBpZDsKKyAgICAgICAgbV9zdGF0ZSA9IFJlbmRl
cmluZ1N0YXRlOjpTdGFydGVkOworICAgICAgICBnX2Fzc2VydF9jbXBpbnQoY2hhbm5lbHMsID09
LCAyKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGxheW91dCwgPT0sICJTMTZMRSIpOworICAg
ICAgICBnX2Fzc2VydF9jbXBpbnQoc2FtcGxlUmF0ZSwgPT0sIDQ0MTAwKTsKKyAgICB9CisKKyAg
ICB2b2lkIGhhbmRsZVN0b3AodWludDMyX3QgaWQpCisgICAgeworICAgICAgICBnX2Fzc2VydF9j
bXB1aW50KCptX3N0cmVhbUlkLCA9PSwgaWQpOworICAgICAgICBnX2Fzc2VydChtX3N0YXRlICE9
IFJlbmRlcmluZ1N0YXRlOjpVbmtub3duKTsKKyAgICAgICAgbV9zdGF0ZSA9IFJlbmRlcmluZ1N0
YXRlOjpTdG9wcGVkOworICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3ApOworICAg
ICAgICBtX3N0cmVhbUlkLnJlc2V0KCk7CisgICAgfQorCisgICAgdm9pZCBoYW5kbGVQYXVzZSh1
aW50MzJfdCBpZCkKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoKm1fc3RyZWFtSWQs
ID09LCBpZCk7CisgICAgICAgIGdfYXNzZXJ0KG1fc3RhdGUgIT0gUmVuZGVyaW5nU3RhdGU6OlVu
a25vd24pOworICAgICAgICBtX3N0YXRlID0gUmVuZGVyaW5nU3RhdGU6OlBhdXNlZDsKKyAgICB9
CisKKyAgICB2b2lkIGhhbmRsZVJlc3VtZSh1aW50MzJfdCBpZCkKKyAgICB7CisgICAgICAgIGdf
YXNzZXJ0X2NtcHVpbnQoKm1fc3RyZWFtSWQsID09LCBpZCk7CisgICAgICAgIGdfYXNzZXJ0KG1f
c3RhdGUgPT0gUmVuZGVyaW5nU3RhdGU6OlBhdXNlZCk7CisgICAgICAgIG1fc3RhdGUgPSBSZW5k
ZXJpbmdTdGF0ZTo6U3RhcnRlZDsKKyAgICB9CisKKyAgICB2b2lkIGhhbmRsZVBhY2tldChzdHJ1
Y3Qgd3BlX2F1ZGlvX3BhY2tldF9leHBvcnQqIHBhY2tldF9leHBvcnQsIHVpbnQzMl90IGlkLCBp
bnQzMl90IGZkLCB1aW50MzJfdCBzaXplKQorICAgIHsKKyAgICAgICAgZ19hc3NlcnRfY21wdWlu
dCgqbV9zdHJlYW1JZCwgPT0sIGlkKTsKKyAgICAgICAgZ19hc3NlcnQobV9zdGF0ZSA9PSBSZW5k
ZXJpbmdTdGF0ZTo6U3RhcnRlZCB8fCBtX3N0YXRlID09IFJlbmRlcmluZ1N0YXRlOjpQYXVzZWQp
OworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KHNpemUsID4sIDApOworICAgICAgICB3cGVfYXVk
aW9fcGFja2V0X2V4cG9ydF9yZWxlYXNlKHBhY2tldF9leHBvcnQpOworICAgIH0KKworICAgIHZv
aWQgd2FpdFVudGlsUGF1c2VkKCkKKyAgICB7CisgICAgICAgIGdfdGltZW91dF9hZGQoMjAwLCBb
XShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4geworICAgICAgICAgICAgYXV0byogdGVz
dCA9IHN0YXRpY19jYXN0PEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3QqPih1c2VyRGF0YSk7Cisg
ICAgICAgICAgICBpZiAodGVzdC0+c3RhdGUoKSA9PSBSZW5kZXJpbmdTdGF0ZTo6UGF1c2VkKSB7
CisgICAgICAgICAgICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biBHX1NPVVJDRV9DT05USU5VRTsKKyAgICAgICAgfSwgdGhpcyk7CisgICAgICAgIGdfbWFpbl9s
b29wX3J1bihtX21haW5Mb29wKTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRVbnRpbEVPUygpCisg
ICAgeworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgfQorCisgICAg
UmVuZGVyaW5nU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisKK3ByaXZh
dGU6CisgICAgc3RhdGljIGNvbnN0IHN0cnVjdCB3cGVfYXVkaW9fcmVjZWl2ZXIgbV9hdWRpb1Jl
Y2VpdmVyOworICAgIFJlbmRlcmluZ1N0YXRlIG1fc3RhdGUgeyBSZW5kZXJpbmdTdGF0ZTo6VW5r
bm93biB9OworICAgIE9wdGlvbmFsPHVpbnQzMl90PiBtX3N0cmVhbUlkOworfTsKKworY29uc3Qg
c3RydWN0IHdwZV9hdWRpb19yZWNlaXZlciBBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0OjptX2F1
ZGlvUmVjZWl2ZXIgPSB7CisgICAgW10odm9pZCogZGF0YSwgdWludDMyX3QgaWQsIGludDMyX3Qg
Y2hhbm5lbHMsIGNvbnN0IGNoYXIqIGxheW91dCwgaW50MzJfdCBzYW1wbGVSYXRlKSB7IHN0YXRp
Y19jYXN0PEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3QqPihkYXRhKS0+aGFuZGxlU3RhcnQoaWQs
IGNoYW5uZWxzLCBsYXlvdXQsIHNhbXBsZVJhdGUpOyB9LAorICAgIFtdKHZvaWQqIGRhdGEsIHN0
cnVjdCB3cGVfYXVkaW9fcGFja2V0X2V4cG9ydCogcGFja2V0X2V4cG9ydCwgdWludDMyX3QgaWQs
IGludDMyX3QgZmQsIHVpbnQzMl90IHNpemUpIHsgc3RhdGljX2Nhc3Q8QXVkaW9SZW5kZXJpbmdX
ZWJWaWV3VGVzdCo+KGRhdGEpLT5oYW5kbGVQYWNrZXQocGFja2V0X2V4cG9ydCwgaWQsIGZkLCBz
aXplKTsgfSwKKyAgICBbXSh2b2lkKiBkYXRhLCB1aW50MzJfdCBpZCkgeyBzdGF0aWNfY2FzdDxB
dWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0Kj4oZGF0YSktPmhhbmRsZVN0b3AoaWQpOyB9LAorICAg
IFtdKHZvaWQqIGRhdGEsIHVpbnQzMl90IGlkKSB7IHN0YXRpY19jYXN0PEF1ZGlvUmVuZGVyaW5n
V2ViVmlld1Rlc3QqPihkYXRhKS0+aGFuZGxlUGF1c2UoaWQpOyB9LAorICAgIFtdKHZvaWQqIGRh
dGEsIHVpbnQzMl90IGlkKSB7IHN0YXRpY19jYXN0PEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Qq
PihkYXRhKS0+aGFuZGxlUmVzdW1lKGlkKTsgfQorfTsKKworc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdFeHRlcm5hbEF1ZGlvUmVuZGVyaW5nKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCit7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNvdXJjZVBhdGgoZ19i
dWlsZF9maWxlbmFtZShUZXN0OjpnZXRSZXNvdXJjZXNEaXIoVGVzdDo6V2ViS2l0MlJlc291cmNl
cykuZGF0YSgpLCAiZmlsZS13aXRoLXZpZGVvLmh0bWwiLCBudWxscHRyKSk7CisgICAgR1VuaXF1
ZVB0cjxjaGFyPiByZXNvdXJjZVVSTChnX2ZpbGVuYW1lX3RvX3VyaShyZXNvdXJjZVBhdGguZ2V0
KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkodGVz
dC0+bV93ZWJWaWV3LCByZXNvdXJjZVVSTC5nZXQoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9h
ZEZpbmlzaGVkKCk7CisKKyAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNo
ZWQoInBsYXlWaWRlbygpOyIsIG51bGxwdHIpOworICAgIGdfYXNzZXJ0KHRlc3QtPnN0YXRlKCkg
PT0gUmVuZGVyaW5nU3RhdGU6OlN0YXJ0ZWQpOworICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRX
YWl0VW50aWxGaW5pc2hlZCgicGF1c2VWaWRlbygpOyIsIG51bGxwdHIpOworICAgIHRlc3QtPndh
aXRVbnRpbFBhdXNlZCgpOworICAgIGdfYXNzZXJ0KHRlc3QtPnN0YXRlKCkgPT0gUmVuZGVyaW5n
U3RhdGU6OlBhdXNlZCk7CisKKyAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoInBsYXlWaWRlbygpOyBzZWVrTmVhclRoZUVuZCgpOyIsIG51bGxwdHIpOworICAgIHRl
c3QtPndhaXRVbnRpbEVPUygpOworICAgIGdfYXNzZXJ0KHRlc3QtPnN0YXRlKCkgPT0gUmVuZGVy
aW5nU3RhdGU6OlN0b3BwZWQpOworfQorI2VuZGlmCisKIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxi
YWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIq
IHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyKQogewogICAg
IGlmIChtZXNzYWdlLT5tZXRob2QgIT0gU09VUF9NRVRIT0RfR0VUKSB7CkBAIC0xNDAzLDYgKzE1
MjksOSBAQCB2b2lkIGJlZm9yZUFsbCgpCiAjZW5kaWYKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgImlzLWF1ZGlvLW11dGVkIiwgdGVzdFdlYlZpZXdJc0F1ZGlvTXV0ZWQp
OwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiYXV0b3BsYXktcG9saWN5
IiwgdGVzdFdlYlZpZXdBdXRvcGxheVBvbGljeSk7CisjaWYgUExBVEZPUk0oV1BFKSAmJiBVU0Uo
V1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorICAgIEF1ZGlvUmVuZGVyaW5nV2ViVmll
d1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJleHRlcm5hbC1hdWRpby1yZW5kZXJpbmciLCB0
ZXN0V2ViVmlld0V4dGVybmFsQXVkaW9SZW5kZXJpbmcpOworI2VuZGlmCiB9CiAKIHZvaWQgYWZ0
ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGJmMmNmZGY4
ZjNkOTI5MjI2MTIwM2NmNmY3NmQwMmM1YWY0OTlmMDMuLmRiYTZhMzk2MjI0ODVjYjg0ZGRkY2Y3
ZTRlNjQwOTkyYzQ4Y2Y5NmEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAyMC0wOS0yNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gSW50ZXJuYWwgYXVkaW8gcmVuZGVy
aW5nIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU291cmNlL2NtYWtlL0ZpbmRXUEVCYWNrZW5kX2Zkby5jbWFrZTogQ2hlY2sgZm9yIHRo
ZSBhdWRpbyBleHRlbnNpb24gaGVhZGVyIGluaXRpYWxseQorICAgICAgICBzaGlwcGVkIGluIHRo
ZSAxLjguMCByZWxlYXNlLgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3Mu
Y21ha2U6IENoZWNrIGFuZCBlbmFibGUgZXh0ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQg
aWYKKyAgICAgICAgdGhlIFdQRUJhY2tlbmQtRkRPIGF1ZGlvIGV4dGVuc2lvbiB3YXMgZm91bmQu
CisKIDIwMjAtMDktMjcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgog
CiAgICAgICAgIEFkZCAuY2NscyBjb25maWcgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410113</attachid>
            <date>2020-09-30 06:41:14 -0700</date>
            <delta_ts>2020-09-30 06:41:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-207634-20200930064112.patch</filename>
            <type>text/plain</type>
            <size>61788</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM3NDdmNTg1MzIxZmE4
OTQzNTFlNTA5NzdhZmVlMzI2ZTVjNjYyNS4uNGI2OGYzNTZkY2FjNzg1OTNiYTljZTNiZTdiYTli
YzRmNTczZDg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMC0wOS0zMCAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1l
cl0gSW50ZXJuYWwgYXVkaW8gcmVuZGVyaW5nIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5
IFhhYmllciBSb2RyaWd1ZXotQ2FsdmFyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNl
cyB0d28gZmVhdHVyZXMgcmVnYXJkaW5nIGF1ZGlvIHJlbmRlcmluZzoKKworICAgICAgICAxLiBJ
bnRlcm5hbCBhdWRpbyBtaXhpbmcgZW5hYmxlZCBhdCBydW50aW1lIHdpdGggdGhlIFdFQktJVF9H
U1RfRU5BQkxFX0FVRElPX01JWEVSPTEKKyAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUuIFdo
ZW4gdGhpcyBpcyBlbmFibGVkLCB0aGUgV2ViUHJvY2VzcyB3aWxsIGhhdmUgaXRzIEdTdHJlYW1l
ciBiYWNrZW5kcworICAgICAgICByZW5kZXIgdG8gZGVkaWNhdGVkIFdlYktpdCBhdWRpbyBzaW5r
cy4gVGhvc2Ugd2lsbCBmb3J3YXJkIGJ1ZmZlcnMgdG8gYSBzaW5nbGV0b24gYXVkaW8KKyAgICAg
ICAgbWl4ZXIuIFRoZSByZXN1bHRpbmcgYXVkaW8gc3RyZWFtIHdpbGwgdGhlbiBiZSByZW5kZXJl
ZCB0aHJvdWdoIHRoZSBkZWZhdWx0IGF1ZGlvIHNpbmsKKyAgICAgICAgKFB1bHNlQXVkaW8gaW4g
bW9zdCBjYXNlcykuIFVzaW5nIHRoaXMgYXBwcm9hY2gsIGFwcGxpY2F0aW9ucyB3aWxsIG1haW50
YWluIGEgc2luZ2xlCisgICAgICAgIGNvbm5lY3Rpb24gdG8gdGhlIGF1ZGlvIGRhZW1vbi4KKwor
ICAgICAgICAyLiBGb3IgV1BFLCBleHRlcm5hbCBhdWRpbyBwYXNzLXRocm91Z2guIFRvIGVuYWJs
ZSB0aGlzLCB0aGUgYXBwbGljYXRpb24gaGFzIHRvIHJlZ2lzdGVyIGFuCisgICAgICAgIGF1ZGlv
IHJlY2VpdmVyIHVzaW5nIHRoZSBXUEVCYWNrZW5kLUZETyB3cGVfYXVkaW9fcmVnaXN0ZXJfcmVj
ZWl2ZXIoKSBBUEkuIFdoZW4gdGhpcyBpcworICAgICAgICBlbmFibGVkLCB0aGUgV2ViS2l0IGF1
ZGlvIHNpbmtzIHJ1bm5pbmcgaW4gdGhlIFdlYlByb2Nlc3Mgd2lsbCBmb3J3YXJkIGF1ZGlvIHNh
bXBsZXMgdG8gdGhlCisgICAgICAgIFVJUHJvY2VzcywgdXNpbmcgYSBXYXlsYW5kIHByb3RvY29s
IGRlZmluZWQgaW4gdGhlIFdQRUJhY2tlbmQtRkRPIGJhY2tlbmQgYW5kIGV4cG9zZWQKKyAgICAg
ICAgdGhyb3VnaCBpdHMgYXVkaW8gZXh0ZW5zaW9uLiBUaGlzIGNsaWVudC1zaWRlIHJlbmRlcmlu
ZyBzdXBwb3J0IGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gaGF2ZQorICAgICAgICBmdWxsIGNvbnRy
b2wgb24gdGhlIGF1ZGlvIHNhbXBsZXMgcmVuZGVyaW5nLgorCisgICAgICAgIFRoZSBJbnRlcm5h
bCBtb2RlIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgdGVjaG5vbG9neSBwcmV2aWV3IGFuZCBjYW4n
dCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQKKyAgICAgICAgeWV0LCBiZWNhdXNlIGF1ZGlvbWl4ZXIg
bGFja3Mgc29tZSBmZWF0dXJlcyBzdWNoIGFzIHJldmVyc2UgcGxheWJhY2sgc3VwcG9ydC4gRXh0
ZXJuYWwgYXVkaW8KKyAgICAgICAgcmVuZGVyaW5nIHBvbGljeSBpcyBjb3ZlcmVkIGJ5IGEgbmV3
IFdQRSBBUEkgdGVzdC4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyKTogQ3JlYXRlIHNpbmsgZGVwZW5kaW5nIG9uCisgICAgICAg
IHNlbGVjdGVkIGF1ZGlvIHJlbmRlcmluZyBwb2xpY3kgYW5kIHByb2JlIHBsYXRmb3JtIGZvciBh
IHdvcmtpbmcgYXVkaW8gb3V0cHV0IGRldmljZSBvbmx5CisgICAgICAgIHdoZW4gdGhlIFdlYktp
dCBjdXN0b20gYXVkaW8gc2luayBoYXNuJ3QgYmVlbiBzZWxlY3RlZC4gVGhpcyBpcyBuZWVkZWQg
b25seSBmb3IgdGhlCisgICAgICAgIGF1dG9hdWRpb3NpbmsgY2FzZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpjb25maWd1cmVB
dWRpb0Jpbik6IEluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgc2luaywKKyAgICAgICAgZW1iZWQg
dGhlIG9uZSBwcm92aWRlZCBieSB0aGUgcGxheWVyIGludG8gdGhlIGF1ZGlvIGJpbi4gVGhlIHJl
c3VsdGluZyBiaW4gYmVjb21lcyB0aGUKKyAgICAgICAgcGxheWVyIGF1ZGlvIHNpbmsgYW5kIGl0
J3MgYWJsZSB0byByZW5kZXIgYm90aCB0byB0aGUgV2ViQXVkaW8gcHJvdmlkZXIgYW5kIHRoZSB1
c3VhbCBzaW5rLCBhcyBiZWZvcmUuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6aXNBbGxvd2VkKTogVGhlIG1peGVyIHJlcXVp
cmVzIGEgcmVjZW50IEdTdHJlYW1lciB2ZXJzaW9uIGFuZAorICAgICAgICB0aGUgaW50ZXIgcGx1
Z2luIChzaGlwcGVkIGluIGdzdC1wbHVnaW5zLWJhZCB1bnRpbCB2ZXJzaW9uIDEuMjAgYXQgbGVh
c3QpLgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6c2luZ2xldG9uKTog
RW50cnkgcG9pbnQgZm9yIHRoZSBtaXhlci4gVGhpcyBpcyB3aGVyZSB0aGUKKyAgICAgICAgc2lu
Z2xldG9uIGlzIGNyZWF0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb01peGVy
OjpHU3RyZWFtZXJBdWRpb01peGVyKTogQ29uZmlndXJlIHRoZSBzdGFuZGFsb25lIG1peGVyCisg
ICAgICAgIHBpcGVsaW5lLgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9NaXhlcjo6
fkdTdHJlYW1lckF1ZGlvTWl4ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9N
aXhlcjo6ZW5zdXJlU3RhdGUpOiBMYXppbHkgc3RhcnQvc3RvcCB0aGUgbWl4ZXIsIGRlcGVuZGlu
ZyBvbiB0aGUKKyAgICAgICAgbnVtYmVyIG9mIGluY29taW5nIHN0cmVhbXMuIFRoZSBwaXBlbGlu
ZSBzdGFydHMgd2hlbiB0aGUgZmlyc3QgaW5jb21pbmcgc3RyZWFtIGlzIGNvbm5lY3RlZCwKKyAg
ICAgICAgYW5kIHN0b3BzIHdoZW4gdGhlIGxhc3Qgc3RyZWFtIGRpc2FwcGVhcnMuCisgICAgICAg
IChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb01peGVyOjpyZWdpc3RlclByb2R1Y2VyKTogQ2xpZW50
IHBpcGVsaW5lcyByZXF1aXJlIGFuIGludGVyYXVkaW9zaW5rLCB0aGV5CisgICAgICAgIHdpbGwg
cmVuZGVyIHRvIHRoYXQgc2luaywgd2hpY2ggaW50ZXJuYWxseSBmb3J3YXJkcyBkYXRhIHRvIGEg
dHdpbiBpbnRlcmF1ZGlvc3JjIGVsZW1lbnQsCisgICAgICAgIGNvbm5lY3RlZCB0byB0aGUgYXVk
aW9taXhlci4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvTWl4ZXI6OnVucmVnaXN0
ZXJQcm9kdWNlcik6IEdldCByaWQgb2YgYW4gaW50ZXJhdWRpb3NpbmsgYW5kIGl0cyBpbnRlcmF1
ZGlvc3JjLgorICAgICAgICBUaGlzIGlzIGNhbGxlZCBieSB0aGUgV2ViS2l0IGF1ZGlvIHNpbmsg
d2hlbiB0aGUgZWxlbWVudCBpcyBiZWluZyBkaXNwb3NlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRz
KTogUmVnaXN0ZXIgbmV3IGF1ZGlvIHNpbmsgZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKTogTmV3IHV0aWxpdHkgZnVuY3Rpb24gdG8gY3JlYXRlIGFu
IGF1ZGlvIHNpbmsgYmFzZWQgb24KKyAgICAgICAgdGhlIGRlc2lyZWQgYW5kIGltcGxpZWQgcnVu
dGltZSByZW5kZXJpbmcgcG9saWN5LgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUdTdHJl
YW1lckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1VuaXF1ZVB0ckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6c2Vlayk6IERyaXZlLWJ5IGNsZWFuLXVwLCBubyBuZWVkIHRvIGNyZWF0ZSB0aGUg
c2VlaworICAgICAgICBNZWRpYXRpbWUgYmVmb3JlIHRoZSBlYXJseSByZXR1cm4gY2hlY2tpbmcg
dGhpcyBpcyBhIGxpdmUgc3RyZWFtLgorICAgICAgICAoV2ViQ29yZTo6c2V0U3luY09uQ2xvY2sp
OiBGaXh1cCBjb2RlIHN0eWxlIGluIHRoaXMgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmspOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NpbmsgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVk
aW9TaW5rR1N0cmVhbWVyLmNwcDogQWRkZWQuIFRoaXMgc2luayBjYW4gZWl0aGVyCisgICAgICAg
IGZvcndhcmQgaW5jb21pbmcgc2FtcGxlcyB0byB0aGUgc2hhcmVkIGF1ZGlvbWl4ZXIgcnVubmlu
ZyBpbiBpdHMgb3duIHBpcGVsaW5lLCBvciBmb3J3YXJkCisgICAgICAgIHNhbXBsZXMgdG8gdGhl
IFVJUHJvY2VzcyB1c2luZyB0aGUgV1BFQmFja2VuZC1GRE8gYXVkaW8gZXh0ZW5zaW9uLgorICAg
ICAgICAoQXVkaW9QYWNrZXRIb2xkZXI6OkF1ZGlvUGFja2V0SG9sZGVyKTogV3JhcHBlciBhcm91
bmQgYXVkaW8gYnVmZmVycywgaW4gY2hhcmdlIG9mIGNyZWF0aW5nCisgICAgICAgIHRoZSBjb3Jy
ZXNwb25kaW5nIG1lbWZkIGRlc2NyaXB0b3IgYW5kIGFsc28ga2VlcGluZyB0cmFjayBvZiB0aGUg
Y29ycmVzcG9uZGluZworICAgICAgICB3cGVfYXVkaW9fcGFja2V0X2V4cG9ydC4KKyAgICAgICAg
KEF1ZGlvUGFja2V0SG9sZGVyOjp+QXVkaW9QYWNrZXRIb2xkZXIpOgorICAgICAgICAoQXVkaW9Q
YWNrZXRIb2xkZXI6Om1hcCk6IENyZWF0ZSB0aGUgbWVtZmQgZGVzY3JpcHRvciBhbmQgcmV0dXJu
IGl0IGFsb25nIHdpdGggdGhlIGJ1ZmZlciBzaXplLgorICAgICAgICAod2ViS2l0QXVkaW9TaW5r
SGFuZGxlU2FtcGxlKTogRm9yd2FyZCBpbmNvbWluZyBzYW1wbGVzIHVzaW5nIHRoZSBXUEVCYWNr
ZW5kLUZETyBhdWRpbworICAgICAgICBleHRlbnNpb24uIFRoZSB3cGVfYXVkaW9fc291cmNlIHN0
YXJ0IGlzIHN5bmNocm9uaXplZCB3aXRoIHRoZSBidWZmZXIgZmxvdy4KKyAgICAgICAgKHdlYktp
dEF1ZGlvU2lua0NvbmZpZ3VyZSk6IFdoZW4gaW50ZXJuYWwgbWl4aW5nIGhhcyBiZWVuIHJlcXVl
c3RlZCwgY3JlYXRlIGFuCisgICAgICAgIGludGVyYXVkaW9zaW5rIHRvIHdoaWNoIHNhbXBsZXMg
d2lsbCBiZSBzZW50LiBJbnRlcm5hbGx5IHRoZSBpbnRlcmF1ZGlvc2luayB3aWxsIGZvcndhcmQK
KyAgICAgICAgZGF0YSB0byBpdHMgaW50ZXJhdWRpb3NyYyB3aGljaCBpcyBjb25uZWN0ZWQgdG8g
dGhlIGF1ZGlvbWl4ZXIuIE90aGVyd2lzZSwgaWYgZXh0ZXJuYWwKKyAgICAgICAgcmVuZGVyaW5n
IGhhcyBiZWVuIHJlcXVlc3RlZCwgY3JlYXRlIGFuIGFwcHNpbmsgaW4gb3JkZXIgdG8gcmVsYXkg
c2FtcGxlcyB0byB0aGUgVUlQcm9jZXNzLgorICAgICAgICAod2ViS2l0QXVkaW9TaW5rRGlzcG9z
ZSk6CisgICAgICAgIChnZXRJbnRlcm5hbFZvbHVtZU9iamVjdCk6IFdoZW4gaW50ZXJuYWwgbWl4
aW5nIGlzIGVuYWJsZWQsIHZvbHVtZSBhbmQgbXV0ZSBzdGF0ZXMgYXJlCisgICAgICAgIHRyYWNr
ZWQgd2l0aGluIHRoZSBhdWRpb21peGVyIHNpbmsgcGFkcy4gT3RoZXJ3aXNlIG91ciBhdWRpbyBz
aW5rIG1hbmFnZXMgdGhpcyB1c2luZyBhIHZvbHVtZQorICAgICAgICBlbGVtZW50LgorICAgICAg
ICAod2ViS2l0QXVkaW9TaW5rU2V0UHJvcGVydHkpOiBQcm94eSB2b2x1bWUgYW5kIG11dGUgcHJv
cGVydGllcyBmcm9tIHRoZSBpbnRlcm5hbCB2b2x1bWUgcHJveHkuCisgICAgICAgICh3ZWJLaXRB
dWRpb1NpbmtHZXRQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAod2ViS2l0QXVkaW9TaW5rQ2hh
bmdlU3RhdGUpOiBLZWVwIHRoZSBXUEUgYXVkaW8gc291cmNlIHN0YXRlIHN5bmNocm9uaXplZCB3
aXRoIHRoZSBlbGVtZW50CisgICAgICAgIHN0YXRlLCBpbiBvcmRlciB0byBrbm93IHdoZW4gdGhl
IHBhdXNlL3Jlc3VtZSBub3RpZmljYXRpb25zIHNob3VsZCBiZSBzZW50IHRvIHRoZSBVSVByb2Nl
c3MuCisgICAgICAgIFRoaXMgaXMgYWxzbyB3aGVyZSBtYWludGFpbiB0aGUgcmVsYXRpb25zaGlw
IGJldHdlZW4gdGhlIGludGVyYXVkaW9zaW5rIGFuZCB0aGUgYXVkaW9taXhlciwgd2hlbgorICAg
ICAgICBpdCdzIGVuYWJsZWQuCisgICAgICAgICh3ZWJraXRfYXVkaW9fc2lua19jbGFzc19pbml0
KToKKyAgICAgICAgKHdlYmtpdEF1ZGlvU2lua05ldyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5oOiBBZGRlZC4KKwogMjAy
MC0wOS0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIEFs
d2F5cyB1c2UgT3BlcmF0aW9uUHRyVGFnIGZvciBhbGwgb3BlcmF0aW9ucyBhbmQgYW5ub3RhdGUg
b3BlcmF0aW9ucyBpbiBDU1MgSklUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21h
a2UKaW5kZXggYzE5NGQ2Y2FkNzU5YTQ2MjBlNzcwYmZmYzUyZTBhMzk4MmZjYjlhZi4uMGQ3MThj
ZWNlMGMwMDEzNjRlODc0Nzg2YTI5MTM0YWM4NGJmYzExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtOSw2ICs5LDcgQEAgaWYgKEVOQUJMRV9WSURFTyBPUiBF
TkFCTEVfV0VCX0FVRElPKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HTFZpZGVvU2lua0dTdHJlYW1lci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb01peGVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR3N0QWxsb2NhdG9yRmFzdE1hbGxvYy5jcHAKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAg
LTIzLDYgKzI0LDcgQEAgaWYgKEVOQUJMRV9WSURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
ci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJl
YW1lci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
V2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAogCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlEZWNyeXB0b3JHU3RyZWFtZXIu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXggZGI2OWM1
Yjk3MmI0NDI0MjBjYWM2NTZiODU3YTQ3NGRjNzNhMmIzNS4uOGZkZWI2YTI0MjQ4NDljYWMxN2Ji
ZTkwYWFlNzEyYTg5YTI0ZDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcApAQCAtMjYsOCArMjYsOSBAQAogI2luY2x1ZGUgIkF1ZGlvQ2hhbm5lbC5oIgogI2lu
Y2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJBdWRpb1V0aWxpdGllcy5o
IgotI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJDb21t
b24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9TaW5rR1N0
cmVhbWVyLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaCIKICNp
bmNsdWRlIDxnc3QvYXVkaW8vZ3N0YXVkaW9iYXNlc2luay5oPgogI2luY2x1ZGUgPGdzdC9nc3Qu
aD4KQEAgLTkyLDI5ICs5MywzMyBAQCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInByb3ZpZGVyIiwgJm1fY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZy
YW1lcyIsIEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgbnVsbHB0cikpOwogCi0g
ICAgR1JlZlB0cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21h
a2UoImF1dG9hdWRpb3NpbmsiLCBudWxscHRyKTsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1
ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKCk7CiAgICAgbV9hdWRpb1NpbmtBdmFp
bGFibGUgPSBhdWRpb1Npbms7CiAgICAgaWYgKCFhdWRpb1NpbmspIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gY3JlYXRlIEdTdHJlYW1lciBhdXRvYXVkaW9zaW5rIGVsZW1lbnQiKTsK
KyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIEdTdHJlYW1lciBhdWRpbyBzaW5r
IGVsZW1lbnQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGdfc2lnbmFsX2Nvbm5l
Y3QoYXVkaW9TaW5rLmdldCgpLCAiY2hpbGQtYWRkZWQiLCBHX0NBTExCQUNLKGF1dG9BdWRpb1Np
bmtDaGlsZEFkZGVkQ2FsbGJhY2spLCBudWxscHRyKTsKLQotICAgIC8vIEF1dG9hdWRpb3Npbmsg
ZG9lcyB0aGUgcmVhbCBzaW5rIGRldGVjdGlvbiBpbiB0aGUgR1NUX1NUQVRFX05VTEwtPlJFQURZ
IHRyYW5zaXRpb24KLSAgICAvLyBzbyBpdCdzIGJlc3QgdG8gcm9sbCBpdCB0byBSRUFEWSBhcyBz
b29uIGFzIHBvc3NpYmxlIHRvIGVuc3VyZSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybQotICAgIC8v
IGF1ZGlvc2luayB3YXMgbG9hZGVkIGNvcnJlY3RseS4KLSAgICBHc3RTdGF0ZUNoYW5nZVJldHVy
biBzdGF0ZUNoYW5nZVJldHVybiA9IGdzdF9lbGVtZW50X3NldF9zdGF0ZShhdWRpb1NpbmsuZ2V0
KCksIEdTVF9TVEFURV9SRUFEWSk7Ci0gICAgaWYgKHN0YXRlQ2hhbmdlUmV0dXJuID09IEdTVF9T
VEFURV9DSEFOR0VfRkFJTFVSRSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjaGFu
Z2UgYXV0b2F1ZGlvc2luayBlbGVtZW50IHN0YXRlIik7Ci0gICAgICAgIGdzdF9lbGVtZW50X3Nl
dF9zdGF0ZShhdWRpb1NpbmsuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICAgICAgbV9hdWRp
b1NpbmtBdmFpbGFibGUgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOworICAgIC8vIFByb2JlIHBs
YXRmb3JtIGVhcmx5IG9uIGZvciBhIHdvcmtpbmcgYXVkaW8gb3V0cHV0IGRldmljZS4gVGhpcyBp
cyBub3QgbmVlZGVkIGZvciB0aGUgV2ViS2l0CisgICAgLy8gY3VzdG9tIGF1ZGlvIHNpbmsgYmVj
YXVzZSBpdCBkb2Vzbid0IHJlbHkgb24gYXV0b2F1ZGlvc2luay4KKyAgICBpZiAoIVdFQktJVF9J
U19BVURJT19TSU5LKGF1ZGlvU2luay5nZXQoKSkpIHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVj
dChhdWRpb1NpbmsuZ2V0KCksICJjaGlsZC1hZGRlZCIsIEdfQ0FMTEJBQ0soYXV0b0F1ZGlvU2lu
a0NoaWxkQWRkZWRDYWxsYmFjayksIG51bGxwdHIpOworCisgICAgICAgIC8vIEF1dG9hdWRpb3Np
bmsgZG9lcyB0aGUgcmVhbCBzaW5rIGRldGVjdGlvbiBpbiB0aGUgR1NUX1NUQVRFX05VTEwtPlJF
QURZIHRyYW5zaXRpb24KKyAgICAgICAgLy8gc28gaXQncyBiZXN0IHRvIHJvbGwgaXQgdG8gUkVB
RFkgYXMgc29vbiBhcyBwb3NzaWJsZSB0byBlbnN1cmUgdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0K
KyAgICAgICAgLy8gYXVkaW9zaW5rIHdhcyBsb2FkZWQgY29ycmVjdGx5LgorICAgICAgICBHc3RT
dGF0ZUNoYW5nZVJldHVybiBzdGF0ZUNoYW5nZVJldHVybiA9IGdzdF9lbGVtZW50X3NldF9zdGF0
ZShhdWRpb1NpbmsuZ2V0KCksIEdTVF9TVEFURV9SRUFEWSk7CisgICAgICAgIGlmIChzdGF0ZUNo
YW5nZVJldHVybiA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpIHsKKyAgICAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGNoYW5nZSBhdXRvYXVkaW9zaW5rIGVsZW1lbnQgc3RhdGUiKTsK
KyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShhdWRpb1NpbmsuZ2V0KCksIEdTVF9T
VEFURV9OVUxMKTsKKyAgICAgICAgICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gZmFsc2U7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAKICAgICBHc3RFbGVtZW50KiBh
dWRpb0NvbnZlcnQgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1ZGlvY29udmVydCIsIG51
bGxwdHIpOwogICAgIEdzdEVsZW1lbnQqIGF1ZGlvUmVzYW1wbGUgPSBnc3RfZWxlbWVudF9mYWN0
b3J5X21ha2UoImF1ZGlvcmVzYW1wbGUiLCBudWxscHRyKTsKLSAgICBnc3RfYmluX2FkZF9tYW55
KEdTVF9CSU4obV9waXBlbGluZSksIHdlYmtpdEF1ZGlvU3JjLCBhdWRpb0NvbnZlcnQsIGF1ZGlv
UmVzYW1wbGUsIGF1ZGlvU2luay5nZXQoKSwgbnVsbHB0cik7CisgICAgZ3N0X2Jpbl9hZGRfbWFu
eShHU1RfQklOX0NBU1QobV9waXBlbGluZSksIHdlYmtpdEF1ZGlvU3JjLCBhdWRpb0NvbnZlcnQs
IGF1ZGlvUmVzYW1wbGUsIGF1ZGlvU2luay5nZXQoKSwgbnVsbHB0cik7CiAKICAgICAvLyBMaW5r
IHNyYyBwYWRzIGZyb20gd2Via2l0QXVkaW9TcmMgdG8gYXVkaW9Db252ZXJ0ICEgYXVkaW9SZXNh
bXBsZSAhIGF1dG9hdWRpb3NpbmsuCiAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwod2Vi
a2l0QXVkaW9TcmMsICJzcmMiLCBhdWRpb0NvbnZlcnQsICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NI
RUNLX05PVEhJTkcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIu
Y3BwCmluZGV4IDU0YjM5ZjQ1YTViYTcwMGVlMGU5YmFhMTY1MzZkMjE4ODRlZDEwZjguLjE1YzQy
NjZiMzEyYzI3OGZjNzc3MDQyNmIxNTUzYTEzMzkzNjU0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBBdWRpb1Nv
dXJjZVByb3ZpZGVyR1N0cmVhbWVyOjp+QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcigpCiAg
ICAgZ19vYmplY3RfdW5yZWYobV9mcm9udFJpZ2h0QWRhcHRlcik7CiB9CiAKLXZvaWQgQXVkaW9T
b3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCogYXVk
aW9CaW4sIEdzdEVsZW1lbnQqIHRlZVByZWRlY2Vzc29yKQordm9pZCBBdWRpb1NvdXJjZVByb3Zp
ZGVyR1N0cmVhbWVyOjpjb25maWd1cmVBdWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0JpbiwgR3N0
RWxlbWVudCogYXVkaW9TaW5rKQogewogICAgIG1fYXVkaW9TaW5rQmluID0gYXVkaW9CaW47CiAK
QEAgLTE1MiwyNiArMTUyLDE2IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6
Y29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCogYXVkaW9CaW4sIEdzdEVsCiAgICAgR3N0RWxl
bWVudCogYXVkaW9SZXNhbXBsZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9yZXNh
bXBsZSIsIG51bGxwdHIpOwogICAgIEdzdEVsZW1lbnQqIGF1ZGlvUmVzYW1wbGUyID0gZ3N0X2Vs
ZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb3Jlc2FtcGxlIiwgbnVsbHB0cik7CiAgICAgR3N0RWxl
bWVudCogdm9sdW1lRWxlbWVudCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgidm9sdW1lIiwg
InZvbHVtZSIpOwotICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2luayA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfbWFrZSgiYXV0b2F1ZGlvc2luayIsIG51bGxwdHIpOwotCi0gICAgZ3N0X2Jpbl9hZGRfbWFu
eShHU1RfQklOKG1fYXVkaW9TaW5rQmluLmdldCgpKSwgYXVkaW9UZWUsIGF1ZGlvUXVldWUsIGF1
ZGlvQ29udmVydCwgYXVkaW9SZXNhbXBsZSwgdm9sdW1lRWxlbWVudCwgYXVkaW9Db252ZXJ0Miwg
YXVkaW9SZXNhbXBsZTIsIGF1ZGlvU2luaywgbnVsbHB0cik7Ci0KLSAgICAvLyBJbiBjYXNlcyB3
aGVyZSB0aGUgYXVkaW8tc2luayBuZWVkcyBlbGVtZW50cyBiZWZvcmUgdGVlIChzdWNoCi0gICAg
Ly8gYXMgc2NhbGV0ZW1wbykgdGhleSBuZWVkIHRvIGJlIGxpbmtlZCB0byB0ZWUgd2hpY2ggaW4g
dGhpcyBjYXNlCi0gICAgLy8gZG9lc24ndCBuZWVkIGEgZ2hvc3QgcGFkLiBJdCBpcyBhc3N1bWVk
IHRoYXQgdGhlIHRlZVByZWRlY2Vzc29yCi0gICAgLy8gY2hhaW4gYWxyZWFkeSBjb25maWd1cmVk
IGEgZ2hvc3QgcGFkLgotICAgIGlmICh0ZWVQcmVkZWNlc3NvcikKLSAgICAgICAgZ3N0X2VsZW1l
bnRfbGlua19wYWRzX2Z1bGwodGVlUHJlZGVjZXNzb3IsICJzcmMiLCBhdWRpb1RlZSwgInNpbmsi
LCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEFk
ZCBhIGdob3N0cGFkIHRvIHRoZSBiaW4gc28gaXQgY2FuIHByb3h5IHRvIHRlZS4KLSAgICAgICAg
R1JlZlB0cjxHc3RQYWQ+IGF1ZGlvVGVlU2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9n
ZXRfc3RhdGljX3BhZChhdWRpb1RlZSwgInNpbmsiKSk7Ci0gICAgICAgIGdzdF9lbGVtZW50X2Fk
ZF9wYWQobV9hdWRpb1NpbmtCaW4uZ2V0KCksIGdzdF9naG9zdF9wYWRfbmV3KCJzaW5rIiwgYXVk
aW9UZWVTaW5rUGFkLmdldCgpKSk7Ci0gICAgfQogCi0gICAgLy8gTGluayBhIG5ldyBzcmMgcGFk
IGZyb20gdGVlIHRvIHF1ZXVlICEgYXVkaW9jb252ZXJ0ICEKLSAgICAvLyBhdWRpb3Jlc2FtcGxl
ICEgdm9sdW1lICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhCi0gICAgLy8gYXV0b2F1
ZGlvc2luay4gVGhlIGF1ZGlvcmVzYW1wbGUgYW5kIGF1ZGlvY29udmVydCBhcmUgbmVlZGVkIHRv
Ci0gICAgLy8gZW5zdXJlIHRoZSBhdWRpbyBzaW5rIHJlY2VpdmVzIGJ1ZmZlcnMgaW4gdGhlIGNv
cnJlY3QgZm9ybWF0LgorICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTl9DQVNUKG1fYXVkaW9T
aW5rQmluLmdldCgpKSwgYXVkaW9UZWUsIGF1ZGlvUXVldWUsIGF1ZGlvQ29udmVydCwgYXVkaW9S
ZXNhbXBsZSwgdm9sdW1lRWxlbWVudCwgYXVkaW9Db252ZXJ0MiwgYXVkaW9SZXNhbXBsZTIsIGF1
ZGlvU2luaywgbnVsbHB0cik7CisKKyAgICAvLyBBZGQgYSBnaG9zdHBhZCB0byB0aGUgYmluIHNv
IGl0IGNhbiBwcm94eSB0byB0ZWUuCisgICAgYXV0byBhdWRpb1RlZVNpbmtQYWQgPSBhZG9wdEdS
ZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoYXVkaW9UZWUsICJzaW5rIikpOworICAgIGdz
dF9lbGVtZW50X2FkZF9wYWQobV9hdWRpb1NpbmtCaW4uZ2V0KCksIGdzdF9naG9zdF9wYWRfbmV3
KCJzaW5rIiwgYXVkaW9UZWVTaW5rUGFkLmdldCgpKSk7CisKKyAgICAvLyBMaW5rIGEgbmV3IHNy
YyBwYWQgZnJvbSB0ZWUgdG8gcXVldWUgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEg
dm9sdW1lICEgYXVkaW9jb252ZXJ0ICEKKyAgICAvLyBhdWRpb3Jlc2FtcGxlICEgYXVkaW9zaW5r
LiBUaGUgYXVkaW9yZXNhbXBsZSBhbmQgYXVkaW9jb252ZXJ0IGFyZSBuZWVkZWQgdG8gZW5zdXJl
IHRoZSBhdWRpbworICAgIC8vIHNpbmsgcmVjZWl2ZXMgYnVmZmVycyBpbiB0aGUgY29ycmVjdCBm
b3JtYXQuCiAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoYXVkaW9UZWUsICJzcmNfJXUi
LCBhdWRpb1F1ZXVlLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKICAgICBn
c3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChhdWRpb1F1ZXVlLCAic3JjIiwgYXVkaW9Db252ZXJ0
LCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKICAgICBnc3RfZWxlbWVudF9s
aW5rX3BhZHNfZnVsbChhdWRpb0NvbnZlcnQsICJzcmMiLCBhdWRpb1Jlc2FtcGxlLCAic2luayIs
IEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92
aWRlckdTdHJlYW1lci5oCmluZGV4IGQ2YmEyMmEzMTFlNTlmNzNhODE3MjhlZGY0NDUxN2RhZGQ1
M2VmYjAuLmU0ZjY1MTJmMTJhMDNmMTM5YzQzN2RjMjBkNzE3MjRiMWQ0YjIzNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVBy
b3ZpZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaApAQCAtNTcsNyArNTcsNyBAQCBw
dWJsaWM6CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcigpOwogICAgIH5BdWRpb1Nv
dXJjZVByb3ZpZGVyR1N0cmVhbWVyKCk7CiAKLSAgICB2b2lkIGNvbmZpZ3VyZUF1ZGlvQmluKEdz
dEVsZW1lbnQqIGF1ZGlvQmluLCBHc3RFbGVtZW50KiB0ZWVQcmVkZWNlc3Nvcik7CisgICAgdm9p
ZCBjb25maWd1cmVBdWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0JpbiwgR3N0RWxlbWVudCogYXVk
aW9TaW5rKTsKIAogICAgIHZvaWQgcHJvdmlkZUlucHV0KEF1ZGlvQnVzKiwgc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDbGllbnQoQXVkaW9Tb3VyY2VQcm92
aWRlckNsaWVudCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjcwOTA0MDdjNzU2MGY1NjMwMmZjZDA0Yzg3NmZiNzM2Y2ZkM2FhYzcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5jcHAKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJH
U3RyZWFtZXJBdWRpb01peGVyLmgiCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAi
R1N0cmVhbWVyQ29tbW9uLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyh3ZWJraXRfbWVk
aWFfZ3N0X2F1ZGlvX21peGVyX2RlYnVnKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtp
dF9tZWRpYV9nc3RfYXVkaW9fbWl4ZXJfZGVidWcKKworYm9vbCBHU3RyZWFtZXJBdWRpb01peGVy
Ojppc0F2YWlsYWJsZSgpCit7CisgICAgcmV0dXJuIHdlYmtpdEdzdENoZWNrVmVyc2lvbigxLCAx
OCwgMCkgJiYgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoImludGVyIikgJiYgaXNHU3RyZWFt
ZXJQbHVnaW5BdmFpbGFibGUoImF1ZGlvbWl4ZXIiKTsKK30KKworR1N0cmVhbWVyQXVkaW9NaXhl
ciYgR1N0cmVhbWVyQXVkaW9NaXhlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8R1N0cmVhbWVyQXVkaW9NaXhlcj4gc2hhcmVkSW5zdGFuY2U7CisgICAgcmV0dXJu
IHNoYXJlZEluc3RhbmNlOworfQorCitHU3RyZWFtZXJBdWRpb01peGVyOjpHU3RyZWFtZXJBdWRp
b01peGVyKCkKK3sKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRfbWVkaWFfZ3N0
X2F1ZGlvX21peGVyX2RlYnVnLCAid2Via2l0YXVkaW9taXhlciIsIDAsICJXZWJLaXQgR1N0cmVh
bWVyIGF1ZGlvIG1peGVyIik7CisgICAgbV9waXBlbGluZSA9IGdzdF9lbGVtZW50X2ZhY3Rvcnlf
bWFrZSgicGlwZWxpbmUiLCAid2Via2l0YXVkaW9taXhlciIpOworICAgIGNvbm5lY3RTaW1wbGVC
dXNNZXNzYWdlQ2FsbGJhY2sobV9waXBlbGluZS5nZXQoKSk7CisKKyAgICBtX21peGVyID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb21peGVyIiwgbnVsbHB0cik7CisgICAgR3N0RWxl
bWVudCogYXVkaW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdXRvYXVkaW9zaW5r
IiwgbnVsbHB0cik7CisKKyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU5fQ0FTVChtX3BpcGVs
aW5lLmdldCgpKSwgbV9taXhlci5nZXQoKSwgYXVkaW9TaW5rLCBudWxscHRyKTsKKyAgICBnc3Rf
ZWxlbWVudF9saW5rKG1fbWl4ZXIuZ2V0KCksIGF1ZGlvU2luayk7CisgICAgZ3N0X2VsZW1lbnRf
c2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9SRUFEWSk7Cit9CisKK3ZvaWQg
R1N0cmVhbWVyQXVkaW9NaXhlcjo6ZW5zdXJlU3RhdGUoR3N0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFu
Z2UpCit7CisjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMTQsIDApCisgICAgR1NUX0RFQlVHX09C
SkVDVChtX3BpcGVsaW5lLmdldCgpLCAiSGFuZGxpbmcgJXMgdHJhbnNpdGlvbiAoJXUgbWl4ZXIg
cGFkcykiLCBnc3Rfc3RhdGVfY2hhbmdlX2dldF9uYW1lKHN0YXRlQ2hhbmdlKSwgbV9taXhlci0+
bnVtc2lua3BhZHMpOworI2VuZGlmCisgICAgc3dpdGNoIChzdGF0ZUNoYW5nZSkgeworICAgIGNh
c2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6CisgICAgICAgIGdzdF9lbGVtZW50
X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19QTEFZSU5HOgorICAg
ICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1BM
QVlJTkcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUExBWUlO
R19UT19QQVVTRUQ6CisgICAgICAgIGlmIChtX21peGVyLT5udW1zaW5rcGFkcyA9PSAxKQorICAg
ICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFU
RV9QQVVTRUQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFV
U0VEX1RPX1JFQURZOgorICAgICAgICBpZiAobV9taXhlci0+bnVtc2lua3BhZHMgPT0gMSkKKyAg
ICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RB
VEVfUkVBRFkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVB
RFlfVE9fTlVMTDoKKyAgICAgICAgaWYgKG1fbWl4ZXItPm51bXNpbmtwYWRzID09IDEpCisgICAg
ICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRF
X05VTEwpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKK0dSZWZQdHI8R3N0UGFkPiBHU3RyZWFtZXJBdWRpb01peGVyOjpyZWdpc3RlclBy
b2R1Y2VyKEdzdEVsZW1lbnQqIGludGVyYXVkaW9TaW5rKQoreworICAgIEdzdEVsZW1lbnQqIHNy
YyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiaW50ZXJhdWRpb3NyYyIsIG51bGxwdHIpOwor
ICAgIGdfb2JqZWN0X3NldChzcmMsICJjaGFubmVsIiwgR1NUX0VMRU1FTlRfTkFNRShpbnRlcmF1
ZGlvU2luayksIG51bGxwdHIpOworICAgIGdfb2JqZWN0X3NldChpbnRlcmF1ZGlvU2luaywgImNo
YW5uZWwiLCBHU1RfRUxFTUVOVF9OQU1FKGludGVyYXVkaW9TaW5rKSwgbnVsbHB0cik7CisKKyAg
ICBHc3RFbGVtZW50KiBhdWRpb1Jlc2FtcGxlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJh
dWRpb3Jlc2FtcGxlIiwgbnVsbHB0cik7CisgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOX0NB
U1QobV9waXBlbGluZS5nZXQoKSksIHNyYywgYXVkaW9SZXNhbXBsZSwgbnVsbHB0cik7CisgICAg
Z3N0X2VsZW1lbnRfbGluayhzcmMsIGF1ZGlvUmVzYW1wbGUpOworCisgICAgYm9vbCBzaG91bGRT
dGFydCA9ICFtX21peGVyLT5udW1zaW5rcGFkczsKKworICAgIGF1dG8gbWl4ZXJQYWQgPSBhZG9w
dEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3JlcXVlc3RfcGFkKG1fbWl4ZXIuZ2V0KCksICJzaW5rXyV1
IikpOworICAgIGF1dG8gc3JjUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNf
cGFkKGF1ZGlvUmVzYW1wbGUsICJzcmMiKSk7CisgICAgZ3N0X3BhZF9saW5rKHNyY1BhZC5nZXQo
KSwgbWl4ZXJQYWQuZ2V0KCkpOworCisgICAgaWYgKHNob3VsZFN0YXJ0KQorICAgICAgICBnc3Rf
ZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1JFQURZKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChzcmMp
OworICAgICAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KGF1ZGlvUmVzYW1w
bGUpOworICAgIH0KKworICAgIEdTVF9ERUJVR19PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIlJl
Z2lzdGVyZWQgYXVkaW8gcHJvZHVjZXIgJSIgR1NUX1BUUl9GT1JNQVQsIG1peGVyUGFkLmdldCgp
KTsKKyAgICBHU1RfREVCVUdfQklOX1RPX0RPVF9GSUxFX1dJVEhfVFMoR1NUX0JJTl9DQVNUKG1f
cGlwZWxpbmUuZ2V0KCkpLCBHU1RfREVCVUdfR1JBUEhfU0hPV19BTEwsICJhdWRpby1taXhlci1h
ZnRlci1wcm9kdWNlci1yZWdpc3RyYXRpb24iKTsKKyAgICByZXR1cm4gbWl4ZXJQYWQ7Cit9CisK
K3ZvaWQgR1N0cmVhbWVyQXVkaW9NaXhlcjo6dW5yZWdpc3RlclByb2R1Y2VyKGNvbnN0IEdSZWZQ
dHI8R3N0UGFkPiYgbWl4ZXJQYWQpCit7CisgICAgR1NUX0RFQlVHX09CSkVDVChtX3BpcGVsaW5l
LmdldCgpLCAiVW5yZWdpc3RlcmluZyBhdWRpbyBwcm9kdWNlciAlIiBHU1RfUFRSX0ZPUk1BVCwg
bWl4ZXJQYWQuZ2V0KCkpOworCisgICAgYXV0byBwZWVyID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0
X3BlZXIobWl4ZXJQYWQuZ2V0KCkpKTsKKyAgICBhdXRvIGF1ZGlvUmVzYW1wbGUgPSBhZG9wdEdS
ZWYoZ3N0X3BhZF9nZXRfcGFyZW50X2VsZW1lbnQocGVlci5nZXQoKSkpOworICAgIGF1dG8gcmVz
YW1wbGVQZWVyUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKGF1ZGlv
UmVzYW1wbGUuZ2V0KCksICJzaW5rIikpOworICAgIGF1dG8gcmVzYW1wbGVQZWVyID0gYWRvcHRH
UmVmKGdzdF9wYWRfZ2V0X3BlZXIocmVzYW1wbGVQZWVyUGFkLmdldCgpKSk7CisgICAgYXV0byBp
bnRlcmF1ZGlvU3JjID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3BhcmVudF9lbGVtZW50KHJlc2Ft
cGxlUGVlci5nZXQoKSkpOworICAgIEdTVF9MT0dfT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJp
bnRlcmF1ZGlvc3JjOiAlIiBHU1RfUFRSX0ZPUk1BVCwgaW50ZXJhdWRpb1NyYy5nZXQoKSk7CisK
KyAgICBnc3RfZWxlbWVudF9zZXRfbG9ja2VkX3N0YXRlKGludGVyYXVkaW9TcmMuZ2V0KCksIHRy
dWUpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShpbnRlcmF1ZGlvU3JjLmdldCgpLCBHU1Rf
U1RBVEVfTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGF1ZGlvUmVzYW1wbGUuZ2V0
KCksIEdTVF9TVEFURV9OVUxMKTsKKworICAgIGdzdF9wYWRfdW5saW5rKHBlZXIuZ2V0KCksIG1p
eGVyUGFkLmdldCgpKTsKKyAgICBnc3RfZWxlbWVudF91bmxpbmsoaW50ZXJhdWRpb1NyYy5nZXQo
KSwgYXVkaW9SZXNhbXBsZS5nZXQoKSk7CisKKyAgICBnc3RfZWxlbWVudF9yZWxlYXNlX3JlcXVl
c3RfcGFkKG1fbWl4ZXIuZ2V0KCksIG1peGVyUGFkLmdldCgpKTsKKworICAgIGdzdF9iaW5fcmVt
b3ZlX21hbnkoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCBpbnRlcmF1ZGlvU3JjLmdl
dCgpLCBhdWRpb1Jlc2FtcGxlLmdldCgpLCBudWxscHRyKTsKKworICAgIGlmICghbV9taXhlci0+
bnVtc2lua3BhZHMpCisgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdl
dCgpLCBHU1RfU1RBVEVfTlVMTCk7CisKKyAgICBHU1RfREVCVUdfQklOX1RPX0RPVF9GSUxFX1dJ
VEhfVFMoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCBHU1RfREVCVUdfR1JBUEhfU0hP
V19BTEwsICJhdWRpby1taXhlci1hZnRlci1wcm9kdWNlci11bnJlZ2lzdHJhdGlvbiIpOworfQor
Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb01peGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9NaXhlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEx
ZTIxNmZlMzAxNzYzZmMxYTg0MTNkODM5ZTgzYjE2OWU3MmUzMzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVk
aW9NaXhlci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWlu
dCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgIkdS
ZWZQdHJHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEdTdHJlYW1lckF1ZGlvTWl4ZXIgeworICAgIGZyaWVuZCBOZXZl
ckRlc3Ryb3llZDxHU3RyZWFtZXJBdWRpb01peGVyPjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9v
bCBpc0F2YWlsYWJsZSgpOworICAgIHN0YXRpYyBHU3RyZWFtZXJBdWRpb01peGVyJiBzaW5nbGV0
b24oKTsKKworICAgIHZvaWQgZW5zdXJlU3RhdGUoR3N0U3RhdGVDaGFuZ2UpOworICAgIEdSZWZQ
dHI8R3N0UGFkPiByZWdpc3RlclByb2R1Y2VyKEdzdEVsZW1lbnQqKTsKKyAgICB2b2lkIHVucmVn
aXN0ZXJQcm9kdWNlcihjb25zdCBHUmVmUHRyPEdzdFBhZD4mKTsKKworcHJpdmF0ZToKKyAgICBH
U3RyZWFtZXJBdWRpb01peGVyKCk7CisKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fcGlwZWxp
bmU7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX21peGVyOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5jcHAKaW5kZXggZjJkYTNmYjM0NWFlZmE4NzFmNTEyNTljZjEyNWQwNTIxZTc2NWI2MS4u
N2FkMWMyYmE4MzZlMGI1ZWE3M2JiMTExMDFkZDdjODc2YzJlZjRiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5jcHAKQEAgLTI0LDkgKzI0LDExIEBACiAjaWYgVVNFKEdTVFJFQU1FUikKIAog
I2luY2x1ZGUgIkdMVmlkZW9TaW5rR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyQXVk
aW9NaXhlci5oIgogI2luY2x1ZGUgIkdzdEFsbG9jYXRvckZhc3RNYWxsb2MuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViS2l0
QXVkaW9TaW5rR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLWluZm8uaD4K
ICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8bXV0ZXg+CkBAIC0zMTgsNiArMzIwLDgg
QEAgYm9vbCBpbml0aWFsaXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpCiAg
ICAgICAgIGdzdF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXRnbHZpZGVvc2luayIsIEdTVF9S
QU5LX1BSSU1BUlksIFdFQktJVF9UWVBFX0dMX1ZJREVPX1NJTkspOwogI2VuZGlmCiAjZW5kaWYK
KyAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCBhdXRvYXVkaW9zaW5rIHRvIGF1dG9wbHVnIG91ciBz
aW5rLgorICAgICAgICBnc3RfZWxlbWVudF9yZWdpc3RlcigwLCAid2Via2l0YXVkaW9zaW5rIiwg
R1NUX1JBTktfTk9ORSwgV0VCS0lUX1RZUEVfQVVESU9fU0lOSyk7CiAKICAgICAgICAgLy8gSWYg
dGhlIEZESy1BQUMgZGVjb2RlciBpcyBhdmFpbGFibGUsIHByb21vdGUgaXQgYW5kIGRvd25yYW5r
IHRoZQogICAgICAgICAvLyBsaWJhdiBBQUMgZGVjb2RlcnMsIGR1ZSB0byB0aGVpciBicm9rZW4g
TEMgc3VwcG9ydCwgYXMgcmVwb3J0ZWQgaW46CkBAIC00MjYsNiArNDMwLDI2IEBAIGJvb2wgaXNH
U3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKICAgICByZXR1cm4gcGx1
Z2luOwogfQogCitHc3RFbGVtZW50KiBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygpCit7CisgICAg
R3N0RWxlbWVudCogYXVkaW9TaW5rID0gd2Via2l0QXVkaW9TaW5rTmV3KCk7CisgICAgaWYgKCFh
dWRpb1NpbmspIHsKKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgV2ViS2l0IGF1ZGlvIHNpbmsg
Y29uZmlndXJhdGlvbiBmYWlsZWQuIEl0IGNhbiBoYXBwZW4gZm9yIHRoZSBmb2xsb3dpbmcgcmVh
c29uczoKKyAgICAgICAgLy8gLSBhdWRpbyBtaXhpbmcgd2FzIG5vdCByZXF1ZXN0ZWQgdXNpbmcg
dGhlIFdFQktJVF9HU1RfRU5BQkxFX0FVRElPX01JWEVSCisgICAgICAgIC8vIC0gYXVkaW8gbWl4
aW5nIHdhcyByZXF1ZXN0ZWQgdXNpbmcgdGhlIFdFQktJVF9HU1RfRU5BQkxFX0FVRElPX01JWEVS
IGJ1dCB0aGUgYXVkaW8gbWl4ZXIKKyAgICAgICAgLy8gICBydW50aW1lIHJlcXVpcmVtZW50cyBh
cmUgbm90IGZ1bGxmaWxsZWQuCisgICAgICAgIC8vIC0gdGhlIHNpbmsgd2FzIGNyZWF0ZWQgZm9y
IHRoZSBXUEUgcG9ydCwgYXVkaW8gbWl4aW5nIHdhcyBub3QgcmVxdWVzdGVkIGFuZCBubworICAg
ICAgICAvLyAgIFdQRUJhY2tlbmQtRkRPIGF1ZGlvIHJlY2VpdmVyIGhhcyBiZWVuIHJlZ2lzdGVy
ZWQgYXQgcnVudGltZS4KKyAgICAgICAgYXVkaW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKCJhdXRvYXVkaW9zaW5rIiwgbnVsbHB0cik7CisgICAgfQorICAgIGlmICghYXVkaW9TaW5r
KSB7CisgICAgICAgIEdTVF9XQVJOSU5HKCJHU3RyZWFtZXIncyBhdXRvYXVkaW9zaW5rIG5vdCBm
b3VuZC4gUGxlYXNlIGNoZWNrIHlvdXIgZ3N0LXBsdWdpbnMtZ29vZCBpbnN0YWxsYXRpb24iKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGF1ZGlvU2luazsK
K30KKwogfQogCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
aAppbmRleCAxZmRhMTA4ZTA5NjRhM2FjZmIxZmYyZTYxNzAxYjNmN2Q4Y2Y5MDczLi4yOTUzMGI1
Njc4ZGVkNmMyN2E2ODM1YTY2MTk5MzI1ZDE3NGU4ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1v
bi5oCkBAIC0yOTIsNiArMjkyLDggQEAgZW51bSBjbGFzcyBHc3RWaWRlb0RlY29kZXJQbGF0Zm9y
bSB7IElteFZQVSwgVmlkZW80TGludXgsIE9wZW5NQVggfTsKIAogYm9vbCBpc0dTdHJlYW1lclBs
dWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKTsKIAorR3N0RWxlbWVudCogY3JlYXRlUGxh
dGZvcm1BdWRpb1NpbmsoKTsKKwogfQogCiAjaWZuZGVmIEdTVF9CVUZGRVJfRFRTX09SX1BUUwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dV
bmlxdWVQdHJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HVW5pcXVlUHRyR1N0cmVhbWVyLmgKaW5kZXggYWEwNzc0OGRkNzU2NWIwYTY4Mjdm
MzNmMzgzMmM1ZGFjYmY0ZTVkMC4uYmY3NGVjZjAyY2MyMmY2MDZlYmNiOWZlODVjMDM0YjI2YzQw
NjQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dVbmlxdWVQdHJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1VuaXF1ZVB0ckdTdHJlYW1lci5oCkBAIC0zNCw2ICszNCwxMCBA
QAogI2luY2x1ZGUgPHdwZS9leHRlbnNpb25zL3ZpZGVvLXBsYW5lLWRpc3BsYXktZG1hYnVmLmg+
CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoQlVJTERJTkdfV2ViQ29yZSkgJiYgUExBVEZPUk0oV1BF
KSAmJiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorI2luY2x1ZGUgPHdwZS9l
eHRlbnNpb25zL2F1ZGlvLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKIFdURl9ERUZJ
TkVfR1BUUl9ERUxFVEVSKEdzdFN0cnVjdHVyZSwgZ3N0X3N0cnVjdHVyZV9mcmVlKQpAQCAtNDks
NiArNTMsOSBAQCBXVEZfREVGSU5FX0dQVFJfREVMRVRFUihHc3RBdWRpb0NvbnZlcnRlciwgZ3N0
X2F1ZGlvX2NvbnZlcnRlcl9mcmVlKQogV1RGX0RFRklORV9HUFRSX0RFTEVURVIoc3RydWN0IHdw
ZV92aWRlb19wbGFuZV9kaXNwbGF5X2RtYWJ1Zl9zb3VyY2UsIHdwZV92aWRlb19wbGFuZV9kaXNw
bGF5X2RtYWJ1Zl9zb3VyY2VfZGVzdHJveSkKICNlbmRpZgogCisjaWYgZGVmaW5lZChCVUlMRElO
R19XZWJDb3JlKSAmJiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19F
WFRFTlNJT04pCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihzdHJ1Y3Qgd3BlX2F1ZGlvX3NvdXJj
ZSwgd3BlX2F1ZGlvX3NvdXJjZV9kZXN0cm95KQorI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBVU0Uo
R1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAppbmRleCBlMmJlODlhYmRjMDI1ZDc1NGM4ODllYTNlZmY0MzA2YzE4NmY4ZGUxLi4zYmYy
ZTEzZGY5MmFmN2U0YjdjNzczMzA0YjJjMWQwODZhMWZiODhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgorI2luY2x1ZGUgIkdTdHJlYW1lckF1ZGlvTWl4ZXIuaCIKICNpbmNsdWRlICJHU3Ry
ZWFtZXJDb21tb24uaCIKICNpbmNsdWRlICJHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuaCIKICNp
bmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKQEAgLTQzLDYgKzQ0LDcgQEAKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNpbmNsdWRlICJWaWRl
b1NpbmtHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuaCIK
ICNpbmNsdWRlICJXZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJBdWRpb1Ry
YWNrUHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkluYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lci5oIgpAQCAtMjM2LDEwICsyMzgsOSBAQCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgIGlmIChXRUJL
SVRfSVNfV0VCX1NSQyhtX3NvdXJjZS5nZXQoKSkgJiYgR1NUX09CSkVDVF9QQVJFTlQobV9zb3Vy
Y2UuZ2V0KCkpKQogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMo
R1NUX0VMRU1FTlRfUEFSRU5UKG1fc291cmNlLmdldCgpKSwgcmVpbnRlcnByZXRfY2FzdDxncG9p
bnRlcj4odXJpRGVjb2RlQmluRWxlbWVudEFkZGVkQ2FsbGJhY2spLCB0aGlzKTsKIAotICAgIGlm
IChtX2F1dG9BdWRpb1NpbmspIHsKLSAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9ieV9mdW5jKEdfT0JKRUNUKG1fYXV0b0F1ZGlvU2luay5nZXQoKSksCi0gICAgICAgICAgICBy
ZWludGVycHJldF9jYXN0PGdwb2ludGVyPihzZXRBdWRpb1N0cmVhbVByb3BlcnRpZXNDYWxsYmFj
ayksIHRoaXMpOwotICAgIH0KKyAgICBhdXRvKiBzaW5rID0gYXVkaW9TaW5rKCk7CisgICAgaWYg
KHNpbmsgJiYgIVdFQktJVF9JU19BVURJT19TSU5LKHNpbmspKQorICAgICAgICBnX3NpZ25hbF9o
YW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoR19PQkpFQ1Qoc2luayksIHJlaW50ZXJwcmV0X2Nh
c3Q8Z3BvaW50ZXI+KHNldEF1ZGlvU3RyZWFtUHJvcGVydGllc0NhbGxiYWNrKSwgdGhpcyk7CiAK
ICAgICBtX3JlYWR5VGltZXJIYW5kbGVyLnN0b3AoKTsKICAgICBmb3IgKGF1dG8mIG1pc3NpbmdQ
bHVnaW5DYWxsYmFjayA6IG1fbWlzc2luZ1BsdWdpbkNhbGxiYWNrcykgewpAQCAtNTE4LDE3ICs1
MTksMTYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNlZWsoY29uc3QgTWVk
aWFUaW1lJiBtZWRpYVRpbWUpCiAKICAgICAvLyBBdm9pZCB1c2VsZXNzIHNlZWtpbmcuCiAgICAg
aWYgKG1lZGlhVGltZSA9PSBjdXJyZW50TWVkaWFUaW1lKCkpIHsKLSAgICAgICAgR1NUX0RFQlVH
X09CSkVDVChwaXBlbGluZSgpLCAiW1NlZWtdIHNlZWsgdG8gRU9TIHBvc2l0aW9uIHVuaGFuZGxl
ZCIpOworICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJbU2Vla10gQWxyZWFk
eSBhdCByZXF1ZXN0ZWQgcG9zaXRpb24uIEFib3J0aW5nLiIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgTWVkaWFUaW1lIHRpbWUgPSBzdGQ6Om1pbihtZWRpYVRpbWUsIGR1cmF0aW9u
TWVkaWFUaW1lKCkpOwotCiAgICAgaWYgKG1faXNMaXZlU3RyZWFtKSB7CiAgICAgICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIltTZWVrXSBMaXZlIHN0cmVhbSBzZWVrIHVuaGFuZGxl
ZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgTWVkaWFUaW1lIHRpbWUgPSBzdGQ6
Om1pbihtZWRpYVRpbWUsIGR1cmF0aW9uTWVkaWFUaW1lKCkpOwogICAgIEdTVF9JTkZPX09CSkVD
VChwaXBlbGluZSgpLCAiW1NlZWtdIHNlZWtpbmcgdG8gJXMiLCB0b1N0cmluZyh0aW1lKS51dGY4
KCkuZGF0YSgpKTsKIAogICAgIGlmIChtX2lzU2Vla2luZykgewpAQCAtMTAwNCwxNyArMTAwNCwx
NiBAQCBzdGF0aWMgdm9pZCBzZXRTeW5jT25DbG9jayhHc3RFbGVtZW50ICplbGVtZW50LCBib29s
IHN5bmMpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghR1NUX0lTX0JJTihlbGVtZW50KSkg
ewotICAgICAgICBnX29iamVjdF9zZXQoZWxlbWVudCwgInN5bmMiLCBzeW5jLCBOVUxMKTsKKyAg
ICAgICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQsICJzeW5jIiwgc3luYywgbnVsbHB0cik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBHc3RJdGVyYXRvciogaXQgPSBnc3RfYmluX2l0ZXJh
dGVfc2lua3MoR1NUX0JJTihlbGVtZW50KSk7Ci0gICAgd2hpbGUgKGdzdF9pdGVyYXRvcl9mb3Jl
YWNoKGl0LCAoR3N0SXRlcmF0b3JGb3JlYWNoRnVuY3Rpb24pKFtdKGNvbnN0IEdWYWx1ZSogaXRl
bSwgdm9pZCogc3luY1B0cikgeworICAgIEdVbmlxdWVQdHI8R3N0SXRlcmF0b3I+IGl0ZXJhdG9y
KGdzdF9iaW5faXRlcmF0ZV9zaW5rcyhHU1RfQklOX0NBU1QoZWxlbWVudCkpKTsKKyAgICB3aGls
ZSAoZ3N0X2l0ZXJhdG9yX2ZvcmVhY2goaXRlcmF0b3IuZ2V0KCksIHN0YXRpY19jYXN0PEdzdEl0
ZXJhdG9yRm9yZWFjaEZ1bmN0aW9uPihbXShjb25zdCBHVmFsdWUqIGl0ZW0sIHZvaWQqIHN5bmNQ
dHIpIHsKICAgICAgICAgYm9vbCogc3luYyA9IHN0YXRpY19jYXN0PGJvb2wqPihzeW5jUHRyKTsK
LSAgICAgICAgc2V0U3luY09uQ2xvY2soR1NUX0VMRU1FTlQoZ192YWx1ZV9nZXRfb2JqZWN0KGl0
ZW0pKSwgKnN5bmMpOworICAgICAgICBzZXRTeW5jT25DbG9jayhHU1RfRUxFTUVOVF9DQVNUKGdf
dmFsdWVfZ2V0X29iamVjdChpdGVtKSksICpzeW5jKTsKICAgICB9KSwgJnN5bmMpID09IEdTVF9J
VEVSQVRPUl9SRVNZTkMpCi0gICAgICAgIGdzdF9pdGVyYXRvcl9yZXN5bmMoaXQpOwotICAgIGdz
dF9pdGVyYXRvcl9mcmVlKGl0KTsKKyAgICAgICAgZ3N0X2l0ZXJhdG9yX3Jlc3luYyhpdGVyYXRv
ci5nZXQoKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzeW5jT25D
bG9jayhib29sIHN5bmMpCkBAIC0xMzUzLDI2ICsxMzUyLDI5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUg
bmV0d29yCiAKIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
QXVkaW9TaW5rKCkKIHsKLSAgICBtX2F1dG9BdWRpb1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5
X21ha2UoImF1dG9hdWRpb3NpbmsiLCBudWxscHRyKTsKLSAgICBpZiAoIW1fYXV0b0F1ZGlvU2lu
aykgewotICAgICAgICBHU1RfV0FSTklORygiR1N0cmVhbWVyJ3MgYXV0b2F1ZGlvc2luayBub3Qg
Zm91bmQuIFBsZWFzZSBjaGVjayB5b3VyIGdzdC1wbHVnaW5zLWdvb2QgaW5zdGFsbGF0aW9uIik7
CisgICAgR3N0RWxlbWVudCogYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOworICAgIGlmICghYXVkaW9TaW5rKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CiAKLSAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBw
ZWQobV9hdXRvQXVkaW9TaW5rLmdldCgpLCAiY2hpbGQtYWRkZWQiLCBHX0NBTExCQUNLKHNldEF1
ZGlvU3RyZWFtUHJvcGVydGllc0NhbGxiYWNrKSwgdGhpcyk7CisgICAgaWYgKCFXRUJLSVRfSVNf
QVVESU9fU0lOSyhhdWRpb1NpbmspKQorICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQo
YXVkaW9TaW5rLCAiY2hpbGQtYWRkZWQiLCBHX0NBTExCQUNLKHNldEF1ZGlvU3RyZWFtUHJvcGVy
dGllc0NhbGxiYWNrKSwgdGhpcyk7CiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIEdzdEVs
ZW1lbnQqIGF1ZGlvU2lua0JpbiA9IGdzdF9iaW5fbmV3KCJhdWRpby1zaW5rIik7CiAgICAgZW5z
dXJlQXVkaW9Tb3VyY2VQcm92aWRlcigpOwotICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlci0+Y29u
ZmlndXJlQXVkaW9CaW4oYXVkaW9TaW5rQmluLCBudWxscHRyKTsKKyAgICBtX2F1ZGlvU291cmNl
UHJvdmlkZXItPmNvbmZpZ3VyZUF1ZGlvQmluKGF1ZGlvU2lua0JpbiwgYXVkaW9TaW5rKTsKICAg
ICByZXR1cm4gYXVkaW9TaW5rQmluOwogI2Vsc2UKLSAgICByZXR1cm4gbV9hdXRvQXVkaW9TaW5r
LmdldCgpOworICAgIHJldHVybiBhdWRpb1Npbms7CiAjZW5kaWYKIH0KIAogR3N0RWxlbWVudCog
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NpbmsoKSBjb25zdAogeworICAgIGlm
ICghbV9waXBlbGluZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBHc3RFbGVtZW50
KiBzaW5rOwogICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAiYXVkaW8tc2luayIs
ICZzaW5rLCBudWxscHRyKTsKICAgICByZXR1cm4gc2luazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBjZGZhZDkxODhjYmE3YmRjOThjYzNiYjY5
NWUyY2MxNGE3NzVhZWJlLi5mMzFkMzc1YjAyZGEwOTc5Mjg5YWNjMjAwZGQ4NjJmYWUxMzQxMDRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC01
MTMsNyArNTEzLDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyPiBtX2F1ZGlvU291cmNlUHJv
dmlkZXI7CiAjZW5kaWYKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fYXV0b0F1ZGlvU2luazsK
ICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fZG93bmxvYWRCdWZmZXI7CiAgICAgVmVjdG9yPFJl
ZlB0cjxNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4+IG1f
bWlzc2luZ1BsdWdpbkNhbGxiYWNrczsKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4+IG1fYXVkaW9UcmFja3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5r
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1MTI4Mjk4OTI2MDNj
NmU0NDE0MGU3YzgxMmZjNzNhNGNkYmZhNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVy
LmNwcApAQCAtMCwwICsxLDMzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEg
Uy5MCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvU2lua0dTdHJlYW1l
ci5oIgorCisjaWYgVVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgIkdTdHJlYW1lckF1ZGlvTWl4
ZXIuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKKyNpbmNsdWRlIDxnc3QvYXBwL2dz
dGFwcHNpbmsuaD4KKyNpbmNsdWRlIDxnc3QvcGJ1dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KKyNp
bmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CisKKyNp
ZiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04pCisj
aW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5TGli
V1BFLmgiCisjaW5jbHVkZSA8d3BlL2V4dGVuc2lvbnMvYXVkaW8uaD4KKyNlbmRpZgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RydWN0IF9XZWJLaXRBdWRpb1NpbmtQcml2YXRlIHsK
KyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGludGVyQXVkaW9TaW5rOworICAgIEdSZWZQdHI8R3N0
UGFkPiBtaXhlclBhZDsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHZvbHVtZUVsZW1lbnQ7Cisg
ICAgR1JlZlB0cjxHc3RFbGVtZW50PiBhcHBzaW5rOworCisjaWYgUExBVEZPUk0oV1BFKSAmJiBV
U0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorICAgIEdVbmlxdWVQdHI8c3RydWN0
IHdwZV9hdWRpb19zb3VyY2U+IHdwZUF1ZGlvU291cmNlOworICAgIGludCBtX3N0cmVhbUlkOwor
CisgICAgLy8gd3BlX2F1ZGlvX3NvdXJjZSBzdGF0ZToKKyAgICAvLyAtIEdTVF9TVEFURV9OVUxM
OiBub3Qgc3RhcnRlZCBvciBFT1MKKyAgICAvLyAtIEdTVF9TVEFURV9QTEFZSU5HOiBhdCBsZWFz
dCBvbmUgcGFja2V0IHdhcyBlbWl0dGVkCisgICAgLy8gLSBHU1RfU1RBVEVfUEFVU0VEOiBwYXVz
ZSBub3RpZmljYXRpb24gd2FzIHNlbnQKKyAgICBHc3RTdGF0ZSBzb3VyY2VTdGF0ZTsKKyNlbmRp
ZgorfTsKKworZW51bSB7CisgICAgUFJPUF8wLAorICAgIFBST1BfVk9MVU1FLAorICAgIFBST1Bf
TVVURSwKK307CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzaW5rVGVtcGxhdGUgPSBH
U1RfU1RBVElDX1BBRF9URU1QTEFURSgic2luayIsIEdTVF9QQURfU0lOSywgR1NUX1BBRF9BTFdB
WVMsCisgICAgR1NUX1NUQVRJQ19DQVBTKCJhdWRpby94LXJhdyIpKTsKKworR1NUX0RFQlVHX0NB
VEVHT1JZX1NUQVRJQyh3ZWJraXRfYXVkaW9fc2lua19kZWJ1Zyk7CisjZGVmaW5lIEdTVF9DQVRf
REVGQVVMVCB3ZWJraXRfYXVkaW9fc2lua19kZWJ1ZworCisjZGVmaW5lIHdlYmtpdF9hdWRpb19z
aW5rX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKK1dFQktJVF9ERUZJTkVfVFlQRV9XSVRIX0NP
REUoV2ViS2l0QXVkaW9TaW5rLCB3ZWJraXRfYXVkaW9fc2luaywgR1NUX1RZUEVfQklOLAorICAg
IEdfSU1QTEVNRU5UX0lOVEVSRkFDRShHU1RfVFlQRV9TVFJFQU1fVk9MVU1FLCBudWxscHRyKTsK
KyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRfYXVkaW9fc2lua19kZWJ1ZywgIndl
YmtpdGF1ZGlvc2luayIsIDAsICJ3ZWJraXQgYXVkaW8gc2luayBlbGVtZW50IikKKykKKworI2lm
IFBMQVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTikKK3N0
cnVjdCBBdWRpb1BhY2tldEhvbGRlciB7CisgICAgZXhwbGljaXQgQXVkaW9QYWNrZXRIb2xkZXIo
R3N0QnVmZmVyKiBidWZmZXIpCisgICAgeworICAgICAgICB0aGlzLT5idWZmZXIgPSBHc3RNYXBw
ZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlcik7CisgICAgfQorCisgICAgfkF1ZGlvUGFja2V0
SG9sZGVyKCkKKyAgICB7CisgICAgICAgIGlmIChmZCkKKyAgICAgICAgICAgIGNsb3NlKCpmZCk7
CisgICAgfQorCisgICAgT3B0aW9uYWw8c3RkOjpwYWlyPHVpbnQzMl90LCBzaXplX3Q+PiBtYXAo
KQorICAgIHsKKyAgICAgICAgZmQgPSBtZW1mZF9jcmVhdGUoIndwZS1hdWRpby1idWZmZXIiLCBN
RkRfQ0xPRVhFQyk7CisgICAgICAgIGlmICgqZmQgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgIGlmIChmdHJ1bmNhdGUoKmZkLCBidWZmZXItPnNpemUo
KSkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHNz
aXplX3QgYnl0ZXNXcml0dGVuID0gd3JpdGUoKmZkLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICBpZiAoYnl0ZXNXcml0dGVuIDwgMCkKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNX
cml0dGVuKSAhPSBidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgaWYgKGxzZWVrKCpmZCwgMCwgU0VFS19TRVQpID09IC0xKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCpmZCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICB9CisK
KyAgICBPcHRpb25hbDxpbnQzMl90PiBmZDsKKyAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZm
ZXI+IGJ1ZmZlcjsKK307CisKK3N0YXRpYyB2b2lkIHdlYktpdEF1ZGlvU2lua0hhbmRsZVNhbXBs
ZShXZWJLaXRBdWRpb1NpbmsqIHNpbmssIEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSkKK3sK
KyAgICBhdXRvKiB3cGVBdWRpb1NvdXJjZSA9IHNpbmstPnByaXYtPndwZUF1ZGlvU291cmNlLmdl
dCgpOworICAgIHN0YXRpYyBBdG9taWM8aW50MzJfdD4gdW5pcXVlSWQ7CisKKyAgICBpZiAoc2lu
ay0+cHJpdi0+c291cmNlU3RhdGUgPT0gR1NUX1NUQVRFX05VTEwpIHsKKyAgICAgICAgc2luay0+
cHJpdi0+bV9zdHJlYW1JZCA9IHVuaXF1ZUlkLmV4Y2hhbmdlQWRkKDEpOworICAgICAgICBHc3RD
YXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhzYW1wbGUuZ2V0KCkpOworICAgICAgICBH
c3RBdWRpb0luZm8gaW5mbzsKKyAgICAgICAgZ3N0X2F1ZGlvX2luZm9faW5pdCgmaW5mbyk7Cisg
ICAgICAgIGdzdF9hdWRpb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2Fwcyk7CisgICAgICAgIGNv
bnN0IGNoYXIqIGZvcm1hdCA9IGdzdF9hdWRpb19mb3JtYXRfdG9fc3RyaW5nKEdTVF9BVURJT19J
TkZPX0ZPUk1BVCgmaW5mbykpOworICAgICAgICB3cGVfYXVkaW9fc291cmNlX3N0YXJ0KHdwZUF1
ZGlvU291cmNlLCBzaW5rLT5wcml2LT5tX3N0cmVhbUlkLCBHU1RfQVVESU9fSU5GT19DSEFOTkVM
UygmaW5mbyksIGZvcm1hdCwgR1NUX0FVRElPX0lORk9fUkFURSgmaW5mbykpOworICAgICAgICBz
aW5rLT5wcml2LT5zb3VyY2VTdGF0ZSA9IEdTVF9TVEFURV9QTEFZSU5HOworICAgIH0KKworICAg
IGF1dG8qIGhvbGRlciA9IG5ldyBBdWRpb1BhY2tldEhvbGRlcihnc3Rfc2FtcGxlX2dldF9idWZm
ZXIoc2FtcGxlLmdldCgpKSk7CisgICAgYXV0byBtYXBEYXRhID0gaG9sZGVyLT5tYXAoKTsKKyAg
ICBpZiAoIW1hcERhdGEpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzaW5rLCAiVW5hYmxl
IHRvIHByZXBhcmUgc2hhcmVkIGF1ZGlvIGJ1ZmZlciIpOworICAgICAgICBkZWxldGUgaG9sZGVy
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHdwZV9hdWRpb19zb3VyY2VfcGFja2V0KHdw
ZUF1ZGlvU291cmNlLCBzaW5rLT5wcml2LT5tX3N0cmVhbUlkLCBtYXBEYXRhLT5maXJzdCwgbWFw
RGF0YS0+c2Vjb25kLCBbXSh2b2lkKiBkYXRhKSB7CisgICAgICAgIGF1dG8qIGhvbGRlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8QXVkaW9QYWNrZXRIb2xkZXIqPihkYXRhKTsKKyAgICAgICAgZGVsZXRl
IGhvbGRlcjsKKyAgICB9LCBob2xkZXIpOworfQorI2VuZGlmCisKK3N0YXRpYyBib29sIHdlYktp
dEF1ZGlvU2lua0NvbmZpZ3VyZShXZWJLaXRBdWRpb1NpbmsqIHNpbmspCit7CisjaWYgUExBVEZP
Uk0oV1BFKSAmJiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorICAgIHNpbmst
PnByaXYtPnNvdXJjZVN0YXRlID0gR1NUX1NUQVRFX05VTEw7CisgICAgYXV0byYgc2hhcmVkRGlz
cGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpOworICAgIGlmIChpczxQbGF0
Zm9ybURpc3BsYXlMaWJXUEU+KHNoYXJlZERpc3BsYXkpKSB7CisgICAgICAgIHNpbmstPnByaXYt
PndwZUF1ZGlvU291cmNlLnJlc2V0KHdwZV9hdWRpb19zb3VyY2VfY3JlYXRlKGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheUxpYldQRT4oc2hhcmVkRGlzcGxheSkuYmFja2VuZCgpKSk7CisgICAgICAg
IGlmICh3cGVfYXVkaW9fc291cmNlX2hhc19yZWNlaXZlcihzaW5rLT5wcml2LT53cGVBdWRpb1Nv
dXJjZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIHNpbmstPnByaXYtPnZvbHVtZUVsZW1lbnQgPSBn
c3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInZvbHVtZSIsIG51bGxwdHIpOworICAgICAgICAgICAg
c2luay0+cHJpdi0+YXBwc2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXBwc2luayIs
IG51bGxwdHIpOworICAgICAgICAgICAgZ3N0X2FwcF9zaW5rX3NldF9lbWl0X3NpZ25hbHMoR1NU
X0FQUF9TSU5LKHNpbmstPnByaXYtPmFwcHNpbmsuZ2V0KCkpLCBUUlVFKTsKKworICAgICAgICAg
ICAgZ19zaWduYWxfY29ubmVjdChzaW5rLT5wcml2LT5hcHBzaW5rLmdldCgpLCAibmV3LXNhbXBs
ZSIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqIGFwcHNpbmssIFdlYktpdEF1ZGlvU2luayog
c2luaykgLT4gR3N0Rmxvd1JldHVybiB7CisgICAgICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBh
ZG9wdEdSZWYoZ3N0X2FwcF9zaW5rX3B1bGxfc2FtcGxlKEdTVF9BUFBfU0lOSyhhcHBzaW5rKSkp
OworICAgICAgICAgICAgICAgIHdlYktpdEF1ZGlvU2lua0hhbmRsZVNhbXBsZShzaW5rLCBXVEZN
b3ZlKHNhbXBsZSkpOworICAgICAgICAgICAgICAgIHJldHVybiBHU1RfRkxPV19PSzsKKyAgICAg
ICAgICAgIH0pLCBzaW5rKTsKKyAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2luay0+cHJp
di0+YXBwc2luay5nZXQoKSwgIm5ldy1wcmVyb2xsIiwgR19DQUxMQkFDSygrW10oR3N0RWxlbWVu
dCogYXBwc2luaywgV2ViS2l0QXVkaW9TaW5rKiBzaW5rKSAtPiBHc3RGbG93UmV0dXJuIHsKKyAg
ICAgICAgICAgICAgICBhdXRvIHNhbXBsZSA9IGFkb3B0R1JlZihnc3RfYXBwX3NpbmtfcHVsbF9w
cmVyb2xsKEdTVF9BUFBfU0lOSyhhcHBzaW5rKSkpOworICAgICAgICAgICAgICAgIHdlYktpdEF1
ZGlvU2lua0hhbmRsZVNhbXBsZShzaW5rLCBXVEZNb3ZlKHNhbXBsZSkpOworICAgICAgICAgICAg
ICAgIHJldHVybiBHU1RfRkxPV19PSzsKKyAgICAgICAgICAgIH0pLCBzaW5rKTsKKworICAgICAg
ICAgICAgZ19zaWduYWxfY29ubmVjdChzaW5rLT5wcml2LT5hcHBzaW5rLmdldCgpLCAiZW9zIiwg
R19DQUxMQkFDSygrW10oR3N0RWxlbWVudCosIFdlYktpdEF1ZGlvU2luayogc2luaykgeworICAg
ICAgICAgICAgICAgIHdwZV9hdWRpb19zb3VyY2Vfc3RvcChzaW5rLT5wcml2LT53cGVBdWRpb1Nv
dXJjZS5nZXQoKSwgc2luay0+cHJpdi0+bV9zdHJlYW1JZCk7CisgICAgICAgICAgICAgICAgc2lu
ay0+cHJpdi0+c291cmNlU3RhdGUgPSBHU1RfU1RBVEVfTlVMTDsKKyAgICAgICAgICAgIH0pLCBz
aW5rKTsKKworICAgICAgICAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOX0NBU1Qoc2luayks
IHNpbmstPnByaXYtPnZvbHVtZUVsZW1lbnQuZ2V0KCksIHNpbmstPnByaXYtPmFwcHNpbmsuZ2V0
KCksIG51bGxwdHIpOworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfbGluayhzaW5rLT5wcml2LT52
b2x1bWVFbGVtZW50LmdldCgpLCBzaW5rLT5wcml2LT5hcHBzaW5rLmdldCgpKTsKKworICAgICAg
ICAgICAgYXV0byB0YXJnZXRQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19w
YWQoc2luay0+cHJpdi0+dm9sdW1lRWxlbWVudC5nZXQoKSwgInNpbmsiKSk7CisgICAgICAgICAg
ICBHc3RQYWQqIHNpbmtQYWQgPSB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZSgm
c2lua1RlbXBsYXRlLCAic2luayIsIHRhcmdldFBhZC5nZXQoKSk7CisgICAgICAgICAgICBnc3Rf
ZWxlbWVudF9hZGRfcGFkKEdTVF9FTEVNRU5UX0NBU1Qoc2luayksIHNpbmtQYWQpOworICAgICAg
ICAgICAgR1NUX09CSkVDVF9GTEFHX1NFVChzaW5rUGFkLCBHU1RfUEFEX0ZMQUdfTkVFRF9QQVJF
TlQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYK
KworICAgIGNvbnN0IGNoYXIqIHZhbHVlID0gZ19nZXRlbnYoIldFQktJVF9HU1RfRU5BQkxFX0FV
RElPX01JWEVSIik7CisgICAgaWYgKHZhbHVlICYmIGVxdWFsKHZhbHVlLCAiMSIpKSB7CisgICAg
ICAgIGlmICghR1N0cmVhbWVyQXVkaW9NaXhlcjo6aXNBdmFpbGFibGUoKSkgeworICAgICAgICAg
ICAgR1NUX1dBUk5JTkcoIkludGVybmFsIGF1ZGlvIG1peGluZyByZXF1ZXN0IGNhbm5vdCBiZSBm
dWxmaWxsZWQuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAg
ICAgICBzaW5rLT5wcml2LT5pbnRlckF1ZGlvU2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFr
ZSgiaW50ZXJhdWRpb3NpbmsiLCBudWxscHRyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2lu
ay0+cHJpdi0+aW50ZXJBdWRpb1NpbmspOworCisgICAgICAgIGdzdF9iaW5fYWRkKEdTVF9CSU5f
Q0FTVChzaW5rKSwgc2luay0+cHJpdi0+aW50ZXJBdWRpb1NpbmsuZ2V0KCkpOworICAgICAgICBh
dXRvIHRhcmdldFBhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChzaW5r
LT5wcml2LT5pbnRlckF1ZGlvU2luay5nZXQoKSwgInNpbmsiKSk7CisgICAgICAgIGdzdF9lbGVt
ZW50X2FkZF9wYWQoR1NUX0VMRU1FTlRfQ0FTVChzaW5rKSwgd2Via2l0R3N0R2hvc3RQYWRGcm9t
U3RhdGljVGVtcGxhdGUoJnNpbmtUZW1wbGF0ZSwgInNpbmsiLCB0YXJnZXRQYWQuZ2V0KCkpKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3Rh
dGljIEdzdE9iamVjdCogZ2V0SW50ZXJuYWxWb2x1bWVPYmplY3QoV2ViS2l0QXVkaW9TaW5rKiBz
aW5rKQoreworICAgIGlmIChzaW5rLT5wcml2LT52b2x1bWVFbGVtZW50KQorICAgICAgICByZXR1
cm4gR1NUX09CSkVDVF9DQVNUKHNpbmstPnByaXYtPnZvbHVtZUVsZW1lbnQuZ2V0KCkpOworCisg
ICAgUkVMRUFTRV9BU1NFUlQoc2luay0+cHJpdi0+bWl4ZXJQYWQpOworICAgIHJldHVybiBHU1Rf
T0JKRUNUX0NBU1Qoc2luay0+cHJpdi0+bWl4ZXJQYWQuZ2V0KCkpOworfQorCitzdGF0aWMgdm9p
ZCB3ZWJLaXRBdWRpb1NpbmtTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJ
RCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0
QXVkaW9TaW5rKiBzaW5rID0gV0VCS0lUX0FVRElPX1NJTksob2JqZWN0KTsKKworICAgIHN3aXRj
aCAocHJvcElEKSB7CisgICAgY2FzZSBQUk9QX1ZPTFVNRTogeworICAgICAgICBHc3RPYmplY3Qq
IGludGVybmFsT2JqZWN0ID0gZ2V0SW50ZXJuYWxWb2x1bWVPYmplY3Qoc2luayk7CisgICAgICAg
IGdfb2JqZWN0X3NldF9wcm9wZXJ0eShHX09CSkVDVChpbnRlcm5hbE9iamVjdCksICJ2b2x1bWUi
LCB2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfTVVURTogewor
ICAgICAgICBHc3RPYmplY3QqIGludGVybmFsT2JqZWN0ID0gZ2V0SW50ZXJuYWxWb2x1bWVPYmpl
Y3Qoc2luayk7CisgICAgICAgIGdfb2JqZWN0X3NldF9wcm9wZXJ0eShHX09CSkVDVChpbnRlcm5h
bE9iamVjdCksICJtdXRlIiwgdmFsdWUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVm
YXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwg
cHJvcElELCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQg
d2ViS2l0QXVkaW9TaW5rR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQs
IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdEF1ZGlvU2lu
ayogc2luayA9IFdFQktJVF9BVURJT19TSU5LKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJ
RCkgeworICAgIGNhc2UgUFJPUF9WT0xVTUU6IHsKKyAgICAgICAgR3N0T2JqZWN0KiBpbnRlcm5h
bE9iamVjdCA9IGdldEludGVybmFsVm9sdW1lT2JqZWN0KHNpbmspOworICAgICAgICBnX29iamVj
dF9nZXRfcHJvcGVydHkoR19PQkpFQ1QoaW50ZXJuYWxPYmplY3QpLCAidm9sdW1lIiwgdmFsdWUp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX01VVEU6IHsKKyAgICAgICAg
R3N0T2JqZWN0KiBpbnRlcm5hbE9iamVjdCA9IGdldEludGVybmFsVm9sdW1lT2JqZWN0KHNpbmsp
OworICAgICAgICBnX29iamVjdF9nZXRfcHJvcGVydHkoR19PQkpFQ1QoaW50ZXJuYWxPYmplY3Qp
LCAibXV0ZSIsIHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwg
cHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyBHc3RTdGF0ZUNoYW5n
ZVJldHVybiB3ZWJLaXRBdWRpb1NpbmtDaGFuZ2VTdGF0ZShHc3RFbGVtZW50KiBlbGVtZW50LCBH
c3RTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZSkKK3sKKyAgICBhdXRvKiBzaW5rID0gV0VCS0lUX0FV
RElPX1NJTksoZWxlbWVudCk7CisgICAgYXV0byogcHJpdiA9IHNpbmstPnByaXY7CisKKyNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAxNCwgMCkKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNpbmssICJI
YW5kbGluZyAlcyB0cmFuc2l0aW9uIiwgZ3N0X3N0YXRlX2NoYW5nZV9nZXRfbmFtZShzdGF0ZUNo
YW5nZSkpOworI2VuZGlmCisKKyAgICBhdXRvJiBtaXhlciA9IEdTdHJlYW1lckF1ZGlvTWl4ZXI6
OnNpbmdsZXRvbigpOworICAgIGlmIChwcml2LT5pbnRlckF1ZGlvU2luayAmJiBzdGF0ZUNoYW5n
ZSA9PSBHU1RfU1RBVEVfQ0hBTkdFX05VTExfVE9fUkVBRFkpCisgICAgICAgIHByaXYtPm1peGVy
UGFkID0gbWl4ZXIucmVnaXN0ZXJQcm9kdWNlcihwcml2LT5pbnRlckF1ZGlvU2luay5nZXQoKSk7
CisKKyAgICBpZiAocHJpdi0+bWl4ZXJQYWQpCisgICAgICAgIG1peGVyLmVuc3VyZVN0YXRlKHN0
YXRlQ2hhbmdlKTsKKworICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHJlc3VsdCA9IEdTVF9DQUxM
X1BBUkVOVF9XSVRIX0RFRkFVTFQoR1NUX0VMRU1FTlRfQ0xBU1MsIGNoYW5nZV9zdGF0ZSwgKGVs
ZW1lbnQsIHN0YXRlQ2hhbmdlKSwgR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKTsKKworI2lmIFBM
QVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTikKKyAgICBp
ZiAocHJpdi0+YXBwc2luaykgeworICAgICAgICBib29sIGlzRU9TID0gZ3N0X2FwcF9zaW5rX2lz
X2VvcyhHU1RfQVBQX1NJTksocHJpdi0+YXBwc2luay5nZXQoKSkpOworICAgICAgICBpZiAoKHN0
YXRlQ2hhbmdlID09IEdTVF9TVEFURV9DSEFOR0VfUExBWUlOR19UT19QQVVTRUQpICYmICFpc0VP
UykgeworICAgICAgICAgICAgd3BlX2F1ZGlvX3NvdXJjZV9wYXVzZShwcml2LT53cGVBdWRpb1Nv
dXJjZS5nZXQoKSwgcHJpdi0+bV9zdHJlYW1JZCk7CisgICAgICAgICAgICBwcml2LT5zb3VyY2VT
dGF0ZSA9IEdTVF9TVEFURV9QQVVTRUQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRlQ2hh
bmdlID09IEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1JFQURZICYmIGlzRU9TKQorICAgICAg
ICAgICAgcHJpdi0+c291cmNlU3RhdGUgPSBHU1RfU1RBVEVfTlVMTDsKKyAgICB9CisjZW5kaWYK
KworICAgIGlmIChwcml2LT5taXhlclBhZCAmJiBzdGF0ZUNoYW5nZSA9PSBHU1RfU1RBVEVfQ0hB
TkdFX1JFQURZX1RPX05VTEwgJiYgcmVzdWx0ID4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSB7
CisgICAgICAgIG1peGVyLnVucmVnaXN0ZXJQcm9kdWNlcihwcml2LT5taXhlclBhZCk7CisgICAg
ICAgIHByaXYtPm1peGVyUGFkID0gbnVsbHB0cjsKKyAgICB9CisjaWYgUExBVEZPUk0oV1BFKSAm
JiBVU0UoV1BFQkFDS0VORF9GRE9fQVVESU9fRVhURU5TSU9OKQorICAgIGlmIChwcml2LT5hcHBz
aW5rICYmIHByaXYtPnNvdXJjZVN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQgJiYgc3RhdGVDaGFu
Z2UgPT0gR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUExBWUlORyAmJiByZXN1bHQgPiBHU1Rf
U1RBVEVfQ0hBTkdFX0ZBSUxVUkUpIHsKKyAgICAgICAgd3BlX2F1ZGlvX3NvdXJjZV9yZXN1bWUo
cHJpdi0+d3BlQXVkaW9Tb3VyY2UuZ2V0KCksIHByaXYtPm1fc3RyZWFtSWQpOworICAgICAgICBw
cml2LT5zb3VyY2VTdGF0ZSA9IEdTVF9TVEFURV9QTEFZSU5HOworICAgIH0KKyNlbmRpZgorCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2F1ZGlvX3NpbmtfY2xh
c3NfaW5pdChXZWJLaXRBdWRpb1NpbmtDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNz
KiBva2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgb2tsYXNzLT5zZXRfcHJvcGVy
dHkgPSB3ZWJLaXRBdWRpb1NpbmtTZXRQcm9wZXJ0eTsKKyAgICBva2xhc3MtPmdldF9wcm9wZXJ0
eSA9IHdlYktpdEF1ZGlvU2lua0dldFByb3BlcnR5OworCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShva2xhc3MsIFBST1BfVk9MVU1FLAorICAgICAgICBnX3BhcmFtX3NwZWNf
ZG91YmxlKCJ2b2x1bWUiLCAiVm9sdW1lIiwgIlRoZSBhdWRpbyB2b2x1bWUsIDEuMD0xMDAlIiwg
MCwgMTAsIDEsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oR19QQVJBTV9S
RUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkob2tsYXNzLCBQUk9QX01VVEUsCisgICAgICAgIGdfcGFyYW1fc3Bl
Y19ib29sZWFuKCJtdXRlIiwgIk11dGUiLCAiTXV0ZSB0aGUgYXVkaW8gY2hhbm5lbCB3aXRob3V0
IGNoYW5naW5nIHRoZSB2b2x1bWUiLCBGQUxTRSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQ
YXJhbUZsYWdzPihHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7
CisKKyAgICBHc3RFbGVtZW50Q2xhc3MqIGVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTKGtsYXNz
KTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfc3RhdGljX3BhZF90ZW1wbGF0ZShla2xhc3Ms
ICZzaW5rVGVtcGxhdGUpOworICAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9tZXRhZGF0YShla2xh
c3MsICJXZWJLaXQgQXVkaW8gc2luayBlbGVtZW50IiwgIlNpbmsvQXVkaW8iLAorICAgICAgICAi
UHJveGllcyBhdWRpbyBkYXRhIHRvIFdlYktpdCdzIGF1ZGlvIG1peGVyIG9yIHRvIGEgV1BFIGV4
dGVybmFsIGF1ZGlvIGhhbmRsZXIiLAorICAgICAgICAiUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5A
aWdhbGlhLmNvbT4iKTsKKworICAgIGVrbGFzcy0+Y2hhbmdlX3N0YXRlID0gR1NUX0RFQlVHX0ZV
TkNQVFIod2ViS2l0QXVkaW9TaW5rQ2hhbmdlU3RhdGUpOworfQorCitHc3RFbGVtZW50KiB3ZWJr
aXRBdWRpb1NpbmtOZXcoKQoreworICAgIGF1dG8qIHNpbmsgPSBHU1RfRUxFTUVOVF9DQVNUKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9BVURJT19TSU5LLCBudWxscHRyKSk7CisgICAgaWYgKCF3
ZWJLaXRBdWRpb1NpbmtDb25maWd1cmUoV0VCS0lUX0FVRElPX1NJTksoc2luaykpKSB7CisgICAg
ICAgIGdzdF9vYmplY3RfdW5yZWYoc2luayk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKyAgICByZXR1cm4gc2luazsKK30KKworI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
QXVkaW9TaW5rR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjg5MDI0NDhi
NjRmYmIxNTI4MmFiNmYxMmU5MTQ5OWIwMWM0YjM2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3Ry
ZWFtZXIuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAyMCBJZ2Fs
aWEgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorCitHX0JFR0lOX0RF
Q0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQVVESU9fU0lOSyAgICAgICAgICAgICh3ZWJraXRf
YXVkaW9fc2lua19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfQVVESU9fU0lOSyhvYmopICAg
ICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9B
VURJT19TSU5LLCBXZWJLaXRBdWRpb1NpbmspKQorI2RlZmluZSBXRUJLSVRfQVVESU9fU0lOS19D
TEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIFdFQktJVF9U
WVBFX0FVRElPX1NJTkssIFdlYktpdEF1ZGlvU2lua0NsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lT
X0FVRElPX1NJTksob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2Jq
KSwgV0VCS0lUX1RZUEVfQVVESU9fU0lOSykpCisjZGVmaW5lIFdFQktJVF9JU19BVURJT19TSU5L
X0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgV0VCS0lUX1RZ
UEVfQVVESU9fU0lOSykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBdWRpb1NpbmsgICAgICAg
IFdlYktpdEF1ZGlvU2luazsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBdWRpb1NpbmtDbGFzcyAg
IFdlYktpdEF1ZGlvU2lua0NsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1ZGlvU2lua1By
aXZhdGUgV2ViS2l0QXVkaW9TaW5rUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRBdWRpb1Npbmsg
eworICAgIEdzdEJpbiBwYXJlbnQ7CisKKyAgICBXZWJLaXRBdWRpb1NpbmtQcml2YXRlICpwcml2
OworfTsKKworc3RydWN0IF9XZWJLaXRBdWRpb1NpbmtDbGFzcyB7CisgICAgR3N0QmluQ2xhc3Mg
cGFyZW50Q2xhc3M7Cit9OworCitHVHlwZSB3ZWJraXRfYXVkaW9fc2lua19nZXRfdHlwZSh2b2lk
KTsKKworR19FTkRfREVDTFMKKworR3N0RWxlbWVudCogd2Via2l0QXVkaW9TaW5rTmV3KCk7CisK
KyNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRX
UEVCYWNrZW5kX2Zkby5jbWFrZSBiL1NvdXJjZS9jbWFrZS9GaW5kV1BFQmFja2VuZF9mZG8uY21h
a2UKaW5kZXggZDcwMWRmNTYyMmU3ZjZiZTIwZjQ3M2I3MjkyMmZiNDM1NjU4MzFmMS4uNDg3NTJk
MDE2ODQwYzFjNTE5NWU5YjZjZDY1YTg5MWNmMWJmNGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL2Nt
YWtlL0ZpbmRXUEVCYWNrZW5kX2Zkby5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvRmluZFdQRUJh
Y2tlbmRfZmRvLmNtYWtlCkBAIC00Myw2ICs0MywxMSBAQCBmaW5kX2xpYnJhcnkoV1BFQkFDS0VO
RF9GRE9fTElCUkFSSUVTCiAKIG1hcmtfYXNfYWR2YW5jZWQoV1BFQkFDS0VORF9GRE9fSU5DTFVE
RV9ESVJTIFdQRUJBQ0tFTkRfRkRPX0xJQlJBUklFUykKIAorZmluZF9wYXRoKFdQRUJBQ0tFTkRf
RkRPX0FVRElPX0VYVEVOU0lPTgorICAgIE5BTUVTIHdwZS9leHRlbnNpb25zL2F1ZGlvLmgKKyAg
ICBISU5UUyAke1BDX1dQRUJBQ0tFTkRfRkRPX0lOQ0xVREVESVJ9ICR7UENfV1BFQkFDS0VORF9G
RE9fSU5DTFVERV9ESVJTfQorKQorCiBpbmNsdWRlKEZpbmRQYWNrYWdlSGFuZGxlU3RhbmRhcmRB
cmdzKQogZmluZF9wYWNrYWdlX2hhbmRsZV9zdGFuZGFyZF9hcmdzKFdQRUJhY2tlbmRfZmRvCiAg
ICAgUkVRVUlSRURfVkFSUyBXUEVCQUNLRU5EX0ZET19JTkNMVURFX0RJUlMgV1BFQkFDS0VORF9G
RE9fTElCUkFSSUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNt
YWtlIGIvU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZQppbmRleCA3YTViYTQ1MjU0
OTJlMGFkOGFkMTBkZGRjNzNmNmIxZGJjNGI3YjM1Li5hZjkwMTg1NDEzMmIyNjdhNGJiNmIyZjU3
MzI1N2E1Y2YyMDdmZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tz
LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2UKQEAgLTEsNSAr
MSwxNSBAQAogaWYgKEVOQUJMRV9WSURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogCisgICAgaWYg
KFBPUlQgU1RSRVFVQUwgIldQRSIpCisgICAgICAgIGZpbmRfcGFja2FnZShXUEVCYWNrZW5kX2Zk
byAxLjkuMCkKKyAgICAgICAgaWYgKChOT1QgV1BFQkFDS0VORF9GRE9fRk9VTkQpIE9SIFdQRUJB
Q0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTiBTVFJFUVVBTCAiV1BFQkFDS0VORF9GRE9fQVVESU9f
RVhURU5TSU9OLU5PVEZPVU5EIikKKyAgICAgICAgICAgIG1lc3NhZ2UoV0FSTklORyAiV1BFQmFj
a2VuZC1mZG8gYXVkaW8gZXh0ZW5zaW9uIG5vdCBmb3VuZC4gRGlzYWJsaW5nIGV4dGVybmFsIGF1
ZGlvIHJlbmRlcmluZyBzdXBwb3J0IikKKyAgICAgICAgICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JV
SUxEKFVTRV9XUEVCQUNLRU5EX0ZET19BVURJT19FWFRFTlNJT04gRkFMU0UpCisgICAgICAgIGVs
c2UgKCkKKyAgICAgICAgICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9XUEVCQUNLRU5E
X0ZET19BVURJT19FWFRFTlNJT04gVFJVRSkKKyAgICAgICAgZW5kaWYgKCkKKyAgICBlbmRpZiAo
KQorCiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0dTVFJFQU1FUiBUUlVFKQogICAg
ICAgaWYgKFVTRV9HU1RSRUFNRVJfRlVMTCkKICAgICAgICAgICBmaW5kX3BhY2thZ2UoR1N0cmVh
bWVyIDEuMTcuMCBSRVFVSVJFRCBDT01QT05FTlRTIGZ1bGwpCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzk1M2RkNGVlNzIyYzUyMjRlYTk3NmZh
ZWU4NDRiNjc4OTY5MTM2NS4uYzU2ODM1ZTMwNTI4ZWVlNzU4OTBmODZlMjBiN2ZlY2VkMDQxOWE3
NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI5IEBACisyMDIwLTA5LTMwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBJbnRlcm5hbCBhdWRpbyByZW5kZXJpbmcg
c3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWGFiaWVyIFJvZHJpZ3Vlei1DYWx2YXIuCisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6IFdoaXRlLWxpc3Qg
dGhlIG5ldyBhdWRpbyBzaW5rIGZyb20gdGhlIHN0eWxlIGNoZWNrZXIuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZmlsZS13aXRoLXZpZGVvLmh0bWw6IE5ldyB1dGlsaXR5
IGZ1bmN0aW9ucyB0byBwYXVzZSBhbmQgc2VlayBpbiB0aGUgdmlkZW8uCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDogV1BFIHRl
c3QgZm9yIGV4dGVybmFsIGF1ZGlvCisgICAgICAgIHJlbmRlcmluZyBzdXBwb3J0LiBBIHZpZGVv
IGZpbGUgaXMgbG9hZGVkIHRocm91Z2ggdGhlIHdlYnZpZXcgYW5kIHRoZSB0ZXN0IHJlY2VpdmVz
CisgICAgICAgIG5vdGlmaWNhdGlvbnMgZHVyaW5nIHBsYXliYWNrLiBJbiBvcmRlciB0byByZWR1
Y2UgdGltZW91dCByaXNrcywgYSBzZWVrIG5lYXIgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgdmlk
ZW8gaXMgcGVyZm9ybWVkIGVhcmx5IG9uLgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3
VGVzdDo6c2V0dXApOgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6dGVhcmRv
d24pOgorICAgICAgICAoQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6QXVkaW9SZW5kZXJpbmdX
ZWJWaWV3VGVzdCk6CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0OjpoYW5kbGVT
dGFydCk6CisgICAgICAgIChBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0OjpoYW5kbGVTdG9wKToK
KyAgICAgICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6OmhhbmRsZVBhdXNlKToKKyAgICAg
ICAgKEF1ZGlvUmVuZGVyaW5nV2ViVmlld1Rlc3Q6OmhhbmRsZVJlc3VtZSk6CisgICAgICAgIChB
dWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0OjpoYW5kbGVQYWNrZXQpOgorICAgICAgICAoQXVkaW9S
ZW5kZXJpbmdXZWJWaWV3VGVzdDo6d2FpdFVudGlsUGF1c2VkKToKKyAgICAgICAgKEF1ZGlvUmVu
ZGVyaW5nV2ViVmlld1Rlc3Q6OndhaXRVbnRpbEVPUyk6CisgICAgICAgIChBdWRpb1JlbmRlcmlu
Z1dlYlZpZXdUZXN0OjpzdGF0ZSBjb25zdCk6CisgICAgICAgIChiZWZvcmVBbGwpOgorCiAyMDIw
LTA5LTMwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbRmxhdHBhayBTREtdIEJ1bXAgbGlid3BlIGFuZCB3cGViYWNrZW5kLWZkbwpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IDU4YjExNmJjN2FhNGNmMzk3MWJmZDk4
MjRkN2UzNDhmYmVjMjc0YzIuLjRlYmYwYmQ4ZTZlNDgzNjBkZmVkNTJmZjMzYWEwNmY1MTk1ZWQ1
MGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTIyMSw2ICsy
MjEsOCBAQCBfUEFUSF9SVUxFU19TUEVDSUZJRVIgPSBbCiAgICAgICBvcy5wYXRoLmpvaW4oJ1Nv
dXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3JtJywgJ2dyYXBoaWNzJywgJ2dzdHJlYW1lcicsICdH
TFZpZGVvU2lua0dTdHJlYW1lci5oJyksCiAgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdX
ZWJDb3JlJywgJ3BsYXRmb3JtJywgJ2dyYXBoaWNzJywgJ2dzdHJlYW1lcicsICdWaWRlb1NpbmtH
U3RyZWFtZXIuY3BwJyksCiAgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywg
J3BsYXRmb3JtJywgJ2dyYXBoaWNzJywgJ2dzdHJlYW1lcicsICdXZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwJyksCisgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3Bs
YXRmb3JtJywgJ2dyYXBoaWNzJywgJ2dzdHJlYW1lcicsICdXZWJLaXRBdWRpb1NpbmtHU3RyZWFt
ZXIuY3BwJyksCisgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRm
b3JtJywgJ2dyYXBoaWNzJywgJ2dzdHJlYW1lcicsICdXZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIu
aCcpLAogICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScs
ICdhdWRpbycsICdnc3RyZWFtZXInLCAnV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3Bw
JyksCiAgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3JtJywg
J21lZGlhc3RyZWFtJywgJ2dzdHJlYW1lcicsICdHU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5o
JyksCiAgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3JtJywg
J21lZGlhc3RyZWFtJywgJ2dzdHJlYW1lcicsICdHU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5j
cHAnKSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2ZpbGUt
d2l0aC12aWRlby5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZmlsZS13
aXRoLXZpZGVvLmh0bWwKaW5kZXggYWEyMjU5YTBmY2UwYjBmZGNkZTA4MWFlZDNiZDc2MDc4YzMz
MGJjZS4uMGI4N2RiZWZhMGQ3NTM0MTFkYzQ3ZTdjZGY5Yzg2ZDQ5ZTY3YzRmNyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZmlsZS13aXRoLXZpZGVvLmh0bWwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZmlsZS13aXRoLXZpZGVvLmh0
bWwKQEAgLTUsNiArNSwxNSBAQAogICAgIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRlc3QtdmlkZW8iKS5wbGF5KCk7CiAgICAgfQorICAgIGZ1bmN0aW9uIHBhdXNlVmlkZW8o
KQorICAgIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QtdmlkZW8iKS5w
YXVzZSgpOworICAgIH0KKyAgICBmdW5jdGlvbiBzZWVrTmVhclRoZUVuZCgpCisgICAgeworICAg
ICAgICBsZXQgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdC12aWRlbyIpOwor
ICAgICAgICB2aWRlby5jdXJyZW50VGltZSA9IHZpZGVvLmR1cmF0aW9uIC0gMC41OworICAgIH0K
ICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IGY1
MjI2MTY4NzZhMmIwZTMyNDRlMDU3MTFjMDI2ZjhlMmY1YjRlMzcuLmJhNjI0MTIyNWNkM2FlNmQ2
YWQ5OGNmMWFkYzNiNGQ2NTEzYjFmZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMjQsNiAr
MjQsMTAgQEAKICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dS
ZWZQdHIuaD4KIAorI2lmIFBMQVRGT1JNKFdQRSkgJiYgVVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElP
X0VYVEVOU0lPTikKKyNpbmNsdWRlIDx3cGUvZXh0ZW5zaW9ucy9hdWRpby5oPgorI2VuZGlmCisK
IGNsYXNzIElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3Qgewog
cHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoSXNQbGF5aW5nQXVkaW9XZWJWaWV3
VGVzdCk7CkBAIC0xMzQzLDYgKzEzNDcsMTI4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RnJh
bWVEaXNwbGF5ZWQoRnJhbWVEaXNwbGF5ZWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogfQog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShXUEUpICYmIFVTRShXUEVCQUNLRU5EX0ZET19BVURJT19F
WFRFTlNJT04pCitlbnVtIGNsYXNzIFJlbmRlcmluZ1N0YXRlIHsKKyAgICBVbmtub3duLAorICAg
IFN0YXJ0ZWQsCisgICAgUGF1c2VkLAorICAgIFN0b3BwZWQKK307CisKK2NsYXNzIEF1ZGlvUmVu
ZGVyaW5nV2ViVmlld1Rlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3QgeworcHVibGljOgorICAgIE1B
S0VfR0xJQl9URVNUX0ZJWFRVUkVfV0lUSF9TRVRVUF9URUFSRE9XTihBdWRpb1JlbmRlcmluZ1dl
YlZpZXdUZXN0LCBzZXR1cCwgdGVhcmRvd24pOworCisgICAgc3RhdGljIHZvaWQgc2V0dXAoKQor
ICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB0ZWFyZG93bigpCisgICAgeworICAgICAg
ICB3cGVfYXVkaW9fcmVnaXN0ZXJfcmVjZWl2ZXIobnVsbHB0ciwgbnVsbHB0cik7CisgICAgfQor
CisgICAgQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdCgpCisgICAgeworICAgICAgICB3cGVfYXVk
aW9fcmVnaXN0ZXJfcmVjZWl2ZXIoJm1fYXVkaW9SZWNlaXZlciwgdGhpcyk7CisgICAgfQorCisg
ICAgdm9pZCBoYW5kbGVTdGFydCh1aW50MzJfdCBpZCwgaW50MzJfdCBjaGFubmVscywgY29uc3Qg
Y2hhciogbGF5b3V0LCBpbnQzMl90IHNhbXBsZVJhdGUpCisgICAgeworICAgICAgICBnX2Fzc2Vy
dChtX3N0YXRlID09IFJlbmRlcmluZ1N0YXRlOjpVbmtub3duKTsKKyAgICAgICAgZ19hc3NlcnRf
ZmFsc2UobV9zdHJlYW1JZC5oYXNWYWx1ZSgpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChp
ZCwgPT0sIDApOworICAgICAgICBtX3N0cmVhbUlkID0gaWQ7CisgICAgICAgIG1fc3RhdGUgPSBS
ZW5kZXJpbmdTdGF0ZTo6U3RhcnRlZDsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KGNoYW5uZWxz
LCA9PSwgMik7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihsYXlvdXQsID09LCAiUzE2TEUiKTsK
KyAgICAgICAgZ19hc3NlcnRfY21waW50KHNhbXBsZVJhdGUsID09LCA0NDEwMCk7CisgICAgfQor
CisgICAgdm9pZCBoYW5kbGVTdG9wKHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgZ19hc3Nl
cnRfY21wdWludCgqbV9zdHJlYW1JZCwgPT0sIGlkKTsKKyAgICAgICAgZ19hc3NlcnQobV9zdGF0
ZSAhPSBSZW5kZXJpbmdTdGF0ZTo6VW5rbm93bik7CisgICAgICAgIG1fc3RhdGUgPSBSZW5kZXJp
bmdTdGF0ZTo6U3RvcHBlZDsKKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wKTsK
KyAgICAgICAgbV9zdHJlYW1JZC5yZXNldCgpOworICAgIH0KKworICAgIHZvaWQgaGFuZGxlUGF1
c2UodWludDMyX3QgaWQpCisgICAgeworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KCptX3N0cmVh
bUlkLCA9PSwgaWQpOworICAgICAgICBnX2Fzc2VydChtX3N0YXRlICE9IFJlbmRlcmluZ1N0YXRl
OjpVbmtub3duKTsKKyAgICAgICAgbV9zdGF0ZSA9IFJlbmRlcmluZ1N0YXRlOjpQYXVzZWQ7Cisg
ICAgfQorCisgICAgdm9pZCBoYW5kbGVSZXN1bWUodWludDMyX3QgaWQpCisgICAgeworICAgICAg
ICBnX2Fzc2VydF9jbXB1aW50KCptX3N0cmVhbUlkLCA9PSwgaWQpOworICAgICAgICBnX2Fzc2Vy
dChtX3N0YXRlID09IFJlbmRlcmluZ1N0YXRlOjpQYXVzZWQpOworICAgICAgICBtX3N0YXRlID0g
UmVuZGVyaW5nU3RhdGU6OlN0YXJ0ZWQ7CisgICAgfQorCisgICAgdm9pZCBoYW5kbGVQYWNrZXQo
c3RydWN0IHdwZV9hdWRpb19wYWNrZXRfZXhwb3J0KiBwYWNrZXRfZXhwb3J0LCB1aW50MzJfdCBp
ZCwgaW50MzJfdCBmZCwgdWludDMyX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0X2Nt
cHVpbnQoKm1fc3RyZWFtSWQsID09LCBpZCk7CisgICAgICAgIGdfYXNzZXJ0KG1fc3RhdGUgPT0g
UmVuZGVyaW5nU3RhdGU6OlN0YXJ0ZWQgfHwgbV9zdGF0ZSA9PSBSZW5kZXJpbmdTdGF0ZTo6UGF1
c2VkKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChzaXplLCA+LCAwKTsKKyAgICAgICAgd3Bl
X2F1ZGlvX3BhY2tldF9leHBvcnRfcmVsZWFzZShwYWNrZXRfZXhwb3J0KTsKKyAgICB9CisKKyAg
ICB2b2lkIHdhaXRVbnRpbFBhdXNlZCgpCisgICAgeworICAgICAgICBnX3RpbWVvdXRfYWRkKDIw
MCwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKKyAgICAgICAgICAgIGF1dG8q
IHRlc3QgPSBzdGF0aWNfY2FzdDxBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0Kj4odXNlckRhdGEp
OworICAgICAgICAgICAgaWYgKHRlc3QtPnN0YXRlKCkgPT0gUmVuZGVyaW5nU3RhdGU6OlBhdXNl
ZCkgeworICAgICAgICAgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOworICAgICAgICAgICAg
ICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gR19TT1VSQ0VfQ09OVElOVUU7CisgICAgICAgIH0sIHRoaXMpOworICAgICAgICBnX21h
aW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgfQorCisgICAgdm9pZCB3YWl0VW50aWxFT1Mo
KQorICAgIHsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0KKwor
ICAgIFJlbmRlcmluZ1N0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQorCitw
cml2YXRlOgorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd3BlX2F1ZGlvX3JlY2VpdmVyIG1fYXVk
aW9SZWNlaXZlcjsKKyAgICBSZW5kZXJpbmdTdGF0ZSBtX3N0YXRlIHsgUmVuZGVyaW5nU3RhdGU6
OlVua25vd24gfTsKKyAgICBPcHRpb25hbDx1aW50MzJfdD4gbV9zdHJlYW1JZDsKK307CisKK2Nv
bnN0IHN0cnVjdCB3cGVfYXVkaW9fcmVjZWl2ZXIgQXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdDo6
bV9hdWRpb1JlY2VpdmVyID0geworICAgIFtdKHZvaWQqIGRhdGEsIHVpbnQzMl90IGlkLCBpbnQz
Ml90IGNoYW5uZWxzLCBjb25zdCBjaGFyKiBsYXlvdXQsIGludDMyX3Qgc2FtcGxlUmF0ZSkgeyBz
dGF0aWNfY2FzdDxBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0Kj4oZGF0YSktPmhhbmRsZVN0YXJ0
KGlkLCBjaGFubmVscywgbGF5b3V0LCBzYW1wbGVSYXRlKTsgfSwKKyAgICBbXSh2b2lkKiBkYXRh
LCBzdHJ1Y3Qgd3BlX2F1ZGlvX3BhY2tldF9leHBvcnQqIHBhY2tldF9leHBvcnQsIHVpbnQzMl90
IGlkLCBpbnQzMl90IGZkLCB1aW50MzJfdCBzaXplKSB7IHN0YXRpY19jYXN0PEF1ZGlvUmVuZGVy
aW5nV2ViVmlld1Rlc3QqPihkYXRhKS0+aGFuZGxlUGFja2V0KHBhY2tldF9leHBvcnQsIGlkLCBm
ZCwgc2l6ZSk7IH0sCisgICAgW10odm9pZCogZGF0YSwgdWludDMyX3QgaWQpIHsgc3RhdGljX2Nh
c3Q8QXVkaW9SZW5kZXJpbmdXZWJWaWV3VGVzdCo+KGRhdGEpLT5oYW5kbGVTdG9wKGlkKTsgfSwK
KyAgICBbXSh2b2lkKiBkYXRhLCB1aW50MzJfdCBpZCkgeyBzdGF0aWNfY2FzdDxBdWRpb1JlbmRl
cmluZ1dlYlZpZXdUZXN0Kj4oZGF0YSktPmhhbmRsZVBhdXNlKGlkKTsgfSwKKyAgICBbXSh2b2lk
KiBkYXRhLCB1aW50MzJfdCBpZCkgeyBzdGF0aWNfY2FzdDxBdWRpb1JlbmRlcmluZ1dlYlZpZXdU
ZXN0Kj4oZGF0YSktPmhhbmRsZVJlc3VtZShpZCk7IH0KK307CisKK3N0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3RXh0ZXJuYWxBdWRpb1JlbmRlcmluZyhBdWRpb1JlbmRlcmluZ1dlYlZpZXdUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VQYXRo
KGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKFRlc3Q6OldlYktpdDJSZXNv
dXJjZXMpLmRhdGEoKSwgImZpbGUtd2l0aC12aWRlby5odG1sIiwgbnVsbHB0cikpOworICAgIEdV
bmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VVUkwoZ19maWxlbmFtZV90b191cmkocmVzb3VyY2VQYXRo
LmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJp
KHRlc3QtPm1fd2ViVmlldywgcmVzb3VyY2VVUkwuZ2V0KCkpOworICAgIHRlc3QtPndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOworCisgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZp
bmlzaGVkKCJwbGF5VmlkZW8oKTsiLCBudWxscHRyKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5zdGF0
ZSgpID09IFJlbmRlcmluZ1N0YXRlOjpTdGFydGVkKTsKKyAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoInBhdXNlVmlkZW8oKTsiLCBudWxscHRyKTsKKyAgICB0ZXN0
LT53YWl0VW50aWxQYXVzZWQoKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5zdGF0ZSgpID09IFJlbmRl
cmluZ1N0YXRlOjpQYXVzZWQpOworCisgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRp
bEZpbmlzaGVkKCJwbGF5VmlkZW8oKTsgc2Vla05lYXJUaGVFbmQoKTsiLCBudWxscHRyKTsKKyAg
ICB0ZXN0LT53YWl0VW50aWxFT1MoKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5zdGF0ZSgpID09IFJl
bmRlcmluZ1N0YXRlOjpTdG9wcGVkKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgdm9pZCBzZXJ2ZXJD
YWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBj
aGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikKIHsK
ICAgICBpZiAobWVzc2FnZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkgewpAQCAtMTQwMyw2
ICsxNTI5LDkgQEAgdm9pZCBiZWZvcmVBbGwoKQogI2VuZGlmCiAgICAgV2ViVmlld1Rlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJpcy1hdWRpby1tdXRlZCIsIHRlc3RXZWJWaWV3SXNBdWRpb011
dGVkKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImF1dG9wbGF5LXBv
bGljeSIsIHRlc3RXZWJWaWV3QXV0b3BsYXlQb2xpY3kpOworI2lmIFBMQVRGT1JNKFdQRSkgJiYg
VVNFKFdQRUJBQ0tFTkRfRkRPX0FVRElPX0VYVEVOU0lPTikKKyAgICBBdWRpb1JlbmRlcmluZ1dl
YlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZXh0ZXJuYWwtYXVkaW8tcmVuZGVyaW5n
IiwgdGVzdFdlYlZpZXdFeHRlcm5hbEF1ZGlvUmVuZGVyaW5nKTsKKyNlbmRpZgogfQogCiB2b2lk
IGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2OWYw
M2NiMDg5OGQ5MzQ0NDQzNmQ0ODUzMDQ4Y2U1MmQyMjQwMzEyLi5hYWFmNTM0OGFkNDcyYmFhNTky
N2ZiMGFiYWUwN2FmOTk0NzJkODVkIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDktMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEludGVybmFsIGF1ZGlvIHJl
bmRlcmluZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc2MzQKKworICAgICAgICBSZXZpZXdlZCBieSBYYWJpZXIgUm9kcmlndWV6LUNh
bHZhci4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9GaW5kV1BFQmFja2VuZF9mZG8uY21ha2U6
IENoZWNrIGZvciB0aGUgYXVkaW8gZXh0ZW5zaW9uIGhlYWRlciBpbml0aWFsbHkKKyAgICAgICAg
c2hpcHBlZCBpbiB0aGUgMS44LjAgcmVsZWFzZS4KKyAgICAgICAgKiBTb3VyY2UvY21ha2UvR1N0
cmVhbWVyQ2hlY2tzLmNtYWtlOiBDaGVjayBhbmQgZW5hYmxlIGV4dGVybmFsIGF1ZGlvIHJlbmRl
cmluZyBzdXBwb3J0IGlmCisgICAgICAgIHRoZSBXUEVCYWNrZW5kLUZETyBhdWRpbyBleHRlbnNp
b24gd2FzIGZvdW5kLgorCiAyMDIwLTA5LTI5ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRA
c29ueS5jb20+CiAKICAgICAgICAgW0NNYWtlXVtXZWJHUFVdIEFkZCBGaW5kRGF3biBtb2R1bGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>