<?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>190674</bug_id>
          
          <creation_ts>2018-10-17 11:56:50 -0700</creation_ts>
          <short_desc>[GStreamer][WebRTC] Add webrtcencoder bin to cleanup and refactor the way we set encoders</short_desc>
          <delta_ts>2018-11-05 07:11:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>187064</blocked>
    
    <blocked>190676</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Thibault Saunier">tsaunier</reporter>
          <assigned_to name="Thibault Saunier">tsaunier</assigned_to>
          <cc>alex</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1470237</commentid>
    <comment_count>0</comment_count>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2018-10-17 11:56:50 -0700</bug_when>
    <thetext>[GStreamer][WebRTC] Add webrtcencoder bin to cleanup and refactor the way we set encoders</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470240</commentid>
    <comment_count>1</comment_count>
      <attachid>352603</attachid>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2018-10-17 12:00:18 -0700</bug_when>
    <thetext>Created attachment 352603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470486</commentid>
    <comment_count>2</comment_count>
      <attachid>352603</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-10-18 00:53:38 -0700</bug_when>
    <thetext>Comment on attachment 352603
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        The added files follow GStreamer coding style as we aim at upstreaming the element
&gt; +        in the future.

In the future is quite vague. I won&apos;t block this because of this issue but I really think that coding style can change during the upstreaming process and currently we should respect WebKit&apos;s.

&gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:52
&gt; +  const char *name;
&gt; +  const char *parser_name;

This is inconsistent. Either use char or gchar.

&gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:101
&gt; +     static void gst_webrtc_video_encoder_finalize (GObject * object)

Indentation

&gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:140
&gt; +  if (priv-&gt;encoder)
&gt; +    encoders[priv-&gt;encoderId].setBitrate (G_OBJECT (priv-&gt;encoder),
&gt; +        encoders[priv-&gt;encoderId].bitrate_propname, priv-&gt;bitrate);

Please correct me if I am wrong, but I think GStreamer would recommend { } enclosing what is running after evaluation the if clause.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470492</commentid>
    <comment_count>3</comment_count>
      <attachid>352603</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-10-18 02:41:59 -0700</bug_when>
    <thetext>Comment on attachment 352603
Patch

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

&gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:185
&gt; +        GstPad *tmppad2 = gst_element_get_static_pad (priv-&gt;capsfilter, &quot;sink&quot;);

This pad leaks, I think.

&gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:230
&gt; +  GstPluginFeature *feature =
&gt; +      gst_registry_lookup_feature (gst_registry_get (), name);

Leak? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473674</commentid>
    <comment_count>4</comment_count>
      <attachid>353486</attachid>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2018-10-31 04:20:20 -0700</bug_when>
    <thetext>Created attachment 353486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473675</commentid>
    <comment_count>5</comment_count>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2018-10-31 04:20:40 -0700</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #2)
&gt; Comment on attachment 352603 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=352603&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        The added files follow GStreamer coding style as we aim at upstreaming the element
&gt; &gt; +        in the future.
&gt; 
&gt; In the future is quite vague. I won&apos;t block this because of this issue but I
&gt; really think that coding style can change during the upstreaming process and
&gt; currently we should respect WebKit&apos;s.

We discussed that last week, and I believe you ended up &quot;agreeing&quot; we should do it that way.

&gt; &gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:52
&gt; &gt; +  const char *name;
&gt; &gt; +  const char *parser_name;
&gt; 
&gt; This is inconsistent. Either use char or gchar.

Done, using GLib variants all around now.

&gt; &gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:101
&gt; &gt; +     static void gst_webrtc_video_encoder_finalize (GObject * object)
&gt; 
&gt; Indentation

Fixed.

&gt; &gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:140
&gt; &gt; +  if (priv-&gt;encoder)
&gt; &gt; +    encoders[priv-&gt;encoderId].setBitrate (G_OBJECT (priv-&gt;encoder),
&gt; &gt; +        encoders[priv-&gt;encoderId].bitrate_propname, priv-&gt;bitrate);
&gt; 
&gt; Please correct me if I am wrong, but I think GStreamer would recommend { }
&gt; enclosing what is running after evaluation the if clause.

Fixed, though it is accepted in GStreamer.

(In reply to Philippe Normand from comment #3)
&gt; Comment on attachment 352603 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=352603&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:185
&gt; &gt; +        GstPad *tmppad2 = gst_element_get_static_pad (priv-&gt;capsfilter, &quot;sink&quot;);
&gt; 
&gt; This pad leaks, I think.

Fixed.

&gt; &gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:230
&gt; &gt; +  GstPluginFeature *feature =
&gt; &gt; +      gst_registry_lookup_feature (gst_registry_get (), name);
&gt; 
&gt; Leak? :)

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473685</commentid>
    <comment_count>6</comment_count>
      <attachid>353486</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-10-31 06:19:34 -0700</bug_when>
    <thetext>Comment on attachment 353486
Patch

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

&gt; Source/WebCore/platform/GStreamer.cmake:38
&gt;          platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp
&gt; +        platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp
&gt;          platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp

It&apos;s a minor detail but I think those files should move to platform/mediastream/gstreamer/ at some point.

&gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:61
&gt; +  ENCODER_NONE,

Might be good to explicitly assign to 0?

&gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:77
&gt; +  ENCODER_LAST,
&gt; +} EncoderId;
&gt; +
&gt; +EncoderDefinition encoders[ENCODER_LAST] = {
&gt; +  FALSE,
&gt; +  NULL,
&gt; +  NULL,
&gt; +  NULL,
&gt; +  NULL,
&gt; +  NULL,
&gt; +  NULL,
&gt; +  NULL,
&gt; +};

So ENCODER_LAST is 4 but encoders&apos;s array is bigger. How is this supposed to work? :)

&gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:97
&gt; +G_DEFINE_TYPE_WITH_PRIVATE (GstWebrtcVideoEncoder, gst_webrtc_video_encoder,
&gt; +    GST_TYPE_BIN)
&gt; +     enum
&gt; +     {
&gt; +       PROP_0,
&gt; +       PROP_FORMAT,
&gt; +       PROP_ENCODER,
&gt; +       PROP_BITRATE,
&gt; +       N_PROPS
&gt; +     };

The indentation is odd here

&gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:101
&gt; +     static void gst_webrtc_video_encoder_finalize (GObject * object)

Useless whitespace here ;)

&gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:153
&gt; +  for (i = 1; i &lt; ENCODER_LAST; i++) {

So here you start at 1 because the first item is always FALSE anyway, right?

&gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:282
&gt; +  g_object_set (encoder, prop_name, bitrate * 1024, NULL);

Use KBIT_TO_BIT here? Otherwise this macro is unused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475054</commentid>
    <comment_count>7</comment_count>
      <attachid>353856</attachid>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2018-11-05 06:16:21 -0800</bug_when>
    <thetext>Created attachment 353856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475055</commentid>
    <comment_count>8</comment_count>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2018-11-05 06:16:30 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #6)
&gt; Comment on attachment 353486 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=353486&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/GStreamer.cmake:38
&gt; &gt;          platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp
&gt; &gt; +        platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp
&gt; &gt;          platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp
&gt; 
&gt; It&apos;s a minor detail but I think those files should move to
&gt; platform/mediastream/gstreamer/ at some point.
&gt; 
&gt; &gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:61
&gt; &gt; +  ENCODER_NONE,
&gt; 
&gt; Might be good to explicitly assign to 0?

Done.

&gt; &gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:77
&gt; &gt; +  ENCODER_LAST,
&gt; &gt; +} EncoderId;
&gt; &gt; +
&gt; &gt; +EncoderDefinition encoders[ENCODER_LAST] = {
&gt; &gt; +  FALSE,
&gt; &gt; +  NULL,
&gt; &gt; +  NULL,
&gt; &gt; +  NULL,
&gt; &gt; +  NULL,
&gt; &gt; +  NULL,
&gt; &gt; +  NULL,
&gt; &gt; +  NULL,
&gt; &gt; +};
&gt; 
&gt; So ENCODER_LAST is 4 but encoders&apos;s array is bigger. How is this supposed to
&gt; work? :)

Those are setting the content of the `EncoderDefinition` structure, not the whole array itself.

&gt; &gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:97
&gt; &gt; +G_DEFINE_TYPE_WITH_PRIVATE (GstWebrtcVideoEncoder, gst_webrtc_video_encoder,
&gt; &gt; +    GST_TYPE_BIN)
&gt; &gt; +     enum
&gt; &gt; +     {
&gt; &gt; +       PROP_0,
&gt; &gt; +       PROP_FORMAT,
&gt; &gt; +       PROP_ENCODER,
&gt; &gt; +       PROP_BITRATE,
&gt; &gt; +       N_PROPS
&gt; &gt; +     };
&gt; 
&gt; The indentation is odd here

`gst-indent`&apos; doing :-) - added necessary `INDENT-OFF/ON`.

&gt; &gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:101
&gt; &gt; +     static void gst_webrtc_video_encoder_finalize (GObject * object)
&gt; 
&gt; Useless whitespace here ;)

Same.

&gt; &gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:153
&gt; &gt; +  for (i = 1; i &lt; ENCODER_LAST; i++) {
&gt; 
&gt; So here you start at 1 because the first item is always FALSE anyway, right?

Right 0 is the NONE encoder :-)

&gt; &gt; Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:282
&gt; &gt; +  g_object_set (encoder, prop_name, bitrate * 1024, NULL);
&gt; 
&gt; Use KBIT_TO_BIT here? Otherwise this macro is unused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475058</commentid>
    <comment_count>9</comment_count>
      <attachid>353856</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-05 06:27:29 -0800</bug_when>
    <thetext>Comment on attachment 353856
Patch

Rejecting attachment 353856 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 353856, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

/Volumes/Data/EWS/WebKit/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: https://webkit-queues.webkit.org/results/9864724</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475059</commentid>
    <comment_count>10</comment_count>
      <attachid>353858</attachid>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2018-11-05 06:32:09 -0800</bug_when>
    <thetext>Created attachment 353858
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475077</commentid>
    <comment_count>11</comment_count>
      <attachid>353858</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-05 07:10:03 -0800</bug_when>
    <thetext>Comment on attachment 353858
Patch for landing

Clearing flags on attachment: 353858

Committed r237801: &lt;https://trac.webkit.org/changeset/237801&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475078</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-05 07:10:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475079</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-05 07:11:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/45806634&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352603</attachid>
            <date>2018-10-17 12:00:18 -0700</date>
            <delta_ts>2018-10-31 04:20:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190674-20181017160016.patch</filename>
            <type>text/plain</type>
            <size>29099</size>
            <attacher name="Thibault Saunier">tsaunier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE0NmI3NzY0NzJmODlk
