<?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>194899</bug_id>
          
          <creation_ts>2019-02-21 07:34:51 -0800</creation_ts>
          <short_desc>[WPE] Add support for holepunch using an external video player</short_desc>
          <delta_ts>2019-02-25 01:20:09 -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>WPE WebKit</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Miguel Gomez">magomez</reporter>
          <assigned_to name="Miguel Gomez">magomez</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1508506</commentid>
    <comment_count>0</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2019-02-21 07:34:51 -0800</bug_when>
    <thetext>Add a holepunch feature that allows to perform video playback through an external platform-dependent player. Instead of drawing the frames, WebKit draws a transparent rectangle on the position where the video should be. The rendering of the frames is performed by a platform dependent video player that puts the video on a layer below the browser, so it&apos;s visible through the transparent rectangle.

As we cannot provide WebKit implementations that bind to every existent platform-dependent player, what we do is to create a dummy player that just draws the transparent rectangle and doesn&apos;t do anything else. This new player only accepts the mymeType video/holepunch. This allows the normal GStreamer player to be used together with the holepunch one. When the type video/holepunch is set to a video source, the dummy player is selected and it draws the transparent rectangle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508519</commentid>
    <comment_count>1</comment_count>
      <attachid>362608</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2019-02-21 08:18:03 -0800</bug_when>
    <thetext>Created attachment 362608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508520</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-21 08:21:18 -0800</bug_when>
    <thetext>Attachment 362608 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/holepunch/MediaPlayerPrivateHolePunch.cpp:153:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508966</commentid>
    <comment_count>3</comment_count>
      <attachid>362608</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2019-02-22 03:10:30 -0800</bug_when>
    <thetext>Comment on attachment 362608
Patch

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

Anyway, considering that you added a custom mime type for this, I don&apos;t think we need to mess up with controls, at least for now.

&gt; Source/WebCore/ChangeLog:11
&gt; +        This can be used to allow a player placed on a lower plane than the broser to become visible.

broser -&gt; browser

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:246
&gt; +    virtual bool mediaPlayerControlsEnabled() const { return false; }

As save value I would return true?

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:585
&gt; +    bool controlsEnabled() const { return client().mediaPlayerControlsEnabled(); }
&gt; +    void setControlsEnabled(bool enabled) { client().mediaPlayerSetControlsEnabled(enabled); }

areControlsEnabled and setAreControlsEnabled all the way up and down the onion, please.

&gt; Source/WebCore/platform/graphics/holepunch/MediaPlayerPrivateHolePunch.cpp:30
&gt; +using namespace std;

Let&apos;s remove this and qualify all names just in case we could class with any WTF member.

&gt; Source/WebCore/platform/graphics/holepunch/MediaPlayerPrivateHolePunch.cpp:69
&gt; +    return const_cast&lt;MediaPlayerPrivateGStreamerBase*&gt;(this);

I think it is wrong. I don&apos;t know why you do a const_cast and why you try to cast a class &quot;this&quot; does not derive from... Does it even build?

&gt; Source/WebCore/platform/graphics/holepunch/MediaPlayerPrivateHolePunch.h:54
&gt; +    void load(const String&amp;) override { };

You can probably make all override final in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508989</commentid>
    <comment_count>4</comment_count>
      <attachid>362721</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2019-02-22 07:27:55 -0800</bug_when>
    <thetext>Created attachment 362721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509569</commentid>
    <comment_count>5</comment_count>
      <attachid>362721</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-25 01:20:08 -0800</bug_when>
    <thetext>Comment on attachment 362721
Patch

Clearing flags on attachment: 362721

Committed r242033: &lt;https://trac.webkit.org/changeset/242033&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509570</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-25 01:20:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362608</attachid>
            <date>2019-02-21 08:18:03 -0800</date>
            <delta_ts>2019-02-22 07:27:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194899-20190221171801.patch</filename>
            <type>text/plain</type>
            <size>27223</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU2NDhjNTk1Y2VjZDMy
