<?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>125379</bug_id>
          
          <creation_ts>2013-12-06 21:47:09 -0800</creation_ts>
          <short_desc>Refactor the CFURLConnectionClient to be the synchronous implementation of an abstract network delegate</short_desc>
          <delta_ts>2013-12-09 15:42:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>957479</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-12-06 21:47:09 -0800</bug_when>
    <thetext>Refactor the CFURLConnectionClient to be the synchronous implementation of an abstract network delegate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957480</commentid>
    <comment_count>1</comment_count>
      <attachid>218650</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-12-06 21:54:31 -0800</bug_when>
    <thetext>Created attachment 218650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957486</commentid>
    <comment_count>2</comment_count>
      <attachid>218650</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-06 22:36:11 -0800</bug_when>
    <thetext>Comment on attachment 218650
Patch

Attachment 218650 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/46498007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957489</commentid>
    <comment_count>3</comment_count>
      <attachid>218652</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-12-06 22:57:05 -0800</bug_when>
    <thetext>Created attachment 218652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957495</commentid>
    <comment_count>4</comment_count>
      <attachid>218652</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-06 23:37:44 -0800</bug_when>
    <thetext>Comment on attachment 218652
Patch

Attachment 218652 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/46618001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957763</commentid>
    <comment_count>5</comment_count>
      <attachid>218725</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-12-08 21:57:24 -0800</bug_when>
    <thetext>Created attachment 218725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957764</commentid>
    <comment_count>6</comment_count>
      <attachid>218725</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-08 22:40:11 -0800</bug_when>
    <thetext>Comment on attachment 218725
Patch

Attachment 218725 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/44858218</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957765</commentid>
    <comment_count>7</comment_count>
      <attachid>218726</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-12-08 22:40:46 -0800</bug_when>
    <thetext>Created attachment 218726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957768</commentid>
    <comment_count>8</comment_count>
      <attachid>218726</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-08 23:24:10 -0800</bug_when>
    <thetext>Comment on attachment 218726
Patch

Attachment 218726 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/47178210</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957797</commentid>
    <comment_count>9</comment_count>
      <attachid>218737</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-12-09 01:33:08 -0800</bug_when>
    <thetext>Created attachment 218737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957938</commentid>
    <comment_count>10</comment_count>
      <attachid>218737</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-09 09:43:36 -0800</bug_when>
    <thetext>Comment on attachment 218737
Patch

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

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.cpp:37
&gt; +}
&gt; +ResourceHandleCFURLConnectionDelegate::~ResourceHandleCFURLConnectionDelegate()

Missing empty line here.

&gt; Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp:239
&gt; +#if PLATFORM(WIN)
&gt; +    if (m_handle-&gt;client() &amp;&amp; !m_handle-&gt;client()-&gt;shouldCacheResponse(m_handle, cachedResponse))
&gt; +        return 0;
&gt; +#else
&gt; +    CFCachedURLResponseRef newResponse = m_handle-&gt;client()-&gt;willCacheResponse(m_handle, cachedResponse);
&gt; +    if (newResponse != cachedResponse)
&gt; +        return newResponse;
&gt; +#endif

Why are these different?

Strange that we only null check on Windows too.

&gt; Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h:35
&gt; +class SynchronousResourceHandleCFURLConnectionDelegate FINAL : public ResourceHandleCFURLConnectionDelegate {

Thinking about the naming more, I&apos;m still not a fan. This sounds as if it was about synchronous and asynchronous requests, which it is not. Also, both sync and (future) async delegates actually use the same API, the only difference is that one of these is meant to be used on a secondary thread, and has built-in thread hopping.

But I don&apos;t have a better suggestion.

&gt; Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h:46
&gt; +
&gt; +

Two empty lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958114</commentid>
    <comment_count>11</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-12-09 15:41:09 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp:239
&gt; &gt; +#if PLATFORM(WIN)
&gt; &gt; +    if (m_handle-&gt;client() &amp;&amp; !m_handle-&gt;client()-&gt;shouldCacheResponse(m_handle, cachedResponse))
&gt; &gt; +        return 0;
&gt; &gt; +#else
&gt; &gt; +    CFCachedURLResponseRef newResponse = m_handle-&gt;client()-&gt;willCacheResponse(m_handle, cachedResponse);
&gt; &gt; +    if (newResponse != cachedResponse)
&gt; &gt; +        return newResponse;
&gt; &gt; +#endif
&gt; 
&gt; Why are these different?
&gt; 
&gt; Strange that we only null check on Windows too.

Probably historical reasons. The whole API on Windows is different here.

&gt; &gt; Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h:35
&gt; &gt; +class SynchronousResourceHandleCFURLConnectionDelegate FINAL : public ResourceHandleCFURLConnectionDelegate {
&gt; 
&gt; Thinking about the naming more, I&apos;m still not a fan. This sounds as if it was about synchronous and asynchronous requests, which it is not. Also, both sync and (future) async delegates actually use the same API, the only difference is that one of these is meant to be used on a secondary thread, and has built-in thread hopping.

I&apos;ll land with the current name. It is not a big deal changing that afterwards (or hopefully getting rid of the classes eventually).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958116</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-12-09 15:42:13 -0800</bug_when>
    <thetext>Committed r160338: &lt;http://trac.webkit.org/changeset/160338&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218650</attachid>
            <date>2013-12-06 21:54:31 -0800</date>
            <delta_ts>2013-12-06 22:57:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125379-20131206215430.patch</filename>
            <type>text/plain</type>
            <size>70016</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTgwNDNmODU3ZmY0M2E1
MTgwZTVjZmRkZGM4ZGM4NTA5Mjk1ZGUzNC4uMDEwODE4MWJkNTljN2FmOTA0ZWY1ZmVhMmRlZjQ3
N2M5M2MzODIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTEyLTA2ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHRo
ZSBDRlVSTENvbm5lY3Rpb25DbGllbnQgdG8gYmUgdGhlIHN5bmNocm9ub3VzIGltcGxlbWVudGF0
aW9uIG9mIGFuIGFic3RyYWN0IG5ldHdvcmsgZGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTM3OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
OjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6On5SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRGYWls
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGU6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkU2VuZEJv
ZHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6Y2FuUmVzcG9u
ZFRvUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6bWFrZUNvbm5lY3Rp
b25DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c3ludGhlc2l6ZVJlZGlyZWN0UmVz
cG9uc2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZEZhaWwpOgorICAgICAg
ICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlOjp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVDaGFsbGVuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlOjpkaWRTZW5kQm9keURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlv
blNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJheSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGUuaDogQWRkZWQuCisKIDIwMTMtMTItMDYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY10gS2VlcCBhcm91bmQgbW9yZSBkZWNvZGVk
IGltYWdlIGRhdGEsIHNpbmNlIGl0J3MgcHVyZ2VhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCBhM2Y4MDk3YWVlNTdjYzFmY2IwYWEy
OGMyZGM1YTYyYmFlYTgxZTlkLi4yMjc2MTkwOTQ1ODJlNmMxNzBmOWUwNjk3ZDg4ZWQwYzNjZjUz
ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKQEAgLTgyNzcsNiArODI3NywxMiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5D
YWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fp
cm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dp
bkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0Ns
Q29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2Zc
UmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWly
b3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTgzMDEsNiArODMwNywxMiBAQAog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXG5ldHdvcmtcY2ZcU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJv
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1x3aW5cRG93bmxvYWRCdW5kbGVX
aW4uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1x3
aW5cTmV0d29ya1N0YXRlTm90aWZpZXJXaW4uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXENvb2tpZUphckN1cmwuY3BwIj4KQEAgLTE5NTAz
LDExICsxOTUxNSwxMyBAQAogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cbmV0d29ya1xjZlxGb3JtRGF0YVN0cmVhbUNGTmV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXExvYWRlclJ1bkxvb3BDRi5oIiAvPgogICAg
IDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxSZXNvdXJj
ZUVycm9yLmgiIC8+CisgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxu
ZXR3b3JrXGNmXFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIgLz4KICAg
ICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3Vy
Y2VSZXF1ZXN0LmgiIC8+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxuZXR3b3JrXGNmXFJlc291cmNlUmVxdWVzdENGTmV0LmgiIC8+CiAgICAgPEN1c3RvbUJ1aWxk
U3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlUmVzcG9uc2UuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcU29ja2V0
U3RyZWFtRXJyb3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5l
dHdvcmtcY2ZcU29ja2V0U3RyZWFtSGFuZGxlLmgiIC8+CisgICAgPEN1c3RvbUJ1aWxkU3RlcCBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIiAvPgogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiPgog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmlu
ZGV4IGYwYjAyNjYwMjQ0MmRkZGQwMWZhMDEyODBlMTY2NmNkZTQ3ZTYxMjEuLmVlMjU4MGYwM2Ji
MzlkOTZlN2NhODg3NGYwZTAyMzlhNjcyOThiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTE4ODEsNiAr
MTg4MSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNm
XFJlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29y
a1xjZjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cbmV0d29ya1xjZlxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlLmNwcCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY2Y8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdv
cmtcY2ZcUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1c
bmV0d29ya1xjZjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTg5Myw2ICsxODk2LDkg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcU3luY2hy
b25vdXNMb2FkZXJDbGllbnRDRk5ldC5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3
b3JrXGNmPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZS5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGNm
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxuZXR3b3JrXHdpblxEb3dubG9hZEJ1bmRsZVdpbi5jcHAiPgogICAgICAgPEZpbHRl
cj5wbGF0Zm9ybVxuZXR3b3JrXHdpbjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTUw
OTIsNiArMTUwOTgsOSBAQAogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cbmV0d29ya1xjZlxSZXNvdXJjZUVycm9yLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxu
ZXR3b3JrXGNmPC9GaWx0ZXI+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgICAgPEN1c3RvbUJ1
aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtc
Y2Y8L0ZpbHRlcj4KKyAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KICAgICA8Q3VzdG9tQnVpbGRTdGVw
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3VyY2VSZXF1ZXN0LmgiPgogICAg
ICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGNmPC9GaWx0ZXI+CiAgICAgPC9DdXN0b21CdWls
ZFN0ZXA+CkBAIC0xNTEwMSw2ICsxNTExMCw5IEBACiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlUmVzcG9uc2UuaCI+CiAgICAgICA8
RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY2Y8L0ZpbHRlcj4KICAgICA8L0N1c3RvbUJ1aWxkU3Rl
cD4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2Zc
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiPgorICAg
ICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGNmPC9GaWx0ZXI+CisgICAgPC9DdXN0b21CdWls
ZFN0ZXA+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3Jr
XGN1cmxcQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3Jt
XG5ldHdvcmtcY3VybDwvRmlsdGVyPgogICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI2OTE0
ZDUxZTU1YzEzMjFmYzQ1NjU3MzVkZTM0NTU2ZTVhNWVmNTIuLjE0Y2EyNjA3ZGJiNmYzYjk4ZDRh
ZjA0OTEzOGRjYmMxZjExMjIwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxNCw2ICs5MTQsMTAgQEAKIAkJMjZDMTdBM0Yx
NDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkMxN0EzRDE0OTFEMkQ0MDBEMTJCQTIgLyogRmls
ZVN5c3RlbUlPUy5tbSAqLzsgfTsKIAkJMjZFOThBMTAxMzBBOUZDQTAwOEVCN0IyIC8qIFRleHRD
b2RlY0FTQ0lJRmFzdFBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI2RTk4QTBGMTMwQTlGQ0EwMDhFQjdCMiAvKiBUZXh0Q29kZWNBU0NJSUZhc3RQ
YXRoLmggKi87IH07CiAJCTI2RjQwRDRBMTQ5MDRBNjMwMENBNjdDNCAvKiBFdmVudExvb3BJT1Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY0MEQ0
OTE0OTA0QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tICovOyB9OworCQkyNkZBRTRDQzE4
NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkZBRTRD
ODE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5jcHAgKi87IH07CisJCTI2RkFFNENEMTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyNkZBRTRDOTE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oICovOyB9OworCQkyNkZBRTRDRTE4NTJFM0E1MDA0
QzhDNDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RkFF
NENBMTg1MkUzQTUwMDRDOEM0NiAvKiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUuY3BwICovOyB9OworCQkyNkZBRTRDRjE4NTJFM0E1MDA0QzhDNDYgLyog
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkZBRTRDQjE4NTJFM0E1
MDA0QzhDNDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlLmggKi87IH07CiAJCTI5MTdCNTYxMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2No
ZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI5MTdCNTVFMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmNwcCAqLzsg
fTsKIAkJMjkxN0I1NjIxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MTdCNTVGMTQ3
MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjkxN0I1NjMxNDczNDk2QzAwNTJDOUQw
IC8qIExheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MTdCNTYwMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZs
dXNoU2NoZWR1bGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTUyNjksNiArNTI3Myw3IEBACiAJCUM1Mjc4QjBDMTdGMjEyRUEwMDNB
Mjk5OCAvKiBQbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTI3OEIwQjE3RjIxMkVBMDAzQTI5OTggLyogUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tICovOyB9OwogCQlDNTQ0Mjc0QjExQTU3RTdBMDA2M0E3NDkgLyog
RE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzU0NDI3NDkxMUE1N0U3QTAwNjNBNzQ5IC8qIERPTVN0cmluZ0xpc3QuaCAqLzsgfTsK
IAkJQzU1NjEwRjExMUE3MDRFQjAwQjgyRDI3IC8qIERPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU1NjEwRjAxMUE3MDRFQjAw
QjgyRDI3IC8qIERPTVN0cmluZ0xpc3QuY3BwICovOyB9OworCQlDNTVDN0JBMTE3MThBRkJBMDAx
MzI3RTQgLyogUmVuZGVyVGhlbWVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNTVDN0JBMDE3MThBRkJBMDAxMzI3RTQgLyogUmVuZGVyVGhlbWVJ
T1MubW0gKi87IH07CiAJCUM1NUUzOEJGMTAwNDBENUQwMEE1NkJEQiAvKiBTdG9yYWdlTmFtZXNw
YWNlSW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzU1RTM4QkIxMDA0MEQ1RDAwQTU2QkRCIC8qIFN0b3JhZ2VOYW1lc3BhY2VJbXBsLmggKi87IH07
CiAJCUM1NUUzOEMwMTAwNDBENUQwMEE1NkJEQiAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTVFMzhCQzEw
MDQwRDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwICovOyB9OwogCQlDNTcy
RUUxRjEyMDFDOUJDMDA3RDhGODIgLyogSlNJREJJbmRleC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU3MkVFMUQxMjAxQzlCQzAwN0Q4RjgyIC8qIEpT
SURCSW5kZXguaCAqLzsgfTsKQEAgLTU0NDcsOCArNTQ1Miw2IEBACiAJCUNFN0IyREI1MTU4NkFC
QUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIxMTU4NkFCQUQwMDk4QjNGQSAv
KiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZS5tbSAqLzsgfTsKIAkJQ0U5NTIwOEExODExQjQ3NTAwN0E1MzkyIC8qIFdlYlNhZmVJ
bmNyZW1lbnRhbFN3ZWVwZXJJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyQzRDQjFEMTYxQTEzMTIwMEQyMTREQSAvKiBXZWJTYWZlSW5jcmVtZW50
YWxTd2VlcGVySU9TLmggKi87IH07Ci0JCUZFRDEzRDUyMENFQTk0OTcwMEQ4OTQ2NiAvKiBSZW5k
ZXJUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkVEMTNENTAwQ0VBOTQ5NzAwRDg5NDY2IC8qIFJlbmRlclRoZW1lSU9TLmggKi87IH07Ci0J
CUM1NUM3QkExMTcxOEFGQkEwMDEzMjdFNCAvKiBSZW5kZXJUaGVtZUlPUy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NUM3QkEwMTcxOEFGQkEwMDEz
MjdFNCAvKiBSZW5kZXJUaGVtZUlPUy5tbSAqLzsgfTsKIAkJQ0VDQURGQzYxNTM3NzhGRjAwRTM3
MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQ0FERkMyMTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRp
b25BbHRlcm5hdGl2ZS5jcHAgKi87IH07CiAJCUNFQ0FERkM3MTUzNzc4RkYwMEUzNzA2OCAvKiBE
aWN0YXRpb25BbHRlcm5hdGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0VDQURGQzMxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0
aXZlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0VDQURGQzgxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQzQxNTM3NzhGRjAw
RTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwICovOyB9OwpAQCAtNjMyNSw2ICs2MzI4LDcg
QEAKIAkJRkVCQzVGMzExNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUJDNUYyRjE2QkQwQ0Mz
MDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmNwcCAqLzsgfTsKIAkJRkVCQzVGMzIxNkJEMENDMzAw
NjU5QkQzIC8qIERhdGFiYXNlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkVCQzVGMzAxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRDEz
RDNBMENFQTkzNDYwMEQ4OTQ2NiAvKiBFZGl0b3JJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQxM0QzOTBDRUE5MzQ2MDBEODk0NjYgLyogRWRp
dG9ySU9TLm1tICovOyB9OworCQlGRUQxM0Q1MjBDRUE5NDk3MDBEODk0NjYgLyogUmVuZGVyVGhl
bWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
RDEzRDUwMENFQTk0OTcwMEQ4OTQ2NiAvKiBSZW5kZXJUaGVtZUlPUy5oICovOyB9OwogCQlGRUQ0
ODM5MENFRDY2QzMyNTVGNzJDNTkgLyogTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNzVBMDU5QUYxNzBEOEZBQTVC
OENBQkUgLyogTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAgKi87IH07CiAJCUZFREJGRjE2MTgyQjdB
OEQwMDE3RkE2NCAvKiBCcmVha3BvaW50SUQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFREJGRjE0MTgyQjdBOEQwMDE3RkE2NCAvKiBCcmVha3BvaW50
SUQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
RURFRjg0MTE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURFRjgzRjE2Nzk3MTA4MDAw
RTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAgKi87IH07CkBAIC03NTYxLDYgKzc1NjUsMTAg
QEAKIAkJMjZDMTdBM0QxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBGaWxlU3lzdGVtSU9TLm1tOyBwYXRo
ID0gaW9zL0ZpbGVTeXN0ZW1JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2
RTk4QTBGMTMwQTlGQ0EwMDhFQjdCMiAvKiBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDb2RlY0FTQ0lJRmFzdFBhdGguaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZGNDBENDkxNDkwNEE2MzAwQ0E2N0M0IC8qIEV2
ZW50TG9vcElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEV2
ZW50TG9vcElPUy5tbTsgcGF0aCA9IGlvcy9FdmVudExvb3BJT1MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTI2RkFFNEM4MTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkZBRTRDOTE4NTJFM0E1MDA0QzhDNDYgLyogUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2RkFFNENBMTg1MkUzQTUwMDRDOEM0NiAvKiBT
eW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMjZGQUU0Q0IxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkxN0I1NUUxNDczNDk2QzAwNTJDOUQwIC8qIExh
eWVyRmx1c2hTY2hlZHVsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTGF5ZXJGbHVzaFNjaGVkdWxlci5jcHA7IHBhdGggPSBjYS9MYXllckZsdXNoU2NoZWR1bGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkxN0I1NUYxNDczNDk2QzAwNTJD
OUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTGF5ZXJGbHVzaFNjaGVkdWxlci5oOyBwYXRoID0gY2EvTGF5ZXJGbHVzaFNjaGVkdWxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTE3QjU2MDE0NzM0OTZDMDA1MkM5
RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50Lmg7IHBhdGggPSBjYS9MYXllckZs
dXNoU2NoZWR1bGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjM0
Nyw2ICsxMjM1NSw3IEBACiAJCUM1NDQyNzQ5MTFBNTdFN0EwMDYzQTc0OSAvKiBET01TdHJpbmdM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVN0cmluZ0xpc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0NDI3NEExMUE1N0U3QTAwNjNBNzQ5IC8q
IERPTVN0cmluZ0xpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVN0cmluZ0xpc3Qu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTU2MTBGMDExQTcwNEVCMDBCODJE
MjcgLyogRE9NU3RyaW5nTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBET01TdHJpbmdMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzU1
QzdCQTAxNzE4QUZCQTAwMTMyN0U0IC8qIFJlbmRlclRoZW1lSU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVuZGVyVGhlbWVJT1MubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM1NUUzOEJCMTAwNDBENUQwMEE1NkJEQiAvKiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTVFMzhCQzEwMDQw
RDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDNTcyRUUxRDEyMDFDOUJDMDA3RDhGODIgLyogSlNJREJJbmRl
eC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0lEQkluZGV4Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjU3Niw4ICsxMjU4NSw2IEBACiAJCUNFN0IyREIw
MTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIubW07IHBhdGggPSBtYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTdCMkRCMTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oOyBwYXRoID0gbWFjL1RleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTdCMkRCMjE1ODZBQkFE
MDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBwYXRo
ID0gbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRkVEMTNENTAwQ0VBOTQ5NzAwRDg5NDY2IC8qIFJlbmRlclRoZW1lSU9TLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRoZW1lSU9TLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM1NUM3QkEwMTcxOEFGQkEwMDEzMjdFNCAvKiBSZW5kZXJU
aGVtZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbmRl
clRoZW1lSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUNBREZDMjE1Mzc3
OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRUNBREZDMzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9u
QWx0ZXJuYXRpdmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGljdGF0aW9u
QWx0ZXJuYXRpdmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VDQURGQzQxNTM3
NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMzU0OSw2ICsxMzU1Niw3IEBACiAJCUZFQkM1RjJGMTZCRDBDQzMwMDY1
OUJEMyAvKiBEYXRhYmFzZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGF0YWJhc2VCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVC
QzVGMzAxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkVEMTNEMzkwQ0VBOTM0NjAwRDg5NDY2IC8qIEVkaXRvcklPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEVkaXRvcklPUy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkVEMTNENTAwQ0VBOTQ5NzAwRDg5NDY2IC8qIFJlbmRlclRoZW1l
SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRoZW1lSU9TLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREJGRjE0MTgyQjdBOEQwMDE3RkE2NCAv
KiBCcmVha3BvaW50SUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJlYWtw
b2ludElELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREVGODNGMTY3OTcxMDgw
MDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERhdGFiYXNlU3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRURFRjg0MDE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTUzMyw2ICsxOTU0MSw4IEBACiAJCQkJN0VFNjg0
NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCAqLywKIAkJCQk3RUU2ODQ1ODEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNwcCAqLywKIAkJCQk3RUU2ODQ1OTEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgKi8sCisJCQkJMjZGQUU0
QzgxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuY3BwICovLAorCQkJCTI2RkFFNEM5MTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmggKi8sCiAJCQkJN0VFNjg0NUExMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovLAogCQkJCTdFRTY4NDVCMTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgKi8sCiAJCQkJN0VFNjg0NUMxMkQyNkUzODAw
RTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8sCkBAIC0xOTU0Miw2ICsxOTU1Miw4
IEBACiAJCQkJNTFBQkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5o
ICovLAogCQkJCTUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVD
Rk5ldC5jcHAgKi8sCiAJCQkJNDQyQUJDRDUxN0Q5MjYyRjAwRDMwNzE1IC8qIFN5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50Q0ZOZXQuY3BwICovLAorCQkJCTI2RkFFNENBMTg1MkUzQTUwMDRDOEM0NiAv
KiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICov
LAorCQkJCTI2RkFFNENCMTg1MkUzQTUwMDRDOEM0NiAvKiBTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2Y7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjQ0OTMsNiArMjQ1MDUsNyBAQAogCQkJCTdF
RTY4NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5MzRGNzEzQzBENUE2RjE5MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNEM3Njc5MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRs
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjZGQUU0Q0QxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
NEM3NjdBMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE0Qzc2N0IwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTQxNDM0MTZBNjU5NjMwMEM2MzNDNyAvKiBS
ZXNvdXJjZUhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MDE4LDYgKzI1MDMxLDcg
QEAKIAkJCQlCMjIyN0FGNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHWm9vbUFuZFBhbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJFNEVDOTgwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4MDgxMTcxNkZDRjlDQjAwQjgwRDA3IC8qIFN5bmNocm9u
b3VzTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkyNkZBRTRDRjE4NTJFM0E1MDA0
QzhDNDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1REE5N0VDRDE2OEU3ODdCMDAwRTM2NzYgLyogU3lzdGVt
VmVyc2lvbk1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkYwNTEwQTE1NEYwOTAwMEE0MjM0
IC8qIFRhYmxlTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzJBRTFFNTE4M0MwNzQxMDAw
QTU5ODggLyogUGx1Z2luUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3MzYsNiAr
Mjc3NTAsNyBAQAogCQkJCTA3MDU4NTEyMTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3Njc4MENFOTIzQTEwMDdF
RjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2QzEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkyNkZBRTRDQzE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJBMDAzMTE2RkI5MkFDMDBC
QTdBMzUgLyogUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0
Qzc2NTEwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTNFMjI3RTMwQUY1ODlBRDAwRDQ4MzI0IC8qIFJlc291cmNlTG9hZGVyLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjc5ODUsNiArMjgwMDAsNyBAQAogCQkJCTkzQjJEODE4MEY5OTIw
RUUwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA4
NzU1OEM1MTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjJDMTIxN0MxMUFCOUU3NzAwM0M0NjJDIC8qIFN1c3Bl
bmRhYmxlVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjZGQUU0Q0UxODUyRTNBNTAwNEM4
QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzk3MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQUVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjREOTEyQjAxM0NBOUExRjAwRDIxOTE1IC8q
IFNWR0FsdEdseXBoRGVmRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTY1M0YyRDBE
OTcyN0QyMDBDQTk3MjMgLyogU1ZHQWx0R2x5cGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmlu
ZGV4IGZmODA2NzQ5YTYxYjM2NmU3YWJmODI2Yjk0YjAyYzc0ZDhhY2IwMmEuLjU4YTIyMjcyZDU1
OGExMTJjNGZlZTMxYzNiYjY3MjkwM2MzMzI0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTcyLDcgKzcyLDYgQEAgdHlwZWRl
ZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOwogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQ29ubmVjdGlv
biogQ0ZVUkxDb25uZWN0aW9uUmVmOwogdHlwZWRlZiBpbnQgQ0ZIVFRQQ29va2llU3RvcmFnZUFj
Y2VwdFBvbGljeTsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqIENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY7Ci10eXBlZGVmIHN0cnVjdCBDRlVSTENvbm5lY3Rpb25DbGll
bnRfVjYgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpIHx8IFVTRShDRk5FVFdPUkspCkBAIC0xNDIsNyArMTQxLDYgQEAgcHVibGljOgogICAgIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVlc3QoKSBjb25zdDsKICAgICBzdGF0aWMg
dm9pZCBzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmKTsKICAg
ICBzdGF0aWMgdm9pZCBzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3QsIENG
RGF0YVJlZik7Ci0gICAgc3RhdGljIENGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiogY29ubmVjdGlv
bkNsaWVudENhbGxiYWNrcygpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgUXVpY2tMb29r
SGFuZGxlKiBxdWlja0xvb2tIYW5kbGUoKSB7IHJldHVybiBtX3F1aWNrTG9vay5nZXQoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlSW50ZXJuYWwuaAppbmRleCA3NWUyMjdiNjY3MjllNDBmYjI5NWMxNmE1YWVlMTViNzA1ZjA3
MGQyLi4zM2IwOGIzNzQ0ZjU3YjFhZDk5NTVlOTc3NDkwMmI2ZTQ2YjRmMzljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAKICNpZiBVU0Uo
Q0ZORVRXT1JLKQorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgogI2VuZGlm
CiAKQEAgLTE0OCw2ICsxNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgVVNFKENGTkVU
V09SSykKICAgICAgICAgUmV0YWluUHRyPENGVVJMQ29ubmVjdGlvblJlZj4gbV9jb25uZWN0aW9u
OwogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKKyAgICAgICAgUmVm
UHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU+IG1fY29ubmVjdGlvbkRl
bGVnYXRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykKICAg
ICAgICAgUmV0YWluUHRyPE5TVVJMQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
Rk5ldC5jcHAKaW5kZXggMmI2ZTc3YTcyZTIwODVkZDgxYzc0OTQ2MWJhYjlkNGI4YWU5OWZmOS4u
YWNhZGU3Yzk3MTE0MzBlMjE0ODgxNWY2NWIwMTljYzhlZTZjNjY3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50LmgiCisjaW5jbHVkZSAiU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgogI2luY2x1ZGUg
PHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBAIC0xMTIsMjg5ICsxMTMsNiBA
QCBzdGF0aWMgdm9pZCBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IENyZWRlbgogICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxk
KCJBdXRob3JpemF0aW9uIiwgYXV0aGVudGljYXRpb25IZWFkZXIpOwogfQogCi1zdGF0aWMgUmV0
YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNl
c3NhcnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjdXJyZW50UmVxdWVzdCwgQ0ZVUkxSZXF1ZXN0
UmVmIG5ld1JlcXVlc3QsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZWRpcmVjdFJlc3BvbnNlKQotewot
ICAgIGlmIChjZlJlZGlyZWN0UmVzcG9uc2UpCi0gICAgICAgIHJldHVybiBjZlJlZGlyZWN0UmVz
cG9uc2U7Ci0KLSAgICBDRlVSTFJlZiBuZXdVUkwgPSBDRlVSTFJlcXVlc3RHZXRVUkwobmV3UmVx
dWVzdCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdTY2hlbWUgPSBhZG9wdENGKENG
VVJMQ29weVNjaGVtZShuZXdVUkwpKTsKLQotICAgIC8vIElmIHRoZSBwcm90b2NvbHMgb2YgdGhl
IG5ldyByZXF1ZXN0IGFuZCB0aGUgY3VycmVudCByZXF1ZXN0IG1hdGNoLCB0aGlzIGlzIG5vdCBh
biBIU1RTIHJlZGlyZWN0IGFuZCB3ZSBzaG91bGRuJ3Qgc3ludGhlc2l6ZSBhIHJlZGlyZWN0IHJl
c3BvbnNlLgotICAgIGlmIChjdXJyZW50UmVxdWVzdC51cmwoKS5wcm90b2NvbCgpID09IFN0cmlu
ZyhuZXdTY2hlbWUuZ2V0KCkpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gY3VycmVudFVSTCA9IGN1cnJlbnRSZXF1ZXN0LnVybCgpLmNyZWF0ZUNGVVJMKCk7
Ci0gICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IHJlc3BvbnNlTWVzc2FnZSA9IGFkb3B0
Q0YoQ0ZIVFRQTWVzc2FnZUNyZWF0ZVJlc3BvbnNlKDAsIDMwMiwgMCwga0NGSFRUUFZlcnNpb24x
XzEpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IG5ld0Fic29sdXRlVVJMID0gYWRvcHRDRihD
RlVSTENvcHlBYnNvbHV0ZVVSTChuZXdVUkwpKTsKLSAgICBDRkhUVFBNZXNzYWdlU2V0SGVhZGVy
RmllbGRWYWx1ZShyZXNwb25zZU1lc3NhZ2UuZ2V0KCksIENGU1RSKCJMb2NhdGlvbiIpLCBDRlVS
TEdldFN0cmluZyhuZXdBYnNvbHV0ZVVSTC5nZXQoKSkpOwotICAgIENGSFRUUE1lc3NhZ2VTZXRI
ZWFkZXJGaWVsZFZhbHVlKHJlc3BvbnNlTWVzc2FnZS5nZXQoKSwgQ0ZTVFIoIkNhY2hlLUNvbnRy
b2wiKSwgQ0ZTVFIoIm5vLXN0b3JlIikpOwotCi0gICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VS
ZWY+IG5ld1Jlc3BvbnNlID0gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNw
b25zZSgwLCBjdXJyZW50VVJMLmdldCgpLCByZXNwb25zZU1lc3NhZ2UuZ2V0KCksIGtDRlVSTENh
Y2hlU3RvcmFnZU5vdEFsbG93ZWQpKTsKLSAgICByZXR1cm4gbmV3UmVzcG9uc2U7Ci19Ci0KLXN0
YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMQ29ubmVjdGlvblJlZiBj
b25uLCBDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0LCBDRlVSTFJlc3BvbnNlUmVmIG9yaWdpbmFs
UmVkaXJlY3RSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSNpZiBMT0dfRElT
QUJMRUQKLSAgICBVTlVTRURfUEFSQU0oY29ubik7Ci0jZW5kaWYKLSAgICBSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHJlZGlyZWN0
UmVzcG9uc2UgPSBzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KGhhbmRsZS0+
Y3VycmVudFJlcXVlc3QoKSwgY2ZSZXF1ZXN0LCBvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UpOwot
Ci0gICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlKSB7Ci0gICAgICAgIENGUmV0YWluKGNmUmVxdWVz
dCk7Ci0gICAgICAgIHJldHVybiBjZlJlcXVlc3Q7Ci0gICAgfQotCi0gICAgTE9HKE5ldHdvcmss
ICJDRk5ldCAtIHdpbGxTZW5kUmVxdWVzdChjb25uPSVwLCBoYW5kbGU9JXApICglcykiLCBjb25u
LCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7Ci0KLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKLSAgICBpZiAocmVkaXJlY3RS
ZXNwb25zZSkgewotICAgICAgICBDRkhUVFBNZXNzYWdlUmVmIGh0dHBNZXNzYWdlID0gQ0ZVUkxS
ZXNwb25zZUdldEhUVFBSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKLSAgICAgICAg
aWYgKGh0dHBNZXNzYWdlICYmIENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0
cE1lc3NhZ2UpID09IDMwNykgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBs
YXN0SFRUUE1ldGhvZCA9IGhhbmRsZS0+bGFzdEhUVFBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygp
OwotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdNZXRob2QgPSBhZG9wdENG
KENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QpKTsKLSAgICAgICAg
ICAgIGlmIChDRlN0cmluZ0NvbXBhcmVXaXRoT3B0aW9ucyhsYXN0SFRUUE1ldGhvZC5nZXQoKSwg
bmV3TWV0aG9kLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBDRlN0cmluZ0dldExlbmd0aChsYXN0SFRU
UE1ldGhvZC5nZXQoKSkpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSkgewotICAgICAgICAg
ICAgICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiBtdXRhYmxlUmVxdWVzdCA9
IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgY2ZSZXF1ZXN0KSk7Ci0g
ICAgICAgICAgICAgICAgd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24oaGFuZGxlLT5zdG9yYWdl
U2Vzc2lvbigpLCBtdXRhYmxlUmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgQ0ZVUkxS
ZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2QobXV0YWJsZVJlcXVlc3QuZ2V0KCksIGxhc3RIVFRQ
TWV0aG9kLmdldCgpKTsKLQotICAgICAgICAgICAgICAgIEZvcm1EYXRhKiBib2R5ID0gaGFuZGxl
LT5maXJzdFJlcXVlc3QoKS5odHRwQm9keSgpOwotICAgICAgICAgICAgICAgIGlmICghZXF1YWxJ
Z25vcmluZ0Nhc2UoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwTWV0aG9kKCksICJHRVQiKSAm
JiBib2R5ICYmICFib2R5LT5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6
OnNldEhUVFBCb2R5KG11dGFibGVSZXF1ZXN0LmdldCgpLCBib2R5KTsKLQotICAgICAgICAgICAg
ICAgIFN0cmluZyBvcmlnaW5hbENvbnRlbnRUeXBlID0gaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5o
dHRwQ29udGVudFR5cGUoKTsKLSAgICAgICAgICAgICAgICBpZiAoIW9yaWdpbmFsQ29udGVudFR5
cGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVh
ZGVyRmllbGRWYWx1ZShtdXRhYmxlUmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIkNvbnRlbnQtVHlwZSIp
LCBvcmlnaW5hbENvbnRlbnRUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwotCi0gICAgICAg
ICAgICAgICAgcmVxdWVzdCA9IG11dGFibGVSZXF1ZXN0LmdldCgpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotICAgIGlmIChyZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICByZXF1
ZXN0ID0gY2ZSZXF1ZXN0OwotCi0gICAgLy8gU2hvdWxkIG5vdCBzZXQgUmVmZXJlciBhZnRlciBh
IHJlZGlyZWN0IGZyb20gYSBzZWN1cmUgcmVzb3VyY2UgdG8gbm9uLXNlY3VyZSBvbmUuCi0gICAg
aWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgJiYgcHJvdG9jb2xJcyhyZXF1
ZXN0Lmh0dHBSZWZlcnJlcigpLCAiaHR0cHMiKSAmJiBoYW5kbGUtPmNvbnRleHQoKS0+c2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpKQotICAgICAgICByZXF1ZXN0LmNs
ZWFySFRUUFJlZmVycmVyKCk7Ci0KLSAgICBoYW5kbGUtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKLQotICAgIGlmIChyZXF1ZXN0LmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIGNmUmVxdWVzdCA9IHJlcXVlc3QuY2ZVUkxSZXF1ZXN0
KFVwZGF0ZUhUVFBCb2R5KTsKLQotICAgIENGUmV0YWluKGNmUmVxdWVzdCk7Ci0gICAgcmV0dXJu
IGNmUmVxdWVzdDsKLX0KLQotc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKENGVVJMQ29u
bmVjdGlvblJlZiBjb25uLCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCi17Ci0jaWYgTE9HX0RJU0FCTEVEICYmICFVU0UoUVVJQ0tfTE9PSykKLSAg
ICBVTlVTRURfUEFSQU0oY29ubik7Ci0jZW5kaWYKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxl
ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSk7Ci0KLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bm49JXAsIGhhbmRsZT0lcCkgKCVzKSIsIGNvbm4sIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVl
c3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIGlmICghaGFuZGxlLT5j
bGllbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8vIEF2
b2lkIE1JTUUgdHlwZSBzbmlmZmluZyBpZiB0aGUgcmVzcG9uc2UgY29tZXMgYmFjayBhcyAzMDQg
Tm90IE1vZGlmaWVkLgotICAgIENGSFRUUE1lc3NhZ2VSZWYgbXNnID0gd2tHZXRDRlVSTFJlc3Bv
bnNlSFRUUFJlc3BvbnNlKGNmUmVzcG9uc2UpOwotICAgIGludCBzdGF0dXNDb2RlID0gbXNnID8g
Q0ZIVFRQTWVzc2FnZUdldFJlc3BvbnNlU3RhdHVzQ29kZShtc2cpIDogMDsKLQotICAgIGlmIChz
dGF0dXNDb2RlICE9IDMwNCkKLSAgICAgICAgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShjZlJl
c3BvbnNlKTsKLQotI2lmICFQTEFURk9STShJT1MpCi0gICAgaWYgKF9DRlVSTFJlcXVlc3RDb3B5
UHJvdG9jb2xQcm9wZXJ0eUZvcktleShoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmNmVVJMUmVxdWVz
dChEb05vdFVwZGF0ZUhUVFBCb2R5KSwgQ0ZTVFIoIkZvcmNlSFRNTE1JTUVUeXBlIikpKQotICAg
ICAgICB3a1NldENGVVJMUmVzcG9uc2VNSU1FVHlwZShjZlJlc3BvbnNlLCBDRlNUUigidGV4dC9o
dG1sIikpOwotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0jZWxzZQotICAgIGlmICghQ0ZVUkxS
ZXNwb25zZUdldE1JTUVUeXBlKGNmUmVzcG9uc2UpKSB7Ci0gICAgICAgIC8vIFdlIHNob3VsZCBu
ZXZlciBiZSBhcHBseWluZyB0aGUgZGVmYXVsdCBNSU1FVHlwZSBpZiB3ZSB0b2xkIHRoZSBuZXR3
b3JraW5nIGxheWVyIHRvIGRvIGNvbnRlbnQgc25pZmZpbmcgZm9yIGhhbmRsZS4KLSAgICAgICAg
QVNTRVJUKCFoYW5kbGUtPnNob3VsZENvbnRlbnRTbmlmZigpKTsKLSAgICAgICAgc2V0RGVmYXVs
dE1JTUVUeXBlKGNmUmVzcG9uc2UpOwotICAgIH0KLSNlbmRpZgotCi0jaWYgVVNFKFFVSUNLX0xP
T0spCi0gICAgaGFuZGxlLT5zZXRRdWlja0xvb2tIYW5kbGUoUXVpY2tMb29rSGFuZGxlOjpjcmVh
dGUoaGFuZGxlLCBjb25uLCBjZlJlc3BvbnNlKSk7Ci0gICAgaWYgKGhhbmRsZS0+cXVpY2tMb29r
SGFuZGxlKCkpCi0gICAgICAgIGNmUmVzcG9uc2UgPSBoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgp
LT5jZlJlc3BvbnNlKCk7Ci0jZW5kaWYKLSAgICAKLSAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRS
ZWNlaXZlUmVzcG9uc2UoaGFuZGxlLCBjZlJlc3BvbnNlKTsKLX0KLQotI2lmIFVTRShORVRXT1JL
X0NGREFUQV9BUlJBWV9DQUxMQkFDSykKLXN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXko
Q0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGQXJyYXlSZWYgZGF0YUFycmF5LCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQotewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShjb25u
KTsKLSNlbmRpZgotICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNv
dXJjZUhhbmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLSAgICBpZiAoIWhh
bmRsZS0+Y2xpZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIExPRyhOZXR3b3JrLCAiQ0ZO
ZXQgLSBkaWRSZWNlaXZlRGF0YUFycmF5KGNvbm49JXAsIGhhbmRsZT0lcCwgYXJyYXlMZW5ndGg9
JWxkKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBDRkFycmF5R2V0Q291bnQoZGF0YUFycmF5KSwgaGFu
ZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotI2lm
IFVTRShRVUlDS19MT09LKQotICAgIGlmIChoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpICYmIGhh
bmRsZS0+cXVpY2tMb29rSGFuZGxlKCktPmRpZFJlY2VpdmVEYXRhQXJyYXkoZGF0YUFycmF5KSkK
LSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KLSAgICBoYW5kbGUtPmhhbmRsZURhdGFBcnJheShk
YXRhQXJyYXkpOwotfQotI2VuZGlmCi0KLXN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKENGVVJM
Q29ubmVjdGlvblJlZiBjb25uLCBDRkRhdGFSZWYgZGF0YSwgQ0ZJbmRleCBvcmlnaW5hbExlbmd0
aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxl
ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSk7Ci0KLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oY29ubik7Ci0jZWxz
ZQotICAgIENGSW5kZXggbGVuZ3RoID0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwotICAgIExPRyhO
ZXR3b3JrLCAiQ0ZOZXQgLSBkaWRSZWNlaXZlRGF0YShjb25uPSVwLCBoYW5kbGU9JXAsIGJ5dGVz
PSVsZCkgKCVzKSIsIGNvbm4sIGhhbmRsZSwgbGVuZ3RoLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgp
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotI2VuZGlmCi0KLSNpZiBVU0UoUVVJQ0tf
TE9PSykKLSAgICBpZiAoaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKSAmJiBoYW5kbGUtPnF1aWNr
TG9va0hhbmRsZSgpLT5kaWRSZWNlaXZlRGF0YShkYXRhKSkKLSAgICAgICAgcmV0dXJuOwotI2Vu
ZGlmCi0KLSAgICBpZiAoUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IGhhbmRsZS0+Y2xp
ZW50KCkpCi0gICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1
ZmZlcjo6d3JhcENGRGF0YShkYXRhKSwgb3JpZ2luYWxMZW5ndGgpOwotfQotCi1zdGF0aWMgdm9p
ZCBkaWRTZW5kQm9keURhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRkluZGV4LCBDRkluZGV4IHRv
dGFsQnl0ZXNXcml0dGVuLCBDRkluZGV4IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pCi17Ci0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRp
Y19jYXN0PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwot
ICAgIGlmICghaGFuZGxlIHx8ICFoYW5kbGUtPmNsaWVudCgpKQotICAgICAgICByZXR1cm47Ci0g
ICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkU2VuZERhdGEoaGFuZGxlLCB0b3RhbEJ5dGVzV3JpdHRl
biwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7Ci19Ci0KLXN0YXRpYyBCb29sZWFuIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BB
UkFNKGNvbm4pOwotI2VuZGlmCi0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IGNvbnN0X2Nh
c3Q8UmVzb3VyY2VIYW5kbGUqPihzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZUhhbmRsZSo+KGNs
aWVudEluZm8pKTsKLQotICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBzaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZShjb25uPSVwLCBoYW5kbGU9JXApICglcykiLCBjb25uLCBoYW5kbGUsIGhhbmRs
ZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBp
ZiAoIWhhbmRsZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGhhbmRsZS0+
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
LXsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oY29ubik7Ci0jZW5kaWYKLSAg
ICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0KLSAgICBMT0coTmV0d29yaywgIkNGTmV0
IC0gZGlkRmluaXNoTG9hZGluZyhjb25uPSVwLCBoYW5kbGU9JXApICglcykiLCBjb25uLCBoYW5k
bGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
Ci0KLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBpZiAoaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUo
KSAmJiBoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpLT5kaWRGaW5pc2hMb2FkaW5nKCkpCi0gICAg
ICAgIHJldHVybjsKLSNlbmRpZgotCi0gICAgaWYgKGhhbmRsZS0+Y2xpZW50KCkpCi0gICAgICAg
IGhhbmRsZS0+Y2xpZW50KCktPmRpZEZpbmlzaExvYWRpbmcoaGFuZGxlLCAwKTsKLX0KLQotc3Rh
dGljIHZvaWQgZGlkRmFpbChDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZFcnJvclJlZiBlcnJv
ciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVT
RURfUEFSQU0oY29ubik7Ci0jZW5kaWYKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3Rh
dGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7
Ci0KLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gZGlkRmFpbChjb25uPSVwLCBoYW5kbGU9JXAs
IGVycm9yID0gJXApICglcykiLCBjb25uLCBoYW5kbGUsIGVycm9yLCBoYW5kbGUtPmZpcnN0UmVx
dWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0jaWYgVVNFKFFVSUNLX0xP
T0spCi0gICAgaWYgKGhhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkpCi0gICAgICAgIGhhbmRsZS0+
cXVpY2tMb29rSGFuZGxlKCktPmRpZEZhaWwoKTsKLSNlbmRpZgotCi0gICAgaWYgKGhhbmRsZS0+
Y2xpZW50KCkpCi0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZEZhaWwoaGFuZGxlLCBSZXNv
dXJjZUVycm9yKGVycm9yKSk7Ci19Ci0KLXN0YXRpYyBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdp
bGxDYWNoZVJlc3BvbnNlKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
ZiBjYWNoZWRSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0KLSNpZiBQTEFURk9STShXSU4pCi0gICAgLy8gV29ya2Fy
b3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYzMDA5OTA+IENhY2hpbmcgZG9lcyBub3QgcmVzcGVj
dCBWYXJ5IEhUVFAgaGVhZGVyLgotICAgIC8vIEZJWE1FOiBXZWJDb3JlIGNhY2hlIGhhcyBpc3N1
ZXMgd2l0aCBWYXJ5LCB0b28gKGJ1ZyA1ODc5NywgYnVnIDcxNTA5KS4KLSAgICBDRlVSTFJlc3Bv
bnNlUmVmIHdyYXBwZWRSZXNwb25zZSA9IENGQ2FjaGVkVVJMUmVzcG9uc2VHZXRXcmFwcGVkUmVz
cG9uc2UoY2FjaGVkUmVzcG9uc2UpOwotICAgIGlmIChDRkhUVFBNZXNzYWdlUmVmIGh0dHBSZXNw
b25zZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2Uod3JhcHBlZFJlc3BvbnNlKSkgewot
ICAgICAgICBBU1NFUlQoQ0ZIVFRQTWVzc2FnZUlzSGVhZGVyQ29tcGxldGUoaHR0cFJlc3BvbnNl
KSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdmFyeVZhbHVlID0gYWRvcHRDRihD
RkhUVFBNZXNzYWdlQ29weUhlYWRlckZpZWxkVmFsdWUoaHR0cFJlc3BvbnNlLCBDRlNUUigiVmFy
eSIpKSk7Ci0gICAgICAgIGlmICh2YXJ5VmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQotCi0jaWYgUExBVEZPUk0oV0lOKQotICAgIGlm
IChoYW5kbGUtPmNsaWVudCgpICYmICFoYW5kbGUtPmNsaWVudCgpLT5zaG91bGRDYWNoZVJlc3Bv
bnNlKGhhbmRsZSwgY2FjaGVkUmVzcG9uc2UpKQotICAgICAgICByZXR1cm4gMDsKLSNlbHNlCi0g
ICAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBuZXdSZXNwb25zZSA9IGhhbmRsZS0+Y2xpZW50KCkt
PndpbGxDYWNoZVJlc3BvbnNlKGhhbmRsZSwgY2FjaGVkUmVzcG9uc2UpOwotICAgIGlmIChuZXdS
ZXNwb25zZSAhPSBjYWNoZWRSZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIG5ld1Jlc3BvbnNlOwot
I2VuZGlmCi0KLSAgICBDRlJldGFpbihjYWNoZWRSZXNwb25zZSk7Ci0KLSAgICByZXR1cm4gY2Fj
aGVkUmVzcG9uc2U7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoQ0ZVUkxD
b25uZWN0aW9uUmVmIGNvbm4sIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjaGFsbGVuZ2UsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFN
KGNvbm4pOwotI2VuZGlmCi0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0
PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAgIEFT
U0VSVChoYW5kbGUpOwotICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBkaWRSZWNlaXZlQ2hhbGxl
bmdlKGNvbm49JXAsIGhhbmRsZT0lcCAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0
UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgaGFuZGxlLT5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
Y2hhbGxlbmdlLCBoYW5kbGUpKTsKLX0KLQotI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhf
Q0FMTEJBQ0spCi1zdGF0aWMgQm9vbGVhbiBjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UoQ0ZV
UkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25T
cGFjZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBV
TlVTRURfUEFSQU0oY29ubik7Ci0jZW5kaWYKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0g
c3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSk7Ci0gICAgQVNTRVJUKGhhbmRsZSk7Ci0KLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gY2Fu
UmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKGNvbm49JXAsIGhhbmRsZT0lcCAoJXMpIiwgY29ubiwg
aGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIFByb3RlY3Rpb25TcGFjZSBjb3JlUHJvdGVj
dGlvblNwYWNlID0gY29yZShwcm90ZWN0aW9uU3BhY2UpOwotICAgIGlmIChjb3JlUHJvdGVjdGlv
blNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgPT0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGlj
YXRpb25TY2hlbWVVbmtub3duKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGhh
bmRsZS0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlUHJvdGVjdGlv
blNwYWNlKTsKLSNlbHNlCi0gICAgcmV0dXJuIGhhbmRsZS0+Y2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZShjb3JlKHByb3RlY3Rpb25TcGFjZSkpOwotI2VuZGlmCi19Ci0jZW5k
aWYKLQogUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSW50ZXJuYWwoKQog
ewogICAgIGlmIChtX2Nvbm5lY3Rpb24pIHsKQEAgLTQ3Nyw5ICsxOTUsNiBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZSwgYm9vbAogICAgIH0KICNlbmRpZgogCi0gICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50
X1Y2IGNsaWVudCA9ICpSZXNvdXJjZUhhbmRsZTo6Y29ubmVjdGlvbkNsaWVudENhbGxiYWNrcygp
OwotICAgIGNsaWVudC5jbGllbnRJbmZvID0gdGhpczsKLQogICAgIENGTXV0YWJsZURpY3Rpb25h
cnlSZWYgc3RyZWFtUHJvcGVydGllcyAgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAs
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpOwogICAgIGlmICghc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCiAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHN0cmVhbVByb3BlcnRpZXMsIENGU1RSKCJfa0NGVVJMQ29u
bmVjdGlvblNlc3Npb25JRCIpLCBDRlNUUigiV2ViS2l0UHJpdmF0ZVNlc3Npb24iKSk7CkBAIC01
MDIsNiArMjE3LDEwIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlv
bihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sCiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFN0YXJ0U3luY2hyb25vdXNseShyZXF1ZXN0Lmdl
dCgpLCAxKTsKICNlbmRpZgorCisgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUgPSBhZG9wdFJl
ZihuZXcgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKHRo
aXMpKTsKKyAgICBDRlVSTENvbm5lY3Rpb25DbGllbnRfVjYgY2xpZW50ID0gZC0+bV9jb25uZWN0
aW9uRGVsZWdhdGUtPm1ha2VDb25uZWN0aW9uQ2xpZW50KCk7CisKICAgICBkLT5tX2Nvbm5lY3Rp
b24gPSBhZG9wdENGKENGVVJMQ29ubmVjdGlvbkNyZWF0ZVdpdGhQcm9wZXJ0aWVzKDAsIHJlcXVl
c3QuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxDb25uZWN0aW9uQ2xpZW50Kj4oJmNsaWVu
dCksIHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpKSk7CiB9CiAKQEAgLTg3NywyNCArNTk2LDQg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6aGFuZGxlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFy
cmF5KQogfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZVUkxDb25uZWN0aW9uQ2xp
ZW50X1Y2KiBSZXNvdXJjZUhhbmRsZTo6Y29ubmVjdGlvbkNsaWVudENhbGxiYWNrcygpCi17Ci0g
ICAgc3RhdGljIENGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiBjbGllbnQgPSB7IDYsIDAsIDAsIDAs
IDAsIFdlYkNvcmU6OndpbGxTZW5kUmVxdWVzdCwgZGlkUmVjZWl2ZVJlc3BvbnNlLCBkaWRSZWNl
aXZlRGF0YSwgMCwgZGlkRmluaXNoTG9hZGluZywgZGlkRmFpbCwgd2lsbENhY2hlUmVzcG9uc2Us
IGRpZFJlY2VpdmVDaGFsbGVuZ2UsIGRpZFNlbmRCb2R5RGF0YSwgc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2VDYWxsYmFjaywgMCwKLSNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExC
QUNLKQotICAgICAgICBjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UsCi0jZWxzZQotICAgICAg
ICAwLAotI2VuZGlmCi0gICAgICAgIDAsCi0jaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NB
TExCQUNLKQotICAgICAgICBkaWRSZWNlaXZlRGF0YUFycmF5Ci0jZWxzZQotICAgICAgICAwCi0j
ZW5kaWYKLSAgICB9OwotICAgIHJldHVybiAmY2xpZW50OwotfQotI2VuZGlmIC8vIFVTRShRVUlD
S19MT09LKSAmJiBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kODgzZDMwNDAxYWVjOGI1YjY2YzM0NTk5Y2E0YjI2ZDNjYzFiZTllCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNC0yMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUuaCIKKworI2lmIFVTRShDRk5FVFdPUkspCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQor
ICAgIDogbV9oYW5kbGUoaGFuZGxlKQoreworfQorUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZTo6flJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoKQorewor
fQorCitDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZTo6d2lsbFNlbmRSZXF1ZXN0KENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxSZXF1ZXN0UmVmIGNm
UmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiBvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSktPndpbGxTZW5kUmVxdWVzdChjZlJlcXVlc3QsIG9yaWdpbmFsUmVkaXJlY3RSZXNwb25zZSk7
Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3Bv
bnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSktPmRpZFJlY2VpdmVSZXNwb25zZShjZlJlc3BvbnNlKTsKK30KKwordm9pZCBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YShDRlVSTENvbm5l
Y3Rpb25SZWYsIENGRGF0YVJlZiBkYXRhLCBDRkluZGV4IG9yaWdpbmFsTGVuZ3RoLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJl
Y2VpdmVEYXRhKGRhdGEsIG9yaWdpbmFsTGVuZ3RoKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKENGVVJMQ29ubmVjdGlv
blJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2FzdDxSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpLT5kaWRGaW5pc2hMb2FkaW5nKCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkRmFpbChDRlVSTENvbm5lY3Rpb25SZWYsIENGRXJyb3JS
ZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8UmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNs
aWVudEluZm8pKS0+ZGlkRmFpbChlcnJvcik7Cit9CisKK0NGQ2FjaGVkVVJMUmVzcG9uc2VSZWYg
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbENhY2hlUmVzcG9uc2Uo
Q0ZVUkxDb25uZWN0aW9uUmVmLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNl
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT53aWxsQ2FjaGVSZXNwb25zZShjYWNoZWRSZXNwb25zZSk7Cit9CisKK3ZvaWQg
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5n
ZShDRlVSTENvbm5lY3Rpb25SZWYsIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjaGFsbGVuZ2UsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+
ZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2UpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFNlbmRCb2R5RGF0YShDRlVSTENvbm5lY3Rpb25S
ZWYsIENGSW5kZXgsIENGSW5kZXggdG90YWxCeXRlc1dyaXR0ZW4sIENGSW5kZXggdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNf
Y2FzdDxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpLT5kaWRTZW5kQm9keURhdGEodG90YWxCeXRlc1dyaXR0ZW4sIHRv
dGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOworfQorCitCb29sZWFuIFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2so
Q0ZVUkxDb25uZWN0aW9uUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUNh
bGxiYWNrKCk7CisKK30KKworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sp
CitCb29sZWFuIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3Bv
bmRUb1Byb3RlY3Rpb25TcGFjZShDRlVSTENvbm5lY3Rpb25SZWYsIENGVVJMUHJvdGVjdGlvblNw
YWNlUmVmIHByb3RlY3Rpb25TcGFjZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSo+
KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNw
YWNlKHByb3RlY3Rpb25TcGFjZSk7Cit9CisjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0Vf
QVVUSF9DQUxMQkFDSykKKworI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykK
K3ZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURh
dGFBcnJheShDRlVSTENvbm5lY3Rpb25SZWYsIENGQXJyYXlSZWYgZGF0YUFycmF5LCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJl
Y2VpdmVEYXRhQXJyYXkoZGF0YUFycmF5KTsKK30KKyNlbmRpZiAvLyBVU0UoTkVUV09SS19DRkRB
VEFfQVJSQVlfQ0FMTEJBQ0spCisKK0NGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiBSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjptYWtlQ29ubmVjdGlvbkNsaWVudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHsgNiwgdGhpcywgMCwgMCwgMCwKKyAgICAgICAgUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1ZXN0LAorICAgICAgICBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UsCisg
ICAgICAgIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVE
YXRhLAorICAgICAgICAwLAorICAgICAgICBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nLAorICAgICAgICBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlOjpkaWRGYWlsLAorICAgICAgICBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlOjp3aWxsQ2FjaGVSZXNwb25zZSwKKyAgICAgICAgUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSwKKyAgICAgICAg
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkU2VuZEJvZHlEYXRhLAor
ICAgICAgICBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpzaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZUNhbGxiYWNrLAorICAgICAgICAwLAorI2lmIFVTRShQUk9URUNUSU9O
X1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAgICAgIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZSwKKyNlbHNlCisgICAgICAg
IDAsCisjZW5kaWYKKyAgICAgICAgMCwKKyNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FM
TEJBQ0spCisgICAgICAgIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRp
ZFJlY2VpdmVEYXRhQXJyYXkKKyNlbHNlCisgICAgICAgIDAKKyNlbmRpZgorICAgIH07Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCisKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MTJlMGU3MzlkOWU5MWEyODgxZjk0MDY4MGUwM2Q2NWQzN2U0YTdjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNC0yMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKKyNkZWZpbmUg
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9oCisKKyNpZiBVU0UoQ0ZORVRX
T1JLKQorCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBSZXNvdXJjZUhhbmRsZTsKKworY2xhc3MgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7CitwdWJsaWM6CisgICAgUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZShSZXNvdXJjZUhhbmRsZSopOworICAgIHZpcnR1YWwgflJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoKTsKKworICAgIENGVVJMQ29ubmVj
dGlvbkNsaWVudF9WNiBtYWtlQ29ubmVjdGlvbkNsaWVudCgpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIHN0YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMQ29ubmVjdGlv
blJlZiwgQ0ZVUkxSZXF1ZXN0UmVmLCBDRlVSTFJlc3BvbnNlUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoQ0ZVUkxDb25uZWN0
aW9uUmVmLCBDRlVSTFJlc3BvbnNlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBz
dGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShDRlVSTENvbm5lY3Rpb25SZWYsIENGRGF0YVJlZiwg
Q0ZJbmRleCBvcmlnaW5hbExlbmd0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3Rh
dGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhDRlVSTENvbm5lY3Rpb25SZWYsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZEZhaWwoQ0ZVUkxDb25uZWN0aW9uUmVm
LCBDRkVycm9yUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShDRlVSTENvbm5lY3Rpb25SZWYsIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRlVSTEF1dGhD
aGFsbGVuZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRp
ZFNlbmRCb2R5RGF0YShDRlVSTENvbm5lY3Rpb25SZWYsIENGSW5kZXgsIENGSW5kZXggdG90YWxC
eXRlc1dyaXR0ZW4sIENGSW5kZXggdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbyk7CisgICAgc3RhdGljIEJvb2xlYW4gc2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2VDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAgc3RhdGljIEJv
b2xlYW4gY2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZV
UkxQcm90ZWN0aW9uU3BhY2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworI2VuZGlmIC8v
IFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisjaWYgVVNFKE5FVFdPUktfQ0ZE
QVRBX0FSUkFZX0NBTExCQUNLKQorICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXko
Q0ZVUkxDb25uZWN0aW9uUmVmLCBDRkFycmF5UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
KyNlbmRpZiAvLyBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisKKyAgICB2aXJ0
dWFsIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmLCBDRlVS
TFJlc3BvbnNlUmVmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShD
RlVSTFJlc3BvbnNlUmVmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKENG
RGF0YVJlZiwgQ0ZJbmRleCBvcmlnaW5hbExlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKENGRXJyb3JS
ZWYpID0gMDsKKyAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVz
cG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kQm9keURhdGEoQ0ZJbmRleCB0b3RhbEJ5dGVzV3JpdHRlbiwgQ0ZJbmRleCB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSA9IDA7CisgICAgdmlydHVhbCBCb29sZWFuIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2soKSA9IDA7CisjaWYgVVNFKFBST1RFQ1RJT05f
U1BBQ0VfQVVUSF9DQUxMQkFDSykKKyAgICB2aXJ0dWFsIEJvb2xlYW4gY2FuUmVzcG9uZFRvUHJv
dGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKSA9IDA7CisjZW5kaWYgLy8gVVNF
KFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKyNpZiBVU0UoTkVUV09SS19DRkRBVEFf
QVJSQVlfQ0FMTEJBQ0spCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZB
cnJheVJlZiBkYXRhQXJyYXkpID0gMDsKKyNlbmRpZiAvLyBVU0UoTkVUV09SS19DRkRBVEFfQVJS
QVlfQ0FMTEJBQ0spCisKK3Byb3RlY3RlZDoKKyAgICBSZXNvdXJjZUhhbmRsZSogbV9oYW5kbGU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgorCisjZW5kaWYgLy8gVVNFKENGTkVUV09S
SykKKworI2VuZGlmIC8vIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZDEwNjkwODAyOTU4YTBhOTgzYjY5ZTFm
MGIzMmYxMjJmZjA0MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZS5jcHAKQEAgLTAsMCArMSwyOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAx
MyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGUuaCIKKworI2lmIFVTRShDRk5FVFdPUkspCisKKyNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbkNGLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKyNpbmNsdWRl
ICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5o
IgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKKyNpbmNsdWRlICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIldlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N5bmNocm9u
b3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6U3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUp
CisgICAgOiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKGhhbmRsZSkKK3sK
K30KKworc3RhdGljIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiBzeW50aGVzaXplUmVkaXJl
Y3RSZXNwb25zZUlmTmVjZXNzYXJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVl
c3QsIENGVVJMUmVxdWVzdFJlZiBuZXdSZXF1ZXN0LCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVkaXJl
Y3RSZXNwb25zZSkKK3sKKyAgICBpZiAoY2ZSZWRpcmVjdFJlc3BvbnNlKQorICAgICAgICByZXR1
cm4gY2ZSZWRpcmVjdFJlc3BvbnNlOworCisgICAgQ0ZVUkxSZWYgbmV3VVJMID0gQ0ZVUkxSZXF1
ZXN0R2V0VVJMKG5ld1JlcXVlc3QpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmV3U2No
ZW1lID0gYWRvcHRDRihDRlVSTENvcHlTY2hlbWUobmV3VVJMKSk7CisKKyAgICAvLyBJZiB0aGUg
cHJvdG9jb2xzIG9mIHRoZSBuZXcgcmVxdWVzdCBhbmQgdGhlIGN1cnJlbnQgcmVxdWVzdCBtYXRj
aCwgdGhpcyBpcyBub3QgYW4gSFNUUyByZWRpcmVjdCBhbmQgd2Ugc2hvdWxkbid0IHN5bnRoZXNp
emUgYSByZWRpcmVjdCByZXNwb25zZS4KKyAgICBpZiAoY3VycmVudFJlcXVlc3QudXJsKCkucHJv
dG9jb2woKSA9PSBTdHJpbmcobmV3U2NoZW1lLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGN1cnJlbnRVUkwgPSBjdXJyZW50UmVxdWVzdC51cmwo
KS5jcmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0cjxDRkhUVFBNZXNzYWdlUmVmPiByZXNwb25z
ZU1lc3NhZ2UgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDcmVhdGVSZXNwb25zZSgwLCAzMDIsIDAs
IGtDRkhUVFBWZXJzaW9uMV8xKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBuZXdBYnNvbHV0
ZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDb3B5QWJzb2x1dGVVUkwobmV3VVJMKSk7CisgICAgQ0ZIVFRQ
TWVzc2FnZVNldEhlYWRlckZpZWxkVmFsdWUocmVzcG9uc2VNZXNzYWdlLmdldCgpLCBDRlNUUigi
TG9jYXRpb24iKSwgQ0ZVUkxHZXRTdHJpbmcobmV3QWJzb2x1dGVVUkwuZ2V0KCkpKTsKKyAgICBD
RkhUVFBNZXNzYWdlU2V0SGVhZGVyRmllbGRWYWx1ZShyZXNwb25zZU1lc3NhZ2UuZ2V0KCksIENG
U1RSKCJDYWNoZS1Db250cm9sIiksIENGU1RSKCJuby1zdG9yZSIpKTsKKworICAgIFJldGFpblB0
cjxDRlVSTFJlc3BvbnNlUmVmPiBuZXdSZXNwb25zZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNy
ZWF0ZVdpdGhIVFRQUmVzcG9uc2UoMCwgY3VycmVudFVSTC5nZXQoKSwgcmVzcG9uc2VNZXNzYWdl
LmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkKSk7CisgICAgcmV0dXJuIG5ld1Jl
c3BvbnNlOworfQorCitDRlVSTFJlcXVlc3RSZWYgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmIGNm
UmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiBvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UpCit7Cisg
ICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHJlZGlyZWN0UmVzcG9uc2UgPSBzeW50aGVz
aXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KG1faGFuZGxlLT5jdXJyZW50UmVxdWVzdCgp
LCBjZlJlcXVlc3QsIG9yaWdpbmFsUmVkaXJlY3RSZXNwb25zZSk7CisKKyAgICBpZiAoIXJlZGly
ZWN0UmVzcG9uc2UpIHsKKyAgICAgICAgQ0ZSZXRhaW4oY2ZSZXF1ZXN0KTsKKyAgICAgICAgcmV0
dXJuIGNmUmVxdWVzdDsKKyAgICB9CisKKyAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsU2VuZFJlcXVl
c3QoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0OworICAgIENGSFRUUE1lc3NhZ2VSZWYgaHR0cE1lc3NhZ2UgPSBDRlVSTFJlc3BvbnNlR2V0
SFRUUFJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOworICAgIGlmIChodHRwTWVzc2Fn
ZSAmJiBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0dHBNZXNzYWdlKSA9PSAz
MDcpIHsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYXN0SFRUUE1ldGhvZCA9IG1f
aGFuZGxlLT5sYXN0SFRUUE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gbmV3TWV0aG9kID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRU
UFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0KSk7CisgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmVX
aXRoT3B0aW9ucyhsYXN0SFRUUE1ldGhvZC5nZXQoKSwgbmV3TWV0aG9kLmdldCgpLCBDRlJhbmdl
TWFrZSgwLCBDRlN0cmluZ0dldExlbmd0aChsYXN0SFRUUE1ldGhvZC5nZXQoKSkpLCBrQ0ZDb21w
YXJlQ2FzZUluc2Vuc2l0aXZlKSkgeworICAgICAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZVVS
TFJlcXVlc3RSZWY+IG11dGFibGVSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDcmVhdGVN
dXRhYmxlQ29weSgwLCBjZlJlcXVlc3QpKTsKKyAgICAgICAgICAgIHdrU2V0UmVxdWVzdFN0b3Jh
Z2VTZXNzaW9uKG1faGFuZGxlLT5zdG9yYWdlU2Vzc2lvbigpLCBtdXRhYmxlUmVxdWVzdC5nZXQo
KSk7CisgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdE1ldGhvZChtdXRhYmxl
UmVxdWVzdC5nZXQoKSwgbGFzdEhUVFBNZXRob2QuZ2V0KCkpOworCisgICAgICAgICAgICBGb3Jt
RGF0YSogYm9keSA9IG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwQm9keSgpOworICAgICAg
ICAgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0
cE1ldGhvZCgpLCAiR0VUIikgJiYgYm9keSAmJiAhYm9keS0+aXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgIFdlYkNvcmU6OnNldEhUVFBCb2R5KG11dGFibGVSZXF1ZXN0LmdldCgpLCBib2R5KTsK
KworICAgICAgICAgICAgU3RyaW5nIG9yaWdpbmFsQ29udGVudFR5cGUgPSBtX2hhbmRsZS0+Zmly
c3RSZXF1ZXN0KCkuaHR0cENvbnRlbnRUeXBlKCk7CisgICAgICAgICAgICBpZiAoIW9yaWdpbmFs
Q29udGVudFR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhU
VFBIZWFkZXJGaWVsZFZhbHVlKG11dGFibGVSZXF1ZXN0LmdldCgpLCBDRlNUUigiQ29udGVudC1U
eXBlIiksIG9yaWdpbmFsQ29udGVudFR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisKKyAg
ICAgICAgICAgIHJlcXVlc3QgPSBtdXRhYmxlUmVxdWVzdC5nZXQoKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBpZiAocmVxdWVzdC5pc051bGwoKSkKKyAgICAgICAgcmVxdWVzdCA9IGNmUmVxdWVz
dDsKKworICAgIC8vIFNob3VsZCBub3Qgc2V0IFJlZmVyZXIgYWZ0ZXIgYSByZWRpcmVjdCBmcm9t
IGEgc2VjdXJlIHJlc291cmNlIHRvIG5vbi1zZWN1cmUgb25lLgorICAgIGlmICghcmVxdWVzdC51
cmwoKS5wcm90b2NvbElzKCJodHRwcyIpICYmIHByb3RvY29sSXMocmVxdWVzdC5odHRwUmVmZXJy
ZXIoKSwgImh0dHBzIikgJiYgbV9oYW5kbGUtPmNvbnRleHQoKS0+c2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpKQorICAgICAgICByZXF1ZXN0LmNsZWFySFRUUFJlZmVy
cmVyKCk7CisKKyAgICBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0
UmVzcG9uc2UuZ2V0KCkpOworCisgICAgaWYgKHJlcXVlc3QuaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgY2ZSZXF1ZXN0ID0gcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRU
UEJvZHkpOworCisgICAgQ0ZSZXRhaW4oY2ZSZXF1ZXN0KTsKKyAgICByZXR1cm4gY2ZSZXF1ZXN0
OworfQorCit2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKK3sK
KyAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxlPSVwKSAoJXMpIiwg
bV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKworICAgIGlmICghbV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAgICByZXR1cm47
CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgLy8gQXZvaWQgTUlNRSB0eXBlIHNuaWZmaW5nIGlm
IHRoZSByZXNwb25zZSBjb21lcyBiYWNrIGFzIDMwNCBOb3QgTW9kaWZpZWQuCisgICAgQ0ZIVFRQ
TWVzc2FnZVJlZiBtc2cgPSB3a0dldENGVVJMUmVzcG9uc2VIVFRQUmVzcG9uc2UoY2ZSZXNwb25z
ZSk7CisgICAgaW50IHN0YXR1c0NvZGUgPSBtc2cgPyBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VT
dGF0dXNDb2RlKG1zZykgOiAwOworCisgICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0KQorICAgICAg
ICBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KGNmUmVzcG9uc2UpOworCisjaWYgIVBMQVRGT1JN
KElPUykKKyAgICBpZiAoX0NGVVJMUmVxdWVzdENvcHlQcm90b2NvbFByb3BlcnR5Rm9yS2V5KG1f
aGFuZGxlLT5maXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSks
IENGU1RSKCJGb3JjZUhUTUxNSU1FVHlwZSIpKSkKKyAgICAgICAgd2tTZXRDRlVSTFJlc3BvbnNl
TUlNRVR5cGUoY2ZSZXNwb25zZSwgQ0ZTVFIoInRleHQvaHRtbCIpKTsKKyNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TKQorI2Vsc2UKKyAgICBpZiAoIUNGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShjZlJl
c3BvbnNlKSkgeworICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUgYXBwbHlpbmcgdGhlIGRl
ZmF1bHQgTUlNRVR5cGUgaWYgd2UgdG9sZCB0aGUgbmV0d29ya2luZyBsYXllciB0byBkbyBjb250
ZW50IHNuaWZmaW5nIGZvciBoYW5kbGUuCisgICAgICAgIEFTU0VSVCghbV9oYW5kbGUtPnNob3Vs
ZENvbnRlbnRTbmlmZigpKTsKKyAgICAgICAgc2V0RGVmYXVsdE1JTUVUeXBlKGNmUmVzcG9uc2Up
OworICAgIH0KKyNlbmRpZgorCisjaWYgVVNFKFFVSUNLX0xPT0spCisgICAgbV9oYW5kbGUtPnNl
dFF1aWNrTG9va0hhbmRsZShRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShtX2hhbmRsZSwgdGhpcywg
Y2ZSZXNwb25zZSkpOworICAgIGlmIChtX2hhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkpCisgICAg
ICAgIGNmUmVzcG9uc2UgPSBtX2hhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCktPmNmUmVzcG9uc2Uo
KTsKKyNlbmRpZgorCisgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
bV9oYW5kbGUsIGNmUmVzcG9uc2UpOworfQorCit2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZEYXRhUmVmIGRhdGEs
IENGSW5kZXggb3JpZ2luYWxMZW5ndGgpCit7CisgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5
bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2
ZURhdGEoaGFuZGxlPSVwLCBieXRlcz0lbGQpICglcykiLCBtX2hhbmRsZSwgQ0ZEYXRhR2V0TGVu
Z3RoKGRhdGEpLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBpZiAobV9oYW5kbGUtPnF1aWNr
TG9va0hhbmRsZSgpICYmIG1faGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+ZGlkUmVjZWl2ZURh
dGEoZGF0YSkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgaWYgKFJlc291cmNlSGFu
ZGxlQ2xpZW50KiBjbGllbnQgPSBtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+
ZGlkUmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKGRhdGEp
LCBvcmlnaW5hbExlbmd0aCk7Cit9CisKK3ZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKCkKK3sKKyAgICBMT0coTmV0
d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKGhhbmRsZT0lcCkgKCVzKSIsIG1faGFuZGxlLCBtX2hh
bmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyNp
ZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBpZiAobV9oYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpICYm
IG1faGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+ZGlkRmluaXNoTG9hZGluZygpKQorICAgICAg
ICByZXR1cm47CisjZW5kaWYKKworICAgIGlmIChSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50
ID0gbV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmRpZEZpbmlzaExvYWRpbmco
bV9oYW5kbGUsIDApOworfQorCit2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkRmFpbChDRkVycm9yUmVmIGVycm9yKQoreworICAgIExPRyhO
ZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGU6OmRpZEZhaWwoaGFuZGxlPSVwLCBlcnJvciA9ICVwKSAoJXMpIiwgbV9oYW5kbGUs
IGVycm9yLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBpZiAoUXVpY2tMb29rSGFuZGxlKiBx
dWlja0xvb2tIYW5kbGUgPSBtX2hhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkpCisgICAgICAgIHF1
aWNrTG9va0hhbmRsZS0+ZGlkRmFpbCgpOworI2VuZGlmCisKKyAgICBpZiAoUmVzb3VyY2VIYW5k
bGVDbGllbnQqIGNsaWVudCA9IG1faGFuZGxlLT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5k
aWRGYWlsKG1faGFuZGxlLCBSZXNvdXJjZUVycm9yKGVycm9yKSk7Cit9CisKK0NGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlOjp3aWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3Bv
bnNlKQoreworI2lmIFBMQVRGT1JNKFdJTikKKyAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjov
L3Byb2JsZW0vNjMwMDk5MD4gQ2FjaGluZyBkb2VzIG5vdCByZXNwZWN0IFZhcnkgSFRUUCBoZWFk
ZXIuCisgICAgLy8gRklYTUU6IFdlYkNvcmUgY2FjaGUgaGFzIGlzc3VlcyB3aXRoIFZhcnksIHRv
byAoYnVnIDU4Nzk3LCBidWcgNzE1MDkpLgorICAgIENGVVJMUmVzcG9uc2VSZWYgd3JhcHBlZFJl
c3BvbnNlID0gQ0ZDYWNoZWRVUkxSZXNwb25zZUdldFdyYXBwZWRSZXNwb25zZShjYWNoZWRSZXNw
b25zZSk7CisgICAgaWYgKENGSFRUUE1lc3NhZ2VSZWYgaHR0cFJlc3BvbnNlID0gQ0ZVUkxSZXNw
b25zZUdldEhUVFBSZXNwb25zZSh3cmFwcGVkUmVzcG9uc2UpKSB7CisgICAgICAgIEFTU0VSVChD
RkhUVFBNZXNzYWdlSXNIZWFkZXJDb21wbGV0ZShodHRwUmVzcG9uc2UpKTsKKyAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiB2YXJ5VmFsdWUgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5
SGVhZGVyRmllbGRWYWx1ZShodHRwUmVzcG9uc2UsIENGU1RSKCJWYXJ5IikpKTsKKyAgICAgICAg
aWYgKHZhcnlWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyNlbmRpZiAvLyBQ
TEFURk9STShXSU4pCisKKyNpZiBQTEFURk9STShXSU4pCisgICAgaWYgKG1faGFuZGxlLT5jbGll
bnQoKSAmJiAhbV9oYW5kbGUtPmNsaWVudCgpLT5zaG91bGRDYWNoZVJlc3BvbnNlKG1faGFuZGxl
LCBjYWNoZWRSZXNwb25zZSkpCisgICAgICAgIHJldHVybiAwOworI2Vsc2UKKyAgICBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmIG5ld1Jlc3BvbnNlID0gbV9oYW5kbGUtPmNsaWVudCgpLT53aWxsQ2Fj
aGVSZXNwb25zZShtX2hhbmRsZSwgY2FjaGVkUmVzcG9uc2UpOworICAgIGlmIChuZXdSZXNwb25z
ZSAhPSBjYWNoZWRSZXNwb25zZSkKKyAgICAgICAgcmV0dXJuIG5ld1Jlc3BvbnNlOworI2VuZGlm
CisKKyAgICBDRlJldGFpbihjYWNoZWRSZXNwb25zZSk7CisgICAgcmV0dXJuIGNhY2hlZFJlc3Bv
bnNlOworfQorCit2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2hhbGxl
bmdlKQoreworICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoaGFuZGxlPSVw
ICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworCisgICAgbV9oYW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UsIG1faGFuZGxlKSk7
Cit9CisKK3ZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlOjpkaWRTZW5kQm9keURhdGEoQ0ZJbmRleCB0b3RhbEJ5dGVzV3JpdHRlbiwgQ0ZJbmRleCB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQoreworICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFu
ZGxlLT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faGFuZGxlLT5jbGllbnQoKS0+
ZGlkU2VuZERhdGEobV9oYW5kbGUsIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlKTsKK30KKworQm9vbGVhbiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2soKQor
eworICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKGhhbmRsZT0l
cCkgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBpZiAoIW1faGFuZGxlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gbV9oYW5kbGUtPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KCk7Cit9CisKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorQm9vbGVh
biBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJl
c3BvbmRUb1Byb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9u
U3BhY2UpCit7CisgICAgQVNTRVJUKG1faGFuZGxlKTsKKworICAgIExPRyhOZXR3b3JrLCAiQ0ZO
ZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNh
blJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZShoYW5kbGU9JXAgKCVzKSIsIG1faGFuZGxlLCBtX2hh
bmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgUHJvdGVjdGlvblNwYWNlIGNvcmVQcm90ZWN0aW9uU3BhY2Ug
PSBjb3JlKHByb3RlY3Rpb25TcGFjZSk7CisgICAgaWYgKGNvcmVQcm90ZWN0aW9uU3BhY2UuYXV0
aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVt
ZVVua25vd24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9oYW5kbGUtPmNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29yZVByb3RlY3Rpb25TcGFjZSk7
CisjZWxzZQorICAgIHJldHVybiBtX2hhbmRsZS0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZShjb3JlKHByb3RlY3Rpb25TcGFjZSkpOworI2VuZGlmCit9CisjZW5kaWYgLy8g
VVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKworI2lmIFVTRShORVRXT1JLX0NG
REFUQV9BUlJBWV9DQUxMQkFDSykKK3ZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFy
cmF5KQoreworICAgIGlmICghbV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YUFycmF5KGhhbmRsZT0lcCwgYXJyYXlM
ZW5ndGg9JWxkKSAoJXMpIiwgbV9oYW5kbGUsIENGQXJyYXlHZXRDb3VudChkYXRhQXJyYXkpLCBt
X2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisK
KyNpZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBpZiAobV9oYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgp
ICYmIG1faGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+ZGlkUmVjZWl2ZURhdGFBcnJheShkYXRh
QXJyYXkpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAgIG1faGFuZGxlLT5oYW5kbGVE
YXRhQXJyYXkoZGF0YUFycmF5KTsKK30KKyNlbmRpZiAvLyBVU0UoTkVUV09SS19DRkRBVEFfQVJS
QVlfQ0FMTEJBQ0spCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU2ZGE4ZWEyNjczNGE3ZWMxYTE2MzgwYWY0MjI0MGQ1NTUy
N2Y0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDEzIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAorI2RlZmluZSBTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAorCisjaWYgVVNFKENGTkVUV09SSykK
KworI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUgRklOQUwgOiBwdWJsaWMgUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKFJlc291cmNlSGFuZGxlKik7CisKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoQ0ZEYXRhUmVmLCBDRkluZGV4IG9yaWdpbmFsTGVuZ3RoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKENGRXJyb3JSZWYpIE9WRVJSSURFOworI2lmIFVTRShO
RVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkgT1ZFUlJJREU7CisjZW5kaWYgLy8gVVNF
KE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorCisKK3ByaXZhdGU6CisgICAgdmlydHVh
bCBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiwgQ0ZVUkxS
ZXNwb25zZVJlZikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShDRlVSTFJlc3BvbnNlUmVmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxl
bmdlUmVmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZEJvZHlEYXRhKENGSW5k
ZXggdG90YWxCeXRlc1dyaXR0ZW4sIENGSW5kZXggdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBCb29sZWFuIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
Q2FsbGJhY2soKSBPVkVSUklERTsKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExC
QUNLKQorICAgIHZpcnR1YWwgQm9vbGVhbiBjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UoQ0ZV
UkxQcm90ZWN0aW9uU3BhY2VSZWYpIE9WRVJSSURFOworI2VuZGlmIC8vIFVTRShQUk9URUNUSU9O
X1NQQUNFX0FVVEhfQ0FMTEJBQ0spCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgorCisj
ZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKworI2VuZGlmIC8vIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218652</attachid>
            <date>2013-12-06 22:57:05 -0800</date>
            <delta_ts>2013-12-08 21:57:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125379-20131206225703.patch</filename>
            <type>text/plain</type>
            <size>70027</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTgwNDNmODU3ZmY0M2E1
MTgwZTVjZmRkZGM4ZGM4NTA5Mjk1ZGUzNC4uMDEwODE4MWJkNTljN2FmOTA0ZWY1ZmVhMmRlZjQ3
N2M5M2MzODIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTEyLTA2ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHRo
ZSBDRlVSTENvbm5lY3Rpb25DbGllbnQgdG8gYmUgdGhlIHN5bmNocm9ub3VzIGltcGxlbWVudGF0
aW9uIG9mIGFuIGFic3RyYWN0IG5ldHdvcmsgZGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTM3OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
OjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6On5SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRGYWls
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGU6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkU2VuZEJv
ZHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6Y2FuUmVzcG9u
ZFRvUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6bWFrZUNvbm5lY3Rp
b25DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c3ludGhlc2l6ZVJlZGlyZWN0UmVz
cG9uc2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZEZhaWwpOgorICAgICAg
ICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlOjp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVDaGFsbGVuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlOjpkaWRTZW5kQm9keURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlv
blNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJheSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGUuaDogQWRkZWQuCisKIDIwMTMtMTItMDYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY10gS2VlcCBhcm91bmQgbW9yZSBkZWNvZGVk
IGltYWdlIGRhdGEsIHNpbmNlIGl0J3MgcHVyZ2VhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCBhM2Y4MDk3YWVlNTdjYzFmY2IwYWEy
OGMyZGM1YTYyYmFlYTgxZTlkLi4yMjc2MTkwOTQ1ODJlNmMxNzBmOWUwNjk3ZDg4ZWQwYzNjZjUz
ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKQEAgLTgyNzcsNiArODI3NywxMiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5D
YWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fp
cm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dp
bkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0Ns
Q29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2Zc
UmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWly
b3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTgzMDEsNiArODMwNywxMiBAQAog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXG5ldHdvcmtcY2ZcU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJv
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1x3aW5cRG93bmxvYWRCdW5kbGVX
aW4uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1x3
aW5cTmV0d29ya1N0YXRlTm90aWZpZXJXaW4uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXENvb2tpZUphckN1cmwuY3BwIj4KQEAgLTE5NTAz
LDExICsxOTUxNSwxMyBAQAogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cbmV0d29ya1xjZlxGb3JtRGF0YVN0cmVhbUNGTmV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXExvYWRlclJ1bkxvb3BDRi5oIiAvPgogICAg
IDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxSZXNvdXJj
ZUVycm9yLmgiIC8+CisgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxu
ZXR3b3JrXGNmXFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIgLz4KICAg
ICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3Vy
Y2VSZXF1ZXN0LmgiIC8+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxuZXR3b3JrXGNmXFJlc291cmNlUmVxdWVzdENGTmV0LmgiIC8+CiAgICAgPEN1c3RvbUJ1aWxk
U3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlUmVzcG9uc2UuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcU29ja2V0
U3RyZWFtRXJyb3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5l
dHdvcmtcY2ZcU29ja2V0U3RyZWFtSGFuZGxlLmgiIC8+CisgICAgPEN1c3RvbUJ1aWxkU3RlcCBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIiAvPgogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiPgog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmlu
ZGV4IGYwYjAyNjYwMjQ0MmRkZGQwMWZhMDEyODBlMTY2NmNkZTQ3ZTYxMjEuLmVlMjU4MGYwM2Ji
MzlkOTZlN2NhODg3NGYwZTAyMzlhNjcyOThiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTE4ODEsNiAr
MTg4MSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNm
XFJlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29y
a1xjZjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cbmV0d29ya1xjZlxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlLmNwcCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY2Y8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdv
cmtcY2ZcUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1c
bmV0d29ya1xjZjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTg5Myw2ICsxODk2LDkg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcU3luY2hy
b25vdXNMb2FkZXJDbGllbnRDRk5ldC5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3
b3JrXGNmPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZS5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGNm
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxuZXR3b3JrXHdpblxEb3dubG9hZEJ1bmRsZVdpbi5jcHAiPgogICAgICAgPEZpbHRl
cj5wbGF0Zm9ybVxuZXR3b3JrXHdpbjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTUw
OTIsNiArMTUwOTgsOSBAQAogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cbmV0d29ya1xjZlxSZXNvdXJjZUVycm9yLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxu
ZXR3b3JrXGNmPC9GaWx0ZXI+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgICAgPEN1c3RvbUJ1
aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtc
Y2Y8L0ZpbHRlcj4KKyAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KICAgICA8Q3VzdG9tQnVpbGRTdGVw
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3VyY2VSZXF1ZXN0LmgiPgogICAg
ICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGNmPC9GaWx0ZXI+CiAgICAgPC9DdXN0b21CdWls
ZFN0ZXA+CkBAIC0xNTEwMSw2ICsxNTExMCw5IEBACiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlUmVzcG9uc2UuaCI+CiAgICAgICA8
RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY2Y8L0ZpbHRlcj4KICAgICA8L0N1c3RvbUJ1aWxkU3Rl
cD4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2Zc
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiPgorICAg
ICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGNmPC9GaWx0ZXI+CisgICAgPC9DdXN0b21CdWls
ZFN0ZXA+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3Jr
XGN1cmxcQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3Jt
XG5ldHdvcmtcY3VybDwvRmlsdGVyPgogICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI2OTE0
ZDUxZTU1YzEzMjFmYzQ1NjU3MzVkZTM0NTU2ZTVhNWVmNTIuLjE0Y2EyNjA3ZGJiNmYzYjk4ZDRh
ZjA0OTEzOGRjYmMxZjExMjIwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxNCw2ICs5MTQsMTAgQEAKIAkJMjZDMTdBM0Yx
NDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkMxN0EzRDE0OTFEMkQ0MDBEMTJCQTIgLyogRmls
ZVN5c3RlbUlPUy5tbSAqLzsgfTsKIAkJMjZFOThBMTAxMzBBOUZDQTAwOEVCN0IyIC8qIFRleHRD
b2RlY0FTQ0lJRmFzdFBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI2RTk4QTBGMTMwQTlGQ0EwMDhFQjdCMiAvKiBUZXh0Q29kZWNBU0NJSUZhc3RQ
YXRoLmggKi87IH07CiAJCTI2RjQwRDRBMTQ5MDRBNjMwMENBNjdDNCAvKiBFdmVudExvb3BJT1Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY0MEQ0
OTE0OTA0QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tICovOyB9OworCQkyNkZBRTRDQzE4
NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkZBRTRD
ODE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5jcHAgKi87IH07CisJCTI2RkFFNENEMTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyNkZBRTRDOTE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oICovOyB9OworCQkyNkZBRTRDRTE4NTJFM0E1MDA0
QzhDNDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RkFF
NENBMTg1MkUzQTUwMDRDOEM0NiAvKiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUuY3BwICovOyB9OworCQkyNkZBRTRDRjE4NTJFM0E1MDA0QzhDNDYgLyog
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkZBRTRDQjE4NTJFM0E1
MDA0QzhDNDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlLmggKi87IH07CiAJCTI5MTdCNTYxMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2No
ZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI5MTdCNTVFMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmNwcCAqLzsg
fTsKIAkJMjkxN0I1NjIxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MTdCNTVGMTQ3
MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjkxN0I1NjMxNDczNDk2QzAwNTJDOUQw
IC8qIExheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MTdCNTYwMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZs
dXNoU2NoZWR1bGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTUyNjksNiArNTI3Myw3IEBACiAJCUM1Mjc4QjBDMTdGMjEyRUEwMDNB
Mjk5OCAvKiBQbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTI3OEIwQjE3RjIxMkVBMDAzQTI5OTggLyogUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tICovOyB9OwogCQlDNTQ0Mjc0QjExQTU3RTdBMDA2M0E3NDkgLyog
RE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzU0NDI3NDkxMUE1N0U3QTAwNjNBNzQ5IC8qIERPTVN0cmluZ0xpc3QuaCAqLzsgfTsK
IAkJQzU1NjEwRjExMUE3MDRFQjAwQjgyRDI3IC8qIERPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU1NjEwRjAxMUE3MDRFQjAw
QjgyRDI3IC8qIERPTVN0cmluZ0xpc3QuY3BwICovOyB9OworCQlDNTVDN0JBMTE3MThBRkJBMDAx
MzI3RTQgLyogUmVuZGVyVGhlbWVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNTVDN0JBMDE3MThBRkJBMDAxMzI3RTQgLyogUmVuZGVyVGhlbWVJ
T1MubW0gKi87IH07CiAJCUM1NUUzOEJGMTAwNDBENUQwMEE1NkJEQiAvKiBTdG9yYWdlTmFtZXNw
YWNlSW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzU1RTM4QkIxMDA0MEQ1RDAwQTU2QkRCIC8qIFN0b3JhZ2VOYW1lc3BhY2VJbXBsLmggKi87IH07
CiAJCUM1NUUzOEMwMTAwNDBENUQwMEE1NkJEQiAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTVFMzhCQzEw
MDQwRDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwICovOyB9OwogCQlDNTcy
RUUxRjEyMDFDOUJDMDA3RDhGODIgLyogSlNJREJJbmRleC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU3MkVFMUQxMjAxQzlCQzAwN0Q4RjgyIC8qIEpT
SURCSW5kZXguaCAqLzsgfTsKQEAgLTU0NDcsOCArNTQ1Miw2IEBACiAJCUNFN0IyREI1MTU4NkFC
QUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIxMTU4NkFCQUQwMDk4QjNGQSAv
KiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZS5tbSAqLzsgfTsKIAkJQ0U5NTIwOEExODExQjQ3NTAwN0E1MzkyIC8qIFdlYlNhZmVJ
bmNyZW1lbnRhbFN3ZWVwZXJJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyQzRDQjFEMTYxQTEzMTIwMEQyMTREQSAvKiBXZWJTYWZlSW5jcmVtZW50
YWxTd2VlcGVySU9TLmggKi87IH07Ci0JCUZFRDEzRDUyMENFQTk0OTcwMEQ4OTQ2NiAvKiBSZW5k
ZXJUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkVEMTNENTAwQ0VBOTQ5NzAwRDg5NDY2IC8qIFJlbmRlclRoZW1lSU9TLmggKi87IH07Ci0J
CUM1NUM3QkExMTcxOEFGQkEwMDEzMjdFNCAvKiBSZW5kZXJUaGVtZUlPUy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NUM3QkEwMTcxOEFGQkEwMDEz
MjdFNCAvKiBSZW5kZXJUaGVtZUlPUy5tbSAqLzsgfTsKIAkJQ0VDQURGQzYxNTM3NzhGRjAwRTM3
MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQ0FERkMyMTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRp
b25BbHRlcm5hdGl2ZS5jcHAgKi87IH07CiAJCUNFQ0FERkM3MTUzNzc4RkYwMEUzNzA2OCAvKiBE
aWN0YXRpb25BbHRlcm5hdGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0VDQURGQzMxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0
aXZlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0VDQURGQzgxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQzQxNTM3NzhGRjAw
RTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwICovOyB9OwpAQCAtNjMyNSw2ICs2MzI4LDcg
QEAKIAkJRkVCQzVGMzExNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUJDNUYyRjE2QkQwQ0Mz
MDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmNwcCAqLzsgfTsKIAkJRkVCQzVGMzIxNkJEMENDMzAw
NjU5QkQzIC8qIERhdGFiYXNlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkVCQzVGMzAxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRDEz
RDNBMENFQTkzNDYwMEQ4OTQ2NiAvKiBFZGl0b3JJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQxM0QzOTBDRUE5MzQ2MDBEODk0NjYgLyogRWRp
dG9ySU9TLm1tICovOyB9OworCQlGRUQxM0Q1MjBDRUE5NDk3MDBEODk0NjYgLyogUmVuZGVyVGhl
bWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
RDEzRDUwMENFQTk0OTcwMEQ4OTQ2NiAvKiBSZW5kZXJUaGVtZUlPUy5oICovOyB9OwogCQlGRUQ0
ODM5MENFRDY2QzMyNTVGNzJDNTkgLyogTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNzVBMDU5QUYxNzBEOEZBQTVC
OENBQkUgLyogTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAgKi87IH07CiAJCUZFREJGRjE2MTgyQjdB
OEQwMDE3RkE2NCAvKiBCcmVha3BvaW50SUQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFREJGRjE0MTgyQjdBOEQwMDE3RkE2NCAvKiBCcmVha3BvaW50
SUQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
RURFRjg0MTE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURFRjgzRjE2Nzk3MTA4MDAw
RTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAgKi87IH07CkBAIC03NTYxLDYgKzc1NjUsMTAg
QEAKIAkJMjZDMTdBM0QxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBGaWxlU3lzdGVtSU9TLm1tOyBwYXRo
ID0gaW9zL0ZpbGVTeXN0ZW1JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2
RTk4QTBGMTMwQTlGQ0EwMDhFQjdCMiAvKiBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDb2RlY0FTQ0lJRmFzdFBhdGguaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZGNDBENDkxNDkwNEE2MzAwQ0E2N0M0IC8qIEV2
ZW50TG9vcElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEV2
ZW50TG9vcElPUy5tbTsgcGF0aCA9IGlvcy9FdmVudExvb3BJT1MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTI2RkFFNEM4MTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkZBRTRDOTE4NTJFM0E1MDA0QzhDNDYgLyogUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2RkFFNENBMTg1MkUzQTUwMDRDOEM0NiAvKiBT
eW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMjZGQUU0Q0IxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkxN0I1NUUxNDczNDk2QzAwNTJDOUQwIC8qIExh
eWVyRmx1c2hTY2hlZHVsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTGF5ZXJGbHVzaFNjaGVkdWxlci5jcHA7IHBhdGggPSBjYS9MYXllckZsdXNoU2NoZWR1bGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkxN0I1NUYxNDczNDk2QzAwNTJD
OUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTGF5ZXJGbHVzaFNjaGVkdWxlci5oOyBwYXRoID0gY2EvTGF5ZXJGbHVzaFNjaGVkdWxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTE3QjU2MDE0NzM0OTZDMDA1MkM5
RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50Lmg7IHBhdGggPSBjYS9MYXllckZs
dXNoU2NoZWR1bGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjM0
Nyw2ICsxMjM1NSw3IEBACiAJCUM1NDQyNzQ5MTFBNTdFN0EwMDYzQTc0OSAvKiBET01TdHJpbmdM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVN0cmluZ0xpc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0NDI3NEExMUE1N0U3QTAwNjNBNzQ5IC8q
IERPTVN0cmluZ0xpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVN0cmluZ0xpc3Qu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTU2MTBGMDExQTcwNEVCMDBCODJE
MjcgLyogRE9NU3RyaW5nTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBET01TdHJpbmdMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzU1
QzdCQTAxNzE4QUZCQTAwMTMyN0U0IC8qIFJlbmRlclRoZW1lSU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVuZGVyVGhlbWVJT1MubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM1NUUzOEJCMTAwNDBENUQwMEE1NkJEQiAvKiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTVFMzhCQzEwMDQw
RDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDNTcyRUUxRDEyMDFDOUJDMDA3RDhGODIgLyogSlNJREJJbmRl
eC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0lEQkluZGV4Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjU3Niw4ICsxMjU4NSw2IEBACiAJCUNFN0IyREIw
MTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIubW07IHBhdGggPSBtYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTdCMkRCMTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oOyBwYXRoID0gbWFjL1RleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTdCMkRCMjE1ODZBQkFE
MDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBwYXRo
ID0gbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRkVEMTNENTAwQ0VBOTQ5NzAwRDg5NDY2IC8qIFJlbmRlclRoZW1lSU9TLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRoZW1lSU9TLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM1NUM3QkEwMTcxOEFGQkEwMDEzMjdFNCAvKiBSZW5kZXJU
aGVtZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbmRl
clRoZW1lSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUNBREZDMjE1Mzc3
OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRUNBREZDMzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9u
QWx0ZXJuYXRpdmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGljdGF0aW9u
QWx0ZXJuYXRpdmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VDQURGQzQxNTM3
NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMzU0OSw2ICsxMzU1Niw3IEBACiAJCUZFQkM1RjJGMTZCRDBDQzMwMDY1
OUJEMyAvKiBEYXRhYmFzZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGF0YWJhc2VCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVC
QzVGMzAxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkVEMTNEMzkwQ0VBOTM0NjAwRDg5NDY2IC8qIEVkaXRvcklPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEVkaXRvcklPUy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkVEMTNENTAwQ0VBOTQ5NzAwRDg5NDY2IC8qIFJlbmRlclRoZW1l
SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRoZW1lSU9TLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREJGRjE0MTgyQjdBOEQwMDE3RkE2NCAv
KiBCcmVha3BvaW50SUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJlYWtw
b2ludElELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREVGODNGMTY3OTcxMDgw
MDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERhdGFiYXNlU3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRURFRjg0MDE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTUzMyw2ICsxOTU0MSw4IEBACiAJCQkJN0VFNjg0
NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCAqLywKIAkJCQk3RUU2ODQ1ODEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNwcCAqLywKIAkJCQk3RUU2ODQ1OTEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgKi8sCisJCQkJMjZGQUU0
QzgxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuY3BwICovLAorCQkJCTI2RkFFNEM5MTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmggKi8sCiAJCQkJN0VFNjg0NUExMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovLAogCQkJCTdFRTY4NDVCMTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgKi8sCiAJCQkJN0VFNjg0NUMxMkQyNkUzODAw
RTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8sCkBAIC0xOTU0Miw2ICsxOTU1Miw4
IEBACiAJCQkJNTFBQkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5o
ICovLAogCQkJCTUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVD
Rk5ldC5jcHAgKi8sCiAJCQkJNDQyQUJDRDUxN0Q5MjYyRjAwRDMwNzE1IC8qIFN5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50Q0ZOZXQuY3BwICovLAorCQkJCTI2RkFFNENBMTg1MkUzQTUwMDRDOEM0NiAv
KiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICov
LAorCQkJCTI2RkFFNENCMTg1MkUzQTUwMDRDOEM0NiAvKiBTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2Y7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjQ0OTMsNiArMjQ1MDUsNyBAQAogCQkJCTdF
RTY4NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5MzRGNzEzQzBENUE2RjE5MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNEM3Njc5MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRs
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjZGQUU0Q0QxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
NEM3NjdBMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE0Qzc2N0IwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTQxNDM0MTZBNjU5NjMwMEM2MzNDNyAvKiBS
ZXNvdXJjZUhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MDE4LDYgKzI1MDMxLDcg
QEAKIAkJCQlCMjIyN0FGNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHWm9vbUFuZFBhbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJFNEVDOTgwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4MDgxMTcxNkZDRjlDQjAwQjgwRDA3IC8qIFN5bmNocm9u
b3VzTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkyNkZBRTRDRjE4NTJFM0E1MDA0
QzhDNDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1REE5N0VDRDE2OEU3ODdCMDAwRTM2NzYgLyogU3lzdGVt
VmVyc2lvbk1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkYwNTEwQTE1NEYwOTAwMEE0MjM0
IC8qIFRhYmxlTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzJBRTFFNTE4M0MwNzQxMDAw
QTU5ODggLyogUGx1Z2luUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3MzYsNiAr
Mjc3NTAsNyBAQAogCQkJCTA3MDU4NTEyMTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3Njc4MENFOTIzQTEwMDdF
RjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2QzEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkyNkZBRTRDQzE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJBMDAzMTE2RkI5MkFDMDBC
QTdBMzUgLyogUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0
Qzc2NTEwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTNFMjI3RTMwQUY1ODlBRDAwRDQ4MzI0IC8qIFJlc291cmNlTG9hZGVyLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjc5ODUsNiArMjgwMDAsNyBAQAogCQkJCTkzQjJEODE4MEY5OTIw
RUUwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA4
NzU1OEM1MTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjJDMTIxN0MxMUFCOUU3NzAwM0M0NjJDIC8qIFN1c3Bl
bmRhYmxlVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjZGQUU0Q0UxODUyRTNBNTAwNEM4
QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzk3MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQUVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjREOTEyQjAxM0NBOUExRjAwRDIxOTE1IC8q
IFNWR0FsdEdseXBoRGVmRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTY1M0YyRDBE
OTcyN0QyMDBDQTk3MjMgLyogU1ZHQWx0R2x5cGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmlu
ZGV4IGZmODA2NzQ5YTYxYjM2NmU3YWJmODI2Yjk0YjAyYzc0ZDhhY2IwMmEuLjU4YTIyMjcyZDU1
OGExMTJjNGZlZTMxYzNiYjY3MjkwM2MzMzI0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTcyLDcgKzcyLDYgQEAgdHlwZWRl
ZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOwogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQ29ubmVjdGlv
biogQ0ZVUkxDb25uZWN0aW9uUmVmOwogdHlwZWRlZiBpbnQgQ0ZIVFRQQ29va2llU3RvcmFnZUFj
Y2VwdFBvbGljeTsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqIENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY7Ci10eXBlZGVmIHN0cnVjdCBDRlVSTENvbm5lY3Rpb25DbGll
bnRfVjYgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpIHx8IFVTRShDRk5FVFdPUkspCkBAIC0xNDIsNyArMTQxLDYgQEAgcHVibGljOgogICAgIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVlc3QoKSBjb25zdDsKICAgICBzdGF0aWMg
dm9pZCBzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmKTsKICAg
ICBzdGF0aWMgdm9pZCBzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3QsIENG
RGF0YVJlZik7Ci0gICAgc3RhdGljIENGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiogY29ubmVjdGlv
bkNsaWVudENhbGxiYWNrcygpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgUXVpY2tMb29r
SGFuZGxlKiBxdWlja0xvb2tIYW5kbGUoKSB7IHJldHVybiBtX3F1aWNrTG9vay5nZXQoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlSW50ZXJuYWwuaAppbmRleCA3NWUyMjdiNjY3MjllNDBmYjI5NWMxNmE1YWVlMTViNzA1ZjA3
MGQyLi4zM2IwOGIzNzQ0ZjU3YjFhZDk5NTVlOTc3NDkwMmI2ZTQ2YjRmMzljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAKICNpZiBVU0Uo
Q0ZORVRXT1JLKQorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgogI2VuZGlm
CiAKQEAgLTE0OCw2ICsxNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgVVNFKENGTkVU
V09SSykKICAgICAgICAgUmV0YWluUHRyPENGVVJMQ29ubmVjdGlvblJlZj4gbV9jb25uZWN0aW9u
OwogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKKyAgICAgICAgUmVm
UHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU+IG1fY29ubmVjdGlvbkRl
bGVnYXRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykKICAg
ICAgICAgUmV0YWluUHRyPE5TVVJMQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
Rk5ldC5jcHAKaW5kZXggMmI2ZTc3YTcyZTIwODVkZDgxYzc0OTQ2MWJhYjlkNGI4YWU5OWZmOS4u
YWNhZGU3Yzk3MTE0MzBlMjE0ODgxNWY2NWIwMTljYzhlZTZjNjY3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50LmgiCisjaW5jbHVkZSAiU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgogI2luY2x1ZGUg
PHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBAIC0xMTIsMjg5ICsxMTMsNiBA
QCBzdGF0aWMgdm9pZCBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IENyZWRlbgogICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxk
KCJBdXRob3JpemF0aW9uIiwgYXV0aGVudGljYXRpb25IZWFkZXIpOwogfQogCi1zdGF0aWMgUmV0
YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNl
c3NhcnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjdXJyZW50UmVxdWVzdCwgQ0ZVUkxSZXF1ZXN0
UmVmIG5ld1JlcXVlc3QsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZWRpcmVjdFJlc3BvbnNlKQotewot
ICAgIGlmIChjZlJlZGlyZWN0UmVzcG9uc2UpCi0gICAgICAgIHJldHVybiBjZlJlZGlyZWN0UmVz
cG9uc2U7Ci0KLSAgICBDRlVSTFJlZiBuZXdVUkwgPSBDRlVSTFJlcXVlc3RHZXRVUkwobmV3UmVx
dWVzdCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdTY2hlbWUgPSBhZG9wdENGKENG
VVJMQ29weVNjaGVtZShuZXdVUkwpKTsKLQotICAgIC8vIElmIHRoZSBwcm90b2NvbHMgb2YgdGhl
IG5ldyByZXF1ZXN0IGFuZCB0aGUgY3VycmVudCByZXF1ZXN0IG1hdGNoLCB0aGlzIGlzIG5vdCBh
biBIU1RTIHJlZGlyZWN0IGFuZCB3ZSBzaG91bGRuJ3Qgc3ludGhlc2l6ZSBhIHJlZGlyZWN0IHJl
c3BvbnNlLgotICAgIGlmIChjdXJyZW50UmVxdWVzdC51cmwoKS5wcm90b2NvbCgpID09IFN0cmlu
ZyhuZXdTY2hlbWUuZ2V0KCkpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gY3VycmVudFVSTCA9IGN1cnJlbnRSZXF1ZXN0LnVybCgpLmNyZWF0ZUNGVVJMKCk7
Ci0gICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IHJlc3BvbnNlTWVzc2FnZSA9IGFkb3B0
Q0YoQ0ZIVFRQTWVzc2FnZUNyZWF0ZVJlc3BvbnNlKDAsIDMwMiwgMCwga0NGSFRUUFZlcnNpb24x
XzEpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IG5ld0Fic29sdXRlVVJMID0gYWRvcHRDRihD
RlVSTENvcHlBYnNvbHV0ZVVSTChuZXdVUkwpKTsKLSAgICBDRkhUVFBNZXNzYWdlU2V0SGVhZGVy
RmllbGRWYWx1ZShyZXNwb25zZU1lc3NhZ2UuZ2V0KCksIENGU1RSKCJMb2NhdGlvbiIpLCBDRlVS
TEdldFN0cmluZyhuZXdBYnNvbHV0ZVVSTC5nZXQoKSkpOwotICAgIENGSFRUUE1lc3NhZ2VTZXRI
ZWFkZXJGaWVsZFZhbHVlKHJlc3BvbnNlTWVzc2FnZS5nZXQoKSwgQ0ZTVFIoIkNhY2hlLUNvbnRy
b2wiKSwgQ0ZTVFIoIm5vLXN0b3JlIikpOwotCi0gICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VS
ZWY+IG5ld1Jlc3BvbnNlID0gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNw
b25zZSgwLCBjdXJyZW50VVJMLmdldCgpLCByZXNwb25zZU1lc3NhZ2UuZ2V0KCksIGtDRlVSTENh
Y2hlU3RvcmFnZU5vdEFsbG93ZWQpKTsKLSAgICByZXR1cm4gbmV3UmVzcG9uc2U7Ci19Ci0KLXN0
YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMQ29ubmVjdGlvblJlZiBj
b25uLCBDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0LCBDRlVSTFJlc3BvbnNlUmVmIG9yaWdpbmFs
UmVkaXJlY3RSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSNpZiBMT0dfRElT
QUJMRUQKLSAgICBVTlVTRURfUEFSQU0oY29ubik7Ci0jZW5kaWYKLSAgICBSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHJlZGlyZWN0
UmVzcG9uc2UgPSBzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KGhhbmRsZS0+
Y3VycmVudFJlcXVlc3QoKSwgY2ZSZXF1ZXN0LCBvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UpOwot
Ci0gICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlKSB7Ci0gICAgICAgIENGUmV0YWluKGNmUmVxdWVz
dCk7Ci0gICAgICAgIHJldHVybiBjZlJlcXVlc3Q7Ci0gICAgfQotCi0gICAgTE9HKE5ldHdvcmss
ICJDRk5ldCAtIHdpbGxTZW5kUmVxdWVzdChjb25uPSVwLCBoYW5kbGU9JXApICglcykiLCBjb25u
LCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7Ci0KLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKLSAgICBpZiAocmVkaXJlY3RS
ZXNwb25zZSkgewotICAgICAgICBDRkhUVFBNZXNzYWdlUmVmIGh0dHBNZXNzYWdlID0gQ0ZVUkxS
ZXNwb25zZUdldEhUVFBSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKLSAgICAgICAg
aWYgKGh0dHBNZXNzYWdlICYmIENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0
cE1lc3NhZ2UpID09IDMwNykgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBs
YXN0SFRUUE1ldGhvZCA9IGhhbmRsZS0+bGFzdEhUVFBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygp
OwotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdNZXRob2QgPSBhZG9wdENG
KENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QpKTsKLSAgICAgICAg
ICAgIGlmIChDRlN0cmluZ0NvbXBhcmVXaXRoT3B0aW9ucyhsYXN0SFRUUE1ldGhvZC5nZXQoKSwg
bmV3TWV0aG9kLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBDRlN0cmluZ0dldExlbmd0aChsYXN0SFRU
UE1ldGhvZC5nZXQoKSkpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSkgewotICAgICAgICAg
ICAgICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiBtdXRhYmxlUmVxdWVzdCA9
IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgY2ZSZXF1ZXN0KSk7Ci0g
ICAgICAgICAgICAgICAgd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24oaGFuZGxlLT5zdG9yYWdl
U2Vzc2lvbigpLCBtdXRhYmxlUmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgQ0ZVUkxS
ZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2QobXV0YWJsZVJlcXVlc3QuZ2V0KCksIGxhc3RIVFRQ
TWV0aG9kLmdldCgpKTsKLQotICAgICAgICAgICAgICAgIEZvcm1EYXRhKiBib2R5ID0gaGFuZGxl
LT5maXJzdFJlcXVlc3QoKS5odHRwQm9keSgpOwotICAgICAgICAgICAgICAgIGlmICghZXF1YWxJ
Z25vcmluZ0Nhc2UoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwTWV0aG9kKCksICJHRVQiKSAm
JiBib2R5ICYmICFib2R5LT5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6
OnNldEhUVFBCb2R5KG11dGFibGVSZXF1ZXN0LmdldCgpLCBib2R5KTsKLQotICAgICAgICAgICAg
ICAgIFN0cmluZyBvcmlnaW5hbENvbnRlbnRUeXBlID0gaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5o
dHRwQ29udGVudFR5cGUoKTsKLSAgICAgICAgICAgICAgICBpZiAoIW9yaWdpbmFsQ29udGVudFR5
cGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVh
ZGVyRmllbGRWYWx1ZShtdXRhYmxlUmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIkNvbnRlbnQtVHlwZSIp
LCBvcmlnaW5hbENvbnRlbnRUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwotCi0gICAgICAg
ICAgICAgICAgcmVxdWVzdCA9IG11dGFibGVSZXF1ZXN0LmdldCgpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotICAgIGlmIChyZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICByZXF1
ZXN0ID0gY2ZSZXF1ZXN0OwotCi0gICAgLy8gU2hvdWxkIG5vdCBzZXQgUmVmZXJlciBhZnRlciBh
IHJlZGlyZWN0IGZyb20gYSBzZWN1cmUgcmVzb3VyY2UgdG8gbm9uLXNlY3VyZSBvbmUuCi0gICAg
aWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgJiYgcHJvdG9jb2xJcyhyZXF1
ZXN0Lmh0dHBSZWZlcnJlcigpLCAiaHR0cHMiKSAmJiBoYW5kbGUtPmNvbnRleHQoKS0+c2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpKQotICAgICAgICByZXF1ZXN0LmNs
ZWFySFRUUFJlZmVycmVyKCk7Ci0KLSAgICBoYW5kbGUtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKLQotICAgIGlmIChyZXF1ZXN0LmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIGNmUmVxdWVzdCA9IHJlcXVlc3QuY2ZVUkxSZXF1ZXN0
KFVwZGF0ZUhUVFBCb2R5KTsKLQotICAgIENGUmV0YWluKGNmUmVxdWVzdCk7Ci0gICAgcmV0dXJu
IGNmUmVxdWVzdDsKLX0KLQotc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKENGVVJMQ29u
bmVjdGlvblJlZiBjb25uLCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCi17Ci0jaWYgTE9HX0RJU0FCTEVEICYmICFVU0UoUVVJQ0tfTE9PSykKLSAg
ICBVTlVTRURfUEFSQU0oY29ubik7Ci0jZW5kaWYKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxl
ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSk7Ci0KLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bm49JXAsIGhhbmRsZT0lcCkgKCVzKSIsIGNvbm4sIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVl
c3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIGlmICghaGFuZGxlLT5j
bGllbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8vIEF2
b2lkIE1JTUUgdHlwZSBzbmlmZmluZyBpZiB0aGUgcmVzcG9uc2UgY29tZXMgYmFjayBhcyAzMDQg
Tm90IE1vZGlmaWVkLgotICAgIENGSFRUUE1lc3NhZ2VSZWYgbXNnID0gd2tHZXRDRlVSTFJlc3Bv
bnNlSFRUUFJlc3BvbnNlKGNmUmVzcG9uc2UpOwotICAgIGludCBzdGF0dXNDb2RlID0gbXNnID8g
Q0ZIVFRQTWVzc2FnZUdldFJlc3BvbnNlU3RhdHVzQ29kZShtc2cpIDogMDsKLQotICAgIGlmIChz
dGF0dXNDb2RlICE9IDMwNCkKLSAgICAgICAgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShjZlJl
c3BvbnNlKTsKLQotI2lmICFQTEFURk9STShJT1MpCi0gICAgaWYgKF9DRlVSTFJlcXVlc3RDb3B5
UHJvdG9jb2xQcm9wZXJ0eUZvcktleShoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmNmVVJMUmVxdWVz
dChEb05vdFVwZGF0ZUhUVFBCb2R5KSwgQ0ZTVFIoIkZvcmNlSFRNTE1JTUVUeXBlIikpKQotICAg
ICAgICB3a1NldENGVVJMUmVzcG9uc2VNSU1FVHlwZShjZlJlc3BvbnNlLCBDRlNUUigidGV4dC9o
dG1sIikpOwotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0jZWxzZQotICAgIGlmICghQ0ZVUkxS
ZXNwb25zZUdldE1JTUVUeXBlKGNmUmVzcG9uc2UpKSB7Ci0gICAgICAgIC8vIFdlIHNob3VsZCBu
ZXZlciBiZSBhcHBseWluZyB0aGUgZGVmYXVsdCBNSU1FVHlwZSBpZiB3ZSB0b2xkIHRoZSBuZXR3
b3JraW5nIGxheWVyIHRvIGRvIGNvbnRlbnQgc25pZmZpbmcgZm9yIGhhbmRsZS4KLSAgICAgICAg
QVNTRVJUKCFoYW5kbGUtPnNob3VsZENvbnRlbnRTbmlmZigpKTsKLSAgICAgICAgc2V0RGVmYXVs
dE1JTUVUeXBlKGNmUmVzcG9uc2UpOwotICAgIH0KLSNlbmRpZgotCi0jaWYgVVNFKFFVSUNLX0xP
T0spCi0gICAgaGFuZGxlLT5zZXRRdWlja0xvb2tIYW5kbGUoUXVpY2tMb29rSGFuZGxlOjpjcmVh
dGUoaGFuZGxlLCBjb25uLCBjZlJlc3BvbnNlKSk7Ci0gICAgaWYgKGhhbmRsZS0+cXVpY2tMb29r
SGFuZGxlKCkpCi0gICAgICAgIGNmUmVzcG9uc2UgPSBoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgp
LT5jZlJlc3BvbnNlKCk7Ci0jZW5kaWYKLSAgICAKLSAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRS
ZWNlaXZlUmVzcG9uc2UoaGFuZGxlLCBjZlJlc3BvbnNlKTsKLX0KLQotI2lmIFVTRShORVRXT1JL
X0NGREFUQV9BUlJBWV9DQUxMQkFDSykKLXN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXko
Q0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGQXJyYXlSZWYgZGF0YUFycmF5LCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQotewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShjb25u
KTsKLSNlbmRpZgotICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNv
dXJjZUhhbmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLSAgICBpZiAoIWhh
bmRsZS0+Y2xpZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIExPRyhOZXR3b3JrLCAiQ0ZO
ZXQgLSBkaWRSZWNlaXZlRGF0YUFycmF5KGNvbm49JXAsIGhhbmRsZT0lcCwgYXJyYXlMZW5ndGg9
JWxkKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBDRkFycmF5R2V0Q291bnQoZGF0YUFycmF5KSwgaGFu
ZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotI2lm
IFVTRShRVUlDS19MT09LKQotICAgIGlmIChoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpICYmIGhh
bmRsZS0+cXVpY2tMb29rSGFuZGxlKCktPmRpZFJlY2VpdmVEYXRhQXJyYXkoZGF0YUFycmF5KSkK
LSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KLSAgICBoYW5kbGUtPmhhbmRsZURhdGFBcnJheShk
YXRhQXJyYXkpOwotfQotI2VuZGlmCi0KLXN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKENGVVJM
Q29ubmVjdGlvblJlZiBjb25uLCBDRkRhdGFSZWYgZGF0YSwgQ0ZJbmRleCBvcmlnaW5hbExlbmd0
aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxl
ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSk7Ci0KLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oY29ubik7Ci0jZWxz
ZQotICAgIENGSW5kZXggbGVuZ3RoID0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwotICAgIExPRyhO
ZXR3b3JrLCAiQ0ZOZXQgLSBkaWRSZWNlaXZlRGF0YShjb25uPSVwLCBoYW5kbGU9JXAsIGJ5dGVz
PSVsZCkgKCVzKSIsIGNvbm4sIGhhbmRsZSwgbGVuZ3RoLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgp
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotI2VuZGlmCi0KLSNpZiBVU0UoUVVJQ0tf
TE9PSykKLSAgICBpZiAoaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKSAmJiBoYW5kbGUtPnF1aWNr
TG9va0hhbmRsZSgpLT5kaWRSZWNlaXZlRGF0YShkYXRhKSkKLSAgICAgICAgcmV0dXJuOwotI2Vu
ZGlmCi0KLSAgICBpZiAoUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IGhhbmRsZS0+Y2xp
ZW50KCkpCi0gICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1
ZmZlcjo6d3JhcENGRGF0YShkYXRhKSwgb3JpZ2luYWxMZW5ndGgpOwotfQotCi1zdGF0aWMgdm9p
ZCBkaWRTZW5kQm9keURhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRkluZGV4LCBDRkluZGV4IHRv
dGFsQnl0ZXNXcml0dGVuLCBDRkluZGV4IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pCi17Ci0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRp
Y19jYXN0PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwot
ICAgIGlmICghaGFuZGxlIHx8ICFoYW5kbGUtPmNsaWVudCgpKQotICAgICAgICByZXR1cm47Ci0g
ICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkU2VuZERhdGEoaGFuZGxlLCB0b3RhbEJ5dGVzV3JpdHRl
biwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7Ci19Ci0KLXN0YXRpYyBCb29sZWFuIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BB
UkFNKGNvbm4pOwotI2VuZGlmCi0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IGNvbnN0X2Nh
c3Q8UmVzb3VyY2VIYW5kbGUqPihzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZUhhbmRsZSo+KGNs
aWVudEluZm8pKTsKLQotICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBzaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZShjb25uPSVwLCBoYW5kbGU9JXApICglcykiLCBjb25uLCBoYW5kbGUsIGhhbmRs
ZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBp
ZiAoIWhhbmRsZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGhhbmRsZS0+
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
LXsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oY29ubik7Ci0jZW5kaWYKLSAg
ICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0KLSAgICBMT0coTmV0d29yaywgIkNGTmV0
IC0gZGlkRmluaXNoTG9hZGluZyhjb25uPSVwLCBoYW5kbGU9JXApICglcykiLCBjb25uLCBoYW5k
bGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
Ci0KLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBpZiAoaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUo
KSAmJiBoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpLT5kaWRGaW5pc2hMb2FkaW5nKCkpCi0gICAg
ICAgIHJldHVybjsKLSNlbmRpZgotCi0gICAgaWYgKGhhbmRsZS0+Y2xpZW50KCkpCi0gICAgICAg
IGhhbmRsZS0+Y2xpZW50KCktPmRpZEZpbmlzaExvYWRpbmcoaGFuZGxlLCAwKTsKLX0KLQotc3Rh
dGljIHZvaWQgZGlkRmFpbChDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZFcnJvclJlZiBlcnJv
ciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVT
RURfUEFSQU0oY29ubik7Ci0jZW5kaWYKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3Rh
dGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7
Ci0KLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gZGlkRmFpbChjb25uPSVwLCBoYW5kbGU9JXAs
IGVycm9yID0gJXApICglcykiLCBjb25uLCBoYW5kbGUsIGVycm9yLCBoYW5kbGUtPmZpcnN0UmVx
dWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0jaWYgVVNFKFFVSUNLX0xP
T0spCi0gICAgaWYgKGhhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkpCi0gICAgICAgIGhhbmRsZS0+
cXVpY2tMb29rSGFuZGxlKCktPmRpZEZhaWwoKTsKLSNlbmRpZgotCi0gICAgaWYgKGhhbmRsZS0+
Y2xpZW50KCkpCi0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZEZhaWwoaGFuZGxlLCBSZXNv
dXJjZUVycm9yKGVycm9yKSk7Ci19Ci0KLXN0YXRpYyBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdp
bGxDYWNoZVJlc3BvbnNlKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
ZiBjYWNoZWRSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0KLSNpZiBQTEFURk9STShXSU4pCi0gICAgLy8gV29ya2Fy
b3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYzMDA5OTA+IENhY2hpbmcgZG9lcyBub3QgcmVzcGVj
dCBWYXJ5IEhUVFAgaGVhZGVyLgotICAgIC8vIEZJWE1FOiBXZWJDb3JlIGNhY2hlIGhhcyBpc3N1
ZXMgd2l0aCBWYXJ5LCB0b28gKGJ1ZyA1ODc5NywgYnVnIDcxNTA5KS4KLSAgICBDRlVSTFJlc3Bv
bnNlUmVmIHdyYXBwZWRSZXNwb25zZSA9IENGQ2FjaGVkVVJMUmVzcG9uc2VHZXRXcmFwcGVkUmVz
cG9uc2UoY2FjaGVkUmVzcG9uc2UpOwotICAgIGlmIChDRkhUVFBNZXNzYWdlUmVmIGh0dHBSZXNw
b25zZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2Uod3JhcHBlZFJlc3BvbnNlKSkgewot
ICAgICAgICBBU1NFUlQoQ0ZIVFRQTWVzc2FnZUlzSGVhZGVyQ29tcGxldGUoaHR0cFJlc3BvbnNl
KSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdmFyeVZhbHVlID0gYWRvcHRDRihD
RkhUVFBNZXNzYWdlQ29weUhlYWRlckZpZWxkVmFsdWUoaHR0cFJlc3BvbnNlLCBDRlNUUigiVmFy
eSIpKSk7Ci0gICAgICAgIGlmICh2YXJ5VmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQotCi0jaWYgUExBVEZPUk0oV0lOKQotICAgIGlm
IChoYW5kbGUtPmNsaWVudCgpICYmICFoYW5kbGUtPmNsaWVudCgpLT5zaG91bGRDYWNoZVJlc3Bv
bnNlKGhhbmRsZSwgY2FjaGVkUmVzcG9uc2UpKQotICAgICAgICByZXR1cm4gMDsKLSNlbHNlCi0g
ICAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBuZXdSZXNwb25zZSA9IGhhbmRsZS0+Y2xpZW50KCkt
PndpbGxDYWNoZVJlc3BvbnNlKGhhbmRsZSwgY2FjaGVkUmVzcG9uc2UpOwotICAgIGlmIChuZXdS
ZXNwb25zZSAhPSBjYWNoZWRSZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIG5ld1Jlc3BvbnNlOwot
I2VuZGlmCi0KLSAgICBDRlJldGFpbihjYWNoZWRSZXNwb25zZSk7Ci0KLSAgICByZXR1cm4gY2Fj
aGVkUmVzcG9uc2U7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoQ0ZVUkxD
b25uZWN0aW9uUmVmIGNvbm4sIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjaGFsbGVuZ2UsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFN
KGNvbm4pOwotI2VuZGlmCi0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0
PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAgIEFT
U0VSVChoYW5kbGUpOwotICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBkaWRSZWNlaXZlQ2hhbGxl
bmdlKGNvbm49JXAsIGhhbmRsZT0lcCAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0
UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgaGFuZGxlLT5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
Y2hhbGxlbmdlLCBoYW5kbGUpKTsKLX0KLQotI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhf
Q0FMTEJBQ0spCi1zdGF0aWMgQm9vbGVhbiBjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UoQ0ZV
UkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25T
cGFjZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBV
TlVTRURfUEFSQU0oY29ubik7Ci0jZW5kaWYKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0g
c3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSk7Ci0gICAgQVNTRVJUKGhhbmRsZSk7Ci0KLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gY2Fu
UmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKGNvbm49JXAsIGhhbmRsZT0lcCAoJXMpIiwgY29ubiwg
aGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIFByb3RlY3Rpb25TcGFjZSBjb3JlUHJvdGVj
dGlvblNwYWNlID0gY29yZShwcm90ZWN0aW9uU3BhY2UpOwotICAgIGlmIChjb3JlUHJvdGVjdGlv
blNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgPT0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGlj
YXRpb25TY2hlbWVVbmtub3duKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGhh
bmRsZS0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlUHJvdGVjdGlv
blNwYWNlKTsKLSNlbHNlCi0gICAgcmV0dXJuIGhhbmRsZS0+Y2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZShjb3JlKHByb3RlY3Rpb25TcGFjZSkpOwotI2VuZGlmCi19Ci0jZW5k
aWYKLQogUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSW50ZXJuYWwoKQog
ewogICAgIGlmIChtX2Nvbm5lY3Rpb24pIHsKQEAgLTQ3Nyw5ICsxOTUsNiBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZSwgYm9vbAogICAgIH0KICNlbmRpZgogCi0gICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50
X1Y2IGNsaWVudCA9ICpSZXNvdXJjZUhhbmRsZTo6Y29ubmVjdGlvbkNsaWVudENhbGxiYWNrcygp
OwotICAgIGNsaWVudC5jbGllbnRJbmZvID0gdGhpczsKLQogICAgIENGTXV0YWJsZURpY3Rpb25h
cnlSZWYgc3RyZWFtUHJvcGVydGllcyAgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAs
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpOwogICAgIGlmICghc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCiAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHN0cmVhbVByb3BlcnRpZXMsIENGU1RSKCJfa0NGVVJMQ29u
bmVjdGlvblNlc3Npb25JRCIpLCBDRlNUUigiV2ViS2l0UHJpdmF0ZVNlc3Npb24iKSk7CkBAIC01
MDIsNiArMjE3LDEwIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlv
bihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sCiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFN0YXJ0U3luY2hyb25vdXNseShyZXF1ZXN0Lmdl
dCgpLCAxKTsKICNlbmRpZgorCisgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUgPSBhZG9wdFJl
ZihuZXcgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKHRo
aXMpKTsKKyAgICBDRlVSTENvbm5lY3Rpb25DbGllbnRfVjYgY2xpZW50ID0gZC0+bV9jb25uZWN0
aW9uRGVsZWdhdGUtPm1ha2VDb25uZWN0aW9uQ2xpZW50KCk7CisKICAgICBkLT5tX2Nvbm5lY3Rp
b24gPSBhZG9wdENGKENGVVJMQ29ubmVjdGlvbkNyZWF0ZVdpdGhQcm9wZXJ0aWVzKDAsIHJlcXVl
c3QuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxDb25uZWN0aW9uQ2xpZW50Kj4oJmNsaWVu
dCksIHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpKSk7CiB9CiAKQEAgLTg3NywyNCArNTk2LDQg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6aGFuZGxlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFy
cmF5KQogfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZVUkxDb25uZWN0aW9uQ2xp
ZW50X1Y2KiBSZXNvdXJjZUhhbmRsZTo6Y29ubmVjdGlvbkNsaWVudENhbGxiYWNrcygpCi17Ci0g
ICAgc3RhdGljIENGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiBjbGllbnQgPSB7IDYsIDAsIDAsIDAs
IDAsIFdlYkNvcmU6OndpbGxTZW5kUmVxdWVzdCwgZGlkUmVjZWl2ZVJlc3BvbnNlLCBkaWRSZWNl
aXZlRGF0YSwgMCwgZGlkRmluaXNoTG9hZGluZywgZGlkRmFpbCwgd2lsbENhY2hlUmVzcG9uc2Us
IGRpZFJlY2VpdmVDaGFsbGVuZ2UsIGRpZFNlbmRCb2R5RGF0YSwgc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2VDYWxsYmFjaywgMCwKLSNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExC
QUNLKQotICAgICAgICBjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UsCi0jZWxzZQotICAgICAg
ICAwLAotI2VuZGlmCi0gICAgICAgIDAsCi0jaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NB
TExCQUNLKQotICAgICAgICBkaWRSZWNlaXZlRGF0YUFycmF5Ci0jZWxzZQotICAgICAgICAwCi0j
ZW5kaWYKLSAgICB9OwotICAgIHJldHVybiAmY2xpZW50OwotfQotI2VuZGlmIC8vIFVTRShRVUlD
S19MT09LKSAmJiBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNjFjODI1YWRkNTc2MWFjZGMyM2M2MzJmMTA2OTQ3ZTgyNThhMmUyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNC0yMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUuaCIKKworI2lmIFVTRShDRk5FVFdPUkspCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQor
ICAgIDogbV9oYW5kbGUoaGFuZGxlKQoreworfQorUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZTo6flJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoKQorewor
fQorCitDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZTo6d2lsbFNlbmRSZXF1ZXN0KENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxSZXF1ZXN0UmVmIGNm
UmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiBvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSktPndpbGxTZW5kUmVxdWVzdChjZlJlcXVlc3QsIG9yaWdpbmFsUmVkaXJlY3RSZXNwb25zZSk7
Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3Bv
bnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSktPmRpZFJlY2VpdmVSZXNwb25zZShjZlJlc3BvbnNlKTsKK30KKwordm9pZCBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YShDRlVSTENvbm5l
Y3Rpb25SZWYsIENGRGF0YVJlZiBkYXRhLCBDRkluZGV4IG9yaWdpbmFsTGVuZ3RoLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJl
Y2VpdmVEYXRhKGRhdGEsIG9yaWdpbmFsTGVuZ3RoKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKENGVVJMQ29ubmVjdGlv
blJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2FzdDxSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpLT5kaWRGaW5pc2hMb2FkaW5nKCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkRmFpbChDRlVSTENvbm5lY3Rpb25SZWYsIENGRXJyb3JS
ZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8UmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNs
aWVudEluZm8pKS0+ZGlkRmFpbChlcnJvcik7Cit9CisKK0NGQ2FjaGVkVVJMUmVzcG9uc2VSZWYg
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbENhY2hlUmVzcG9uc2Uo
Q0ZVUkxDb25uZWN0aW9uUmVmLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNl
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT53aWxsQ2FjaGVSZXNwb25zZShjYWNoZWRSZXNwb25zZSk7Cit9CisKK3ZvaWQg
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5n
ZShDRlVSTENvbm5lY3Rpb25SZWYsIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjaGFsbGVuZ2UsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+
ZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2UpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFNlbmRCb2R5RGF0YShDRlVSTENvbm5lY3Rpb25S
ZWYsIENGSW5kZXgsIENGSW5kZXggdG90YWxCeXRlc1dyaXR0ZW4sIENGSW5kZXggdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNf
Y2FzdDxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpLT5kaWRTZW5kQm9keURhdGEodG90YWxCeXRlc1dyaXR0ZW4sIHRv
dGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOworfQorCitCb29sZWFuIFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2so
Q0ZVUkxDb25uZWN0aW9uUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUNh
bGxiYWNrKCk7CisKK30KKworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sp
CitCb29sZWFuIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3Bv
bmRUb1Byb3RlY3Rpb25TcGFjZShDRlVSTENvbm5lY3Rpb25SZWYsIENGVVJMUHJvdGVjdGlvblNw
YWNlUmVmIHByb3RlY3Rpb25TcGFjZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSo+
KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNw
YWNlKHByb3RlY3Rpb25TcGFjZSk7Cit9CisjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0Vf
QVVUSF9DQUxMQkFDSykKKworI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykK
K3ZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURh
dGFBcnJheShDRlVSTENvbm5lY3Rpb25SZWYsIENGQXJyYXlSZWYgZGF0YUFycmF5LCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJl
Y2VpdmVEYXRhQXJyYXkoZGF0YUFycmF5KTsKK30KKyNlbmRpZiAvLyBVU0UoTkVUV09SS19DRkRB
VEFfQVJSQVlfQ0FMTEJBQ0spCisKK0NGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiBSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjptYWtlQ29ubmVjdGlvbkNsaWVudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHsgNiwgdGhpcywgMCwgMCwgMCwKKyAgICAgICAgJlJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCwKKyAgICAgICAgJlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVSZXNwb25zZSwK
KyAgICAgICAgJlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2Vp
dmVEYXRhLAorICAgICAgICAwLAorICAgICAgICAmUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZywKKyAgICAgICAgJlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZEZhaWwsCisgICAgICAgICZSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsQ2FjaGVSZXNwb25zZSwKKyAgICAgICAgJlJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UsCisg
ICAgICAgICZSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRTZW5kQm9k
eURhdGEsCisgICAgICAgICZSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUNhbGxiYWNrLAorICAgICAgICAwLAorI2lmIFVTRShQ
Uk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAgICAgICZSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UsCisjZWxz
ZQorICAgICAgICAwLAorI2VuZGlmCisgICAgICAgIDAsCisjaWYgVVNFKE5FVFdPUktfQ0ZEQVRB
X0FSUkFZX0NBTExCQUNLKQorICAgICAgICAmUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJheQorI2Vsc2UKKyAgICAgICAgMAorI2VuZGlmCisg
ICAgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KKworI2VuZGlmIC8vIFVTRShDRk5F
VFdPUkspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgxMmUwZTczOWQ5ZTkxYTI4ODFmOTQwNjgwZTAzZDY1ZDM3ZTRhN2MKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaApAQCAtMCwwICsxLDg2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVf
aAorI2RlZmluZSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKKworI2lm
IFVTRShDRk5FVFdPUkspCisKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJp
di5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFJlc291cmNlSGFuZGxlOworCitjbGFzcyBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU+IHsKK3B1YmxpYzoKKyAgICBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKFJlc291cmNlSGFuZGxlKik7CisgICAg
dmlydHVhbCB+UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSgpOworCisgICAg
Q0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IG1ha2VDb25uZWN0aW9uQ2xpZW50KCkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZV
UkxDb25uZWN0aW9uUmVmLCBDRlVSTFJlcXVlc3RSZWYsIENGVVJMUmVzcG9uc2VSZWYsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShD
RlVSTENvbm5lY3Rpb25SZWYsIENGVVJMUmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKENGVVJMQ29ubmVjdGlvblJlZiwg
Q0ZEYXRhUmVmLCBDRkluZGV4IG9yaWdpbmFsTGVuZ3RoLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKENGVVJMQ29ubmVjdGlvblJlZiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkRmFpbChDRlVSTENv
bm5lY3Rpb25SZWYsIENGRXJyb3JSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0
YXRpYyBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKENGVVJMQ29ubmVj
dGlvblJlZiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShDRlVSTENvbm5lY3Rpb25SZWYs
IENGVVJMQXV0aENoYWxsZW5nZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3Rh
dGljIHZvaWQgZGlkU2VuZEJvZHlEYXRhKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZJbmRleCwgQ0ZJ
bmRleCB0b3RhbEJ5dGVzV3JpdHRlbiwgQ0ZJbmRleCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRl
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgQm9vbGVhbiBzaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZUNhbGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKyAg
ICBzdGF0aWMgQm9vbGVhbiBjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UoQ0ZVUkxDb25uZWN0
aW9uUmVmLCBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CisjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKyNpZiBVU0Uo
TkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZURhdGFBcnJheShDRlVSTENvbm5lY3Rpb25SZWYsIENGQXJyYXlSZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOworI2VuZGlmIC8vIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykK
KworICAgIHZpcnR1YWwgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDRlVSTFJlcXVl
c3RSZWYsIENGVVJMUmVzcG9uc2VSZWYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKENGVVJMUmVzcG9uc2VSZWYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoQ0ZEYXRhUmVmLCBDRkluZGV4IG9yaWdpbmFsTGVuZ3RoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoQ0ZFcnJvclJlZikgPSAwOworICAgIHZpcnR1YWwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3
aWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFNlbmRCb2R5RGF0YShDRkluZGV4IHRvdGFsQnl0ZXNXcml0dGVu
LCBDRkluZGV4IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpID0gMDsKKyAgICB2aXJ0dWFsIEJv
b2xlYW4gc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VDYWxsYmFjaygpID0gMDsKKyNpZiBVU0Uo
UFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorICAgIHZpcnR1YWwgQm9vbGVhbiBjYW5S
ZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpID0gMDsKKyNl
bmRpZiAvLyBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorI2lmIFVTRShORVRX
T1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkgPSAwOworI2VuZGlmIC8vIFVTRShORVRXT1JL
X0NGREFUQV9BUlJBWV9DQUxMQkFDSykKKworcHJvdGVjdGVkOgorICAgIFJlc291cmNlSGFuZGxl
KiBtX2hhbmRsZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCisKKyNlbmRpZiAvLyBV
U0UoQ0ZORVRXT1JLKQorCisjZW5kaWYgLy8gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRkMTA2OTA4MDI5NThh
MGE5ODNiNjllMWYwYjMyZjEyMmZmMDQzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLmNwcApAQCAtMCwwICsxLDI5MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNC0yMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgorCisjaWYgVVNFKENGTkVUV09SSykKKworI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uQ0YuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
IgorI2luY2x1ZGUgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZS5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCisjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkNvcmVVUkxSZXNwb25zZS5oIgorI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAi
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSkKKyAgICA6IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUo
aGFuZGxlKQoreworfQorCitzdGF0aWMgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHN5bnRo
ZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBj
dXJyZW50UmVxdWVzdCwgQ0ZVUkxSZXF1ZXN0UmVmIG5ld1JlcXVlc3QsIENGVVJMUmVzcG9uc2VS
ZWYgY2ZSZWRpcmVjdFJlc3BvbnNlKQoreworICAgIGlmIChjZlJlZGlyZWN0UmVzcG9uc2UpCisg
ICAgICAgIHJldHVybiBjZlJlZGlyZWN0UmVzcG9uc2U7CisKKyAgICBDRlVSTFJlZiBuZXdVUkwg
PSBDRlVSTFJlcXVlc3RHZXRVUkwobmV3UmVxdWVzdCk7CisgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBuZXdTY2hlbWUgPSBhZG9wdENGKENGVVJMQ29weVNjaGVtZShuZXdVUkwpKTsKKworICAg
IC8vIElmIHRoZSBwcm90b2NvbHMgb2YgdGhlIG5ldyByZXF1ZXN0IGFuZCB0aGUgY3VycmVudCBy
ZXF1ZXN0IG1hdGNoLCB0aGlzIGlzIG5vdCBhbiBIU1RTIHJlZGlyZWN0IGFuZCB3ZSBzaG91bGRu
J3Qgc3ludGhlc2l6ZSBhIHJlZGlyZWN0IHJlc3BvbnNlLgorICAgIGlmIChjdXJyZW50UmVxdWVz
dC51cmwoKS5wcm90b2NvbCgpID09IFN0cmluZyhuZXdTY2hlbWUuZ2V0KCkpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY3VycmVudFVSTCA9IGN1cnJlbnRS
ZXF1ZXN0LnVybCgpLmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VS
ZWY+IHJlc3BvbnNlTWVzc2FnZSA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNyZWF0ZVJlc3BvbnNl
KDAsIDMwMiwgMCwga0NGSFRUUFZlcnNpb24xXzEpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IG5ld0Fic29sdXRlVVJMID0gYWRvcHRDRihDRlVSTENvcHlBYnNvbHV0ZVVSTChuZXdVUkwpKTsK
KyAgICBDRkhUVFBNZXNzYWdlU2V0SGVhZGVyRmllbGRWYWx1ZShyZXNwb25zZU1lc3NhZ2UuZ2V0
KCksIENGU1RSKCJMb2NhdGlvbiIpLCBDRlVSTEdldFN0cmluZyhuZXdBYnNvbHV0ZVVSTC5nZXQo
KSkpOworICAgIENGSFRUUE1lc3NhZ2VTZXRIZWFkZXJGaWVsZFZhbHVlKHJlc3BvbnNlTWVzc2Fn
ZS5nZXQoKSwgQ0ZTVFIoIkNhY2hlLUNvbnRyb2wiKSwgQ0ZTVFIoIm5vLXN0b3JlIikpOworCisg
ICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IG5ld1Jlc3BvbnNlID0gYWRvcHRDRihDRlVS
TFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZSgwLCBjdXJyZW50VVJMLmdldCgpLCByZXNw
b25zZU1lc3NhZ2UuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZU5vdEFsbG93ZWQpKTsKKyAgICBy
ZXR1cm4gbmV3UmVzcG9uc2U7Cit9CisKK0NGVVJMUmVxdWVzdFJlZiBTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdChDRlVSTFJl
cXVlc3RSZWYgY2ZSZXF1ZXN0LCBDRlVSTFJlc3BvbnNlUmVmIG9yaWdpbmFsUmVkaXJlY3RSZXNw
b25zZSkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJlZj4gcmVkaXJlY3RSZXNwb25z
ZSA9IHN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkobV9oYW5kbGUtPmN1cnJl
bnRSZXF1ZXN0KCksIGNmUmVxdWVzdCwgb3JpZ2luYWxSZWRpcmVjdFJlc3BvbnNlKTsKKworICAg
IGlmICghcmVkaXJlY3RSZXNwb25zZSkgeworICAgICAgICBDRlJldGFpbihjZlJlcXVlc3QpOwor
ICAgICAgICByZXR1cm4gY2ZSZXF1ZXN0OworICAgIH0KKworICAgIExPRyhOZXR3b3JrLCAiQ0ZO
ZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6Ondp
bGxTZW5kUmVxdWVzdChoYW5kbGU9JXApICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0
UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3Q7CisgICAgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJM
UmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7CisgICAgaWYg
KGh0dHBNZXNzYWdlICYmIENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1l
c3NhZ2UpID09IDMwNykgeworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxhc3RIVFRQ
TWV0aG9kID0gbV9oYW5kbGUtPmxhc3RIVFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAg
ICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdNZXRob2QgPSBhZG9wdENGKENGVVJMUmVx
dWVzdENvcHlIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QpKTsKKyAgICAgICAgaWYgKENGU3Ry
aW5nQ29tcGFyZVdpdGhPcHRpb25zKGxhc3RIVFRQTWV0aG9kLmdldCgpLCBuZXdNZXRob2QuZ2V0
KCksIENGUmFuZ2VNYWtlKDAsIENGU3RyaW5nR2V0TGVuZ3RoKGxhc3RIVFRQTWV0aG9kLmdldCgp
KSksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZj4gbXV0YWJsZVJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVx
dWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIGNmUmVxdWVzdCkpOworICAgICAgICAgICAgd2tTZXRS
ZXF1ZXN0U3RvcmFnZVNlc3Npb24obV9oYW5kbGUtPnN0b3JhZ2VTZXNzaW9uKCksIG11dGFibGVS
ZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0
aG9kKG11dGFibGVSZXF1ZXN0LmdldCgpLCBsYXN0SFRUUE1ldGhvZC5nZXQoKSk7CisKKyAgICAg
ICAgICAgIEZvcm1EYXRhKiBib2R5ID0gbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmh0dHBCb2R5
KCk7CisgICAgICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKG1faGFuZGxlLT5maXJzdFJl
cXVlc3QoKS5odHRwTWV0aG9kKCksICJHRVQiKSAmJiBib2R5ICYmICFib2R5LT5pc0VtcHR5KCkp
CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkobXV0YWJsZVJlcXVlc3QuZ2V0
KCksIGJvZHkpOworCisgICAgICAgICAgICBTdHJpbmcgb3JpZ2luYWxDb250ZW50VHlwZSA9IG1f
aGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwQ29udGVudFR5cGUoKTsKKyAgICAgICAgICAgIGlm
ICghb3JpZ2luYWxDb250ZW50VHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgQ0ZVUkxS
ZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUobXV0YWJsZVJlcXVlc3QuZ2V0KCksIENGU1RS
KCJDb250ZW50LVR5cGUiKSwgb3JpZ2luYWxDb250ZW50VHlwZS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKKworICAgICAgICAgICAgcmVxdWVzdCA9IG11dGFibGVSZXF1ZXN0LmdldCgpOworICAg
ICAgICB9CisgICAgfQorICAgIGlmIChyZXF1ZXN0LmlzTnVsbCgpKQorICAgICAgICByZXF1ZXN0
ID0gY2ZSZXF1ZXN0OworCisgICAgLy8gU2hvdWxkIG5vdCBzZXQgUmVmZXJlciBhZnRlciBhIHJl
ZGlyZWN0IGZyb20gYSBzZWN1cmUgcmVzb3VyY2UgdG8gbm9uLXNlY3VyZSBvbmUuCisgICAgaWYg
KCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgJiYgcHJvdG9jb2xJcyhyZXF1ZXN0
Lmh0dHBSZWZlcnJlcigpLCAiaHR0cHMiKSAmJiBtX2hhbmRsZS0+Y29udGV4dCgpLT5zaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkpCisgICAgICAgIHJlcXVlc3QuY2xl
YXJIVFRQUmVmZXJyZXIoKTsKKworICAgIG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVz
dCwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7CisKKyAgICBpZiAocmVxdWVzdC5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjZlJlcXVlc3QgPSByZXF1ZXN0LmNmVVJMUmVxdWVz
dChVcGRhdGVIVFRQQm9keSk7CisKKyAgICBDRlJldGFpbihjZlJlcXVlc3QpOworICAgIHJldHVy
biBjZlJlcXVlc3Q7Cit9CisKK3ZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UoQ0ZVUkxSZXNwb25zZVJlZiBjZlJl
c3BvbnNlKQoreworICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVSZXNwb25zZShoYW5kbGU9
JXApICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgaWYgKCFtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAg
ICAgIHJldHVybjsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBBdm9pZCBNSU1FIHR5cGUg
c25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmllZC4K
KyAgICBDRkhUVFBNZXNzYWdlUmVmIG1zZyA9IHdrR2V0Q0ZVUkxSZXNwb25zZUhUVFBSZXNwb25z
ZShjZlJlc3BvbnNlKTsKKyAgICBpbnQgc3RhdHVzQ29kZSA9IG1zZyA/IENGSFRUUE1lc3NhZ2VH
ZXRSZXNwb25zZVN0YXR1c0NvZGUobXNnKSA6IDA7CisKKyAgICBpZiAoc3RhdHVzQ29kZSAhPSAz
MDQpCisgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoY2ZSZXNwb25zZSk7CisKKyNp
ZiAhUExBVEZPUk0oSU9TKQorICAgIGlmIChfQ0ZVUkxSZXF1ZXN0Q29weVByb3RvY29sUHJvcGVy
dHlGb3JLZXkobV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmNmVVJMUmVxdWVzdChEb05vdFVwZGF0
ZUhUVFBCb2R5KSwgQ0ZTVFIoIkZvcmNlSFRNTE1JTUVUeXBlIikpKQorICAgICAgICB3a1NldENG
VVJMUmVzcG9uc2VNSU1FVHlwZShjZlJlc3BvbnNlLCBDRlNUUigidGV4dC9odG1sIikpOworI2Vu
ZGlmIC8vICFQTEFURk9STShJT1MpCisjZWxzZQorICAgIGlmICghQ0ZVUkxSZXNwb25zZUdldE1J
TUVUeXBlKGNmUmVzcG9uc2UpKSB7CisgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBhcHBs
eWluZyB0aGUgZGVmYXVsdCBNSU1FVHlwZSBpZiB3ZSB0b2xkIHRoZSBuZXR3b3JraW5nIGxheWVy
IHRvIGRvIGNvbnRlbnQgc25pZmZpbmcgZm9yIGhhbmRsZS4KKyAgICAgICAgQVNTRVJUKCFtX2hh
bmRsZS0+c2hvdWxkQ29udGVudFNuaWZmKCkpOworICAgICAgICBzZXREZWZhdWx0TUlNRVR5cGUo
Y2ZSZXNwb25zZSk7CisgICAgfQorI2VuZGlmCisKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBt
X2hhbmRsZS0+c2V0UXVpY2tMb29rSGFuZGxlKFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKG1faGFu
ZGxlLCB0aGlzLCBjZlJlc3BvbnNlKSk7CisgICAgaWYgKG1faGFuZGxlLT5xdWlja0xvb2tIYW5k
bGUoKSkKKyAgICAgICAgY2ZSZXNwb25zZSA9IG1faGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+
Y2ZSZXNwb25zZSgpOworI2VuZGlmCisKKyAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2Vp
dmVSZXNwb25zZShtX2hhbmRsZSwgY2ZSZXNwb25zZSk7Cit9CisKK3ZvaWQgU3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YShDRkRh
dGFSZWYgZGF0YSwgQ0ZJbmRleCBvcmlnaW5hbExlbmd0aCkKK3sKKyAgICBMT0coTmV0d29yaywg
IkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
OjpkaWRSZWNlaXZlRGF0YShoYW5kbGU9JXAsIGJ5dGVzPSVsZCkgKCVzKSIsIG1faGFuZGxlLCBD
RkRhdGFHZXRMZW5ndGgoZGF0YSksIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKworI2lmIFVTRShRVUlDS19MT09LKQorICAgIGlmIChtX2hh
bmRsZS0+cXVpY2tMb29rSGFuZGxlKCkgJiYgbV9oYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpLT5k
aWRSZWNlaXZlRGF0YShkYXRhKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBpZiAo
UmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IG1faGFuZGxlLT5jbGllbnQoKSkKKyAgICAg
ICAgY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OndyYXBD
RkRhdGEoZGF0YSksIG9yaWdpbmFsTGVuZ3RoKTsKK30KKwordm9pZCBTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZEZpbmlzaExvYWRpbmcoKQorewor
ICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGU6OmRpZEZpbmlzaExvYWRpbmcoaGFuZGxlPSVwKSAoJXMpIiwgbV9o
YW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKworI2lmIFVTRShRVUlDS19MT09LKQorICAgIGlmIChtX2hhbmRsZS0+cXVpY2tMb29r
SGFuZGxlKCkgJiYgbV9oYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpLT5kaWRGaW5pc2hMb2FkaW5n
KCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgaWYgKFJlc291cmNlSGFuZGxlQ2xp
ZW50KiBjbGllbnQgPSBtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+ZGlkRmlu
aXNoTG9hZGluZyhtX2hhbmRsZSwgMCk7Cit9CisKK3ZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRGYWlsKENGRXJyb3JSZWYgZXJyb3IpCit7
CisgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkRmFpbChoYW5kbGU9JXAsIGVycm9yID0gJXApICglcyki
LCBtX2hhbmRsZSwgZXJyb3IsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKworI2lmIFVTRShRVUlDS19MT09LKQorICAgIGlmIChRdWlja0xv
b2tIYW5kbGUqIHF1aWNrTG9va0hhbmRsZSA9IG1faGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKSkK
KyAgICAgICAgcXVpY2tMb29rSGFuZGxlLT5kaWRGYWlsKCk7CisjZW5kaWYKKworICAgIGlmIChS
ZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gbV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAg
ICBjbGllbnQtPmRpZEZhaWwobV9oYW5kbGUsIFJlc291cmNlRXJyb3IoZXJyb3IpKTsKK30KKwor
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGU6OndpbGxDYWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYg
Y2FjaGVkUmVzcG9uc2UpCit7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIC8vIFdvcmthcm91bmQg
Zm9yIDxyZGFyOi8vcHJvYmxlbS82MzAwOTkwPiBDYWNoaW5nIGRvZXMgbm90IHJlc3BlY3QgVmFy
eSBIVFRQIGhlYWRlci4KKyAgICAvLyBGSVhNRTogV2ViQ29yZSBjYWNoZSBoYXMgaXNzdWVzIHdp
dGggVmFyeSwgdG9vIChidWcgNTg3OTcsIGJ1ZyA3MTUwOSkuCisgICAgQ0ZVUkxSZXNwb25zZVJl
ZiB3cmFwcGVkUmVzcG9uc2UgPSBDRkNhY2hlZFVSTFJlc3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNl
KGNhY2hlZFJlc3BvbnNlKTsKKyAgICBpZiAoQ0ZIVFRQTWVzc2FnZVJlZiBodHRwUmVzcG9uc2Ug
PSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKHdyYXBwZWRSZXNwb25zZSkpIHsKKyAgICAg
ICAgQVNTRVJUKENGSFRUUE1lc3NhZ2VJc0hlYWRlckNvbXBsZXRlKGh0dHBSZXNwb25zZSkpOwor
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHZhcnlWYWx1ZSA9IGFkb3B0Q0YoQ0ZIVFRQ
TWVzc2FnZUNvcHlIZWFkZXJGaWVsZFZhbHVlKGh0dHBSZXNwb25zZSwgQ0ZTVFIoIlZhcnkiKSkp
OworICAgICAgICBpZiAodmFyeVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
I2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKKworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAobV9o
YW5kbGUtPmNsaWVudCgpICYmICFtX2hhbmRsZS0+Y2xpZW50KCktPnNob3VsZENhY2hlUmVzcG9u
c2UobV9oYW5kbGUsIGNhY2hlZFJlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuIDA7CisjZWxzZQor
ICAgIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgbmV3UmVzcG9uc2UgPSBtX2hhbmRsZS0+Y2xpZW50
KCktPndpbGxDYWNoZVJlc3BvbnNlKG1faGFuZGxlLCBjYWNoZWRSZXNwb25zZSk7CisgICAgaWYg
KG5ld1Jlc3BvbnNlICE9IGNhY2hlZFJlc3BvbnNlKQorICAgICAgICByZXR1cm4gbmV3UmVzcG9u
c2U7CisjZW5kaWYKKworICAgIENGUmV0YWluKGNhY2hlZFJlc3BvbnNlKTsKKyAgICByZXR1cm4g
Y2FjaGVkUmVzcG9uc2U7Cit9CisKK3ZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5n
ZVJlZiBjaGFsbGVuZ2UpCit7CisgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5n
ZShoYW5kbGU9JXAgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBtX2hhbmRsZS0+ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSwg
bV9oYW5kbGUpKTsKK30KKwordm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGU6OmRpZFNlbmRCb2R5RGF0YShDRkluZGV4IHRvdGFsQnl0ZXNXcml0dGVu
LCBDRkluZGV4IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCit7CisgICAgaWYgKCFtX2hhbmRs
ZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAgICByZXR1cm47CisgICAgbV9oYW5kbGUt
PmNsaWVudCgpLT5kaWRTZW5kRGF0YShtX2hhbmRsZSwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGUpOworfQorCitCb29sZWFuIFN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VD
YWxsYmFjaygpCit7CisgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGlmICghbV9oYW5kbGUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2hhbmRsZS0+c2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UoKTsKK30KKworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJB
Q0spCitCb29sZWFuIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVm
IHByb3RlY3Rpb25TcGFjZSkKK3sKKyAgICBBU1NFUlQobV9oYW5kbGUpOworCisgICAgTE9HKE5l
dHdvcmssICJDRk5ldCAtIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKGhhbmRsZT0lcCAoJXMpIiwgbV9o
YW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBQcm90ZWN0aW9uU3BhY2UgY29yZVByb3Rl
Y3Rpb25TcGFjZSA9IGNvcmUocHJvdGVjdGlvblNwYWNlKTsKKyAgICBpZiAoY29yZVByb3RlY3Rp
b25TcGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRp
Y2F0aW9uU2NoZW1lVW5rbm93bikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBt
X2hhbmRsZS0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlUHJvdGVj
dGlvblNwYWNlKTsKKyNlbHNlCisgICAgcmV0dXJuIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvcmUocHJvdGVjdGlvblNwYWNlKSk7CisjZW5kaWYKK30K
KyNlbmRpZiAvLyBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorCisjaWYgVVNF
KE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQordm9pZCBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJh
eVJlZiBkYXRhQXJyYXkpCit7CisgICAgaWYgKCFtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQXJyYXkoaGFuZGxl
PSVwLCBhcnJheUxlbmd0aD0lbGQpICglcykiLCBtX2hhbmRsZSwgQ0ZBcnJheUdldENvdW50KGRh
dGFBcnJheSksIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKworI2lmIFVTRShRVUlDS19MT09LKQorICAgIGlmIChtX2hhbmRsZS0+cXVpY2tM
b29rSGFuZGxlKCkgJiYgbV9oYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpLT5kaWRSZWNlaXZlRGF0
YUFycmF5KGRhdGFBcnJheSkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgbV9oYW5k
bGUtPmhhbmRsZURhdGFBcnJheShkYXRhQXJyYXkpOworfQorI2VuZGlmIC8vIFVTRShORVRXT1JL
X0NGREFUQV9BUlJBWV9DQUxMQkFDSykKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTZkYThlYTI2NzM0YTdlYzFhMTYzODBh
ZjQyMjQwZDU1NTI3ZjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGUuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTMg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN5bmNocm9u
b3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9oCisjZGVmaW5lIFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9oCisKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQorCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFN5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSBGSU5BTCA6IHB1YmxpYyBSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoUmVzb3VyY2VIYW5kbGUqKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShDRkRhdGFSZWYsIENGSW5kZXggb3JpZ2lu
YWxMZW5ndGgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoQ0ZFcnJvclJlZikgT1ZFUlJJREU7
CisjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KSBPVkVSUklERTsKKyNl
bmRpZiAvLyBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisKKworcHJpdmF0ZToK
KyAgICB2aXJ0dWFsIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0
UmVmLCBDRlVSTFJlc3BvbnNlUmVmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKENGVVJMUmVzcG9uc2VSZWYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShDRlVS
TEF1dGhDaGFsbGVuZ2VSZWYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kQm9k
eURhdGEoQ0ZJbmRleCB0b3RhbEJ5dGVzV3JpdHRlbiwgQ0ZJbmRleCB0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEJvb2xlYW4gc2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2VDYWxsYmFjaygpIE9WRVJSSURFOworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNF
X0FVVEhfQ0FMTEJBQ0spCisgICAgdmlydHVhbCBCb29sZWFuIGNhblJlc3BvbmRUb1Byb3RlY3Rp
b25TcGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZikgT1ZFUlJJREU7CisjZW5kaWYgLy8gVVNF
KFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUuCisKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorCisjZW5kaWYgLy8gUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218725</attachid>
            <date>2013-12-08 21:57:24 -0800</date>
            <delta_ts>2013-12-08 22:40:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125379-20131208215722.patch</filename>
            <type>text/plain</type>
            <size>70320</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYyZjczYWU0ZDMyNWNi
ZmUxYmFiMjNlNWI0ZTVmNDEwNDE3ZmE2Yi4uMTVkYzE2OWE4NTNlZTM0MWRjMjQyZDc4OGI5MWI1
M2FkOTNkMTMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTEyLTA4ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHRo
ZSBDRlVSTENvbm5lY3Rpb25DbGllbnQgdG8gYmUgdGhlIHN5bmNocm9ub3VzIGltcGxlbWVudGF0
aW9uIG9mIGFuIGFic3RyYWN0IG5ldHdvcmsgZGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTM3OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
OjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6On5SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdENhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRp
ZFJlY2VpdmVSZXNwb25zZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlk
RmluaXNoTG9hZGluZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZEZhaWxDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsQ2FjaGVSZXNw
b25zZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVDaGFsbGVuZ2VDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRTZW5kQm9k
eURhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNh
blJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQXJyYXlD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlOjptYWtlQ29ubmVjdGlvbkNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmg6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OlN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFNlbmRCb2R5RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
OjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlRGF0
YUFycmF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oOiBBZGRlZC4KKwogMjAxMy0xMi0wOCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBnZXRDb21wdXRlZFN0
eWxlIGJvcmRlci1yYWRpdXMgc2hvcnRoYW5kIG9taXRzIHZlcnRpY2FsIHJhZGl1cyBpbmZvcm1h
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oK
aW5kZXggYTNmODA5N2FlZTU3Y2MxZmNiMGFhMjhjMmRjNWE2MmJhZWE4MWU5ZC4uMjI3NjE5MDk0
NTgyZTZjMTcwZjllMDY5N2Q4OGVkMGMzY2Y1M2ZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC04Mjc3LDYgKzgyNzcsMTIgQEAKICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3Bw
Ij4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCI+CiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CkBAIC04MzAxLDYgKzgzMDcsMTIgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2lu
Q2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAiPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgor
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcd2luXERvd25sb2FkQnVuZGxlV2luLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcd2luXE5ldHdvcmtTdGF0ZU5vdGlmaWVyV2luLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFxD
b29raWVKYXJDdXJsLmNwcCI+CkBAIC0xOTUwMywxMSArMTk1MTUsMTMgQEAKICAgICA8Q3VzdG9t
QnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcRm9ybURhdGFTdHJlYW1D
Rk5ldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xj
ZlxMb2FkZXJSdW5Mb29wQ0YuaCIgLz4KICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3VyY2VFcnJvci5oIiAvPgorICAgIDxDdXN0b21CdWls
ZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmgiIC8+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlUmVxdWVzdC5oIiAvPgogICAgIDxDdXN0b21C
dWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxSZXNvdXJjZVJlcXVlc3RD
Rk5ldC5oIiAvPgogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0
d29ya1xjZlxSZXNvdXJjZVJlc3BvbnNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFNvY2tldFN0cmVhbUVycm9yLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFNvY2tldFN0cmVhbUhhbmRsZS5o
IiAvPgorICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xj
ZlxTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIgLz4K
ICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBmMGIwMjY2MDI0NDJkZGRkMDFmYTAxMjgw
ZTE2NjZjZGU0N2U2MTIxLi5lZTI1ODBmMDNiYjM5ZDk2ZTdjYTg4NzRmMGUwMjM5YTY3Mjk4YmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCkBAIC0xODgxLDYgKzE4ODEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCI+CiAg
ICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY2Y8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxuZXR3b3JrXGNmPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlUmVxdWVzdENGTmV0LmNw
cCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY2Y8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTE4OTMsNiArMTg5Niw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Q0ZOZXQuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjZjwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIj4KKyAgICAg
IDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjZjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1x3aW5cRG93bmxvYWRC
dW5kbGVXaW4uY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1x3aW48L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE1MDkyLDYgKzE1MDk4LDkgQEAKICAgICA8Q3VzdG9t
QnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3VyY2VFcnJvci5o
Ij4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjZjwvRmlsdGVyPgogICAgIDwvQ3Vz
dG9tQnVpbGRTdGVwPgorICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
bmV0d29ya1xjZlxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiPgorICAg
ICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGNmPC9GaWx0ZXI+CisgICAgPC9DdXN0b21CdWls
ZFN0ZXA+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3Jr
XGNmXFJlc291cmNlUmVxdWVzdC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xj
ZjwvRmlsdGVyPgogICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgpAQCAtMTUxMDEsNiArMTUxMTAsOSBA
QAogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxS
ZXNvdXJjZVJlc3BvbnNlLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGNmPC9G
aWx0ZXI+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xj
ZjwvRmlsdGVyPgorICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgogICAgIDxDdXN0b21CdWlsZFN0ZXAg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRlcj4KICAgICA8
L0N1c3RvbUJ1aWxkU3RlcD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAyNjkxNGQ1MWU1NWMxMzIxZmM0NTY1NzM1ZGUzNDU1NmU1
YTVlZjUyLi4xNGNhMjYwN2RiYjZmM2I5OGQ0YWYwNDkxMzhkY2JjMWYxMTIyMGNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
MTQsNiArOTE0LDEwIEBACiAJCTI2QzE3QTNGMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVt
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZD
MTdBM0QxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MubW0gKi87IH07CiAJCTI2RTk4
QTEwMTMwQTlGQ0EwMDhFQjdCMiAvKiBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkU5OEEwRjEzMEE5RkNBMDA4
RUI3QjIgLyogVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oICovOyB9OwogCQkyNkY0MEQ0QTE0OTA0
QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGNDBENDkxNDkwNEE2MzAwQ0E2N0M0IC8qIEV2ZW50TG9v
cElPUy5tbSAqLzsgfTsKKwkJMjZGQUU0Q0MxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGQUU0QzgxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICovOyB9OworCQkyNkZBRTRDRDE4NTJF
M0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGQUU0QzkxODUy
RTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCAq
LzsgfTsKKwkJMjZGQUU0Q0UxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkZBRTRDQTE4NTJFM0E1MDA0QzhDNDYgLyogU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLzsgfTsKKwkJ
MjZGQUU0Q0YxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZGQUU0Q0IxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oICovOyB9OwogCQkyOTE3QjU2MTE0NzM0
OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTE3QjU1RTE0NzM0OTZDMDA1MkM5RDAgLyog
TGF5ZXJGbHVzaFNjaGVkdWxlci5jcHAgKi87IH07CiAJCTI5MTdCNTYyMTQ3MzQ5NkMwMDUyQzlE
MCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOTE3QjU1RjE0NzM0OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNj
aGVkdWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTI5MTdCNTYzMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTE3QjU2
MDE0NzM0OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MjY5LDYgKzUyNzMs
NyBAQAogCQlDNTI3OEIwQzE3RjIxMkVBMDAzQTI5OTggLyogUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUyNzhC
MEIxN0YyMTJFQTAwM0EyOTk4IC8qIFBsYXRmb3JtUGFzdGVib2FyZElPUy5tbSAqLzsgfTsKIAkJ
QzU0NDI3NEIxMUE1N0U3QTAwNjNBNzQ5IC8qIERPTVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDQyNzQ5MTFBNTdFN0EwMDYzQTc0
OSAvKiBET01TdHJpbmdMaXN0LmggKi87IH07CiAJCUM1NTYxMEYxMTFBNzA0RUIwMEI4MkQyNyAv
KiBET01TdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM1NTYxMEYwMTFBNzA0RUIwMEI4MkQyNyAvKiBET01TdHJpbmdMaXN0LmNwcCAq
LzsgfTsKKwkJQzU1QzdCQTExNzE4QUZCQTAwMTMyN0U0IC8qIFJlbmRlclRoZW1lSU9TLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU1QzdCQTAxNzE4
QUZCQTAwMTMyN0U0IC8qIFJlbmRlclRoZW1lSU9TLm1tICovOyB9OwogCQlDNTVFMzhCRjEwMDQw
RDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NUUzOEJCMTAwNDBENUQwMEE1NkJEQiAvKiBT
dG9yYWdlTmFtZXNwYWNlSW1wbC5oICovOyB9OwogCQlDNTVFMzhDMDEwMDQwRDVEMDBBNTZCREIg
LyogU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzU1RTM4QkMxMDA0MEQ1RDAwQTU2QkRCIC8qIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcCAqLzsgfTsKIAkJQzU3MkVFMUYxMjAxQzlCQzAwN0Q4RjgyIC8qIEpTSURC
SW5kZXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1
NzJFRTFEMTIwMUM5QkMwMDdEOEY4MiAvKiBKU0lEQkluZGV4LmggKi87IH07CkBAIC01NDQ3LDgg
KzU0NTIsNiBAQAogCQlDRTdCMkRCNTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZl
V2l0aFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTdCMkRCMTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U3QjJE
QjYxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIyMTU4NkFCQUQw
MDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gKi87IH07CiAJCUNFOTUyMDhB
MTgxMUI0NzUwMDdBNTM5MiAvKiBXZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkM0Q0IxRDE2MUExMzEy
MDBEMjE0REEgLyogV2ViU2FmZUluY3JlbWVudGFsU3dlZXBlcklPUy5oICovOyB9OwotCQlGRUQx
M0Q1MjBDRUE5NDk3MDBEODk0NjYgLyogUmVuZGVyVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDEzRDUwMENFQTk0OTcwMEQ4OTQ2NiAv
KiBSZW5kZXJUaGVtZUlPUy5oICovOyB9OwotCQlDNTVDN0JBMTE3MThBRkJBMDAxMzI3RTQgLyog
UmVuZGVyVGhlbWVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDNTVDN0JBMDE3MThBRkJBMDAxMzI3RTQgLyogUmVuZGVyVGhlbWVJT1MubW0gKi87
IH07CiAJCUNFQ0FERkM2MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZD
MjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwICovOyB9OwogCQlD
RUNBREZDNzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQ0FERkMzMTUzNzc4RkYw
MEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFQ0FERkM4MTUzNzc4RkYwMEUzNzA2OCAvKiBE
aWN0YXRpb25Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFQ0FERkM0MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmNw
cCAqLzsgfTsKQEAgLTYzMjUsNiArNjMyOCw3IEBACiAJCUZFQkM1RjMxMTZCRDBDQzMwMDY1OUJE
MyAvKiBEYXRhYmFzZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVCQzVGMkYxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAg
Ki87IH07CiAJCUZFQkM1RjMyMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQkM1RjMwMTZCRDBD
QzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUQxM0QzQTBDRUE5MzQ2MDBEODk0NjYgLyogRWRpdG9y
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVE
MTNEMzkwQ0VBOTM0NjAwRDg5NDY2IC8qIEVkaXRvcklPUy5tbSAqLzsgfTsKKwkJRkVEMTNENTIw
Q0VBOTQ5NzAwRDg5NDY2IC8qIFJlbmRlclRoZW1lSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQxM0Q1MDBDRUE5NDk3MDBEODk0NjYgLyogUmVu
ZGVyVGhlbWVJT1MuaCAqLzsgfTsKIAkJRkVENDgzOTBDRUQ2NkMzMjU1RjcyQzU5IC8qIE1hdGhN
TFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjc1QTA1OUFGMTcwRDhGQUE1QjhDQUJFIC8qIE1hdGhNTFNlbGVjdEVsZW1lbnQu
Y3BwICovOyB9OwogCQlGRURCRkYxNjE4MkI3QThEMDAxN0ZBNjQgLyogQnJlYWtwb2ludElELmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURCRkYxNDE4
MkI3QThEMDAxN0ZBNjQgLyogQnJlYWtwb2ludElELmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRBIC8qIERh
dGFiYXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3Bw
ICovOyB9OwpAQCAtNzU2MSw2ICs3NTY1LDEwIEBACiAJCTI2QzE3QTNEMTQ5MUQyRDQwMEQxMkJB
MiAvKiBGaWxlU3lzdGVtSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gRmlsZVN5c3RlbUlPUy5tbTsgcGF0aCA9IGlvcy9GaWxlU3lzdGVtSU9TLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkU5OEEwRjEzMEE5RkNBMDA4RUI3QjIgLyogVGV4
dENvZGVjQVNDSUlGYXN0UGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2
RjQwRDQ5MTQ5MDRBNjMwMENBNjdDNCAvKiBFdmVudExvb3BJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFdmVudExvb3BJT1MubW07IHBhdGggPSBpb3MvRXZl
bnRMb29wSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkZBRTRDODE4NTJF
M0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZG
QUU0QzkxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
NkZBRTRDQTE4NTJFM0E1MDA0QzhDNDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2RkFFNENCMTg1MkUzQTUwMDRDOEM0NiAv
KiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5
MTdCNTVFMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExheWVyRmx1c2hTY2hlZHVsZXIuY3BwOyBw
YXRoID0gY2EvTGF5ZXJGbHVzaFNjaGVkdWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI5MTdCNTVGMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExheWVyRmx1c2hTY2hlZHVsZXIuaDsg
cGF0aCA9IGNhL0xheWVyRmx1c2hTY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjkxN0I1NjAxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXJDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGF5ZXJGbHVzaFNjaGVkdWxl
ckNsaWVudC5oOyBwYXRoID0gY2EvTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIzNDcsNiArMTIzNTUsNyBAQAogCQlDNTQ0Mjc0OTEx
QTU3RTdBMDA2M0E3NDkgLyogRE9NU3RyaW5nTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01TdHJpbmdMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUM1NDQyNzRBMTFBNTdFN0EwMDYzQTc0OSAvKiBET01TdHJpbmdMaXN0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBET01TdHJpbmdMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzU1NjEwRjAxMUE3MDRFQjAwQjgyRDI3IC8qIERPTVN0cmluZ0xpc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NU3RyaW5nTGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM1NUM3QkEwMTcxOEFGQkEwMDEzMjdFNCAvKiBSZW5k
ZXJUaGVtZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJl
bmRlclRoZW1lSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTVFMzhCQjEw
MDQwRDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZU5hbWVzcGFjZUltcGwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzU1RTM4QkMxMDA0MEQ1RDAwQTU2QkRCIC8qIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU3MkVFMUQx
MjAxQzlCQzAwN0Q4RjgyIC8qIEpTSURCSW5kZXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNJREJJbmRleC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI1
NzYsOCArMTI1ODUsNiBAQAogCQlDRTdCMkRCMDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBwYXRoID0gbWFjL0FsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3
QjJEQjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaDsg
cGF0aCA9IG1hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgcGF0aCA9IG1hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFRDEzRDUwMENFQTk0OTcwMEQ4
OTQ2NiAvKiBSZW5kZXJUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDNTVDN0JB
MDE3MThBRkJBMDAxMzI3RTQgLyogUmVuZGVyVGhlbWVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW5kZXJUaGVtZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVy
bmF0aXZlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlv
bkFsdGVybmF0aXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VDQURGQzMx
NTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpY3RhdGlvbkFsdGVybmF0aXZlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNFQ0FERkM0MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21t
YW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkNv
bW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM1NDksNiArMTM1NTYs
NyBAQAogCQlGRUJDNUYyRjE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlQmFzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQkM1RjMwMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRh
YmFzZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VCYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRDEzRDM5MENFQTkzNDYwMEQ4OTQ2
NiAvKiBFZGl0b3JJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBFZGl0b3JJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRDEzRDUwMENF
QTk0OTcwMEQ4OTQ2NiAvKiBSZW5kZXJUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRURCRkYxNDE4MkI3QThEMDAxN0ZBNjQgLyogQnJlYWtwb2ludElELmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyZWFrcG9pbnRJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRURFRjgzRjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVERUY4NDAxNjc5NzEwODAwMEU0
NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGF0YWJhc2VTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1
MzMsNiArMTk1NDEsOCBAQAogCQkJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJy
b3JDRi5jcHAgKi8sCiAJCQkJN0VFNjg0NTkxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwICovLAorCQkJCTI2RkFFNEM4MTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLywKKwkJCQkyNkZBRTRDOTE4NTJF
M0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oICov
LAogCQkJCTdFRTY4NDVBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLywK
IAkJCQk3RUU2ODQ1QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3Bw
ICovLAogCQkJCTdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5l
dC5oICovLApAQCAtMTk1NDIsNiArMTk1NTIsOCBAQAogCQkJCTUxQUJBRTFDMTAzQzE5MTMwMDhD
NTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLywKIAkJCQk1MUFCQUUxRDEwM0MxOTEzMDA4
QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICovLAogCQkJCTQ0MkFCQ0Q1MTdE
OTI2MkYwMEQzMDcxNSAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudENGTmV0LmNwcCAqLywKKwkJ
CQkyNkZBRTRDQTE4NTJFM0E1MDA0QzhDNDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLywKKwkJCQkyNkZBRTRDQjE4NTJFM0E1MDA0QzhD
NDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTI0NDkzLDYgKzI0NTA1LDcgQEAKIAkJCQk3RUU2ODQ2QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0RjcxM0MwRDVBNkYxOTAwMDE4RDY5
IC8qIFJlc291cmNlRXJyb3JCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3OTBDRTky
M0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTI2RkFF
NENEMTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3QTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVz
b3VyY2VIYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3NjdCMENFOTIzQTEw
MDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUU0MTQzNDE2QTY1OTYzMDBDNjMzQzcgLyogUmVzb3VyY2VIYW5kbGVUeXBlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNTAxOCw2ICsyNTAzMSw3IEBACiAJCQkJQjIyMjdBRjYwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1pvb21BbmRQYW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRTRFQzk4MEQwMEMy
MkIwMDQzMjY0MyAvKiBTVkdab29tRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxODA4MTE3
MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMjZGQUU0Q0YxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURBOTdF
Q0QxNjhFNzg3QjAwMEUzNjc2IC8qIFN5c3RlbVZlcnNpb25NYWMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4Q0ZGMDUxMEExNTRGMDkwMDBBNDIzNCAvKiBUYWJsZUxheW91dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDcyQUUxRTUxODNDMDc0MTAwMEE1OTg4IC8qIFBsdWdpblJlcGxhY2VtZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTI3NzM2LDYgKzI3NzUwLDcgQEAKIAkJCQkwNzA1ODUxMjE3RkE3
MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTRDNzY3ODBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjZGQUU0Q0MxODUyRTNBNTAwNEM4QzQ2
IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTFCQTAwMzExNkZCOTJBQzAwQkE3QTM1IC8qIFJlc291cmNlSGFuZGxlQ2xpZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjUxMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNv
dXJjZUhhbmRsZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRTIyN0UzMEFGNTg5QUQwMEQ0
ODMyNCAvKiBSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3OTg1LDYgKzI4
MDAwLDcgQEAKIAkJCQk5M0IyRDgxODBGOTkyMEVFMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRp
b24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwODc1NThDNTEzQjRBNTdEMDBGNDkzMDcgLyogU3Vy
cm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTYyQzEy
MTdDMTFBQjlFNzcwMDNDNDYyQyAvKiBTdXNwZW5kYWJsZVRpbWVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTI2RkFFNENFMTg1MkUzQTUwMDRDOEM0NiAvKiBTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5
NzMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTI0RDkxMkIwMTNDQTlBMUYwMEQyMTkxNSAvKiBTVkdBbHRHbHlwaERlZkVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjU2NTNGMkQwRDk3MjdEMjAwQ0E5NzIzIC8qIFNWR0FsdEdseXBo
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBmZjgwNjc0OWE2MWIzNjZlN2FiZjgyNmI5
NGIwMmM3NGQ4YWNiMDJhLi41OGEyMjI3MmQ1NThhMTEyYzRmZWUzMWMzYmI2NzI5MDNjMzMyNDU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oCkBAIC03Miw3ICs3Miw2IEBAIHR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0ICppZDsKIHR5
cGVkZWYgc3RydWN0IF9DRlVSTENvbm5lY3Rpb24qIENGVVJMQ29ubmVjdGlvblJlZjsKIHR5cGVk
ZWYgaW50IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3k7CiB0eXBlZGVmIHN0cnVjdCBP
cGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwotdHlwZWRl
ZiBzdHJ1Y3QgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IENGVVJMQ29ubmVjdGlvbkNsaWVudF9W
NjsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQpAQCAtMTQy
LDcgKzE0MSw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGN1cnJlbnRS
ZXF1ZXN0KCkgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQgc2V0SG9zdEFsbG93c0FueUhUVFBTQ2Vy
dGlmaWNhdGUoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIHZvaWQgc2V0Q2xpZW50Q2VydGlm
aWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBDRkRhdGFSZWYpOwotICAgIHN0YXRpYyBDRlVSTENv
bm5lY3Rpb25DbGllbnRfVjYqIGNvbm5lY3Rpb25DbGllbnRDYWxsYmFja3MoKTsKIAogI2lmIFVT
RShRVUlDS19MT09LKQogICAgIFF1aWNrTG9va0hhbmRsZSogcXVpY2tMb29rSGFuZGxlKCkgeyBy
ZXR1cm4gbV9xdWlja0xvb2suZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggNzVlMjI3YjY2
NzI5ZTQwZmIyOTVjMTZhNWFlZTE1YjcwNWYwNzBkMi4uMzNiMDhiMzc0NGY1N2IxYWQ5OTU1ZTk3
NzQ5MDJiNmU0NmI0ZjM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJUaW1lci5oIgogCiAjaWYgVVNFKENGTkVUV09SSykKKyNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NG
VVJMQ29ubmVjdGlvblByaXYuaD4KICNlbmRpZgogCkBAIC0xNDgsNiArMTQ5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgICAgIFJldGFpblB0cjxDRlVS
TENvbm5lY3Rpb25SZWY+IG1fY29ubmVjdGlvbjsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IG1f
Y3VycmVudFJlcXVlc3Q7CisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KE1BQykgJiYgIVVTRShDRk5FVFdPUkspCiAgICAgICAgIFJldGFpblB0cjxOU1VSTENvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDJiNmU3N2E3MmUyMDg1
ZGQ4MWM3NDk0NjFiYWI5ZDRiOGFlOTlmZjkuLmFjYWRlN2M5NzExNDMwZTIxNDg4MTVmNjViMDE5
Y2M4ZWU2YzY2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIlN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPENGTmV0
d29yay9DRk5ldHdvcmsuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5cy90
eXBlcy5oPgpAQCAtMTEyLDI4OSArMTEzLDYgQEAgc3RhdGljIHZvaWQgYXBwbHlCYXNpY0F1dGhv
cml6YXRpb25IZWFkZXIoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBDcmVkZW4KICAg
ICByZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZCgiQXV0aG9yaXphdGlvbiIsIGF1dGhlbnRpY2F0
aW9uSGVhZGVyKTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiBzeW50
aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
Y3VycmVudFJlcXVlc3QsIENGVVJMUmVxdWVzdFJlZiBuZXdSZXF1ZXN0LCBDRlVSTFJlc3BvbnNl
UmVmIGNmUmVkaXJlY3RSZXNwb25zZSkKLXsKLSAgICBpZiAoY2ZSZWRpcmVjdFJlc3BvbnNlKQot
ICAgICAgICByZXR1cm4gY2ZSZWRpcmVjdFJlc3BvbnNlOwotCi0gICAgQ0ZVUkxSZWYgbmV3VVJM
ID0gQ0ZVUkxSZXF1ZXN0R2V0VVJMKG5ld1JlcXVlc3QpOwotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gbmV3U2NoZW1lID0gYWRvcHRDRihDRlVSTENvcHlTY2hlbWUobmV3VVJMKSk7Ci0KLSAg
ICAvLyBJZiB0aGUgcHJvdG9jb2xzIG9mIHRoZSBuZXcgcmVxdWVzdCBhbmQgdGhlIGN1cnJlbnQg
cmVxdWVzdCBtYXRjaCwgdGhpcyBpcyBub3QgYW4gSFNUUyByZWRpcmVjdCBhbmQgd2Ugc2hvdWxk
bid0IHN5bnRoZXNpemUgYSByZWRpcmVjdCByZXNwb25zZS4KLSAgICBpZiAoY3VycmVudFJlcXVl
c3QudXJsKCkucHJvdG9jb2woKSA9PSBTdHJpbmcobmV3U2NoZW1lLmdldCgpKSkKLSAgICAgICAg
cmV0dXJuIDA7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGN1cnJlbnRVUkwgPSBjdXJyZW50
UmVxdWVzdC51cmwoKS5jcmVhdGVDRlVSTCgpOwotICAgIFJldGFpblB0cjxDRkhUVFBNZXNzYWdl
UmVmPiByZXNwb25zZU1lc3NhZ2UgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDcmVhdGVSZXNwb25z
ZSgwLCAzMDIsIDAsIGtDRkhUVFBWZXJzaW9uMV8xKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVm
PiBuZXdBYnNvbHV0ZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDb3B5QWJzb2x1dGVVUkwobmV3VVJMKSk7
Ci0gICAgQ0ZIVFRQTWVzc2FnZVNldEhlYWRlckZpZWxkVmFsdWUocmVzcG9uc2VNZXNzYWdlLmdl
dCgpLCBDRlNUUigiTG9jYXRpb24iKSwgQ0ZVUkxHZXRTdHJpbmcobmV3QWJzb2x1dGVVUkwuZ2V0
KCkpKTsKLSAgICBDRkhUVFBNZXNzYWdlU2V0SGVhZGVyRmllbGRWYWx1ZShyZXNwb25zZU1lc3Nh
Z2UuZ2V0KCksIENGU1RSKCJDYWNoZS1Db250cm9sIiksIENGU1RSKCJuby1zdG9yZSIpKTsKLQot
ICAgIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiBuZXdSZXNwb25zZSA9IGFkb3B0Q0YoQ0ZV
UkxSZXNwb25zZUNyZWF0ZVdpdGhIVFRQUmVzcG9uc2UoMCwgY3VycmVudFVSTC5nZXQoKSwgcmVz
cG9uc2VNZXNzYWdlLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkKSk7Ci0gICAg
cmV0dXJuIG5ld1Jlc3BvbnNlOwotfQotCi1zdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5k
UmVxdWVzdChDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVz
dCwgQ0ZVUkxSZXNwb25zZVJlZiBvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGNvbm4p
OwotI2VuZGlmCi0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291
cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAgIFJldGFpblB0
cjxDRlVSTFJlc3BvbnNlUmVmPiByZWRpcmVjdFJlc3BvbnNlID0gc3ludGhlc2l6ZVJlZGlyZWN0
UmVzcG9uc2VJZk5lY2Vzc2FyeShoYW5kbGUtPmN1cnJlbnRSZXF1ZXN0KCksIGNmUmVxdWVzdCwg
b3JpZ2luYWxSZWRpcmVjdFJlc3BvbnNlKTsKLQotICAgIGlmICghcmVkaXJlY3RSZXNwb25zZSkg
ewotICAgICAgICBDRlJldGFpbihjZlJlcXVlc3QpOwotICAgICAgICByZXR1cm4gY2ZSZXF1ZXN0
OwotICAgIH0KLQotICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSB3aWxsU2VuZFJlcXVlc3QoY29u
bj0lcCwgaGFuZGxlPSVwKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVz
dCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3Q7Ci0gICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UpIHsKLSAgICAgICAgQ0ZIVFRQTWVz
c2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UocmVkaXJl
Y3RSZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIGlmIChodHRwTWVzc2FnZSAmJiBDRkhUVFBNZXNz
YWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0dHBNZXNzYWdlKSA9PSAzMDcpIHsKLSAgICAgICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFzdEhUVFBNZXRob2QgPSBoYW5kbGUtPmxhc3RI
VFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gbmV3TWV0aG9kID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RN
ZXRob2QoY2ZSZXF1ZXN0KSk7Ci0gICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlV2l0aE9w
dGlvbnMobGFzdEhUVFBNZXRob2QuZ2V0KCksIG5ld01ldGhvZC5nZXQoKSwgQ0ZSYW5nZU1ha2Uo
MCwgQ0ZTdHJpbmdHZXRMZW5ndGgobGFzdEhUVFBNZXRob2QuZ2V0KCkpKSwga0NGQ29tcGFyZUNh
c2VJbnNlbnNpdGl2ZSkpIHsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJM
UmVxdWVzdFJlZj4gbXV0YWJsZVJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11
dGFibGVDb3B5KDAsIGNmUmVxdWVzdCkpOwotICAgICAgICAgICAgICAgIHdrU2V0UmVxdWVzdFN0
b3JhZ2VTZXNzaW9uKGhhbmRsZS0+c3RvcmFnZVNlc3Npb24oKSwgbXV0YWJsZVJlcXVlc3QuZ2V0
KCkpOwotICAgICAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKG11
dGFibGVSZXF1ZXN0LmdldCgpLCBsYXN0SFRUUE1ldGhvZC5nZXQoKSk7Ci0KLSAgICAgICAgICAg
ICAgICBGb3JtRGF0YSogYm9keSA9IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0cEJvZHkoKTsK
LSAgICAgICAgICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKGhhbmRsZS0+Zmlyc3RSZXF1
ZXN0KCkuaHR0cE1ldGhvZCgpLCAiR0VUIikgJiYgYm9keSAmJiAhYm9keS0+aXNFbXB0eSgpKQot
ICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpzZXRIVFRQQm9keShtdXRhYmxlUmVxdWVzdC5n
ZXQoKSwgYm9keSk7Ci0KLSAgICAgICAgICAgICAgICBTdHJpbmcgb3JpZ2luYWxDb250ZW50VHlw
ZSA9IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0cENvbnRlbnRUeXBlKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFvcmlnaW5hbENvbnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAg
ICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUobXV0YWJsZVJlcXVlc3Qu
Z2V0KCksIENGU1RSKCJDb250ZW50LVR5cGUiKSwgb3JpZ2luYWxDb250ZW50VHlwZS5jcmVhdGVD
RlN0cmluZygpLmdldCgpKTsKLQotICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBtdXRhYmxlUmVx
dWVzdC5nZXQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAocmVx
dWVzdC5pc051bGwoKSkKLSAgICAgICAgcmVxdWVzdCA9IGNmUmVxdWVzdDsKLQotICAgIC8vIFNo
b3VsZCBub3Qgc2V0IFJlZmVyZXIgYWZ0ZXIgYSByZWRpcmVjdCBmcm9tIGEgc2VjdXJlIHJlc291
cmNlIHRvIG5vbi1zZWN1cmUgb25lLgotICAgIGlmICghcmVxdWVzdC51cmwoKS5wcm90b2NvbElz
KCJodHRwcyIpICYmIHByb3RvY29sSXMocmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgImh0dHBzIikg
JiYgaGFuZGxlLT5jb250ZXh0KCktPnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QoKSkKLSAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBSZWZlcnJlcigpOwotCi0gICAgaGFu
ZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7Ci0K
LSAgICBpZiAocmVxdWVzdC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjZlJl
cXVlc3QgPSByZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7Ci0KLSAgICBDRlJl
dGFpbihjZlJlcXVlc3QpOwotICAgIHJldHVybiBjZlJlcXVlc3Q7Ci19Ci0KLXN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXNwb25z
ZVJlZiBjZlJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotI2lmIExPR19ESVNB
QkxFRCAmJiAhVVNFKFFVSUNLX0xPT0spCi0gICAgVU5VU0VEX1BBUkFNKGNvbm4pOwotI2VuZGlm
Ci0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxl
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotCi0gICAgTE9HKE5ldHdvcmssICJD
Rk5ldCAtIGRpZFJlY2VpdmVSZXNwb25zZShjb25uPSVwLCBoYW5kbGU9JXApICglcykiLCBjb25u
LCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7Ci0KLSAgICBpZiAoIWhhbmRsZS0+Y2xpZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICAvLyBBdm9pZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhl
IHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmllZC4KLSAgICBDRkhUVFBNZXNz
YWdlUmVmIG1zZyA9IHdrR2V0Q0ZVUkxSZXNwb25zZUhUVFBSZXNwb25zZShjZlJlc3BvbnNlKTsK
LSAgICBpbnQgc3RhdHVzQ29kZSA9IG1zZyA/IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1
c0NvZGUobXNnKSA6IDA7Ci0KLSAgICBpZiAoc3RhdHVzQ29kZSAhPSAzMDQpCi0gICAgICAgIGFk
anVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoY2ZSZXNwb25zZSk7Ci0KLSNpZiAhUExBVEZPUk0oSU9T
KQotICAgIGlmIChfQ0ZVUkxSZXF1ZXN0Q29weVByb3RvY29sUHJvcGVydHlGb3JLZXkoaGFuZGxl
LT5maXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RS
KCJGb3JjZUhUTUxNSU1FVHlwZSIpKSkKLSAgICAgICAgd2tTZXRDRlVSTFJlc3BvbnNlTUlNRVR5
cGUoY2ZSZXNwb25zZSwgQ0ZTVFIoInRleHQvaHRtbCIpKTsKLSNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TKQotI2Vsc2UKLSAgICBpZiAoIUNGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShjZlJlc3BvbnNl
KSkgewotICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUgYXBwbHlpbmcgdGhlIGRlZmF1bHQg
TUlNRVR5cGUgaWYgd2UgdG9sZCB0aGUgbmV0d29ya2luZyBsYXllciB0byBkbyBjb250ZW50IHNu
aWZmaW5nIGZvciBoYW5kbGUuCi0gICAgICAgIEFTU0VSVCghaGFuZGxlLT5zaG91bGRDb250ZW50
U25pZmYoKSk7Ci0gICAgICAgIHNldERlZmF1bHRNSU1FVHlwZShjZlJlc3BvbnNlKTsKLSAgICB9
Ci0jZW5kaWYKLQotI2lmIFVTRShRVUlDS19MT09LKQotICAgIGhhbmRsZS0+c2V0UXVpY2tMb29r
SGFuZGxlKFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKGhhbmRsZSwgY29ubiwgY2ZSZXNwb25zZSkp
OwotICAgIGlmIChoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpKQotICAgICAgICBjZlJlc3BvbnNl
ID0gaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+Y2ZSZXNwb25zZSgpOwotI2VuZGlmCi0gICAg
Ci0gICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwgY2ZSZXNw
b25zZSk7Ci19Ci0KLSNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCi1zdGF0
aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRkFy
cmF5UmVmIGRhdGFBcnJheSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSNpZiBMT0dfRElT
QUJMRUQKLSAgICBVTlVTRURfUEFSQU0oY29ubik7Ci0jZW5kaWYKLSAgICBSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSk7Ci0gICAgaWYgKCFoYW5kbGUtPmNsaWVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gZGlkUmVjZWl2ZURhdGFBcnJheShjb25u
PSVwLCBoYW5kbGU9JXAsIGFycmF5TGVuZ3RoPSVsZCkgKCVzKSIsIGNvbm4sIGhhbmRsZSwgQ0ZB
cnJheUdldENvdW50KGRhdGFBcnJheSksIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBpZiAoaGFu
ZGxlLT5xdWlja0xvb2tIYW5kbGUoKSAmJiBoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpLT5kaWRS
ZWNlaXZlRGF0YUFycmF5KGRhdGFBcnJheSkpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCi0g
ICAgaGFuZGxlLT5oYW5kbGVEYXRhQXJyYXkoZGF0YUFycmF5KTsKLX0KLSNlbmRpZgotCi1zdGF0
aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZEYXRhUmVm
IGRhdGEsIENGSW5kZXggb3JpZ2luYWxMZW5ndGgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17
Ci0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxl
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotCi0jaWYgTE9HX0RJU0FCTEVECi0g
ICAgVU5VU0VEX1BBUkFNKGNvbm4pOwotI2Vsc2UKLSAgICBDRkluZGV4IGxlbmd0aCA9IENGRGF0
YUdldExlbmd0aChkYXRhKTsKLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gZGlkUmVjZWl2ZURh
dGEoY29ubj0lcCwgaGFuZGxlPSVwLCBieXRlcz0lbGQpICglcykiLCBjb25uLCBoYW5kbGUsIGxl
bmd0aCwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSNlbmRpZgotCi0jaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgaWYgKGhhbmRsZS0+cXVpY2tM
b29rSGFuZGxlKCkgJiYgaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+ZGlkUmVjZWl2ZURhdGEo
ZGF0YSkpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCi0gICAgaWYgKFJlc291cmNlSGFuZGxl
Q2xpZW50KiBjbGllbnQgPSBoYW5kbGUtPmNsaWVudCgpKQotICAgICAgICBjbGllbnQtPmRpZFJl
Y2VpdmVCdWZmZXIoaGFuZGxlLCBTaGFyZWRCdWZmZXI6OndyYXBDRkRhdGEoZGF0YSksIG9yaWdp
bmFsTGVuZ3RoKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkU2VuZEJvZHlEYXRhKENGVVJMQ29ubmVj
dGlvblJlZiwgQ0ZJbmRleCwgQ0ZJbmRleCB0b3RhbEJ5dGVzV3JpdHRlbiwgQ0ZJbmRleCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQotewotICAgIFJl
c291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGNvbnN0
X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLSAgICBpZiAoIWhhbmRsZSB8fCAhaGFuZGxlLT5j
bGllbnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFNlbmRE
YXRhKGhhbmRsZSwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUp
OwotfQotCi1zdGF0aWMgQm9vbGVhbiBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUNhbGxiYWNr
KENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotI2lm
IExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShjb25uKTsKLSNlbmRpZgotICAgIFJlc291
cmNlSGFuZGxlKiBoYW5kbGUgPSBjb25zdF9jYXN0PFJlc291cmNlSGFuZGxlKj4oc3RhdGljX2Nh
c3Q8Y29uc3QgUmVzb3VyY2VIYW5kbGUqPihjbGllbnRJbmZvKSk7Ci0KLSAgICBMT0coTmV0d29y
aywgIkNGTmV0IC0gc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoY29ubj0lcCwgaGFuZGxlPSVw
KSAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgaWYgKCFoYW5kbGUpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHJldHVybiBoYW5kbGUtPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCk7
Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoQ0ZVUkxDb25uZWN0aW9uUmVmIGNv
bm4sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5V
U0VEX1BBUkFNKGNvbm4pOwotI2VuZGlmCi0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0
YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
OwotCi0gICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIGRpZEZpbmlzaExvYWRpbmcoY29ubj0lcCwg
aGFuZGxlPSVwKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0jaWYgVVNFKFFVSUNLX0xPT0spCi0gICAg
aWYgKGhhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkgJiYgaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUo
KS0+ZGlkRmluaXNoTG9hZGluZygpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQotICAgIGlm
IChoYW5kbGUtPmNsaWVudCgpKQotICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRGaW5pc2hM
b2FkaW5nKGhhbmRsZSwgMCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZEZhaWwoQ0ZVUkxDb25uZWN0
aW9uUmVmIGNvbm4sIENGRXJyb3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17
Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGNvbm4pOwotI2VuZGlmCi0gICAg
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotCi0gICAgTE9HKE5ldHdvcmssICJDRk5ldCAt
IGRpZEZhaWwoY29ubj0lcCwgaGFuZGxlPSVwLCBlcnJvciA9ICVwKSAoJXMpIiwgY29ubiwgaGFu
ZGxlLCBlcnJvciwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKLQotI2lmIFVTRShRVUlDS19MT09LKQotICAgIGlmIChoYW5kbGUtPnF1aWNrTG9v
a0hhbmRsZSgpKQotICAgICAgICBoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpLT5kaWRGYWlsKCk7
Ci0jZW5kaWYKLQotICAgIGlmIChoYW5kbGUtPmNsaWVudCgpKQotICAgICAgICBoYW5kbGUtPmNs
aWVudCgpLT5kaWRGYWlsKGhhbmRsZSwgUmVzb3VyY2VFcnJvcihlcnJvcikpOwotfQotCi1zdGF0
aWMgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShDRlVSTENvbm5lY3Rp
b25SZWYsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCi17Ci0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0
PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotCi0jaWYg
UExBVEZPUk0oV0lOKQotICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82MzAw
OTkwPiBDYWNoaW5nIGRvZXMgbm90IHJlc3BlY3QgVmFyeSBIVFRQIGhlYWRlci4KLSAgICAvLyBG
SVhNRTogV2ViQ29yZSBjYWNoZSBoYXMgaXNzdWVzIHdpdGggVmFyeSwgdG9vIChidWcgNTg3OTcs
IGJ1ZyA3MTUwOSkuCi0gICAgQ0ZVUkxSZXNwb25zZVJlZiB3cmFwcGVkUmVzcG9uc2UgPSBDRkNh
Y2hlZFVSTFJlc3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNlKTsKLSAgICBp
ZiAoQ0ZIVFRQTWVzc2FnZVJlZiBodHRwUmVzcG9uc2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJl
c3BvbnNlKHdyYXBwZWRSZXNwb25zZSkpIHsKLSAgICAgICAgQVNTRVJUKENGSFRUUE1lc3NhZ2VJ
c0hlYWRlckNvbXBsZXRlKGh0dHBSZXNwb25zZSkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHZhcnlWYWx1ZSA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNvcHlIZWFkZXJGaWVsZFZh
bHVlKGh0dHBSZXNwb25zZSwgQ0ZTVFIoIlZhcnkiKSkpOwotICAgICAgICBpZiAodmFyeVZhbHVl
KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikK
LQotI2lmIFBMQVRGT1JNKFdJTikKLSAgICBpZiAoaGFuZGxlLT5jbGllbnQoKSAmJiAhaGFuZGxl
LT5jbGllbnQoKS0+c2hvdWxkQ2FjaGVSZXNwb25zZShoYW5kbGUsIGNhY2hlZFJlc3BvbnNlKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0jZWxzZQotICAgIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgbmV3
UmVzcG9uc2UgPSBoYW5kbGUtPmNsaWVudCgpLT53aWxsQ2FjaGVSZXNwb25zZShoYW5kbGUsIGNh
Y2hlZFJlc3BvbnNlKTsKLSAgICBpZiAobmV3UmVzcG9uc2UgIT0gY2FjaGVkUmVzcG9uc2UpCi0g
ICAgICAgIHJldHVybiBuZXdSZXNwb25zZTsKLSNlbmRpZgotCi0gICAgQ0ZSZXRhaW4oY2FjaGVk
UmVzcG9uc2UpOwotCi0gICAgcmV0dXJuIGNhY2hlZFJlc3BvbnNlOwotfQotCi1zdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTEF1dGhD
aGFsbGVuZ2VSZWYgY2hhbGxlbmdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotI2lmIExP
R19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShjb25uKTsKLSNlbmRpZgotICAgIFJlc291cmNl
SGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGNsaWVudEluZm8pKTsKLSAgICBBU1NFUlQoaGFuZGxlKTsKLSAgICBMT0coTmV0d29y
aywgIkNGTmV0IC0gZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25uPSVwLCBoYW5kbGU9JXAgKCVzKSIs
IGNvbm4sIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKLQotICAgIGhhbmRsZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSwgaGFuZGxlKSk7Ci19Ci0KLSNp
ZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotc3RhdGljIEJvb2xlYW4gY2Fu
UmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFBy
b3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Ci17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGNvbm4pOwotI2VuZGlmCi0g
ICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4o
Y29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAgIEFTU0VSVChoYW5kbGUpOwotCi0g
ICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIGNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZShjb25u
PSVwLCBoYW5kbGU9JXAgKCVzKSIsIGNvbm4sIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3Qo
KS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotI2lmIFBMQVRGT1JNKElPUykKLSAg
ICBQcm90ZWN0aW9uU3BhY2UgY29yZVByb3RlY3Rpb25TcGFjZSA9IGNvcmUocHJvdGVjdGlvblNw
YWNlKTsKLSAgICBpZiAoY29yZVByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgp
ID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lVW5rbm93bikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBoYW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UoY29yZVByb3RlY3Rpb25TcGFjZSk7Ci0jZWxzZQotICAgIHJldHVybiBo
YW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29yZShwcm90ZWN0
aW9uU3BhY2UpKTsKLSNlbmRpZgotfQotI2VuZGlmCi0KIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6
On5SZXNvdXJjZUhhbmRsZUludGVybmFsKCkKIHsKICAgICBpZiAobV9jb25uZWN0aW9uKSB7CkBA
IC00NzcsOSArMTk1LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0
aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wKICAgICB9CiAjZW5kaWYK
IAotICAgIENGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiBjbGllbnQgPSAqUmVzb3VyY2VIYW5kbGU6
OmNvbm5lY3Rpb25DbGllbnRDYWxsYmFja3MoKTsKLSAgICBjbGllbnQuY2xpZW50SW5mbyA9IHRo
aXM7Ci0KICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHN0cmVhbVByb3BlcnRpZXMgID0gQ0ZE
aWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKICAgICBpZiAoIXNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Q
cm9wZXJ0aWVzLCBDRlNUUigiX2tDRlVSTENvbm5lY3Rpb25TZXNzaW9uSUQiKSwgQ0ZTVFIoIldl
YktpdFByaXZhdGVTZXNzaW9uIikpOwpAQCAtNTAyLDYgKzIxNywxMCBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSwgYm9vbAogI2lmIFBMQVRGT1JNKElPUykKICAgICBDRlVSTFJlcXVlc3RTZXRTaG91bGRT
dGFydFN5bmNocm9ub3VzbHkocmVxdWVzdC5nZXQoKSwgMSk7CiAjZW5kaWYKKworICAgIGQtPm1f
Y29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7CisgICAgQ0ZVUkxDb25uZWN0aW9uQ2xp
ZW50X1Y2IGNsaWVudCA9IGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5tYWtlQ29ubmVjdGlvbkNs
aWVudCgpOworCiAgICAgZC0+bV9jb25uZWN0aW9uID0gYWRvcHRDRihDRlVSTENvbm5lY3Rpb25D
cmVhdGVXaXRoUHJvcGVydGllcygwLCByZXF1ZXN0LmdldCgpLCByZWludGVycHJldF9jYXN0PENG
VVJMQ29ubmVjdGlvbkNsaWVudCo+KCZjbGllbnQpLCBwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQo
KSkpOwogfQogCkBAIC04NzcsMjQgKzU5Niw0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmhhbmRs
ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkKIH0KICNlbmRpZgogCi0jaWYgVVNFKENG
TkVUV09SSykKLUNGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiogUmVzb3VyY2VIYW5kbGU6OmNvbm5l
Y3Rpb25DbGllbnRDYWxsYmFja3MoKQotewotICAgIHN0YXRpYyBDRlVSTENvbm5lY3Rpb25DbGll
bnRfVjYgY2xpZW50ID0geyA2LCAwLCAwLCAwLCAwLCBXZWJDb3JlOjp3aWxsU2VuZFJlcXVlc3Qs
IGRpZFJlY2VpdmVSZXNwb25zZSwgZGlkUmVjZWl2ZURhdGEsIDAsIGRpZEZpbmlzaExvYWRpbmcs
IGRpZEZhaWwsIHdpbGxDYWNoZVJlc3BvbnNlLCBkaWRSZWNlaXZlQ2hhbGxlbmdlLCBkaWRTZW5k
Qm9keURhdGEsIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2ssIDAsCi0jaWYgVVNF
KFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICAgICAgY2FuUmVzcG9uZFRvUHJv
dGVjdGlvblNwYWNlLAotI2Vsc2UKLSAgICAgICAgMCwKLSNlbmRpZgotICAgICAgICAwLAotI2lm
IFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKLSAgICAgICAgZGlkUmVjZWl2ZURh
dGFBcnJheQotI2Vsc2UKLSAgICAgICAgMAotI2VuZGlmCi0gICAgfTsKLSAgICByZXR1cm4gJmNs
aWVudDsKLX0KLSNlbmRpZiAvLyBVU0UoUVVJQ0tfTE9PSykgJiYgVVNFKENGTkVUV09SSykKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcxNDJmMTQ2YjZmYjcwMDU0YmM4ZmFm
ZjJiODQ1MzZiYWU5MWNjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAK
QEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMyBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCisKKyNpZiBV
U0UoQ0ZORVRXT1JLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKKyAgICA6IG1faGFuZGxlKGhhbmRsZSkKK3sKK30K
K1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6On5SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlKCkKK3sKK30KKworQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdENhbGxiYWNrKENG
VVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdCwgQ0ZVUkxSZXNwb25z
ZVJlZiBvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPndpbGxTZW5kUmVxdWVzdChj
ZlJlcXVlc3QsIG9yaWdpbmFsUmVkaXJlY3RSZXNwb25zZSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2so
Q0ZVUkxDb25uZWN0aW9uUmVmLCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNmUmVzcG9uc2UpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQ2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9u
UmVmLCBDRkRhdGFSZWYgZGF0YSwgQ0ZJbmRleCBvcmlnaW5hbExlbmd0aCwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRSZWNlaXZl
RGF0YShkYXRhLCBvcmlnaW5hbExlbmd0aCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZ0NhbGxiYWNrKENGVVJMQ29ubmVj
dGlvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2FzdDxSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT5kaWRGaW5pc2hMb2FkaW5nKCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkRmFpbENhbGxiYWNrKENGVVJMQ29ubmVjdGlvblJl
ZiwgQ0ZFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBzdGF0
aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29uc3RfY2Fz
dDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRGYWlsKGVycm9yKTsKK30KKworQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsQ2Fj
aGVSZXNwb25zZUNhbGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZiBjYWNoZWRSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSo+KGNv
bnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+d2lsbENhY2hlUmVzcG9uc2UoY2FjaGVkUmVz
cG9uc2UpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6
OmRpZFJlY2VpdmVDaGFsbGVuZ2VDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25SZWYsIENGVVJMQXV0
aENoYWxsZW5nZVJlZiBjaGFsbGVuZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
c3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSo+KGNvbnN0
X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2Up
OworfQorCit2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFNl
bmRCb2R5RGF0YUNhbGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZJbmRleCwgQ0ZJbmRleCB0
b3RhbEJ5dGVzV3JpdHRlbiwgQ0ZJbmRleCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRp
ZFNlbmRCb2R5RGF0YSh0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZSk7Cit9CisKK0Jvb2xlYW4gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25SZWYsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCk7CisKK30KKworI2lmIFVTRShQUk9U
RUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCitCb29sZWFuIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZUNhbGxiYWNrKENG
VVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNl
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT5jYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKTsK
K30KKyNlbmRpZiAvLyBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorCisjaWYg
VVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQordm9pZCBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YUFycmF5Q2FsbGJhY2soQ0ZVUkxD
b25uZWN0aW9uUmVmLCBDRkFycmF5UmVmIGRhdGFBcnJheSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRSZWNlaXZlRGF0YUFycmF5
KGRhdGFBcnJheSk7Cit9CisjZW5kaWYgLy8gVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExC
QUNLKQorCitDRlVSTENvbm5lY3Rpb25DbGllbnRfVjYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZTo6bWFrZUNvbm5lY3Rpb25DbGllbnQoKSBjb25zdAoreworICAgIHJldHVy
biB7IDYsIHRoaXMsIDAsIDAsIDAsCisgICAgICAgICZSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3RDYWxsYmFjaywKKyAgICAgICAgJlJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVSZXNwb25zZUNhbGxiYWNr
LAorICAgICAgICAmUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVj
ZWl2ZURhdGFDYWxsYmFjaywKKyAgICAgICAgMCwKKyAgICAgICAgJlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZEZpbmlzaExvYWRpbmdDYWxsYmFjaywKKyAgICAgICAg
JlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZEZhaWxDYWxsYmFjaywK
KyAgICAgICAgJlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxDYWNo
ZVJlc3BvbnNlQ2FsbGJhY2ssCisgICAgICAgICZSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlOjpkaWRSZWNlaXZlQ2hhbGxlbmdlQ2FsbGJhY2ssCisgICAgICAgICZSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRTZW5kQm9keURhdGFDYWxsYmFjaywK
KyAgICAgICAgJlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OnNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2ssCisgICAgICAgIDAsCisjaWYgVVNFKFBST1RFQ1RJ
T05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKyAgICAgICAgJlJlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZUNhbGxiYWNrLAorI2Vs
c2UKKyAgICAgICAgMCwKKyNlbmRpZgorICAgICAgICAwLAorI2lmIFVTRShORVRXT1JLX0NGREFU
QV9BUlJBWV9DQUxMQkFDSykKKyAgICAgICAgJlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQXJyYXlDYWxsYmFjaworI2Vsc2UKKyAgICAgICAgMAor
I2VuZGlmCisgICAgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KKworI2VuZGlmIC8v
IFVTRShDRk5FVFdPUkspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTI3N2ZiYjg2ZTRmNzUyYTI3NTE0ZWNlMDc2MDQzMGU3
MDE4OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaApAQCAtMCwwICsxLDg2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVfaAorI2RlZmluZSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
X2gKKworI2lmIFVTRShDRk5FVFdPUkspCisKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25u
ZWN0aW9uUHJpdi5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlc291cmNlSGFuZGxlOworCitjbGFzcyBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU+IHsKK3B1YmxpYzoK
KyAgICBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKFJlc291cmNlSGFuZGxl
Kik7CisgICAgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSgp
OworCisgICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IG1ha2VDb25uZWN0aW9uQ2xpZW50KCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJl
cXVlc3RDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25SZWYsIENGVVJMUmVxdWVzdFJlZiwgQ0ZVUkxS
ZXNwb25zZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRlVSTFJlc3BvbnNl
UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
RGF0YUNhbGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZEYXRhUmVmLCBDRkluZGV4IG9yaWdp
bmFsTGVuZ3RoLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nQ2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9uUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsQ2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9u
UmVmLCBDRkVycm9yUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZUNhbGxiYWNrKENGVVJMQ29ubmVj
dGlvblJlZiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZUNhbGxiYWNrKENGVVJMQ29ubmVj
dGlvblJlZiwgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWRTZW5kQm9keURhdGFDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25S
ZWYsIENGSW5kZXgsIENGSW5kZXggdG90YWxCeXRlc1dyaXR0ZW4sIENGSW5kZXggdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CisgICAgc3RhdGljIEJv
b2xlYW4gc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25S
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FV
VEhfQ0FMTEJBQ0spCisgICAgc3RhdGljIEJvb2xlYW4gY2FuUmVzcG9uZFRvUHJvdGVjdGlvblNw
YWNlQ2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0Vf
QVVUSF9DQUxMQkFDSykKKyNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisg
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheUNhbGxiYWNrKENGVVJMQ29ubmVjdGlv
blJlZiwgQ0ZBcnJheVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisjZW5kaWYgLy8gVVNF
KE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorCisgICAgdmlydHVhbCBDRlVSTFJlcXVl
c3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiwgQ0ZVUkxSZXNwb25zZVJlZikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoQ0ZVUkxSZXNwb25zZVJl
ZikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShDRkRhdGFSZWYsIENGSW5k
ZXggb3JpZ2luYWxMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChDRkVycm9yUmVmKSA9IDA7CisgICAg
dmlydHVhbCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5n
ZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZEJv
ZHlEYXRhKENGSW5kZXggdG90YWxCeXRlc1dyaXR0ZW4sIENGSW5kZXggdG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSkgPSAwOworICAgIHZpcnR1YWwgQm9vbGVhbiBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZSgpID0gMDsKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQor
ICAgIHZpcnR1YWwgQm9vbGVhbiBjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UoQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWYpID0gMDsKKyNlbmRpZiAvLyBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRI
X0NBTExCQUNLKQorI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkgPSAw
OworI2VuZGlmIC8vIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKKworcHJvdGVj
dGVkOgorICAgIFJlc291cmNlSGFuZGxlKiBtX2hhbmRsZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUuCisKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorCisjZW5kaWYgLy8gUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzljMGIzYTgyNTRjNTYwODdiODUwOTk0YzUxZDdlODEyM2FhOGU0ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcApAQCAtMCwwICsxLDI5
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDEzIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgorCisjaWYgVVNF
KENGTkVUV09SSykKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKKyNpbmNsdWRlICJB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgorI2luY2x1ZGUgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQu
aCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIK
KyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xp
ZW50LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oIgorI2luY2x1ZGUgIldlYkNvcmVVUkxSZXNwb25zZS5oIgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKKyAgICA6IFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoaGFuZGxlKQoreworfQorCitzdGF0aWMgUmV0YWluUHRy
PENGVVJMUmVzcG9uc2VSZWY+IHN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3Nhcnko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjdXJyZW50UmVxdWVzdCwgQ0ZVUkxSZXF1ZXN0UmVmIG5l
d1JlcXVlc3QsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZWRpcmVjdFJlc3BvbnNlKQoreworICAgIGlm
IChjZlJlZGlyZWN0UmVzcG9uc2UpCisgICAgICAgIHJldHVybiBjZlJlZGlyZWN0UmVzcG9uc2U7
CisKKyAgICBDRlVSTFJlZiBuZXdVUkwgPSBDRlVSTFJlcXVlc3RHZXRVUkwobmV3UmVxdWVzdCk7
CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdTY2hlbWUgPSBhZG9wdENGKENGVVJMQ29w
eVNjaGVtZShuZXdVUkwpKTsKKworICAgIC8vIElmIHRoZSBwcm90b2NvbHMgb2YgdGhlIG5ldyBy
ZXF1ZXN0IGFuZCB0aGUgY3VycmVudCByZXF1ZXN0IG1hdGNoLCB0aGlzIGlzIG5vdCBhbiBIU1RT
IHJlZGlyZWN0IGFuZCB3ZSBzaG91bGRuJ3Qgc3ludGhlc2l6ZSBhIHJlZGlyZWN0IHJlc3BvbnNl
LgorICAgIGlmIChjdXJyZW50UmVxdWVzdC51cmwoKS5wcm90b2NvbCgpID09IFN0cmluZyhuZXdT
Y2hlbWUuZ2V0KCkpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gY3VycmVudFVSTCA9IGN1cnJlbnRSZXF1ZXN0LnVybCgpLmNyZWF0ZUNGVVJMKCk7CisgICAg
UmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IHJlc3BvbnNlTWVzc2FnZSA9IGFkb3B0Q0YoQ0ZI
VFRQTWVzc2FnZUNyZWF0ZVJlc3BvbnNlKDAsIDMwMiwgMCwga0NGSFRUUFZlcnNpb24xXzEpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IG5ld0Fic29sdXRlVVJMID0gYWRvcHRDRihDRlVSTENv
cHlBYnNvbHV0ZVVSTChuZXdVUkwpKTsKKyAgICBDRkhUVFBNZXNzYWdlU2V0SGVhZGVyRmllbGRW
YWx1ZShyZXNwb25zZU1lc3NhZ2UuZ2V0KCksIENGU1RSKCJMb2NhdGlvbiIpLCBDRlVSTEdldFN0
cmluZyhuZXdBYnNvbHV0ZVVSTC5nZXQoKSkpOworICAgIENGSFRUUE1lc3NhZ2VTZXRIZWFkZXJG
aWVsZFZhbHVlKHJlc3BvbnNlTWVzc2FnZS5nZXQoKSwgQ0ZTVFIoIkNhY2hlLUNvbnRyb2wiKSwg
Q0ZTVFIoIm5vLXN0b3JlIikpOworCisgICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IG5l
d1Jlc3BvbnNlID0gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZSgw
LCBjdXJyZW50VVJMLmdldCgpLCByZXNwb25zZU1lc3NhZ2UuZ2V0KCksIGtDRlVSTENhY2hlU3Rv
cmFnZU5vdEFsbG93ZWQpKTsKKyAgICByZXR1cm4gbmV3UmVzcG9uc2U7Cit9CisKK0NGVVJMUmVx
dWVzdFJlZiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6
OndpbGxTZW5kUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0LCBDRlVSTFJlc3BvbnNl
UmVmIG9yaWdpbmFsUmVkaXJlY3RSZXNwb25zZSkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZXNw
b25zZVJlZj4gcmVkaXJlY3RSZXNwb25zZSA9IHN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZO
ZWNlc3NhcnkobV9oYW5kbGUtPmN1cnJlbnRSZXF1ZXN0KCksIGNmUmVxdWVzdCwgb3JpZ2luYWxS
ZWRpcmVjdFJlc3BvbnNlKTsKKworICAgIGlmICghcmVkaXJlY3RSZXNwb25zZSkgeworICAgICAg
ICBDRlJldGFpbihjZlJlcXVlc3QpOworICAgICAgICByZXR1cm4gY2ZSZXF1ZXN0OworICAgIH0K
KworICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdChoYW5kbGU9JXApICglcykiLCBt
X2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworCisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CisgICAgQ0ZIVFRQTWVzc2Fn
ZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UocmVkaXJlY3RS
ZXNwb25zZS5nZXQoKSk7CisgICAgaWYgKGh0dHBNZXNzYWdlICYmIENGSFRUUE1lc3NhZ2VHZXRS
ZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1lc3NhZ2UpID09IDMwNykgeworICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGxhc3RIVFRQTWV0aG9kID0gbV9oYW5kbGUtPmxhc3RIVFRQTWV0aG9k
KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdN
ZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVl
c3QpKTsKKyAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZVdpdGhPcHRpb25zKGxhc3RIVFRQTWV0
aG9kLmdldCgpLCBuZXdNZXRob2QuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIENGU3RyaW5nR2V0TGVu
Z3RoKGxhc3RIVFRQTWV0aG9kLmdldCgpKSksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpKSB7
CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZj4gbXV0YWJsZVJl
cXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIGNmUmVxdWVz
dCkpOworICAgICAgICAgICAgd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24obV9oYW5kbGUtPnN0
b3JhZ2VTZXNzaW9uKCksIG11dGFibGVSZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgICAgIENGVVJM
UmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKG11dGFibGVSZXF1ZXN0LmdldCgpLCBsYXN0SFRU
UE1ldGhvZC5nZXQoKSk7CisKKyAgICAgICAgICAgIEZvcm1EYXRhKiBib2R5ID0gbV9oYW5kbGUt
PmZpcnN0UmVxdWVzdCgpLmh0dHBCb2R5KCk7CisgICAgICAgICAgICBpZiAoIWVxdWFsSWdub3Jp
bmdDYXNlKG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwTWV0aG9kKCksICJHRVQiKSAmJiBi
b2R5ICYmICFib2R5LT5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgV2ViQ29yZTo6c2V0SFRU
UEJvZHkobXV0YWJsZVJlcXVlc3QuZ2V0KCksIGJvZHkpOworCisgICAgICAgICAgICBTdHJpbmcg
b3JpZ2luYWxDb250ZW50VHlwZSA9IG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwQ29udGVu
dFR5cGUoKTsKKyAgICAgICAgICAgIGlmICghb3JpZ2luYWxDb250ZW50VHlwZS5pc0VtcHR5KCkp
CisgICAgICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUobXV0
YWJsZVJlcXVlc3QuZ2V0KCksIENGU1RSKCJDb250ZW50LVR5cGUiKSwgb3JpZ2luYWxDb250ZW50
VHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKworICAgICAgICAgICAgcmVxdWVzdCA9IG11
dGFibGVSZXF1ZXN0LmdldCgpOworICAgICAgICB9CisgICAgfQorICAgIGlmIChyZXF1ZXN0Lmlz
TnVsbCgpKQorICAgICAgICByZXF1ZXN0ID0gY2ZSZXF1ZXN0OworCisgICAgLy8gU2hvdWxkIG5v
dCBzZXQgUmVmZXJlciBhZnRlciBhIHJlZGlyZWN0IGZyb20gYSBzZWN1cmUgcmVzb3VyY2UgdG8g
bm9uLXNlY3VyZSBvbmUuCisgICAgaWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBz
IikgJiYgcHJvdG9jb2xJcyhyZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCAiaHR0cHMiKSAmJiBtX2hh
bmRsZS0+Y29udGV4dCgpLT5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
KCkpCisgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKKworICAgIG1faGFuZGxl
LT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7CisKKyAg
ICBpZiAocmVxdWVzdC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjZlJlcXVl
c3QgPSByZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CisKKyAgICBDRlJldGFp
bihjZlJlcXVlc3QpOworICAgIHJldHVybiBjZlJlcXVlc3Q7Cit9CisKK3ZvaWQgU3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9u
c2UoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQoreworICAgIExPRyhOZXR3b3JrLCAiQ0ZO
ZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRp
ZFJlY2VpdmVSZXNwb25zZShoYW5kbGU9JXApICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZp
cnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgaWYgKCFt
X2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybjsKKworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICAvLyBBdm9pZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJh
Y2sgYXMgMzA0IE5vdCBNb2RpZmllZC4KKyAgICBDRkhUVFBNZXNzYWdlUmVmIG1zZyA9IHdrR2V0
Q0ZVUkxSZXNwb25zZUhUVFBSZXNwb25zZShjZlJlc3BvbnNlKTsKKyAgICBpbnQgc3RhdHVzQ29k
ZSA9IG1zZyA/IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUobXNnKSA6IDA7CisK
KyAgICBpZiAoc3RhdHVzQ29kZSAhPSAzMDQpCisgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNl
c3NhcnkoY2ZSZXNwb25zZSk7CisKKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIGlmIChfQ0ZVUkxS
ZXF1ZXN0Q29weVByb3RvY29sUHJvcGVydHlGb3JLZXkobV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgp
LmNmVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSwgQ0ZTVFIoIkZvcmNlSFRNTE1JTUVU
eXBlIikpKQorICAgICAgICB3a1NldENGVVJMUmVzcG9uc2VNSU1FVHlwZShjZlJlc3BvbnNlLCBD
RlNUUigidGV4dC9odG1sIikpOworI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZWxzZQorICAg
IGlmICghQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKGNmUmVzcG9uc2UpKSB7CisgICAgICAgIC8v
IFdlIHNob3VsZCBuZXZlciBiZSBhcHBseWluZyB0aGUgZGVmYXVsdCBNSU1FVHlwZSBpZiB3ZSB0
b2xkIHRoZSBuZXR3b3JraW5nIGxheWVyIHRvIGRvIGNvbnRlbnQgc25pZmZpbmcgZm9yIGhhbmRs
ZS4KKyAgICAgICAgQVNTRVJUKCFtX2hhbmRsZS0+c2hvdWxkQ29udGVudFNuaWZmKCkpOworICAg
ICAgICBzZXREZWZhdWx0TUlNRVR5cGUoY2ZSZXNwb25zZSk7CisgICAgfQorI2VuZGlmCisKKyNp
ZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBtX2hhbmRsZS0+c2V0UXVpY2tMb29rSGFuZGxlKFF1aWNr
TG9va0hhbmRsZTo6Y3JlYXRlKG1faGFuZGxlLCB0aGlzLCBjZlJlc3BvbnNlKSk7CisgICAgaWYg
KG1faGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKSkKKyAgICAgICAgY2ZSZXNwb25zZSA9IG1faGFu
ZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+Y2ZSZXNwb25zZSgpOworI2VuZGlmCisKKyAgICBtX2hh
bmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShtX2hhbmRsZSwgY2ZSZXNwb25zZSk7
Cit9CisKK3ZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlOjpkaWRSZWNlaXZlRGF0YShDRkRhdGFSZWYgZGF0YSwgQ0ZJbmRleCBvcmlnaW5hbExlbmd0
aCkKK3sKKyAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YShoYW5kbGU9JXAsIGJ5dGVz
PSVsZCkgKCVzKSIsIG1faGFuZGxlLCBDRkRhdGFHZXRMZW5ndGgoZGF0YSksIG1faGFuZGxlLT5m
aXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworI2lmIFVTRShR
VUlDS19MT09LKQorICAgIGlmIChtX2hhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkgJiYgbV9oYW5k
bGUtPnF1aWNrTG9va0hhbmRsZSgpLT5kaWRSZWNlaXZlRGF0YShkYXRhKSkKKyAgICAgICAgcmV0
dXJuOworI2VuZGlmCisKKyAgICBpZiAoUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IG1f
aGFuZGxlLT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKG1faGFu
ZGxlLCBTaGFyZWRCdWZmZXI6OndyYXBDRkRhdGEoZGF0YSksIG9yaWdpbmFsTGVuZ3RoKTsKK30K
Kwordm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6
OmRpZEZpbmlzaExvYWRpbmcoKQoreworICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJv
bm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZEZpbmlzaExvYWRp
bmcoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworI2lmIFVTRShRVUlDS19MT09LKQorICAg
IGlmIChtX2hhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkgJiYgbV9oYW5kbGUtPnF1aWNrTG9va0hh
bmRsZSgpLT5kaWRGaW5pc2hMb2FkaW5nKCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCisg
ICAgaWYgKFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQgPSBtX2hhbmRsZS0+Y2xpZW50KCkp
CisgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoTG9hZGluZyhtX2hhbmRsZSwgMCk7Cit9CisKK3Zv
aWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRG
YWlsKENGRXJyb3JSZWYgZXJyb3IpCit7CisgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkRmFpbChoYW5k
bGU9JXAsIGVycm9yID0gJXApICglcykiLCBtX2hhbmRsZSwgZXJyb3IsIG1faGFuZGxlLT5maXJz
dFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworI2lmIFVTRShRVUlD
S19MT09LKQorICAgIGlmIChRdWlja0xvb2tIYW5kbGUqIHF1aWNrTG9va0hhbmRsZSA9IG1faGFu
ZGxlLT5xdWlja0xvb2tIYW5kbGUoKSkKKyAgICAgICAgcXVpY2tMb29rSGFuZGxlLT5kaWRGYWls
KCk7CisjZW5kaWYKKworICAgIGlmIChSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gbV9o
YW5kbGUtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmRpZEZhaWwobV9oYW5kbGUsIFJlc291
cmNlRXJyb3IoZXJyb3IpKTsKK30KKworQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxDYWNoZVJlc3BvbnNl
KENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCit7CisjaWYgUExBVEZPUk0o
V0lOKQorICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82MzAwOTkwPiBDYWNo
aW5nIGRvZXMgbm90IHJlc3BlY3QgVmFyeSBIVFRQIGhlYWRlci4KKyAgICAvLyBGSVhNRTogV2Vi
Q29yZSBjYWNoZSBoYXMgaXNzdWVzIHdpdGggVmFyeSwgdG9vIChidWcgNTg3OTcsIGJ1ZyA3MTUw
OSkuCisgICAgQ0ZVUkxSZXNwb25zZVJlZiB3cmFwcGVkUmVzcG9uc2UgPSBDRkNhY2hlZFVSTFJl
c3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNlKTsKKyAgICBpZiAoQ0ZIVFRQ
TWVzc2FnZVJlZiBodHRwUmVzcG9uc2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKHdy
YXBwZWRSZXNwb25zZSkpIHsKKyAgICAgICAgQVNTRVJUKENGSFRUUE1lc3NhZ2VJc0hlYWRlckNv
bXBsZXRlKGh0dHBSZXNwb25zZSkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHZh
cnlWYWx1ZSA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNvcHlIZWFkZXJGaWVsZFZhbHVlKGh0dHBS
ZXNwb25zZSwgQ0ZTVFIoIlZhcnkiKSkpOworICAgICAgICBpZiAodmFyeVZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKKworI2lmIFBM
QVRGT1JNKFdJTikKKyAgICBpZiAobV9oYW5kbGUtPmNsaWVudCgpICYmICFtX2hhbmRsZS0+Y2xp
ZW50KCktPnNob3VsZENhY2hlUmVzcG9uc2UobV9oYW5kbGUsIGNhY2hlZFJlc3BvbnNlKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgbmV3UmVz
cG9uc2UgPSBtX2hhbmRsZS0+Y2xpZW50KCktPndpbGxDYWNoZVJlc3BvbnNlKG1faGFuZGxlLCBj
YWNoZWRSZXNwb25zZSk7CisgICAgaWYgKG5ld1Jlc3BvbnNlICE9IGNhY2hlZFJlc3BvbnNlKQor
ICAgICAgICByZXR1cm4gbmV3UmVzcG9uc2U7CisjZW5kaWYKKworICAgIENGUmV0YWluKGNhY2hl
ZFJlc3BvbnNlKTsKKyAgICByZXR1cm4gY2FjaGVkUmVzcG9uc2U7Cit9CisKK3ZvaWQgU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlQ2hh
bGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjaGFsbGVuZ2UpCit7CisgICAgTE9HKE5ldHdv
cmssICJDRk5ldCAtIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShoYW5kbGU9JXAgKCVzKSIsIG1faGFuZGxlLCBtX2hh
bmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAg
ICBtX2hhbmRsZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSwgbV9oYW5kbGUpKTsKK30KKwordm9pZCBTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFNlbmRCb2R5RGF0YShD
RkluZGV4IHRvdGFsQnl0ZXNXcml0dGVuLCBDRkluZGV4IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGUpCit7CisgICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAg
ICByZXR1cm47CisgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRTZW5kRGF0YShtX2hhbmRsZSwg
dG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOworfQorCitCb29s
ZWFuIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6c2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQoreworICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBT
eW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OnNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKGhhbmRsZT0lcCkgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+
Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBpZiAo
IW1faGFuZGxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9oYW5kbGUt
PnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCk7Cit9CisKKyNpZiBVU0UoUFJPVEVDVElPTl9T
UEFDRV9BVVRIX0NBTExCQUNLKQorQm9vbGVhbiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZShDRlVSTFBy
b3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UpCit7CisgICAgQVNTRVJUKG1faGFuZGxl
KTsKKworICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZShoYW5k
bGU9JXAgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgUHJvdGVjdGlv
blNwYWNlIGNvcmVQcm90ZWN0aW9uU3BhY2UgPSBjb3JlKHByb3RlY3Rpb25TcGFjZSk7CisgICAg
aWYgKGNvcmVQcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0
aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVVua25vd24pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gbV9oYW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoY29yZVByb3RlY3Rpb25TcGFjZSk7CisjZWxzZQorICAgIHJldHVybiBtX2hhbmRsZS0+
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlKHByb3RlY3Rpb25TcGFj
ZSkpOworI2VuZGlmCit9CisjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxM
QkFDSykKKworI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKK3ZvaWQgU3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZl
RGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQoreworICAgIGlmICghbV9oYW5kbGUtPmNs
aWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZl
RGF0YUFycmF5KGhhbmRsZT0lcCwgYXJyYXlMZW5ndGg9JWxkKSAoJXMpIiwgbV9oYW5kbGUsIENG
QXJyYXlHZXRDb3VudChkYXRhQXJyYXkpLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBpZiAo
bV9oYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpICYmIG1faGFuZGxlLT5xdWlja0xvb2tIYW5kbGUo
KS0+ZGlkUmVjZWl2ZURhdGFBcnJheShkYXRhQXJyYXkpKQorICAgICAgICByZXR1cm47CisjZW5k
aWYKKworICAgIG1faGFuZGxlLT5oYW5kbGVEYXRhQXJyYXkoZGF0YUFycmF5KTsKK30KKyNlbmRp
ZiAvLyBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUuCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTM4ZWIzMTMw
MzQzZWEyMTg4ZjdlZjFlODA1MDNkMmRlMTNmZWM3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNC0yMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVf
aAorI2RlZmluZSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVfaAorCisjaWYgVVNFKENGTkVUV09SSykKKworI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
eW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUgRklOQUwgOiBw
dWJsaWMgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSB7CitwdWJsaWM6Cisg
ICAgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKFJlc291
cmNlSGFuZGxlKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ0ZEYXRhUmVm
LCBDRkluZGV4IG9yaWdpbmFsTGVuZ3RoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTG9hZGluZygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKENGRXJy
b3JSZWYpIE9WRVJSSURFOworI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJh
eSkgT1ZFUlJJREU7CisjZW5kaWYgLy8gVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNL
KQorCisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1
ZXN0KENGVVJMUmVxdWVzdFJlZiwgQ0ZVUkxSZXNwb25zZVJlZikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShDRlVSTFJlc3BvbnNlUmVmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVDaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkU2VuZEJvZHlEYXRhKENGSW5kZXggdG90YWxCeXRlc1dyaXR0ZW4sIENGSW5kZXgg
dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBCb29sZWFu
IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkgT1ZFUlJJREU7CisjaWYgVVNFKFBST1RFQ1RJ
T05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKyAgICB2aXJ0dWFsIEJvb2xlYW4gY2FuUmVzcG9uZFRv
UHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKSBPVkVSUklERTsKKyNlbmRp
ZiAvLyBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZS4KKworI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisKKyNlbmRpZiAvLyBS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218726</attachid>
            <date>2013-12-08 22:40:46 -0800</date>
            <delta_ts>2013-12-09 01:33:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125379-20131208224044.patch</filename>
            <type>text/plain</type>
            <size>71353</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYyZjczYWU0ZDMyNWNi
ZmUxYmFiMjNlNWI0ZTVmNDEwNDE3ZmE2Yi4uMTVkYzE2OWE4NTNlZTM0MWRjMjQyZDc4OGI5MWI1
M2FkOTNkMTMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTEyLTA4ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHRo
ZSBDRlVSTENvbm5lY3Rpb25DbGllbnQgdG8gYmUgdGhlIHN5bmNocm9ub3VzIGltcGxlbWVudGF0
aW9uIG9mIGFuIGFic3RyYWN0IG5ldHdvcmsgZGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTM3OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
OjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6On5SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdENhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRp
ZFJlY2VpdmVSZXNwb25zZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlk
RmluaXNoTG9hZGluZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZEZhaWxDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsQ2FjaGVSZXNw
b25zZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVDaGFsbGVuZ2VDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRTZW5kQm9k
eURhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNh
blJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQXJyYXlD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlOjptYWtlQ29ubmVjdGlvbkNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmg6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OlN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFNlbmRCb2R5RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
OjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlRGF0
YUFycmF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oOiBBZGRlZC4KKwogMjAxMy0xMi0wOCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBnZXRDb21wdXRlZFN0
eWxlIGJvcmRlci1yYWRpdXMgc2hvcnRoYW5kIG9taXRzIHZlcnRpY2FsIHJhZGl1cyBpbmZvcm1h
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oK
aW5kZXggYTNmODA5N2FlZTU3Y2MxZmNiMGFhMjhjMmRjNWE2MmJhZWE4MWU5ZC4uMjI3NjE5MDk0
NTgyZTZjMTcwZjllMDY5N2Q4OGVkMGMzY2Y1M2ZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC04Mjc3LDYgKzgyNzcsMTIgQEAKICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3Bw
Ij4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCI+CiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CkBAIC04MzAxLDYgKzgzMDcsMTIgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2lu
Q2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAiPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgor
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcd2luXERvd25sb2FkQnVuZGxlV2luLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcd2luXE5ldHdvcmtTdGF0ZU5vdGlmaWVyV2luLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFxD
b29raWVKYXJDdXJsLmNwcCI+CkBAIC0xOTUwMywxMSArMTk1MTUsMTMgQEAKICAgICA8Q3VzdG9t
QnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcRm9ybURhdGFTdHJlYW1D
Rk5ldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xj
ZlxMb2FkZXJSdW5Mb29wQ0YuaCIgLz4KICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3VyY2VFcnJvci5oIiAvPgorICAgIDxDdXN0b21CdWls
ZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmgiIC8+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlUmVxdWVzdC5oIiAvPgogICAgIDxDdXN0b21C
dWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxSZXNvdXJjZVJlcXVlc3RD
Rk5ldC5oIiAvPgogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0
d29ya1xjZlxSZXNvdXJjZVJlc3BvbnNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFNvY2tldFN0cmVhbUVycm9yLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFNvY2tldFN0cmVhbUhhbmRsZS5o
IiAvPgorICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xj
ZlxTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIgLz4K
ICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBmMGIwMjY2MDI0NDJkZGRkMDFmYTAxMjgw
ZTE2NjZjZGU0N2U2MTIxLi5lZTI1ODBmMDNiYjM5ZDk2ZTdjYTg4NzRmMGUwMjM5YTY3Mjk4YmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCkBAIC0xODgxLDYgKzE4ODEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCI+CiAg
ICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY2Y8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxuZXR3b3JrXGNmPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlUmVxdWVzdENGTmV0LmNw
cCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY2Y8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTE4OTMsNiArMTg5Niw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Q0ZOZXQuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjZjwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIj4KKyAgICAg
IDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjZjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1x3aW5cRG93bmxvYWRC
dW5kbGVXaW4uY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1x3aW48L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE1MDkyLDYgKzE1MDk4LDkgQEAKICAgICA8Q3VzdG9t
QnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3VyY2VFcnJvci5o
Ij4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjZjwvRmlsdGVyPgogICAgIDwvQ3Vz
dG9tQnVpbGRTdGVwPgorICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
bmV0d29ya1xjZlxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiPgorICAg
ICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGNmPC9GaWx0ZXI+CisgICAgPC9DdXN0b21CdWls
ZFN0ZXA+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3Jr
XGNmXFJlc291cmNlUmVxdWVzdC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xj
ZjwvRmlsdGVyPgogICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgpAQCAtMTUxMDEsNiArMTUxMTAsOSBA
QAogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxS
ZXNvdXJjZVJlc3BvbnNlLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGNmPC9G
aWx0ZXI+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xj
ZjwvRmlsdGVyPgorICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgogICAgIDxDdXN0b21CdWlsZFN0ZXAg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRlcj4KICAgICA8
L0N1c3RvbUJ1aWxkU3RlcD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAyNjkxNGQ1MWU1NWMxMzIxZmM0NTY1NzM1ZGUzNDU1NmU1
YTVlZjUyLi4xNGNhMjYwN2RiYjZmM2I5OGQ0YWYwNDkxMzhkY2JjMWYxMTIyMGNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
MTQsNiArOTE0LDEwIEBACiAJCTI2QzE3QTNGMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVt
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZD
MTdBM0QxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MubW0gKi87IH07CiAJCTI2RTk4
QTEwMTMwQTlGQ0EwMDhFQjdCMiAvKiBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkU5OEEwRjEzMEE5RkNBMDA4
RUI3QjIgLyogVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oICovOyB9OwogCQkyNkY0MEQ0QTE0OTA0
QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGNDBENDkxNDkwNEE2MzAwQ0E2N0M0IC8qIEV2ZW50TG9v
cElPUy5tbSAqLzsgfTsKKwkJMjZGQUU0Q0MxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGQUU0QzgxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICovOyB9OworCQkyNkZBRTRDRDE4NTJF
M0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGQUU0QzkxODUy
RTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCAq
LzsgfTsKKwkJMjZGQUU0Q0UxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkZBRTRDQTE4NTJFM0E1MDA0QzhDNDYgLyogU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLzsgfTsKKwkJ
MjZGQUU0Q0YxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZGQUU0Q0IxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oICovOyB9OwogCQkyOTE3QjU2MTE0NzM0
OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTE3QjU1RTE0NzM0OTZDMDA1MkM5RDAgLyog
TGF5ZXJGbHVzaFNjaGVkdWxlci5jcHAgKi87IH07CiAJCTI5MTdCNTYyMTQ3MzQ5NkMwMDUyQzlE
MCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOTE3QjU1RjE0NzM0OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNj
aGVkdWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTI5MTdCNTYzMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTE3QjU2
MDE0NzM0OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MjY5LDYgKzUyNzMs
NyBAQAogCQlDNTI3OEIwQzE3RjIxMkVBMDAzQTI5OTggLyogUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUyNzhC
MEIxN0YyMTJFQTAwM0EyOTk4IC8qIFBsYXRmb3JtUGFzdGVib2FyZElPUy5tbSAqLzsgfTsKIAkJ
QzU0NDI3NEIxMUE1N0U3QTAwNjNBNzQ5IC8qIERPTVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDQyNzQ5MTFBNTdFN0EwMDYzQTc0
OSAvKiBET01TdHJpbmdMaXN0LmggKi87IH07CiAJCUM1NTYxMEYxMTFBNzA0RUIwMEI4MkQyNyAv
KiBET01TdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM1NTYxMEYwMTFBNzA0RUIwMEI4MkQyNyAvKiBET01TdHJpbmdMaXN0LmNwcCAq
LzsgfTsKKwkJQzU1QzdCQTExNzE4QUZCQTAwMTMyN0U0IC8qIFJlbmRlclRoZW1lSU9TLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU1QzdCQTAxNzE4
QUZCQTAwMTMyN0U0IC8qIFJlbmRlclRoZW1lSU9TLm1tICovOyB9OwogCQlDNTVFMzhCRjEwMDQw
RDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NUUzOEJCMTAwNDBENUQwMEE1NkJEQiAvKiBT
dG9yYWdlTmFtZXNwYWNlSW1wbC5oICovOyB9OwogCQlDNTVFMzhDMDEwMDQwRDVEMDBBNTZCREIg
LyogU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzU1RTM4QkMxMDA0MEQ1RDAwQTU2QkRCIC8qIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcCAqLzsgfTsKIAkJQzU3MkVFMUYxMjAxQzlCQzAwN0Q4RjgyIC8qIEpTSURC
SW5kZXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1
NzJFRTFEMTIwMUM5QkMwMDdEOEY4MiAvKiBKU0lEQkluZGV4LmggKi87IH07CkBAIC01NDQ3LDgg
KzU0NTIsNiBAQAogCQlDRTdCMkRCNTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZl
V2l0aFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTdCMkRCMTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U3QjJE
QjYxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIyMTU4NkFCQUQw
MDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gKi87IH07CiAJCUNFOTUyMDhB
MTgxMUI0NzUwMDdBNTM5MiAvKiBXZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkM0Q0IxRDE2MUExMzEy
MDBEMjE0REEgLyogV2ViU2FmZUluY3JlbWVudGFsU3dlZXBlcklPUy5oICovOyB9OwotCQlGRUQx
M0Q1MjBDRUE5NDk3MDBEODk0NjYgLyogUmVuZGVyVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDEzRDUwMENFQTk0OTcwMEQ4OTQ2NiAv
KiBSZW5kZXJUaGVtZUlPUy5oICovOyB9OwotCQlDNTVDN0JBMTE3MThBRkJBMDAxMzI3RTQgLyog
UmVuZGVyVGhlbWVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDNTVDN0JBMDE3MThBRkJBMDAxMzI3RTQgLyogUmVuZGVyVGhlbWVJT1MubW0gKi87
IH07CiAJCUNFQ0FERkM2MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZD
MjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwICovOyB9OwogCQlD
RUNBREZDNzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQ0FERkMzMTUzNzc4RkYw
MEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFQ0FERkM4MTUzNzc4RkYwMEUzNzA2OCAvKiBE
aWN0YXRpb25Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFQ0FERkM0MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmNw
cCAqLzsgfTsKQEAgLTYzMjUsNiArNjMyOCw3IEBACiAJCUZFQkM1RjMxMTZCRDBDQzMwMDY1OUJE
MyAvKiBEYXRhYmFzZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVCQzVGMkYxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAg
Ki87IH07CiAJCUZFQkM1RjMyMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQkM1RjMwMTZCRDBD
QzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUQxM0QzQTBDRUE5MzQ2MDBEODk0NjYgLyogRWRpdG9y
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVE
MTNEMzkwQ0VBOTM0NjAwRDg5NDY2IC8qIEVkaXRvcklPUy5tbSAqLzsgfTsKKwkJRkVEMTNENTIw
Q0VBOTQ5NzAwRDg5NDY2IC8qIFJlbmRlclRoZW1lSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQxM0Q1MDBDRUE5NDk3MDBEODk0NjYgLyogUmVu
ZGVyVGhlbWVJT1MuaCAqLzsgfTsKIAkJRkVENDgzOTBDRUQ2NkMzMjU1RjcyQzU5IC8qIE1hdGhN
TFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjc1QTA1OUFGMTcwRDhGQUE1QjhDQUJFIC8qIE1hdGhNTFNlbGVjdEVsZW1lbnQu
Y3BwICovOyB9OwogCQlGRURCRkYxNjE4MkI3QThEMDAxN0ZBNjQgLyogQnJlYWtwb2ludElELmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURCRkYxNDE4
MkI3QThEMDAxN0ZBNjQgLyogQnJlYWtwb2ludElELmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRBIC8qIERh
dGFiYXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3Bw
ICovOyB9OwpAQCAtNzU2MSw2ICs3NTY1LDEwIEBACiAJCTI2QzE3QTNEMTQ5MUQyRDQwMEQxMkJB
MiAvKiBGaWxlU3lzdGVtSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gRmlsZVN5c3RlbUlPUy5tbTsgcGF0aCA9IGlvcy9GaWxlU3lzdGVtSU9TLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkU5OEEwRjEzMEE5RkNBMDA4RUI3QjIgLyogVGV4
dENvZGVjQVNDSUlGYXN0UGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2
RjQwRDQ5MTQ5MDRBNjMwMENBNjdDNCAvKiBFdmVudExvb3BJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFdmVudExvb3BJT1MubW07IHBhdGggPSBpb3MvRXZl
bnRMb29wSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkZBRTRDODE4NTJF
M0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZG
QUU0QzkxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
NkZBRTRDQTE4NTJFM0E1MDA0QzhDNDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2RkFFNENCMTg1MkUzQTUwMDRDOEM0NiAv
KiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5
MTdCNTVFMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExheWVyRmx1c2hTY2hlZHVsZXIuY3BwOyBw
YXRoID0gY2EvTGF5ZXJGbHVzaFNjaGVkdWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI5MTdCNTVGMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExheWVyRmx1c2hTY2hlZHVsZXIuaDsg
cGF0aCA9IGNhL0xheWVyRmx1c2hTY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjkxN0I1NjAxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXJDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGF5ZXJGbHVzaFNjaGVkdWxl
ckNsaWVudC5oOyBwYXRoID0gY2EvTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIzNDcsNiArMTIzNTUsNyBAQAogCQlDNTQ0Mjc0OTEx
QTU3RTdBMDA2M0E3NDkgLyogRE9NU3RyaW5nTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01TdHJpbmdMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUM1NDQyNzRBMTFBNTdFN0EwMDYzQTc0OSAvKiBET01TdHJpbmdMaXN0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBET01TdHJpbmdMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzU1NjEwRjAxMUE3MDRFQjAwQjgyRDI3IC8qIERPTVN0cmluZ0xpc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NU3RyaW5nTGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM1NUM3QkEwMTcxOEFGQkEwMDEzMjdFNCAvKiBSZW5k
ZXJUaGVtZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJl
bmRlclRoZW1lSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTVFMzhCQjEw
MDQwRDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZU5hbWVzcGFjZUltcGwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzU1RTM4QkMxMDA0MEQ1RDAwQTU2QkRCIC8qIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU3MkVFMUQx
MjAxQzlCQzAwN0Q4RjgyIC8qIEpTSURCSW5kZXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNJREJJbmRleC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI1
NzYsOCArMTI1ODUsNiBAQAogCQlDRTdCMkRCMDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBwYXRoID0gbWFjL0FsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3
QjJEQjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaDsg
cGF0aCA9IG1hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgcGF0aCA9IG1hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFRDEzRDUwMENFQTk0OTcwMEQ4
OTQ2NiAvKiBSZW5kZXJUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDNTVDN0JB
MDE3MThBRkJBMDAxMzI3RTQgLyogUmVuZGVyVGhlbWVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW5kZXJUaGVtZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVy
bmF0aXZlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlv
bkFsdGVybmF0aXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VDQURGQzMx
NTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpY3RhdGlvbkFsdGVybmF0aXZlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNFQ0FERkM0MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21t
YW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkNv
bW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM1NDksNiArMTM1NTYs
NyBAQAogCQlGRUJDNUYyRjE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlQmFzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQkM1RjMwMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRh
YmFzZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VCYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRDEzRDM5MENFQTkzNDYwMEQ4OTQ2
NiAvKiBFZGl0b3JJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBFZGl0b3JJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRDEzRDUwMENF
QTk0OTcwMEQ4OTQ2NiAvKiBSZW5kZXJUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRURCRkYxNDE4MkI3QThEMDAxN0ZBNjQgLyogQnJlYWtwb2ludElELmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyZWFrcG9pbnRJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRURFRjgzRjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVERUY4NDAxNjc5NzEwODAwMEU0
NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGF0YWJhc2VTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1
MzMsNiArMTk1NDEsOCBAQAogCQkJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJy
b3JDRi5jcHAgKi8sCiAJCQkJN0VFNjg0NTkxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwICovLAorCQkJCTI2RkFFNEM4MTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLywKKwkJCQkyNkZBRTRDOTE4NTJF
M0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oICov
LAogCQkJCTdFRTY4NDVBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLywK
IAkJCQk3RUU2ODQ1QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3Bw
ICovLAogCQkJCTdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5l
dC5oICovLApAQCAtMTk1NDIsNiArMTk1NTIsOCBAQAogCQkJCTUxQUJBRTFDMTAzQzE5MTMwMDhD
NTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLywKIAkJCQk1MUFCQUUxRDEwM0MxOTEzMDA4
QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICovLAogCQkJCTQ0MkFCQ0Q1MTdE
OTI2MkYwMEQzMDcxNSAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudENGTmV0LmNwcCAqLywKKwkJ
CQkyNkZBRTRDQTE4NTJFM0E1MDA0QzhDNDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLywKKwkJCQkyNkZBRTRDQjE4NTJFM0E1MDA0QzhD
NDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTI0NDkzLDYgKzI0NTA1LDcgQEAKIAkJCQk3RUU2ODQ2QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0RjcxM0MwRDVBNkYxOTAwMDE4RDY5
IC8qIFJlc291cmNlRXJyb3JCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3OTBDRTky
M0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTI2RkFF
NENEMTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3QTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVz
b3VyY2VIYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3NjdCMENFOTIzQTEw
MDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUU0MTQzNDE2QTY1OTYzMDBDNjMzQzcgLyogUmVzb3VyY2VIYW5kbGVUeXBlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNTAxOCw2ICsyNTAzMSw3IEBACiAJCQkJQjIyMjdBRjYwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1pvb21BbmRQYW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRTRFQzk4MEQwMEMy
MkIwMDQzMjY0MyAvKiBTVkdab29tRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxODA4MTE3
MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMjZGQUU0Q0YxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURBOTdF
Q0QxNjhFNzg3QjAwMEUzNjc2IC8qIFN5c3RlbVZlcnNpb25NYWMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4Q0ZGMDUxMEExNTRGMDkwMDBBNDIzNCAvKiBUYWJsZUxheW91dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDcyQUUxRTUxODNDMDc0MTAwMEE1OTg4IC8qIFBsdWdpblJlcGxhY2VtZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTI3NzM2LDYgKzI3NzUwLDcgQEAKIAkJCQkwNzA1ODUxMjE3RkE3
MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTRDNzY3ODBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjZGQUU0Q0MxODUyRTNBNTAwNEM4QzQ2
IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTFCQTAwMzExNkZCOTJBQzAwQkE3QTM1IC8qIFJlc291cmNlSGFuZGxlQ2xpZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjUxMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNv
dXJjZUhhbmRsZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRTIyN0UzMEFGNTg5QUQwMEQ0
ODMyNCAvKiBSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3OTg1LDYgKzI4
MDAwLDcgQEAKIAkJCQk5M0IyRDgxODBGOTkyMEVFMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRp
b24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwODc1NThDNTEzQjRBNTdEMDBGNDkzMDcgLyogU3Vy
cm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTYyQzEy
MTdDMTFBQjlFNzcwMDNDNDYyQyAvKiBTdXNwZW5kYWJsZVRpbWVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTI2RkFFNENFMTg1MkUzQTUwMDRDOEM0NiAvKiBTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5
NzMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTI0RDkxMkIwMTNDQTlBMUYwMEQyMTkxNSAvKiBTVkdBbHRHbHlwaERlZkVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjU2NTNGMkQwRDk3MjdEMjAwQ0E5NzIzIC8qIFNWR0FsdEdseXBo
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBmZjgwNjc0OWE2MWIzNjZlN2FiZjgyNmI5
NGIwMmM3NGQ4YWNiMDJhLi41OGEyMjI3MmQ1NThhMTEyYzRmZWUzMWMzYmI2NzI5MDNjMzMyNDU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oCkBAIC03Miw3ICs3Miw2IEBAIHR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0ICppZDsKIHR5
cGVkZWYgc3RydWN0IF9DRlVSTENvbm5lY3Rpb24qIENGVVJMQ29ubmVjdGlvblJlZjsKIHR5cGVk
ZWYgaW50IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3k7CiB0eXBlZGVmIHN0cnVjdCBP
cGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwotdHlwZWRl
ZiBzdHJ1Y3QgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IENGVVJMQ29ubmVjdGlvbkNsaWVudF9W
NjsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQpAQCAtMTQy
LDcgKzE0MSw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGN1cnJlbnRS
ZXF1ZXN0KCkgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQgc2V0SG9zdEFsbG93c0FueUhUVFBTQ2Vy
dGlmaWNhdGUoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIHZvaWQgc2V0Q2xpZW50Q2VydGlm
aWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBDRkRhdGFSZWYpOwotICAgIHN0YXRpYyBDRlVSTENv
bm5lY3Rpb25DbGllbnRfVjYqIGNvbm5lY3Rpb25DbGllbnRDYWxsYmFja3MoKTsKIAogI2lmIFVT
RShRVUlDS19MT09LKQogICAgIFF1aWNrTG9va0hhbmRsZSogcXVpY2tMb29rSGFuZGxlKCkgeyBy
ZXR1cm4gbV9xdWlja0xvb2suZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggNzVlMjI3YjY2
NzI5ZTQwZmIyOTVjMTZhNWFlZTE1YjcwNWYwNzBkMi4uMzNiMDhiMzc0NGY1N2IxYWQ5OTU1ZTk3
NzQ5MDJiNmU0NmI0ZjM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJUaW1lci5oIgogCiAjaWYgVVNFKENGTkVUV09SSykKKyNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NG
VVJMQ29ubmVjdGlvblByaXYuaD4KICNlbmRpZgogCkBAIC0xNDgsNiArMTQ5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgICAgIFJldGFpblB0cjxDRlVS
TENvbm5lY3Rpb25SZWY+IG1fY29ubmVjdGlvbjsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IG1f
Y3VycmVudFJlcXVlc3Q7CisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KE1BQykgJiYgIVVTRShDRk5FVFdPUkspCiAgICAgICAgIFJldGFpblB0cjxOU1VSTENvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDJiNmU3N2E3MmUyMDg1
ZGQ4MWM3NDk0NjFiYWI5ZDRiOGFlOTlmZjkuLjY0OTQyODZhNjA2MjgyZTZhMzBlNWMxYmU2Njk1
NTJjYjQwYzc2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIlN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPENGTmV0
d29yay9DRk5ldHdvcmsuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5cy90
eXBlcy5oPgpAQCAtOTYsMTUgKzk3LDYgQEAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPj4mIGNsaWVudENlcnRzKCkKICAgICByZXR1cm4gY2VydHM7CiB9CiAKLSNp
ZiAhUExBVEZPUk0oTUFDKQotc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1JTUVUeXBlKENGVVJMUmVz
cG9uc2VSZWYgcmVzcG9uc2UpCi17Ci0gICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1F
VHlwZVN0cmluZyA9IGRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigp
OwotICAgIAotICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShyZXNwb25zZSwgZGVmYXVsdE1J
TUVUeXBlU3RyaW5nKTsKLX0KLSNlbmRpZgotCiBzdGF0aWMgdm9pZCBhcHBseUJhc2ljQXV0aG9y
aXphdGlvbkhlYWRlcihSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IENyZWRlbnRpYWwm
IGNyZWRlbnRpYWwpCiB7CiAgICAgU3RyaW5nIGF1dGhlbnRpY2F0aW9uSGVhZGVyID0gIkJhc2lj
ICIgKyBiYXNlNjRFbmNvZGUoU3RyaW5nKGNyZWRlbnRpYWwudXNlcigpICsgIjoiICsgY3JlZGVu
dGlhbC5wYXNzd29yZCgpKS51dGY4KCkpOwpAQCAtMTEyLDI4OSArMTA0LDYgQEAgc3RhdGljIHZv
aWQgYXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFkZXIoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBDcmVkZW4KICAgICByZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZCgiQXV0aG9yaXph
dGlvbiIsIGF1dGhlbnRpY2F0aW9uSGVhZGVyKTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDRlVS
TFJlc3BvbnNlUmVmPiBzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVlc3QsIENGVVJMUmVxdWVzdFJlZiBuZXdSZXF1
ZXN0LCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVkaXJlY3RSZXNwb25zZSkKLXsKLSAgICBpZiAoY2ZS
ZWRpcmVjdFJlc3BvbnNlKQotICAgICAgICByZXR1cm4gY2ZSZWRpcmVjdFJlc3BvbnNlOwotCi0g
ICAgQ0ZVUkxSZWYgbmV3VVJMID0gQ0ZVUkxSZXF1ZXN0R2V0VVJMKG5ld1JlcXVlc3QpOwotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmV3U2NoZW1lID0gYWRvcHRDRihDRlVSTENvcHlTY2hl
bWUobmV3VVJMKSk7Ci0KLSAgICAvLyBJZiB0aGUgcHJvdG9jb2xzIG9mIHRoZSBuZXcgcmVxdWVz
dCBhbmQgdGhlIGN1cnJlbnQgcmVxdWVzdCBtYXRjaCwgdGhpcyBpcyBub3QgYW4gSFNUUyByZWRp
cmVjdCBhbmQgd2Ugc2hvdWxkbid0IHN5bnRoZXNpemUgYSByZWRpcmVjdCByZXNwb25zZS4KLSAg
ICBpZiAoY3VycmVudFJlcXVlc3QudXJsKCkucHJvdG9jb2woKSA9PSBTdHJpbmcobmV3U2NoZW1l
LmdldCgpKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGN1
cnJlbnRVUkwgPSBjdXJyZW50UmVxdWVzdC51cmwoKS5jcmVhdGVDRlVSTCgpOwotICAgIFJldGFp
blB0cjxDRkhUVFBNZXNzYWdlUmVmPiByZXNwb25zZU1lc3NhZ2UgPSBhZG9wdENGKENGSFRUUE1l
c3NhZ2VDcmVhdGVSZXNwb25zZSgwLCAzMDIsIDAsIGtDRkhUVFBWZXJzaW9uMV8xKSk7Ci0gICAg
UmV0YWluUHRyPENGVVJMUmVmPiBuZXdBYnNvbHV0ZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDb3B5QWJz
b2x1dGVVUkwobmV3VVJMKSk7Ci0gICAgQ0ZIVFRQTWVzc2FnZVNldEhlYWRlckZpZWxkVmFsdWUo
cmVzcG9uc2VNZXNzYWdlLmdldCgpLCBDRlNUUigiTG9jYXRpb24iKSwgQ0ZVUkxHZXRTdHJpbmco
bmV3QWJzb2x1dGVVUkwuZ2V0KCkpKTsKLSAgICBDRkhUVFBNZXNzYWdlU2V0SGVhZGVyRmllbGRW
YWx1ZShyZXNwb25zZU1lc3NhZ2UuZ2V0KCksIENGU1RSKCJDYWNoZS1Db250cm9sIiksIENGU1RS
KCJuby1zdG9yZSIpKTsKLQotICAgIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiBuZXdSZXNw
b25zZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZVdpdGhIVFRQUmVzcG9uc2UoMCwgY3Vy
cmVudFVSTC5nZXQoKSwgcmVzcG9uc2VNZXNzYWdlLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VO
b3RBbGxvd2VkKSk7Ci0gICAgcmV0dXJuIG5ld1Jlc3BvbnNlOwotfQotCi1zdGF0aWMgQ0ZVUkxS
ZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxS
ZXF1ZXN0UmVmIGNmUmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiBvcmlnaW5hbFJlZGlyZWN0UmVz
cG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAg
VU5VU0VEX1BBUkFNKGNvbm4pOwotI2VuZGlmCi0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9
IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpOwotICAgIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiByZWRpcmVjdFJlc3BvbnNlID0g
c3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShoYW5kbGUtPmN1cnJlbnRSZXF1
ZXN0KCksIGNmUmVxdWVzdCwgb3JpZ2luYWxSZWRpcmVjdFJlc3BvbnNlKTsKLQotICAgIGlmICgh
cmVkaXJlY3RSZXNwb25zZSkgewotICAgICAgICBDRlJldGFpbihjZlJlcXVlc3QpOwotICAgICAg
ICByZXR1cm4gY2ZSZXF1ZXN0OwotICAgIH0KLQotICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSB3
aWxsU2VuZFJlcXVlc3QoY29ubj0lcCwgaGFuZGxlPSVwKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBo
YW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0g
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7Ci0gICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UpIHsK
LSAgICAgICAgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRI
VFRQUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIGlmIChodHRwTWVz
c2FnZSAmJiBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0dHBNZXNzYWdlKSA9
PSAzMDcpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFzdEhUVFBNZXRo
b2QgPSBoYW5kbGUtPmxhc3RIVFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmV3TWV0aG9kID0gYWRvcHRDRihDRlVSTFJlcXVl
c3RDb3B5SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0KSk7Ci0gICAgICAgICAgICBpZiAoQ0ZT
dHJpbmdDb21wYXJlV2l0aE9wdGlvbnMobGFzdEhUVFBNZXRob2QuZ2V0KCksIG5ld01ldGhvZC5n
ZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgQ0ZTdHJpbmdHZXRMZW5ndGgobGFzdEhUVFBNZXRob2QuZ2V0
KCkpKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkpIHsKLSAgICAgICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZj4gbXV0YWJsZVJlcXVlc3QgPSBhZG9wdENGKENG
VVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIGNmUmVxdWVzdCkpOwotICAgICAgICAgICAg
ICAgIHdrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKGhhbmRsZS0+c3RvcmFnZVNlc3Npb24oKSwg
bXV0YWJsZVJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhU
VFBSZXF1ZXN0TWV0aG9kKG11dGFibGVSZXF1ZXN0LmdldCgpLCBsYXN0SFRUUE1ldGhvZC5nZXQo
KSk7Ci0KLSAgICAgICAgICAgICAgICBGb3JtRGF0YSogYm9keSA9IGhhbmRsZS0+Zmlyc3RSZXF1
ZXN0KCkuaHR0cEJvZHkoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNl
KGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpLCAiR0VUIikgJiYgYm9keSAmJiAh
Ym9keS0+aXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpzZXRIVFRQQm9k
eShtdXRhYmxlUmVxdWVzdC5nZXQoKSwgYm9keSk7Ci0KLSAgICAgICAgICAgICAgICBTdHJpbmcg
b3JpZ2luYWxDb250ZW50VHlwZSA9IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0cENvbnRlbnRU
eXBlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFvcmlnaW5hbENvbnRlbnRUeXBlLmlzRW1wdHko
KSkKLSAgICAgICAgICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFs
dWUobXV0YWJsZVJlcXVlc3QuZ2V0KCksIENGU1RSKCJDb250ZW50LVR5cGUiKSwgb3JpZ2luYWxD
b250ZW50VHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKLQotICAgICAgICAgICAgICAgIHJl
cXVlc3QgPSBtdXRhYmxlUmVxdWVzdC5nZXQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLSAgICBpZiAocmVxdWVzdC5pc051bGwoKSkKLSAgICAgICAgcmVxdWVzdCA9IGNmUmVx
dWVzdDsKLQotICAgIC8vIFNob3VsZCBub3Qgc2V0IFJlZmVyZXIgYWZ0ZXIgYSByZWRpcmVjdCBm
cm9tIGEgc2VjdXJlIHJlc291cmNlIHRvIG5vbi1zZWN1cmUgb25lLgotICAgIGlmICghcmVxdWVz
dC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpICYmIHByb3RvY29sSXMocmVxdWVzdC5odHRwUmVm
ZXJyZXIoKSwgImh0dHBzIikgJiYgaGFuZGxlLT5jb250ZXh0KCktPnNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QoKSkKLSAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBSZWZl
cnJlcigpOwotCi0gICAgaGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RS
ZXNwb25zZS5nZXQoKSk7Ci0KLSAgICBpZiAocmVxdWVzdC5pc051bGwoKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBjZlJlcXVlc3QgPSByZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQ
Qm9keSk7Ci0KLSAgICBDRlJldGFpbihjZlJlcXVlc3QpOwotICAgIHJldHVybiBjZlJlcXVlc3Q7
Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShDRlVSTENvbm5lY3Rpb25SZWYg
Y29ubiwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQotewotI2lmIExPR19ESVNBQkxFRCAmJiAhVVNFKFFVSUNLX0xPT0spCi0gICAgVU5VU0VEX1BB
UkFNKGNvbm4pOwotI2VuZGlmCi0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19j
YXN0PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotCi0g
ICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIGRpZFJlY2VpdmVSZXNwb25zZShjb25uPSVwLCBoYW5k
bGU9JXApICglcykiLCBjb25uLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBpZiAoIWhhbmRsZS0+Y2xpZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAvLyBBdm9pZCBNSU1FIHR5
cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmll
ZC4KLSAgICBDRkhUVFBNZXNzYWdlUmVmIG1zZyA9IHdrR2V0Q0ZVUkxSZXNwb25zZUhUVFBSZXNw
b25zZShjZlJlc3BvbnNlKTsKLSAgICBpbnQgc3RhdHVzQ29kZSA9IG1zZyA/IENGSFRUUE1lc3Nh
Z2VHZXRSZXNwb25zZVN0YXR1c0NvZGUobXNnKSA6IDA7Ci0KLSAgICBpZiAoc3RhdHVzQ29kZSAh
PSAzMDQpCi0gICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoY2ZSZXNwb25zZSk7Ci0K
LSNpZiAhUExBVEZPUk0oSU9TKQotICAgIGlmIChfQ0ZVUkxSZXF1ZXN0Q29weVByb3RvY29sUHJv
cGVydHlGb3JLZXkoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRh
dGVIVFRQQm9keSksIENGU1RSKCJGb3JjZUhUTUxNSU1FVHlwZSIpKSkKLSAgICAgICAgd2tTZXRD
RlVSTFJlc3BvbnNlTUlNRVR5cGUoY2ZSZXNwb25zZSwgQ0ZTVFIoInRleHQvaHRtbCIpKTsKLSNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TKQotI2Vsc2UKLSAgICBpZiAoIUNGVVJMUmVzcG9uc2VHZXRN
SU1FVHlwZShjZlJlc3BvbnNlKSkgewotICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUgYXBw
bHlpbmcgdGhlIGRlZmF1bHQgTUlNRVR5cGUgaWYgd2UgdG9sZCB0aGUgbmV0d29ya2luZyBsYXll
ciB0byBkbyBjb250ZW50IHNuaWZmaW5nIGZvciBoYW5kbGUuCi0gICAgICAgIEFTU0VSVCghaGFu
ZGxlLT5zaG91bGRDb250ZW50U25pZmYoKSk7Ci0gICAgICAgIHNldERlZmF1bHRNSU1FVHlwZShj
ZlJlc3BvbnNlKTsKLSAgICB9Ci0jZW5kaWYKLQotI2lmIFVTRShRVUlDS19MT09LKQotICAgIGhh
bmRsZS0+c2V0UXVpY2tMb29rSGFuZGxlKFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKGhhbmRsZSwg
Y29ubiwgY2ZSZXNwb25zZSkpOwotICAgIGlmIChoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpKQot
ICAgICAgICBjZlJlc3BvbnNlID0gaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+Y2ZSZXNwb25z
ZSgpOwotI2VuZGlmCi0gICAgCi0gICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGhhbmRsZSwgY2ZSZXNwb25zZSk7Ci19Ci0KLSNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJS
QVlfQ0FMTEJBQ0spCi1zdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KENGVVJMQ29ubmVj
dGlvblJlZiBjb25uLCBDRkFycmF5UmVmIGRhdGFBcnJheSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKLXsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oY29ubik7Ci0jZW5kaWYK
LSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0gICAgaWYgKCFoYW5kbGUtPmNsaWVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gZGlkUmVj
ZWl2ZURhdGFBcnJheShjb25uPSVwLCBoYW5kbGU9JXAsIGFycmF5TGVuZ3RoPSVsZCkgKCVzKSIs
IGNvbm4sIGhhbmRsZSwgQ0ZBcnJheUdldENvdW50KGRhdGFBcnJheSksIGhhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSNpZiBVU0UoUVVJQ0tf
TE9PSykKLSAgICBpZiAoaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKSAmJiBoYW5kbGUtPnF1aWNr
TG9va0hhbmRsZSgpLT5kaWRSZWNlaXZlRGF0YUFycmF5KGRhdGFBcnJheSkpCi0gICAgICAgIHJl
dHVybjsKLSNlbmRpZgotCi0gICAgaGFuZGxlLT5oYW5kbGVEYXRhQXJyYXkoZGF0YUFycmF5KTsK
LX0KLSNlbmRpZgotCi1zdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShDRlVSTENvbm5lY3Rpb25S
ZWYgY29ubiwgQ0ZEYXRhUmVmIGRhdGEsIENGSW5kZXggb3JpZ2luYWxMZW5ndGgsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCi17Ci0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19j
YXN0PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotCi0j
aWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGNvbm4pOwotI2Vsc2UKLSAgICBDRklu
ZGV4IGxlbmd0aCA9IENGRGF0YUdldExlbmd0aChkYXRhKTsKLSAgICBMT0coTmV0d29yaywgIkNG
TmV0IC0gZGlkUmVjZWl2ZURhdGEoY29ubj0lcCwgaGFuZGxlPSVwLCBieXRlcz0lbGQpICglcyki
LCBjb25uLCBoYW5kbGUsIGxlbmd0aCwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKLSNlbmRpZgotCi0jaWYgVVNFKFFVSUNLX0xPT0spCi0gICAg
aWYgKGhhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkgJiYgaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUo
KS0+ZGlkUmVjZWl2ZURhdGEoZGF0YSkpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCi0gICAg
aWYgKFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQgPSBoYW5kbGUtPmNsaWVudCgpKQotICAg
ICAgICBjbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBTaGFyZWRCdWZmZXI6OndyYXBD
RkRhdGEoZGF0YSksIG9yaWdpbmFsTGVuZ3RoKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkU2VuZEJv
ZHlEYXRhKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZJbmRleCwgQ0ZJbmRleCB0b3RhbEJ5dGVzV3Jp
dHRlbiwgQ0ZJbmRleCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKQotewotICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNv
dXJjZUhhbmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLSAgICBpZiAoIWhh
bmRsZSB8fCAhaGFuZGxlLT5jbGllbnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGhhbmRsZS0+
Y2xpZW50KCktPmRpZFNlbmREYXRhKGhhbmRsZSwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGUpOwotfQotCi1zdGF0aWMgQm9vbGVhbiBzaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZUNhbGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQotewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShjb25uKTsK
LSNlbmRpZgotICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBjb25zdF9jYXN0PFJlc291cmNl
SGFuZGxlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VIYW5kbGUqPihjbGllbnRJbmZvKSk7
Ci0KLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Uo
Y29ubj0lcCwgaGFuZGxlPSVwKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVx
dWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgaWYgKCFoYW5kbGUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBoYW5kbGUtPnNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoQ0ZV
UkxDb25uZWN0aW9uUmVmIGNvbm4sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0jaWYgTE9H
X0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGNvbm4pOwotI2VuZGlmCi0gICAgUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpOwotCi0gICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIGRpZEZpbmlz
aExvYWRpbmcoY29ubj0lcCwgaGFuZGxlPSVwKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUt
PmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0jaWYgVVNF
KFFVSUNLX0xPT0spCi0gICAgaWYgKGhhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkgJiYgaGFuZGxl
LT5xdWlja0xvb2tIYW5kbGUoKS0+ZGlkRmluaXNoTG9hZGluZygpKQotICAgICAgICByZXR1cm47
Ci0jZW5kaWYKLQotICAgIGlmIChoYW5kbGUtPmNsaWVudCgpKQotICAgICAgICBoYW5kbGUtPmNs
aWVudCgpLT5kaWRGaW5pc2hMb2FkaW5nKGhhbmRsZSwgMCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRp
ZEZhaWwoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGRXJyb3JSZWYgZXJyb3IsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGNv
bm4pOwotI2VuZGlmCi0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJl
c291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotCi0gICAgTE9H
KE5ldHdvcmssICJDRk5ldCAtIGRpZEZhaWwoY29ubj0lcCwgaGFuZGxlPSVwLCBlcnJvciA9ICVw
KSAoJXMpIiwgY29ubiwgaGFuZGxlLCBlcnJvciwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotI2lmIFVTRShRVUlDS19MT09LKQotICAgIGlm
IChoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpKQotICAgICAgICBoYW5kbGUtPnF1aWNrTG9va0hh
bmRsZSgpLT5kaWRGYWlsKCk7Ci0jZW5kaWYKLQotICAgIGlmIChoYW5kbGUtPmNsaWVudCgpKQot
ICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRGYWlsKGhhbmRsZSwgUmVzb3VyY2VFcnJvcihl
cnJvcikpOwotfQotCi1zdGF0aWMgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNw
b25zZShDRlVSTENvbm5lY3Rpb25SZWYsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVz
cG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpOwotCi0jaWYgUExBVEZPUk0oV0lOKQotICAgIC8vIFdvcmthcm91bmQgZm9yIDxy
ZGFyOi8vcHJvYmxlbS82MzAwOTkwPiBDYWNoaW5nIGRvZXMgbm90IHJlc3BlY3QgVmFyeSBIVFRQ
IGhlYWRlci4KLSAgICAvLyBGSVhNRTogV2ViQ29yZSBjYWNoZSBoYXMgaXNzdWVzIHdpdGggVmFy
eSwgdG9vIChidWcgNTg3OTcsIGJ1ZyA3MTUwOSkuCi0gICAgQ0ZVUkxSZXNwb25zZVJlZiB3cmFw
cGVkUmVzcG9uc2UgPSBDRkNhY2hlZFVSTFJlc3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNlKGNhY2hl
ZFJlc3BvbnNlKTsKLSAgICBpZiAoQ0ZIVFRQTWVzc2FnZVJlZiBodHRwUmVzcG9uc2UgPSBDRlVS
TFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKHdyYXBwZWRSZXNwb25zZSkpIHsKLSAgICAgICAgQVNT
RVJUKENGSFRUUE1lc3NhZ2VJc0hlYWRlckNvbXBsZXRlKGh0dHBSZXNwb25zZSkpOwotICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHZhcnlWYWx1ZSA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2Fn
ZUNvcHlIZWFkZXJGaWVsZFZhbHVlKGh0dHBSZXNwb25zZSwgQ0ZTVFIoIlZhcnkiKSkpOwotICAg
ICAgICBpZiAodmFyeVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotI2VuZGlm
IC8vIFBMQVRGT1JNKFdJTikKLQotI2lmIFBMQVRGT1JNKFdJTikKLSAgICBpZiAoaGFuZGxlLT5j
bGllbnQoKSAmJiAhaGFuZGxlLT5jbGllbnQoKS0+c2hvdWxkQ2FjaGVSZXNwb25zZShoYW5kbGUs
IGNhY2hlZFJlc3BvbnNlKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0jZWxzZQotICAgIENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYgbmV3UmVzcG9uc2UgPSBoYW5kbGUtPmNsaWVudCgpLT53aWxsQ2FjaGVS
ZXNwb25zZShoYW5kbGUsIGNhY2hlZFJlc3BvbnNlKTsKLSAgICBpZiAobmV3UmVzcG9uc2UgIT0g
Y2FjaGVkUmVzcG9uc2UpCi0gICAgICAgIHJldHVybiBuZXdSZXNwb25zZTsKLSNlbmRpZgotCi0g
ICAgQ0ZSZXRhaW4oY2FjaGVkUmVzcG9uc2UpOwotCi0gICAgcmV0dXJuIGNhY2hlZFJlc3BvbnNl
OwotfQotCi1zdGF0aWMgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKENGVVJMQ29ubmVjdGlvblJl
ZiBjb25uLCBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2hhbGxlbmdlLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQotewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShjb25uKTsKLSNl
bmRpZgotICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhh
bmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLSAgICBBU1NFUlQoaGFuZGxl
KTsKLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25uPSVw
LCBoYW5kbGU9JXAgKCVzKSIsIGNvbm4sIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIGhhbmRsZS0+ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSwg
aGFuZGxlKSk7Ci19Ci0KLSNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQot
c3RhdGljIEJvb2xlYW4gY2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKENGVVJMQ29ubmVjdGlv
blJlZiBjb25uLCBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCi17Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFN
KGNvbm4pOwotI2VuZGlmCi0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0
PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAgIEFT
U0VSVChoYW5kbGUpOwotCi0gICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIGNhblJlc3BvbmRUb1By
b3RlY3Rpb25TcGFjZShjb25uPSVwLCBoYW5kbGU9JXAgKCVzKSIsIGNvbm4sIGhhbmRsZSwgaGFu
ZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotI2lm
IFBMQVRGT1JNKElPUykKLSAgICBQcm90ZWN0aW9uU3BhY2UgY29yZVByb3RlY3Rpb25TcGFjZSA9
IGNvcmUocHJvdGVjdGlvblNwYWNlKTsKLSAgICBpZiAoY29yZVByb3RlY3Rpb25TcGFjZS5hdXRo
ZW50aWNhdGlvblNjaGVtZSgpID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1l
VW5rbm93bikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBoYW5kbGUtPmNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29yZVByb3RlY3Rpb25TcGFjZSk7Ci0j
ZWxzZQotICAgIHJldHVybiBoYW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoY29yZShwcm90ZWN0aW9uU3BhY2UpKTsKLSNlbmRpZgotfQotI2VuZGlmCi0KIFJlc291
cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFsKCkKIHsKICAgICBpZiAo
bV9jb25uZWN0aW9uKSB7CkBAIC00NzcsOSArMTg2LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJv
b2wKICAgICB9CiAjZW5kaWYKIAotICAgIENGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiBjbGllbnQg
PSAqUmVzb3VyY2VIYW5kbGU6OmNvbm5lY3Rpb25DbGllbnRDYWxsYmFja3MoKTsKLSAgICBjbGll
bnQuY2xpZW50SW5mbyA9IHRoaXM7Ci0KICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHN0cmVh
bVByb3BlcnRpZXMgID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsK
ICAgICBpZiAoIXNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKQogICAgICAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLCBDRlNUUigiX2tDRlVSTENvbm5lY3Rpb25TZXNz
aW9uSUQiKSwgQ0ZTVFIoIldlYktpdFByaXZhdGVTZXNzaW9uIikpOwpAQCAtNTAyLDYgKzIwOCwx
MCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbAogI2lmIFBMQVRGT1JNKElPUykKICAgICBDRlVS
TFJlcXVlc3RTZXRTaG91bGRTdGFydFN5bmNocm9ub3VzbHkocmVxdWVzdC5nZXQoKSwgMSk7CiAj
ZW5kaWYKKworICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7CisgICAg
Q0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IGNsaWVudCA9IGQtPm1fY29ubmVjdGlvbkRlbGVnYXRl
LT5tYWtlQ29ubmVjdGlvbkNsaWVudCgpOworCiAgICAgZC0+bV9jb25uZWN0aW9uID0gYWRvcHRD
RihDRlVSTENvbm5lY3Rpb25DcmVhdGVXaXRoUHJvcGVydGllcygwLCByZXF1ZXN0LmdldCgpLCBy
ZWludGVycHJldF9jYXN0PENGVVJMQ29ubmVjdGlvbkNsaWVudCo+KCZjbGllbnQpLCBwcm9wZXJ0
aWVzRGljdGlvbmFyeS5nZXQoKSkpOwogfQogCkBAIC04NzcsMjQgKzU4Nyw0IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmhhbmRsZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkKIH0KICNl
bmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiogUmVz
b3VyY2VIYW5kbGU6OmNvbm5lY3Rpb25DbGllbnRDYWxsYmFja3MoKQotewotICAgIHN0YXRpYyBD
RlVSTENvbm5lY3Rpb25DbGllbnRfVjYgY2xpZW50ID0geyA2LCAwLCAwLCAwLCAwLCBXZWJDb3Jl
Ojp3aWxsU2VuZFJlcXVlc3QsIGRpZFJlY2VpdmVSZXNwb25zZSwgZGlkUmVjZWl2ZURhdGEsIDAs
IGRpZEZpbmlzaExvYWRpbmcsIGRpZEZhaWwsIHdpbGxDYWNoZVJlc3BvbnNlLCBkaWRSZWNlaXZl
Q2hhbGxlbmdlLCBkaWRTZW5kQm9keURhdGEsIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2Fs
bGJhY2ssIDAsCi0jaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICAg
ICAgY2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlLAotI2Vsc2UKLSAgICAgICAgMCwKLSNlbmRp
ZgotICAgICAgICAwLAotI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKLSAg
ICAgICAgZGlkUmVjZWl2ZURhdGFBcnJheQotI2Vsc2UKLSAgICAgICAgMAotI2VuZGlmCi0gICAg
fTsKLSAgICByZXR1cm4gJmNsaWVudDsKLX0KLSNlbmRpZiAvLyBVU0UoUVVJQ0tfTE9PSykgJiYg
VVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE5MWJj
OWNkOWZhOGY2OTIzM2Y4YTQ0MWNkZmQ0ZTE4ZjhiY2I4OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5jcHAKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQtMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlLmgiCisKKyNpZiBVU0UoQ0ZORVRXT1JLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKKyAgICA6IG1faGFu
ZGxlKGhhbmRsZSkKK3sKK30KK1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6
On5SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKCkKK3sKK30KKworQ0ZVUkxS
ZXF1ZXN0UmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5k
UmVxdWVzdENhbGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVx
dWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiBvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSkt
PndpbGxTZW5kUmVxdWVzdChjZlJlcXVlc3QsIG9yaWdpbmFsUmVkaXJlY3RSZXNwb25zZSk7Cit9
CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2
ZVJlc3BvbnNlQ2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRlVSTFJlc3BvbnNlUmVmIGNm
UmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8UmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNs
aWVudEluZm8pKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGNmUmVzcG9uc2UpOworfQorCit2b2lkIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQ2FsbGJh
Y2soQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRkRhdGFSZWYgZGF0YSwgQ0ZJbmRleCBvcmlnaW5hbExl
bmd0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2FzdDxSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpLT5kaWRSZWNlaXZlRGF0YShkYXRhLCBvcmlnaW5hbExlbmd0aCk7Cit9CisKK3ZvaWQg
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZ0Nh
bGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRGaW5pc2hMb2FkaW5nKCk7Cit9CisKK3Zv
aWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkRmFpbENhbGxiYWNr
KENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK3sKKyAgICBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRGYWlsKGVycm9yKTsK
K30KKworQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlOjp3aWxsQ2FjaGVSZXNwb25zZUNhbGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+d2lsbENhY2hl
UmVzcG9uc2UoY2FjaGVkUmVzcG9uc2UpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVDaGFsbGVuZ2VDYWxsYmFjayhDRlVSTENvbm5l
Y3Rpb25SZWYsIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjaGFsbGVuZ2UsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkUmVjZWl2ZUNo
YWxsZW5nZShjaGFsbGVuZ2UpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGU6OmRpZFNlbmRCb2R5RGF0YUNhbGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiwg
Q0ZJbmRleCwgQ0ZJbmRleCB0b3RhbEJ5dGVzV3JpdHRlbiwgQ0ZJbmRleCB0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0
PFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSktPmRpZFNlbmRCb2R5RGF0YSh0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxC
eXRlc0V4cGVjdGVkVG9Xcml0ZSk7Cit9CisKK0Jvb2xlYW4gUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VDYWxsYmFjayhDRlVS
TENvbm5lY3Rpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCk7CisK
K30KKworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCitCb29sZWFuIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rp
b25TcGFjZUNhbGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VS
ZWYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5jYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2Uo
cHJvdGVjdGlvblNwYWNlKTsKK30KKyNlbmRpZiAvLyBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRI
X0NBTExCQUNLKQorCisjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQordm9p
ZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YUFy
cmF5Q2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRkFycmF5UmVmIGRhdGFBcnJheSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5k
aWRSZWNlaXZlRGF0YUFycmF5KGRhdGFBcnJheSk7Cit9CisjZW5kaWYgLy8gVVNFKE5FVFdPUktf
Q0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorCitDRlVSTENvbm5lY3Rpb25DbGllbnRfVjYgUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6bWFrZUNvbm5lY3Rpb25DbGllbnQoKSBj
b25zdAoreworICAgIENGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiBjbGllbnQgPSB7IDYsIHRoaXMs
IDAsIDAsIDAsCisgICAgICAgICZSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
Ojp3aWxsU2VuZFJlcXVlc3RDYWxsYmFjaywKKyAgICAgICAgJlJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVSZXNwb25zZUNhbGxiYWNrLAorICAgICAgICAm
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFDYWxs
YmFjaywKKyAgICAgICAgMCwKKyAgICAgICAgJlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGU6OmRpZEZpbmlzaExvYWRpbmdDYWxsYmFjaywKKyAgICAgICAgJlJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZEZhaWxDYWxsYmFjaywKKyAgICAgICAgJlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxDYWNoZVJlc3BvbnNlQ2Fs
bGJhY2ssCisgICAgICAgICZSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpk
aWRSZWNlaXZlQ2hhbGxlbmdlQ2FsbGJhY2ssCisgICAgICAgICZSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpkaWRTZW5kQm9keURhdGFDYWxsYmFjaywKKyAgICAgICAgJlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OnNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlQ2FsbGJhY2ssCisgICAgICAgIDAsCisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVU
SF9DQUxMQkFDSykKKyAgICAgICAgJlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZUNhbGxiYWNrLAorI2Vsc2UKKyAgICAgICAg
MCwKKyNlbmRpZgorICAgICAgICAwLAorI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxM
QkFDSykKKyAgICAgICAgJlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRp
ZFJlY2VpdmVEYXRhQXJyYXlDYWxsYmFjaworI2Vsc2UKKyAgICAgICAgMAorI2VuZGlmCisgICAg
fTsKKyAgICByZXR1cm4gY2xpZW50OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgorCisj
ZW5kaWYgLy8gVVNFKENGTkVUV09SSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMjc3ZmJiODZlNGY3NTJhMjc1MTRlY2Uw
NzYwNDMwZTcwMTg5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oCkBAIC0w
LDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMyBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZV9oCisjZGVmaW5lIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVfaAorCisjaWYgVVNFKENGTkVUV09SSykKKworI2luY2x1ZGUgPENGTmV0d29yay9D
RlVSTENvbm5lY3Rpb25Qcml2Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVzb3VyY2VIYW5kbGU7CisKK2Ns
YXNzIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gewor
cHVibGljOgorICAgIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoUmVzb3Vy
Y2VIYW5kbGUqKTsKKyAgICB2aXJ0dWFsIH5SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlKCk7CisKKyAgICBDRlVSTENvbm5lY3Rpb25DbGllbnRfVjYgbWFrZUNvbm5lY3Rpb25D
bGllbnQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdp
bGxTZW5kUmVxdWVzdENhbGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxSZXF1ZXN0UmVm
LCBDRlVSTFJlc3BvbnNlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25SZWYsIENGVVJM
UmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVEYXRhQ2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRkRhdGFSZWYsIENGSW5k
ZXggb3JpZ2luYWxMZW5ndGgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2
b2lkIGRpZEZpbmlzaExvYWRpbmdDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25SZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxDYWxsYmFjayhDRlVSTENv
bm5lY3Rpb25SZWYsIENGRXJyb3JSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0
YXRpYyBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlQ2FsbGJhY2soQ0ZV
UkxDb25uZWN0aW9uUmVmLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlQ2FsbGJhY2soQ0ZV
UkxDb25uZWN0aW9uUmVmLCBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZFNlbmRCb2R5RGF0YUNhbGxiYWNrKENGVVJMQ29u
bmVjdGlvblJlZiwgQ0ZJbmRleCwgQ0ZJbmRleCB0b3RhbEJ5dGVzV3JpdHRlbiwgQ0ZJbmRleCB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKyAgICBz
dGF0aWMgQm9vbGVhbiBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUNhbGxiYWNrKENGVVJMQ29u
bmVjdGlvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisjaWYgVVNFKFBST1RFQ1RJT05f
U1BBQ0VfQVVUSF9DQUxMQkFDSykKKyAgICBzdGF0aWMgQm9vbGVhbiBjYW5SZXNwb25kVG9Qcm90
ZWN0aW9uU3BhY2VDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25SZWYsIENGVVJMUHJvdGVjdGlvblNw
YWNlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyNlbmRpZiAvLyBVU0UoUFJPVEVDVElP
Tl9TUEFDRV9BVVRIX0NBTExCQUNLKQorI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxM
QkFDSykKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5Q2FsbGJhY2soQ0ZVUkxD
b25uZWN0aW9uUmVmLCBDRkFycmF5UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyNlbmRp
ZiAvLyBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisKKyAgICB2aXJ0dWFsIENG
VVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmLCBDRlVSTFJlc3Bv
bnNlUmVmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShDRlVSTFJl
c3BvbnNlUmVmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKENGRGF0YVJl
ZiwgQ0ZJbmRleCBvcmlnaW5hbExlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKENGRXJyb3JSZWYpID0g
MDsKKyAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2Uo
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
Q2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRTZW5kQm9keURhdGEoQ0ZJbmRleCB0b3RhbEJ5dGVzV3JpdHRlbiwgQ0ZJbmRleCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlKSA9IDA7CisgICAgdmlydHVhbCBCb29sZWFuIHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKCkgPSAwOworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FM
TEJBQ0spCisgICAgdmlydHVhbCBCb29sZWFuIGNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZShD
RlVSTFByb3RlY3Rpb25TcGFjZVJlZikgPSAwOworI2VuZGlmIC8vIFVTRShQUk9URUNUSU9OX1NQ
QUNFX0FVVEhfQ0FMTEJBQ0spCisjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNL
KQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFy
cmF5KSA9IDA7CisjZW5kaWYgLy8gVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQor
Citwcm90ZWN0ZWQ6CisgICAgUmVzb3VyY2VIYW5kbGUqIG1faGFuZGxlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZS4KKworI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisKKyNlbmRpZiAv
LyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zMTUyMzQwOWIzNGViNWJkMzBiZGEyNjZhNGVhZmYzYmMxMTZhZDll
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
eW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCkBAIC0w
LDAgKzEsMzA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTMgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCisK
KyNpZiBVU0UoQ0ZORVRXT1JLKQorCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgorI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCisjaW5jbHVkZSAiRm9ybURhdGFTdHJl
YW1DRk5ldC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29u
dGV4dC5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGVDbGllbnQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgi
CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUg
PFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZiAv
LyBQTEFURk9STShXSU4pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKKyAgICA6
IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoaGFuZGxlKQoreworfQorCitz
dGF0aWMgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHN5bnRoZXNpemVSZWRpcmVjdFJlc3Bv
bnNlSWZOZWNlc3NhcnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjdXJyZW50UmVxdWVzdCwgQ0ZV
UkxSZXF1ZXN0UmVmIG5ld1JlcXVlc3QsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZWRpcmVjdFJlc3Bv
bnNlKQoreworICAgIGlmIChjZlJlZGlyZWN0UmVzcG9uc2UpCisgICAgICAgIHJldHVybiBjZlJl
ZGlyZWN0UmVzcG9uc2U7CisKKyAgICBDRlVSTFJlZiBuZXdVUkwgPSBDRlVSTFJlcXVlc3RHZXRV
UkwobmV3UmVxdWVzdCk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdTY2hlbWUgPSBh
ZG9wdENGKENGVVJMQ29weVNjaGVtZShuZXdVUkwpKTsKKworICAgIC8vIElmIHRoZSBwcm90b2Nv
bHMgb2YgdGhlIG5ldyByZXF1ZXN0IGFuZCB0aGUgY3VycmVudCByZXF1ZXN0IG1hdGNoLCB0aGlz
IGlzIG5vdCBhbiBIU1RTIHJlZGlyZWN0IGFuZCB3ZSBzaG91bGRuJ3Qgc3ludGhlc2l6ZSBhIHJl
ZGlyZWN0IHJlc3BvbnNlLgorICAgIGlmIChjdXJyZW50UmVxdWVzdC51cmwoKS5wcm90b2NvbCgp
ID09IFN0cmluZyhuZXdTY2hlbWUuZ2V0KCkpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gY3VycmVudFVSTCA9IGN1cnJlbnRSZXF1ZXN0LnVybCgpLmNyZWF0
ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IHJlc3BvbnNlTWVzc2Fn
ZSA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNyZWF0ZVJlc3BvbnNlKDAsIDMwMiwgMCwga0NGSFRU
UFZlcnNpb24xXzEpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IG5ld0Fic29sdXRlVVJMID0g
YWRvcHRDRihDRlVSTENvcHlBYnNvbHV0ZVVSTChuZXdVUkwpKTsKKyAgICBDRkhUVFBNZXNzYWdl
U2V0SGVhZGVyRmllbGRWYWx1ZShyZXNwb25zZU1lc3NhZ2UuZ2V0KCksIENGU1RSKCJMb2NhdGlv
biIpLCBDRlVSTEdldFN0cmluZyhuZXdBYnNvbHV0ZVVSTC5nZXQoKSkpOworICAgIENGSFRUUE1l
c3NhZ2VTZXRIZWFkZXJGaWVsZFZhbHVlKHJlc3BvbnNlTWVzc2FnZS5nZXQoKSwgQ0ZTVFIoIkNh
Y2hlLUNvbnRyb2wiKSwgQ0ZTVFIoIm5vLXN0b3JlIikpOworCisgICAgUmV0YWluUHRyPENGVVJM
UmVzcG9uc2VSZWY+IG5ld1Jlc3BvbnNlID0gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0
aEhUVFBSZXNwb25zZSgwLCBjdXJyZW50VVJMLmdldCgpLCByZXNwb25zZU1lc3NhZ2UuZ2V0KCks
IGtDRlVSTENhY2hlU3RvcmFnZU5vdEFsbG93ZWQpKTsKKyAgICByZXR1cm4gbmV3UmVzcG9uc2U7
Cit9CisKK0NGVVJMUmVxdWVzdFJlZiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0
LCBDRlVSTFJlc3BvbnNlUmVmIG9yaWdpbmFsUmVkaXJlY3RSZXNwb25zZSkKK3sKKyAgICBSZXRh
aW5QdHI8Q0ZVUkxSZXNwb25zZVJlZj4gcmVkaXJlY3RSZXNwb25zZSA9IHN5bnRoZXNpemVSZWRp
cmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkobV9oYW5kbGUtPmN1cnJlbnRSZXF1ZXN0KCksIGNmUmVx
dWVzdCwgb3JpZ2luYWxSZWRpcmVjdFJlc3BvbnNlKTsKKworICAgIGlmICghcmVkaXJlY3RSZXNw
b25zZSkgeworICAgICAgICBDRlJldGFpbihjZlJlcXVlc3QpOworICAgICAgICByZXR1cm4gY2ZS
ZXF1ZXN0OworICAgIH0KKworICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdChoYW5k
bGU9JXApICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7Cisg
ICAgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVz
cG9uc2UocmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7CisgICAgaWYgKGh0dHBNZXNzYWdlICYmIENG
SFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1lc3NhZ2UpID09IDMwNykgewor
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxhc3RIVFRQTWV0aG9kID0gbV9oYW5kbGUt
Pmxhc3RIVFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBuZXdNZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVz
dE1ldGhvZChjZlJlcXVlc3QpKTsKKyAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZVdpdGhPcHRp
b25zKGxhc3RIVFRQTWV0aG9kLmdldCgpLCBuZXdNZXRob2QuZ2V0KCksIENGUmFuZ2VNYWtlKDAs
IENGU3RyaW5nR2V0TGVuZ3RoKGxhc3RIVFRQTWV0aG9kLmdldCgpKSksIGtDRkNvbXBhcmVDYXNl
SW5zZW5zaXRpdmUpKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVz
dFJlZj4gbXV0YWJsZVJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVD
b3B5KDAsIGNmUmVxdWVzdCkpOworICAgICAgICAgICAgd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Np
b24obV9oYW5kbGUtPnN0b3JhZ2VTZXNzaW9uKCksIG11dGFibGVSZXF1ZXN0LmdldCgpKTsKKyAg
ICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKG11dGFibGVSZXF1ZXN0
LmdldCgpLCBsYXN0SFRUUE1ldGhvZC5nZXQoKSk7CisKKyAgICAgICAgICAgIEZvcm1EYXRhKiBi
b2R5ID0gbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmh0dHBCb2R5KCk7CisgICAgICAgICAgICBp
ZiAoIWVxdWFsSWdub3JpbmdDYXNlKG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwTWV0aG9k
KCksICJHRVQiKSAmJiBib2R5ICYmICFib2R5LT5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAg
V2ViQ29yZTo6c2V0SFRUUEJvZHkobXV0YWJsZVJlcXVlc3QuZ2V0KCksIGJvZHkpOworCisgICAg
ICAgICAgICBTdHJpbmcgb3JpZ2luYWxDb250ZW50VHlwZSA9IG1faGFuZGxlLT5maXJzdFJlcXVl
c3QoKS5odHRwQ29udGVudFR5cGUoKTsKKyAgICAgICAgICAgIGlmICghb3JpZ2luYWxDb250ZW50
VHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRl
ckZpZWxkVmFsdWUobXV0YWJsZVJlcXVlc3QuZ2V0KCksIENGU1RSKCJDb250ZW50LVR5cGUiKSwg
b3JpZ2luYWxDb250ZW50VHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKworICAgICAgICAg
ICAgcmVxdWVzdCA9IG11dGFibGVSZXF1ZXN0LmdldCgpOworICAgICAgICB9CisgICAgfQorICAg
IGlmIChyZXF1ZXN0LmlzTnVsbCgpKQorICAgICAgICByZXF1ZXN0ID0gY2ZSZXF1ZXN0OworCisg
ICAgLy8gU2hvdWxkIG5vdCBzZXQgUmVmZXJlciBhZnRlciBhIHJlZGlyZWN0IGZyb20gYSBzZWN1
cmUgcmVzb3VyY2UgdG8gbm9uLXNlY3VyZSBvbmUuCisgICAgaWYgKCFyZXF1ZXN0LnVybCgpLnBy
b3RvY29sSXMoImh0dHBzIikgJiYgcHJvdG9jb2xJcyhyZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCAi
aHR0cHMiKSAmJiBtX2hhbmRsZS0+Y29udGV4dCgpLT5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0KCkpCisgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsK
KworICAgIG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZS5nZXQoKSk7CisKKyAgICBpZiAocmVxdWVzdC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBjZlJlcXVlc3QgPSByZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7
CisKKyAgICBDRlJldGFpbihjZlJlcXVlc3QpOworICAgIHJldHVybiBjZlJlcXVlc3Q7Cit9CisK
KyNpZiAhUExBVEZPUk0oTUFDKQorc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1JTUVUeXBlKENGVVJM
UmVzcG9uc2VSZWYgcmVzcG9uc2UpCit7CisgICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRN
SU1FVHlwZVN0cmluZyA9IGRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1Jl
ZigpOworICAgIAorICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShyZXNwb25zZSwgZGVmYXVs
dE1JTUVUeXBlU3RyaW5nKTsKK30KKyNlbmRpZiAvLyAhUExBVEZPUk0oTUFDKQorCit2b2lkIFN5
bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKK3sKKyAgICBMT0coTmV0d29y
aywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFu
ZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAg
IGlmICghbV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAgICByZXR1cm47CisKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgLy8gQXZvaWQgTUlNRSB0eXBlIHNuaWZmaW5nIGlmIHRoZSByZXNwb25zZSBj
b21lcyBiYWNrIGFzIDMwNCBOb3QgTW9kaWZpZWQuCisgICAgQ0ZIVFRQTWVzc2FnZVJlZiBtc2cg
PSB3a0dldENGVVJMUmVzcG9uc2VIVFRQUmVzcG9uc2UoY2ZSZXNwb25zZSk7CisgICAgaW50IHN0
YXR1c0NvZGUgPSBtc2cgPyBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKG1zZykg
OiAwOworCisgICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0KQorICAgICAgICBhZGp1c3RNSU1FVHlw
ZUlmTmVjZXNzYXJ5KGNmUmVzcG9uc2UpOworCisjaWYgIVBMQVRGT1JNKElPUykKKyAgICBpZiAo
X0NGVVJMUmVxdWVzdENvcHlQcm90b2NvbFByb3BlcnR5Rm9yS2V5KG1faGFuZGxlLT5maXJzdFJl
cXVlc3QoKS5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RSKCJGb3JjZUhU
TUxNSU1FVHlwZSIpKSkKKyAgICAgICAgd2tTZXRDRlVSTFJlc3BvbnNlTUlNRVR5cGUoY2ZSZXNw
b25zZSwgQ0ZTVFIoInRleHQvaHRtbCIpKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2Vs
c2UKKyAgICBpZiAoIUNGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShjZlJlc3BvbnNlKSkgeworICAg
ICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUgYXBwbHlpbmcgdGhlIGRlZmF1bHQgTUlNRVR5cGUg
aWYgd2UgdG9sZCB0aGUgbmV0d29ya2luZyBsYXllciB0byBkbyBjb250ZW50IHNuaWZmaW5nIGZv
ciBoYW5kbGUuCisgICAgICAgIEFTU0VSVCghbV9oYW5kbGUtPnNob3VsZENvbnRlbnRTbmlmZigp
KTsKKyAgICAgICAgc2V0RGVmYXVsdE1JTUVUeXBlKGNmUmVzcG9uc2UpOworICAgIH0KKyNlbmRp
ZgorCisjaWYgVVNFKFFVSUNLX0xPT0spCisgICAgbV9oYW5kbGUtPnNldFF1aWNrTG9va0hhbmRs
ZShRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShtX2hhbmRsZSwgdGhpcywgY2ZSZXNwb25zZSkpOwor
ICAgIGlmIChtX2hhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkpCisgICAgICAgIGNmUmVzcG9uc2Ug
PSBtX2hhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCktPmNmUmVzcG9uc2UoKTsKKyNlbmRpZgorCisg
ICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UobV9oYW5kbGUsIGNmUmVz
cG9uc2UpOworfQorCit2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZEYXRhUmVmIGRhdGEsIENGSW5kZXggb3JpZ2lu
YWxMZW5ndGgpCit7CisgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoaGFuZGxlPSVw
LCBieXRlcz0lbGQpICglcykiLCBtX2hhbmRsZSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpLCBtX2hh
bmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyNp
ZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBpZiAobV9oYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpICYm
IG1faGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+ZGlkUmVjZWl2ZURhdGEoZGF0YSkpCisgICAg
ICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgaWYgKFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGll
bnQgPSBtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUJ1ZmZl
cihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKGRhdGEpLCBvcmlnaW5hbExlbmd0
aCk7Cit9CisKK3ZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKCkKK3sKKyAgICBMT0coTmV0d29yaywgIkNGTmV0IC0g
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRGaW5p
c2hMb2FkaW5nKGhhbmRsZT0lcCkgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1
ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyNpZiBVU0UoUVVJQ0tfTE9P
SykKKyAgICBpZiAobV9oYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpICYmIG1faGFuZGxlLT5xdWlj
a0xvb2tIYW5kbGUoKS0+ZGlkRmluaXNoTG9hZGluZygpKQorICAgICAgICByZXR1cm47CisjZW5k
aWYKKworICAgIGlmIChSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gbV9oYW5kbGUtPmNs
aWVudCgpKQorICAgICAgICBjbGllbnQtPmRpZEZpbmlzaExvYWRpbmcobV9oYW5kbGUsIDApOwor
fQorCit2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZTo6ZGlkRmFpbChDRkVycm9yUmVmIGVycm9yKQoreworICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQg
LSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZEZh
aWwoaGFuZGxlPSVwLCBlcnJvciA9ICVwKSAoJXMpIiwgbV9oYW5kbGUsIGVycm9yLCBtX2hhbmRs
ZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyNpZiBV
U0UoUVVJQ0tfTE9PSykKKyAgICBpZiAoUXVpY2tMb29rSGFuZGxlKiBxdWlja0xvb2tIYW5kbGUg
PSBtX2hhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkpCisgICAgICAgIHF1aWNrTG9va0hhbmRsZS0+
ZGlkRmFpbCgpOworI2VuZGlmCisKKyAgICBpZiAoUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVu
dCA9IG1faGFuZGxlLT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5kaWRGYWlsKG1faGFuZGxl
LCBSZXNvdXJjZUVycm9yKGVycm9yKSk7Cit9CisKK0NGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgU3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsQ2FjaGVS
ZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQoreworI2lmIFBM
QVRGT1JNKFdJTikKKyAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjMwMDk5
MD4gQ2FjaGluZyBkb2VzIG5vdCByZXNwZWN0IFZhcnkgSFRUUCBoZWFkZXIuCisgICAgLy8gRklY
TUU6IFdlYkNvcmUgY2FjaGUgaGFzIGlzc3VlcyB3aXRoIFZhcnksIHRvbyAoYnVnIDU4Nzk3LCBi
dWcgNzE1MDkpLgorICAgIENGVVJMUmVzcG9uc2VSZWYgd3JhcHBlZFJlc3BvbnNlID0gQ0ZDYWNo
ZWRVUkxSZXNwb25zZUdldFdyYXBwZWRSZXNwb25zZShjYWNoZWRSZXNwb25zZSk7CisgICAgaWYg
KENGSFRUUE1lc3NhZ2VSZWYgaHR0cFJlc3BvbnNlID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNw
b25zZSh3cmFwcGVkUmVzcG9uc2UpKSB7CisgICAgICAgIEFTU0VSVChDRkhUVFBNZXNzYWdlSXNI
ZWFkZXJDb21wbGV0ZShodHRwUmVzcG9uc2UpKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB2YXJ5VmFsdWUgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5SGVhZGVyRmllbGRWYWx1
ZShodHRwUmVzcG9uc2UsIENGU1RSKCJWYXJ5IikpKTsKKyAgICAgICAgaWYgKHZhcnlWYWx1ZSkK
KyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyNlbmRpZiAvLyBQTEFURk9STShXSU4pCisK
KyNpZiBQTEFURk9STShXSU4pCisgICAgaWYgKG1faGFuZGxlLT5jbGllbnQoKSAmJiAhbV9oYW5k
bGUtPmNsaWVudCgpLT5zaG91bGRDYWNoZVJlc3BvbnNlKG1faGFuZGxlLCBjYWNoZWRSZXNwb25z
ZSkpCisgICAgICAgIHJldHVybiAwOworI2Vsc2UKKyAgICBDRkNhY2hlZFVSTFJlc3BvbnNlUmVm
IG5ld1Jlc3BvbnNlID0gbV9oYW5kbGUtPmNsaWVudCgpLT53aWxsQ2FjaGVSZXNwb25zZShtX2hh
bmRsZSwgY2FjaGVkUmVzcG9uc2UpOworICAgIGlmIChuZXdSZXNwb25zZSAhPSBjYWNoZWRSZXNw
b25zZSkKKyAgICAgICAgcmV0dXJuIG5ld1Jlc3BvbnNlOworI2VuZGlmCisKKyAgICBDRlJldGFp
bihjYWNoZWRSZXNwb25zZSk7CisgICAgcmV0dXJuIGNhY2hlZFJlc3BvbnNlOworfQorCit2b2lk
IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVj
ZWl2ZUNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2hhbGxlbmdlKQoreworICAgIExP
RyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoaGFuZGxlPSVwICglcykiLCBtX2hhbmRs
ZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgbV9oYW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UsIG1faGFuZGxlKSk7Cit9CisKK3ZvaWQgU3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRTZW5kQm9k
eURhdGEoQ0ZJbmRleCB0b3RhbEJ5dGVzV3JpdHRlbiwgQ0ZJbmRleCB0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlKQoreworICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkU2VuZERhdGEobV9o
YW5kbGUsIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKK30K
KworQm9vbGVhbiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkKK3sKKyAgICBMT0coTmV0d29yaywgIkNG
TmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShoYW5kbGU9JXApICglcykiLCBtX2hhbmRsZSwgbV9o
YW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisg
ICAgaWYgKCFtX2hhbmRsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1f
aGFuZGxlLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpOworfQorCisjaWYgVVNFKFBST1RF
Q1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKK0Jvb2xlYW4gU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2Uo
Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKQoreworICAgIEFTU0VSVCht
X2hhbmRsZSk7CisKKyAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3Bh
Y2UoaGFuZGxlPSVwICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIFBy
b3RlY3Rpb25TcGFjZSBjb3JlUHJvdGVjdGlvblNwYWNlID0gY29yZShwcm90ZWN0aW9uU3BhY2Up
OworICAgIGlmIChjb3JlUHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgPT0g
UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKGNvcmVQcm90ZWN0aW9uU3BhY2UpOworI2Vsc2UKKyAgICByZXR1cm4gbV9o
YW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29yZShwcm90ZWN0
aW9uU3BhY2UpKTsKKyNlbmRpZgorfQorI2VuZGlmIC8vIFVTRShQUk9URUNUSU9OX1NQQUNFX0FV
VEhfQ0FMTEJBQ0spCisKKyNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCit2
b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlk
UmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkKK3sKKyAgICBpZiAoIW1faGFu
ZGxlLT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTE9HKE5ldHdvcmssICJDRk5l
dCAtIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlk
UmVjZWl2ZURhdGFBcnJheShoYW5kbGU9JXAsIGFycmF5TGVuZ3RoPSVsZCkgKCVzKSIsIG1faGFu
ZGxlLCBDRkFycmF5R2V0Q291bnQoZGF0YUFycmF5KSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgp
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisjaWYgVVNFKFFVSUNLX0xPT0spCisg
ICAgaWYgKG1faGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKSAmJiBtX2hhbmRsZS0+cXVpY2tMb29r
SGFuZGxlKCktPmRpZFJlY2VpdmVEYXRhQXJyYXkoZGF0YUFycmF5KSkKKyAgICAgICAgcmV0dXJu
OworI2VuZGlmCisKKyAgICBtX2hhbmRsZS0+aGFuZGxlRGF0YUFycmF5KGRhdGFBcnJheSk7Cit9
CisjZW5kaWYgLy8gVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlLgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9u
b3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkz
OGViMzEzMDM0M2VhMjE4OGY3ZWYxZTgwNTAzZDJkZTEzZmVjN2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlX2gKKyNkZWZpbmUgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlX2gKKworI2lmIFVTRShDRk5FVFdPUkspCisKKyNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlIEZJ
TkFMIDogcHVibGljIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUgeworcHVi
bGljOgorICAgIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZShSZXNvdXJjZUhhbmRsZSopOworCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKENG
RGF0YVJlZiwgQ0ZJbmRleCBvcmlnaW5hbExlbmd0aCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bChDRkVycm9yUmVmKSBPVkVSUklERTsKKyNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FM
TEJBQ0spCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBk
YXRhQXJyYXkpIE9WRVJSSURFOworI2VuZGlmIC8vIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9D
QUxMQkFDSykKKworCitwcml2YXRlOgorICAgIHZpcnR1YWwgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxT
ZW5kUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYsIENGVVJMUmVzcG9uc2VSZWYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoQ0ZVUkxSZXNwb25zZVJlZikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3Bv
bnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRpZFNlbmRCb2R5RGF0YShDRkluZGV4IHRvdGFsQnl0ZXNXcml0dGVuLCBD
RkluZGV4IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
Qm9vbGVhbiBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpIE9WRVJSSURFOworI2lmIFVTRShQ
Uk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAgdmlydHVhbCBCb29sZWFuIGNhblJl
c3BvbmRUb1Byb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZikgT1ZFUlJJREU7
CisjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUuCisKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorCisjZW5k
aWYgLy8gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218737</attachid>
            <date>2013-12-09 01:33:08 -0800</date>
            <delta_ts>2013-12-09 09:43:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125379-20131209013306.patch</filename>
            <type>text/plain</type>
            <size>71590</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYyZjczYWU0ZDMyNWNi
ZmUxYmFiMjNlNWI0ZTVmNDEwNDE3ZmE2Yi4uMTVkYzE2OWE4NTNlZTM0MWRjMjQyZDc4OGI5MWI1
M2FkOTNkMTMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTEyLTA4ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHRo
ZSBDRlVSTENvbm5lY3Rpb25DbGllbnQgdG8gYmUgdGhlIHN5bmNocm9ub3VzIGltcGxlbWVudGF0
aW9uIG9mIGFuIGFic3RyYWN0IG5ldHdvcmsgZGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTM3OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
OjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6On5SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdENhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRp
ZFJlY2VpdmVSZXNwb25zZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlk
RmluaXNoTG9hZGluZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZEZhaWxDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsQ2FjaGVSZXNw
b25zZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVDaGFsbGVuZ2VDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRTZW5kQm9k
eURhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNh
blJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQXJyYXlD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlOjptYWtlQ29ubmVjdGlvbkNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmg6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OlN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFNlbmRCb2R5RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
OjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlRGF0
YUFycmF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oOiBBZGRlZC4KKwogMjAxMy0xMi0wOCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBnZXRDb21wdXRlZFN0
eWxlIGJvcmRlci1yYWRpdXMgc2hvcnRoYW5kIG9taXRzIHZlcnRpY2FsIHJhZGl1cyBpbmZvcm1h
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oK
aW5kZXggYTNmODA5N2FlZTU3Y2MxZmNiMGFhMjhjMmRjNWE2MmJhZWE4MWU5ZC4uMjI3NjE5MDk0
NTgyZTZjMTcwZjllMDY5N2Q4OGVkMGMzY2Y1M2ZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC04Mjc3LDYgKzgyNzcsMTIgQEAKICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3Bw
Ij4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCI+CiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CkBAIC04MzAxLDYgKzgzMDcsMTIgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2lu
Q2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAiPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgor
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcd2luXERvd25sb2FkQnVuZGxlV2luLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcd2luXE5ldHdvcmtTdGF0ZU5vdGlmaWVyV2luLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFxD
b29raWVKYXJDdXJsLmNwcCI+CkBAIC0xOTUwMywxMSArMTk1MTUsMTMgQEAKICAgICA8Q3VzdG9t
QnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcRm9ybURhdGFTdHJlYW1D
Rk5ldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xj
ZlxMb2FkZXJSdW5Mb29wQ0YuaCIgLz4KICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3VyY2VFcnJvci5oIiAvPgorICAgIDxDdXN0b21CdWls
ZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmgiIC8+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlUmVxdWVzdC5oIiAvPgogICAgIDxDdXN0b21C
dWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxSZXNvdXJjZVJlcXVlc3RD
Rk5ldC5oIiAvPgogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0
d29ya1xjZlxSZXNvdXJjZVJlc3BvbnNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFNvY2tldFN0cmVhbUVycm9yLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFNvY2tldFN0cmVhbUhhbmRsZS5o
IiAvPgorICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xj
ZlxTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIgLz4K
ICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBmMGIwMjY2MDI0NDJkZGRkMDFmYTAxMjgw
ZTE2NjZjZGU0N2U2MTIxLi5lZTI1ODBmMDNiYjM5ZDk2ZTdjYTg4NzRmMGUwMjM5YTY3Mjk4YmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCkBAIC0xODgxLDYgKzE4ODEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCI+CiAg
ICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY2Y8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxuZXR3b3JrXGNmPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlUmVxdWVzdENGTmV0LmNw
cCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcY2Y8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTE4OTMsNiArMTg5Niw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Q0ZOZXQuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjZjwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIj4KKyAgICAg
IDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjZjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1x3aW5cRG93bmxvYWRC
dW5kbGVXaW4uY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1x3aW48L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE1MDkyLDYgKzE1MDk4LDkgQEAKICAgICA8Q3VzdG9t
QnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3VyY2VFcnJvci5o
Ij4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xjZjwvRmlsdGVyPgogICAgIDwvQ3Vz
dG9tQnVpbGRTdGVwPgorICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
bmV0d29ya1xjZlxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiPgorICAg
ICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGNmPC9GaWx0ZXI+CisgICAgPC9DdXN0b21CdWls
ZFN0ZXA+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3Jr
XGNmXFJlc291cmNlUmVxdWVzdC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xj
ZjwvRmlsdGVyPgogICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgpAQCAtMTUxMDEsNiArMTUxMTAsOSBA
QAogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxS
ZXNvdXJjZVJlc3BvbnNlLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGNmPC9G
aWx0ZXI+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xj
ZjwvRmlsdGVyPgorICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgogICAgIDxDdXN0b21CdWlsZFN0ZXAg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXGN1cmw8L0ZpbHRlcj4KICAgICA8
L0N1c3RvbUJ1aWxkU3RlcD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAyNjkxNGQ1MWU1NWMxMzIxZmM0NTY1NzM1ZGUzNDU1NmU1
YTVlZjUyLi4xNGNhMjYwN2RiYjZmM2I5OGQ0YWYwNDkxMzhkY2JjMWYxMTIyMGNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
MTQsNiArOTE0LDEwIEBACiAJCTI2QzE3QTNGMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVt
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZD
MTdBM0QxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MubW0gKi87IH07CiAJCTI2RTk4
QTEwMTMwQTlGQ0EwMDhFQjdCMiAvKiBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkU5OEEwRjEzMEE5RkNBMDA4
RUI3QjIgLyogVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oICovOyB9OwogCQkyNkY0MEQ0QTE0OTA0
QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGNDBENDkxNDkwNEE2MzAwQ0E2N0M0IC8qIEV2ZW50TG9v
cElPUy5tbSAqLzsgfTsKKwkJMjZGQUU0Q0MxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGQUU0QzgxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICovOyB9OworCQkyNkZBRTRDRDE4NTJF
M0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGQUU0QzkxODUy
RTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCAq
LzsgfTsKKwkJMjZGQUU0Q0UxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkZBRTRDQTE4NTJFM0E1MDA0QzhDNDYgLyogU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLzsgfTsKKwkJ
MjZGQUU0Q0YxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZGQUU0Q0IxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oICovOyB9OwogCQkyOTE3QjU2MTE0NzM0
OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTE3QjU1RTE0NzM0OTZDMDA1MkM5RDAgLyog
TGF5ZXJGbHVzaFNjaGVkdWxlci5jcHAgKi87IH07CiAJCTI5MTdCNTYyMTQ3MzQ5NkMwMDUyQzlE
MCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOTE3QjU1RjE0NzM0OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNj
aGVkdWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTI5MTdCNTYzMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTE3QjU2
MDE0NzM0OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MjY5LDYgKzUyNzMs
NyBAQAogCQlDNTI3OEIwQzE3RjIxMkVBMDAzQTI5OTggLyogUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUyNzhC
MEIxN0YyMTJFQTAwM0EyOTk4IC8qIFBsYXRmb3JtUGFzdGVib2FyZElPUy5tbSAqLzsgfTsKIAkJ
QzU0NDI3NEIxMUE1N0U3QTAwNjNBNzQ5IC8qIERPTVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDQyNzQ5MTFBNTdFN0EwMDYzQTc0
OSAvKiBET01TdHJpbmdMaXN0LmggKi87IH07CiAJCUM1NTYxMEYxMTFBNzA0RUIwMEI4MkQyNyAv
KiBET01TdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM1NTYxMEYwMTFBNzA0RUIwMEI4MkQyNyAvKiBET01TdHJpbmdMaXN0LmNwcCAq
LzsgfTsKKwkJQzU1QzdCQTExNzE4QUZCQTAwMTMyN0U0IC8qIFJlbmRlclRoZW1lSU9TLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU1QzdCQTAxNzE4
QUZCQTAwMTMyN0U0IC8qIFJlbmRlclRoZW1lSU9TLm1tICovOyB9OwogCQlDNTVFMzhCRjEwMDQw
RDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NUUzOEJCMTAwNDBENUQwMEE1NkJEQiAvKiBT
dG9yYWdlTmFtZXNwYWNlSW1wbC5oICovOyB9OwogCQlDNTVFMzhDMDEwMDQwRDVEMDBBNTZCREIg
LyogU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzU1RTM4QkMxMDA0MEQ1RDAwQTU2QkRCIC8qIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcCAqLzsgfTsKIAkJQzU3MkVFMUYxMjAxQzlCQzAwN0Q4RjgyIC8qIEpTSURC
SW5kZXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1
NzJFRTFEMTIwMUM5QkMwMDdEOEY4MiAvKiBKU0lEQkluZGV4LmggKi87IH07CkBAIC01NDQ3LDgg
KzU0NTIsNiBAQAogCQlDRTdCMkRCNTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZl
V2l0aFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTdCMkRCMTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U3QjJE
QjYxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIyMTU4NkFCQUQw
MDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gKi87IH07CiAJCUNFOTUyMDhB
MTgxMUI0NzUwMDdBNTM5MiAvKiBXZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkM0Q0IxRDE2MUExMzEy
MDBEMjE0REEgLyogV2ViU2FmZUluY3JlbWVudGFsU3dlZXBlcklPUy5oICovOyB9OwotCQlGRUQx
M0Q1MjBDRUE5NDk3MDBEODk0NjYgLyogUmVuZGVyVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDEzRDUwMENFQTk0OTcwMEQ4OTQ2NiAv
KiBSZW5kZXJUaGVtZUlPUy5oICovOyB9OwotCQlDNTVDN0JBMTE3MThBRkJBMDAxMzI3RTQgLyog
UmVuZGVyVGhlbWVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDNTVDN0JBMDE3MThBRkJBMDAxMzI3RTQgLyogUmVuZGVyVGhlbWVJT1MubW0gKi87
IH07CiAJCUNFQ0FERkM2MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZD
MjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwICovOyB9OwogCQlD
RUNBREZDNzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQ0FERkMzMTUzNzc4RkYw
MEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFQ0FERkM4MTUzNzc4RkYwMEUzNzA2OCAvKiBE
aWN0YXRpb25Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFQ0FERkM0MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmNw
cCAqLzsgfTsKQEAgLTYzMjUsNiArNjMyOCw3IEBACiAJCUZFQkM1RjMxMTZCRDBDQzMwMDY1OUJE
MyAvKiBEYXRhYmFzZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVCQzVGMkYxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAg
Ki87IH07CiAJCUZFQkM1RjMyMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQkM1RjMwMTZCRDBD
QzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUQxM0QzQTBDRUE5MzQ2MDBEODk0NjYgLyogRWRpdG9y
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVE
MTNEMzkwQ0VBOTM0NjAwRDg5NDY2IC8qIEVkaXRvcklPUy5tbSAqLzsgfTsKKwkJRkVEMTNENTIw
Q0VBOTQ5NzAwRDg5NDY2IC8qIFJlbmRlclRoZW1lSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQxM0Q1MDBDRUE5NDk3MDBEODk0NjYgLyogUmVu
ZGVyVGhlbWVJT1MuaCAqLzsgfTsKIAkJRkVENDgzOTBDRUQ2NkMzMjU1RjcyQzU5IC8qIE1hdGhN
TFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjc1QTA1OUFGMTcwRDhGQUE1QjhDQUJFIC8qIE1hdGhNTFNlbGVjdEVsZW1lbnQu
Y3BwICovOyB9OwogCQlGRURCRkYxNjE4MkI3QThEMDAxN0ZBNjQgLyogQnJlYWtwb2ludElELmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURCRkYxNDE4
MkI3QThEMDAxN0ZBNjQgLyogQnJlYWtwb2ludElELmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRBIC8qIERh
dGFiYXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3Bw
ICovOyB9OwpAQCAtNzU2MSw2ICs3NTY1LDEwIEBACiAJCTI2QzE3QTNEMTQ5MUQyRDQwMEQxMkJB
MiAvKiBGaWxlU3lzdGVtSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gRmlsZVN5c3RlbUlPUy5tbTsgcGF0aCA9IGlvcy9GaWxlU3lzdGVtSU9TLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkU5OEEwRjEzMEE5RkNBMDA4RUI3QjIgLyogVGV4
dENvZGVjQVNDSUlGYXN0UGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2
RjQwRDQ5MTQ5MDRBNjMwMENBNjdDNCAvKiBFdmVudExvb3BJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFdmVudExvb3BJT1MubW07IHBhdGggPSBpb3MvRXZl
bnRMb29wSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkZBRTRDODE4NTJF
M0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZG
QUU0QzkxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
NkZBRTRDQTE4NTJFM0E1MDA0QzhDNDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2RkFFNENCMTg1MkUzQTUwMDRDOEM0NiAv
KiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5
MTdCNTVFMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExheWVyRmx1c2hTY2hlZHVsZXIuY3BwOyBw
YXRoID0gY2EvTGF5ZXJGbHVzaFNjaGVkdWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI5MTdCNTVGMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExheWVyRmx1c2hTY2hlZHVsZXIuaDsg
cGF0aCA9IGNhL0xheWVyRmx1c2hTY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjkxN0I1NjAxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXJDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGF5ZXJGbHVzaFNjaGVkdWxl
ckNsaWVudC5oOyBwYXRoID0gY2EvTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIzNDcsNiArMTIzNTUsNyBAQAogCQlDNTQ0Mjc0OTEx
QTU3RTdBMDA2M0E3NDkgLyogRE9NU3RyaW5nTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01TdHJpbmdMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUM1NDQyNzRBMTFBNTdFN0EwMDYzQTc0OSAvKiBET01TdHJpbmdMaXN0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBET01TdHJpbmdMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzU1NjEwRjAxMUE3MDRFQjAwQjgyRDI3IC8qIERPTVN0cmluZ0xpc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NU3RyaW5nTGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM1NUM3QkEwMTcxOEFGQkEwMDEzMjdFNCAvKiBSZW5k
ZXJUaGVtZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJl
bmRlclRoZW1lSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTVFMzhCQjEw
MDQwRDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZU5hbWVzcGFjZUltcGwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzU1RTM4QkMxMDA0MEQ1RDAwQTU2QkRCIC8qIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU3MkVFMUQx
MjAxQzlCQzAwN0Q4RjgyIC8qIEpTSURCSW5kZXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNJREJJbmRleC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI1
NzYsOCArMTI1ODUsNiBAQAogCQlDRTdCMkRCMDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBwYXRoID0gbWFjL0FsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3
QjJEQjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaDsg
cGF0aCA9IG1hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgcGF0aCA9IG1hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFRDEzRDUwMENFQTk0OTcwMEQ4
OTQ2NiAvKiBSZW5kZXJUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDNTVDN0JB
MDE3MThBRkJBMDAxMzI3RTQgLyogUmVuZGVyVGhlbWVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW5kZXJUaGVtZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVy
bmF0aXZlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlv
bkFsdGVybmF0aXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VDQURGQzMx
NTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpY3RhdGlvbkFsdGVybmF0aXZlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNFQ0FERkM0MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21t
YW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkNv
bW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM1NDksNiArMTM1NTYs
NyBAQAogCQlGRUJDNUYyRjE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlQmFzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQkM1RjMwMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRh
YmFzZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VCYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRDEzRDM5MENFQTkzNDYwMEQ4OTQ2
NiAvKiBFZGl0b3JJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBFZGl0b3JJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRDEzRDUwMENF
QTk0OTcwMEQ4OTQ2NiAvKiBSZW5kZXJUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRURCRkYxNDE4MkI3QThEMDAxN0ZBNjQgLyogQnJlYWtwb2ludElELmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyZWFrcG9pbnRJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRURFRjgzRjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVERUY4NDAxNjc5NzEwODAwMEU0
NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGF0YWJhc2VTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1
MzMsNiArMTk1NDEsOCBAQAogCQkJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJy
b3JDRi5jcHAgKi8sCiAJCQkJN0VFNjg0NTkxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwICovLAorCQkJCTI2RkFFNEM4MTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLywKKwkJCQkyNkZBRTRDOTE4NTJF
M0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oICov
LAogCQkJCTdFRTY4NDVBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLywK
IAkJCQk3RUU2ODQ1QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3Bw
ICovLAogCQkJCTdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5l
dC5oICovLApAQCAtMTk1NDIsNiArMTk1NTIsOCBAQAogCQkJCTUxQUJBRTFDMTAzQzE5MTMwMDhD
NTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLywKIAkJCQk1MUFCQUUxRDEwM0MxOTEzMDA4
QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICovLAogCQkJCTQ0MkFCQ0Q1MTdE
OTI2MkYwMEQzMDcxNSAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudENGTmV0LmNwcCAqLywKKwkJ
CQkyNkZBRTRDQTE4NTJFM0E1MDA0QzhDNDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLywKKwkJCQkyNkZBRTRDQjE4NTJFM0E1MDA0QzhD
NDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTI0NDkzLDYgKzI0NTA1LDcgQEAKIAkJCQk3RUU2ODQ2QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0RjcxM0MwRDVBNkYxOTAwMDE4RDY5
IC8qIFJlc291cmNlRXJyb3JCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3OTBDRTky
M0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTI2RkFF
NENEMTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3QTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVz
b3VyY2VIYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3NjdCMENFOTIzQTEw
MDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUU0MTQzNDE2QTY1OTYzMDBDNjMzQzcgLyogUmVzb3VyY2VIYW5kbGVUeXBlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNTAxOCw2ICsyNTAzMSw3IEBACiAJCQkJQjIyMjdBRjYwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1pvb21BbmRQYW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRTRFQzk4MEQwMEMy
MkIwMDQzMjY0MyAvKiBTVkdab29tRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxODA4MTE3
MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMjZGQUU0Q0YxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURBOTdF
Q0QxNjhFNzg3QjAwMEUzNjc2IC8qIFN5c3RlbVZlcnNpb25NYWMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4Q0ZGMDUxMEExNTRGMDkwMDBBNDIzNCAvKiBUYWJsZUxheW91dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDcyQUUxRTUxODNDMDc0MTAwMEE1OTg4IC8qIFBsdWdpblJlcGxhY2VtZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTI3NzM2LDYgKzI3NzUwLDcgQEAKIAkJCQkwNzA1ODUxMjE3RkE3
MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTRDNzY3ODBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjZGQUU0Q0MxODUyRTNBNTAwNEM4QzQ2
IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTFCQTAwMzExNkZCOTJBQzAwQkE3QTM1IC8qIFJlc291cmNlSGFuZGxlQ2xpZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjUxMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNv
dXJjZUhhbmRsZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRTIyN0UzMEFGNTg5QUQwMEQ0
ODMyNCAvKiBSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3OTg1LDYgKzI4
MDAwLDcgQEAKIAkJCQk5M0IyRDgxODBGOTkyMEVFMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRp
b24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwODc1NThDNTEzQjRBNTdEMDBGNDkzMDcgLyogU3Vy
cm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTYyQzEy
MTdDMTFBQjlFNzcwMDNDNDYyQyAvKiBTdXNwZW5kYWJsZVRpbWVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTI2RkFFNENFMTg1MkUzQTUwMDRDOEM0NiAvKiBTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5
NzMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTI0RDkxMkIwMTNDQTlBMUYwMEQyMTkxNSAvKiBTVkdBbHRHbHlwaERlZkVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjU2NTNGMkQwRDk3MjdEMjAwQ0E5NzIzIC8qIFNWR0FsdEdseXBo
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBmZjgwNjc0OWE2MWIzNjZlN2FiZjgyNmI5
NGIwMmM3NGQ4YWNiMDJhLi41OGEyMjI3MmQ1NThhMTEyYzRmZWUzMWMzYmI2NzI5MDNjMzMyNDU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oCkBAIC03Miw3ICs3Miw2IEBAIHR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0ICppZDsKIHR5
cGVkZWYgc3RydWN0IF9DRlVSTENvbm5lY3Rpb24qIENGVVJMQ29ubmVjdGlvblJlZjsKIHR5cGVk
ZWYgaW50IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3k7CiB0eXBlZGVmIHN0cnVjdCBP
cGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwotdHlwZWRl
ZiBzdHJ1Y3QgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IENGVVJMQ29ubmVjdGlvbkNsaWVudF9W
NjsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQpAQCAtMTQy
LDcgKzE0MSw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGN1cnJlbnRS
ZXF1ZXN0KCkgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQgc2V0SG9zdEFsbG93c0FueUhUVFBTQ2Vy
dGlmaWNhdGUoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIHZvaWQgc2V0Q2xpZW50Q2VydGlm
aWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBDRkRhdGFSZWYpOwotICAgIHN0YXRpYyBDRlVSTENv
bm5lY3Rpb25DbGllbnRfVjYqIGNvbm5lY3Rpb25DbGllbnRDYWxsYmFja3MoKTsKIAogI2lmIFVT
RShRVUlDS19MT09LKQogICAgIFF1aWNrTG9va0hhbmRsZSogcXVpY2tMb29rSGFuZGxlKCkgeyBy
ZXR1cm4gbV9xdWlja0xvb2suZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggNzVlMjI3YjY2
NzI5ZTQwZmIyOTVjMTZhNWFlZTE1YjcwNWYwNzBkMi4uMzNiMDhiMzc0NGY1N2IxYWQ5OTU1ZTk3
NzQ5MDJiNmU0NmI0ZjM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJUaW1lci5oIgogCiAjaWYgVVNFKENGTkVUV09SSykKKyNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NG
VVJMQ29ubmVjdGlvblByaXYuaD4KICNlbmRpZgogCkBAIC0xNDgsNiArMTQ5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgICAgIFJldGFpblB0cjxDRlVS
TENvbm5lY3Rpb25SZWY+IG1fY29ubmVjdGlvbjsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IG1f
Y3VycmVudFJlcXVlc3Q7CisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KE1BQykgJiYgIVVTRShDRk5FVFdPUkspCiAgICAgICAgIFJldGFpblB0cjxOU1VSTENvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDJiNmU3N2E3MmUyMDg1
ZGQ4MWM3NDk0NjFiYWI5ZDRiOGFlOTlmZjkuLjJkMzQ4ODBmZDg0M2E3ZTM4MDg5ZGQ2OWU2ODA1
MDQyNDhhMTVlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMzYsMTMgKzM2LDEzIEBACiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJMb2FkZXJSdW5Mb29wQ0YuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25z
ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgogI2lu
Y2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBAIC05NiwxNSArOTYs
NiBAQCBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxDRkRhdGFSZWY+PiYgY2xpZW50
Q2VydHMoKQogICAgIHJldHVybiBjZXJ0czsKIH0KIAotI2lmICFQTEFURk9STShNQUMpCi1zdGF0
aWMgdm9pZCBzZXREZWZhdWx0TUlNRVR5cGUoQ0ZVUkxSZXNwb25zZVJlZiByZXNwb25zZSkKLXsK
LSAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gZGVmYXVsdE1J
TUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7Ci0gICAgCi0gICAgQ0ZVUkxSZXNw
b25zZVNldE1JTUVUeXBlKHJlc3BvbnNlLCBkZWZhdWx0TUlNRVR5cGVTdHJpbmcpOwotfQotI2Vu
ZGlmCi0KIHN0YXRpYyB2b2lkIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKICAgICBT
dHJpbmcgYXV0aGVudGljYXRpb25IZWFkZXIgPSAiQmFzaWMgIiArIGJhc2U2NEVuY29kZShTdHJp
bmcoY3JlZGVudGlhbC51c2VyKCkgKyAiOiIgKyBjcmVkZW50aWFsLnBhc3N3b3JkKCkpLnV0Zjgo
KSk7CkBAIC0xMTIsMjg5ICsxMDMsNiBAQCBzdGF0aWMgdm9pZCBhcHBseUJhc2ljQXV0aG9yaXph
dGlvbkhlYWRlcihSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IENyZWRlbgogICAgIHJl
cXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkKCJBdXRob3JpemF0aW9uIiwgYXV0aGVudGljYXRpb25I
ZWFkZXIpOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHN5bnRoZXNp
emVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjdXJy
ZW50UmVxdWVzdCwgQ0ZVUkxSZXF1ZXN0UmVmIG5ld1JlcXVlc3QsIENGVVJMUmVzcG9uc2VSZWYg
Y2ZSZWRpcmVjdFJlc3BvbnNlKQotewotICAgIGlmIChjZlJlZGlyZWN0UmVzcG9uc2UpCi0gICAg
ICAgIHJldHVybiBjZlJlZGlyZWN0UmVzcG9uc2U7Ci0KLSAgICBDRlVSTFJlZiBuZXdVUkwgPSBD
RlVSTFJlcXVlc3RHZXRVUkwobmV3UmVxdWVzdCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBuZXdTY2hlbWUgPSBhZG9wdENGKENGVVJMQ29weVNjaGVtZShuZXdVUkwpKTsKLQotICAgIC8v
IElmIHRoZSBwcm90b2NvbHMgb2YgdGhlIG5ldyByZXF1ZXN0IGFuZCB0aGUgY3VycmVudCByZXF1
ZXN0IG1hdGNoLCB0aGlzIGlzIG5vdCBhbiBIU1RTIHJlZGlyZWN0IGFuZCB3ZSBzaG91bGRuJ3Qg
c3ludGhlc2l6ZSBhIHJlZGlyZWN0IHJlc3BvbnNlLgotICAgIGlmIChjdXJyZW50UmVxdWVzdC51
cmwoKS5wcm90b2NvbCgpID09IFN0cmluZyhuZXdTY2hlbWUuZ2V0KCkpKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY3VycmVudFVSTCA9IGN1cnJlbnRSZXF1
ZXN0LnVybCgpLmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+
IHJlc3BvbnNlTWVzc2FnZSA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNyZWF0ZVJlc3BvbnNlKDAs
IDMwMiwgMCwga0NGSFRUUFZlcnNpb24xXzEpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IG5l
d0Fic29sdXRlVVJMID0gYWRvcHRDRihDRlVSTENvcHlBYnNvbHV0ZVVSTChuZXdVUkwpKTsKLSAg
ICBDRkhUVFBNZXNzYWdlU2V0SGVhZGVyRmllbGRWYWx1ZShyZXNwb25zZU1lc3NhZ2UuZ2V0KCks
IENGU1RSKCJMb2NhdGlvbiIpLCBDRlVSTEdldFN0cmluZyhuZXdBYnNvbHV0ZVVSTC5nZXQoKSkp
OwotICAgIENGSFRUUE1lc3NhZ2VTZXRIZWFkZXJGaWVsZFZhbHVlKHJlc3BvbnNlTWVzc2FnZS5n
ZXQoKSwgQ0ZTVFIoIkNhY2hlLUNvbnRyb2wiKSwgQ0ZTVFIoIm5vLXN0b3JlIikpOwotCi0gICAg
UmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IG5ld1Jlc3BvbnNlID0gYWRvcHRDRihDRlVSTFJl
c3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZSgwLCBjdXJyZW50VVJMLmdldCgpLCByZXNwb25z
ZU1lc3NhZ2UuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZU5vdEFsbG93ZWQpKTsKLSAgICByZXR1
cm4gbmV3UmVzcG9uc2U7Ci19Ci0KLXN0YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1
ZXN0KENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0LCBD
RlVSTFJlc3BvbnNlUmVmIG9yaWdpbmFsUmVkaXJlY3RSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKLXsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oY29ubik7Ci0j
ZW5kaWYKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VI
YW5kbGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0gICAgUmV0YWluUHRyPENG
VVJMUmVzcG9uc2VSZWY+IHJlZGlyZWN0UmVzcG9uc2UgPSBzeW50aGVzaXplUmVkaXJlY3RSZXNw
b25zZUlmTmVjZXNzYXJ5KGhhbmRsZS0+Y3VycmVudFJlcXVlc3QoKSwgY2ZSZXF1ZXN0LCBvcmln
aW5hbFJlZGlyZWN0UmVzcG9uc2UpOwotCi0gICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlKSB7Ci0g
ICAgICAgIENGUmV0YWluKGNmUmVxdWVzdCk7Ci0gICAgICAgIHJldHVybiBjZlJlcXVlc3Q7Ci0g
ICAgfQotCi0gICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIHdpbGxTZW5kUmVxdWVzdChjb25uPSVw
LCBoYW5kbGU9JXApICglcykiLCBjb25uLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCku
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdDsKLSAgICBpZiAocmVkaXJlY3RSZXNwb25zZSkgewotICAgICAgICBDRkhUVFBNZXNzYWdl
UmVmIGh0dHBNZXNzYWdlID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShyZWRpcmVjdFJl
c3BvbnNlLmdldCgpKTsKLSAgICAgICAgaWYgKGh0dHBNZXNzYWdlICYmIENGSFRUUE1lc3NhZ2VH
ZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1lc3NhZ2UpID09IDMwNykgewotICAgICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYXN0SFRUUE1ldGhvZCA9IGhhbmRsZS0+bGFzdEhUVFBN
ZXRob2QoKS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBuZXdNZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhv
ZChjZlJlcXVlc3QpKTsKLSAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmVXaXRoT3B0aW9u
cyhsYXN0SFRUUE1ldGhvZC5nZXQoKSwgbmV3TWV0aG9kLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBD
RlN0cmluZ0dldExlbmd0aChsYXN0SFRUUE1ldGhvZC5nZXQoKSkpLCBrQ0ZDb21wYXJlQ2FzZUlu
c2Vuc2l0aXZlKSkgewotICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1
ZXN0UmVmPiBtdXRhYmxlUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJs
ZUNvcHkoMCwgY2ZSZXF1ZXN0KSk7Ci0gICAgICAgICAgICAgICAgd2tTZXRSZXF1ZXN0U3RvcmFn
ZVNlc3Npb24oaGFuZGxlLT5zdG9yYWdlU2Vzc2lvbigpLCBtdXRhYmxlUmVxdWVzdC5nZXQoKSk7
Ci0gICAgICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2QobXV0YWJs
ZVJlcXVlc3QuZ2V0KCksIGxhc3RIVFRQTWV0aG9kLmdldCgpKTsKLQotICAgICAgICAgICAgICAg
IEZvcm1EYXRhKiBib2R5ID0gaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwQm9keSgpOwotICAg
ICAgICAgICAgICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UoaGFuZGxlLT5maXJzdFJlcXVlc3Qo
KS5odHRwTWV0aG9kKCksICJHRVQiKSAmJiBib2R5ICYmICFib2R5LT5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgICAgIFdlYkNvcmU6OnNldEhUVFBCb2R5KG11dGFibGVSZXF1ZXN0LmdldCgp
LCBib2R5KTsKLQotICAgICAgICAgICAgICAgIFN0cmluZyBvcmlnaW5hbENvbnRlbnRUeXBlID0g
aGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwQ29udGVudFR5cGUoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIW9yaWdpbmFsQ29udGVudFR5cGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAg
ICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShtdXRhYmxlUmVxdWVzdC5nZXQo
KSwgQ0ZTVFIoIkNvbnRlbnQtVHlwZSIpLCBvcmlnaW5hbENvbnRlbnRUeXBlLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwotCi0gICAgICAgICAgICAgICAgcmVxdWVzdCA9IG11dGFibGVSZXF1ZXN0
LmdldCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChyZXF1ZXN0
LmlzTnVsbCgpKQotICAgICAgICByZXF1ZXN0ID0gY2ZSZXF1ZXN0OwotCi0gICAgLy8gU2hvdWxk
IG5vdCBzZXQgUmVmZXJlciBhZnRlciBhIHJlZGlyZWN0IGZyb20gYSBzZWN1cmUgcmVzb3VyY2Ug
dG8gbm9uLXNlY3VyZSBvbmUuCi0gICAgaWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0
dHBzIikgJiYgcHJvdG9jb2xJcyhyZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCAiaHR0cHMiKSAmJiBo
YW5kbGUtPmNvbnRleHQoKS0+c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCgpKQotICAgICAgICByZXF1ZXN0LmNsZWFySFRUUFJlZmVycmVyKCk7Ci0KLSAgICBoYW5kbGUt
PndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKLQotICAg
IGlmIChyZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGNmUmVxdWVz
dCA9IHJlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKLQotICAgIENGUmV0YWlu
KGNmUmVxdWVzdCk7Ci0gICAgcmV0dXJuIGNmUmVxdWVzdDsKLX0KLQotc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFJlc3BvbnNlUmVm
IGNmUmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0jaWYgTE9HX0RJU0FCTEVE
ICYmICFVU0UoUVVJQ0tfTE9PSykKLSAgICBVTlVTRURfUEFSQU0oY29ubik7Ci0jZW5kaWYKLSAg
ICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0KLSAgICBMT0coTmV0d29yaywgIkNGTmV0
IC0gZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbm49JXAsIGhhbmRsZT0lcCkgKCVzKSIsIGNvbm4sIGhh
bmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLQotICAgIGlmICghaGFuZGxlLT5jbGllbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYg
UExBVEZPUk0oTUFDKQotICAgIC8vIEF2b2lkIE1JTUUgdHlwZSBzbmlmZmluZyBpZiB0aGUgcmVz
cG9uc2UgY29tZXMgYmFjayBhcyAzMDQgTm90IE1vZGlmaWVkLgotICAgIENGSFRUUE1lc3NhZ2VS
ZWYgbXNnID0gd2tHZXRDRlVSTFJlc3BvbnNlSFRUUFJlc3BvbnNlKGNmUmVzcG9uc2UpOwotICAg
IGludCBzdGF0dXNDb2RlID0gbXNnID8gQ0ZIVFRQTWVzc2FnZUdldFJlc3BvbnNlU3RhdHVzQ29k
ZShtc2cpIDogMDsKLQotICAgIGlmIChzdGF0dXNDb2RlICE9IDMwNCkKLSAgICAgICAgYWRqdXN0
TUlNRVR5cGVJZk5lY2Vzc2FyeShjZlJlc3BvbnNlKTsKLQotI2lmICFQTEFURk9STShJT1MpCi0g
ICAgaWYgKF9DRlVSTFJlcXVlc3RDb3B5UHJvdG9jb2xQcm9wZXJ0eUZvcktleShoYW5kbGUtPmZp
cnN0UmVxdWVzdCgpLmNmVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSwgQ0ZTVFIoIkZv
cmNlSFRNTE1JTUVUeXBlIikpKQotICAgICAgICB3a1NldENGVVJMUmVzcG9uc2VNSU1FVHlwZShj
ZlJlc3BvbnNlLCBDRlNUUigidGV4dC9odG1sIikpOwotI2VuZGlmIC8vICFQTEFURk9STShJT1Mp
Ci0jZWxzZQotICAgIGlmICghQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKGNmUmVzcG9uc2UpKSB7
Ci0gICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBhcHBseWluZyB0aGUgZGVmYXVsdCBNSU1F
VHlwZSBpZiB3ZSB0b2xkIHRoZSBuZXR3b3JraW5nIGxheWVyIHRvIGRvIGNvbnRlbnQgc25pZmZp
bmcgZm9yIGhhbmRsZS4KLSAgICAgICAgQVNTRVJUKCFoYW5kbGUtPnNob3VsZENvbnRlbnRTbmlm
ZigpKTsKLSAgICAgICAgc2V0RGVmYXVsdE1JTUVUeXBlKGNmUmVzcG9uc2UpOwotICAgIH0KLSNl
bmRpZgotCi0jaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgaGFuZGxlLT5zZXRRdWlja0xvb2tIYW5k
bGUoUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoaGFuZGxlLCBjb25uLCBjZlJlc3BvbnNlKSk7Ci0g
ICAgaWYgKGhhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkpCi0gICAgICAgIGNmUmVzcG9uc2UgPSBo
YW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpLT5jZlJlc3BvbnNlKCk7Ci0jZW5kaWYKLSAgICAKLSAg
ICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxlLCBjZlJlc3BvbnNl
KTsKLX0KLQotI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKLXN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGQXJyYXlS
ZWYgZGF0YUFycmF5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotI2lmIExPR19ESVNBQkxF
RAotICAgIFVOVVNFRF9QQVJBTShjb25uKTsKLSNlbmRpZgotICAgIFJlc291cmNlSGFuZGxlKiBo
YW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNs
aWVudEluZm8pKTsKLSAgICBpZiAoIWhhbmRsZS0+Y2xpZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBkaWRSZWNlaXZlRGF0YUFycmF5KGNvbm49JXAs
IGhhbmRsZT0lcCwgYXJyYXlMZW5ndGg9JWxkKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBDRkFycmF5
R2V0Q291bnQoZGF0YUFycmF5KSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKLQotI2lmIFVTRShRVUlDS19MT09LKQotICAgIGlmIChoYW5kbGUt
PnF1aWNrTG9va0hhbmRsZSgpICYmIGhhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCktPmRpZFJlY2Vp
dmVEYXRhQXJyYXkoZGF0YUFycmF5KSkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KLSAgICBo
YW5kbGUtPmhhbmRsZURhdGFBcnJheShkYXRhQXJyYXkpOwotfQotI2VuZGlmCi0KLXN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVEYXRhKENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRkRhdGFSZWYgZGF0
YSwgQ0ZJbmRleCBvcmlnaW5hbExlbmd0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAg
ICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0KLSNpZiBMT0dfRElTQUJMRUQKLSAgICBV
TlVTRURfUEFSQU0oY29ubik7Ci0jZWxzZQotICAgIENGSW5kZXggbGVuZ3RoID0gQ0ZEYXRhR2V0
TGVuZ3RoKGRhdGEpOwotICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBkaWRSZWNlaXZlRGF0YShj
b25uPSVwLCBoYW5kbGU9JXAsIGJ5dGVzPSVsZCkgKCVzKSIsIGNvbm4sIGhhbmRsZSwgbGVuZ3Ro
LCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwot
I2VuZGlmCi0KLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBpZiAoaGFuZGxlLT5xdWlja0xvb2tI
YW5kbGUoKSAmJiBoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpLT5kaWRSZWNlaXZlRGF0YShkYXRh
KSkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KLSAgICBpZiAoUmVzb3VyY2VIYW5kbGVDbGll
bnQqIGNsaWVudCA9IGhhbmRsZS0+Y2xpZW50KCkpCi0gICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2
ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShkYXRhKSwgb3JpZ2luYWxM
ZW5ndGgpOwotfQotCi1zdGF0aWMgdm9pZCBkaWRTZW5kQm9keURhdGEoQ0ZVUkxDb25uZWN0aW9u
UmVmLCBDRkluZGV4LCBDRkluZGV4IHRvdGFsQnl0ZXNXcml0dGVuLCBDRkluZGV4IHRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCi17Ci0gICAgUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2Fz
dDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAgIGlmICghaGFuZGxlIHx8ICFoYW5kbGUtPmNsaWVu
dCgpKQotICAgICAgICByZXR1cm47Ci0gICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkU2VuZERhdGEo
aGFuZGxlLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7Ci19
Ci0KLXN0YXRpYyBCb29sZWFuIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2soQ0ZV
UkxDb25uZWN0aW9uUmVmIGNvbm4sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0jaWYgTE9H
X0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGNvbm4pOwotI2VuZGlmCi0gICAgUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSA9IGNvbnN0X2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihzdGF0aWNfY2FzdDxj
b25zdCBSZXNvdXJjZUhhbmRsZSo+KGNsaWVudEluZm8pKTsKLQotICAgIExPRyhOZXR3b3JrLCAi
Q0ZOZXQgLSBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShjb25uPSVwLCBoYW5kbGU9JXApICgl
cykiLCBjb25uLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBpZiAoIWhhbmRsZSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmV0dXJuIGhhbmRsZS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKTsKLX0K
LQotc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURf
UEFSQU0oY29ubik7Ci0jZW5kaWYKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGlj
X2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0K
LSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gZGlkRmluaXNoTG9hZGluZyhjb25uPSVwLCBoYW5k
bGU9JXApICglcykiLCBjb25uLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBpZiAo
aGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKSAmJiBoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpLT5k
aWRGaW5pc2hMb2FkaW5nKCkpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCi0gICAgaWYgKGhh
bmRsZS0+Y2xpZW50KCkpCi0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZEZpbmlzaExvYWRp
bmcoaGFuZGxlLCAwKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkRmFpbChDRlVSTENvbm5lY3Rpb25S
ZWYgY29ubiwgQ0ZFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSNp
ZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oY29ubik7Ci0jZW5kaWYKLSAgICBSZXNv
dXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0KLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gZGlk
RmFpbChjb25uPSVwLCBoYW5kbGU9JXAsIGVycm9yID0gJXApICglcykiLCBjb25uLCBoYW5kbGUs
IGVycm9yLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwotCi0jaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgaWYgKGhhbmRsZS0+cXVpY2tMb29rSGFu
ZGxlKCkpCi0gICAgICAgIGhhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCktPmRpZEZhaWwoKTsKLSNl
bmRpZgotCi0gICAgaWYgKGhhbmRsZS0+Y2xpZW50KCkpCi0gICAgICAgIGhhbmRsZS0+Y2xpZW50
KCktPmRpZEZhaWwoaGFuZGxlLCBSZXNvdXJjZUVycm9yKGVycm9yKSk7Ci19Ci0KLXN0YXRpYyBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKENGVVJMQ29ubmVjdGlvblJl
ZiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKLXsKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVz
b3VyY2VIYW5kbGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0KLSNpZiBQTEFU
Rk9STShXSU4pCi0gICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYzMDA5OTA+
IENhY2hpbmcgZG9lcyBub3QgcmVzcGVjdCBWYXJ5IEhUVFAgaGVhZGVyLgotICAgIC8vIEZJWE1F
OiBXZWJDb3JlIGNhY2hlIGhhcyBpc3N1ZXMgd2l0aCBWYXJ5LCB0b28gKGJ1ZyA1ODc5NywgYnVn
IDcxNTA5KS4KLSAgICBDRlVSTFJlc3BvbnNlUmVmIHdyYXBwZWRSZXNwb25zZSA9IENGQ2FjaGVk
VVJMUmVzcG9uc2VHZXRXcmFwcGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9uc2UpOwotICAgIGlmIChD
RkhUVFBNZXNzYWdlUmVmIGh0dHBSZXNwb25zZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9u
c2Uod3JhcHBlZFJlc3BvbnNlKSkgewotICAgICAgICBBU1NFUlQoQ0ZIVFRQTWVzc2FnZUlzSGVh
ZGVyQ29tcGxldGUoaHR0cFJlc3BvbnNlKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gdmFyeVZhbHVlID0gYWRvcHRDRihDRkhUVFBNZXNzYWdlQ29weUhlYWRlckZpZWxkVmFsdWUo
aHR0cFJlc3BvbnNlLCBDRlNUUigiVmFyeSIpKSk7Ci0gICAgICAgIGlmICh2YXJ5VmFsdWUpCi0g
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQotCi0j
aWYgUExBVEZPUk0oV0lOKQotICAgIGlmIChoYW5kbGUtPmNsaWVudCgpICYmICFoYW5kbGUtPmNs
aWVudCgpLT5zaG91bGRDYWNoZVJlc3BvbnNlKGhhbmRsZSwgY2FjaGVkUmVzcG9uc2UpKQotICAg
ICAgICByZXR1cm4gMDsKLSNlbHNlCi0gICAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBuZXdSZXNw
b25zZSA9IGhhbmRsZS0+Y2xpZW50KCktPndpbGxDYWNoZVJlc3BvbnNlKGhhbmRsZSwgY2FjaGVk
UmVzcG9uc2UpOwotICAgIGlmIChuZXdSZXNwb25zZSAhPSBjYWNoZWRSZXNwb25zZSkKLSAgICAg
ICAgcmV0dXJuIG5ld1Jlc3BvbnNlOwotI2VuZGlmCi0KLSAgICBDRlJldGFpbihjYWNoZWRSZXNw
b25zZSk7Ci0KLSAgICByZXR1cm4gY2FjaGVkUmVzcG9uc2U7Ci19Ci0KLXN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMQXV0aENoYWxs
ZW5nZVJlZiBjaGFsbGVuZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0jaWYgTE9HX0RJ
U0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGNvbm4pOwotI2VuZGlmCi0gICAgUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lk
Kj4oY2xpZW50SW5mbykpOwotICAgIEFTU0VSVChoYW5kbGUpOwotICAgIExPRyhOZXR3b3JrLCAi
Q0ZOZXQgLSBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbm49JXAsIGhhbmRsZT0lcCAoJXMpIiwgY29u
biwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwotCi0gICAgaGFuZGxlLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlLCBoYW5kbGUpKTsKLX0KLQotI2lmIFVT
RShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi1zdGF0aWMgQm9vbGVhbiBjYW5SZXNw
b25kVG9Qcm90ZWN0aW9uU3BhY2UoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMUHJvdGVj
dGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsK
LSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oY29ubik7Ci0jZW5kaWYKLSAgICBS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25z
dF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0gICAgQVNTRVJUKGhhbmRsZSk7Ci0KLSAgICBM
T0coTmV0d29yaywgIkNGTmV0IC0gY2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKGNvbm49JXAs
IGhhbmRsZT0lcCAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIFBy
b3RlY3Rpb25TcGFjZSBjb3JlUHJvdGVjdGlvblNwYWNlID0gY29yZShwcm90ZWN0aW9uU3BhY2Up
OwotICAgIGlmIChjb3JlUHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgPT0g
UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGhhbmRsZS0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZShjb3JlUHJvdGVjdGlvblNwYWNlKTsKLSNlbHNlCi0gICAgcmV0dXJuIGhhbmRs
ZS0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlKHByb3RlY3Rpb25T
cGFjZSkpOwotI2VuZGlmCi19Ci0jZW5kaWYKLQogUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJl
c291cmNlSGFuZGxlSW50ZXJuYWwoKQogewogICAgIGlmIChtX2Nvbm5lY3Rpb24pIHsKQEAgLTQ3
Nyw5ICsxODUsNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24o
Ym9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbAogICAgIH0KICNlbmRpZgogCi0g
ICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IGNsaWVudCA9ICpSZXNvdXJjZUhhbmRsZTo6Y29u
bmVjdGlvbkNsaWVudENhbGxiYWNrcygpOwotICAgIGNsaWVudC5jbGllbnRJbmZvID0gdGhpczsK
LQogICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgc3RyZWFtUHJvcGVydGllcyAgPSBDRkRpY3Rp
b25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywg
JmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwogICAgIGlmICghc2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UpCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHN0cmVhbVByb3Bl
cnRpZXMsIENGU1RSKCJfa0NGVVJMQ29ubmVjdGlvblNlc3Npb25JRCIpLCBDRlNUUigiV2ViS2l0
UHJpdmF0ZVNlc3Npb24iKSk7CkBAIC01MDIsNiArMjA3LDEwIEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
LCBib29sCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFN0YXJ0
U3luY2hyb25vdXNseShyZXF1ZXN0LmdldCgpLCAxKTsKICNlbmRpZgorCisgICAgZC0+bV9jb25u
ZWN0aW9uRGVsZWdhdGUgPSBhZG9wdFJlZihuZXcgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlKHRoaXMpKTsKKyAgICBDRlVSTENvbm5lY3Rpb25DbGllbnRf
VjYgY2xpZW50ID0gZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUtPm1ha2VDb25uZWN0aW9uQ2xpZW50
KCk7CisKICAgICBkLT5tX2Nvbm5lY3Rpb24gPSBhZG9wdENGKENGVVJMQ29ubmVjdGlvbkNyZWF0
ZVdpdGhQcm9wZXJ0aWVzKDAsIHJlcXVlc3QuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxD
b25uZWN0aW9uQ2xpZW50Kj4oJmNsaWVudCksIHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpKSk7
CiB9CiAKQEAgLTg3NywyNCArNTg2LDQgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6aGFuZGxlRGF0
YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQogfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2KiBSZXNvdXJjZUhhbmRsZTo6Y29ubmVjdGlv
bkNsaWVudENhbGxiYWNrcygpCi17Ci0gICAgc3RhdGljIENGVVJMQ29ubmVjdGlvbkNsaWVudF9W
NiBjbGllbnQgPSB7IDYsIDAsIDAsIDAsIDAsIFdlYkNvcmU6OndpbGxTZW5kUmVxdWVzdCwgZGlk
UmVjZWl2ZVJlc3BvbnNlLCBkaWRSZWNlaXZlRGF0YSwgMCwgZGlkRmluaXNoTG9hZGluZywgZGlk
RmFpbCwgd2lsbENhY2hlUmVzcG9uc2UsIGRpZFJlY2VpdmVDaGFsbGVuZ2UsIGRpZFNlbmRCb2R5
RGF0YSwgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VDYWxsYmFjaywgMCwKLSNpZiBVU0UoUFJP
VEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAgICAgICBjYW5SZXNwb25kVG9Qcm90ZWN0
aW9uU3BhY2UsCi0jZWxzZQotICAgICAgICAwLAotI2VuZGlmCi0gICAgICAgIDAsCi0jaWYgVVNF
KE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQotICAgICAgICBkaWRSZWNlaXZlRGF0YUFy
cmF5Ci0jZWxzZQotICAgICAgICAwCi0jZW5kaWYKLSAgICB9OwotICAgIHJldHVybiAmY2xpZW50
OwotfQotI2VuZGlmIC8vIFVTRShRVUlDS19MT09LKSAmJiBVU0UoQ0ZORVRXT1JLKQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTkxYmM5Y2Q5ZmE4ZjY5MjMzZjhhNDQxY2Rm
ZDRlMThmOGJjYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcApAQCAt
MCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDEzIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKKworI2lmIFVTRShD
Rk5FVFdPUkspCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZShS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlKQorICAgIDogbV9oYW5kbGUoaGFuZGxlKQoreworfQorUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6flJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUoKQoreworfQorCitDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1ZXN0Q2FsbGJhY2soQ0ZVUkxD
b25uZWN0aW9uUmVmLCBDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0LCBDRlVSTFJlc3BvbnNlUmVm
IG9yaWdpbmFsUmVkaXJlY3RSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+d2lsbFNlbmRSZXF1ZXN0KGNmUmVx
dWVzdCwgb3JpZ2luYWxSZWRpcmVjdFJlc3BvbnNlKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2VDYWxsYmFjayhDRlVS
TENvbm5lY3Rpb25SZWYsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRSZWNlaXZl
UmVzcG9uc2UoY2ZSZXNwb25zZSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25SZWYs
IENGRGF0YVJlZiBkYXRhLCBDRkluZGV4IG9yaWdpbmFsTGVuZ3RoLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2VpdmVEYXRh
KGRhdGEsIG9yaWdpbmFsTGVuZ3RoKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nQ2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9u
UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSktPmRpZEZpbmlzaExvYWRpbmcoKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpkaWRGYWlsQ2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9uUmVmLCBD
RkVycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19j
YXN0PFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSktPmRpZEZhaWwoZXJyb3IpOworfQorCitDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxDYWNoZVJl
c3BvbnNlQ2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVm
IGNhY2hlZFJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29uc3Rf
Y2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT53aWxsQ2FjaGVSZXNwb25zZShjYWNoZWRSZXNwb25z
ZSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlk
UmVjZWl2ZUNoYWxsZW5nZUNhbGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxBdXRoQ2hh
bGxlbmdlUmVmIGNoYWxsZW5nZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBzdGF0
aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29uc3RfY2Fz
dDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSk7Cit9
CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkU2VuZEJv
ZHlEYXRhQ2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRkluZGV4LCBDRkluZGV4IHRvdGFs
Qnl0ZXNXcml0dGVuLCBDRkluZGV4IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkU2Vu
ZEJvZHlEYXRhKHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsK
K30KKworQm9vbGVhbiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZUNhbGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8p
KS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKTsKKworfQorCisjaWYgVVNFKFBST1RFQ1RJ
T05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKK0Jvb2xlYW4gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlQ2FsbGJhY2soQ0ZVUkxD
b25uZWN0aW9uUmVmLCBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSktPmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpOworfQor
I2VuZGlmIC8vIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisKKyNpZiBVU0Uo
TkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCit2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQXJyYXlDYWxsYmFjayhDRlVSTENvbm5l
Y3Rpb25SZWYsIENGQXJyYXlSZWYgZGF0YUFycmF5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQor
eworICAgIHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2VpdmVEYXRhQXJyYXkoZGF0
YUFycmF5KTsKK30KKyNlbmRpZiAvLyBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0sp
CisKK0NGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlOjptYWtlQ29ubmVjdGlvbkNsaWVudCgpIGNvbnN0Cit7CisgICAgQ0ZVUkxDb25u
ZWN0aW9uQ2xpZW50X1Y2IGNsaWVudCA9IHsgNiwgdGhpcywgMCwgMCwgMCwKKyAgICAgICAgJlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdENhbGxi
YWNrLAorICAgICAgICAmUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2ssCisgICAgICAgICZSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YUNhbGxiYWNrLAorICAgICAgICAwLAorICAg
ICAgICAmUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkRmluaXNoTG9h
ZGluZ0NhbGxiYWNrLAorICAgICAgICAmUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZTo6ZGlkRmFpbENhbGxiYWNrLAorICAgICAgICAmUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZTo6d2lsbENhY2hlUmVzcG9uc2VDYWxsYmFjaywKKyAgICAgICAgJlJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVDaGFsbGVuZ2VDYWxs
YmFjaywKKyAgICAgICAgJlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRp
ZFNlbmRCb2R5RGF0YUNhbGxiYWNrLAorICAgICAgICAmUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VDYWxsYmFjaywKKyAgICAg
ICAgMCwKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorICAgICAgICAm
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6Y2FuUmVzcG9uZFRvUHJvdGVj
dGlvblNwYWNlQ2FsbGJhY2ssCisjZWxzZQorICAgICAgICAwLAorI2VuZGlmCisgICAgICAgIDAs
CisjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorICAgICAgICAmUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJheUNhbGxi
YWNrCisjZWxzZQorICAgICAgICAwCisjZW5kaWYKKyAgICB9OworICAgIHJldHVybiBjbGllbnQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCisKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JL
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyNzdmYmI4NmU0Zjc1MmEyNzUxNGVjZTA3NjA0MzBlNzAxODk2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNC0yMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKKyNk
ZWZpbmUgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9oCisKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQorCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4K
KyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBSZXNvdXJjZUhhbmRsZTsKKworY2xhc3MgUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7CitwdWJsaWM6CisgICAgUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZShSZXNvdXJjZUhhbmRsZSopOworICAgIHZpcnR1
YWwgflJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoKTsKKworICAgIENGVVJM
Q29ubmVjdGlvbkNsaWVudF9WNiBtYWtlQ29ubmVjdGlvbkNsaWVudCgpIGNvbnN0OworCitwcml2
YXRlOgorICAgIHN0YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0Q2FsbGJhY2so
Q0ZVUkxDb25uZWN0aW9uUmVmLCBDRlVSTFJlcXVlc3RSZWYsIENGVVJMUmVzcG9uc2VSZWYsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZUNhbGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxSZXNwb25zZVJlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFDYWxsYmFjayhD
RlVSTENvbm5lY3Rpb25SZWYsIENGRGF0YVJlZiwgQ0ZJbmRleCBvcmlnaW5hbExlbmd0aCwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZ0Nh
bGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAg
c3RhdGljIHZvaWQgZGlkRmFpbENhbGxiYWNrKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZFcnJvclJl
ZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYgd2lsbENhY2hlUmVzcG9uc2VDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25SZWYsIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2VDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25SZWYsIENGVVJM
QXV0aENoYWxsZW5nZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZv
aWQgZGlkU2VuZEJvZHlEYXRhQ2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRkluZGV4LCBD
RkluZGV4IHRvdGFsQnl0ZXNXcml0dGVuLCBDRkluZGV4IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOworICAgIHN0YXRpYyBCb29sZWFuIHNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2soQ0ZVUkxDb25uZWN0aW9uUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQor
ICAgIHN0YXRpYyBCb29sZWFuIGNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZUNhbGxiYWNrKENG
VVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOworI2VuZGlmIC8vIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sp
CisjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVEYXRhQXJyYXlDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25SZWYsIENGQXJyYXlS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworI2VuZGlmIC8vIFVTRShORVRXT1JLX0NGREFU
QV9BUlJBWV9DQUxMQkFDSykKKworICAgIHZpcnR1YWwgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5k
UmVxdWVzdChDRlVSTFJlcXVlc3RSZWYsIENGVVJMUmVzcG9uc2VSZWYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKENGVVJMUmVzcG9uc2VSZWYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ0ZEYXRhUmVmLCBDRkluZGV4IG9yaWdpbmFsTGVu
Z3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoQ0ZFcnJvclJlZikgPSAwOworICAgIHZpcnR1YWwgQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hh
bGxlbmdlUmVmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRCb2R5RGF0YShDRkluZGV4
IHRvdGFsQnl0ZXNXcml0dGVuLCBDRkluZGV4IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpID0g
MDsKKyAgICB2aXJ0dWFsIEJvb2xlYW4gc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKSA9IDA7
CisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKyAgICB2aXJ0dWFsIEJv
b2xlYW4gY2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVm
KSA9IDA7CisjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKyNp
ZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkpID0gMDsKKyNlbmRpZiAvLyBV
U0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisKK3Byb3RlY3RlZDoKKyAgICBSZXNv
dXJjZUhhbmRsZSogbV9oYW5kbGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgorCisj
ZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKworI2VuZGlmIC8vIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1NDll
Yjc1NTVkMjgyMzRlYzMzZDgxOTk0NTUzMWE4YzkyMzI3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKQEAgLTAsMCArMSwzMDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKKworI2lmIFVTRShDRk5FVFdPUkspCisK
KyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaCIKKyNpbmNsdWRlICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCisjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgorI2luY2x1
ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aCIKKyNpbmNsdWRlICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKKyNlbmRpZiAvLyBQTEFURk9STShN
QUMpCisKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgor
I2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4K
KyNlbmRpZiAvLyBQTEFURk9STShXSU4pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSkKKyAgICA6IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoaGFuZGxlKQor
eworfQorCitzdGF0aWMgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHN5bnRoZXNpemVSZWRp
cmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjdXJyZW50UmVx
dWVzdCwgQ0ZVUkxSZXF1ZXN0UmVmIG5ld1JlcXVlc3QsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZWRp
cmVjdFJlc3BvbnNlKQoreworICAgIGlmIChjZlJlZGlyZWN0UmVzcG9uc2UpCisgICAgICAgIHJl
dHVybiBjZlJlZGlyZWN0UmVzcG9uc2U7CisKKyAgICBDRlVSTFJlZiBuZXdVUkwgPSBDRlVSTFJl
cXVlc3RHZXRVUkwobmV3UmVxdWVzdCk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdT
Y2hlbWUgPSBhZG9wdENGKENGVVJMQ29weVNjaGVtZShuZXdVUkwpKTsKKworICAgIC8vIElmIHRo
ZSBwcm90b2NvbHMgb2YgdGhlIG5ldyByZXF1ZXN0IGFuZCB0aGUgY3VycmVudCByZXF1ZXN0IG1h
dGNoLCB0aGlzIGlzIG5vdCBhbiBIU1RTIHJlZGlyZWN0IGFuZCB3ZSBzaG91bGRuJ3Qgc3ludGhl
c2l6ZSBhIHJlZGlyZWN0IHJlc3BvbnNlLgorICAgIGlmIChjdXJyZW50UmVxdWVzdC51cmwoKS5w
cm90b2NvbCgpID09IFN0cmluZyhuZXdTY2hlbWUuZ2V0KCkpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY3VycmVudFVSTCA9IGN1cnJlbnRSZXF1ZXN0LnVy
bCgpLmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IHJlc3Bv
bnNlTWVzc2FnZSA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNyZWF0ZVJlc3BvbnNlKDAsIDMwMiwg
MCwga0NGSFRUUFZlcnNpb24xXzEpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IG5ld0Fic29s
dXRlVVJMID0gYWRvcHRDRihDRlVSTENvcHlBYnNvbHV0ZVVSTChuZXdVUkwpKTsKKyAgICBDRkhU
VFBNZXNzYWdlU2V0SGVhZGVyRmllbGRWYWx1ZShyZXNwb25zZU1lc3NhZ2UuZ2V0KCksIENGU1RS
KCJMb2NhdGlvbiIpLCBDRlVSTEdldFN0cmluZyhuZXdBYnNvbHV0ZVVSTC5nZXQoKSkpOworICAg
IENGSFRUUE1lc3NhZ2VTZXRIZWFkZXJGaWVsZFZhbHVlKHJlc3BvbnNlTWVzc2FnZS5nZXQoKSwg
Q0ZTVFIoIkNhY2hlLUNvbnRyb2wiKSwgQ0ZTVFIoIm5vLXN0b3JlIikpOworCisgICAgUmV0YWlu
UHRyPENGVVJMUmVzcG9uc2VSZWY+IG5ld1Jlc3BvbnNlID0gYWRvcHRDRihDRlVSTFJlc3BvbnNl
Q3JlYXRlV2l0aEhUVFBSZXNwb25zZSgwLCBjdXJyZW50VVJMLmdldCgpLCByZXNwb25zZU1lc3Nh
Z2UuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZU5vdEFsbG93ZWQpKTsKKyAgICByZXR1cm4gbmV3
UmVzcG9uc2U7Cit9CisKK0NGVVJMUmVxdWVzdFJlZiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYg
Y2ZSZXF1ZXN0LCBDRlVSTFJlc3BvbnNlUmVmIG9yaWdpbmFsUmVkaXJlY3RSZXNwb25zZSkKK3sK
KyAgICBSZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJlZj4gcmVkaXJlY3RSZXNwb25zZSA9IHN5bnRo
ZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkobV9oYW5kbGUtPmN1cnJlbnRSZXF1ZXN0
KCksIGNmUmVxdWVzdCwgb3JpZ2luYWxSZWRpcmVjdFJlc3BvbnNlKTsKKworICAgIGlmICghcmVk
aXJlY3RSZXNwb25zZSkgeworICAgICAgICBDRlJldGFpbihjZlJlcXVlc3QpOworICAgICAgICBy
ZXR1cm4gY2ZSZXF1ZXN0OworICAgIH0KKworICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVx
dWVzdChoYW5kbGU9JXApICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgp
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3Q7CisgICAgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VH
ZXRIVFRQUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7CisgICAgaWYgKGh0dHBNZXNz
YWdlICYmIENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1lc3NhZ2UpID09
IDMwNykgeworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxhc3RIVFRQTWV0aG9kID0g
bV9oYW5kbGUtPmxhc3RIVFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBuZXdNZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlI
VFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QpKTsKKyAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFy
ZVdpdGhPcHRpb25zKGxhc3RIVFRQTWV0aG9kLmdldCgpLCBuZXdNZXRob2QuZ2V0KCksIENGUmFu
Z2VNYWtlKDAsIENGU3RyaW5nR2V0TGVuZ3RoKGxhc3RIVFRQTWV0aG9kLmdldCgpKSksIGtDRkNv
bXBhcmVDYXNlSW5zZW5zaXRpdmUpKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
VVJMUmVxdWVzdFJlZj4gbXV0YWJsZVJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0
ZU11dGFibGVDb3B5KDAsIGNmUmVxdWVzdCkpOworICAgICAgICAgICAgd2tTZXRSZXF1ZXN0U3Rv
cmFnZVNlc3Npb24obV9oYW5kbGUtPnN0b3JhZ2VTZXNzaW9uKCksIG11dGFibGVSZXF1ZXN0Lmdl
dCgpKTsKKyAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKG11dGFi
bGVSZXF1ZXN0LmdldCgpLCBsYXN0SFRUUE1ldGhvZC5nZXQoKSk7CisKKyAgICAgICAgICAgIEZv
cm1EYXRhKiBib2R5ID0gbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmh0dHBCb2R5KCk7CisgICAg
ICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5o
dHRwTWV0aG9kKCksICJHRVQiKSAmJiBib2R5ICYmICFib2R5LT5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkobXV0YWJsZVJlcXVlc3QuZ2V0KCksIGJvZHkp
OworCisgICAgICAgICAgICBTdHJpbmcgb3JpZ2luYWxDb250ZW50VHlwZSA9IG1faGFuZGxlLT5m
aXJzdFJlcXVlc3QoKS5odHRwQ29udGVudFR5cGUoKTsKKyAgICAgICAgICAgIGlmICghb3JpZ2lu
YWxDb250ZW50VHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0
SFRUUEhlYWRlckZpZWxkVmFsdWUobXV0YWJsZVJlcXVlc3QuZ2V0KCksIENGU1RSKCJDb250ZW50
LVR5cGUiKSwgb3JpZ2luYWxDb250ZW50VHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKwor
ICAgICAgICAgICAgcmVxdWVzdCA9IG11dGFibGVSZXF1ZXN0LmdldCgpOworICAgICAgICB9Cisg
ICAgfQorICAgIGlmIChyZXF1ZXN0LmlzTnVsbCgpKQorICAgICAgICByZXF1ZXN0ID0gY2ZSZXF1
ZXN0OworCisgICAgLy8gU2hvdWxkIG5vdCBzZXQgUmVmZXJlciBhZnRlciBhIHJlZGlyZWN0IGZy
b20gYSBzZWN1cmUgcmVzb3VyY2UgdG8gbm9uLXNlY3VyZSBvbmUuCisgICAgaWYgKCFyZXF1ZXN0
LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgJiYgcHJvdG9jb2xJcyhyZXF1ZXN0Lmh0dHBSZWZl
cnJlcigpLCAiaHR0cHMiKSAmJiBtX2hhbmRsZS0+Y29udGV4dCgpLT5zaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkpCisgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQUmVm
ZXJyZXIoKTsKKworICAgIG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZS5nZXQoKSk7CisKKyAgICBpZiAocmVxdWVzdC5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBjZlJlcXVlc3QgPSByZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVI
VFRQQm9keSk7CisKKyAgICBDRlJldGFpbihjZlJlcXVlc3QpOworICAgIHJldHVybiBjZlJlcXVl
c3Q7Cit9CisKKyNpZiAhUExBVEZPUk0oTUFDKQorc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1JTUVU
eXBlKENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCit7CisgICAgc3RhdGljIENGU3RyaW5nUmVm
IGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9IGRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5n
KCkubGVha1JlZigpOworICAgIAorICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShyZXNwb25z
ZSwgZGVmYXVsdE1JTUVUeXBlU3RyaW5nKTsKK30KKyNlbmRpZiAvLyAhUExBVEZPUk0oTUFDKQor
Cit2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKK3sKKyAgICBM
T0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5k
bGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKworICAgIGlmICghbV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAgICByZXR1cm47CisKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgLy8gQXZvaWQgTUlNRSB0eXBlIHNuaWZmaW5nIGlmIHRoZSBy
ZXNwb25zZSBjb21lcyBiYWNrIGFzIDMwNCBOb3QgTW9kaWZpZWQuCisgICAgQ0ZIVFRQTWVzc2Fn
ZVJlZiBtc2cgPSB3a0dldENGVVJMUmVzcG9uc2VIVFRQUmVzcG9uc2UoY2ZSZXNwb25zZSk7Cisg
ICAgaW50IHN0YXR1c0NvZGUgPSBtc2cgPyBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXND
b2RlKG1zZykgOiAwOworCisgICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0KQorICAgICAgICBhZGp1
c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KGNmUmVzcG9uc2UpOworCisjaWYgIVBMQVRGT1JNKElPUykK
KyAgICBpZiAoX0NGVVJMUmVxdWVzdENvcHlQcm90b2NvbFByb3BlcnR5Rm9yS2V5KG1faGFuZGxl
LT5maXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RS
KCJGb3JjZUhUTUxNSU1FVHlwZSIpKSkKKyAgICAgICAgd2tTZXRDRlVSTFJlc3BvbnNlTUlNRVR5
cGUoY2ZSZXNwb25zZSwgQ0ZTVFIoInRleHQvaHRtbCIpKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TKQorI2Vsc2UKKyAgICBpZiAoIUNGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShjZlJlc3BvbnNl
KSkgeworICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUgYXBwbHlpbmcgdGhlIGRlZmF1bHQg
TUlNRVR5cGUgaWYgd2UgdG9sZCB0aGUgbmV0d29ya2luZyBsYXllciB0byBkbyBjb250ZW50IHNu
aWZmaW5nIGZvciBoYW5kbGUuCisgICAgICAgIEFTU0VSVCghbV9oYW5kbGUtPnNob3VsZENvbnRl
bnRTbmlmZigpKTsKKyAgICAgICAgc2V0RGVmYXVsdE1JTUVUeXBlKGNmUmVzcG9uc2UpOworICAg
IH0KKyNlbmRpZgorCisjaWYgVVNFKFFVSUNLX0xPT0spCisgICAgbV9oYW5kbGUtPnNldFF1aWNr
TG9va0hhbmRsZShRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShtX2hhbmRsZSwgdGhpcywgY2ZSZXNw
b25zZSkpOworICAgIGlmIChtX2hhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkpCisgICAgICAgIGNm
UmVzcG9uc2UgPSBtX2hhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCktPmNmUmVzcG9uc2UoKTsKKyNl
bmRpZgorCisgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UobV9oYW5k
bGUsIGNmUmVzcG9uc2UpOworfQorCit2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZEYXRhUmVmIGRhdGEsIENGSW5k
ZXggb3JpZ2luYWxMZW5ndGgpCit7CisgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5bmNocm9u
b3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEo
aGFuZGxlPSVwLCBieXRlcz0lbGQpICglcykiLCBtX2hhbmRsZSwgQ0ZEYXRhR2V0TGVuZ3RoKGRh
dGEpLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBpZiAobV9oYW5kbGUtPnF1aWNrTG9va0hh
bmRsZSgpICYmIG1faGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+ZGlkUmVjZWl2ZURhdGEoZGF0
YSkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgaWYgKFJlc291cmNlSGFuZGxlQ2xp
ZW50KiBjbGllbnQgPSBtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+ZGlkUmVj
ZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKGRhdGEpLCBvcmln
aW5hbExlbmd0aCk7Cit9CisKK3ZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKCkKK3sKKyAgICBMT0coTmV0d29yaywg
IkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
OjpkaWRGaW5pc2hMb2FkaW5nKGhhbmRsZT0lcCkgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+
Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyNpZiBVU0Uo
UVVJQ0tfTE9PSykKKyAgICBpZiAobV9oYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpICYmIG1faGFu
ZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+ZGlkRmluaXNoTG9hZGluZygpKQorICAgICAgICByZXR1
cm47CisjZW5kaWYKKworICAgIGlmIChSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gbV9o
YW5kbGUtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmRpZEZpbmlzaExvYWRpbmcobV9oYW5k
bGUsIDApOworfQorCit2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZTo6ZGlkRmFpbChDRkVycm9yUmVmIGVycm9yKQoreworICAgIExPRyhOZXR3b3Jr
LCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGU6OmRpZEZhaWwoaGFuZGxlPSVwLCBlcnJvciA9ICVwKSAoJXMpIiwgbV9oYW5kbGUsIGVycm9y
LCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBpZiAoUXVpY2tMb29rSGFuZGxlKiBxdWlja0xv
b2tIYW5kbGUgPSBtX2hhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkpCisgICAgICAgIHF1aWNrTG9v
a0hhbmRsZS0+ZGlkRmFpbCgpOworI2VuZGlmCisKKyAgICBpZiAoUmVzb3VyY2VIYW5kbGVDbGll
bnQqIGNsaWVudCA9IG1faGFuZGxlLT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5kaWRGYWls
KG1faGFuZGxlLCBSZXNvdXJjZUVycm9yKGVycm9yKSk7Cit9CisKK0NGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3
aWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQor
eworI2lmIFBMQVRGT1JNKFdJTikKKyAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2Js
ZW0vNjMwMDk5MD4gQ2FjaGluZyBkb2VzIG5vdCByZXNwZWN0IFZhcnkgSFRUUCBoZWFkZXIuCisg
ICAgLy8gRklYTUU6IFdlYkNvcmUgY2FjaGUgaGFzIGlzc3VlcyB3aXRoIFZhcnksIHRvbyAoYnVn
IDU4Nzk3LCBidWcgNzE1MDkpLgorICAgIENGVVJMUmVzcG9uc2VSZWYgd3JhcHBlZFJlc3BvbnNl
ID0gQ0ZDYWNoZWRVUkxSZXNwb25zZUdldFdyYXBwZWRSZXNwb25zZShjYWNoZWRSZXNwb25zZSk7
CisgICAgaWYgKENGSFRUUE1lc3NhZ2VSZWYgaHR0cFJlc3BvbnNlID0gQ0ZVUkxSZXNwb25zZUdl
dEhUVFBSZXNwb25zZSh3cmFwcGVkUmVzcG9uc2UpKSB7CisgICAgICAgIEFTU0VSVChDRkhUVFBN
ZXNzYWdlSXNIZWFkZXJDb21wbGV0ZShodHRwUmVzcG9uc2UpKTsKKyAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiB2YXJ5VmFsdWUgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5SGVhZGVy
RmllbGRWYWx1ZShodHRwUmVzcG9uc2UsIENGU1RSKCJWYXJ5IikpKTsKKyAgICAgICAgaWYgKHZh
cnlWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyNlbmRpZiAvLyBQTEFURk9S
TShXSU4pCisKKyNpZiBQTEFURk9STShXSU4pCisgICAgaWYgKG1faGFuZGxlLT5jbGllbnQoKSAm
JiAhbV9oYW5kbGUtPmNsaWVudCgpLT5zaG91bGRDYWNoZVJlc3BvbnNlKG1faGFuZGxlLCBjYWNo
ZWRSZXNwb25zZSkpCisgICAgICAgIHJldHVybiAwOworI2Vsc2UKKyAgICBDRkNhY2hlZFVSTFJl
c3BvbnNlUmVmIG5ld1Jlc3BvbnNlID0gbV9oYW5kbGUtPmNsaWVudCgpLT53aWxsQ2FjaGVSZXNw
b25zZShtX2hhbmRsZSwgY2FjaGVkUmVzcG9uc2UpOworICAgIGlmIChuZXdSZXNwb25zZSAhPSBj
YWNoZWRSZXNwb25zZSkKKyAgICAgICAgcmV0dXJuIG5ld1Jlc3BvbnNlOworI2VuZGlmCisKKyAg
ICBDRlJldGFpbihjYWNoZWRSZXNwb25zZSk7CisgICAgcmV0dXJuIGNhY2hlZFJlc3BvbnNlOwor
fQorCit2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2hhbGxlbmdlKQor
eworICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoaGFuZGxlPSVwICglcyki
LCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworCisgICAgbV9oYW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UsIG1faGFuZGxlKSk7Cit9CisK
K3ZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpk
aWRTZW5kQm9keURhdGEoQ0ZJbmRleCB0b3RhbEJ5dGVzV3JpdHRlbiwgQ0ZJbmRleCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlKQoreworICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5j
bGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkU2Vu
ZERhdGEobV9oYW5kbGUsIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlKTsKK30KKworQm9vbGVhbiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkKK3sKKyAgICBMT0coTmV0
d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShoYW5kbGU9JXApICglcykiLCBtX2hh
bmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworCisgICAgaWYgKCFtX2hhbmRsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIG1faGFuZGxlLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpOworfQorCisjaWYg
VVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKK0Jvb2xlYW4gU3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpjYW5SZXNwb25kVG9Qcm90ZWN0
aW9uU3BhY2UoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKQoreworICAg
IEFTU0VSVChtX2hhbmRsZSk7CisKKyAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpjYW5SZXNwb25kVG9Qcm90
ZWN0aW9uU3BhY2UoaGFuZGxlPSVwICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVx
dWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisjaWYgUExBVEZPUk0oSU9T
KQorICAgIFByb3RlY3Rpb25TcGFjZSBjb3JlUHJvdGVjdGlvblNwYWNlID0gY29yZShwcm90ZWN0
aW9uU3BhY2UpOworICAgIGlmIChjb3JlUHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uU2No
ZW1lKCkgPT0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvcmVQcm90ZWN0aW9uU3BhY2UpOworI2Vsc2UKKyAgICBy
ZXR1cm4gbV9oYW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29y
ZShwcm90ZWN0aW9uU3BhY2UpKTsKKyNlbmRpZgorfQorI2VuZGlmIC8vIFVTRShQUk9URUNUSU9O
X1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisKKyNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FM
TEJBQ0spCit2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkKK3sKKyAgICBp
ZiAoIW1faGFuZGxlLT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTE9HKE5ldHdv
cmssICJDRk5ldCAtIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJheShoYW5kbGU9JXAsIGFycmF5TGVuZ3RoPSVsZCkgKCVz
KSIsIG1faGFuZGxlLCBDRkFycmF5R2V0Q291bnQoZGF0YUFycmF5KSwgbV9oYW5kbGUtPmZpcnN0
UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisjaWYgVVNFKFFVSUNL
X0xPT0spCisgICAgaWYgKG1faGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKSAmJiBtX2hhbmRsZS0+
cXVpY2tMb29rSGFuZGxlKCktPmRpZFJlY2VpdmVEYXRhQXJyYXkoZGF0YUFycmF5KSkKKyAgICAg
ICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBtX2hhbmRsZS0+aGFuZGxlRGF0YUFycmF5KGRhdGFB
cnJheSk7Cit9CisjZW5kaWYgLy8gVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjkzOGViMzEzMDM0M2VhMjE4OGY3ZWYxZTgwNTAzZDJkZTEzZmVjN2EKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNjMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlX2gKKyNkZWZpbmUgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlX2gKKworI2lmIFVTRShDRk5FVFdPUkspCisKKyNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlIEZJTkFMIDogcHVibGljIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUgeworcHVibGljOgorICAgIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZShSZXNvdXJjZUhhbmRsZSopOworCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKENGRGF0YVJlZiwgQ0ZJbmRleCBvcmlnaW5hbExlbmd0aCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChDRkVycm9yUmVmKSBPVkVSUklERTsKKyNpZiBVU0UoTkVUV09SS19DRkRBVEFf
QVJSQVlfQ0FMTEJBQ0spCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZB
cnJheVJlZiBkYXRhQXJyYXkpIE9WRVJSSURFOworI2VuZGlmIC8vIFVTRShORVRXT1JLX0NGREFU
QV9BUlJBWV9DQUxMQkFDSykKKworCitwcml2YXRlOgorICAgIHZpcnR1YWwgQ0ZVUkxSZXF1ZXN0
UmVmIHdpbGxTZW5kUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYsIENGVVJMUmVzcG9uc2VSZWYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoQ0ZVUkxSZXNwb25z
ZVJlZikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxD
YWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRCb2R5RGF0YShDRkluZGV4IHRvdGFsQnl0ZXNX
cml0dGVuLCBDRkluZGV4IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgQm9vbGVhbiBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpIE9WRVJSSURFOwor
I2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAgdmlydHVhbCBCb29s
ZWFuIGNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZikg
T1ZFUlJJREU7CisjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCisKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JL
KQorCisjZW5kaWYgLy8gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9oCg==
</data>
<flag name="review"
          id="242233"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>