ZTBlYWNjMTBlNjZmNTc0M2ZjMDhlNDQwOC4uYjA5NTU0OWFjOGNhZDM2YWIwNjk5YTM3NTAzOGIx
YjJkNzEwMjMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE4LTEwLTEyICBUaGli
YXVsdCBTYXVuaWVyICA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XVtXZWJSVENdIEFkZCB3ZWJydGNlbmNvZGVyIGJpbiB0byBjbGVhbnVwIGFuZCByZWZhY3RvciB0
aGUgd2F5IHdlIHNldCBlbmNvZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkwNjc0CisKKyAgICAgICAgd2VicnRjZW5jb2RlciBpcyBhIHNpbXBs
ZSBHc3RCaW4gd2l0aCBhIHNldCBvZiB3ZWxsIGtub3duIEdTdHJlYW1lciBlbmNvZGVycyB3aGlj
aAorICAgICAgICBpdCBjYW4gdXNlIHRvIGltcGxlbWVudCBlbmNvZGluZyBmb3IgZGlmZmVyZW50
IGZvcm1hdHMgZXhwb3NpbmcgYSB0cmltbWVkIGRvd24gdW5pZmllZCBBUEkuCisKKyAgICAgICAg
SXQgYWxzbyBhZGRzIHByb3BlciBoYW5kbGluZyBvZiBIMjY0IHByb2ZpbGVzLgorCisgICAgICAg
IFRoZSBhZGRlZCBmaWxlcyBmb2xsb3cgR1N0cmVhbWVyIGNvZGluZyBzdHlsZSBhcyB3ZSBhaW0g
YXQgdXBzdHJlYW1pbmcgdGhlIGVsZW1lbnQKKyAgICAgICAgaW4gdGhlIGZ1dHVyZS4KKworICAg
ICAgICBUaGlzIGlzIGEgcmVmYWN0b3Jpbmcgc28gY3VycmVudCB0ZXN0cyBhbHJlYWR5IGNvdmVy
IGl0LgorCisgICAgICAgICogcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OmluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyLmNw
cDogQWRkZWQuCisgICAgICAgIChnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfZ2V0X3Byb3BlcnR5
KToKKyAgICAgICAgKGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9zZXRfYml0cmF0ZSk6CisgICAg
ICAgIChnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfc2V0X2Zvcm1hdCk6CisgICAgICAgIChnc3Rf
d2VicnRjX3ZpZGVvX2VuY29kZXJfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHJlZ2lzdGVyX2tu
b3duX2VuY29kZXIpOgorICAgICAgICAoc2V0dXBfeDI2NGVuYyk6CisgICAgICAgIChzZXR1cF92
cDhlbmMpOgorICAgICAgICAoc2V0dXBfb3BlbmgyNjRlbmMpOgorICAgICAgICAoc2V0X2JpdHJh
dGVfa2JpdF9wZXJfc2VjKToKKyAgICAgICAgKHNldF9iaXRyYXRlX2JpdF9wZXJfc2VjKToKKyAg
ICAgICAgKGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9jbGFzc19pbml0KToKKyAgICAgICAgKGdz
dF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9pbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyLmg6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVvRW5jb2Rlcjo6R1N0cmVh
bWVyVmlkZW9FbmNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVvRW5jb2Rl
cjo6SW5pdEVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0VuY29kZXI6
OmNyZWF0ZUVuY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9FbmNvZGVy
OjpBZGRDb2RlY0lmU3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVv
RW5jb2Rlcjo6SW1wbGVtZW50YXRpb25OYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lclZpZGVvRW5jb2Rlcjo6U2V0UmVzdHJpY3Rpb25DYXBzKToKKwogMjAxOC0xMC0xNyAg
QWxpIEp1bWEgIDxhanVtYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRmxha3kgSW50ZXJzZWN0
aW9uT2JzZXJ2ZXIgd2ViIHBsYXRmb3JtIHRlc3RzIGludm9sdmluZyBzdHlsZSB1cGRhdGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKaW5kZXggZDlhMWZkYjMwYzQyMGYw
OTgxYmZlZWY0ZGNkZjRjOTZhZmRkYTI1ZC4uZDUzNTQ0YTdkYzdjODM2Mjk5YzAwYWQ5NTNhMDM0
MDFmZjYyMGYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVy
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAt
MzQsNiArMzQsNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3Ry
ZWFtZXIuY3BwCiAKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJl
YW1lclZpZGVvRGVjb2RlckZhY3RvcnkuY3BwCisgICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAogICAg
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUu
Y3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2Rlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTNkYmUwZmE4MTEyNjhiNzYwOGNjMmQyNTFiYTkyYWYzMmY0NDQxOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9H
U3RyZWFtZXJWaWRlb0VuY29kZXIuY3BwCkBAIC0wLDAgKzEsMzM3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisvKiBOT1RFOiBUaGlzIGZpbGUgcmVz
cGVjdHMgR1N0cmVhbWVyIGNvZGluZyBzdHlsZSBhcyB3ZSBtaWdodCB3YW50IHRvIHVwc3RyZWFt
CisgKiB0aGF0IGVsZW1lbnQgaW4gdGhlIGZ1dHVyZSAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShMSUJX
RUJSVEMpICYmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAiR1N0cmVhbWVyVmlkZW9FbmNvZGVy
LmgiCisKK0dTVF9ERUJVR19DQVRFR09SWSAoZ3N0X3dlYnJ0Y2VuY19kZWJ1Zyk7CisjZGVmaW5l
IEdTVF9DQVRfREVGQVVMVCBnc3Rfd2VicnRjZW5jX2RlYnVnCisKKyNkZWZpbmUgS0JJVF9UT19C
SVQgMTAyNAorCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua1RlbXBsYXRlID0gR1NU
X1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKKyAgICBHU1RfUEFEX1NJTkssCisgICAgR1NU
X1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXcoQU5ZKTsiKSk7
CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNUZW1wbGF0ZSA9IEdTVF9TVEFUSUNf
UEFEX1RFTVBMQVRFICgic3JjIiwKKyAgICBHU1RfUEFEX1NSQywKKyAgICBHU1RfUEFEX0FMV0FZ
UywKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LWgyNjQ7dmlkZW8veC12cDgiKSk7CisK
K3R5cGVkZWYgdm9pZCAoKlNldEJpdHJhdGVGdW5jKSAoR09iamVjdCAqIGVuY29kZXIsIGNvbnN0
IGdjaGFyICogcHJvcG5hbWUsCisgICAgaW50IGJpdHJhdGUpOwordHlwZWRlZiB2b2lkICgqU2V0
dXBFbmNvZGVyKSAoR09iamVjdCAqIGVuY29kZXIpOwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgZ2Jv
b2xlYW4gYXZhbGFpYmxlOworICBHc3RDYXBzICpjYXBzOworICBjb25zdCBjaGFyICpuYW1lOwor
ICBjb25zdCBjaGFyICpwYXJzZXJfbmFtZTsKKyAgR3N0Q2FwcyAqZW5jb2RlZF9mb3JtYXQ7Cisg
IFNldEJpdHJhdGVGdW5jIHNldEJpdHJhdGU7CisgIFNldHVwRW5jb2RlciBzZXR1cEVuY29kZXI7
CisgIGNvbnN0IGdjaGFyICpiaXRyYXRlX3Byb3BuYW1lOworfSBFbmNvZGVyRGVmaW5pdGlvbjsK
KwordHlwZWRlZiBlbnVtCit7CisgIEVOQ09ERVJfTk9ORSwKKyAgRU5DT0RFUl9YMjY0LAorICBF
TkNPREVSX09QRU5IMjY0LAorICBFTkNPREVSX1ZQOCwKKyAgRU5DT0RFUl9MQVNULAorfSBFbmNv
ZGVySWQ7CisKK0VuY29kZXJEZWZpbml0aW9uIGVuY29kZXJzW0VOQ09ERVJfTEFTVF0gPSB7Cisg
IEZBTFNFLAorICBOVUxMLAorICBOVUxMLAorICBOVUxMLAorICBOVUxMLAorICBOVUxMLAorICBO
VUxMLAorICBOVUxMLAorfTsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgRW5jb2RlcklkIGVuY29k
ZXJJZDsKKyAgR3N0RWxlbWVudCAqZW5jb2RlcjsKKyAgR3N0RWxlbWVudCAqcGFyc2VyOworICBH
c3RFbGVtZW50ICpjYXBzZmlsdGVyOworICBndWludCBiaXRyYXRlOworfSBHc3RXZWJydGNWaWRl
b0VuY29kZXJQcml2YXRlOworCitHX0RFRklORV9UWVBFX1dJVEhfUFJJVkFURSAoR3N0V2VicnRj
VmlkZW9FbmNvZGVyLCBnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXIsCisgICAgR1NUX1RZUEVfQklO
KQorICAgICBlbnVtCisgICAgIHsKKyAgICAgICBQUk9QXzAsCisgICAgICAgUFJPUF9GT1JNQVQs
CisgICAgICAgUFJPUF9FTkNPREVSLAorICAgICAgIFBST1BfQklUUkFURSwKKyAgICAgICBOX1BS
T1BTCisgICAgIH07CisKKyNkZWZpbmUgUFJJVihzZWxmKSAoKEdzdFdlYnJ0Y1ZpZGVvRW5jb2Rl
clByaXZhdGUqKWdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9nZXRfaW5zdGFuY2VfcHJpdmF0ZShz
ZWxmKSkKKworICAgICBzdGF0aWMgdm9pZCBnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfZmluYWxp
emUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdfT0JKRUNUX0NMQVNTIChnc3Rfd2VicnRjX3Zp
ZGVvX2VuY29kZXJfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRp
YyB2b2lkCitnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICog
b2JqZWN0LAorICAgIGd1aW50IHByb3BfaWQsIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICog
cHNwZWMpCit7CisgIEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlciAqc2VsZiA9IEdTVF9XRUJSVENfVklE
RU9fRU5DT0RFUiAob2JqZWN0KTsKKyAgR3N0V2VicnRjVmlkZW9FbmNvZGVyUHJpdmF0ZSAqcHJp
diA9IFBSSVYgKHNlbGYpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9G
T1JNQVQ6CisgICAgICBpZiAocHJpdi0+ZW5jb2RlcklkICE9IEVOQ09ERVJfTk9ORSkKKyAgICAg
ICAgZ192YWx1ZV9zZXRfYm94ZWQgKHZhbHVlLCBlbmNvZGVyc1twcml2LT5lbmNvZGVySWRdLmNh
cHMpOworICAgICAgZWxzZQorICAgICAgICBnX3ZhbHVlX3NldF9ib3hlZCAodmFsdWUsIE5VTEwp
OworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQ09ERVI6CisgICAgICBnX3ZhbHVlX3Nl
dF9vYmplY3QgKHZhbHVlLCBwcml2LT5lbmNvZGVyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9CSVRSQVRFOgorICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIHByaXYtPmJpdHJh
dGUpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5W
QUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgIH0KK30KKworc3Rh
dGljIHZvaWQKK2dzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9zZXRfYml0cmF0ZSAoR3N0V2VicnRj
VmlkZW9FbmNvZGVyICogc2VsZiwKKyAgICBndWludCBiaXRyYXRlKQoreworICBHc3RXZWJydGNW
aWRlb0VuY29kZXJQcml2YXRlICpwcml2ID0gUFJJViAoc2VsZik7CisKKyAgcHJpdi0+Yml0cmF0
ZSA9IGJpdHJhdGU7CisgIGlmIChwcml2LT5lbmNvZGVyKQorICAgIGVuY29kZXJzW3ByaXYtPmVu
Y29kZXJJZF0uc2V0Qml0cmF0ZSAoR19PQkpFQ1QgKHByaXYtPmVuY29kZXIpLAorICAgICAgICBl
bmNvZGVyc1twcml2LT5lbmNvZGVySWRdLmJpdHJhdGVfcHJvcG5hbWUsIHByaXYtPmJpdHJhdGUp
OworfQorCitzdGF0aWMgdm9pZAorZ3N0X3dlYnJ0Y192aWRlb19lbmNvZGVyX3NldF9mb3JtYXQg
KEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlciAqIHNlbGYsCisgICAgY29uc3QgR3N0Q2FwcyAqIGNhcHMp
Cit7CisgIGdpbnQgaTsKKyAgR3N0V2VicnRjVmlkZW9FbmNvZGVyUHJpdmF0ZSAqcHJpdiA9IFBS
SVYgKHNlbGYpOworICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5lbmNvZGVySWQgPT0gRU5DT0RF
Ul9OT05FKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoY2Fwcyk7CisKKyAgZm9yIChpID0gMTsgaSA8
IEVOQ09ERVJfTEFTVDsgaSsrKSB7CisgICAgaWYgKGVuY29kZXJzW2ldLmF2YWxhaWJsZQorICAg
ICAgICAmJiBnc3RfY2Fwc19jYW5faW50ZXJzZWN0IChlbmNvZGVyc1tpXS5jYXBzLCBjYXBzKSkg
eworICAgICAgR3N0UGFkICp0bXBwYWQ7CisgICAgICBwcml2LT5lbmNvZGVySWQgPSAoRW5jb2Rl
cklkKSBpOworICAgICAgcHJpdi0+ZW5jb2RlciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAo
ZW5jb2RlcnNbaV0ubmFtZSwgTlVMTCk7CisgICAgICBlbmNvZGVyc1twcml2LT5lbmNvZGVySWRd
LnNldHVwRW5jb2RlciAoR19PQkpFQ1QgKHByaXYtPmVuY29kZXIpKTsKKworICAgICAgaWYgKGVu
Y29kZXJzW2ldLnBhcnNlcl9uYW1lKQorICAgICAgICBwcml2LT5wYXJzZXIgPSBnc3RfZWxlbWVu
dF9mYWN0b3J5X21ha2UgKGVuY29kZXJzW2ldLnBhcnNlcl9uYW1lLCBOVUxMKTsKKworICAgICAg
aWYgKGVuY29kZXJzW2ldLmVuY29kZWRfZm9ybWF0KSB7CisgICAgICAgIHByaXYtPmNhcHNmaWx0
ZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJjYXBzZmlsdGVyIiwgTlVMTCk7CisgICAg
ICAgIGdfb2JqZWN0X3NldCAocHJpdi0+Y2Fwc2ZpbHRlciwgImNhcHMiLCBlbmNvZGVyc1tpXS5l
bmNvZGVkX2Zvcm1hdCwKKyAgICAgICAgICAgIE5VTEwpOworICAgICAgfQorCisgICAgICBnc3Rf
YmluX2FkZCAoR1NUX0JJTiAoc2VsZiksIHByaXYtPmVuY29kZXIpOworCisgICAgICB0bXBwYWQg
PSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAocHJpdi0+ZW5jb2RlciwgInNpbmsiKTsKKyAg
ICAgIGdzdF9naG9zdF9wYWRfc2V0X3RhcmdldCAoR1NUX0dIT1NUX1BBRCAoR1NUX0VMRU1FTlQg
KHNlbGYpLT4KKyAgICAgICAgICAgICAgc2lua3BhZHMtPmRhdGEpLCB0bXBwYWQpOworICAgICAg
Z3N0X29iamVjdF91bnJlZiAodG1wcGFkKTsKKworICAgICAgdG1wcGFkID0gZ3N0X2VsZW1lbnRf
Z2V0X3N0YXRpY19wYWQgKHByaXYtPmVuY29kZXIsICJzcmMiKTsKKyAgICAgIGlmIChwcml2LT5w
YXJzZXIpIHsKKyAgICAgICAgZ3N0X2Jpbl9hZGQgKEdTVF9CSU4gKHNlbGYpLCBwcml2LT5wYXJz
ZXIpOworICAgICAgICBnc3RfZWxlbWVudF9saW5rIChwcml2LT5lbmNvZGVyLCBwcml2LT5wYXJz
ZXIpOworICAgICAgICBnc3Rfb2JqZWN0X3VucmVmICh0bXBwYWQpOworICAgICAgICB0bXBwYWQg
PSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAocHJpdi0+cGFyc2VyLCAic3JjIik7CisgICAg
ICB9CisKKyAgICAgIGlmIChwcml2LT5jYXBzZmlsdGVyKSB7CisgICAgICAgIEdzdFBhZCAqdG1w
cGFkMiA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChwcml2LT5jYXBzZmlsdGVyLCAic2lu
ayIpOworCisgICAgICAgIGdzdF9iaW5fYWRkIChHU1RfQklOIChzZWxmKSwgcHJpdi0+Y2Fwc2Zp
bHRlcik7CisgICAgICAgIGdzdF9wYWRfbGluayAodG1wcGFkLCB0bXBwYWQyKTsKKyAgICAgICAg
Z3N0X29iamVjdF91bnJlZiAodG1wcGFkKTsKKyAgICAgICAgdG1wcGFkID0gZ3N0X2VsZW1lbnRf
Z2V0X3N0YXRpY19wYWQgKHByaXYtPmNhcHNmaWx0ZXIsICJzcmMiKTsKKyAgICAgIH0KKworICAg
ICAgZ19hc3NlcnQgKGdzdF9naG9zdF9wYWRfc2V0X3RhcmdldCAoR1NUX0dIT1NUX1BBRCAoR1NU
X0VMRU1FTlQKKyAgICAgICAgICAgICAgICAgIChzZWxmKS0+c3JjcGFkcy0+ZGF0YSksIHRtcHBh
ZCkpOworICAgICAgZ3N0X29iamVjdF91bnJlZiAodG1wcGFkKTsKKworICAgICAgZ3N0X3dlYnJ0
Y192aWRlb19lbmNvZGVyX3NldF9iaXRyYXRlIChzZWxmLCBwcml2LT5iaXRyYXRlKTsKKyAgICAg
IHJldHVybjsKKyAgICB9CisgIH0KKworICBHU1RfRVJST1IgKCJObyBlbmNvZGVyIGZvdW5kIGZv
ciBmb3JtYXQgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOworfQorCitzdGF0aWMgdm9pZAorZ3N0
X3dlYnJ0Y192aWRlb19lbmNvZGVyX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKKyAg
ICBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVj
KQoreworICBHc3RXZWJydGNWaWRlb0VuY29kZXIgKnNlbGYgPSBHU1RfV0VCUlRDX1ZJREVPX0VO
Q09ERVIgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX0ZP
Uk1BVDoKKyAgICAgIGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9zZXRfZm9ybWF0IChzZWxmLCBn
c3RfdmFsdWVfZ2V0X2NhcHMgKHZhbHVlKSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
QklUUkFURToKKyAgICAgIGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9zZXRfYml0cmF0ZSAoc2Vs
ZiwgZ192YWx1ZV9nZXRfdWludCAodmFsdWUpKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9p
ZCwgcHNwZWMpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCityZWdpc3Rlcl9rbm93bl9lbmNvZGVy
IChFbmNvZGVySWQgZW5jSWQsIGNvbnN0IGdjaGFyICogbmFtZSwKKyAgICBjb25zdCBnY2hhciAq
IHBhcnNlcl9uYW1lLCBjb25zdCBnY2hhciAqIGNhcHMsIGNvbnN0IGdjaGFyICogZW5jb2RlZF9m
b3JtYXQsCisgICAgU2V0dXBFbmNvZGVyIHNldHVwRW5jb2RlciwgY29uc3QgZ2NoYXIgKiBiaXRy
YXRlX3Byb3BuYW1lLAorICAgIFNldEJpdHJhdGVGdW5jIHNldEJpdHJhdGUpCit7CisgIEdzdFBs
dWdpbkZlYXR1cmUgKmZlYXR1cmUgPQorICAgICAgZ3N0X3JlZ2lzdHJ5X2xvb2t1cF9mZWF0dXJl
IChnc3RfcmVnaXN0cnlfZ2V0ICgpLCBuYW1lKTsKKyAgaWYgKCFmZWF0dXJlKSB7CisgICAgR1NU
X1dBUk5JTkcgKCJDb3VsZCBub3QgZmluZCAlcyIsIG5hbWUpOworICAgIGVuY29kZXJzW2VuY0lk
XS5hdmFsYWlibGUgPSBGQUxTRTsKKworICAgIHJldHVybjsKKyAgfQorCisgIGVuY29kZXJzW2Vu
Y0lkXS5hdmFsYWlibGUgPSBUUlVFOworICBlbmNvZGVyc1tlbmNJZF0ubmFtZSA9IG5hbWU7Cisg
IGVuY29kZXJzW2VuY0lkXS5wYXJzZXJfbmFtZSA9IHBhcnNlcl9uYW1lOworICBlbmNvZGVyc1tl
bmNJZF0uY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nIChjYXBzKTsKKyAgaWYgKGVuY29kZWRf
Zm9ybWF0KQorICAgIGVuY29kZXJzW2VuY0lkXS5lbmNvZGVkX2Zvcm1hdCA9IGdzdF9jYXBzX2Zy
b21fc3RyaW5nIChlbmNvZGVkX2Zvcm1hdCk7CisgIGVsc2UKKyAgICBlbmNvZGVyc1tlbmNJZF0u
ZW5jb2RlZF9mb3JtYXQgPSBOVUxMOworICBlbmNvZGVyc1tlbmNJZF0uc2V0dXBFbmNvZGVyID0g
c2V0dXBFbmNvZGVyOworICBlbmNvZGVyc1tlbmNJZF0uYml0cmF0ZV9wcm9wbmFtZSA9IGJpdHJh
dGVfcHJvcG5hbWU7CisgIGVuY29kZXJzW2VuY0lkXS5zZXRCaXRyYXRlID0gc2V0Qml0cmF0ZTsK
K30KKworc3RhdGljIHZvaWQKK3NldHVwX3gyNjRlbmMgKEdPYmplY3QgKiBlbmNvZGVyKQorewor
ICBnc3RfdXRpbF9zZXRfb2JqZWN0X2FyZyAoZW5jb2RlciwgInR1bmUiLCAiemVyb2xhdGVuY3ki
KTsKK30KKworc3RhdGljIHZvaWQKK3NldHVwX3ZwOGVuYyAoR09iamVjdCAqIGVuY29kZXIpCit7
CisgIGdzdF9wcmVzZXRfbG9hZF9wcmVzZXQgKEdTVF9QUkVTRVQgKGVuY29kZXIpLCAiUHJvZmls
ZSBSZWFsdGltZSIpOworfQorCitzdGF0aWMgdm9pZAorc2V0dXBfb3BlbmgyNjRlbmMgKEdPYmpl
Y3QgKikKK3sKK30KKworc3RhdGljIHZvaWQKK3NldF9iaXRyYXRlX2tiaXRfcGVyX3NlYyAoR09i
amVjdCAqIGVuY29kZXIsIGNvbnN0IGdjaGFyICogcHJvcF9uYW1lLAorICAgIGdpbnQgYml0cmF0
ZSkKK3sKKyAgZ19vYmplY3Rfc2V0IChlbmNvZGVyLCBwcm9wX25hbWUsIGJpdHJhdGUsIE5VTEwp
OworfQorCitzdGF0aWMgdm9pZAorc2V0X2JpdHJhdGVfYml0X3Blcl9zZWMgKEdPYmplY3QgKiBl
bmNvZGVyLCBjb25zdCBnY2hhciAqIHByb3BfbmFtZSwKKyAgICBnaW50IGJpdHJhdGUpCit7Cisg
IGdfb2JqZWN0X3NldCAoZW5jb2RlciwgcHJvcF9uYW1lLCBiaXRyYXRlICogMTAyNCwgTlVMTCk7
Cit9CisKK3N0YXRpYyB2b2lkCitnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfY2xhc3NfaW5pdCAo
R3N0V2VicnRjVmlkZW9FbmNvZGVyQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpv
YmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOworCisgIEdTVF9ERUJVR19DQVRF
R09SWV9JTklUIChnc3Rfd2VicnRjZW5jX2RlYnVnLCAid2VicnRjZW5jb2RlciIsIDAsCisgICAg
ICAiVmlkZW8gZW5jb2RlciBmb3IgV2ViUlRDIik7CisKKyAgb2JqZWN0X2NsYXNzLT5maW5hbGl6
ZSA9IGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9maW5hbGl6ZTsKKyAgb2JqZWN0X2NsYXNzLT5n
ZXRfcHJvcGVydHkgPSBnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfZ2V0X3Byb3BlcnR5OworICBv
YmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9zZXRf
cHJvcGVydHk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAob2JqZWN0X2Ns
YXNzLCBQUk9QX0ZPUk1BVCwKKyAgICAgIGdfcGFyYW1fc3BlY19ib3hlZCAoImZvcm1hdCIsICJG
b3JtYXQgYXMgY2FwcyIsCisgICAgICAgICAgIlNldCB0aGUgY2FwcyBvZiB0aGUgZm9ybWF0IHRv
IGJlIHVzZWQuIiwKKyAgICAgICAgICBHU1RfVFlQRV9DQVBTLAorICAgICAgICAgIChHUGFyYW1G
bGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKwor
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChvYmplY3RfY2xhc3MsIFBST1BfRU5D
T0RFUiwKKyAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QgKCJlbmNvZGVyIiwgIlRoZSBhY3R1YWwg
ZW5jb2RlciBlbGVtZW50IiwKKyAgICAgICAgICAiVGhlIGVuY29kZXIgZWxlbWVudCIsIEdTVF9U
WVBFX0VMRU1FTlQsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEQUJMRSB8
IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eSAob2JqZWN0X2NsYXNzLCBQUk9QX0JJVFJBVEUsCisgICAgICBnX3BhcmFtX3NwZWNf
dWludCAoImJpdHJhdGUiLCAiQml0cmF0ZSIsCisgICAgICAgICAgIlRoZSBiaXRyYXRlIGluIGti
aXQgcGVyIHNlY29uZCIsIDAsIEdfTUFYSU5ULCAyMDQ4LAorICAgICAgICAgIChHUGFyYW1GbGFn
cykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyB8CisgICAgICAg
ICAgICAgIEdfUEFSQU1fQ09OU1RSVUNUKSkpOworCisgIHJlZ2lzdGVyX2tub3duX2VuY29kZXIg
KEVOQ09ERVJfWDI2NCwgIngyNjRlbmMiLCAiaDI2NHBhcnNlIiwgInZpZGVvL3gtaDI2NCIsCisg
ICAgICAidmlkZW8veC1oMjY0LGFsaWdubWVudD1hdSxzdHJlYW0tZm9ybWF0PWJ5dGUtc3RyZWFt
LHByb2ZpbGU9YmFzZWxpbmUiLAorICAgICAgc2V0dXBfeDI2NGVuYywgImJpdHJhdGUiLCBzZXRf
Yml0cmF0ZV9rYml0X3Blcl9zZWMpOworICByZWdpc3Rlcl9rbm93bl9lbmNvZGVyIChFTkNPREVS
X09QRU5IMjY0LCAib3BlbmgyNjRlbmMiLCAiaDI2NHBhcnNlIiwKKyAgICAgICJ2aWRlby94LWgy
NjQiLAorICAgICAgInZpZGVvL3gtaDI2NCxhbGlnbm1lbnQ9YXUsc3RyZWFtLWZvcm1hdD1ieXRl
LXN0cmVhbSxwcm9maWxlPWJhc2VsaW5lIiwKKyAgICAgIHNldHVwX29wZW5oMjY0ZW5jLCAiYml0
cmF0ZSIsIHNldF9iaXRyYXRlX2tiaXRfcGVyX3NlYyk7CisgIHJlZ2lzdGVyX2tub3duX2VuY29k
ZXIgKEVOQ09ERVJfVlA4LCAidnA4ZW5jIiwgTlVMTCwgInZpZGVvL3gtdnA4IiwgTlVMTCwKKyAg
ICAgIHNldHVwX3ZwOGVuYywgInRhcmdldC1iaXRyYXRlIiwgc2V0X2JpdHJhdGVfYml0X3Blcl9z
ZWMpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3dlYnJ0Y192aWRlb19lbmNvZGVyX2luaXQgKEdz
dFdlYnJ0Y1ZpZGVvRW5jb2RlciAqIHNlbGYpCit7CisgIEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlclBy
aXZhdGUgKnByaXYgPSBQUklWIChzZWxmKTsKKworICBwcml2LT5lbmNvZGVySWQgPSBFTkNPREVS
X05PTkU7CisgIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChzZWxmKSwKKyAgICAg
IGdzdF9naG9zdF9wYWRfbmV3X25vX3RhcmdldF9mcm9tX3RlbXBsYXRlICgic2luayIsCisgICAg
ICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc2lua1RlbXBsYXRlKSkpOworCisg
IGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChzZWxmKSwKKyAgICAgIGdzdF9naG9z
dF9wYWRfbmV3X25vX3RhcmdldF9mcm9tX3RlbXBsYXRlICgic3JjIiwKKyAgICAgICAgICBnc3Rf
c3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzcmNUZW1wbGF0ZSkpKTsKK30KKworI2VuZGlmIC8v
IEVOQUJMRShWSURFTykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKExJQldFQlJUQykg
JiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xMGVhMjVjNGVlZTNlMThmMTk4MTkyOGU4ZDRmZTE2NDRlNWFmMWIzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2Rlci5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAo
QykgMjAxOCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8Z3N0L2dzdC5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgR1NUX1RZUEVf
V0VCUlRDX1ZJREVPX0VOQ09ERVIgKGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9nZXRfdHlwZSgp
KQorCitHX0RFQ0xBUkVfREVSSVZBQkxFX1RZUEUgKEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlciwgZ3N0
X3dlYnJ0Y192aWRlb19lbmNvZGVyLCBHU1QsIFdFQlJUQ19WSURFT19FTkNPREVSLCBHc3RCaW4p
CisKK3N0cnVjdCBfR3N0V2VicnRjVmlkZW9FbmNvZGVyQ2xhc3MKK3sKKyAgR3N0QmluQ2xhc3Mg
cGFyZW50X2NsYXNzOworfTsKKworR19FTkRfREVDTFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJG
YWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAppbmRleCA4MjBlN2E1MzU5MzJhYWU1
NzczZWU2OGMwOTcyZTIzMWU5NGI2MDc5Li41MWU4MzUwNmI2Y2M2ZGFhMDgzYWJjOGE2YmU3ZGU1
ZWI1MTRmMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5j
b2RlckZhY3RvcnkuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaWYgRU5BQkxFKFZJREVPKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQog
I2luY2x1ZGUgIkdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuaCIKIAorI2luY2x1ZGUgIkdT
dHJlYW1lclZpZGVvRW5jb2Rlci5oIgogI2luY2x1ZGUgIkdTdHJlYW1lclZpZGVvRnJhbWVMaWJX
ZWJSVEMuaCIKICNpbmNsdWRlICJ3ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24u
aCIKICNpbmNsdWRlICJ3ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvcHJvZmlsZV9sZXZlbF9pZC5o
IgpAQCAtNjMsMTMgKzY0LDExIEBAIHB1YmxpYzoKICAgICBHU3RyZWFtZXJWaWRlb0VuY29kZXIo
Y29uc3Qgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdCYpCiAgICAgICAgIDogbV9maXJzdEZyYW1lUHRz
KEdTVF9DTE9DS19USU1FX05PTkUpCiAgICAgICAgICwgbV9yZXN0cmljdGlvbkNhcHMoYWRvcHRH
UmVmKGdzdF9jYXBzX25ld19lbXB0eV9zaW1wbGUoInZpZGVvL3gtcmF3IikpKQotICAgICAgICAs
IG1fYml0cmF0ZVNldHRlcihudWxscHRyKQogICAgIHsKICAgICB9CiAgICAgR1N0cmVhbWVyVmlk
ZW9FbmNvZGVyKCkKICAgICAgICAgOiBtX2ZpcnN0RnJhbWVQdHMoR1NUX0NMT0NLX1RJTUVfTk9O
RSkKICAgICAgICAgLCBtX3Jlc3RyaWN0aW9uQ2FwcyhhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X2Vt
cHR5X3NpbXBsZSgidmlkZW8veC1yYXciKSkpCi0gICAgICAgICwgbV9iaXRyYXRlU2V0dGVyKG51
bGxwdHIpCiAgICAgewogICAgIH0KIApAQCAtODMsOCArODIsOCBAQCBwdWJsaWM6CiAKICAgICAg
ICAgU2V0UmVzdHJpY3Rpb25DYXBzKFdURk1vdmUoY2FwcykpOwogCi0gICAgICAgIGlmIChtX2Jp
dHJhdGVTZXR0ZXIgJiYgbV9lbmNvZGVyKQotICAgICAgICAgICAgbV9iaXRyYXRlU2V0dGVyKG1f
ZW5jb2RlciwgbmV3Qml0cmF0ZSk7CisgICAgICAgIGlmIChtX2VuY29kZXIpCisgICAgICAgICAg
ICBnX29iamVjdF9zZXQobV9lbmNvZGVyLCAiYml0cmF0ZSIsIG5ld0JpdHJhdGUsIG51bGxwdHIp
OwogCiAgICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiAgICAgfQpAQCAtMTE4
LDIwICsxMTcsMjYgQEAgcHVibGljOgogICAgICAgICBtX3BpcGVsaW5lID0gbWFrZUVsZW1lbnQo
InBpcGVsaW5lIik7CiAKICAgICAgICAgY29ubmVjdFNpbXBsZUJ1c01lc3NhZ2VDYWxsYmFjayht
X3BpcGVsaW5lLmdldCgpKTsKLSAgICAgICAgYXV0byBlbmNvZGViaW4gPSBjcmVhdGVFbmNvZGVy
KCZtX2VuY29kZXIpLmxlYWtSZWYoKTsKLSAgICAgICAgQVNTRVJUKG1fZW5jb2Rlcik7Ci0gICAg
ICAgIG1fYml0cmF0ZVNldHRlciA9IGdldEJpdHJhdGVTZXR0ZXIoZ3N0X2VsZW1lbnRfZ2V0X2Zh
Y3RvcnkobV9lbmNvZGVyKSk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IGNyZWF0ZUVuY29kZXIo
KTsKKyAgICAgICAgQVNTRVJUKGVuY29kZXIpOworICAgICAgICBtX2VuY29kZXIgPSBlbmNvZGVy
LmdldCgpOwogCiAgICAgICAgIG1fc3JjID0gbWFrZUVsZW1lbnQoImFwcHNyYyIpOwogICAgICAg
ICBnX29iamVjdF9zZXQobV9zcmMsICJpcy1saXZlIiwgdHJ1ZSwgImZvcm1hdCIsIEdTVF9GT1JN
QVRfVElNRSwgbnVsbHB0cik7CiAKLSAgICAgICAgYXV0byBjYXBzZmlsdGVyID0gQ3JlYXRlRmls
dGVyKCk7CisgICAgICAgIGF1dG8gdmlkZW9jb252ZXJ0ID0gbWFrZUVsZW1lbnQoInZpZGVvY29u
dmVydCIpOworICAgICAgICBhdXRvIHZpZGVvcmF0ZSA9IG1ha2VFbGVtZW50KCJ2aWRlb3JhdGUi
KTsKICAgICAgICAgYXV0byBzaW5rID0gbWFrZUVsZW1lbnQoImFwcHNpbmsiKTsKICAgICAgICAg
Z3N0X2FwcF9zaW5rX3NldF9lbWl0X3NpZ25hbHMoR1NUX0FQUF9TSU5LKHNpbmspLCBUUlVFKTsK
ICAgICAgICAgZ19zaWduYWxfY29ubmVjdChzaW5rLCAibmV3LXNhbXBsZSIsIEdfQ0FMTEJBQ0so
bmV3U2FtcGxlQ2FsbGJhY2tUcmFtcCksIHRoaXMpOwogCi0gICAgICAgIGdzdF9iaW5fYWRkX21h
bnkoR1NUX0JJTihtX3BpcGVsaW5lLmdldCgpKSwgbV9zcmMsIGVuY29kZWJpbiwgY2Fwc2ZpbHRl
ciwgc2luaywgbnVsbHB0cik7Ci0gICAgICAgIGlmICghZ3N0X2VsZW1lbnRfbGlua19tYW55KG1f
c3JjLCBlbmNvZGViaW4sIGNhcHNmaWx0ZXIsIHNpbmssIG51bGxwdHIpKQorICAgICAgICBhdXRv
IG5hbWUgPSBTdHJpbmc6OmZvcm1hdCgiJXNfZW5jX3Jhd2NhcHNmaWx0ZXJfJXAiLCBOYW1lKCks
IHRoaXMpOworICAgICAgICBtX2NhcHNGaWx0ZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2Uo
ImNhcHNmaWx0ZXIiLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBpZiAobV9yZXN0cmlj
dGlvbkNhcHMpCisgICAgICAgICAgICBnX29iamVjdF9zZXQobV9jYXBzRmlsdGVyLCAiY2FwcyIs
IG1fcmVzdHJpY3Rpb25DYXBzLmdldCgpLCBudWxscHRyKTsKKworICAgICAgICBnc3RfYmluX2Fk
ZF9tYW55KEdTVF9CSU4obV9waXBlbGluZS5nZXQoKSksIG1fc3JjLCB2aWRlb3JhdGUsIHZpZGVv
Y29udmVydCwgbV9jYXBzRmlsdGVyLCBlbmNvZGVyLmxlYWtSZWYoKSwgc2luaywgbnVsbHB0cik7
CisgICAgICAgIGlmICghZ3N0X2VsZW1lbnRfbGlua19tYW55KG1fc3JjLCB2aWRlb3JhdGUsIHZp
ZGVvY29udmVydCwgbV9jYXBzRmlsdGVyLCBtX2VuY29kZXIsIHNpbmssIG51bGxwdHIpKQogICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QTEFZSU5HKTsKQEAgLTE0NCwxMSAr
MTQ5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIEdzdEVsZW1lbnQqIENyZWF0ZUZpbHRlcigpCi0gICAgewotICAgICAgICByZXR1cm4gbWFr
ZUVsZW1lbnQoImNhcHNmaWx0ZXIiKTsKLSAgICB9Ci0KICAgICBpbnQzMl90IFJlZ2lzdGVyRW5j
b2RlQ29tcGxldGVDYWxsYmFjayh3ZWJydGM6OkVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFj
aykgZmluYWwKICAgICB7CiAgICAgICAgIG1faW1hZ2VSZWFkeUNiID0gY2FsbGJhY2s7CkBAIC0x
NjAsMTIgKzE2MCwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2VuY29kZWRGcmFtZS5f
YnVmZmVyID0gbnVsbHB0cjsKICAgICAgICAgbV9lbmNvZGVkSW1hZ2VCdWZmZXIucmVzZXQoKTsK
LSAgICAgICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVfZ2V0
X2J1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZS5nZXQoKSkpKTsKLSAgICAgICAgZ3N0X2J1c19z
ZXRfc3luY19oYW5kbGVyKGJ1cy5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci0K
LSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFU
RV9OVUxMKTsKLSAgICAgICAgbV9zcmMgPSBudWxscHRyOwotICAgICAgICBtX3BpcGVsaW5lID0g
bnVsbHB0cjsKKyAgICAgICAgaWYgKG1fcGlwZWxpbmUpIHsKKyAgICAgICAgICAgIEdSZWZQdHI8
R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5F
KG1fcGlwZWxpbmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBnc3RfYnVzX3NldF9zeW5jX2hhbmRs
ZXIoYnVzLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKworICAgICAgICAgICAg
Z3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsK
KyAgICAgICAgICAgIG1fc3JjID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fZW5jb2RlciA9IG51
bGxwdHI7CisgICAgICAgICAgICBtX2NhcHNGaWx0ZXIgPSBudWxscHRyOworICAgICAgICAgICAg
bV9waXBlbGluZSA9IG51bGxwdHI7CisgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gV0VCUlRD
X1ZJREVPX0NPREVDX09LOwogICAgIH0KQEAgLTI1NSw4MiArMjU5LDI4IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogICAgIH0KIAotI2RlZmluZSBSRVRVUk5fQklUUkFU
RV9TRVRURVJfSUZfTUFUQ0hFUyhyZWdleCwgcHJvcGVydHlOYW1lLCBiaXRyYXRlTXVsdGlwbGll
ciwgdW5pdCkgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoZ19yZWdleF9tYXRjaChyZWdleC5n
ZXQoKSwgZmFjdG9yeU5hbWUsIHN0YXRpY19jYXN0PEdSZWdleE1hdGNoRmxhZ3M+KDApLCBudWxs
cHRyKSkgeyAgICAgICAgICBcCi0gICAgICAgIEdTVF9JTkZPX09CSkVDVChlbmNvZGVyRmFjdG9y
eSwgIkRldGVjdGVkIGFzIGhhdmluZyBhICIgI3Byb3BlcnR5TmFtZSAiIHByb3BlcnR5IGluICIg
dW5pdCk7IFwKLSAgICAgICAgcmV0dXJuIFtdKEdzdEVsZW1lbnQqIGVuY29kZXIsIHVpbnQzMl90
IGJpdHJhdGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICAgICAgICAgIGdfb2JqZWN0X3NldChlbmNvZGVyLCBwcm9wZXJ0eU5hbWUsIGJpdHJhdGUgKiBi
aXRyYXRlTXVsdGlwbGllciwgbnVsbHB0cik7ICAgICAgICAgICAgXAotICAgICAgICAgICAgfTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLSAgICAvLyBHU3RyZWFt
ZXIgZG9lc24ndCBoYXZlIGEgdW5pZmllZCBlbmNvZGVyIEFQSSBhbmQgdGhlIGVuY29kZXJzIGhh
dmUgdGhlaXIKLSAgICAvLyBvd24gc2VtYW50aWNzIGFuZCBuYW1pbmcgdG8gc2V0IHRoZSBiaXRy
YXRlLCB0aGlzIGlzIGEgYmVzdCBlZmZvcnQgdG8gaGFuZGxlCi0gICAgLy8gc2V0dGluZyBiaXRy
YXRlIGZvciB0aGUgd2VsbCBrbm93biBlbmNvZGVycy4KLSAgICAvLyBTZWUgaHR0cHM6Ly9idWd6
aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjcxNgotICAgIEJpdHJhdGVTZXR0ZXIg
Z2V0Qml0cmF0ZVNldHRlcihHc3RFbGVtZW50RmFjdG9yeSogZW5jb2RlckZhY3RvcnkpCisgICAg
R1JlZlB0cjxHc3RFbGVtZW50PiBjcmVhdGVFbmNvZGVyKHZvaWQpCiAgICAgewotICAgICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgcmVnZXhSZWdpc3RlcmVkRmxhZzsKLQotICAgICAgICBzdGQ6
OmNhbGxfb25jZShyZWdleFJlZ2lzdGVyZWRGbGFnLCBbXSB7Ci0gICAgICAgICAgICB0YXJnZXRC
aXRyYXRlQml0UGVyU2VjID0gZ19yZWdleF9uZXcoIl52cC5lbmMkfF5vbXguKmVuYyQiLCBzdGF0
aWNfY2FzdDxHUmVnZXhDb21waWxlRmxhZ3M+KDApLCBzdGF0aWNfY2FzdDxHUmVnZXhNYXRjaEZs
YWdzPigwKSwgbnVsbHB0cik7Ci0gICAgICAgICAgICBiaXRyYXRlQml0UGVyU2VjID0gZ19yZWdl
eF9uZXcoIl5vcGVuaDI2NGVuYyQiLCBzdGF0aWNfY2FzdDxHUmVnZXhDb21waWxlRmxhZ3M+KDAp
LCBzdGF0aWNfY2FzdDxHUmVnZXhNYXRjaEZsYWdzPigwKSwgbnVsbHB0cik7Ci0gICAgICAgICAg
ICBiaXRyYXRlS0JpdFBlclNlYyA9IGdfcmVnZXhfbmV3KCJeeDI2NGVuYyR8dmFhcGkuKmVuYyQi
LCBzdGF0aWNfY2FzdDxHUmVnZXhDb21waWxlRmxhZ3M+KDApLCBzdGF0aWNfY2FzdDxHUmVnZXhN
YXRjaEZsYWdzPigwKSwgbnVsbHB0cik7Ci0gICAgICAgICAgICBBU1NFUlQodGFyZ2V0Qml0cmF0
ZUJpdFBlclNlYy5nZXQoKSAmJiBiaXRyYXRlQml0UGVyU2VjLmdldCgpICYmIGJpdHJhdGVLQml0
UGVyU2VjLmdldCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgYXV0byBmYWN0b3J5TmFtZSA9
IEdTVF9PQkpFQ1RfTkFNRShlbmNvZGVyRmFjdG9yeSk7Ci0gICAgICAgIFJFVFVSTl9CSVRSQVRF
X1NFVFRFUl9JRl9NQVRDSEVTKHRhcmdldEJpdHJhdGVCaXRQZXJTZWMsICJ0YXJnZXQtYml0cmF0
ZSIsIEtCSVRfVE9fQklULCAiQml0cyBQZXIgU2Vjb25kIikKLSAgICAgICAgUkVUVVJOX0JJVFJB
VEVfU0VUVEVSX0lGX01BVENIRVMoYml0cmF0ZUJpdFBlclNlYywgImJpdHJhdGUiLCBLQklUX1RP
X0JJVCwgIkJpdHMgUGVyIFNlY29uZCIpCi0gICAgICAgIFJFVFVSTl9CSVRSQVRFX1NFVFRFUl9J
Rl9NQVRDSEVTKGJpdHJhdGVLQml0UGVyU2VjLCAiYml0cmF0ZSIsIDEsICJLQml0cyBQZXIgU2Vj
b25kIikKKyAgICAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBlbmNvZGVyID0gbnVsbHB0cjsKKyAg
ICAgICAgR3N0RWxlbWVudCogd2VicnRjZW5jb2RlciA9IEdTVF9FTEVNRU5UKGdfb2JqZWN0X3Jl
Zl9zaW5rKGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgid2VicnRjdmlkZW9lbmNvZGVyIiwgTlVM
TCkpKTsKIAotICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QoZW5jb2RlckZhY3RvcnksICJ1bmtv
bnduIGVuY29kZXIsIGNhbid0IHNldCBiaXRyYXRlcyBvbiBpdCIpOwotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9Ci0jdW5kZWYgUkVUVVJOX0JJVFJBVEVfU0VUVEVSX0lGX01BVENIRVMK
KyAgICAgICAgZ19vYmplY3Rfc2V0KHdlYnJ0Y2VuY29kZXIsICJmb3JtYXQiLCBhZG9wdEdSZWYo
Z3N0X2NhcHNfZnJvbV9zdHJpbmcoQ2FwcygpKSkuZ2V0KCksIE5VTEwpOworICAgICAgICBnX29i
amVjdF9nZXQod2VicnRjZW5jb2RlciwgImVuY29kZXIiLCAmZW5jb2Rlci5vdXRQdHIoKSwgTlVM
TCk7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGNyZWF0ZUVuY29kZXIoR3N0RWxlbWVudCoq
IGVuY29kZXIpCi0gICAgewotICAgICAgICBHc3RFbGVtZW50KiBlbmMgPSBudWxscHRyOworICAg
ICAgICBpZiAoIWVuY29kZXIpIHsKKyAgICAgICAgICAgIEdTVF9JTkZPKCJObyBlbmNvZGVyIGZv
dW5kIGZvciAlcyIsIENhcHMoKSk7CiAKLSAgICAgICAgbV9wcm9maWxlID0gR1NUX0VOQ09ESU5H
X1BST0ZJTEUoZ3N0X2VuY29kaW5nX3ZpZGVvX3Byb2ZpbGVfbmV3KAotICAgICAgICAgICAgYWRv
cHRHUmVmKGdzdF9jYXBzX2Zyb21fc3RyaW5nKENhcHMoKSkpLmdldCgpLAotICAgICAgICAgICAg
UHJvZmlsZU5hbWUoKSwKLSAgICAgICAgICAgIGdzdF9jYXBzX3JlZihtX3Jlc3RyaWN0aW9uQ2Fw
cy5nZXQoKSksCi0gICAgICAgICAgICAxKSk7Ci0gICAgICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
ZW5jb2RlYmluID0gbWFrZUVsZW1lbnQoImVuY29kZWJpbiIpOwotCi0gICAgICAgIGlmICghZW5j
b2RlYmluLmdldCgpKSB7Ci0gICAgICAgICAgICBHU1RfRVJST1IoIk5vIGVuY29kZWJpbiBwcmVz
ZW50Li4uIGNhbid0IHVzZSBHU3RyZWFtZXIgYmFzZWQgZW5jb2RlcnMiKTsKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGdfb2JqZWN0X3NldChlbmNvZGVi
aW4uZ2V0KCksICJwcm9maWxlIiwgbV9wcm9maWxlLmdldCgpLCBudWxscHRyKTsKLQotICAgICAg
ICBmb3IgKEdMaXN0KiB0bXAgPSBHU1RfQklOX0NISUxEUkVOKGVuY29kZWJpbi5nZXQoKSk7IHRt
cDsgdG1wID0gdG1wLT5uZXh0KSB7Ci0gICAgICAgICAgICBHc3RFbGVtZW50KiBlbGVtID0gR1NU
X0VMRU1FTlQodG1wLT5kYXRhKTsKLSAgICAgICAgICAgIEdzdEVsZW1lbnRGYWN0b3J5KiBmYWN0
b3J5ID0gZ3N0X2VsZW1lbnRfZ2V0X2ZhY3RvcnkoKGVsZW0pKTsKLQotICAgICAgICAgICAgaWYg
KCFmYWN0b3J5IHx8ICFnc3RfZWxlbWVudF9mYWN0b3J5X2xpc3RfaXNfdHlwZShmYWN0b3J5LCBH
U1RfRUxFTUVOVF9GQUNUT1JZX1RZUEVfVklERU9fRU5DT0RFUikpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgICAgIGVuYyA9IGVsZW07Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmICghZW5jKQotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICAgICAgaWYgKGVuY29kZXIpCi0gICAgICAgICAgICAqZW5jb2RlciA9IGVuYzsK
IAotICAgICAgICByZXR1cm4gZW5jb2RlYmluOworICAgICAgICByZXR1cm4gd2VicnRjZW5jb2Rl
cjsKICAgICB9CiAKICAgICB2b2lkIEFkZENvZGVjSWZTdXBwb3J0ZWQoc3RkOjp2ZWN0b3I8d2Vi
cnRjOjpTZHBWaWRlb0Zvcm1hdD4qIHN1cHBvcnRlZEZvcm1hdHMpCiAgICAgewogICAgICAgICBH
c3RFbGVtZW50KiBlbmNvZGVyOwogCi0gICAgICAgIGlmIChjcmVhdGVFbmNvZGVyKCZlbmNvZGVy
KS5nZXQoKSAhPSBudWxscHRyKSB7CisgICAgICAgIGlmIChjcmVhdGVFbmNvZGVyKCkuZ2V0KCkg
IT0gbnVsbHB0cikgewogICAgICAgICAgICAgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdCBmb3JtYXQg
PSBDb25maWd1cmVTdXBwb3J0ZWRDb2RlYyhlbmNvZGVyKTsKIAogICAgICAgICAgICAgc3VwcG9y
dGVkRm9ybWF0cy0+cHVzaF9iYWNrKGZvcm1hdCk7CkBAIC0zODAsMTcgKzMzMCwyMCBAQCBwdWJs
aWM6CiAKICAgICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdAogICAgIHsK
KyAgICAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBlbmNvZGVySW1wbGVtZW50YXRpb247CiAgICAg
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG1fZW5jb2RlciwgbnVsbHB0cik7CiAKLSAgICAgICAg
cmV0dXJuIEdTVF9PQkpFQ1RfTkFNRShnc3RfZWxlbWVudF9nZXRfZmFjdG9yeShtX2VuY29kZXIp
KTsKKyAgICAgICAgZ19vYmplY3RfZ2V0KG1fZW5jb2RlciwgImVuY29kZXIiLCAmZW5jb2Rlcklt
cGxlbWVudGF0aW9uLm91dFB0cigpLCBudWxscHRyKTsKKworICAgICAgICByZXR1cm4gR1NUX09C
SkVDVF9OQU1FKGdzdF9lbGVtZW50X2dldF9mYWN0b3J5KGVuY29kZXJJbXBsZW1lbnRhdGlvbi5n
ZXQoKSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgY29uc3QgZ2NoYXIqIE5hbWUoKSA9IDA7CiAK
ICAgICB2b2lkIFNldFJlc3RyaWN0aW9uQ2FwcyhHUmVmUHRyPEdzdENhcHM+IGNhcHMpCiAgICAg
ewotICAgICAgICBpZiAoY2FwcyAmJiBtX3Byb2ZpbGUuZ2V0KCkgJiYgZ3N0X2NhcHNfaXNfZXF1
YWwobV9yZXN0cmljdGlvbkNhcHMuZ2V0KCksIGNhcHMuZ2V0KCkpKQotICAgICAgICAgICAgZ19v
YmplY3Rfc2V0KG1fcHJvZmlsZS5nZXQoKSwgInJlc3RyaWN0aW9uLWNhcHMiLCBjYXBzLmdldCgp
LCBudWxscHRyKTsKKyAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25DYXBzKQorICAgICAgICAgICAg
Z19vYmplY3Rfc2V0KG1fY2Fwc0ZpbHRlciwgImNhcHMiLCBtX3Jlc3RyaWN0aW9uQ2Fwcy5nZXQo
KSwgbnVsbHB0cik7CiAKICAgICAgICAgbV9yZXN0cmljdGlvbkNhcHMgPSBjYXBzOwogICAgIH0K
QEAgLTQwNCwxMiArMzU3LDExIEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBt
X3BpcGVsaW5lOwogICAgIEdzdEVsZW1lbnQqIG1fc3JjOwogICAgIEdzdEVsZW1lbnQqIG1fZW5j
b2RlcjsKKyAgICBHc3RFbGVtZW50KiBtX2NhcHNGaWx0ZXI7CiAKICAgICB3ZWJydGM6OkVuY29k
ZWRJbWFnZUNhbGxiYWNrKiBtX2ltYWdlUmVhZHlDYjsKICAgICBHc3RDbG9ja1RpbWUgbV9maXJz
dEZyYW1lUHRzOwogICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9yZXN0cmljdGlvbkNhcHM7Ci0gICAg
R1JlZlB0cjxHc3RFbmNvZGluZ1Byb2ZpbGU+IG1fcHJvZmlsZTsKLSAgICBCaXRyYXRlU2V0dGVy
IG1fYml0cmF0ZVNldHRlcjsKICAgICB3ZWJydGM6OkVuY29kZWRJbWFnZSBtX2VuY29kZWRGcmFt
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiBtX2VuY29kZWRJbWFnZUJ1ZmZlcjsK
ICAgICBzaXplX3QgbV9lbmNvZGVkSW1hZ2VCdWZmZXJTaXplOwpAQCAtNDgzLDE4ICs0MzUsNiBA
QCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBHc3RFbGVtZW50KiBDcmVhdGVGaWx0
ZXIoKSBmaW5hbAotICAgIHsKLSAgICAgICAgR3N0RWxlbWVudCogZmlsdGVyID0gbWFrZUVsZW1l
bnQoImNhcHNmaWx0ZXIiKTsKLSAgICAgICAgYXV0byBjYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBz
X25ld19zaW1wbGUoQ2FwcygpLAotICAgICAgICAgICAgImFsaWdubWVudCIsIEdfVFlQRV9TVFJJ
TkcsICJhdSIsCi0gICAgICAgICAgICAic3RyZWFtLWZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsICJi
eXRlLXN0cmVhbSIsCi0gICAgICAgICAgICBudWxscHRyKSk7Ci0gICAgICAgIGdfb2JqZWN0X3Nl
dChmaWx0ZXIsICJjYXBzIiwgY2Fwcy5nZXQoKSwgbnVsbHB0cik7Ci0KLSAgICAgICAgcmV0dXJu
IGZpbHRlcjsKLSAgICB9Ci0KICAgICB3ZWJydGM6OlNkcFZpZGVvRm9ybWF0IENvbmZpZ3VyZVN1
cHBvcnRlZENvZGVjKEdzdEVsZW1lbnQqKSBmaW5hbAogICAgIHsKICAgICAgICAgLy8gVE9ETy0g
Q3JlYXRlIGZyb20gZW5jb2RlciBzcmMgcGFkIGNhcHMgdGVtcGxhdGUKQEAgLTU1OCw2ICs0OTgs
NyBAQCBHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5OjpHU3RyZWFtZXJWaWRlb0VuY29kZXJG
YWN0b3J5KCkKIAogICAgIHN0ZDo6Y2FsbF9vbmNlKGRlYnVnUmVnaXN0ZXJlZEZsYWcsIFtdIHsK
ICAgICAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X3dlYnJ0Y2VuY19kZWJ1Zywg
IndlYmtpdGxpYndlYnJ0Y3ZpZGVvZW5jb2RlciIsIDAsICJXZWJLaXQgV2ViUlRDIHZpZGVvIGVu
Y29kZXIiKTsKKyAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIobnVsbHB0ciwgIndlYnJ0Y3Zp
ZGVvZW5jb2RlciIsIEdTVF9SQU5LX1BSSU1BUlksIEdTVF9UWVBFX1dFQlJUQ19WSURFT19FTkNP
REVSKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDI3MDY4Yjg0NzljMmU3NGVmZWJhNDkxYTM5YTQ5ZTM4NjU0ZTMxMDIu
LjVhNDE0ODY4ZDgzOWZhYzM3ZTg1OGJlM2FlNWEwMTIyZDA3MDhlMzQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAx
OC0xMC0xMiAgVGhpYmF1bHQgU2F1bmllciAgPHRzYXVuaWVyQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0dTdHJlYW1lcl1bV2ViUlRDXSBBZGQgd2VicnRjZW5jb2RlciBiaW4gdG8gY2xlYW51cCBh
bmQgcmVmYWN0b3IgdGhlIHdheSB3ZSBzZXQgZW5jb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY3NAorCisgICAgICAgIHdlYnJ0Y2VuY29k
ZXIgaXMgYSBzaW1wbGUgR3N0QmluIHdpdGggYSBzZXQgb2Ygd2VsbCBrbm93biBHU3RyZWFtZXIg
ZW5jb2RlcnMgd2hpY2gKKyAgICAgICAgaXQgY2FuIHVzZSB0byBpbXBsZW1lbnQgZW5jb2Rpbmcg
Zm9yIGRpZmZlcmVudCBmb3JtYXRzIGV4cG9zaW5nIGEgdHJpbW1lZCBkb3duIHVuaWZpZWQgQVBJ
LgorCisgICAgICAgIEl0IGFsc28gYWRkcyBwcm9wZXIgaGFuZGxpbmcgb2YgSDI2NCBwcm9maWxl
cy4KKworICAgICAgICBUaGUgYWRkZWQgZmlsZXMgZm9sbG93IEdTdHJlYW1lciBjb2Rpbmcgc3R5
bGUgYXMgd2UgYWltIGF0IHVwc3RyZWFtaW5nIHRoZSBlbGVtZW50CisgICAgICAgIGluIHRoZSBm
dXR1cmUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CisKIDIwMTgtMTAtMTYgIFNpaHVp
IExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgc3dpdGNoIGZvciBX
ZWIgU1FMCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggYTU5MDhl
NjAxNmEyMWNhNzZiNmIyYWUzZTU0MTllYTllMWZmZDdjYS4uMTc0MjQ5MzRlMTg3ZmQ3ZGMzMTE4
YmYyYzQxZDZkZjZjZjJmOTYwYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
ci5weQpAQCAtMjM3LDYgKzIzNywxOSBAQCBfUEFUSF9SVUxFU19TUEVDSUZJRVIgPSBbCiAgICAg
ICAiLXdoaXRlc3BhY2UvZGVjbGFyYXRpb24iLAogICAgICAgIi13aGl0ZXNwYWNlL2luZGVudCJd
KSwKIAorICAgIChbICAjIEZpbGVzIGZvbGxvd2luZyBHU3RyZWFtZXIgY29kaW5nIHN0eWxlIChm
b3IgYSBzaW1wbGVyIHVwc3RyZWFtaW5nIHByb2Nlc3MgZm9yIGV4YW1wbGUpCisgICAgICBvcy5w
YXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3JtJywgJ21lZGlhc3RyZWFtJywg
J2xpYndlYnJ0YycsICdHU3RyZWFtZXJWaWRlb0VuY29kZXIuY3BwJyksCisgICAgICBvcy5wYXRo
LmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3JtJywgJ21lZGlhc3RyZWFtJywgJ2xp
YndlYnJ0YycsICdHU3RyZWFtZXJWaWRlb0VuY29kZXIuaCcpLAorICAgICBdLAorICAgICBbIi13
aGl0ZXNwYWNlL2luZGVudCIsCisgICAgICAiLXdoaXRlc3BhY2UvZGVjbGFyYXRpb24iLAorICAg
ICAgIi13aGl0ZXNwYWNlL3BhcmVucyIsCisgICAgICAiLXJlYWRhYmlsaXR5L251bGwiLAorICAg
ICAgIi13aGl0ZXNwYWNlL2JyYWNlcyIsCisgICAgICAiLXJlYWRhYmlsaXR5L25hbWluZy91bmRl
cnNjb3JlcyIsCisgICAgICAiLXJlYWRhYmlsaXR5L2VudW1fY2FzaW5nIiwKKyAgICAgXSksCisK
ICAgICAoWwogICAgICAgIyBUaGVyZSBpcyBubyB3YXkgdG8gYXZvaWQgdGhlIHN5bWJvbHMgX19q
aXRfZGVidWdfcmVnaXN0ZXJfY29kZQogICAgICAgIyBhbmQgX19qaXRfZGVidWdfZGVzY3JpcHRv
ciB3aGVuIGludGVncmF0aW5nIHdpdGggZ2RiLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353486</attachid>
            <date>2018-10-31 04:20:20 -0700</date>
            <delta_ts>2018-11-05 06:16:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190674-20181031082019.patch</filename>
            <type>text/plain</type>
            <size>29177</size>
            <attacher name="Thibault Saunier">tsaunier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE0NmI3NzY0NzJmODlk
