<?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>129670</bug_id>
          
          <creation_ts>2014-03-04 01:25:15 -0800</creation_ts>
          <short_desc>Move cross-port WebKit2 code to std::unique_ptr</short_desc>
          <delta_ts>2014-04-27 06:40:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>128007</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>986729</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-04 01:25:15 -0800</bug_when>
    <thetext>Move cross-port WebKit2 code to std::unique_ptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986730</commentid>
    <comment_count>1</comment_count>
      <attachid>225754</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-04 01:25:55 -0800</bug_when>
    <thetext>Created attachment 225754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994314</commentid>
    <comment_count>2</comment_count>
      <attachid>227790</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-25 13:40:44 -0700</bug_when>
    <thetext>Created attachment 227790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996249</commentid>
    <comment_count>3</comment_count>
      <attachid>227790</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-04-01 06:55:26 -0700</bug_when>
    <thetext>Comment on attachment 227790
Patch

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

&gt; Source/WebKit2/Shared/Network/CustomProtocols/CustomProtocolManager.h:44
&gt; +#else
&gt; +#include &quot;CustomProtocolManagerImpl.h&quot;

Why is this needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997289</commentid>
    <comment_count>4</comment_count>
      <attachid>227790</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-03 13:51:17 -0700</bug_when>
    <thetext>Comment on attachment 227790
Patch

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

&gt;&gt; Source/WebKit2/Shared/Network/CustomProtocols/CustomProtocolManager.h:44
&gt;&gt; +#include &quot;CustomProtocolManagerImpl.h&quot;
&gt; 
&gt; Why is this needed?

For the std::unique_ptr&lt;CustomProtocolManagerImpl&gt; member. The delete operator in std::default_delete&lt;&gt;() requires a complete type to operate on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998247</commentid>
    <comment_count>5</comment_count>
      <attachid>227790</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-07 14:47:23 -0700</bug_when>
    <thetext>Comment on attachment 227790
Patch

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

The new #include &quot;CustomProtocolManagerImpl.h&quot; does not make sense. I don’t see how it’s related to the rest of this patch. It should only be done if there is a good reason. r=me on the rest of this patch

