<?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>101877</bug_id>
          
          <creation_ts>2012-11-11 18:23:07 -0800</creation_ts>
          <short_desc>Refactor Media Control Elements (second half of bug 88871)</short_desc>
          <delta_ts>2012-12-04 20:02:14 -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>Media</component>
          <version>528+ (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>
          <dependson>88871</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Silvia Pfeiffer">silviapf</reporter>
          <assigned_to name="Silvia Pfeiffer">silviapf</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ojan</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>763957</commentid>
    <comment_count>0</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-11-11 18:23:07 -0800</bug_when>
    <thetext>Remove code duplication within the different control elements by refactoring the media control elements as described in bug 88871.

Instead of having two different types of inheritance trees for MediaControlElement and MediaControlInputElement, create a stand-alone virtual class MediaControlElement that does not inherit from anywhere, but provides the common functions:
* create()
* show()
* hide()
* setMediaController()
* displayType()
* isMediaControlElement()
* shadowPseudoId()
* mediaController()
* defaultElementHandler()

Then the individual elements inherit from MediaControlElement and either HTMLInputElement or HTMLDivElement. They extend/override the base functions as appropriate.

Also, as part of this, the RenderXXX classes mixed in between the media controls in MediaControlElements.cpp should be moved to rendering/RenderMediaControls.h/.cpp to follow common code separation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777544</commentid>
    <comment_count>1</comment_count>
      <attachid>176400</attachid>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-11-27 22:35:49 -0800</bug_when>
    <thetext>Created attachment 176400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777550</commentid>
    <comment_count>2</comment_count>
      <attachid>176400</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-27 22:54:26 -0800</bug_when>
    <thetext>Comment on attachment 176400
Patch

Attachment 176400 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15025251</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779783</commentid>
    <comment_count>3</comment_count>
      <attachid>176896</attachid>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-11-29 20:36:39 -0800</bug_when>
    <thetext>Created attachment 176896
Fix for Android</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780118</commentid>
    <comment_count>4</comment_count>
      <attachid>176896</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-11-30 07:54:07 -0800</bug_when>
    <thetext>Comment on attachment 176896
Fix for Android

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

&gt; Source/WebCore/html/shadow/MediaControlElementTypes.cpp:56
&gt; +#if ENABLE(VIDEO_TRACK)
&gt; +static const int textTracksIndexNotFound = -2;
&gt; +#endif

Please don&apos;t define this in two files in the same directory, add a static method to a class accessible to all places it is used.

&gt; Source/WebCore/html/shadow/MediaControlElementTypes.h:120
&gt; +

Nit: blank line isn&apos;t necessary.

&gt; Source/WebCore/html/shadow/MediaControlElementTypes.h:139
&gt; +    virtual void setCurrentValue(float);
&gt; +    virtual float currentValue() const { return m_currentValue; }

Dot these need to be virtual?

&gt; Source/WebCore/html/shadow/MediaControlElementTypes.h:180
&gt; +    virtual void setActive(bool /*flag*/ = true, bool /*pause*/ = false);

OVERRIDE

&gt; Source/WebCore/html/shadow/MediaControlElementTypes.h:185
&gt; +    virtual void startTimer();
&gt; +    virtual void stopTimer();
&gt; +    virtual float nextRate() const;
&gt; +    virtual void seekTimerFired(Timer&lt;MediaControlSeekButtonElement&gt;*);

Do these need to be virtual?

&gt; Source/WebCore/html/shadow/MediaControlElementTypes.h:202
&gt; +    virtual void setVolume(float);
&gt; +    virtual void setClearMutedOnUserInteraction(bool);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781969</commentid>
    <comment_count>5</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-12-03 15:43:56 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 176896 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176896&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/shadow/MediaControlElementTypes.cpp:56
&gt; &gt; +#if ENABLE(VIDEO_TRACK)
&gt; &gt; +static const int textTracksIndexNotFound = -2;
&gt; &gt; +#endif
&gt; 
&gt; Please don&apos;t define this in two files in the same directory, add a static method to a class accessible to all places it is used.

DONE.

&gt; &gt; Source/WebCore/html/shadow/MediaControlElementTypes.h:120
&gt; &gt; +
&gt; 
&gt; Nit: blank line isn&apos;t necessary.

Removed. Also removed a few more from MediaControlElements.h.
 
&gt; &gt; Source/WebCore/html/shadow/MediaControlElementTypes.h:139
&gt; &gt; +    virtual void setCurrentValue(float);
&gt; &gt; +    virtual float currentValue() const { return m_currentValue; }
&gt; 
&gt; Dot these need to be virtual?

Good catch. Removed.

&gt; &gt; Source/WebCore/html/shadow/MediaControlElementTypes.h:180
&gt; &gt; +    virtual void setActive(bool /*flag*/ = true, bool /*pause*/ = false);
&gt; 
&gt; OVERRIDE

Good catch. I went through this file and MediaControlElements.h and added the necessary OVERRIDEs.

&gt; &gt; Source/WebCore/html/shadow/MediaControlElementTypes.h:185
&gt; &gt; +    virtual void startTimer();
&gt; &gt; +    virtual void stopTimer();
&gt; &gt; +    virtual float nextRate() const;
&gt; &gt; +    virtual void seekTimerFired(Timer&lt;MediaControlSeekButtonElement&gt;*);
&gt; 
&gt; Do these need to be virtual?

Removed.

&gt; &gt; Source/WebCore/html/shadow/MediaControlElementTypes.h:202
&gt; &gt; +    virtual void setVolume(float);
&gt; &gt; +    virtual void setClearMutedOnUserInteraction(bool);
&gt; 
&gt; Ditto.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782126</commentid>
    <comment_count>6</comment_count>
      <attachid>177392</attachid>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-12-03 18:51:49 -0800</bug_when>
    <thetext>Created attachment 177392
Inc Eric&apos;s Feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783283</commentid>
    <comment_count>7</comment_count>
      <attachid>177392</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 20:02:09 -0800</bug_when>
    <thetext>Comment on attachment 177392
Inc Eric&apos;s Feedback

Clearing flags on attachment: 177392

Committed r136613: &lt;http://trac.webkit.org/changeset/136613&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783284</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 20:02:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176400</attachid>
            <date>2012-11-27 22:35:49 -0800</date>
            <delta_ts>2012-11-29 20:36:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101877-20121128173326.patch</filename>
            <type>text/plain</type>
            <size>107561</size>
            <attacher name="Silvia Pfeiffer">silviapf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjgwYTJlMjc1YzJjNmJj
ZGFkOGQ1YTRkNjc5MjIyMmFkYjJlYjZhOC4uZjRkY2YxZWU5OTUxMDk4YjFiNDk0OTA2MTAyN2Mw
MmJiN2YwZDEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTExLTI2ICBTaWx2
aWEgUGZlaWZmZXIgIDxzaWx2aWFwZkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3Ig
TWVkaWEgQ29udHJvbCBFbGVtZW50cyB0byByZW1vdmUgY29kZSBkdXBsaWNhdGlvbi4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTg3NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgaGF2
aW5nIHR3byBkaWZmZXJlbnQgdHlwZXMgb2YgaW5oZXJpdGFuY2UgdHJlZXMgZm9yCisgICAgICAg
IE1lZGlhQ29udHJvbEVsZW1lbnQgYW5kIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCwgdGhpcwor
ICAgICAgICBjcmVhdGVzIGEgc3RhbmQtYWxvbmUgdmlydHVhbCBjbGFzcyBNZWRpYUNvbnRyb2xF
bGVtZW50IHRoYXQKKyAgICAgICAgcHJvdmlkZXMgdGhlIGNvbW1vbiBmdW5jdGlvbnM6IHNob3co
KSwgaGlkZSgpLCBpc1Nob3dpbmcoKSwKKyAgICAgICAgc2V0TWVkaWFDb250cm9sbGVyKCksIGRp
c3BsYXlUeXBlKCksIGlzTWVkaWFDb250cm9sRWxlbWVudCgpLAorICAgICAgICBzaGFkb3dQc2V1
ZG9JZCgpLCBtZWRpYUNvbnRyb2xsZXIoKSwgc2V0RGlzcGxheVR5cGUoKS4KKworICAgICAgICBU
aGUgaW5kaXZpZHVhbCBlbGVtZW50cyBpbmhlcml0IGZyb20gTWVkaWFDb250cm9sRWxlbWVudCBh
bmQKKyAgICAgICAgZWl0aGVyIEhUTUxJbnB1dEVsZW1lbnQgb3IgSFRNTERpdkVsZW1lbnQuIFRo
ZXkgZXh0ZW5kL292ZXJyaWRlCisgICAgICAgIHRoZSBiYXNlIGZ1bmN0aW9ucyBhcyBhcHByb3By
aWF0ZS4KKworICAgICAgICBBcyBwYXJ0IG9mIHRoaXMsIHRoZSBSZW5kZXJYWFggY2xhc3NlcyBt
aXhlZCBpbiBiZXR3ZWVuIHRoZSBtZWRpYQorICAgICAgICBjb250cm9scyBpbiBNZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAgYXJlIGFsc28gbW92ZWQgdG8KKyAgICAgICAgcmVuZGVyaW5nL1JlbmRl
ck1lZGlhQ29udHJvbHMuaC9jcHAgdG8gZm9sbG93IGNvbW1vbiBjb2RlIHNlcGFyYXRpb24uCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEJ1aWxkIGZpbGVzIGV4dGVuZGVkIHdp
dGggbmV3IGZpbGVzLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmg6Cisg
ICAgICAgIFJlbW92ZWQgY29tbW9uIGZ1bmN0aW9ucyBiZXR3ZWVuIG1lZGlhIGVsZW1lbnRzIHRo
YXQgYXJlIG5vdyBpbiB0aGUgY29tbW9uCisgICAgICAgIGJhc2UgY2xhc3MgTWVkaWFDb250cm9s
RWxlbWVudC4KKyAgICAgICAgQWxzbyBtb3ZlZCBjb21tb24gYmFzZSBjbGFzc2VzIHRvIE1lZGlh
Q29udHJvbEVsZW1lbnRUeXBlcy5oL2NwcAorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudFR5cGVzLmNwcDogbmV3IGZpbGUKKyAgICAgICAgKiBodG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaDogbmV3IGZpbGUKKyAgICAgICAgQWRkZWQgbmV3IE1l
ZGlhQ29udHJvbEVsZW1lbnQgY2xhc3MuIE1vdmVkIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgYW5k
IE1lZGlhQ29udHJvbElucHV0RWxlbWVudAorICAgICAgICBjbGFzc2VzIGludG8gdGhlc2UgZmls
ZXMgZnJvbSBNZWRpYUNvdG5yb2xFbGVtZW50cy5jcHAvaC4gTW92ZWQgTWVkaWFDb250cm9sRWxl
bWVudFR5cGVzIGVudW0KKyAgICAgICAgaW50byB0aGVzZS4gTW92ZWQgb3RoZXIgbWVkaWEgY29u
dHJvbCBlbGVtZW50IGNsYXNzZXMgdGhhdCBhcmUgdGhlIGJhc2lzIGZvciBpbmhlcml0aW5nIG1l
ZGlhCisgICAgICAgIGNvbnRyb2wgZWxlbWVudHMgaW50byB0aGVzZS4KKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6IG5ldyBmaWxlCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmg6IG5ldyBmaWxlCisgICAg
ICAgIE1vdmVkIHJlbmRlcmluZyBjbGFzc2VzIGZvciBtZWRpYSBjb250cm9sIGVsZW1lbnRzIGlu
dG8gdGhlc2UgZmlsZXMgZnJvbQorICAgICAgICBNZWRpYUNvdG5yb2xFbGVtZW50cy5jcHAvaC4K
KworICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHA6CisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmg6CisgICAgICAgIFJlbmFtZWQgTWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCB0byBNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNs
aWRlckVsZW1lbnQKKyAgICAgICAgdG8gYmUgY29uc2lzdGVudCBpbiBpbmhlcml0YW5jZSB0cmVl
LiBVcGRhdGVkIGNvcHlyaWdodCBkYXRlcy5uCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzQ2hyb21pdW0uY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJv
bHNDaHJvbWl1bS5oOgorICAgICAgICBSZW5hbWVkIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVs
ZW1lbnQgdG8gTWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50CisgICAgICAgIHRv
IGJlIGNvbnNpc3RlbnQgaW4gaW5oZXJpdGFuY2UgdHJlZS4KKyAgICAgICAgTW92ZWQgZW5jbG9z
dXJlIGVsZW1lbnQgZGVmaW5pdGlvbnMgdG8gY29tbW9uIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cC9oCisgICAgICAgIGZpbGUgdGhyb3VnaCB3aGljaCBkaWZmZXJlbnQgbWVkaWEgZWxlbWVudHMg
YXJlIG1hZGUgYXZhaWxhYmxlIHRvIGRpZmZlcmVudCBwb3J0cy4KKworICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbHMuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHMuaDoKKyAgICAgICAgUmVuYW1lZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50
IHRvIE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudAorICAgICAgICB0byBiZSBj
b25zaXN0ZW50IGluIGluaGVyaXRhbmNlIHRyZWUuIFVwZGF0ZWQgY29weXJpZ2h0IGRhdGUuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIEFkZGVkIG5l
dyBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGZpbGUuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwOgorICAgICAgICBBZGRlZCBuZXcgUmVuZGVyTWVkaWFD
b250cm9sRWxlZW1udC5jcHAgZmlsZS4KKwogMjAxMi0xMS0yNyAgSnVsaWVuIENoYWZmcmFpeCAg
PGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBTdXBwb3J0IHByb3BlciA8cGVyY2Vu
dD4gLyBjYWxjKCkgcmVzb2x1dGlvbiBmb3IgZ3JpZCBpdGVtcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCAzYTVkMjE3MzU4NDVmMGJkOGE1NDczYmE2ZmIwZDA5ZDBmZjUxMmIyLi5lZDhmMTBkZGU5
YTczODQ3NDJlYzZkZWU5NTIwMTdiNjU0Mzk3ZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
MTU0MCw4ICsxNTQwLDkgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvc2hhZG93L0hU
TUxTaGFkb3dFbGVtZW50LmNwcAogICAgIGh0bWwvc2hhZG93L0ltYWdlSW5uZXJFbGVtZW50LmNw
cAogICAgIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAotICAgIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHMuY3BwCisgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVz
LmNwcAogICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorICAgIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbHMuY3BwCiAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Fw
cGxlLmNwcAogICAgIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKICAgICBodG1s
L3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCkBAIC0yMTIyLDYgKzIxMjMsOCBAQCBT
RVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCiAg
ICAgcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlck1lZGlh
LmNwcAorICAgIHJlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKyAgICBy
ZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcAogICAgIHJlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtbkJsb2NrLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggZGNjYmY3YmVkMmJjZWQxOTIwMjA3OGVhNDYxMjE0Nzk4MjRlZDdhYi4uYjhkOGJjM2I0ZmVh
ODZhYTY0ZWIwNTIxNjIzY2M5NGI4Yjc3N2UxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0zNTUzLDEwICszNTUzLDEyIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSW1hZ2VJbm5lckVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9JbWFnZUlubmVyRWxlbWVudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRU
eXBlcy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRUeXBlcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaCBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcCBcCkBAIC00MzE0LDYgKzQzMTYs
MTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWFycXVlZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaCBcCisJU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuaCBcCiAJU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRl
ci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggYzU3ZDU4YjIwY2M1ZjVlNzJlYzg5NTFhYjYxNjJiMzE3
MGFmZmE1ZS4uOGE5ZWQyNzU1ZjgxYTU0NzdiMGFlNmFkMWIzNDZlZmQzZjg0NWUwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCkBAIC0xODY2LDcgKzE4NjYsMTAgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9zaGFk
b3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaCBcCiAgICAgaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRF
bGVtZW50LmggXAogICAgIGh0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmggXAorICAgIGh0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oIFwKICAgICBodG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5oIFwKKyAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgg
XAorICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5oIFwKICAgICBodG1sL3NoYWRv
dy9EZXRhaWxzTWFya2VyQ29udHJvbC5oIFwKICAgICBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFj
ay5oIFwKICAgICBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaCBcCkBAIC0yNDAz
LDYgKzI0MDYsOCBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0u
aCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaCBcCiAgICAgcmVuZGVyaW5nL1Jl
bmRlck1hcnF1ZWUuaCBcCisgICAgcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRz
LmggXAorICAgIHJlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmggXAogICAgIHJlbmRlcmlu
Zy9SZW5kZXJNZWRpYS5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaCBcCiAgICAg
cmVuZGVyaW5nL1JlbmRlck1ldGVyLmggXApAQCAtMzIxNiwxMSArMzIyMSwxNCBAQCBlbmFibGU/
KFZJREVPKSB7CiAgICAgICAgIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgXAogICAgICAgICBo
dG1sL01lZGlhQ29udHJvbGxlci5jcHAgXAogICAgICAgICBodG1sL01lZGlhRnJhZ21lbnRVUklQ
YXJzZXIuY3BwIFwKKyAgICAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVz
LmNwcCBcCiAgICAgICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBcCiAg
ICAgICAgIGh0bWwvVGltZVJhbmdlcy5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAgXAogICAgICAgICByZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwIFwKLSAg
ICAgICAgcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAorICAgICAgICByZW5kZXJpbmcvUmVuZGVy
TWVkaWEuY3BwIFwKKyAgICAgICAgcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwIFwK
KyAgICAgICAgcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAogCiAgICAg
dXNlPyhRVEtJVCkgewogICAgICAgICBJTkNMVURFUEFUSCArPSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggZGE2MzM3MjMwYTM1NDAxYTNmMjM4YmY1ZWI5ZmJkNGY5OWRkMTViYi4uZjM4YzcwYmEzMjUz
NDM5OGExYWQ2Y2M0OTVkZGIxZDQ3N2Y1N2MxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzM2OCw2
ICszMzY4LDggQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5oJywKICAg
ICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwJywKICAgICAgICAgICAgICdyZW5k
ZXJpbmcvUmVuZGVyTWVkaWEuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlck1lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlck1lZGlh
Q29udHJvbEVsZW1lbnRzLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJNZWRpYUNv
bnRyb2xzLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMu
aCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHNDaHJvbWl1bS5j
cHAnLApAQCAtNDQwNSw2ICs0NDA3LDggQEAKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNw
cCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oJywKKyAgICAgICAg
ICAgICdodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwJywKKyAgICAgICAg
ICAgICdodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCcsCiAgICAgICAgICAg
ICAnaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwJywKICAgICAgICAgICAgICdo
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oJywKICAgICAgICAgICAgICdodG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMTFkM2EyMjMzMGZiODFhN2MwYWJjMmFhNjMx
MDFhMDFmZjlhYWIyNC4uNzIzNmExMmFiMTJhNzdiZWJlNjcyOWNlZjJmODYzZGY4MTJkMzkzYiAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQx
MjIyLDYgKzQxMjIyLDc4IEBACiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCTwvRmlsZT4K
IAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVyTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJl
bGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVn
X0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMu
aCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJl
bGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkJ
CS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVyTWVudUxpc3QuY3BwIgogCQkJCT4KIAkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTY0Mzk3LDYgKzY0NDY5LDE0IEBACiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xN
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcTWVkaWFDb250cm9sRWxlbWVu
dFR5cGVzLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXHNoYWRvd1xNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAiCiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYjJkNTc1NmNjNWE2MDA1ZDRkZjljZWU3NTFmYTlkODJkNmFmZmVjYy4u
NzZiYTZmZDdlYjRlNThkYTllNGFlYjNmMzgyMGE0YzJkODUxYTYyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjAzNyw2ICs2
MDM3LDEwIEBACiAJCURENzYzQkIyMDk5MkMyQzkwMDc0MEI4RSAvKiBsaWJ4bWwyLmR5bGliIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQ3NjNCQjEw
OTkyQzJDOTAwNzQwQjhFIC8qIGxpYnhtbDIuZHlsaWIgKi87IH07CiAJCUREN0NERjI1MEEyM0NG
OTgwMDA2OTkyOCAvKiBDU1NVbmtub3duUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwRTZDQ0UwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1Vua25v
d25SdWxlLmggKi87IH07CiAJCURERTYzRUQ1MEI3RDQ1QTgwMDIyNjk5OCAvKiBET01UZXh0RXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0Ex
NDc1MEI3RDFCQUYwMEE1M0ZGRCAvKiBET01UZXh0RXZlbnQuaCAqLzsgfTsKKwkJREU0OUIzMDkx
NjVGMkZFMTAwMTAzMzhEIC8qIFJlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNDlCMzA3MTY1RjJGRTEw
MDEwMzM4RCAvKiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi87IH07CisJCURFQkND
REQyMTY2NDZFODIwMEE0NTJFMSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU0OUIzMDgxNjVGMkZF
MTAwMTAzMzhEIC8qIFJlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi87IH07CisJCURFQkND
REQ0MTY2NDZFQUYwMEE0NTJFMSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNDlCMzAwMTY1RjJGQzYw
MDEwMzM4RCAvKiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCAqLzsgfTsKKwkJREVCQ0NERDUx
NjY0NkVCMjAwQTQ1MkUxIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTQ5QjJGRjE2NUYyRkM2MDAx
MDMzOEQgLyogTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCAqLzsgfTsKIAkJREY5QUZENzIx
M0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGOUFGRDcwMTNG
QzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggKi87
IH07CiAJCURGOUFGRDczMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gREY5QUZENzExM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0gKi87IH07CiAJCUUwRkVGMzcyQjE3QzUzRUFDMUMxRkJFRSAvKiBFdmVu
dFNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTBGRUYzNzFCMTdDNTNFQUMxQzFGQkVFIC8qIEV2ZW50U291cmNlLmggKi87IH07CkBAIC0xMzQ3
NSw2ICsxMzQ3OSwxMCBAQAogCQlEQjIzQzJDQTBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0
ZGVudENvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGVudE91
dGRlbnRDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUREMDVGRTBCMEI4
QkEzQzYwMDlBQ0RGRSAvKiBXZWJDb3JlT2JqQ0V4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQ29yZU9iakNFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJREQ3NjNCQjEwOTkyQzJDOTAwNzQwQjhFIC8qIGxpYnhtbDIuZHlsaWIgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFj
aC1vLmR5bGliIjsgbmFtZSA9IGxpYnhtbDIuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJ4bWwy
LmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQlERTQ5QjJGRjE2NUYyRkM2
MDAxMDMzOEQgLyogTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURFNDlCMzAwMTY1RjJGQzYwMDEwMzM4RCAvKiBNZWRp
YUNvbnRyb2xFbGVtZW50VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CURFNDlCMzA3MTY1RjJGRTEwMDEwMzM4RCAvKiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURFNDlCMzA4MTY1
RjJGRTEwMDEwMzM4RCAvKiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjlBRkQ3MDEzRkMzMUQ4MDAxNUZFQjcgLyogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg7IHBhdGggPSBv
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJREY5QUZENzExM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOyBwYXRoID0gb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMEZFRjM3MUIwN0M1M0VBQzFDMUZCRUUgLyogRXZlbnRTb3VyY2UuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEV2ZW50U291cmNlLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE1MTc1LDYgKzE1MTgzLDggQEAKIAkJCQk1NzIxNDVDQzE1QTUxREE3
MDBBRDExOUMgLyogSW1hZ2VJbm5lckVsZW1lbnQuaCAqLywKIAkJCQk1N0NGNDk3MjE0RUUzNkQ3
MDBFQ0ZGMTQgLyogSW5zZXJ0aW9uUG9pbnQuY3BwICovLAogCQkJCTU3Q0Y0OTczMTRFRTM2RDcw
MEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5oICovLAorCQkJCURFNDlCMkZGMTY1RjJGQzYwMDEw
MzM4RCAvKiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwICovLAorCQkJCURFNDlCMzAwMTY1
RjJGQzYwMDEwMzM4RCAvKiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCAqLywKIAkJCQk0MTcy
NTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovLAogCQkJ
CTQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovLAog
CQkJCTQxNTdBRjdGMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuY3BwICov
LApAQCAtMjE2OTIsNiArMjE3MDIsOCBAQAogCQkJCUU0QzI3OTU3MENGOTc0MTkwMEU5N0I5OCAv
KiBSZW5kZXJNZWRpYS5oICovLAogCQkJCTQxRkEzMDNDMTMxNkMyOUMwMEMwQkZDNSAvKiBSZW5k
ZXJNZWRpYUNvbnRyb2xzLmNwcCAqLywKIAkJCQk0MUZBMzAzRDEzMTZDMjlDMDBDMEJGQzUgLyog
UmVuZGVyTWVkaWFDb250cm9scy5oICovLAorCQkJCURFNDlCMzA3MTY1RjJGRTEwMDEwMzM4RCAv
KiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi8sCisJCQkJREU0OUIzMDgxNjVGMkZF
MTAwMTAzMzhEIC8qIFJlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi8sCiAJCQkJQUJEREZF
NzMwQTVDNkU2RjAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmNwcCAqLywKIAkJCQlBQkRERkU3
NDBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuaCAqLywKIAkJCQlBNDU0NDI0QzEx
OUIzNjg3MDA5QkU5MTIgLyogUmVuZGVyTWV0ZXIuY3BwICovLApAQCAtMjU4MzYsNiArMjU4NDgs
OCBAQAogCQkJCUZCMkMxNUMzMTY1RDY0OUQwMDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE3NDFBQUQxNjYzNjYwOTAwOEE1QjdFIC8q
IFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTVCOEI3QzkxNjUy
QzUyMjAwMzZFRjU1IC8qIEpTV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJREVCQ0NERDIxNjY0NkU4MjAwQTQ1MkUxIC8qIFJlbmRlck1lZGlhQ29udHJvbEVs
ZW1lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlERUJDQ0RENDE2NjQ2RUFGMDBBNDUyRTEgLyog
TWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI4MjI3LDYgKzI4
MjQxLDcgQEAKIAkJCQk0MzkwNDZFOTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MVW5k
ZXJPdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzI3OTU4MENGOTc0MTkwMEU5N0I5OCAv
KiBSZW5kZXJNZWRpYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUZBMzAzRTEzMTZDMjlDMDBD
MEJGQzUgLyogUmVuZGVyTWVkaWFDb250cm9scy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTQ5
QjMwOTE2NUYyRkUxMDAxMDMzOEQgLyogUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQUJEREZFNzkwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE0NTQ0MjRFMTE5QjM2ODcwMDlCRTkxMiAvKiBS
ZW5kZXJNZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQ1ODI3RjE1MTI5OUMxMDA2MUE1
NTYgLyogUmVuZGVyTXVsdGlDb2x1bW5CbG9jay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4OTM5
LDYgKzI4OTU0LDcgQEAKIAkJCQk0NDc5NTgwNTE2NDNCNEIyMDAxRTBBN0YgLyogUGFyc2VkQ29u
dGVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTVCOEI3QzgxNjUyQzUyMjAwMzZFRjU1
IC8qIEpTV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NkJBNzY2RTE2NjQyN0E4MDA1QkU1RDEgLyogRnJhbWVMb2FkUmVxdWVzdC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlERUJDQ0RENTE2NjQ2RUIyMDBBNDUyRTEgLyogTWVkaWFDb250cm9sRWxlbWVu
dFR5cGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY1NzY5
YTI0ZTA2ZGM4ZmY3M2ZkMTMwYjM5NWI1OTUzMmQ0MmY4ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKQEAg
LTAsMCArMSwzMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oIgor
CisjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lv
bi5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNp
bmNsdWRlICJSZW5kZXJNZWRpYS5oIgorI2luY2x1ZGUgIlJlbmRlck1lZGlhQ29udHJvbEVsZW1l
bnRzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKKworY2xhc3MgRXZlbnQ7CisKKy8vIEZJWE1FOiBUaGVzZSBjb25zdGFudHMgbWF5IG5lZWQg
dG8gYmUgdHdlYWtlZCB0byBiZXR0ZXIgbWF0Y2ggdGhlIHNlZWtpbmcgaW4gdGhlIFF1aWNrVGlt
ZSBwbHVnLWluLgorc3RhdGljIGNvbnN0IGZsb2F0IGNTa2lwUmVwZWF0RGVsYXkgPSAwLjFmOwor
c3RhdGljIGNvbnN0IGZsb2F0IGNTa2lwVGltZSA9IDAuMmY7CitzdGF0aWMgY29uc3QgZmxvYXQg
Y1NjYW5SZXBlYXREZWxheSA9IDEuNWY7CitzdGF0aWMgY29uc3QgZmxvYXQgY1NjYW5NYXhpbXVt
UmF0ZSA9IDg7CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitzdGF0aWMgY29uc3QgaW50IHRl
eHRUcmFja3NJbmRleE5vdEZvdW5kID0gLTI7CisjZW5kaWYKKworSFRNTE1lZGlhRWxlbWVudCog
dG9QYXJlbnRNZWRpYUVsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUpCisgICAg
ICAgIHJldHVybiAwOworICAgIE5vZGUqIG1lZGlhTm9kZSA9IG5vZGUtPnNoYWRvd0hvc3QoKTsK
KyAgICBpZiAoIW1lZGlhTm9kZSkKKyAgICAgICAgbWVkaWFOb2RlID0gbm9kZTsKKyAgICBpZiAo
IW1lZGlhTm9kZSB8fCAhbWVkaWFOb2RlLT5pc0VsZW1lbnROb2RlKCkgfHwgIXN0YXRpY19jYXN0
PEVsZW1lbnQqPihtZWRpYU5vZGUpLT5pc01lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obWVkaWFOb2Rl
KTsKK30KKworTWVkaWFDb250cm9sRWxlbWVudFR5cGUgbWVkaWFDb250cm9sRWxlbWVudFR5cGUo
Tm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZS0+aXNNZWRpYUNvbnRyb2xFbGVtZW50KCkp
OworICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChub2RlKTsKKyAgICBp
ZiAoZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZykpCisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+ZGlzcGxheVR5cGUoKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9sRGl2RWxlbWVudCo+KGVsZW1lbnQp
LT5kaXNwbGF5VHlwZSgpOworfQorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorY29uc3QgQXRv
bWljU3RyaW5nJiB0cmFja0luZGV4QXR0cmlidXRlTmFtZSgpCit7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgieC13ZWJraXQtdHJhY2staW5kZXgiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisK
K2ludCB0cmFja0xpc3RJbmRleEZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBj
b25zdCBBdG9taWNTdHJpbmcgdHJhY2tJbmRleEF0dHJpYnV0ZVZhbHVlID0gZWxlbWVudC0+Z2V0
QXR0cmlidXRlKHRyYWNrSW5kZXhBdHRyaWJ1dGVOYW1lKCkpOworICAgIGlmICh0cmFja0luZGV4
QXR0cmlidXRlVmFsdWUuaXNOdWxsKCkgfHwgdHJhY2tJbmRleEF0dHJpYnV0ZVZhbHVlLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIHRleHRUcmFja3NJbmRleE5vdEZvdW5kOworICAgIGJvb2wg
b2s7CisgICAgaW50IHRyYWNrSW5kZXggPSB0cmFja0luZGV4QXR0cmlidXRlVmFsdWUudG9JbnQo
Jm9rKTsKKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1cm4gdGV4dFRyYWNrc0luZGV4Tm90Rm91
bmQ7CisgICAgcmV0dXJuIHRyYWNrSW5kZXg7Cit9CisjZW5kaWYKKworTWVkaWFDb250cm9sRWxl
bWVudDo6TWVkaWFDb250cm9sRWxlbWVudChNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5
VHlwZSwgSFRNTEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBtX21lZGlhQ29udHJvbGxlcigwKQor
ICAgICwgbV9kaXNwbGF5VHlwZShkaXNwbGF5VHlwZSkKKyAgICAsIG1fZWxlbWVudChlbGVtZW50
KQoreworfQorCit2b2lkIE1lZGlhQ29udHJvbEVsZW1lbnQ6OmhpZGUoKQoreworICAgIG1fZWxl
bWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVl
Tm9uZSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRWxlbWVudDo6c2hvdygpCit7CisgICAgbV9l
bGVtZW50LT5yZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSk7Cit9
CisKK2Jvb2wgTWVkaWFDb250cm9sRWxlbWVudDo6aXNTaG93aW5nKCkgY29uc3QKK3sKKyAgICBj
b25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0eVNldCA9IG1fZWxlbWVudC0+aW5saW5lU3R5
bGUoKTsKKyAgICAvLyBGb2xsb3dpbmcgdGhlIGNvZGUgZnJvbSBzaG93KCkgYW5kIGhpZGUoKSBh
Ym92ZSwgd2Ugb25seSBoYXZlCisgICAgLy8gdG8gY2hlY2sgZm9yIHRoZSBwcmVzZW5zZSBvZiBp
bmxpbmUgZGlzcGxheS4KKyAgICByZXR1cm4gKCFwcm9wZXJ0eVNldCB8fCAhcHJvcGVydHlTZXQt
PmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlEaXNwbGF5KSk7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sRWxlbWVudDo6c2V0RGlzcGxheVR5cGUoTWVkaWFDb250cm9sRWxlbWVudFR5cGUg
ZGlzcGxheVR5cGUpCit7CisgICAgaWYgKGRpc3BsYXlUeXBlID09IG1fZGlzcGxheVR5cGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fZGlzcGxheVR5cGUgPSBkaXNwbGF5VHlwZTsKKyAgICBp
ZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgICAg
IG9iamVjdC0+cmVwYWludCgpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK01lZGlhQ29udHJvbERpdkVsZW1lbnQ6Ok1lZGlhQ29udHJvbERpdkVsZW1lbnQoRG9jdW1l
bnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSkKKyAgICA6
IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQpCisgICAgLCBNZWRpYUNvbnRyb2xFbGVt
ZW50KGRpc3BsYXlUeXBlLCB0aGlzKQoreworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK01lZGlhQ29udHJvbElucHV0RWxlbWVudDo6TWVkaWFDb250cm9sSW5wdXRFbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5
cGUpCisgICAgOiBIVE1MSW5wdXRFbGVtZW50KGlucHV0VGFnLCBkb2N1bWVudCwgMCwgZmFsc2Up
CisgICAgLCBNZWRpYUNvbnRyb2xFbGVtZW50KGRpc3BsYXlUeXBlLCB0aGlzKQoreworfQorCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01lZGlhQ29udHJvbFRpbWVEaXNwbGF5
RWxlbWVudDo6TWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KERvY3VtZW50KiBkb2N1bWVu
dCwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUpCisgICAgOiBNZWRpYUNvbnRy
b2xEaXZFbGVtZW50KGRvY3VtZW50LCBkaXNwbGF5VHlwZSkKKyAgICAsIG1fY3VycmVudFZhbHVl
KDApCit7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OjpzZXRDdXJy
ZW50VmFsdWUoZmxvYXQgdGltZSkKK3sKKyAgICBtX2N1cnJlbnRWYWx1ZSA9IHRpbWU7Cit9CisK
K1JlbmRlck9iamVjdCogTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK3sKKyAgICByZXR1cm4gbmV3
IChhcmVuYSkgUmVuZGVyTWVkaWFDb250cm9sVGltZURpc3BsYXkodGhpcyk7Cit9CisKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgTWVk
aWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1
dEVsZW1lbnQoZG9jdW1lbnQsIGRpc3BsYXlUeXBlKQoreworfQorCit2b2lkIE1lZGlhQ29udHJv
bE11dGVCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sK
KyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgeworICAg
ICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0TXV0ZWQoIW1lZGlhQ29udHJvbGxlcigpLT5tdXRl
ZCgpKTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgfQorCisgICAg
SFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OmNoYW5nZWRNdXRlKCkKK3sKKyAgICB1cGRh
dGVEaXNwbGF5VHlwZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50
Ojp1cGRhdGVEaXNwbGF5VHlwZSgpCit7CisgICAgc2V0RGlzcGxheVR5cGUobWVkaWFDb250cm9s
bGVyKCktPm11dGVkKCkgPyBNZWRpYVVuTXV0ZUJ1dHRvbiA6IE1lZGlhTXV0ZUJ1dHRvbik7Cit9
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTWVkaWFDb250cm9sU2Vla0J1
dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUpCisgICAgOiBNZWRpYUNv
bnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIGRpc3BsYXlUeXBlKQorICAgICwgbV9hY3Rpb25P
blN0b3AoTm90aGluZykKKyAgICAsIG1fc2Vla1R5cGUoU2tpcCkKKyAgICAsIG1fc2Vla1RpbWVy
KHRoaXMsICZNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c2Vla1RpbWVyRmlyZWQpCit7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAgIC8vIFNldCB0aGUgbW91c2Vkb3duIGFuZCBtb3Vz
ZXVwIGV2ZW50cyBhcyBkZWZhdWx0SGFuZGxlZCBzbyB0aGV5CisgICAgLy8gZG8gbm90IHRyaWdn
ZXIgZHJhZyBzdGFydCBvciBlbmQgYWN0aW9ucyBpbiBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQu
CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50IHx8
IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCkKKyAgICAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sU2Vla0J1dHRv
bkVsZW1lbnQ6OnNldEFjdGl2ZShib29sIGZsYWcsIGJvb2wgcGF1c2UpCit7CisgICAgaWYgKGZs
YWcgPT0gYWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChmbGFnKQorICAgICAg
ICBzdGFydFRpbWVyKCk7CisgICAgZWxzZQorICAgICAgICBzdG9wVGltZXIoKTsKKworICAgIE1l
ZGlhQ29udHJvbElucHV0RWxlbWVudDo6c2V0QWN0aXZlKGZsYWcsIHBhdXNlKTsKK30KKwordm9p
ZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c3RhcnRUaW1lcigpCit7CisgICAgbV9z
ZWVrVHlwZSA9IG1lZGlhQ29udHJvbGxlcigpLT5zdXBwb3J0c1NjYW5uaW5nKCkgPyBTY2FuIDog
U2tpcDsKKworICAgIGlmIChtX3NlZWtUeXBlID09IFNraXApIHsKKyAgICAgICAgLy8gU2Vla2lu
ZyBieSBza2lwcGluZyByZXF1aXJlcyB0aGUgdmlkZW8gdG8gYmUgcGF1c2VkIGR1cmluZyBzZWVr
aW5nLgorICAgICAgICBtX2FjdGlvbk9uU3RvcCA9IG1lZGlhQ29udHJvbGxlcigpLT5wYXVzZWQo
KSA/IE5vdGhpbmcgOiBQbGF5OworICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+cGF1c2UoKTsK
KyAgICB9IGVsc2UgeworICAgICAgICAvLyBTZWVraW5nIGJ5IHNjYW5uaW5nIHJlcXVpcmVzIHRo
ZSB2aWRlbyB0byBiZSBwbGF5aW5nIGR1cmluZyBzZWVraW5nLgorICAgICAgICBtX2FjdGlvbk9u
U3RvcCA9IG1lZGlhQ29udHJvbGxlcigpLT5wYXVzZWQoKSA/IFBhdXNlIDogTm90aGluZzsKKyAg
ICAgICAgbWVkaWFDb250cm9sbGVyKCktPnBsYXkoKTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVy
KCktPnNldFBsYXliYWNrUmF0ZShuZXh0UmF0ZSgpKTsKKyAgICB9CisKKyAgICBtX3NlZWtUaW1l
ci5zdGFydCgwLCBtX3NlZWtUeXBlID09IFNraXAgPyBjU2tpcFJlcGVhdERlbGF5IDogY1NjYW5S
ZXBlYXREZWxheSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OnN0
b3BUaW1lcigpCit7CisgICAgaWYgKG1fc2Vla1R5cGUgPT0gU2NhbikKKyAgICAgICAgbWVkaWFD
b250cm9sbGVyKCktPnNldFBsYXliYWNrUmF0ZShtZWRpYUNvbnRyb2xsZXIoKS0+ZGVmYXVsdFBs
YXliYWNrUmF0ZSgpKTsKKworICAgIGlmIChtX2FjdGlvbk9uU3RvcCA9PSBQbGF5KQorICAgICAg
ICBtZWRpYUNvbnRyb2xsZXIoKS0+cGxheSgpOworICAgIGVsc2UgaWYgKG1fYWN0aW9uT25TdG9w
ID09IFBhdXNlKQorICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+cGF1c2UoKTsKKworICAgIGlm
IChtX3NlZWtUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3NlZWtUaW1lci5zdG9wKCk7Cit9
CisKK2Zsb2F0IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpuZXh0UmF0ZSgpIGNvbnN0
Cit7CisgICAgZmxvYXQgcmF0ZSA9IHN0ZDo6bWluKGNTY2FuTWF4aW11bVJhdGUsIGZhYnNmKG1l
ZGlhQ29udHJvbGxlcigpLT5wbGF5YmFja1JhdGUoKSAqIDIpKTsKKyAgICBpZiAoIWlzRm9yd2Fy
ZEJ1dHRvbigpKQorICAgICAgICByYXRlICo9IC0xOworICAgIHJldHVybiByYXRlOworfQorCit2
b2lkIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpzZWVrVGltZXJGaXJlZChUaW1lcjxN
ZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudD4qKQoreworICAgIGlmIChtX3NlZWtUeXBlID09
IFNraXApIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgZmxvYXQgc2tpcFRp
bWUgPSBpc0ZvcndhcmRCdXR0b24oKSA/IGNTa2lwVGltZSA6IC1jU2tpcFRpbWU7CisgICAgICAg
IG1lZGlhQ29udHJvbGxlcigpLT5zZXRDdXJyZW50VGltZShtZWRpYUNvbnRyb2xsZXIoKS0+Y3Vy
cmVudFRpbWUoKSArIHNraXBUaW1lLCBlYyk7CisgICAgfSBlbHNlCisgICAgICAgIG1lZGlhQ29u
dHJvbGxlcigpLT5zZXRQbGF5YmFja1JhdGUobmV4dFJhdGUoKSk7Cit9CisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAg
OiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhVm9sdW1lU2xpZGVyKQor
ICAgICwgbV9jbGVhck11dGVkT25Vc2VySW50ZXJhY3Rpb24oZmFsc2UpCit7Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZlbnQpCit7CisgICAgLy8gTGVmdCBidXR0b24gaXMgMC4gUmVqZWN0cyBtb3VzZSBldmVu
dHMgbm90IGZyb20gbGVmdCBidXR0b24uCisgICAgaWYgKGV2ZW50LT5pc01vdXNlRXZlbnQoKSAm
JiBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5idXR0b24oKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFhdHRhY2hlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBNZWRp
YUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworCisgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50IHx8IGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGZs
b2F0IHZvbHVtZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodmFsdWUoKS50b0RvdWJsZSgpKTsK
KyAgICBpZiAodm9sdW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT52b2x1bWUoKSkgeworICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldFZv
bHVtZSh2b2x1bWUsIGVjKTsKKyAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgfQorICAgIGlmICht
X2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbikKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCkt
PnNldE11dGVkKGZhbHNlKTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVt
ZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkKK3sKKyAgICBpZiAoIWF0dGFjaGVk
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBNZWRpYUNvbnRyb2xJbnB1
dEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKTsKK30KKworYm9vbCBNZWRp
YUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50
cygpCit7CisgICAgaWYgKCFhdHRhY2hlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gTWVkaWFDb250cm9sSW5wdXRFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpOworfQorCit2b2lkIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OnNl
dFZvbHVtZShmbG9hdCB2b2x1bWUpCit7CisgICAgaWYgKHZhbHVlKCkudG9GbG9hdCgpICE9IHZv
bHVtZSkKKyAgICAgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIodm9sdW1lKSk7Cit9CisKK3Zv
aWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6c2V0Q2xlYXJNdXRlZE9uVXNlcklu
dGVyYWN0aW9uKGJvb2wgY2xlYXJNdXRlKQoreworICAgIG1fY2xlYXJNdXRlZE9uVXNlckludGVy
YWN0aW9uID0gY2xlYXJNdXRlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyOGIzYjNhMTZmNjc4NmQ3
ZmYzOGVjNGFlOGEyNzAxNWVlNjZjYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaApAQCAtMCwwICsxLDIxNyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlc19oCisj
ZGVmaW5lIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlc19oCisKKyNpZiBFTkFCTEUoVklERU8pCisK
KyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9s
bGVySW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisvLyBNdXN0IG1hdGNoIFdlYktpdFN5c3RlbUludGVyZmFjZS5oCitlbnVtIE1l
ZGlhQ29udHJvbEVsZW1lbnRUeXBlIHsKKyAgICBNZWRpYUVudGVyRnVsbHNjcmVlbkJ1dHRvbiA9
IDAsCisgICAgTWVkaWFNdXRlQnV0dG9uLAorICAgIE1lZGlhUGxheUJ1dHRvbiwKKyAgICBNZWRp
YVNlZWtCYWNrQnV0dG9uLAorICAgIE1lZGlhU2Vla0ZvcndhcmRCdXR0b24sCisgICAgTWVkaWFT
bGlkZXIsCisgICAgTWVkaWFTbGlkZXJUaHVtYiwKKyAgICBNZWRpYVJld2luZEJ1dHRvbiwKKyAg
ICBNZWRpYVJldHVyblRvUmVhbHRpbWVCdXR0b24sCisgICAgTWVkaWFTaG93Q2xvc2VkQ2FwdGlv
bnNCdXR0b24sCisgICAgTWVkaWFIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b24sCisgICAgTWVkaWFV
bk11dGVCdXR0b24sCisgICAgTWVkaWFQYXVzZUJ1dHRvbiwKKyAgICBNZWRpYVRpbWVsaW5lQ29u
dGFpbmVyLAorICAgIE1lZGlhQ3VycmVudFRpbWVEaXNwbGF5LAorICAgIE1lZGlhVGltZVJlbWFp
bmluZ0Rpc3BsYXksCisgICAgTWVkaWFTdGF0dXNEaXNwbGF5LAorICAgIE1lZGlhQ29udHJvbHNQ
YW5lbCwKKyAgICBNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lciwKKyAgICBNZWRpYVZvbHVtZVNs
aWRlciwKKyAgICBNZWRpYVZvbHVtZVNsaWRlclRodW1iLAorICAgIE1lZGlhRnVsbFNjcmVlblZv
bHVtZVNsaWRlciwKKyAgICBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJUaHVtYiwKKyAgICBN
ZWRpYVZvbHVtZVNsaWRlck11dGVCdXR0b24sCisgICAgTWVkaWFUZXh0VHJhY2tEaXNwbGF5Q29u
dGFpbmVyLAorICAgIE1lZGlhVGV4dFRyYWNrRGlzcGxheSwKKyAgICBNZWRpYUV4aXRGdWxsc2Ny
ZWVuQnV0dG9uLAorICAgIE1lZGlhT3ZlcmxheVBsYXlCdXR0b24sCisgICAgTWVkaWFDbG9zZWRD
YXB0aW9uc0NvbnRhaW5lciwKKyAgICBNZWRpYUNsb3NlZENhcHRpb25zVHJhY2tMaXN0LAorfTsK
KworSFRNTE1lZGlhRWxlbWVudCogdG9QYXJlbnRNZWRpYUVsZW1lbnQoTm9kZSopOworaW5saW5l
IEhUTUxNZWRpYUVsZW1lbnQqIHRvUGFyZW50TWVkaWFFbGVtZW50KFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpIHsgcmV0dXJuIHRvUGFyZW50TWVkaWFFbGVtZW50KHJlbmRlcmVyLT5ub2RlKCkpOyB9
CisKK01lZGlhQ29udHJvbEVsZW1lbnRUeXBlIG1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKE5vZGUq
KTsKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKK2NvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJ
bmRleEF0dHJpYnV0ZU5hbWUoKTsKK2ludCB0cmFja0xpc3RJbmRleEZvckVsZW1lbnQoRWxlbWVu
dCopOworI2VuZGlmCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3Mg
TWVkaWFDb250cm9sRWxlbWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGhpZGUoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2hvdygpOworICAgIHZpcnR1YWwgYm9vbCBpc1Nob3dpbmcoKSBj
b25zdDsKKworICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUo
KSB7IHJldHVybiBtX2Rpc3BsYXlUeXBlOyB9CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldE1l
ZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNvbnRyb2xsZXIpIHsgbV9t
ZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyOyB9CisgICAgdmlydHVhbCBNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2UqIG1lZGlhQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFDb250
cm9sbGVyOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xFbGVtZW50
KE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlLCBIVE1MRWxlbWVudCopOworICAgIH5NZWRpYUNvbnRy
b2xFbGVtZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGlzcGxheVR5cGUoTWVkaWFD
b250cm9sRWxlbWVudFR5cGUpOworICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbEVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9s
bGVySW50ZXJmYWNlKiBtX21lZGlhQ29udHJvbGxlcjsKKyAgICBNZWRpYUNvbnRyb2xFbGVtZW50
VHlwZSBtX2Rpc3BsYXlUeXBlOworICAgIEhUTUxFbGVtZW50KiBtX2VsZW1lbnQ7Cit9OworCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIE1lZGlhQ29udHJvbERpdkVs
ZW1lbnQgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQsIHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50
IHsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xFbGVtZW50KCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gTWVkaWFDb250cm9sRWxlbWVudDo6aXNNZWRpYUNvbnRy
b2xFbGVtZW50KCk7IH0KKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KERvY3Vt
ZW50KiwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUpOworCit9OworCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCA6IHB1Ymxp
YyBIVE1MSW5wdXRFbGVtZW50LCBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7Citwcm90ZWN0
ZWQ6CisgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sRWxlbWVudCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIE1lZGlhQ29udHJvbEVsZW1lbnQ6OmlzTWVkaWFDb250cm9sRWxlbWVudCgp
OyB9CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KERvY3VtZW50KiwgTWVk
aWFDb250cm9sRWxlbWVudFR5cGUpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVEaXNwbGF5VHlwZSgpIHsgfQorfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitjbGFzcyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFD
b250cm9sRGl2RWxlbWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRW
YWx1ZShmbG9hdCk7CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnRWYWx1ZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFD
b250cm9sVGltZURpc3BsYXlFbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250cm9sRWxlbWVudFR5
cGUpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisKKyAgICBmbG9hdCBtX2N1cnJlbnRWYWx1
ZTsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgTWVkaWFD
b250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50
IHsKK3B1YmxpYzoKKyAgICB2b2lkIGNoYW5nZWRNdXRlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wg
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVu
dChEb2N1bWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCkgT1ZFUlJJREU7Cit9OworCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIE1lZGlhQ29udHJvbFNlZWtCdXR0b25F
bGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyBy
ZXR1cm4gdHJ1ZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sU2Vl
a0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOworCitw
cml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc0ZvcndhcmRCdXR0b24oKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sIC8qZmxhZyovID0gdHJ1ZSwgYm9vbCAvKnBh
dXNlKi8gPSBmYWxzZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRUaW1lcigpOworICAgIHZp
cnR1YWwgdm9pZCBzdG9wVGltZXIoKTsKKyAgICB2aXJ0dWFsIGZsb2F0IG5leHRSYXRlKCkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIHNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbFNl
ZWtCdXR0b25FbGVtZW50PiopOworCisgICAgZW51bSBBY3Rpb25UeXBlIHsgTm90aGluZywgUGxh
eSwgUGF1c2UgfTsKKyAgICBBY3Rpb25UeXBlIG1fYWN0aW9uT25TdG9wOworICAgIGVudW0gU2Vl
a1R5cGUgeyBTa2lwLCBTY2FuIH07CisgICAgU2Vla1R5cGUgbV9zZWVrVHlwZTsKKyAgICBUaW1l
cjxNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudD4gbV9zZWVrVGltZXI7Cit9OworCisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgTWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCk7CisgICAgdmlydHVhbCB2
b2lkIHNldENsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbihib29sKTsKKworcHJvdGVjdGVkOgor
ICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQoRG9jdW1lbnQqKTsK
KworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7
CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykKKwor
I2VuZGlmIC8vIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlc19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggNmFlNTVmM2Q5
MzAyNDIwOWMzNjk2MDFlZGQ5YmQ3ZjE0MDEwNTk1OS4uMmI0NTdhZmMzNzdjODU5MzRmN2Y0MmE1
YzEwYTVjZDllZDExYWNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDQwICszMCwyNSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFZJREVPKQotCiAjaW5jbHVkZSAiTWVk
aWFDb250cm9sRWxlbWVudHMuaCIKIAotI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIK
LSNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0Lmgi
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5j
bHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCi0jaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1M
TWVkaWFFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFZp
ZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0jaW5jbHVkZSAiTGF5b3V0UmVw
YWludGVyLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1lZGlh
Q29udHJvbHMuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgotI2luY2x1ZGUgIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC5oIgotI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgotI2luY2x1ZGUgIlJlbmRlck1lZGlh
LmgiCisjaW5jbHVkZSAiUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaCIKICNpbmNsdWRlICJS
ZW5kZXJTbGlkZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgotI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKLSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
LSNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCi0jaW5jbHVkZSAiVGV4dC5oIgogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKICNpbmNsdWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUZXh0VHJh
Y2tMaXN0LmgiCkBAIC03MSw5MSArNTcsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLS8vIEZJWE1F
OiBUaGVzZSBjb25zdGFudHMgbWF5IG5lZWQgdG8gYmUgdHdlYWtlZCB0byBiZXR0ZXIgbWF0Y2gg
dGhlIHNlZWtpbmcgaW4gdGhlIFF1aWNrVGltZSBwbHVnLWluLgotc3RhdGljIGNvbnN0IGZsb2F0
IGNTa2lwUmVwZWF0RGVsYXkgPSAwLjFmOwotc3RhdGljIGNvbnN0IGZsb2F0IGNTa2lwVGltZSA9
IDAuMmY7Ci1zdGF0aWMgY29uc3QgZmxvYXQgY1NjYW5SZXBlYXREZWxheSA9IDEuNWY7Ci1zdGF0
aWMgY29uc3QgZmxvYXQgY1NjYW5NYXhpbXVtUmF0ZSA9IDg7CiAKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCiBzdGF0aWMgY29uc3QgY2hhciogdGV4dFRyYWNrc09mZkF0dHJWYWx1ZSA9ICItMSI7
IC8vIFRoaXMgbXVzdCBtYXRjaCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzT2ZmSW5kZXgo
KQogc3RhdGljIGNvbnN0IGludCB0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZCA9IC0yOwogI2VuZGlm
CiAKLUhUTUxNZWRpYUVsZW1lbnQqIHRvUGFyZW50TWVkaWFFbGVtZW50KE5vZGUqIG5vZGUpCi17
Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gMDsKLSAgICBOb2RlKiBtZWRpYU5vZGUg
PSBub2RlLT5zaGFkb3dIb3N0KCk7Ci0gICAgaWYgKCFtZWRpYU5vZGUpCi0gICAgICAgIG1lZGlh
Tm9kZSA9IG5vZGU7Ci0gICAgaWYgKCFtZWRpYU5vZGUgfHwgIW1lZGlhTm9kZS0+aXNFbGVtZW50
Tm9kZSgpIHx8ICFzdGF0aWNfY2FzdDxFbGVtZW50Kj4obWVkaWFOb2RlKS0+aXNNZWRpYUVsZW1l
bnQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1l
ZGlhRWxlbWVudCo+KG1lZGlhTm9kZSk7Ci19Ci0KLU1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIG1l
ZGlhQ29udHJvbEVsZW1lbnRUeXBlKE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUKG5vZGUtPmlz
TWVkaWFDb250cm9sRWxlbWVudCgpKTsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRN
TEVsZW1lbnQobm9kZSk7Ci0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9sSW5wdXRFbGVtZW50Kj4oZWxl
bWVudCktPmRpc3BsYXlUeXBlKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PE1lZGlhQ29udHJv
bEVsZW1lbnQqPihlbGVtZW50KS0+ZGlzcGxheVR5cGUoKTsKLX0KLQotI2lmIEVOQUJMRShWSURF
T19UUkFDSykKLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRyYWNrSW5kZXhBdHRyaWJ1dGVO
YW1lKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ4
LXdlYmtpdC10cmFjay1pbmRleCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKLSAgICByZXR1cm4gbmFtZTsKLX0KLQotc3RhdGljIGludCB0cmFja0xpc3RJbmRleEZvckVs
ZW1lbnQoRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcgdHJhY2tJ
bmRleEF0dHJpYnV0ZVZhbHVlID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKHRyYWNrSW5kZXhBdHRy
aWJ1dGVOYW1lKCkpOwotICAgIGlmICh0cmFja0luZGV4QXR0cmlidXRlVmFsdWUuaXNOdWxsKCkg
fHwgdHJhY2tJbmRleEF0dHJpYnV0ZVZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRl
eHRUcmFja3NJbmRleE5vdEZvdW5kOwotICAgIGJvb2wgb2s7Ci0gICAgaW50IHRyYWNrSW5kZXgg
PSB0cmFja0luZGV4QXR0cmlidXRlVmFsdWUudG9JbnQoJm9rKTsKLSAgICBpZiAoIW9rKQotICAg
ICAgICByZXR1cm4gdGV4dFRyYWNrc0luZGV4Tm90Rm91bmQ7Ci0gICAgcmV0dXJuIHRyYWNrSW5k
ZXg7Ci19Ci0jZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1NZWRp
YUNvbnRyb2xFbGVtZW50OjpNZWRpYUNvbnRyb2xFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkK
LSAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQpCi0gICAgLCBtX21lZGlhQ29u
dHJvbGxlcigwKQotewotfQotCi12b2lkIE1lZGlhQ29udHJvbEVsZW1lbnQ6OnNob3coKQotewot
ICAgIHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5KTsKLX0KLQot
dm9pZCBNZWRpYUNvbnRyb2xFbGVtZW50OjpoaWRlKCkKLXsKLSAgICBzZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVOb25lKTsKLX0KLQotYm9vbCBNZWRp
YUNvbnRyb2xFbGVtZW50Ojppc1Nob3dpbmcoKSBjb25zdAotewotICAgIGNvbnN0IFN0eWxlUHJv
cGVydHlTZXQqIHByb3BlcnR5U2V0ID0gaW5saW5lU3R5bGUoKTsKLSAgICAvLyBGb2xsb3dpbmcg
dGhlIGNvZGUgZnJvbSBzaG93KCkgYW5kIGhpZGUoKSBhYm92ZSwgd2Ugb25seSBoYXZlCi0gICAg
Ly8gdG8gY2hlY2sgZm9yIHRoZSBwcmVzZW5zZSBvZiBpbmxpbmUgZGlzcGxheS4KLSAgICByZXR1
cm4gKCFwcm9wZXJ0eVNldCB8fCAhcHJvcGVydHlTZXQtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NT
UHJvcGVydHlEaXNwbGF5KSk7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotaW5saW5lIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6TWVkaWFDb250cm9sUGFuZWxFbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1l
bnQpCitNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBhbmVsRWxlbWVudChE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50
LCBNZWRpYUNvbnRyb2xzUGFuZWwpCiAgICAgLCBtX2NhbkJlRHJhZ2dlZChmYWxzZSkKICAgICAs
IG1faXNCZWluZ0RyYWdnZWQoZmFsc2UpCiAgICAgLCBtX2lzRGlzcGxheWVkKGZhbHNlKQpAQCAt
MTY5LDExICs3OCw2IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50PiBNZWRp
YUNvbnRyb2xQYW5lbEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCoKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudChkb2N1bWVudCkpOwogfQogCi1NZWRpYUNv
bnRyb2xFbGVtZW50VHlwZSBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OmRpc3BsYXlUeXBlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gTWVkaWFDb250cm9sc1BhbmVsOwotfQotCiBjb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25z
dAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXBhbmVsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOwpAQCAtMjQ1LDcgKzE0OSw2IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50Ojpz
dG9wVGltZXIoKQogICAgICAgICBtX3RyYW5zaXRpb25UaW1lci5zdG9wKCk7CiB9CiAKLQogdm9p
ZCBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OnRyYW5zaXRpb25UaW1lckZpcmVkKFRpbWVyPE1l
ZGlhQ29udHJvbFBhbmVsRWxlbWVudD4qKQogewogICAgIGlmICghbV9vcGFxdWUpCkBAIC0zMTgs
NyArMjIxLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6Om1ha2VUcmFuc3BhcmVu
dCgpCiAKIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldmVudCkKIHsKLSAgICBNZWRpYUNvbnRyb2xFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKGV2ZW50KTsKKyAgICBNZWRpYUNvbnRyb2xEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKGV2ZW50KTsKIAogICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkpIHsKICAgICAg
ICAgTGF5b3V0UG9pbnQgbG9jYXRpb24gPSBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQp
LT5hYnNvbHV0ZUxvY2F0aW9uKCk7CkBAIC0zNTMsNjMgKzI1Niw2NiBAQCB2b2lkIE1lZGlhQ29u
dHJvbFBhbmVsRWxlbWVudDo6c2V0SXNEaXNwbGF5ZWQoYm9vbCBpc0Rpc3BsYXllZCkKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sVGltZWxp
bmVDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogTWVkaWFDb250cm9sRWxlbWVudChkb2N1bWVudCkK
K01lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudDo6TWVkaWFDb250cm9sUGFuZWxFbmNs
b3N1cmVFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICAvLyBNYXBwaW5nIG9udG8gc2Ft
ZSBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBhcyBwYW5lbCBlbGVtZW50LCBzaW5jZSBpdCBoYXMg
c2ltaWxhciBwcm9wZXJ0aWVzLgorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVu
dCwgTWVkaWFDb250cm9sc1BhbmVsKQogewogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRp
bWVsaW5lQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQ
YW5lbEVuY2xvc3VyZUVsZW1lbnQ+IE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sVGlt
ZWxpbmVDb250YWluZXJFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJv
bFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOwotICAgIGVsZW1lbnQtPmhpZGUo
KTsKLSAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotTWVk
aWFDb250cm9sRWxlbWVudFR5cGUgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50
OjpkaXNwbGF5VHlwZSgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFBh
bmVsRW5jbG9zdXJlRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAogewotICAgIHJldHVy
biBNZWRpYVRpbWVsaW5lQ29udGFpbmVyOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlh
Q29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAot
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQs
ICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1lbmNsb3N1cmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgcmV0dXJuIGlkOwogfQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLWNsYXNzIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVy
IDogcHVibGljIFJlbmRlckJsb2NrIHsKLXB1YmxpYzoKLSAgICBSZW5kZXJNZWRpYVZvbHVtZVNs
aWRlckNvbnRhaW5lcihOb2RlKik7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGxheW91
dCgpOwotfTsKK01lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50OjpNZWRpYUNvbnRy
b2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgLy8gTWFw
cGluZyBvbnRvIHNhbWUgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgYXMgcGFuZWwgZWxlbWVudCwg
c2luY2UgaXQgaGFzIHNpbWlsYXIgcHJvcGVydGllcy4KKyAgICA6IE1lZGlhQ29udHJvbERpdkVs
ZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ29udHJvbHNQYW5lbCkKK3sKK30KIAotUmVuZGVyTWVkaWFW
b2x1bWVTbGlkZXJDb250YWluZXI6OlJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKE5v
ZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJCbG9jayhub2RlKQorUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudD4gTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVs
ZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudChkb2N1bWVudCkpOwogfQog
Ci12b2lkIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjpsYXlvdXQoKQorY29uc3Qg
QXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudDo6c2hhZG93
UHNldWRvSWQoKSBjb25zdAogewotICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9s
cy1vdmVybGF5LWVuY2xvc3VyZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICByZXR1cm4gaWQ7Cit9CiAKLSAgICBpZiAoc3R5bGUoKS0+ZGlzcGxheSgpID09IE5P
TkUgfHwgIW5leHRTaWJsaW5nKCkgfHwgIW5leHRTaWJsaW5nKCktPmlzQm94KCkpCi0gICAgICAg
IHJldHVybjsKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgIFJlbmRlckJv
eCogYnV0dG9uQm94ID0gdG9SZW5kZXJCb3gobmV4dFNpYmxpbmcoKSk7Ci0gICAgaW50IGFic29s
dXRlT2Zmc2V0VG9wID0gYnV0dG9uQm94LT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgwLCAt
c2l6ZSgpLmhlaWdodCgpKSkueSgpOworTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVt
ZW50OjpNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFUaW1lbGlu
ZUNvbnRhaW5lcikKK3sKK30KIAotICAgIExheW91dFN0YXRlRGlzYWJsZXIgbGF5b3V0U3RhdGVE
aXNhYmxlcih2aWV3KCkpOworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5l
ckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250
YWluZXJFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFRpbWVsaW5l
Q29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOworICAgIGVsZW1lbnQtPmhpZGUoKTsKKyAgICBy
ZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9CiAKLSAgICAvLyBJZiB0aGUgc2xpZGVyIHdvdWxk
IGJlIHJlbmRlcmVkIG91dHNpZGUgdGhlIHBhZ2UsIGl0IHNob3VsZCBiZSBtb3ZlZCBiZWxvdyB0
aGUgY29udHJvbHMuCi0gICAgaWYgKFVOTElLRUxZKGFic29sdXRlT2Zmc2V0VG9wIDwgMCkpCi0g
ICAgICAgIHNldFkoYnV0dG9uQm94LT5vZmZzZXRUb3AoKSArIHRoZW1lKCktPnZvbHVtZVNsaWRl
ck9mZnNldEZyb21NdXRlQnV0dG9uKGJ1dHRvbkJveCwgcGl4ZWxTbmFwcGVkU2l6ZSgpKS55KCkp
OworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1l
bnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1jb250YWlu
ZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlk
OwogfQogCi1pbmxpbmUgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1l
bnQpCi0gICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KGRvY3VtZW50KQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVt
ZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhVm9s
dW1lU2xpZGVyQ29udGFpbmVyKQogewogfQogCkBAIC00NDEsMTEgKzM0Nyw2IEBAIHZvaWQgTWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCiAgICAgaGlkZSgpOwogfQogCi1NZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpkaXNwbGF5VHlwZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOwotfQotCiBj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1l
bnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNv
bnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKQEAgLTQ1NCw4
ICszNTUsOCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNv
bnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgYwogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6
TWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAg
IDogTWVkaWFDb250cm9sRWxlbWVudChkb2N1bWVudCkKK01lZGlhQ29udHJvbFN0YXR1c0Rpc3Bs
YXlFbGVtZW50OjpNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudChEb2N1bWVudCogZG9j
dW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYVN0YXR1
c0Rpc3BsYXkpCiAgICAgLCBtX3N0YXRlQmVpbmdEaXNwbGF5ZWQoTm90aGluZykKIHsKIH0KQEAg
LTUwMiw3NyArNDAzLDE2IEBAIHZvaWQgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6
OnVwZGF0ZSgpCiAgICAgfQogfQogCi1NZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBNZWRpYUNvbnRy
b2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6ZGlzcGxheVR5cGUoKSBjb25zdAotewotICAgIHJldHVy
biBNZWRpYVN0YXR1c0Rpc3BsYXk7Ci19Ci0KIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250
cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIHsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250
cm9scy1zdGF0dXMtZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKICAgICByZXR1cm4gaWQ7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LSAgICAKLU1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6TWVkaWFDb250cm9sSW5wdXRFbGVtZW50
KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUp
Ci0gICAgOiBIVE1MSW5wdXRFbGVtZW50KGlucHV0VGFnLCBkb2N1bWVudCwgMCwgZmFsc2UpCi0g
ICAgLCBtX21lZGlhQ29udHJvbGxlcigwKQotICAgICwgbV9kaXNwbGF5VHlwZShkaXNwbGF5VHlw
ZSkKLXsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnNob3coKQotewotICAg
IHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5KTsKLX0KLQotdm9p
ZCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmhpZGUoKQotewotICAgIHNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZU5vbmUpOwotfQotCi0KLXZvaWQg
TWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpzZXREaXNwbGF5VHlwZShNZWRpYUNvbnRyb2xFbGVt
ZW50VHlwZSBkaXNwbGF5VHlwZSkKLXsKLSAgICBpZiAoZGlzcGxheVR5cGUgPT0gbV9kaXNwbGF5
VHlwZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kaXNwbGF5VHlwZSA9IGRpc3BsYXlUeXBl
OwotICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9i
amVjdC0+cmVwYWludCgpOwotfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LWlubGluZSBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sTXV0ZUJ1
dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBk
aXNwbGF5VHlwZSkKLSAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgZGlz
cGxheVR5cGUpCi17Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQotewotICAgIGlmIChldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIG1lZGlhQ29udHJvbGxlcigp
LT5zZXRNdXRlZCghbWVkaWFDb250cm9sbGVyKCktPm11dGVkKCkpOwotICAgICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICB9Ci0KLSAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xNdXRlQnV0dG9u
RWxlbWVudDo6Y2hhbmdlZE11dGUoKQotewotICAgIHVwZGF0ZURpc3BsYXlUeXBlKCk7Ci19Ci0K
LXZvaWQgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkK
LXsKLSAgICBzZXREaXNwbGF5VHlwZShtZWRpYUNvbnRyb2xsZXIoKS0+bXV0ZWQoKSA/IE1lZGlh
VW5NdXRlQnV0dG9uIDogTWVkaWFNdXRlQnV0dG9uKTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi1pbmxpbmUgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVu
dDo6TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQs
IE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQorTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxl
bWVudDo6TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1l
bnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQogICAgIDogTWVkaWFDb250cm9sTXV0ZUJ1dHRv
bkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhTXV0ZUJ1dHRvbikKICAgICAsIG1fY29udHJvbHMoY29u
dHJvbHMpCiB7CkBAIC02MDQsNyArNDQ0LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNv
bnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlck11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0
dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCitNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJN
dXRlQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1l
bnQoZG9jdW1lbnQsIE1lZGlhTXV0ZUJ1dHRvbikKIHsKIH0KQEAgLTYyNSw3ICs0NjUsNyBAQCBj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVt
ZW50OjpzaGFkb3dQc2V1ZG9JZCgpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotaW5saW5lIE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xQbGF5
QnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCitNZWRpYUNvbnRyb2xQbGF5QnV0dG9u
RWxlbWVudDo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYVBsYXlCdXR0
b24pCiB7CiB9CkBAIC02NjQsNyArNTA0LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNv
bnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xPdmVybGF5UGxh
eUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudChEb2N1
bWVudCogZG9jdW1lbnQpCitNZWRpYUNvbnRyb2xPdmVybGF5UGxheUJ1dHRvbkVsZW1lbnQ6Ok1l
ZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAg
ICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhT3ZlcmxheVBsYXlC
dXR0b24pCiB7CiB9CkBAIC02OTEsNyArNTMxLDYgQEAgdm9pZCBNZWRpYUNvbnRyb2xPdmVybGF5
UGxheUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKIHsKICAgICBpZiAobWVkaWFD
b250cm9sbGVyKCktPmNhblBsYXkoKSkgewogICAgICAgICBzaG93KCk7Ci0gICAgICAgIHNldERp
c3BsYXlUeXBlKE1lZGlhT3ZlcmxheVBsYXlCdXR0b24pOwogICAgIH0gZWxzZQogICAgICAgICBo
aWRlKCk7CiB9CkBAIC03MDIsOTAgKzU0MSwxMCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlh
Q29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAog
ICAgIHJldHVybiBpZDsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1p
bmxpbmUgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFNlZWtCdXR0
b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlz
cGxheVR5cGUpCi0gICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIGRpc3Bs
YXlUeXBlKQotICAgICwgbV9hY3Rpb25PblN0b3AoTm90aGluZykKLSAgICAsIG1fc2Vla1R5cGUo
U2tpcCkKLSAgICAsIG1fc2Vla1RpbWVyKHRoaXMsICZNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxl
bWVudDo6c2Vla1RpbWVyRmlyZWQpCi17Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sU2Vla0J1dHRv
bkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQotewotICAgIC8vIFNl
dCB0aGUgbW91c2Vkb3duIGFuZCBtb3VzZXVwIGV2ZW50cyBhcyBkZWZhdWx0SGFuZGxlZCBzbyB0
aGV5Ci0gICAgLy8gZG8gbm90IHRyaWdnZXIgZHJhZyBzdGFydCBvciBlbmQgYWN0aW9ucyBpbiBN
ZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQuCi0gICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLm1vdXNlZG93bkV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1v
dXNldXBFdmVudCkKLSAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci19Ci0KLXZv
aWQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OnNldEFjdGl2ZShib29sIGZsYWcsIGJv
b2wgcGF1c2UpCi17Ci0gICAgaWYgKGZsYWcgPT0gYWN0aXZlKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmIChmbGFnKQotICAgICAgICBzdGFydFRpbWVyKCk7Ci0gICAgZWxzZQotICAgICAg
ICBzdG9wVGltZXIoKTsKLQotICAgIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6c2V0QWN0aXZl
KGZsYWcsIHBhdXNlKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6
c3RhcnRUaW1lcigpCi17Ci0gICAgbV9zZWVrVHlwZSA9IG1lZGlhQ29udHJvbGxlcigpLT5zdXBw
b3J0c1NjYW5uaW5nKCkgPyBTY2FuIDogU2tpcDsKLQotICAgIGlmIChtX3NlZWtUeXBlID09IFNr
aXApIHsKLSAgICAgICAgLy8gU2Vla2luZyBieSBza2lwcGluZyByZXF1aXJlcyB0aGUgdmlkZW8g
dG8gYmUgcGF1c2VkIGR1cmluZyBzZWVraW5nLgotICAgICAgICBtX2FjdGlvbk9uU3RvcCA9IG1l
ZGlhQ29udHJvbGxlcigpLT5wYXVzZWQoKSA/IE5vdGhpbmcgOiBQbGF5OwotICAgICAgICBtZWRp
YUNvbnRyb2xsZXIoKS0+cGF1c2UoKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBTZWVraW5n
IGJ5IHNjYW5uaW5nIHJlcXVpcmVzIHRoZSB2aWRlbyB0byBiZSBwbGF5aW5nIGR1cmluZyBzZWVr
aW5nLgotICAgICAgICBtX2FjdGlvbk9uU3RvcCA9IG1lZGlhQ29udHJvbGxlcigpLT5wYXVzZWQo
KSA/IFBhdXNlIDogTm90aGluZzsKLSAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnBsYXkoKTsK
LSAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldFBsYXliYWNrUmF0ZShuZXh0UmF0ZSgpKTsK
LSAgICB9Ci0KLSAgICBtX3NlZWtUaW1lci5zdGFydCgwLCBtX3NlZWtUeXBlID09IFNraXAgPyBj
U2tpcFJlcGVhdERlbGF5IDogY1NjYW5SZXBlYXREZWxheSk7Ci19Ci0KLXZvaWQgTWVkaWFDb250
cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OnN0b3BUaW1lcigpCi17Ci0gICAgaWYgKG1fc2Vla1R5cGUg
PT0gU2NhbikKLSAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldFBsYXliYWNrUmF0ZShtZWRp
YUNvbnRyb2xsZXIoKS0+ZGVmYXVsdFBsYXliYWNrUmF0ZSgpKTsKLQotICAgIGlmIChtX2FjdGlv
bk9uU3RvcCA9PSBQbGF5KQotICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+cGxheSgpOwotICAg
IGVsc2UgaWYgKG1fYWN0aW9uT25TdG9wID09IFBhdXNlKQotICAgICAgICBtZWRpYUNvbnRyb2xs
ZXIoKS0+cGF1c2UoKTsKLQotICAgIGlmIChtX3NlZWtUaW1lci5pc0FjdGl2ZSgpKQotICAgICAg
ICBtX3NlZWtUaW1lci5zdG9wKCk7Ci19Ci0KLWZsb2F0IE1lZGlhQ29udHJvbFNlZWtCdXR0b25F
bGVtZW50OjpuZXh0UmF0ZSgpIGNvbnN0Ci17Ci0gICAgZmxvYXQgcmF0ZSA9IHN0ZDo6bWluKGNT
Y2FuTWF4aW11bVJhdGUsIGZhYnNmKG1lZGlhQ29udHJvbGxlcigpLT5wbGF5YmFja1JhdGUoKSAq
IDIpKTsKLSAgICBpZiAoIWlzRm9yd2FyZEJ1dHRvbigpKQotICAgICAgICByYXRlICo9IC0xOwot
ICAgIHJldHVybiByYXRlOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50
OjpzZWVrVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudD4qKQot
ewotICAgIGlmIChtX3NlZWtUeXBlID09IFNraXApIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YzsKLSAgICAgICAgZmxvYXQgc2tpcFRpbWUgPSBpc0ZvcndhcmRCdXR0b24oKSA/IGNTa2lwVGlt
ZSA6IC1jU2tpcFRpbWU7Ci0gICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRDdXJyZW50VGlt
ZShtZWRpYUNvbnRyb2xsZXIoKS0+Y3VycmVudFRpbWUoKSArIHNraXBUaW1lLCBlYyk7Ci0gICAg
fSBlbHNlCi0gICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRQbGF5YmFja1JhdGUobmV4dFJh
dGUoKSk7Ci19CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1l
ZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sU2Vla0Zvcndh
cmRCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK01lZGlhQ29udHJvbFNlZWtGb3J3
YXJkQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50KERv
Y3VtZW50KiBkb2N1bWVudCkKICAgICA6IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50KGRv
Y3VtZW50LCBNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKQogewogfQpAQCAtODA2LDcgKzU2NSw3IEBA
IGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50
OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotaW5saW5lIE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudDo6TWVkaWFDb250
cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK01lZGlhQ29udHJv
bFNlZWtCYWNrQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50
KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50
KGRvY3VtZW50LCBNZWRpYVNlZWtCYWNrQnV0dG9uKQogewogfQpAQCAtODI3LDcgKzU4Niw3IEBA
IGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50Ojpz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotaW5saW5lIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFJl
d2luZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorTWVkaWFDb250cm9sUmV3aW5k
QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudChEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlh
UmV3aW5kQnV0dG9uKQogewogfQpAQCAtODQ2LDcgKzYwNSw3IEBAIHZvaWQgTWVkaWFDb250cm9s
UmV3aW5kQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZENvZGU7CiAgICAgICAgIG1lZGlhQ29udHJvbGxl
cigpLT5zZXRDdXJyZW50VGltZShtYXgoMC4wZiwgbWVkaWFDb250cm9sbGVyKCktPmN1cnJlbnRU
aW1lKCkgLSAzMCksIGlnbm9yZWRDb2RlKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7Ci0gICAgfSAgICAKKyAgICB9CiAgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihldmVudCk7CiB9CiAKQEAgLTg1OCw3ICs2MTcsNyBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFD
b250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFJldHVyblRv
UmVhbHRpbWVCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK01lZGlhQ29udHJvbFJl
dHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1l
QnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBNZWRpYUNvbnRyb2xJbnB1
dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhUmV0dXJuVG9SZWFsdGltZUJ1dHRvbikKIHsKIH0KQEAg
LTg4OSwyNyArNjQ4LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xSZXR1cm5U
b1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKQogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0Nv
bnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVu
dChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KGRvY3VtZW50
KQotewotfQotCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVy
RWxlbWVudD4gTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQqIGRvY3VtZW50KQotewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRD
YXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250
cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7Ci0gICAgZWxlbWVu
dC0+aGlkZSgpOwotICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKLX0KLQotY29uc3QgQXRv
bWljU3RyaW5nJiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1jbG9zZWQtY2FwdGlvbnMtY29udGFp
bmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIHJldHVybiBp
ZDsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1pbmxpbmUgTWVkaWFD
b250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xUb2dn
bGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNv
bnRyb2xzKiBjb250cm9scykKK01lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9u
RWxlbWVudDo6TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50KERv
Y3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCiAgICAgOiBNZWRpYUNv
bnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhU2hvd0Nsb3NlZENhcHRpb25zQnV0dG9u
KQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fY29udHJvbHMoY29udHJvbHMpCkBAIC05NjYs
OCArNzA1LDI4IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2Vk
Q2FwdGlvbnNCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JCiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tM
aXN0RWxlbWVudDo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50KERv
Y3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCi0gICAgOiBNZWRpYUNv
bnRyb2xFbGVtZW50KGRvY3VtZW50KQorTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWlu
ZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwg
TWVkaWFDbG9zZWRDYXB0aW9uc0NvbnRhaW5lcikKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbENsb3NlZENh
cHRpb25zQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAg
ICBSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50PiBlbGVt
ZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxl
bWVudChkb2N1bWVudCkpOworICAgIGVsZW1lbnQtPmhpZGUoKTsKKyAgICByZXR1cm4gZWxlbWVu
dC5yZWxlYXNlKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtY2xvc2VkLWNhcHRpb25zLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50
OjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKKyAgICA6IE1lZGlhQ29udHJvbERpdkVs
ZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QpCiAgICAgLCBtX2Nv
bnRyb2xzKGNvbnRyb2xzKQogewogfQpAQCAtOTk4LDcgKzc1Nyw3IEBAIHZvaWQgTWVkaWFDb250
cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVuCiAgICAgICAgIGludCB0cmFja0luZGV4ID0gdHJhY2tMaXN0SW5kZXhGb3JFbGVt
ZW50KHRvRWxlbWVudCh0YXJnZXQpKTsKICAgICAgICAgaWYgKHRyYWNrSW5kZXggPT0gdGV4dFRy
YWNrc0luZGV4Tm90Rm91bmQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAg
ICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50
KHRoaXMpOwogICAgICAgICBpZiAoIW1lZGlhRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTEwMTAsNyArNzY5LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNr
TGlzdEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW4KICAgICAgICAgdXBk
YXRlRGlzcGxheSgpOwogICAgIH0KIAotICAgIE1lZGlhQ29udHJvbEVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoZXZlbnQpOworICAgIE1lZGlhQ29udHJvbERpdkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoZXZlbnQpOwogI2VuZGlmCiB9CiAKQEAgLTEyMjgsMTUgKzk4NywxNCBAQCBj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6c2hhZG93UHNl
dWRvSWQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGlu
ZSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbElucHV0RWxl
bWVudChkb2N1bWVudCwgTWVkaWFWb2x1bWVTbGlkZXIpCi0gICAgLCBtX2NsZWFyTXV0ZWRPblVz
ZXJJbnRlcmFjdGlvbihmYWxzZSkKK01lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVu
dDo6TWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKKyAgICA6IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQoZG9jdW1lbnQpCiB7CiB9
CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4gTWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK1Bhc3NS
ZWZQdHI8TWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xQ
YW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0g
ICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IGFkb3B0
UmVmKG5ldyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAg
UmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudD4gc2xpZGVyID0gYWRv
cHRSZWYobmV3IE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudChkb2N1bWVudCkp
OwogICAgIHNsaWRlci0+Y3JlYXRlU2hhZG93U3VidHJlZSgpOwogICAgIHNsaWRlci0+c2V0VHlw
ZSgicmFuZ2UiKTsKICAgICBzbGlkZXItPnNldEF0dHJpYnV0ZShwcmVjaXNpb25BdHRyLCAiZmxv
YXQiKTsKQEAgLTEyNDQsNTggKzEwMDIsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZQogICAg
IHJldHVybiBzbGlkZXIucmVsZWFzZSgpOwogfQogCi12b2lkIE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQotewotICAgIC8v
IExlZnQgYnV0dG9uIGlzIDAuIFJlamVjdHMgbW91c2UgZXZlbnRzIG5vdCBmcm9tIGxlZnQgYnV0
dG9uLgotICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VF
dmVudCo+KGV2ZW50KS0+YnV0dG9uKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghYXR0
YWNoZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKLQotICAgIGlmIChldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5tb3VzZW91dEV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNl
bW92ZUV2ZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdCB2b2x1bWUgPSBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9Eb3VibGUoKSk7Ci0gICAgaWYgKHZvbHVtZSAhPSBt
ZWRpYUNvbnRyb2xsZXIoKS0+dm9sdW1lKCkpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRWb2x1bWUodm9sdW1lLCBlYyk7Ci0g
ICAgICAgIEFTU0VSVCghZWMpOwotICAgIH0KLSAgICBpZiAobV9jbGVhck11dGVkT25Vc2VySW50
ZXJhY3Rpb24pCi0gICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRNdXRlZChmYWxzZSk7Ci19
Ci0KLWJvb2wgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6d2lsbFJlc3BvbmRUb01v
dXNlTW92ZUV2ZW50cygpCi17Ci0gICAgaWYgKCFhdHRhY2hlZCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXR1cm4gTWVkaWFDb250cm9sSW5wdXRFbGVtZW50Ojp3aWxsUmVzcG9u
ZFRvTW91c2VNb3ZlRXZlbnRzKCk7Ci19Ci0KLWJvb2wgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQotewotICAgIGlmICghYXR0
YWNoZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIE1lZGlhQ29udHJv
bElucHV0RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKTsKLX0KLQotdm9p
ZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1l
KQotewotICAgIGlmICh2YWx1ZSgpLnRvRmxvYXQoKSAhPSB2b2x1bWUpCi0gICAgICAgIHNldFZh
bHVlKFN0cmluZzo6bnVtYmVyKHZvbHVtZSkpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckVsZW1lbnQ6OnNldENsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbihib29sIGNsZWFy
TXV0ZSkKLXsKLSAgICBtX2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbiA9IGNsZWFyTXV0ZTsK
LX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50
OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJv
bFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAogewogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXZvbHVtZS1zbGlkZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CiAgICAgcmV0dXJuIGlkOwpAQCAtMTMwMyw3ICsxMDEwLDcgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNv
bnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lU2xpZGVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCitNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNs
aWRlckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogTWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyRWxlbWVudChkb2N1bWVudCkKIHsKIH0KQEAgLTEzMjYsMTYgKzEwMzMsMTQgQEAgY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVu
dDo6c2hhZG93UHNldWRvSWQoKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LWlubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xz
KikKK01lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBNZWRpYUNvbnRy
b2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhRW50ZXJGdWxsc2NyZWVuQnV0dG9uKQogewog
fQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBBU1NFUlQoY29udHJvbHMpOwotCi0g
ICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBidXR0b24gPSBh
ZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQs
IGNvbnRyb2xzKSk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVt
ZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVs
ZW1lbnQoZG9jdW1lbnQpKTsKICAgICBidXR0b24tPmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKICAg
ICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOwogICAgIGJ1dHRvbi0+aGlkZSgpOwpAQCAtMTM0
NiwxMCArMTA1MSwxMCBAQCB2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKLSAgICAgICAgLy8gT25seSB1c2UgdGhlIG5ldyBmdWxsIHNjcmVlbiBBUEkgaWYgdGhl
IGZ1bGxTY3JlZW5FbmFibGVkIHNldHRpbmcgaGFzIAorICAgICAgICAvLyBPbmx5IHVzZSB0aGUg
bmV3IGZ1bGwgc2NyZWVuIEFQSSBpZiB0aGUgZnVsbFNjcmVlbkVuYWJsZWQgc2V0dGluZyBoYXMK
ICAgICAgICAgLy8gYmVlbiBleHBsaWNpdGx5IGVuYWJsZWQuIE90aGVyd2lzZSwgdXNlIHRoZSBv
bGQgZnVsbHNjcmVlbiBBUEkuIFRoaXMKICAgICAgICAgLy8gYWxsb3dzIGFwcHMgd2hpY2ggZW1i
ZWQgYSBXZWJWaWV3IHRvIHJldGFpbiB0aGUgZXhpc3RpbmcgZnVsbCBzY3JlZW4KLSAgICAgICAg
Ly8gdmlkZW8gaW1wbGVtZW50YXRpb24gd2l0aG91dCByZXF1aXJpbmcgdGhlbSB0byBpbXBsZW1l
bnQgdGhlaXIgb3duIGZ1bGwgCisgICAgICAgIC8vIHZpZGVvIGltcGxlbWVudGF0aW9uIHdpdGhv
dXQgcmVxdWlyaW5nIHRoZW0gdG8gaW1wbGVtZW50IHRoZWlyIG93biBmdWxsCiAgICAgICAgIC8v
IHNjcmVlbiBiZWhhdmlvci4KICAgICAgICAgaWYgKGRvY3VtZW50KCktPnNldHRpbmdzKCkgJiYg
ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkgewogICAgICAgICAg
ICAgaWYgKGRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpICYmIGRvY3VtZW50KCktPndl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IHRvUGFyZW50TWVkaWFFbGVtZW50KHRo
aXMpKQpAQCAtMTM3Nyw3ICsxMDgyLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0
dG9uRWxlbWVudDo6c2V0SXNGdWxsc2NyZWVuKGJvb2wgaXNGdWxsc2NyZWVuKQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lTWluQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1
dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorTWVkaWFDb250cm9sRnVsbHNjcmVlblZv
bHVtZU1pbkJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0
b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IE1lZGlhQ29udHJvbElucHV0RWxl
bWVudChkb2N1bWVudCwgTWVkaWFVbk11dGVCdXR0b24pCiB7CiB9CkBAIC0xNDA4LDcgKzExMTMs
NyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5C
dXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxl
bWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQoRG9jdW1l
bnQqIGRvY3VtZW50KQorTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50KERvY3VtZW50
KiBkb2N1bWVudCkKIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYU11
dGVCdXR0b24pCiB7CiB9CkBAIC0xNDM5LDY3ICsxMTQ0LDE2IEBAIGNvbnN0IEF0b21pY1N0cmlu
ZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY2xhc3MgUmVuZGVy
TWVkaWFDb250cm9sVGltZURpc3BsYXkgOiBwdWJsaWMgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94IHsKLXB1YmxpYzoKLSAgICBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheShOb2RlKik7
Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwotfTsKLQotUmVuZGVyTWVk
aWFDb250cm9sVGltZURpc3BsYXk6OlJlbmRlck1lZGlhQ29udHJvbFRpbWVEaXNwbGF5KE5vZGUq
IG5vZGUpCi0gICAgOiBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gobm9kZSkKLXsKLX0KLQot
Ly8gV2Ugd2FudCB0aGUgdGltZWxpbmUgc2xpZGVyIHRvIGJlIGF0IGxlYXN0IDEwMCBwaXhlbHMg
d2lkZS4KLS8vIEZJWE1FOiBFbGltaW5hdGUgaGFyZC1jb2RlZCB3aWR0aHMgYWx0b2dldGhlci4K
LXN0YXRpYyBjb25zdCBpbnQgbWluV2lkdGhUb0Rpc3BsYXlUaW1lRGlzcGxheXMgPSA0NSArIDEw
MCArIDQ1OwotCi12b2lkIFJlbmRlck1lZGlhQ29udHJvbFRpbWVEaXNwbGF5OjpsYXlvdXQoKQot
ewotICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0KCk7Ci0gICAgUmVuZGVy
Qm94KiB0aW1lbGluZUNvbnRhaW5lckJveCA9IHBhcmVudEJveCgpOwotICAgIHdoaWxlICh0aW1l
bGluZUNvbnRhaW5lckJveCAmJiB0aW1lbGluZUNvbnRhaW5lckJveC0+aXNBbm9ueW1vdXMoKSkK
LSAgICAgICAgdGltZWxpbmVDb250YWluZXJCb3ggPSB0aW1lbGluZUNvbnRhaW5lckJveC0+cGFy
ZW50Qm94KCk7Ci0KLSAgICBpZiAodGltZWxpbmVDb250YWluZXJCb3ggJiYgdGltZWxpbmVDb250
YWluZXJCb3gtPndpZHRoKCkgPCBtaW5XaWR0aFRvRGlzcGxheVRpbWVEaXNwbGF5cykKLSAgICAg
ICAgc2V0V2lkdGgoMCk7Ci19Ci0KLWlubGluZSBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1l
bnQ6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0g
ICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KGRvY3VtZW50KQotICAgICwgbV9jdXJyZW50VmFsdWUo
MCkKLXsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ6OnNldEN1cnJl
bnRWYWx1ZShmbG9hdCB0aW1lKQotewotICAgIG1fY3VycmVudFZhbHVlID0gdGltZTsKLX0KLQot
UmVuZGVyT2JqZWN0KiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorTWVkaWFDb250cm9sVGltZVJl
bWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVs
ZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sVGltZURpc3BsYXlF
bGVtZW50KGRvY3VtZW50LCBNZWRpYVRpbWVSZW1haW5pbmdEaXNwbGF5KQogewotICAgIHJldHVy
biBuZXcgKGFyZW5hKSBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheSh0aGlzKTsKIH0KIAot
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiBQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rp
c3BsYXlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KGRvY3Vt
ZW50KSk7CiB9CiAKLU1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6TWVk
aWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkK
LSAgICA6IE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChkb2N1bWVudCkKLXsKLX0KLQot
TWVkaWFDb250cm9sRWxlbWVudFR5cGUgTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlF
bGVtZW50OjpkaXNwbGF5VHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhVGltZVJlbWFp
bmluZ0Rpc3BsYXk7Ci19Ci0KIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVGltZVJl
bWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiB7CiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJv
bHMtdGltZS1yZW1haW5pbmctZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKQEAgLTE1MDgsMTkgKzExNjIsMTQgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRp
YUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY28K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1QYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlz
cGxheUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50
KSk7Ci19Ci0KIE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDog
TWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50KQorICAgIDogTWVkaWFDb250
cm9sVGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50LCBNZWRpYUN1cnJlbnRUaW1lRGlzcGxheSkK
IHsKIH0KIAotTWVkaWFDb250cm9sRWxlbWVudFR5cGUgTWVkaWFDb250cm9sQ3VycmVudFRpbWVE
aXNwbGF5RWxlbWVudDo6ZGlzcGxheVR5cGUoKSBjb25zdAorUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3Bs
YXlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBNZWRp
YUN1cnJlbnRUaW1lRGlzcGxheTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJv
bEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpzaGFkb3dQc2V1
ZG9JZCgpIGNvbnN0CkBAIC0xNTMzLDMzICsxMTgyLDggQEAgY29uc3QgQXRvbWljU3RyaW5nJiBN
ZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNv
bnMKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAotY2xhc3MgUmVuZGVyVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7Ci1wdWJsaWM6Ci0gICAgUmVuZGVy
VGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChOb2RlKik7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVh
bCB2b2lkIGxheW91dCgpOwotfTsKLQotUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
UmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChOb2RlKiBub2RlKQotICAgIDogUmVuZGVy
QmxvY2sobm9kZSkKLXsKLX0KLQotdm9pZCBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50
OjpsYXlvdXQoKQotewotICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKLSAgICBpZiAoc3R5bGUo
KS0+ZGlzcGxheSgpID09IE5PTkUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtZWRp
YUNvbnRyb2xFbGVtZW50VHlwZShub2RlKCkpID09IE1lZGlhVGV4dFRyYWNrRGlzcGxheUNvbnRh
aW5lcik7Ci0KLSAgICBMYXlvdXRTdGF0ZURpc2FibGVyIGxheW91dFN0YXRlRGlzYWJsZXIodmll
dygpKTsKLSAgICBzdGF0aWNfY2FzdDxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50Kj4obm9kZSgpKS0+dXBkYXRlU2l6ZXMoKTsKLX0KLQotaW5saW5lIE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVs
ZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogTWVkaWFDb250cm9sRWxlbWVudChkb2N1
bWVudCkKK01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVk
aWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFUZXh0VHJhY2tEaXNwbGF5Q29udGFp
bmVyKQogICAgICwgbV9mb250U2l6ZSgwKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKaW5kZXggZTA1MDMyODU0Y2Y5ZjdlZWU5
OGNiNzRkZWE0NWZiOWQ5MDFkM2UxYi4uYjZiYjIxYTliNzRkYWVmODc2ZTQ4Yjc4YmUyYTRjNWQ2
ODJkN2Y1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsODUgKzMxLDEzIEBACiAjZGVmaW5lIE1lZGlh
Q29udHJvbEVsZW1lbnRzX2gKIAogI2lmIEVOQUJMRShWSURFTykKLQotI2luY2x1ZGUgIkhUTUxE
aXZFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgotI2luY2x1ZGUgIk1l
ZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgotI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCi0KLS8v
IFRoZXNlIGFyZSB0aGUgc2hhZG93IGVsZW1lbnRzIHVzZWQgaW4gUmVuZGVyTWVkaWEKKyNpbmNs
dWRlICJNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBFdmVudDsKLWNsYXNzIEZyYW1lOwotY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKLWNs
YXNzIE1lZGlhQ29udHJvbHM7Ci0KLS8vIE11c3QgbWF0Y2ggV2ViS2l0U3lzdGVtSW50ZXJmYWNl
LmgKLWVudW0gTWVkaWFDb250cm9sRWxlbWVudFR5cGUgewotICAgIE1lZGlhRW50ZXJGdWxsc2Ny
ZWVuQnV0dG9uID0gMCwKLSAgICBNZWRpYU11dGVCdXR0b24sCi0gICAgTWVkaWFQbGF5QnV0dG9u
LAotICAgIE1lZGlhU2Vla0JhY2tCdXR0b24sCi0gICAgTWVkaWFTZWVrRm9yd2FyZEJ1dHRvbiwK
LSAgICBNZWRpYVNsaWRlciwKLSAgICBNZWRpYVNsaWRlclRodW1iLAotICAgIE1lZGlhUmV3aW5k
QnV0dG9uLAotICAgIE1lZGlhUmV0dXJuVG9SZWFsdGltZUJ1dHRvbiwKLSAgICBNZWRpYVNob3dD
bG9zZWRDYXB0aW9uc0J1dHRvbiwKLSAgICBNZWRpYUhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiwK
LSAgICBNZWRpYVVuTXV0ZUJ1dHRvbiwKLSAgICBNZWRpYVBhdXNlQnV0dG9uLAotICAgIE1lZGlh
VGltZWxpbmVDb250YWluZXIsCi0gICAgTWVkaWFDdXJyZW50VGltZURpc3BsYXksCi0gICAgTWVk
aWFUaW1lUmVtYWluaW5nRGlzcGxheSwKLSAgICBNZWRpYVN0YXR1c0Rpc3BsYXksCi0gICAgTWVk
aWFDb250cm9sc1BhbmVsLAotICAgIE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyLAotICAgIE1l
ZGlhVm9sdW1lU2xpZGVyLAotICAgIE1lZGlhVm9sdW1lU2xpZGVyVGh1bWIsCi0gICAgTWVkaWFG
dWxsU2NyZWVuVm9sdW1lU2xpZGVyLAotICAgIE1lZGlhRnVsbFNjcmVlblZvbHVtZVNsaWRlclRo
dW1iLAotICAgIE1lZGlhVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbiwKLSAgICBNZWRpYVRleHRUcmFj
a0Rpc3BsYXlDb250YWluZXIsCi0gICAgTWVkaWFUZXh0VHJhY2tEaXNwbGF5LAotICAgIE1lZGlh
RXhpdEZ1bGxzY3JlZW5CdXR0b24sCi0gICAgTWVkaWFPdmVybGF5UGxheUJ1dHRvbiwKLSAgICBN
ZWRpYUNsb3NlZENhcHRpb25zQ29udGFpbmVyLAotICAgIE1lZGlhQ2xvc2VkQ2FwdGlvbnNUcmFj
a0xpc3QsCi19OwotCi1IVE1MTWVkaWFFbGVtZW50KiB0b1BhcmVudE1lZGlhRWxlbWVudChOb2Rl
Kik7Ci1pbmxpbmUgSFRNTE1lZGlhRWxlbWVudCogdG9QYXJlbnRNZWRpYUVsZW1lbnQoUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikgeyByZXR1cm4gdG9QYXJlbnRNZWRpYUVsZW1lbnQocmVuZGVyZXIt
Pm5vZGUoKSk7IH0KLQotTWVkaWFDb250cm9sRWxlbWVudFR5cGUgbWVkaWFDb250cm9sRWxlbWVu
dFR5cGUoTm9kZSopOwotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNsYXNz
IE1lZGlhQ29udHJvbEVsZW1lbnQgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewotcHVibGljOgot
ICAgIHZvaWQgaGlkZSgpOwotICAgIHZvaWQgc2hvdygpOwotICAgIGJvb2wgaXNTaG93aW5nKCkg
Y29uc3Q7Ci0KLSAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBl
KCkgY29uc3QgPSAwOwotCi0gICAgdm9pZCBzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9s
bGVySW50ZXJmYWNlKiBjb250cm9sbGVyKSB7IG1fbWVkaWFDb250cm9sbGVyID0gY29udHJvbGxl
cjsgfQotICAgIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSogbWVkaWFDb250cm9sbGVyKCkgY29u
c3QgeyByZXR1cm4gbV9tZWRpYUNvbnRyb2xsZXI7IH0KLQotcHJvdGVjdGVkOgotICAgIE1lZGlh
Q29udHJvbEVsZW1lbnQoRG9jdW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wg
aXNNZWRpYUNvbnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgTWVk
aWFDb250cm9sbGVySW50ZXJmYWNlKiBtX21lZGlhQ29udHJvbGxlcjsgICAKLX07Ci0KLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgTWVkaWFDb250cm9sUGFuZWxFbGVt
ZW50IDogcHVibGljIE1lZGlhQ29udHJvbEVsZW1lbnQgeworY2xhc3MgTWVkaWFDb250cm9sUGFu
ZWxFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudD4gY3JlYXRlKERvY3Vt
ZW50Kik7CiAKQEAgLTEyMyw5ICs1Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgd2ls
bFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAK
IHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50KERvY3VtZW50Kik7Ci0gICAg
dmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0OwotICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworICAg
IGV4cGxpY2l0IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudChEb2N1bWVudCopOworCisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIAogICAgIHZv
aWQgc3RhcnREcmFnKGNvbnN0IExheW91dFBvaW50JiBldmVudExvY2F0aW9uKTsKQEAgLTE1MCw5
MSArNzksNjkgQEAgcHJpdmF0ZToKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1jbGFzcyBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQgOiBwdWJsaWMgTWVk
aWFDb250cm9sRWxlbWVudCB7CitjbGFzcyBNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1l
bnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRGl2RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50PiBjcmVhdGUo
RG9jdW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVuY2xv
c3VyZUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29u
dHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCopOworICAgIGV4cGxpY2l0IE1l
ZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCopOwogICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwotCi0gICAgdmlydHVh
bCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0OwogfTsKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jbGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJDb250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbEVsZW1lbnQgeworY2xh
c3MgTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250
cm9sRGl2RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xPdmVybGF5
RW5jbG9zdXJlRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgTWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCopOwotICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKik7Ci0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKLSAg
ICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Q7Cisg
ICAgZXhwbGljaXQgTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQoRG9jdW1lbnQq
KTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dDsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY2xhc3MgTWVkaWFD
b250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7
CitjbGFzcyBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQgOiBwdWJsaWMgTWVk
aWFDb250cm9sRGl2RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwotCi0gICAg
dm9pZCB1cGRhdGUoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGlu
ZUNvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiBwcml2YXRlOgotICAgIE1l
ZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50KERvY3VtZW50Kik7Ci0KLSAgICB2aXJ0dWFs
IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CisgICAgZXhwbGlj
aXQgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7CiAKLSAg
ICBlbnVtIFN0YXRlQmVpbmdEaXNwbGF5ZWQgeyBOb3RoaW5nLCBMb2FkaW5nLCBMaXZlQnJvYWRj
YXN0IH07Ci0gICAgU3RhdGVCZWluZ0Rpc3BsYXllZCBtX3N0YXRlQmVpbmdEaXNwbGF5ZWQ7Cisg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZF
UlJJREU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNsYXNzIE1l
ZGlhQ29udHJvbElucHV0RWxlbWVudCA6IHB1YmxpYyBIVE1MSW5wdXRFbGVtZW50IHsKK2NsYXNz
IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFD
b250cm9sRGl2RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgdm9pZCBoaWRlKCk7Ci0gICAgdm9pZCBz
aG93KCk7Ci0KLSAgICBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzcGxheVR5cGU7IH0KLQotICAgIHZvaWQgc2V0TWVkaWFDb250cm9sbGVy
KE1lZGlhQ29udHJvbGxlckludGVyZmFjZSogY29udHJvbGxlcikgeyBtX21lZGlhQ29udHJvbGxl
ciA9IGNvbnRyb2xsZXI7IH0KLSAgICBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIG1lZGlhQ29u
dHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFDb250cm9sbGVyOyB9Ci0KLXByb3RlY3Rl
ZDoKLSAgICBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xF
bGVtZW50VHlwZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xp
ZGVyQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKLSAgICB2b2lkIHNldERp
c3BsYXlUeXBlKE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsKKyAgICB2aXJ0dWFsIGJvb2wgd2ls
bFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNv
bnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNw
bGF5VHlwZSgpIHsgfQotCi0gICAgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBtX21lZGlhQ29u
dHJvbGxlcjsKLSAgICBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBtX2Rpc3BsYXlUeXBlOworICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRl
clN0eWxlKik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsK
KyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBP
VkVSUklERTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY2xhc3Mg
TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRF
bGVtZW50IHsKK2NsYXNzIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50IDogcHVibGlj
IE1lZGlhQ29udHJvbERpdkVsZW1lbnQgewogcHVibGljOgotICAgIHZvaWQgY2hhbmdlZE11dGUo
KTsKLQotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xTdGF0dXNEaXNwbGF5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKLXByb3RlY3RlZDoK
LSAgICBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJv
bEVsZW1lbnRUeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCopOworICAgIHZvaWQgdXBkYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZURpc3BsYXlUeXBlKCk7CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxh
eUVsZW1lbnQoRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworCisgICAgZW51bSBTdGF0ZUJlaW5nRGlz
cGxheWVkIHsgTm90aGluZywgTG9hZGluZywgTGl2ZUJyb2FkY2FzdCB9OworICAgIFN0YXRlQmVp
bmdEaXNwbGF5ZWQgbV9zdGF0ZUJlaW5nRGlzcGxheWVkOwogfTsKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpAQCAtMjQ2LDEwICsxNTMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1l
bnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9s
UGFuZWxNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0gICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CisgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CiAKICAg
ICBNZWRpYUNvbnRyb2xzKiBtX2NvbnRyb2xzOwogfTsKQEAgLTI2MSw5ICsxNjgsOSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1
dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50KERvY3VtZW50Kik7CisgICAgZXhwbGlj
aXQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsK
IAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
IE9WRVJSSURFOwogfTsKIAogCkBAIC0yNzUsMTIgKzE4MiwxMiBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZpcnR1YWwgYm9v
bCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRGlzcGxheVR5cGUoKSBPVkVSUklERTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNv
bnRyb2xQbGF5QnV0dG9uRWxlbWVudChEb2N1bWVudCopOworICAgIGV4cGxpY2l0IE1lZGlhQ29u
dHJvbFBsYXlCdXR0b25FbGVtZW50KERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI5MCwzNyArMTk3LDEyIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xPdmVybGF5UGxheUJ1dHRvbkVsZW1l
bnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKSBPVkVSUklERTsKIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xPdmVybGF5UGxheUJ1dHRvbkVsZW1lbnQoRG9jdW1l
bnQqKTsKIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0OwotfTsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotY2xhc3MgTWVk
aWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVt
ZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCopOwotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KLQotcHJvdGVjdGVkOgotICAgIE1lZGlhQ29udHJvbFNl
ZWtCdXR0b25FbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUpOwotCi1w
cml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc0ZvcndhcmRCdXR0b24oKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sIC8qZmxhZyovID0gdHJ1ZSwgYm9vbCAvKnBh
dXNlKi8gPSBmYWxzZSk7Ci0KLSAgICB2b2lkIHN0YXJ0VGltZXIoKTsKLSAgICB2b2lkIHN0b3BU
aW1lcigpOwotICAgIGZsb2F0IG5leHRSYXRlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZWVrVGltZXJG
aXJlZChUaW1lcjxNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudD4qKTsKLQotICAgIGVudW0g
QWN0aW9uVHlwZSB7IE5vdGhpbmcsIFBsYXksIFBhdXNlIH07Ci0gICAgQWN0aW9uVHlwZSBtX2Fj
dGlvbk9uU3RvcDsKLSAgICBlbnVtIFNlZWtUeXBlIHsgU2tpcCwgU2NhbiB9OwotICAgIFNlZWtU
eXBlIG1fc2Vla1R5cGU7Ci0gICAgVGltZXI8TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ+
IG1fc2Vla1RpbWVyOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1
ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtMzMwLDEwICsyMTIsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7
CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50KERv
Y3VtZW50Kik7CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVt
ZW50KERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGb3J3YXJkQnV0dG9uKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpAQCAtMzQzLDEwICsyMjUsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50
Kik7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50KERv
Y3VtZW50Kik7CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50
KERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGb3J3YXJkQnV0dG9uKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93
UHNldWRvSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93
UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KQEAgLTM1OSw5ICsyNDEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHdp
bGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQog
CiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQq
KTsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50KERvY3VtZW50
Kik7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBj
b25zdCBPVkVSUklERTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAg
LTM3NCwxMCArMjU2LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRU
b01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6
Ci0gICAgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQq
KTsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVu
dChEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3Q7Ci19OyAgICAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
c2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307CiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIApAQCAtMzg1LDEzICsyNjcsMTUgQEAgY2xhc3MgTWVkaWFDb250cm9s
VG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElu
cHV0RWwKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCosIE1lZGlhQ29udHJv
bHMqKTsKIAotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygp
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCopOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgpOwor
ICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgp
IE9WRVJSSURFOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKLSAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKKyAgICBleHBsaWNp
dCBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQq
LCBNZWRpYUNvbnRyb2xzKik7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hh
ZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBN
ZWRpYUNvbnRyb2xzKiBtX2NvbnRyb2xzOwpAQCAtNDAwLDcgKzI4NCw3IEBAIHByaXZhdGU6CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY2xhc3MgTWVkaWFDb250cm9sQ2xv
c2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbEVsZW1lbnQg
eworY2xhc3MgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50IDogcHVi
bGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERv
Y3VtZW50Kik7CiAKQEAgLTQwOSwxMyArMjkzLDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7CiAK
LSAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Qg
eyByZXR1cm4gTWVkaWFDbG9zZWRDYXB0aW9uc0NvbnRhaW5lcjsgfQotICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jbGFzcyBNZWRpYUNvbnRyb2xDbG9z
ZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7
CitjbGFzcyBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQgOiBwdWJs
aWMgTWVkaWFDb250cm9sRGl2RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CiAKQEAgLTQyOCw4ICszMTEsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudChE
b2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKIAotICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxl
bWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYUNsb3NlZENhcHRpb25z
VHJhY2tMaXN0OyB9Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RWxlbWVu
dD4gPiBUcmFja01lbnVJdGVtczsKICAgICBUcmFja01lbnVJdGVtcyBtZW51SXRlbXM7CkBAIC00
NDgsNTkgKzMzMCw1MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREdXJhdGlvbihmbG9hdCk7CiAK
IHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50KERvY3VtZW50KiwgTWVk
aWFDb250cm9scyopOworICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudChE
b2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgTWVkaWFDb250cm9s
cyogbV9jb250cm9sczsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
Y2xhc3MgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRy
b2xJbnB1dEVsZW1lbnQgeworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1l
bnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0
dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCopOwotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91
c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9N
b3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7Ci0gICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpOwot
ICAgIHZvaWQgc2V0Q2xlYXJNdXRlZE9uVXNlckludGVyYWN0aW9uKGJvb2wpOwotCi1wcm90ZWN0
ZWQ6Ci0gICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudChEb2N1bWVudCopOworICAg
IHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNGdWxsc2NyZWVuKGJvb2wpOwog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9J
ZCgpIGNvbnN0OwotICAgIGJvb2wgbV9jbGVhck11dGVkT25Vc2VySW50ZXJhY3Rpb247CisgICAg
ZXhwbGljaXQgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsK
KworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
IE9WRVJSSURFOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jbGFz
cyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRy
b2xJbnB1dEVsZW1lbnQgeworY2xhc3MgTWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVt
ZW50IDogcHVibGljIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50
PiBjcmVhdGUoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lk
IHNldElzRnVsbHNjcmVlbihib29sKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiBwcml2YXRl
OgotICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KERvY3VtZW50KiwgTWVk
aWFDb250cm9scyopOworICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVy
RWxlbWVudChEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CiB9OwotCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKIGNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJF
bGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQgewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlk
ZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKLSAgICAKKwogcHJpdmF0ZToKLSAgICBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChEb2N1bWVudCopOwotICAgIAot
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Owor
ICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50KERv
Y3VtZW50Kik7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRv
SWQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KQEAgLTUwOCwxNCArMzgxLDE0IEBAIHByaXZhdGU6CiBjbGFzcyBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVs
ZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKLSAgICAKKwog
ICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAgICAgdmlydHVh
bCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5C
dXR0b25FbGVtZW50KERvY3VtZW50Kik7Ci0gICAgCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKKworICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwog
fTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTIzLDMyICszOTYsMTcg
QEAgcHJpdmF0ZToKIGNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25F
bGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVs
ZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6Ci0g
ICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQq
KTsKLSAgICAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQo
KSBjb25zdDsKLX07CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1h
eEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi1jbGFzcyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQgOiBwdWJsaWMgTWVk
aWFDb250cm9sRWxlbWVudCB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBzZXRDdXJyZW50VmFsdWUoZmxv
YXQpOwotICAgIGZsb2F0IGN1cnJlbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZh
bHVlOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQo
RG9jdW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotCi0gICAgZmxvYXQgbV9jdXJy
ZW50VmFsdWU7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lk
KCkgY29uc3QgT1ZFUlJJREU7CiB9OwogCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogY2xhc3MgTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50IDogcHVi
bGljIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudCB7CkBAIC01NTYsMTAgKzQxNCw5IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5n
RGlzcGxheUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiBwcml2YXRlOgotICAgIE1lZGlh
Q29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOworICAgIGV4cGxp
Y2l0IE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOwog
Ci0gICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0
OwotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
IE9WRVJSSURFOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTY5
LDE2ICs0MjYsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiBwcml2YXRl
OgotICAgIE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqKTsK
KyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50KERvY3Vt
ZW50Kik7CiAKLSAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBl
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lk
KCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lk
KCkgY29uc3QgT1ZFUlJJREU7CiB9OwotIAorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi1jbGFzcyBNZWRpYUNvbnRyb2xUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbEVsZW1lbnQgeworCitjbGFz
cyBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29u
dHJvbERpdkVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCkBAIC01
ODYsMTggKzQ0MywxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVTaXplcygpOwogCiBwcml2
YXRlOgotICAgIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQq
KTsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KERv
Y3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVu
dFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVRleHRUcmFja0Rpc3BsYXlD
b250YWluZXI7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRv
SWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRv
SWQoKSBjb25zdCBPVkVSUklERTsKIAogICAgIEludFJlY3QgbV92aWRlb0Rpc3BsYXlTaXplOwog
ICAgIGZsb2F0IG1fZm9udFNpemU7CiB9OwogCiAjZW5kaWYKLS8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCmluZGV4IGI1ZTlmZjcwOWJmZDIzNzdiZjJl
NmVkZjM4MWRhMDA2NmY0MGI4ZGMuLmRjYjdkOTE3ZTU2NjZmYjM2OTIwZWQxOGU5N2NlOTFhOTU1
YzYwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3Bw
CkBAIC0xLDYgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCmluZGV4IDI1ODA1
MDJmM2VmZjgwZTE5YWU0YWYyZDkyNDVhODlmYTZlNDE4ZWIuLjk4NjA1NDIxMWY3N2NkMDc4YzFk
YzBiNTAzNzRmMWY0NTQwM2NhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzLmgKQEAgLTEsNiArMSw2IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJvdGVjdGVkOgogICAgIE1lZGlhQ29u
dHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQqIG1fY3VycmVudFRpbWVEaXNwbGF5OwogICAg
IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudCogbV90aW1lbGluZTsKICAgICBNZWRpYUNvbnRy
b2xQYW5lbE11dGVCdXR0b25FbGVtZW50KiBtX3BhbmVsTXV0ZUJ1dHRvbjsKLSAgICBNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KiBtX3ZvbHVtZVNsaWRlcjsKKyAgICBNZWRpYUNvbnRy
b2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQqIG1fdm9sdW1lU2xpZGVyOwogICAgIE1lZGlhQ29u
dHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudCogbV90b2dnbGVDbG9zZWRDYXB0
aW9uc0J1dHRvbjsKICAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudCogbV9m
dWxsU2NyZWVuQnV0dG9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sc0FwcGxlLmNwcAppbmRleCA5MzczM2FlYjhhODZlMjZhN2I1NDUyZjVkNTNlMTgz
OWFiYTg5ZmNjLi41MmQ2NzRjZWRhYzZmZDRiYzY4MTYyOTYwNmVlYTNhNTMxYzRiNzJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAy
MDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2OCw3ICsxNjgsNyBAQCBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbHNBcHBsZT4gTWVkaWFDb250cm9sc0FwcGxlOjpjcmVhdGVDb250cm9scyhEb2N1bWVu
dCogZG9jdQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5lZWRlZCA8
aHR0cDovL3dlYmtpdC5vcmcvYi81NzE2Mz4KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNj
cmVlbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0b24gPSBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7CisgICAg
UmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBmdWxsU2NyZWVuQnV0
dG9uID0gTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCk7CiAgICAgY29udHJvbHMtPm1fZnVsbFNjcmVlbkJ1dHRvbiA9IGZ1bGxTY3JlZW5CdXR0b24u
Z2V0KCk7CiAgICAgcGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxTY3JlZW5CdXR0b24ucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7CiAKQEAgLTE3OCw3ICsxNzgsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bHNBcHBsZT4gTWVkaWFDb250cm9sc0FwcGxlOjpjcmVhdGVDb250cm9scyhEb2N1bWVudCogZG9j
dQogICAgIGlmIChkb2N1bWVudC0+cGFnZSgpLT50aGVtZSgpLT51c2VzTWVkaWFDb250cm9sVm9s
dW1lU2xpZGVyKCkpIHsKICAgICAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNv
bnRhaW5lckVsZW1lbnQ+IHZvbHVtZVNsaWRlckNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAKLSAgICAgICAgUmVm
UHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IE1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IE1lZGlhQ29udHJv
bFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICAgICAgY29u
dHJvbHMtPm1fdm9sdW1lU2xpZGVyID0gc2xpZGVyLmdldCgpOwogICAgICAgICB2b2x1bWVTbGlk
ZXJDb250YWluZXItPmFwcGVuZENoaWxkKHNsaWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKICAg
ICAgICAgaWYgKGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sc0FwcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzQXBwbGUuaAppbmRleCBhMWVlODk2M2NlZmFjMGNkNjEzYmQ5MmYyYTZjNmNmZDlmMzBiODA0
Li45ZTM5MTRjNjgwOTljNWQ1ODQ2Yzg0MThjMjhjMDdiN2UzMDE3MWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaApAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sc0Nocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bHNDaHJvbWl1bS5jcHAKaW5kZXggMjhiNzdjZjdiMjI4NTJiOGU2N2QwNjE0NWEwNzUxODczZDFi
YzYzMS4uNWNhNDY3YTk3MmQzMWI1N2ZkMzRlNWU1YmE4MWU3ZGEyYzg2MmIyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3Bw
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMywzMyArMzMsNiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxl
bWVudDo6TWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1lbnQpCi17Ci19Ci0KLU1lZGlh
Q29udHJvbEVsZW1lbnRUeXBlIE1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudDo6
ZGlzcGxheVR5cGUoKSBjb25zdAotewotICAgIC8vIE1hcHBpbmcgb250byBzYW1lIE1lZGlhQ29u
dHJvbEVsZW1lbnRUeXBlIGFzIHBhbmVsIGVsZW1lbnQsIHNpbmNlIGl0IGhhcyBzaW1pbGFyIHBy
b3BlcnRpZXMuCi0gICAgcmV0dXJuIE1lZGlhQ29udHJvbHNQYW5lbDsKLX0KLQotTWVkaWFDb250
cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50OjpNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1
cmVFbGVtZW50KGRvY3VtZW50KQotewotfQotCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVs
RW5jbG9zdXJlRWxlbWVudD4gTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQqIGRvY3VtZW50KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFD
b250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50KGRvY3VtZW50KSk7Ci19Ci0KLWNvbnN0IEF0b21p
Y1N0cmluZyYgTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9J
ZCgpIGNvbnN0Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAo
Ii13ZWJraXQtbWVkaWEtY29udHJvbHMtZW5jbG9zdXJlIikpOwotICAgIHJldHVybiBpZDsKLX0K
LQogTWVkaWFDb250cm9sc0Nocm9taXVtOjpNZWRpYUNvbnRyb2xzQ2hyb21pdW0oRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgIDogTWVkaWFDb250cm9scyhkb2N1bWVudCkKICAgICAsIG1fZHVyYXRp
b25EaXNwbGF5KDApCkBAIC0xMjgsNyArMTAxLDcgQEAgYm9vbCBNZWRpYUNvbnRyb2xzQ2hyb21p
dW06OmluaXRpYWxpemVDb250cm9scyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgaWYgKGVjKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xp
ZGVyRWxlbWVudD4gc2xpZGVyID0gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJF
bGVtZW50PiBzbGlkZXIgPSBNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCk7CiAgICAgbV92b2x1bWVTbGlkZXIgPSBzbGlkZXIuZ2V0KCk7CiAgICAg
bV92b2x1bWVTbGlkZXItPnNldENsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbih0cnVlKTsKICAg
ICBwYW5lbC0+YXBwZW5kQ2hpbGQoc2xpZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOwpAQCAtMTQz
LDcgKzExNiw3IEBAIGJvb2wgTWVkaWFDb250cm9sc0Nocm9taXVtOjppbml0aWFsaXplQ29udHJv
bHMoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gZnVsbHNj
cmVlbkJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQsIHRoaXMpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9u
RWxlbWVudD4gZnVsbHNjcmVlbkJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25F
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIG1fZnVsbFNjcmVlbkJ1dHRvbiA9IGZ1bGxz
Y3JlZW5CdXR0b24uZ2V0KCk7CiAgICAgcGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxzY3JlZW5CdXR0
b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAgaWYgKGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0uaAppbmRleCBhNjFkZGIxNjEw
NGRmZDRiMzg3ZDJhMDc2Y2Y5ZTJiYzBiZGU2N2JlLi41YzEwNzA4MjA3MzljMjY4ZTAyZWUwNzQ1
MzIxN2FkZmQ0Y2FhZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzQ2hyb21pdW0uaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMjMgKzMzLDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xv
c3VyZUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7Ci1wcm90ZWN0ZWQ6Ci0g
ICAgZXhwbGljaXQgTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50KERvY3VtZW50
Kik7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNw
bGF5VHlwZSgpIGNvbnN0OwotfTsKLQotY2xhc3MgTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVF
bGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudCB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVF
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNZWRp
YUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQoRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKLX07Ci0KIGNsYXNzIE1l
ZGlhQ29udHJvbHNDaHJvbWl1bSA6IHB1YmxpYyBNZWRpYUNvbnRyb2xzIHsKIHB1YmxpYzoKICAg
ICAvLyBDYWxsZWQgZnJvbSBwb3J0LXNwZWNpZmljIHBhcmVudCBjcmVhdGUgZnVuY3Rpb24gdG8g
Y3JlYXRlIGN1c3RvbSBjb250cm9scy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3YmFjMmMw
NGFjYTU5NDg1OGEwMGJlZTZjZjY1ZmE0YTRkZWVhYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0w
LDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwLCAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KFZJREVPKQorI2luY2x1ZGUgIlJlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCisKKyNpbmNs
dWRlICJSZW5kZXJUaGVtZS5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6UmVuZGVyTWVk
aWFWb2x1bWVTbGlkZXJDb250YWluZXIoTm9kZSogbm9kZSkKKyAgICA6IFJlbmRlckJsb2NrKG5v
ZGUpCit7Cit9CisKK3ZvaWQgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI6OmxheW91
dCgpCit7CisgICAgUmVuZGVyQmxvY2s6OmxheW91dCgpOworCisgICAgaWYgKHN0eWxlKCktPmRp
c3BsYXkoKSA9PSBOT05FIHx8ICFuZXh0U2libGluZygpIHx8ICFuZXh0U2libGluZygpLT5pc0Jv
eCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZW5kZXJCb3gqIGJ1dHRvbkJveCA9IHRvUmVu
ZGVyQm94KG5leHRTaWJsaW5nKCkpOworICAgIGludCBhYnNvbHV0ZU9mZnNldFRvcCA9IGJ1dHRv
bkJveC0+bG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQoMCwgLXNpemUoKS5oZWlnaHQoKSkpLnko
KTsKKworICAgIExheW91dFN0YXRlRGlzYWJsZXIgbGF5b3V0U3RhdGVEaXNhYmxlcih2aWV3KCkp
OworCisgICAgLy8gSWYgdGhlIHNsaWRlciB3b3VsZCBiZSByZW5kZXJlZCBvdXRzaWRlIHRoZSBw
YWdlLCBpdCBzaG91bGQgYmUgbW92ZWQgYmVsb3cgdGhlIGNvbnRyb2xzLgorICAgIGlmIChVTkxJ
S0VMWShhYnNvbHV0ZU9mZnNldFRvcCA8IDApKQorICAgICAgICBzZXRZKGJ1dHRvbkJveC0+b2Zm
c2V0VG9wKCkgKyB0aGVtZSgpLT52b2x1bWVTbGlkZXJPZmZzZXRGcm9tTXV0ZUJ1dHRvbihidXR0
b25Cb3gsIHBpeGVsU25hcHBlZFNpemUoKSkueSgpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheTo6UmVuZGVyTWVk
aWFDb250cm9sVGltZURpc3BsYXkoTm9kZSogbm9kZSkKKyAgICA6IFJlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveChub2RlKQoreworfQorCisvLyBXZSB3YW50IHRoZSB0aW1lbGluZSBzbGlkZXIg
dG8gYmUgYXQgbGVhc3QgMTAwIHBpeGVscyB3aWRlLgorLy8gRklYTUU6IEVsaW1pbmF0ZSBoYXJk
LWNvZGVkIHdpZHRocyBhbHRvZ2V0aGVyLgorc3RhdGljIGNvbnN0IGludCBtaW5XaWR0aFRvRGlz
cGxheVRpbWVEaXNwbGF5cyA9IDQ1ICsgMTAwICsgNDU7CisKK3ZvaWQgUmVuZGVyTWVkaWFDb250
cm9sVGltZURpc3BsYXk6OmxheW91dCgpCit7CisgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94OjpsYXlvdXQoKTsKKyAgICBSZW5kZXJCb3gqIHRpbWVsaW5lQ29udGFpbmVyQm94ID0gcGFy
ZW50Qm94KCk7CisgICAgd2hpbGUgKHRpbWVsaW5lQ29udGFpbmVyQm94ICYmIHRpbWVsaW5lQ29u
dGFpbmVyQm94LT5pc0Fub255bW91cygpKQorICAgICAgICB0aW1lbGluZUNvbnRhaW5lckJveCA9
IHRpbWVsaW5lQ29udGFpbmVyQm94LT5wYXJlbnRCb3goKTsKKworICAgIGlmICh0aW1lbGluZUNv
bnRhaW5lckJveCAmJiB0aW1lbGluZUNvbnRhaW5lckJveC0+d2lkdGgoKSA8IG1pbldpZHRoVG9E
aXNwbGF5VGltZURpc3BsYXlzKQorICAgICAgICBzZXRXaWR0aCgwKTsKK30KKworLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCitSZW5k
ZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50KE5vZGUqIG5vZGUpCisgICAgOiBSZW5kZXJCbG9jayhub2RlKQoreworfQorCit2b2lkIFJl
bmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmxheW91dCgpCit7CisgICAgUmVuZGVyQmxv
Y2s6OmxheW91dCgpOworICAgIGlmIChzdHlsZSgpLT5kaXNwbGF5KCkgPT0gTk9ORSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKG5vZGUoKSkg
PT0gTWVkaWFUZXh0VHJhY2tEaXNwbGF5Q29udGFpbmVyKTsKKworICAgIExheW91dFN0YXRlRGlz
YWJsZXIgbGF5b3V0U3RhdGVEaXNhYmxlcih2aWV3KCkpOworICAgIHN0YXRpY19jYXN0PE1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQqPihub2RlKCkpLT51cGRhdGVTaXplcygp
OworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjI2NWQ3MTEyZGFiOGRiYjUzYzQwMDY2OWM3ZDU1NjQ2MTlmZDQzMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5o
CkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlbmRlck1lZGlhQ29udHJvbEVs
ZW1lbnRzX2gKKyNkZWZpbmUgUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHNfaAorCisjaWYgRU5B
QkxFKFZJREVPKQorCisjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKKyNpbmNsdWRl
ICJSZW5kZXJCbG9jay5oIgorI2luY2x1ZGUgIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVy
Q29udGFpbmVyIDogcHVibGljIFJlbmRlckJsb2NrIHsKK3B1YmxpYzoKKyAgICBSZW5kZXJNZWRp
YVZvbHVtZVNsaWRlckNvbnRhaW5lcihOb2RlKik7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2
b2lkIGxheW91dCgpOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitj
bGFzcyBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheSA6IHB1YmxpYyBSZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3ggeworcHVibGljOgorICAgIFJlbmRlck1lZGlhQ29udHJvbFRpbWVEaXNw
bGF5KE5vZGUqKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Cit9Owor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisKK2NsYXNzIFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQgOiBwdWJsaWMgUmVu
ZGVyQmxvY2sgeworcHVibGljOgorICAgIFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQo
Tm9kZSopOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKK307CisKKyNl
bmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShWSURFTykKKworI2VuZGlmIC8vIFJlbmRlck1lZGlhQ29udHJvbEVs
ZW1lbnRzX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmlu
ZGV4IGZhZGQwOTAxMWFmZjk3ZDBlZmU0ODFjYmI3NWIwMmYwZmQ2NTBkZjEuLjFmZmE2YWE2ZWI1
MjA1NGE3MmQ2OTYzNzc3YmE5NmUxNmU5MjQ2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIk1lZGlhQ29u
dHJvbEVsZW1lbnRzLmgiCiAjaW1wb3J0ICJQYWludEluZm8uaCIKICNpbXBvcnQgIlJlbmRlck1l
ZGlhLmgiCisjaW1wb3J0ICJSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogI2ltcG9ydCAi
UmVuZGVyTWVkaWFDb250cm9scy5oIgogI2ltcG9ydCAiUmVuZGVyVmlldy5oIgogI2ltcG9ydCAi
VGltZVJhbmdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cmluZ0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJ
bk9uZS5jcHAKaW5kZXggM2UxNTVkYmEzNzEyMzRkZWM3NzBiMWQwMDMwZGU3NzFlZTZlMmZmZS4u
ZTVmNjI1Njg3Mjg5ZmJhMzU4OTY3OGViMGI0Y2VkZjJhNzdiMzU5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCkBAIC03NCw2ICs3NCw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVyTGlzdE1hcmtlci5jcHAiCiAjaW5jbHVkZSAiUmVuZGVyTWFycXVl
ZS5jcHAiCiAjaW5jbHVkZSAiUmVuZGVyTWVkaWEuY3BwIgorI2luY2x1ZGUgIlJlbmRlck1lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcCIKICNpbmNsdWRlICJSZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCIK
ICNpbmNsdWRlICJSZW5kZXJNZW51TGlzdC5jcHAiCiAjaW5jbHVkZSAiUmVuZGVyTWV0ZXIuY3Bw
Igo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176896</attachid>
            <date>2012-11-29 20:36:39 -0800</date>
            <delta_ts>2012-12-03 18:51:41 -0800</delta_ts>
            <desc>Fix for Android</desc>
            <filename>bug-101877-20121130153417.patch</filename>
            <type>text/plain</type>
            <size>108946</size>
            <attacher name="Silvia Pfeiffer">silviapf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmYyZDQ0ZTU3YTk3OTY5
ZmMxYTVkMWE3ZWY4NDUxYmRkNTQ3NGE4Zi4uYzdlZmZhMzhhYWYxODA2ZTQ0MzVhZTY5ZTVhMTc3
YzM2ODc2NzliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTExLTI5ICBTaWx2
aWEgUGZlaWZmZXIgIDxzaWx2aWFwZkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3Ig
TWVkaWEgQ29udHJvbCBFbGVtZW50cyB0byByZW1vdmUgY29kZSBkdXBsaWNhdGlvbi4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTg3NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgaGF2
aW5nIHR3byBkaWZmZXJlbnQgdHlwZXMgb2YgaW5oZXJpdGFuY2UgdHJlZXMgZm9yCisgICAgICAg
IE1lZGlhQ29udHJvbEVsZW1lbnQgYW5kIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCwgdGhpcwor
ICAgICAgICBjcmVhdGVzIGEgc3RhbmQtYWxvbmUgdmlydHVhbCBjbGFzcyBNZWRpYUNvbnRyb2xF
bGVtZW50IHRoYXQKKyAgICAgICAgcHJvdmlkZXMgdGhlIGNvbW1vbiBmdW5jdGlvbnM6IHNob3co
KSwgaGlkZSgpLCBpc1Nob3dpbmcoKSwKKyAgICAgICAgc2V0TWVkaWFDb250cm9sbGVyKCksIGRp
c3BsYXlUeXBlKCksIGlzTWVkaWFDb250cm9sRWxlbWVudCgpLAorICAgICAgICBzaGFkb3dQc2V1
ZG9JZCgpLCBtZWRpYUNvbnRyb2xsZXIoKSwgc2V0RGlzcGxheVR5cGUoKS4KKworICAgICAgICBU
aGUgaW5kaXZpZHVhbCBlbGVtZW50cyBpbmhlcml0IGZyb20gTWVkaWFDb250cm9sRWxlbWVudCBh
bmQKKyAgICAgICAgZWl0aGVyIEhUTUxJbnB1dEVsZW1lbnQgb3IgSFRNTERpdkVsZW1lbnQuIFRo
ZXkgZXh0ZW5kL292ZXJyaWRlCisgICAgICAgIHRoZSBiYXNlIGZ1bmN0aW9ucyBhcyBhcHByb3By
aWF0ZS4KKworICAgICAgICBBcyBwYXJ0IG9mIHRoaXMsIHRoZSBSZW5kZXJYWFggY2xhc3NlcyBt
aXhlZCBpbiBiZXR3ZWVuIHRoZSBtZWRpYQorICAgICAgICBjb250cm9scyBpbiBNZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAgYXJlIGFsc28gbW92ZWQgdG8KKyAgICAgICAgcmVuZGVyaW5nL1JlbmRl
ck1lZGlhQ29udHJvbHMuaC9jcHAgdG8gZm9sbG93IGNvbW1vbiBjb2RlIHNlcGFyYXRpb24uCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEJ1aWxkIGZpbGVzIGV4dGVuZGVkIHdp
dGggbmV3IGZpbGVzLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmg6Cisg
ICAgICAgIFJlbW92ZWQgY29tbW9uIGZ1bmN0aW9ucyBiZXR3ZWVuIG1lZGlhIGVsZW1lbnRzIHRo
YXQgYXJlIG5vdyBpbiB0aGUgY29tbW9uCisgICAgICAgIGJhc2UgY2xhc3MgTWVkaWFDb250cm9s
RWxlbWVudC4KKyAgICAgICAgQWxzbyBtb3ZlZCBjb21tb24gYmFzZSBjbGFzc2VzIHRvIE1lZGlh
Q29udHJvbEVsZW1lbnRUeXBlcy5oL2NwcAorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudFR5cGVzLmNwcDogbmV3IGZpbGUKKyAgICAgICAgKiBodG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaDogbmV3IGZpbGUKKyAgICAgICAgQWRkZWQgbmV3IE1l
ZGlhQ29udHJvbEVsZW1lbnQgY2xhc3MuIE1vdmVkIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgYW5k
IE1lZGlhQ29udHJvbElucHV0RWxlbWVudAorICAgICAgICBjbGFzc2VzIGludG8gdGhlc2UgZmls
ZXMgZnJvbSBNZWRpYUNvdG5yb2xFbGVtZW50cy5jcHAvaC4gTW92ZWQgTWVkaWFDb250cm9sRWxl
bWVudFR5cGVzIGVudW0KKyAgICAgICAgaW50byB0aGVzZS4gTW92ZWQgb3RoZXIgbWVkaWEgY29u
dHJvbCBlbGVtZW50IGNsYXNzZXMgdGhhdCBhcmUgdGhlIGJhc2lzIGZvciBpbmhlcml0aW5nIG1l
ZGlhCisgICAgICAgIGNvbnRyb2wgZWxlbWVudHMgaW50byB0aGVzZS4KKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6IG5ldyBmaWxlCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmg6IG5ldyBmaWxlCisgICAg
ICAgIE1vdmVkIHJlbmRlcmluZyBjbGFzc2VzIGZvciBtZWRpYSBjb250cm9sIGVsZW1lbnRzIGlu
dG8gdGhlc2UgZmlsZXMgZnJvbQorICAgICAgICBNZWRpYUNvdG5yb2xFbGVtZW50cy5jcHAvaC4K
KworICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHA6CisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmg6CisgICAgICAgIFJlbmFtZWQgTWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCB0byBNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNs
aWRlckVsZW1lbnQKKyAgICAgICAgdG8gYmUgY29uc2lzdGVudCBpbiBpbmhlcml0YW5jZSB0cmVl
LiBVcGRhdGVkIGNvcHlyaWdodCBkYXRlcy5uCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzQ2hyb21pdW0uY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJv
bHNDaHJvbWl1bS5oOgorICAgICAgICBSZW5hbWVkIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVs
ZW1lbnQgdG8gTWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50CisgICAgICAgIHRv
IGJlIGNvbnNpc3RlbnQgaW4gaW5oZXJpdGFuY2UgdHJlZS4KKyAgICAgICAgTW92ZWQgZW5jbG9z
dXJlIGVsZW1lbnQgZGVmaW5pdGlvbnMgdG8gY29tbW9uIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cC9oCisgICAgICAgIGZpbGUgdGhyb3VnaCB3aGljaCBkaWZmZXJlbnQgbWVkaWEgZWxlbWVudHMg
YXJlIG1hZGUgYXZhaWxhYmxlIHRvIGRpZmZlcmVudCBwb3J0cy4KKworICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQuY3BwOgorICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQuaDoKKyAgICAgICAgTW92ZWQgZW5j
bG9zdXJlIGZvciBvdmVybGF5IGJ1dHRvbiB0byBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAvaCBm
aWxlcworICAgICAgICB0aHJvdWdoIHdoaWNoIGRpZmZlcmVudCBtZWRpYSBlbGVtZW50cyBhcmUg
bWFkZSBhdmFpbGFibGUgdG8gZGlmZmVyZW50IHBvcnRzLgorCisgICAgICAgICogaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9scy5jcHA6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
cy5oOgorICAgICAgICBSZW5hbWVkIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQgdG8g
TWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50CisgICAgICAgIHRvIGJlIGNvbnNp
c3RlbnQgaW4gaW5oZXJpdGFuY2UgdHJlZS4gVXBkYXRlZCBjb3B5cmlnaHQgZGF0ZS4KKworICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgQWRkZWQgbmV3IFJl
bmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmggZmlsZS4KKworICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJpbmdBbGxJbk9uZS5jcHA6CisgICAgICAgIEFkZGVkIG5ldyBSZW5kZXJNZWRpYUNvbnRy
b2xFbGVlbW50LmNwcCBmaWxlLgorCiAyMDEyLTExLTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIHBhaW50aW5nIGxvdHMgb2Ygc21hbGwg
cmVjdHMgaW4gV2ViTGF5ZXIgcGFpbnRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjQwYjRh
ZDVmZDMwN2RkNzUzNzIxOTA3NDAzZDRhZjczYjZjNTYzMS4uN2E3NWI4ZDg5YjNiYzAzYWNhNjcy
YjE5NjhiODJjMzY2MTkwYjdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1NDAsOCArMTU0
MCw5IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL3NoYWRvdy9IVE1MU2hhZG93RWxl
bWVudC5jcHAKICAgICBodG1sL3NoYWRvdy9JbWFnZUlubmVyRWxlbWVudC5jcHAKICAgICBodG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKLSAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
LmNwcAorICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKICAgICBo
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKyAgICBodG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzLmNwcAogICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKICAg
ICBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCiAgICAgaHRtbC9zaGFkb3cvUHJv
Z3Jlc3NTaGFkb3dFbGVtZW50LmNwcApAQCAtMjEyMiw2ICsyMTIzLDggQEAgU0VUKFdlYkNvcmVf
U09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAogICAgIHJlbmRlcmlu
Zy9SZW5kZXJNYXJxdWVlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKKyAgICBy
ZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisgICAgcmVuZGVyaW5nL1Jl
bmRlck1lZGlhQ29udHJvbHMuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAog
ICAgIHJlbmRlcmluZy9SZW5kZXJNZXRlci5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyTXVsdGlD
b2x1bW5CbG9jay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDA2N2M3MWM1
ZDA4MzQxYmZmZDE1OTg3YjAyNmMwODI0ZWVhMjI0YjQuLjJjMzY4MGM4OWQ3ZmY3YTYwMGYzYWJk
OWI0OWZjNzE5NzYyMzc0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzU1
MywxMCArMzU1MywxMiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0ltYWdlSW5uZXJFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW1h
Z2VJbm5lckVsZW1lbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9scy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCBc
CisJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgXApAQCAtNDMxNCw2ICs0MzE2LDEwIEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUu
aCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZW51TGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCmluZGV4IDJkNDBhZDBiZDI2NWQ4Nzc1Y2FmNmZjODhkNTUzM2Q0MTZlMzE3OTIuLjQw
OWFkYTg5ZmM5ZWE3NTJhNWJiNTVmMzQyZDYxZDdlNzcyMDE1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAt
MTg2Niw3ICsxODY2LDEwIEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvc2hhZG93L0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmggXAogICAgIGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oIFwK
ICAgICBodG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oIFwKKyAgICBodG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCBcCiAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuaCBcCisgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oIFwKKyAgICBodG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaCBcCiAgICAgaHRtbC9zaGFkb3cvRGV0YWlsc01h
cmtlckNvbnRyb2wuaCBcCiAgICAgaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBcCiAgICAg
aHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmggXApAQCAtMjQwMyw2ICsyNDA2LDgg
QEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmggXAogICAgIHJl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJNYXJxdWVl
LmggXAorICAgIHJlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIFwKKyAgICBy
ZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTWVk
aWEuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmggXAogICAgIHJlbmRlcmluZy9S
ZW5kZXJNZXRlci5oIFwKQEAgLTMyMTcsMTEgKzMyMjIsMTQgQEAgZW5hYmxlPyhWSURFTykgewog
ICAgICAgICBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIFwKICAgICAgICAgaHRtbC9NZWRpYUNv
bnRyb2xsZXIuY3BwIFwKICAgICAgICAgaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcCBc
CisgICAgICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAgXAogICAg
ICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgXAogICAgICAgICBodG1s
L1RpbWVSYW5nZXMuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwIFwKICAgICAgICAgcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcCBcCi0gICAgICAgIHJlbmRl
cmluZy9SZW5kZXJNZWRpYS5jcHAKKyAgICAgICAgcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcCBc
CisgICAgICAgIHJlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCBcCisgICAgICAgIHJl
bmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKIAogICAgIHVzZT8oUVRLSVQp
IHsKICAgICAgICAgSU5DTFVERVBBVEggKz0gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGQ2MjVjMWVm
YTFmOWJhNTkxMmZmOTcxODQzNzNiMGFhMjAyNmI4YzMuLjQ3OTk5OTNhMmUwMzg5NGQ2OGZmOGYw
NTcyMTk3ODhjNDc4YTU4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMzNzIsNiArMzM3Miw4IEBA
CiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuaCcsCiAgICAgICAgICAgICAn
cmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRl
ck1lZGlhLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAn
LAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmgnLAogICAgICAg
ICAgICAgJ3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3BwJywKQEAgLTQ0
MDksNiArNDQxMSw4IEBACiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
aCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAnLAogICAgICAg
ICAgICAgJ2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCcsCisgICAgICAgICAgICAnaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sc0Nocm9taXVtLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDkwNmJhMTYxMTYyYTBjOGZjZGM3N2I1YTZkOGMzYjhkNWVjMjhj
ZWEuLjMxYjBmYWU2NTM5NGMxY2RhODBkNTQ5NmNiOWM3ZjRkMjI5M2VhMzQgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00MTIyMiw2ICs0MTIy
Miw3OCBAQAogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRz
LmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMy
IgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxp
dGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2Vf
Q2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
PgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCisJCQkJPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccmVuZGVyaW5nXFJlbmRlck1lbnVMaXN0LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCkBAIC02NDQwMSw2ICs2NDQ3MywxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgog
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcTWVkaWFDb250cm9s
RWxlbWVudFR5cGVzLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFxzaGFkb3dcTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDg0Mjc4OGE4ZTJiZjEyYWU2YTQ1ZGY2ODI4MDYxYTAyZmJhMjk5ZDIuLjlmOTg0OTlkYjhi
YjYxODQ3ZjUzMWEyMDRkMjg1NzRhNmMyZGVmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYwNDAsNiArNjA0MCwxMCBAQAog
CQlERDc2M0JCMjA5OTJDMkM5MDA3NDBCOEUgLyogbGlieG1sMi5keWxpYiBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERENzYzQkIxMDk5MkMyQzkwMDc0
MEI4RSAvKiBsaWJ4bWwyLmR5bGliICovOyB9OwogCQlERDdDREYyNTBBMjNDRjk4MDAwNjk5Mjgg
LyogQ1NTVW5rbm93blJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4MEU2Q0NFMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NVbmtub3duUnVsZS5oICov
OyB9OwogCQlEREU2M0VENTBCN0Q0NUE4MDAyMjY5OTggLyogRE9NVGV4dEV2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNBMTQ3NTBCN0QxQkFG
MDBBNTNGRkQgLyogRE9NVGV4dEV2ZW50LmggKi87IH07CisJCURFNDlCMzA5MTY1RjJGRTEwMDEw
MzM4RCAvKiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTQ5QjMwNzE2NUYyRkUxMDAxMDMzOEQgLyog
UmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovOyB9OworCQlERUJDQ0REMjE2NjQ2RTgy
MDBBNDUyRTEgLyogUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNDlCMzA4MTY1RjJGRTEwMDEwMzM4RCAv
KiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovOyB9OworCQlERUJDQ0RENDE2NjQ2RUFG
MDBBNDUyRTEgLyogTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTQ5QjMwMDE2NUYyRkM2MDAxMDMzOEQgLyog
TWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmggKi87IH07CisJCURFQkNDREQ1MTY2NDZFQjIwMEE0
NTJFMSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU0OUIyRkYxNjVGMkZDNjAwMTAzMzhEIC8qIE1l
ZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAgKi87IH07CiAJCURGOUFGRDcyMTNGQzMxRDgwMDE1
RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjlBRkQ3MDEzRkMzMUQ4MDAxNUZF
QjcgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oICovOyB9OwogCQlERjlB
RkQ3MzEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGOUFG
RDcxMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tICovOyB9OwogCQlFMEZFRjM3MkIxN0M1M0VBQzFDMUZCRUUgLyogRXZlbnRTb3VyY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUwRkVGMzcxQjE3
QzUzRUFDMUMxRkJFRSAvKiBFdmVudFNvdXJjZS5oICovOyB9OwpAQCAtMTM0ODEsNiArMTM0ODUs
MTAgQEAKIAkJREIyM0MyQ0EwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5k
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRlbnRPdXRkZW50Q29tbWFu
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERDA1RkUwQjBCOEJBM0M2MDA5QUNE
RkUgLyogV2ViQ29yZU9iakNFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkNvcmVPYmpDRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURE
NzYzQkIxMDk5MkMyQzkwMDc0MEI4RSAvKiBsaWJ4bWwyLmR5bGliICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7
IG5hbWUgPSBsaWJ4bWwyLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlieG1sMi5keWxpYjsgc291
cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJREU0OUIyRkYxNjVGMkZDNjAwMTAzMzhEIC8q
IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlERTQ5QjMwMDE2NUYyRkM2MDAxMDMzOEQgLyogTWVkaWFDb250cm9sRWxl
bWVudFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJv
bEVsZW1lbnRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERTQ5QjMwNzE2
NUYyRkUxMDAxMDMzOEQgLyogUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERTQ5QjMwODE2NUYyRkUxMDAxMDMz
OEQgLyogUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJREY5QUZENzAxM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOyBwYXRoID0gb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURGOUFGRDcxMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbTsgcGF0aCA9IG9iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTBGRUYzNzFCMDdDNTNFQUMxQzFGQkVFIC8qIEV2ZW50U291cmNlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBFdmVudFNvdXJjZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNTE4MSw2ICsxNTE4OSw4IEBACiAJCQkJNTcyMTQ1Q0MxNUE1MURBNzAwQUQxMTlDIC8q
IEltYWdlSW5uZXJFbGVtZW50LmggKi8sCiAJCQkJNTdDRjQ5NzIxNEVFMzZENzAwRUNGRjE0IC8q
IEluc2VydGlvblBvaW50LmNwcCAqLywKIAkJCQk1N0NGNDk3MzE0RUUzNkQ3MDBFQ0ZGMTQgLyog
SW5zZXJ0aW9uUG9pbnQuaCAqLywKKwkJCQlERTQ5QjJGRjE2NUYyRkM2MDAxMDMzOEQgLyogTWVk
aWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCAqLywKKwkJCQlERTQ5QjMwMDE2NUYyRkM2MDAxMDMz
OEQgLyogTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmggKi8sCiAJCQkJNDE3MjUzQTgxMzU0QkJC
QzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLywKIAkJCQk0MTcyNTNBOTEz
NTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLywKIAkJCQk0MTU3QUY3
RjEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sc0FwcGxlLmNwcCAqLywKQEAgLTIxNzAx
LDYgKzIxNzExLDggQEAKIAkJCQlFNEMyNzk1NzBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVk
aWEuaCAqLywKIAkJCQk0MUZBMzAzQzEzMTZDMjlDMDBDMEJGQzUgLyogUmVuZGVyTWVkaWFDb250
cm9scy5jcHAgKi8sCiAJCQkJNDFGQTMwM0QxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1lZGlh
Q29udHJvbHMuaCAqLywKKwkJCQlERTQ5QjMwNzE2NUYyRkUxMDAxMDMzOEQgLyogUmVuZGVyTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwICovLAorCQkJCURFNDlCMzA4MTY1RjJGRTEwMDEwMzM4RCAv
KiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovLAogCQkJCUFCRERGRTczMEE1QzZFNkYw
MEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5jcHAgKi8sCiAJCQkJQUJEREZFNzQwQTVDNkU3MDAw
QTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi8sCiAJCQkJQTQ1NDQyNEMxMTlCMzY4NzAwOUJF
OTEyIC8qIFJlbmRlck1ldGVyLmNwcCAqLywKQEAgLTI1ODQ3LDYgKzI1ODU5LDggQEAKIAkJCQkz
MTc0MUFBRDE2NjM2NjA5MDA4QTVCN0UgLyogU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNUI4QjdDOTE2NTJDNTIyMDAzNkVGNTUgLyogSlNXZWJLaXRDU1NNaXhG
dW5jdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Y3MkFGMzE2NjZFREZDMDAyQTAy
QkQgLyogTGF5ZXJQb29sLmggaW4gSGVhZGVycyAqLywKKwkJCQlERUJDQ0REMjE2NjQ2RTgyMDBB
NDUyRTEgLyogUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CURFQkNDREQ0MTY2NDZFQUYwMEE0NTJFMSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMjgyMzgsNiArMjgyNTIsNyBAQAogCQkJCTQzOTA0NkU5MTJEQTI1
RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTRDMjc5NTgwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxRkEzMDNFMTMxNkMyOUMwMEMwQkZDNSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURFNDlCMzA5MTY1RjJGRTEwMDEwMzM4RCAvKiBSZW5k
ZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQkRERkU3OTBB
NUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTQ1NDQyNEUxMTlCMzY4NzAwOUJFOTEyIC8qIFJlbmRlck1ldGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDNDU4MjdGMTUxMjk5QzEwMDYxQTU1NiAvKiBSZW5kZXJNdWx0aUNvbHVtbkJsb2Nr
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg5NTEsNiArMjg5NjYsNyBAQAogCQkJCTE1QjhCN0M4
MTY1MkM1MjIwMDM2RUY1NSAvKiBKU1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODZCQTc2NkUxNjY0MjdBODAwNUJFNUQxIC8qIEZyYW1lTG9hZFJlcXVl
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGNzJBRjQxNjY2RURGQzAwMkEwMkJEIC8qIExh
eWVyUG9vbC5tbSBpbiBTb3VyY2VzICovLAorCQkJCURFQkNDREQ1MTY2NDZFQjIwMEE0NTJFMSAv
KiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZjU3NjlhMjRlMDZkYzhmZjczZmQxMzBiMzk1YjU5NTMyZDQyZjhlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudFR5cGVzLmNwcApAQCAtMCwwICsxLDMzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiTWVkaWFDb250
cm9sRWxlbWVudFR5cGVzLmgiCisKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5j
bHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVk
ZSAiTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlJlbmRlck1lZGlhLmgiCisjaW5jbHVkZSAiUmVu
ZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitjbGFzcyBFdmVudDsKKworLy8gRklYTUU6IFRoZXNl
IGNvbnN0YW50cyBtYXkgbmVlZCB0byBiZSB0d2Vha2VkIHRvIGJldHRlciBtYXRjaCB0aGUgc2Vl
a2luZyBpbiB0aGUgUXVpY2tUaW1lIHBsdWctaW4uCitzdGF0aWMgY29uc3QgZmxvYXQgY1NraXBS
ZXBlYXREZWxheSA9IDAuMWY7CitzdGF0aWMgY29uc3QgZmxvYXQgY1NraXBUaW1lID0gMC4yZjsK
K3N0YXRpYyBjb25zdCBmbG9hdCBjU2NhblJlcGVhdERlbGF5ID0gMS41ZjsKK3N0YXRpYyBjb25z
dCBmbG9hdCBjU2Nhbk1heGltdW1SYXRlID0gODsKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykK
K3N0YXRpYyBjb25zdCBpbnQgdGV4dFRyYWNrc0luZGV4Tm90Rm91bmQgPSAtMjsKKyNlbmRpZgor
CitIVE1MTWVkaWFFbGVtZW50KiB0b1BhcmVudE1lZGlhRWxlbWVudChOb2RlKiBub2RlKQorewor
ICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgTm9kZSogbWVkaWFOb2RlID0g
bm9kZS0+c2hhZG93SG9zdCgpOworICAgIGlmICghbWVkaWFOb2RlKQorICAgICAgICBtZWRpYU5v
ZGUgPSBub2RlOworICAgIGlmICghbWVkaWFOb2RlIHx8ICFtZWRpYU5vZGUtPmlzRWxlbWVudE5v
ZGUoKSB8fCAhc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1lZGlhTm9kZSktPmlzTWVkaWFFbGVtZW50
KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxNZWRp
YUVsZW1lbnQqPihtZWRpYU5vZGUpOworfQorCitNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBtZWRp
YUNvbnRyb2xFbGVtZW50VHlwZShOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlLT5pc01l
ZGlhQ29udHJvbEVsZW1lbnQoKSk7CisgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxF
bGVtZW50KG5vZGUpOworICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbElucHV0RWxlbWVudCo+KGVsZW1l
bnQpLT5kaXNwbGF5VHlwZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxNZWRpYUNvbnRyb2xE
aXZFbGVtZW50Kj4oZWxlbWVudCktPmRpc3BsYXlUeXBlKCk7Cit9CisKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCitjb25zdCBBdG9taWNTdHJpbmcmIHRyYWNrSW5kZXhBdHRyaWJ1dGVOYW1lKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ4LXdlYmtp
dC10cmFjay1pbmRleCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICByZXR1cm4gbmFtZTsKK30KKworaW50IHRyYWNrTGlzdEluZGV4Rm9yRWxlbWVudChFbGVtZW50
KiBlbGVtZW50KQoreworICAgIGNvbnN0IEF0b21pY1N0cmluZyB0cmFja0luZGV4QXR0cmlidXRl
VmFsdWUgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUodHJhY2tJbmRleEF0dHJpYnV0ZU5hbWUoKSk7
CisgICAgaWYgKHRyYWNrSW5kZXhBdHRyaWJ1dGVWYWx1ZS5pc051bGwoKSB8fCB0cmFja0luZGV4
QXR0cmlidXRlVmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdGV4dFRyYWNrc0luZGV4
Tm90Rm91bmQ7CisgICAgYm9vbCBvazsKKyAgICBpbnQgdHJhY2tJbmRleCA9IHRyYWNrSW5kZXhB
dHRyaWJ1dGVWYWx1ZS50b0ludCgmb2spOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiB0
ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZDsKKyAgICByZXR1cm4gdHJhY2tJbmRleDsKK30KKyNlbmRp
ZgorCitNZWRpYUNvbnRyb2xFbGVtZW50OjpNZWRpYUNvbnRyb2xFbGVtZW50KE1lZGlhQ29udHJv
bEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlLCBIVE1MRWxlbWVudCogZWxlbWVudCkKKyAgICA6IG1f
bWVkaWFDb250cm9sbGVyKDApCisgICAgLCBtX2Rpc3BsYXlUeXBlKGRpc3BsYXlUeXBlKQorICAg
ICwgbV9lbGVtZW50KGVsZW1lbnQpCit7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRWxlbWVudDo6
aGlkZSgpCit7CisgICAgbV9lbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5RGlzcGxheSwgQ1NTVmFsdWVOb25lKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbGVtZW50
OjpzaG93KCkKK3sKKyAgICBtX2VsZW1lbnQtPnJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlEaXNwbGF5KTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xFbGVtZW50Ojppc1Nob3dp
bmcoKSBjb25zdAoreworICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnR5U2V0ID0g
bV9lbGVtZW50LT5pbmxpbmVTdHlsZSgpOworICAgIC8vIEZvbGxvd2luZyB0aGUgY29kZSBmcm9t
IHNob3coKSBhbmQgaGlkZSgpIGFib3ZlLCB3ZSBvbmx5IGhhdmUKKyAgICAvLyB0byBjaGVjayBm
b3IgdGhlIHByZXNlbnNlIG9mIGlubGluZSBkaXNwbGF5LgorICAgIHJldHVybiAoIXByb3BlcnR5
U2V0IHx8ICFwcm9wZXJ0eVNldC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpc3Bs
YXkpKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbGVtZW50OjpzZXREaXNwbGF5VHlwZShNZWRp
YUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSkKK3sKKyAgICBpZiAoZGlzcGxheVR5cGUg
PT0gbV9kaXNwbGF5VHlwZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kaXNwbGF5VHlwZSA9
IGRpc3BsYXlUeXBlOworICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IG1fZWxlbWVudC0+
cmVuZGVyZXIoKSkKKyAgICAgICAgb2JqZWN0LT5yZXBhaW50KCk7Cit9CisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTWVkaWFDb250cm9sRGl2RWxlbWVudDo6TWVkaWFDb250
cm9sRGl2RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBl
IGRpc3BsYXlUeXBlKQorICAgIDogSFRNTERpdkVsZW1lbnQoZGl2VGFnLCBkb2N1bWVudCkKKyAg
ICAsIE1lZGlhQ29udHJvbEVsZW1lbnQoZGlzcGxheVR5cGUsIHRoaXMpCit7Cit9CisKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpN
ZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xF
bGVtZW50VHlwZSBkaXNwbGF5VHlwZSkKKyAgICA6IEhUTUxJbnB1dEVsZW1lbnQoaW5wdXRUYWcs
IGRvY3VtZW50LCAwLCBmYWxzZSkKKyAgICAsIE1lZGlhQ29udHJvbEVsZW1lbnQoZGlzcGxheVR5
cGUsIHRoaXMpCit7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTWVk
aWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlw
ZSkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQoZG9jdW1lbnQsIGRpc3BsYXlUeXBlKQor
ICAgICwgbV9jdXJyZW50VmFsdWUoMCkKK3sKK30KKwordm9pZCBNZWRpYUNvbnRyb2xUaW1lRGlz
cGxheUVsZW1lbnQ6OnNldEN1cnJlbnRWYWx1ZShmbG9hdCB0aW1lKQoreworICAgIG1fY3VycmVu
dFZhbHVlID0gdGltZTsKK30KKworUmVuZGVyT2JqZWN0KiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxh
eUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
KQoreworICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxh
eSh0aGlzKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNZWRpYUNv
bnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSkKKyAg
ICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgZGlzcGxheVR5cGUpCit7Cit9
CisKK3ZvaWQgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5jbGlja0V2ZW50KSB7CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRNdXRlZCghbWVk
aWFDb250cm9sbGVyKCktPm11dGVkKCkpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRs
ZWQoKTsKKyAgICB9CisKKyAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KGV2ZW50KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6Y2hhbmdl
ZE11dGUoKQoreworICAgIHVwZGF0ZURpc3BsYXlUeXBlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250
cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKK3sKKyAgICBzZXREaXNw
bGF5VHlwZShtZWRpYUNvbnRyb2xsZXIoKS0+bXV0ZWQoKSA/IE1lZGlhVW5NdXRlQnV0dG9uIDog
TWVkaWFNdXRlQnV0dG9uKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sU2Vla0J1dHRvbkVs
ZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5
VHlwZSkKKyAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgZGlzcGxheVR5
cGUpCisgICAgLCBtX2FjdGlvbk9uU3RvcChOb3RoaW5nKQorICAgICwgbV9zZWVrVHlwZShTa2lw
KQorICAgICwgbV9zZWVrVGltZXIodGhpcywgJk1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50
OjpzZWVrVGltZXJGaXJlZCkKK3sKK30KKwordm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgLy8gU2V0IHRo
ZSBtb3VzZWRvd24gYW5kIG1vdXNldXAgZXZlbnRzIGFzIGRlZmF1bHRIYW5kbGVkIHNvIHRoZXkK
KyAgICAvLyBkbyBub3QgdHJpZ2dlciBkcmFnIHN0YXJ0IG9yIGVuZCBhY3Rpb25zIGluIE1lZGlh
Q29udHJvbFBhbmVsRWxlbWVudC4KKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVz
KCkubW91c2Vkb3duRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2V1
cEV2ZW50KQorICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZmxhZywgYm9vbCBw
YXVzZSkKK3sKKyAgICBpZiAoZmxhZyA9PSBhY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKGZsYWcpCisgICAgICAgIHN0YXJ0VGltZXIoKTsKKyAgICBlbHNlCisgICAgICAgIHN0
b3BUaW1lcigpOworCisgICAgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpzZXRBY3RpdmUoZmxh
ZywgcGF1c2UpOworfQorCit2b2lkIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpzdGFy
dFRpbWVyKCkKK3sKKyAgICBtX3NlZWtUeXBlID0gbWVkaWFDb250cm9sbGVyKCktPnN1cHBvcnRz
U2Nhbm5pbmcoKSA/IFNjYW4gOiBTa2lwOworCisgICAgaWYgKG1fc2Vla1R5cGUgPT0gU2tpcCkg
eworICAgICAgICAvLyBTZWVraW5nIGJ5IHNraXBwaW5nIHJlcXVpcmVzIHRoZSB2aWRlbyB0byBi
ZSBwYXVzZWQgZHVyaW5nIHNlZWtpbmcuCisgICAgICAgIG1fYWN0aW9uT25TdG9wID0gbWVkaWFD
b250cm9sbGVyKCktPnBhdXNlZCgpID8gTm90aGluZyA6IFBsYXk7CisgICAgICAgIG1lZGlhQ29u
dHJvbGxlcigpLT5wYXVzZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFNlZWtpbmcgYnkg
c2Nhbm5pbmcgcmVxdWlyZXMgdGhlIHZpZGVvIHRvIGJlIHBsYXlpbmcgZHVyaW5nIHNlZWtpbmcu
CisgICAgICAgIG1fYWN0aW9uT25TdG9wID0gbWVkaWFDb250cm9sbGVyKCktPnBhdXNlZCgpID8g
UGF1c2UgOiBOb3RoaW5nOworICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+cGxheSgpOworICAg
ICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0UGxheWJhY2tSYXRlKG5leHRSYXRlKCkpOworICAg
IH0KKworICAgIG1fc2Vla1RpbWVyLnN0YXJ0KDAsIG1fc2Vla1R5cGUgPT0gU2tpcCA/IGNTa2lw
UmVwZWF0RGVsYXkgOiBjU2NhblJlcGVhdERlbGF5KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xT
ZWVrQnV0dG9uRWxlbWVudDo6c3RvcFRpbWVyKCkKK3sKKyAgICBpZiAobV9zZWVrVHlwZSA9PSBT
Y2FuKQorICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0UGxheWJhY2tSYXRlKG1lZGlhQ29u
dHJvbGxlcigpLT5kZWZhdWx0UGxheWJhY2tSYXRlKCkpOworCisgICAgaWYgKG1fYWN0aW9uT25T
dG9wID09IFBsYXkpCisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5wbGF5KCk7CisgICAgZWxz
ZSBpZiAobV9hY3Rpb25PblN0b3AgPT0gUGF1c2UpCisgICAgICAgIG1lZGlhQ29udHJvbGxlcigp
LT5wYXVzZSgpOworCisgICAgaWYgKG1fc2Vla1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1f
c2Vla1RpbWVyLnN0b3AoKTsKK30KKworZmxvYXQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1l
bnQ6Om5leHRSYXRlKCkgY29uc3QKK3sKKyAgICBmbG9hdCByYXRlID0gc3RkOjptaW4oY1NjYW5N
YXhpbXVtUmF0ZSwgZmFic2YobWVkaWFDb250cm9sbGVyKCktPnBsYXliYWNrUmF0ZSgpICogMikp
OworICAgIGlmICghaXNGb3J3YXJkQnV0dG9uKCkpCisgICAgICAgIHJhdGUgKj0gLTE7CisgICAg
cmV0dXJuIHJhdGU7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OnNl
ZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50PiopCit7Cisg
ICAgaWYgKG1fc2Vla1R5cGUgPT0gU2tpcCkgeworICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwor
ICAgICAgICBmbG9hdCBza2lwVGltZSA9IGlzRm9yd2FyZEJ1dHRvbigpID8gY1NraXBUaW1lIDog
LWNTa2lwVGltZTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKG1l
ZGlhQ29udHJvbGxlcigpLT5jdXJyZW50VGltZSgpICsgc2tpcFRpbWUsIGVjKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldFBsYXliYWNrUmF0ZShuZXh0UmF0ZSgp
KTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwg
TWVkaWFWb2x1bWVTbGlkZXIpCisgICAgLCBtX2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbihm
YWxzZSkKK3sKK30KKwordm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICAvLyBMZWZ0IGJ1dHRvbiBpcyAw
LiBSZWplY3RzIG1vdXNlIGV2ZW50cyBub3QgZnJvbSBsZWZ0IGJ1dHRvbi4KKyAgICBpZiAoZXZl
bnQtPmlzTW91c2VFdmVudCgpICYmIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1
dHRvbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWF0dGFjaGVkKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcihldmVudCk7CisKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91
c2VvdmVyRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVu
dCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZmxvYXQgdm9sdW1lID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh2
YWx1ZSgpLnRvRG91YmxlKCkpOworICAgIGlmICh2b2x1bWUgIT0gbWVkaWFDb250cm9sbGVyKCkt
PnZvbHVtZSgpKSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBtZWRp
YUNvbnRyb2xsZXIoKS0+c2V0Vm9sdW1lKHZvbHVtZSwgZWMpOworICAgICAgICBBU1NFUlQoIWVj
KTsKKyAgICB9CisgICAgaWYgKG1fY2xlYXJNdXRlZE9uVXNlckludGVyYWN0aW9uKQorICAgICAg
ICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0TXV0ZWQoZmFsc2UpOworfQorCitib29sIE1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKQor
eworICAgIGlmICghYXR0YWNoZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50
cygpOworfQorCitib29sIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OndpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKK3sKKyAgICBpZiAoIWF0dGFjaGVkKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6Ondp
bGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sVm9s
dW1lU2xpZGVyRWxlbWVudDo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKK3sKKyAgICBpZiAodmFs
dWUoKS50b0Zsb2F0KCkgIT0gdm9sdW1lKQorICAgICAgICBzZXRWYWx1ZShTdHJpbmc6Om51bWJl
cih2b2x1bWUpKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50Ojpz
ZXRDbGVhck11dGVkT25Vc2VySW50ZXJhY3Rpb24oYm9vbCBjbGVhck11dGUpCit7CisgICAgbV9j
bGVhck11dGVkT25Vc2VySW50ZXJhY3Rpb24gPSBjbGVhck11dGU7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzI4YjNiM2ExNmY2Nzg2ZDdmZjM4ZWM0YWU4YTI3MDE1ZWU2NmNiNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBl
cy5oCkBAIC0wLDAgKzEsMjE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAy
MDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFDb250
cm9sRWxlbWVudFR5cGVzX2gKKyNkZWZpbmUgTWVkaWFDb250cm9sRWxlbWVudFR5cGVzX2gKKwor
I2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJSZW5kZXJCbG9j
ay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIE11c3QgbWF0Y2ggV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmgKK2VudW0gTWVkaWFDb250cm9sRWxlbWVudFR5cGUgeworICAgIE1lZGlhRW50
ZXJGdWxsc2NyZWVuQnV0dG9uID0gMCwKKyAgICBNZWRpYU11dGVCdXR0b24sCisgICAgTWVkaWFQ
bGF5QnV0dG9uLAorICAgIE1lZGlhU2Vla0JhY2tCdXR0b24sCisgICAgTWVkaWFTZWVrRm9yd2Fy
ZEJ1dHRvbiwKKyAgICBNZWRpYVNsaWRlciwKKyAgICBNZWRpYVNsaWRlclRodW1iLAorICAgIE1l
ZGlhUmV3aW5kQnV0dG9uLAorICAgIE1lZGlhUmV0dXJuVG9SZWFsdGltZUJ1dHRvbiwKKyAgICBN
ZWRpYVNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbiwKKyAgICBNZWRpYUhpZGVDbG9zZWRDYXB0aW9u
c0J1dHRvbiwKKyAgICBNZWRpYVVuTXV0ZUJ1dHRvbiwKKyAgICBNZWRpYVBhdXNlQnV0dG9uLAor
ICAgIE1lZGlhVGltZWxpbmVDb250YWluZXIsCisgICAgTWVkaWFDdXJyZW50VGltZURpc3BsYXks
CisgICAgTWVkaWFUaW1lUmVtYWluaW5nRGlzcGxheSwKKyAgICBNZWRpYVN0YXR1c0Rpc3BsYXks
CisgICAgTWVkaWFDb250cm9sc1BhbmVsLAorICAgIE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVy
LAorICAgIE1lZGlhVm9sdW1lU2xpZGVyLAorICAgIE1lZGlhVm9sdW1lU2xpZGVyVGh1bWIsCisg
ICAgTWVkaWFGdWxsU2NyZWVuVm9sdW1lU2xpZGVyLAorICAgIE1lZGlhRnVsbFNjcmVlblZvbHVt
ZVNsaWRlclRodW1iLAorICAgIE1lZGlhVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbiwKKyAgICBNZWRp
YVRleHRUcmFja0Rpc3BsYXlDb250YWluZXIsCisgICAgTWVkaWFUZXh0VHJhY2tEaXNwbGF5LAor
ICAgIE1lZGlhRXhpdEZ1bGxzY3JlZW5CdXR0b24sCisgICAgTWVkaWFPdmVybGF5UGxheUJ1dHRv
biwKKyAgICBNZWRpYUNsb3NlZENhcHRpb25zQ29udGFpbmVyLAorICAgIE1lZGlhQ2xvc2VkQ2Fw
dGlvbnNUcmFja0xpc3QsCit9OworCitIVE1MTWVkaWFFbGVtZW50KiB0b1BhcmVudE1lZGlhRWxl
bWVudChOb2RlKik7CitpbmxpbmUgSFRNTE1lZGlhRWxlbWVudCogdG9QYXJlbnRNZWRpYUVsZW1l
bnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyByZXR1cm4gdG9QYXJlbnRNZWRpYUVsZW1lbnQo
cmVuZGVyZXItPm5vZGUoKSk7IH0KKworTWVkaWFDb250cm9sRWxlbWVudFR5cGUgbWVkaWFDb250
cm9sRWxlbWVudFR5cGUoTm9kZSopOworCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorY29uc3Qg
QXRvbWljU3RyaW5nJiB0cmFja0luZGV4QXR0cmlidXRlTmFtZSgpOworaW50IHRyYWNrTGlzdElu
ZGV4Rm9yRWxlbWVudChFbGVtZW50Kik7CisjZW5kaWYKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitjbGFzcyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIHZvaWQgaGlkZSgpOworICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CisgICAgdmlydHVh
bCBib29sIGlzU2hvd2luZygpIGNvbnN0OworCisgICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVt
ZW50VHlwZSBkaXNwbGF5VHlwZSgpIHsgcmV0dXJuIG1fZGlzcGxheVR5cGU7IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlckludGVyZmFj
ZSogY29udHJvbGxlcikgeyBtX21lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xsZXI7IH0KKyAgICB2
aXJ0dWFsIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSogbWVkaWFDb250cm9sbGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9tZWRpYUNvbnRyb2xsZXI7IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0
IE1lZGlhQ29udHJvbEVsZW1lbnQoTWVkaWFDb250cm9sRWxlbWVudFR5cGUsIEhUTUxFbGVtZW50
Kik7CisgICAgfk1lZGlhQ29udHJvbEVsZW1lbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBz
ZXREaXNwbGF5VHlwZShNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7CisgICAgdmlydHVhbCBib29s
IGlzTWVkaWFDb250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0
ZToKKyAgICBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIG1fbWVkaWFDb250cm9sbGVyOworICAg
IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIG1fZGlzcGxheVR5cGU7CisgICAgSFRNTEVsZW1lbnQq
IG1fZWxlbWVudDsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xh
c3MgTWVkaWFDb250cm9sRGl2RWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCwgcHVibGlj
IE1lZGlhQ29udHJvbEVsZW1lbnQgeworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgYm9vbCBpc01l
ZGlhQ29udHJvbEVsZW1lbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBNZWRpYUNvbnRyb2xF
bGVtZW50Ojppc01lZGlhQ29udHJvbEVsZW1lbnQoKTsgfQorICAgIGV4cGxpY2l0IE1lZGlhQ29u
dHJvbERpdkVsZW1lbnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7CisKK307
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgTWVkaWFDb250cm9s
SW5wdXRFbGVtZW50IDogcHVibGljIEhUTUxJbnB1dEVsZW1lbnQsIHB1YmxpYyBNZWRpYUNvbnRy
b2xFbGVtZW50IHsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xF
bGVtZW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gTWVkaWFDb250cm9sRWxlbWVudDo6aXNN
ZWRpYUNvbnRyb2xFbGVtZW50KCk7IH0KKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xJbnB1dEVs
ZW1lbnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7CisKK3ByaXZhdGU6Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCkgeyB9Cit9OworCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxl
bWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q3VycmVudFZhbHVlKGZsb2F0KTsKKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJl
bnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9CisKK3Byb3RlY3RlZDoK
KyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqLCBN
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKworICAg
IGZsb2F0IG1fY3VycmVudFZhbHVlOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitjbGFzcyBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRp
YUNvbnRyb2xJbnB1dEVsZW1lbnQgeworcHVibGljOgorICAgIHZvaWQgY2hhbmdlZE11dGUoKTsK
KworICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IE1lZGlhQ29u
dHJvbE11dGVCdXR0b25FbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUp
OworCisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklE
RTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKSBPVkVS
UklERTsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgTWVk
aWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVt
ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tF
dmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBs
aWNpdCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJv
bEVsZW1lbnRUeXBlKTsKKworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KikgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzRm9yd2FyZEJ1
dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wgLypmbGFn
Ki8gPSB0cnVlLCBib29sIC8qcGF1c2UqLyA9IGZhbHNlKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
dGFydFRpbWVyKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BUaW1lcigpOworICAgIHZpcnR1YWwg
ZmxvYXQgbmV4dFJhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vla1RpbWVyRmlyZWQo
VGltZXI8TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ+Kik7CisKKyAgICBlbnVtIEFjdGlv
blR5cGUgeyBOb3RoaW5nLCBQbGF5LCBQYXVzZSB9OworICAgIEFjdGlvblR5cGUgbV9hY3Rpb25P
blN0b3A7CisgICAgZW51bSBTZWVrVHlwZSB7IFNraXAsIFNjYW4gfTsKKyAgICBTZWVrVHlwZSBt
X3NlZWtUeXBlOworICAgIFRpbWVyPE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50PiBtX3Nl
ZWtUaW1lcjsKK307CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFz
cyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElu
cHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3Vz
ZU1vdmVFdmVudHMoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZs
b2F0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xlYXJNdXRlZE9uVXNlckludGVyYWN0aW9uKGJv
b2wpOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
RWxlbWVudChEb2N1bWVudCopOworCisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBib29sIG1fY2xlYXJNdXRlZE9u
VXNlckludGVyYWN0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFZJREVPKQorCisjZW5kaWYgLy8gTWVkaWFDb250cm9sRWxlbWVudFR5cGVzX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRz
LmNwcAppbmRleCA2YWU1NWYzZDkzMDI0MjA5YzM2OTYwMWVkZDliZDdmMTQwMTA1OTU5Li4yYjQ1
N2FmYzM3N2M4NTkzNGY3ZjQyYTVjMTBhNWNkOWVkMTFhY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjksNDAgKzMwLDI1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoVklE
RU8pCi0KICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogCi0jaW5jbHVkZSAiQ1NT
U3R5bGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNs
dWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKLSNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJIVE1MRGl2RWxlbWVu
dC5oIgotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIK
LSNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdz
LmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9scy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCi0jaW5jbHVkZSAiUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgiCi0jaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCi0j
aW5jbHVkZSAiUmVuZGVyTWVkaWEuaCIKKyNpbmNsdWRlICJSZW5kZXJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5oIgogI2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgotI2luY2x1ZGUgIlJlbmRlclRleHQu
aCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCi0j
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKLSNpbmNsdWRl
ICJUZXh0LmgiCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogI2luY2x1ZGUgIlRleHRUcmFjay5o
IgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKQEAgLTcxLDkxICs1NywxNCBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKLQotLy8gRklYTUU6IFRoZXNlIGNvbnN0YW50cyBtYXkgbmVlZCB0byBiZSB0d2Vh
a2VkIHRvIGJldHRlciBtYXRjaCB0aGUgc2Vla2luZyBpbiB0aGUgUXVpY2tUaW1lIHBsdWctaW4u
Ci1zdGF0aWMgY29uc3QgZmxvYXQgY1NraXBSZXBlYXREZWxheSA9IDAuMWY7Ci1zdGF0aWMgY29u
c3QgZmxvYXQgY1NraXBUaW1lID0gMC4yZjsKLXN0YXRpYyBjb25zdCBmbG9hdCBjU2NhblJlcGVh
dERlbGF5ID0gMS41ZjsKLXN0YXRpYyBjb25zdCBmbG9hdCBjU2Nhbk1heGltdW1SYXRlID0gODsK
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIHN0YXRpYyBjb25zdCBjaGFyKiB0ZXh0VHJhY2tz
T2ZmQXR0clZhbHVlID0gIi0xIjsgLy8gVGhpcyBtdXN0IG1hdGNoIEhUTUxNZWRpYUVsZW1lbnQ6
OnRleHRUcmFja3NPZmZJbmRleCgpCiBzdGF0aWMgY29uc3QgaW50IHRleHRUcmFja3NJbmRleE5v
dEZvdW5kID0gLTI7CiAjZW5kaWYKIAotSFRNTE1lZGlhRWxlbWVudCogdG9QYXJlbnRNZWRpYUVs
ZW1lbnQoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOwot
ICAgIE5vZGUqIG1lZGlhTm9kZSA9IG5vZGUtPnNoYWRvd0hvc3QoKTsKLSAgICBpZiAoIW1lZGlh
Tm9kZSkKLSAgICAgICAgbWVkaWFOb2RlID0gbm9kZTsKLSAgICBpZiAoIW1lZGlhTm9kZSB8fCAh
bWVkaWFOb2RlLT5pc0VsZW1lbnROb2RlKCkgfHwgIXN0YXRpY19jYXN0PEVsZW1lbnQqPihtZWRp
YU5vZGUpLT5pc01lZGlhRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obWVkaWFOb2RlKTsKLX0KLQotTWVkaWFD
b250cm9sRWxlbWVudFR5cGUgbWVkaWFDb250cm9sRWxlbWVudFR5cGUoTm9kZSogbm9kZSkKLXsK
LSAgICBBU1NFUlQobm9kZS0+aXNNZWRpYUNvbnRyb2xFbGVtZW50KCkpOwotICAgIEhUTUxFbGVt
ZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChub2RlKTsKLSAgICBpZiAoZWxlbWVudC0+aGFz
VGFnTmFtZShpbnB1dFRhZykpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNZWRpYUNvbnRy
b2xJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+ZGlzcGxheVR5cGUoKTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8TWVkaWFDb250cm9sRWxlbWVudCo+KGVsZW1lbnQpLT5kaXNwbGF5VHlwZSgpOwot
fQotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
dHJhY2tJbmRleEF0dHJpYnV0ZU5hbWUoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBuYW1lLCAoIngtd2Via2l0LXRyYWNrLWluZGV4IiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIHJldHVybiBuYW1lOwotfQotCi1zdGF0aWMgaW50
IHRyYWNrTGlzdEluZGV4Rm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQotewotICAgIGNvbnN0
IEF0b21pY1N0cmluZyB0cmFja0luZGV4QXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LT5nZXRBdHRy
aWJ1dGUodHJhY2tJbmRleEF0dHJpYnV0ZU5hbWUoKSk7Ci0gICAgaWYgKHRyYWNrSW5kZXhBdHRy
aWJ1dGVWYWx1ZS5pc051bGwoKSB8fCB0cmFja0luZGV4QXR0cmlidXRlVmFsdWUuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gdGV4dFRyYWNrc0luZGV4Tm90Rm91bmQ7Ci0gICAgYm9vbCBvazsK
LSAgICBpbnQgdHJhY2tJbmRleCA9IHRyYWNrSW5kZXhBdHRyaWJ1dGVWYWx1ZS50b0ludCgmb2sp
OwotICAgIGlmICghb2spCi0gICAgICAgIHJldHVybiB0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZDsK
LSAgICByZXR1cm4gdHJhY2tJbmRleDsKLX0KLSNlbmRpZgotCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLU1lZGlhQ29udHJvbEVsZW1lbnQ6Ok1lZGlhQ29udHJvbEVsZW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRNTERpdkVsZW1lbnQoZGl2VGFnLCBkb2N1bWVu
dCkKLSAgICAsIG1fbWVkaWFDb250cm9sbGVyKDApCi17Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9s
RWxlbWVudDo6c2hvdygpCi17Ci0gICAgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eURpc3BsYXkpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbEVsZW1lbnQ6OmhpZGUoKQotewot
ICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZU5v
bmUpOwotfQotCi1ib29sIE1lZGlhQ29udHJvbEVsZW1lbnQ6OmlzU2hvd2luZygpIGNvbnN0Ci17
Ci0gICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydHlTZXQgPSBpbmxpbmVTdHlsZSgp
OwotICAgIC8vIEZvbGxvd2luZyB0aGUgY29kZSBmcm9tIHNob3coKSBhbmQgaGlkZSgpIGFib3Zl
LCB3ZSBvbmx5IGhhdmUKLSAgICAvLyB0byBjaGVjayBmb3IgdGhlIHByZXNlbnNlIG9mIGlubGlu
ZSBkaXNwbGF5LgotICAgIHJldHVybiAoIXByb3BlcnR5U2V0IHx8ICFwcm9wZXJ0eVNldC0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpc3BsYXkpKTsKLX0KLQotLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotCi1pbmxpbmUgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpN
ZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogTWVkaWFD
b250cm9sRWxlbWVudChkb2N1bWVudCkKK01lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6TWVkaWFD
b250cm9sUGFuZWxFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJv
bERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ29udHJvbHNQYW5lbCkKICAgICAsIG1fY2FuQmVE
cmFnZ2VkKGZhbHNlKQogICAgICwgbV9pc0JlaW5nRHJhZ2dlZChmYWxzZSkKICAgICAsIG1faXNE
aXNwbGF5ZWQoZmFsc2UpCkBAIC0xNjksMTEgKzc4LDYgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xQYW5lbEVsZW1lbnQ+IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
KgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50KGRvY3Vt
ZW50KSk7CiB9CiAKLU1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIE1lZGlhQ29udHJvbFBhbmVsRWxl
bWVudDo6ZGlzcGxheVR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBNZWRpYUNvbnRyb2xzUGFu
ZWw7Ci19Ci0KIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50Ojpz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CkBAIC0yNDUsNyArMTQ5LDYgQEAgdm9pZCBNZWRpYUNv
bnRyb2xQYW5lbEVsZW1lbnQ6OnN0b3BUaW1lcigpCiAgICAgICAgIG1fdHJhbnNpdGlvblRpbWVy
LnN0b3AoKTsKIH0KIAotCiB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6dHJhbnNpdGlv
blRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50PiopCiB7CiAgICAgaWYg
KCFtX29wYXF1ZSkKQEAgLTMxOCw3ICsyMjEsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxl
bWVudDo6bWFrZVRyYW5zcGFyZW50KCkKIAogdm9pZCBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewotICAgIE1lZGlhQ29udHJvbEVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworICAgIE1lZGlhQ29udHJvbERpdkVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogCiAgICAgaWYgKGV2ZW50LT5pc01v
dXNlRXZlbnQoKSkgewogICAgICAgICBMYXlvdXRQb2ludCBsb2NhdGlvbiA9IHN0YXRpY19jYXN0
PE1vdXNlRXZlbnQqPihldmVudCktPmFic29sdXRlTG9jYXRpb24oKTsKQEAgLTM1Myw2MyArMjU2
LDY2IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpzZXRJc0Rpc3BsYXllZChib29s
IGlzRGlzcGxheWVkKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGlu
ZSBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVs
aW5lQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBNZWRpYUNvbnRy
b2xFbGVtZW50KGRvY3VtZW50KQorTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50OjpN
ZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAg
IC8vIE1hcHBpbmcgb250byBzYW1lIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGFzIHBhbmVsIGVs
ZW1lbnQsIHNpbmNlIGl0IGhhcyBzaW1pbGFyIHByb3BlcnRpZXMuCisgICAgOiBNZWRpYUNvbnRy
b2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCiB7CiB9CiAKLVBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xU
aW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCitQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudD4gTWVkaWFDb250cm9sUGFu
ZWxFbmNsb3N1cmVFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9w
dFJlZihuZXcgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7
Ci0gICAgZWxlbWVudC0+aGlkZSgpOwotICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudChk
b2N1bWVudCkpOwogfQogCi1NZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBNZWRpYUNvbnRyb2xUaW1l
bGluZUNvbnRhaW5lckVsZW1lbnQ6OmRpc3BsYXlUeXBlKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0
cmluZyYgTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1lZGlhVGltZWxpbmVDb250YWluZXI7Ci19Ci0KLWNvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWVuY2xvc3VyZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICByZXR1cm4gaWQ7CiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY2xhc3MgUmVuZGVyTWVkaWFW
b2x1bWVTbGlkZXJDb250YWluZXIgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewotcHVibGljOgotICAg
IFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKE5vZGUqKTsKLQotcHJpdmF0ZToKLSAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci19OworTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3Vy
ZUVsZW1lbnQ6Ok1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKKyAgICAvLyBNYXBwaW5nIG9udG8gc2FtZSBNZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZSBhcyBwYW5lbCBlbGVtZW50LCBzaW5jZSBpdCBoYXMgc2ltaWxhciBwcm9wZXJ0aWVzLgorICAg
IDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1BhbmVsKQor
eworfQogCi1SZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6UmVuZGVyTWVkaWFWb2x1
bWVTbGlkZXJDb250YWluZXIoTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlckJsb2NrKG5vZGUpCitQ
YXNzUmVmUHRyPE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50PiBNZWRpYUNvbnRy
b2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVt
ZW50KGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWlu
ZXI6OmxheW91dCgpCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbE92ZXJsYXlFbmNs
b3N1cmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiB7Ci0gICAgUmVuZGVyQmxvY2s6
OmxheW91dCgpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCIt
d2Via2l0LW1lZGlhLWNvbnRyb2xzLW92ZXJsYXktZW5jbG9zdXJlIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KIAotICAgIGlmIChzdHls
ZSgpLT5kaXNwbGF5KCkgPT0gTk9ORSB8fCAhbmV4dFNpYmxpbmcoKSB8fCAhbmV4dFNpYmxpbmco
KS0+aXNCb3goKSkKLSAgICAgICAgcmV0dXJuOworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi0gICAgUmVuZGVyQm94KiBidXR0b25Cb3ggPSB0b1JlbmRlckJveChuZXh0U2libGlu
ZygpKTsKLSAgICBpbnQgYWJzb2x1dGVPZmZzZXRUb3AgPSBidXR0b25Cb3gtPmxvY2FsVG9BYnNv
bHV0ZShGbG9hdFBvaW50KDAsIC1zaXplKCkuaGVpZ2h0KCkpKS55KCk7CitNZWRpYUNvbnRyb2xU
aW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRv
Y3VtZW50LCBNZWRpYVRpbWVsaW5lQ29udGFpbmVyKQoreworfQogCi0gICAgTGF5b3V0U3RhdGVE
aXNhYmxlciBsYXlvdXRTdGF0ZURpc2FibGVyKHZpZXcoKSk7CitQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sVGltZWxpbmVDb250YWlu
ZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcg
TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgZWxl
bWVudC0+aGlkZSgpOworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KIAotICAgIC8v
IElmIHRoZSBzbGlkZXIgd291bGQgYmUgcmVuZGVyZWQgb3V0c2lkZSB0aGUgcGFnZSwgaXQgc2hv
dWxkIGJlIG1vdmVkIGJlbG93IHRoZSBjb250cm9scy4KLSAgICBpZiAoVU5MSUtFTFkoYWJzb2x1
dGVPZmZzZXRUb3AgPCAwKSkKLSAgICAgICAgc2V0WShidXR0b25Cb3gtPm9mZnNldFRvcCgpICsg
dGhlbWUoKS0+dm9sdW1lU2xpZGVyT2Zmc2V0RnJvbU11dGVCdXR0b24oYnV0dG9uQm94LCBwaXhl
bFNuYXBwZWRTaXplKCkpLnkoKSk7Citjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFRp
bWVsaW5lQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXRpbWVsaW5lLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICByZXR1cm4gaWQ7CiB9CiAKLWlubGluZSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1l
bnQpCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5l
ckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVu
dChkb2N1bWVudCwgTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIpCiB7CiB9CiAKQEAgLTQ0MSwx
MSArMzQ3LDYgQEAgdm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICBoaWRlKCk7CiB9CiAKLU1l
ZGlhQ29udHJvbEVsZW1lbnRUeXBlIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVs
ZW1lbnQ6OmRpc3BsYXlUeXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gTWVkaWFWb2x1bWVTbGlk
ZXJDb250YWluZXI7Ci19Ci0KIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAogewogICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOwpAQCAtNDU0LDggKzM1NSw4IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjCiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbFN0
YXR1c0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudChEb2N1
bWVudCogZG9jdW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KGRvY3VtZW50KQorTWVk
aWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlF
bGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQo
ZG9jdW1lbnQsIE1lZGlhU3RhdHVzRGlzcGxheSkKICAgICAsIG1fc3RhdGVCZWluZ0Rpc3BsYXll
ZChOb3RoaW5nKQogewogfQpAQCAtNTAyLDc3ICs0MDMsMTYgQEAgdm9pZCBNZWRpYUNvbnRyb2xT
dGF0dXNEaXNwbGF5RWxlbWVudDo6dXBkYXRlKCkKICAgICB9CiB9CiAKLU1lZGlhQ29udHJvbEVs
ZW1lbnRUeXBlIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50OjpkaXNwbGF5VHlwZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhU3RhdHVzRGlzcGxheTsKLX0KLQogY29uc3QgQXRv
bWljU3RyaW5nJiBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6c2hhZG93UHNldWRv
SWQoKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwg
KCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXN0YXR1cy1kaXNwbGF5IiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJldHVybiBpZDsKIH0KIAotLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIAotTWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpNZWRp
YUNvbnRyb2xJbnB1dEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xFbGVt
ZW50VHlwZSBkaXNwbGF5VHlwZSkKLSAgICA6IEhUTUxJbnB1dEVsZW1lbnQoaW5wdXRUYWcsIGRv
Y3VtZW50LCAwLCBmYWxzZSkKLSAgICAsIG1fbWVkaWFDb250cm9sbGVyKDApCi0gICAgLCBtX2Rp
c3BsYXlUeXBlKGRpc3BsYXlUeXBlKQotewotfQotCi12b2lkIE1lZGlhQ29udHJvbElucHV0RWxl
bWVudDo6c2hvdygpCi17Ci0gICAgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eURpc3BsYXkpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6aGlkZSgpCi17
Ci0gICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVl
Tm9uZSk7Ci19Ci0KLQotdm9pZCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnNldERpc3BsYXlU
eXBlKE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKQotewotICAgIGlmIChkaXNw
bGF5VHlwZSA9PSBtX2Rpc3BsYXlUeXBlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Rpc3Bs
YXlUeXBlID0gZGlzcGxheVR5cGU7Ci0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVu
ZGVyZXIoKSkKLSAgICAgICAgb2JqZWN0LT5yZXBhaW50KCk7Ci19CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50
OjpNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlh
Q29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKQotICAgIDogTWVkaWFDb250cm9sSW5wdXRF
bGVtZW50KGRvY3VtZW50LCBkaXNwbGF5VHlwZSkKLXsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xN
dXRlQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCi17Ci0g
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAg
ICAgbWVkaWFDb250cm9sbGVyKCktPnNldE11dGVkKCFtZWRpYUNvbnRyb2xsZXIoKS0+bXV0ZWQo
KSk7Ci0gICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgIH0KLQotICAgIEhU
TUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwotfQotCi12b2lkIE1l
ZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpjaGFuZ2VkTXV0ZSgpCi17Ci0gICAgdXBkYXRl
RGlzcGxheVR5cGUoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6
dXBkYXRlRGlzcGxheVR5cGUoKQotewotICAgIHNldERpc3BsYXlUeXBlKG1lZGlhQ29udHJvbGxl
cigpLT5tdXRlZCgpID8gTWVkaWFVbk11dGVCdXR0b24gOiBNZWRpYU11dGVCdXR0b24pOwotfQot
Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWlubGluZSBNZWRpYUNvbnRyb2xQ
YW5lbE11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50
KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCitNZWRpYUNvbnRy
b2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCiAgICAgOiBN
ZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChkb2N1bWVudCwgTWVkaWFNdXRlQnV0dG9uKQog
ICAgICwgbV9jb250cm9scyhjb250cm9scykKIHsKQEAgLTYwNCw3ICs0NDQsNyBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxp
bmUgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK01lZGlh
Q29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBNZWRpYUNv
bnRyb2xNdXRlQnV0dG9uRWxlbWVudChkb2N1bWVudCwgTWVkaWFNdXRlQnV0dG9uKQogewogfQpA
QCAtNjI1LDcgKzQ2NSw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK01l
ZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVu
dChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9j
dW1lbnQsIE1lZGlhUGxheUJ1dHRvbikKIHsKIH0KQEAgLTY2NCw3ICs1MDQsNyBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9J
ZCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1l
ZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sT3ZlcmxheVBs
YXlCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK01lZGlhQ29udHJvbE92ZXJsYXlQ
bGF5QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sT3ZlcmxheVBsYXlCdXR0b25FbGVtZW50KERv
Y3VtZW50KiBkb2N1bWVudCkKICAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVu
dCwgTWVkaWFPdmVybGF5UGxheUJ1dHRvbikKIHsKIH0KQEAgLTY5MSw3ICs1MzEsNiBAQCB2b2lk
IE1lZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxheVR5cGUo
KQogewogICAgIGlmIChtZWRpYUNvbnRyb2xsZXIoKS0+Y2FuUGxheSgpKSB7CiAgICAgICAgIHNo
b3coKTsKLSAgICAgICAgc2V0RGlzcGxheVR5cGUoTWVkaWFPdmVybGF5UGxheUJ1dHRvbik7CiAg
ICAgfSBlbHNlCiAgICAgICAgIGhpZGUoKTsKIH0KQEAgLTcwMiw5MCArNTQxLDEwIEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sT3ZlcmxheVBsYXlCdXR0b25FbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0CiAgICAgcmV0dXJuIGlkOwogfQogCi0vLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLWlubGluZSBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6
TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNv
bnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSkKLSAgICA6IE1lZGlhQ29udHJvbElucHV0RWxl
bWVudChkb2N1bWVudCwgZGlzcGxheVR5cGUpCi0gICAgLCBtX2FjdGlvbk9uU3RvcChOb3RoaW5n
KQotICAgICwgbV9zZWVrVHlwZShTa2lwKQotICAgICwgbV9zZWVrVGltZXIodGhpcywgJk1lZGlh
Q29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpzZWVrVGltZXJGaXJlZCkKLXsKLX0KLQotdm9pZCBN
ZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbnQpCi17Ci0gICAgLy8gU2V0IHRoZSBtb3VzZWRvd24gYW5kIG1vdXNldXAgZXZlbnRzIGFz
IGRlZmF1bHRIYW5kbGVkIHNvIHRoZXkKLSAgICAvLyBkbyBub3QgdHJpZ2dlciBkcmFnIHN0YXJ0
IG9yIGVuZCBhY3Rpb25zIGluIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudC4KLSAgICBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgfHwgZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KQotICAgICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c2V0
QWN0aXZlKGJvb2wgZmxhZywgYm9vbCBwYXVzZSkKLXsKLSAgICBpZiAoZmxhZyA9PSBhY3RpdmUo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGZsYWcpCi0gICAgICAgIHN0YXJ0VGltZXIo
KTsKLSAgICBlbHNlCi0gICAgICAgIHN0b3BUaW1lcigpOwotCi0gICAgTWVkaWFDb250cm9sSW5w
dXRFbGVtZW50OjpzZXRBY3RpdmUoZmxhZywgcGF1c2UpOwotfQotCi12b2lkIE1lZGlhQ29udHJv
bFNlZWtCdXR0b25FbGVtZW50OjpzdGFydFRpbWVyKCkKLXsKLSAgICBtX3NlZWtUeXBlID0gbWVk
aWFDb250cm9sbGVyKCktPnN1cHBvcnRzU2Nhbm5pbmcoKSA/IFNjYW4gOiBTa2lwOwotCi0gICAg
aWYgKG1fc2Vla1R5cGUgPT0gU2tpcCkgewotICAgICAgICAvLyBTZWVraW5nIGJ5IHNraXBwaW5n
IHJlcXVpcmVzIHRoZSB2aWRlbyB0byBiZSBwYXVzZWQgZHVyaW5nIHNlZWtpbmcuCi0gICAgICAg
IG1fYWN0aW9uT25TdG9wID0gbWVkaWFDb250cm9sbGVyKCktPnBhdXNlZCgpID8gTm90aGluZyA6
IFBsYXk7Ci0gICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5wYXVzZSgpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIC8vIFNlZWtpbmcgYnkgc2Nhbm5pbmcgcmVxdWlyZXMgdGhlIHZpZGVvIHRvIGJl
IHBsYXlpbmcgZHVyaW5nIHNlZWtpbmcuCi0gICAgICAgIG1fYWN0aW9uT25TdG9wID0gbWVkaWFD
b250cm9sbGVyKCktPnBhdXNlZCgpID8gUGF1c2UgOiBOb3RoaW5nOwotICAgICAgICBtZWRpYUNv
bnRyb2xsZXIoKS0+cGxheSgpOwotICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0UGxheWJh
Y2tSYXRlKG5leHRSYXRlKCkpOwotICAgIH0KLQotICAgIG1fc2Vla1RpbWVyLnN0YXJ0KDAsIG1f
c2Vla1R5cGUgPT0gU2tpcCA/IGNTa2lwUmVwZWF0RGVsYXkgOiBjU2NhblJlcGVhdERlbGF5KTsK
LX0KLQotdm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c3RvcFRpbWVyKCkKLXsK
LSAgICBpZiAobV9zZWVrVHlwZSA9PSBTY2FuKQotICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+
c2V0UGxheWJhY2tSYXRlKG1lZGlhQ29udHJvbGxlcigpLT5kZWZhdWx0UGxheWJhY2tSYXRlKCkp
OwotCi0gICAgaWYgKG1fYWN0aW9uT25TdG9wID09IFBsYXkpCi0gICAgICAgIG1lZGlhQ29udHJv
bGxlcigpLT5wbGF5KCk7Ci0gICAgZWxzZSBpZiAobV9hY3Rpb25PblN0b3AgPT0gUGF1c2UpCi0g
ICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5wYXVzZSgpOwotCi0gICAgaWYgKG1fc2Vla1RpbWVy
LmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc2Vla1RpbWVyLnN0b3AoKTsKLX0KLQotZmxvYXQgTWVk
aWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Om5leHRSYXRlKCkgY29uc3QKLXsKLSAgICBmbG9h
dCByYXRlID0gc3RkOjptaW4oY1NjYW5NYXhpbXVtUmF0ZSwgZmFic2YobWVkaWFDb250cm9sbGVy
KCktPnBsYXliYWNrUmF0ZSgpICogMikpOwotICAgIGlmICghaXNGb3J3YXJkQnV0dG9uKCkpCi0g
ICAgICAgIHJhdGUgKj0gLTE7Ci0gICAgcmV0dXJuIHJhdGU7Ci19Ci0KLXZvaWQgTWVkaWFDb250
cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OnNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbFNl
ZWtCdXR0b25FbGVtZW50PiopCi17Ci0gICAgaWYgKG1fc2Vla1R5cGUgPT0gU2tpcCkgewotICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICBmbG9hdCBza2lwVGltZSA9IGlzRm9yd2Fy
ZEJ1dHRvbigpID8gY1NraXBUaW1lIDogLWNTa2lwVGltZTsKLSAgICAgICAgbWVkaWFDb250cm9s
bGVyKCktPnNldEN1cnJlbnRUaW1lKG1lZGlhQ29udHJvbGxlcigpLT5jdXJyZW50VGltZSgpICsg
c2tpcFRpbWUsIGVjKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNl
dFBsYXliYWNrUmF0ZShuZXh0UmF0ZSgpKTsKLX0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50OjpN
ZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQor
TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xTZWVrRm9y
d2FyZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogTWVkaWFDb250cm9s
U2Vla0J1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhU2Vla0ZvcndhcmRCdXR0b24pCiB7CiB9
CkBAIC04MDYsNyArNTY1LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xTZWVr
Rm9yd2FyZEJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0
b25FbGVtZW50OjpNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRv
Y3VtZW50KQorTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xT
ZWVrQmFja0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogTWVkaWFDb250
cm9sU2Vla0J1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhU2Vla0JhY2tCdXR0b24pCiB7CiB9
CkBAIC04MjcsNyArNTg2LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xTZWVr
QmFja0J1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxl
bWVudDo6TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQp
CitNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xSZXdpbmRCdXR0
b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IE1lZGlhQ29udHJvbElucHV0RWxl
bWVudChkb2N1bWVudCwgTWVkaWFSZXdpbmRCdXR0b24pCiB7CiB9CkBAIC04NDYsNyArNjA1LDcg
QEAgdm9pZCBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkQ29kZTsKICAg
ICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKG1heCgwLjBmLCBtZWRpYUNv
bnRyb2xsZXIoKS0+Y3VycmVudFRpbWUoKSAtIDMwKSwgaWdub3JlZENvZGUpOwogICAgICAgICBl
dmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICB9ICAgIAorICAgIH0KICAgICBIVE1MSW5w
dXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIApAQCAtODU4LDcgKzYx
Nyw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVu
dDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6
TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQorTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFSZXR1cm5Ub1JlYWx0
aW1lQnV0dG9uKQogewogfQpAQCAtODg5LDI3ICs2NDgsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcm
IE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9J
ZCgpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29u
dHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sQ2xvc2VkQ2Fw
dGlvbnNDb250YWluZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IE1lZGlhQ29u
dHJvbEVsZW1lbnQoZG9jdW1lbnQpCi17Ci19Ci0KLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sQ2xv
c2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0Nv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgUmVmUHRy
PE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVudD4gZWxlbWVudCA9IGFk
b3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQoZG9j
dW1lbnQpKTsKLSAgICBlbGVtZW50LT5oaWRlKCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQucmVsZWFz
ZSgpOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25z
Q29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAotewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWNs
b3NlZC1jYXB0aW9ucy1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0gICAgcmV0dXJuIGlkOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0KLWlubGluZSBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQorTWVkaWFDb250cm9sVG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0
aW9uc0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250
cm9scykKICAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFTaG93
Q2xvc2VkQ2FwdGlvbnNCdXR0b24pCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9jb250cm9s
cyhjb250cm9scykKQEAgLTk2Niw4ICs3MDUsMjggQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRp
YUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0kK
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9s
Q2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9u
c1RyYWNrTGlzdEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250
cm9scykKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1lbnQpCitNZWRpYUNvbnRyb2xD
bG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25z
Q29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xE
aXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNsb3NlZENhcHRpb25zQ29udGFpbmVyKQoreworfQor
CitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVudD4g
TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0Nv
bnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNDb250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgZWxlbWVudC0+aGlkZSgp
OworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVk
b0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQs
ICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1jbG9zZWQtY2FwdGlvbnMtY29udGFpbmVyIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKwor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNZWRpYUNvbnRyb2xDbG9zZWRDYXB0
aW9uc1RyYWNrTGlzdEVsZW1lbnQ6Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0
RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQorICAg
IDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFDbG9zZWRDYXB0aW9uc1Ry
YWNrTGlzdCkKICAgICAsIG1fY29udHJvbHMoY29udHJvbHMpCiB7CiB9CkBAIC05OTgsNyArNzU3
LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW4KICAgICAgICAgaW50IHRyYWNrSW5kZXggPSB0
cmFja0xpc3RJbmRleEZvckVsZW1lbnQodG9FbGVtZW50KHRhcmdldCkpOwogICAgICAgICBpZiAo
dHJhY2tJbmRleCA9PSB0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZCkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgCisKICAgICAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0g
dG9QYXJlbnRNZWRpYUVsZW1lbnQodGhpcyk7CiAgICAgICAgIGlmICghbWVkaWFFbGVtZW50KQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAxMCw3ICs3NjksNyBAQCB2b2lkIE1lZGlhQ29udHJv
bENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZlbgogICAgICAgICB1cGRhdGVEaXNwbGF5KCk7CiAgICAgfQogCi0gICAgTWVkaWFDb250
cm9sRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CisgICAgTWVkaWFDb250cm9s
RGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiAjZW5kaWYKIH0KIApAQCAt
MTIyOCwxNSArOTg3LDE0IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVGltZWxp
bmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6Ok1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDog
TWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYVZvbHVtZVNsaWRlcikKLSAg
ICAsIG1fY2xlYXJNdXRlZE9uVXNlckludGVyYWN0aW9uKGZhbHNlKQorTWVkaWFDb250cm9sUGFu
ZWxWb2x1bWVTbGlkZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxl
bWVudChkb2N1bWVudCkKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVs
ZW1lbnQ+IE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxl
bWVudD4gc2xpZGVyID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1l
bnQoZG9jdW1lbnQpKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJF
bGVtZW50PiBzbGlkZXIgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlk
ZXJFbGVtZW50KGRvY3VtZW50KSk7CiAgICAgc2xpZGVyLT5jcmVhdGVTaGFkb3dTdWJ0cmVlKCk7
CiAgICAgc2xpZGVyLT5zZXRUeXBlKCJyYW5nZSIpOwogICAgIHNsaWRlci0+c2V0QXR0cmlidXRl
KHByZWNpc2lvbkF0dHIsICJmbG9hdCIpOwpAQCAtMTI0NCw1OCArMTAwMiw3IEBAIFBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVm9sdW1lU2xp
ZGVyRWxlbWVudDo6Y3JlCiAgICAgcmV0dXJuIHNsaWRlci5yZWxlYXNlKCk7CiB9CiAKLXZvaWQg
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZlbnQpCi17Ci0gICAgLy8gTGVmdCBidXR0b24gaXMgMC4gUmVqZWN0cyBtb3VzZSBldmVu
dHMgbm90IGZyb20gbGVmdCBidXR0b24uCi0gICAgaWYgKGV2ZW50LT5pc01vdXNlRXZlbnQoKSAm
JiBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5idXR0b24oKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKCFhdHRhY2hlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBNZWRp
YUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwotCi0gICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50IHx8IGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZs
b2F0IHZvbHVtZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodmFsdWUoKS50b0RvdWJsZSgpKTsK
LSAgICBpZiAodm9sdW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT52b2x1bWUoKSkgewotICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldFZv
bHVtZSh2b2x1bWUsIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgfQotICAgIGlmICht
X2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbikKLSAgICAgICAgbWVkaWFDb250cm9sbGVyKCkt
PnNldE11dGVkKGZhbHNlKTsKLX0KLQotYm9vbCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVt
ZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkKLXsKLSAgICBpZiAoIWF0dGFjaGVk
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBNZWRpYUNvbnRyb2xJbnB1
dEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKTsKLX0KLQotYm9vbCBNZWRp
YUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50
cygpCi17Ci0gICAgaWYgKCFhdHRhY2hlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gTWVkaWFDb250cm9sSW5wdXRFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OnNl
dFZvbHVtZShmbG9hdCB2b2x1bWUpCi17Ci0gICAgaWYgKHZhbHVlKCkudG9GbG9hdCgpICE9IHZv
bHVtZSkKLSAgICAgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIodm9sdW1lKSk7Ci19Ci0KLXZv
aWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6c2V0Q2xlYXJNdXRlZE9uVXNlcklu
dGVyYWN0aW9uKGJvb2wgY2xlYXJNdXRlKQotewotICAgIG1fY2xlYXJNdXRlZE9uVXNlckludGVy
YWN0aW9uID0gY2xlYXJNdXRlOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK2NvbnN0IEF0b21p
Y1N0cmluZyYgTWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50OjpzaGFkb3dQc2V1
ZG9JZCgpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlk
LCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICByZXR1cm4gaWQ7CkBAIC0xMzAzLDcgKzEwMTAs
NyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1pbmxpbmUgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6Ok1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKK01lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50OjpNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
OiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KGRvY3VtZW50KQogewogfQpAQCAtMTMy
NiwxNiArMTAzMywxNCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5Wb2x1bWVTbGlkZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpCiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25F
bGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9j
dW1lbnQsIE1lZGlhQ29udHJvbHMqKQorTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKICAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFFbnRlckZ1
bGxzY3JlZW5CdXR0b24pCiB7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVl
bkJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKK1Bhc3NSZWZQ
dHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIEFT
U0VSVChjb250cm9scyk7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRv
bkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0
dG9uRWxlbWVudChkb2N1bWVudCwgY29udHJvbHMpKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudChkb2N1bWVudCkpOwogICAgIGJ1dHRvbi0+Y3JlYXRl
U2hhZG93U3VidHJlZSgpOwogICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CiAgICAgYnV0
dG9uLT5oaWRlKCk7CkBAIC0xMzQ2LDEwICsxMDUxLDEwIEBAIHZvaWQgTWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQog
ewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgICAgICAvLyBPbmx5IHVzZSB0aGUgbmV3IGZ1
bGwgc2NyZWVuIEFQSSBpZiB0aGUgZnVsbFNjcmVlbkVuYWJsZWQgc2V0dGluZyBoYXMgCisgICAg
ICAgIC8vIE9ubHkgdXNlIHRoZSBuZXcgZnVsbCBzY3JlZW4gQVBJIGlmIHRoZSBmdWxsU2NyZWVu
RW5hYmxlZCBzZXR0aW5nIGhhcwogICAgICAgICAvLyBiZWVuIGV4cGxpY2l0bHkgZW5hYmxlZC4g
T3RoZXJ3aXNlLCB1c2UgdGhlIG9sZCBmdWxsc2NyZWVuIEFQSS4gVGhpcwogICAgICAgICAvLyBh
bGxvd3MgYXBwcyB3aGljaCBlbWJlZCBhIFdlYlZpZXcgdG8gcmV0YWluIHRoZSBleGlzdGluZyBm
dWxsIHNjcmVlbgotICAgICAgICAvLyB2aWRlbyBpbXBsZW1lbnRhdGlvbiB3aXRob3V0IHJlcXVp
cmluZyB0aGVtIHRvIGltcGxlbWVudCB0aGVpciBvd24gZnVsbCAKKyAgICAgICAgLy8gdmlkZW8g
aW1wbGVtZW50YXRpb24gd2l0aG91dCByZXF1aXJpbmcgdGhlbSB0byBpbXBsZW1lbnQgdGhlaXIg
b3duIGZ1bGwKICAgICAgICAgLy8gc2NyZWVuIGJlaGF2aW9yLgogICAgICAgICBpZiAoZG9jdW1l
bnQoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVudCgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5h
YmxlZCgpKSB7CiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS0+d2Via2l0SXNGdWxsU2NyZWVu
KCkgJiYgZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgPT0gdG9Q
YXJlbnRNZWRpYUVsZW1lbnQodGhpcykpCkBAIC0xMzc3LDcgKzEwODIsNyBAQCB2b2lkIE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpzZXRJc0Z1bGxzY3JlZW4oYm9vbCBpc0Z1
bGxzY3JlZW4pCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCitNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sRnVs
bHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDog
TWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYVVuTXV0ZUJ1dHRvbikKIHsK
IH0KQEAgLTE0MDgsNyArMTExMyw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkCiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4
QnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCitNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lTWF4QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1
dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1l
bnQoZG9jdW1lbnQsIE1lZGlhTXV0ZUJ1dHRvbikKIHsKIH0KQEAgLTE0MzksNjcgKzExNDQsMTYg
QEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0
dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1jbGFzcyBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheSA6IHB1YmxpYyBSZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3ggewotcHVibGljOgotICAgIFJlbmRlck1lZGlhQ29udHJv
bFRpbWVEaXNwbGF5KE5vZGUqKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0
KCk7Ci19OwotCi1SZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheTo6UmVuZGVyTWVkaWFDb250
cm9sVGltZURpc3BsYXkoTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveChub2RlKQotewotfQotCi0vLyBXZSB3YW50IHRoZSB0aW1lbGluZSBzbGlkZXIgdG8gYmUg
YXQgbGVhc3QgMTAwIHBpeGVscyB3aWRlLgotLy8gRklYTUU6IEVsaW1pbmF0ZSBoYXJkLWNvZGVk
IHdpZHRocyBhbHRvZ2V0aGVyLgotc3RhdGljIGNvbnN0IGludCBtaW5XaWR0aFRvRGlzcGxheVRp
bWVEaXNwbGF5cyA9IDQ1ICsgMTAwICsgNDU7Ci0KLXZvaWQgUmVuZGVyTWVkaWFDb250cm9sVGlt
ZURpc3BsYXk6OmxheW91dCgpCi17Ci0gICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Ojps
YXlvdXQoKTsKLSAgICBSZW5kZXJCb3gqIHRpbWVsaW5lQ29udGFpbmVyQm94ID0gcGFyZW50Qm94
KCk7Ci0gICAgd2hpbGUgKHRpbWVsaW5lQ29udGFpbmVyQm94ICYmIHRpbWVsaW5lQ29udGFpbmVy
Qm94LT5pc0Fub255bW91cygpKQotICAgICAgICB0aW1lbGluZUNvbnRhaW5lckJveCA9IHRpbWVs
aW5lQ29udGFpbmVyQm94LT5wYXJlbnRCb3goKTsKLQotICAgIGlmICh0aW1lbGluZUNvbnRhaW5l
ckJveCAmJiB0aW1lbGluZUNvbnRhaW5lckJveC0+d2lkdGgoKSA8IG1pbldpZHRoVG9EaXNwbGF5
VGltZURpc3BsYXlzKQotICAgICAgICBzZXRXaWR0aCgwKTsKLX0KLQotaW5saW5lIE1lZGlhQ29u
dHJvbFRpbWVEaXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KERv
Y3VtZW50KiBkb2N1bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1lbnQpCi0g
ICAgLCBtX2N1cnJlbnRWYWx1ZSgwKQotewotfQotCi12b2lkIE1lZGlhQ29udHJvbFRpbWVEaXNw
bGF5RWxlbWVudDo6c2V0Q3VycmVudFZhbHVlKGZsb2F0IHRpbWUpCi17Ci0gICAgbV9jdXJyZW50
VmFsdWUgPSB0aW1lOwotfQotCi1SZW5kZXJPYmplY3QqIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSop
CitNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRp
bWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRp
YUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhVGltZVJlbWFpbmluZ0Rp
c3BsYXkpCiB7Ci0gICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlck1lZGlhQ29udHJvbFRpbWVE
aXNwbGF5KHRoaXMpOwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50PiBNZWRpYUNv
bnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1l
bnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5n
RGlzcGxheUVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotTWVkaWFDb250cm9sVGltZVJlbWFpbmlu
Z0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50
KGRvY3VtZW50KQotewotfQotCi1NZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBNZWRpYUNvbnRyb2xU
aW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmRpc3BsYXlUeXBlKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gTWVkaWFUaW1lUmVtYWluaW5nRGlzcGxheTsKLX0KLQogY29uc3QgQXRvbWljU3RyaW5n
JiBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lk
KCkgY29uc3QKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgi
LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwpAQCAtMTUwOCwxOSArMTE2MiwxNCBAQCBjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6
c2hhZG93UHNldWRvSWQoKSBjbwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LVBhc3NSZWZQdHI8TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gTWVkaWFD
b250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlz
cGxheUVsZW1lbnQoZG9jdW1lbnQpKTsKLX0KLQogTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNw
bGF5RWxlbWVudDo6TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1l
bnQpCisgICAgOiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQsIE1lZGlh
Q3VycmVudFRpbWVEaXNwbGF5KQogewogfQogCi1NZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBNZWRp
YUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpkaXNwbGF5VHlwZSgpIGNvbnN0CitQ
YXNzUmVmUHRyPE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IE1lZGlhQ29u
dHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQp
CiB7Ci0gICAgcmV0dXJuIE1lZGlhQ3VycmVudFRpbWVEaXNwbGF5OworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudChkb2N1bWVudCkp
OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxh
eUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKQEAgLTE1MzMsMzMgKzExODIsOCBAQCBj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKCkgY29ucwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCi1jbGFz
cyBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50IDogcHVibGljIFJlbmRlckJsb2NrIHsK
LXB1YmxpYzoKLSAgICBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KE5vZGUqKTsKLQot
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci19OwotCi1SZW5kZXJUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50OjpSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KE5vZGUq
IG5vZGUpCi0gICAgOiBSZW5kZXJCbG9jayhub2RlKQotewotfQotCi12b2lkIFJlbmRlclRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQ6OmxheW91dCgpCi17Ci0gICAgUmVuZGVyQmxvY2s6OmxheW91
dCgpOwotICAgIGlmIChzdHlsZSgpLT5kaXNwbGF5KCkgPT0gTk9ORSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgQVNTRVJUKG1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKG5vZGUoKSkgPT0gTWVkaWFU
ZXh0VHJhY2tEaXNwbGF5Q29udGFpbmVyKTsKLQotICAgIExheW91dFN0YXRlRGlzYWJsZXIgbGF5
b3V0U3RhdGVEaXNhYmxlcih2aWV3KCkpOwotICAgIHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQqPihub2RlKCkpLT51cGRhdGVTaXplcygpOwotfQotCi1p
bmxpbmUgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9s
VGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBNZWRp
YUNvbnRyb2xFbGVtZW50KGRvY3VtZW50KQorTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudDo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCog
ZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYVRl
eHRUcmFja0Rpc3BsYXlDb250YWluZXIpCiAgICAgLCBtX2ZvbnRTaXplKDApCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAppbmRl
eCBlMDUwMzI4NTRjZjlmN2VlZTk4Y2I3NGRlYTQ1ZmI5ZDkwMWQzZTFiLi5iNmJiMjFhOWI3NGRh
ZWY4NzZlNDhiNzhiZTJhNGM1ZDY4MmQ3ZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw4NSArMzEs
MTMgQEAKICNkZWZpbmUgTWVkaWFDb250cm9sRWxlbWVudHNfaAogCiAjaWYgRU5BQkxFKFZJREVP
KQotCi0jaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MSW5wdXRFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAi
UmVuZGVyQmxvY2suaCIKLQotLy8gVGhlc2UgYXJlIHRoZSBzaGFkb3cgZWxlbWVudHMgdXNlZCBp
biBSZW5kZXJNZWRpYQorI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEV2ZW50OwotY2xhc3MgRnJhbWU7Ci1jbGFzcyBI
VE1MTWVkaWFFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sczsKLQotLy8gTXVzdCBtYXRjaCBX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaAotZW51bSBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSB7Ci0g
ICAgTWVkaWFFbnRlckZ1bGxzY3JlZW5CdXR0b24gPSAwLAotICAgIE1lZGlhTXV0ZUJ1dHRvbiwK
LSAgICBNZWRpYVBsYXlCdXR0b24sCi0gICAgTWVkaWFTZWVrQmFja0J1dHRvbiwKLSAgICBNZWRp
YVNlZWtGb3J3YXJkQnV0dG9uLAotICAgIE1lZGlhU2xpZGVyLAotICAgIE1lZGlhU2xpZGVyVGh1
bWIsCi0gICAgTWVkaWFSZXdpbmRCdXR0b24sCi0gICAgTWVkaWFSZXR1cm5Ub1JlYWx0aW1lQnV0
dG9uLAotICAgIE1lZGlhU2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uLAotICAgIE1lZGlhSGlkZUNs
b3NlZENhcHRpb25zQnV0dG9uLAotICAgIE1lZGlhVW5NdXRlQnV0dG9uLAotICAgIE1lZGlhUGF1
c2VCdXR0b24sCi0gICAgTWVkaWFUaW1lbGluZUNvbnRhaW5lciwKLSAgICBNZWRpYUN1cnJlbnRU
aW1lRGlzcGxheSwKLSAgICBNZWRpYVRpbWVSZW1haW5pbmdEaXNwbGF5LAotICAgIE1lZGlhU3Rh
dHVzRGlzcGxheSwKLSAgICBNZWRpYUNvbnRyb2xzUGFuZWwsCi0gICAgTWVkaWFWb2x1bWVTbGlk
ZXJDb250YWluZXIsCi0gICAgTWVkaWFWb2x1bWVTbGlkZXIsCi0gICAgTWVkaWFWb2x1bWVTbGlk
ZXJUaHVtYiwKLSAgICBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIsCi0gICAgTWVkaWFGdWxs
U2NyZWVuVm9sdW1lU2xpZGVyVGh1bWIsCi0gICAgTWVkaWFWb2x1bWVTbGlkZXJNdXRlQnV0dG9u
LAotICAgIE1lZGlhVGV4dFRyYWNrRGlzcGxheUNvbnRhaW5lciwKLSAgICBNZWRpYVRleHRUcmFj
a0Rpc3BsYXksCi0gICAgTWVkaWFFeGl0RnVsbHNjcmVlbkJ1dHRvbiwKLSAgICBNZWRpYU92ZXJs
YXlQbGF5QnV0dG9uLAotICAgIE1lZGlhQ2xvc2VkQ2FwdGlvbnNDb250YWluZXIsCi0gICAgTWVk
aWFDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdCwKLX07Ci0KLUhUTUxNZWRpYUVsZW1lbnQqIHRvUGFy
ZW50TWVkaWFFbGVtZW50KE5vZGUqKTsKLWlubGluZSBIVE1MTWVkaWFFbGVtZW50KiB0b1BhcmVu
dE1lZGlhRWxlbWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSB7IHJldHVybiB0b1BhcmVudE1l
ZGlhRWxlbWVudChyZW5kZXJlci0+bm9kZSgpKTsgfQotCi1NZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZSBtZWRpYUNvbnRyb2xFbGVtZW50VHlwZShOb2RlKik7Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotY2xhc3MgTWVkaWFDb250cm9sRWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2
RWxlbWVudCB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBoaWRlKCk7Ci0gICAgdm9pZCBzaG93KCk7Ci0g
ICAgYm9vbCBpc1Nob3dpbmcoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxl
bWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCA9IDA7Ci0KLSAgICB2b2lkIHNldE1lZGlhQ29u
dHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNvbnRyb2xsZXIpIHsgbV9tZWRpYUNv
bnRyb2xsZXIgPSBjb250cm9sbGVyOyB9Ci0gICAgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBt
ZWRpYUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ29udHJvbGxlcjsgfQotCi1w
cm90ZWN0ZWQ6Ci0gICAgTWVkaWFDb250cm9sRWxlbWVudChEb2N1bWVudCopOwotCi1wcml2YXRl
OgotICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9Ci0KLSAgICBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIG1fbWVkaWFDb250cm9s
bGVyOyAgIAotfTsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBN
ZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7Citj
bGFzcyBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRGl2RWxl
bWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxF
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIApAQCAtMTIzLDkgKzUyLDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xQYW5lbEVsZW1l
bnQoRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3Bs
YXlUeXBlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3Q7CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50KERv
Y3VtZW50Kik7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRv
SWQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCopOwogCiAgICAgdm9pZCBzdGFydERyYWcoY29uc3QgTGF5b3V0UG9pbnQmIGV2ZW50
TG9jYXRpb24pOwpAQCAtMTUwLDkxICs3OSw2OSBAQCBwcml2YXRlOgogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNsYXNzIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVy
RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKK2NsYXNzIE1lZGlhQ29udHJv
bFBhbmVsRW5jbG9zdXJlRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRh
aW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHBy
aXZhdGU6Ci0gICAgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KERvY3VtZW50
Kik7CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50KERvY3Vt
ZW50Kik7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkg
Y29uc3Q7Ci0KLSAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBl
KCkgY29uc3Q7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNsYXNz
IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFD
b250cm9sRWxlbWVudCB7CitjbGFzcyBNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVu
dCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiBjcmVh
dGUoRG9jdW1lbnQqKTsKLQotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3Zl
RXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsK
IAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50
KERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCopOwotICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlz
cGxheVR5cGUoKSBjb25zdDsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9z
dXJlRWxlbWVudChEb2N1bWVudCopOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1jbGFzcyBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudCA6IHB1YmxpYyBN
ZWRpYUNvbnRyb2xFbGVtZW50IHsKK2NsYXNzIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVy
RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudD4gY3JlYXRl
KERvY3VtZW50Kik7Ci0KLSAgICB2b2lkIHVwZGF0ZSgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7
CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQoRG9jdW1l
bnQqKTsKLQotICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQo
KSBjb25zdDsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1l
bnQoRG9jdW1lbnQqKTsKIAotICAgIGVudW0gU3RhdGVCZWluZ0Rpc3BsYXllZCB7IE5vdGhpbmcs
IExvYWRpbmcsIExpdmVCcm9hZGNhc3QgfTsKLSAgICBTdGF0ZUJlaW5nRGlzcGxheWVkIG1fc3Rh
dGVCZWluZ0Rpc3BsYXllZDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93
UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotY2xhc3MgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IDogcHVibGljIEhUTUxJ
bnB1dEVsZW1lbnQgeworY2xhc3MgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxl
bWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKIHB1YmxpYzoKLSAgICB2b2lk
IGhpZGUoKTsKLSAgICB2b2lkIHNob3coKTsKLQotICAgIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBl
IGRpc3BsYXlUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5VHlwZTsgfQotCi0gICAgdm9p
ZCBzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBjb250cm9sbGVy
KSB7IG1fbWVkaWFDb250cm9sbGVyID0gY29udHJvbGxlcjsgfQotICAgIE1lZGlhQ29udHJvbGxl
ckludGVyZmFjZSogbWVkaWFDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNvbnRy
b2xsZXI7IH0KLQotcHJvdGVjdGVkOgotICAgIE1lZGlhQ29udHJvbElucHV0RWxlbWVudChEb2N1
bWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQq
KTsKIAotICAgIHZvaWQgc2V0RGlzcGxheVR5cGUoTWVkaWFDb250cm9sRWxlbWVudFR5cGUpOwor
ICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUg
eyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29u
dHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgZXhwbGljaXQgTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCopOwogCi0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCkgeyB9Ci0KLSAgICBNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UqIG1fbWVkaWFDb250cm9sbGVyOwotICAgIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBl
IG1fZGlzcGxheVR5cGU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi1jbGFzcyBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudCA6IHB1Ymxp
YyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgeworY2xhc3MgTWVkaWFDb250cm9sU3RhdHVzRGlz
cGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRGl2RWxlbWVudCB7CiBwdWJsaWM6Ci0g
ICAgdm9pZCBjaGFuZ2VkTXV0ZSgpOwotCi0gICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9N
b3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBjcmVhdGUoRG9jdW1l
bnQqKTsKIAotcHJvdGVjdGVkOgotICAgIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50KERv
Y3VtZW50KiwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdm9pZCB1cGRhdGUoKTsKIAogcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKTsKKyAgICBleHBsaWNpdCBNZWRp
YUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOworCisgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CisKKyAg
ICBlbnVtIFN0YXRlQmVpbmdEaXNwbGF5ZWQgeyBOb3RoaW5nLCBMb2FkaW5nLCBMaXZlQnJvYWRj
YXN0IH07CisgICAgU3RhdGVCZWluZ0Rpc3BsYXllZCBtX3N0YXRlQmVpbmdEaXNwbGF5ZWQ7CiB9
OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yNDYsMTAgKzE1MywxMCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMo
KSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9s
UGFuZWxNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKKyAgICBl
eHBsaWNpdCBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50KERvY3VtZW50KiwgTWVk
aWFDb250cm9scyopOwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqKTsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBj
b25zdCBPVkVSUklERTsKIAogICAgIE1lZGlhQ29udHJvbHMqIG1fY29udHJvbHM7CiB9OwpAQCAt
MjYxLDkgKzE2OCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHBy
aXZhdGU6Ci0gICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQoRG9j
dW1lbnQqKTsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9u
RWxlbWVudChEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CiB9OwogCiAKQEAgLTI3NSwxMiArMTgyLDEy
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
Kik7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZF
UlJJREUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5VHlw
ZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgpIE9WRVJSSURFOwogCiBw
cml2YXRlOgotICAgIE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50KERvY3VtZW50Kik7Cisg
ICAgZXhwbGljaXQgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKIAot
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9W
RVJSSURFOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjkwLDM3
ICsxOTcsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbE92
ZXJsYXlQbGF5QnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVEaXNwbGF5VHlwZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgpIE9W
RVJSSURFOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbE92ZXJsYXlQbGF5
QnV0dG9uRWxlbWVudChEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci19OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1jbGFzcyBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBN
ZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0gICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9N
b3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQotCi1wcm90ZWN0ZWQ6
Ci0gICAgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRy
b2xFbGVtZW50VHlwZSk7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzRm9yd2FyZEJ1
dHRvbigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wgLypmbGFn
Ki8gPSB0cnVlLCBib29sIC8qcGF1c2UqLyA9IGZhbHNlKTsKLQotICAgIHZvaWQgc3RhcnRUaW1l
cigpOwotICAgIHZvaWQgc3RvcFRpbWVyKCk7Ci0gICAgZmxvYXQgbmV4dFJhdGUoKSBjb25zdDsK
LSAgICB2b2lkIHNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVt
ZW50PiopOwotCi0gICAgZW51bSBBY3Rpb25UeXBlIHsgTm90aGluZywgUGxheSwgUGF1c2UgfTsK
LSAgICBBY3Rpb25UeXBlIG1fYWN0aW9uT25TdG9wOwotICAgIGVudW0gU2Vla1R5cGUgeyBTa2lw
LCBTY2FuIH07Ci0gICAgU2Vla1R5cGUgbV9zZWVrVHlwZTsKLSAgICBUaW1lcjxNZWRpYUNvbnRy
b2xTZWVrQnV0dG9uRWxlbWVudD4gbV9zZWVrVGltZXI7CisgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CiB9OwogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMzAsMTAgKzIxMiwxMCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50
PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xTZWVrRm9y
d2FyZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xT
ZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBp
c0ZvcndhcmRCdXR0b24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CiB9OwogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zNDMsMTAgKzIyNSwxMCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xTZWVr
QmFja0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xT
ZWVrQmFja0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0Zv
cndhcmRCdXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzU5LDkgKzI0MSw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sUmV3aW5kQnV0
dG9uRWxlbWVudChEb2N1bWVudCopOworICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFJld2luZEJ1
dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpAQCAtMzc0LDEwICsyNTYsMTAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJu
IHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0
dG9uRWxlbWVudChEb2N1bWVudCopOworICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFJldHVyblRv
UmVhbHRpbWVCdXR0b25FbGVtZW50KERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKLX07ICAgIAorICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsK
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0zODUsMTMgKzI2NywxNSBA
QCBjbGFzcyBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQgOiBw
dWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbAogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gY3JlYXRlKERv
Y3VtZW50KiwgTWVkaWFDb250cm9scyopOwogCi0gICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25k
VG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1
YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZURpc3BsYXlUeXBlKCk7CisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNs
aWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZURpc3BsYXlUeXBlKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250
cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250
cm9scyopOwotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0OworICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0
dG9uRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKKworICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIE1lZGlhQ29udHJvbHMqIG1fY29udHJvbHM7CkBAIC00MDAsNyAr
Mjg0LDcgQEAgcHJpdmF0ZToKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1j
bGFzcyBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQgOiBwdWJsaWMg
TWVkaWFDb250cm9sRWxlbWVudCB7CitjbGFzcyBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0Nv
bnRhaW5lckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRGl2RWxlbWVudCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWlu
ZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIApAQCAtNDA5LDEzICsyOTMsMTIgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVs
ZW1lbnQoRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUg
ZGlzcGxheVR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYUNsb3NlZENhcHRpb25zQ29udGFpbmVy
OyB9Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29u
c3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29u
c3QgT1ZFUlJJREU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNs
YXNzIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudCA6IHB1YmxpYyBN
ZWRpYUNvbnRyb2xFbGVtZW50IHsKK2NsYXNzIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJh
Y2tMaXN0RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlz
dEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKIApAQCAtNDI4LDgg
KzMxMSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlv
bnNUcmFja0xpc3RFbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250cm9scyopOwogCi0gICAgdmly
dHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IE1lZGlhQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3Q7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxFbGVtZW50PiA+IFRyYWNrTWVudUl0ZW1zOwogICAgIFRyYWNrTWVudUl0
ZW1zIG1lbnVJdGVtczsKQEAgLTQ0OCw1OSArMzMwLDUwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dER1cmF0aW9uKGZsb2F0KTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xUaW1lbGluZUVs
ZW1lbnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CisgICAgZXhwbGljaXQgTWVkaWFDb250
cm9sVGltZWxpbmVFbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250cm9scyopOwogCi0gICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7
CiAKICAgICBNZWRpYUNvbnRyb2xzKiBtX2NvbnRyb2xzOwogfTsKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1jbGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50
IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CitjbGFzcyBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0gICAgdmlydHVhbCBi
b29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERTsKLSAgICB2b2lk
IHNldFZvbHVtZShmbG9hdCk7Ci0gICAgdm9pZCBzZXRDbGVhck11dGVkT25Vc2VySW50ZXJhY3Rp
b24oYm9vbCk7Ci0KLXByb3RlY3RlZDoKLSAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVt
ZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNr
RXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRJ
c0Z1bGxzY3JlZW4oYm9vbCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci0gICAgYm9vbCBtX2NsZWFyTXV0ZWRPblVz
ZXJJbnRlcmFjdGlvbjsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9u
RWxlbWVudChEb2N1bWVudCopOworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLWNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50
IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CitjbGFzcyBNZWRpYUNvbnRyb2xQ
YW5lbFZvbHVtZVNsaWRlckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsK
LQotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0gICAgdmly
dHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNGdWxsc2NyZWVuKGJvb2wpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudD4gY3JlYXRlKERv
Y3VtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVs
ZW1lbnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CisgICAgZXhwbGljaXQgTWVkaWFDb250
cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50KERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKIH07Ci0K
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogY2xhc3MgTWVkaWFDb250cm9sRnVs
bHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sVm9sdW1lU2xp
ZGVyRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwotICAgIAor
CiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50
KERvY3VtZW50Kik7Ci0gICAgCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRv
d1BzZXVkb0lkKCkgY29uc3Q7CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sRnVsbHNjcmVlblZv
bHVtZVNsaWRlckVsZW1lbnQoRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTA4LDE0ICszODEsMTQgQEAgcHJpdmF0ZToKIGNs
YXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50IDogcHVibGlj
IE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShE
b2N1bWVudCopOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMo
KSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKLSAgICAKLSAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKKyAgICBl
eHBsaWNpdCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudChEb2N1
bWVudCopOworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lk
KCkgY29uc3QgT1ZFUlJJREU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CkBAIC01MjMsMzIgKzM5NiwxNyBAQCBwcml2YXRlOgogY2xhc3MgTWVkaWFDb250cm9sRnVsbHNj
cmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVt
ZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7Ci0gICAgCisKICAg
ICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZpcnR1YWwg
Ym9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRy
dWU7IH0KIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0
dG9uRWxlbWVudChEb2N1bWVudCopOwotICAgIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwotfTsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudChEb2N1bWVudCopOwogCi0vLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5
RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKLXB1YmxpYzoKLSAgICB2b2lk
IHNldEN1cnJlbnRWYWx1ZShmbG9hdCk7Ci0gICAgZmxvYXQgY3VycmVudFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9jdXJyZW50VmFsdWU7IH0KLQotcHJvdGVjdGVkOgotICAgIE1lZGlhQ29udHJv
bFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7
Ci0KLSAgICBmbG9hdCBtX2N1cnJlbnRWYWx1ZTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKKwogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjbGFzcyBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5n
RGlzcGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50IHsK
QEAgLTU1NiwxMCArNDE0LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAK
IHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KERv
Y3VtZW50Kik7CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlF
bGVtZW50KERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBl
IGRpc3BsYXlUeXBlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCkBAIC01NjksMTYgKzQyNiwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gY3JlYXRlKERv
Y3VtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5
RWxlbWVudChEb2N1bWVudCopOworICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbEN1cnJlbnRUaW1l
RGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxl
bWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKIH07Ci0gCisKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLWNsYXNz
IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250
cm9sRWxlbWVudCB7CisKK2NsYXNzIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1l
bnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRGl2RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50Kik7CiAKQEAgLTU4NiwxOCArNDQzLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHVw
ZGF0ZVNpemVzKCk7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFp
bmVyRWxlbWVudChEb2N1bWVudCopOworICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFRleHRUcmFj
a0NvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0gICAgdmlydHVh
bCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1l
ZGlhVGV4dFRyYWNrRGlzcGxheUNvbnRhaW5lcjsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgSW50UmVjdCBt
X3ZpZGVvRGlzcGxheVNpemU7CiAgICAgZmxvYXQgbV9mb250U2l6ZTsKIH07CiAKICNlbmRpZgot
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAKaW5kZXgg
YjVlOWZmNzA5YmZkMjM3N2JmMmU2ZWRmMzgxZGEwMDY2ZjQwYjhkYy4uZGNiN2Q5MTdlNTY2NmZi
MzY5MjBlZDE4ZTk3Y2U5MWE5NTVjNjAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9scy5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xzLmgKaW5kZXggMjU4MDUwMmYzZWZmODBlMTlhZTRhZjJkOTI0NWE4OWZhNmU0MThlYi4u
OTg2MDU0MjExZjc3Y2QwNzhjMWRjMGI1MDM3NGYxZjQ1NDAzY2FlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudCogbV9jdXJy
ZW50VGltZURpc3BsYXk7CiAgICAgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50KiBtX3RpbWVs
aW5lOwogICAgIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQqIG1fcGFuZWxNdXRl
QnV0dG9uOwotICAgIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQqIG1fdm9sdW1lU2xp
ZGVyOworICAgIE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudCogbV92b2x1bWVT
bGlkZXI7CiAgICAgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50
KiBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uOwogICAgIE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25FbGVtZW50KiBtX2Z1bGxTY3JlZW5CdXR0b247CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IDkzNzMzYWViOGE4
NmUyNmE3YjU0NTJmNWQ1M2UxODM5YWJhODlmY2MuLjUyZDY3NGNlZGFjNmZkNGJjNjgxNjI5NjA2
ZWVhM2E1MzFjNGI3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sc0FwcGxlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTY4LDcgKzE2OCw3
IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0FwcGxlPiBNZWRpYUNvbnRyb2xzQXBwbGU6OmNy
ZWF0ZUNvbnRyb2xzKERvY3VtZW50KiBkb2N1CiAgICAgfQogCiAgICAgLy8gRklYTUU6IE9ubHkg
Y3JlYXRlIHdoZW4gbmVlZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MTYzPgotICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gZnVsbFNjcmVlbkJ1dHRvbiA9
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNv
bnRyb2xzLmdldCgpKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVs
ZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0b24gPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuQnV0dG9u
ID0gZnVsbFNjcmVlbkJ1dHRvbi5nZXQoKTsKICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVsbFNj
cmVlbkJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKIApAQCAtMTc4LDcgKzE3OCw3IEBAIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sc0FwcGxlPiBNZWRpYUNvbnRyb2xzQXBwbGU6OmNyZWF0ZUNv
bnRyb2xzKERvY3VtZW50KiBkb2N1CiAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCkt
PnVzZXNNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXIoKSkgewogICAgICAgICBSZWZQdHI8TWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudD4gdm9sdW1lU2xpZGVyQ29udGFpbmVy
ID0gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKIAotICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4g
c2xpZGVyID0gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKKyAgICAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudD4g
c2xpZGVyID0gTWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpOwogICAgICAgICBjb250cm9scy0+bV92b2x1bWVTbGlkZXIgPSBzbGlkZXIuZ2V0KCk7
CiAgICAgICAgIHZvbHVtZVNsaWRlckNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoc2xpZGVyLnJlbGVh
c2UoKSwgZWMsIHRydWUpOwogICAgICAgICBpZiAoZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5oCmluZGV4IGExZWU4OTYzY2VmYWMwY2Q2MTNi
ZDkyZjJhNmM2Y2ZkOWYzMGI4MDQuLjllMzkxNGM2ODA5OWM1ZDU4NDZjODQxOGMyOGMwN2I3ZTMw
MTcxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bHNBcHBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNB
cHBsZS5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmNwcAppbmRleCAyOGI3N2NmN2IyMjg1MmI4
ZTY3ZDA2MTQ1YTA3NTE4NzNkMWJjNjMxLi41Y2E0NjdhOTcyZDMxYjU3ZmQzNGU1ZTViYTgxZTdk
YTJjODYyYjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xzQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHNDaHJvbWl1bS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDMzICszMyw2IEBAIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTWVkaWFDb250cm9s
Q2hyb21pdW1FbmNsb3N1cmVFbGVtZW50OjpNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVs
ZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogTWVkaWFDb250cm9sRWxlbWVudChkb2N1
bWVudCkKLXsKLX0KLQotTWVkaWFDb250cm9sRWxlbWVudFR5cGUgTWVkaWFDb250cm9sQ2hyb21p
dW1FbmNsb3N1cmVFbGVtZW50OjpkaXNwbGF5VHlwZSgpIGNvbnN0Ci17Ci0gICAgLy8gTWFwcGlu
ZyBvbnRvIHNhbWUgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgYXMgcGFuZWwgZWxlbWVudCwgc2lu
Y2UgaXQgaGFzIHNpbWlsYXIgcHJvcGVydGllcy4KLSAgICByZXR1cm4gTWVkaWFDb250cm9sc1Bh
bmVsOwotfQotCi1NZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQ6Ok1lZGlhQ29udHJv
bFBhbmVsRW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBNZWRpYUNv
bnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQoZG9jdW1lbnQpCi17Ci19Ci0KLVBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50PiBNZWRpYUNvbnRyb2xQYW5lbEVu
Y2xvc3VyZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQoZG9jdW1lbnQp
KTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVs
ZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1lbmNsb3N1cmUiKSk7
Ci0gICAgcmV0dXJuIGlkOwotfQotCiBNZWRpYUNvbnRyb2xzQ2hyb21pdW06Ok1lZGlhQ29udHJv
bHNDaHJvbWl1bShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBNZWRpYUNvbnRyb2xzKGRvY3Vt
ZW50KQogICAgICwgbV9kdXJhdGlvbkRpc3BsYXkoMCkKQEAgLTEyOCw3ICsxMDEsNyBAQCBib29s
IE1lZGlhQ29udHJvbHNDaHJvbWl1bTo6aW5pdGlhbGl6ZUNvbnRyb2xzKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50PiBzbGlkZXIgPSBNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIFJlZlB0cjxNZWRpYUNvbnRy
b2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IE1lZGlhQ29udHJvbFBhbmVsVm9s
dW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBtX3ZvbHVtZVNsaWRlciA9
IHNsaWRlci5nZXQoKTsKICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Q2xlYXJNdXRlZE9uVXNlcklu
dGVyYWN0aW9uKHRydWUpOwogICAgIHBhbmVsLT5hcHBlbmRDaGlsZChzbGlkZXIucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7CkBAIC0xNDMsNyArMTE2LDcgQEAgYm9vbCBNZWRpYUNvbnRyb2xzQ2hyb21p
dW06OmluaXRpYWxpemVDb250cm9scyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5C
dXR0b25FbGVtZW50PiBmdWxsc2NyZWVuQnV0dG9uID0gTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgdGhpcyk7CisgICAgUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBmdWxsc2NyZWVuQnV0dG9uID0gTWVkaWFDb250
cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgbV9mdWxs
U2NyZWVuQnV0dG9uID0gZnVsbHNjcmVlbkJ1dHRvbi5nZXQoKTsKICAgICBwYW5lbC0+YXBwZW5k
Q2hpbGQoZnVsbHNjcmVlbkJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICBpZiAoZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1
bS5oCmluZGV4IGE2MWRkYjE2MTA0ZGZkNGIzODdkMmEwNzZjZjllMmJjMGJkZTY3YmUuLjVjMTA3
MDgyMDczOWMyNjhlMDJlZTA3NDUzMjE3YWRmZDRjYWFlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bS5oCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zMywyMyArMzMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlh
Q29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVt
ZW50IHsKLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xv
c3VyZUVsZW1lbnQoRG9jdW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIE1lZGlhQ29u
dHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Q7Ci19OwotCi1jbGFzcyBNZWRpYUNv
bnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sQ2hyb21pdW1F
bmNsb3N1cmVFbGVtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwotCi1wcml2YXRl
OgotICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudChEb2N1bWVu
dCopOwotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNv
bnN0OwotfTsKLQogY2xhc3MgTWVkaWFDb250cm9sc0Nocm9taXVtIDogcHVibGljIE1lZGlhQ29u
dHJvbHMgewogcHVibGljOgogICAgIC8vIENhbGxlZCBmcm9tIHBvcnQtc3BlY2lmaWMgcGFyZW50
IGNyZWF0ZSBmdW5jdGlvbiB0byBjcmVhdGUgY3VzdG9tIGNvbnRyb2xzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRy
b2lkLmNwcAppbmRleCA2YzllYWRmYmZjN2UyMzY2NzY4MDI5OTQ4NjNkZDhkYmI0YTI0YWEzLi5l
YTExYmIzOTljYzg3MWYxYzNkNDQzZjdiMzI0NDA5MTI1ZDJhYWQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRy
b2lkLmNwcApAQCAtMzAsMjIgKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1NZWRp
YUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudDo6TWVkaWFDb250cm9sT3ZlcmxheUVuY2xv
c3VyZUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogTWVkaWFDb250cm9sQ2hyb21p
dW1FbmNsb3N1cmVFbGVtZW50KGRvY3VtZW50KQotewotfQotCi1QYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50PiBNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJl
RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50KGRvY3VtZW50KSk7Ci19
Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1l
bnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1vdmVybGF5LWVuY2xvc3Vy
ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICByZXR1cm4gaWQ7
Ci19Ci0KIE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQ6Ok1lZGlhQ29udHJvbHNDaHJvbWl1
bUFuZHJvaWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogTWVkaWFDb250cm9sc0Nocm9taXVt
KGRvY3VtZW50KQogICAgICwgbV9vdmVybGF5UGxheUJ1dHRvbigwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDdiYWMyYzA0YWNhNTk0ODU4YTAwYmVlNmNmNjVmYTRhNGRlZWFhOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiUmVuZGVyTWVkaWFDb250cm9sRWxl
bWVudHMuaCIKKworI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiUmVuZGVyVmll
dy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29u
dGFpbmVyOjpSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcihOb2RlKiBub2RlKQorICAg
IDogUmVuZGVyQmxvY2sobm9kZSkKK3sKK30KKwordm9pZCBSZW5kZXJNZWRpYVZvbHVtZVNsaWRl
ckNvbnRhaW5lcjo6bGF5b3V0KCkKK3sKKyAgICBSZW5kZXJCbG9jazo6bGF5b3V0KCk7CisKKyAg
ICBpZiAoc3R5bGUoKS0+ZGlzcGxheSgpID09IE5PTkUgfHwgIW5leHRTaWJsaW5nKCkgfHwgIW5l
eHRTaWJsaW5nKCktPmlzQm94KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlbmRlckJveCog
YnV0dG9uQm94ID0gdG9SZW5kZXJCb3gobmV4dFNpYmxpbmcoKSk7CisgICAgaW50IGFic29sdXRl
T2Zmc2V0VG9wID0gYnV0dG9uQm94LT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgwLCAtc2l6
ZSgpLmhlaWdodCgpKSkueSgpOworCisgICAgTGF5b3V0U3RhdGVEaXNhYmxlciBsYXlvdXRTdGF0
ZURpc2FibGVyKHZpZXcoKSk7CisKKyAgICAvLyBJZiB0aGUgc2xpZGVyIHdvdWxkIGJlIHJlbmRl
cmVkIG91dHNpZGUgdGhlIHBhZ2UsIGl0IHNob3VsZCBiZSBtb3ZlZCBiZWxvdyB0aGUgY29udHJv
bHMuCisgICAgaWYgKFVOTElLRUxZKGFic29sdXRlT2Zmc2V0VG9wIDwgMCkpCisgICAgICAgIHNl
dFkoYnV0dG9uQm94LT5vZmZzZXRUb3AoKSArIHRoZW1lKCktPnZvbHVtZVNsaWRlck9mZnNldEZy
b21NdXRlQnV0dG9uKGJ1dHRvbkJveCwgcGl4ZWxTbmFwcGVkU2l6ZSgpKS55KCkpOworfQorCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlbmRlck1lZGlhQ29udHJvbFRpbWVE
aXNwbGF5OjpSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheShOb2RlKiBub2RlKQorICAgIDog
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94KG5vZGUpCit7Cit9CisKKy8vIFdlIHdhbnQgdGhl
IHRpbWVsaW5lIHNsaWRlciB0byBiZSBhdCBsZWFzdCAxMDAgcGl4ZWxzIHdpZGUuCisvLyBGSVhN
RTogRWxpbWluYXRlIGhhcmQtY29kZWQgd2lkdGhzIGFsdG9nZXRoZXIuCitzdGF0aWMgY29uc3Qg
aW50IG1pbldpZHRoVG9EaXNwbGF5VGltZURpc3BsYXlzID0gNDUgKyAxMDAgKyA0NTsKKwordm9p
ZCBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheTo6bGF5b3V0KCkKK3sKKyAgICBSZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dCgpOworICAgIFJlbmRlckJveCogdGltZWxpbmVD
b250YWluZXJCb3ggPSBwYXJlbnRCb3goKTsKKyAgICB3aGlsZSAodGltZWxpbmVDb250YWluZXJC
b3ggJiYgdGltZWxpbmVDb250YWluZXJCb3gtPmlzQW5vbnltb3VzKCkpCisgICAgICAgIHRpbWVs
aW5lQ29udGFpbmVyQm94ID0gdGltZWxpbmVDb250YWluZXJCb3gtPnBhcmVudEJveCgpOworCisg
ICAgaWYgKHRpbWVsaW5lQ29udGFpbmVyQm94ICYmIHRpbWVsaW5lQ29udGFpbmVyQm94LT53aWR0
aCgpIDwgbWluV2lkdGhUb0Rpc3BsYXlUaW1lRGlzcGxheXMpCisgICAgICAgIHNldFdpZHRoKDAp
OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisKK1JlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OlJlbmRlclRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQoTm9kZSogbm9kZSkKKyAgICA6IFJlbmRlckJsb2NrKG5vZGUp
Cit7Cit9CisKK3ZvaWQgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6bGF5b3V0KCkK
K3sKKyAgICBSZW5kZXJCbG9jazo6bGF5b3V0KCk7CisgICAgaWYgKHN0eWxlKCktPmRpc3BsYXko
KSA9PSBOT05FKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobWVkaWFDb250cm9sRWxl
bWVudFR5cGUobm9kZSgpKSA9PSBNZWRpYVRleHRUcmFja0Rpc3BsYXlDb250YWluZXIpOworCisg
ICAgTGF5b3V0U3RhdGVEaXNhYmxlciBsYXlvdXRTdGF0ZURpc2FibGVyKHZpZXcoKSk7CisgICAg
c3RhdGljX2Nhc3Q8TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCo+KG5vZGUo
KSktPnVwZGF0ZVNpemVzKCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1l
bnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVu
dHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMjY1ZDcxMTJkYWI4ZGJiNTNjNDAwNjY5YzdkNTU2NDYxOWZkNDMz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlh
Q29udHJvbEVsZW1lbnRzLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVu
ZGVyTWVkaWFDb250cm9sRWxlbWVudHNfaAorI2RlZmluZSBSZW5kZXJNZWRpYUNvbnRyb2xFbGVt
ZW50c19oCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5oIgorI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCisjaW5jbHVkZSAiUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVy
TWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIgOiBwdWJsaWMgUmVuZGVyQmxvY2sgeworcHVibGlj
OgorICAgIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKE5vZGUqKTsKKworcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK2NsYXNzIFJlbmRlck1lZGlhQ29udHJvbFRpbWVEaXNwbGF5IDogcHVi
bGljIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7CitwdWJsaWM6CisgICAgUmVuZGVyTWVk
aWFDb250cm9sVGltZURpc3BsYXkoTm9kZSopOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKTsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKworY2xhc3MgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxl
bWVudCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CitwdWJsaWM6CisgICAgUmVuZGVyVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVudChOb2RlKik7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpOworfTsKKworI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQorCisjZW5kaWYgLy8gUmVu
ZGVyTWVkaWFDb250cm9sRWxlbWVudHNfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0KaW5kZXggZmFkZDA5MDExYWZmOTdkMGVmZTQ4MWNiYjc1YjAyZjBmZDY1
MGRmMS4uMWZmYTZhYTZlYjUyMDU0YTcyZDY5NjM3NzdiYTk2ZTE2ZTkyNDZmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjcsNiArMjcsNyBAQAog
I2ltcG9ydCAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKICNpbXBvcnQgIlBhaW50SW5mby5oIgog
I2ltcG9ydCAiUmVuZGVyTWVkaWEuaCIKKyNpbXBvcnQgIlJlbmRlck1lZGlhQ29udHJvbEVsZW1l
bnRzLmgiCiAjaW1wb3J0ICJSZW5kZXJNZWRpYUNvbnRyb2xzLmgiCiAjaW1wb3J0ICJSZW5kZXJW
aWV3LmgiCiAjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcAppbmRleCAzZTE1NWRiYTM3MTIzNGRlYzc3MGIxZDAw
MzBkZTc3MWVlNmUyZmZlLi5lNWY2MjU2ODcyODlmYmEzNTg5Njc4ZWIwYjRjZWRmMmE3N2IzNTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAK
QEAgLTc0LDYgKzc0LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmNwcCIKICNpbmNs
dWRlICJSZW5kZXJNYXJxdWVlLmNwcCIKICNpbmNsdWRlICJSZW5kZXJNZWRpYS5jcHAiCisjaW5j
bHVkZSAiUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIgogI2luY2x1ZGUgIlJlbmRlck1l
ZGlhQ29udHJvbHMuY3BwIgogI2luY2x1ZGUgIlJlbmRlck1lbnVMaXN0LmNwcCIKICNpbmNsdWRl
ICJSZW5kZXJNZXRlci5jcHAiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177392</attachid>
            <date>2012-12-03 18:51:49 -0800</date>
            <delta_ts>2012-12-04 20:02:08 -0800</delta_ts>
            <desc>Inc Eric&apos;s Feedback</desc>
            <filename>bug-101877-20121204134914.patch</filename>
            <type>text/plain</type>
            <size>113548</size>
            <attacher name="Silvia Pfeiffer">silviapf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg0YjBmY2RhODlmN2U5
ZDUyZGRhNzRkZmRjYTQxMzhkNjJmNzhmYi4uY2FiMzZiMjNjNGViYTY2MjhiOTZjN2FiMWJjMTA3
MTgzZjFlYWVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTEyLTAzICBTaWx2
aWEgUGZlaWZmZXIgIDxzaWx2aWFwZkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3Ig
TWVkaWEgQ29udHJvbCBFbGVtZW50cyB0byByZW1vdmUgY29kZSBkdXBsaWNhdGlvbi4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTg3NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgaGF2
aW5nIHR3byBkaWZmZXJlbnQgdHlwZXMgb2YgaW5oZXJpdGFuY2UgdHJlZXMgZm9yCisgICAgICAg
IE1lZGlhQ29udHJvbEVsZW1lbnQgYW5kIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCwgdGhpcwor
ICAgICAgICBjcmVhdGVzIGEgc3RhbmQtYWxvbmUgdmlydHVhbCBjbGFzcyBNZWRpYUNvbnRyb2xF
bGVtZW50IHRoYXQKKyAgICAgICAgcHJvdmlkZXMgdGhlIGNvbW1vbiBmdW5jdGlvbnM6IHNob3co
KSwgaGlkZSgpLCBpc1Nob3dpbmcoKSwKKyAgICAgICAgc2V0TWVkaWFDb250cm9sbGVyKCksIGRp
c3BsYXlUeXBlKCksIGlzTWVkaWFDb250cm9sRWxlbWVudCgpLAorICAgICAgICBzaGFkb3dQc2V1
ZG9JZCgpLCBtZWRpYUNvbnRyb2xsZXIoKSwgc2V0RGlzcGxheVR5cGUoKS4KKworICAgICAgICBU
aGUgaW5kaXZpZHVhbCBlbGVtZW50cyBpbmhlcml0IGZyb20gTWVkaWFDb250cm9sRWxlbWVudCBh
bmQKKyAgICAgICAgZWl0aGVyIEhUTUxJbnB1dEVsZW1lbnQgb3IgSFRNTERpdkVsZW1lbnQuIFRo
ZXkgZXh0ZW5kL292ZXJyaWRlCisgICAgICAgIHRoZSBiYXNlIGZ1bmN0aW9ucyBhcyBhcHByb3By
aWF0ZS4KKworICAgICAgICBBcyBwYXJ0IG9mIHRoaXMsIHRoZSBSZW5kZXJYWFggY2xhc3NlcyBt
aXhlZCBpbiBiZXR3ZWVuIHRoZSBtZWRpYQorICAgICAgICBjb250cm9scyBpbiBNZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAgYXJlIGFsc28gbW92ZWQgdG8KKyAgICAgICAgcmVuZGVyaW5nL1JlbmRl
ck1lZGlhQ29udHJvbHMuaC9jcHAgdG8gZm9sbG93IGNvbW1vbiBjb2RlIHNlcGFyYXRpb24uCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEJ1aWxkIGZpbGVzIGV4dGVuZGVkIHdp
dGggbmV3IGZpbGVzLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZCk6
CisgICAgICAgIFJlcGxhY2VkIGNvbnN0IHdpdGggZnVuY3Rpb24sIHNpbmNlIGl0IGlzIHVzZWQg
aW4gbXVsdGlwbGUgZmlsZXMuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50VHlwZXMuY3BwOiBuZXcgZmlsZQorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRUeXBlcy5oOiBuZXcgZmlsZQorICAgICAgICBBZGRlZCBuZXcgTWVkaWFDb250
cm9sRWxlbWVudCBjbGFzcy4gTW92ZWQgTWVkaWFDb250cm9sRGl2RWxlbWVudCBhbmQgTWVkaWFD
b250cm9sSW5wdXRFbGVtZW50CisgICAgICAgIGNsYXNzZXMgaW50byB0aGVzZSBmaWxlcyBmcm9t
IE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcC9oLiBNb3ZlZCBNZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZXMgZW51bQorICAgICAgICBpbnRvIHRoZXNlLiBNb3ZlZCBvdGhlciBtZWRpYSBjb250cm9sIGVs
ZW1lbnQgY2xhc3NlcyB0aGF0IGFyZSB0aGUgYmFzaXMgZm9yIGluaGVyaXRpbmcgbWVkaWEKKyAg
ICAgICAgY29udHJvbCBlbGVtZW50cyBpbnRvIHRoZXNlIChNZWRpYUNvbnRyb2xUaW1lRGlzcGxh
eUVsZW1lbnQsIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50LAorICAgICAgICBNZWRpYUNv
bnRyb2xTZWVrQnV0dG9uRWxlbWVudCwgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCku
CisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaDoKKyAgICAgICAgUmVtb3Zl
ZCBjb21tb24gZnVuY3Rpb25zIGJldHdlZW4gbWVkaWEgZWxlbWVudHMgdGhhdCBhcmUgbm93IGlu
IHRoZSBjb21tb24KKyAgICAgICAgYmFzZSBjbGFzcyBNZWRpYUNvbnRyb2xFbGVtZW50LgorICAg
ICAgICBBbHNvIG1vdmVkIGNvbW1vbiBiYXNlIGNsYXNzZXMgdG8gTWVkaWFDb250cm9sRWxlbWVu
dFR5cGVzLmgvY3BwCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcDoK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmg6CisgICAgICAgIFJlbmFtZWQg
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCB0byBNZWRpYUNvbnRyb2xQYW5lbFZvbHVt
ZVNsaWRlckVsZW1lbnQKKyAgICAgICAgdG8gYmUgY29uc2lzdGVudCBpbiBpbmhlcml0YW5jZSB0
cmVlLiBVcGRhdGVkIGNvcHlyaWdodCBkYXRlLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sc0FwcGxlLmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
QXBwbGUuaDoKKyAgICAgICAgUmVuYW1lZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50
IHRvIE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudAorICAgICAgICB0byBiZSBj
b25zaXN0ZW50IGluIGluaGVyaXRhbmNlIHRyZWUuIFVwZGF0ZWQgY29weXJpZ2h0IGRhdGVzLm4K
KworICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bS5jcHA6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmg6CisgICAgICAgIFJlbmFt
ZWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCB0byBNZWRpYUNvbnRyb2xQYW5lbFZv
bHVtZVNsaWRlckVsZW1lbnQKKyAgICAgICAgdG8gYmUgY29uc2lzdGVudCBpbiBpbmhlcml0YW5j
ZSB0cmVlLgorICAgICAgICBNb3ZlZCBlbmNsb3N1cmUgZWxlbWVudCBkZWZpbml0aW9ucyB0byBj
b21tb24gTWVkaWFDb250cm9sRWxlbWVudHMuY3BwL2gKKyAgICAgICAgZmlsZSB0aHJvdWdoIHdo
aWNoIGRpZmZlcmVudCBtZWRpYSBlbGVtZW50cyBhcmUgbWFkZSBhdmFpbGFibGUgdG8gZGlmZmVy
ZW50IHBvcnRzLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVt
QW5kcm9pZC5jcHA6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVt
QW5kcm9pZC5oOgorICAgICAgICBNb3ZlZCBlbmNsb3N1cmUgZm9yIG92ZXJsYXkgYnV0dG9uIHRv
IE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcC9oIGZpbGVzCisgICAgICAgIHRocm91Z2ggd2hpY2gg
ZGlmZmVyZW50IG1lZGlhIGVsZW1lbnRzIGFyZSBtYWRlIGF2YWlsYWJsZSB0byBkaWZmZXJlbnQg
cG9ydHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwOiBuZXcgZmlsZQorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5oOiBuZXcgZmlsZQorICAgICAgICBNb3ZlZCByZW5kZXJpbmcgY2xhc3NlcyBmb3IgbWVk
aWEgY29udHJvbCBlbGVtZW50cyBpbnRvIHRoZXNlIGZpbGVzIGZyb20KKyAgICAgICAgTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwL2guCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW06CisgICAgICAgIEFkZGVkIG5ldyBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGZp
bGUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwOgorICAgICAg
ICBBZGRlZCBuZXcgUmVuZGVyTWVkaWFDb250cm9sRWxlZW1udC5jcHAgZmlsZS4KKwogMjAxMi0x
Mi0wMyAgRmxvcmluIE1hbGl0YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtT
a2lhXSBEZWZlcnJlZCBTa0NhbnZhcyBzYXZlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQx
MGRjNDNiMTZiMDAyMjYwZGU0MjVkZWFiMzU5MjQzNGNhMGY5Ny4uYmFlMjhjZjY2NTgyNDNlZjg1
YzczYWU1NTc0OWYzOGY0MmQ0MmE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1NDIsOCAr
MTU0Miw5IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL3NoYWRvdy9IVE1MU2hhZG93
RWxlbWVudC5jcHAKICAgICBodG1sL3NoYWRvdy9JbWFnZUlubmVyRWxlbWVudC5jcHAKICAgICBo
dG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKLSAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzLmNwcAorICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKICAg
ICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKyAgICBodG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzLmNwcAogICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAK
ICAgICBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCiAgICAgaHRtbC9zaGFkb3cv
UHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcApAQCAtMjEyNCw2ICsyMTI1LDggQEAgU0VUKFdlYkNv
cmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAogICAgIHJlbmRl
cmluZy9SZW5kZXJNYXJxdWVlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKKyAg
ICByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisgICAgcmVuZGVyaW5n
L1JlbmRlck1lZGlhQ29udHJvbHMuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNw
cAogICAgIHJlbmRlcmluZy9SZW5kZXJNZXRlci5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5CbG9jay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGYxN2Y4
NDY5M2E1ZGIxYWY0MjNkNGEyMmQ5ZTc5NzA5NGQwOTAyMmMuLmQ1NDZmZmRjMjAxYmZkOWQwOWRl
OTBiMGFhNjgyMWFlNzg0NDFmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
MzU1NSwxMCArMzU1NSwxMiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0ltYWdlSW5uZXJFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW1hZ2VJbm5lckVsZW1lbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMu
aCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgXApAQCAtNDMxOCw2ICs0MzIwLDEwIEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1
ZWUuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmggXAorCVNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZW51TGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCmluZGV4IDhhYmZjN2EzMTlmNmIyOTcxODIxMDZmZTdkZjBjZDIzNTQ2N2Q2Zjku
LmNiNTVmM2NhN2VkMTJhYWI4OGQ4NGUzZWM5OWE1N2Y1ZTg4OGI2NDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpA
QCAtMTg3MCw3ICsxODcwLDEwIEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvc2hhZG93L0NvbnRl
bnRTZWxlY3RvclF1ZXJ5LmggXAogICAgIGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5o
IFwKICAgICBodG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oIFwKKyAgICBodG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCBcCiAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuaCBcCisgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oIFwKKyAgICBo
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaCBcCiAgICAgaHRtbC9zaGFkb3cvRGV0YWls
c01hcmtlckNvbnRyb2wuaCBcCiAgICAgaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBcCiAg
ICAgaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmggXApAQCAtMjQwNyw2ICsyNDEw
LDggQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmggXAogICAg
IHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJNYXJx
dWVlLmggXAorICAgIHJlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIFwKKyAg
ICByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVy
TWVkaWEuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmggXAogICAgIHJlbmRlcmlu
Zy9SZW5kZXJNZXRlci5oIFwKQEAgLTMyMjAsMTEgKzMyMjUsMTQgQEAgZW5hYmxlPyhWSURFTykg
ewogICAgICAgICBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIFwKICAgICAgICAgaHRtbC9NZWRp
YUNvbnRyb2xsZXIuY3BwIFwKICAgICAgICAgaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNw
cCBcCisgICAgICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAgXAog
ICAgICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgXAogICAgICAgICBo
dG1sL1RpbWVSYW5nZXMuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwIFwKICAgICAgICAgcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcCBcCi0gICAgICAgIHJl
bmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKKyAgICAgICAgcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNw
cCBcCisgICAgICAgIHJlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCBcCisgICAgICAg
IHJlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKIAogICAgIHVzZT8oUVRL
SVQpIHsKICAgICAgICAgSU5DTFVERVBBVEggKz0gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDEyOGY4
N2M1YmZkMTQwYjIxOTVmMTY4NGMxMTk1MDExOTgyNjhiMWUuLmI5YzA0OTVjZDE0NjY5YWYzZDc5
OGE4ZDcxNDg0MTNiMDgzMjM1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMzNzIsNiArMzM3Miw4
IEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuaCcsCiAgICAgICAgICAg
ICAncmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1Jl
bmRlck1lZGlhLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xF
bGVtZW50cy5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5j
cHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmgnLAogICAg
ICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3BwJywKQEAg
LTQ0MTIsNiArNDQxNCw4IEBACiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9p
bnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAnLAogICAg
ICAgICAgICAgJ2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCcsCisgICAgICAgICAgICAnaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCcsCisgICAgICAgICAgICAnaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmgnLAogICAgICAgICAgICAgJ2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sc0Nocm9taXVtLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IDk1ZGJkZGY5OWE3OTIwYmRjMjNkYTc4NTIwZGI5NmYwZjdi
MmY3Y2MuLjBkMGM4MjE3MWM0Mzk3NTNlM2YyYTA2ODI1YTFlNzMzODA4ZjBjNDcgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00MTIyMiw2ICs0
MTIyMiw3OCBAQAogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlck1lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVn
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19D
RkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVh
c2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5h
bWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCisJCQkJ
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0Nh
aXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlck1lbnVMaXN0LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVD
b25maWd1cmF0aW9uCkBAIC02NDQxNyw2ICs2NDQ4OSwxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxl
PgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcTWVkaWFDb250
cm9sRWxlbWVudFR5cGVzLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5o
IgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFxzaGFkb3dcTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGVkYzQ2MjQ2OTg3MjgyZGY4NzhkMTEwODNhNGRmNGRmOTdkOThmYWQuLjBjYzk4N2Qx
OGY4NDVjNDE2ZDg5ZWE4ODViMWM0M2U2YzY1ODMwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYwNDQsNiArNjA0NCwxMCBA
QAogCQlERDc2M0JCMjA5OTJDMkM5MDA3NDBCOEUgLyogbGlieG1sMi5keWxpYiBpbiBGcmFtZXdv
cmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERENzYzQkIxMDk5MkMyQzkw
MDc0MEI4RSAvKiBsaWJ4bWwyLmR5bGliICovOyB9OwogCQlERDdDREYyNTBBMjNDRjk4MDAwNjk5
MjggLyogQ1NTVW5rbm93blJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4MEU2Q0NFMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NVbmtub3duUnVsZS5o
ICovOyB9OwogCQlEREU2M0VENTBCN0Q0NUE4MDAyMjY5OTggLyogRE9NVGV4dEV2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNBMTQ3NTBCN0Qx
QkFGMDBBNTNGRkQgLyogRE9NVGV4dEV2ZW50LmggKi87IH07CisJCURFNDlCMzA5MTY1RjJGRTEw
MDEwMzM4RCAvKiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTQ5QjMwNzE2NUYyRkUxMDAxMDMzOEQg
LyogUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovOyB9OworCQlERUJDQ0REMjE2NjQ2
RTgyMDBBNDUyRTEgLyogUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNDlCMzA4MTY1RjJGRTEwMDEwMzM4
RCAvKiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovOyB9OworCQlERUJDQ0RENDE2NjQ2
RUFGMDBBNDUyRTEgLyogTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTQ5QjMwMDE2NUYyRkM2MDAxMDMzOEQg
LyogTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmggKi87IH07CisJCURFQkNDREQ1MTY2NDZFQjIw
MEE0NTJFMSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU0OUIyRkYxNjVGMkZDNjAwMTAzMzhEIC8q
IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAgKi87IH07CiAJCURGOUFGRDcyMTNGQzMxRDgw
MDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjlBRkQ3MDEzRkMzMUQ4MDAx
NUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oICovOyB9OwogCQlE
RjlBRkQ3MzEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERG
OUFGRDcxMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tICovOyB9OwogCQlFMEZFRjM3MkIxN0M1M0VBQzFDMUZCRUUgLyogRXZlbnRTb3VyY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUwRkVGMzcx
QjE3QzUzRUFDMUMxRkJFRSAvKiBFdmVudFNvdXJjZS5oICovOyB9OwpAQCAtMTM0ODksNiArMTM0
OTMsMTAgQEAKIAkJREIyM0MyQ0EwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21t
YW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRlbnRPdXRkZW50Q29t
bWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERDA1RkUwQjBCOEJBM0M2MDA5
QUNERkUgLyogV2ViQ29yZU9iakNFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkNvcmVPYmpDRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CURENzYzQkIxMDk5MkMyQzkwMDc0MEI4RSAvKiBsaWJ4bWwyLmR5bGliICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxp
YiI7IG5hbWUgPSBsaWJ4bWwyLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlieG1sMi5keWxpYjsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJREU0OUIyRkYxNjVGMkZDNjAwMTAzMzhE
IC8qIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlERTQ5QjMwMDE2NUYyRkM2MDAxMDMzOEQgLyogTWVkaWFDb250cm9s
RWxlbWVudFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29u
dHJvbEVsZW1lbnRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERTQ5QjMw
NzE2NUYyRkUxMDAxMDMzOEQgLyogUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERTQ5QjMwODE2NUYyRkUxMDAx
MDMzOEQgLyogUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJREY5QUZENzAxM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOyBwYXRoID0gb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURGOUFGRDcxMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbTsgcGF0aCA9IG9iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTBGRUYzNzFCMDdDNTNFQUMxQzFGQkVFIC8qIEV2ZW50U291cmNlLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBFdmVudFNvdXJjZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTE4OSw2ICsxNTE5Nyw4IEBACiAJCQkJNTcyMTQ1Q0MxNUE1MURBNzAwQUQxMTlD
IC8qIEltYWdlSW5uZXJFbGVtZW50LmggKi8sCiAJCQkJNTdDRjQ5NzIxNEVFMzZENzAwRUNGRjE0
IC8qIEluc2VydGlvblBvaW50LmNwcCAqLywKIAkJCQk1N0NGNDk3MzE0RUUzNkQ3MDBFQ0ZGMTQg
LyogSW5zZXJ0aW9uUG9pbnQuaCAqLywKKwkJCQlERTQ5QjJGRjE2NUYyRkM2MDAxMDMzOEQgLyog
TWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCAqLywKKwkJCQlERTQ5QjMwMDE2NUYyRkM2MDAx
MDMzOEQgLyogTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmggKi8sCiAJCQkJNDE3MjUzQTgxMzU0
QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLywKIAkJCQk0MTcyNTNB
OTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLywKIAkJCQk0MTU3
QUY3RjEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sc0FwcGxlLmNwcCAqLywKQEAgLTIx
NzExLDYgKzIxNzIxLDggQEAKIAkJCQlFNEMyNzk1NzBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVy
TWVkaWEuaCAqLywKIAkJCQk0MUZBMzAzQzEzMTZDMjlDMDBDMEJGQzUgLyogUmVuZGVyTWVkaWFD
b250cm9scy5jcHAgKi8sCiAJCQkJNDFGQTMwM0QxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1l
ZGlhQ29udHJvbHMuaCAqLywKKwkJCQlERTQ5QjMwNzE2NUYyRkUxMDAxMDMzOEQgLyogUmVuZGVy
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovLAorCQkJCURFNDlCMzA4MTY1RjJGRTEwMDEwMzM4
RCAvKiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovLAogCQkJCUFCRERGRTczMEE1QzZF
NkYwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5jcHAgKi8sCiAJCQkJQUJEREZFNzQwQTVDNkU3
MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi8sCiAJCQkJQTQ1NDQyNEMxMTlCMzY4NzAw
OUJFOTEyIC8qIFJlbmRlck1ldGVyLmNwcCAqLywKQEAgLTI1ODYxLDYgKzI1ODczLDggQEAKIAkJ
CQkzMTc0MUFBRDE2NjM2NjA5MDA4QTVCN0UgLyogU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNUI4QjdDOTE2NTJDNTIyMDAzNkVGNTUgLyogSlNXZWJLaXRDU1NN
aXhGdW5jdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Y3MkFGMzE2NjZFREZDMDAy
QTAyQkQgLyogTGF5ZXJQb29sLmggaW4gSGVhZGVycyAqLywKKwkJCQlERUJDQ0REMjE2NjQ2RTgy
MDBBNDUyRTEgLyogUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovLAor
CQkJCURFQkNDREQ0MTY2NDZFQUYwMEE0NTJFMSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMjgwMTMsNiArMjgwMjcsNyBAQAogCQkJCUNEMjdGNkU3MTQ1
NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDE1N0FGODExMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxRjNDM0JFQTEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlERUJDQ0RENTE2NjQ2RUIyMDBBNDUyRTEgLyogTWVkaWFD
b250cm9sRWxlbWVudFR5cGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MjA1QUI3MTIzOTI5
MTAwMEIxNzM4MCAvKiBNZWRpYURvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENkYy
NTJDMTNGNUVGMEUwMDY1MTY1RiAvKiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNEUxOTU5MjEwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVy
ZU5hbWVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjgyNTIsNiArMjgyNjcsNyBAQAogCQkJCTQz
OTA0NkU5MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTRDMjc5NTgwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQxRkEzMDNFMTMxNkMyOUMwMEMwQkZDNSAvKiBSZW5kZXJN
ZWRpYUNvbnRyb2xzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURFNDlCMzA5MTY1RjJGRTEwMDEw
MzM4RCAvKiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBQkRERkU3OTBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTQ1NDQyNEUxMTlCMzY4NzAwOUJFOTEyIC8qIFJlbmRlck1ldGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDNDU4MjdGMTUxMjk5QzEwMDYxQTU1NiAvKiBSZW5kZXJNdWx0
aUNvbHVtbkJsb2NrLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAppbmRleCAwNDdjOGY1NzAzZTc2OWU0MmYyOGVkMzQ2MmZlMzI2MWRkNDAwNDkw
Li4wMDQwM2Y5NTNkMGU1OWVhYzY3OGQ2MTFmYzdkYWFjOGI1ODk1MWUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMjQ3LDYgKzI0Nyw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgdG9nZ2xlVHJhY2tBdEluZGV4KGludCBpbmRleCwgYm9vbCBleGNsdXNpdmUgPSB0
cnVlKTsKICAgICBzdGF0aWMgaW50IHRleHRUcmFja3NPZmZJbmRleCgpIHsgcmV0dXJuIC0xOyB9
CisgICAgc3RhdGljIGludCB0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZCgpIHsgcmV0dXJuIC0yOyB9
CiAKICAgICBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdDsKICAgICBib29sIHVzZXJJ
c0ludGVyZXN0ZWRJblRoaXNUcmFja0tpbmQoU3RyaW5nKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdjMTIwYzIxYTM4YTM5MTk2ZTg0NzQzZTQ1YjAzOWNmOGNhZmYwZmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50VHlwZXMuY3BwCkBAIC0wLDAgKzEsMzM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xF
bGVtZW50VHlwZXMuaCIKKworI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRl
ICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJN
b3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyTWVkaWEuaCIKKyNpbmNsdWRlICJSZW5kZXJN
ZWRpYUNvbnRyb2xFbGVtZW50cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CisKK2NsYXNzIEV2ZW50OworCisvLyBGSVhNRTogVGhlc2UgY29u
c3RhbnRzIG1heSBuZWVkIHRvIGJlIHR3ZWFrZWQgdG8gYmV0dGVyIG1hdGNoIHRoZSBzZWVraW5n
IGluIHRoZSBRdWlja1RpbWUgcGx1Zy1pbi4KK3N0YXRpYyBjb25zdCBmbG9hdCBjU2tpcFJlcGVh
dERlbGF5ID0gMC4xZjsKK3N0YXRpYyBjb25zdCBmbG9hdCBjU2tpcFRpbWUgPSAwLjJmOworc3Rh
dGljIGNvbnN0IGZsb2F0IGNTY2FuUmVwZWF0RGVsYXkgPSAxLjVmOworc3RhdGljIGNvbnN0IGZs
b2F0IGNTY2FuTWF4aW11bVJhdGUgPSA4OworCitIVE1MTWVkaWFFbGVtZW50KiB0b1BhcmVudE1l
ZGlhRWxlbWVudChOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgTm9kZSogbWVkaWFOb2RlID0gbm9kZS0+c2hhZG93SG9zdCgpOworICAgIGlmICgh
bWVkaWFOb2RlKQorICAgICAgICBtZWRpYU5vZGUgPSBub2RlOworICAgIGlmICghbWVkaWFOb2Rl
IHx8ICFtZWRpYU5vZGUtPmlzRWxlbWVudE5vZGUoKSB8fCAhc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KG1lZGlhTm9kZSktPmlzTWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtZWRpYU5vZGUpOworfQorCitN
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBtZWRpYUNvbnRyb2xFbGVtZW50VHlwZShOb2RlKiBub2Rl
KQoreworICAgIEFTU0VSVChub2RlLT5pc01lZGlhQ29udHJvbEVsZW1lbnQoKSk7CisgICAgSFRN
TEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG5vZGUpOworICAgIGlmIChlbGVtZW50
LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1lZGlh
Q29udHJvbElucHV0RWxlbWVudCo+KGVsZW1lbnQpLT5kaXNwbGF5VHlwZSgpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxNZWRpYUNvbnRyb2xEaXZFbGVtZW50Kj4oZWxlbWVudCktPmRpc3BsYXlU
eXBlKCk7Cit9CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitjb25zdCBBdG9taWNTdHJpbmcm
IHRyYWNrSW5kZXhBdHRyaWJ1dGVOYW1lKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgbmFtZSwgKCJ4LXdlYmtpdC10cmFjay1pbmRleCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworaW50IHRyYWNr
TGlzdEluZGV4Rm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQoreworICAgIGNvbnN0IEF0b21p
Y1N0cmluZyB0cmFja0luZGV4QXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUo
dHJhY2tJbmRleEF0dHJpYnV0ZU5hbWUoKSk7CisgICAgaWYgKHRyYWNrSW5kZXhBdHRyaWJ1dGVW
YWx1ZS5pc051bGwoKSB8fCB0cmFja0luZGV4QXR0cmlidXRlVmFsdWUuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrc0luZGV4Tm90Rm91bmQoKTsK
KyAgICBib29sIG9rOworICAgIGludCB0cmFja0luZGV4ID0gdHJhY2tJbmRleEF0dHJpYnV0ZVZh
bHVlLnRvSW50KCZvayk7CisgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIEhUTUxNZWRpYUVs
ZW1lbnQ6OnRleHRUcmFja3NJbmRleE5vdEZvdW5kKCk7CisgICAgcmV0dXJuIHRyYWNrSW5kZXg7
Cit9CisjZW5kaWYKKworTWVkaWFDb250cm9sRWxlbWVudDo6TWVkaWFDb250cm9sRWxlbWVudChN
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSwgSFRNTEVsZW1lbnQqIGVsZW1lbnQp
CisgICAgOiBtX21lZGlhQ29udHJvbGxlcigwKQorICAgICwgbV9kaXNwbGF5VHlwZShkaXNwbGF5
VHlwZSkKKyAgICAsIG1fZWxlbWVudChlbGVtZW50KQoreworfQorCit2b2lkIE1lZGlhQ29udHJv
bEVsZW1lbnQ6OmhpZGUoKQoreworICAgIG1fZWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlTm9uZSk7Cit9CisKK3ZvaWQgTWVkaWFDb250
cm9sRWxlbWVudDo6c2hvdygpCit7CisgICAgbV9lbGVtZW50LT5yZW1vdmVJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sRWxlbWVu
dDo6aXNTaG93aW5nKCkgY29uc3QKK3sKKyAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9w
ZXJ0eVNldCA9IG1fZWxlbWVudC0+aW5saW5lU3R5bGUoKTsKKyAgICAvLyBGb2xsb3dpbmcgdGhl
IGNvZGUgZnJvbSBzaG93KCkgYW5kIGhpZGUoKSBhYm92ZSwgd2Ugb25seSBoYXZlCisgICAgLy8g
dG8gY2hlY2sgZm9yIHRoZSBwcmVzZW5zZSBvZiBpbmxpbmUgZGlzcGxheS4KKyAgICByZXR1cm4g
KCFwcm9wZXJ0eVNldCB8fCAhcHJvcGVydHlTZXQtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJv
cGVydHlEaXNwbGF5KSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRWxlbWVudDo6c2V0RGlzcGxh
eVR5cGUoTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUpCit7CisgICAgaWYgKGRp
c3BsYXlUeXBlID09IG1fZGlzcGxheVR5cGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGlz
cGxheVR5cGUgPSBkaXNwbGF5VHlwZTsKKyAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBt
X2VsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgICAgIG9iamVjdC0+cmVwYWludCgpOworfQorCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01lZGlhQ29udHJvbERpdkVsZW1lbnQ6
Ok1lZGlhQ29udHJvbERpdkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xF
bGVtZW50VHlwZSBkaXNwbGF5VHlwZSkKKyAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9j
dW1lbnQpCisgICAgLCBNZWRpYUNvbnRyb2xFbGVtZW50KGRpc3BsYXlUeXBlLCB0aGlzKQorewor
fQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01lZGlhQ29udHJvbElucHV0
RWxlbWVudDo6TWVkaWFDb250cm9sSW5wdXRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgTWVk
aWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUpCisgICAgOiBIVE1MSW5wdXRFbGVtZW50
KGlucHV0VGFnLCBkb2N1bWVudCwgMCwgZmFsc2UpCisgICAgLCBNZWRpYUNvbnRyb2xFbGVtZW50
KGRpc3BsYXlUeXBlLCB0aGlzKQoreworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK01lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sVGltZURp
c3BsYXlFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUg
ZGlzcGxheVR5cGUpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBkaXNw
bGF5VHlwZSkKKyAgICAsIG1fY3VycmVudFZhbHVlKDApCit7Cit9CisKK3ZvaWQgTWVkaWFDb250
cm9sVGltZURpc3BsYXlFbGVtZW50OjpzZXRDdXJyZW50VmFsdWUoZmxvYXQgdGltZSkKK3sKKyAg
ICBtX2N1cnJlbnRWYWx1ZSA9IHRpbWU7Cit9CisKK1JlbmRlck9iamVjdCogTWVkaWFDb250cm9s
VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJl
bmRlclN0eWxlKikKK3sKKyAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyTWVkaWFDb250cm9s
VGltZURpc3BsYXkodGhpcyk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbE11dGVCdXR0b25F
bGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxh
eVR5cGUpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIGRpc3BsYXlU
eXBlKQoreworfQorCit2b2lkIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkuY2xpY2tFdmVudCkgeworICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0
TXV0ZWQoIW1lZGlhQ29udHJvbGxlcigpLT5tdXRlZCgpKTsKKyAgICAgICAgZXZlbnQtPnNldERl
ZmF1bHRIYW5kbGVkKCk7CisgICAgfQorCisgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihldmVudCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1l
bnQ6OmNoYW5nZWRNdXRlKCkKK3sKKyAgICB1cGRhdGVEaXNwbGF5VHlwZSgpOworfQorCit2b2lk
IE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50Ojp1cGRhdGVEaXNwbGF5VHlwZSgpCit7Cisg
ICAgc2V0RGlzcGxheVR5cGUobWVkaWFDb250cm9sbGVyKCktPm11dGVkKCkgPyBNZWRpYVVuTXV0
ZUJ1dHRvbiA6IE1lZGlhTXV0ZUJ1dHRvbik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFNl
ZWtCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9sRWxlbWVudFR5
cGUgZGlzcGxheVR5cGUpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQs
IGRpc3BsYXlUeXBlKQorICAgICwgbV9hY3Rpb25PblN0b3AoTm90aGluZykKKyAgICAsIG1fc2Vl
a1R5cGUoU2tpcCkKKyAgICAsIG1fc2Vla1RpbWVyKHRoaXMsICZNZWRpYUNvbnRyb2xTZWVrQnV0
dG9uRWxlbWVudDo6c2Vla1RpbWVyRmlyZWQpCit7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sU2Vl
a0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAg
IC8vIFNldCB0aGUgbW91c2Vkb3duIGFuZCBtb3VzZXVwIGV2ZW50cyBhcyBkZWZhdWx0SGFuZGxl
ZCBzbyB0aGV5CisgICAgLy8gZG8gbm90IHRyaWdnZXIgZHJhZyBzdGFydCBvciBlbmQgYWN0aW9u
cyBpbiBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQuCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLm1vdXNldXBFdmVudCkKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Cit9
CisKK3ZvaWQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OnNldEFjdGl2ZShib29sIGZs
YWcsIGJvb2wgcGF1c2UpCit7CisgICAgaWYgKGZsYWcgPT0gYWN0aXZlKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChmbGFnKQorICAgICAgICBzdGFydFRpbWVyKCk7CisgICAgZWxzZQor
ICAgICAgICBzdG9wVGltZXIoKTsKKworICAgIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6c2V0
QWN0aXZlKGZsYWcsIHBhdXNlKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxl
bWVudDo6c3RhcnRUaW1lcigpCit7CisgICAgbV9zZWVrVHlwZSA9IG1lZGlhQ29udHJvbGxlcigp
LT5zdXBwb3J0c1NjYW5uaW5nKCkgPyBTY2FuIDogU2tpcDsKKworICAgIGlmIChtX3NlZWtUeXBl
ID09IFNraXApIHsKKyAgICAgICAgLy8gU2Vla2luZyBieSBza2lwcGluZyByZXF1aXJlcyB0aGUg
dmlkZW8gdG8gYmUgcGF1c2VkIGR1cmluZyBzZWVraW5nLgorICAgICAgICBtX2FjdGlvbk9uU3Rv
cCA9IG1lZGlhQ29udHJvbGxlcigpLT5wYXVzZWQoKSA/IE5vdGhpbmcgOiBQbGF5OworICAgICAg
ICBtZWRpYUNvbnRyb2xsZXIoKS0+cGF1c2UoKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBT
ZWVraW5nIGJ5IHNjYW5uaW5nIHJlcXVpcmVzIHRoZSB2aWRlbyB0byBiZSBwbGF5aW5nIGR1cmlu
ZyBzZWVraW5nLgorICAgICAgICBtX2FjdGlvbk9uU3RvcCA9IG1lZGlhQ29udHJvbGxlcigpLT5w
YXVzZWQoKSA/IFBhdXNlIDogTm90aGluZzsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnBs
YXkoKTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldFBsYXliYWNrUmF0ZShuZXh0UmF0
ZSgpKTsKKyAgICB9CisKKyAgICBtX3NlZWtUaW1lci5zdGFydCgwLCBtX3NlZWtUeXBlID09IFNr
aXAgPyBjU2tpcFJlcGVhdERlbGF5IDogY1NjYW5SZXBlYXREZWxheSk7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OnN0b3BUaW1lcigpCit7CisgICAgaWYgKG1fc2Vl
a1R5cGUgPT0gU2NhbikKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldFBsYXliYWNrUmF0
ZShtZWRpYUNvbnRyb2xsZXIoKS0+ZGVmYXVsdFBsYXliYWNrUmF0ZSgpKTsKKworICAgIGlmICht
X2FjdGlvbk9uU3RvcCA9PSBQbGF5KQorICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+cGxheSgp
OworICAgIGVsc2UgaWYgKG1fYWN0aW9uT25TdG9wID09IFBhdXNlKQorICAgICAgICBtZWRpYUNv
bnRyb2xsZXIoKS0+cGF1c2UoKTsKKworICAgIGlmIChtX3NlZWtUaW1lci5pc0FjdGl2ZSgpKQor
ICAgICAgICBtX3NlZWtUaW1lci5zdG9wKCk7Cit9CisKK2Zsb2F0IE1lZGlhQ29udHJvbFNlZWtC
dXR0b25FbGVtZW50OjpuZXh0UmF0ZSgpIGNvbnN0Cit7CisgICAgZmxvYXQgcmF0ZSA9IHN0ZDo6
bWluKGNTY2FuTWF4aW11bVJhdGUsIGZhYnNmKG1lZGlhQ29udHJvbGxlcigpLT5wbGF5YmFja1Jh
dGUoKSAqIDIpKTsKKyAgICBpZiAoIWlzRm9yd2FyZEJ1dHRvbigpKQorICAgICAgICByYXRlICo9
IC0xOworICAgIHJldHVybiByYXRlOworfQorCit2b2lkIE1lZGlhQ29udHJvbFNlZWtCdXR0b25F
bGVtZW50OjpzZWVrVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVu
dD4qKQoreworICAgIGlmIChtX3NlZWtUeXBlID09IFNraXApIHsKKyAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYzsKKyAgICAgICAgZmxvYXQgc2tpcFRpbWUgPSBpc0ZvcndhcmRCdXR0b24oKSA/IGNT
a2lwVGltZSA6IC1jU2tpcFRpbWU7CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRDdXJy
ZW50VGltZShtZWRpYUNvbnRyb2xsZXIoKS0+Y3VycmVudFRpbWUoKSArIHNraXBUaW1lLCBlYyk7
CisgICAgfSBlbHNlCisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRQbGF5YmFja1JhdGUo
bmV4dFJhdGUoKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQo
ZG9jdW1lbnQsIE1lZGlhVm9sdW1lU2xpZGVyKQorICAgICwgbV9jbGVhck11dGVkT25Vc2VySW50
ZXJhY3Rpb24oZmFsc2UpCit7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgLy8gTGVmdCBi
dXR0b24gaXMgMC4gUmVqZWN0cyBtb3VzZSBldmVudHMgbm90IGZyb20gbGVmdCBidXR0b24uCisg
ICAgaWYgKGV2ZW50LT5pc01vdXNlRXZlbnQoKSAmJiBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4o
ZXZlbnQpLT5idXR0b24oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFhdHRhY2hlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoZXZlbnQpOworCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLm1vdXNlb3ZlckV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1v
dXNlb3V0RXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZl
bnQpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHZvbHVtZSA9IG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQodmFsdWUoKS50b0RvdWJsZSgpKTsKKyAgICBpZiAodm9sdW1lICE9IG1lZGlhQ29u
dHJvbGxlcigpLT52b2x1bWUoKSkgeworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldFZvbHVtZSh2b2x1bWUsIGVjKTsKKyAgICAgICAg
QVNTRVJUKCFlYyk7CisgICAgfQorICAgIGlmIChtX2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlv
bikKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldE11dGVkKGZhbHNlKTsKK30KKworYm9v
bCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VNb3Zl
RXZlbnRzKCkKK3sKKyAgICBpZiAoIWF0dGFjaGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3Vz
ZU1vdmVFdmVudHMoKTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50
Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCit7CisgICAgaWYgKCFhdHRhY2hlZCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gTWVkaWFDb250cm9sSW5wdXRF
bGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCit7Cisg
ICAgaWYgKHZhbHVlKCkudG9GbG9hdCgpICE9IHZvbHVtZSkKKyAgICAgICAgc2V0VmFsdWUoU3Ry
aW5nOjpudW1iZXIodm9sdW1lKSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
RWxlbWVudDo6c2V0Q2xlYXJNdXRlZE9uVXNlckludGVyYWN0aW9uKGJvb2wgY2xlYXJNdXRlKQor
eworICAgIG1fY2xlYXJNdXRlZE9uVXNlckludGVyYWN0aW9uID0gY2xlYXJNdXRlOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjkxYjBjOGEzNTFlYTAyYmI2MWQzZjU3MDFhNmQ0NzM4ODA1ZmE2NDMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50VHlwZXMuaApAQCAtMCwwICsxLDIxNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlc19oCisjZGVmaW5lIE1lZGlhQ29udHJvbEVsZW1lbnRU
eXBlc19oCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5o
IgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVt
ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgiCisjaW5jbHVkZSAi
UmVuZGVyQmxvY2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBNdXN0IG1hdGNoIFdl
YktpdFN5c3RlbUludGVyZmFjZS5oCitlbnVtIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIHsKKyAg
ICBNZWRpYUVudGVyRnVsbHNjcmVlbkJ1dHRvbiA9IDAsCisgICAgTWVkaWFNdXRlQnV0dG9uLAor
ICAgIE1lZGlhUGxheUJ1dHRvbiwKKyAgICBNZWRpYVNlZWtCYWNrQnV0dG9uLAorICAgIE1lZGlh
U2Vla0ZvcndhcmRCdXR0b24sCisgICAgTWVkaWFTbGlkZXIsCisgICAgTWVkaWFTbGlkZXJUaHVt
YiwKKyAgICBNZWRpYVJld2luZEJ1dHRvbiwKKyAgICBNZWRpYVJldHVyblRvUmVhbHRpbWVCdXR0
b24sCisgICAgTWVkaWFTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24sCisgICAgTWVkaWFIaWRlQ2xv
c2VkQ2FwdGlvbnNCdXR0b24sCisgICAgTWVkaWFVbk11dGVCdXR0b24sCisgICAgTWVkaWFQYXVz
ZUJ1dHRvbiwKKyAgICBNZWRpYVRpbWVsaW5lQ29udGFpbmVyLAorICAgIE1lZGlhQ3VycmVudFRp
bWVEaXNwbGF5LAorICAgIE1lZGlhVGltZVJlbWFpbmluZ0Rpc3BsYXksCisgICAgTWVkaWFTdGF0
dXNEaXNwbGF5LAorICAgIE1lZGlhQ29udHJvbHNQYW5lbCwKKyAgICBNZWRpYVZvbHVtZVNsaWRl
ckNvbnRhaW5lciwKKyAgICBNZWRpYVZvbHVtZVNsaWRlciwKKyAgICBNZWRpYVZvbHVtZVNsaWRl
clRodW1iLAorICAgIE1lZGlhRnVsbFNjcmVlblZvbHVtZVNsaWRlciwKKyAgICBNZWRpYUZ1bGxT
Y3JlZW5Wb2x1bWVTbGlkZXJUaHVtYiwKKyAgICBNZWRpYVZvbHVtZVNsaWRlck11dGVCdXR0b24s
CisgICAgTWVkaWFUZXh0VHJhY2tEaXNwbGF5Q29udGFpbmVyLAorICAgIE1lZGlhVGV4dFRyYWNr
RGlzcGxheSwKKyAgICBNZWRpYUV4aXRGdWxsc2NyZWVuQnV0dG9uLAorICAgIE1lZGlhT3Zlcmxh
eVBsYXlCdXR0b24sCisgICAgTWVkaWFDbG9zZWRDYXB0aW9uc0NvbnRhaW5lciwKKyAgICBNZWRp
YUNsb3NlZENhcHRpb25zVHJhY2tMaXN0LAorfTsKKworSFRNTE1lZGlhRWxlbWVudCogdG9QYXJl
bnRNZWRpYUVsZW1lbnQoTm9kZSopOworaW5saW5lIEhUTUxNZWRpYUVsZW1lbnQqIHRvUGFyZW50
TWVkaWFFbGVtZW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgcmV0dXJuIHRvUGFyZW50TWVk
aWFFbGVtZW50KHJlbmRlcmVyLT5ub2RlKCkpOyB9CisKK01lZGlhQ29udHJvbEVsZW1lbnRUeXBl
IG1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKE5vZGUqKTsKKworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKK2NvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJbmRleEF0dHJpYnV0ZU5hbWUoKTsKK2ludCB0
cmFja0xpc3RJbmRleEZvckVsZW1lbnQoRWxlbWVudCopOworI2VuZGlmCisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgTWVkaWFDb250cm9sRWxlbWVudCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB2b2lkIGhpZGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvdygpOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1Nob3dpbmcoKSBjb25zdDsKKworICAgIHZpcnR1YWwgTWVkaWFD
b250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSB7IHJldHVybiBtX2Rpc3BsYXlUeXBlOyB9
CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2UqIGNvbnRyb2xsZXIpIHsgbV9tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVy
OyB9CisgICAgdmlydHVhbCBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIG1lZGlhQ29udHJvbGxl
cigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFDb250cm9sbGVyOyB9CisKK3Byb3RlY3RlZDoKKyAg
ICBleHBsaWNpdCBNZWRpYUNvbnRyb2xFbGVtZW50KE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlLCBI
VE1MRWxlbWVudCopOworICAgIH5NZWRpYUNvbnRyb2xFbGVtZW50KCkgeyB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0RGlzcGxheVR5cGUoTWVkaWFDb250cm9sRWxlbWVudFR5cGUpOworICAgIHZp
cnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBtX21lZGlhQ29udHJv
bGxlcjsKKyAgICBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBtX2Rpc3BsYXlUeXBlOworICAgIEhU
TUxFbGVtZW50KiBtX2VsZW1lbnQ7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK2NsYXNzIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgOiBwdWJsaWMgSFRNTERpdkVsZW1l
bnQsIHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNZWRpYUNvbnRyb2xFbGVtZW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gTWVk
aWFDb250cm9sRWxlbWVudDo6aXNNZWRpYUNvbnRyb2xFbGVtZW50KCk7IH0KKyAgICBleHBsaWNp
dCBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250cm9sRWxlbWVudFR5
cGUpOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBNZWRp
YUNvbnRyb2xJbnB1dEVsZW1lbnQgOiBwdWJsaWMgSFRNTElucHV0RWxlbWVudCwgcHVibGljIE1l
ZGlhQ29udHJvbEVsZW1lbnQgeworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgYm9vbCBpc01lZGlh
Q29udHJvbEVsZW1lbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBNZWRpYUNvbnRyb2xFbGVt
ZW50Ojppc01lZGlhQ29udHJvbEVsZW1lbnQoKTsgfQorICAgIGV4cGxpY2l0IE1lZGlhQ29udHJv
bElucHV0RWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsKKworcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKSB7IH0KK307CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgTWVkaWFDb250cm9sVGltZURp
c3BsYXlFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgor
ICAgIHZvaWQgc2V0Q3VycmVudFZhbHVlKGZsb2F0KTsKKyAgICBmbG9hdCBjdXJyZW50VmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhw
bGljaXQgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250
cm9sRWxlbWVudFR5cGUpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgT1ZFUlJJREU7CisKKyAg
ICBmbG9hdCBtX2N1cnJlbnRWYWx1ZTsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworY2xhc3MgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVk
aWFDb250cm9sSW5wdXRFbGVtZW50IHsKK3B1YmxpYzoKKyAgICB2b2lkIGNoYW5nZWRNdXRlKCk7
CisKKyAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBNZWRpYUNv
bnRyb2xNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBl
KTsKKworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJ
REU7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCkgT1ZF
UlJJREU7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIE1l
ZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxl
bWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNr
RXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhw
bGljaXQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRy
b2xFbGVtZW50VHlwZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0ZvcndhcmRCdXR0b24oKSBjb25z
dCA9IDA7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCAvKmZsYWcqLyA9IHRy
dWUsIGJvb2wgLypwYXVzZSovID0gZmFsc2UpOworCisgICAgdm9pZCBzdGFydFRpbWVyKCk7Cisg
ICAgdm9pZCBzdG9wVGltZXIoKTsKKyAgICBmbG9hdCBuZXh0UmF0ZSgpIGNvbnN0OworICAgIHZv
aWQgc2Vla1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ+Kik7
CisKKyAgICBlbnVtIEFjdGlvblR5cGUgeyBOb3RoaW5nLCBQbGF5LCBQYXVzZSB9OworICAgIEFj
dGlvblR5cGUgbV9hY3Rpb25PblN0b3A7CisgICAgZW51bSBTZWVrVHlwZSB7IFNraXAsIFNjYW4g
fTsKKyAgICBTZWVrVHlwZSBtX3NlZWtUeXBlOworICAgIFRpbWVyPE1lZGlhQ29udHJvbFNlZWtC
dXR0b25FbGVtZW50PiBtX3NlZWtUaW1lcjsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworY2xhc3MgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCA6IHB1Ymxp
YyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCB3
aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7CisgICAgdm9pZCBzZXRW
b2x1bWUoZmxvYXQpOworICAgIHZvaWQgc2V0Q2xlYXJNdXRlZE9uVXNlckludGVyYWN0aW9uKGJv
b2wpOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
RWxlbWVudChEb2N1bWVudCopOworCisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBib29sIG1fY2xlYXJNdXRlZE9u
VXNlckludGVyYWN0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFZJREVPKQorCisjZW5kaWYgLy8gTWVkaWFDb250cm9sRWxlbWVudFR5cGVzX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRz
LmNwcAppbmRleCA2YWU1NWYzZDkzMDI0MjA5YzM2OTYwMWVkZDliZDdmMTQwMTA1OTU5Li42ODgw
OTM0YTE5ZWM2Y2VlYmJlODJlN2I2ZWYwN2I2NDViZTE0YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjksNDAgKzMwLDI1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoVklE
RU8pCi0KICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogCi0jaW5jbHVkZSAiQ1NT
U3R5bGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNs
dWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKLSNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJIVE1MRGl2RWxlbWVu
dC5oIgotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIK
LSNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdz
LmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9scy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCi0jaW5jbHVkZSAiUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgiCi0jaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCi0j
aW5jbHVkZSAiUmVuZGVyTWVkaWEuaCIKKyNpbmNsdWRlICJSZW5kZXJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5oIgogI2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgotI2luY2x1ZGUgIlJlbmRlclRleHQu
aCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCi0j
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKLSNpbmNsdWRl
ICJUZXh0LmgiCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogI2luY2x1ZGUgIlRleHRUcmFjay5o
IgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKQEAgLTcxLDkxICs1NywxMyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKLQotLy8gRklYTUU6IFRoZXNlIGNvbnN0YW50cyBtYXkgbmVlZCB0byBiZSB0d2Vh
a2VkIHRvIGJldHRlciBtYXRjaCB0aGUgc2Vla2luZyBpbiB0aGUgUXVpY2tUaW1lIHBsdWctaW4u
Ci1zdGF0aWMgY29uc3QgZmxvYXQgY1NraXBSZXBlYXREZWxheSA9IDAuMWY7Ci1zdGF0aWMgY29u
c3QgZmxvYXQgY1NraXBUaW1lID0gMC4yZjsKLXN0YXRpYyBjb25zdCBmbG9hdCBjU2NhblJlcGVh
dERlbGF5ID0gMS41ZjsKLXN0YXRpYyBjb25zdCBmbG9hdCBjU2Nhbk1heGltdW1SYXRlID0gODsK
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIHN0YXRpYyBjb25zdCBjaGFyKiB0ZXh0VHJhY2tz
T2ZmQXR0clZhbHVlID0gIi0xIjsgLy8gVGhpcyBtdXN0IG1hdGNoIEhUTUxNZWRpYUVsZW1lbnQ6
OnRleHRUcmFja3NPZmZJbmRleCgpCi1zdGF0aWMgY29uc3QgaW50IHRleHRUcmFja3NJbmRleE5v
dEZvdW5kID0gLTI7Ci0jZW5kaWYKLQotSFRNTE1lZGlhRWxlbWVudCogdG9QYXJlbnRNZWRpYUVs
ZW1lbnQoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOwot
ICAgIE5vZGUqIG1lZGlhTm9kZSA9IG5vZGUtPnNoYWRvd0hvc3QoKTsKLSAgICBpZiAoIW1lZGlh
Tm9kZSkKLSAgICAgICAgbWVkaWFOb2RlID0gbm9kZTsKLSAgICBpZiAoIW1lZGlhTm9kZSB8fCAh
bWVkaWFOb2RlLT5pc0VsZW1lbnROb2RlKCkgfHwgIXN0YXRpY19jYXN0PEVsZW1lbnQqPihtZWRp
YU5vZGUpLT5pc01lZGlhRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obWVkaWFOb2RlKTsKLX0KLQotTWVkaWFD
b250cm9sRWxlbWVudFR5cGUgbWVkaWFDb250cm9sRWxlbWVudFR5cGUoTm9kZSogbm9kZSkKLXsK
LSAgICBBU1NFUlQobm9kZS0+aXNNZWRpYUNvbnRyb2xFbGVtZW50KCkpOwotICAgIEhUTUxFbGVt
ZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChub2RlKTsKLSAgICBpZiAoZWxlbWVudC0+aGFz
VGFnTmFtZShpbnB1dFRhZykpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNZWRpYUNvbnRy
b2xJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+ZGlzcGxheVR5cGUoKTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8TWVkaWFDb250cm9sRWxlbWVudCo+KGVsZW1lbnQpLT5kaXNwbGF5VHlwZSgpOwot
fQotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
dHJhY2tJbmRleEF0dHJpYnV0ZU5hbWUoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBuYW1lLCAoIngtd2Via2l0LXRyYWNrLWluZGV4IiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIHJldHVybiBuYW1lOwotfQotCi1zdGF0aWMgaW50
IHRyYWNrTGlzdEluZGV4Rm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQotewotICAgIGNvbnN0
IEF0b21pY1N0cmluZyB0cmFja0luZGV4QXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LT5nZXRBdHRy
aWJ1dGUodHJhY2tJbmRleEF0dHJpYnV0ZU5hbWUoKSk7Ci0gICAgaWYgKHRyYWNrSW5kZXhBdHRy
aWJ1dGVWYWx1ZS5pc051bGwoKSB8fCB0cmFja0luZGV4QXR0cmlidXRlVmFsdWUuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gdGV4dFRyYWNrc0luZGV4Tm90Rm91bmQ7Ci0gICAgYm9vbCBvazsK
LSAgICBpbnQgdHJhY2tJbmRleCA9IHRyYWNrSW5kZXhBdHRyaWJ1dGVWYWx1ZS50b0ludCgmb2sp
OwotICAgIGlmICghb2spCi0gICAgICAgIHJldHVybiB0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZDsK
LSAgICByZXR1cm4gdHJhY2tJbmRleDsKLX0KICNlbmRpZgogCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLU1lZGlhQ29udHJvbEVsZW1lbnQ6Ok1lZGlhQ29udHJvbEVsZW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRNTERpdkVsZW1lbnQoZGl2VGFnLCBkb2N1bWVu
dCkKLSAgICAsIG1fbWVkaWFDb250cm9sbGVyKDApCi17Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9s
RWxlbWVudDo6c2hvdygpCi17Ci0gICAgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eURpc3BsYXkpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbEVsZW1lbnQ6OmhpZGUoKQotewot
ICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZU5v
bmUpOwotfQotCi1ib29sIE1lZGlhQ29udHJvbEVsZW1lbnQ6OmlzU2hvd2luZygpIGNvbnN0Ci17
Ci0gICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydHlTZXQgPSBpbmxpbmVTdHlsZSgp
OwotICAgIC8vIEZvbGxvd2luZyB0aGUgY29kZSBmcm9tIHNob3coKSBhbmQgaGlkZSgpIGFib3Zl
LCB3ZSBvbmx5IGhhdmUKLSAgICAvLyB0byBjaGVjayBmb3IgdGhlIHByZXNlbnNlIG9mIGlubGlu
ZSBkaXNwbGF5LgotICAgIHJldHVybiAoIXByb3BlcnR5U2V0IHx8ICFwcm9wZXJ0eVNldC0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpc3BsYXkpKTsKLX0KLQotLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotCi1pbmxpbmUgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpN
ZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogTWVkaWFD
b250cm9sRWxlbWVudChkb2N1bWVudCkKK01lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6TWVkaWFD
b250cm9sUGFuZWxFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJv
bERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ29udHJvbHNQYW5lbCkKICAgICAsIG1fY2FuQmVE
cmFnZ2VkKGZhbHNlKQogICAgICwgbV9pc0JlaW5nRHJhZ2dlZChmYWxzZSkKICAgICAsIG1faXNE
aXNwbGF5ZWQoZmFsc2UpCkBAIC0xNjksMTEgKzc3LDYgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xQYW5lbEVsZW1lbnQ+IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
KgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50KGRvY3Vt
ZW50KSk7CiB9CiAKLU1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIE1lZGlhQ29udHJvbFBhbmVsRWxl
bWVudDo6ZGlzcGxheVR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBNZWRpYUNvbnRyb2xzUGFu
ZWw7Ci19Ci0KIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50Ojpz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CkBAIC0yNDUsNyArMTQ4LDYgQEAgdm9pZCBNZWRpYUNv
bnRyb2xQYW5lbEVsZW1lbnQ6OnN0b3BUaW1lcigpCiAgICAgICAgIG1fdHJhbnNpdGlvblRpbWVy
LnN0b3AoKTsKIH0KIAotCiB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6dHJhbnNpdGlv
blRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50PiopCiB7CiAgICAgaWYg
KCFtX29wYXF1ZSkKQEAgLTMxOCw3ICsyMjAsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxl
bWVudDo6bWFrZVRyYW5zcGFyZW50KCkKIAogdm9pZCBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewotICAgIE1lZGlhQ29udHJvbEVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworICAgIE1lZGlhQ29udHJvbERpdkVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogCiAgICAgaWYgKGV2ZW50LT5pc01v
dXNlRXZlbnQoKSkgewogICAgICAgICBMYXlvdXRQb2ludCBsb2NhdGlvbiA9IHN0YXRpY19jYXN0
PE1vdXNlRXZlbnQqPihldmVudCktPmFic29sdXRlTG9jYXRpb24oKTsKQEAgLTM1Myw2MyArMjU1
LDY2IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpzZXRJc0Rpc3BsYXllZChib29s
IGlzRGlzcGxheWVkKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGlu
ZSBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVs
aW5lQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBNZWRpYUNvbnRy
b2xFbGVtZW50KGRvY3VtZW50KQorTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50OjpN
ZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAg
IC8vIE1hcHBpbmcgb250byBzYW1lIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGFzIHBhbmVsIGVs
ZW1lbnQsIHNpbmNlIGl0IGhhcyBzaW1pbGFyIHByb3BlcnRpZXMuCisgICAgOiBNZWRpYUNvbnRy
b2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCiB7CiB9CiAKLVBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xU
aW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCitQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudD4gTWVkaWFDb250cm9sUGFu
ZWxFbmNsb3N1cmVFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9w
dFJlZihuZXcgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7
Ci0gICAgZWxlbWVudC0+aGlkZSgpOwotICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudChk
b2N1bWVudCkpOwogfQogCi1NZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBNZWRpYUNvbnRyb2xUaW1l
bGluZUNvbnRhaW5lckVsZW1lbnQ6OmRpc3BsYXlUeXBlKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0
cmluZyYgTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1lZGlhVGltZWxpbmVDb250YWluZXI7Ci19Ci0KLWNvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWVuY2xvc3VyZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICByZXR1cm4gaWQ7CiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY2xhc3MgUmVuZGVyTWVkaWFW
b2x1bWVTbGlkZXJDb250YWluZXIgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewotcHVibGljOgotICAg
IFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKE5vZGUqKTsKLQotcHJpdmF0ZToKLSAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci19OworTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3Vy
ZUVsZW1lbnQ6Ok1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKKyAgICAvLyBNYXBwaW5nIG9udG8gc2FtZSBNZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZSBhcyBwYW5lbCBlbGVtZW50LCBzaW5jZSBpdCBoYXMgc2ltaWxhciBwcm9wZXJ0aWVzLgorICAg
IDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1BhbmVsKQor
eworfQogCi1SZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6UmVuZGVyTWVkaWFWb2x1
bWVTbGlkZXJDb250YWluZXIoTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlckJsb2NrKG5vZGUpCitQ
YXNzUmVmUHRyPE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50PiBNZWRpYUNvbnRy
b2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVt
ZW50KGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWlu
ZXI6OmxheW91dCgpCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbE92ZXJsYXlFbmNs
b3N1cmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiB7Ci0gICAgUmVuZGVyQmxvY2s6
OmxheW91dCgpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCIt
d2Via2l0LW1lZGlhLWNvbnRyb2xzLW92ZXJsYXktZW5jbG9zdXJlIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KIAotICAgIGlmIChzdHls
ZSgpLT5kaXNwbGF5KCkgPT0gTk9ORSB8fCAhbmV4dFNpYmxpbmcoKSB8fCAhbmV4dFNpYmxpbmco
KS0+aXNCb3goKSkKLSAgICAgICAgcmV0dXJuOworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi0gICAgUmVuZGVyQm94KiBidXR0b25Cb3ggPSB0b1JlbmRlckJveChuZXh0U2libGlu
ZygpKTsKLSAgICBpbnQgYWJzb2x1dGVPZmZzZXRUb3AgPSBidXR0b25Cb3gtPmxvY2FsVG9BYnNv
bHV0ZShGbG9hdFBvaW50KDAsIC1zaXplKCkuaGVpZ2h0KCkpKS55KCk7CitNZWRpYUNvbnRyb2xU
aW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRv
Y3VtZW50LCBNZWRpYVRpbWVsaW5lQ29udGFpbmVyKQoreworfQogCi0gICAgTGF5b3V0U3RhdGVE
aXNhYmxlciBsYXlvdXRTdGF0ZURpc2FibGVyKHZpZXcoKSk7CitQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sVGltZWxpbmVDb250YWlu
ZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcg
TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgZWxl
bWVudC0+aGlkZSgpOworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KIAotICAgIC8v
IElmIHRoZSBzbGlkZXIgd291bGQgYmUgcmVuZGVyZWQgb3V0c2lkZSB0aGUgcGFnZSwgaXQgc2hv
dWxkIGJlIG1vdmVkIGJlbG93IHRoZSBjb250cm9scy4KLSAgICBpZiAoVU5MSUtFTFkoYWJzb2x1
dGVPZmZzZXRUb3AgPCAwKSkKLSAgICAgICAgc2V0WShidXR0b25Cb3gtPm9mZnNldFRvcCgpICsg
dGhlbWUoKS0+dm9sdW1lU2xpZGVyT2Zmc2V0RnJvbU11dGVCdXR0b24oYnV0dG9uQm94LCBwaXhl
bFNuYXBwZWRTaXplKCkpLnkoKSk7Citjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFRp
bWVsaW5lQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXRpbWVsaW5lLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICByZXR1cm4gaWQ7CiB9CiAKLWlubGluZSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1l
bnQpCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5l
ckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVu
dChkb2N1bWVudCwgTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIpCiB7CiB9CiAKQEAgLTQ0MSwx
MSArMzQ2LDYgQEAgdm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICBoaWRlKCk7CiB9CiAKLU1l
ZGlhQ29udHJvbEVsZW1lbnRUeXBlIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVs
ZW1lbnQ6OmRpc3BsYXlUeXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gTWVkaWFWb2x1bWVTbGlk
ZXJDb250YWluZXI7Ci19Ci0KIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAogewogICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOwpAQCAtNDU0LDggKzM1NCw4IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjCiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbFN0
YXR1c0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudChEb2N1
bWVudCogZG9jdW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KGRvY3VtZW50KQorTWVk
aWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlF
bGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQo
ZG9jdW1lbnQsIE1lZGlhU3RhdHVzRGlzcGxheSkKICAgICAsIG1fc3RhdGVCZWluZ0Rpc3BsYXll
ZChOb3RoaW5nKQogewogfQpAQCAtNTAyLDc3ICs0MDIsMTYgQEAgdm9pZCBNZWRpYUNvbnRyb2xT
dGF0dXNEaXNwbGF5RWxlbWVudDo6dXBkYXRlKCkKICAgICB9CiB9CiAKLU1lZGlhQ29udHJvbEVs
ZW1lbnRUeXBlIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50OjpkaXNwbGF5VHlwZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhU3RhdHVzRGlzcGxheTsKLX0KLQogY29uc3QgQXRv
bWljU3RyaW5nJiBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6c2hhZG93UHNldWRv
SWQoKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwg
KCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXN0YXR1cy1kaXNwbGF5IiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJldHVybiBpZDsKIH0KIAotLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIAotTWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpNZWRp
YUNvbnRyb2xJbnB1dEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xFbGVt
ZW50VHlwZSBkaXNwbGF5VHlwZSkKLSAgICA6IEhUTUxJbnB1dEVsZW1lbnQoaW5wdXRUYWcsIGRv
Y3VtZW50LCAwLCBmYWxzZSkKLSAgICAsIG1fbWVkaWFDb250cm9sbGVyKDApCi0gICAgLCBtX2Rp
c3BsYXlUeXBlKGRpc3BsYXlUeXBlKQotewotfQotCi12b2lkIE1lZGlhQ29udHJvbElucHV0RWxl
bWVudDo6c2hvdygpCi17Ci0gICAgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eURpc3BsYXkpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6aGlkZSgpCi17
Ci0gICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVl
Tm9uZSk7Ci19Ci0KLQotdm9pZCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnNldERpc3BsYXlU
eXBlKE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKQotewotICAgIGlmIChkaXNw
bGF5VHlwZSA9PSBtX2Rpc3BsYXlUeXBlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Rpc3Bs
YXlUeXBlID0gZGlzcGxheVR5cGU7Ci0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVu
ZGVyZXIoKSkKLSAgICAgICAgb2JqZWN0LT5yZXBhaW50KCk7Ci19CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50
OjpNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlh
Q29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKQotICAgIDogTWVkaWFDb250cm9sSW5wdXRF
bGVtZW50KGRvY3VtZW50LCBkaXNwbGF5VHlwZSkKLXsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xN
dXRlQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCi17Ci0g
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAg
ICAgbWVkaWFDb250cm9sbGVyKCktPnNldE11dGVkKCFtZWRpYUNvbnRyb2xsZXIoKS0+bXV0ZWQo
KSk7Ci0gICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgIH0KLQotICAgIEhU
TUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwotfQotCi12b2lkIE1l
ZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpjaGFuZ2VkTXV0ZSgpCi17Ci0gICAgdXBkYXRl
RGlzcGxheVR5cGUoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6
dXBkYXRlRGlzcGxheVR5cGUoKQotewotICAgIHNldERpc3BsYXlUeXBlKG1lZGlhQ29udHJvbGxl
cigpLT5tdXRlZCgpID8gTWVkaWFVbk11dGVCdXR0b24gOiBNZWRpYU11dGVCdXR0b24pOwotfQot
Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWlubGluZSBNZWRpYUNvbnRyb2xQ
YW5lbE11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50
KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCitNZWRpYUNvbnRy
b2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCiAgICAgOiBN
ZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChkb2N1bWVudCwgTWVkaWFNdXRlQnV0dG9uKQog
ICAgICwgbV9jb250cm9scyhjb250cm9scykKIHsKQEAgLTYwNCw3ICs0NDMsNyBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxp
bmUgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK01lZGlh
Q29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBNZWRpYUNv
bnRyb2xNdXRlQnV0dG9uRWxlbWVudChkb2N1bWVudCwgTWVkaWFNdXRlQnV0dG9uKQogewogfQpA
QCAtNjI1LDcgKzQ2NCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK01l
ZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVu
dChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9j
dW1lbnQsIE1lZGlhUGxheUJ1dHRvbikKIHsKIH0KQEAgLTY2NCw3ICs1MDMsNyBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9J
ZCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1l
ZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sT3ZlcmxheVBs
YXlCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK01lZGlhQ29udHJvbE92ZXJsYXlQ
bGF5QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sT3ZlcmxheVBsYXlCdXR0b25FbGVtZW50KERv
Y3VtZW50KiBkb2N1bWVudCkKICAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVu
dCwgTWVkaWFPdmVybGF5UGxheUJ1dHRvbikKIHsKIH0KQEAgLTY5MSw3ICs1MzAsNiBAQCB2b2lk
IE1lZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxheVR5cGUo
KQogewogICAgIGlmIChtZWRpYUNvbnRyb2xsZXIoKS0+Y2FuUGxheSgpKSB7CiAgICAgICAgIHNo
b3coKTsKLSAgICAgICAgc2V0RGlzcGxheVR5cGUoTWVkaWFPdmVybGF5UGxheUJ1dHRvbik7CiAg
ICAgfSBlbHNlCiAgICAgICAgIGhpZGUoKTsKIH0KQEAgLTcwMiw5MCArNTQwLDEwIEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sT3ZlcmxheVBsYXlCdXR0b25FbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0CiAgICAgcmV0dXJuIGlkOwogfQogCi0vLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLWlubGluZSBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6
TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNv
bnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSkKLSAgICA6IE1lZGlhQ29udHJvbElucHV0RWxl
bWVudChkb2N1bWVudCwgZGlzcGxheVR5cGUpCi0gICAgLCBtX2FjdGlvbk9uU3RvcChOb3RoaW5n
KQotICAgICwgbV9zZWVrVHlwZShTa2lwKQotICAgICwgbV9zZWVrVGltZXIodGhpcywgJk1lZGlh
Q29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpzZWVrVGltZXJGaXJlZCkKLXsKLX0KLQotdm9pZCBN
ZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbnQpCi17Ci0gICAgLy8gU2V0IHRoZSBtb3VzZWRvd24gYW5kIG1vdXNldXAgZXZlbnRzIGFz
IGRlZmF1bHRIYW5kbGVkIHNvIHRoZXkKLSAgICAvLyBkbyBub3QgdHJpZ2dlciBkcmFnIHN0YXJ0
IG9yIGVuZCBhY3Rpb25zIGluIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudC4KLSAgICBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgfHwgZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KQotICAgICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c2V0
QWN0aXZlKGJvb2wgZmxhZywgYm9vbCBwYXVzZSkKLXsKLSAgICBpZiAoZmxhZyA9PSBhY3RpdmUo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGZsYWcpCi0gICAgICAgIHN0YXJ0VGltZXIo
KTsKLSAgICBlbHNlCi0gICAgICAgIHN0b3BUaW1lcigpOwotCi0gICAgTWVkaWFDb250cm9sSW5w
dXRFbGVtZW50OjpzZXRBY3RpdmUoZmxhZywgcGF1c2UpOwotfQotCi12b2lkIE1lZGlhQ29udHJv
bFNlZWtCdXR0b25FbGVtZW50OjpzdGFydFRpbWVyKCkKLXsKLSAgICBtX3NlZWtUeXBlID0gbWVk
aWFDb250cm9sbGVyKCktPnN1cHBvcnRzU2Nhbm5pbmcoKSA/IFNjYW4gOiBTa2lwOwotCi0gICAg
aWYgKG1fc2Vla1R5cGUgPT0gU2tpcCkgewotICAgICAgICAvLyBTZWVraW5nIGJ5IHNraXBwaW5n
IHJlcXVpcmVzIHRoZSB2aWRlbyB0byBiZSBwYXVzZWQgZHVyaW5nIHNlZWtpbmcuCi0gICAgICAg
IG1fYWN0aW9uT25TdG9wID0gbWVkaWFDb250cm9sbGVyKCktPnBhdXNlZCgpID8gTm90aGluZyA6
IFBsYXk7Ci0gICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5wYXVzZSgpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIC8vIFNlZWtpbmcgYnkgc2Nhbm5pbmcgcmVxdWlyZXMgdGhlIHZpZGVvIHRvIGJl
IHBsYXlpbmcgZHVyaW5nIHNlZWtpbmcuCi0gICAgICAgIG1fYWN0aW9uT25TdG9wID0gbWVkaWFD
b250cm9sbGVyKCktPnBhdXNlZCgpID8gUGF1c2UgOiBOb3RoaW5nOwotICAgICAgICBtZWRpYUNv
bnRyb2xsZXIoKS0+cGxheSgpOwotICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0UGxheWJh
Y2tSYXRlKG5leHRSYXRlKCkpOwotICAgIH0KLQotICAgIG1fc2Vla1RpbWVyLnN0YXJ0KDAsIG1f
c2Vla1R5cGUgPT0gU2tpcCA/IGNTa2lwUmVwZWF0RGVsYXkgOiBjU2NhblJlcGVhdERlbGF5KTsK
LX0KLQotdm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c3RvcFRpbWVyKCkKLXsK
LSAgICBpZiAobV9zZWVrVHlwZSA9PSBTY2FuKQotICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+
c2V0UGxheWJhY2tSYXRlKG1lZGlhQ29udHJvbGxlcigpLT5kZWZhdWx0UGxheWJhY2tSYXRlKCkp
OwotCi0gICAgaWYgKG1fYWN0aW9uT25TdG9wID09IFBsYXkpCi0gICAgICAgIG1lZGlhQ29udHJv
bGxlcigpLT5wbGF5KCk7Ci0gICAgZWxzZSBpZiAobV9hY3Rpb25PblN0b3AgPT0gUGF1c2UpCi0g
ICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5wYXVzZSgpOwotCi0gICAgaWYgKG1fc2Vla1RpbWVy
LmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc2Vla1RpbWVyLnN0b3AoKTsKLX0KLQotZmxvYXQgTWVk
aWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Om5leHRSYXRlKCkgY29uc3QKLXsKLSAgICBmbG9h
dCByYXRlID0gc3RkOjptaW4oY1NjYW5NYXhpbXVtUmF0ZSwgZmFic2YobWVkaWFDb250cm9sbGVy
KCktPnBsYXliYWNrUmF0ZSgpICogMikpOwotICAgIGlmICghaXNGb3J3YXJkQnV0dG9uKCkpCi0g
ICAgICAgIHJhdGUgKj0gLTE7Ci0gICAgcmV0dXJuIHJhdGU7Ci19Ci0KLXZvaWQgTWVkaWFDb250
cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OnNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbFNl
ZWtCdXR0b25FbGVtZW50PiopCi17Ci0gICAgaWYgKG1fc2Vla1R5cGUgPT0gU2tpcCkgewotICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICBmbG9hdCBza2lwVGltZSA9IGlzRm9yd2Fy
ZEJ1dHRvbigpID8gY1NraXBUaW1lIDogLWNTa2lwVGltZTsKLSAgICAgICAgbWVkaWFDb250cm9s
bGVyKCktPnNldEN1cnJlbnRUaW1lKG1lZGlhQ29udHJvbGxlcigpLT5jdXJyZW50VGltZSgpICsg
c2tpcFRpbWUsIGVjKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNl
dFBsYXliYWNrUmF0ZShuZXh0UmF0ZSgpKTsKLX0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50OjpN
ZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQor
TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xTZWVrRm9y
d2FyZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogTWVkaWFDb250cm9s
U2Vla0J1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhU2Vla0ZvcndhcmRCdXR0b24pCiB7CiB9
CkBAIC04MDYsNyArNTY0LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xTZWVr
Rm9yd2FyZEJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0
b25FbGVtZW50OjpNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRv
Y3VtZW50KQorTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xT
ZWVrQmFja0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogTWVkaWFDb250
cm9sU2Vla0J1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhU2Vla0JhY2tCdXR0b24pCiB7CiB9
CkBAIC04MjcsNyArNTg1LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xTZWVr
QmFja0J1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxl
bWVudDo6TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQp
CitNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xSZXdpbmRCdXR0
b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IE1lZGlhQ29udHJvbElucHV0RWxl
bWVudChkb2N1bWVudCwgTWVkaWFSZXdpbmRCdXR0b24pCiB7CiB9CkBAIC04NDYsNyArNjA0LDcg
QEAgdm9pZCBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkQ29kZTsKICAg
ICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKG1heCgwLjBmLCBtZWRpYUNv
bnRyb2xsZXIoKS0+Y3VycmVudFRpbWUoKSAtIDMwKSwgaWdub3JlZENvZGUpOwogICAgICAgICBl
dmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICB9ICAgIAorICAgIH0KICAgICBIVE1MSW5w
dXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIApAQCAtODU4LDcgKzYx
Niw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVu
dDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6
TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQorTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFSZXR1cm5Ub1JlYWx0
aW1lQnV0dG9uKQogewogfQpAQCAtODg5LDI3ICs2NDcsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcm
IE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9J
ZCgpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29u
dHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sQ2xvc2VkQ2Fw
dGlvbnNDb250YWluZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IE1lZGlhQ29u
dHJvbEVsZW1lbnQoZG9jdW1lbnQpCi17Ci19Ci0KLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sQ2xv
c2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0Nv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgUmVmUHRy
PE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVudD4gZWxlbWVudCA9IGFk
b3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQoZG9j
dW1lbnQpKTsKLSAgICBlbGVtZW50LT5oaWRlKCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQucmVsZWFz
ZSgpOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25z
Q29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAotewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWNs
b3NlZC1jYXB0aW9ucy1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0gICAgcmV0dXJuIGlkOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0KLWlubGluZSBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQorTWVkaWFDb250cm9sVG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0
aW9uc0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250
cm9scykKICAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFTaG93
Q2xvc2VkQ2FwdGlvbnNCdXR0b24pCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9jb250cm9s
cyhjb250cm9scykKQEAgLTk2Niw4ICs3MDQsMjggQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRp
YUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0kK
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9s
Q2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9u
c1RyYWNrTGlzdEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250
cm9scykKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1lbnQpCitNZWRpYUNvbnRyb2xD
bG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25z
Q29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xE
aXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNsb3NlZENhcHRpb25zQ29udGFpbmVyKQoreworfQor
CitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVudD4g
TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0Nv
bnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNDb250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgZWxlbWVudC0+aGlkZSgp
OworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVk
b0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQs
ICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1jbG9zZWQtY2FwdGlvbnMtY29udGFpbmVyIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKwor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNZWRpYUNvbnRyb2xDbG9zZWRDYXB0
aW9uc1RyYWNrTGlzdEVsZW1lbnQ6Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0
RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQorICAg
IDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFDbG9zZWRDYXB0aW9uc1Ry
YWNrTGlzdCkKICAgICAsIG1fY29udHJvbHMoY29udHJvbHMpCiB7CiB9CkBAIC05OTYsOSArNzU0
LDkgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW4KICAgICAgICAgLy8gdGVsbCB0aGUgSFRNTE1l
ZGlhRWxlbWVudCB0byBlbmFibGUgdGhhdCB0cmFjay4KIAogICAgICAgICBpbnQgdHJhY2tJbmRl
eCA9IHRyYWNrTGlzdEluZGV4Rm9yRWxlbWVudCh0b0VsZW1lbnQodGFyZ2V0KSk7Ci0gICAgICAg
IGlmICh0cmFja0luZGV4ID09IHRleHRUcmFja3NJbmRleE5vdEZvdW5kKQorICAgICAgICBpZiAo
dHJhY2tJbmRleCA9PSBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZCgp
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgICAgICBIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnQgPSB0b1BhcmVudE1lZGlhRWxlbWVudCh0aGlzKTsKICAgICAgICAg
aWYgKCFtZWRpYUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDEwLDcgKzc2OCw3
IEBAIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVuCiAgICAgICAgIHVwZGF0ZURpc3BsYXkoKTsKICAg
ICB9CiAKLSAgICBNZWRpYUNvbnRyb2xFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50
KTsKKyAgICBNZWRpYUNvbnRyb2xEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50
KTsKICNlbmRpZgogfQogCkBAIC0xMDQxLDcgKzc5OSw3IEBAIHZvaWQgTWVkaWFDb250cm9sQ2xv
c2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwLCBsZW5ndGggPSBtZW51SXRlbXMuc2l6ZSgpOyBpIDwgbGVuZ3RoOyArK2kp
IHsKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHRyYWNrSXRlbSA9IG1lbnVJdGVtc1tpXTsKICAg
ICAgICAgaW50IHRyYWNrSW5kZXggPSB0cmFja0xpc3RJbmRleEZvckVsZW1lbnQodHJhY2tJdGVt
LmdldCgpKTsKLSAgICAgICAgaWYgKHRyYWNrSW5kZXggIT0gdGV4dFRyYWNrc0luZGV4Tm90Rm91
bmQpIHsKKyAgICAgICAgaWYgKHRyYWNrSW5kZXggIT0gSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrc0luZGV4Tm90Rm91bmQoKSkgewogICAgICAgICAgICAgaWYgKHRyYWNrSW5kZXggPT0gSFRN
TE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrc09mZkluZGV4KCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoY2FwdGlvbnNWaXNpYmxlKQogICAgICAgICAgICAgICAgICAgICB0cmFja0l0ZW0tPmNsYXNz
TGlzdCgpLT5yZW1vdmUoc2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
QEAgLTEyMjgsMTUgKzk4NiwxNCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFRp
bWVsaW5lRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50
OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAg
ICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFWb2x1bWVTbGlkZXIp
Ci0gICAgLCBtX2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbihmYWxzZSkKK01lZGlhQ29udHJv
bFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudDo6TWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJF
bGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ckVsZW1lbnQoZG9jdW1lbnQpCiB7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWVudCkKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlk
ZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ckVsZW1lbnQ+IHNsaWRlciA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJF
bGVtZW50KGRvY3VtZW50KSk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xp
ZGVyRWxlbWVudD4gc2xpZGVyID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBhbmVsVm9sdW1l
U2xpZGVyRWxlbWVudChkb2N1bWVudCkpOwogICAgIHNsaWRlci0+Y3JlYXRlU2hhZG93U3VidHJl
ZSgpOwogICAgIHNsaWRlci0+c2V0VHlwZSgicmFuZ2UiKTsKICAgICBzbGlkZXItPnNldEF0dHJp
YnV0ZShwcmVjaXNpb25BdHRyLCAiZmxvYXQiKTsKQEAgLTEyNDQsNTggKzEwMDEsNyBAQCBQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckVsZW1lbnQ6OmNyZQogICAgIHJldHVybiBzbGlkZXIucmVsZWFzZSgpOwogfQogCi12
b2lkIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQotewotICAgIC8vIExlZnQgYnV0dG9uIGlzIDAuIFJlamVjdHMgbW91c2Ug
ZXZlbnRzIG5vdCBmcm9tIGxlZnQgYnV0dG9uLgotICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50
KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmICghYXR0YWNoZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
TWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKLQot
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCB8fCBl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50IHx8IGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBmbG9hdCB2b2x1bWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9Eb3VibGUo
KSk7Ci0gICAgaWYgKHZvbHVtZSAhPSBtZWRpYUNvbnRyb2xsZXIoKS0+dm9sdW1lKCkpIHsKLSAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5z
ZXRWb2x1bWUodm9sdW1lLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOwotICAgIH0KLSAgICBp
ZiAobV9jbGVhck11dGVkT25Vc2VySW50ZXJhY3Rpb24pCi0gICAgICAgIG1lZGlhQ29udHJvbGxl
cigpLT5zZXRNdXRlZChmYWxzZSk7Ci19Ci0KLWJvb2wgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpCi17Ci0gICAgaWYgKCFhdHRh
Y2hlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gTWVkaWFDb250cm9s
SW5wdXRFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCk7Ci19Ci0KLWJvb2wg
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tF
dmVudHMoKQotewotICAgIGlmICghYXR0YWNoZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmV0dXJuIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNl
Q2xpY2tFdmVudHMoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50
OjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQotewotICAgIGlmICh2YWx1ZSgpLnRvRmxvYXQoKSAh
PSB2b2x1bWUpCi0gICAgICAgIHNldFZhbHVlKFN0cmluZzo6bnVtYmVyKHZvbHVtZSkpOwotfQot
Ci12b2lkIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OnNldENsZWFyTXV0ZWRPblVz
ZXJJbnRlcmFjdGlvbihib29sIGNsZWFyTXV0ZSkKLXsKLSAgICBtX2NsZWFyTXV0ZWRPblVzZXJJ
bnRlcmFjdGlvbiA9IGNsZWFyTXV0ZTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Citjb25zdCBB
dG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudDo6c2hhZG93
UHNldWRvSWQoKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgcmV0dXJuIGlkOwpAQCAtMTMwMyw3ICsx
MDA5LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVt
ZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChEb2N1bWVudCogZG9j
dW1lbnQpCitNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6TWVkaWFD
b250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgIDogTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudChkb2N1bWVudCkKIHsKIH0KQEAg
LTEzMjYsMTYgKzEwMzIsMTQgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0
dG9uRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQq
IGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKikKK01lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25F
bGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhRW50
ZXJGdWxsc2NyZWVuQnV0dG9uKQogewogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCitQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAg
ICBBU1NFUlQoY29udHJvbHMpOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5C
dXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVl
bkJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIGNvbnRyb2xzKSk7CisgICAgUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFD
b250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBidXR0b24tPmNy
ZWF0ZVNoYWRvd1N1YnRyZWUoKTsKICAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOwogICAg
IGJ1dHRvbi0+aGlkZSgpOwpAQCAtMTM0NiwxMCArMTA1MCwxMCBAQCB2b2lkIE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkg
ewogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICAgICAgLy8gT25seSB1c2UgdGhlIG5l
dyBmdWxsIHNjcmVlbiBBUEkgaWYgdGhlIGZ1bGxTY3JlZW5FbmFibGVkIHNldHRpbmcgaGFzIAor
ICAgICAgICAvLyBPbmx5IHVzZSB0aGUgbmV3IGZ1bGwgc2NyZWVuIEFQSSBpZiB0aGUgZnVsbFNj
cmVlbkVuYWJsZWQgc2V0dGluZyBoYXMKICAgICAgICAgLy8gYmVlbiBleHBsaWNpdGx5IGVuYWJs
ZWQuIE90aGVyd2lzZSwgdXNlIHRoZSBvbGQgZnVsbHNjcmVlbiBBUEkuIFRoaXMKICAgICAgICAg
Ly8gYWxsb3dzIGFwcHMgd2hpY2ggZW1iZWQgYSBXZWJWaWV3IHRvIHJldGFpbiB0aGUgZXhpc3Rp
bmcgZnVsbCBzY3JlZW4KLSAgICAgICAgLy8gdmlkZW8gaW1wbGVtZW50YXRpb24gd2l0aG91dCBy
ZXF1aXJpbmcgdGhlbSB0byBpbXBsZW1lbnQgdGhlaXIgb3duIGZ1bGwgCisgICAgICAgIC8vIHZp
ZGVvIGltcGxlbWVudGF0aW9uIHdpdGhvdXQgcmVxdWlyaW5nIHRoZW0gdG8gaW1wbGVtZW50IHRo
ZWlyIG93biBmdWxsCiAgICAgICAgIC8vIHNjcmVlbiBiZWhhdmlvci4KICAgICAgICAgaWYgKGRv
Y3VtZW50KCktPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVl
bkVuYWJsZWQoKSkgewogICAgICAgICAgICAgaWYgKGRvY3VtZW50KCktPndlYmtpdElzRnVsbFNj
cmVlbigpICYmIGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09
IHRvUGFyZW50TWVkaWFFbGVtZW50KHRoaXMpKQpAQCAtMTM3Nyw3ICsxMDgxLDcgQEAgdm9pZCBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6c2V0SXNGdWxsc2NyZWVuKGJvb2wg
aXNGdWxsc2NyZWVuKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGlu
ZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6TWVkaWFDb250
cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQor
TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFVbk11dGVCdXR0b24p
CiB7CiB9CkBAIC0xNDA4LDcgKzExMTIsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZAogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVt
ZU1heEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorTWVkaWFDb250cm9sRnVsbHNj
cmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVN
YXhCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKIDogTWVkaWFDb250cm9sSW5wdXRF
bGVtZW50KGRvY3VtZW50LCBNZWRpYU11dGVCdXR0b24pCiB7CiB9CkBAIC0xNDM5LDY3ICsxMTQz
LDE2IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1h
eEJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotY2xhc3MgUmVuZGVyTWVkaWFDb250cm9sVGltZURpc3BsYXkgOiBwdWJsaWMg
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHsKLXB1YmxpYzoKLSAgICBSZW5kZXJNZWRpYUNv
bnRyb2xUaW1lRGlzcGxheShOb2RlKik7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpOwotfTsKLQotUmVuZGVyTWVkaWFDb250cm9sVGltZURpc3BsYXk6OlJlbmRlck1lZGlh
Q29udHJvbFRpbWVEaXNwbGF5KE5vZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3gobm9kZSkKLXsKLX0KLQotLy8gV2Ugd2FudCB0aGUgdGltZWxpbmUgc2xpZGVyIHRv
IGJlIGF0IGxlYXN0IDEwMCBwaXhlbHMgd2lkZS4KLS8vIEZJWE1FOiBFbGltaW5hdGUgaGFyZC1j
b2RlZCB3aWR0aHMgYWx0b2dldGhlci4KLXN0YXRpYyBjb25zdCBpbnQgbWluV2lkdGhUb0Rpc3Bs
YXlUaW1lRGlzcGxheXMgPSA0NSArIDEwMCArIDQ1OwotCi12b2lkIFJlbmRlck1lZGlhQ29udHJv
bFRpbWVEaXNwbGF5OjpsYXlvdXQoKQotewotICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eDo6bGF5b3V0KCk7Ci0gICAgUmVuZGVyQm94KiB0aW1lbGluZUNvbnRhaW5lckJveCA9IHBhcmVu
dEJveCgpOwotICAgIHdoaWxlICh0aW1lbGluZUNvbnRhaW5lckJveCAmJiB0aW1lbGluZUNvbnRh
aW5lckJveC0+aXNBbm9ueW1vdXMoKSkKLSAgICAgICAgdGltZWxpbmVDb250YWluZXJCb3ggPSB0
aW1lbGluZUNvbnRhaW5lckJveC0+cGFyZW50Qm94KCk7Ci0KLSAgICBpZiAodGltZWxpbmVDb250
YWluZXJCb3ggJiYgdGltZWxpbmVDb250YWluZXJCb3gtPndpZHRoKCkgPCBtaW5XaWR0aFRvRGlz
cGxheVRpbWVEaXNwbGF5cykKLSAgICAgICAgc2V0V2lkdGgoMCk7Ci19Ci0KLWlubGluZSBNZWRp
YUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVu
dChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KGRvY3VtZW50
KQotICAgICwgbV9jdXJyZW50VmFsdWUoMCkKLXsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xUaW1l
RGlzcGxheUVsZW1lbnQ6OnNldEN1cnJlbnRWYWx1ZShmbG9hdCB0aW1lKQotewotICAgIG1fY3Vy
cmVudFZhbHVlID0gdGltZTsKLX0KLQotUmVuZGVyT2JqZWN0KiBNZWRpYUNvbnRyb2xUaW1lRGlz
cGxheUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqKQorTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRy
b2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDog
TWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50LCBNZWRpYVRpbWVSZW1haW5p
bmdEaXNwbGF5KQogewotICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJNZWRpYUNvbnRyb2xU
aW1lRGlzcGxheSh0aGlzKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
CiBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gTWVk
aWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRv
Y3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVGltZVJlbWFp
bmluZ0Rpc3BsYXlFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLU1lZGlhQ29udHJvbFRpbWVSZW1h
aW5pbmdEaXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxl
bWVudChkb2N1bWVudCkKLXsKLX0KLQotTWVkaWFDb250cm9sRWxlbWVudFR5cGUgTWVkaWFDb250
cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpkaXNwbGF5VHlwZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIE1lZGlhVGltZVJlbWFpbmluZ0Rpc3BsYXk7Ci19Ci0KIGNvbnN0IEF0b21pY1N0
cmluZyYgTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpzaGFkb3dQc2V1
ZG9JZCgpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlk
LCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1yZW1haW5pbmctZGlzcGxheSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKQEAgLTE1MDgsMTkgKzExNjEsMTQgQEAg
Y29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1l
bnQ6OnNoYWRvd1BzZXVkb0lkKCkgY28KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IE1l
ZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9j
dW1lbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xDdXJyZW50VGlt
ZURpc3BsYXlFbGVtZW50KGRvY3VtZW50KSk7Ci19Ci0KIE1lZGlhQ29udHJvbEN1cnJlbnRUaW1l
RGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KQotICAgIDogTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KGRv
Y3VtZW50KQorICAgIDogTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50LCBN
ZWRpYUN1cnJlbnRUaW1lRGlzcGxheSkKIHsKIH0KIAotTWVkaWFDb250cm9sRWxlbWVudFR5cGUg
TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6ZGlzcGxheVR5cGUoKSBjb25z
dAorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBNZWRp
YUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewotICAgIHJldHVybiBNZWRpYUN1cnJlbnRUaW1lRGlzcGxheTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1l
bnQpKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURp
c3BsYXlFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CkBAIC0xNTMzLDMzICsxMTgxLDgg
QEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVt
ZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnMKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAot
Y2xhc3MgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBSZW5kZXJCbG9j
ayB7Ci1wdWJsaWM6Ci0gICAgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChOb2RlKik7
Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwotfTsKLQotUmVuZGVyVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6UmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChO
b2RlKiBub2RlKQotICAgIDogUmVuZGVyQmxvY2sobm9kZSkKLXsKLX0KLQotdm9pZCBSZW5kZXJU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpsYXlvdXQoKQotewotICAgIFJlbmRlckJsb2NrOjps
YXlvdXQoKTsKLSAgICBpZiAoc3R5bGUoKS0+ZGlzcGxheSgpID09IE5PTkUpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEFTU0VSVChtZWRpYUNvbnRyb2xFbGVtZW50VHlwZShub2RlKCkpID09IE1l
ZGlhVGV4dFRyYWNrRGlzcGxheUNvbnRhaW5lcik7Ci0KLSAgICBMYXlvdXRTdGF0ZURpc2FibGVy
IGxheW91dFN0YXRlRGlzYWJsZXIodmlldygpKTsKLSAgICBzdGF0aWNfY2FzdDxNZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Kj4obm9kZSgpKS0+dXBkYXRlU2l6ZXMoKTsKLX0K
LQotaW5saW5lIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDog
TWVkaWFDb250cm9sRWxlbWVudChkb2N1bWVudCkKK01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRG9jdW1l
bnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVk
aWFUZXh0VHJhY2tEaXNwbGF5Q29udGFpbmVyKQogICAgICwgbV9mb250U2l6ZSgwKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgK
aW5kZXggZTA1MDMyODU0Y2Y5ZjdlZWU5OGNiNzRkZWE0NWZiOWQ5MDFkM2UxYi4uMDI2NTZjYzIw
NDVlMmE5MGQ1OGQwMThlNzEzZjlmNmNhNGI2MzVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsODUg
KzMxLDEzIEBACiAjZGVmaW5lIE1lZGlhQ29udHJvbEVsZW1lbnRzX2gKIAogI2lmIEVOQUJMRShW
SURFTykKLQotI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTElucHV0
RWxlbWVudC5oIgotI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgotI2luY2x1
ZGUgIlJlbmRlckJsb2NrLmgiCi0KLS8vIFRoZXNlIGFyZSB0aGUgc2hhZG93IGVsZW1lbnRzIHVz
ZWQgaW4gUmVuZGVyTWVkaWEKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBFdmVudDsKLWNsYXNzIEZyYW1lOwotY2xh
c3MgSFRNTE1lZGlhRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbHM7Ci0KLS8vIE11c3QgbWF0
Y2ggV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgKLWVudW0gTWVkaWFDb250cm9sRWxlbWVudFR5cGUg
ewotICAgIE1lZGlhRW50ZXJGdWxsc2NyZWVuQnV0dG9uID0gMCwKLSAgICBNZWRpYU11dGVCdXR0
b24sCi0gICAgTWVkaWFQbGF5QnV0dG9uLAotICAgIE1lZGlhU2Vla0JhY2tCdXR0b24sCi0gICAg
TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbiwKLSAgICBNZWRpYVNsaWRlciwKLSAgICBNZWRpYVNsaWRl
clRodW1iLAotICAgIE1lZGlhUmV3aW5kQnV0dG9uLAotICAgIE1lZGlhUmV0dXJuVG9SZWFsdGlt
ZUJ1dHRvbiwKLSAgICBNZWRpYVNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbiwKLSAgICBNZWRpYUhp
ZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiwKLSAgICBNZWRpYVVuTXV0ZUJ1dHRvbiwKLSAgICBNZWRp
YVBhdXNlQnV0dG9uLAotICAgIE1lZGlhVGltZWxpbmVDb250YWluZXIsCi0gICAgTWVkaWFDdXJy
ZW50VGltZURpc3BsYXksCi0gICAgTWVkaWFUaW1lUmVtYWluaW5nRGlzcGxheSwKLSAgICBNZWRp
YVN0YXR1c0Rpc3BsYXksCi0gICAgTWVkaWFDb250cm9sc1BhbmVsLAotICAgIE1lZGlhVm9sdW1l
U2xpZGVyQ29udGFpbmVyLAotICAgIE1lZGlhVm9sdW1lU2xpZGVyLAotICAgIE1lZGlhVm9sdW1l
U2xpZGVyVGh1bWIsCi0gICAgTWVkaWFGdWxsU2NyZWVuVm9sdW1lU2xpZGVyLAotICAgIE1lZGlh
RnVsbFNjcmVlblZvbHVtZVNsaWRlclRodW1iLAotICAgIE1lZGlhVm9sdW1lU2xpZGVyTXV0ZUJ1
dHRvbiwKLSAgICBNZWRpYVRleHRUcmFja0Rpc3BsYXlDb250YWluZXIsCi0gICAgTWVkaWFUZXh0
VHJhY2tEaXNwbGF5LAotICAgIE1lZGlhRXhpdEZ1bGxzY3JlZW5CdXR0b24sCi0gICAgTWVkaWFP
dmVybGF5UGxheUJ1dHRvbiwKLSAgICBNZWRpYUNsb3NlZENhcHRpb25zQ29udGFpbmVyLAotICAg
IE1lZGlhQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QsCi19OwotCi1IVE1MTWVkaWFFbGVtZW50KiB0
b1BhcmVudE1lZGlhRWxlbWVudChOb2RlKik7Ci1pbmxpbmUgSFRNTE1lZGlhRWxlbWVudCogdG9Q
YXJlbnRNZWRpYUVsZW1lbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyByZXR1cm4gdG9QYXJl
bnRNZWRpYUVsZW1lbnQocmVuZGVyZXItPm5vZGUoKSk7IH0KLQotTWVkaWFDb250cm9sRWxlbWVu
dFR5cGUgbWVkaWFDb250cm9sRWxlbWVudFR5cGUoTm9kZSopOwotCi0vLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIE1lZGlhQ29udHJvbEVsZW1lbnQgOiBwdWJsaWMgSFRN
TERpdkVsZW1lbnQgewotcHVibGljOgotICAgIHZvaWQgaGlkZSgpOwotICAgIHZvaWQgc2hvdygp
OwotICAgIGJvb2wgaXNTaG93aW5nKCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIE1lZGlhQ29udHJv
bEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3QgPSAwOwotCi0gICAgdm9pZCBzZXRNZWRp
YUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBjb250cm9sbGVyKSB7IG1fbWVk
aWFDb250cm9sbGVyID0gY29udHJvbGxlcjsgfQotICAgIE1lZGlhQ29udHJvbGxlckludGVyZmFj
ZSogbWVkaWFDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNvbnRyb2xsZXI7IH0K
LQotcHJvdGVjdGVkOgotICAgIE1lZGlhQ29udHJvbEVsZW1lbnQoRG9jdW1lbnQqKTsKLQotcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQotCi0gICAgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBtX21lZGlhQ29u
dHJvbGxlcjsgICAKLX07Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY2xh
c3MgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbEVsZW1lbnQg
eworY2xhc3MgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERp
dkVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBh
bmVsRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKQEAgLTEyMywxMCArNTIsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xQYW5l
bEVsZW1lbnQoRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBl
IGRpc3BsYXlUeXBlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqKTsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQoRG9jdW1l
bnQqKTsKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KikgT1ZFUlJJREU7CiAKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBMYXlvdXRQb2ludCYg
ZXZlbnRMb2NhdGlvbik7CiAgICAgdm9pZCBjb250aW51ZURyYWcoY29uc3QgTGF5b3V0UG9pbnQm
IGV2ZW50TG9jYXRpb24pOwpAQCAtMTUwLDkxICs3OSw2OCBAQCBwcml2YXRlOgogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNsYXNzIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29u
dGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKK2NsYXNzIE1lZGlh
Q29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVt
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGlu
ZUNvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7
CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KERv
Y3VtZW50Kik7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lk
KCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlU
eXBlKCkgY29uc3Q7CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVt
ZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLWNsYXNzIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQg
OiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7CitjbGFzcyBNZWRpYUNvbnRyb2xPdmVybGF5
RW5jbG9zdXJlRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWlu
ZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKLQotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVz
cG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50PiBjcmVh
dGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJD
b250YWluZXJFbGVtZW50KERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwotICAgIHZpcnR1YWwgTWVkaWFDb250cm9s
RWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRy
b2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jbGFzcyBNZWRpYUNvbnRyb2xTdGF0dXNE
aXNwbGF5RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKK2NsYXNzIE1lZGlh
Q29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZF
bGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xTdGF0
dXNEaXNwbGF5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7Ci0KLSAgICB2b2lkIHVwZGF0ZSgp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxl
bWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sU3Rh
dHVzRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqKTsKLQotICAgIHZpcnR1YWwgTWVkaWFDb250cm9s
RWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKLQotICAgIGVudW0gU3RhdGVCZWluZ0Rp
c3BsYXllZCB7IE5vdGhpbmcsIExvYWRpbmcsIExpdmVCcm9hZGNhc3QgfTsKLSAgICBTdGF0ZUJl
aW5nRGlzcGxheWVkIG1fc3RhdGVCZWluZ0Rpc3BsYXllZDsKKyAgICBleHBsaWNpdCBNZWRpYUNv
bnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKIH07CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY2xhc3MgTWVkaWFDb250cm9sSW5w
dXRFbGVtZW50IDogcHVibGljIEhUTUxJbnB1dEVsZW1lbnQgeworY2xhc3MgTWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVt
ZW50IHsKIHB1YmxpYzoKLSAgICB2b2lkIGhpZGUoKTsKLSAgICB2b2lkIHNob3coKTsKLQotICAg
IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9k
aXNwbGF5VHlwZTsgfQotCi0gICAgdm9pZCBzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9s
bGVySW50ZXJmYWNlKiBjb250cm9sbGVyKSB7IG1fbWVkaWFDb250cm9sbGVyID0gY29udHJvbGxl
cjsgfQotICAgIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSogbWVkaWFDb250cm9sbGVyKCkgY29u
c3QgeyByZXR1cm4gbV9tZWRpYUNvbnRyb2xsZXI7IH0KLQotcHJvdGVjdGVkOgotICAgIE1lZGlh
Q29udHJvbElucHV0RWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJF
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAotICAgIHZvaWQgc2V0RGlzcGxheVR5cGUoTWVk
aWFDb250cm9sRWxlbWVudFR5cGUpOworICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91
c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVu
dChEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCkgeyB9
CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBP
VkVSUklERTsKIAotICAgIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSogbV9tZWRpYUNvbnRyb2xs
ZXI7Ci0gICAgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgbV9kaXNwbGF5VHlwZTsKKyAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopIE9WRVJSSURFOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1j
bGFzcyBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJ
bnB1dEVsZW1lbnQgeworY2xhc3MgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQgOiBw
dWJsaWMgTWVkaWFDb250cm9sRGl2RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgdm9pZCBjaGFuZ2Vk
TXV0ZSgpOwotCi0gICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAotcHJvdGVj
dGVkOgotICAgIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50KERvY3VtZW50KiwgTWVkaWFD
b250cm9sRWxlbWVudFR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50Kik7CisgICAgdm9pZCB1cGRhdGUoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRGlzcGxheVR5cGUoKTsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xTdGF0dXNE
aXNwbGF5RWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworCisgICAgZW51bSBTdGF0ZUJlaW5n
RGlzcGxheWVkIHsgTm90aGluZywgTG9hZGluZywgTGl2ZUJyb2FkY2FzdCB9OworICAgIFN0YXRl
QmVpbmdEaXNwbGF5ZWQgbV9zdGF0ZUJlaW5nRGlzcGxheWVkOwogfTsKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjQ2LDEwICsxNTIsMTAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1
cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVs
ZW1lbnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CisgICAgZXhwbGljaXQgTWVkaWFDb250
cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0gICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CisgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKIAog
ICAgIE1lZGlhQ29udHJvbHMqIG1fY29udHJvbHM7CiB9OwpAQCAtMjYxLDkgKzE2Nyw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRl
QnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKLQotICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworICAgIGV4
cGxpY2l0IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50KERvY3VtZW50
Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29u
c3QgT1ZFUlJJREU7CiB9OwogCiAKQEAgLTI3MywxNCArMTc4LDE0IEBAIGNsYXNzIE1lZGlhQ29u
dHJvbFBsYXlCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVs
ZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xp
Y2tFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZURpc3BsYXlUeXBlKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCkg
T1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQo
RG9jdW1lbnQqKTsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudChE
b2N1bWVudCopOwogCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqKSBPVkVSUklERTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KQEAgLTI4OSwzOCArMTk0LDEzIEBAIGNsYXNzIE1lZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0
dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVu
dD4gY3JlYXRlKERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCopOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgpOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgpIE9WRVJSSURFOwogCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudChEb2N1bWVu
dCopOwogCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkg
Y29uc3Q7Ci19OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1jbGFzcyBNZWRp
YUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1l
bnQgewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
Kik7Ci0gICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZF
UlJJREUgeyByZXR1cm4gdHJ1ZTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgTWVkaWFDb250cm9sU2Vl
a0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7Ci0KLXBy
aXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzRm9yd2FyZEJ1dHRvbigpIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wgLypmbGFnKi8gPSB0cnVlLCBib29sIC8qcGF1
c2UqLyA9IGZhbHNlKTsKLQotICAgIHZvaWQgc3RhcnRUaW1lcigpOwotICAgIHZvaWQgc3RvcFRp
bWVyKCk7Ci0gICAgZmxvYXQgbmV4dFJhdGUoKSBjb25zdDsKLSAgICB2b2lkIHNlZWtUaW1lckZp
cmVkKFRpbWVyPE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50PiopOwotCi0gICAgZW51bSBB
Y3Rpb25UeXBlIHsgTm90aGluZywgUGxheSwgUGF1c2UgfTsKLSAgICBBY3Rpb25UeXBlIG1fYWN0
aW9uT25TdG9wOwotICAgIGVudW0gU2Vla1R5cGUgeyBTa2lwLCBTY2FuIH07Ci0gICAgU2Vla1R5
cGUgbV9zZWVrVHlwZTsKLSAgICBUaW1lcjxNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudD4g
bV9zZWVrVGltZXI7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqKSBPVkVSUklERTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KQEAgLTMzMCwxMCArMjEwLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwog
CiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudChEb2N1
bWVudCopOworICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVu
dChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1
ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIGlzRm9yd2FyZEJ1dHRv
bigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGb3J3YXJkQnV0
dG9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzQzLDEwICsyMjMsMTAgQEAgcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25F
bGVtZW50KERvY3VtZW50Kik7CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0
b25FbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNGb3J3
YXJkQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNG
b3J3YXJkQnV0dG9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTM1NSwxMyArMjM1LDEzIEBAIGNsYXNz
IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5w
dXRFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xS
ZXdpbmRCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2
YXRlOgotICAgIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKKyAg
ICBleHBsaWNpdCBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50KERvY3VtZW50Kik7CiAK
LSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9W
RVJSSURFOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzcwLDE0
ICsyNTAsMTQgQEAgY2xhc3MgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1l
bnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW4KIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudD4gY3Jl
YXRlKERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCopOwogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygp
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xS
ZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudChEb2N1bWVudCopOworICAgIGV4cGxpY2l0IE1l
ZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50KERvY3VtZW50Kik7CiAKLSAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKLX07
ICAgIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
KikgT1ZFUlJJREU7Cit9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAg
LTM4NiwxMiArMjY2LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCos
IE1lZGlhQ29udHJvbHMqKTsKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VD
bGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNw
bGF5VHlwZSgpOworCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCkgT1ZFUlJJ
REU7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0
b25FbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250cm9scyopOwotICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworICAgIGV4cGxpY2l0IE1lZGlh
Q29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudChEb2N1bWVudCosIE1lZGlh
Q29udHJvbHMqKTsKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1
ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50KikgT1ZFUlJJREU7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgTWVkaWFDb250
cm9scyogbV9jb250cm9sczsKQEAgLTQwMCw3ICsyODIsNyBAQCBwcml2YXRlOgogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNsYXNzIE1lZGlhQ29udHJvbENsb3NlZENhcHRp
b25zQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKK2NsYXNz
IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRp
YUNvbnRyb2xEaXZFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCop
OwogCkBAIC00MDgsMTggKzI5MCwxNSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWVkaWFD
b250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7Ci0KLSAgICB2
aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3QgeyByZXR1
cm4gTWVkaWFDbG9zZWRDYXB0aW9uc0NvbnRhaW5lcjsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jbGFzcyBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0
aW9uc1RyYWNrTGlzdEVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7CitjbGFz
cyBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQgOiBwdWJsaWMgTWVk
aWFDb250cm9sRGl2RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQq
LCBNZWRpYUNvbnRyb2xzKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCopOwogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50
cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgdXBkYXRlRGlzcGxheSgp
OwpAQCAtNDI4LDggKzMwNyw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWVkaWFDb250cm9s
Q2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250cm9scyop
OwogCi0gICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIE1lZGlhQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3Q7IH0KLSAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOwogCiAg
ICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4gVHJhY2tNZW51SXRlbXM7CiAgICAg
VHJhY2tNZW51SXRlbXMgbWVudUl0ZW1zOwpAQCAtNDQyLDY1ICszMjEsNTYgQEAgY2xhc3MgTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVu
dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVF
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZpcnR1YWwgYm9vbCB3aWxs
UmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFOworCiAgICAgdm9pZCBzZXRQb3Np
dGlvbihmbG9hdCk7CiAgICAgdm9pZCBzZXREdXJhdGlvbihmbG9hdCk7CiAKIHByaXZhdGU6Ci0g
ICAgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250cm9scyop
OworICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudChEb2N1bWVudCosIE1l
ZGlhQ29udHJvbHMqKTsKIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQ
c2V1ZG9JZCgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQ
c2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CiAKICAgICBNZWRpYUNvbnRyb2xzKiBtX2NvbnRyb2xz
OwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jbGFzcyBNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVu
dCB7CitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBN
ZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBj
cmVhdGUoRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50Kik7Ci0gICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMo
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVu
dHMoKSBPVkVSUklERTsKLSAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7Ci0gICAgdm9pZCBzZXRD
bGVhck11dGVkT25Vc2VySW50ZXJhY3Rpb24oYm9vbCk7CisgICAgdmlydHVhbCBib29sIHdpbGxS
ZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi1w
cm90ZWN0ZWQ6Ci0gICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudChEb2N1bWVudCop
OworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0Z1bGxzY3JlZW4oYm9vbCk7CiAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci0g
ICAgYm9vbCBtX2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbjsKKyAgICBleHBsaWNpdCBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudChEb2N1bWVudCopOworCisgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKIH07
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY2xhc3MgTWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50
IHsKK2NsYXNzIE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudCA6IHB1YmxpYyBN
ZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3Vt
ZW50KiwgTWVkaWFDb250cm9scyopOwotCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqKTsKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tF
dmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCBzZXRJc0Z1bGxzY3Jl
ZW4oYm9vbCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxWb2x1bWVT
bGlkZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsK
LQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
OworICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudChEb2N1
bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0IE9WRVJSSURFOwogfTsKLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiBjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudCA6IHB1Ymxp
YyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudD4gY3Jl
YXRlKERvY3VtZW50Kik7Ci0gICAgCisKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sRnVsbHNj
cmVlblZvbHVtZVNsaWRlckVsZW1lbnQoRG9jdW1lbnQqKTsKLSAgICAKLSAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKKyAgICBleHBsaWNpdCBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChEb2N1bWVudCopOworICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJS
SURFOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTA4LDE0ICsz
NzgsMTMgQEAgcHJpdmF0ZToKIGNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5C
dXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1
dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3Bv
bmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZh
dGU6Ci0gICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQoRG9j
dW1lbnQqKTsKLSAgICAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNl
dWRvSWQoKSBjb25zdDsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1l
TWluQnV0dG9uRWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CiB9OwogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01MjMsMzIgKzM5MiwxNyBAQCBwcml2YXRlOgogY2xhc3Mg
TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVk
aWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3Vt
ZW50Kik7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
KTsKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9Ci0KLXByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sRnVsbHNj
cmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKLSAgICAKLSAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKLX07Ci0KLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgTWVkaWFDb250cm9sVGltZURpc3Bs
YXlFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbEVsZW1lbnQgewotcHVibGljOgotICAgIHZv
aWQgc2V0Q3VycmVudFZhbHVlKGZsb2F0KTsKLSAgICBmbG9hdCBjdXJyZW50VmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgTWVkaWFDb250
cm9sVGltZURpc3BsYXlFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBib29sIHdpbGxS
ZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sRnVsbHNjcmVl
blZvbHVtZU1heEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKIAotICAgIGZsb2F0IG1fY3VycmVu
dFZhbHVlOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KikgT1ZFUlJJREU7CiB9OwogCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogY2xhc3MgTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50IDogcHVibGlj
IE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudCB7CkBAIC01NTYsMTAgKzQxMCw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlz
cGxheUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29u
dHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOwotCi0gICAgdmlydHVh
bCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0OwotICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworICAgIGV4cGxp
Y2l0IE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOwor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9W
RVJSSURFOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTY5LDE2
ICs0MjEsMTUgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEN1
cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiBwcml2YXRlOgot
ICAgIE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqKTsKLQot
ICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsK
KyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50KERvY3Vt
ZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QgT1ZFUlJJREU7CiB9OwotIAorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi1jbGFzcyBNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbEVsZW1lbnQgeworCitjbGFzcyBN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJv
bERpdkVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCkBAIC01ODYs
MTggKzQzNywxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVTaXplcygpOwogCiBwcml2YXRl
OgotICAgIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsK
KyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KERvY3Vt
ZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotICAgIHZpcnR1YWwgTWVkaWFDb250cm9s
RWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVRleHRUcmFja0Rp
c3BsYXlDb250YWluZXI7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93
UHNldWRvSWQoKSBjb25zdDsKIAogICAgIEludFJlY3QgbV92aWRlb0Rpc3BsYXlTaXplOwogICAg
IGZsb2F0IG1fZm9udFNpemU7CiB9OwogCiAjZW5kaWYKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCmluZGV4IGI1ZTlmZjcwOWJmZDIzNzdiZjJlNmVk
ZjM4MWRhMDA2NmY0MGI4ZGMuLmRjYjdkOTE3ZTU2NjZmYjM2OTIwZWQxOGU5N2NlOTFhOTU1YzYw
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCkBA
IC0xLDYgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCmluZGV4IDI1ODA1MDJm
M2VmZjgwZTE5YWU0YWYyZDkyNDVhODlmYTZlNDE4ZWIuLjk4NjA1NDIxMWY3N2NkMDc4YzFkYzBi
NTAzNzRmMWY0NTQwM2NhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xzLmgKQEAgLTEsNiArMSw2IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJvdGVjdGVkOgogICAgIE1lZGlhQ29udHJv
bEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQqIG1fY3VycmVudFRpbWVEaXNwbGF5OwogICAgIE1l
ZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudCogbV90aW1lbGluZTsKICAgICBNZWRpYUNvbnRyb2xQ
YW5lbE11dGVCdXR0b25FbGVtZW50KiBtX3BhbmVsTXV0ZUJ1dHRvbjsKLSAgICBNZWRpYUNvbnRy
b2xWb2x1bWVTbGlkZXJFbGVtZW50KiBtX3ZvbHVtZVNsaWRlcjsKKyAgICBNZWRpYUNvbnRyb2xQ
YW5lbFZvbHVtZVNsaWRlckVsZW1lbnQqIG1fdm9sdW1lU2xpZGVyOwogICAgIE1lZGlhQ29udHJv
bFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudCogbV90b2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbjsKICAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudCogbV9mdWxs
U2NyZWVuQnV0dG9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzQXBwbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sc0FwcGxlLmNwcAppbmRleCA5MzczM2FlYjhhODZlMjZhN2I1NDUyZjVkNTNlMTgzOWFi
YTg5ZmNjLi41MmQ2NzRjZWRhYzZmZDRiYzY4MTYyOTYwNmVlYTNhNTMxYzRiNzJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEw
LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2OCw3ICsxNjgsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbHNBcHBsZT4gTWVkaWFDb250cm9sc0FwcGxlOjpjcmVhdGVDb250cm9scyhEb2N1bWVudCog
ZG9jdQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5lZWRlZCA8aHR0
cDovL3dlYmtpdC5vcmcvYi81NzE2Mz4KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVl
bkJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0b24gPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7CisgICAgUmVm
UHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBmdWxsU2NyZWVuQnV0dG9u
ID0gTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
CiAgICAgY29udHJvbHMtPm1fZnVsbFNjcmVlbkJ1dHRvbiA9IGZ1bGxTY3JlZW5CdXR0b24uZ2V0
KCk7CiAgICAgcGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxTY3JlZW5CdXR0b24ucmVsZWFzZSgpLCBl
YywgdHJ1ZSk7CiAKQEAgLTE3OCw3ICsxNzgsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHNB
cHBsZT4gTWVkaWFDb250cm9sc0FwcGxlOjpjcmVhdGVDb250cm9scyhEb2N1bWVudCogZG9jdQog
ICAgIGlmIChkb2N1bWVudC0+cGFnZSgpLT50aGVtZSgpLT51c2VzTWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyKCkpIHsKICAgICAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRh
aW5lckVsZW1lbnQ+IHZvbHVtZVNsaWRlckNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAKLSAgICAgICAgUmVmUHRy
PE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IE1lZGlhQ29udHJvbFZv
bHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IE1lZGlhQ29udHJvbFBh
bmVsVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICAgICAgY29udHJv
bHMtPm1fdm9sdW1lU2xpZGVyID0gc2xpZGVyLmdldCgpOwogICAgICAgICB2b2x1bWVTbGlkZXJD
b250YWluZXItPmFwcGVuZENoaWxkKHNsaWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICAg
ICAgaWYgKGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sc0FwcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
QXBwbGUuaAppbmRleCBhMWVlODk2M2NlZmFjMGNkNjEzYmQ5MmYyYTZjNmNmZDlmMzBiODA0Li45
ZTM5MTRjNjgwOTljNWQ1ODQ2Yzg0MThjMjhjMDdiN2UzMDE3MWJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaApAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
c0Nocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHND
aHJvbWl1bS5jcHAKaW5kZXggMjhiNzdjZjdiMjI4NTJiOGU2N2QwNjE0NWEwNzUxODczZDFiYzYz
MS4uNWNhNDY3YTk3MmQzMWI1N2ZkMzRlNWU1YmE4MWU3ZGEyYzg2MmIyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3BwCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMywzMyArMzMsNiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVu
dDo6TWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1lbnQpCi17Ci19Ci0KLU1lZGlhQ29u
dHJvbEVsZW1lbnRUeXBlIE1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudDo6ZGlz
cGxheVR5cGUoKSBjb25zdAotewotICAgIC8vIE1hcHBpbmcgb250byBzYW1lIE1lZGlhQ29udHJv
bEVsZW1lbnRUeXBlIGFzIHBhbmVsIGVsZW1lbnQsIHNpbmNlIGl0IGhhcyBzaW1pbGFyIHByb3Bl
cnRpZXMuCi0gICAgcmV0dXJuIE1lZGlhQ29udHJvbHNQYW5lbDsKLX0KLQotTWVkaWFDb250cm9s
UGFuZWxFbmNsb3N1cmVFbGVtZW50OjpNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVF
bGVtZW50KGRvY3VtZW50KQotewotfQotCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsRW5j
bG9zdXJlRWxlbWVudD4gTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250
cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50KGRvY3VtZW50KSk7Ci19Ci0KLWNvbnN0IEF0b21pY1N0
cmluZyYgTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZW5jbG9zdXJlIikpOwotICAgIHJldHVybiBpZDsKLX0KLQog
TWVkaWFDb250cm9sc0Nocm9taXVtOjpNZWRpYUNvbnRyb2xzQ2hyb21pdW0oRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogTWVkaWFDb250cm9scyhkb2N1bWVudCkKICAgICAsIG1fZHVyYXRpb25E
aXNwbGF5KDApCkBAIC0xMjgsNyArMTAxLDcgQEAgYm9vbCBNZWRpYUNvbnRyb2xzQ2hyb21pdW06
OmluaXRpYWxpemVDb250cm9scyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgaWYgKGVjKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
RWxlbWVudD4gc2xpZGVyID0gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVt
ZW50PiBzbGlkZXIgPSBNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCk7CiAgICAgbV92b2x1bWVTbGlkZXIgPSBzbGlkZXIuZ2V0KCk7CiAgICAgbV92
b2x1bWVTbGlkZXItPnNldENsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbih0cnVlKTsKICAgICBw
YW5lbC0+YXBwZW5kQ2hpbGQoc2xpZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOwpAQCAtMTQzLDcg
KzExNiw3IEBAIGJvb2wgTWVkaWFDb250cm9sc0Nocm9taXVtOjppbml0aWFsaXplQ29udHJvbHMo
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gZnVsbHNjcmVl
bkJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQsIHRoaXMpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxl
bWVudD4gZnVsbHNjcmVlbkJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIG1fZnVsbFNjcmVlbkJ1dHRvbiA9IGZ1bGxzY3Jl
ZW5CdXR0b24uZ2V0KCk7CiAgICAgcGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxzY3JlZW5CdXR0b24u
cmVsZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAgaWYgKGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0uaAppbmRleCBhNjFkZGIxNjEwNGRm
ZDRiMzg3ZDJhMDc2Y2Y5ZTJiYzBiZGU2N2JlLi41YzEwNzA4MjA3MzljMjY4ZTAyZWUwNzQ1MzIx
N2FkZmQ0Y2FhZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzQ2hyb21pdW0uaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMjMgKzMzLDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3Vy
ZUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7Ci1wcm90ZWN0ZWQ6Ci0gICAg
ZXhwbGljaXQgTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50KERvY3VtZW50Kik7
Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5
VHlwZSgpIGNvbnN0OwotfTsKLQotY2xhc3MgTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVt
ZW50IDogcHVibGljIE1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudCB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNZWRpYUNv
bnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQoRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKLX07Ci0KIGNsYXNzIE1lZGlh
Q29udHJvbHNDaHJvbWl1bSA6IHB1YmxpYyBNZWRpYUNvbnRyb2xzIHsKIHB1YmxpYzoKICAgICAv
LyBDYWxsZWQgZnJvbSBwb3J0LXNwZWNpZmljIHBhcmVudCBjcmVhdGUgZnVuY3Rpb24gdG8gY3Jl
YXRlIGN1c3RvbSBjb250cm9scy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZC5jcHAKaW5kZXggNmM5ZWFkZmJm
YzdlMjM2Njc2ODAyOTk0ODYzZGQ4ZGJiNGEyNGFhMy4uZWExMWJiMzk5Y2M4NzFmMWMzZDQ0M2Y3
YjMyNDQwOTEyNWQyYWFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZC5jcHAKQEAgLTMwLDIyICszMCw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3Vy
ZUVsZW1lbnQ6Ok1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudChkb2N1
bWVudCkKLXsKLX0KLQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxl
bWVudD4gTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVu
dCogZG9jdW1lbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xPdmVy
bGF5RW5jbG9zdXJlRWxlbWVudChkb2N1bWVudCkpOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcm
IE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNv
bnN0Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtb3ZlcmxheS1lbmNsb3N1cmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgcmV0dXJuIGlkOwotfQotCiBNZWRpYUNvbnRyb2xzQ2hy
b21pdW1BbmRyb2lkOjpNZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IE1lZGlhQ29udHJvbHNDaHJvbWl1bShkb2N1bWVudCkKICAgICAsIG1fb3Zl
cmxheVBsYXlCdXR0b24oMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQuaAppbmRleCBjMTkyNTgyOTAwMzhjZjQy
NzYyZGZkZjJhYjkwNzhiOTU5MDE4M2U1Li40NGExZjc5YjNlY2U2NjM3NWUzZjFlY2QxZTM5YjE4
ZjU4MGI5N2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xzQ2hyb21pdW1BbmRyb2lkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZC5oCkBAIC0zMiwxNyArMzIsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxl
bWVudDsKLQotY2xhc3MgTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQgOiBwdWJs
aWMgTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudD4gY3Jl
YXRlKERvY3VtZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWVkaWFDb250cm9sT3Zl
cmxheUVuY2xvc3VyZUVsZW1lbnQoRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKLX07Ci0KIGNsYXNzIE1lZGlhQ29udHJv
bHNDaHJvbWl1bUFuZHJvaWQgOiBwdWJsaWMgTWVkaWFDb250cm9sc0Nocm9taXVtIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkPiBj
cmVhdGVDb250cm9scyhEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDdiYWMy
YzA0YWNhNTk0ODU4YTAwYmVlNmNmNjVmYTRhNGRlZWFhOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAg
LTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoVklERU8pCisjaW5jbHVkZSAiUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaCIKKworI2lu
Y2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1JlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjpSZW5kZXJN
ZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcihOb2RlKiBub2RlKQorICAgIDogUmVuZGVyQmxvY2so
bm9kZSkKK3sKK30KKwordm9pZCBSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6bGF5
b3V0KCkKK3sKKyAgICBSZW5kZXJCbG9jazo6bGF5b3V0KCk7CisKKyAgICBpZiAoc3R5bGUoKS0+
ZGlzcGxheSgpID09IE5PTkUgfHwgIW5leHRTaWJsaW5nKCkgfHwgIW5leHRTaWJsaW5nKCktPmlz
Qm94KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlbmRlckJveCogYnV0dG9uQm94ID0gdG9S
ZW5kZXJCb3gobmV4dFNpYmxpbmcoKSk7CisgICAgaW50IGFic29sdXRlT2Zmc2V0VG9wID0gYnV0
dG9uQm94LT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgwLCAtc2l6ZSgpLmhlaWdodCgpKSku
eSgpOworCisgICAgTGF5b3V0U3RhdGVEaXNhYmxlciBsYXlvdXRTdGF0ZURpc2FibGVyKHZpZXco
KSk7CisKKyAgICAvLyBJZiB0aGUgc2xpZGVyIHdvdWxkIGJlIHJlbmRlcmVkIG91dHNpZGUgdGhl
IHBhZ2UsIGl0IHNob3VsZCBiZSBtb3ZlZCBiZWxvdyB0aGUgY29udHJvbHMuCisgICAgaWYgKFVO
TElLRUxZKGFic29sdXRlT2Zmc2V0VG9wIDwgMCkpCisgICAgICAgIHNldFkoYnV0dG9uQm94LT5v
ZmZzZXRUb3AoKSArIHRoZW1lKCktPnZvbHVtZVNsaWRlck9mZnNldEZyb21NdXRlQnV0dG9uKGJ1
dHRvbkJveCwgcGl4ZWxTbmFwcGVkU2l6ZSgpKS55KCkpOworfQorCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK1JlbmRlck1lZGlhQ29udHJvbFRpbWVEaXNwbGF5OjpSZW5kZXJN
ZWRpYUNvbnRyb2xUaW1lRGlzcGxheShOb2RlKiBub2RlKQorICAgIDogUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94KG5vZGUpCit7Cit9CisKKy8vIFdlIHdhbnQgdGhlIHRpbWVsaW5lIHNsaWRl
ciB0byBiZSBhdCBsZWFzdCAxMDAgcGl4ZWxzIHdpZGUuCisvLyBGSVhNRTogRWxpbWluYXRlIGhh
cmQtY29kZWQgd2lkdGhzIGFsdG9nZXRoZXIuCitzdGF0aWMgY29uc3QgaW50IG1pbldpZHRoVG9E
aXNwbGF5VGltZURpc3BsYXlzID0gNDUgKyAxMDAgKyA0NTsKKwordm9pZCBSZW5kZXJNZWRpYUNv
bnRyb2xUaW1lRGlzcGxheTo6bGF5b3V0KCkKK3sKKyAgICBSZW5kZXJEZXByZWNhdGVkRmxleGli
bGVCb3g6OmxheW91dCgpOworICAgIFJlbmRlckJveCogdGltZWxpbmVDb250YWluZXJCb3ggPSBw
YXJlbnRCb3goKTsKKyAgICB3aGlsZSAodGltZWxpbmVDb250YWluZXJCb3ggJiYgdGltZWxpbmVD
b250YWluZXJCb3gtPmlzQW5vbnltb3VzKCkpCisgICAgICAgIHRpbWVsaW5lQ29udGFpbmVyQm94
ID0gdGltZWxpbmVDb250YWluZXJCb3gtPnBhcmVudEJveCgpOworCisgICAgaWYgKHRpbWVsaW5l
Q29udGFpbmVyQm94ICYmIHRpbWVsaW5lQ29udGFpbmVyQm94LT53aWR0aCgpIDwgbWluV2lkdGhU
b0Rpc3BsYXlUaW1lRGlzcGxheXMpCisgICAgICAgIHNldFdpZHRoKDApOworfQorCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKK1Jl
bmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OlJlbmRlclRleHRUcmFja0NvbnRhaW5lckVs
ZW1lbnQoTm9kZSogbm9kZSkKKyAgICA6IFJlbmRlckJsb2NrKG5vZGUpCit7Cit9CisKK3ZvaWQg
UmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6bGF5b3V0KCkKK3sKKyAgICBSZW5kZXJC
bG9jazo6bGF5b3V0KCk7CisgICAgaWYgKHN0eWxlKCktPmRpc3BsYXkoKSA9PSBOT05FKQorICAg
ICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobWVkaWFDb250cm9sRWxlbWVudFR5cGUobm9kZSgp
KSA9PSBNZWRpYVRleHRUcmFja0Rpc3BsYXlDb250YWluZXIpOworCisgICAgTGF5b3V0U3RhdGVE
aXNhYmxlciBsYXlvdXRTdGF0ZURpc2FibGVyKHZpZXcoKSk7CisgICAgc3RhdGljX2Nhc3Q8TWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCo+KG5vZGUoKSktPnVwZGF0ZVNpemVz
KCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMjY1ZDcxMTJkYWI4ZGJiNTNjNDAwNjY5YzdkNTU2NDYxOWZkNDMzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRz
LmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVuZGVyTWVkaWFDb250cm9s
RWxlbWVudHNfaAorI2RlZmluZSBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50c19oCisKKyNpZiBF
TkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgorI2luY2x1
ZGUgIlJlbmRlckJsb2NrLmgiCisjaW5jbHVkZSAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyTWVkaWFWb2x1bWVTbGlk
ZXJDb250YWluZXIgOiBwdWJsaWMgUmVuZGVyQmxvY2sgeworcHVibGljOgorICAgIFJlbmRlck1l
ZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKE5vZGUqKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K2NsYXNzIFJlbmRlck1lZGlhQ29udHJvbFRpbWVEaXNwbGF5IDogcHVibGljIFJlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveCB7CitwdWJsaWM6CisgICAgUmVuZGVyTWVkaWFDb250cm9sVGltZURp
c3BsYXkoTm9kZSopOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKK307
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKworY2xhc3MgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBS
ZW5kZXJCbG9jayB7CitwdWJsaWM6CisgICAgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVu
dChOb2RlKik7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworfTsKKwor
I2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQorCisjZW5kaWYgLy8gUmVuZGVyTWVkaWFDb250cm9s
RWxlbWVudHNfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0K
aW5kZXggZmFkZDA5MDExYWZmOTdkMGVmZTQ4MWNiYjc1YjAyZjBmZDY1MGRmMS4uMWZmYTZhYTZl
YjUyMDU0YTcyZDY5NjM3NzdiYTk2ZTE2ZTkyNDZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiTWVkaWFD
b250cm9sRWxlbWVudHMuaCIKICNpbXBvcnQgIlBhaW50SW5mby5oIgogI2ltcG9ydCAiUmVuZGVy
TWVkaWEuaCIKKyNpbXBvcnQgIlJlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCiAjaW1wb3J0
ICJSZW5kZXJNZWRpYUNvbnRyb2xzLmgiCiAjaW1wb3J0ICJSZW5kZXJWaWV3LmgiCiAjaW1wb3J0
ICJUaW1lUmFuZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyaW5nQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0Fs
bEluT25lLmNwcAppbmRleCAzZTE1NWRiYTM3MTIzNGRlYzc3MGIxZDAwMzBkZTc3MWVlNmUyZmZl
Li5lNWY2MjU2ODcyODlmYmEzNTg5Njc4ZWIwYjRjZWRmMmE3N2IzNTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKQEAgLTc0LDYgKzc0LDcg
QEAKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmNwcCIKICNpbmNsdWRlICJSZW5kZXJNYXJx
dWVlLmNwcCIKICNpbmNsdWRlICJSZW5kZXJNZWRpYS5jcHAiCisjaW5jbHVkZSAiUmVuZGVyTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwIgogI2luY2x1ZGUgIlJlbmRlck1lZGlhQ29udHJvbHMuY3Bw
IgogI2luY2x1ZGUgIlJlbmRlck1lbnVMaXN0LmNwcCIKICNpbmNsdWRlICJSZW5kZXJNZXRlci5j
cHAiCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>