ZTBlYWNjMTBlNjZmNTc0M2ZjMDhlNDQwOC4uYjA5NTU0OWFjOGNhZDM2YWIwNjk5YTM3NTAzOGIx
YjJkNzEwMjMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE4LTEwLTEyICBUaGli
YXVsdCBTYXVuaWVyICA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XVtXZWJSVENdIEFkZCB3ZWJydGNlbmNvZGVyIGJpbiB0byBjbGVhbnVwIGFuZCByZWZhY3RvciB0
aGUgd2F5IHdlIHNldCBlbmNvZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkwNjc0CisKKyAgICAgICAgd2VicnRjZW5jb2RlciBpcyBhIHNpbXBs
ZSBHc3RCaW4gd2l0aCBhIHNldCBvZiB3ZWxsIGtub3duIEdTdHJlYW1lciBlbmNvZGVycyB3aGlj
aAorICAgICAgICBpdCBjYW4gdXNlIHRvIGltcGxlbWVudCBlbmNvZGluZyBmb3IgZGlmZmVyZW50
IGZvcm1hdHMgZXhwb3NpbmcgYSB0cmltbWVkIGRvd24gdW5pZmllZCBBUEkuCisKKyAgICAgICAg
SXQgYWxzbyBhZGRzIHByb3BlciBoYW5kbGluZyBvZiBIMjY0IHByb2ZpbGVzLgorCisgICAgICAg
IFRoZSBhZGRlZCBmaWxlcyBmb2xsb3cgR1N0cmVhbWVyIGNvZGluZyBzdHlsZSBhcyB3ZSBhaW0g
YXQgdXBzdHJlYW1pbmcgdGhlIGVsZW1lbnQKKyAgICAgICAgaW4gdGhlIGZ1dHVyZS4KKworICAg
ICAgICBUaGlzIGlzIGEgcmVmYWN0b3Jpbmcgc28gY3VycmVudCB0ZXN0cyBhbHJlYWR5IGNvdmVy
IGl0LgorCisgICAgICAgICogcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OmluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyLmNw
cDogQWRkZWQuCisgICAgICAgIChnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfZ2V0X3Byb3BlcnR5
KToKKyAgICAgICAgKGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9zZXRfYml0cmF0ZSk6CisgICAg
ICAgIChnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfc2V0X2Zvcm1hdCk6CisgICAgICAgIChnc3Rf
d2VicnRjX3ZpZGVvX2VuY29kZXJfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHJlZ2lzdGVyX2tu
b3duX2VuY29kZXIpOgorICAgICAgICAoc2V0dXBfeDI2NGVuYyk6CisgICAgICAgIChzZXR1cF92
cDhlbmMpOgorICAgICAgICAoc2V0dXBfb3BlbmgyNjRlbmMpOgorICAgICAgICAoc2V0X2JpdHJh
dGVfa2JpdF9wZXJfc2VjKToKKyAgICAgICAgKHNldF9iaXRyYXRlX2JpdF9wZXJfc2VjKToKKyAg
ICAgICAgKGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9jbGFzc19pbml0KToKKyAgICAgICAgKGdz
dF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9pbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyLmg6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVvRW5jb2Rlcjo6R1N0cmVh
bWVyVmlkZW9FbmNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVvRW5jb2Rl
cjo6SW5pdEVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0VuY29kZXI6
OmNyZWF0ZUVuY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9FbmNvZGVy
OjpBZGRDb2RlY0lmU3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVv
RW5jb2Rlcjo6SW1wbGVtZW50YXRpb25OYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lclZpZGVvRW5jb2Rlcjo6U2V0UmVzdHJpY3Rpb25DYXBzKToKKwogMjAxOC0xMC0xNyAg
QWxpIEp1bWEgIDxhanVtYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRmxha3kgSW50ZXJzZWN0
aW9uT2JzZXJ2ZXIgd2ViIHBsYXRmb3JtIHRlc3RzIGludm9sdmluZyBzdHlsZSB1cGRhdGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKaW5kZXggZDlhMWZkYjMwYzQyMGYw
OTgxYmZlZWY0ZGNkZjRjOTZhZmRkYTI1ZC4uZDUzNTQ0YTdkYzdjODM2Mjk5YzAwYWQ5NTNhMDM0
MDFmZjYyMGYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVy
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAt
MzQsNiArMzQsNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3Ry
ZWFtZXIuY3BwCiAKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJl
YW1lclZpZGVvRGVjb2RlckZhY3RvcnkuY3BwCisgICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAogICAg
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUu
Y3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2Rlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDdkYWI4ZGRlOGRlYzE1OWFlMTZmNTg2OTE5NTQ4OTNiZjc4ZWRlZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9H
U3RyZWFtZXJWaWRlb0VuY29kZXIuY3BwCkBAIC0wLDAgKzEsMzQwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisvKiBOT1RFOiBUaGlzIGZpbGUgcmVz
cGVjdHMgR1N0cmVhbWVyIGNvZGluZyBzdHlsZSBhcyB3ZSBtaWdodCB3YW50IHRvIHVwc3RyZWFt
CisgKiB0aGF0IGVsZW1lbnQgaW4gdGhlIGZ1dHVyZSAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShMSUJX
RUJSVEMpICYmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAiR1N0cmVhbWVyVmlkZW9FbmNvZGVy
LmgiCisKK0dTVF9ERUJVR19DQVRFR09SWSAoZ3N0X3dlYnJ0Y2VuY19kZWJ1Zyk7CisjZGVmaW5l
IEdTVF9DQVRfREVGQVVMVCBnc3Rfd2VicnRjZW5jX2RlYnVnCisKKyNkZWZpbmUgS0JJVF9UT19C
SVQgMTAyNAorCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua1RlbXBsYXRlID0gR1NU
X1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKKyAgICBHU1RfUEFEX1NJTkssCisgICAgR1NU
X1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXcoQU5ZKTsiKSk7
CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNUZW1wbGF0ZSA9IEdTVF9TVEFUSUNf
UEFEX1RFTVBMQVRFICgic3JjIiwKKyAgICBHU1RfUEFEX1NSQywKKyAgICBHU1RfUEFEX0FMV0FZ
UywKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LWgyNjQ7dmlkZW8veC12cDgiKSk7CisK
K3R5cGVkZWYgdm9pZCAoKlNldEJpdHJhdGVGdW5jKSAoR09iamVjdCAqIGVuY29kZXIsIGNvbnN0
IGdjaGFyICogcHJvcG5hbWUsCisgICAgZ2ludCBiaXRyYXRlKTsKK3R5cGVkZWYgdm9pZCAoKlNl
dHVwRW5jb2RlcikgKEdPYmplY3QgKiBlbmNvZGVyKTsKK3R5cGVkZWYgc3RydWN0Cit7CisgIGdi
b29sZWFuIGF2YWxhaWJsZTsKKyAgR3N0Q2FwcyAqY2FwczsKKyAgY29uc3QgZ2NoYXIgKm5hbWU7
CisgIGNvbnN0IGdjaGFyICpwYXJzZXJfbmFtZTsKKyAgR3N0Q2FwcyAqZW5jb2RlZF9mb3JtYXQ7
CisgIFNldEJpdHJhdGVGdW5jIHNldEJpdHJhdGU7CisgIFNldHVwRW5jb2RlciBzZXR1cEVuY29k
ZXI7CisgIGNvbnN0IGdjaGFyICpiaXRyYXRlX3Byb3BuYW1lOworfSBFbmNvZGVyRGVmaW5pdGlv
bjsKKwordHlwZWRlZiBlbnVtCit7CisgIEVOQ09ERVJfTk9ORSwKKyAgRU5DT0RFUl9YMjY0LAor
ICBFTkNPREVSX09QRU5IMjY0LAorICBFTkNPREVSX1ZQOCwKKyAgRU5DT0RFUl9MQVNULAorfSBF
bmNvZGVySWQ7CisKK0VuY29kZXJEZWZpbml0aW9uIGVuY29kZXJzW0VOQ09ERVJfTEFTVF0gPSB7
CisgIEZBTFNFLAorICBOVUxMLAorICBOVUxMLAorICBOVUxMLAorICBOVUxMLAorICBOVUxMLAor
ICBOVUxMLAorICBOVUxMLAorfTsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgRW5jb2RlcklkIGVu
Y29kZXJJZDsKKyAgR3N0RWxlbWVudCAqZW5jb2RlcjsKKyAgR3N0RWxlbWVudCAqcGFyc2VyOwor
ICBHc3RFbGVtZW50ICpjYXBzZmlsdGVyOworICBndWludCBiaXRyYXRlOworfSBHc3RXZWJydGNW
aWRlb0VuY29kZXJQcml2YXRlOworCitHX0RFRklORV9UWVBFX1dJVEhfUFJJVkFURSAoR3N0V2Vi
cnRjVmlkZW9FbmNvZGVyLCBnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXIsCisgICAgR1NUX1RZUEVf
QklOKQorICAgICBlbnVtCisgICAgIHsKKyAgICAgICBQUk9QXzAsCisgICAgICAgUFJPUF9GT1JN
QVQsCisgICAgICAgUFJPUF9FTkNPREVSLAorICAgICAgIFBST1BfQklUUkFURSwKKyAgICAgICBO
X1BST1BTCisgICAgIH07CisKKyNkZWZpbmUgUFJJVihzZWxmKSAoKEdzdFdlYnJ0Y1ZpZGVvRW5j
b2RlclByaXZhdGUqKWdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9nZXRfaW5zdGFuY2VfcHJpdmF0
ZShzZWxmKSkKKworICAgICBzdGF0aWMgdm9pZCBnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfZmlu
YWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdfT0JKRUNUX0NMQVNTIChnc3Rfd2VicnRj
X3ZpZGVvX2VuY29kZXJfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0
YXRpYyB2b2lkCitnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfZ2V0X3Byb3BlcnR5IChHT2JqZWN0
ICogb2JqZWN0LAorICAgIGd1aW50IHByb3BfaWQsIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVj
ICogcHNwZWMpCit7CisgIEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlciAqc2VsZiA9IEdTVF9XRUJSVENf
VklERU9fRU5DT0RFUiAob2JqZWN0KTsKKyAgR3N0V2VicnRjVmlkZW9FbmNvZGVyUHJpdmF0ZSAq
cHJpdiA9IFBSSVYgKHNlbGYpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJP
UF9GT1JNQVQ6CisgICAgICBpZiAocHJpdi0+ZW5jb2RlcklkICE9IEVOQ09ERVJfTk9ORSkKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm94ZWQgKHZhbHVlLCBlbmNvZGVyc1twcml2LT5lbmNvZGVySWRd
LmNhcHMpOworICAgICAgZWxzZQorICAgICAgICBnX3ZhbHVlX3NldF9ib3hlZCAodmFsdWUsIE5V
TEwpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQ09ERVI6CisgICAgICBnX3ZhbHVl
X3NldF9vYmplY3QgKHZhbHVlLCBwcml2LT5lbmNvZGVyKTsKKyAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9CSVRSQVRFOgorICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIHByaXYtPmJp
dHJhdGUpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5f
SU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgIH0KK30KKwor
c3RhdGljIHZvaWQKK2dzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9zZXRfYml0cmF0ZSAoR3N0V2Vi
cnRjVmlkZW9FbmNvZGVyICogc2VsZiwKKyAgICBndWludCBiaXRyYXRlKQoreworICBHc3RXZWJy
dGNWaWRlb0VuY29kZXJQcml2YXRlICpwcml2ID0gUFJJViAoc2VsZik7CisKKyAgcHJpdi0+Yml0
cmF0ZSA9IGJpdHJhdGU7CisgIGlmIChwcml2LT5lbmNvZGVyKSB7CisgICAgZW5jb2RlcnNbcHJp
di0+ZW5jb2RlcklkXS5zZXRCaXRyYXRlIChHX09CSkVDVCAocHJpdi0+ZW5jb2RlciksCisgICAg
ICAgIGVuY29kZXJzW3ByaXYtPmVuY29kZXJJZF0uYml0cmF0ZV9wcm9wbmFtZSwgcHJpdi0+Yml0
cmF0ZSk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9z
ZXRfZm9ybWF0IChHc3RXZWJydGNWaWRlb0VuY29kZXIgKiBzZWxmLAorICAgIGNvbnN0IEdzdENh
cHMgKiBjYXBzKQoreworICBnaW50IGk7CisgIEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlclByaXZhdGUg
KnByaXYgPSBQUklWIChzZWxmKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+ZW5jb2Rlcklk
ID09IEVOQ09ERVJfTk9ORSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKGNhcHMpOworCisgIGZvciAo
aSA9IDE7IGkgPCBFTkNPREVSX0xBU1Q7IGkrKykgeworICAgIGlmIChlbmNvZGVyc1tpXS5hdmFs
YWlibGUKKyAgICAgICAgJiYgZ3N0X2NhcHNfY2FuX2ludGVyc2VjdCAoZW5jb2RlcnNbaV0uY2Fw
cywgY2FwcykpIHsKKyAgICAgIEdzdFBhZCAqdG1wcGFkOworICAgICAgcHJpdi0+ZW5jb2Rlcklk
ID0gKEVuY29kZXJJZCkgaTsKKyAgICAgIHByaXYtPmVuY29kZXIgPSBnc3RfZWxlbWVudF9mYWN0
b3J5X21ha2UgKGVuY29kZXJzW2ldLm5hbWUsIE5VTEwpOworICAgICAgZW5jb2RlcnNbcHJpdi0+
ZW5jb2RlcklkXS5zZXR1cEVuY29kZXIgKEdfT0JKRUNUIChwcml2LT5lbmNvZGVyKSk7CisKKyAg
ICAgIGlmIChlbmNvZGVyc1tpXS5wYXJzZXJfbmFtZSkKKyAgICAgICAgcHJpdi0+cGFyc2VyID0g
Z3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlIChlbmNvZGVyc1tpXS5wYXJzZXJfbmFtZSwgTlVMTCk7
CisKKyAgICAgIGlmIChlbmNvZGVyc1tpXS5lbmNvZGVkX2Zvcm1hdCkgeworICAgICAgICBwcml2
LT5jYXBzZmlsdGVyID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiY2Fwc2ZpbHRlciIsIE5V
TEwpOworICAgICAgICBnX29iamVjdF9zZXQgKHByaXYtPmNhcHNmaWx0ZXIsICJjYXBzIiwgZW5j
b2RlcnNbaV0uZW5jb2RlZF9mb3JtYXQsCisgICAgICAgICAgICBOVUxMKTsKKyAgICAgIH0KKwor
ICAgICAgZ3N0X2Jpbl9hZGQgKEdTVF9CSU4gKHNlbGYpLCBwcml2LT5lbmNvZGVyKTsKKworICAg
ICAgdG1wcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHByaXYtPmVuY29kZXIsICJz
aW5rIik7CisgICAgICBnc3RfZ2hvc3RfcGFkX3NldF90YXJnZXQgKEdTVF9HSE9TVF9QQUQgKEdT
VF9FTEVNRU5UIChzZWxmKS0+CisgICAgICAgICAgICAgIHNpbmtwYWRzLT5kYXRhKSwgdG1wcGFk
KTsKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHRtcHBhZCk7CisKKyAgICAgIHRtcHBhZCA9IGdz
dF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChwcml2LT5lbmNvZGVyLCAic3JjIik7CisgICAgICBp
ZiAocHJpdi0+cGFyc2VyKSB7CisgICAgICAgIGdzdF9iaW5fYWRkIChHU1RfQklOIChzZWxmKSwg
cHJpdi0+cGFyc2VyKTsKKyAgICAgICAgZ3N0X2VsZW1lbnRfbGluayAocHJpdi0+ZW5jb2Rlciwg
cHJpdi0+cGFyc2VyKTsKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZiAodG1wcGFkKTsKKyAgICAg
ICAgdG1wcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHByaXYtPnBhcnNlciwgInNy
YyIpOworICAgICAgfQorCisgICAgICBpZiAocHJpdi0+Y2Fwc2ZpbHRlcikgeworICAgICAgICBH
c3RQYWQgKnRtcHBhZDIgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAocHJpdi0+Y2Fwc2Zp
bHRlciwgInNpbmsiKTsKKworICAgICAgICBnc3RfYmluX2FkZCAoR1NUX0JJTiAoc2VsZiksIHBy
aXYtPmNhcHNmaWx0ZXIpOworICAgICAgICBnc3RfcGFkX2xpbmsgKHRtcHBhZCwgdG1wcGFkMik7
CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHRtcHBhZCk7CisgICAgICAgIHRtcHBhZCA9IGdz
dF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChwcml2LT5jYXBzZmlsdGVyLCAic3JjIik7CisgICAg
ICAgIGdzdF9vYmplY3RfdW5yZWYgKHRtcHBhZDIpOworICAgICAgfQorCisgICAgICBnX2Fzc2Vy
dCAoZ3N0X2dob3N0X3BhZF9zZXRfdGFyZ2V0IChHU1RfR0hPU1RfUEFEIChHU1RfRUxFTUVOVAor
ICAgICAgICAgICAgICAgICAgKHNlbGYpLT5zcmNwYWRzLT5kYXRhKSwgdG1wcGFkKSk7CisgICAg
ICBnc3Rfb2JqZWN0X3VucmVmICh0bXBwYWQpOworCisgICAgICBnc3Rfd2VicnRjX3ZpZGVvX2Vu
Y29kZXJfc2V0X2JpdHJhdGUgKHNlbGYsIHByaXYtPmJpdHJhdGUpOworICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgfQorCisgIEdTVF9FUlJPUiAoIk5vIGVuY29kZXIgZm91bmQgZm9yIGZvcm1hdCAl
IiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3Rfd2VicnRjX3Zp
ZGVvX2VuY29kZXJfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAorICAgIGd1aW50IHBy
b3BfaWQsIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdz
dFdlYnJ0Y1ZpZGVvRW5jb2RlciAqc2VsZiA9IEdTVF9XRUJSVENfVklERU9fRU5DT0RFUiAob2Jq
ZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfRk9STUFUOgorICAg
ICAgZ3N0X3dlYnJ0Y192aWRlb19lbmNvZGVyX3NldF9mb3JtYXQgKHNlbGYsIGdzdF92YWx1ZV9n
ZXRfY2FwcyAodmFsdWUpKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9CSVRSQVRFOgor
ICAgICAgZ3N0X3dlYnJ0Y192aWRlb19lbmNvZGVyX3NldF9iaXRyYXRlIChzZWxmLCBnX3ZhbHVl
X2dldF91aW50ICh2YWx1ZSkpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7
CisgIH0KK30KKworc3RhdGljIHZvaWQKK3JlZ2lzdGVyX2tub3duX2VuY29kZXIgKEVuY29kZXJJ
ZCBlbmNJZCwgY29uc3QgZ2NoYXIgKiBuYW1lLAorICAgIGNvbnN0IGdjaGFyICogcGFyc2VyX25h
bWUsIGNvbnN0IGdjaGFyICogY2FwcywgY29uc3QgZ2NoYXIgKiBlbmNvZGVkX2Zvcm1hdCwKKyAg
ICBTZXR1cEVuY29kZXIgc2V0dXBFbmNvZGVyLCBjb25zdCBnY2hhciAqIGJpdHJhdGVfcHJvcG5h
bWUsCisgICAgU2V0Qml0cmF0ZUZ1bmMgc2V0Qml0cmF0ZSkKK3sKKyAgR3N0UGx1Z2luRmVhdHVy
ZSAqZmVhdHVyZSA9CisgICAgICBnc3RfcmVnaXN0cnlfbG9va3VwX2ZlYXR1cmUgKGdzdF9yZWdp
c3RyeV9nZXQgKCksIG5hbWUpOworICBpZiAoIWZlYXR1cmUpIHsKKyAgICBHU1RfV0FSTklORyAo
IkNvdWxkIG5vdCBmaW5kICVzIiwgbmFtZSk7CisgICAgZW5jb2RlcnNbZW5jSWRdLmF2YWxhaWJs
ZSA9IEZBTFNFOworCisgICAgcmV0dXJuOworICB9CisgIGdzdF9vYmplY3RfdW5yZWYgKGZlYXR1
cmUpOworCisgIGVuY29kZXJzW2VuY0lkXS5hdmFsYWlibGUgPSBUUlVFOworICBlbmNvZGVyc1tl
bmNJZF0ubmFtZSA9IG5hbWU7CisgIGVuY29kZXJzW2VuY0lkXS5wYXJzZXJfbmFtZSA9IHBhcnNl
cl9uYW1lOworICBlbmNvZGVyc1tlbmNJZF0uY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nIChj
YXBzKTsKKyAgaWYgKGVuY29kZWRfZm9ybWF0KQorICAgIGVuY29kZXJzW2VuY0lkXS5lbmNvZGVk
X2Zvcm1hdCA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nIChlbmNvZGVkX2Zvcm1hdCk7CisgIGVsc2UK
KyAgICBlbmNvZGVyc1tlbmNJZF0uZW5jb2RlZF9mb3JtYXQgPSBOVUxMOworICBlbmNvZGVyc1tl
bmNJZF0uc2V0dXBFbmNvZGVyID0gc2V0dXBFbmNvZGVyOworICBlbmNvZGVyc1tlbmNJZF0uYml0
cmF0ZV9wcm9wbmFtZSA9IGJpdHJhdGVfcHJvcG5hbWU7CisgIGVuY29kZXJzW2VuY0lkXS5zZXRC
aXRyYXRlID0gc2V0Qml0cmF0ZTsKK30KKworc3RhdGljIHZvaWQKK3NldHVwX3gyNjRlbmMgKEdP
YmplY3QgKiBlbmNvZGVyKQoreworICBnc3RfdXRpbF9zZXRfb2JqZWN0X2FyZyAoZW5jb2Rlciwg
InR1bmUiLCAiemVyb2xhdGVuY3kiKTsKK30KKworc3RhdGljIHZvaWQKK3NldHVwX3ZwOGVuYyAo
R09iamVjdCAqIGVuY29kZXIpCit7CisgIGdzdF9wcmVzZXRfbG9hZF9wcmVzZXQgKEdTVF9QUkVT
RVQgKGVuY29kZXIpLCAiUHJvZmlsZSBSZWFsdGltZSIpOworfQorCitzdGF0aWMgdm9pZAorc2V0
dXBfb3BlbmgyNjRlbmMgKEdPYmplY3QgKikKK3sKK30KKworc3RhdGljIHZvaWQKK3NldF9iaXRy
YXRlX2tiaXRfcGVyX3NlYyAoR09iamVjdCAqIGVuY29kZXIsIGNvbnN0IGdjaGFyICogcHJvcF9u
YW1lLAorICAgIGdpbnQgYml0cmF0ZSkKK3sKKyAgZ19vYmplY3Rfc2V0IChlbmNvZGVyLCBwcm9w
X25hbWUsIGJpdHJhdGUsIE5VTEwpOworfQorCitzdGF0aWMgdm9pZAorc2V0X2JpdHJhdGVfYml0
X3Blcl9zZWMgKEdPYmplY3QgKiBlbmNvZGVyLCBjb25zdCBnY2hhciAqIHByb3BfbmFtZSwKKyAg
ICBnaW50IGJpdHJhdGUpCit7CisgIGdfb2JqZWN0X3NldCAoZW5jb2RlciwgcHJvcF9uYW1lLCBi
aXRyYXRlICogMTAyNCwgTlVMTCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3Rfd2VicnRjX3ZpZGVv
X2VuY29kZXJfY2xhc3NfaW5pdCAoR3N0V2VicnRjVmlkZW9FbmNvZGVyQ2xhc3MgKiBrbGFzcykK
K3sKKyAgR09iamVjdENsYXNzICpvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3Mp
OworCisgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3Rfd2VicnRjZW5jX2RlYnVnLCAid2Vi
cnRjZW5jb2RlciIsIDAsCisgICAgICAiVmlkZW8gZW5jb2RlciBmb3IgV2ViUlRDIik7CisKKyAg
b2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9maW5hbGl6
ZTsKKyAgb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3Rfd2VicnRjX3ZpZGVvX2VuY29k
ZXJfZ2V0X3Byb3BlcnR5OworICBvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF93ZWJy
dGNfdmlkZW9fZW5jb2Rlcl9zZXRfcHJvcGVydHk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eSAob2JqZWN0X2NsYXNzLCBQUk9QX0ZPUk1BVCwKKyAgICAgIGdfcGFyYW1fc3Bl
Y19ib3hlZCAoImZvcm1hdCIsICJGb3JtYXQgYXMgY2FwcyIsCisgICAgICAgICAgIlNldCB0aGUg
Y2FwcyBvZiB0aGUgZm9ybWF0IHRvIGJlIHVzZWQuIiwKKyAgICAgICAgICBHU1RfVFlQRV9DQVBT
LAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9T
VEFUSUNfU1RSSU5HUykpKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChv
YmplY3RfY2xhc3MsIFBST1BfRU5DT0RFUiwKKyAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QgKCJl
bmNvZGVyIiwgIlRoZSBhY3R1YWwgZW5jb2RlciBlbGVtZW50IiwKKyAgICAgICAgICAiVGhlIGVu
Y29kZXIgZWxlbWVudCIsIEdTVF9UWVBFX0VMRU1FTlQsCisgICAgICAgICAgKEdQYXJhbUZsYWdz
KSAoR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisKKyAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAob2JqZWN0X2NsYXNzLCBQUk9QX0JJVFJBVEUs
CisgICAgICBnX3BhcmFtX3NwZWNfdWludCAoImJpdHJhdGUiLCAiQml0cmF0ZSIsCisgICAgICAg
ICAgIlRoZSBiaXRyYXRlIGluIGtiaXQgcGVyIHNlY29uZCIsIDAsIEdfTUFYSU5ULCAyMDQ4LAor
ICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFU
SUNfU1RSSU5HUyB8CisgICAgICAgICAgICAgIEdfUEFSQU1fQ09OU1RSVUNUKSkpOworCisgIHJl
Z2lzdGVyX2tub3duX2VuY29kZXIgKEVOQ09ERVJfWDI2NCwgIngyNjRlbmMiLCAiaDI2NHBhcnNl
IiwgInZpZGVvL3gtaDI2NCIsCisgICAgICAidmlkZW8veC1oMjY0LGFsaWdubWVudD1hdSxzdHJl
YW0tZm9ybWF0PWJ5dGUtc3RyZWFtLHByb2ZpbGU9YmFzZWxpbmUiLAorICAgICAgc2V0dXBfeDI2
NGVuYywgImJpdHJhdGUiLCBzZXRfYml0cmF0ZV9rYml0X3Blcl9zZWMpOworICByZWdpc3Rlcl9r
bm93bl9lbmNvZGVyIChFTkNPREVSX09QRU5IMjY0LCAib3BlbmgyNjRlbmMiLCAiaDI2NHBhcnNl
IiwKKyAgICAgICJ2aWRlby94LWgyNjQiLAorICAgICAgInZpZGVvL3gtaDI2NCxhbGlnbm1lbnQ9
YXUsc3RyZWFtLWZvcm1hdD1ieXRlLXN0cmVhbSxwcm9maWxlPWJhc2VsaW5lIiwKKyAgICAgIHNl
dHVwX29wZW5oMjY0ZW5jLCAiYml0cmF0ZSIsIHNldF9iaXRyYXRlX2tiaXRfcGVyX3NlYyk7Cisg
IHJlZ2lzdGVyX2tub3duX2VuY29kZXIgKEVOQ09ERVJfVlA4LCAidnA4ZW5jIiwgTlVMTCwgInZp
ZGVvL3gtdnA4IiwgTlVMTCwKKyAgICAgIHNldHVwX3ZwOGVuYywgInRhcmdldC1iaXRyYXRlIiwg
c2V0X2JpdHJhdGVfYml0X3Blcl9zZWMpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3dlYnJ0Y192
aWRlb19lbmNvZGVyX2luaXQgKEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlciAqIHNlbGYpCit7CisgIEdz
dFdlYnJ0Y1ZpZGVvRW5jb2RlclByaXZhdGUgKnByaXYgPSBQUklWIChzZWxmKTsKKworICBwcml2
LT5lbmNvZGVySWQgPSBFTkNPREVSX05PTkU7CisgIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9F
TEVNRU5UIChzZWxmKSwKKyAgICAgIGdzdF9naG9zdF9wYWRfbmV3X25vX3RhcmdldF9mcm9tX3Rl
bXBsYXRlICgic2luayIsCisgICAgICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgm
c2lua1RlbXBsYXRlKSkpOworCisgIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChz
ZWxmKSwKKyAgICAgIGdzdF9naG9zdF9wYWRfbmV3X25vX3RhcmdldF9mcm9tX3RlbXBsYXRlICgi
c3JjIiwKKyAgICAgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzcmNUZW1wbGF0
ZSkpKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgVVNFKExJQldFQlJUQykgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0Vu
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9H
U3RyZWFtZXJWaWRlb0VuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGVhMjVjNGVlZTNlMThmMTk4MTky
OGU4ZDRmZTE2NDRlNWFmMWIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2Rlci5oCkBAIC0w
LDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggTWV0cm9sb2dpY2FsIEdyb3Vw
IEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorCitHX0JFR0lOX0RFQ0xT
CisKKyNkZWZpbmUgR1NUX1RZUEVfV0VCUlRDX1ZJREVPX0VOQ09ERVIgKGdzdF93ZWJydGNfdmlk
ZW9fZW5jb2Rlcl9nZXRfdHlwZSgpKQorCitHX0RFQ0xBUkVfREVSSVZBQkxFX1RZUEUgKEdzdFdl
YnJ0Y1ZpZGVvRW5jb2RlciwgZ3N0X3dlYnJ0Y192aWRlb19lbmNvZGVyLCBHU1QsIFdFQlJUQ19W
SURFT19FTkNPREVSLCBHc3RCaW4pCisKK3N0cnVjdCBfR3N0V2VicnRjVmlkZW9FbmNvZGVyQ2xh
c3MKK3sKKyAgR3N0QmluQ2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworR19FTkRfREVDTFMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9H
U3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcApp
bmRleCA4MjBlN2E1MzU5MzJhYWU1NzczZWU2OGMwOTcyZTIzMWU5NGI2MDc5Li41MWU4MzUwNmI2
Y2M2ZGFhMDgzYWJjOGE2YmU3ZGU1ZWI1MTRmMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFj
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAj
aWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRD
KSAmJiBVU0UoR1NUUkVBTUVSKQogI2luY2x1ZGUgIkdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rv
cnkuaCIKIAorI2luY2x1ZGUgIkdTdHJlYW1lclZpZGVvRW5jb2Rlci5oIgogI2luY2x1ZGUgIkdT
dHJlYW1lclZpZGVvRnJhbWVMaWJXZWJSVEMuaCIKICNpbmNsdWRlICJ3ZWJydGMvY29tbW9uX3Zp
ZGVvL2gyNjQvaDI2NF9jb21tb24uaCIKICNpbmNsdWRlICJ3ZWJydGMvY29tbW9uX3ZpZGVvL2gy
NjQvcHJvZmlsZV9sZXZlbF9pZC5oIgpAQCAtNjMsMTMgKzY0LDExIEBAIHB1YmxpYzoKICAgICBH
U3RyZWFtZXJWaWRlb0VuY29kZXIoY29uc3Qgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdCYpCiAgICAg
ICAgIDogbV9maXJzdEZyYW1lUHRzKEdTVF9DTE9DS19USU1FX05PTkUpCiAgICAgICAgICwgbV9y
ZXN0cmljdGlvbkNhcHMoYWRvcHRHUmVmKGdzdF9jYXBzX25ld19lbXB0eV9zaW1wbGUoInZpZGVv
L3gtcmF3IikpKQotICAgICAgICAsIG1fYml0cmF0ZVNldHRlcihudWxscHRyKQogICAgIHsKICAg
ICB9CiAgICAgR1N0cmVhbWVyVmlkZW9FbmNvZGVyKCkKICAgICAgICAgOiBtX2ZpcnN0RnJhbWVQ
dHMoR1NUX0NMT0NLX1RJTUVfTk9ORSkKICAgICAgICAgLCBtX3Jlc3RyaWN0aW9uQ2FwcyhhZG9w
dEdSZWYoZ3N0X2NhcHNfbmV3X2VtcHR5X3NpbXBsZSgidmlkZW8veC1yYXciKSkpCi0gICAgICAg
ICwgbV9iaXRyYXRlU2V0dGVyKG51bGxwdHIpCiAgICAgewogICAgIH0KIApAQCAtODMsOCArODIs
OCBAQCBwdWJsaWM6CiAKICAgICAgICAgU2V0UmVzdHJpY3Rpb25DYXBzKFdURk1vdmUoY2Fwcykp
OwogCi0gICAgICAgIGlmIChtX2JpdHJhdGVTZXR0ZXIgJiYgbV9lbmNvZGVyKQotICAgICAgICAg
ICAgbV9iaXRyYXRlU2V0dGVyKG1fZW5jb2RlciwgbmV3Qml0cmF0ZSk7CisgICAgICAgIGlmICht
X2VuY29kZXIpCisgICAgICAgICAgICBnX29iamVjdF9zZXQobV9lbmNvZGVyLCAiYml0cmF0ZSIs
IG5ld0JpdHJhdGUsIG51bGxwdHIpOwogCiAgICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09E
RUNfT0s7CiAgICAgfQpAQCAtMTE4LDIwICsxMTcsMjYgQEAgcHVibGljOgogICAgICAgICBtX3Bp
cGVsaW5lID0gbWFrZUVsZW1lbnQoInBpcGVsaW5lIik7CiAKICAgICAgICAgY29ubmVjdFNpbXBs
ZUJ1c01lc3NhZ2VDYWxsYmFjayhtX3BpcGVsaW5lLmdldCgpKTsKLSAgICAgICAgYXV0byBlbmNv
ZGViaW4gPSBjcmVhdGVFbmNvZGVyKCZtX2VuY29kZXIpLmxlYWtSZWYoKTsKLSAgICAgICAgQVNT
RVJUKG1fZW5jb2Rlcik7Ci0gICAgICAgIG1fYml0cmF0ZVNldHRlciA9IGdldEJpdHJhdGVTZXR0
ZXIoZ3N0X2VsZW1lbnRfZ2V0X2ZhY3RvcnkobV9lbmNvZGVyKSk7CisgICAgICAgIGF1dG8gZW5j
b2RlciA9IGNyZWF0ZUVuY29kZXIoKTsKKyAgICAgICAgQVNTRVJUKGVuY29kZXIpOworICAgICAg
ICBtX2VuY29kZXIgPSBlbmNvZGVyLmdldCgpOwogCiAgICAgICAgIG1fc3JjID0gbWFrZUVsZW1l
bnQoImFwcHNyYyIpOwogICAgICAgICBnX29iamVjdF9zZXQobV9zcmMsICJpcy1saXZlIiwgdHJ1
ZSwgImZvcm1hdCIsIEdTVF9GT1JNQVRfVElNRSwgbnVsbHB0cik7CiAKLSAgICAgICAgYXV0byBj
YXBzZmlsdGVyID0gQ3JlYXRlRmlsdGVyKCk7CisgICAgICAgIGF1dG8gdmlkZW9jb252ZXJ0ID0g
bWFrZUVsZW1lbnQoInZpZGVvY29udmVydCIpOworICAgICAgICBhdXRvIHZpZGVvcmF0ZSA9IG1h
a2VFbGVtZW50KCJ2aWRlb3JhdGUiKTsKICAgICAgICAgYXV0byBzaW5rID0gbWFrZUVsZW1lbnQo
ImFwcHNpbmsiKTsKICAgICAgICAgZ3N0X2FwcF9zaW5rX3NldF9lbWl0X3NpZ25hbHMoR1NUX0FQ
UF9TSU5LKHNpbmspLCBUUlVFKTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChzaW5rLCAibmV3
LXNhbXBsZSIsIEdfQ0FMTEJBQ0sobmV3U2FtcGxlQ2FsbGJhY2tUcmFtcCksIHRoaXMpOwogCi0g
ICAgICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX3BpcGVsaW5lLmdldCgpKSwgbV9zcmMs
IGVuY29kZWJpbiwgY2Fwc2ZpbHRlciwgc2luaywgbnVsbHB0cik7Ci0gICAgICAgIGlmICghZ3N0
X2VsZW1lbnRfbGlua19tYW55KG1fc3JjLCBlbmNvZGViaW4sIGNhcHNmaWx0ZXIsIHNpbmssIG51
bGxwdHIpKQorICAgICAgICBhdXRvIG5hbWUgPSBTdHJpbmc6OmZvcm1hdCgiJXNfZW5jX3Jhd2Nh
cHNmaWx0ZXJfJXAiLCBOYW1lKCksIHRoaXMpOworICAgICAgICBtX2NhcHNGaWx0ZXIgPSBnc3Rf
ZWxlbWVudF9mYWN0b3J5X21ha2UoImNhcHNmaWx0ZXIiLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBpZiAobV9yZXN0cmljdGlvbkNhcHMpCisgICAgICAgICAgICBnX29iamVjdF9zZXQo
bV9jYXBzRmlsdGVyLCAiY2FwcyIsIG1fcmVzdHJpY3Rpb25DYXBzLmdldCgpLCBudWxscHRyKTsK
KworICAgICAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4obV9waXBlbGluZS5nZXQoKSksIG1f
c3JjLCB2aWRlb3JhdGUsIHZpZGVvY29udmVydCwgbV9jYXBzRmlsdGVyLCBlbmNvZGVyLmxlYWtS
ZWYoKSwgc2luaywgbnVsbHB0cik7CisgICAgICAgIGlmICghZ3N0X2VsZW1lbnRfbGlua19tYW55
KG1fc3JjLCB2aWRlb3JhdGUsIHZpZGVvY29udmVydCwgbV9jYXBzRmlsdGVyLCBtX2VuY29kZXIs
IHNpbmssIG51bGxwdHIpKQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKICAg
ICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9Q
TEFZSU5HKTsKQEAgLTE0NCwxMSArMTQ5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIEdzdEVsZW1lbnQqIENyZWF0ZUZpbHRlcigpCi0gICAg
ewotICAgICAgICByZXR1cm4gbWFrZUVsZW1lbnQoImNhcHNmaWx0ZXIiKTsKLSAgICB9Ci0KICAg
ICBpbnQzMl90IFJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayh3ZWJydGM6OkVuY29kZWRJ
bWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgZmluYWwKICAgICB7CiAgICAgICAgIG1faW1hZ2VSZWFk
eUNiID0gY2FsbGJhY2s7CkBAIC0xNjAsMTIgKzE2MCwxNiBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBtX2VuY29kZWRGcmFtZS5fYnVmZmVyID0gbnVsbHB0cjsKICAgICAgICAgbV9lbmNvZGVk
SW1hZ2VCdWZmZXIucmVzZXQoKTsKLSAgICAgICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IGFkb3B0
R1JlZihnc3RfcGlwZWxpbmVfZ2V0X2J1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZS5nZXQoKSkp
KTsKLSAgICAgICAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyKGJ1cy5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0cik7Ci0KLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlw
ZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICAgICAgbV9zcmMgPSBudWxscHRyOwot
ICAgICAgICBtX3BpcGVsaW5lID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKG1fcGlwZWxpbmUpIHsK
KyAgICAgICAgICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5l
X2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBn
c3RfYnVzX3NldF9zeW5jX2hhbmRsZXIoYnVzLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyKTsKKworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0
KCksIEdTVF9TVEFURV9OVUxMKTsKKyAgICAgICAgICAgIG1fc3JjID0gbnVsbHB0cjsKKyAgICAg
ICAgICAgIG1fZW5jb2RlciA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2NhcHNGaWx0ZXIgPSBu
dWxscHRyOworICAgICAgICAgICAgbV9waXBlbGluZSA9IG51bGxwdHI7CisgICAgICAgIH0KIAog
ICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogICAgIH0KQEAgLTI1NSw4MiAr
MjU5LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogICAgIH0KIAot
I2RlZmluZSBSRVRVUk5fQklUUkFURV9TRVRURVJfSUZfTUFUQ0hFUyhyZWdleCwgcHJvcGVydHlO
YW1lLCBiaXRyYXRlTXVsdGlwbGllciwgdW5pdCkgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAo
Z19yZWdleF9tYXRjaChyZWdleC5nZXQoKSwgZmFjdG9yeU5hbWUsIHN0YXRpY19jYXN0PEdSZWdl
eE1hdGNoRmxhZ3M+KDApLCBudWxscHRyKSkgeyAgICAgICAgICBcCi0gICAgICAgIEdTVF9JTkZP
X09CSkVDVChlbmNvZGVyRmFjdG9yeSwgIkRldGVjdGVkIGFzIGhhdmluZyBhICIgI3Byb3BlcnR5
TmFtZSAiIHByb3BlcnR5IGluICIgdW5pdCk7IFwKLSAgICAgICAgcmV0dXJuIFtdKEdzdEVsZW1l
bnQqIGVuY29kZXIsIHVpbnQzMl90IGJpdHJhdGUpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIGdfb2JqZWN0X3NldChlbmNvZGVyLCBwcm9w
ZXJ0eU5hbWUsIGJpdHJhdGUgKiBiaXRyYXRlTXVsdGlwbGllciwgbnVsbHB0cik7ICAgICAgICAg
ICAgXAotICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICB9Ci0KLSAgICAvLyBHU3RyZWFtZXIgZG9lc24ndCBoYXZlIGEgdW5pZmllZCBlbmNvZGVyIEFQ
SSBhbmQgdGhlIGVuY29kZXJzIGhhdmUgdGhlaXIKLSAgICAvLyBvd24gc2VtYW50aWNzIGFuZCBu
YW1pbmcgdG8gc2V0IHRoZSBiaXRyYXRlLCB0aGlzIGlzIGEgYmVzdCBlZmZvcnQgdG8gaGFuZGxl
Ci0gICAgLy8gc2V0dGluZyBiaXRyYXRlIGZvciB0aGUgd2VsbCBrbm93biBlbmNvZGVycy4KLSAg
ICAvLyBTZWUgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc5Njcx
NgotICAgIEJpdHJhdGVTZXR0ZXIgZ2V0Qml0cmF0ZVNldHRlcihHc3RFbGVtZW50RmFjdG9yeSog
ZW5jb2RlckZhY3RvcnkpCisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBjcmVhdGVFbmNvZGVyKHZv
aWQpCiAgICAgewotICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgcmVnZXhSZWdpc3RlcmVk
RmxhZzsKLQotICAgICAgICBzdGQ6OmNhbGxfb25jZShyZWdleFJlZ2lzdGVyZWRGbGFnLCBbXSB7
Ci0gICAgICAgICAgICB0YXJnZXRCaXRyYXRlQml0UGVyU2VjID0gZ19yZWdleF9uZXcoIl52cC5l
bmMkfF5vbXguKmVuYyQiLCBzdGF0aWNfY2FzdDxHUmVnZXhDb21waWxlRmxhZ3M+KDApLCBzdGF0
aWNfY2FzdDxHUmVnZXhNYXRjaEZsYWdzPigwKSwgbnVsbHB0cik7Ci0gICAgICAgICAgICBiaXRy
YXRlQml0UGVyU2VjID0gZ19yZWdleF9uZXcoIl5vcGVuaDI2NGVuYyQiLCBzdGF0aWNfY2FzdDxH
UmVnZXhDb21waWxlRmxhZ3M+KDApLCBzdGF0aWNfY2FzdDxHUmVnZXhNYXRjaEZsYWdzPigwKSwg
bnVsbHB0cik7Ci0gICAgICAgICAgICBiaXRyYXRlS0JpdFBlclNlYyA9IGdfcmVnZXhfbmV3KCJe
eDI2NGVuYyR8dmFhcGkuKmVuYyQiLCBzdGF0aWNfY2FzdDxHUmVnZXhDb21waWxlRmxhZ3M+KDAp
LCBzdGF0aWNfY2FzdDxHUmVnZXhNYXRjaEZsYWdzPigwKSwgbnVsbHB0cik7Ci0gICAgICAgICAg
ICBBU1NFUlQodGFyZ2V0Qml0cmF0ZUJpdFBlclNlYy5nZXQoKSAmJiBiaXRyYXRlQml0UGVyU2Vj
LmdldCgpICYmIGJpdHJhdGVLQml0UGVyU2VjLmdldCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICAg
ICAgYXV0byBmYWN0b3J5TmFtZSA9IEdTVF9PQkpFQ1RfTkFNRShlbmNvZGVyRmFjdG9yeSk7Ci0g
ICAgICAgIFJFVFVSTl9CSVRSQVRFX1NFVFRFUl9JRl9NQVRDSEVTKHRhcmdldEJpdHJhdGVCaXRQ
ZXJTZWMsICJ0YXJnZXQtYml0cmF0ZSIsIEtCSVRfVE9fQklULCAiQml0cyBQZXIgU2Vjb25kIikK
LSAgICAgICAgUkVUVVJOX0JJVFJBVEVfU0VUVEVSX0lGX01BVENIRVMoYml0cmF0ZUJpdFBlclNl
YywgImJpdHJhdGUiLCBLQklUX1RPX0JJVCwgIkJpdHMgUGVyIFNlY29uZCIpCi0gICAgICAgIFJF
VFVSTl9CSVRSQVRFX1NFVFRFUl9JRl9NQVRDSEVTKGJpdHJhdGVLQml0UGVyU2VjLCAiYml0cmF0
ZSIsIDEsICJLQml0cyBQZXIgU2Vjb25kIikKKyAgICAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBl
bmNvZGVyID0gbnVsbHB0cjsKKyAgICAgICAgR3N0RWxlbWVudCogd2VicnRjZW5jb2RlciA9IEdT
VF9FTEVNRU5UKGdfb2JqZWN0X3JlZl9zaW5rKGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgid2Vi
cnRjdmlkZW9lbmNvZGVyIiwgTlVMTCkpKTsKIAotICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1Qo
ZW5jb2RlckZhY3RvcnksICJ1bmtvbnduIGVuY29kZXIsIGNhbid0IHNldCBiaXRyYXRlcyBvbiBp
dCIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0jdW5kZWYgUkVUVVJOX0JJVFJB
VEVfU0VUVEVSX0lGX01BVENIRVMKKyAgICAgICAgZ19vYmplY3Rfc2V0KHdlYnJ0Y2VuY29kZXIs
ICJmb3JtYXQiLCBhZG9wdEdSZWYoZ3N0X2NhcHNfZnJvbV9zdHJpbmcoQ2FwcygpKSkuZ2V0KCks
IE5VTEwpOworICAgICAgICBnX29iamVjdF9nZXQod2VicnRjZW5jb2RlciwgImVuY29kZXIiLCAm
ZW5jb2Rlci5vdXRQdHIoKSwgTlVMTCk7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGNyZWF0
ZUVuY29kZXIoR3N0RWxlbWVudCoqIGVuY29kZXIpCi0gICAgewotICAgICAgICBHc3RFbGVtZW50
KiBlbmMgPSBudWxscHRyOworICAgICAgICBpZiAoIWVuY29kZXIpIHsKKyAgICAgICAgICAgIEdT
VF9JTkZPKCJObyBlbmNvZGVyIGZvdW5kIGZvciAlcyIsIENhcHMoKSk7CiAKLSAgICAgICAgbV9w
cm9maWxlID0gR1NUX0VOQ09ESU5HX1BST0ZJTEUoZ3N0X2VuY29kaW5nX3ZpZGVvX3Byb2ZpbGVf
bmV3KAotICAgICAgICAgICAgYWRvcHRHUmVmKGdzdF9jYXBzX2Zyb21fc3RyaW5nKENhcHMoKSkp
LmdldCgpLAotICAgICAgICAgICAgUHJvZmlsZU5hbWUoKSwKLSAgICAgICAgICAgIGdzdF9jYXBz
X3JlZihtX3Jlc3RyaWN0aW9uQ2Fwcy5nZXQoKSksCi0gICAgICAgICAgICAxKSk7Ci0gICAgICAg
IEdSZWZQdHI8R3N0RWxlbWVudD4gZW5jb2RlYmluID0gbWFrZUVsZW1lbnQoImVuY29kZWJpbiIp
OwotCi0gICAgICAgIGlmICghZW5jb2RlYmluLmdldCgpKSB7Ci0gICAgICAgICAgICBHU1RfRVJS
T1IoIk5vIGVuY29kZWJpbiBwcmVzZW50Li4uIGNhbid0IHVzZSBHU3RyZWFtZXIgYmFzZWQgZW5j
b2RlcnMiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAg
IGdfb2JqZWN0X3NldChlbmNvZGViaW4uZ2V0KCksICJwcm9maWxlIiwgbV9wcm9maWxlLmdldCgp
LCBudWxscHRyKTsKLQotICAgICAgICBmb3IgKEdMaXN0KiB0bXAgPSBHU1RfQklOX0NISUxEUkVO
KGVuY29kZWJpbi5nZXQoKSk7IHRtcDsgdG1wID0gdG1wLT5uZXh0KSB7Ci0gICAgICAgICAgICBH
c3RFbGVtZW50KiBlbGVtID0gR1NUX0VMRU1FTlQodG1wLT5kYXRhKTsKLSAgICAgICAgICAgIEdz
dEVsZW1lbnRGYWN0b3J5KiBmYWN0b3J5ID0gZ3N0X2VsZW1lbnRfZ2V0X2ZhY3RvcnkoKGVsZW0p
KTsKLQotICAgICAgICAgICAgaWYgKCFmYWN0b3J5IHx8ICFnc3RfZWxlbWVudF9mYWN0b3J5X2xp
c3RfaXNfdHlwZShmYWN0b3J5LCBHU1RfRUxFTUVOVF9GQUNUT1JZX1RZUEVfVklERU9fRU5DT0RF
UikpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGVuYyA9IGVsZW07
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghZW5jKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgaWYgKGVuY29kZXIpCi0gICAgICAg
ICAgICAqZW5jb2RlciA9IGVuYzsKIAotICAgICAgICByZXR1cm4gZW5jb2RlYmluOworICAgICAg
ICByZXR1cm4gd2VicnRjZW5jb2RlcjsKICAgICB9CiAKICAgICB2b2lkIEFkZENvZGVjSWZTdXBw
b3J0ZWQoc3RkOjp2ZWN0b3I8d2VicnRjOjpTZHBWaWRlb0Zvcm1hdD4qIHN1cHBvcnRlZEZvcm1h
dHMpCiAgICAgewogICAgICAgICBHc3RFbGVtZW50KiBlbmNvZGVyOwogCi0gICAgICAgIGlmIChj
cmVhdGVFbmNvZGVyKCZlbmNvZGVyKS5nZXQoKSAhPSBudWxscHRyKSB7CisgICAgICAgIGlmIChj
cmVhdGVFbmNvZGVyKCkuZ2V0KCkgIT0gbnVsbHB0cikgewogICAgICAgICAgICAgd2VicnRjOjpT
ZHBWaWRlb0Zvcm1hdCBmb3JtYXQgPSBDb25maWd1cmVTdXBwb3J0ZWRDb2RlYyhlbmNvZGVyKTsK
IAogICAgICAgICAgICAgc3VwcG9ydGVkRm9ybWF0cy0+cHVzaF9iYWNrKGZvcm1hdCk7CkBAIC0z
ODAsMTcgKzMzMCwyMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlv
bk5hbWUoKSBjb25zdAogICAgIHsKKyAgICAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBlbmNvZGVy
SW1wbGVtZW50YXRpb247CiAgICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG1fZW5jb2Rlciwg
bnVsbHB0cik7CiAKLSAgICAgICAgcmV0dXJuIEdTVF9PQkpFQ1RfTkFNRShnc3RfZWxlbWVudF9n
ZXRfZmFjdG9yeShtX2VuY29kZXIpKTsKKyAgICAgICAgZ19vYmplY3RfZ2V0KG1fZW5jb2Rlciwg
ImVuY29kZXIiLCAmZW5jb2RlckltcGxlbWVudGF0aW9uLm91dFB0cigpLCBudWxscHRyKTsKKwor
ICAgICAgICByZXR1cm4gR1NUX09CSkVDVF9OQU1FKGdzdF9lbGVtZW50X2dldF9mYWN0b3J5KGVu
Y29kZXJJbXBsZW1lbnRhdGlvbi5nZXQoKSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgY29uc3Qg
Z2NoYXIqIE5hbWUoKSA9IDA7CiAKICAgICB2b2lkIFNldFJlc3RyaWN0aW9uQ2FwcyhHUmVmUHRy
PEdzdENhcHM+IGNhcHMpCiAgICAgewotICAgICAgICBpZiAoY2FwcyAmJiBtX3Byb2ZpbGUuZ2V0
KCkgJiYgZ3N0X2NhcHNfaXNfZXF1YWwobV9yZXN0cmljdGlvbkNhcHMuZ2V0KCksIGNhcHMuZ2V0
KCkpKQotICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fcHJvZmlsZS5nZXQoKSwgInJlc3RyaWN0
aW9uLWNhcHMiLCBjYXBzLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgaWYgKG1fcmVzdHJpY3Rp
b25DYXBzKQorICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fY2Fwc0ZpbHRlciwgImNhcHMiLCBt
X3Jlc3RyaWN0aW9uQ2Fwcy5nZXQoKSwgbnVsbHB0cik7CiAKICAgICAgICAgbV9yZXN0cmljdGlv
bkNhcHMgPSBjYXBzOwogICAgIH0KQEAgLTQwNCwxMiArMzU3LDExIEBAIHByaXZhdGU6CiAgICAg
R1JlZlB0cjxHc3RFbGVtZW50PiBtX3BpcGVsaW5lOwogICAgIEdzdEVsZW1lbnQqIG1fc3JjOwog
ICAgIEdzdEVsZW1lbnQqIG1fZW5jb2RlcjsKKyAgICBHc3RFbGVtZW50KiBtX2NhcHNGaWx0ZXI7
CiAKICAgICB3ZWJydGM6OkVuY29kZWRJbWFnZUNhbGxiYWNrKiBtX2ltYWdlUmVhZHlDYjsKICAg
ICBHc3RDbG9ja1RpbWUgbV9maXJzdEZyYW1lUHRzOwogICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9y
ZXN0cmljdGlvbkNhcHM7Ci0gICAgR1JlZlB0cjxHc3RFbmNvZGluZ1Byb2ZpbGU+IG1fcHJvZmls
ZTsKLSAgICBCaXRyYXRlU2V0dGVyIG1fYml0cmF0ZVNldHRlcjsKICAgICB3ZWJydGM6OkVuY29k
ZWRJbWFnZSBtX2VuY29kZWRGcmFtZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiBt
X2VuY29kZWRJbWFnZUJ1ZmZlcjsKICAgICBzaXplX3QgbV9lbmNvZGVkSW1hZ2VCdWZmZXJTaXpl
OwpAQCAtNDgzLDE4ICs0MzUsNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBH
c3RFbGVtZW50KiBDcmVhdGVGaWx0ZXIoKSBmaW5hbAotICAgIHsKLSAgICAgICAgR3N0RWxlbWVu
dCogZmlsdGVyID0gbWFrZUVsZW1lbnQoImNhcHNmaWx0ZXIiKTsKLSAgICAgICAgYXV0byBjYXBz
ID0gYWRvcHRHUmVmKGdzdF9jYXBzX25ld19zaW1wbGUoQ2FwcygpLAotICAgICAgICAgICAgImFs
aWdubWVudCIsIEdfVFlQRV9TVFJJTkcsICJhdSIsCi0gICAgICAgICAgICAic3RyZWFtLWZvcm1h
dCIsIEdfVFlQRV9TVFJJTkcsICJieXRlLXN0cmVhbSIsCi0gICAgICAgICAgICBudWxscHRyKSk7
Ci0gICAgICAgIGdfb2JqZWN0X3NldChmaWx0ZXIsICJjYXBzIiwgY2Fwcy5nZXQoKSwgbnVsbHB0
cik7Ci0KLSAgICAgICAgcmV0dXJuIGZpbHRlcjsKLSAgICB9Ci0KICAgICB3ZWJydGM6OlNkcFZp
ZGVvRm9ybWF0IENvbmZpZ3VyZVN1cHBvcnRlZENvZGVjKEdzdEVsZW1lbnQqKSBmaW5hbAogICAg
IHsKICAgICAgICAgLy8gVE9ETy0gQ3JlYXRlIGZyb20gZW5jb2RlciBzcmMgcGFkIGNhcHMgdGVt
cGxhdGUKQEAgLTU1OCw2ICs0OTgsNyBAQCBHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5OjpH
U3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5KCkKIAogICAgIHN0ZDo6Y2FsbF9vbmNlKGRlYnVn
UmVnaXN0ZXJlZEZsYWcsIFtdIHsKICAgICAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Vi
a2l0X3dlYnJ0Y2VuY19kZWJ1ZywgIndlYmtpdGxpYndlYnJ0Y3ZpZGVvZW5jb2RlciIsIDAsICJX
ZWJLaXQgV2ViUlRDIHZpZGVvIGVuY29kZXIiKTsKKyAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0
ZXIobnVsbHB0ciwgIndlYnJ0Y3ZpZGVvZW5jb2RlciIsIEdTVF9SQU5LX1BSSU1BUlksIEdTVF9U
WVBFX1dFQlJUQ19WSURFT19FTkNPREVSKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI3MDY4Yjg0NzljMmU3NGVmZWJh
NDkxYTM5YTQ5ZTM4NjU0ZTMxMDIuLjVhNDE0ODY4ZDgzOWZhYzM3ZTg1OGJlM2FlNWEwMTIyZDA3
MDhlMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMC0xMiAgVGhpYmF1bHQgU2F1bmllciAgPHRzYXVuaWVy
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl1bV2ViUlRDXSBBZGQgd2VicnRjZW5j
b2RlciBiaW4gdG8gY2xlYW51cCBhbmQgcmVmYWN0b3IgdGhlIHdheSB3ZSBzZXQgZW5jb2RlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY3NAor
CisgICAgICAgIHdlYnJ0Y2VuY29kZXIgaXMgYSBzaW1wbGUgR3N0QmluIHdpdGggYSBzZXQgb2Yg
d2VsbCBrbm93biBHU3RyZWFtZXIgZW5jb2RlcnMgd2hpY2gKKyAgICAgICAgaXQgY2FuIHVzZSB0
byBpbXBsZW1lbnQgZW5jb2RpbmcgZm9yIGRpZmZlcmVudCBmb3JtYXRzIGV4cG9zaW5nIGEgdHJp
bW1lZCBkb3duIHVuaWZpZWQgQVBJLgorCisgICAgICAgIEl0IGFsc28gYWRkcyBwcm9wZXIgaGFu
ZGxpbmcgb2YgSDI2NCBwcm9maWxlcy4KKworICAgICAgICBUaGUgYWRkZWQgZmlsZXMgZm9sbG93
IEdTdHJlYW1lciBjb2Rpbmcgc3R5bGUgYXMgd2UgYWltIGF0IHVwc3RyZWFtaW5nIHRoZSBlbGVt
ZW50CisgICAgICAgIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6
CisKIDIwMTgtMTAtMTYgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIGEgc3dpdGNoIGZvciBXZWIgU1FMCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXIucHkKaW5kZXggYTU5MDhlNjAxNmEyMWNhNzZiNmIyYWUzZTU0MTllYTllMWZmZDdjYS4u
MTc0MjQ5MzRlMTg3ZmQ3ZGMzMTE4YmYyYzQxZDZkZjZjZjJmOTYwYSAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMjM3LDYgKzIzNywxOSBAQCBfUEFUSF9SVUxF
U19TUEVDSUZJRVIgPSBbCiAgICAgICAiLXdoaXRlc3BhY2UvZGVjbGFyYXRpb24iLAogICAgICAg
Ii13aGl0ZXNwYWNlL2luZGVudCJdKSwKIAorICAgIChbICAjIEZpbGVzIGZvbGxvd2luZyBHU3Ry
ZWFtZXIgY29kaW5nIHN0eWxlIChmb3IgYSBzaW1wbGVyIHVwc3RyZWFtaW5nIHByb2Nlc3MgZm9y
IGV4YW1wbGUpCisgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRm
b3JtJywgJ21lZGlhc3RyZWFtJywgJ2xpYndlYnJ0YycsICdHU3RyZWFtZXJWaWRlb0VuY29kZXIu
Y3BwJyksCisgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3Jt
JywgJ21lZGlhc3RyZWFtJywgJ2xpYndlYnJ0YycsICdHU3RyZWFtZXJWaWRlb0VuY29kZXIuaCcp
LAorICAgICBdLAorICAgICBbIi13aGl0ZXNwYWNlL2luZGVudCIsCisgICAgICAiLXdoaXRlc3Bh
Y2UvZGVjbGFyYXRpb24iLAorICAgICAgIi13aGl0ZXNwYWNlL3BhcmVucyIsCisgICAgICAiLXJl
YWRhYmlsaXR5L251bGwiLAorICAgICAgIi13aGl0ZXNwYWNlL2JyYWNlcyIsCisgICAgICAiLXJl
YWRhYmlsaXR5L25hbWluZy91bmRlcnNjb3JlcyIsCisgICAgICAiLXJlYWRhYmlsaXR5L2VudW1f
Y2FzaW5nIiwKKyAgICAgXSksCisKICAgICAoWwogICAgICAgIyBUaGVyZSBpcyBubyB3YXkgdG8g
YXZvaWQgdGhlIHN5bWJvbHMgX19qaXRfZGVidWdfcmVnaXN0ZXJfY29kZQogICAgICAgIyBhbmQg
X19qaXRfZGVidWdfZGVzY3JpcHRvciB3aGVuIGludGVncmF0aW5nIHdpdGggZ2RiLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353856</attachid>
            <date>2018-11-05 06:16:21 -0800</date>
            <delta_ts>2018-11-05 06:32:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190674-20181105111618.patch</filename>
            <type>text/plain</type>
            <size>29272</size>
            <attacher name="Thibault Saunier">tsaunier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNhNGRmMjYyOGUwYjUw
MmJhYWNiYmVjODQ5OTk0YjEyY2ZhZDBlMi4uZWM4N2M1ZjVjNmQ3Nzg0OWE5MGYxYzZlYmIxMzU4
YjE4ZWFlZmYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE4LTEwLTEyICBUaGli
YXVsdCBTYXVuaWVyICA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XVtXZWJSVENdIEFkZCB3ZWJydGNlbmNvZGVyIGJpbiB0byBjbGVhbnVwIGFuZCByZWZhY3RvciB0
aGUgd2F5IHdlIHNldCBlbmNvZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkwNjc0CisKKyAgICAgICAgd2VicnRjZW5jb2RlciBpcyBhIHNpbXBs
ZSBHc3RCaW4gd2l0aCBhIHNldCBvZiB3ZWxsIGtub3duIEdTdHJlYW1lciBlbmNvZGVycyB3aGlj
aAorICAgICAgICBpdCBjYW4gdXNlIHRvIGltcGxlbWVudCBlbmNvZGluZyBmb3IgZGlmZmVyZW50
IGZvcm1hdHMgZXhwb3NpbmcgYSB0cmltbWVkIGRvd24gdW5pZmllZCBBUEkuCisKKyAgICAgICAg
SXQgYWxzbyBhZGRzIHByb3BlciBoYW5kbGluZyBvZiBIMjY0IHByb2ZpbGVzLgorCisgICAgICAg
IFRoZSBhZGRlZCBmaWxlcyBmb2xsb3cgR1N0cmVhbWVyIGNvZGluZyBzdHlsZSBhcyB3ZSBhaW0g
YXQgdXBzdHJlYW1pbmcgdGhlIGVsZW1lbnQKKyAgICAgICAgaW4gdGhlIGZ1dHVyZS4KKworICAg
ICAgICBUaGlzIGlzIGEgcmVmYWN0b3Jpbmcgc28gY3VycmVudCB0ZXN0cyBhbHJlYWR5IGNvdmVy
IGl0LgorCisgICAgICAgICogcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OmluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyLmNw
cDogQWRkZWQuCisgICAgICAgIChnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfZ2V0X3Byb3BlcnR5
KToKKyAgICAgICAgKGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9zZXRfYml0cmF0ZSk6CisgICAg
ICAgIChnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfc2V0X2Zvcm1hdCk6CisgICAgICAgIChnc3Rf
d2VicnRjX3ZpZGVvX2VuY29kZXJfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHJlZ2lzdGVyX2tu
b3duX2VuY29kZXIpOgorICAgICAgICAoc2V0dXBfeDI2NGVuYyk6CisgICAgICAgIChzZXR1cF92
cDhlbmMpOgorICAgICAgICAoc2V0dXBfb3BlbmgyNjRlbmMpOgorICAgICAgICAoc2V0X2JpdHJh
dGVfa2JpdF9wZXJfc2VjKToKKyAgICAgICAgKHNldF9iaXRyYXRlX2JpdF9wZXJfc2VjKToKKyAg
ICAgICAgKGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9jbGFzc19pbml0KToKKyAgICAgICAgKGdz
dF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9pbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyLmg6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVvRW5jb2Rlcjo6R1N0cmVh
bWVyVmlkZW9FbmNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVvRW5jb2Rl
cjo6SW5pdEVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0VuY29kZXI6
OmNyZWF0ZUVuY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9FbmNvZGVy
OjpBZGRDb2RlY0lmU3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVv
RW5jb2Rlcjo6SW1wbGVtZW50YXRpb25OYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lclZpZGVvRW5jb2Rlcjo6U2V0UmVzdHJpY3Rpb25DYXBzKToKKwogMjAxOC0xMC0zMCAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2Fd
IEF0dGFjaG1lbnQgZHJvcHBlZCBmcm9tIG9uZSB3ZWIgdmlldyB0byBhbm90aGVyIGlzIG1pc3Np
bmcgaXRzIGZpbGUgd3JhcHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
R1N0cmVhbWVyLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtl
CmluZGV4IGQ5YTFmZGIzMGM0MjBmMDk4MWJmZWVmNGRjZGY0Yzk2YWZkZGEyNWQuLmQ1MzU0NGE3
ZGM3YzgzNjI5OWMwMGFkOTUzYTAzNDAxZmY2MjBmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9HU3RyZWFtZXIuY21ha2UKQEAgLTM0LDYgKzM0LDcgQEAgaWYgKEVOQUJMRV9WSURFTyBPUiBF
TkFCTEVfV0VCX0FVRElPKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcAogCiAgICAgICAgIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5LmNwcAorICAgICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyLmNw
cAogICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9F
bmNvZGVyRmFjdG9yeS5jcHAKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0F1ZGlvTW9kdWxlLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJW
aWRlb0VuY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwZjdkYWY0YmExNGE5NTk2ZTg2Yzc2YjA4MzE0
NzVkNTkxYjY0YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyLmNwcApAQCAtMCwwICsx
LDM0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5W
LgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
LyogTk9URTogVGhpcyBmaWxlIHJlc3BlY3RzIEdTdHJlYW1lciBjb2Rpbmcgc3R5bGUgYXMgd2Ug
bWlnaHQgd2FudCB0byB1cHN0cmVhbQorICogdGhhdCBlbGVtZW50IGluIHRoZSBmdXR1cmUgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUg
IkdTdHJlYW1lclZpZGVvRW5jb2Rlci5oIgorCitHU1RfREVCVUdfQ0FURUdPUlkgKGdzdF93ZWJy
dGNlbmNfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X3dlYnJ0Y2VuY19kZWJ1
ZworCisjZGVmaW5lIEtCSVRfVE9fQklUIDEwMjQKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBs
YXRlIHNpbmtUZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCisgICAg
R1NUX1BBRF9TSU5LLAorICAgIEdTVF9QQURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQUyAo
InZpZGVvL3gtcmF3KEFOWSk7IikpOworCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc3Jj
VGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCisgICAgR1NUX1BBRF9T
UkMsCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1o
MjY0O3ZpZGVvL3gtdnA4IikpOworCit0eXBlZGVmIHZvaWQgKCpTZXRCaXRyYXRlRnVuYykgKEdP
YmplY3QgKiBlbmNvZGVyLCBjb25zdCBnY2hhciAqIHByb3BuYW1lLAorICAgIGdpbnQgYml0cmF0
ZSk7Cit0eXBlZGVmIHZvaWQgKCpTZXR1cEVuY29kZXIpIChHT2JqZWN0ICogZW5jb2Rlcik7Cit0
eXBlZGVmIHN0cnVjdAoreworICBnYm9vbGVhbiBhdmFsYWlibGU7CisgIEdzdENhcHMgKmNhcHM7
CisgIGNvbnN0IGdjaGFyICpuYW1lOworICBjb25zdCBnY2hhciAqcGFyc2VyX25hbWU7CisgIEdz
dENhcHMgKmVuY29kZWRfZm9ybWF0OworICBTZXRCaXRyYXRlRnVuYyBzZXRCaXRyYXRlOworICBT
ZXR1cEVuY29kZXIgc2V0dXBFbmNvZGVyOworICBjb25zdCBnY2hhciAqYml0cmF0ZV9wcm9wbmFt
ZTsKK30gRW5jb2RlckRlZmluaXRpb247CisKK3R5cGVkZWYgZW51bQoreworICBFTkNPREVSX05P
TkUgPSAwLAorICBFTkNPREVSX1gyNjQsCisgIEVOQ09ERVJfT1BFTkgyNjQsCisgIEVOQ09ERVJf
VlA4LAorICBFTkNPREVSX0xBU1QsCit9IEVuY29kZXJJZDsKKworRW5jb2RlckRlZmluaXRpb24g
ZW5jb2RlcnNbRU5DT0RFUl9MQVNUXSA9IHsKKyAgRkFMU0UsCisgIE5VTEwsCisgIE5VTEwsCisg
IE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCit9OworCit0eXBlZGVm
IHN0cnVjdAoreworICBFbmNvZGVySWQgZW5jb2RlcklkOworICBHc3RFbGVtZW50ICplbmNvZGVy
OworICBHc3RFbGVtZW50ICpwYXJzZXI7CisgIEdzdEVsZW1lbnQgKmNhcHNmaWx0ZXI7CisgIGd1
aW50IGJpdHJhdGU7Cit9IEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlclByaXZhdGU7CisKKy8qICAqSU5E
RU5ULU9GRiogKi8KK0dfREVGSU5FX1RZUEVfV0lUSF9QUklWQVRFIChHc3RXZWJydGNWaWRlb0Vu
Y29kZXIsIGdzdF93ZWJydGNfdmlkZW9fZW5jb2RlciwKKyAgICBHU1RfVFlQRV9CSU4pCisjZGVm
aW5lIFBSSVYoc2VsZikgKChHc3RXZWJydGNWaWRlb0VuY29kZXJQcml2YXRlKilnc3Rfd2VicnRj
X3ZpZGVvX2VuY29kZXJfZ2V0X2luc3RhbmNlX3ByaXZhdGUoc2VsZikpCisvKiAgKklOREVOVC1P
TiogKi8KKworZW51bQoreworICBQUk9QXzAsCisgIFBST1BfRk9STUFULAorICBQUk9QX0VOQ09E
RVIsCisgIFBST1BfQklUUkFURSwKKyAgTl9QUk9QUworfTsKKworc3RhdGljIHZvaWQKK2dzdF93
ZWJydGNfdmlkZW9fZW5jb2Rlcl9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR19P
QkpFQ1RfQ0xBU1MgKGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9wYXJlbnRfY2xhc3MpLT5maW5h
bGl6ZSAob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQKK2dzdF93ZWJydGNfdmlkZW9fZW5jb2Rl
cl9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCisgICAgZ3VpbnQgcHJvcF9pZCwgR1Zh
bHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0V2VicnRjVmlkZW9FbmNv
ZGVyICpzZWxmID0gR1NUX1dFQlJUQ19WSURFT19FTkNPREVSIChvYmplY3QpOworICBHc3RXZWJy
dGNWaWRlb0VuY29kZXJQcml2YXRlICpwcml2ID0gUFJJViAoc2VsZik7CisKKyAgc3dpdGNoIChw
cm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX0ZPUk1BVDoKKyAgICAgIGlmIChwcml2LT5lbmNvZGVy
SWQgIT0gRU5DT0RFUl9OT05FKQorICAgICAgICBnX3ZhbHVlX3NldF9ib3hlZCAodmFsdWUsIGVu
Y29kZXJzW3ByaXYtPmVuY29kZXJJZF0uY2Fwcyk7CisgICAgICBlbHNlCisgICAgICAgIGdfdmFs
dWVfc2V0X2JveGVkICh2YWx1ZSwgTlVMTCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
RU5DT0RFUjoKKyAgICAgIGdfdmFsdWVfc2V0X29iamVjdCAodmFsdWUsIHByaXYtPmVuY29kZXIp
OworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0JJVFJBVEU6CisgICAgICBnX3ZhbHVlX3Nl
dF91aW50ICh2YWx1ZSwgcHJpdi0+Yml0cmF0ZSk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3Bf
aWQsIHBzcGVjKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X3dlYnJ0Y192aWRlb19lbmNv
ZGVyX3NldF9iaXRyYXRlIChHc3RXZWJydGNWaWRlb0VuY29kZXIgKiBzZWxmLAorICAgIGd1aW50
IGJpdHJhdGUpCit7CisgIEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlclByaXZhdGUgKnByaXYgPSBQUklW
IChzZWxmKTsKKworICBwcml2LT5iaXRyYXRlID0gYml0cmF0ZTsKKyAgaWYgKHByaXYtPmVuY29k
ZXIpIHsKKyAgICBlbmNvZGVyc1twcml2LT5lbmNvZGVySWRdLnNldEJpdHJhdGUgKEdfT0JKRUNU
IChwcml2LT5lbmNvZGVyKSwKKyAgICAgICAgZW5jb2RlcnNbcHJpdi0+ZW5jb2RlcklkXS5iaXRy
YXRlX3Byb3BuYW1lLCBwcml2LT5iaXRyYXRlKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0
X3dlYnJ0Y192aWRlb19lbmNvZGVyX3NldF9mb3JtYXQgKEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlciAq
IHNlbGYsCisgICAgY29uc3QgR3N0Q2FwcyAqIGNhcHMpCit7CisgIGdpbnQgaTsKKyAgR3N0V2Vi
cnRjVmlkZW9FbmNvZGVyUHJpdmF0ZSAqcHJpdiA9IFBSSVYgKHNlbGYpOworICBnX3JldHVybl9p
Zl9mYWlsIChwcml2LT5lbmNvZGVySWQgPT0gRU5DT0RFUl9OT05FKTsKKyAgZ19yZXR1cm5faWZf
ZmFpbCAoY2Fwcyk7CisKKyAgZm9yIChpID0gMTsgaSA8IEVOQ09ERVJfTEFTVDsgaSsrKSB7Cisg
ICAgaWYgKGVuY29kZXJzW2ldLmF2YWxhaWJsZQorICAgICAgICAmJiBnc3RfY2Fwc19jYW5faW50
ZXJzZWN0IChlbmNvZGVyc1tpXS5jYXBzLCBjYXBzKSkgeworICAgICAgR3N0UGFkICp0bXBwYWQ7
CisgICAgICBwcml2LT5lbmNvZGVySWQgPSAoRW5jb2RlcklkKSBpOworICAgICAgcHJpdi0+ZW5j
b2RlciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoZW5jb2RlcnNbaV0ubmFtZSwgTlVMTCk7
CisgICAgICBlbmNvZGVyc1twcml2LT5lbmNvZGVySWRdLnNldHVwRW5jb2RlciAoR19PQkpFQ1Qg
KHByaXYtPmVuY29kZXIpKTsKKworICAgICAgaWYgKGVuY29kZXJzW2ldLnBhcnNlcl9uYW1lKQor
ICAgICAgICBwcml2LT5wYXJzZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKGVuY29kZXJz
W2ldLnBhcnNlcl9uYW1lLCBOVUxMKTsKKworICAgICAgaWYgKGVuY29kZXJzW2ldLmVuY29kZWRf
Zm9ybWF0KSB7CisgICAgICAgIHByaXYtPmNhcHNmaWx0ZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5
X21ha2UgKCJjYXBzZmlsdGVyIiwgTlVMTCk7CisgICAgICAgIGdfb2JqZWN0X3NldCAocHJpdi0+
Y2Fwc2ZpbHRlciwgImNhcHMiLCBlbmNvZGVyc1tpXS5lbmNvZGVkX2Zvcm1hdCwKKyAgICAgICAg
ICAgIE5VTEwpOworICAgICAgfQorCisgICAgICBnc3RfYmluX2FkZCAoR1NUX0JJTiAoc2VsZiks
IHByaXYtPmVuY29kZXIpOworCisgICAgICB0bXBwYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGlj
X3BhZCAocHJpdi0+ZW5jb2RlciwgInNpbmsiKTsKKyAgICAgIGdzdF9naG9zdF9wYWRfc2V0X3Rh
cmdldCAoR1NUX0dIT1NUX1BBRCAoR1NUX0VMRU1FTlQgKHNlbGYpLT4KKyAgICAgICAgICAgICAg
c2lua3BhZHMtPmRhdGEpLCB0bXBwYWQpOworICAgICAgZ3N0X29iamVjdF91bnJlZiAodG1wcGFk
KTsKKworICAgICAgdG1wcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHByaXYtPmVu
Y29kZXIsICJzcmMiKTsKKyAgICAgIGlmIChwcml2LT5wYXJzZXIpIHsKKyAgICAgICAgZ3N0X2Jp
bl9hZGQgKEdTVF9CSU4gKHNlbGYpLCBwcml2LT5wYXJzZXIpOworICAgICAgICBnc3RfZWxlbWVu
dF9saW5rIChwcml2LT5lbmNvZGVyLCBwcml2LT5wYXJzZXIpOworICAgICAgICBnc3Rfb2JqZWN0
X3VucmVmICh0bXBwYWQpOworICAgICAgICB0bXBwYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGlj
X3BhZCAocHJpdi0+cGFyc2VyLCAic3JjIik7CisgICAgICB9CisKKyAgICAgIGlmIChwcml2LT5j
YXBzZmlsdGVyKSB7CisgICAgICAgIEdzdFBhZCAqdG1wcGFkMiA9IGdzdF9lbGVtZW50X2dldF9z
dGF0aWNfcGFkIChwcml2LT5jYXBzZmlsdGVyLCAic2luayIpOworCisgICAgICAgIGdzdF9iaW5f
YWRkIChHU1RfQklOIChzZWxmKSwgcHJpdi0+Y2Fwc2ZpbHRlcik7CisgICAgICAgIGdzdF9wYWRf
bGluayAodG1wcGFkLCB0bXBwYWQyKTsKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZiAodG1wcGFk
KTsKKyAgICAgICAgdG1wcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHByaXYtPmNh
cHNmaWx0ZXIsICJzcmMiKTsKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZiAodG1wcGFkMik7Cisg
ICAgICB9CisKKyAgICAgIGdfYXNzZXJ0IChnc3RfZ2hvc3RfcGFkX3NldF90YXJnZXQgKEdTVF9H
SE9TVF9QQUQgKEdTVF9FTEVNRU5UCisgICAgICAgICAgICAgICAgICAoc2VsZiktPnNyY3BhZHMt
PmRhdGEpLCB0bXBwYWQpKTsKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHRtcHBhZCk7CisKKyAg
ICAgIGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9zZXRfYml0cmF0ZSAoc2VsZiwgcHJpdi0+Yml0
cmF0ZSk7CisgICAgICByZXR1cm47CisgICAgfQorICB9CisKKyAgR1NUX0VSUk9SICgiTm8gZW5j
b2RlciBmb3VuZCBmb3IgZm9ybWF0ICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKK30KKworc3Rh
dGljIHZvaWQKK2dzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9zZXRfcHJvcGVydHkgKEdPYmplY3Qg
KiBvYmplY3QsCisgICAgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJh
bVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0V2VicnRjVmlkZW9FbmNvZGVyICpzZWxmID0gR1NUX1dF
QlJUQ19WSURFT19FTkNPREVSIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAg
IGNhc2UgUFJPUF9GT1JNQVQ6CisgICAgICBnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfc2V0X2Zv
cm1hdCAoc2VsZiwgZ3N0X3ZhbHVlX2dldF9jYXBzICh2YWx1ZSkpOworICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0JJVFJBVEU6CisgICAgICBnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfc2V0
X2JpdHJhdGUgKHNlbGYsIGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKSk7CisgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChv
YmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorcmVnaXN0ZXJf
a25vd25fZW5jb2RlciAoRW5jb2RlcklkIGVuY0lkLCBjb25zdCBnY2hhciAqIG5hbWUsCisgICAg
Y29uc3QgZ2NoYXIgKiBwYXJzZXJfbmFtZSwgY29uc3QgZ2NoYXIgKiBjYXBzLCBjb25zdCBnY2hh
ciAqIGVuY29kZWRfZm9ybWF0LAorICAgIFNldHVwRW5jb2RlciBzZXR1cEVuY29kZXIsIGNvbnN0
IGdjaGFyICogYml0cmF0ZV9wcm9wbmFtZSwKKyAgICBTZXRCaXRyYXRlRnVuYyBzZXRCaXRyYXRl
KQoreworICBHc3RQbHVnaW5GZWF0dXJlICpmZWF0dXJlID0KKyAgICAgIGdzdF9yZWdpc3RyeV9s
b29rdXBfZmVhdHVyZSAoZ3N0X3JlZ2lzdHJ5X2dldCAoKSwgbmFtZSk7CisgIGlmICghZmVhdHVy
ZSkgeworICAgIEdTVF9XQVJOSU5HICgiQ291bGQgbm90IGZpbmQgJXMiLCBuYW1lKTsKKyAgICBl
bmNvZGVyc1tlbmNJZF0uYXZhbGFpYmxlID0gRkFMU0U7CisKKyAgICByZXR1cm47CisgIH0KKyAg
Z3N0X29iamVjdF91bnJlZiAoZmVhdHVyZSk7CisKKyAgZW5jb2RlcnNbZW5jSWRdLmF2YWxhaWJs
ZSA9IFRSVUU7CisgIGVuY29kZXJzW2VuY0lkXS5uYW1lID0gbmFtZTsKKyAgZW5jb2RlcnNbZW5j
SWRdLnBhcnNlcl9uYW1lID0gcGFyc2VyX25hbWU7CisgIGVuY29kZXJzW2VuY0lkXS5jYXBzID0g
Z3N0X2NhcHNfZnJvbV9zdHJpbmcgKGNhcHMpOworICBpZiAoZW5jb2RlZF9mb3JtYXQpCisgICAg
ZW5jb2RlcnNbZW5jSWRdLmVuY29kZWRfZm9ybWF0ID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKGVu
Y29kZWRfZm9ybWF0KTsKKyAgZWxzZQorICAgIGVuY29kZXJzW2VuY0lkXS5lbmNvZGVkX2Zvcm1h
dCA9IE5VTEw7CisgIGVuY29kZXJzW2VuY0lkXS5zZXR1cEVuY29kZXIgPSBzZXR1cEVuY29kZXI7
CisgIGVuY29kZXJzW2VuY0lkXS5iaXRyYXRlX3Byb3BuYW1lID0gYml0cmF0ZV9wcm9wbmFtZTsK
KyAgZW5jb2RlcnNbZW5jSWRdLnNldEJpdHJhdGUgPSBzZXRCaXRyYXRlOworfQorCitzdGF0aWMg
dm9pZAorc2V0dXBfeDI2NGVuYyAoR09iamVjdCAqIGVuY29kZXIpCit7CisgIGdzdF91dGlsX3Nl
dF9vYmplY3RfYXJnIChlbmNvZGVyLCAidHVuZSIsICJ6ZXJvbGF0ZW5jeSIpOworfQorCitzdGF0
aWMgdm9pZAorc2V0dXBfdnA4ZW5jIChHT2JqZWN0ICogZW5jb2RlcikKK3sKKyAgZ3N0X3ByZXNl
dF9sb2FkX3ByZXNldCAoR1NUX1BSRVNFVCAoZW5jb2RlciksICJQcm9maWxlIFJlYWx0aW1lIik7
Cit9CisKK3N0YXRpYyB2b2lkCitzZXR1cF9vcGVuaDI2NGVuYyAoR09iamVjdCAqKQoreworfQor
CitzdGF0aWMgdm9pZAorc2V0X2JpdHJhdGVfa2JpdF9wZXJfc2VjIChHT2JqZWN0ICogZW5jb2Rl
ciwgY29uc3QgZ2NoYXIgKiBwcm9wX25hbWUsCisgICAgZ2ludCBiaXRyYXRlKQoreworICBnX29i
amVjdF9zZXQgKGVuY29kZXIsIHByb3BfbmFtZSwgYml0cmF0ZSwgTlVMTCk7Cit9CisKK3N0YXRp
YyB2b2lkCitzZXRfYml0cmF0ZV9iaXRfcGVyX3NlYyAoR09iamVjdCAqIGVuY29kZXIsIGNvbnN0
IGdjaGFyICogcHJvcF9uYW1lLAorICAgIGdpbnQgYml0cmF0ZSkKK3sKKyAgZ19vYmplY3Rfc2V0
IChlbmNvZGVyLCBwcm9wX25hbWUsIGJpdHJhdGUgKiBLQklUX1RPX0JJVCwgTlVMTCk7Cit9CisK
K3N0YXRpYyB2b2lkCitnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfY2xhc3NfaW5pdCAoR3N0V2Vi
cnRjVmlkZW9FbmNvZGVyQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpvYmplY3Rf
Y2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOworCisgIEdTVF9ERUJVR19DQVRFR09SWV9J
TklUIChnc3Rfd2VicnRjZW5jX2RlYnVnLCAid2VicnRjZW5jb2RlciIsIDAsCisgICAgICAiVmlk
ZW8gZW5jb2RlciBmb3IgV2ViUlRDIik7CisKKyAgb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdz
dF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9maW5hbGl6ZTsKKyAgb2JqZWN0X2NsYXNzLT5nZXRfcHJv
cGVydHkgPSBnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfZ2V0X3Byb3BlcnR5OworICBvYmplY3Rf
Y2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9zZXRfcHJvcGVy
dHk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAob2JqZWN0X2NsYXNzLCBQ
Uk9QX0ZPUk1BVCwKKyAgICAgIGdfcGFyYW1fc3BlY19ib3hlZCAoImZvcm1hdCIsICJGb3JtYXQg
YXMgY2FwcyIsCisgICAgICAgICAgIlNldCB0aGUgY2FwcyBvZiB0aGUgZm9ybWF0IHRvIGJlIHVz
ZWQuIiwKKyAgICAgICAgICBHU1RfVFlQRV9DQVBTLAorICAgICAgICAgIChHUGFyYW1GbGFncykg
KEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKworICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChvYmplY3RfY2xhc3MsIFBST1BfRU5DT0RFUiwK
KyAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QgKCJlbmNvZGVyIiwgIlRoZSBhY3R1YWwgZW5jb2Rl
ciBlbGVtZW50IiwKKyAgICAgICAgICAiVGhlIGVuY29kZXIgZWxlbWVudCIsIEdTVF9UWVBFX0VM
RU1FTlQsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFS
QU1fU1RBVElDX1NUUklOR1MpKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eSAob2JqZWN0X2NsYXNzLCBQUk9QX0JJVFJBVEUsCisgICAgICBnX3BhcmFtX3NwZWNfdWludCAo
ImJpdHJhdGUiLCAiQml0cmF0ZSIsCisgICAgICAgICAgIlRoZSBiaXRyYXRlIGluIGtiaXQgcGVy
IHNlY29uZCIsIDAsIEdfTUFYSU5ULCAyMDQ4LAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdf
UEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyB8CisgICAgICAgICAgICAg
IEdfUEFSQU1fQ09OU1RSVUNUKSkpOworCisgIHJlZ2lzdGVyX2tub3duX2VuY29kZXIgKEVOQ09E
RVJfWDI2NCwgIngyNjRlbmMiLCAiaDI2NHBhcnNlIiwgInZpZGVvL3gtaDI2NCIsCisgICAgICAi
dmlkZW8veC1oMjY0LGFsaWdubWVudD1hdSxzdHJlYW0tZm9ybWF0PWJ5dGUtc3RyZWFtLHByb2Zp
bGU9YmFzZWxpbmUiLAorICAgICAgc2V0dXBfeDI2NGVuYywgImJpdHJhdGUiLCBzZXRfYml0cmF0
ZV9rYml0X3Blcl9zZWMpOworICByZWdpc3Rlcl9rbm93bl9lbmNvZGVyIChFTkNPREVSX09QRU5I
MjY0LCAib3BlbmgyNjRlbmMiLCAiaDI2NHBhcnNlIiwKKyAgICAgICJ2aWRlby94LWgyNjQiLAor
ICAgICAgInZpZGVvL3gtaDI2NCxhbGlnbm1lbnQ9YXUsc3RyZWFtLWZvcm1hdD1ieXRlLXN0cmVh
bSxwcm9maWxlPWJhc2VsaW5lIiwKKyAgICAgIHNldHVwX29wZW5oMjY0ZW5jLCAiYml0cmF0ZSIs
IHNldF9iaXRyYXRlX2tiaXRfcGVyX3NlYyk7CisgIHJlZ2lzdGVyX2tub3duX2VuY29kZXIgKEVO
Q09ERVJfVlA4LCAidnA4ZW5jIiwgTlVMTCwgInZpZGVvL3gtdnA4IiwgTlVMTCwKKyAgICAgIHNl
dHVwX3ZwOGVuYywgInRhcmdldC1iaXRyYXRlIiwgc2V0X2JpdHJhdGVfYml0X3Blcl9zZWMpOwor
fQorCitzdGF0aWMgdm9pZAorZ3N0X3dlYnJ0Y192aWRlb19lbmNvZGVyX2luaXQgKEdzdFdlYnJ0
Y1ZpZGVvRW5jb2RlciAqIHNlbGYpCit7CisgIEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlclByaXZhdGUg
KnByaXYgPSBQUklWIChzZWxmKTsKKworICBwcml2LT5lbmNvZGVySWQgPSBFTkNPREVSX05PTkU7
CisgIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChzZWxmKSwKKyAgICAgIGdzdF9n
aG9zdF9wYWRfbmV3X25vX3RhcmdldF9mcm9tX3RlbXBsYXRlICgic2luayIsCisgICAgICAgICAg
Z3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc2lua1RlbXBsYXRlKSkpOworCisgIGdzdF9l
bGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChzZWxmKSwKKyAgICAgIGdzdF9naG9zdF9wYWRf
bmV3X25vX3RhcmdldF9mcm9tX3RlbXBsYXRlICgic3JjIiwKKyAgICAgICAgICBnc3Rfc3RhdGlj
X3BhZF90ZW1wbGF0ZV9nZXQgKCZzcmNUZW1wbGF0ZSkpKTsKK30KKworI2VuZGlmIC8vIEVOQUJM
RShWSURFTykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKExJQldFQlJUQykgJiYgVVNF
KEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xMGVhMjVjNGVlZTNlMThmMTk4MTkyOGU4ZDRmZTE2NDRlNWFmMWIzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0dTdHJlYW1lclZpZGVvRW5jb2Rlci5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAx
OCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8Z3N0L2dzdC5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgR1NUX1RZUEVfV0VCUlRD
X1ZJREVPX0VOQ09ERVIgKGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9nZXRfdHlwZSgpKQorCitH
X0RFQ0xBUkVfREVSSVZBQkxFX1RZUEUgKEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlciwgZ3N0X3dlYnJ0
Y192aWRlb19lbmNvZGVyLCBHU1QsIFdFQlJUQ19WSURFT19FTkNPREVSLCBHc3RCaW4pCisKK3N0
cnVjdCBfR3N0V2VicnRjVmlkZW9FbmNvZGVyQ2xhc3MKK3sKKyAgR3N0QmluQ2xhc3MgcGFyZW50
X2NsYXNzOworfTsKKworR19FTkRfREVDTFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3Ry
ZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAppbmRleCA4MjBlN2E1MzU5MzJhYWU1NzczZWU2
OGMwOTcyZTIzMWU5NGI2MDc5Li41MWU4MzUwNmI2Y2M2ZGFhMDgzYWJjOGE2YmU3ZGU1ZWI1MTRm
MTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZh
Y3RvcnkuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQogI2luY2x1
ZGUgIkdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuaCIKIAorI2luY2x1ZGUgIkdTdHJlYW1l
clZpZGVvRW5jb2Rlci5oIgogI2luY2x1ZGUgIkdTdHJlYW1lclZpZGVvRnJhbWVMaWJXZWJSVEMu
aCIKICNpbmNsdWRlICJ3ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uaCIKICNp
bmNsdWRlICJ3ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvcHJvZmlsZV9sZXZlbF9pZC5oIgpAQCAt
NjMsMTMgKzY0LDExIEBAIHB1YmxpYzoKICAgICBHU3RyZWFtZXJWaWRlb0VuY29kZXIoY29uc3Qg
d2VicnRjOjpTZHBWaWRlb0Zvcm1hdCYpCiAgICAgICAgIDogbV9maXJzdEZyYW1lUHRzKEdTVF9D
TE9DS19USU1FX05PTkUpCiAgICAgICAgICwgbV9yZXN0cmljdGlvbkNhcHMoYWRvcHRHUmVmKGdz
dF9jYXBzX25ld19lbXB0eV9zaW1wbGUoInZpZGVvL3gtcmF3IikpKQotICAgICAgICAsIG1fYml0
cmF0ZVNldHRlcihudWxscHRyKQogICAgIHsKICAgICB9CiAgICAgR1N0cmVhbWVyVmlkZW9FbmNv
ZGVyKCkKICAgICAgICAgOiBtX2ZpcnN0RnJhbWVQdHMoR1NUX0NMT0NLX1RJTUVfTk9ORSkKICAg
ICAgICAgLCBtX3Jlc3RyaWN0aW9uQ2FwcyhhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X2VtcHR5X3Np
bXBsZSgidmlkZW8veC1yYXciKSkpCi0gICAgICAgICwgbV9iaXRyYXRlU2V0dGVyKG51bGxwdHIp
CiAgICAgewogICAgIH0KIApAQCAtODMsOCArODIsOCBAQCBwdWJsaWM6CiAKICAgICAgICAgU2V0
UmVzdHJpY3Rpb25DYXBzKFdURk1vdmUoY2FwcykpOwogCi0gICAgICAgIGlmIChtX2JpdHJhdGVT
ZXR0ZXIgJiYgbV9lbmNvZGVyKQotICAgICAgICAgICAgbV9iaXRyYXRlU2V0dGVyKG1fZW5jb2Rl
ciwgbmV3Qml0cmF0ZSk7CisgICAgICAgIGlmIChtX2VuY29kZXIpCisgICAgICAgICAgICBnX29i
amVjdF9zZXQobV9lbmNvZGVyLCAiYml0cmF0ZSIsIG5ld0JpdHJhdGUsIG51bGxwdHIpOwogCiAg
ICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiAgICAgfQpAQCAtMTE4LDIwICsx
MTcsMjYgQEAgcHVibGljOgogICAgICAgICBtX3BpcGVsaW5lID0gbWFrZUVsZW1lbnQoInBpcGVs
aW5lIik7CiAKICAgICAgICAgY29ubmVjdFNpbXBsZUJ1c01lc3NhZ2VDYWxsYmFjayhtX3BpcGVs
aW5lLmdldCgpKTsKLSAgICAgICAgYXV0byBlbmNvZGViaW4gPSBjcmVhdGVFbmNvZGVyKCZtX2Vu
Y29kZXIpLmxlYWtSZWYoKTsKLSAgICAgICAgQVNTRVJUKG1fZW5jb2Rlcik7Ci0gICAgICAgIG1f
Yml0cmF0ZVNldHRlciA9IGdldEJpdHJhdGVTZXR0ZXIoZ3N0X2VsZW1lbnRfZ2V0X2ZhY3Rvcnko
bV9lbmNvZGVyKSk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IGNyZWF0ZUVuY29kZXIoKTsKKyAg
ICAgICAgQVNTRVJUKGVuY29kZXIpOworICAgICAgICBtX2VuY29kZXIgPSBlbmNvZGVyLmdldCgp
OwogCiAgICAgICAgIG1fc3JjID0gbWFrZUVsZW1lbnQoImFwcHNyYyIpOwogICAgICAgICBnX29i
amVjdF9zZXQobV9zcmMsICJpcy1saXZlIiwgdHJ1ZSwgImZvcm1hdCIsIEdTVF9GT1JNQVRfVElN
RSwgbnVsbHB0cik7CiAKLSAgICAgICAgYXV0byBjYXBzZmlsdGVyID0gQ3JlYXRlRmlsdGVyKCk7
CisgICAgICAgIGF1dG8gdmlkZW9jb252ZXJ0ID0gbWFrZUVsZW1lbnQoInZpZGVvY29udmVydCIp
OworICAgICAgICBhdXRvIHZpZGVvcmF0ZSA9IG1ha2VFbGVtZW50KCJ2aWRlb3JhdGUiKTsKICAg
ICAgICAgYXV0byBzaW5rID0gbWFrZUVsZW1lbnQoImFwcHNpbmsiKTsKICAgICAgICAgZ3N0X2Fw
cF9zaW5rX3NldF9lbWl0X3NpZ25hbHMoR1NUX0FQUF9TSU5LKHNpbmspLCBUUlVFKTsKICAgICAg
ICAgZ19zaWduYWxfY29ubmVjdChzaW5rLCAibmV3LXNhbXBsZSIsIEdfQ0FMTEJBQ0sobmV3U2Ft
cGxlQ2FsbGJhY2tUcmFtcCksIHRoaXMpOwogCi0gICAgICAgIGdzdF9iaW5fYWRkX21hbnkoR1NU
X0JJTihtX3BpcGVsaW5lLmdldCgpKSwgbV9zcmMsIGVuY29kZWJpbiwgY2Fwc2ZpbHRlciwgc2lu
aywgbnVsbHB0cik7Ci0gICAgICAgIGlmICghZ3N0X2VsZW1lbnRfbGlua19tYW55KG1fc3JjLCBl
bmNvZGViaW4sIGNhcHNmaWx0ZXIsIHNpbmssIG51bGxwdHIpKQorICAgICAgICBhdXRvIG5hbWUg
PSBTdHJpbmc6OmZvcm1hdCgiJXNfZW5jX3Jhd2NhcHNmaWx0ZXJfJXAiLCBOYW1lKCksIHRoaXMp
OworICAgICAgICBtX2NhcHNGaWx0ZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImNhcHNm
aWx0ZXIiLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBpZiAobV9yZXN0cmljdGlvbkNh
cHMpCisgICAgICAgICAgICBnX29iamVjdF9zZXQobV9jYXBzRmlsdGVyLCAiY2FwcyIsIG1fcmVz
dHJpY3Rpb25DYXBzLmdldCgpLCBudWxscHRyKTsKKworICAgICAgICBnc3RfYmluX2FkZF9tYW55
KEdTVF9CSU4obV9waXBlbGluZS5nZXQoKSksIG1fc3JjLCB2aWRlb3JhdGUsIHZpZGVvY29udmVy
dCwgbV9jYXBzRmlsdGVyLCBlbmNvZGVyLmxlYWtSZWYoKSwgc2luaywgbnVsbHB0cik7CisgICAg
ICAgIGlmICghZ3N0X2VsZW1lbnRfbGlua19tYW55KG1fc3JjLCB2aWRlb3JhdGUsIHZpZGVvY29u
dmVydCwgbV9jYXBzRmlsdGVyLCBtX2VuY29kZXIsIHNpbmssIG51bGxwdHIpKQogICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRl
KG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QTEFZSU5HKTsKQEAgLTE0NCwxMSArMTQ5LDYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIEdz
dEVsZW1lbnQqIENyZWF0ZUZpbHRlcigpCi0gICAgewotICAgICAgICByZXR1cm4gbWFrZUVsZW1l
bnQoImNhcHNmaWx0ZXIiKTsKLSAgICB9Ci0KICAgICBpbnQzMl90IFJlZ2lzdGVyRW5jb2RlQ29t
cGxldGVDYWxsYmFjayh3ZWJydGM6OkVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgZmlu
YWwKICAgICB7CiAgICAgICAgIG1faW1hZ2VSZWFkeUNiID0gY2FsbGJhY2s7CkBAIC0xNjAsMTIg
KzE2MCwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2VuY29kZWRGcmFtZS5fYnVmZmVy
ID0gbnVsbHB0cjsKICAgICAgICAgbV9lbmNvZGVkSW1hZ2VCdWZmZXIucmVzZXQoKTsKLSAgICAg
ICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVfZ2V0X2J1cyhH
U1RfUElQRUxJTkUobV9waXBlbGluZS5nZXQoKSkpKTsKLSAgICAgICAgZ3N0X2J1c19zZXRfc3lu
Y19oYW5kbGVyKGJ1cy5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci0KLSAgICAg
ICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9OVUxM
KTsKLSAgICAgICAgbV9zcmMgPSBudWxscHRyOwotICAgICAgICBtX3BpcGVsaW5lID0gbnVsbHB0
cjsKKyAgICAgICAgaWYgKG1fcGlwZWxpbmUpIHsKKyAgICAgICAgICAgIEdSZWZQdHI8R3N0QnVz
PiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlw
ZWxpbmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBnc3RfYnVzX3NldF9zeW5jX2hhbmRsZXIoYnVz
LmdldCgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKworICAgICAgICAgICAgZ3N0X2Vs
ZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKKyAgICAg
ICAgICAgIG1fc3JjID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fZW5jb2RlciA9IG51bGxwdHI7
CisgICAgICAgICAgICBtX2NhcHNGaWx0ZXIgPSBudWxscHRyOworICAgICAgICAgICAgbV9waXBl
bGluZSA9IG51bGxwdHI7CisgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVP
X0NPREVDX09LOwogICAgIH0KQEAgLTI1NSw4MiArMjU5LDI4IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIEdTVF9GTE9XX09LOwogICAgIH0KIAotI2RlZmluZSBSRVRVUk5fQklUUkFURV9TRVRU
RVJfSUZfTUFUQ0hFUyhyZWdleCwgcHJvcGVydHlOYW1lLCBiaXRyYXRlTXVsdGlwbGllciwgdW5p
dCkgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoZ19yZWdleF9tYXRjaChyZWdleC5nZXQoKSwg
ZmFjdG9yeU5hbWUsIHN0YXRpY19jYXN0PEdSZWdleE1hdGNoRmxhZ3M+KDApLCBudWxscHRyKSkg
eyAgICAgICAgICBcCi0gICAgICAgIEdTVF9JTkZPX09CSkVDVChlbmNvZGVyRmFjdG9yeSwgIkRl
dGVjdGVkIGFzIGhhdmluZyBhICIgI3Byb3BlcnR5TmFtZSAiIHByb3BlcnR5IGluICIgdW5pdCk7
IFwKLSAgICAgICAgcmV0dXJuIFtdKEdzdEVsZW1lbnQqIGVuY29kZXIsIHVpbnQzMl90IGJpdHJh
dGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAg
ICAgIGdfb2JqZWN0X3NldChlbmNvZGVyLCBwcm9wZXJ0eU5hbWUsIGJpdHJhdGUgKiBiaXRyYXRl
TXVsdGlwbGllciwgbnVsbHB0cik7ICAgICAgICAgICAgXAotICAgICAgICAgICAgfTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLSAgICAvLyBHU3RyZWFtZXIgZG9l
c24ndCBoYXZlIGEgdW5pZmllZCBlbmNvZGVyIEFQSSBhbmQgdGhlIGVuY29kZXJzIGhhdmUgdGhl
aXIKLSAgICAvLyBvd24gc2VtYW50aWNzIGFuZCBuYW1pbmcgdG8gc2V0IHRoZSBiaXRyYXRlLCB0
aGlzIGlzIGEgYmVzdCBlZmZvcnQgdG8gaGFuZGxlCi0gICAgLy8gc2V0dGluZyBiaXRyYXRlIGZv
ciB0aGUgd2VsbCBrbm93biBlbmNvZGVycy4KLSAgICAvLyBTZWUgaHR0cHM6Ly9idWd6aWxsYS5n
bm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjcxNgotICAgIEJpdHJhdGVTZXR0ZXIgZ2V0Qml0
cmF0ZVNldHRlcihHc3RFbGVtZW50RmFjdG9yeSogZW5jb2RlckZhY3RvcnkpCisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBjcmVhdGVFbmNvZGVyKHZvaWQpCiAgICAgewotICAgICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgcmVnZXhSZWdpc3RlcmVkRmxhZzsKLQotICAgICAgICBzdGQ6OmNhbGxf
b25jZShyZWdleFJlZ2lzdGVyZWRGbGFnLCBbXSB7Ci0gICAgICAgICAgICB0YXJnZXRCaXRyYXRl
Qml0UGVyU2VjID0gZ19yZWdleF9uZXcoIl52cC5lbmMkfF5vbXguKmVuYyQiLCBzdGF0aWNfY2Fz
dDxHUmVnZXhDb21waWxlRmxhZ3M+KDApLCBzdGF0aWNfY2FzdDxHUmVnZXhNYXRjaEZsYWdzPigw
KSwgbnVsbHB0cik7Ci0gICAgICAgICAgICBiaXRyYXRlQml0UGVyU2VjID0gZ19yZWdleF9uZXco
Il5vcGVuaDI2NGVuYyQiLCBzdGF0aWNfY2FzdDxHUmVnZXhDb21waWxlRmxhZ3M+KDApLCBzdGF0
aWNfY2FzdDxHUmVnZXhNYXRjaEZsYWdzPigwKSwgbnVsbHB0cik7Ci0gICAgICAgICAgICBiaXRy
YXRlS0JpdFBlclNlYyA9IGdfcmVnZXhfbmV3KCJeeDI2NGVuYyR8dmFhcGkuKmVuYyQiLCBzdGF0
aWNfY2FzdDxHUmVnZXhDb21waWxlRmxhZ3M+KDApLCBzdGF0aWNfY2FzdDxHUmVnZXhNYXRjaEZs
YWdzPigwKSwgbnVsbHB0cik7Ci0gICAgICAgICAgICBBU1NFUlQodGFyZ2V0Qml0cmF0ZUJpdFBl
clNlYy5nZXQoKSAmJiBiaXRyYXRlQml0UGVyU2VjLmdldCgpICYmIGJpdHJhdGVLQml0UGVyU2Vj
LmdldCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgYXV0byBmYWN0b3J5TmFtZSA9IEdTVF9P
QkpFQ1RfTkFNRShlbmNvZGVyRmFjdG9yeSk7Ci0gICAgICAgIFJFVFVSTl9CSVRSQVRFX1NFVFRF
Ul9JRl9NQVRDSEVTKHRhcmdldEJpdHJhdGVCaXRQZXJTZWMsICJ0YXJnZXQtYml0cmF0ZSIsIEtC
SVRfVE9fQklULCAiQml0cyBQZXIgU2Vjb25kIikKLSAgICAgICAgUkVUVVJOX0JJVFJBVEVfU0VU
VEVSX0lGX01BVENIRVMoYml0cmF0ZUJpdFBlclNlYywgImJpdHJhdGUiLCBLQklUX1RPX0JJVCwg
IkJpdHMgUGVyIFNlY29uZCIpCi0gICAgICAgIFJFVFVSTl9CSVRSQVRFX1NFVFRFUl9JRl9NQVRD
SEVTKGJpdHJhdGVLQml0UGVyU2VjLCAiYml0cmF0ZSIsIDEsICJLQml0cyBQZXIgU2Vjb25kIikK
KyAgICAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBlbmNvZGVyID0gbnVsbHB0cjsKKyAgICAgICAg
R3N0RWxlbWVudCogd2VicnRjZW5jb2RlciA9IEdTVF9FTEVNRU5UKGdfb2JqZWN0X3JlZl9zaW5r
KGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgid2VicnRjdmlkZW9lbmNvZGVyIiwgTlVMTCkpKTsK
IAotICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QoZW5jb2RlckZhY3RvcnksICJ1bmtvbnduIGVu
Y29kZXIsIGNhbid0IHNldCBiaXRyYXRlcyBvbiBpdCIpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci0jdW5kZWYgUkVUVVJOX0JJVFJBVEVfU0VUVEVSX0lGX01BVENIRVMKKyAgICAg
ICAgZ19vYmplY3Rfc2V0KHdlYnJ0Y2VuY29kZXIsICJmb3JtYXQiLCBhZG9wdEdSZWYoZ3N0X2Nh
cHNfZnJvbV9zdHJpbmcoQ2FwcygpKSkuZ2V0KCksIE5VTEwpOworICAgICAgICBnX29iamVjdF9n
ZXQod2VicnRjZW5jb2RlciwgImVuY29kZXIiLCAmZW5jb2Rlci5vdXRQdHIoKSwgTlVMTCk7CiAK
LSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGNyZWF0ZUVuY29kZXIoR3N0RWxlbWVudCoqIGVuY29k
ZXIpCi0gICAgewotICAgICAgICBHc3RFbGVtZW50KiBlbmMgPSBudWxscHRyOworICAgICAgICBp
ZiAoIWVuY29kZXIpIHsKKyAgICAgICAgICAgIEdTVF9JTkZPKCJObyBlbmNvZGVyIGZvdW5kIGZv
ciAlcyIsIENhcHMoKSk7CiAKLSAgICAgICAgbV9wcm9maWxlID0gR1NUX0VOQ09ESU5HX1BST0ZJ
TEUoZ3N0X2VuY29kaW5nX3ZpZGVvX3Byb2ZpbGVfbmV3KAotICAgICAgICAgICAgYWRvcHRHUmVm
KGdzdF9jYXBzX2Zyb21fc3RyaW5nKENhcHMoKSkpLmdldCgpLAotICAgICAgICAgICAgUHJvZmls
ZU5hbWUoKSwKLSAgICAgICAgICAgIGdzdF9jYXBzX3JlZihtX3Jlc3RyaWN0aW9uQ2Fwcy5nZXQo
KSksCi0gICAgICAgICAgICAxKSk7Ci0gICAgICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gZW5jb2Rl
YmluID0gbWFrZUVsZW1lbnQoImVuY29kZWJpbiIpOwotCi0gICAgICAgIGlmICghZW5jb2RlYmlu
LmdldCgpKSB7Ci0gICAgICAgICAgICBHU1RfRVJST1IoIk5vIGVuY29kZWJpbiBwcmVzZW50Li4u
IGNhbid0IHVzZSBHU3RyZWFtZXIgYmFzZWQgZW5jb2RlcnMiKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGdfb2JqZWN0X3NldChlbmNvZGViaW4uZ2V0
KCksICJwcm9maWxlIiwgbV9wcm9maWxlLmdldCgpLCBudWxscHRyKTsKLQotICAgICAgICBmb3Ig
KEdMaXN0KiB0bXAgPSBHU1RfQklOX0NISUxEUkVOKGVuY29kZWJpbi5nZXQoKSk7IHRtcDsgdG1w
ID0gdG1wLT5uZXh0KSB7Ci0gICAgICAgICAgICBHc3RFbGVtZW50KiBlbGVtID0gR1NUX0VMRU1F
TlQodG1wLT5kYXRhKTsKLSAgICAgICAgICAgIEdzdEVsZW1lbnRGYWN0b3J5KiBmYWN0b3J5ID0g
Z3N0X2VsZW1lbnRfZ2V0X2ZhY3RvcnkoKGVsZW0pKTsKLQotICAgICAgICAgICAgaWYgKCFmYWN0
b3J5IHx8ICFnc3RfZWxlbWVudF9mYWN0b3J5X2xpc3RfaXNfdHlwZShmYWN0b3J5LCBHU1RfRUxF
TUVOVF9GQUNUT1JZX1RZUEVfVklERU9fRU5DT0RFUikpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgICAgIGVuYyA9IGVsZW07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICghZW5jKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICAgICAgaWYgKGVuY29kZXIpCi0gICAgICAgICAgICAqZW5jb2RlciA9IGVuYzsKIAotICAg
ICAgICByZXR1cm4gZW5jb2RlYmluOworICAgICAgICByZXR1cm4gd2VicnRjZW5jb2RlcjsKICAg
ICB9CiAKICAgICB2b2lkIEFkZENvZGVjSWZTdXBwb3J0ZWQoc3RkOjp2ZWN0b3I8d2VicnRjOjpT
ZHBWaWRlb0Zvcm1hdD4qIHN1cHBvcnRlZEZvcm1hdHMpCiAgICAgewogICAgICAgICBHc3RFbGVt
ZW50KiBlbmNvZGVyOwogCi0gICAgICAgIGlmIChjcmVhdGVFbmNvZGVyKCZlbmNvZGVyKS5nZXQo
KSAhPSBudWxscHRyKSB7CisgICAgICAgIGlmIChjcmVhdGVFbmNvZGVyKCkuZ2V0KCkgIT0gbnVs
bHB0cikgewogICAgICAgICAgICAgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdCBmb3JtYXQgPSBDb25m
aWd1cmVTdXBwb3J0ZWRDb2RlYyhlbmNvZGVyKTsKIAogICAgICAgICAgICAgc3VwcG9ydGVkRm9y
bWF0cy0+cHVzaF9iYWNrKGZvcm1hdCk7CkBAIC0zODAsMTcgKzMzMCwyMCBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdAogICAgIHsKKyAgICAg
ICAgR1JlZlB0cjxHc3RFbGVtZW50PiBlbmNvZGVySW1wbGVtZW50YXRpb247CiAgICAgICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKG1fZW5jb2RlciwgbnVsbHB0cik7CiAKLSAgICAgICAgcmV0dXJu
IEdTVF9PQkpFQ1RfTkFNRShnc3RfZWxlbWVudF9nZXRfZmFjdG9yeShtX2VuY29kZXIpKTsKKyAg
ICAgICAgZ19vYmplY3RfZ2V0KG1fZW5jb2RlciwgImVuY29kZXIiLCAmZW5jb2RlckltcGxlbWVu
dGF0aW9uLm91dFB0cigpLCBudWxscHRyKTsKKworICAgICAgICByZXR1cm4gR1NUX09CSkVDVF9O
QU1FKGdzdF9lbGVtZW50X2dldF9mYWN0b3J5KGVuY29kZXJJbXBsZW1lbnRhdGlvbi5nZXQoKSkp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgY29uc3QgZ2NoYXIqIE5hbWUoKSA9IDA7CiAKICAgICB2
b2lkIFNldFJlc3RyaWN0aW9uQ2FwcyhHUmVmUHRyPEdzdENhcHM+IGNhcHMpCiAgICAgewotICAg
ICAgICBpZiAoY2FwcyAmJiBtX3Byb2ZpbGUuZ2V0KCkgJiYgZ3N0X2NhcHNfaXNfZXF1YWwobV9y
ZXN0cmljdGlvbkNhcHMuZ2V0KCksIGNhcHMuZ2V0KCkpKQotICAgICAgICAgICAgZ19vYmplY3Rf
c2V0KG1fcHJvZmlsZS5nZXQoKSwgInJlc3RyaWN0aW9uLWNhcHMiLCBjYXBzLmdldCgpLCBudWxs
cHRyKTsKKyAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25DYXBzKQorICAgICAgICAgICAgZ19vYmpl
Y3Rfc2V0KG1fY2Fwc0ZpbHRlciwgImNhcHMiLCBtX3Jlc3RyaWN0aW9uQ2Fwcy5nZXQoKSwgbnVs
bHB0cik7CiAKICAgICAgICAgbV9yZXN0cmljdGlvbkNhcHMgPSBjYXBzOwogICAgIH0KQEAgLTQw
NCwxMiArMzU3LDExIEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3BpcGVs
aW5lOwogICAgIEdzdEVsZW1lbnQqIG1fc3JjOwogICAgIEdzdEVsZW1lbnQqIG1fZW5jb2RlcjsK
KyAgICBHc3RFbGVtZW50KiBtX2NhcHNGaWx0ZXI7CiAKICAgICB3ZWJydGM6OkVuY29kZWRJbWFn
ZUNhbGxiYWNrKiBtX2ltYWdlUmVhZHlDYjsKICAgICBHc3RDbG9ja1RpbWUgbV9maXJzdEZyYW1l
UHRzOwogICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9yZXN0cmljdGlvbkNhcHM7Ci0gICAgR1JlZlB0
cjxHc3RFbmNvZGluZ1Byb2ZpbGU+IG1fcHJvZmlsZTsKLSAgICBCaXRyYXRlU2V0dGVyIG1fYml0
cmF0ZVNldHRlcjsKICAgICB3ZWJydGM6OkVuY29kZWRJbWFnZSBtX2VuY29kZWRGcmFtZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiBtX2VuY29kZWRJbWFnZUJ1ZmZlcjsKICAgICBz
aXplX3QgbV9lbmNvZGVkSW1hZ2VCdWZmZXJTaXplOwpAQCAtNDgzLDE4ICs0MzUsNiBAQCBwdWJs
aWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBHc3RFbGVtZW50KiBDcmVhdGVGaWx0ZXIoKSBm
aW5hbAotICAgIHsKLSAgICAgICAgR3N0RWxlbWVudCogZmlsdGVyID0gbWFrZUVsZW1lbnQoImNh
cHNmaWx0ZXIiKTsKLSAgICAgICAgYXV0byBjYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX25ld19z
aW1wbGUoQ2FwcygpLAotICAgICAgICAgICAgImFsaWdubWVudCIsIEdfVFlQRV9TVFJJTkcsICJh
dSIsCi0gICAgICAgICAgICAic3RyZWFtLWZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsICJieXRlLXN0
cmVhbSIsCi0gICAgICAgICAgICBudWxscHRyKSk7Ci0gICAgICAgIGdfb2JqZWN0X3NldChmaWx0
ZXIsICJjYXBzIiwgY2Fwcy5nZXQoKSwgbnVsbHB0cik7Ci0KLSAgICAgICAgcmV0dXJuIGZpbHRl
cjsKLSAgICB9Ci0KICAgICB3ZWJydGM6OlNkcFZpZGVvRm9ybWF0IENvbmZpZ3VyZVN1cHBvcnRl
ZENvZGVjKEdzdEVsZW1lbnQqKSBmaW5hbAogICAgIHsKICAgICAgICAgLy8gVE9ETy0gQ3JlYXRl
IGZyb20gZW5jb2RlciBzcmMgcGFkIGNhcHMgdGVtcGxhdGUKQEAgLTU1OCw2ICs0OTgsNyBAQCBH
U3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5OjpHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5
KCkKIAogICAgIHN0ZDo6Y2FsbF9vbmNlKGRlYnVnUmVnaXN0ZXJlZEZsYWcsIFtdIHsKICAgICAg
ICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X3dlYnJ0Y2VuY19kZWJ1ZywgIndlYmtp
dGxpYndlYnJ0Y3ZpZGVvZW5jb2RlciIsIDAsICJXZWJLaXQgV2ViUlRDIHZpZGVvIGVuY29kZXIi
KTsKKyAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIobnVsbHB0ciwgIndlYnJ0Y3ZpZGVvZW5j
b2RlciIsIEdTVF9SQU5LX1BSSU1BUlksIEdTVF9UWVBFX1dFQlJUQ19WSURFT19FTkNPREVSKTsK
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDg0YzFlOTg3MjcwOGVlZjg5ZjUzNGI1MGYyMGM5YWRjM2ViODE5YWMuLjNkODQ4
M2E1MjU0NjQyMjM4OWQwMTViOTFiNWEwZjhkNDg4NWNkZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMC0x
MiAgVGhpYmF1bHQgU2F1bmllciAgPHRzYXVuaWVyQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl1bV2ViUlRDXSBBZGQgd2VicnRjZW5jb2RlciBiaW4gdG8gY2xlYW51cCBhbmQgcmVm
YWN0b3IgdGhlIHdheSB3ZSBzZXQgZW5jb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY3NAorCisgICAgICAgIHdlYnJ0Y2VuY29kZXIgaXMg
YSBzaW1wbGUgR3N0QmluIHdpdGggYSBzZXQgb2Ygd2VsbCBrbm93biBHU3RyZWFtZXIgZW5jb2Rl
cnMgd2hpY2gKKyAgICAgICAgaXQgY2FuIHVzZSB0byBpbXBsZW1lbnQgZW5jb2RpbmcgZm9yIGRp
ZmZlcmVudCBmb3JtYXRzIGV4cG9zaW5nIGEgdHJpbW1lZCBkb3duIHVuaWZpZWQgQVBJLgorCisg
ICAgICAgIEl0IGFsc28gYWRkcyBwcm9wZXIgaGFuZGxpbmcgb2YgSDI2NCBwcm9maWxlcy4KKwor
ICAgICAgICBUaGUgYWRkZWQgZmlsZXMgZm9sbG93IEdTdHJlYW1lciBjb2Rpbmcgc3R5bGUgYXMg
d2UgYWltIGF0IHVwc3RyZWFtaW5nIHRoZSBlbGVtZW50CisgICAgICAgIGluIHRoZSBmdXR1cmUu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CisKIDIwMTgtMTAtMzAgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBBdHRhY2htZW50
IGRyb3BwZWQgZnJvbSBvbmUgd2ViIHZpZXcgdG8gYW5vdGhlciBpcyBtaXNzaW5nIGl0cyBmaWxl
IHdyYXBwZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQppbmRleCBhNTkw
OGU2MDE2YTIxY2E3NmI2YjJhZTNlNTQxOWVhOWUxZmZkN2NhLi4xNzQyNDkzNGUxODdmZDdkYzMx
MThiZjJjNDFkNmRmNmNmMmY5NjBhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2VyLnB5CkBAIC0yMzcsNiArMjM3LDE5IEBAIF9QQVRIX1JVTEVTX1NQRUNJRklFUiA9IFsKICAg
ICAgICItd2hpdGVzcGFjZS9kZWNsYXJhdGlvbiIsCiAgICAgICAiLXdoaXRlc3BhY2UvaW5kZW50
Il0pLAogCisgICAgKFsgICMgRmlsZXMgZm9sbG93aW5nIEdTdHJlYW1lciBjb2Rpbmcgc3R5bGUg
KGZvciBhIHNpbXBsZXIgdXBzdHJlYW1pbmcgcHJvY2VzcyBmb3IgZXhhbXBsZSkKKyAgICAgIG9z
LnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnbWVkaWFzdHJlYW0n
LCAnbGlid2VicnRjJywgJ0dTdHJlYW1lclZpZGVvRW5jb2Rlci5jcHAnKSwKKyAgICAgIG9zLnBh
dGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAnbWVkaWFzdHJlYW0nLCAn
bGlid2VicnRjJywgJ0dTdHJlYW1lclZpZGVvRW5jb2Rlci5oJyksCisgICAgIF0sCisgICAgIFsi
LXdoaXRlc3BhY2UvaW5kZW50IiwKKyAgICAgICItd2hpdGVzcGFjZS9kZWNsYXJhdGlvbiIsCisg
ICAgICAiLXdoaXRlc3BhY2UvcGFyZW5zIiwKKyAgICAgICItcmVhZGFiaWxpdHkvbnVsbCIsCisg
ICAgICAiLXdoaXRlc3BhY2UvYnJhY2VzIiwKKyAgICAgICItcmVhZGFiaWxpdHkvbmFtaW5nL3Vu
ZGVyc2NvcmVzIiwKKyAgICAgICItcmVhZGFiaWxpdHkvZW51bV9jYXNpbmciLAorICAgICBdKSwK
KwogICAgIChbCiAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBhdm9pZCB0aGUgc3ltYm9scyBf
X2ppdF9kZWJ1Z19yZWdpc3Rlcl9jb2RlCiAgICAgICAjIGFuZCBfX2ppdF9kZWJ1Z19kZXNjcmlw
dG9yIHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBnZGIuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353858</attachid>
            <date>2018-11-05 06:32:09 -0800</date>
            <delta_ts>2018-11-05 07:10:03 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-190674-20181105113207.patch</filename>
            <type>text/plain</type>
            <size>29356</size>
            <attacher name="Thibault Saunier">tsaunier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNhNGRmMjYyOGUwYjUw
MmJhYWNiYmVjODQ5OTk0YjEyY2ZhZDBlMi4uZmZhZGFjYTJkYmZiODhhNTU1MTZjNjVjZDFmNDRj
NTE1M2E3YzI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE4LTEwLTEyICBUaGli
YXVsdCBTYXVuaWVyICA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XVtXZWJSVENdIEFkZCB3ZWJydGNlbmNvZGVyIGJpbiB0byBjbGVhbnVwIGFuZCByZWZhY3RvciB0
aGUgd2F5IHdlIHNldCBlbmNvZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkwNjc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlwcGUgTm9y
bWFuZC4KKworICAgICAgICB3ZWJydGNlbmNvZGVyIGlzIGEgc2ltcGxlIEdzdEJpbiB3aXRoIGEg
c2V0IG9mIHdlbGwga25vd24gR1N0cmVhbWVyIGVuY29kZXJzIHdoaWNoCisgICAgICAgIGl0IGNh
biB1c2UgdG8gaW1wbGVtZW50IGVuY29kaW5nIGZvciBkaWZmZXJlbnQgZm9ybWF0cyBleHBvc2lu
ZyBhIHRyaW1tZWQgZG93biB1bmlmaWVkIEFQSS4KKworICAgICAgICBJdCBhbHNvIGFkZHMgcHJv
cGVyIGhhbmRsaW5nIG9mIEgyNjQgcHJvZmlsZXMuCisKKyAgICAgICAgVGhlIGFkZGVkIGZpbGVz
IGZvbGxvdyBHU3RyZWFtZXIgY29kaW5nIHN0eWxlIGFzIHdlIGFpbSBhdCB1cHN0cmVhbWluZyB0
aGUgZWxlbWVudAorICAgICAgICBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFRoaXMgaXMgYSBy
ZWZhY3RvcmluZyBzbyBjdXJyZW50IHRlc3RzIGFscmVhZHkgY292ZXIgaXQuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6aW5pdGlhbGl6ZUdTdHJl
YW1lckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9nZXRfcHJvcGVydHkpOgorICAgICAgICAoZ3N0
X3dlYnJ0Y192aWRlb19lbmNvZGVyX3NldF9iaXRyYXRlKToKKyAgICAgICAgKGdzdF93ZWJydGNf
dmlkZW9fZW5jb2Rlcl9zZXRfZm9ybWF0KToKKyAgICAgICAgKGdzdF93ZWJydGNfdmlkZW9fZW5j
b2Rlcl9zZXRfcHJvcGVydHkpOgorICAgICAgICAocmVnaXN0ZXJfa25vd25fZW5jb2Rlcik6Cisg
ICAgICAgIChzZXR1cF94MjY0ZW5jKToKKyAgICAgICAgKHNldHVwX3ZwOGVuYyk6CisgICAgICAg
IChzZXR1cF9vcGVuaDI2NGVuYyk6CisgICAgICAgIChzZXRfYml0cmF0ZV9rYml0X3Blcl9zZWMp
OgorICAgICAgICAoc2V0X2JpdHJhdGVfYml0X3Blcl9zZWMpOgorICAgICAgICAoZ3N0X3dlYnJ0
Y192aWRlb19lbmNvZGVyX2NsYXNzX2luaXQpOgorICAgICAgICAoZ3N0X3dlYnJ0Y192aWRlb19l
bmNvZGVyX2luaXQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9H
U3RyZWFtZXJWaWRlb0VuY29kZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9FbmNvZGVyOjpHU3RyZWFtZXJWaWRlb0VuY29kZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9FbmNvZGVyOjpJbml0RW5jb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVvRW5jb2Rlcjo6Y3JlYXRlRW5jb2Rlcik6
CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0VuY29kZXI6OkFkZENvZGVjSWZTdXBw
b3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9FbmNvZGVyOjpJbXBsZW1l
bnRhdGlvbk5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9FbmNv
ZGVyOjpTZXRSZXN0cmljdGlvbkNhcHMpOgorCiAyMDE4LTEwLTMwICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQXR0YWNobWVudCBkcm9w
cGVkIGZyb20gb25lIHdlYiB2aWV3IHRvIGFub3RoZXIgaXMgbWlzc2luZyBpdHMgZmlsZSB3cmFw
cGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKaW5kZXggZDlhMWZkYjMw
YzQyMGYwOTgxYmZlZWY0ZGNkZjRjOTZhZmRkYTI1ZC4uZDUzNTQ0YTdkYzdjODM2Mjk5YzAwYWQ5
NTNhMDM0MDFmZjYyMGYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0
cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFr
ZQpAQCAtMzQsNiArMzQsNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8p
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuY3BwCiAKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0dTdHJlYW1lclZpZGVvRGVjb2RlckZhY3RvcnkuY3BwCisgICAgICAgIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXIuY3BwCiAgICAgICAgIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNw
cAogICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9N
b2R1bGUuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2Rlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTBmN2RhZjRiYTE0YTk1OTZlODZjNzZiMDgzMTQ3NWQ1OTFiNjRjMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXIuY3BwCkBAIC0wLDAgKzEsMzQzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisvKiBOT1RFOiBUaGlzIGZp
bGUgcmVzcGVjdHMgR1N0cmVhbWVyIGNvZGluZyBzdHlsZSBhcyB3ZSBtaWdodCB3YW50IHRvIHVw
c3RyZWFtCisgKiB0aGF0IGVsZW1lbnQgaW4gdGhlIGZ1dHVyZSAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVT
RShMSUJXRUJSVEMpICYmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAiR1N0cmVhbWVyVmlkZW9F
bmNvZGVyLmgiCisKK0dTVF9ERUJVR19DQVRFR09SWSAoZ3N0X3dlYnJ0Y2VuY19kZWJ1Zyk7Cisj
ZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3Rfd2VicnRjZW5jX2RlYnVnCisKKyNkZWZpbmUgS0JJ
VF9UT19CSVQgMTAyNAorCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua1RlbXBsYXRl
ID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKKyAgICBHU1RfUEFEX1NJTkssCisg
ICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXcoQU5Z
KTsiKSk7CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNUZW1wbGF0ZSA9IEdTVF9T
VEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKKyAgICBHU1RfUEFEX1NSQywKKyAgICBHU1RfUEFE
X0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LWgyNjQ7dmlkZW8veC12cDgi
KSk7CisKK3R5cGVkZWYgdm9pZCAoKlNldEJpdHJhdGVGdW5jKSAoR09iamVjdCAqIGVuY29kZXIs
IGNvbnN0IGdjaGFyICogcHJvcG5hbWUsCisgICAgZ2ludCBiaXRyYXRlKTsKK3R5cGVkZWYgdm9p
ZCAoKlNldHVwRW5jb2RlcikgKEdPYmplY3QgKiBlbmNvZGVyKTsKK3R5cGVkZWYgc3RydWN0Cit7
CisgIGdib29sZWFuIGF2YWxhaWJsZTsKKyAgR3N0Q2FwcyAqY2FwczsKKyAgY29uc3QgZ2NoYXIg
Km5hbWU7CisgIGNvbnN0IGdjaGFyICpwYXJzZXJfbmFtZTsKKyAgR3N0Q2FwcyAqZW5jb2RlZF9m
b3JtYXQ7CisgIFNldEJpdHJhdGVGdW5jIHNldEJpdHJhdGU7CisgIFNldHVwRW5jb2RlciBzZXR1
cEVuY29kZXI7CisgIGNvbnN0IGdjaGFyICpiaXRyYXRlX3Byb3BuYW1lOworfSBFbmNvZGVyRGVm
aW5pdGlvbjsKKwordHlwZWRlZiBlbnVtCit7CisgIEVOQ09ERVJfTk9ORSA9IDAsCisgIEVOQ09E
RVJfWDI2NCwKKyAgRU5DT0RFUl9PUEVOSDI2NCwKKyAgRU5DT0RFUl9WUDgsCisgIEVOQ09ERVJf
TEFTVCwKK30gRW5jb2RlcklkOworCitFbmNvZGVyRGVmaW5pdGlvbiBlbmNvZGVyc1tFTkNPREVS
X0xBU1RdID0geworICBGQUxTRSwKKyAgTlVMTCwKKyAgTlVMTCwKKyAgTlVMTCwKKyAgTlVMTCwK
KyAgTlVMTCwKKyAgTlVMTCwKKyAgTlVMTCwKK307CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIEVu
Y29kZXJJZCBlbmNvZGVySWQ7CisgIEdzdEVsZW1lbnQgKmVuY29kZXI7CisgIEdzdEVsZW1lbnQg
KnBhcnNlcjsKKyAgR3N0RWxlbWVudCAqY2Fwc2ZpbHRlcjsKKyAgZ3VpbnQgYml0cmF0ZTsKK30g
R3N0V2VicnRjVmlkZW9FbmNvZGVyUHJpdmF0ZTsKKworLyogICpJTkRFTlQtT0ZGKiAqLworR19E
RUZJTkVfVFlQRV9XSVRIX1BSSVZBVEUgKEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlciwgZ3N0X3dlYnJ0
Y192aWRlb19lbmNvZGVyLAorICAgIEdTVF9UWVBFX0JJTikKKyNkZWZpbmUgUFJJVihzZWxmKSAo
KEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlclByaXZhdGUqKWdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9n
ZXRfaW5zdGFuY2VfcHJpdmF0ZShzZWxmKSkKKy8qICAqSU5ERU5ULU9OKiAqLworCitlbnVtCit7
CisgIFBST1BfMCwKKyAgUFJPUF9GT1JNQVQsCisgIFBST1BfRU5DT0RFUiwKKyAgUFJPUF9CSVRS
QVRFLAorICBOX1BST1BTCit9OworCitzdGF0aWMgdm9pZAorZ3N0X3dlYnJ0Y192aWRlb19lbmNv
ZGVyX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHX09CSkVDVF9DTEFTUyAoZ3N0
X3dlYnJ0Y192aWRlb19lbmNvZGVyX3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwor
fQorCitzdGF0aWMgdm9pZAorZ3N0X3dlYnJ0Y192aWRlb19lbmNvZGVyX2dldF9wcm9wZXJ0eSAo
R09iamVjdCAqIG9iamVjdCwKKyAgICBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwgR1Bh
cmFtU3BlYyAqIHBzcGVjKQoreworICBHc3RXZWJydGNWaWRlb0VuY29kZXIgKnNlbGYgPSBHU1Rf
V0VCUlRDX1ZJREVPX0VOQ09ERVIgKG9iamVjdCk7CisgIEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlclBy
aXZhdGUgKnByaXYgPSBQUklWIChzZWxmKTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBj
YXNlIFBST1BfRk9STUFUOgorICAgICAgaWYgKHByaXYtPmVuY29kZXJJZCAhPSBFTkNPREVSX05P
TkUpCisgICAgICAgIGdfdmFsdWVfc2V0X2JveGVkICh2YWx1ZSwgZW5jb2RlcnNbcHJpdi0+ZW5j
b2RlcklkXS5jYXBzKTsKKyAgICAgIGVsc2UKKyAgICAgICAgZ192YWx1ZV9zZXRfYm94ZWQgKHZh
bHVlLCBOVUxMKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkNPREVSOgorICAgICAg
Z192YWx1ZV9zZXRfb2JqZWN0ICh2YWx1ZSwgcHJpdi0+ZW5jb2Rlcik7CisgICAgICBicmVhazsK
KyAgICBjYXNlIFBST1BfQklUUkFURToKKyAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBw
cml2LT5iaXRyYXRlKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICB9
Cit9CisKK3N0YXRpYyB2b2lkCitnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfc2V0X2JpdHJhdGUg
KEdzdFdlYnJ0Y1ZpZGVvRW5jb2RlciAqIHNlbGYsCisgICAgZ3VpbnQgYml0cmF0ZSkKK3sKKyAg
R3N0V2VicnRjVmlkZW9FbmNvZGVyUHJpdmF0ZSAqcHJpdiA9IFBSSVYgKHNlbGYpOworCisgIHBy
aXYtPmJpdHJhdGUgPSBiaXRyYXRlOworICBpZiAocHJpdi0+ZW5jb2RlcikgeworICAgIGVuY29k
ZXJzW3ByaXYtPmVuY29kZXJJZF0uc2V0Qml0cmF0ZSAoR19PQkpFQ1QgKHByaXYtPmVuY29kZXIp
LAorICAgICAgICBlbmNvZGVyc1twcml2LT5lbmNvZGVySWRdLmJpdHJhdGVfcHJvcG5hbWUsIHBy
aXYtPmJpdHJhdGUpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3Rfd2VicnRjX3ZpZGVvX2Vu
Y29kZXJfc2V0X2Zvcm1hdCAoR3N0V2VicnRjVmlkZW9FbmNvZGVyICogc2VsZiwKKyAgICBjb25z
dCBHc3RDYXBzICogY2FwcykKK3sKKyAgZ2ludCBpOworICBHc3RXZWJydGNWaWRlb0VuY29kZXJQ
cml2YXRlICpwcml2ID0gUFJJViAoc2VsZik7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPmVu
Y29kZXJJZCA9PSBFTkNPREVSX05PTkUpOworICBnX3JldHVybl9pZl9mYWlsIChjYXBzKTsKKwor
ICBmb3IgKGkgPSAxOyBpIDwgRU5DT0RFUl9MQVNUOyBpKyspIHsKKyAgICBpZiAoZW5jb2RlcnNb
aV0uYXZhbGFpYmxlCisgICAgICAgICYmIGdzdF9jYXBzX2Nhbl9pbnRlcnNlY3QgKGVuY29kZXJz
W2ldLmNhcHMsIGNhcHMpKSB7CisgICAgICBHc3RQYWQgKnRtcHBhZDsKKyAgICAgIHByaXYtPmVu
Y29kZXJJZCA9IChFbmNvZGVySWQpIGk7CisgICAgICBwcml2LT5lbmNvZGVyID0gZ3N0X2VsZW1l
bnRfZmFjdG9yeV9tYWtlIChlbmNvZGVyc1tpXS5uYW1lLCBOVUxMKTsKKyAgICAgIGVuY29kZXJz
W3ByaXYtPmVuY29kZXJJZF0uc2V0dXBFbmNvZGVyIChHX09CSkVDVCAocHJpdi0+ZW5jb2Rlcikp
OworCisgICAgICBpZiAoZW5jb2RlcnNbaV0ucGFyc2VyX25hbWUpCisgICAgICAgIHByaXYtPnBh
cnNlciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoZW5jb2RlcnNbaV0ucGFyc2VyX25hbWUs
IE5VTEwpOworCisgICAgICBpZiAoZW5jb2RlcnNbaV0uZW5jb2RlZF9mb3JtYXQpIHsKKyAgICAg
ICAgcHJpdi0+Y2Fwc2ZpbHRlciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImNhcHNmaWx0
ZXIiLCBOVUxMKTsKKyAgICAgICAgZ19vYmplY3Rfc2V0IChwcml2LT5jYXBzZmlsdGVyLCAiY2Fw
cyIsIGVuY29kZXJzW2ldLmVuY29kZWRfZm9ybWF0LAorICAgICAgICAgICAgTlVMTCk7CisgICAg
ICB9CisKKyAgICAgIGdzdF9iaW5fYWRkIChHU1RfQklOIChzZWxmKSwgcHJpdi0+ZW5jb2Rlcik7
CisKKyAgICAgIHRtcHBhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChwcml2LT5lbmNv
ZGVyLCAic2luayIpOworICAgICAgZ3N0X2dob3N0X3BhZF9zZXRfdGFyZ2V0IChHU1RfR0hPU1Rf
UEFEIChHU1RfRUxFTUVOVCAoc2VsZiktPgorICAgICAgICAgICAgICBzaW5rcGFkcy0+ZGF0YSks
IHRtcHBhZCk7CisgICAgICBnc3Rfb2JqZWN0X3VucmVmICh0bXBwYWQpOworCisgICAgICB0bXBw
YWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAocHJpdi0+ZW5jb2RlciwgInNyYyIpOwor
ICAgICAgaWYgKHByaXYtPnBhcnNlcikgeworICAgICAgICBnc3RfYmluX2FkZCAoR1NUX0JJTiAo
c2VsZiksIHByaXYtPnBhcnNlcik7CisgICAgICAgIGdzdF9lbGVtZW50X2xpbmsgKHByaXYtPmVu
Y29kZXIsIHByaXYtPnBhcnNlcik7CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHRtcHBhZCk7
CisgICAgICAgIHRtcHBhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChwcml2LT5wYXJz
ZXIsICJzcmMiKTsKKyAgICAgIH0KKworICAgICAgaWYgKHByaXYtPmNhcHNmaWx0ZXIpIHsKKyAg
ICAgICAgR3N0UGFkICp0bXBwYWQyID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHByaXYt
PmNhcHNmaWx0ZXIsICJzaW5rIik7CisKKyAgICAgICAgZ3N0X2Jpbl9hZGQgKEdTVF9CSU4gKHNl
bGYpLCBwcml2LT5jYXBzZmlsdGVyKTsKKyAgICAgICAgZ3N0X3BhZF9saW5rICh0bXBwYWQsIHRt
cHBhZDIpOworICAgICAgICBnc3Rfb2JqZWN0X3VucmVmICh0bXBwYWQpOworICAgICAgICB0bXBw
YWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAocHJpdi0+Y2Fwc2ZpbHRlciwgInNyYyIp
OworICAgICAgICBnc3Rfb2JqZWN0X3VucmVmICh0bXBwYWQyKTsKKyAgICAgIH0KKworICAgICAg
Z19hc3NlcnQgKGdzdF9naG9zdF9wYWRfc2V0X3RhcmdldCAoR1NUX0dIT1NUX1BBRCAoR1NUX0VM
RU1FTlQKKyAgICAgICAgICAgICAgICAgIChzZWxmKS0+c3JjcGFkcy0+ZGF0YSksIHRtcHBhZCkp
OworICAgICAgZ3N0X29iamVjdF91bnJlZiAodG1wcGFkKTsKKworICAgICAgZ3N0X3dlYnJ0Y192
aWRlb19lbmNvZGVyX3NldF9iaXRyYXRlIChzZWxmLCBwcml2LT5iaXRyYXRlKTsKKyAgICAgIHJl
dHVybjsKKyAgICB9CisgIH0KKworICBHU1RfRVJST1IgKCJObyBlbmNvZGVyIGZvdW5kIGZvciBm
b3JtYXQgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3dl
YnJ0Y192aWRlb19lbmNvZGVyX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKKyAgICBn
dWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQor
eworICBHc3RXZWJydGNWaWRlb0VuY29kZXIgKnNlbGYgPSBHU1RfV0VCUlRDX1ZJREVPX0VOQ09E
RVIgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX0ZPUk1B
VDoKKyAgICAgIGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9zZXRfZm9ybWF0IChzZWxmLCBnc3Rf
dmFsdWVfZ2V0X2NhcHMgKHZhbHVlKSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQklU
UkFURToKKyAgICAgIGdzdF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9zZXRfYml0cmF0ZSAoc2VsZiwg
Z192YWx1ZV9nZXRfdWludCAodmFsdWUpKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwg
cHNwZWMpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCityZWdpc3Rlcl9rbm93bl9lbmNvZGVyIChF
bmNvZGVySWQgZW5jSWQsIGNvbnN0IGdjaGFyICogbmFtZSwKKyAgICBjb25zdCBnY2hhciAqIHBh
cnNlcl9uYW1lLCBjb25zdCBnY2hhciAqIGNhcHMsIGNvbnN0IGdjaGFyICogZW5jb2RlZF9mb3Jt
YXQsCisgICAgU2V0dXBFbmNvZGVyIHNldHVwRW5jb2RlciwgY29uc3QgZ2NoYXIgKiBiaXRyYXRl
X3Byb3BuYW1lLAorICAgIFNldEJpdHJhdGVGdW5jIHNldEJpdHJhdGUpCit7CisgIEdzdFBsdWdp
bkZlYXR1cmUgKmZlYXR1cmUgPQorICAgICAgZ3N0X3JlZ2lzdHJ5X2xvb2t1cF9mZWF0dXJlIChn
c3RfcmVnaXN0cnlfZ2V0ICgpLCBuYW1lKTsKKyAgaWYgKCFmZWF0dXJlKSB7CisgICAgR1NUX1dB
Uk5JTkcgKCJDb3VsZCBub3QgZmluZCAlcyIsIG5hbWUpOworICAgIGVuY29kZXJzW2VuY0lkXS5h
dmFsYWlibGUgPSBGQUxTRTsKKworICAgIHJldHVybjsKKyAgfQorICBnc3Rfb2JqZWN0X3VucmVm
IChmZWF0dXJlKTsKKworICBlbmNvZGVyc1tlbmNJZF0uYXZhbGFpYmxlID0gVFJVRTsKKyAgZW5j
b2RlcnNbZW5jSWRdLm5hbWUgPSBuYW1lOworICBlbmNvZGVyc1tlbmNJZF0ucGFyc2VyX25hbWUg
PSBwYXJzZXJfbmFtZTsKKyAgZW5jb2RlcnNbZW5jSWRdLmNhcHMgPSBnc3RfY2Fwc19mcm9tX3N0
cmluZyAoY2Fwcyk7CisgIGlmIChlbmNvZGVkX2Zvcm1hdCkKKyAgICBlbmNvZGVyc1tlbmNJZF0u
ZW5jb2RlZF9mb3JtYXQgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAoZW5jb2RlZF9mb3JtYXQpOwor
ICBlbHNlCisgICAgZW5jb2RlcnNbZW5jSWRdLmVuY29kZWRfZm9ybWF0ID0gTlVMTDsKKyAgZW5j
b2RlcnNbZW5jSWRdLnNldHVwRW5jb2RlciA9IHNldHVwRW5jb2RlcjsKKyAgZW5jb2RlcnNbZW5j
SWRdLmJpdHJhdGVfcHJvcG5hbWUgPSBiaXRyYXRlX3Byb3BuYW1lOworICBlbmNvZGVyc1tlbmNJ
ZF0uc2V0Qml0cmF0ZSA9IHNldEJpdHJhdGU7Cit9CisKK3N0YXRpYyB2b2lkCitzZXR1cF94MjY0
ZW5jIChHT2JqZWN0ICogZW5jb2RlcikKK3sKKyAgZ3N0X3V0aWxfc2V0X29iamVjdF9hcmcgKGVu
Y29kZXIsICJ0dW5lIiwgInplcm9sYXRlbmN5Iik7Cit9CisKK3N0YXRpYyB2b2lkCitzZXR1cF92
cDhlbmMgKEdPYmplY3QgKiBlbmNvZGVyKQoreworICBnc3RfcHJlc2V0X2xvYWRfcHJlc2V0IChH
U1RfUFJFU0VUIChlbmNvZGVyKSwgIlByb2ZpbGUgUmVhbHRpbWUiKTsKK30KKworc3RhdGljIHZv
aWQKK3NldHVwX29wZW5oMjY0ZW5jIChHT2JqZWN0ICopCit7Cit9CisKK3N0YXRpYyB2b2lkCitz
ZXRfYml0cmF0ZV9rYml0X3Blcl9zZWMgKEdPYmplY3QgKiBlbmNvZGVyLCBjb25zdCBnY2hhciAq
IHByb3BfbmFtZSwKKyAgICBnaW50IGJpdHJhdGUpCit7CisgIGdfb2JqZWN0X3NldCAoZW5jb2Rl
ciwgcHJvcF9uYW1lLCBiaXRyYXRlLCBOVUxMKTsKK30KKworc3RhdGljIHZvaWQKK3NldF9iaXRy
YXRlX2JpdF9wZXJfc2VjIChHT2JqZWN0ICogZW5jb2RlciwgY29uc3QgZ2NoYXIgKiBwcm9wX25h
bWUsCisgICAgZ2ludCBiaXRyYXRlKQoreworICBnX29iamVjdF9zZXQgKGVuY29kZXIsIHByb3Bf
bmFtZSwgYml0cmF0ZSAqIEtCSVRfVE9fQklULCBOVUxMKTsKK30KKworc3RhdGljIHZvaWQKK2dz
dF93ZWJydGNfdmlkZW9fZW5jb2Rlcl9jbGFzc19pbml0IChHc3RXZWJydGNWaWRlb0VuY29kZXJD
bGFzcyAqIGtsYXNzKQoreworICBHT2JqZWN0Q2xhc3MgKm9iamVjdF9jbGFzcyA9IEdfT0JKRUNU
X0NMQVNTIChrbGFzcyk7CisKKyAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF93ZWJydGNl
bmNfZGVidWcsICJ3ZWJydGNlbmNvZGVyIiwgMCwKKyAgICAgICJWaWRlbyBlbmNvZGVyIGZvciBX
ZWJSVEMiKTsKKworICBvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X3dlYnJ0Y192aWRlb19l
bmNvZGVyX2ZpbmFsaXplOworICBvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF93ZWJy
dGNfdmlkZW9fZW5jb2Rlcl9nZXRfcHJvcGVydHk7CisgIG9iamVjdF9jbGFzcy0+c2V0X3Byb3Bl
cnR5ID0gZ3N0X3dlYnJ0Y192aWRlb19lbmNvZGVyX3NldF9wcm9wZXJ0eTsKKworICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChvYmplY3RfY2xhc3MsIFBST1BfRk9STUFULAorICAg
ICAgZ19wYXJhbV9zcGVjX2JveGVkICgiZm9ybWF0IiwgIkZvcm1hdCBhcyBjYXBzIiwKKyAgICAg
ICAgICAiU2V0IHRoZSBjYXBzIG9mIHRoZSBmb3JtYXQgdG8gYmUgdXNlZC4iLAorICAgICAgICAg
IEdTVF9UWVBFX0NBUFMsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJ
VEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkgKG9iamVjdF9jbGFzcywgUFJPUF9FTkNPREVSLAorICAgICAgZ19wYXJhbV9z
cGVjX29iamVjdCAoImVuY29kZXIiLCAiVGhlIGFjdHVhbCBlbmNvZGVyIGVsZW1lbnQiLAorICAg
ICAgICAgICJUaGUgZW5jb2RlciBlbGVtZW50IiwgR1NUX1RZUEVfRUxFTUVOVCwKKyAgICAgICAg
ICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5H
UykpKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChvYmplY3RfY2xhc3Ms
IFBST1BfQklUUkFURSwKKyAgICAgIGdfcGFyYW1fc3BlY191aW50ICgiYml0cmF0ZSIsICJCaXRy
YXRlIiwKKyAgICAgICAgICAiVGhlIGJpdHJhdGUgaW4ga2JpdCBwZXIgc2Vjb25kIiwgMCwgR19N
QVhJTlQsIDIwNDgsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUg
fCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTIHwKKyAgICAgICAgICAgICAgR19QQVJBTV9DT05TVFJV
Q1QpKSk7CisKKyAgcmVnaXN0ZXJfa25vd25fZW5jb2RlciAoRU5DT0RFUl9YMjY0LCAieDI2NGVu
YyIsICJoMjY0cGFyc2UiLCAidmlkZW8veC1oMjY0IiwKKyAgICAgICJ2aWRlby94LWgyNjQsYWxp
Z25tZW50PWF1LHN0cmVhbS1mb3JtYXQ9Ynl0ZS1zdHJlYW0scHJvZmlsZT1iYXNlbGluZSIsCisg
ICAgICBzZXR1cF94MjY0ZW5jLCAiYml0cmF0ZSIsIHNldF9iaXRyYXRlX2tiaXRfcGVyX3NlYyk7
CisgIHJlZ2lzdGVyX2tub3duX2VuY29kZXIgKEVOQ09ERVJfT1BFTkgyNjQsICJvcGVuaDI2NGVu
YyIsICJoMjY0cGFyc2UiLAorICAgICAgInZpZGVvL3gtaDI2NCIsCisgICAgICAidmlkZW8veC1o
MjY0LGFsaWdubWVudD1hdSxzdHJlYW0tZm9ybWF0PWJ5dGUtc3RyZWFtLHByb2ZpbGU9YmFzZWxp
bmUiLAorICAgICAgc2V0dXBfb3BlbmgyNjRlbmMsICJiaXRyYXRlIiwgc2V0X2JpdHJhdGVfa2Jp
dF9wZXJfc2VjKTsKKyAgcmVnaXN0ZXJfa25vd25fZW5jb2RlciAoRU5DT0RFUl9WUDgsICJ2cDhl
bmMiLCBOVUxMLCAidmlkZW8veC12cDgiLCBOVUxMLAorICAgICAgc2V0dXBfdnA4ZW5jLCAidGFy
Z2V0LWJpdHJhdGUiLCBzZXRfYml0cmF0ZV9iaXRfcGVyX3NlYyk7Cit9CisKK3N0YXRpYyB2b2lk
Citnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXJfaW5pdCAoR3N0V2VicnRjVmlkZW9FbmNvZGVyICog
c2VsZikKK3sKKyAgR3N0V2VicnRjVmlkZW9FbmNvZGVyUHJpdmF0ZSAqcHJpdiA9IFBSSVYgKHNl
bGYpOworCisgIHByaXYtPmVuY29kZXJJZCA9IEVOQ09ERVJfTk9ORTsKKyAgZ3N0X2VsZW1lbnRf
YWRkX3BhZCAoR1NUX0VMRU1FTlQgKHNlbGYpLAorICAgICAgZ3N0X2dob3N0X3BhZF9uZXdfbm9f
dGFyZ2V0X2Zyb21fdGVtcGxhdGUgKCJzaW5rIiwKKyAgICAgICAgICBnc3Rfc3RhdGljX3BhZF90
ZW1wbGF0ZV9nZXQgKCZzaW5rVGVtcGxhdGUpKSk7CisKKyAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAo
R1NUX0VMRU1FTlQgKHNlbGYpLAorICAgICAgZ3N0X2dob3N0X3BhZF9uZXdfbm9fdGFyZ2V0X2Zy
b21fdGVtcGxhdGUgKCJzcmMiLAorICAgICAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dl
dCAoJnNyY1RlbXBsYXRlKSkpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dT
dHJlYW1lclZpZGVvRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwZWEyNWM0
ZWVlM2UxOGYxOTgxOTI4ZThkNGZlMTY0NGU1YWYxYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9F
bmNvZGVyLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBNZXRy
b2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisK
K0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9XRUJSVENfVklERU9fRU5DT0RFUiAo
Z3N0X3dlYnJ0Y192aWRlb19lbmNvZGVyX2dldF90eXBlKCkpCisKK0dfREVDTEFSRV9ERVJJVkFC
TEVfVFlQRSAoR3N0V2VicnRjVmlkZW9FbmNvZGVyLCBnc3Rfd2VicnRjX3ZpZGVvX2VuY29kZXIs
IEdTVCwgV0VCUlRDX1ZJREVPX0VOQ09ERVIsIEdzdEJpbikKKworc3RydWN0IF9Hc3RXZWJydGNW
aWRlb0VuY29kZXJDbGFzcworeworICBHc3RCaW5DbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitH
X0VORF9ERUNMUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2Rl
ckZhY3RvcnkuY3BwCmluZGV4IDgyMGU3YTUzNTkzMmFhZTU3NzNlZTY4YzA5NzJlMjMxZTk0YjYw
NzkuLjUxZTgzNTA2YjZjYzZkYWEwODNhYmM4YTZiZTdkZTVlYjUxNGYxMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJW
aWRlb0VuY29kZXJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKQEAgLTIz
LDYgKzIzLDcgQEAKICNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IFVTRShMSUJXRUJSVEMpICYmIFVTRShHU1RSRUFNRVIpCiAjaW5jbHVkZSAiR1N0cmVhbWVyVmlk
ZW9FbmNvZGVyRmFjdG9yeS5oIgogCisjaW5jbHVkZSAiR1N0cmVhbWVyVmlkZW9FbmNvZGVyLmgi
CiAjaW5jbHVkZSAiR1N0cmVhbWVyVmlkZW9GcmFtZUxpYldlYlJUQy5oIgogI2luY2x1ZGUgIndl
YnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2NvbW1vbi5oIgogI2luY2x1ZGUgIndlYnJ0Yy9j
b21tb25fdmlkZW8vaDI2NC9wcm9maWxlX2xldmVsX2lkLmgiCkBAIC02MywxMyArNjQsMTEgQEAg
cHVibGljOgogICAgIEdTdHJlYW1lclZpZGVvRW5jb2Rlcihjb25zdCB3ZWJydGM6OlNkcFZpZGVv
Rm9ybWF0JikKICAgICAgICAgOiBtX2ZpcnN0RnJhbWVQdHMoR1NUX0NMT0NLX1RJTUVfTk9ORSkK
ICAgICAgICAgLCBtX3Jlc3RyaWN0aW9uQ2FwcyhhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X2VtcHR5
X3NpbXBsZSgidmlkZW8veC1yYXciKSkpCi0gICAgICAgICwgbV9iaXRyYXRlU2V0dGVyKG51bGxw
dHIpCiAgICAgewogICAgIH0KICAgICBHU3RyZWFtZXJWaWRlb0VuY29kZXIoKQogICAgICAgICA6
IG1fZmlyc3RGcmFtZVB0cyhHU1RfQ0xPQ0tfVElNRV9OT05FKQogICAgICAgICAsIG1fcmVzdHJp
Y3Rpb25DYXBzKGFkb3B0R1JlZihnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlKCJ2aWRlby94LXJh
dyIpKSkKLSAgICAgICAgLCBtX2JpdHJhdGVTZXR0ZXIobnVsbHB0cikKICAgICB7CiAgICAgfQog
CkBAIC04Myw4ICs4Miw4IEBAIHB1YmxpYzoKIAogICAgICAgICBTZXRSZXN0cmljdGlvbkNhcHMo
V1RGTW92ZShjYXBzKSk7CiAKLSAgICAgICAgaWYgKG1fYml0cmF0ZVNldHRlciAmJiBtX2VuY29k
ZXIpCi0gICAgICAgICAgICBtX2JpdHJhdGVTZXR0ZXIobV9lbmNvZGVyLCBuZXdCaXRyYXRlKTsK
KyAgICAgICAgaWYgKG1fZW5jb2RlcikKKyAgICAgICAgICAgIGdfb2JqZWN0X3NldChtX2VuY29k
ZXIsICJiaXRyYXRlIiwgbmV3Qml0cmF0ZSwgbnVsbHB0cik7CiAKICAgICAgICAgcmV0dXJuIFdF
QlJUQ19WSURFT19DT0RFQ19PSzsKICAgICB9CkBAIC0xMTgsMjAgKzExNywyNiBAQCBwdWJsaWM6
CiAgICAgICAgIG1fcGlwZWxpbmUgPSBtYWtlRWxlbWVudCgicGlwZWxpbmUiKTsKIAogICAgICAg
ICBjb25uZWN0U2ltcGxlQnVzTWVzc2FnZUNhbGxiYWNrKG1fcGlwZWxpbmUuZ2V0KCkpOwotICAg
ICAgICBhdXRvIGVuY29kZWJpbiA9IGNyZWF0ZUVuY29kZXIoJm1fZW5jb2RlcikubGVha1JlZigp
OwotICAgICAgICBBU1NFUlQobV9lbmNvZGVyKTsKLSAgICAgICAgbV9iaXRyYXRlU2V0dGVyID0g
Z2V0Qml0cmF0ZVNldHRlcihnc3RfZWxlbWVudF9nZXRfZmFjdG9yeShtX2VuY29kZXIpKTsKKyAg
ICAgICAgYXV0byBlbmNvZGVyID0gY3JlYXRlRW5jb2RlcigpOworICAgICAgICBBU1NFUlQoZW5j
b2Rlcik7CisgICAgICAgIG1fZW5jb2RlciA9IGVuY29kZXIuZ2V0KCk7CiAKICAgICAgICAgbV9z
cmMgPSBtYWtlRWxlbWVudCgiYXBwc3JjIik7CiAgICAgICAgIGdfb2JqZWN0X3NldChtX3NyYywg
ImlzLWxpdmUiLCB0cnVlLCAiZm9ybWF0IiwgR1NUX0ZPUk1BVF9USU1FLCBudWxscHRyKTsKIAot
ICAgICAgICBhdXRvIGNhcHNmaWx0ZXIgPSBDcmVhdGVGaWx0ZXIoKTsKKyAgICAgICAgYXV0byB2
aWRlb2NvbnZlcnQgPSBtYWtlRWxlbWVudCgidmlkZW9jb252ZXJ0Iik7CisgICAgICAgIGF1dG8g
dmlkZW9yYXRlID0gbWFrZUVsZW1lbnQoInZpZGVvcmF0ZSIpOwogICAgICAgICBhdXRvIHNpbmsg
PSBtYWtlRWxlbWVudCgiYXBwc2luayIpOwogICAgICAgICBnc3RfYXBwX3Npbmtfc2V0X2VtaXRf
c2lnbmFscyhHU1RfQVBQX1NJTksoc2luayksIFRSVUUpOwogICAgICAgICBnX3NpZ25hbF9jb25u
ZWN0KHNpbmssICJuZXctc2FtcGxlIiwgR19DQUxMQkFDSyhuZXdTYW1wbGVDYWxsYmFja1RyYW1w
KSwgdGhpcyk7CiAKLSAgICAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fcGlwZWxpbmUu
Z2V0KCkpLCBtX3NyYywgZW5jb2RlYmluLCBjYXBzZmlsdGVyLCBzaW5rLCBudWxscHRyKTsKLSAg
ICAgICAgaWYgKCFnc3RfZWxlbWVudF9saW5rX21hbnkobV9zcmMsIGVuY29kZWJpbiwgY2Fwc2Zp
bHRlciwgc2luaywgbnVsbHB0cikpCisgICAgICAgIGF1dG8gbmFtZSA9IFN0cmluZzo6Zm9ybWF0
KCIlc19lbmNfcmF3Y2Fwc2ZpbHRlcl8lcCIsIE5hbWUoKSwgdGhpcyk7CisgICAgICAgIG1fY2Fw
c0ZpbHRlciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiY2Fwc2ZpbHRlciIsIG5hbWUudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgIGlmIChtX3Jlc3RyaWN0aW9uQ2FwcykKKyAgICAgICAgICAg
IGdfb2JqZWN0X3NldChtX2NhcHNGaWx0ZXIsICJjYXBzIiwgbV9yZXN0cmljdGlvbkNhcHMuZ2V0
KCksIG51bGxwdHIpOworCisgICAgICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX3BpcGVs
aW5lLmdldCgpKSwgbV9zcmMsIHZpZGVvcmF0ZSwgdmlkZW9jb252ZXJ0LCBtX2NhcHNGaWx0ZXIs
IGVuY29kZXIubGVha1JlZigpLCBzaW5rLCBudWxscHRyKTsKKyAgICAgICAgaWYgKCFnc3RfZWxl
bWVudF9saW5rX21hbnkobV9zcmMsIHZpZGVvcmF0ZSwgdmlkZW9jb252ZXJ0LCBtX2NhcHNGaWx0
ZXIsIG1fZW5jb2Rlciwgc2luaywgbnVsbHB0cikpCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIAogICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQo
KSwgR1NUX1NUQVRFX1BMQVlJTkcpOwpAQCAtMTQ0LDExICsxNDksNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHZpcnR1YWwgR3N0RWxlbWVudCogQ3JlYXRl
RmlsdGVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlRWxlbWVudCgiY2Fwc2ZpbHRlciIp
OwotICAgIH0KLQogICAgIGludDMyX3QgUmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKHdl
YnJ0Yzo6RW5jb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxiYWNrKSBmaW5hbAogICAgIHsKICAgICAg
ICAgbV9pbWFnZVJlYWR5Q2IgPSBjYWxsYmFjazsKQEAgLTE2MCwxMiArMTYwLDE2IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIG1fZW5jb2RlZEZyYW1lLl9idWZmZXIgPSBudWxscHRyOwogICAg
ICAgICBtX2VuY29kZWRJbWFnZUJ1ZmZlci5yZXNldCgpOwotICAgICAgICBHUmVmUHRyPEdzdEJ1
cz4gYnVzID0gYWRvcHRHUmVmKGdzdF9waXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3Bp
cGVsaW5lLmdldCgpKSkpOwotICAgICAgICBnc3RfYnVzX3NldF9zeW5jX2hhbmRsZXIoYnVzLmdl
dCgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKLQotICAgICAgICBnc3RfZWxlbWVudF9z
ZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwotICAgICAgICBtX3Ny
YyA9IG51bGxwdHI7Ci0gICAgICAgIG1fcGlwZWxpbmUgPSBudWxscHRyOworICAgICAgICBpZiAo
bV9waXBlbGluZSkgeworICAgICAgICAgICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IGFkb3B0R1Jl
Zihnc3RfcGlwZWxpbmVfZ2V0X2J1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZS5nZXQoKSkpKTsK
KyAgICAgICAgICAgIGdzdF9idXNfc2V0X3N5bmNfaGFuZGxlcihidXMuZ2V0KCksIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIpOworCisgICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUo
bV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworICAgICAgICAgICAgbV9zcmMgPSBu
dWxscHRyOworICAgICAgICAgICAgbV9lbmNvZGVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1f
Y2Fwc0ZpbHRlciA9IG51bGxwdHI7CisgICAgICAgICAgICBtX3BpcGVsaW5lID0gbnVsbHB0cjsK
KyAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiAgICAg
fQpAQCAtMjU1LDgyICsyNTksMjggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gR1NUX0ZMT1df
T0s7CiAgICAgfQogCi0jZGVmaW5lIFJFVFVSTl9CSVRSQVRFX1NFVFRFUl9JRl9NQVRDSEVTKHJl
Z2V4LCBwcm9wZXJ0eU5hbWUsIGJpdHJhdGVNdWx0aXBsaWVyLCB1bml0KSAgICAgICAgICAgICAg
ICAgXAotICAgIGlmIChnX3JlZ2V4X21hdGNoKHJlZ2V4LmdldCgpLCBmYWN0b3J5TmFtZSwgc3Rh
dGljX2Nhc3Q8R1JlZ2V4TWF0Y2hGbGFncz4oMCksIG51bGxwdHIpKSB7ICAgICAgICAgIFwKLSAg
ICAgICAgR1NUX0lORk9fT0JKRUNUKGVuY29kZXJGYWN0b3J5LCAiRGV0ZWN0ZWQgYXMgaGF2aW5n
IGEgIiAjcHJvcGVydHlOYW1lICIgcHJvcGVydHkgaW4gIiB1bml0KTsgXAotICAgICAgICByZXR1
cm4gW10oR3N0RWxlbWVudCogZW5jb2RlciwgdWludDMyX3QgYml0cmF0ZSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgZ19vYmplY3Rfc2V0
KGVuY29kZXIsIHByb3BlcnR5TmFtZSwgYml0cmF0ZSAqIGJpdHJhdGVNdWx0aXBsaWVyLCBudWxs
cHRyKTsgICAgICAgICAgICBcCi0gICAgICAgICAgICB9OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIH0KLQotICAgIC8vIEdTdHJlYW1lciBkb2Vzbid0IGhhdmUgYSB1bmlm
aWVkIGVuY29kZXIgQVBJIGFuZCB0aGUgZW5jb2RlcnMgaGF2ZSB0aGVpcgotICAgIC8vIG93biBz
ZW1hbnRpY3MgYW5kIG5hbWluZyB0byBzZXQgdGhlIGJpdHJhdGUsIHRoaXMgaXMgYSBiZXN0IGVm
Zm9ydCB0byBoYW5kbGUKLSAgICAvLyBzZXR0aW5nIGJpdHJhdGUgZm9yIHRoZSB3ZWxsIGtub3du
IGVuY29kZXJzLgotICAgIC8vIFNlZSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Nzk2NzE2Ci0gICAgQml0cmF0ZVNldHRlciBnZXRCaXRyYXRlU2V0dGVyKEdzdEVs
ZW1lbnRGYWN0b3J5KiBlbmNvZGVyRmFjdG9yeSkKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGNy
ZWF0ZUVuY29kZXIodm9pZCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBy
ZWdleFJlZ2lzdGVyZWRGbGFnOwotCi0gICAgICAgIHN0ZDo6Y2FsbF9vbmNlKHJlZ2V4UmVnaXN0
ZXJlZEZsYWcsIFtdIHsKLSAgICAgICAgICAgIHRhcmdldEJpdHJhdGVCaXRQZXJTZWMgPSBnX3Jl
Z2V4X25ldygiXnZwLmVuYyR8Xm9teC4qZW5jJCIsIHN0YXRpY19jYXN0PEdSZWdleENvbXBpbGVG
bGFncz4oMCksIHN0YXRpY19jYXN0PEdSZWdleE1hdGNoRmxhZ3M+KDApLCBudWxscHRyKTsKLSAg
ICAgICAgICAgIGJpdHJhdGVCaXRQZXJTZWMgPSBnX3JlZ2V4X25ldygiXm9wZW5oMjY0ZW5jJCIs
IHN0YXRpY19jYXN0PEdSZWdleENvbXBpbGVGbGFncz4oMCksIHN0YXRpY19jYXN0PEdSZWdleE1h
dGNoRmxhZ3M+KDApLCBudWxscHRyKTsKLSAgICAgICAgICAgIGJpdHJhdGVLQml0UGVyU2VjID0g
Z19yZWdleF9uZXcoIl54MjY0ZW5jJHx2YWFwaS4qZW5jJCIsIHN0YXRpY19jYXN0PEdSZWdleENv
bXBpbGVGbGFncz4oMCksIHN0YXRpY19jYXN0PEdSZWdleE1hdGNoRmxhZ3M+KDApLCBudWxscHRy
KTsKLSAgICAgICAgICAgIEFTU0VSVCh0YXJnZXRCaXRyYXRlQml0UGVyU2VjLmdldCgpICYmIGJp
dHJhdGVCaXRQZXJTZWMuZ2V0KCkgJiYgYml0cmF0ZUtCaXRQZXJTZWMuZ2V0KCkpOwotICAgICAg
ICB9KTsKLQotICAgICAgICBhdXRvIGZhY3RvcnlOYW1lID0gR1NUX09CSkVDVF9OQU1FKGVuY29k
ZXJGYWN0b3J5KTsKLSAgICAgICAgUkVUVVJOX0JJVFJBVEVfU0VUVEVSX0lGX01BVENIRVModGFy
Z2V0Qml0cmF0ZUJpdFBlclNlYywgInRhcmdldC1iaXRyYXRlIiwgS0JJVF9UT19CSVQsICJCaXRz
IFBlciBTZWNvbmQiKQotICAgICAgICBSRVRVUk5fQklUUkFURV9TRVRURVJfSUZfTUFUQ0hFUyhi
aXRyYXRlQml0UGVyU2VjLCAiYml0cmF0ZSIsIEtCSVRfVE9fQklULCAiQml0cyBQZXIgU2Vjb25k
IikKLSAgICAgICAgUkVUVVJOX0JJVFJBVEVfU0VUVEVSX0lGX01BVENIRVMoYml0cmF0ZUtCaXRQ
ZXJTZWMsICJiaXRyYXRlIiwgMSwgIktCaXRzIFBlciBTZWNvbmQiKQorICAgICAgICBHUmVmUHRy
PEdzdEVsZW1lbnQ+IGVuY29kZXIgPSBudWxscHRyOworICAgICAgICBHc3RFbGVtZW50KiB3ZWJy
dGNlbmNvZGVyID0gR1NUX0VMRU1FTlQoZ19vYmplY3RfcmVmX3NpbmsoZ3N0X2VsZW1lbnRfZmFj
dG9yeV9tYWtlKCJ3ZWJydGN2aWRlb2VuY29kZXIiLCBOVUxMKSkpOwogCi0gICAgICAgIEdTVF9X
QVJOSU5HX09CSkVDVChlbmNvZGVyRmFjdG9yeSwgInVua29ud24gZW5jb2RlciwgY2FuJ3Qgc2V0
IGJpdHJhdGVzIG9uIGl0Iik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSN1bmRl
ZiBSRVRVUk5fQklUUkFURV9TRVRURVJfSUZfTUFUQ0hFUworICAgICAgICBnX29iamVjdF9zZXQo
d2VicnRjZW5jb2RlciwgImZvcm1hdCIsIGFkb3B0R1JlZihnc3RfY2Fwc19mcm9tX3N0cmluZyhD
YXBzKCkpKS5nZXQoKSwgTlVMTCk7CisgICAgICAgIGdfb2JqZWN0X2dldCh3ZWJydGNlbmNvZGVy
LCAiZW5jb2RlciIsICZlbmNvZGVyLm91dFB0cigpLCBOVUxMKTsKIAotICAgIEdSZWZQdHI8R3N0
RWxlbWVudD4gY3JlYXRlRW5jb2RlcihHc3RFbGVtZW50KiogZW5jb2RlcikKLSAgICB7Ci0gICAg
ICAgIEdzdEVsZW1lbnQqIGVuYyA9IG51bGxwdHI7CisgICAgICAgIGlmICghZW5jb2Rlcikgewor
ICAgICAgICAgICAgR1NUX0lORk8oIk5vIGVuY29kZXIgZm91bmQgZm9yICVzIiwgQ2FwcygpKTsK
IAotICAgICAgICBtX3Byb2ZpbGUgPSBHU1RfRU5DT0RJTkdfUFJPRklMRShnc3RfZW5jb2Rpbmdf
dmlkZW9fcHJvZmlsZV9uZXcoCi0gICAgICAgICAgICBhZG9wdEdSZWYoZ3N0X2NhcHNfZnJvbV9z
dHJpbmcoQ2FwcygpKSkuZ2V0KCksCi0gICAgICAgICAgICBQcm9maWxlTmFtZSgpLAotICAgICAg
ICAgICAgZ3N0X2NhcHNfcmVmKG1fcmVzdHJpY3Rpb25DYXBzLmdldCgpKSwKLSAgICAgICAgICAg
IDEpKTsKLSAgICAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBlbmNvZGViaW4gPSBtYWtlRWxlbWVu
dCgiZW5jb2RlYmluIik7Ci0KLSAgICAgICAgaWYgKCFlbmNvZGViaW4uZ2V0KCkpIHsKLSAgICAg
ICAgICAgIEdTVF9FUlJPUigiTm8gZW5jb2RlYmluIHByZXNlbnQuLi4gY2FuJ3QgdXNlIEdTdHJl
YW1lciBiYXNlZCBlbmNvZGVycyIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIH0KLSAgICAgICAgZ19vYmplY3Rfc2V0KGVuY29kZWJpbi5nZXQoKSwgInByb2ZpbGUiLCBt
X3Byb2ZpbGUuZ2V0KCksIG51bGxwdHIpOwotCi0gICAgICAgIGZvciAoR0xpc3QqIHRtcCA9IEdT
VF9CSU5fQ0hJTERSRU4oZW5jb2RlYmluLmdldCgpKTsgdG1wOyB0bXAgPSB0bXAtPm5leHQpIHsK
LSAgICAgICAgICAgIEdzdEVsZW1lbnQqIGVsZW0gPSBHU1RfRUxFTUVOVCh0bXAtPmRhdGEpOwot
ICAgICAgICAgICAgR3N0RWxlbWVudEZhY3RvcnkqIGZhY3RvcnkgPSBnc3RfZWxlbWVudF9nZXRf
ZmFjdG9yeSgoZWxlbSkpOwotCi0gICAgICAgICAgICBpZiAoIWZhY3RvcnkgfHwgIWdzdF9lbGVt
ZW50X2ZhY3RvcnlfbGlzdF9pc190eXBlKGZhY3RvcnksIEdTVF9FTEVNRU5UX0ZBQ1RPUllfVFlQ
RV9WSURFT19FTkNPREVSKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAg
ICAgZW5jID0gZWxlbTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKCFlbmMpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBpZiAoZW5j
b2RlcikKLSAgICAgICAgICAgICplbmNvZGVyID0gZW5jOwogCi0gICAgICAgIHJldHVybiBlbmNv
ZGViaW47CisgICAgICAgIHJldHVybiB3ZWJydGNlbmNvZGVyOwogICAgIH0KIAogICAgIHZvaWQg
QWRkQ29kZWNJZlN1cHBvcnRlZChzdGQ6OnZlY3Rvcjx3ZWJydGM6OlNkcFZpZGVvRm9ybWF0Piog
c3VwcG9ydGVkRm9ybWF0cykKICAgICB7CiAgICAgICAgIEdzdEVsZW1lbnQqIGVuY29kZXI7CiAK
LSAgICAgICAgaWYgKGNyZWF0ZUVuY29kZXIoJmVuY29kZXIpLmdldCgpICE9IG51bGxwdHIpIHsK
KyAgICAgICAgaWYgKGNyZWF0ZUVuY29kZXIoKS5nZXQoKSAhPSBudWxscHRyKSB7CiAgICAgICAg
ICAgICB3ZWJydGM6OlNkcFZpZGVvRm9ybWF0IGZvcm1hdCA9IENvbmZpZ3VyZVN1cHBvcnRlZENv
ZGVjKGVuY29kZXIpOwogCiAgICAgICAgICAgICBzdXBwb3J0ZWRGb3JtYXRzLT5wdXNoX2JhY2so
Zm9ybWF0KTsKQEAgLTM4MCwxNyArMzMwLDIwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IGNoYXIq
IEltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0CiAgICAgeworICAgICAgICBHUmVmUHRyPEdzdEVs
ZW1lbnQ+IGVuY29kZXJJbXBsZW1lbnRhdGlvbjsKICAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwobV9lbmNvZGVyLCBudWxscHRyKTsKIAotICAgICAgICByZXR1cm4gR1NUX09CSkVDVF9OQU1F
KGdzdF9lbGVtZW50X2dldF9mYWN0b3J5KG1fZW5jb2RlcikpOworICAgICAgICBnX29iamVjdF9n
ZXQobV9lbmNvZGVyLCAiZW5jb2RlciIsICZlbmNvZGVySW1wbGVtZW50YXRpb24ub3V0UHRyKCks
IG51bGxwdHIpOworCisgICAgICAgIHJldHVybiBHU1RfT0JKRUNUX05BTUUoZ3N0X2VsZW1lbnRf
Z2V0X2ZhY3RvcnkoZW5jb2RlckltcGxlbWVudGF0aW9uLmdldCgpKSk7CiAgICAgfQogCiAgICAg
dmlydHVhbCBjb25zdCBnY2hhciogTmFtZSgpID0gMDsKIAogICAgIHZvaWQgU2V0UmVzdHJpY3Rp
b25DYXBzKEdSZWZQdHI8R3N0Q2Fwcz4gY2FwcykKICAgICB7Ci0gICAgICAgIGlmIChjYXBzICYm
IG1fcHJvZmlsZS5nZXQoKSAmJiBnc3RfY2Fwc19pc19lcXVhbChtX3Jlc3RyaWN0aW9uQ2Fwcy5n
ZXQoKSwgY2Fwcy5nZXQoKSkpCi0gICAgICAgICAgICBnX29iamVjdF9zZXQobV9wcm9maWxlLmdl
dCgpLCAicmVzdHJpY3Rpb24tY2FwcyIsIGNhcHMuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBp
ZiAobV9yZXN0cmljdGlvbkNhcHMpCisgICAgICAgICAgICBnX29iamVjdF9zZXQobV9jYXBzRmls
dGVyLCAiY2FwcyIsIG1fcmVzdHJpY3Rpb25DYXBzLmdldCgpLCBudWxscHRyKTsKIAogICAgICAg
ICBtX3Jlc3RyaWN0aW9uQ2FwcyA9IGNhcHM7CiAgICAgfQpAQCAtNDA0LDEyICszNTcsMTEgQEAg
cHJpdmF0ZToKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fcGlwZWxpbmU7CiAgICAgR3N0RWxl
bWVudCogbV9zcmM7CiAgICAgR3N0RWxlbWVudCogbV9lbmNvZGVyOworICAgIEdzdEVsZW1lbnQq
IG1fY2Fwc0ZpbHRlcjsKIAogICAgIHdlYnJ0Yzo6RW5jb2RlZEltYWdlQ2FsbGJhY2sqIG1faW1h
Z2VSZWFkeUNiOwogICAgIEdzdENsb2NrVGltZSBtX2ZpcnN0RnJhbWVQdHM7CiAgICAgR1JlZlB0
cjxHc3RDYXBzPiBtX3Jlc3RyaWN0aW9uQ2FwczsKLSAgICBHUmVmUHRyPEdzdEVuY29kaW5nUHJv
ZmlsZT4gbV9wcm9maWxlOwotICAgIEJpdHJhdGVTZXR0ZXIgbV9iaXRyYXRlU2V0dGVyOwogICAg
IHdlYnJ0Yzo6RW5jb2RlZEltYWdlIG1fZW5jb2RlZEZyYW1lOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjx1aW50OF90W10+IG1fZW5jb2RlZEltYWdlQnVmZmVyOwogICAgIHNpemVfdCBtX2VuY29kZWRJ
bWFnZUJ1ZmZlclNpemU7CkBAIC00ODMsMTggKzQzNSw2IEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAotICAgIEdzdEVsZW1lbnQqIENyZWF0ZUZpbHRlcigpIGZpbmFsCi0gICAgewotICAg
ICAgICBHc3RFbGVtZW50KiBmaWx0ZXIgPSBtYWtlRWxlbWVudCgiY2Fwc2ZpbHRlciIpOwotICAg
ICAgICBhdXRvIGNhcHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X3NpbXBsZShDYXBzKCksCi0g
ICAgICAgICAgICAiYWxpZ25tZW50IiwgR19UWVBFX1NUUklORywgImF1IiwKLSAgICAgICAgICAg
ICJzdHJlYW0tZm9ybWF0IiwgR19UWVBFX1NUUklORywgImJ5dGUtc3RyZWFtIiwKLSAgICAgICAg
ICAgIG51bGxwdHIpKTsKLSAgICAgICAgZ19vYmplY3Rfc2V0KGZpbHRlciwgImNhcHMiLCBjYXBz
LmdldCgpLCBudWxscHRyKTsKLQotICAgICAgICByZXR1cm4gZmlsdGVyOwotICAgIH0KLQogICAg
IHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQgQ29uZmlndXJlU3VwcG9ydGVkQ29kZWMoR3N0RWxlbWVu
dCopIGZpbmFsCiAgICAgewogICAgICAgICAvLyBUT0RPLSBDcmVhdGUgZnJvbSBlbmNvZGVyIHNy
YyBwYWQgY2FwcyB0ZW1wbGF0ZQpAQCAtNTU4LDYgKzQ5OCw3IEBAIEdTdHJlYW1lclZpZGVvRW5j
b2RlckZhY3Rvcnk6OkdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkoKQogCiAgICAgc3RkOjpj
YWxsX29uY2UoZGVidWdSZWdpc3RlcmVkRmxhZywgW10gewogICAgICAgICBHU1RfREVCVUdfQ0FU
RUdPUllfSU5JVCh3ZWJraXRfd2VicnRjZW5jX2RlYnVnLCAid2Via2l0bGlid2VicnRjdmlkZW9l
bmNvZGVyIiwgMCwgIldlYktpdCBXZWJSVEMgdmlkZW8gZW5jb2RlciIpOworICAgICAgICBnc3Rf
ZWxlbWVudF9yZWdpc3RlcihudWxscHRyLCAid2VicnRjdmlkZW9lbmNvZGVyIiwgR1NUX1JBTktf
UFJJTUFSWSwgR1NUX1RZUEVfV0VCUlRDX1ZJREVPX0VOQ09ERVIpOwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODRjMWU5
ODcyNzA4ZWVmODlmNTM0YjUwZjIwYzlhZGMzZWI4MTlhYy4uOWE2OTUzOGE0MDU3YjkxZTEwNmI0
NjFjMDY1ZmRiOWM2YzQ3YjE0MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTEwLTEyICBUaGliYXVsdCBTYXVu
aWVyICA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXVtXZWJSVENd
IEFkZCB3ZWJydGNlbmNvZGVyIGJpbiB0byBjbGVhbnVwIGFuZCByZWZhY3RvciB0aGUgd2F5IHdl
IHNldCBlbmNvZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwNjc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlwcGUgTm9ybWFuZC4KKwor
ICAgICAgICB3ZWJydGNlbmNvZGVyIGlzIGEgc2ltcGxlIEdzdEJpbiB3aXRoIGEgc2V0IG9mIHdl
bGwga25vd24gR1N0cmVhbWVyIGVuY29kZXJzIHdoaWNoCisgICAgICAgIGl0IGNhbiB1c2UgdG8g
aW1wbGVtZW50IGVuY29kaW5nIGZvciBkaWZmZXJlbnQgZm9ybWF0cyBleHBvc2luZyBhIHRyaW1t
ZWQgZG93biB1bmlmaWVkIEFQSS4KKworICAgICAgICBJdCBhbHNvIGFkZHMgcHJvcGVyIGhhbmRs
aW5nIG9mIEgyNjQgcHJvZmlsZXMuCisKKyAgICAgICAgVGhlIGFkZGVkIGZpbGVzIGZvbGxvdyBH
U3RyZWFtZXIgY29kaW5nIHN0eWxlIGFzIHdlIGFpbSBhdCB1cHN0cmVhbWluZyB0aGUgZWxlbWVu
dAorICAgICAgICBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFJldmlld2VkIGJ5IFBoaWxpcHBl
IE5vcm1hbmQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6
CisKIDIwMTgtMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0NvY29hXSBBdHRhY2htZW50IGRyb3BwZWQgZnJvbSBvbmUgd2ViIHZpZXcgdG8g
YW5vdGhlciBpcyBtaXNzaW5nIGl0cyBmaWxlIHdyYXBwZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlci5weQppbmRleCBhNTkwOGU2MDE2YTIxY2E3NmI2YjJhZTNlNTQxOWVhOWUx
ZmZkN2NhLi4xNzQyNDkzNGUxODdmZDdkYzMxMThiZjJjNDFkNmRmNmNmMmY5NjBhIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC0yMzcsNiArMjM3LDE5IEBAIF9Q
QVRIX1JVTEVTX1NQRUNJRklFUiA9IFsKICAgICAgICItd2hpdGVzcGFjZS9kZWNsYXJhdGlvbiIs
CiAgICAgICAiLXdoaXRlc3BhY2UvaW5kZW50Il0pLAogCisgICAgKFsgICMgRmlsZXMgZm9sbG93
aW5nIEdTdHJlYW1lciBjb2Rpbmcgc3R5bGUgKGZvciBhIHNpbXBsZXIgdXBzdHJlYW1pbmcgcHJv
Y2VzcyBmb3IgZXhhbXBsZSkKKyAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUn
LCAncGxhdGZvcm0nLCAnbWVkaWFzdHJlYW0nLCAnbGlid2VicnRjJywgJ0dTdHJlYW1lclZpZGVv
RW5jb2Rlci5jcHAnKSwKKyAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAn
cGxhdGZvcm0nLCAnbWVkaWFzdHJlYW0nLCAnbGlid2VicnRjJywgJ0dTdHJlYW1lclZpZGVvRW5j
b2Rlci5oJyksCisgICAgIF0sCisgICAgIFsiLXdoaXRlc3BhY2UvaW5kZW50IiwKKyAgICAgICIt
d2hpdGVzcGFjZS9kZWNsYXJhdGlvbiIsCisgICAgICAiLXdoaXRlc3BhY2UvcGFyZW5zIiwKKyAg
ICAgICItcmVhZGFiaWxpdHkvbnVsbCIsCisgICAgICAiLXdoaXRlc3BhY2UvYnJhY2VzIiwKKyAg
ICAgICItcmVhZGFiaWxpdHkvbmFtaW5nL3VuZGVyc2NvcmVzIiwKKyAgICAgICItcmVhZGFiaWxp
dHkvZW51bV9jYXNpbmciLAorICAgICBdKSwKKwogICAgIChbCiAgICAgICAjIFRoZXJlIGlzIG5v
IHdheSB0byBhdm9pZCB0aGUgc3ltYm9scyBfX2ppdF9kZWJ1Z19yZWdpc3Rlcl9jb2RlCiAgICAg
ICAjIGFuZCBfX2ppdF9kZWJ1Z19kZXNjcmlwdG9yIHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBnZGIu
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>