NmQ1OGZkNDM2MjljYTIwZjVlMjljN2U1Yi4uNGYzNGM3NzA5M2YxZWJiY2ZiYmQxZWU1NWI5YzFi
OWRjMzE3MTRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE5LTAyLTIxICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQRV0gQWRkIHN1cHBv
cnQgZm9yIGhvbGVwdW5jaCB1c2luZyBhbiBleHRlcm5hbCB2aWRlbyBwbGF5ZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDg5OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0aGUgaG9s
ZXB1bmNoIGZlYXR1cmUgdG8gYWxsb3cgcGxheWJhY2sgdXNpbmcgYW4gZXh0ZXJuYWwgcGxheWVy
LiBUaGlzIGNyZWF0ZXMKKyAgICAgICAgYSBuZXcgZHVtbXkgTWVkaWFQbGF5ZXJQcml2YXRlSG9s
ZVB1bmNoIHRoYXQgYWNjZXB0cyBvbmx5IHRoZSB0eXBlICJ2aWRlby9ob2xlcHVuY2giLCBhbmQK
KyAgICAgICAgd2hvc2UgZ29hbCBpcyB0byBqdXN0IGRyYXcgYSB0cmFuc3BhcmVudCByZWN0YW5n
bGUgaW4gdGhlIHBvc2l0aW9uIHdoZXJlIHRoZSB2aWRlbyBzaG91bGQgYmUuCisgICAgICAgIFRo
aXMgY2FuIGJlIHVzZWQgdG8gYWxsb3cgYSBwbGF5ZXIgcGxhY2VkIG9uIGEgbG93ZXIgcGxhbmUg
dGhhbiB0aGUgYnJvc2VyIHRvIGJlY29tZSB2aXNpYmxlLgorCisgICAgICAgIFdoZW4gdGhpcyBN
ZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2ggaXMgdXNlZCwgaXQgZG9lc24ndCBtYWtlIHNlbnNl
IHRvIHNob3cgdGhlIG1lZGlhCisgICAgICAgIGNvbnRyb2xzLCBzbyB0aGV5IGFyZSBkaXNhYmxl
ZCBkdXJpbmcgdGhlIGxpZmV0aW1lIG9mIHRoZSBwbGF5ZXIgcHJpdmF0ZS4KKworICAgICAgICBB
ZGRlZCBNYW51YWxUZXN0IHdwZS92aWRlby1wbGF5ZXItaG9sZXB1bmNoLWV4dGVybmFsLmh0bWwg
dG8gdGVzdCB0aGUgZmVhdHVyZS4KKworICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vSG9sZVB1bmNoLmNtYWtlOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpidWlsZE1lZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6Y29udHJvbHNDb25maWd1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xp
ZW50OjptZWRpYVBsYXllckNvbnRyb2xzRW5hYmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJTZXRDb250cm9sc0VuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRyb2xzRW5hYmxlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0Q29udHJvbHNFbmFibGVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y29udHJvbHNDb25maWd1cmF0aW9uQ2hh
bmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2gpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjp+TWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVIb2xlUHVuY2g6Om5hdHVyYWxTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cHVzaE5leHRIb2xlUHVuY2hCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpzd2FwQnVmZmVy
c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aDo6cHJveHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bWltZVR5cGVDYWNoZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OmdldFN1cHBvcnRlZFR5
cGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6c3Vw
cG9ydHNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVIb2xlUHVuY2g6Om5vdGlmeVJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpjb250cm9sc0NvbmZpZ3VyYXRpb25DaGFuZ2VkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgor
CiAyMDE5LTAyLTE5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIyMzgwOTApOiBUb2dnbGluZyB2aXNpYmlsaXR5IG9uIHRoZSA8
aHRtbD4gZWxlbWVudCBjYW4gcmVzdWx0IGluIGEgYmxhbmsgd2ViIHZpZXcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1XUEUuY21ha2UKaW5kZXggNTRiMTJlOWZhMGY5Njg5YzVjMzM4NmU0OWFmYzU1N2ZlNWMyMmVk
Yi4uMTQzZDEzNDhiY2Q1NTE3YWRkOTA2YWY3NDFmNGNkZTg0ZTA2OGM3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1XUEUuY21ha2UKQEAgLTUsNiArNSwxMCBAQCBpbmNsdWRlKHBsYXRmb3JtL0dTdHJlYW1l
ci5jbWFrZSkKIGluY2x1ZGUocGxhdGZvcm0vSW1hZ2VEZWNvZGVycy5jbWFrZSkKIGluY2x1ZGUo
cGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZSkKIAoraWYgKFVTRV9FWFRFUk5BTF9IT0xFUFVO
Q0gpCisgICAgaW5jbHVkZShwbGF0Zm9ybS9Ib2xlUHVuY2guY21ha2UpCitlbmRpZiAoKQorCiBs
aXN0KEFQUEVORCBXZWJDb3JlX1VOSUZJRURfU09VUkNFX0xJU1RfRklMRVMKICAgICAiU291cmNl
c1dQRS50eHQiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4
IDg4ZWFlMTg4YTBlYTAzMjUwOGE1NzAwNjYzNjAxZDAzOTdhOTYwYzkuLjBlNWNkOTJmZDY4ZWZl
ZTU0YjVjMjU4YTFhNWE4NjM5MzIwOTcyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcApAQCAtODM0LDkgKzgzNCwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cgogICAgICAgICAvLyBhZ2VudCBtdXN0IGludm9rZSB0aGUgbWVkaWEgZWxlbWVudCdzIG1lZGlh
IGVsZW1lbnQgbG9hZCBhbGdvcml0aG0uCiAgICAgICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCiAg
ICAgICAgICAgICBwcmVwYXJlRm9yTG9hZCgpOwotICAgIH0gZWxzZSBpZiAobmFtZSA9PSBjb250
cm9sc0F0dHIpCisgICAgfSBlbHNlIGlmIChuYW1lID09IGNvbnRyb2xzQXR0cikgeworICAgICAg
ICBpZiAobV9wbGF5ZXIpCisgICAgICAgICAgICBtX3BsYXllci0+Y29udHJvbHNDb25maWd1cmF0
aW9uQ2hhbmdlZCgpOwogICAgICAgICBjb25maWd1cmVNZWRpYUNvbnRyb2xzKCk7Ci0gICAgZWxz
ZSBpZiAobmFtZSA9PSBsb29wQXR0cikKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gbG9vcEF0dHIp
CiAgICAgICAgIHVwZGF0ZVNsZWVwRGlzYWJsaW5nKCk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBw
cmVsb2FkQXR0cikgewogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
dmFsdWUsICJub25lIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4
IGE2NzhkOTRlYzg5YjdiNzQ0NzhhODQ1MzY1NTZiZTRkYWU5NzI5MzQuLjM0NzlkYTAzMzMxZjE5
MmJhZDNkZDIzZjkyZTNjYTFiMTc5MGI4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCkBAIC05NDYsNiArOTQ2LDkgQEAgcHJpdmF0ZToKICAgICBjb25zdCBMb2dnZXIm
IG1lZGlhUGxheWVyTG9nZ2VyKCkgZmluYWwgeyByZXR1cm4gbG9nZ2VyKCk7IH0KICNlbmRpZgog
CisgICAgYm9vbCBtZWRpYVBsYXllckNvbnRyb2xzRW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGNvbnRyb2xzKCk7IH0KKyAgICB2b2lkIG1lZGlhUGxheWVyU2V0Q29udHJvbHNFbmFibGVk
KGJvb2wgZW5hYmxlZCkgZmluYWwgeyBzZXRDb250cm9scyhlbmFibGVkKTsgfQorCiAgICAgVGlt
ZXIgbV9wcm9ncmVzc0V2ZW50VGltZXI7CiAgICAgVGltZXIgbV9wbGF5YmFja1Byb2dyZXNzVGlt
ZXI7CiAgICAgVGltZXIgbV9zY2FuVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Ib2xlUHVuY2guY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib2xlUHVu
Y2guY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFjMTYzMTQzNWY4NmQxNzM4MDMyMTg5Nzk3NjI5YjdkMzY5
ODg1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvbGVQdW5j
aC5jbWFrZQpAQCAtMCwwICsxLDYgQEAKK2xpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJF
Q1RPUklFUworICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gi
CispCitsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9o
b2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcAorKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGJkYTA3MTFm
NmI1NWMyNmQ0OGFmNjM4Y2M4YjJmOWE1NzhlYjc3OGUuLjU3NGZlN2MyODVjMjdiYTgwOWQ1MjFl
NGU4ZDMxOGIzZmExZTU5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTg0LDYgKzg0LDEwIEBACiAjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaCIKICNlbmRpZgogCisjaWYgVVNFKEVYVEVSTkFM
X0hPTEVQVU5DSCkKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
QEAgLTI1NSw2ICsyNTksMTAgQEAgc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVuZ2luZXNWZWN0b3Io
KQogICAgICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUoYWRkTWVkaWFFbmdpbmUpOwogI2VuZGlmCiAKKyNpZiBVU0UoRVhURVJOQUxfSE9MRVBV
TkNIKQorICAgIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2lu
ZShhZGRNZWRpYUVuZ2luZSk7CisjZW5kaWYKKwogICAgIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3Io
KSA9IHRydWU7CiB9CiAKQEAgLTE1NTcsNiArMTU2NSwxMSBAQCBib29sIE1lZGlhUGxheWVyOjpz
aG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkKICAgICByZXR1cm4gbV9wcml2YXRlLT5zaG91bGRJ
Z25vcmVJbnRyaW5zaWNTaXplKCk7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXI6OmNvbnRyb2xzQ29u
ZmlndXJhdGlvbkNoYW5nZWQoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmNvbnRyb2xzQ29u
ZmlndXJhdGlvbkNoYW5nZWQoKTsKK30KKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogY29u
c3QgTG9nZ2VyJiBNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dnZXIoKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggZWZjMTViYTFj
YjY1ODZlMjYwNmE5M2IwNDEzMzBiOWJkN2ZkZDIyZi4uNmZlZGJjZjU3NDY2ZjMwYmUyYzFmMGI3
OTM4MzNhZWMwNWI3MDZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCkBAIC0yNDIsNiArMjQyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Y29uc3Qgdm9pZCogbWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKCkgeyByZXR1cm4gbnVsbHB0cjsg
fQogICAgIHZpcnR1YWwgY29uc3QgTG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpID0gMDsKICNl
bmRpZgorCisgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyQ29udHJvbHNFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJTZXRDb250
cm9sc0VuYWJsZWQoYm9vbCkgeyB9CiB9OwogCiBjbGFzcyBNZWRpYVBsYXllciA6IHB1YmxpYyBN
ZWRpYVBsYXllckVudW1zLCBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVBsYXllcj4gewpAQCAtNTc4
LDYgKzU4MSwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIHNob3VsZElnbm9yZUludHJpbnNpY1Np
emUoKTsKIAorICAgIGJvb2wgY29udHJvbHNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gY2xpZW50
KCkubWVkaWFQbGF5ZXJDb250cm9sc0VuYWJsZWQoKTsgfQorICAgIHZvaWQgc2V0Q29udHJvbHNF
bmFibGVkKGJvb2wgZW5hYmxlZCkgeyBjbGllbnQoKS5tZWRpYVBsYXllclNldENvbnRyb2xzRW5h
YmxlZChlbmFibGVkKTsgfQorICAgIHZvaWQgY29udHJvbHNDb25maWd1cmF0aW9uQ2hhbmdlZCgp
OworCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmgKaW5kZXggOTcwMGMwNTY1MDk4NTcxYzU5MDNlZjNlYTM0MmQ4ZWRiODJlMzdjMS4uYzIy
MThlYzE4MmE4OWMxZDViZWJhOGI2ZWU4OGNmMDE3YjA2M2IyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTI4
Niw2ICsyODYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1UYXNrQXRNZWRp
YVRpbWUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYsIE1lZGlhVGltZSkgeyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkgeyByZXR1
cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgdm9pZCBjb250cm9sc0NvbmZpZ3VyYXRpb25DaGFu
Z2VkKCkgeyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlNTcxMDc3OTMxMDA1ZjI5ZThkYzUzZjIxOGM0YWI3
Mjg1ZmYzZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcApAQCAtMCwwICsx
LDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgiCisKKyNpZiBVU0UoRVhURVJO
QUxfSE9MRVBVTkNIKQorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFj
ZSBzdGQ7CisKK3N0YXRpYyBjb25zdCBGbG9hdFNpemUgc19ob2xlUHVuY2hEZWZhdWx0RnJhbWVT
aXplKDEyODAsIDcyMCk7CisKK01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6TWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoKE1lZGlhUGxheWVyKiBwbGF5ZXIpCisgICAgOiBtX3BsYXllcihw
bGF5ZXIpCisgICAgLCBtX3JlYWR5VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWVkaWFQ
bGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpub3RpZnlSZWFkeVN0YXRlKQorI2lmIFVTRShOSUNPU0lB
KQorICAgICwgbV9uaWNvc2lhTGF5ZXIoTmljb3NpYTo6Q29udGVudExheWVyOjpjcmVhdGUoTmlj
b3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoKnRoaXMp
KSkKKyNlbHNlCisgICAgLCBtX3BsYXRmb3JtTGF5ZXJQcm94eShhZG9wdFJlZihuZXcgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSgpKSkKKyNlbmRpZgoreworICAgIHB1c2hOZXh0SG9s
ZVB1bmNoQnVmZmVyKCk7CisKKyAgICAvLyBTdG9yZSB0aGUgY3VycmVudCB2YWx1ZSBmb3IgdGhl
IGNvbnRyb2xzIHZpc2liaWxpdHkgYW5kIGRpc2FibGUgdGhlbS4KKyAgICBtX3ByZXZpb3VzQ29u
dHJvbHNFbmFibGVkID0gbV9wbGF5ZXItPmNvbnRyb2xzRW5hYmxlZCgpOworICAgIG1fcGxheWVy
LT5zZXRDb250cm9sc0VuYWJsZWQoZmFsc2UpOworCisgICAgLy8gRGVsYXkgdGhlIGNvbmZpZ3Vy
YXRpb24gb2YgdGhlIEhUTUxNZWRpYUVsZW1lbnQsIGFzIGR1cmluZyB0aGlzIHN0YWdlIHRoaXMg
aXMgbm90CisgICAgLy8gdGhlIE1lZGlhUGxheWVyIHByaXZhdGUgeWV0IGFuZCBjYWxscyBmcm9t
IEhUTUxNZWRpYUVsZW1lbnQgd29uJ3QgcmVhY2ggdGhpcy4KKyAgICBtX3JlYWR5VGltZXIuc3Rh
cnRPbmVTaG90KDBfcyk7Cit9CisKK01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6fk1lZGlh
UGxheWVyUHJpdmF0ZUhvbGVQdW5jaCgpCit7CisgICAgLy8gUmVzdG9yZSB0aGUgY29udHJvbHMg
dmlzaWJpbGl0eSB0byB0aGUgcHJldmlvdXMgdmFsdWUgb25jZSB0aGlzIHBsYXllciBpcyBkZXN0
cm95ZWQuCisgICAgbV9wbGF5ZXItPnNldENvbnRyb2xzRW5hYmxlZChtX3ByZXZpb3VzQ29udHJv
bHNFbmFibGVkKTsKKworI2lmIFVTRShOSUNPU0lBKQorICAgIGRvd25jYXN0PE5pY29zaWE6OkNv
bnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5pbnZh
bGlkYXRlQ2xpZW50KCk7CisjZW5kaWYKK30KKworUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQ
cml2YXRlSG9sZVB1bmNoOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyNpZiBVU0UoTklDT1NJ
QSkKKyAgICByZXR1cm4gbV9uaWNvc2lhTGF5ZXIucHRyKCk7CisjZWxzZQorICAgIHJldHVybiBj
b25zdF9jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqPih0aGlzKTsKKyNlbmRp
ZgorfQorCitGbG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpuYXR1cmFsU2l6
ZSgpIGNvbnN0Cit7CisgICAgLy8gV2hlbiB1c2luZyB0aGUgaG9sZXB1Y2ggd2UgbWF5IG5vdCBi
ZSBhYmxlIHRvIGdldCB0aGUgdmlkZW8gZnJhbWVzIHNpemUsIHNvIHdlIGNhbid0IHVzZQorICAg
IC8vIGl0LiBCdXQgd2UgbmVlZCB0byByZXBvcnQgc29tZSBub24gZW1wdHkgbmF0dXJhbFNpemUg
Zm9yIHRoZSBwbGF5ZXIncyBHcmFwaGljc0xheWVyCisgICAgLy8gdG8gYmUgcHJvcGVybHkgY3Jl
YXRlZC4KKyAgICByZXR1cm4gc19ob2xlUHVuY2hEZWZhdWx0RnJhbWVTaXplOworfQorCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cHVzaE5leHRIb2xlUHVuY2hCdWZmZXIoKQor
eworICAgIGF1dG8gcHJveHlPcGVyYXRpb24gPQorICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tI
b2xkZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0
dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOworICAgICAgICAgICAg
cHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1ZmZlcikpOworICAgICAgICB9Owor
CisjaWYgVVNFKE5JQ09TSUEpCisgICAgcHJveHlPcGVyYXRpb24oZG93bmNhc3Q8Tmljb3NpYTo6
Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fbmljb3NpYUxheWVyLT5pbXBsKCkpLnBy
b3h5KCkpOworI2Vsc2UKKyAgICBwcm94eU9wZXJhdGlvbigqbV9wbGF0Zm9ybUxheWVyUHJveHkp
OworI2VuZGlmCit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpzd2FwQnVm
ZmVyc0lmTmVlZGVkKCkKK3sKKyAgICBwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpOworfQorCisj
aWYgIVVTRShOSUNPU0lBKQorUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+
IE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cHJveHkoKSBjb25zdAoreworICAgIHJldHVy
biBtX3BsYXRmb3JtTGF5ZXJQcm94eS5jb3B5UmVmKCk7Cit9CisjZW5kaWYKKworc3RhdGljIEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBtaW1lVHlwZUNhY2hlKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4+IGNhY2hlOworICAgIHN0YXRpYyBib29sIHR5cGVMaXN0SW5pdGlhbGl6
ZWQgPSBmYWxzZTsKKworICAgIGlmICh0eXBlTGlzdEluaXRpYWxpemVkKQorICAgICAgICByZXR1
cm4gY2FjaGU7CisKKyAgICBjb25zdCBjaGFyKiBtaW1lVHlwZXNbXSA9IHsKKyAgICAgICAgInZp
ZGVvL2hvbGVwdW5jaCIKKyAgICB9OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IChz
aXplb2YobWltZVR5cGVzKSAvIHNpemVvZigqbWltZVR5cGVzKSk7ICsraSkKKyAgICAgICAgY2Fj
aGUuZ2V0KCkuYWRkKFN0cmluZyhtaW1lVHlwZXNbaV0pKTsKKworICAgIHR5cGVMaXN0SW5pdGlh
bGl6ZWQgPSB0cnVlOworCisgICAgcmV0dXJuIGNhY2hlOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaDo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKQoreworICAgIHR5cGVzID0gbWltZVR5cGVDYWNo
ZSgpOworfQorCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUhv
bGVQdW5jaDo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCit7CisgICAgYXV0byBjb250YWluZXJUeXBlID0gcGFyYW1ldGVycy50eXBl
LmNvbnRhaW5lclR5cGUoKTsKKworICAgIC8vIFNwZWMgc2F5cyB3ZSBzaG91bGQgbm90IHJldHVy
biAicHJvYmFibHkiIGlmIHRoZSBjb2RlY3Mgc3RyaW5nIGlzIGVtcHR5LgorICAgIGlmICghY29u
dGFpbmVyVHlwZS5pc0VtcHR5KCkgJiYgbWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKGNvbnRhaW5l
clR5cGUpKSB7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuY29kZWNzKCkuaXNFbXB0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKKworICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOworICAgIH0KKworICAgIHJldHVy
biBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJl
Z2lzdHJhcikKK3sKKyAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g+KHBsYXllcik7
IH0sCisgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgcmV0dXJu
IGZhbHNlOyB9KTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6Om5vdGlm
eVJlYWR5U3RhdGUoKQoreworICAgIC8vIE5vdGlmeSB0aGUgcmVhZHkgc3RhdGUgc28gdGhlIEdy
YXBoaWNzTGF5ZXIgZ2V0cyBjcmVhdGVkLgorICAgIG1fcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdl
ZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6Y29udHJvbHNDb25m
aWd1cmF0aW9uQ2hhbmdlZCgpCit7CisgICAgLy8gS2VlcCB0cmFjayBvZiB0aGUgY29udHJvbHMg
dmlzaWJpbGl0eSBjaGFuZ2VzIHRvIHJlc3RvcmUgdGhlbSBhZnRlciB0aGlzIHBsYXllciBpcyBk
ZXN0cm95ZWQuIElmIHRoZXkgaGF2ZQorICAgIC8vIGJlZW4gZW5hYmxlZCwgZGlzYWJsZSB0aGVt
IGFnYWluLgorICAgIG1fcHJldmlvdXNDb250cm9sc0VuYWJsZWQgPSBtX3BsYXllci0+Y29udHJv
bHNFbmFibGVkKCk7CisgICAgaWYgKG1fcHJldmlvdXNDb250cm9sc0VuYWJsZWQpCisgICAgICAg
IG1fcGxheWVyLT5zZXRDb250cm9sc0VuYWJsZWQoZmFsc2UpOworfQorCit9CisjZW5kaWYgLy8g
VVNFKEVYVEVSTkFMX0hPTEVQVU5DSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZh
dGVIb2xlUHVuY2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzRjN2QwYTI2OTM3OWU3YzhiNmFhYTMyNDkwNmRl
Y2ExMjUyMDI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCkBAIC0wLDAgKzEs
MTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNF
KEVYVEVSTkFMX0hPTEVQVU5DSCkKKworI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKyNpZiBVU0UoTklDT1NJQSkKKyNpbmNsdWRlICJOaWNv
c2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaCIKKyNlbHNlCisjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyLmgiCisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Owor
CitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2ggOiBwdWJsaWMgTWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoPgorI2lmIFVTRShOSUNPU0lBKQorICAgICwgcHVibGljIE5pY29zaWE6OkNvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGllbnQKKyNlbHNlCisgICAgLCBwdWJsaWMgUGxh
dGZvcm1MYXllcgorI2VuZGlmCit7CisKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2goTWVkaWFQbGF5ZXIqKTsKKyAgICB+TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNo
KCk7CisKKyAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVn
aXN0cmFyKTsKKworICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH07Cisj
aWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiwgTWVk
aWFTb3VyY2VQcml2YXRlQ2xpZW50Kikgb3ZlcnJpZGUgeyB9OworI2VuZGlmCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIGxvYWQoTWVkaWFTdHJlYW1Qcml2YXRlJikgb3ZlcnJp
ZGUgeyB9OworI2VuZGlmCisgICAgdm9pZCBjYW5jZWxMb2FkKCkgb3ZlcnJpZGUgeyB9OworCisg
ICAgdm9pZCBwbGF5KCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgcGF1c2UoKSBvdmVycmlkZSB7
IH07CisKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7
CisKKyAgICBGbG9hdFNpemUgbmF0dXJhbFNpemUoKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJv
b2wgaGFzVmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfTsKKyAgICBib29s
IGhhc0F1ZGlvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH07CisKKyAgICB2b2lk
IHNldFZpc2libGUoYm9vbCkgb3ZlcnJpZGUgeyB9OworCisgICAgYm9vbCBzZWVraW5nKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIGJvb2wgcGF1c2VkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH07CisKKyAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0
YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpF
bXB0eTsgfTsKKyAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTsgfTsKKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH07CisK
KyAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9OworCisgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpIG92ZXJyaWRl
IHsgbV9zaXplID0gc2l6ZTsgfTsKKworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGUgeyB9OworCisgICAgYm9vbCBzdXBwb3J0c0FjY2Vs
ZXJhdGVkUmVuZGVyaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgYm9v
bCBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisg
ICAgdm9pZCBjb250cm9sc0NvbmZpZ3VyYXRpb25DaGFuZ2VkKCkgZmluYWw7CisKKyAgICB2b2lk
IHB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKCk7CisgICAgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVk
KCkgb3ZlcnJpZGU7CisjaWYgIVVTRShOSUNPU0lBKQorICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5PiBwcm94eSgpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCisKK3By
aXZhdGU6CisgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVy
cyYpOworCisgICAgdm9pZCBub3RpZnlSZWFkeVN0YXRlKCk7CisKKyAgICBNZWRpYVBsYXllciog
bV9wbGF5ZXI7CisgICAgSW50U2l6ZSBtX3NpemU7CisgICAgUnVuTG9vcDo6VGltZXI8TWVkaWFQ
bGF5ZXJQcml2YXRlSG9sZVB1bmNoPiBtX3JlYWR5VGltZXI7CisgICAgYm9vbCBtX3ByZXZpb3Vz
Q29udHJvbHNFbmFibGVkIHsgZmFsc2UgfTsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisj
aWYgVVNFKE5JQ09TSUEpCisgICAgUmVmPE5pY29zaWE6OkNvbnRlbnRMYXllcj4gbV9uaWNvc2lh
TGF5ZXI7CisjZWxzZQorICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
PiBtX3BsYXRmb3JtTGF5ZXJQcm94eTsKKyNlbmRpZgorI2VuZGlmCisKK307Cit9CisjZW5kaWYg
Ly8gVVNFKEVYVEVSTkFMX0hPTEVQVU5DSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCmluZGV4IDk2M2JkYzQ4NjRhN2M2NjE2MDhlMmE0MTli
NTE0NTg4MDYyNjU0ZjEuLjAxZjBkMjg5NzMzOGY0YWQzN2Y1YmMxODY0MWZlYTI4ODM3MjkzMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNw
cApAQCAtNzgsOSArNzgsMTAgQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHUKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmIChtX2hvbGVQdW5jaENsaWVudCAmJiBtX2V4dHJhRmxhZ3Mg
JiBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kKSB7CisgICAgaWYgKG1fZXh0cmFGbGFn
cyAmIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQpIHsKICAgICAgICAgQVNTRVJUKCFt
X3RleHR1cmUpOwotICAgICAgICBtX2hvbGVQdW5jaENsaWVudC0+c2V0VmlkZW9SZWN0YW5nbGUo
ZW5jbG9zaW5nSW50UmVjdChtb2RlbFZpZXdNYXRyaXgubWFwUmVjdCh0YXJnZXRSZWN0KSkpOwor
ICAgICAgICBpZiAobV9ob2xlUHVuY2hDbGllbnQpCisgICAgICAgICAgICBtX2hvbGVQdW5jaENs
aWVudC0+c2V0VmlkZW9SZWN0YW5nbGUoZW5jbG9zaW5nSW50UmVjdChtb2RlbFZpZXdNYXRyaXgu
bWFwUmVjdCh0YXJnZXRSZWN0KSkpOwogICAgICAgICB0ZXhtYXBHTC5kcmF3U29saWRDb2xvcih0
YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIENvbG9yKDAsIDAsIDAsIDApLCBmYWxzZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQ
RS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCmluZGV4IDU4MjllZTIzZTU1
MWMzNjYxM2NjNDI2YjRhYmQ2YTgwMGRmMGQ2ZmEuLjkxNGQwZTIxMzk5ZjlkNmE4NTgxZmJiOWU3
NTIwNDQxMjQyODUyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtl
CisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCkBAIC03MCw2ICs3MCw3IEBAIFdF
QktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9XUEVfUVRfQVBJICJXaGV0aGVyIHRvIGVuYWJsZSBz
dXBwb3J0IGZvciB0aGUgUXQ1L1FNCiAjIFByaXZhdGUgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGUg
V1BFIHBvcnQuCiBXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfT1BFTlZSICJXaGV0aGVyIHRvIHVz
ZSBPcGVuVlIgYXMgV2ViVlIgYmFja2VuZC4iIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFM
X0ZFQVRVUkVTfSkKIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9HU1RSRUFNRVJfSE9MRVBVTkNI
ICJXaGV0aGVyIHRvIGVuYWJsZSBHU3RyZWFtZXIgaG9sZXB1bmNoIiBQUklWQVRFIE9GRikKK1dF
QktJVF9PUFRJT05fREVGSU5FKFVTRV9FWFRFUk5BTF9IT0xFUFVOQ0ggIldoZXRoZXIgdG8gZW5h
YmxlIGV4dGVybmFsIGhvbGVwdW5jaCIgUFJJVkFURSBPRkYpCiAKIGlmIChDTUFLRV9TWVNURU1f
TkFNRSBNQVRDSEVTICJMaW51eCIpCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX01FTU9SWV9TQU1QTEVSIFBSSVZBVEUgT04pCkBAIC05NCw2ICs5NSw3IEBAIGlm
ICgoIiR7UENfQ0FJUk9fVkVSU0lPTn0iIFZFUlNJT05fR1JFQVRFUiAiMS4xNi4wIiBPUiAiJHtQ
Q19DQUlST19WRVJTSU9OfSIgU1RSCiBlbmRpZiAoKQogCiBXRUJLSVRfT1BUSU9OX0RFUEVORChV
U0VfR1NUUkVBTUVSX0hPTEVQVU5DSCBFTkFCTEVfVklERU8pCitXRUJLSVRfT1BUSU9OX0RFUEVO
RChVU0VfRVhURVJOQUxfSE9MRVBVTkNIIEVOQUJMRV9WSURFTykKIAogaW5jbHVkZShHU3RyZWFt
ZXJEZXBlbmRlbmNpZXMpCiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRl
eCAwMzFiNWUyNTQ3YTNmNGI3YzJlYjQzODJiOTE1OWYwZTk3N2ZkMThhLi5kMGI3NWYzMTA4ZDYy
Nzg5YWQwMWQ4MTg5OTU5MDk5ZTczM2NlNTljIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDItMjEgIE1pZ3VlbCBHb21leiAgPG1h
Z29tZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBBZGQgc3VwcG9ydCBmb3IgaG9sZXB1
bmNoIHVzaW5nIGFuIGV4dGVybmFsIHZpZGVvIHBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEVYVEVSTkFMX0hPTEVQVU5DSCBvcHRpb24g
dG8gdGhlIFdQRSBwb3J0LiBBZGQgYSBtYW51YWwgdGVzdCB0byBjaGVjayB0aGUKKyAgICAgICAg
ZmVhdHVyZS4gUmVuYW1lIGFuZCB1cGRhdGUgdGhlIHRlc3QgZm9yIEdTdHJlYW1lciBob2xlcHVu
Y2ggdG8gYXZvaWQgY29uZnVzaW9uLgorCisgICAgICAgICogTWFudWFsVGVzdHMvd3BlL3ZpZGVv
LXBsYXllci1ob2xlcHVuY2gtZXh0ZXJuYWwuaHRtbDogQWRkZWQuCisgICAgICAgICogTWFudWFs
VGVzdHMvd3BlL3ZpZGVvLXBsYXllci1ob2xlcHVuY2gtZ3N0cmVhbWVyLmh0bWw6IFJlbmFtZWQg
ZnJvbSBNYW51YWxUZXN0cy93cGUvdmlkZW8tcGxheWVyLWhvbGVwdW5jaC5odG1sLgorICAgICAg
ICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlOgorCiAyMDE5LTAyLTExICBBZHJpYW4g
UGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BF
XSBBZGQgY29udGVudCBleHRlbnNpb25zIHN1cHBvcnQgaW4gV0tUUiBhbmQgdW5za2lwIGxheW91
dCB0ZXN0cwpkaWZmIC0tZ2l0IGEvTWFudWFsVGVzdHMvd3BlL3ZpZGVvLXBsYXllci1ob2xlcHVu
Y2gtZXh0ZXJuYWwuaHRtbCBiL01hbnVhbFRlc3RzL3dwZS92aWRlby1wbGF5ZXItaG9sZXB1bmNo
LWV4dGVybmFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWNhMTYxOGYyMGE3ZGQzNTEyNDk0MzFiZDZiM2E5
NjllYzZhNmM0YQotLS0gL2Rldi9udWxsCisrKyBiL01hbnVhbFRlc3RzL3dwZS92aWRlby1wbGF5
ZXItaG9sZXB1bmNoLWV4dGVybmFsLmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPGh0bWw+CisgIDxo
ZWFkPgorICAgIDx0aXRsZT5XUEUgZXh0ZXJuYWwgaG9sZXB1bmNoIHRlc3Q8L3RpdGxlPgorICAg
IDxzdHlsZT4KKyAgICAgIHZpZGVvIHsKKyAgICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAg
ICAgaGVpZ2h0OiA0MDBweDsKKyAgICAgIH0KKyAgICA8L3N0eWxlPgorICA8L2hlYWQ+CisgIDxi
b2R5PgorICAgIDxwPgorICAgICAgPHN0cm9uZz5XUEUgZXh0ZXJuYWwgaG9sZXB1bmNoIHRlc3Q8
L3N0cm9uZz4KKyAgICA8L3A+CisgICAgPHA+CisgICAgICBUaGlzIHRlc3QgY2hlY2tzIHdoZXRo
ZXIgdGhlIGV4dGVybmFsIGhvbGVwdW5jaCBmZWF0dXJlIGlzIHdvcmtpbmcgb24gV1BFLgorICAg
IDwvcD4KKyAgICA8cD4KKyAgICAgIFRoZXJlIGlzIGEgdmlkZW8gcGxheWVyIG9mIDQwMHg0MDAg
YmVsb3cgdGhpcyB0ZXh0LiBJdCB3aWxsIGhhdmUgY29udHJvbHMgZW5hYmxlZCBhbmQgcGxheSBh
IHZhbGlkCisgICAgICB2aWRlbyBmb3IgNSBzZWNvbmRzLCB0aGVuIGFuIGludmFsaWQgb25lIGZv
ciBhbm90aGVyIDUgc2Vjb25kcyBhbmQgdGhlbiB0aGUgZmlyc3Qgb25lIGFnYWluLgorICAgIDwv
cD4KKyAgICA8cD4KKyAgICAgIElmIGV2ZXJ5dGhpbmcgaXMgd29ya2luZyBmaW5lLCB0aGVyZSBz
aG91bGQgYmUgdGhlIHZhbGlkIHZpZGVvIGZvciA1IHNlY29uZHMgc2hvd2luZyB0aGUgY29udHJv
bHMsIHRoZW4KKyAgICAgIGEgdHJhbnNwYXJlbnQgcmVjdGFuZ2xlIG9mIDQwMHg0MDAgd2l0aG91
dCB0aGUgY29udHJvbHMgZm9yIDUgc2Vjb25kcywgYW5kIHRoZW4gYWdhaW4gdGhlIHZhbGlkIHZp
ZGVvCisgICAgICB3aXRoIHRoZSBjb250cm9scy4KKyAgICA8L3A+CisgICAgPHA+CisgICAgICBJ
ZiBHU3RyZWFtZXIgaG9sZXB1bmNoIGlzIGVuYWJsZWQgd2hlbiBydW5uaW5nIHRoaXMgdGVzdCwg
dGhlIGZpcnN0IGFuZCB0aGlyZCB2aWRlbyB3aWxsIHNob3cgYSB0cmFuc3BhcmVudAorICAgICAg
cmVjdGFuZ2xlIHdpdGggdGhlIGNvbnRyb2xzLCBpbnN0ZWFkIG9mIHRoZSB2aWRlbyBjb250ZW50
LgorICAgIDwvcD4KKyAgICA8dmlkZW8gaWQ9InZpZGVvIiBjb250cm9scz4KKyAgICAgIDxzb3Vy
Y2UgaWQ9InNvdXJjZSIgc3JjPSIuLi8uLi9MYXlvdXRUZXN0cy9tZWRpYS9jb250ZW50L2xvbmct
dGVzdC5tcDQiIHR5cGU9InZpZGVvL21wNCI+CisgICAgPC92aWRlbz4KKyAgICA8ZGl2IGlkPSJs
b2ciPjwvZGl2PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgIHZh
ciB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIik7CisgICAgICB2YXIgcyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzb3VyY2UiKTsKKyAgICAgIHZhciBsID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxvZyIpOworICAgICAgbG9nLmlubmVySFRNTCA9ICJQbGF5aW5nIGZp
cnN0IHZpZGVvLiBUaGUgdmlkZW8gKG9yIGEgdHJhbnNwYXJlbnQgcmVjdGFuZ2xlIGlmIEdTdHJl
YW1lciBob2xlcHVuY2ggaXMgZW5hYmxlZCkgd2l0aCBjb250cm9scyBzaG91bGQgYmUgdmlzaWJs
ZSI7CisgICAgICB2LnBsYXkoKTsKKworICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICAgICAgcy50eXBlID0gInZpZGVvL2hvbGVwdW5jaCI7CisgICAgICAgIHYubG9hZCgpOworICAg
ICAgICB2LnBsYXkoKTsKKyAgICAgICAgbG9nLmlubmVySFRNTCA9ICJQbGF5aW5nIHNlY29uZCB2
aWRlby4gQSB0cmFuc3BhcmVudCByZWN0YW5nbGUgd2l0aG91dCBjb250cm9scyBzaG91bGQgYmUg
dmlzaWJsZSI7CisgICAgICB9LCA1MDAwKTsKKworICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKKyAgICAgICAgcy50eXBlID0gInZpZGVvL21wNCI7CisgICAgICAgIHYubG9hZCgpOworICAg
ICAgICB2LnBsYXkoKTsKKyAgICAgICAgbG9nLmlubmVySFRNTCA9ICJQbGF5aW5nIHRoaXJkIHZp
ZGVvLiBUaGUgdmlkZW8gKG9yIGEgdHJhbnNwYXJlbnQgcmVjdGFuZ2xlIGlmIEdTdHJlYW1lciBo
b2xlcHVuY2ggaXMgZW5hYmxlZCkgd2l0aCBjb250cm9scyBzaG91bGQgYmUgdmlzaWJsZSI7Cisg
ICAgICB9LCAxMDAwMCk7CisgICAgPC9zY3JpcHQ+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL01hbnVhbFRlc3RzL3dwZS92aWRlby1wbGF5ZXItaG9sZXB1bmNoLWdzdHJlYW1lci5o
dG1sIGIvTWFudWFsVGVzdHMvd3BlL3ZpZGVvLXBsYXllci1ob2xlcHVuY2gtZ3N0cmVhbWVyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTY4NGNlYTBhMmFhY2I2NTk5YTI5ODIwNjIxMWJmYzc1NzdhNTBiYgot
LS0gL2Rldi9udWxsCisrKyBiL01hbnVhbFRlc3RzL3dwZS92aWRlby1wbGF5ZXItaG9sZXB1bmNo
LWdzdHJlYW1lci5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgICA8
dGl0bGU+V1BFIEdTdHJlYW1lciBob2xlcHVuY2ggdGVzdDwvdGl0bGU+CisgICAgPHN0eWxlPgor
ICAgICAgdmlkZW8geworICAgICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgICAgICBoZWlnaHQ6
IDQwMHB4OworICAgICAgfQorICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAg
PHA+CisgICAgICA8c3Ryb25nPldQRSBHU3RyZWFtZXIgaG9sZXB1bmNoIHRlc3Q8L3N0cm9uZz4K
KyAgICA8L3A+CisgICAgPHA+CisgICAgICBUaGlzIHRlc3QgY2hlY2tzIHdoZXRoZXIgdGhlIEdT
dHJlYW1lciBob2xlcHVuY2ggZmVhdHVyZSBpcyB3b3JraW5nIG9uIFdQRS4KKyAgICA8L3A+Cisg
ICAgPHA+CisgICAgICBUaGVyZSBpcyBhIHZpZGVvIHBsYXllciBvZiA0MDB4NDAwIHBsYWNlZCBi
ZWxvdyB0aGlzIHRleHQuIElmIHRoZSB2aWRlbyBwbGF5YmFjayBpcyB2aXNpYmxlLAorICAgICAg
dGhlbiB0aGUgaG9sZXB1bmNoIG9wdGlvbiBpcyBkaXNhYmxlZCBvciBpdCdzIG5vdCB3b3JraW5n
IHByb3Blcmx5LgorICAgIDwvcD4KKyAgICA8cD4KKyAgICAgIElmIGV2ZXJ5dGhpbmcgaXMgd29y
a2luZyBmaW5lLCB0aGVyZSBzaG91bGQgYmUgYSB0cmFuc3BhcmVudCByZWN0YW5nbGUgb2YgNDAw
eDQwMCBqdXN0CisgICAgICBiZWxvdyB0aGlzLCBhbmQgdGhlIHZpZGVvIGNvbnRyb2xzIHNob3Vs
ZCBiZSB2aXNpYmxlLgorICAgIDwvcD4KKyAgICA8dmlkZW8gaWQ9InZpZGVvIiBjb250cm9scz48
L3ZpZGVvPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgIHZhciB2
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIik7CisgICAgICB2LnNyYyA9ICIuLi8u
Li9MYXlvdXRUZXN0cy9tZWRpYS9jb250ZW50L2xvbmctdGVzdC5tcDQiOworICAgICAgdi5wbGF5
KCk7CisgICAgPC9zY3JpcHQ+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL01hbnVh
bFRlc3RzL3dwZS92aWRlby1wbGF5ZXItaG9sZXB1bmNoLmh0bWwgYi9NYW51YWxUZXN0cy93cGUv
dmlkZW8tcGxheWVyLWhvbGVwdW5jaC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmNjlkMDhkNGM4MGM3ZjkxMGNkNjQxNjgxOGUwYmJhM2RhODNlNmFkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL01hbnVhbFRlc3RzL3dwZS92aWRlby1w
bGF5ZXItaG9sZXB1bmNoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi08aHRt
bD4KLSAgPGhlYWQ+Ci0gICAgPHRpdGxlPldQRSBob2xlcHVuY2ggdGVzdDwvdGl0bGU+Ci0gICAg
PHN0eWxlPgotICAgICAgdmlkZW8gewotICAgICAgICAgIHdpZHRoOiA0MDBweDsKLSAgICAgICAg
ICBoZWlnaHQ6IDQwMHB4OwotICAgICAgfQotICAgIDwvc3R5bGU+Ci0gIDwvaGVhZD4KLSAgPGJv
ZHk+Ci0gICAgPHA+Ci0gICAgICA8c3Ryb25nPldQRSBob2xlcHVuY2ggdGVzdDwvc3Ryb25nPgot
ICAgIDwvcD4KLSAgICA8cD4KLSAgICAgIFRoaXMgdGVzdCBjaGVja3Mgd2hldGhlciB0aGUgaG9s
ZXB1bmNoIGZlYXR1cmUgaXMgd29ya2luZyBvbiBXUEUuCi0gICAgPC9wPgotICAgIDxwPgotICAg
ICAgVGhlcmUgaXMgYSB2aWRlbyBwbGF5ZXIgb2YgNDAweDQwMCBwbGFjZWQgYmVsb3cgdGhpcyB0
ZXh0LiBJZiB0aGUgdmlkZW8gcGxheWJhY2sgaXMgdmlzaWJsZSwKLSAgICAgIHRoZW4gdGhlIGhv
bGVwdW5jaCBvcHRpb24gaXMgZGlzYWJsZWQgb3IgaXQncyBub3Qgd29ya2luZyBwcm9wZXJseS4K
LSAgICA8L3A+Ci0gICAgPHA+Ci0gICAgICBJZiBldmVyeXRoaW5nIGlzIHdvcmtpbmcgZmluZSwg
dGhlcmUgc2hvdWxkIGJlIGEgdHJhbnNwYXJlbnQgcmVjdGFuZ2xlIG9mIDQwMHg0MDAganVzdAot
ICAgICAgYmVsb3cgdGhpcy4KLSAgICA8L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyI+PC92aWRl
bz4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICB2YXIgdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpOwotICAgICAgdi5zcmMgPSAiLi4vLi4vTGF5
b3V0VGVzdHMvbWVkaWEvY29udGVudC9sb25nLXRlc3QubXA0IjsKLSAgICAgIHYucGxheSgpOwot
ICAgIDwvc2NyaXB0PgotICA8L2JvZHk+Ci08L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362721</attachid>
            <date>2019-02-22 07:27:55 -0800</date>
            <delta_ts>2019-02-25 01:20:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194899-20190222162753.patch</filename>
            <type>text/plain</type>
            <size>21578</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxOTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzdiODFjZTA1ZjYwNjc4