&gt; Source/WebKit2/Platform/IPC/Connection.cpp:281
&gt;  void Connection::dispatchWorkQueueMessageReceiverMessage(WorkQueueMessageReceiver* workQueueMessageReceiver, MessageDecoder* incomingMessageDecoder)
&gt;  {
&gt; -    OwnPtr&lt;MessageDecoder&gt; decoder = adoptPtr(incomingMessageDecoder);
&gt; +    std::unique_ptr&lt;MessageDecoder&gt; decoder(incomingMessageDecoder);

The argument type of this function should be changed to std::unique_ptr&lt;MessageDecoder&gt;; this “function that takes a raw pointer but adopts it” is not a good idiom.

&gt;&gt;&gt; Source/WebKit2/Shared/Network/CustomProtocols/CustomProtocolManager.h:44
&gt;&gt;&gt; +#include &quot;CustomProtocolManagerImpl.h&quot;
&gt;&gt; 
&gt;&gt; Why is this needed?
&gt; 
&gt; For the std::unique_ptr&lt;CustomProtocolManagerImpl&gt; member. The delete operator in std::default_delete&lt;&gt;() requires a complete type to operate on.

A member of what class? I don’t see an additional std::unique_ptr&lt;CustomProtocolManagerImpl&gt; in this patch; I still have no idea why this change is here in this patch.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:211
&gt; +    return std::move(record);

Normally you would not need std::move here. Did you try without it?

&gt; Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.cpp:92
&gt; -    Deque&lt;OwnPtr&lt;WebSocketServerConnection&gt; &gt;::iterator end = m_connections.end();
&gt; -    for (Deque&lt;OwnPtr&lt;WebSocketServerConnection&gt; &gt;::iterator it = m_connections.begin(); it != end; ++it) {
&gt; +    for (auto it = m_connections.begin(), end = m_connections.end(); it != end; ++it) {
&gt;          if (it-&gt;get() == connection) {
&gt;              m_connections.remove(it);
&gt;              return;
&gt;          }
&gt;      }

Seeing this makes me think that a Deque is the wrong data structure to use. If this kind of operation is needed then it should be ListHashSet, not Deque.

&gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:642
&gt; +    dispatcher-&gt;dispatch(bind(callCallbackFunction, context, callbackFunction, securityOrigins.release()));

This release() idiom is really error-prone. We need to change this all around so it uses lambdas instead of bind to get rid of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998475</commentid>
    <comment_count>6</comment_count>
      <attachid>227790</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-08 00:16:32 -0700</bug_when>
    <thetext>Comment on attachment 227790
Patch

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

&gt;&gt; Source/WebKit2/Platform/IPC/Connection.cpp:281
&gt;&gt; +    std::unique_ptr&lt;MessageDecoder&gt; decoder(incomingMessageDecoder);
&gt; 
&gt; The argument type of this function should be changed to std::unique_ptr&lt;MessageDecoder&gt;; this “function that takes a raw pointer but adopts it” is not a good idiom.

This isn&apos;t possible for the moment because this method is invoked through WTF::bind().

&gt;&gt;&gt;&gt; Source/WebKit2/Shared/Network/CustomProtocols/CustomProtocolManager.h:44
&gt;&gt;&gt;&gt; +#include &quot;CustomProtocolManagerImpl.h&quot;
&gt;&gt;&gt; 
&gt;&gt;&gt; Why is this needed?
&gt;&gt; 
&gt;&gt; For the std::unique_ptr&lt;CustomProtocolManagerImpl&gt; member. The delete operator in std::default_delete&lt;&gt;() requires a complete type to operate on.
&gt; 
&gt; A member of what class? I don’t see an additional std::unique_ptr&lt;CustomProtocolManagerImpl&gt; in this patch; I still have no idea why this change is here in this patch.

Of the CustomProtocolManager class, on non-Cocoa platforms.

The error originates from the addSupplement&lt;CustomProtocolManager&gt;() call in the NetworkProcess constructor where the std::unique_ptr&lt;CustomProtocolManager&gt; destructor is generated.

&gt;&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:211
&gt;&gt; +    return std::move(record);
&gt; 
&gt; Normally you would not need std::move here. Did you try without it?

Indeed, std::move() is not needed here.

&gt;&gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:642
&gt;&gt; +    dispatcher-&gt;dispatch(bind(callCallbackFunction, context, callbackFunction, securityOrigins.release()));
&gt; 
&gt; This release() idiom is really error-prone. We need to change this all around so it uses lambdas instead of bind to get rid of that.

Unfortunately lambdas aren&apos;t able to consume move-only objects in C++11, but we should be able to fix this once we adopt C++14.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004340</commentid>
    <comment_count>7</comment_count>
      <attachid>230243</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-26 06:29:38 -0700</bug_when>
    <thetext>Created attachment 230243
Patch for landing

Rechecking through EWS, landing after that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004401</commentid>
    <comment_count>8</comment_count>
      <attachid>230243</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-27 06:40:42 -0700</bug_when>
    <thetext>Comment on attachment 230243
Patch for landing

Clearing flags on attachment: 230243

Committed r167854: &lt;http://trac.webkit.org/changeset/167854&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004402</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-27 06:40:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225754</attachid>
            <date>2014-03-04 01:25:55 -0800</date>
            <delta_ts>2014-03-25 13:40:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129670-20140304012553.patch</filename>
            <type>text/plain</type>
            <size>52353</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1MDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjg2NjczZDdkMjk4YmU0
MTE5M2FkZjU1Y2EwMTRiOTg1ZTk4MWE3My4uM2I1YTI1NGRhZDA5ZWM2MWIzYjgzYTg4Y2VjMDhj
ZjkyMzE0NjdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDE0LTAzLTA0ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIGNyb3NzLXBv
cnQgV2ViS2l0MiBjb2RlIHRvIHN0ZDo6dW5pcXVlX3B0cgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSB1c2VzIG9mIE93blB0ciwgUGFzc093
blB0ciBpbiBjcm9zcy1wb3J0IFdlYktpdDIgY29kZSB3aXRoIHN0ZDo6dW5pcXVlX3B0ci4KKwor
ICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFi
YXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0
YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBEYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNR
TGl0ZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRTdXBwbGVtZW50KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZm
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1N5bmNocm9ub3VzTmV0d29ya0xvYWRlckNs
aWVudC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdl
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Nb2R1bGUuaDoK
KyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9lZmwv
TW9kdWxlRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9kdWxlOjpsb2FkKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbToKKyAgICAgICAgKiBTaGFyZWQv
QVBJVVJMLmg6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3Rv
bVByb3RvY29sTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2Jq
ZWN0TWFwLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRTZXJ2ZXI6OmRpZEFjY2VwdENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRTZXJ2ZXI6OmRpZENsb3NlV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3NvdXAvV2ViU29ja2V0U2VydmVyU291cC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmNvbm5lY3Rpb25DYWxsYmFjayk6CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmdldFNpdGVzV2l0aERhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmNsZWFyU2l0ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmRpZEdldFNpdGVz
V2l0aERhdGFGb3JBbGxQbHVnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luU2l0ZURh
dGFNYW5hZ2VyOjpkaWRDbGVhclNpdGVEYXRhRm9yQWxsUGx1Z2lucyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpjYWxs
Q2FsbGJhY2tGdW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRP
cmlnaW5zSW50ZXJuYWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjphcmVCZWluZ1By
b2Nlc3NlZCk6CisgICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6
OmNyZWF0ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJl
Y29yZHM6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29y
ZHM6Om5leHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZU1vdXNlRXZl
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1l
bnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
QnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90
ZWN0b3I6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b3h5OjpkaWRDcmVhdGVQbHVnaW5JbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b3h5OjpkaWRGYWlsVG9DcmVhdGVQbHVnaW5JbnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpjcmVhdGVXZWJFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmhhbmRsZUV2ZW50KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0Y2hl
cjo6RXZlbnREaXNwYXRjaGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnRE
aXNwYXRjaGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6YmVnaW5QcmludGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6YWRkU3VwcGxlbWVudCk6CisKIDIwMTQtMDMtMDMgIEJlbmphbWluIFBv
dWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bV0syXSBXZWJQYWdl
Ojp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzIGNhbiBzZXQgdGhlIHBvc2l0aW9uIGRpcmVjdGx5
IGluc3RlYWQgb2YgdXNpbmcgcHJvZ3JhbW1hdGljIHNjcm9sbGluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0
YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9j
ZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUu
Y3BwCmluZGV4IGNmMzgwYmEzNjY4OGZjNDkzOWU3NDg1ZDNkYzhhN2ZiMDNmYzJlZjAuLmIyYTk5
MjQ1YzE5MGRmMTEyYTJlZmFiMzQ4YmZkY2JlYWY5NTk2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNl
QmFja2luZ1N0b3JlU1FMaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5j
cHAKQEAgLTYzMSw3ICs2MzEsNyBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3Jl
U1FMaXRlOjpjcmVhdGVJbmRleChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFucwogCiAgICAgbV9j
dXJzb3JzLnNldChjdXJzb3ItPmlkZW50aWZpZXIoKSwgY3Vyc29yKTsKIAotICAgIE93blB0cjxB
UElFbnRyeVNoaW0+IHNoaW07CisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSUVudHJ5U2hpbT4gc2hp
bTsKICAgICB3aGlsZSAoIWN1cnNvci0+Y3VycmVudEtleSgpLmlzTnVsbCkgewogICAgICAgICBj
b25zdCBJREJLZXlEYXRhJiBrZXkgPSBjdXJzb3ItPmN1cnJlbnRLZXkoKTsKICAgICAgICAgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiB2YWx1ZUJ1ZmZlciA9IGN1cnNvci0+Y3VycmVudFZhbHVlQnVm
ZmVyKCk7CkBAIC02MzksMTIgKzYzOSwxMiBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2lu
Z1N0b3JlU1FMaXRlOjpjcmVhdGVJbmRleChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFucwogICAg
ICAgICBpZiAoIW1fZ2xvYmFsT2JqZWN0KSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fdm0pOwog
ICAgICAgICAgICAgbV92bSA9IFZNOjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHNoaW0gPSBhZG9w
dFB0cihuZXcgQVBJRW50cnlTaGltKG1fdm0uZ2V0KCkpKTsKKyAgICAgICAgICAgIHNoaW0gPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSUVudHJ5U2hpbT4obV92bS5nZXQoKSk7CiAgICAgICAgICAgICBt
X2dsb2JhbE9iamVjdC5zZXQoKm1fdm0sIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUoKm1fdm0sIEpT
R2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIGpzTnVsbCgpKSkpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKCFzaGltKQotICAgICAgICAgICAgc2hpbSA9IGFkb3B0UHRyKG5l
dyBBUElFbnRyeVNoaW0obV92bS5nZXQoKSkpOworICAgICAgICAgICAgc2hpbSA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJRW50cnlTaGltPihtX3ZtLmdldCgpKTsKIAogICAgICAgICBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIobV9nbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgdmFsdWVCdWZmZXIsIHRydWUpOwogICAgICAgICBWZWN0b3I8
SURCS2V5RGF0YT4gaW5kZXhLZXlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVT
UUxpdGUuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRl
L1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmgKaW5kZXggNDdiNWI4MmI2MDMy
MDViYjZkNGIwY2MzYjA3NGY5ZjU3YWI4OTM1MS4uNjMwNmViYzliNTNjMjgyNGFiZGM4OGRlMzM3
MzgwODBhYmNjOGM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9Vbmlx
dWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5j
bHVkZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIgCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VC
YWNraW5nU3RvcmUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KLSNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMWJlNmY3OWVkMTc2ZjFkYWMxOTA1Nzk0OGEzMGRk
ZTc5MDE4NDczMi4uYjg0NWFjNWJiY2ZkYWVjNDI2ZjEzYTBmNGZhNTdmMWYxYmYzODIxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lv
bklELmg+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTYzLDcgKzY0LDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAg
ewotICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBhZG9wdFB0
cjxOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ+KG5ldyBUKHRoaXMpKSk7CisgICAgICAgIG1fc3Vw
cGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VD4odGhp
cykpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqKTsKQEAgLTEzMSw3ICsxMzIsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9oYXNTZXRDYWNoZU1vZGVsOwogICAgIENhY2hlTW9kZWwgbV9j
YWNoZU1vZGVsOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIqLCBPd25QdHI8TmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IE5ldHdvcmtQcm9j
ZXNzU3VwcGxlbWVudE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNoYXIq
Pj4gTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50TWFwOwogICAgIE5ldHdvcmtQcm9jZXNzU3VwcGxl
bWVudE1hcCBtX3N1cHBsZW1lbnRzOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TeW5jaHJvbm91c05ldHdvcmtMb2FkZXJD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU3luY2hyb25vdXNOZXR3
b3JrTG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNDhjZmMwZmU4MGNjZjBmNjA5NmUwOTE0OGFh
MWMxMGI2MWE1Li4yOGY1MzJjM2JmOWVhNWFkNGI0MDZmODBhNTg1NjM3ZWM1OWJkNzMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TeW5jaHJvbm91c05ldHdvcmtM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1N5bmNo
cm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBTeW5j
aHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoTmV0d29ya1Jlc291
cmNlTG9hZGVyKiwgU2gKICAgICAvLyBJdCdzIHVuY2xlYXIgaWYgdGhlIHBvdGVudGlhbCBjb21w
bGV4aXRpZXMgb2YgdGhhdCBhcHByb2FjaCBhcmUgd29ydGggaXQuCiAgICAgCiAgICAgaWYgKCFt
X3Jlc3BvbnNlRGF0YSkKLSAgICAgICAgbV9yZXNwb25zZURhdGEgPSBhZG9wdFB0cihuZXcgVmVj
dG9yPGNoYXI+KTsKKyAgICAgICAgbV9yZXNwb25zZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZl
Y3RvcjxjaGFyPj4oKTsKIAogICAgIG1fcmVzcG9uc2VEYXRhLT5hcHBlbmQoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL1N5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmgKaW5kZXgg
OTQ3MDY3OGU5ODJhMzViZjVmZDBjMDZkODBhYjgzMDNhNDM2ZTFkOS4uNzFiODg4YWEwMmJhYzA2
M2E0NjNhMzgyM2RiNTE0MjNhODhlNGQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmgK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKQEAgLTY2LDcgKzY3LDcgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+IG1fZGVsYXllZFJlcGx5
OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIG1fZXJyb3I7Ci0gICAgT3duUHRyPFZlY3RvcjxjaGFyPj4gbV9yZXNw
b25zZURhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxjaGFyPj4gbV9yZXNwb25zZURh
dGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA0YzkzMzYxYWI0OTAyZjAxOTVhMDUyZWVlOWQzNmUy
NjMwMDEyYmNmLi5iODVjZmFmNjdkMTFhODFmZTllNDliODU2Yjg0N2RmMzFjMjA3Y2ZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCisjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0yODMsNyAr
Mjg0LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJP
bkNvbm5lY3Rpb25Xb3JrUXVldWUoU3RyaW5nUmVmZXIKIAogdm9pZCBDb25uZWN0aW9uOjpkaXNw
YXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoV29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyKiB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIsIE1lc3NhZ2VEZWNvZGVyKiBpbmNvbWluZ01l
c3NhZ2VEZWNvZGVyKQogewotICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9IGFk
b3B0UHRyKGluY29taW5nTWVzc2FnZURlY29kZXIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNz
YWdlRGVjb2Rlcj4gZGVjb2RlcihpbmNvbWluZ01lc3NhZ2VEZWNvZGVyKTsKIAogICAgIGlmICgh
ZGVjb2Rlci0+aXNTeW5jTWVzc2FnZSgpKSB7CiAgICAgICAgIHdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlci0+ZGlkUmVjZWl2ZU1lc3NhZ2UodGhpcywgKmRlY29kZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggYzA1NDY1MmZlNjUxODBkYmNjMTMyNmZiOWY2
ZmZiNTUxMjk3MzFjYi4uZmU0MTI0MzYzYjc1MGMzMWI5Y2E5NTg1YjkyYTBkNmNhMjUwOWM5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0zOCw3ICszOCw2
IEBACiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyLmgKaW5kZXggMzMxYjdjMzNhYjI2Zjhl
ZDEyMTk5NWJiZjllZGUwOGZjN2EwMGFkNi4uNTE0YWI0ZWUzNzg1YmJkMDYyZWZlNDcwN2I1ZDI2
ZjZlNDc5YjRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3Nh
Z2VSZWNlaXZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVj
ZWl2ZXIuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBNZXNzYWdlUmVjZWl2ZXJfaAogCiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5h
bWVzcGFjZSBJUEMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Nb2R1
bGUuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL01vZHVsZS5oCmluZGV4IGZlNjBmOTg0NmQz
NGI3ZDhhOTFkOWQyNTkyNjRhOTE1Mzk1NjM0MDIuLjQwMTQwNDM5ZWJmYTg5YzliMmE5NDFkNTcy
YWRlNjFkMmYwNjJlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL01vZHVs
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL01vZHVsZS5oCkBAIC0zOSw2ICszOSw3
IEBAIHR5cGVkZWYgc3RydWN0IF9HTW9kdWxlIEdNb2R1bGU7CiAKICNpZiBQTEFURk9STShFRkwp
CiAjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICNlbGlmIFBMQVRGT1JNKEdU
SykKICAgICBHTW9kdWxlKiBtX2hhbmRsZTsKICNlbGlmIFBMQVRGT1JNKEVGTCkKLSAgICBPd25Q
dHI8RWluYV9Nb2R1bGU+IG1fbW9kdWxlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFaW5hX01vZHVs
ZT4gbV9tb2R1bGU7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgK
aW5kZXggZTMyMmY1OWYxZmFiNWE2MGNkM2MxOGVhY2FkZGY2OWEyN2ZkMjQzMy4uYjEzZWQxOGVm
OWQ0Y2NhOGYzM2EwZWU3NDkzMzYzMDA5Zjc3NTQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29y
a1F1ZXVlLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Nb2R1bGVFZmwuY3BwIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vZWZsL01vZHVsZUVmbC5jcHAKaW5kZXggZjQwYjEzYjEwNjZlYmI4N2E5
YzVjZDdhMWZiNGNhMDEwMDg4YjkxYS4uNjdkY2Y2MTZjZWYyNzEzYmJjMWFmNzFlYTg2ZGIxZmQ4
NDczZDcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL01vZHVsZUVm
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL01vZHVsZUVmbC5jcHAKQEAg
LTIwLDE1ICsyMCwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1vZHVsZS5o
IgogCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Ym9vbCBNb2R1bGU6OmxvYWQoKQogewotICAgIG1fbW9kdWxlID0gYWRvcHRQdHIoZWluYV9tb2R1
bGVfbmV3KG1fcGF0aC51dGY4KCkuZGF0YSgpKSk7CisgICAgbV9tb2R1bGUgPSBzdGQ6OnVuaXF1
ZV9wdHI8RWluYV9Nb2R1bGU+KGVpbmFfbW9kdWxlX25ldyhtX3BhdGgudXRmOCgpLmRhdGEoKSkp
OwogICAgIGlmICghbV9tb2R1bGUgfHwgIWVpbmFfbW9kdWxlX2xvYWQobV9tb2R1bGUuZ2V0KCkp
KSB7CiAgICAgICAgIG1fbW9kdWxlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRl
eHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5t
bQppbmRleCBkZTcwZTNmNDllYTQ1MGNhZDJiYWNjNzE5YjRjYzZmZGFlOGRkNjI0Li4xM2Y3NDA5
ZGQwYzQxMWQ3Y2ViYTU0MzZkNDY1NjljNzZhM2I4ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQpAQCAtMjYsNyArMjYsNiBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAK
LSNpbXBvcnQgPHd0Zi9Pd25QdHIuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5o
PgogCiAjaWYgX19oYXNfaW5jbHVkZSg8UXVhcnR6Q29yZS9RdWFydHpDb3JlUHJpdmF0ZS5oPikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElVUkwuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElVUkwuaAppbmRleCBjZDY5YjY1NDkxZjAyN2YyODZkNTA4NGZhYTNjY2Zj
ZmEzN2E3ZjVlLi5iOWUwNTgyYzc0YmQ1MTQ2OGRjMzdhM2ExNmMzNjcxNDE1NDY3OWM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJVVJMLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSVVSTC5oCkBAIC0yOSw4ICsyOSw2IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5k
ZXggYTFmN2JmNzJjZDM3ZmU2MTMwZGMzZDBkOWIzOGMxODY4MzM1ZTlkYi4uZjRiOTY0NmI2Mjlh
ZjQ0YWI3MDQyN2FhYjNkYjE4ZmMwYzAxZTEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Q
cm90b2NvbE1hbmFnZXIuaApAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJv
dG9jb2w7CisjZWxzZQorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlckltcGwuaCIKICNl
bmRpZgogCiAKQEAgLTU1LDcgKzU3LDYgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBDaGlsZFByb2Nlc3M7Ci1jbGFzcyBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJJbXBsOwogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwog
CiBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1l
bnQsIHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6OkNvbm5lY3Rp
b246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKaW5kZXggODEzOGMyZmY3YjBkMTRl
NjUzMmVhYjkwMmM4YjI4M2QxZTA1YTM1MS4uZDI0Mjk2M2JlYmU4NWQyZjE0YjIzNGI5ZTBiZTk0
ZjljYjQxNDA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBS
ZW1vdGVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05Q
UmVtb3RlT2JqZWN0TWFwLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIk5QT2JqZWN0
UHJveHkuaCIKICNpbmNsdWRlICJOUFJ1bnRpbWVVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJOUFZh
cmlhbnREYXRhLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IDQ3MTYxZjAy
ODEzZjUyNTE1NzU5NzRiYjA3N2FlNDgxOGY4MTY5NzcuLjNlYmJkNjc1NTlhOGI5NWEzYTk5ZWI4
NTRkZWQwNzcxNzc1ZDIyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFy
ZWFibGVCaXRtYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFw
LmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHlJbXBsLmgKaW5kZXggZTRkZTRmMzIyZWFmZDU1ZDMzNWI1ODE0ZmVhODk0YzFj
MjgxNzcyZS4uMWRhYTA1OTU1MzI4ZTAwZGM5ZWVlMTc4MjFjNzE1Y2UzMTI0MGM3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKQEAgLTI5
LDcgKzI5LDYgQEAKICNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJEcmF3aW5n
QXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVy
L1dlYlNvY2tldFNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9y
U2VydmVyL1dlYlNvY2tldFNlcnZlci5jcHAKaW5kZXggYTc4ODM1ZDM4YjNmOGM5ZDkxZmY4NTFh
NWU2YTYxZTBmY2QwNzBkYS4uZmZiYzg4ZThlYmFlM2IyMDgyNzY0MzFhYWNjZTRiODg5NjA0M2U1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9X
ZWJTb2NrZXRTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0
b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmNwcApAQCAtMzIsNyArMzIsNiBAQAogCiAjaW5jbHVk
ZSAiV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0
U3RyZWFtSGFuZGxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTc4LDIwICs3NywyMCBAQCB2b2lkIFdlYlNvY2tldFNlcnZl
cjo6Y2xvc2UoKQogICAgIG1fYmluZEFkZHJlc3MgPSBTdHJpbmcoKTsKIH0KIAotdm9pZCBXZWJT
b2NrZXRTZXJ2ZXI6OmRpZEFjY2VwdENvbm5lY3Rpb24oUGFzc093blB0cjxXZWJTb2NrZXRTZXJ2
ZXJDb25uZWN0aW9uPiBjb25uZWN0aW9uKQordm9pZCBXZWJTb2NrZXRTZXJ2ZXI6OmRpZEFjY2Vw
dENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24+IGNv
bm5lY3Rpb24pCiB7Ci0gICAgbV9jb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbik7CisgICAg
bV9jb25uZWN0aW9ucy5hcHBlbmQoc3RkOjptb3ZlKGNvbm5lY3Rpb24pKTsKIH0KIAogdm9pZCBX
ZWJTb2NrZXRTZXJ2ZXI6OmRpZENsb3NlV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbihXZWJTb2Nr
ZXRTZXJ2ZXJDb25uZWN0aW9uKiBjb25uZWN0aW9uKQogewotICAgIERlcXVlPE93blB0cjxXZWJT
b2NrZXRTZXJ2ZXJDb25uZWN0aW9uPiA+OjppdGVyYXRvciBlbmQgPSBtX2Nvbm5lY3Rpb25zLmVu
ZCgpOwotICAgIGZvciAoRGVxdWU8T3duUHRyPFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24+ID46
Oml0ZXJhdG9yIGl0ID0gbV9jb25uZWN0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICBmb3IgKGF1dG8gaXQgPSBtX2Nvbm5lY3Rpb25zLmJlZ2luKCksIGVuZCA9IG1fY29ubmVj
dGlvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoaXQtPmdldCgpID09
IGNvbm5lY3Rpb24pIHsKICAgICAgICAgICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlKGl0KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KKwogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVj
dG9yU2VydmVyL1dlYlNvY2tldFNlcnZlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuaAppbmRleCBhMzMxZGRhM2Y2NWYyYTg4NWYx
NDA3NWIzNDMyM2UyMDBlYmM4MjY1Li42ZDViMzg4NGEyZTU1Nzg1ZDhjY2EwMzE0OGU1ZmQ4MGVm
YTkwZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2Vy
dmVyL1dlYlNvY2tldFNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmgKQEAgLTI5LDggKzI5LDggQEAKIAogI2lmIEVO
QUJMRShJTlNQRUNUT1JfU0VSVkVSKQogCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogI2lmIFVTRShTT1VQKQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbG9zZSgpOwogCiAgICAgV2ViU29ja2V0U2VydmVyQ2xpZW50KiBjbGllbnQoKSBj
b25zdCB7IHJldHVybiBtX2NsaWVudDsgfQotICAgIHZvaWQgZGlkQWNjZXB0Q29ubmVjdGlvbihQ
YXNzT3duUHRyPFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24+KTsKKyAgICB2b2lkIGRpZEFjY2Vw
dENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24+KTsK
IAogcHJpdmF0ZToKICAgICB2b2lkIGRpZENsb3NlV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbihX
ZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKik7CkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwbGF0Zm9ybUNsb3NlKCk7CiAKICAgICBTZXJ2ZXJTdGF0ZSBtX3N0YXRlOwotICAg
IERlcXVlPE93blB0cjxXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uPiA+IG1fY29ubmVjdGlvbnM7
CisgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24+PiBt
X2Nvbm5lY3Rpb25zOwogICAgIFdlYlNvY2tldFNlcnZlckNsaWVudCogbV9jbGllbnQ7CiAgICAg
U3RyaW5nIG1fYmluZEFkZHJlc3M7CiAgICAgdW5zaWduZWQgc2hvcnQgbV9wb3J0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9zb3VwL1dlYlNv
Y2tldFNlcnZlclNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9zb3VwL1dlYlNvY2tldFNlcnZlclNvdXAuY3BwCmluZGV4IGYzYWQxM2FjMmE5YTRjMGUw
M2ZhMWE1MjcwNTVlZTQzNjU1ZTAzN2UuLjM4ZTdkYjVjYmY3YTVjYzE1NDRlODVkY2FjMzRkMzg4
M2ViMzQ5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JT
ZXJ2ZXIvc291cC9XZWJTb2NrZXRTZXJ2ZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3NvdXAvV2ViU29ja2V0U2VydmVyU291cC5jcHAKQEAg
LTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUhhbmRsZS5oPgog
I2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC00Nyw5ICs0Niw5IEBAIHN0YXRpYyBnYm9vbGVh
biBjb25uZWN0aW9uQ2FsbGJhY2soR1NvY2tldFNlcnZpY2UqIC8qc2VydmljZSovLCBHU29ja2V0
Q29ubmVjdGlvCiAgICAgTE9HKEluc3BlY3RvclNlcnZlciwgIk5ldyBDb25uZWN0aW9uIGZyb20g
JXM6JWQuIiwgYWRkcmVzc1N0cmluZy5nZXQoKSwgZ19pbmV0X3NvY2tldF9hZGRyZXNzX2dldF9w
b3J0KEdfSU5FVF9TT0NLRVRfQUREUkVTUyhzb2NrZXRBZGRyZXNzLmdldCgpKSkpOwogI2VuZGlm
CiAKLSAgICBPd25QdHI8V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbj4gd2ViU29ja2V0Q29ubmVj
dGlvbiA9IGFkb3B0UHRyKG5ldyBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKHNlcnZlci0+Y2xp
ZW50KCksIHNlcnZlcikpOworICAgIGF1dG8gd2ViU29ja2V0Q29ubmVjdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbj4oc2VydmVyLT5jbGllbnQoKSwgc2Vy
dmVyKTsKICAgICB3ZWJTb2NrZXRDb25uZWN0aW9uLT5zZXRTb2NrZXRIYW5kbGUoU29ja2V0U3Ry
ZWFtSGFuZGxlOjpjcmVhdGUoY29ubmVjdGlvbiwgd2ViU29ja2V0Q29ubmVjdGlvbi5nZXQoKSkp
OwotICAgIHNlcnZlci0+ZGlkQWNjZXB0Q29ubmVjdGlvbih3ZWJTb2NrZXRDb25uZWN0aW9uLnJl
bGVhc2UoKSk7CisgICAgc2VydmVyLT5kaWRBY2NlcHRDb25uZWN0aW9uKHN0ZDo6bW92ZSh3ZWJT
b2NrZXRDb25uZWN0aW9uKSk7CiAKICAgICByZXR1cm4gVFJVRTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
aW5kZXggMDY3ZTMwZWYzM2MyZmFjYjlmOWJmYTNjM2IzMmNmOTFlNWUzYTBmZi4uNmE5ODNmOTBi
MTdhOTIyNjk0MWYxY2VlMjViNTM5MTQ2NTQyZTlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTk4
LDcgKzk4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHIKIERvd25sb2FkUHJveHkqIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkoKQogewogICAgIGlmICghbV9kb3du
bG9hZFByb3h5TWFwKQotICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAgPSBhZG9wdFB0cihuZXcg
RG93bmxvYWRQcm94eU1hcCh0aGlzKSk7CisgICAgICAgIG1fZG93bmxvYWRQcm94eU1hcCA9IHN0
ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRQcm94eU1hcD4odGhpcyk7CiAKICAgICByZXR1cm4gbV9k
b3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fd2ViQ29udGV4dCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKaW5kZXggNWM1YzU1ZGEzOWMwOWE0MDJjYzBiOTBlZWJmZmU5NGMxMTY1NTI3OC4u
MmRjZDg0NTgwZDhjZTYwYzVmMTA2M2E3NTE4YjY4YWM1OTI5YWMxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVk
ZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMu
aCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKICNpZiBFTkFC
TEUoQ1VTVE9NX1BST1RPQ09MUykKQEAgLTkxLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICB1bnNp
Z25lZCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7CiAgICAgRGVxdWU8UmVmUHRyPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CiAKLSAgICBPd25QdHI8RG93
bmxvYWRQcm94eU1hcD4gbV9kb3dubG9hZFByb3h5TWFwOworICAgIHN0ZDo6dW5pcXVlX3B0cjxE
b3dubG9hZFByb3h5TWFwPiBtX2Rvd25sb2FkUHJveHlNYXA7CiAKICNpZiBFTkFCTEUoQ1VTVE9N
X1BST1RPQ09MUykKICAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSBtX2N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApp
bmRleCA1OTFkZjViMWRhNjMyODY3MDYzZjczOTc5MTcyNGU3NWNhMDAyMzI5Li5hODM1YjM3NTM5
MWIzMzg2Y2EyYjlkNjg4M2Q3ZjI4ZTU0NjRiYzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIldlYk5vdGlmaWNh
dGlvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25DbGllbnQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2lu
U2l0ZURhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1dl
YlBsdWdpblNpdGVEYXRhTWFuYWdlci5jcHAKaW5kZXggYWNmYTgwMjQxZjgwZDM0M2UzZThjM2Ri
ODNkMjg4OTY0MDJkYTc2NC4uYjhlNjgxYmEzM2JlOTMwYWExY2Q0ZGVkMjJlN2E2ZTQ4MzVkZmI3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2lu
U2l0ZURhdGFNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBX
ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmdldFNpdGVzV2l0aERhdGEoUGFzc1JlZlB0cjxBcnJh
eUNhbGxiYWNrPiBwcnBDYWwKICAgICBBU1NFUlQoIW1fcGVuZGluZ0dldFNpdGVzV2l0aERhdGEu
Y29udGFpbnMoY2FsbGJhY2tJRCkpOwogCiAgICAgR2V0U2l0ZXNXaXRoRGF0YVN0YXRlKiBzdGF0
ZSA9IG5ldyBHZXRTaXRlc1dpdGhEYXRhU3RhdGUodGhpcywgY2FsbGJhY2tJRCk7Ci0gICAgbV9w
ZW5kaW5nR2V0U2l0ZXNXaXRoRGF0YS5zZXQoY2FsbGJhY2tJRCwgYWRvcHRQdHIoc3RhdGUpKTsK
KyAgICBtX3BlbmRpbmdHZXRTaXRlc1dpdGhEYXRhLnNldChjYWxsYmFja0lELCBzdGQ6OnVuaXF1
ZV9wdHI8R2V0U2l0ZXNXaXRoRGF0YVN0YXRlPihzdGF0ZSkpOwogICAgIHN0YXRlLT5nZXRTaXRl
c1dpdGhEYXRhRm9yTmV4dFBsdWdpbigpOwogfQogCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBX
ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmNsZWFyU2l0ZURhdGEoQVBJOjpBcnJheSogc2l0ZXMs
IHVpbnQ2NF90IGZsYWdzLAogICAgIEFTU0VSVCghbV9wZW5kaW5nQ2xlYXJTaXRlRGF0YS5jb250
YWlucyhjYWxsYmFja0lEKSk7CiAKICAgICBDbGVhclNpdGVEYXRhU3RhdGUqIHN0YXRlID0gbmV3
IENsZWFyU2l0ZURhdGFTdGF0ZSh0aGlzLCBzaXRlc1ZlY3RvciwgZmxhZ3MsIG1heEFnZUluU2Vj
b25kcywgY2FsbGJhY2tJRCk7Ci0gICAgbV9wZW5kaW5nQ2xlYXJTaXRlRGF0YS5zZXQoY2FsbGJh
Y2tJRCwgYWRvcHRQdHIoc3RhdGUpKTsKKyAgICBtX3BlbmRpbmdDbGVhclNpdGVEYXRhLnNldChj
YWxsYmFja0lELCBzdGQ6OnVuaXF1ZV9wdHI8Q2xlYXJTaXRlRGF0YVN0YXRlPihzdGF0ZSkpOwog
ICAgIHN0YXRlLT5jbGVhclNpdGVEYXRhRm9yTmV4dFBsdWdpbigpOwogfQogCkBAIC0yMjIsNyAr
MjIyLDcgQEAgdm9pZCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmRpZEdldFNpdGVzV2l0aERh
dGFGb3JTaW5nbGVQbHVnaW4oY29uc3QgVmVjdG9yPFMKIAogdm9pZCBXZWJQbHVnaW5TaXRlRGF0
YU1hbmFnZXI6OmRpZEdldFNpdGVzV2l0aERhdGFGb3JBbGxQbHVnaW5zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBPd25QdHI8R2V0U2l0
ZXNXaXRoRGF0YVN0YXRlPiBzdGF0ZSA9IG1fcGVuZGluZ0dldFNpdGVzV2l0aERhdGEudGFrZShj
YWxsYmFja0lEKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0U2l0ZXNXaXRoRGF0YVN0YXRlPiBz
dGF0ZSA9IG1fcGVuZGluZ0dldFNpdGVzV2l0aERhdGEudGFrZShjYWxsYmFja0lEKTsKICAgICBB
U1NFUlQoc3RhdGUpOwogCiAgICAgZGlkR2V0U2l0ZXNXaXRoRGF0YShzaXRlcywgY2FsbGJhY2tJ
RCk7CkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmRp
ZENsZWFyU2l0ZURhdGFGb3JTaW5nbGVQbHVnaW4odWludDY0X3QgY2FsbGJhY2sKIAogdm9pZCBX
ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmRpZENsZWFyU2l0ZURhdGFGb3JBbGxQbHVnaW5zKHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgT3duUHRyPENsZWFyU2l0ZURhdGFTdGF0ZT4gc3Rh
dGUgPSBtX3BlbmRpbmdDbGVhclNpdGVEYXRhLnRha2UoY2FsbGJhY2tJRCk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPENsZWFyU2l0ZURhdGFTdGF0ZT4gc3RhdGUgPSBtX3BlbmRpbmdDbGVhclNpdGVE
YXRhLnRha2UoY2FsbGJhY2tJRCk7CiAgICAgQVNTRVJUKHN0YXRlKTsKIAogICAgIGRpZENsZWFy
U2l0ZURhdGEoY2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5oCmluZGV4IDJmYjBhYjYy
NThiODk1MmEyMDQ1ZmFkZDkwMzk0Mzk5NDBkMzljYTcuLmU2YWFmYWY3ZGNiMTE5OGZjZjBiNTUw
MDFkOTZmMDBjOGE2ZGM2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1dlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCiAjaW5j
bHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtNjksMTAgKzcw
LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDbGVhclNpdGVEYXRhRm9yQWxsUGx1Z2lucyh1
aW50NjRfdCBjYWxsYmFja0lEKTsKIAogICAgIGNsYXNzIEdldFNpdGVzV2l0aERhdGFTdGF0ZTsK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBPd25QdHI8R2V0U2l0ZXNXaXRoRGF0YVN0YXRlPj4gbV9w
ZW5kaW5nR2V0U2l0ZXNXaXRoRGF0YTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1
ZV9wdHI8R2V0U2l0ZXNXaXRoRGF0YVN0YXRlPj4gbV9wZW5kaW5nR2V0U2l0ZXNXaXRoRGF0YTsK
IAogICAgIGNsYXNzIENsZWFyU2l0ZURhdGFTdGF0ZTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBP
d25QdHI8Q2xlYXJTaXRlRGF0YVN0YXRlPj4gbV9wZW5kaW5nQ2xlYXJTaXRlRGF0YTsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8Q2xlYXJTaXRlRGF0YVN0YXRlPj4gbV9w
ZW5kaW5nQ2xlYXJTaXRlRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmlu
ZGV4IDI4ZWNkZDRiOWQ4M2Q2YjU4MGUzZmMwOTY3NjUxODAyODQ5NzNhODIuLmUwYjlkYzg4MTU5
MjMxZmZhMjVhOTllMzViNTI1ODE2OTY3YjExOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU3RvcmFnZU1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CisjaW5j
bHVkZSA8bWVtb3J5PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNjMxLDE0ICs2
MzIsMTQgQEAgU3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFnZU5hbWVzcGFjZSogU3RvcmFnZU1h
bmFnZXI6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmEKIAogc3RhdGljIHZvaWQgY2FsbENhbGxi
YWNrRnVuY3Rpb24odm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrRnVuY3Rpb24pKGNvbnN0
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYgc2VjdXJpdHlPcmlnaW5z
LCB2b2lkKiBjb250ZXh0KSwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+
KiBzZWN1cml0eU9yaWdpbnNQdHIpCiB7Ci0gICAgT3duUHRyPFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+Pj4gc2VjdXJpdHlPcmlnaW5zID0gYWRvcHRQdHIoc2VjdXJpdHlP
cmlnaW5zUHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4+PiBzZWN1cml0eU9yaWdpbnMoc2VjdXJpdHlPcmlnaW5zUHRyKTsKICAg
ICBjYWxsYmFja0Z1bmN0aW9uKCpzZWN1cml0eU9yaWdpbnMsIGNvbnRleHQpOwogfQogCiB2b2lk
IFN0b3JhZ2VNYW5hZ2VyOjpnZXRPcmlnaW5zSW50ZXJuYWwoRnVuY3Rpb25EaXNwYXRjaGVyKiBk
aXNwYXRjaGVyLCB2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2tGdW5jdGlvbikoY29uc3Qg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+JiBzZWN1cml0eU9yaWdpbnMs
IHZvaWQqIGNvbnRleHQpKQogewotICAgIE93blB0cjxWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luPj4+IHNlY3VyaXR5T3JpZ2lucyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4obV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXItPm9yaWdpbnMoKSkpOwotICAgIGRpc3BhdGNoZXItPmRpc3BhdGNoKGJpbmQoY2FsbENhbGxi
YWNrRnVuY3Rpb24sIGNvbnRleHQsIGNhbGxiYWNrRnVuY3Rpb24sIHNlY3VyaXR5T3JpZ2lucy5s
ZWFrUHRyKCkpKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2lucyA9IHN0ZDo6bWFrZV91bmlxdWU8
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+PihtX2xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci0+b3JpZ2lucygpKTsKKyAgICBkaXNwYXRjaGVyLT5kaXNwYXRjaChiaW5k
KGNhbGxDYWxsYmFja0Z1bmN0aW9uLCBjb250ZXh0LCBjYWxsYmFja0Z1bmN0aW9uLCBzZWN1cml0
eU9yaWdpbnMucmVsZWFzZSgpKSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldFN0b3Jh
Z2VEZXRhaWxzQnlPcmlnaW5JbnRlcm5hbChGdW5jdGlvbkRpc3BhdGNoZXIqIGRpc3BhdGNoZXIs
IHZvaWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFja0Z1bmN0aW9uKShjb25zdCBWZWN0b3I8TG9j
YWxTdG9yYWdlRGV0YWlscz4mIHN0b3JhZ2VEZXRhaWxzLCB2b2lkKiBjb250ZXh0KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYWU0NGJiNTE2ODcxMzgx
N2Q5YTI2MGU1YTM2MjI0YjhiOGNhOWYwOS4uY2E4ZDBhOGVkY2E3OTZiMDkyY2UwZTY3OWVlMGY4
YTliZGM3MjkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTE3MCwyMSArMTcwLDIxIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBFeGNlZWRlZERhdGFi
YXNlUXVvdGFSZWNvcmRzJiBzaGFyZWQoKTsKIAotICAgIFBhc3NPd25QdHI8UmVjb3JkPiBjcmVh
dGVSZWNvcmQodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsCisgICAg
c3RkOjp1bmlxdWVfcHRyPFJlY29yZD4gY3JlYXRlUmVjb3JkKHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBvcmlnaW5JZGVudGlmaWVyLAogICAgICAgICBTdHJpbmcgZGF0YWJhc2VOYW1lLCBTdHJp
bmcgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwKICAgICAgICAgdWludDY0X3Qg
Y3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0
X3QgZXhwZWN0ZWRVc2FnZSwgCiAgICAgICAgIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+KTsKIAotICAgIHZvaWQg
YWRkKFBhc3NPd25QdHI8UmVjb3JkPik7Ci0gICAgYm9vbCBhcmVCZWluZ1Byb2Nlc3NlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY3VycmVudFJlY29yZDsgfQorICAgIHZvaWQgYWRkKHN0ZDo6dW5pcXVl
X3B0cjxSZWNvcmQ+KTsKKyAgICBib29sIGFyZUJlaW5nUHJvY2Vzc2VkKCkgY29uc3QgeyByZXR1
cm4gISFtX2N1cnJlbnRSZWNvcmQ7IH0KICAgICBSZWNvcmQqIG5leHQoKTsKIAogcHJpdmF0ZToK
ICAgICBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzKCkgeyB9CiAgICAgfkV4Y2VlZGVkRGF0
YWJhc2VRdW90YVJlY29yZHMoKSB7IH0KIAotICAgIERlcXVlPE93blB0cjxSZWNvcmQ+PiBtX3Jl
Y29yZHM7Ci0gICAgT3duUHRyPFJlY29yZD4gbV9jdXJyZW50UmVjb3JkOworICAgIERlcXVlPHN0
ZDo6dW5pcXVlX3B0cjxSZWNvcmQ+PiBtX3JlY29yZHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJl
Y29yZD4gbV9jdXJyZW50UmVjb3JkOwogfTsKIAogRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jk
cyYgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6c2hhcmVkKCkKQEAgLTE5MywxMiArMTkz
LDEyIEBAIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHMmIEV4Y2VlZGVkRGF0YWJhc2VRdW90
YVJlY29yZHM6OnNoYXJlZCgpCiAgICAgcmV0dXJuIHJlY29yZHM7CiB9CiAKLVBhc3NPd25QdHI8
RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBFeGNlZWRlZERhdGFiYXNlUXVv
dGFSZWNvcmRzOjpjcmVhdGVSZWNvcmQoCitzdGQ6OnVuaXF1ZV9wdHI8RXhjZWVkZWREYXRhYmFz
ZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpjcmVh
dGVSZWNvcmQoCiAgICAgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIs
IFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0cmluZyBkaXNwbGF5TmFtZSwKICAgICB1aW50NjRfdCBj
dXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVu
dERhdGFiYXNlVXNhZ2UsCiAgICAgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUGFzc1JlZlB0cjxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBs
eT4gcmVwbHkpCiB7Ci0gICAgT3duUHRyPFJlY29yZD4gcmVjb3JkID0gYWRvcHRQdHIobmV3IFJl
Y29yZCk7CisgICAgYXV0byByZWNvcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlY29yZD4oKTsKICAg
ICByZWNvcmQtPmZyYW1lSUQgPSBmcmFtZUlEOwogICAgIHJlY29yZC0+b3JpZ2luSWRlbnRpZmll
ciA9IG9yaWdpbklkZW50aWZpZXI7CiAgICAgcmVjb3JkLT5kYXRhYmFzZU5hbWUgPSBkYXRhYmFz
ZU5hbWU7CkBAIC0yMDgsMTcgKzIwOCwxNyBAQCBQYXNzT3duUHRyPEV4Y2VlZGVkRGF0YWJhc2VR
dW90YVJlY29yZHM6OlJlY29yZD4gRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6YwogICAg
IHJlY29yZC0+Y3VycmVudERhdGFiYXNlVXNhZ2UgPSBjdXJyZW50RGF0YWJhc2VVc2FnZTsKICAg
ICByZWNvcmQtPmV4cGVjdGVkVXNhZ2UgPSBleHBlY3RlZFVzYWdlOwogICAgIHJlY29yZC0+cmVw
bHkgPSByZXBseTsKLSAgICByZXR1cm4gcmVjb3JkLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc3Rk
Ojptb3ZlKHJlY29yZCk7CiB9CiAKLXZvaWQgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6
YWRkKFBhc3NPd25QdHI8RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiByZWNv
cmQpCit2b2lkIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmFkZChzdGQ6OnVuaXF1ZV9w
dHI8RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiByZWNvcmQpCiB7Ci0gICAg
bV9yZWNvcmRzLmFwcGVuZChyZWNvcmQpOworICAgIG1fcmVjb3Jkcy5hcHBlbmQoc3RkOjptb3Zl
KHJlY29yZCkpOwogfQogCiBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQqIEV4
Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6Om5leHQoKQogewotICAgIG1fY3VycmVudFJlY29y
ZC5jbGVhcigpOworICAgIG1fY3VycmVudFJlY29yZCA9IG51bGxwdHI7CiAgICAgaWYgKCFtX3Jl
Y29yZHMuaXNFbXB0eSgpKQogICAgICAgICBtX2N1cnJlbnRSZWNvcmQgPSBtX3JlY29yZHMudGFr
ZUZpcnN0KCk7CiAgICAgcmV0dXJuIG1fY3VycmVudFJlY29yZC5nZXQoKTsKQEAgLTExODEsNyAr
MTE4MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IE5hdGl2
ZVdlYk1vdXNlRXZlbnQmIGV2ZW50KQogICAgICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNz
VGltZXIoKS0+c3RhcnQoKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKG1fcHJvY2Vzc2luZ01v
dXNlTW92ZUV2ZW50KSB7Ci0gICAgICAgICAgICBtX25leHRNb3VzZU1vdmVFdmVudCA9IGFkb3B0
UHRyKG5ldyBOYXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50KSk7CisgICAgICAgICAgICBtX25leHRN
b3VzZU1vdmVFdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0aXZlV2ViTW91c2VFdmVudD4oZXZl
bnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExOTMsNyArMTE5Myw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdlYk1v
dXNlRXZlbnQmIGV2ZW50KQogICAgIC8vIHdlIGZha2UgYSBtb3VzZSB1cCBldmVudCBieSB1c2lu
ZyB0aGlzIHN0b3JlZCBkb3duIGV2ZW50LiBUaGlzIGV2ZW50IGdldHMgY2xlYXJlZAogICAgIC8v
IHdoZW4gdGhlIG1vdXNlIHVwIG1lc3NhZ2UgaXMgcmVjZWl2ZWQgZnJvbSBXZWJQcm9jZXNzLgog
ICAgIGlmIChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93bikKLSAgICAgICAgbV9j
dXJyZW50bHlQcm9jZXNzZWRNb3VzZURvd25FdmVudCA9IGFkb3B0UHRyKG5ldyBOYXRpdmVXZWJN
b3VzZUV2ZW50KGV2ZW50KSk7CisgICAgICAgIG1fY3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3du
RXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdGl2ZVdlYk1vdXNlRXZlbnQ+KGV2ZW50KTsKIAog
ICAgIGlmIChtX3Nob3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5KSB7CiAgICAgICAgIGJvb2wg
aGFuZGxlZCA9IGZhbHNlOwpAQCAtMTI4OSwxNyArMTI4OSwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE93blB0cjxWZWN0b3I8TmF0aXZlV2ViV2hlZWxF
dmVudD4+IGNvYWxlc2NlZFdoZWVsRXZlbnQgPSBhZG9wdFB0cihuZXcgVmVjdG9yPE5hdGl2ZVdl
YldoZWVsRXZlbnQ+KTsKKyAgICBhdXRvIGNvYWxlc2NlZFdoZWVsRXZlbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKICAgICBjb2FsZXNjZWRXaGVl
bEV2ZW50LT5hcHBlbmQoZXZlbnQpOwotICAgIG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVu
dHMuYXBwZW5kKGNvYWxlc2NlZFdoZWVsRXZlbnQucmVsZWFzZSgpKTsKKyAgICBtX2N1cnJlbnRs
eVByb2Nlc3NlZFdoZWVsRXZlbnRzLmFwcGVuZChzdGQ6Om1vdmUoY29hbGVzY2VkV2hlZWxFdmVu
dCkpOwogICAgIHNlbmRXaGVlbEV2ZW50KGV2ZW50KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCgpCiB7Ci0gICAgT3duUHRyPFZlY3RvcjxOYXRp
dmVXZWJXaGVlbEV2ZW50Pj4gbmV4dENvYWxlc2NlZEV2ZW50ID0gYWRvcHRQdHIobmV3IFZlY3Rv
cjxOYXRpdmVXZWJXaGVlbEV2ZW50Pik7CisgICAgYXV0byBuZXh0Q29hbGVzY2VkRXZlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKICAgICBXZWJX
aGVlbEV2ZW50IG5leHRXaGVlbEV2ZW50ID0gY29hbGVzY2VkV2hlZWxFdmVudChtX3doZWVsRXZl
bnRRdWV1ZSwgKm5leHRDb2FsZXNjZWRFdmVudC5nZXQoKSk7Ci0gICAgbV9jdXJyZW50bHlQcm9j
ZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQobmV4dENvYWxlc2NlZEV2ZW50LnJlbGVhc2UoKSk7Cisg
ICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQoc3RkOjptb3ZlKG5leHRD
b2FsZXNjZWRFdmVudCkpOwogICAgIHNlbmRXaGVlbEV2ZW50KG5leHRXaGVlbEV2ZW50KTsKIH0K
IApAQCAtMzYwMCw3ICszNjAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVu
dCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRsZWQpCiAgICAgY2FzZSBXZWJFdmVudDo6
V2hlZWw6IHsKICAgICAgICAgQVNTRVJUKCFtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRz
LmlzRW1wdHkoKSk7CiAKLSAgICAgICAgT3duUHRyPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50
Pj4gb2xkZXN0Q29hbGVzY2VkRXZlbnQgPSBtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRz
LnRha2VGaXJzdCgpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPE5hdGl2ZVdlYldo
ZWVsRXZlbnQ+PiBvbGRlc3RDb2FsZXNjZWRFdmVudCA9IG1fY3VycmVudGx5UHJvY2Vzc2VkV2hl
ZWxFdmVudHMudGFrZUZpcnN0KCk7CiAKICAgICAgICAgLy8gRklYTUU6IERpc3BhdGNoIGFkZGl0
aW9uYWwgZXZlbnRzIHRvIHRoZSBkaWROb3RIYW5kbGVXaGVlbEV2ZW50IGNsaWVudCBmdW5jdGlv
bi4KICAgICAgICAgaWYgKCFoYW5kbGVkKSB7CkBAIC00MDUyLDEwICs0MDUyLDEwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSh1aW50
NjRfdCBmcmFtZUlELCBQYXNzCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1
b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2
NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBj
dXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUGFzc1JlZlB0cjxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBs
eT4gcmVwbHkpCiB7CiAgICAgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcyYgcmVjb3JkcyA9
IEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OnNoYXJlZCgpOwotICAgIE93blB0cjxFeGNl
ZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQ+IG5ld1JlY29yZCA9ICByZWNvcmRzLmNy
ZWF0ZVJlY29yZChmcmFtZUlELAorICAgIHN0ZDo6dW5pcXVlX3B0cjxFeGNlZWRlZERhdGFiYXNl
UXVvdGFSZWNvcmRzOjpSZWNvcmQ+IG5ld1JlY29yZCA9IHJlY29yZHMuY3JlYXRlUmVjb3JkKGZy
YW1lSUQsCiAgICAgICAgIG9yaWdpbklkZW50aWZpZXIsIGRhdGFiYXNlTmFtZSwgZGlzcGxheU5h
bWUsIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLAogICAgICAgICBjdXJyZW50RGF0
YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSwgcmVwbHkpOwotICAgIHJlY29yZHMuYWRkKG5ld1Jl
Y29yZC5yZWxlYXNlKCkpOworICAgIHJlY29yZHMuYWRkKHN0ZDo6bW92ZShuZXdSZWNvcmQpKTsK
IAogICAgIGlmIChyZWNvcmRzLmFyZUJlaW5nUHJvY2Vzc2VkKCkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiZWFjMzNlNzhiMjU3
NTliYzVhZDc0OTJhMDg4MGJjOTUxOTE5YjRmLi4zM2Q2NzdjNzUyZGY5Y2RlZTU1ZmMwOWM2NmNk
YTE5ZDU1NWZhNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC02OSwxMCArNjksOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9UZXh0R3JhbnVsYXJpdHkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdT
dGF0ZS5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTM2MCwxMSArMTM1OSwx
MSBAQCBwcml2YXRlOgogCiAgICAgRGVxdWU8TmF0aXZlV2ViS2V5Ym9hcmRFdmVudD4gbV9rZXlF
dmVudFF1ZXVlOwogICAgIERlcXVlPE5hdGl2ZVdlYldoZWVsRXZlbnQ+IG1fd2hlZWxFdmVudFF1
ZXVlOwotICAgIERlcXVlPE93blB0cjxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+PiBtX2N1
cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRzOworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+PiBtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZl
bnRzOwogCiAgICAgYm9vbCBtX3Byb2Nlc3NpbmdNb3VzZU1vdmVFdmVudDsKLSAgICBPd25QdHI8
TmF0aXZlV2ViTW91c2VFdmVudD4gbV9uZXh0TW91c2VNb3ZlRXZlbnQ7Ci0gICAgT3duUHRyPE5h
dGl2ZVdlYk1vdXNlRXZlbnQ+IG1fY3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3duRXZlbnQ7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPE5hdGl2ZVdlYk1vdXNlRXZlbnQ+IG1fbmV4dE1vdXNlTW92ZUV2
ZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXRpdmVXZWJNb3VzZUV2ZW50PiBtX2N1cnJlbnRs
eVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50OwogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAg
ICBib29sIG1faXNUcmFja2luZ1RvdWNoRXZlbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyMmY5YWMwNDhiN2M0NDJlYWMxN2JlNTM5ZDNh
NmVmMTJhY2ZmNjM3Li5mOWJjN2YyZDJkNjQzNzhjYzM0NjYxODkyNzczNGJhNDlhNmIyMGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTMz
LDcgKzUzMyw3IEBAIERvd25sb2FkUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxv
YWRQcm94eSgpCiAjZW5kaWYKIAogICAgIGlmICghbV9kb3dubG9hZFByb3h5TWFwKQotICAgICAg
ICBtX2Rvd25sb2FkUHJveHlNYXAgPSBhZG9wdFB0cihuZXcgRG93bmxvYWRQcm94eU1hcCh0aGlz
KSk7CisgICAgICAgIG1fZG93bmxvYWRQcm94eU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxv
YWRQcm94eU1hcD4odGhpcyk7CiAKICAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVh
dGVEb3dubG9hZFByb3h5KG1fY29udGV4dC5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggN2JmZjY1ZGRlMzc1YjAzMzBlODdlOTJhNTkz
NzI4MTI3MTYwYjQ4Zi4uNTAxNjUzMzg4NjE3ZDI1ZTU3ZDgyNDhkYjkyZmI5NTE3M2IyZjQ4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9MaW5rSGFzaC5oPgorI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTIwMyw3ICsyMDQsNyBAQCBwcml2
YXRlOgogICAgIFdlYkZyYW1lUHJveHlNYXAgbV9mcmFtZU1hcDsKICAgICBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtTWFwIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcDsKIAotICAgIE93blB0cjxEb3du
bG9hZFByb3h5TWFwPiBtX2Rvd25sb2FkUHJveHlNYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPERv
d25sb2FkUHJveHlNYXA+IG1fZG93bmxvYWRQcm94eU1hcDsKIAogI2lmIEVOQUJMRShDVVNUT01f
UFJPVE9DT0xTKQogICAgIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IG1fY3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRl
eCA3Mjc3MDYzNTI2YWFiOTAyYTM3MGE5ZmNjNGI0YzlmOTcyOGFmZjE2Li4yZjcwNzQzYWI3MGI1
YjJjOTYxZDYwOGNmMjgwZDE1ODMxZTQwOTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dz
ZXJGdW5jcy5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1
dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNDksMTEg
KzUwLDExIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rv
cihOZXRzY2FwZVBsdWdpbiogcGx1Z2luKQogICAgIHsKICAgICAgICAgaWYgKHBsdWdpbikKLSAg
ICAgICAgICAgIG1fcHJvdGVjdG9yID0gYWRvcHRQdHIobmV3IFBsdWdpbkNvbnRyb2xsZXI6OlBs
dWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yKHN0YXRpY19jYXN0PFBsdWdpbio+KHBsdWdpbiktPmNv
bnRyb2xsZXIoKSkpOworICAgICAgICAgICAgbV9wcm90ZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBsdWdpbkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yPihzdGF0aWNfY2Fz
dDxQbHVnaW4qPihwbHVnaW4pLT5jb250cm9sbGVyKCkpOwogICAgIH0KICAgICAKIHByaXZhdGU6
Ci0gICAgT3duUHRyPFBsdWdpbkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9y
PiBtX3Byb3RlY3RvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luQ29udHJvbGxlcjo6UGx1
Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+IG1fcHJvdGVjdG9yOwogfTsKIAogc3RhdGljIGJvb2wg
c3RhcnRzV2l0aEJsYW5rTGluZShjb25zdCBjaGFyKiBieXRlcywgdW5zaWduZWQgbGVuZ3RoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggYjE5YzEyYjZhZjgyM2Y1
ZmRlYzg0MzNiNmE1MmJhYTM5NTdlM2MyYy4uMzE0NWZiNTNlOTI2OTQwMWM3YTZkMDgzMzlmMGIw
NTZiM2FjMGJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCkBAIC0z
MCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgogI2luY2x1ZGUgPHV0
aWxpdHk+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTg3LDcgKzE4Niw3IEBAIHZvaWQg
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQogCiAgICAgaWYgKG1fdHJhbnNmZXJNb2RlICE9IE5QX0FTRklMRU9OTFkpIHsKICAg
ICAgICAgaWYgKCFtX2RlbGl2ZXJ5RGF0YSkKLSAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0g
YWRvcHRQdHIobmV3IFZlY3Rvcjx1aW50OF90Pik7CisgICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHVpbnQ4X3Q+PigpOwogCiAgICAgICAgIG1fZGVs
aXZlcnlEYXRhLT5yZXNlcnZlQ2FwYWNpdHkobV9kZWxpdmVyeURhdGEtPnNpemUoKSArIGxlbmd0
aCk7CiAgICAgICAgIG1fZGVsaXZlcnlEYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IGFkODJjN2FhMzI4ZjUzMTVmYWEyOGYx
YjZkZGEyODI3Y2RiMmNjZGQuLmNmYjFhOTY2NWNhZDYyYmE1OGU2NGRmMmU1ZDU4MzVkYWQxOGMz
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC0zMCw2ICszMCw3IEBA
CiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL25w
cnVudGltZV9pbnRlcm5hbC5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KQEAgLTEwNiw3ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIENTdHJpbmcgbV9oZWFk
ZXJzOwogCiAgICAgUnVuTG9vcDo6VGltZXI8TmV0c2NhcGVQbHVnaW5TdHJlYW0+IG1fZGVsaXZl
cnlEYXRhVGltZXI7Ci0gICAgT3duUHRyPCBWZWN0b3I8dWludDhfdD4+IG1fZGVsaXZlcnlEYXRh
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8dWludDhfdD4+IG1fZGVsaXZlcnlEYXRhOwog
ICAgIGJvb2wgbV9zdG9wU3RyZWFtV2hlbkRvbmVEZWxpdmVyaW5nOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oCmluZGV4IGZhMmFiYjdlMzUwNzI0YmRjYWQzNTQ3ODZm
NzM3ZWZlNmJkMzk3ZTkuLmViMWM5MWMxYWM5ZDFmODdlNDFhZDk0MGNiNGNhYjllMDJjOGQ4YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgKQEAgLTUyLDggKzUyLDYgQEAg
cHVibGljOgogICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBnZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4pOwogICAgIHZvaWQgcmVtb3ZlUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qKTsKIAotICAgIHZv
aWQgZGlkUmVjZWl2ZVBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlck1lc3NhZ2VPbkNvbm5l
Y3Rpb25Xb3JrUXVldWUoSVBDOjpDb25uZWN0aW9uKiwgT3duUHRyPElQQzo6TWVzc2FnZURlY29k
ZXI+Jik7Ci0KIHByaXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwCmluZGV4IDYwYzQ1ZjliMTdhNTI0NDc0ZDZiYWE3NWYzMGZjZDY3MzdkM2E2YmEuLjM3YTUz
M2ZiZmExYjc2YTUyNDZiZGM5NWIxYjM0ZTE3MDhiNmQwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtOTYsNyArOTYsNyBA
QCBib29sIFBsdWdpblByb3h5Ojppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiAgICAgbV9jb25uZWN0aW9uLT5hZGRQbHVnaW5Qcm94eSh0aGlzKTsKIAogICAgIC8vIEFz
ayB0aGUgcGx1Zy1pbiBwcm9jZXNzIHRvIGNyZWF0ZSBhIHBsdWctaW4uCi0gICAgbV9wZW5kaW5n
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzID0gYWRvcHRQdHIobmV3IFBsdWdpbkNyZWF0aW9uUGFy
YW1ldGVycyk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzID0gc3RkOjpt
YWtlX3VuaXF1ZTxQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+KCk7CiAKICAgICBtX3BlbmRpbmdQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPnBsdWdpbkluc3RhbmNlSUQgPSBtX3BsdWdpbkluc3Rh
bmNlSUQ7CiAgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT53aW5kb3dOUE9i
amVjdElEID0gd2luZG93TlBPYmplY3RJRCgpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgUGx1
Z2luUHJveHk6OmRpZENyZWF0ZVBsdWdpbkludGVybmFsKGJvb2wgd2FudHNXaGVlbEV2ZW50cywg
dWludDMyX3QgcmVtb3RlCiAKICAgICAvLyBXaGV0aGVyIHN5bmNocm9ub3VzbHkgb3IgYXN5bmNo
cm9ub3VzbHksIHRoaXMgcGx1Zy1pbiB3YXMgY3JlYXRlZCBhbmQgd2Ugc2hvdWxkbid0IG5lZWQg
dG8gcmVtZW1iZXIKICAgICAvLyBhbnl0aGluZyBhYm91dCBob3cuCi0gICAgbV9wZW5kaW5nUGx1
Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNsZWFyKCk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzID0gbnVsbHB0cjsKICAgICBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRp
YWxpemF0aW9uID0gZmFsc2U7CiB9CiAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFBsdWdpblBy
b3h5OjpkaWRGYWlsVG9DcmVhdGVQbHVnaW5JbnRlcm5hbCgpCiAKICAgICAvLyBXaGV0aGVyIHN5
bmNocm9ub3VzbHkgb3IgYXN5bmNocm9ub3VzbHksIHRoaXMgcGx1Zy1pbiBmYWlsZWQgdG8gY3Jl
YXRlIGFuZCB3ZSBzaG91bGRuJ3QgbmVlZCB0byByZW1lbWJlcgogICAgIC8vIGFueXRoaW5nIGFi
b3V0IGhvdy4KLSAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY2xlYXIoKTsK
KyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSBudWxscHRyOwogICAgIG1f
d2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCAzZWY4
MTIxOGE4MjZlMDg4NTZkNTcxOTQwODliN2JiZjk4NWJkOTQyLi41OTljYjlkMGVhN2YwZmY3NDNl
M2M2YTYwMTA1ZmQ0OTlkMDdiODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRmluZE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMjExLDcgKzIxMiw3
IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIGNsaWVudCBJRCBmb3IgdGhlIENBIGxheWVyIGluIHRo
ZSBwbHVnLWluIHByb2Nlc3MuIFdpbGwgYmUgMCBpZiB0aGUgcGx1Zy1pbiBpcyBub3QgYSBDQSBw
bHVnLWluLgogICAgIHVpbnQzMl90IG1fcmVtb3RlTGF5ZXJDbGllbnRJRDsKICAgICAKLSAgICBP
d25QdHI8UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzPiBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycz4g
bV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOwogICAgIGJvb2wgbV93YWl0aW5nT25B
c3luY2hyb25vdXNJbml0aWFsaXphdGlvbjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGRm
ZjgxNWJlOWRhYjg2YjY4NjZjNGE0MmYyMDRkNGVjNWEwMDE2YzUuLjNhZTYwYmM2NTQzYjM0MmVh
ZjE1MDYzMWFiYjRmZGIxNjMwNjZlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTgyMiw3ICs4MjIsNyBAQCBTdHJpbmcgUGx1
Z2luVmlldzo6Z2V0U2VsZWN0aW9uU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9wbHVnaW4t
PmdldFNlbGVjdGlvblN0cmluZygpOwogfQogCi1Pd25QdHI8V2ViRXZlbnQ+IFBsdWdpblZpZXc6
OmNyZWF0ZVdlYkV2ZW50KE1vdXNlRXZlbnQqIGV2ZW50KSBjb25zdAorc3RkOjp1bmlxdWVfcHRy
PFdlYkV2ZW50PiBQbHVnaW5WaWV3OjpjcmVhdGVXZWJFdmVudChNb3VzZUV2ZW50KiBldmVudCkg
Y29uc3QKIHsKICAgICBXZWJFdmVudDo6VHlwZSB0eXBlID0gV2ViRXZlbnQ6Ok5vVHlwZTsKICAg
ICB1bnNpZ25lZCBjbGlja0NvdW50ID0gMTsKQEAgLTg2NCw3ICs4NjQsNyBAQCBPd25QdHI8V2Vi
RXZlbnQ+IFBsdWdpblZpZXc6OmNyZWF0ZVdlYkV2ZW50KE1vdXNlRXZlbnQqIGV2ZW50KSBjb25z
dAogICAgIGlmIChldmVudC0+bWV0YUtleSgpKQogICAgICAgICBtb2RpZmllcnMgfD0gV2ViRXZl
bnQ6Ok1ldGFLZXk7CiAKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYk1vdXNlRXZlbnQodHlw
ZSwgYnV0dG9uLCBtX3BsdWdpbi0+Y29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQoZXZlbnQtPm9m
ZnNldFgoKSwgZXZlbnQtPm9mZnNldFkoKSkpLCBldmVudC0+c2NyZWVuTG9jYXRpb24oKSwgMCwg
MCwgMCwgY2xpY2tDb3VudCwgc3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4obW9kaWZp
ZXJzKSwgMCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk1vdXNlRXZlbnQ+KHR5
cGUsIGJ1dHRvbiwgbV9wbHVnaW4tPmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KGV2ZW50LT5v
ZmZzZXRYKCksIGV2ZW50LT5vZmZzZXRZKCkpKSwgZXZlbnQtPnNjcmVlbkxvY2F0aW9uKCksIDAs
IDAsIDAsIGNsaWNrQ291bnQsIHN0YXRpY19jYXN0PFdlYkV2ZW50OjpNb2RpZmllcnM+KG1vZGlm
aWVycyksIDApOwogfQogCiB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUV2ZW50KEV2ZW50KiBldmVu
dCkKQEAgLTg3Myw3ICs4NzMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUV2ZW50KEV2ZW50
KiBldmVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgV2ViRXZlbnQqIGN1cnJlbnRF
dmVudCA9IFdlYlBhZ2U6OmN1cnJlbnRFdmVudCgpOwotICAgIE93blB0cjxXZWJFdmVudD4gc2lt
dWxhdGVkV2ViRXZlbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkV2ZW50PiBzaW11bGF0ZWRX
ZWJFdmVudDsKICAgICBpZiAoZXZlbnQtPmlzTW91c2VFdmVudCgpICYmIHRvTW91c2VFdmVudChl
dmVudCktPmlzU2ltdWxhdGVkKCkpIHsKICAgICAgICAgc2ltdWxhdGVkV2ViRXZlbnQgPSBjcmVh
dGVXZWJFdmVudCh0b01vdXNlRXZlbnQoZXZlbnQpKTsKICAgICAgICAgY3VycmVudEV2ZW50ID0g
c2ltdWxhdGVkV2ViRXZlbnQuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCBjMWUzYjhjMGEwMzcyYjRjZDE2YmI0NzA5NTRmNDc5
MTU1MmJkNWI1Li4xOGVkNzU5NzA2OTlmODgzOTQxZDA1YWMxNjEzMjk4NzAyMWNiZDBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWV3U3RhdGUuaD4KKyNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KIApAQCAtMjIyLDcgKzIyMyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWQoV2ViRnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWQo
V2ViRnJhbWUqLCBib29sIHdhc0NhbmNlbGxlZCk7CiAKLSAgICBPd25QdHI8V2ViRXZlbnQ+IGNy
ZWF0ZVdlYkV2ZW50KFdlYkNvcmU6Ok1vdXNlRXZlbnQqKSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViRXZlbnQ+IGNyZWF0ZVdlYkV2ZW50KFdlYkNvcmU6Ok1vdXNlRXZlbnQqKSBjb25z
dDsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudD4gbV9wbHVnaW5FbGVt
ZW50OwogICAgIFJlZlB0cjxQbHVnaW4+IG1fcGx1Z2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgKaW5kZXggZmZi
ZmM0NWNiZDc3YmFlYzE0ZWY0Y2FlYjBiZTE4NTBkNjU0NmRkZS4uNDQ5MzNmMDFiOGQyZDRlNjg5
ODBhYmZjMDQyMWFiNzhhMjc5MWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oCkBAIC0yNSw3ICsyNSw2IEBA
CiAjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Qb3B1cE1lbnUu
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5k
ZXggZmQyZmFmMzFhN2EyYWQ3ZGE0OTVhZWZlODg1OTkzMjViYmFiZDJkMS4uYjViM2ZmZmE5Yzlm
MWM4OWY0OGRhMGFiY2I1YzA2NTk5ZTczN2I3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgUGFzc1JlZlB0cjxFdmVudERpc3BhdGNoZXI+IEV2ZW50RGlzcGF0Y2hlcjo6Y3JlYXRlKCkK
IAogRXZlbnREaXNwYXRjaGVyOjpFdmVudERpc3BhdGNoZXIoKQogICAgIDogbV9xdWV1ZShXb3Jr
UXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5FdmVudERpc3BhdGNoZXIiKSkKLSAgICAs
IG1fcmVjZW50V2hlZWxFdmVudERlbHRhVHJhY2tlcihhZG9wdFB0cihuZXcgV2hlZWxFdmVudERl
bHRhVHJhY2tlcikpCisgICAgLCBtX3JlY2VudFdoZWVsRXZlbnREZWx0YVRyYWNrZXIoc3RkOjpt
YWtlX3VuaXF1ZTxXaGVlbEV2ZW50RGVsdGFUcmFja2VyPigpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgKaW5kZXgg
Mjc0Y2FiYmMwOTFiNzU2MWZlZTQ3YzJmNTkzNzBiM2Q1NjYzN2JkOS4uYjEyN2M0NDU2OTgxZWEx
ZmZmOTJjNThlZmU3MWIzMWRlM2M1OWE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvV2hlZWxFdmVudERlbHRh
VHJhY2tlci5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAg
LTc4LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBNdXRleCBtX3Njcm9sbGluZ1RyZWVzTXV0ZXg7
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5n
VHJlZT4+IG1fc2Nyb2xsaW5nVHJlZXM7CiAjZW5kaWYKLSAgICBPd25QdHI8V2ViQ29yZTo6V2hl
ZWxFdmVudERlbHRhVHJhY2tlcj4gbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFUcmFja2VyOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXaGVlbEV2ZW50RGVsdGFUcmFja2VyPiBtX3JlY2Vu
dFdoZWVsRXZlbnREZWx0YVRyYWNrZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA0M2Nm
NTgyMDk3NjI0ZjhlNWI5MjY5MWQyM2RiNzQ5MjExZmVhOTI2Li5jMzA1ZWZjNjVkNGJiN2U5ZmI0
MGUyMjY5ZjZmOWJlZmIxYzU2MmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMjUsNyArMzI1LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiAKICAgICBwYWdlQ2xpZW50cy52aXNpdGVkTGlua1N0b3JlID0gVmlzaXRlZExpbmtUYWJs
ZUNvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEKTsK
IAotICAgIG1fcGFnZSA9IGFkb3B0UHRyKG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7CisgICAgbV9w
YWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihwYWdlQ2xpZW50cyk7CiAKICAgICBtX2RyYXdp
bmdBcmVhID0gRHJhd2luZ0FyZWE6OmNyZWF0ZSh0aGlzLCBwYXJhbWV0ZXJzKTsKICAgICBtX2Ry
YXdpbmdBcmVhLT5zZXRQYWludGluZ0VuYWJsZWQoZmFsc2UpOwpAQCAtMzQzNyw3ICszNDM3LDcg
QEAgdm9pZCBXZWJQYWdlOjpiZWdpblByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFBy
aW50SW5mbyYgcHJpbnRJbmZvKQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogICAgIGlmICgh
bV9wcmludENvbnRleHQpCi0gICAgICAgIG1fcHJpbnRDb250ZXh0ID0gYWRvcHRQdHIobmV3IFBy
aW50Q29udGV4dChjb3JlRnJhbWUpKTsKKyAgICAgICAgbV9wcmludENvbnRleHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZyYW1lKTsKIAogICAgIGRyYXdpbmdBcmVhKCkt
PnNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4odHJ1ZSk7CiAgICAgbV9wcmludENvbnRleHQtPmJl
Z2luKHByaW50SW5mby5hdmFpbGFibGVQYXBlcldpZHRoLCBwcmludEluZm8uYXZhaWxhYmxlUGFw
ZXJIZWlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggOWY5MTM4ZDRhOWFiMTMxNWIxMThmOTFjMDUwOGIwOWNjY2VhYzRkMS4uYjk4ZWNlZmFm
MDEwYjJkZjExM2FjMWE5ZDkxYWE1YjdhMGNhNjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02MCw4ICs2MCw4IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9WaWV3U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0Q29uZmlndXJhdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUtleWJvYXJkVUlNb2RlLmg+CisjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtOTI3LDcgKzkyNyw3IEBAIHBy
aXZhdGU6CiAKICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKIAotICAgIE93blB0cjxXZWJDb3JlOjpQ
YWdlPiBtX3BhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsK
ICAgICBSZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwogICAgIFJlZlB0cjxJbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7CiAKQEAgLTEwNjEsNyArMTA2
MSw3IEBAIHByaXZhdGU6CiAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIg
bV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKICNlbmRpZgogCi0gICAgT3du
UHRyPFdlYkNvcmU6OlByaW50Q29udGV4dD4gbV9wcmludENvbnRleHQ7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlByaW50Q29udGV4dD4gbV9wcmludENvbnRleHQ7CiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgIFJlZlB0cjxXZWJQcmludE9wZXJhdGlvbkd0az4gbV9wcmludE9wZXJhdGlv
bjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA5ZDNm
ODQ1ODBiYTkzNDNjMjA2YTdjNGY2MDVkZThjYjRmMDY0NWQ5Li4xYTk3NWExNmRkNWMxNTFmNThm
ZjAxYTc3NTZjN2M2YTQxMTIyMGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KICAgICB2b2lkIGFkZFN1cHBsZW1lbnQoKQogICAgIHsKLSAgICAgICAgbV9zdXBwbGVtZW50
cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgYWRvcHRQdHI8V2ViUHJvY2Vzc1N1cHBsZW1lbnQ+
KG5ldyBUKHRoaXMpKSk7CisgICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnRO
YW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VD4odGhpcykpOwogICAgIH0KIAogICAgIFdlYkNvbm5l
Y3Rpb25Ub1VJUHJvY2Vzcyogd2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1
cm4gbV93ZWJDb25uZWN0aW9uLmdldCgpOyB9CkBAIC0zMDgsNyArMzA4LDcgQEAgcHJpdmF0ZToK
IAogICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYkZyYW1lKj4gbV9mcmFtZU1hcDsKIAotICAgIHR5
cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgT3duUHRyPFdlYlByb2Nlc3NTdXBwbGVtZW50Piwg
UHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYlByb2Nlc3NTdXBwbGVtZW50TWFwOworICAgIHR5cGVk
ZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NTdXBwbGVt
ZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYlByb2Nlc3NTdXBwbGVtZW50TWFwOwogICAg
IFdlYlByb2Nlc3NTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVudHM7CiAKICAgICBUZXh0Q2hlY2tl
clN0YXRlIG1fdGV4dENoZWNrZXJTdGF0ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227790</attachid>
            <date>2014-03-25 13:40:44 -0700</date>
            <delta_ts>2014-04-26 06:29:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129670-20140325134021.patch</filename>
            <type>text/plain</type>
            <size>47852</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBACisyMDE0LTAzLTIzICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIGNyb3NzLXBvcnQg
V2ViS2l0MiBjb2RlIHRvIHN0ZDo6dW5pcXVlX3B0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSB1c2VzIG9mIE93blB0ciwgUGFzc093blB0
ciBpbiBjcm9zcy1wb3J0IFdlYktpdDIgY29kZSB3aXRoIHN0ZDo6dW5pcXVlX3B0ci4KKworICAg
ICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNl
QmFja2luZ1N0b3JlU1FMaXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJh
c2VCYWNraW5nU3RvcmVTUUxpdGU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBEYXRhYmFzZVBy
b2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0
ZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRTdXBwbGVtZW50KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1N5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9NZXNzYWdlUmVjZWl2ZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Nb2R1bGUuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9lZmwvTW9k
dWxlRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9kdWxlOjpsb2FkKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbToKKyAgICAgICAgKiBTaGFyZWQvQVBJ
VVJMLmg6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVBy
b3RvY29sTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0
TWFwLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
b2NrZXRTZXJ2ZXI6OmRpZEFjY2VwdENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJT
b2NrZXRTZXJ2ZXI6OmRpZENsb3NlV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3NvdXAvV2ViU29ja2V0U2VydmVyU291cC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmNvbm5lY3Rpb25DYWxsYmFjayk6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmdldFNpdGVzV2l0aERhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmNsZWFyU2l0ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmRpZEdldFNpdGVzV2l0
aERhdGFGb3JBbGxQbHVnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luU2l0ZURhdGFN
YW5hZ2VyOjpkaWRDbGVhclNpdGVEYXRhRm9yQWxsUGx1Z2lucyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpjYWxsQ2Fs
bGJhY2tGdW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRPcmln
aW5zSW50ZXJuYWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjphcmVCZWluZ1Byb2Nl
c3NlZCk6CisgICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmNy
ZWF0ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29y
ZHM6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6
Om5leHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZU1vdXNlRXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJv
d3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0
b3I6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5
OjpkaWRDcmVhdGVQbHVnaW5JbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5
OjpkaWRGYWlsVG9DcmVhdGVQbHVnaW5JbnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpjcmVhdGVXZWJFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUG9wdXBNZW51Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0Y2hlcjo6
RXZlbnREaXNwYXRjaGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNw
YXRjaGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6YmVnaW5QcmludGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6YWRkU3VwcGxlbWVudCk6CisKIDIwMTQtMDMtMjUgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBCZWdpbiBzdHViYmluZyBvdXQgYSBX
S1dpbmRvd0ZlYXR1cmVzIGNsYXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWRE
Qi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuY3BwCShyZXZpc2lv
biAxNjYyNDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3Nx
bGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYzMCw3ICs2MzAsNyBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3Jl
U1FMaXRlCiAKICAgICBtX2N1cnNvcnMuc2V0KGN1cnNvci0+aWRlbnRpZmllcigpLCBjdXJzb3Ip
OwogCi0gICAgT3duUHRyPEpTTG9ja0hvbGRlcj4gbG9ja2VyOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxKU0xvY2tIb2xkZXI+IGxvY2tlcjsKICAgICB3aGlsZSAoIWN1cnNvci0+Y3VycmVudEtleSgp
LmlzTnVsbCkgewogICAgICAgICBjb25zdCBJREJLZXlEYXRhJiBrZXkgPSBjdXJzb3ItPmN1cnJl
bnRLZXkoKTsKICAgICAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2YWx1ZUJ1ZmZlciA9IGN1
cnNvci0+Y3VycmVudFZhbHVlQnVmZmVyKCk7CkBAIC02MzgsMTIgKzYzOCwxMiBAQCBib29sIFVu
aXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlCiAgICAgICAgIGlmICghbV9nbG9iYWxP
YmplY3QpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV92bSk7CiAgICAgICAgICAgICBtX3ZtID0g
Vk06OmNyZWF0ZSgpOwotICAgICAgICAgICAgbG9ja2VyID0gYWRvcHRQdHIobmV3IEpTTG9ja0hv
bGRlcihtX3ZtLmdldCgpKSk7CisgICAgICAgICAgICBsb2NrZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEpTTG9ja0hvbGRlcj4obV92bS5nZXQoKSk7CiAgICAgICAgICAgICBtX2dsb2JhbE9iamVjdC5z
ZXQoKm1fdm0sIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUoKm1fdm0sIEpTR2xvYmFsT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIGpzTnVsbCgpKSkpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCFsb2NrZXIpCi0gICAgICAgICAgICBsb2NrZXIgPSBhZG9wdFB0cihuZXcgSlNMb2NrSG9s
ZGVyKG1fdm0uZ2V0KCkpKTsKKyAgICAgICAgICAgIGxvY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SlNMb2NrSG9sZGVyPihtX3ZtLmdldCgpKTsKIAogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIobV9nbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgdmFsdWVCdWZmZXIsIHRydWUpOwogICAgICAgICBWZWN0b3I8SURCS2V5RGF0
YT4gaW5kZXhLZXlzOwpJbmRleDogU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9V
bmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oCShyZXZpc2lvbiAxNjYyNDcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJ
REJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw2IEBACiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIgCiAjaW5jbHVkZSAiVW5pcXVl
SURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJv
bmcuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApJbmRleDogU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAxNjYyNDcp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFw
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTYzLDcgKzY0
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkU3Vw
cGxlbWVudCgpCiAgICAgewotICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50
TmFtZSgpLCBhZG9wdFB0cjxOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ+KG5ldyBUKHRoaXMpKSk7
CisgICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFr
ZV91bmlxdWU8VD4odGhpcykpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqKTsKQEAgLTEz
NCw3ICsxMzUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNTZXRDYWNoZU1vZGVsOwogICAg
IENhY2hlTW9kZWwgbV9jYWNoZU1vZGVsOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IGNo
YXIqLCBPd25QdHI8TmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFy
Kj4+IE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29u
c3QgY2hhciosIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ+LCBQdHJI
YXNoPGNvbnN0IGNoYXIqPj4gTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50TWFwOwogICAgIE5ldHdv
cmtQcm9jZXNzU3VwcGxlbWVudE1hcCBtX3N1cHBsZW1lbnRzOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TeW5jaHJvbm91c05ldHdv
cmtMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL1N5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDE2NjI0
NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1N5bmNocm9ub3VzTmV0d29ya0xv
YWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBTeW5j
aHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQ6OmRpZAogICAgIC8vIEl0J3MgdW5jbGVhciBpZiB0
aGUgcG90ZW50aWFsIGNvbXBsZXhpdGllcyBvZiB0aGF0IGFwcHJvYWNoIGFyZSB3b3J0aCBpdC4K
ICAgICAKICAgICBpZiAoIW1fcmVzcG9uc2VEYXRhKQotICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9
IGFkb3B0UHRyKG5ldyBWZWN0b3I8Y2hhcj4pOworICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPGNoYXI+PigpOwogCiAgICAgbV9yZXNwb25zZURhdGEtPmFw
cGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogfQpJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU3luY2hyb25vdXNOZXR3
b3JrTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL1N5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkBAIC02Niw3ICs2Nyw3
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiBtX2RlbGF5ZWRS
ZXBseTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBtX2Vycm9yOwotICAgIE93blB0cjxWZWN0b3I8Y2hhcj4+IG1f
cmVzcG9uc2VEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8Y2hhcj4+IG1fcmVzcG9u
c2VEYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Xb3JrUXVldWUuaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vV29ya1F1ZXVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAorI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMjc3LDcgKzI3OCw3IEBAIHZv
aWQgQ29ubmVjdGlvbjo6cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVIKIAogdm9pZCBDb25uZWN0aW9u
OjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyKiB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIsIE1lc3NhZ2VEZWNvZGVyKiBpbmNv
bWluZ01lc3NhZ2VEZWNvZGVyKQogewotICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2Rl
ciA9IGFkb3B0UHRyKGluY29taW5nTWVzc2FnZURlY29kZXIpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlcihpbmNvbWluZ01lc3NhZ2VEZWNvZGVyKTsKIAogICAg
IGlmICghZGVjb2Rlci0+aXNTeW5jTWVzc2FnZSgpKSB7CiAgICAgICAgIHdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlci0+ZGlkUmVjZWl2ZU1lc3NhZ2UodGhpcywgKmRlY29kZXIpOwpJbmRleDogU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAxNjYyNDcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBPUyhEQVJXSU4p
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlci5o
CShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVJlY2VpdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgTWVz
c2FnZVJlY2VpdmVyX2gKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8
d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIApJbmRleDogU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vZWZsL01vZHVsZUVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vZWZsL01vZHVsZUVmbC5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL2VmbC9Nb2R1bGVFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4
ICsyMCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTW9kdWxlLmgiCiAKLSNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpJbmRleDogU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0J
KHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9MYXllckhv
c3RpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKIAotI2ltcG9ydCA8
d3RmL093blB0ci5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAKICNpZiBf
X2hhc19pbmNsdWRlKDxRdWFydHpDb3JlL1F1YXJ0ekNvcmVQcml2YXRlLmg+KQpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSVVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElVUkwuaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSVVSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw2IEBACiAjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVh
YmxlQml0bWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJs
ZUJpdG1hcC5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hh
cmVhYmxlQml0bWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1
ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgJKHJldmlzaW9uIDE2NjI0NykK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Q
cm90b2NvbE1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiBPQkpDX0NM
QVNTIFdLQ3VzdG9tUHJvdG9jb2w7CisjZWxzZQorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFu
YWdlckltcGwuaCIKICNlbmRpZgogCiAKQEAgLTU1LDcgKzU3LDYgQEAgY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBDaGlsZFByb2Nlc3M7Ci1jbGFz
cyBDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsOwogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOwogCiBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXIgOiBwdWJsaWMgV2Vi
UHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1Ymxp
YyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3Bw
CShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUFJl
bW90ZU9iamVjdE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNs
dWRlICJOUE9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSAiTlBSdW50aW1lVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiTlBWYXJpYW50RGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9E
cmF3aW5nQXJlYVByb3h5SW1wbC5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNiBAQAogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIkRyYXdpbmdB
cmVhUHJveHkuaCIKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCi0jaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZp
c2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDIxICsxNzAsMjEgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHMmIHNoYXJlZCgpOwogCi0gICAgUGFzc093
blB0cjxSZWNvcmQ+IGNyZWF0ZVJlY29yZCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2lu
SWRlbnRpZmllciwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVjb3JkPiBjcmVhdGVSZWNvcmQodWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsCiAgICAgICAgIFN0cmluZyBk
YXRhYmFzZU5hbWUsIFN0cmluZyBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLAog
ICAgICAgICB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRh
YmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCAKICAgICAgICAgUGFzc1JlZlB0cjxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBs
eT4pOwogCi0gICAgdm9pZCBhZGQoUGFzc093blB0cjxSZWNvcmQ+KTsKLSAgICBib29sIGFyZUJl
aW5nUHJvY2Vzc2VkKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50UmVjb3JkOyB9CisgICAgdm9p
ZCBhZGQoc3RkOjp1bmlxdWVfcHRyPFJlY29yZD4pOworICAgIGJvb2wgYXJlQmVpbmdQcm9jZXNz
ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fY3VycmVudFJlY29yZDsgfQogICAgIFJlY29yZCogbmV4
dCgpOwogCiBwcml2YXRlOgogICAgIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHMoKSB7IH0K
ICAgICB+RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcygpIHsgfQogCi0gICAgRGVxdWU8T3du
UHRyPFJlY29yZD4+IG1fcmVjb3JkczsKLSAgICBPd25QdHI8UmVjb3JkPiBtX2N1cnJlbnRSZWNv
cmQ7CisgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPFJlY29yZD4+IG1fcmVjb3JkczsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVjb3JkPiBtX2N1cnJlbnRSZWNvcmQ7CiB9OwogCiBFeGNlZWRlZERh
dGFiYXNlUXVvdGFSZWNvcmRzJiBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpzaGFyZWQo
KQpAQCAtMTkzLDEyICsxOTMsMTIgQEAgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcyYgRXhj
ZWVkZWREYQogICAgIHJldHVybiByZWNvcmRzOwogfQogCi1QYXNzT3duUHRyPEV4Y2VlZGVkRGF0
YWJhc2VRdW90YVJlY29yZHM6OlJlY29yZD4gRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6
Y3JlYXRlUmVjb3JkKAorc3RkOjp1bmlxdWVfcHRyPEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29y
ZHM6OlJlY29yZD4gRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6Y3JlYXRlUmVjb3JkKAog
ICAgIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBTdHJpbmcgZGF0
YWJhc2VOYW1lLCBTdHJpbmcgZGlzcGxheU5hbWUsCiAgICAgdWludDY0X3QgY3VycmVudFF1b3Rh
LCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVz
YWdlLAogICAgIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIFBhc3NSZWZQdHI8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+IHJlcGx5KQog
ewotICAgIE93blB0cjxSZWNvcmQ+IHJlY29yZCA9IGFkb3B0UHRyKG5ldyBSZWNvcmQpOworICAg
IGF1dG8gcmVjb3JkID0gc3RkOjptYWtlX3VuaXF1ZTxSZWNvcmQ+KCk7CiAgICAgcmVjb3JkLT5m
cmFtZUlEID0gZnJhbWVJRDsKICAgICByZWNvcmQtPm9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW5J
ZGVudGlmaWVyOwogICAgIHJlY29yZC0+ZGF0YWJhc2VOYW1lID0gZGF0YWJhc2VOYW1lOwpAQCAt
MjA4LDE3ICsyMDgsMTcgQEAgUGFzc093blB0cjxFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRz
OgogICAgIHJlY29yZC0+Y3VycmVudERhdGFiYXNlVXNhZ2UgPSBjdXJyZW50RGF0YWJhc2VVc2Fn
ZTsKICAgICByZWNvcmQtPmV4cGVjdGVkVXNhZ2UgPSBleHBlY3RlZFVzYWdlOwogICAgIHJlY29y
ZC0+cmVwbHkgPSByZXBseTsKLSAgICByZXR1cm4gcmVjb3JkLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gc3RkOjptb3ZlKHJlY29yZCk7CiB9CiAKLXZvaWQgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVj
b3Jkczo6YWRkKFBhc3NPd25QdHI8RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3Jk
PiByZWNvcmQpCit2b2lkIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmFkZChzdGQ6OnVu
aXF1ZV9wdHI8RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiByZWNvcmQpCiB7
Ci0gICAgbV9yZWNvcmRzLmFwcGVuZChyZWNvcmQpOworICAgIG1fcmVjb3Jkcy5hcHBlbmQoc3Rk
Ojptb3ZlKHJlY29yZCkpOwogfQogCiBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNv
cmQqIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6Om5leHQoKQogewotICAgIG1fY3VycmVu
dFJlY29yZC5jbGVhcigpOworICAgIG1fY3VycmVudFJlY29yZCA9IG51bGxwdHI7CiAgICAgaWYg
KCFtX3JlY29yZHMuaXNFbXB0eSgpKQogICAgICAgICBtX2N1cnJlbnRSZWNvcmQgPSBtX3JlY29y
ZHMudGFrZUZpcnN0KCk7CiAgICAgcmV0dXJuIG1fY3VycmVudFJlY29yZC5nZXQoKTsKQEAgLTEy
MTUsNyArMTIxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVNb3VzZUV2ZW50KGNvbnMK
ICAgICAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIGlmIChtX3Byb2Nlc3NpbmdNb3VzZU1vdmVFdmVudCkgewotICAgICAg
ICAgICAgbV9uZXh0TW91c2VNb3ZlRXZlbnQgPSBhZG9wdFB0cihuZXcgTmF0aXZlV2ViTW91c2VF
dmVudChldmVudCkpOworICAgICAgICAgICAgbV9uZXh0TW91c2VNb3ZlRXZlbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5hdGl2ZVdlYk1vdXNlRXZlbnQ+KGV2ZW50KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0xMjI3LDcgKzEyMjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aGFuZGxlTW91c2VFdmVudChjb25zCiAgICAgLy8gd2UgZmFrZSBhIG1vdXNlIHVwIGV2ZW50IGJ5
IHVzaW5nIHRoaXMgc3RvcmVkIGRvd24gZXZlbnQuIFRoaXMgZXZlbnQgZ2V0cyBjbGVhcmVkCiAg
ICAgLy8gd2hlbiB0aGUgbW91c2UgdXAgbWVzc2FnZSBpcyByZWNlaXZlZCBmcm9tIFdlYlByb2Nl
c3MuCiAgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKQotICAgICAg
ICBtX2N1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50ID0gYWRvcHRQdHIobmV3IE5hdGl2
ZVdlYk1vdXNlRXZlbnQoZXZlbnQpKTsKKyAgICAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRNb3Vz
ZURvd25FdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0aXZlV2ViTW91c2VFdmVudD4oZXZlbnQp
OwogCiAgICAgaWYgKG1fc2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkpIHsKICAgICAgICAg
Ym9vbCBoYW5kbGVkID0gZmFsc2U7CkBAIC0xMzIzLDE3ICsxMzIzLDE3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIE93blB0cjxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+IGNvYWxlc2NlZFdoZWVsRXZl
bnQgPSBhZG9wdFB0cihuZXcgVmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+KTsKKyAgICBhdXRv
IGNvYWxlc2NlZFdoZWVsRXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJX
aGVlbEV2ZW50Pj4oKTsKICAgICBjb2FsZXNjZWRXaGVlbEV2ZW50LT5hcHBlbmQoZXZlbnQpOwot
ICAgIG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMuYXBwZW5kKGNvYWxlc2NlZFdoZWVs
RXZlbnQucmVsZWFzZSgpKTsKKyAgICBtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRzLmFw
cGVuZChzdGQ6Om1vdmUoY29hbGVzY2VkV2hlZWxFdmVudCkpOwogICAgIHNlbmRXaGVlbEV2ZW50
KGV2ZW50KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkV2hlZWxF
dmVudCgpCiB7Ci0gICAgT3duUHRyPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4gbmV4dENv
YWxlc2NlZEV2ZW50ID0gYWRvcHRQdHIobmV3IFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pik7
CisgICAgYXV0byBuZXh0Q29hbGVzY2VkRXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxO
YXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKICAgICBXZWJXaGVlbEV2ZW50IG5leHRXaGVlbEV2ZW50
ID0gY29hbGVzY2VkV2hlZWxFdmVudChtX3doZWVsRXZlbnRRdWV1ZSwgKm5leHRDb2FsZXNjZWRF
dmVudC5nZXQoKSk7Ci0gICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQo
bmV4dENvYWxlc2NlZEV2ZW50LnJlbGVhc2UoKSk7CisgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRX
aGVlbEV2ZW50cy5hcHBlbmQoc3RkOjptb3ZlKG5leHRDb2FsZXNjZWRFdmVudCkpOwogICAgIHNl
bmRXaGVlbEV2ZW50KG5leHRXaGVlbEV2ZW50KTsKIH0KIApAQCAtMzY1OCw3ICszNjU4LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MwogICAgIGNhc2UgV2ViRXZl
bnQ6OldoZWVsOiB7CiAgICAgICAgIEFTU0VSVCghbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2
ZW50cy5pc0VtcHR5KCkpOwogCi0gICAgICAgIE93blB0cjxWZWN0b3I8TmF0aXZlV2ViV2hlZWxF
dmVudD4+IG9sZGVzdENvYWxlc2NlZEV2ZW50ID0gbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2
ZW50cy50YWtlRmlyc3QoKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxOYXRpdmVX
ZWJXaGVlbEV2ZW50Pj4gb2xkZXN0Q29hbGVzY2VkRXZlbnQgPSBtX2N1cnJlbnRseVByb2Nlc3Nl
ZFdoZWVsRXZlbnRzLnRha2VGaXJzdCgpOwogCiAgICAgICAgIC8vIEZJWE1FOiBEaXNwYXRjaCBh
ZGRpdGlvbmFsIGV2ZW50cyB0byB0aGUgZGlkTm90SGFuZGxlV2hlZWxFdmVudCBjbGllbnQgZnVu
Y3Rpb24uCiAgICAgICAgIGlmICghaGFuZGxlZCkgewpAQCAtNDE2MiwxMCArNDE2MiwxMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0CiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
b3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9y
aWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0
ZWRVc2FnZSwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFi
YXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4gcmVwbHkpCiB7CiAgICAgRXhjZWVkZWREYXRhYmFzZVF1
b3RhUmVjb3JkcyYgcmVjb3JkcyA9IEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OnNoYXJl
ZCgpOwotICAgIE93blB0cjxFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQ+IG5l
d1JlY29yZCA9ICByZWNvcmRzLmNyZWF0ZVJlY29yZChmcmFtZUlELAorICAgIHN0ZDo6dW5pcXVl
X3B0cjxFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQ+IG5ld1JlY29yZCA9IHJl
Y29yZHMuY3JlYXRlUmVjb3JkKGZyYW1lSUQsCiAgICAgICAgIG9yaWdpbklkZW50aWZpZXIsIGRh
dGFiYXNlTmFtZSwgZGlzcGxheU5hbWUsIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdl
LAogICAgICAgICBjdXJyZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSwgcmVwbHkpOwot
ICAgIHJlY29yZHMuYWRkKG5ld1JlY29yZC5yZWxlYXNlKCkpOworICAgIHJlY29yZHMuYWRkKHN0
ZDo6bW92ZShuZXdSZWNvcmQpKTsKIAogICAgIGlmIChyZWNvcmRzLmFyZUJlaW5nUHJvY2Vzc2Vk
KCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTAgKzcwLDkgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRDaGVja2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEdyYW51bGFy
aXR5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWV3U3RhdGUuaD4KKyNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KQEAgLTE1MTUsMTEgKzE1MTQsMTEgQEAgcHJpdmF0ZToKIAogICAgIERlcXVl
PE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ+IG1fa2V5RXZlbnRRdWV1ZTsKICAgICBEZXF1ZTxOYXRp
dmVXZWJXaGVlbEV2ZW50PiBtX3doZWVsRXZlbnRRdWV1ZTsKLSAgICBEZXF1ZTxPd25QdHI8VmVj
dG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+Pj4gbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50
czsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+
Pj4gbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50czsKIAogICAgIGJvb2wgbV9wcm9jZXNz
aW5nTW91c2VNb3ZlRXZlbnQ7Ci0gICAgT3duUHRyPE5hdGl2ZVdlYk1vdXNlRXZlbnQ+IG1fbmV4
dE1vdXNlTW92ZUV2ZW50OwotICAgIE93blB0cjxOYXRpdmVXZWJNb3VzZUV2ZW50PiBtX2N1cnJl
bnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXRpdmVX
ZWJNb3VzZUV2ZW50PiBtX25leHRNb3VzZU1vdmVFdmVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
TmF0aXZlV2ViTW91c2VFdmVudD4gbV9jdXJyZW50bHlQcm9jZXNzZWRNb3VzZURvd25FdmVudDsK
IAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgYm9vbCBtX2lzVHJhY2tpbmdUb3VjaEV2
ZW50czsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ1LDcgKzU0NSw3IEBAIERvd25sb2Fk
UHJveHkqIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRG8KICNlbmRpZgogCiAgICAgaWYgKCFtX2Rv
d25sb2FkUHJveHlNYXApCi0gICAgICAgIG1fZG93bmxvYWRQcm94eU1hcCA9IGFkb3B0UHRyKG5l
dyBEb3dubG9hZFByb3h5TWFwKHRoaXMpKTsKKyAgICAgICAgbV9kb3dubG9hZFByb3h5TWFwID0g
c3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZFByb3h5TWFwPih0aGlzKTsKIAogICAgIHJldHVybiBt
X2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJveHkobV9jb250ZXh0LmdldCgpKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJl
dmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9MaW5rSGFzaC5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KQEAgLTIwNCw3ICsyMDUsNyBAQCBwcml2YXRlOgogICAgIFdlYkZyYW1lUHJveHlNYXAg
bV9mcmFtZU1hcDsKICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwIG1fYmFja0ZvcndhcmRM
aXN0SXRlbU1hcDsKIAotICAgIE93blB0cjxEb3dubG9hZFByb3h5TWFwPiBtX2Rvd25sb2FkUHJv
eHlNYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPERvd25sb2FkUHJveHlNYXA+IG1fZG93bmxvYWRQ
cm94eU1hcDsKIAogI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogICAgIEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9X
ZWJTb2NrZXRTZXJ2ZXIuY3BwCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIldlYlNvY2tldFNlcnZlckNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUhhbmRsZS5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC03OCwy
MCArNzcsMjAgQEAgdm9pZCBXZWJTb2NrZXRTZXJ2ZXI6OmNsb3NlKCkKICAgICBtX2JpbmRBZGRy
ZXNzID0gU3RyaW5nKCk7CiB9CiAKLXZvaWQgV2ViU29ja2V0U2VydmVyOjpkaWRBY2NlcHRDb25u
ZWN0aW9uKFBhc3NPd25QdHI8V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbj4gY29ubmVjdGlvbikK
K3ZvaWQgV2ViU29ja2V0U2VydmVyOjpkaWRBY2NlcHRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0
cjxXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uPiBjb25uZWN0aW9uKQogewotICAgIG1fY29ubmVj
dGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24pOworICAgIG1fY29ubmVjdGlvbnMuYXBwZW5kKHN0ZDo6
bW92ZShjb25uZWN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0U2VydmVyOjpkaWRDbG9zZVdl
YlNvY2tldFNlcnZlckNvbm5lY3Rpb24oV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiogY29ubmVj
dGlvbikKIHsKLSAgICBEZXF1ZTxPd25QdHI8V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbj4gPjo6
aXRlcmF0b3IgZW5kID0gbV9jb25uZWN0aW9ucy5lbmQoKTsKLSAgICBmb3IgKERlcXVlPE93blB0
cjxXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uPiA+OjppdGVyYXRvciBpdCA9IG1fY29ubmVjdGlv
bnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgZm9yIChhdXRvIGl0ID0gbV9jb25u
ZWN0aW9ucy5iZWdpbigpLCBlbmQgPSBtX2Nvbm5lY3Rpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKICAgICAgICAgaWYgKGl0LT5nZXQoKSA9PSBjb25uZWN0aW9uKSB7CiAgICAgICAgICAg
ICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShpdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNv
Y2tldFNlcnZlci5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw4ICsyOSw4IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKIAorI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBVU0UoU09VUCkKQEAgLTYx
LDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIFdlYlNvY2tldFNl
cnZlckNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KLSAgICB2b2lk
IGRpZEFjY2VwdENvbm5lY3Rpb24oUGFzc093blB0cjxXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9u
Pik7CisgICAgdm9pZCBkaWRBY2NlcHRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2Nr
ZXRTZXJ2ZXJDb25uZWN0aW9uPik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDbG9zZVdlYlNv
Y2tldFNlcnZlckNvbm5lY3Rpb24oV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiopOwpAQCAtNzEs
NyArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1DbG9zZSgpOwogCiAgICAgU2Vy
dmVyU3RhdGUgbV9zdGF0ZTsKLSAgICBEZXF1ZTxPd25QdHI8V2ViU29ja2V0U2VydmVyQ29ubmVj
dGlvbj4gPiBtX2Nvbm5lY3Rpb25zOworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2Nr
ZXRTZXJ2ZXJDb25uZWN0aW9uPj4gbV9jb25uZWN0aW9uczsKICAgICBXZWJTb2NrZXRTZXJ2ZXJD
bGllbnQqIG1fY2xpZW50OwogICAgIFN0cmluZyBtX2JpbmRBZGRyZXNzOwogICAgIHVuc2lnbmVk
IHNob3J0IG1fcG9ydDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JT
ZXJ2ZXIvc291cC9XZWJTb2NrZXRTZXJ2ZXJTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3NvdXAvV2ViU29ja2V0U2VydmVyU291
cC5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvc291cC9XZWJTb2NrZXRTZXJ2ZXJTb3VwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFtSGFuZGxlLmg+
CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ3LDkgKzQ2LDkgQEAgc3RhdGljIGdib29s
ZWFuIGNvbm5lY3Rpb25DYWxsYmFjayhHU29jawogICAgIExPRyhJbnNwZWN0b3JTZXJ2ZXIsICJO
ZXcgQ29ubmVjdGlvbiBmcm9tICVzOiVkLiIsIGFkZHJlc3NTdHJpbmcuZ2V0KCksIGdfaW5ldF9z
b2NrZXRfYWRkcmVzc19nZXRfcG9ydChHX0lORVRfU09DS0VUX0FERFJFU1Moc29ja2V0QWRkcmVz
cy5nZXQoKSkpKTsKICNlbmRpZgogCi0gICAgT3duUHRyPFdlYlNvY2tldFNlcnZlckNvbm5lY3Rp
b24+IHdlYlNvY2tldENvbm5lY3Rpb24gPSBhZG9wdFB0cihuZXcgV2ViU29ja2V0U2VydmVyQ29u
bmVjdGlvbihzZXJ2ZXItPmNsaWVudCgpLCBzZXJ2ZXIpKTsKKyAgICBhdXRvIHdlYlNvY2tldENv
bm5lY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24+KHNl
cnZlci0+Y2xpZW50KCksIHNlcnZlcik7CiAgICAgd2ViU29ja2V0Q29ubmVjdGlvbi0+c2V0U29j
a2V0SGFuZGxlKFNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlKGNvbm5lY3Rpb24sIHdlYlNvY2tl
dENvbm5lY3Rpb24uZ2V0KCkpKTsKLSAgICBzZXJ2ZXItPmRpZEFjY2VwdENvbm5lY3Rpb24od2Vi
U29ja2V0Q29ubmVjdGlvbi5yZWxlYXNlKCkpOworICAgIHNlcnZlci0+ZGlkQWNjZXB0Q29ubmVj
dGlvbihzdGQ6Om1vdmUod2ViU29ja2V0Q29ubmVjdGlvbikpOwogCiAgICAgcmV0dXJuIFRSVUU7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5l
dHdvcmtQcm9jCiBEb3dubG9hZFByb3h5KiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3du
bG9hZFByb3h5KCkKIHsKICAgICBpZiAoIW1fZG93bmxvYWRQcm94eU1hcCkKLSAgICAgICAgbV9k
b3dubG9hZFByb3h5TWFwID0gYWRvcHRQdHIobmV3IERvd25sb2FkUHJveHlNYXAodGhpcykpOwor
ICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkUHJv
eHlNYXA+KHRoaXMpOwogCiAgICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93
bmxvYWRQcm94eShtX3dlYkNvbnRleHQpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24g
MTY2MjQ3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2hp
bGRQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KIAogI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQpAQCAtOTEsNyAr
OTIsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1
ZXN0czsKICAgICBEZXF1ZTxSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBtX3BlbmRpbmdDb25uZWN0aW9u
UmVwbGllczsKIAotICAgIE93blB0cjxEb3dubG9hZFByb3h5TWFwPiBtX2Rvd25sb2FkUHJveHlN
YXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPERvd25sb2FkUHJveHlNYXA+IG1fZG93bmxvYWRQcm94
eU1hcDsKIAogI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogICAgIEN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJXZWJO
b3RpZmljYXRpb25Qcm92aWRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uQ2xp
ZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdp
blNpdGVEYXRhTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTY2MjQ3
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFN
YW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgV2ViUGx1
Z2luU2l0ZURhdGFNYW5hZ2VyOjpnZXRTaXRlc1cKICAgICBBU1NFUlQoIW1fcGVuZGluZ0dldFNp
dGVzV2l0aERhdGEuY29udGFpbnMoY2FsbGJhY2tJRCkpOwogCiAgICAgR2V0U2l0ZXNXaXRoRGF0
YVN0YXRlKiBzdGF0ZSA9IG5ldyBHZXRTaXRlc1dpdGhEYXRhU3RhdGUodGhpcywgY2FsbGJhY2tJ
RCk7Ci0gICAgbV9wZW5kaW5nR2V0U2l0ZXNXaXRoRGF0YS5zZXQoY2FsbGJhY2tJRCwgYWRvcHRQ
dHIoc3RhdGUpKTsKKyAgICBtX3BlbmRpbmdHZXRTaXRlc1dpdGhEYXRhLnNldChjYWxsYmFja0lE
LCBzdGQ6OnVuaXF1ZV9wdHI8R2V0U2l0ZXNXaXRoRGF0YVN0YXRlPihzdGF0ZSkpOwogICAgIHN0
YXRlLT5nZXRTaXRlc1dpdGhEYXRhRm9yTmV4dFBsdWdpbigpOwogfQogCkBAIC0xOTcsNyArMTk3
LDcgQEAgdm9pZCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmNsZWFyU2l0ZQogICAgIEFTU0VS
VCghbV9wZW5kaW5nQ2xlYXJTaXRlRGF0YS5jb250YWlucyhjYWxsYmFja0lEKSk7CiAKICAgICBD
bGVhclNpdGVEYXRhU3RhdGUqIHN0YXRlID0gbmV3IENsZWFyU2l0ZURhdGFTdGF0ZSh0aGlzLCBz
aXRlc1ZlY3RvciwgZmxhZ3MsIG1heEFnZUluU2Vjb25kcywgY2FsbGJhY2tJRCk7Ci0gICAgbV9w
ZW5kaW5nQ2xlYXJTaXRlRGF0YS5zZXQoY2FsbGJhY2tJRCwgYWRvcHRQdHIoc3RhdGUpKTsKKyAg
ICBtX3BlbmRpbmdDbGVhclNpdGVEYXRhLnNldChjYWxsYmFja0lELCBzdGQ6OnVuaXF1ZV9wdHI8
Q2xlYXJTaXRlRGF0YVN0YXRlPihzdGF0ZSkpOwogICAgIHN0YXRlLT5jbGVhclNpdGVEYXRhRm9y
TmV4dFBsdWdpbigpOwogfQogCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBXZWJQbHVnaW5TaXRl
RGF0YU1hbmFnZXI6OmRpZEdldFNpdAogCiB2b2lkIFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlcjo6
ZGlkR2V0U2l0ZXNXaXRoRGF0YUZvckFsbFBsdWdpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNp
dGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIE93blB0cjxHZXRTaXRlc1dpdGhEYXRh
U3RhdGU+IHN0YXRlID0gbV9wZW5kaW5nR2V0U2l0ZXNXaXRoRGF0YS50YWtlKGNhbGxiYWNrSUQp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXRTaXRlc1dpdGhEYXRhU3RhdGU+IHN0YXRlID0gbV9w
ZW5kaW5nR2V0U2l0ZXNXaXRoRGF0YS50YWtlKGNhbGxiYWNrSUQpOwogICAgIEFTU0VSVChzdGF0
ZSk7CiAKICAgICBkaWRHZXRTaXRlc1dpdGhEYXRhKHNpdGVzLCBjYWxsYmFja0lEKTsKQEAgLTIz
OCw3ICsyMzgsNyBAQCB2b2lkIFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlcjo6ZGlkQ2xlYXJTCiAK
IHZvaWQgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyOjpkaWRDbGVhclNpdGVEYXRhRm9yQWxsUGx1
Z2lucyh1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIE93blB0cjxDbGVhclNpdGVEYXRhU3Rh
dGU+IHN0YXRlID0gbV9wZW5kaW5nQ2xlYXJTaXRlRGF0YS50YWtlKGNhbGxiYWNrSUQpOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxDbGVhclNpdGVEYXRhU3RhdGU+IHN0YXRlID0gbV9wZW5kaW5nQ2xl
YXJTaXRlRGF0YS50YWtlKGNhbGxiYWNrSUQpOwogICAgIEFTU0VSVChzdGF0ZSk7CiAKICAgICBk
aWRDbGVhclNpdGVEYXRhKGNhbGxiYWNrSUQpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmgJ
KHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1dl
YlBsdWdpblNpdGVEYXRhTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiR2VuZXJpY0NhbGxiYWNrLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtNjksMTAgKzcwLDEw
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDbGVhclNpdGVEYXRhRm9yQWxsUGx1Z2lucyh1aW50
NjRfdCBjYWxsYmFja0lEKTsKIAogICAgIGNsYXNzIEdldFNpdGVzV2l0aERhdGFTdGF0ZTsKLSAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBPd25QdHI8R2V0U2l0ZXNXaXRoRGF0YVN0YXRlPj4gbV9wZW5k
aW5nR2V0U2l0ZXNXaXRoRGF0YTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9w
dHI8R2V0U2l0ZXNXaXRoRGF0YVN0YXRlPj4gbV9wZW5kaW5nR2V0U2l0ZXNXaXRoRGF0YTsKIAog
ICAgIGNsYXNzIENsZWFyU2l0ZURhdGFTdGF0ZTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBPd25Q
dHI8Q2xlYXJTaXRlRGF0YVN0YXRlPj4gbV9wZW5kaW5nQ2xlYXJTaXRlRGF0YTsKKyAgICBIYXNo
TWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8Q2xlYXJTaXRlRGF0YVN0YXRlPj4gbV9wZW5k
aW5nQ2xlYXJTaXRlRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNw
cAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0
b3JhZ2VNYXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgorI2luY2x1ZGUg
PG1lbW9yeT4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTYzMSwxNCArNjMyLDE0
IEBAIFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIFMKIAogc3RhdGljIHZv
aWQgY2FsbENhbGxiYWNrRnVuY3Rpb24odm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrRnVu
Y3Rpb24pKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYgc2Vj
dXJpdHlPcmlnaW5zLCB2b2lkKiBjb250ZXh0KSwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4+KiBzZWN1cml0eU9yaWdpbnNQdHIpCiB7Ci0gICAgT3duUHRyPFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+Pj4gc2VjdXJpdHlPcmlnaW5zID0gYWRvcHRQ
dHIoc2VjdXJpdHlPcmlnaW5zUHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+PiBzZWN1cml0eU9yaWdpbnMoc2VjdXJpdHlPcmln
aW5zUHRyKTsKICAgICBjYWxsYmFja0Z1bmN0aW9uKCpzZWN1cml0eU9yaWdpbnMsIGNvbnRleHQp
OwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPcmlnaW5zSW50ZXJuYWwoRnVuY3Rpb25E
aXNwYXRjaGVyKiBkaXNwYXRjaGVyLCB2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2tGdW5j
dGlvbikoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+JiBzZWN1
cml0eU9yaWdpbnMsIHZvaWQqIGNvbnRleHQpKQogewotICAgIE93blB0cjxWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4+IHNlY3VyaXR5T3JpZ2lucyA9IGFkb3B0UHRyKG5l
dyBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4obV9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKSkpOwotICAgIGRpc3BhdGNoZXItPmRpc3BhdGNoKGJp
bmQoY2FsbENhbGxiYWNrRnVuY3Rpb24sIGNvbnRleHQsIGNhbGxiYWNrRnVuY3Rpb24sIHNlY3Vy
aXR5T3JpZ2lucy5sZWFrUHRyKCkpKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2lucyA9IHN0ZDo6
bWFrZV91bmlxdWU8VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+PihtX2xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpKTsKKyAgICBkaXNwYXRjaGVyLT5k
aXNwYXRjaChiaW5kKGNhbGxDYWxsYmFja0Z1bmN0aW9uLCBjb250ZXh0LCBjYWxsYmFja0Z1bmN0
aW9uLCBzZWN1cml0eU9yaWdpbnMucmVsZWFzZSgpKSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFn
ZXI6OmdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5JbnRlcm5hbChGdW5jdGlvbkRpc3BhdGNoZXIq
IGRpc3BhdGNoZXIsIHZvaWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFja0Z1bmN0aW9uKShjb25z
dCBWZWN0b3I8TG9jYWxTdG9yYWdlRGV0YWlscz4mIHN0b3JhZ2VEZXRhaWxzLCB2b2lkKiBjb250
ZXh0KSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lv
biAxNjYyNDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29y
a2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgICAgdm9pZCBhZGRTdXBwbGVtZW50KCkKICAgICB7Ci0gICAgICAgIG1fc3VwcGxl
bWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIGFkb3B0UHRyPFdlYlByb2Nlc3NTdXBwbGVt
ZW50PihuZXcgVCh0aGlzKSkpOworICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVt
ZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+KHRoaXMpKTsKICAgICB9CiAKICAgICBXZWJD
b25uZWN0aW9uVG9VSVByb2Nlc3MqIHdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzcygpIGNvbnN0IHsg
cmV0dXJuIG1fd2ViQ29ubmVjdGlvbi5nZXQoKTsgfQpAQCAtMzAyLDcgKzMwMiw3IEBAIHByaXZh
dGU6CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJGcmFtZSo+IG1fZnJhbWVNYXA7CiAKLSAg
ICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIE93blB0cjxXZWJQcm9jZXNzU3VwcGxlbWVu
dD4sIFB0ckhhc2g8Y29uc3QgY2hhcio+PiBXZWJQcm9jZXNzU3VwcGxlbWVudE1hcDsKKyAgICB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzU3Vw
cGxlbWVudD4sIFB0ckhhc2g8Y29uc3QgY2hhcio+PiBXZWJQcm9jZXNzU3VwcGxlbWVudE1hcDsK
ICAgICBXZWJQcm9jZXNzU3VwcGxlbWVudE1hcCBtX3N1cHBsZW1lbnRzOwogCiAgICAgVGV4dENo
ZWNrZXJTdGF0ZSBtX3RleHRDaGVja2VyU3RhdGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlci5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDggKzUyLDYgQEAgcHVibGljOgogICAgIFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKiBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9r
ZW4pOwogICAgIHZvaWQgcmVtb3ZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24qKTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZVBsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlck1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoSVBDOjpDb25uZWN0aW9uKiwg
T3duUHRyPElQQzo6TWVzc2FnZURlY29kZXI+Jik7Ci0KIHByaXZhdGU6CiAgICAgUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAkocmV2aXNpb24gMTY2MjQ3KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBib29sIFBsdWdpblByb3h5Ojppbml0aWFsaXplKGNv
bnN0IFBhcmFtCiAgICAgbV9jb25uZWN0aW9uLT5hZGRQbHVnaW5Qcm94eSh0aGlzKTsKIAogICAg
IC8vIEFzayB0aGUgcGx1Zy1pbiBwcm9jZXNzIHRvIGNyZWF0ZSBhIHBsdWctaW4uCi0gICAgbV9w
ZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzID0gYWRvcHRQdHIobmV3IFBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVycyk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzID0g
c3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+KCk7CiAKICAgICBtX3Bl
bmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPnBsdWdpbkluc3RhbmNlSUQgPSBtX3BsdWdp
bkluc3RhbmNlSUQ7CiAgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT53aW5k
b3dOUE9iamVjdElEID0gd2luZG93TlBPYmplY3RJRCgpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZv
aWQgUGx1Z2luUHJveHk6OmRpZENyZWF0ZVBsdWdpbkludGVybmEKIAogICAgIC8vIFdoZXRoZXIg
c3luY2hyb25vdXNseSBvciBhc3luY2hyb25vdXNseSwgdGhpcyBwbHVnLWluIHdhcyBjcmVhdGVk
IGFuZCB3ZSBzaG91bGRuJ3QgbmVlZCB0byByZW1lbWJlcgogICAgIC8vIGFueXRoaW5nIGFib3V0
IGhvdy4KLSAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY2xlYXIoKTsKKyAg
ICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSBudWxscHRyOwogICAgIG1fd2Fp
dGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKIH0KIApAQCAtMTg0LDcg
KzE4NCw3IEBAIHZvaWQgUGx1Z2luUHJveHk6OmRpZEZhaWxUb0NyZWF0ZVBsdWdpbkkKIAogICAg
IC8vIFdoZXRoZXIgc3luY2hyb25vdXNseSBvciBhc3luY2hyb25vdXNseSwgdGhpcyBwbHVnLWlu
IGZhaWxlZCB0byBjcmVhdGUgYW5kIHdlIHNob3VsZG4ndCBuZWVkIHRvIHJlbWVtYmVyCiAgICAg
Ly8gYW55dGhpbmcgYWJvdXQgaG93LgotICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1l
dGVycy5jbGVhcigpOworICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyA9IG51
bGxwdHI7CiAgICAgbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbiA9IGZhbHNl
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRS
ZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPG1l
bW9yeT4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTIxMSw3ICsyMTIsNyBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBjbGllbnQgSUQgZm9yIHRo
ZSBDQSBsYXllciBpbiB0aGUgcGx1Zy1pbiBwcm9jZXNzLiBXaWxsIGJlIDAgaWYgdGhlIHBsdWct
aW4gaXMgbm90IGEgQ0EgcGx1Zy1pbi4KICAgICB1aW50MzJfdCBtX3JlbW90ZUxheWVyQ2xpZW50
SUQ7CiAgICAgCi0gICAgT3duUHRyPFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycz4gbV9wZW5kaW5n
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnM+IG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczsKICAgICBi
b29sIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb247CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI0LDcgKzgy
NCw3IEBAIFN0cmluZyBQbHVnaW5WaWV3OjpnZXRTZWxlY3Rpb25TdHJpbmcoKQogICAgIHJldHVy
biBtX3BsdWdpbi0+Z2V0U2VsZWN0aW9uU3RyaW5nKCk7CiB9CiAKLU93blB0cjxXZWJFdmVudD4g
UGx1Z2luVmlldzo6Y3JlYXRlV2ViRXZlbnQoTW91c2VFdmVudCogZXZlbnQpIGNvbnN0CitzdGQ6
OnVuaXF1ZV9wdHI8V2ViRXZlbnQ+IFBsdWdpblZpZXc6OmNyZWF0ZVdlYkV2ZW50KE1vdXNlRXZl
bnQqIGV2ZW50KSBjb25zdAogewogICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUgPSBXZWJFdmVudDo6
Tm9UeXBlOwogICAgIHVuc2lnbmVkIGNsaWNrQ291bnQgPSAxOwpAQCAtODY2LDcgKzg2Niw3IEBA
IE93blB0cjxXZWJFdmVudD4gUGx1Z2luVmlldzo6Y3JlYXRlV2ViRXYKICAgICBpZiAoZXZlbnQt
Pm1ldGFLZXkoKSkKICAgICAgICAgbW9kaWZpZXJzIHw9IFdlYkV2ZW50OjpNZXRhS2V5OwogCi0g
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJNb3VzZUV2ZW50KHR5cGUsIGJ1dHRvbiwgbV9wbHVn
aW4tPmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KGV2ZW50LT5vZmZzZXRYKCksIGV2ZW50LT5v
ZmZzZXRZKCkpKSwgZXZlbnQtPnNjcmVlbkxvY2F0aW9uKCksIDAsIDAsIDAsIGNsaWNrQ291bnQs
IHN0YXRpY19jYXN0PFdlYkV2ZW50OjpNb2RpZmllcnM+KG1vZGlmaWVycyksIDApKTsKKyAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJNb3VzZUV2ZW50Pih0eXBlLCBidXR0b24sIG1fcGx1
Z2luLT5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludChldmVudC0+b2Zmc2V0WCgpLCBldmVudC0+
b2Zmc2V0WSgpKSksIGV2ZW50LT5zY3JlZW5Mb2NhdGlvbigpLCAwLCAwLCAwLCBjbGlja0NvdW50
LCBzdGF0aWNfY2FzdDxXZWJFdmVudDo6TW9kaWZpZXJzPihtb2RpZmllcnMpLCAwKTsKIH0KIAog
dm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQpCkBAIC04NzUsNyArODc1
LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVFdmVudChFdmVudCogZXZlbgogICAgICAgICBy
ZXR1cm47CiAKICAgICBjb25zdCBXZWJFdmVudCogY3VycmVudEV2ZW50ID0gV2ViUGFnZTo6Y3Vy
cmVudEV2ZW50KCk7Ci0gICAgT3duUHRyPFdlYkV2ZW50PiBzaW11bGF0ZWRXZWJFdmVudDsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViRXZlbnQ+IHNpbXVsYXRlZFdlYkV2ZW50OwogICAgIGlmIChl
dmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgdG9Nb3VzZUV2ZW50KGV2ZW50KS0+aXNTaW11bGF0ZWQo
KSkgewogICAgICAgICBzaW11bGF0ZWRXZWJFdmVudCA9IGNyZWF0ZVdlYkV2ZW50KHRvTW91c2VF
dmVudChldmVudCkpOwogICAgICAgICBjdXJyZW50RXZlbnQgPSBzaW11bGF0ZWRXZWJFdmVudC5n
ZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGlt
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdTdGF0ZS5oPgorI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCkBAIC0y
MjIsNyArMjIzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZChX
ZWJGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZChXZWJGcmFtZSosIGJvb2wg
d2FzQ2FuY2VsbGVkKTsKIAotICAgIE93blB0cjxXZWJFdmVudD4gY3JlYXRlV2ViRXZlbnQoV2Vi
Q29yZTo6TW91c2VFdmVudCopIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJFdmVudD4g
Y3JlYXRlV2ViRXZlbnQoV2ViQ29yZTo6TW91c2VFdmVudCopIGNvbnN0OwogCiAgICAgUmVmUHRy
PFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50PiBtX3BsdWdpbkVsZW1lbnQ7CiAgICAgUmVmUHRy
PFBsdWdpbj4gbV9wbHVnaW47CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5j
cy5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNDksMTEgKzUwLDExIEBAIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvcihOZXRzY2FwZVBsdWdp
biogcGx1Z2luKQogICAgIHsKICAgICAgICAgaWYgKHBsdWdpbikKLSAgICAgICAgICAgIG1fcHJv
dGVjdG9yID0gYWRvcHRQdHIobmV3IFBsdWdpbkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9u
UHJvdGVjdG9yKHN0YXRpY19jYXN0PFBsdWdpbio+KHBsdWdpbiktPmNvbnRyb2xsZXIoKSkpOwor
ICAgICAgICAgICAgbV9wcm90ZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbkNvbnRyb2xs
ZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yPihzdGF0aWNfY2FzdDxQbHVnaW4qPihwbHVn
aW4pLT5jb250cm9sbGVyKCkpOwogICAgIH0KICAgICAKIHByaXZhdGU6Ci0gICAgT3duUHRyPFBs
dWdpbkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yPiBtX3Byb3RlY3RvcjsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luQ29udHJvbGxlcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Q
cm90ZWN0b3I+IG1fcHJvdGVjdG9yOwogfTsKIAogc3RhdGljIGJvb2wgc3RhcnRzV2l0aEJsYW5r
TGluZShjb25zdCBjaGFyKiBieXRlcywgdW5zaWduZWQgbGVuZ3RoKQpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJOZXRzY2Fw
ZVBsdWdpbi5oIgogI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtMTg3LDcgKzE4Niw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRh
KGMKIAogICAgIGlmIChtX3RyYW5zZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZKSB7CiAgICAgICAg
IGlmICghbV9kZWxpdmVyeURhdGEpCi0gICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IGFkb3B0
UHRyKG5ldyBWZWN0b3I8dWludDhfdD4pOworICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFZlY3Rvcjx1aW50OF90Pj4oKTsKIAogICAgICAgICBtX2RlbGl2ZXJ5
RGF0YS0+cmVzZXJ2ZUNhcGFjaXR5KG1fZGVsaXZlcnlEYXRhLT5zaXplKCkgKyBsZW5ndGgpOwog
ICAgICAgICBtX2RlbGl2ZXJ5RGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5hbC5oPgor
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTEwNiw3ICsx
MDcsNyBAQCBwcml2YXRlOgogICAgIENTdHJpbmcgbV9oZWFkZXJzOwogCiAgICAgUnVuTG9vcDo6
VGltZXI8TmV0c2NhcGVQbHVnaW5TdHJlYW0+IG1fZGVsaXZlcnlEYXRhVGltZXI7Ci0gICAgT3du
UHRyPCBWZWN0b3I8dWludDhfdD4+IG1fZGVsaXZlcnlEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8dWludDhfdD4+IG1fZGVsaXZlcnlEYXRhOwogICAgIGJvb2wgbV9zdG9wU3RyZWFt
V2hlbkRvbmVEZWxpdmVyaW5nOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oCShyZXZpc2lvbiAx
NjYyNDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBv
cHVwTWVudS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiV2Vi
UG9wdXBJdGVtLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Qb3B1cE1lbnUuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCShyZXZpc2lvbiAx
NjYyNDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRj
aGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBQYXNzUmVmUHRyPEV2ZW50
RGlzcGF0Y2hlcj4gRXZlbnREaXNwYXRjCiAKIEV2ZW50RGlzcGF0Y2hlcjo6RXZlbnREaXNwYXRj
aGVyKCkKICAgICA6IG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQu
RXZlbnREaXNwYXRjaGVyIikpCi0gICAgLCBtX3JlY2VudFdoZWVsRXZlbnREZWx0YVRyYWNrZXIo
YWRvcHRQdHIobmV3IFdoZWVsRXZlbnREZWx0YVRyYWNrZXIpKQorICAgICwgbV9yZWNlbnRXaGVl
bEV2ZW50RGVsdGFUcmFja2VyKHN0ZDo6bWFrZV91bmlxdWU8V2hlZWxFdmVudERlbHRhVHJhY2tl
cj4oKSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCiAjaW5jbHVkZSA8
V2ViQ29yZS9XaGVlbEV2ZW50RGVsdGFUcmFja2VyLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNzgsNyArNzksNyBAQCBwcml2YXRlOgogICAgIE11dGV4
IG1fc2Nyb2xsaW5nVHJlZXNNdXRleDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2Vi
Q29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlPj4gbV9zY3JvbGxpbmdUcmVlczsKICNlbmRpZgot
ICAgIE93blB0cjxXZWJDb3JlOjpXaGVlbEV2ZW50RGVsdGFUcmFja2VyPiBtX3JlY2VudFdoZWVs
RXZlbnREZWx0YVRyYWNrZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OldoZWVsRXZl
bnREZWx0YVRyYWNrZXI+IG1fcmVjZW50V2hlZWxFdmVudERlbHRhVHJhY2tlcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNyAr
MzMxLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0CiAKICAgICBw
YWdlQ2xpZW50cy52aXNpdGVkTGlua1N0b3JlID0gVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6
OmdldE9yQ3JlYXRlKHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEKTsKIAotICAgIG1fcGFn
ZSA9IGFkb3B0UHRyKG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7CisgICAgbV9wYWdlID0gc3RkOjpt
YWtlX3VuaXF1ZTxQYWdlPihwYWdlQ2xpZW50cyk7CiAKICAgICBtX2RyYXdpbmdBcmVhID0gRHJh
d2luZ0FyZWE6OmNyZWF0ZSh0aGlzLCBwYXJhbWV0ZXJzKTsKICAgICBtX2RyYXdpbmdBcmVhLT5z
ZXRQYWludGluZ0VuYWJsZWQoZmFsc2UpOwpAQCAtMzUyMiw3ICszNTIyLDcgQEAgdm9pZCBXZWJQ
YWdlOjpiZWdpblByaW50aW5nKHVpbnQ2NF90IGZyYQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
IAogICAgIGlmICghbV9wcmludENvbnRleHQpCi0gICAgICAgIG1fcHJpbnRDb250ZXh0ID0gYWRv
cHRQdHIobmV3IFByaW50Q29udGV4dChjb3JlRnJhbWUpKTsKKyAgICAgICAgbV9wcmludENvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZyYW1lKTsKIAogICAgIGRy
YXdpbmdBcmVhKCktPnNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4odHJ1ZSk7CiAgICAgbV9wcmlu
dENvbnRleHQtPmJlZ2luKHByaW50SW5mby5hdmFpbGFibGVQYXBlcldpZHRoLCBwcmludEluZm8u
YXZhaWxhYmxlUGFwZXJIZWlnaHQpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw4ICs2MCw4
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9WaWV3U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zp
ZXdwb3J0Q29uZmlndXJhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUtleWJvYXJk
VUlNb2RlLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0j
aW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
OTU3LDcgKzk1Nyw3IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKIAotICAg
IE93blB0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlBhZ2U+IG1fcGFnZTsKICAgICBSZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwogICAg
IFJlZlB0cjxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7
CiAKQEAgLTEwODksNyArMTA4OSw3IEBAIHByaXZhdGU6CiAgICAgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsK
ICNlbmRpZgogCi0gICAgT3duUHRyPFdlYkNvcmU6OlByaW50Q29udGV4dD4gbV9wcmludENvbnRl
eHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlByaW50Q29udGV4dD4gbV9wcmludENv
bnRleHQ7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFJlZlB0cjxXZWJQcmludE9wZXJhdGlvbkd0
az4gbV9wcmludE9wZXJhdGlvbjsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230243</attachid>
            <date>2014-04-26 06:29:38 -0700</date>
            <delta_ts>2014-04-27 06:40:42 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-129670-20140426062914.patch</filename>
            <type>text/plain</type>
            <size>48065</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Nzg0MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBACisyMDE0LTA0LTI1ICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIGNyb3NzLXBvcnQg
V2ViS2l0MiBjb2RlIHRvIHN0ZDo6dW5pcXVlX3B0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgUmVwbGFjZSB1c2VzIG9mIE93blB0ciwgUGFzc093blB0ciBp
biBjcm9zcy1wb3J0IFdlYktpdDIgY29kZSB3aXRoIHN0ZDo6dW5pcXVlX3B0ci4KKworICAgICAg
ICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFj
a2luZ1N0b3JlU1FMaXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2VC
YWNraW5nU3RvcmVTUUxpdGU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRTdXBwbGVtZW50KToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1N5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5o
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9NZXNzYWdlUmVjZWl2ZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Nb2R1bGUuaDoKKyAgICAg
ICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9lZmwvTW9kdWxl
RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9kdWxlOjpsb2FkKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbToKKyAgICAgICAgKiBTaGFyZWQvQVBJVVJM
Lmg6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3Rv
Y29sTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFw
LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0luc3Bl
Y3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2Nr
ZXRTZXJ2ZXI6OmRpZEFjY2VwdENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2Nr
ZXRTZXJ2ZXI6OmRpZENsb3NlV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3NvdXAvV2ViU29ja2V0U2VydmVyU291cC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmNvbm5lY3Rpb25DYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmdldFNpdGVzV2l0aERhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmNsZWFyU2l0ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmRpZEdldFNpdGVzV2l0aERh
dGFGb3JBbGxQbHVnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luU2l0ZURhdGFNYW5h
Z2VyOjpkaWRDbGVhclNpdGVEYXRhRm9yQWxsUGx1Z2lucyk6CisgICAgICAgICogVUlQcm9jZXNz
L1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpjYWxsQ2FsbGJh
Y2tGdW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRPcmlnaW5z
SW50ZXJuYWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjphcmVCZWluZ1Byb2Nlc3Nl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmNyZWF0
ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6
OmFkZCk6CisgICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6Om5l
eHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZU1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpj
cmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3Nl
ckZ1bmNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I6
OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5Qcm94eTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojpk
aWRDcmVhdGVQbHVnaW5JbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojpk
aWRGYWlsVG9DcmVhdGVQbHVnaW5JbnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpjcmVhdGVXZWJFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUG9wdXBNZW51Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0Y2hlcjo6RXZl
bnREaXNwYXRjaGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRj
aGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
YmVnaW5QcmludGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6YWRkU3VwcGxlbWVudCk6CisKIDIwMTQtMDQtMjUgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFN5bnRoZXNpemVkIGdldHRlciBmb3Ig
V0tOYXZpZ2F0aW9uQWN0aW9uJ3MgX3VzZXJJbml0aWF0ZWQgcHJvcGVydHkgaGFzIHRoZSB3cm9u
ZyBuYW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3Nx
bGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVl
SURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuY3BwCShyZXZpc2lvbiAxNjc4NDIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJE
YXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMCw3ICs2
MzAsNyBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlCiAKICAgICBt
X2N1cnNvcnMuc2V0KGN1cnNvci0+aWRlbnRpZmllcigpLCBjdXJzb3IpOwogCi0gICAgT3duUHRy
PEpTTG9ja0hvbGRlcj4gbG9ja2VyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0xvY2tIb2xkZXI+
IGxvY2tlcjsKICAgICB3aGlsZSAoIWN1cnNvci0+Y3VycmVudEtleSgpLmlzTnVsbCkgewogICAg
ICAgICBjb25zdCBJREJLZXlEYXRhJiBrZXkgPSBjdXJzb3ItPmN1cnJlbnRLZXkoKTsKICAgICAg
ICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2YWx1ZUJ1ZmZlciA9IGN1cnNvci0+Y3VycmVudFZh
bHVlQnVmZmVyKCk7CkBAIC02MzgsMTIgKzYzOCwxMiBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNl
QmFja2luZ1N0b3JlU1FMaXRlCiAgICAgICAgIGlmICghbV9nbG9iYWxPYmplY3QpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghbV92bSk7CiAgICAgICAgICAgICBtX3ZtID0gVk06OmNyZWF0ZSgpOwot
ICAgICAgICAgICAgbG9ja2VyID0gYWRvcHRQdHIobmV3IEpTTG9ja0hvbGRlcihtX3ZtLmdldCgp
KSk7CisgICAgICAgICAgICBsb2NrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTTG9ja0hvbGRlcj4o
bV92bS5nZXQoKSk7CiAgICAgICAgICAgICBtX2dsb2JhbE9iamVjdC5zZXQoKm1fdm0sIEpTR2xv
YmFsT2JqZWN0OjpjcmVhdGUoKm1fdm0sIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
Km1fdm0sIGpzTnVsbCgpKSkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFsb2NrZXIpCi0g
ICAgICAgICAgICBsb2NrZXIgPSBhZG9wdFB0cihuZXcgSlNMb2NrSG9sZGVyKG1fdm0uZ2V0KCkp
KTsKKyAgICAgICAgICAgIGxvY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8SlNMb2NrSG9sZGVyPiht
X3ZtLmdldCgpKTsKIAogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRl
c2VyaWFsaXplSURCVmFsdWVCdWZmZXIobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgdmFs
dWVCdWZmZXIsIHRydWUpOwogICAgICAgICBWZWN0b3I8SURCS2V5RGF0YT4gaW5kZXhLZXlzOwpJ
bmRleDogU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5p
cXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFz
ZUJhY2tpbmdTdG9yZVNRTGl0ZS5oCShyZXZpc2lvbiAxNjc4NDIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tp
bmdTdG9yZVNRTGl0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVk
ZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIgCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VCYWNr
aW5nU3RvcmUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KLSNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAxNjc4NDIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lv
bklELmg+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTYzLDcgKzY0LDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAg
ewotICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBhZG9wdFB0
cjxOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ+KG5ldyBUKHRoaXMpKSk7CisgICAgICAgIG1fc3Vw
cGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VD4odGhp
cykpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqKTsKQEAgLTEzNCw3ICsxMzUsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9oYXNTZXRDYWNoZU1vZGVsOwogICAgIENhY2hlTW9kZWwgbV9j
YWNoZU1vZGVsOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIqLCBPd25QdHI8TmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IE5ldHdvcmtQcm9j
ZXNzU3VwcGxlbWVudE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNoYXIq
Pj4gTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50TWFwOwogICAgIE5ldHdvcmtQcm9jZXNzU3VwcGxl
bWVudE1hcCBtX3N1cHBsZW1lbnRzOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1N5bmNocm9u
b3VzTmV0d29ya0xvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDE2Nzg0MikKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL1N5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBTeW5jaHJvbm91c05ldHdvcmtM
b2FkZXJDbGllbnQ6OmRpZAogICAgIC8vIEl0J3MgdW5jbGVhciBpZiB0aGUgcG90ZW50aWFsIGNv
bXBsZXhpdGllcyBvZiB0aGF0IGFwcHJvYWNoIGFyZSB3b3J0aCBpdC4KICAgICAKICAgICBpZiAo
IW1fcmVzcG9uc2VEYXRhKQotICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGFkb3B0UHRyKG5ldyBW
ZWN0b3I8Y2hhcj4pOworICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
VmVjdG9yPGNoYXI+PigpOwogCiAgICAgbV9yZXNwb25zZURhdGEtPmFwcGVuZChidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50
LmgJKHJldmlzaW9uIDE2Nzg0MikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1N5
bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2UuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAog
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkBAIC02Niw3ICs2Nyw3IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9y
bVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiBtX2RlbGF5ZWRSZXBseTsKICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBtX2Vycm9yOwotICAgIE93blB0cjxWZWN0b3I8Y2hhcj4+IG1fcmVzcG9uc2VEYXRhOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8Y2hhcj4+IG1fcmVzcG9uc2VEYXRhOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3Jr
UXVldWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUu
aAkocmV2aXNpb24gMTY3ODQyKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAJKHJldmlz
aW9uIDE2Nzg0MikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMjc3LDcgKzI3OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6
cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVIKIAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKiB3b3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIsIE1lc3NhZ2VEZWNvZGVyKiBpbmNvbWluZ01lc3NhZ2VEZWNv
ZGVyKQogewotICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9IGFkb3B0UHRyKGlu
Y29taW5nTWVzc2FnZURlY29kZXIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rl
cj4gZGVjb2RlcihpbmNvbWluZ01lc3NhZ2VEZWNvZGVyKTsKIAogICAgIGlmICghZGVjb2Rlci0+
aXNTeW5jTWVzc2FnZSgpKSB7CiAgICAgICAgIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci0+ZGlk
UmVjZWl2ZU1lc3NhZ2UodGhpcywgKmRlY29kZXIpOwpJbmRleDogU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAxNjc4NDIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2
IEBACiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBPUyhEQVJXSU4pCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlci5oCShyZXZpc2lvbiAxNjc4
NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgTWVzc2FnZVJlY2VpdmVyX2gK
IAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgog
CiBuYW1lc3BhY2UgSVBDIHsKIApJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL01v
ZHVsZUVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL01v
ZHVsZUVmbC5jcHAJKHJldmlzaW9uIDE2Nzg0MikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L2VmbC9Nb2R1bGVFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTW9kdWxlLmgiCiAKLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpJbmRleDogU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0JKHJldmlzaW9uIDE2Nzg0
MikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKIAotI2ltcG9ydCA8d3RmL093blB0ci5oPgog
I2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAKICNpZiBfX2hhc19pbmNsdWRlKDxR
dWFydHpDb3JlL1F1YXJ0ekNvcmVQcml2YXRlLmg+KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSVVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElVUkwu
aAkocmV2aXNpb24gMTY3ODQyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVVSTC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw2IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCShyZXZp
c2lvbiAxNjc4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIlNoYXJlZE1lbW9y
eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgJKHJldmlzaW9uIDE2Nzg0MikKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJv
dG9jb2w7CisjZWxzZQorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlckltcGwuaCIKICNl
bmRpZgogCiAKQEAgLTU1LDcgKzU3LDYgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBDaGlsZFByb2Nlc3M7Ci1jbGFzcyBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJJbXBsOwogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwog
CiBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1l
bnQsIHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6OkNvbm5lY3Rp
b246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwCShyZXZpc2lvbiAxNjc4
NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJOUE9iamVjdFBy
b3h5LmgiCiAjaW5jbHVkZSAiTlBSdW50aW1lVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTlBWYXJp
YW50RGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
SW1wbC5oCShyZXZpc2lvbiAxNjc4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lu
Y2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKICNp
bmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxNjc4NDIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTcxLDIxICsxNzEsMjEgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEV4Y2VlZGVkRGF0
YWJhc2VRdW90YVJlY29yZHMmIHNoYXJlZCgpOwogCi0gICAgUGFzc093blB0cjxSZWNvcmQ+IGNy
ZWF0ZVJlY29yZCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVjb3JkPiBjcmVhdGVSZWNvcmQodWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG9yaWdpbklkZW50aWZpZXIsCiAgICAgICAgIFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0
cmluZyBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLAogICAgICAgICB1aW50NjRf
dCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50
NjRfdCBleHBlY3RlZFVzYWdlLCAKICAgICAgICAgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4pOwogCi0gICAgdm9p
ZCBhZGQoUGFzc093blB0cjxSZWNvcmQ+KTsKLSAgICBib29sIGFyZUJlaW5nUHJvY2Vzc2VkKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50UmVjb3JkOyB9CisgICAgdm9pZCBhZGQoc3RkOjp1bmlx
dWVfcHRyPFJlY29yZD4pOworICAgIGJvb2wgYXJlQmVpbmdQcm9jZXNzZWQoKSBjb25zdCB7IHJl
dHVybiAhIW1fY3VycmVudFJlY29yZDsgfQogICAgIFJlY29yZCogbmV4dCgpOwogCiBwcml2YXRl
OgogICAgIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHMoKSB7IH0KICAgICB+RXhjZWVkZWRE
YXRhYmFzZVF1b3RhUmVjb3JkcygpIHsgfQogCi0gICAgRGVxdWU8T3duUHRyPFJlY29yZD4+IG1f
cmVjb3JkczsKLSAgICBPd25QdHI8UmVjb3JkPiBtX2N1cnJlbnRSZWNvcmQ7CisgICAgRGVxdWU8
c3RkOjp1bmlxdWVfcHRyPFJlY29yZD4+IG1fcmVjb3JkczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVjb3JkPiBtX2N1cnJlbnRSZWNvcmQ7CiB9OwogCiBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNv
cmRzJiBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpzaGFyZWQoKQpAQCAtMTk0LDEyICsx
OTQsMTIgQEAgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcyYgRXhjZWVkZWREYQogICAgIHJl
dHVybiByZWNvcmRzOwogfQogCi1QYXNzT3duUHRyPEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29y
ZHM6OlJlY29yZD4gRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6Y3JlYXRlUmVjb3JkKAor
c3RkOjp1bmlxdWVfcHRyPEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OlJlY29yZD4gRXhj
ZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6Y3JlYXRlUmVjb3JkKAogICAgIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBTdHJpbmcgZGF0YWJhc2VOYW1lLCBTdHJp
bmcgZGlzcGxheU5hbWUsCiAgICAgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLAogICAgIHVpbnQ2
NF90IGV4cGVjdGVkVXNhZ2UsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhj
ZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+IHJlcGx5KQogewotICAgIE93blB0cjxS
ZWNvcmQ+IHJlY29yZCA9IGFkb3B0UHRyKG5ldyBSZWNvcmQpOworICAgIGF1dG8gcmVjb3JkID0g
c3RkOjptYWtlX3VuaXF1ZTxSZWNvcmQ+KCk7CiAgICAgcmVjb3JkLT5mcmFtZUlEID0gZnJhbWVJ
RDsKICAgICByZWNvcmQtPm9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW5JZGVudGlmaWVyOwogICAg
IHJlY29yZC0+ZGF0YWJhc2VOYW1lID0gZGF0YWJhc2VOYW1lOwpAQCAtMjA5LDE3ICsyMDksMTcg
QEAgUGFzc093blB0cjxFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOgogICAgIHJlY29yZC0+
Y3VycmVudERhdGFiYXNlVXNhZ2UgPSBjdXJyZW50RGF0YWJhc2VVc2FnZTsKICAgICByZWNvcmQt
PmV4cGVjdGVkVXNhZ2UgPSBleHBlY3RlZFVzYWdlOwogICAgIHJlY29yZC0+cmVwbHkgPSByZXBs
eTsKLSAgICByZXR1cm4gcmVjb3JkLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc3RkOjptb3ZlKHJl
Y29yZCk7CiB9CiAKLXZvaWQgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6YWRkKFBhc3NP
d25QdHI8RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiByZWNvcmQpCit2b2lk
IEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmFkZChzdGQ6OnVuaXF1ZV9wdHI8RXhjZWVk
ZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiByZWNvcmQpCiB7Ci0gICAgbV9yZWNvcmRz
LmFwcGVuZChyZWNvcmQpOworICAgIG1fcmVjb3Jkcy5hcHBlbmQoc3RkOjptb3ZlKHJlY29yZCkp
OwogfQogCiBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQqIEV4Y2VlZGVkRGF0
YWJhc2VRdW90YVJlY29yZHM6Om5leHQoKQogewotICAgIG1fY3VycmVudFJlY29yZC5jbGVhcigp
OworICAgIG1fY3VycmVudFJlY29yZCA9IG51bGxwdHI7CiAgICAgaWYgKCFtX3JlY29yZHMuaXNF
bXB0eSgpKQogICAgICAgICBtX2N1cnJlbnRSZWNvcmQgPSBtX3JlY29yZHMudGFrZUZpcnN0KCk7
CiAgICAgcmV0dXJuIG1fY3VycmVudFJlY29yZC5nZXQoKTsKQEAgLTEyNjQsNyArMTI2NCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVNb3VzZUV2ZW50KGNvbnMKICAgICAgICAgbV9wcm9j
ZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiAgICAgZWxzZSB7CiAgICAgICAg
IGlmIChtX3Byb2Nlc3NpbmdNb3VzZU1vdmVFdmVudCkgewotICAgICAgICAgICAgbV9uZXh0TW91
c2VNb3ZlRXZlbnQgPSBhZG9wdFB0cihuZXcgTmF0aXZlV2ViTW91c2VFdmVudChldmVudCkpOwor
ICAgICAgICAgICAgbV9uZXh0TW91c2VNb3ZlRXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdGl2
ZVdlYk1vdXNlRXZlbnQ+KGV2ZW50KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC0xMjc2LDcgKzEyNzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlTW91c2VFdmVu
dChjb25zCiAgICAgLy8gd2UgZmFrZSBhIG1vdXNlIHVwIGV2ZW50IGJ5IHVzaW5nIHRoaXMgc3Rv
cmVkIGRvd24gZXZlbnQuIFRoaXMgZXZlbnQgZ2V0cyBjbGVhcmVkCiAgICAgLy8gd2hlbiB0aGUg
bW91c2UgdXAgbWVzc2FnZSBpcyByZWNlaXZlZCBmcm9tIFdlYlByb2Nlc3MuCiAgICAgaWYgKGV2
ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKQotICAgICAgICBtX2N1cnJlbnRseVBy
b2Nlc3NlZE1vdXNlRG93bkV2ZW50ID0gYWRvcHRQdHIobmV3IE5hdGl2ZVdlYk1vdXNlRXZlbnQo
ZXZlbnQpKTsKKyAgICAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRNb3VzZURvd25FdmVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8TmF0aXZlV2ViTW91c2VFdmVudD4oZXZlbnQpOwogCiAgICAgaWYgKG1f
c2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkpIHsKICAgICAgICAgYm9vbCBoYW5kbGVkID0g
ZmFsc2U7CkBAIC0xMzcyLDE3ICsxMzcyLDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVX
aGVlbEV2ZW50KGNvbnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE93blB0cjxWZWN0
b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+IGNvYWxlc2NlZFdoZWVsRXZlbnQgPSBhZG9wdFB0cihu
ZXcgVmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+KTsKKyAgICBhdXRvIGNvYWxlc2NlZFdoZWVs
RXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsK
ICAgICBjb2FsZXNjZWRXaGVlbEV2ZW50LT5hcHBlbmQoZXZlbnQpOwotICAgIG1fY3VycmVudGx5
UHJvY2Vzc2VkV2hlZWxFdmVudHMuYXBwZW5kKGNvYWxlc2NlZFdoZWVsRXZlbnQucmVsZWFzZSgp
KTsKKyAgICBtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRzLmFwcGVuZChzdGQ6Om1vdmUo
Y29hbGVzY2VkV2hlZWxFdmVudCkpOwogICAgIHNlbmRXaGVlbEV2ZW50KGV2ZW50KTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCgpCiB7Ci0gICAg
T3duUHRyPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4gbmV4dENvYWxlc2NlZEV2ZW50ID0g
YWRvcHRQdHIobmV3IFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pik7CisgICAgYXV0byBuZXh0
Q29hbGVzY2VkRXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2
ZW50Pj4oKTsKICAgICBXZWJXaGVlbEV2ZW50IG5leHRXaGVlbEV2ZW50ID0gY29hbGVzY2VkV2hl
ZWxFdmVudChtX3doZWVsRXZlbnRRdWV1ZSwgKm5leHRDb2FsZXNjZWRFdmVudC5nZXQoKSk7Ci0g
ICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQobmV4dENvYWxlc2NlZEV2
ZW50LnJlbGVhc2UoKSk7CisgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBl
bmQoc3RkOjptb3ZlKG5leHRDb2FsZXNjZWRFdmVudCkpOwogICAgIHNlbmRXaGVlbEV2ZW50KG5l
eHRXaGVlbEV2ZW50KTsKIH0KIApAQCAtMzc4Nyw3ICszNzg3LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MwogICAgIGNhc2UgV2ViRXZlbnQ6OldoZWVsOiB7CiAg
ICAgICAgIE1FU1NBR0VfQ0hFQ0soIW1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMuaXNF
bXB0eSgpKTsKIAotICAgICAgICBPd25QdHI8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PiBv
bGRlc3RDb2FsZXNjZWRFdmVudCA9IG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMudGFr
ZUZpcnN0KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8TmF0aXZlV2ViV2hlZWxF
dmVudD4+IG9sZGVzdENvYWxlc2NlZEV2ZW50ID0gbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2
ZW50cy50YWtlRmlyc3QoKTsKIAogICAgICAgICAvLyBGSVhNRTogRGlzcGF0Y2ggYWRkaXRpb25h
bCBldmVudHMgdG8gdGhlIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQgY2xpZW50IGZ1bmN0aW9uLgog
ICAgICAgICBpZiAoIWhhbmRsZWQpIHsKQEAgLTQzMDEsMTAgKzQzMDEsMTAgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdAogdm9pZCBXZWJQYWdlUHJveHk6OmV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2Fn
ZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2Us
IFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3Rh
OjpEZWxheWVkUmVwbHk+IHJlcGx5KQogewogICAgIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29y
ZHMmIHJlY29yZHMgPSBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpzaGFyZWQoKTsKLSAg
ICBPd25QdHI8RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBuZXdSZWNvcmQg
PSAgcmVjb3Jkcy5jcmVhdGVSZWNvcmQoZnJhbWVJRCwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhj
ZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBuZXdSZWNvcmQgPSByZWNvcmRzLmNy
ZWF0ZVJlY29yZChmcmFtZUlELAogICAgICAgICBvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZU5h
bWUsIGRpc3BsYXlOYW1lLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwKICAgICAg
ICAgY3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UsIHJlcGx5KTsKLSAgICByZWNv
cmRzLmFkZChuZXdSZWNvcmQucmVsZWFzZSgpKTsKKyAgICByZWNvcmRzLmFkZChzdGQ6Om1vdmUo
bmV3UmVjb3JkKSk7CiAKICAgICBpZiAocmVjb3Jkcy5hcmVCZWluZ1Byb2Nlc3NlZCgpKQogICAg
ICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CShyZXZpc2lvbiAxNjc4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDEwICs2OCw5IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9UZXh0Q2hlY2tpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRHcmFudWxhcml0eS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVmlld1N0YXRlLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CkBAIC0xNTU0LDExICsxNTUzLDExIEBAIHByaXZhdGU6CiAKICAgICBEZXF1ZTxOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50PiBtX2tleUV2ZW50UXVldWU7CiAgICAgRGVxdWU8TmF0aXZlV2ViV2hl
ZWxFdmVudD4gbV93aGVlbEV2ZW50UXVldWU7Ci0gICAgRGVxdWU8T3duUHRyPFZlY3RvcjxOYXRp
dmVXZWJXaGVlbEV2ZW50Pj4+IG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHM7CisgICAg
RGVxdWU8c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4+IG1fY3Vy
cmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHM7CiAKICAgICBib29sIG1fcHJvY2Vzc2luZ01vdXNl
TW92ZUV2ZW50OwotICAgIE93blB0cjxOYXRpdmVXZWJNb3VzZUV2ZW50PiBtX25leHRNb3VzZU1v
dmVFdmVudDsKLSAgICBPd25QdHI8TmF0aXZlV2ViTW91c2VFdmVudD4gbV9jdXJyZW50bHlQcm9j
ZXNzZWRNb3VzZURvd25FdmVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmF0aXZlV2ViTW91c2VF
dmVudD4gbV9uZXh0TW91c2VNb3ZlRXZlbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5hdGl2ZVdl
Yk1vdXNlRXZlbnQ+IG1fY3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3duRXZlbnQ7CiAKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGJvb2wgbV9pc1RyYWNraW5nVG91Y2hFdmVudHM7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2
aXNpb24gMTY3ODQyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0NSw3ICs1NDUsNyBAQCBEb3dubG9hZFByb3h5KiBX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZURvCiAjZW5kaWYKIAogICAgIGlmICghbV9kb3dubG9hZFBy
b3h5TWFwKQotICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAgPSBhZG9wdFB0cihuZXcgRG93bmxv
YWRQcm94eU1hcCh0aGlzKSk7CisgICAgICAgIG1fZG93bmxvYWRQcm94eU1hcCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RG93bmxvYWRQcm94eU1hcD4odGhpcyk7CiAKICAgICByZXR1cm4gbV9kb3dubG9h
ZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fY29udGV4dC5nZXQoKSk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAx
Njc4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
TGlua0hhc2guaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBA
IC0yMDQsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJGcmFtZVByb3h5TWFwIG1fZnJhbWVN
YXA7CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbU1hcCBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1N
YXA7CiAKLSAgICBPd25QdHI8RG93bmxvYWRQcm94eU1hcD4gbV9kb3dubG9hZFByb3h5TWFwOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZFByb3h5TWFwPiBtX2Rvd25sb2FkUHJveHlNYXA7
CiAKICNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eSBtX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OwpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0
U2VydmVyLmNwcAkocmV2aXNpb24gMTY3ODQyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw3ICszMiw2IEBACiAKICNpbmNsdWRlICJXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1IYW5kbGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNzgsMjAgKzc3LDIw
IEBAIHZvaWQgV2ViU29ja2V0U2VydmVyOjpjbG9zZSgpCiAgICAgbV9iaW5kQWRkcmVzcyA9IFN0
cmluZygpOwogfQogCi12b2lkIFdlYlNvY2tldFNlcnZlcjo6ZGlkQWNjZXB0Q29ubmVjdGlvbihQ
YXNzT3duUHRyPFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24+IGNvbm5lY3Rpb24pCit2b2lkIFdl
YlNvY2tldFNlcnZlcjo6ZGlkQWNjZXB0Q29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V2ViU29j
a2V0U2VydmVyQ29ubmVjdGlvbj4gY29ubmVjdGlvbikKIHsKLSAgICBtX2Nvbm5lY3Rpb25zLmFw
cGVuZChjb25uZWN0aW9uKTsKKyAgICBtX2Nvbm5lY3Rpb25zLmFwcGVuZChzdGQ6Om1vdmUoY29u
bmVjdGlvbikpOwogfQogCiB2b2lkIFdlYlNvY2tldFNlcnZlcjo6ZGlkQ2xvc2VXZWJTb2NrZXRT
ZXJ2ZXJDb25uZWN0aW9uKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiB7
Ci0gICAgRGVxdWU8T3duUHRyPFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24+ID46Oml0ZXJhdG9y
IGVuZCA9IG1fY29ubmVjdGlvbnMuZW5kKCk7Ci0gICAgZm9yIChEZXF1ZTxPd25QdHI8V2ViU29j
a2V0U2VydmVyQ29ubmVjdGlvbj4gPjo6aXRlcmF0b3IgaXQgPSBtX2Nvbm5lY3Rpb25zLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIGZvciAoYXV0byBpdCA9IG1fY29ubmVjdGlvbnMu
YmVnaW4oKSwgZW5kID0gbV9jb25uZWN0aW9ucy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAg
ICAgICAgIGlmIChpdC0+Z2V0KCkgPT0gY29ubmVjdGlvbikgewogICAgICAgICAgICAgbV9jb25u
ZWN0aW9ucy5yZW1vdmUoaXQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2
ZXIuaAkocmV2aXNpb24gMTY3ODQyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3Bl
Y3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjks
OCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCiAKKyNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgVVNFKFNPVVApCkBAIC02MSw3ICs2MSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlKCk7CiAKICAgICBXZWJTb2NrZXRTZXJ2ZXJDbGll
bnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9Ci0gICAgdm9pZCBkaWRBY2Nl
cHRDb25uZWN0aW9uKFBhc3NPd25QdHI8V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbj4pOworICAg
IHZvaWQgZGlkQWNjZXB0Q29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0U2VydmVy
Q29ubmVjdGlvbj4pOwogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXRTZXJ2
ZXJDb25uZWN0aW9uKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qKTsKQEAgLTcxLDcgKzcxLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtQ2xvc2UoKTsKIAogICAgIFNlcnZlclN0YXRl
IG1fc3RhdGU7Ci0gICAgRGVxdWU8T3duUHRyPFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24+ID4g
bV9jb25uZWN0aW9uczsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0U2VydmVy
Q29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CiAgICAgV2ViU29ja2V0U2VydmVyQ2xpZW50KiBt
X2NsaWVudDsKICAgICBTdHJpbmcgbV9iaW5kQWRkcmVzczsKICAgICB1bnNpZ25lZCBzaG9ydCBt
X3BvcnQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3Nv
dXAvV2ViU29ja2V0U2VydmVyU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9zb3VwL1dlYlNvY2tldFNlcnZlclNvdXAuY3BwCShy
ZXZpc2lvbiAxNjc4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2Vy
dmVyL3NvdXAvV2ViU29ja2V0U2VydmVyU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcg
KzMxLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUhhbmRsZS5oPgogI2luY2x1
ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCkBAIC00Nyw5ICs0Niw5IEBAIHN0YXRpYyBnYm9vbGVhbiBjb25u
ZWN0aW9uQ2FsbGJhY2soR1NvY2sKICAgICBMT0coSW5zcGVjdG9yU2VydmVyLCAiTmV3IENvbm5l
Y3Rpb24gZnJvbSAlczolZC4iLCBhZGRyZXNzU3RyaW5nLmdldCgpLCBnX2luZXRfc29ja2V0X2Fk
ZHJlc3NfZ2V0X3BvcnQoR19JTkVUX1NPQ0tFVF9BRERSRVNTKHNvY2tldEFkZHJlc3MuZ2V0KCkp
KSk7CiAjZW5kaWYKIAotICAgIE93blB0cjxXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uPiB3ZWJT
b2NrZXRDb25uZWN0aW9uID0gYWRvcHRQdHIobmV3IFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24o
c2VydmVyLT5jbGllbnQoKSwgc2VydmVyKSk7CisgICAgYXV0byB3ZWJTb2NrZXRDb25uZWN0aW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uPihzZXJ2ZXItPmNs
aWVudCgpLCBzZXJ2ZXIpOwogICAgIHdlYlNvY2tldENvbm5lY3Rpb24tPnNldFNvY2tldEhhbmRs
ZShTb2NrZXRTdHJlYW1IYW5kbGU6OmNyZWF0ZShjb25uZWN0aW9uLCB3ZWJTb2NrZXRDb25uZWN0
aW9uLmdldCgpKSk7Ci0gICAgc2VydmVyLT5kaWRBY2NlcHRDb25uZWN0aW9uKHdlYlNvY2tldENv
bm5lY3Rpb24ucmVsZWFzZSgpKTsKKyAgICBzZXJ2ZXItPmRpZEFjY2VwdENvbm5lY3Rpb24oc3Rk
Ojptb3ZlKHdlYlNvY2tldENvbm5lY3Rpb24pKTsKIAogICAgIHJldHVybiBUUlVFOwogfQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDE2Nzg0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAsNyArMTAwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJv
YwogRG93bmxvYWRQcm94eSogTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94
eSgpCiB7CiAgICAgaWYgKCFtX2Rvd25sb2FkUHJveHlNYXApCi0gICAgICAgIG1fZG93bmxvYWRQ
cm94eU1hcCA9IGFkb3B0UHRyKG5ldyBEb3dubG9hZFByb3h5TWFwKHRoaXMpKTsKKyAgICAgICAg
bV9kb3dubG9hZFByb3h5TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZFByb3h5TWFwPih0
aGlzKTsKIAogICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJv
eHkobV93ZWJDb250ZXh0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDE2Nzg0MikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vz
c1Byb3h5LmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAKICNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKQEAgLTkxLDcgKzkyLDcgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7CiAg
ICAgRGVxdWU8UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7
CiAKLSAgICBPd25QdHI8RG93bmxvYWRQcm94eU1hcD4gbV9kb3dubG9hZFByb3h5TWFwOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZFByb3h5TWFwPiBtX2Rvd25sb2FkUHJveHlNYXA7CiAK
ICNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSBtX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDE2Nzg0MikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkNsaWVudC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0
YU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1dlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5jcHAJKHJldmlzaW9uIDE2Nzg0MikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFdlYlBsdWdpblNpdGVE
YXRhTWFuYWdlcjo6Z2V0U2l0ZXNXCiAgICAgQVNTRVJUKCFtX3BlbmRpbmdHZXRTaXRlc1dpdGhE
YXRhLmNvbnRhaW5zKGNhbGxiYWNrSUQpKTsKIAogICAgIEdldFNpdGVzV2l0aERhdGFTdGF0ZSog
c3RhdGUgPSBuZXcgR2V0U2l0ZXNXaXRoRGF0YVN0YXRlKHRoaXMsIGNhbGxiYWNrSUQpOwotICAg
IG1fcGVuZGluZ0dldFNpdGVzV2l0aERhdGEuc2V0KGNhbGxiYWNrSUQsIGFkb3B0UHRyKHN0YXRl
KSk7CisgICAgbV9wZW5kaW5nR2V0U2l0ZXNXaXRoRGF0YS5zZXQoY2FsbGJhY2tJRCwgc3RkOjp1
bmlxdWVfcHRyPEdldFNpdGVzV2l0aERhdGFTdGF0ZT4oc3RhdGUpKTsKICAgICBzdGF0ZS0+Z2V0
U2l0ZXNXaXRoRGF0YUZvck5leHRQbHVnaW4oKTsKIH0KIApAQCAtMTk3LDcgKzE5Nyw3IEBAIHZv
aWQgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyOjpjbGVhclNpdGUKICAgICBBU1NFUlQoIW1fcGVu
ZGluZ0NsZWFyU2l0ZURhdGEuY29udGFpbnMoY2FsbGJhY2tJRCkpOwogCiAgICAgQ2xlYXJTaXRl
RGF0YVN0YXRlKiBzdGF0ZSA9IG5ldyBDbGVhclNpdGVEYXRhU3RhdGUodGhpcywgc2l0ZXNWZWN0
b3IsIGZsYWdzLCBtYXhBZ2VJblNlY29uZHMsIGNhbGxiYWNrSUQpOwotICAgIG1fcGVuZGluZ0Ns
ZWFyU2l0ZURhdGEuc2V0KGNhbGxiYWNrSUQsIGFkb3B0UHRyKHN0YXRlKSk7CisgICAgbV9wZW5k
aW5nQ2xlYXJTaXRlRGF0YS5zZXQoY2FsbGJhY2tJRCwgc3RkOjp1bmlxdWVfcHRyPENsZWFyU2l0
ZURhdGFTdGF0ZT4oc3RhdGUpKTsKICAgICBzdGF0ZS0+Y2xlYXJTaXRlRGF0YUZvck5leHRQbHVn
aW4oKTsKIH0KIApAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgV2ViUGx1Z2luU2l0ZURhdGFNYW5h
Z2VyOjpkaWRHZXRTaXQKIAogdm9pZCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmRpZEdldFNp
dGVzV2l0aERhdGFGb3JBbGxQbHVnaW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBPd25QdHI8R2V0U2l0ZXNXaXRoRGF0YVN0YXRlPiBz
dGF0ZSA9IG1fcGVuZGluZ0dldFNpdGVzV2l0aERhdGEudGFrZShjYWxsYmFja0lEKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8R2V0U2l0ZXNXaXRoRGF0YVN0YXRlPiBzdGF0ZSA9IG1fcGVuZGluZ0dl
dFNpdGVzV2l0aERhdGEudGFrZShjYWxsYmFja0lEKTsKICAgICBBU1NFUlQoc3RhdGUpOwogCiAg
ICAgZGlkR2V0U2l0ZXNXaXRoRGF0YShzaXRlcywgY2FsbGJhY2tJRCk7CkBAIC0yMzgsNyArMjM4
LDcgQEAgdm9pZCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmRpZENsZWFyUwogCiB2b2lkIFdl
YlBsdWdpblNpdGVEYXRhTWFuYWdlcjo6ZGlkQ2xlYXJTaXRlRGF0YUZvckFsbFBsdWdpbnModWlu
dDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBPd25QdHI8Q2xlYXJTaXRlRGF0YVN0YXRlPiBzdGF0
ZSA9IG1fcGVuZGluZ0NsZWFyU2l0ZURhdGEudGFrZShjYWxsYmFja0lEKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q2xlYXJTaXRlRGF0YVN0YXRlPiBzdGF0ZSA9IG1fcGVuZGluZ0NsZWFyU2l0ZURh
dGEudGFrZShjYWxsYmFja0lEKTsKICAgICBBU1NFUlQoc3RhdGUpOwogCiAgICAgZGlkQ2xlYXJT
aXRlRGF0YShjYWxsYmFja0lEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1dlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5oCShyZXZpc2lv
biAxNjc4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5T
aXRlRGF0YU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdlbmVy
aWNDYWxsYmFjay5oIgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTY5LDEwICs3MCwxMCBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkQ2xlYXJTaXRlRGF0YUZvckFsbFBsdWdpbnModWludDY0X3QgY2Fs
bGJhY2tJRCk7CiAKICAgICBjbGFzcyBHZXRTaXRlc1dpdGhEYXRhU3RhdGU7Ci0gICAgSGFzaE1h
cDx1aW50NjRfdCwgT3duUHRyPEdldFNpdGVzV2l0aERhdGFTdGF0ZT4+IG1fcGVuZGluZ0dldFNp
dGVzV2l0aERhdGE7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPEdldFNp
dGVzV2l0aERhdGFTdGF0ZT4+IG1fcGVuZGluZ0dldFNpdGVzV2l0aERhdGE7CiAKICAgICBjbGFz
cyBDbGVhclNpdGVEYXRhU3RhdGU7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgT3duUHRyPENsZWFy
U2l0ZURhdGFTdGF0ZT4+IG1fcGVuZGluZ0NsZWFyU2l0ZURhdGE7CisgICAgSGFzaE1hcDx1aW50
NjRfdCwgc3RkOjp1bmlxdWVfcHRyPENsZWFyU2l0ZURhdGFTdGF0ZT4+IG1fcGVuZGluZ0NsZWFy
U2l0ZURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAJKHJldmlz
aW9uIDE2Nzg0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTWFw
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRlIDxtZW1vcnk+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC02MzEsMTQgKzYzMiwxNCBAQCBTdG9y
YWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBTCiAKIHN0YXRpYyB2b2lkIGNhbGxD
YWxsYmFja0Z1bmN0aW9uKHZvaWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFja0Z1bmN0aW9uKShj
b25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mIHNlY3VyaXR5T3Jp
Z2lucywgdm9pZCogY29udGV4dCksIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+Piogc2VjdXJpdHlPcmlnaW5zUHRyKQogewotICAgIE93blB0cjxWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4+IHNlY3VyaXR5T3JpZ2lucyA9IGFkb3B0UHRyKHNlY3Vy
aXR5T3JpZ2luc1B0cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+Pj4gc2VjdXJpdHlPcmlnaW5zKHNlY3VyaXR5T3JpZ2luc1B0cik7
CiAgICAgY2FsbGJhY2tGdW5jdGlvbigqc2VjdXJpdHlPcmlnaW5zLCBjb250ZXh0KTsKIH0KIAog
dm9pZCBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JpZ2luc0ludGVybmFsKEZ1bmN0aW9uRGlzcGF0Y2hl
ciogZGlzcGF0Y2hlciwgdm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrRnVuY3Rpb24pKGNv
bnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYgc2VjdXJpdHlPcmln
aW5zLCB2b2lkKiBjb250ZXh0KSkKIHsKLSAgICBPd25QdHI8VmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4+PiBzZWN1cml0eU9yaWdpbnMgPSBhZG9wdFB0cihuZXcgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+KG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLT5vcmlnaW5zKCkpKTsKLSAgICBkaXNwYXRjaGVyLT5kaXNwYXRjaChiaW5kKGNhbGxD
YWxsYmFja0Z1bmN0aW9uLCBjb250ZXh0LCBjYWxsYmFja0Z1bmN0aW9uLCBzZWN1cml0eU9yaWdp
bnMubGVha1B0cigpKSk7CisgICAgYXV0byBzZWN1cml0eU9yaWdpbnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+Pj4obV9sb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKSk7CisgICAgZGlzcGF0Y2hlci0+ZGlzcGF0Y2go
YmluZChjYWxsQ2FsbGJhY2tGdW5jdGlvbiwgY29udGV4dCwgY2FsbGJhY2tGdW5jdGlvbiwgc2Vj
dXJpdHlPcmlnaW5zLnJlbGVhc2UoKSkpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRT
dG9yYWdlRGV0YWlsc0J5T3JpZ2luSW50ZXJuYWwoRnVuY3Rpb25EaXNwYXRjaGVyKiBkaXNwYXRj
aGVyLCB2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2tGdW5jdGlvbikoY29uc3QgVmVjdG9y
PExvY2FsU3RvcmFnZURldGFpbHM+JiBzdG9yYWdlRGV0YWlscywgdm9pZCogY29udGV4dCkpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTY3ODQy
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAgewotICAgICAgICBtX3N1cHBsZW1lbnRzLmFk
ZChUOjpzdXBwbGVtZW50TmFtZSgpLCBhZG9wdFB0cjxXZWJQcm9jZXNzU3VwcGxlbWVudD4obmV3
IFQodGhpcykpKTsKKyAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUo
KSwgc3RkOjptYWtlX3VuaXF1ZTxUPih0aGlzKSk7CiAgICAgfQogCiAgICAgV2ViQ29ubmVjdGlv
blRvVUlQcm9jZXNzKiB3ZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBt
X3dlYkNvbm5lY3Rpb24uZ2V0KCk7IH0KQEAgLTMwMiw3ICszMDIsNyBAQCBwcml2YXRlOgogCiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViRnJhbWUqPiBtX2ZyYW1lTWFwOwogCi0gICAgdHlwZWRl
ZiBIYXNoTWFwPGNvbnN0IGNoYXIqLCBPd25QdHI8V2ViUHJvY2Vzc1N1cHBsZW1lbnQ+LCBQdHJI
YXNoPGNvbnN0IGNoYXIqPj4gV2ViUHJvY2Vzc1N1cHBsZW1lbnRNYXA7CisgICAgdHlwZWRlZiBI
YXNoTWFwPGNvbnN0IGNoYXIqLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1N1cHBsZW1lbnQ+
LCBQdHJIYXNoPGNvbnN0IGNoYXIqPj4gV2ViUHJvY2Vzc1N1cHBsZW1lbnRNYXA7CiAgICAgV2Vi
UHJvY2Vzc1N1cHBsZW1lbnRNYXAgbV9zdXBwbGVtZW50czsKIAogICAgIFRleHRDaGVja2VyU3Rh
dGUgbV90ZXh0Q2hlY2tlclN0YXRlOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuaAkocmV2aXNpb24gMTY3ODQyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Miw4ICs1Miw2IEBAIHB1YmxpYzoKICAgICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogZ2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKTsKICAg
ICB2b2lkIHJlbW92ZVBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKik7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXJNZXNzYWdlT25Db25uZWN0aW9uV29ya1F1ZXVlKElQQzo6Q29ubmVjdGlvbiosIE93blB0cjxJ
UEM6Ok1lc3NhZ2VEZWNvZGVyPiYpOwotCiBwcml2YXRlOgogICAgIFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlcigpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAJKHJldmlzaW9uIDE2Nzg0MikKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk2LDcgKzk2LDcgQEAgYm9vbCBQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZShjb25zdCBQYXJh
bQogICAgIG1fY29ubmVjdGlvbi0+YWRkUGx1Z2luUHJveHkodGhpcyk7CiAKICAgICAvLyBBc2sg
dGhlIHBsdWctaW4gcHJvY2VzcyB0byBjcmVhdGUgYSBwbHVnLWluLgotICAgIG1fcGVuZGluZ1Bs
dWdpbkNyZWF0aW9uUGFyYW1ldGVycyA9IGFkb3B0UHRyKG5ldyBQbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnMpOworICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzPigpOwogCiAgICAgbV9wZW5kaW5nUGx1
Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5wbHVnaW5JbnN0YW5jZUlEID0gbV9wbHVnaW5JbnN0YW5j
ZUlEOwogICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+d2luZG93TlBPYmpl
Y3RJRCA9IHdpbmRvd05QT2JqZWN0SUQoKTsKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIFBsdWdp
blByb3h5OjpkaWRDcmVhdGVQbHVnaW5JbnRlcm5hCiAKICAgICAvLyBXaGV0aGVyIHN5bmNocm9u
b3VzbHkgb3IgYXN5bmNocm9ub3VzbHksIHRoaXMgcGx1Zy1pbiB3YXMgY3JlYXRlZCBhbmQgd2Ug
c2hvdWxkbid0IG5lZWQgdG8gcmVtZW1iZXIKICAgICAvLyBhbnl0aGluZyBhYm91dCBob3cuCi0g
ICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNsZWFyKCk7CisgICAgbV9wZW5k
aW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzID0gbnVsbHB0cjsKICAgICBtX3dhaXRpbmdPbkFz
eW5jaHJvbm91c0luaXRpYWxpemF0aW9uID0gZmFsc2U7CiB9CiAKQEAgLTE4NCw3ICsxODQsNyBA
QCB2b2lkIFBsdWdpblByb3h5OjpkaWRGYWlsVG9DcmVhdGVQbHVnaW5JCiAKICAgICAvLyBXaGV0
aGVyIHN5bmNocm9ub3VzbHkgb3IgYXN5bmNocm9ub3VzbHksIHRoaXMgcGx1Zy1pbiBmYWlsZWQg
dG8gY3JlYXRlIGFuZCB3ZSBzaG91bGRuJ3QgbmVlZCB0byByZW1lbWJlcgogICAgIC8vIGFueXRo
aW5nIGFib3V0IGhvdy4KLSAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY2xl
YXIoKTsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSBudWxscHRyOwog
ICAgIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKIH0KIApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmgJKHJldmlzaW9uIDE2Nzg0MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9GaW5kT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0yMTUs
NyArMjE2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgY2xpZW50IElEIGZvciB0aGUgQ0EgbGF5
ZXIgaW4gdGhlIHBsdWctaW4gcHJvY2Vzcy4gV2lsbCBiZSAwIGlmIHRoZSBwbHVnLWluIGlzIG5v
dCBhIENBIHBsdWctaW4uCiAgICAgdWludDMyX3QgbV9yZW1vdGVMYXllckNsaWVudElEOwogICAg
IAotICAgIE93blB0cjxQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+IG1fcGVuZGluZ1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVyczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luQ3JlYXRpb25QYXJh
bWV0ZXJzPiBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CiAgICAgYm9vbCBtX3dh
aXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCShyZXZpc2lvbiAxNjc4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyOSw3ICs4MjksNyBAQCBT
dHJpbmcgUGx1Z2luVmlldzo6Z2V0U2VsZWN0aW9uU3RyaW5nKCkKICAgICByZXR1cm4gbV9wbHVn
aW4tPmdldFNlbGVjdGlvblN0cmluZygpOwogfQogCi1Pd25QdHI8V2ViRXZlbnQ+IFBsdWdpblZp
ZXc6OmNyZWF0ZVdlYkV2ZW50KE1vdXNlRXZlbnQqIGV2ZW50KSBjb25zdAorc3RkOjp1bmlxdWVf
cHRyPFdlYkV2ZW50PiBQbHVnaW5WaWV3OjpjcmVhdGVXZWJFdmVudChNb3VzZUV2ZW50KiBldmVu
dCkgY29uc3QKIHsKICAgICBXZWJFdmVudDo6VHlwZSB0eXBlID0gV2ViRXZlbnQ6Ok5vVHlwZTsK
ICAgICB1bnNpZ25lZCBjbGlja0NvdW50ID0gMTsKQEAgLTg3MSw3ICs4NzEsNyBAQCBPd25QdHI8
V2ViRXZlbnQ+IFBsdWdpblZpZXc6OmNyZWF0ZVdlYkV2CiAgICAgaWYgKGV2ZW50LT5tZXRhS2V5
KCkpCiAgICAgICAgIG1vZGlmaWVycyB8PSBXZWJFdmVudDo6TWV0YUtleTsKIAotICAgIHJldHVy
biBhZG9wdFB0cihuZXcgV2ViTW91c2VFdmVudCh0eXBlLCBidXR0b24sIG1fcGx1Z2luLT5jb252
ZXJ0VG9Sb290VmlldyhJbnRQb2ludChldmVudC0+b2Zmc2V0WCgpLCBldmVudC0+b2Zmc2V0WSgp
KSksIGV2ZW50LT5zY3JlZW5Mb2NhdGlvbigpLCAwLCAwLCAwLCBjbGlja0NvdW50LCBzdGF0aWNf
Y2FzdDxXZWJFdmVudDo6TW9kaWZpZXJzPihtb2RpZmllcnMpLCAwKSk7CisgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8V2ViTW91c2VFdmVudD4odHlwZSwgYnV0dG9uLCBtX3BsdWdpbi0+Y29u
dmVydFRvUm9vdFZpZXcoSW50UG9pbnQoZXZlbnQtPm9mZnNldFgoKSwgZXZlbnQtPm9mZnNldFko
KSkpLCBldmVudC0+c2NyZWVuTG9jYXRpb24oKSwgMCwgMCwgMCwgY2xpY2tDb3VudCwgc3RhdGlj
X2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4obW9kaWZpZXJzKSwgMCk7CiB9CiAKIHZvaWQgUGx1
Z2luVmlldzo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQpAQCAtODgwLDcgKzg4MCw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW4KICAgICAgICAgcmV0dXJuOwog
CiAgICAgY29uc3QgV2ViRXZlbnQqIGN1cnJlbnRFdmVudCA9IFdlYlBhZ2U6OmN1cnJlbnRFdmVu
dCgpOwotICAgIE93blB0cjxXZWJFdmVudD4gc2ltdWxhdGVkV2ViRXZlbnQ7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkV2ZW50PiBzaW11bGF0ZWRXZWJFdmVudDsKICAgICBpZiAoZXZlbnQtPmlz
TW91c2VFdmVudCgpICYmIHRvTW91c2VFdmVudChldmVudCktPmlzU2ltdWxhdGVkKCkpIHsKICAg
ICAgICAgc2ltdWxhdGVkV2ViRXZlbnQgPSBjcmVhdGVXZWJFdmVudCh0b01vdXNlRXZlbnQoZXZl
bnQpKTsKICAgICAgICAgY3VycmVudEV2ZW50ID0gc2ltdWxhdGVkV2ViRXZlbnQuZ2V0KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgJ
KHJldmlzaW9uIDE2Nzg0MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9WaWV3U3RhdGUuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApAQCAtMjIzLDcgKzIy
NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoV2ViRnJhbWUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWQoV2ViRnJhbWUqLCBib29sIHdhc0NhbmNl
bGxlZCk7CiAKLSAgICBPd25QdHI8V2ViRXZlbnQ+IGNyZWF0ZVdlYkV2ZW50KFdlYkNvcmU6Ok1v
dXNlRXZlbnQqKSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViRXZlbnQ+IGNyZWF0ZVdl
YkV2ZW50KFdlYkNvcmU6Ok1vdXNlRXZlbnQqKSBjb25zdDsKIAogICAgIFJlZlB0cjxXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudD4gbV9wbHVnaW5FbGVtZW50OwogICAgIFJlZlB0cjxQbHVnaW4+
IG1fcGx1Z2luOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCShy
ZXZpc2lvbiAxNjc4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIu
aD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTQ5LDExICs1MCwxMSBAQCBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IoTmV0c2NhcGVQbHVnaW4qIHBsdWdp
bikKICAgICB7CiAgICAgICAgIGlmIChwbHVnaW4pCi0gICAgICAgICAgICBtX3Byb3RlY3RvciA9
IGFkb3B0UHRyKG5ldyBQbHVnaW5Db250cm9sbGVyOjpQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rv
cihzdGF0aWNfY2FzdDxQbHVnaW4qPihwbHVnaW4pLT5jb250cm9sbGVyKCkpKTsKKyAgICAgICAg
ICAgIG1fcHJvdGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5Db250cm9sbGVyOjpQbHVn
aW5EZXN0cnVjdGlvblByb3RlY3Rvcj4oc3RhdGljX2Nhc3Q8UGx1Z2luKj4ocGx1Z2luKS0+Y29u
dHJvbGxlcigpKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgotICAgIE93blB0cjxQbHVnaW5Db250
cm9sbGVyOjpQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rvcj4gbV9wcm90ZWN0b3I7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBsdWdpbkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9y
PiBtX3Byb3RlY3RvcjsKIH07CiAKIHN0YXRpYyBib29sIHN0YXJ0c1dpdGhCbGFua0xpbmUoY29u
c3QgY2hhciogYnl0ZXMsIHVuc2lnbmVkIGxlbmd0aCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luU3RyZWFtLmNwcAkocmV2aXNpb24gMTY3ODQyKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4u
aCIKICNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTE4Nyw3
ICsxODYsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YShjCiAKICAg
ICBpZiAobV90cmFuc2Zlck1vZGUgIT0gTlBfQVNGSUxFT05MWSkgewogICAgICAgICBpZiAoIW1f
ZGVsaXZlcnlEYXRhKQotICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBhZG9wdFB0cihuZXcg
VmVjdG9yPHVpbnQ4X3Q+KTsKKyAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8dWludDhfdD4+KCk7CiAKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPnJl
c2VydmVDYXBhY2l0eShtX2RlbGl2ZXJ5RGF0YS0+c2l6ZSgpICsgbGVuZ3RoKTsKICAgICAgICAg
bV9kZWxpdmVyeURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpblN0cmVhbS5oCShyZXZpc2lvbiAxNjc4NDIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ucHJ1bnRpbWVfaW50ZXJuYWwuaD4KKyNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xMDYsNyArMTA3LDcgQEAg
cHJpdmF0ZToKICAgICBDU3RyaW5nIG1faGVhZGVyczsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPE5l
dHNjYXBlUGx1Z2luU3RyZWFtPiBtX2RlbGl2ZXJ5RGF0YVRpbWVyOwotICAgIE93blB0cjwgVmVj
dG9yPHVpbnQ4X3Q+PiBtX2RlbGl2ZXJ5RGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PHVpbnQ4X3Q+PiBtX2RlbGl2ZXJ5RGF0YTsKICAgICBib29sIG1fc3RvcFN0cmVhbVdoZW5Eb25l
RGVsaXZlcmluZzsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaAkocmV2aXNpb24gMTY3ODQyKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIldlYlBvcHVwSXRl
bS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUG9wdXBNZW51Lmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAkocmV2aXNpb24gMTY3ODQyKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgUGFzc1JlZlB0cjxFdmVudERpc3BhdGNo
ZXI+IEV2ZW50RGlzcGF0YwogCiBFdmVudERpc3BhdGNoZXI6OkV2ZW50RGlzcGF0Y2hlcigpCiAg
ICAgOiBtX3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkV2ZW50RGlz
cGF0Y2hlciIpKQotICAgICwgbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFUcmFja2VyKGFkb3B0UHRy
KG5ldyBXaGVlbEV2ZW50RGVsdGFUcmFja2VyKSkKKyAgICAsIG1fcmVjZW50V2hlZWxFdmVudERl
bHRhVHJhY2tlcihzdGQ6Om1ha2VfdW5pcXVlPFdoZWVsRXZlbnREZWx0YVRyYWNrZXI+KCkpCiAj
aWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgLCBtX3RvdWNoRXZlbnRzTG9jayhTUElO
TE9DS19JTklUSUFMSVpFUikKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAkocmV2aXNpb24gMTY3ODQyKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1doZWVs
RXZlbnREZWx0YVRyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJFdmVudC5oPgorI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTk0LDcgKzk1LDcgQEAgcHJpdmF0ZToK
ICAgICBNdXRleCBtX3Njcm9sbGluZ1RyZWVzTXV0ZXg7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZT4+IG1fc2Nyb2xsaW5nVHJlZXM7
CiAjZW5kaWYKLSAgICBPd25QdHI8V2ViQ29yZTo6V2hlZWxFdmVudERlbHRhVHJhY2tlcj4gbV9y
ZWNlbnRXaGVlbEV2ZW50RGVsdGFUcmFja2VyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpXaGVlbEV2ZW50RGVsdGFUcmFja2VyPiBtX3JlY2VudFdoZWVsRXZlbnREZWx0YVRyYWNrZXI7
CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgU3BpbkxvY2sgbV90b3VjaEV2ZW50
c0xvY2s7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgVG91Y2hFdmVudFF1ZXVlPiBtX3RvdWNoRXZl
bnRzOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkocmV2aXNpb24gMTY3ODQyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzksNyArMzM5LDcgQEAgV2ViUGFn
ZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0CiAKICAgICBwYWdlQ2xpZW50cy52aXNp
dGVkTGlua1N0b3JlID0gVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHBh
cmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEKTsKIAotICAgIG1fcGFnZSA9IGFkb3B0UHRyKG5l
dyBQYWdlKHBhZ2VDbGllbnRzKSk7CisgICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdl
PihwYWdlQ2xpZW50cyk7CiAKICAgICBtX2RyYXdpbmdBcmVhID0gRHJhd2luZ0FyZWE6OmNyZWF0
ZSh0aGlzLCBwYXJhbWV0ZXJzKTsKICAgICBtX2RyYXdpbmdBcmVhLT5zZXRQYWludGluZ0VuYWJs
ZWQoZmFsc2UpOwpAQCAtMzU0OCw3ICszNTQ4LDcgQEAgdm9pZCBXZWJQYWdlOjpiZWdpblByaW50
aW5nKHVpbnQ2NF90IGZyYQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogICAgIGlmICghbV9w
cmludENvbnRleHQpCi0gICAgICAgIG1fcHJpbnRDb250ZXh0ID0gYWRvcHRQdHIobmV3IFByaW50
Q29udGV4dChjb3JlRnJhbWUpKTsKKyAgICAgICAgbV9wcmludENvbnRleHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZyYW1lKTsKIAogICAgIGRyYXdpbmdBcmVhKCktPnNl
dExheWVyVHJlZVN0YXRlSXNGcm96ZW4odHJ1ZSk7CiAgICAgbV9wcmludENvbnRleHQtPmJlZ2lu
KHByaW50SW5mby5hdmFpbGFibGVQYXBlcldpZHRoLCBwcmludEluZm8uYXZhaWxhYmxlUGFwZXJI
ZWlnaHQpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCShyZXZpc2lvbiAxNjc4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw4ICs1OSw4IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9WaWV3U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0Q29uZmlndXJh
dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUtleWJvYXJkVUlNb2RlLmg+CisjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtOTk0LDcgKzk5NCw3IEBA
IHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKIAotICAgIE93blB0cjxXZWJDb3Jl
OjpQYWdlPiBtX3BhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFn
ZTsKICAgICBSZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwogICAgIFJlZlB0cjxJbmplY3Rl
ZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7CiAKQEAgLTExMjUsNyAr
MTEyNSw3IEBAIHByaXZhdGU6CiAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKICNlbmRpZgogCi0gICAg
T3duUHRyPFdlYkNvcmU6OlByaW50Q29udGV4dD4gbV9wcmludENvbnRleHQ7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OlByaW50Q29udGV4dD4gbV9wcmludENvbnRleHQ7CiAjaWYgUExB
VEZPUk0oR1RLKQogICAgIFJlZlB0cjxXZWJQcmludE9wZXJhdGlvbkd0az4gbV9wcmludE9wZXJh
dGlvbjsKICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>