NzJjNDNkNTE2MTI0ZWFjNjlmZjZiZjM5OC4uZjA3MzljODc5YmYzYjA3NmE4MDg5ODkyM2Y0NjVj
ZGQ2YmYxMzljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE5LTAyLTIyICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQRV0gQWRkIHN1cHBv
cnQgZm9yIGhvbGVwdW5jaCB1c2luZyBhbiBleHRlcm5hbCB2aWRlbyBwbGF5ZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDg5OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0aGUgaG9s
ZXB1bmNoIGZlYXR1cmUgdG8gYWxsb3cgcGxheWJhY2sgdXNpbmcgYW4gZXh0ZXJuYWwgcGxheWVy
LiBUaGlzIGNyZWF0ZXMKKyAgICAgICAgYSBuZXcgZHVtbXkgTWVkaWFQbGF5ZXJQcml2YXRlSG9s
ZVB1bmNoIHRoYXQgYWNjZXB0cyBvbmx5IHRoZSB0eXBlICJ2aWRlby9ob2xlcHVuY2giLCBhbmQK
KyAgICAgICAgd2hvc2UgZ29hbCBpcyB0byBqdXN0IGRyYXcgYSB0cmFuc3BhcmVudCByZWN0YW5n
bGUgaW4gdGhlIHBvc2l0aW9uIHdoZXJlIHRoZSB2aWRlbyBzaG91bGQgYmUuCisgICAgICAgIFRo
aXMgY2FuIGJlIHVzZWQgdG8gYWxsb3cgYSBwbGF5ZXIgcGxhY2VkIG9uIGEgbG93ZXIgcGxhbmUg
dGhhbiB0aGUgYnJvd3NlciB0byBiZWNvbWUgdmlzaWJsZS4KKworICAgICAgICBBZGRlZCBNYW51
YWxUZXN0IHdwZS92aWRlby1wbGF5ZXItaG9sZXB1bmNoLWV4dGVybmFsLmh0bWwgdG8gdGVzdCB0
aGUgZmVhdHVyZS4KKworICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHBs
YXRmb3JtL0hvbGVQdW5jaC5jbWFrZTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRNZWRpYUVuZ2luZXNW
ZWN0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXll
clByaXZhdGVIb2xlUHVuY2guY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUhvbGVQdW5jaDo6TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6fk1lZGlhUGxheWVyUHJp
dmF0ZUhvbGVQdW5jaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2g6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoOjpuYXR1cmFsU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6c3dhcEJ1ZmZl
cnNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVu
Y2g6OnByb3h5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBlQ2FjaGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpnZXRTdXBwb3J0ZWRU
eXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1
cHBvcnRzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVu
Y2g6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlSG9sZVB1bmNoOjpub3RpZnlSZWFkeVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmg6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorCiAyMDE5LTAyLTIyICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBzb21lIG1l
ZGlhIGxvZ2dpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggNTRiMTJlOWZhMGY5Njg5
YzVjMzM4NmU0OWFmYzU1N2ZlNWMyMmVkYi4uMTQzZDEzNDhiY2Q1NTE3YWRkOTA2YWY3NDFmNGNk
ZTg0ZTA2OGM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTUsNiArNSwxMCBAQCBp
bmNsdWRlKHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZSkKIGluY2x1ZGUocGxhdGZvcm0vSW1hZ2VE
ZWNvZGVycy5jbWFrZSkKIGluY2x1ZGUocGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZSkKIAor
aWYgKFVTRV9FWFRFUk5BTF9IT0xFUFVOQ0gpCisgICAgaW5jbHVkZShwbGF0Zm9ybS9Ib2xlUHVu
Y2guY21ha2UpCitlbmRpZiAoKQorCiBsaXN0KEFQUEVORCBXZWJDb3JlX1VOSUZJRURfU09VUkNF
X0xJU1RfRklMRVMKICAgICAiU291cmNlc1dQRS50eHQiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0hvbGVQdW5jaC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0hvbGVQdW5jaC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YWMxNjMxNDM1Zjg2ZDE3MzgwMzIxODk3OTc2
MjliN2QzNjk4ODU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
SG9sZVB1bmNoLmNtYWtlCkBAIC0wLDAgKzEsNiBAQAorbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNM
VURFX0RJUkVDVE9SSUVTCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hv
bGVwdW5jaCIKKykKK2xpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCispCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXgg
YmRhMDcxMWY2YjU1YzI2ZDQ4YWY2MzhjYzhiMmY5YTU3OGViNzc4ZS4uOGJmZjJkN2YwNzRkMWQw
M2EyMmU0MzAxY2ZhNTY2NDRmZmJkYzc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtODQsNiArODQsMTAgQEAKICNpbmNsdWRl
ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oIgogI2VuZGlmCiAKKyNpZiBVU0Uo
RVhURVJOQUxfSE9MRVBVTkNIKQorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRApAQCAtMjU1LDYgKzI1OSwxMCBAQCBzdGF0aWMgdm9pZCBidWlsZE1lZGlhRW5naW5l
c1ZlY3RvcigpCiAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6cmVnaXN0
ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiAjZW5kaWYKIAorI2lmIFVTRShFWFRFUk5B
TF9IT0xFUFVOQ0gpCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpyZWdpc3Rlck1l
ZGlhRW5naW5lKGFkZE1lZGlhRW5naW5lKTsKKyNlbmRpZgorCiAgICAgaGF2ZU1lZGlhRW5naW5l
c1ZlY3RvcigpID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTcyNDU4NDEwZTlhMTQ1M2I2MzViMGY4ZDkx
YjlmYjRhNjk2YzU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKQEAgLTAs
MCArMSwxNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTAorICogQ29w
eXJpZ2h0IChDKSAyMDE5IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oIgorCisjaWYgVVNFKEVY
VEVSTkFMX0hPTEVQVU5DSCkKKyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIlRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBj
b25zdCBGbG9hdFNpemUgc19ob2xlUHVuY2hEZWZhdWx0RnJhbWVTaXplKDEyODAsIDcyMCk7CisK
K01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNo
KE1lZGlhUGxheWVyKiBwbGF5ZXIpCisgICAgOiBtX3BsYXllcihwbGF5ZXIpCisgICAgLCBtX3Jl
YWR5VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1
bmNoOjpub3RpZnlSZWFkeVN0YXRlKQorI2lmIFVTRShOSUNPU0lBKQorICAgICwgbV9uaWNvc2lh
TGF5ZXIoTmljb3NpYTo6Q29udGVudExheWVyOjpjcmVhdGUoTmljb3NpYTo6Q29udGVudExheWVy
VGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoKnRoaXMpKSkKKyNlbHNlCisgICAgLCBt
X3BsYXRmb3JtTGF5ZXJQcm94eShhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eSgpKSkKKyNlbmRpZgoreworICAgIHB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKCk7CisK
KyAgICAvLyBEZWxheSB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgSFRNTE1lZGlhRWxlbWVudCwg
YXMgZHVyaW5nIHRoaXMgc3RhZ2UgdGhpcyBpcyBub3QKKyAgICAvLyB0aGUgTWVkaWFQbGF5ZXIg
cHJpdmF0ZSB5ZXQgYW5kIGNhbGxzIGZyb20gSFRNTE1lZGlhRWxlbWVudCB3b24ndCByZWFjaCB0
aGlzLgorICAgIG1fcmVhZHlUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKK30KKworTWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoOjp+TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoKCkKK3sKKyNp
ZiBVU0UoTklDT1NJQSkKKyAgICBkb3duY2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJl
TWFwcGVySW1wbD4obV9uaWNvc2lhTGF5ZXItPmltcGwoKSkuaW52YWxpZGF0ZUNsaWVudCgpOwor
I2VuZGlmCit9CisKK1BsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6
cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisjaWYgVVNFKE5JQ09TSUEpCisgICAgcmV0dXJuIG1f
bmljb3NpYUxheWVyLnB0cigpOworI2Vsc2UKKyAgICByZXR1cm4gY29uc3RfY2FzdDxNZWRpYVBs
YXllclByaXZhdGVIb2xlUHVuY2gqPih0aGlzKTsKKyNlbmRpZgorfQorCitGbG9hdFNpemUgTWVk
aWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpuYXR1cmFsU2l6ZSgpIGNvbnN0Cit7CisgICAgLy8g
V2hlbiB1c2luZyB0aGUgaG9sZXB1Y2ggd2UgbWF5IG5vdCBiZSBhYmxlIHRvIGdldCB0aGUgdmlk
ZW8gZnJhbWVzIHNpemUsIHNvIHdlIGNhbid0IHVzZQorICAgIC8vIGl0LiBCdXQgd2UgbmVlZCB0
byByZXBvcnQgc29tZSBub24gZW1wdHkgbmF0dXJhbFNpemUgZm9yIHRoZSBwbGF5ZXIncyBHcmFw
aGljc0xheWVyCisgICAgLy8gdG8gYmUgcHJvcGVybHkgY3JlYXRlZC4KKyAgICByZXR1cm4gc19o
b2xlUHVuY2hEZWZhdWx0RnJhbWVTaXplOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhv
bGVQdW5jaDo6cHVzaE5leHRIb2xlUHVuY2hCdWZmZXIoKQoreworICAgIGF1dG8gcHJveHlPcGVy
YXRpb24gPQorICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYg
cHJveHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKHByb3h5Lmxv
Y2soKSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5v
dEJsZW5kLCBHTF9ET05UX0NBUkUpOworICAgICAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIo
V1RGTW92ZShsYXllckJ1ZmZlcikpOworICAgICAgICB9OworCisjaWYgVVNFKE5JQ09TSUEpCisg
ICAgcHJveHlPcGVyYXRpb24oZG93bmNhc3Q8Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1h
cHBlckltcGw+KG1fbmljb3NpYUxheWVyLT5pbXBsKCkpLnByb3h5KCkpOworI2Vsc2UKKyAgICBw
cm94eU9wZXJhdGlvbigqbV9wbGF0Zm9ybUxheWVyUHJveHkpOworI2VuZGlmCit9CisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKK3sKKyAg
ICBwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpOworfQorCisjaWYgIVVTRShOSUNPU0lBKQorUmVm
UHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IE1lZGlhUGxheWVyUHJpdmF0ZUhv
bGVQdW5jaDo6cHJveHkoKSBjb25zdAoreworICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXJQcm94
eS5jb3B5UmVmKCk7Cit9CisjZW5kaWYKKworc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBtaW1lVHlwZUNhY2hlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IGNhY2hl
OworICAgIHN0YXRpYyBib29sIHR5cGVMaXN0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKKworICAgIGlm
ICh0eXBlTGlzdEluaXRpYWxpemVkKQorICAgICAgICByZXR1cm4gY2FjaGU7CisKKyAgICBjb25z
dCBjaGFyKiBtaW1lVHlwZXNbXSA9IHsKKyAgICAgICAgInZpZGVvL2hvbGVwdW5jaCIKKyAgICB9
OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IChzaXplb2YobWltZVR5cGVzKSAvIHNp
emVvZigqbWltZVR5cGVzKSk7ICsraSkKKyAgICAgICAgY2FjaGUuZ2V0KCkuYWRkKFN0cmluZyht
aW1lVHlwZXNbaV0pKTsKKworICAgIHR5cGVMaXN0SW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAg
cmV0dXJuIGNhY2hlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6Z2V0
U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IHR5cGVzKQoreworICAgIHR5cGVzID0gbWltZVR5cGVDYWNoZSgpOworfQorCitNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6c3VwcG9ydHNUeXBl
KGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAg
YXV0byBjb250YWluZXJUeXBlID0gcGFyYW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKTsKKwor
ICAgIC8vIFNwZWMgc2F5cyB3ZSBzaG91bGQgbm90IHJldHVybiAicHJvYmFibHkiIGlmIHRoZSBj
b2RlY3Mgc3RyaW5nIGlzIGVtcHR5LgorICAgIGlmICghY29udGFpbmVyVHlwZS5pc0VtcHR5KCkg
JiYgbWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpKSB7CisgICAgICAgIGlm
IChwYXJhbWV0ZXJzLnR5cGUuY29kZWNzKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKKworICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OklzU3VwcG9ydGVkOworICAgIH0KKworICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RT
dXBwb3J0ZWQ7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKK3sKKyAgICByZWdp
c3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxN
ZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g+KHBsYXllcik7IH0sCisgICAgICAgIGdldFN1cHBv
cnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6bm90aWZ5UmVhZHlT
dGF0ZSgpCit7CisgICAgLy8gTm90aWZ5IHRoZSByZWFkeSBzdGF0ZSBzbyB0aGUgR3JhcGhpY3NM
YXllciBnZXRzIGNyZWF0ZWQuCisgICAgbV9wbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7Cit9
Cit9CisjZW5kaWYgLy8gVVNFKEVYVEVSTkFMX0hPTEVQVU5DSCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9N
ZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGQwNGQ0YzYzZDkzMTIw
YmNlODA1YWI4ZmVhMjg3YTAxZTA0NDJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aC5oCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBT
LkwKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgVVNFKEVYVEVSTkFMX0hPTEVQVU5DSCkKKworI2luY2x1ZGUgIk1lZGlhUGxh
eWVyUHJpdmF0ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKyNpZiBVU0UoTklDT1NJQSkK
KyNpbmNsdWRlICJOaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaCIKKyNlbHNl
CisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyLmgiCisj
ZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5OworCitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2ggOiBwdWJs
aWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVk
aWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoPgorI2lmIFVTRShOSUNPU0lBKQorICAgICwgcHVibGlj
IE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGllbnQKKyNlbHNlCisg
ICAgLCBwdWJsaWMgUGxhdGZvcm1MYXllcgorI2VuZGlmCit7CisKK3B1YmxpYzoKKyAgICBNZWRp
YVBsYXllclByaXZhdGVIb2xlUHVuY2goTWVkaWFQbGF5ZXIqKTsKKyAgICB+TWVkaWFQbGF5ZXJQ
cml2YXRlSG9sZVB1bmNoKCk7CisKKyAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck1lZGlhRW5naW5l
KE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKKworICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmKSBm
aW5hbCB7IH07CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2b2lkIGxvYWQoY29uc3Qg
U3RyaW5nJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KikgZmluYWwgeyB9OworI2VuZGlmCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIGxvYWQoTWVkaWFTdHJlYW1Qcml2YXRl
JikgZmluYWwgeyB9OworI2VuZGlmCisgICAgdm9pZCBjYW5jZWxMb2FkKCkgZmluYWwgeyB9Owor
CisgICAgdm9pZCBwbGF5KCkgZmluYWwgeyB9OworICAgIHZvaWQgcGF1c2UoKSBmaW5hbCB7IH07
CisKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisKKyAg
ICBGbG9hdFNpemUgbmF0dXJhbFNpemUoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgaGFzVmlk
ZW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfTsKKyAgICBib29sIGhhc0F1ZGlvKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH07CisKKyAgICB2b2lkIHNldFZpc2libGUoYm9v
bCkgZmluYWwgeyB9OworCisgICAgYm9vbCBzZWVraW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KKworICAgIGJvb2wgcGF1c2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH07CisKKyAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpFbXB0eTsgfTsKKyAgICBNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXI6
OkhhdmVNZXRhZGF0YTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5n
ZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7IH07CisKKyAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9OworCisgICAgdm9pZCBzZXRTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpIGZpbmFsIHsgbV9zaXplID0gc2l6ZTsgfTsKKworICAgIHZvaWQgcGFpbnQo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgZmluYWwgeyB9OworCisgICAgYm9v
bCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQorCisgICAgYm9vbCBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQorCisgICAgdm9pZCBwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpOworICAgIHZv
aWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIGZpbmFsOworI2lmICFVU0UoTklDT1NJQSkKKyAgICBS
ZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gcHJveHkoKSBjb25zdCBmaW5h
bDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVz
KEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CisgICAgc3RhdGlj
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnMmKTsKKworICAgIHZvaWQgbm90aWZ5UmVhZHlTdGF0ZSgpOworCisg
ICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyOworICAgIEludFNpemUgbV9zaXplOworICAgIFJ1bkxv
b3A6OlRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaD4gbV9yZWFkeVRpbWVyOworI2lm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoTklDT1NJQSkKKyAgICBSZWY8Tmljb3Np
YTo6Q29udGVudExheWVyPiBtX25pY29zaWFMYXllcjsKKyNlbHNlCisgICAgUmVmUHRyPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IG1fcGxhdGZvcm1MYXllclByb3h5OworI2VuZGlm
CisjZW5kaWYKKworfTsKK30KKyNlbmRpZiAvLyBVU0UoRVhURVJOQUxfSE9MRVBVTkNIKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXgg
OTYzYmRjNDg2NGE3YzY2MTYwOGUyYTQxOWI1MTQ1ODgwNjI2NTRmMS4uMDFmMGQyODk3MzM4ZjRh
ZDM3ZjViYzE4NjQxZmVhMjg4MzcyOTMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCkBAIC03OCw5ICs3OCwxMCBAQCB2b2lkIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyJiB0ZXh0dQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1faG9sZVB1
bmNoQ2xpZW50ICYmIG1fZXh0cmFGbGFncyAmIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90Qmxl
bmQpIHsKKyAgICBpZiAobV9leHRyYUZsYWdzICYgVGV4dHVyZU1hcHBlckdMOjpTaG91bGROb3RC
bGVuZCkgewogICAgICAgICBBU1NFUlQoIW1fdGV4dHVyZSk7Ci0gICAgICAgIG1faG9sZVB1bmNo
Q2xpZW50LT5zZXRWaWRlb1JlY3RhbmdsZShlbmNsb3NpbmdJbnRSZWN0KG1vZGVsVmlld01hdHJp
eC5tYXBSZWN0KHRhcmdldFJlY3QpKSk7CisgICAgICAgIGlmIChtX2hvbGVQdW5jaENsaWVudCkK
KyAgICAgICAgICAgIG1faG9sZVB1bmNoQ2xpZW50LT5zZXRWaWRlb1JlY3RhbmdsZShlbmNsb3Np
bmdJbnRSZWN0KG1vZGVsVmlld01hdHJpeC5tYXBSZWN0KHRhcmdldFJlY3QpKSk7CiAgICAgICAg
IHRleG1hcEdMLmRyYXdTb2xpZENvbG9yKHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgQ29s
b3IoMCwgMCwgMCwgMCksIGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNX
UEUuY21ha2UKaW5kZXggNjc4YWExYTQ2NzkxOWI2OTM2NzRlNGJiZTQ5YjIzNjQxNTE5ZjUyOC4u
MDVjNWQyOTE4ZDc2NDkzNGIxMTJkY2U4NDIwZTc1Mzk4NjRjNDY0OCAxMDA2NDQKLS0tIGEvU291
cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXUEUu
Y21ha2UKQEAgLTcwLDYgKzcwLDcgQEAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1dQRV9R
VF9BUEkgIldoZXRoZXIgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBRdDUvUU0KICMgUHJpdmF0
ZSBvcHRpb25zIHNwZWNpZmljIHRvIHRoZSBXUEUgcG9ydC4KIFdFQktJVF9PUFRJT05fREVGSU5F
KFVTRV9PUEVOVlIgIldoZXRoZXIgdG8gdXNlIE9wZW5WUiBhcyBXZWJWUiBiYWNrZW5kLiIgUFJJ
VkFURSAke0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9KQogV0VCS0lUX09QVElPTl9ERUZJ
TkUoVVNFX0dTVFJFQU1FUl9IT0xFUFVOQ0ggIldoZXRoZXIgdG8gZW5hYmxlIEdTdHJlYW1lciBo
b2xlcHVuY2giIFBSSVZBVEUgT0ZGKQorV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX0VYVEVSTkFM
X0hPTEVQVU5DSCAiV2hldGhlciB0byBlbmFibGUgZXh0ZXJuYWwgaG9sZXB1bmNoIiBQUklWQVRF
IE9GRikKIAogaWYgKENNQUtFX1NZU1RFTV9OQU1FIE1BVENIRVMgIkxpbnV4IikKICAgICBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVNT1JZX1NBTVBMRVIgUFJJVkFU
RSBPTikKQEAgLTk0LDYgKzk1LDcgQEAgaWYgKCgiJHtQQ19DQUlST19WRVJTSU9OfSIgVkVSU0lP
Tl9HUkVBVEVSICIxLjE2LjAiIE9SICIke1BDX0NBSVJPX1ZFUlNJT059IiBTVFIKIGVuZGlmICgp
CiAKIFdFQktJVF9PUFRJT05fREVQRU5EKFVTRV9HU1RSRUFNRVJfSE9MRVBVTkNIIEVOQUJMRV9W
SURFTykKK1dFQktJVF9PUFRJT05fREVQRU5EKFVTRV9FWFRFUk5BTF9IT0xFUFVOQ0ggRU5BQkxF
X1ZJREVPKQogCiBpbmNsdWRlKEdTdHJlYW1lckRlcGVuZGVuY2llcykKIApkaWZmIC0tZ2l0IGEv
Q2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDhhZmM5ODEzYmNjNGNmMDc2ZjE1ZGU1Nzk1ZjMy
NGZiZWU1MWE1ZWEuLmE5MmFmMTc5OWZjMWUwOTg5ZjYxNTU4NzA5MjdmNWRiZTU3ZTE3Y2YgMTAw
NjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
OS0wMi0yMiAgTWlndWVsIEdvbWV6ICA8bWFnb21lekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtX
UEVdIEFkZCBzdXBwb3J0IGZvciBob2xlcHVuY2ggdXNpbmcgYW4gZXh0ZXJuYWwgdmlkZW8gcGxh
eWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ4
OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
RVhURVJOQUxfSE9MRVBVTkNIIG9wdGlvbiB0byB0aGUgV1BFIHBvcnQuIEFkZCBhIG1hbnVhbCB0
ZXN0IHRvIGNoZWNrIHRoZQorICAgICAgICBmZWF0dXJlLiBSZW5hbWUgYW5kIHVwZGF0ZSB0aGUg
dGVzdCBmb3IgR1N0cmVhbWVyIGhvbGVwdW5jaCB0byBhdm9pZCBjb25mdXNpb24uCisKKyAgICAg
ICAgKiBNYW51YWxUZXN0cy93cGUvdmlkZW8tcGxheWVyLWhvbGVwdW5jaC1leHRlcm5hbC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBNYW51YWxUZXN0cy93cGUvdmlkZW8tcGxheWVyLWhvbGVwdW5j
aC1nc3RyZWFtZXIuaHRtbDogUmVuYW1lZCBmcm9tIE1hbnVhbFRlc3RzL3dwZS92aWRlby1wbGF5
ZXItaG9sZXB1bmNoLmh0bWwuCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21h
a2U6CisKIDIwMTktMDItMjIgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBCdW1wIHZlcnNpb24gbnVtYmVycwpkaWZmIC0t
Z2l0IGEvTWFudWFsVGVzdHMvd3BlL3ZpZGVvLXBsYXllci1ob2xlcHVuY2gtZXh0ZXJuYWwuaHRt
bCBiL01hbnVhbFRlc3RzL3dwZS92aWRlby1wbGF5ZXItaG9sZXB1bmNoLWV4dGVybmFsLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmZiYjc0NTNlMzM0YjYxMDZhYTQ2YzMyNTFiMmEwNTBiNmY5M2U3ZgotLS0g
L2Rldi9udWxsCisrKyBiL01hbnVhbFRlc3RzL3dwZS92aWRlby1wbGF5ZXItaG9sZXB1bmNoLWV4
dGVybmFsLmh0bWwKQEAgLTAsMCArMSw1NiBAQAorPGh0bWw+CisgIDxoZWFkPgorICAgIDx0aXRs
ZT5XUEUgZXh0ZXJuYWwgaG9sZXB1bmNoIHRlc3Q8L3RpdGxlPgorICAgIDxzdHlsZT4KKyAgICAg
IHZpZGVvIHsKKyAgICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgICAgaGVpZ2h0OiA0MDBw
eDsKKyAgICAgIH0KKyAgICA8L3N0eWxlPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxwPgor
ICAgICAgPHN0cm9uZz5XUEUgZXh0ZXJuYWwgaG9sZXB1bmNoIHRlc3Q8L3N0cm9uZz4KKyAgICA8
L3A+CisgICAgPHA+CisgICAgICBUaGlzIHRlc3QgY2hlY2tzIHdoZXRoZXIgdGhlIGV4dGVybmFs
IGhvbGVwdW5jaCBmZWF0dXJlIGlzIHdvcmtpbmcgb24gV1BFLgorICAgIDwvcD4KKyAgICA8cD4K
KyAgICAgIFRoZXJlIGlzIGEgdmlkZW8gcGxheWVyIG9mIDQwMHg0MDAgYmVsb3cgdGhpcyB0ZXh0
LiBJdCB3aWxsICBwbGF5IGEgdmFsaWQgdmlkZW8gZm9yIDUgc2Vjb25kcywgdGhlbiBhIGhvbGVw
dW5jaCBvbmUKKyAgICAgIGZvciBhbm90aGVyIDUgc2Vjb25kcyBhbmQgdGhlbiB0aGUgZmlyc3Qg
b25lIGFnYWluLgorICAgIDwvcD4KKyAgICA8cD4KKyAgICAgIElmIGV2ZXJ5dGhpbmcgaXMgd29y
a2luZyBmaW5lLCB0aGVyZSBzaG91bGQgYmUgdGhlIHZhbGlkIHZpZGVvIGZvciA1IHNlY29uZHMs
IHRoZW4gYSB0cmFuc3BhcmVudCByZWN0YW5nbGUgb2YgNDAweDQwMAorICAgICAgZm9yIDUgc2Vj
b25kcywgYW5kIHRoZW4gYWdhaW4gdGhlIHZhbGlkIHZpZGVvLgorICAgIDwvcD4KKyAgICA8cD4K
KyAgICAgIElmIEdTdHJlYW1lciBob2xlcHVuY2ggaXMgZW5hYmxlZCB3aGVuIHJ1bm5pbmcgdGhp
cyB0ZXN0LCB0aGUgZmlyc3QgYW5kIHRoaXJkIHZpZGVvIHdpbGwgc2hvdyBhIHRyYW5zcGFyZW50
CisgICAgICByZWN0YW5nbGUgaW5zdGVhZCBvZiB0aGUgdmlkZW8gY29udGVudC4KKyAgICA8L3A+
CisgICAgPHZpZGVvIGlkPSJ2aWRlbyI+CisgICAgICA8c291cmNlIGlkPSJzb3VyY2UiIHNyYz0i
Li4vLi4vTGF5b3V0VGVzdHMvbWVkaWEvY29udGVudC9sb25nLXRlc3QubXA0IiB0eXBlPSJ2aWRl
by9tcDQiPgorICAgIDwvdmlkZW8+CisgICAgPGRpdiBpZD0ibG9nIj48L2Rpdj4KKyAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICB2YXIgdiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ2aWRlbyIpOworICAgICAgdmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic291cmNlIik7CisgICAgICB2YXIgbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ci
KTsKKyAgICAgIGxvZy5pbm5lckhUTUwgPSAiUGxheWluZyBmaXJzdCB2aWRlby4gVGhlIHZpZGVv
IChvciBhIHRyYW5zcGFyZW50IHJlY3RhbmdsZSBpZiBHU3RyZWFtZXIgaG9sZXB1bmNoIGlzIGVu
YWJsZWQpIHNob3VsZCBiZSB2aXNpYmxlIjsKKyAgICAgIHYucGxheSgpOworCisgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBzLnR5cGUgPSAidmlkZW8vaG9sZXB1bmNoIjsK
KyAgICAgICAgdi5sb2FkKCk7CisgICAgICAgIHYucGxheSgpOworICAgICAgICBsb2cuaW5uZXJI
VE1MID0gIlBsYXlpbmcgc2Vjb25kIHZpZGVvLiBBIHRyYW5zcGFyZW50IHJlY3RhbmdsZSBzaG91
bGQgYmUgdmlzaWJsZSI7CisgICAgICB9LCA1MDAwKTsKKworICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgICAgcy50eXBlID0gInZpZGVvL21wNCI7CisgICAgICAgIHYubG9hZCgp
OworICAgICAgICB2LnBsYXkoKTsKKyAgICAgICAgbG9nLmlubmVySFRNTCA9ICJQbGF5aW5nIHRo
aXJkIHZpZGVvLiBUaGUgdmlkZW8gKG9yIGEgdHJhbnNwYXJlbnQgcmVjdGFuZ2xlIGlmIEdTdHJl
YW1lciBob2xlcHVuY2ggaXMgZW5hYmxlZCkgc2hvdWxkIGJlIHZpc2libGUiOworICAgICAgfSwg
MTAwMDApOworICAgIDwvc2NyaXB0PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9N
YW51YWxUZXN0cy93cGUvdmlkZW8tcGxheWVyLWhvbGVwdW5jaC1nc3RyZWFtZXIuaHRtbCBiL01h
bnVhbFRlc3RzL3dwZS92aWRlby1wbGF5ZXItaG9sZXB1bmNoLWdzdHJlYW1lci5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFmNGZmMzZlODJiZDVjMzdkOTA5ODBmYzExNDA1OGUxMzNmOTY0YzYKLS0tIC9kZXYv
bnVsbAorKysgYi9NYW51YWxUZXN0cy93cGUvdmlkZW8tcGxheWVyLWhvbGVwdW5jaC1nc3RyZWFt
ZXIuaHRtbApAQCAtMCwwICsxLDMzIEBACis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHRpdGxlPldQ
RSBHU3RyZWFtZXIgaG9sZXB1bmNoIHRlc3Q8L3RpdGxlPgorICAgIDxzdHlsZT4KKyAgICAgIHZp
ZGVvIHsKKyAgICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgICAgaGVpZ2h0OiA0MDBweDsK
KyAgICAgIH0KKyAgICA8L3N0eWxlPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxwPgorICAg
ICAgPHN0cm9uZz5XUEUgR1N0cmVhbWVyIGhvbGVwdW5jaCB0ZXN0PC9zdHJvbmc+CisgICAgPC9w
PgorICAgIDxwPgorICAgICAgVGhpcyB0ZXN0IGNoZWNrcyB3aGV0aGVyIHRoZSBHU3RyZWFtZXIg
aG9sZXB1bmNoIGZlYXR1cmUgaXMgd29ya2luZyBvbiBXUEUuCisgICAgPC9wPgorICAgIDxwPgor
ICAgICAgVGhlcmUgaXMgYSB2aWRlbyBwbGF5ZXIgb2YgNDAweDQwMCBwbGFjZWQgYmVsb3cgdGhp
cyB0ZXh0LiBJZiB0aGUgdmlkZW8gcGxheWJhY2sgaXMgdmlzaWJsZSwKKyAgICAgIHRoZW4gdGhl
IGhvbGVwdW5jaCBvcHRpb24gaXMgZGlzYWJsZWQgb3IgaXQncyBub3Qgd29ya2luZyBwcm9wZXJs
eS4KKyAgICA8L3A+CisgICAgPHA+CisgICAgICBJZiBldmVyeXRoaW5nIGlzIHdvcmtpbmcgZmlu
ZSwgdGhlcmUgc2hvdWxkIGJlIGEgdHJhbnNwYXJlbnQgcmVjdGFuZ2xlIG9mIDQwMHg0MDAganVz
dAorICAgICAgYmVsb3cgdGhpcy4KKyAgICA8L3A+CisgICAgPHZpZGVvIGlkPSJ2aWRlbyI+PC92
aWRlbz4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICB2YXIgdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpOworICAgICAgdi5zcmMgPSAiLi4vLi4v
TGF5b3V0VGVzdHMvbWVkaWEvY29udGVudC9sb25nLXRlc3QubXA0IjsKKyAgICAgIHYucGxheSgp
OworICAgIDwvc2NyaXB0PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9NYW51YWxU
ZXN0cy93cGUvdmlkZW8tcGxheWVyLWhvbGVwdW5jaC5odG1sIGIvTWFudWFsVGVzdHMvd3BlL3Zp
ZGVvLXBsYXllci1ob2xlcHVuY2guaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZjY5ZDA4ZDRjODBjN2Y5MTBjZDY0MTY4MThlMGJiYTNkYTgzZTZhZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9NYW51YWxUZXN0cy93cGUvdmlkZW8tcGxh
eWVyLWhvbGVwdW5jaC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotPGh0bWw+
Ci0gIDxoZWFkPgotICAgIDx0aXRsZT5XUEUgaG9sZXB1bmNoIHRlc3Q8L3RpdGxlPgotICAgIDxz
dHlsZT4KLSAgICAgIHZpZGVvIHsKLSAgICAgICAgICB3aWR0aDogNDAwcHg7Ci0gICAgICAgICAg
aGVpZ2h0OiA0MDBweDsKLSAgICAgIH0KLSAgICA8L3N0eWxlPgotICA8L2hlYWQ+Ci0gIDxib2R5
PgotICAgIDxwPgotICAgICAgPHN0cm9uZz5XUEUgaG9sZXB1bmNoIHRlc3Q8L3N0cm9uZz4KLSAg
ICA8L3A+Ci0gICAgPHA+Ci0gICAgICBUaGlzIHRlc3QgY2hlY2tzIHdoZXRoZXIgdGhlIGhvbGVw
dW5jaCBmZWF0dXJlIGlzIHdvcmtpbmcgb24gV1BFLgotICAgIDwvcD4KLSAgICA8cD4KLSAgICAg
IFRoZXJlIGlzIGEgdmlkZW8gcGxheWVyIG9mIDQwMHg0MDAgcGxhY2VkIGJlbG93IHRoaXMgdGV4
dC4gSWYgdGhlIHZpZGVvIHBsYXliYWNrIGlzIHZpc2libGUsCi0gICAgICB0aGVuIHRoZSBob2xl
cHVuY2ggb3B0aW9uIGlzIGRpc2FibGVkIG9yIGl0J3Mgbm90IHdvcmtpbmcgcHJvcGVybHkuCi0g
ICAgPC9wPgotICAgIDxwPgotICAgICAgSWYgZXZlcnl0aGluZyBpcyB3b3JraW5nIGZpbmUsIHRo
ZXJlIHNob3VsZCBiZSBhIHRyYW5zcGFyZW50IHJlY3RhbmdsZSBvZiA0MDB4NDAwIGp1c3QKLSAg
ICAgIGJlbG93IHRoaXMuCi0gICAgPC9wPgotICAgIDx2aWRlbyBpZD0idmlkZW8iPjwvdmlkZW8+
Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgdmFyIHYgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKTsKLSAgICAgIHYuc3JjID0gIi4uLy4uL0xheW91
dFRlc3RzL21lZGlhL2NvbnRlbnQvbG9uZy10ZXN0Lm1wNCI7Ci0gICAgICB2LnBsYXkoKTsKLSAg
ICA8L3NjcmlwdD4KLSAgPC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>