<?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>73572</bug_id>
          
          <creation_ts>2011-12-01 10:24:35 -0800</creation_ts>
          <short_desc>[WK2] Add further support for notifications</short_desc>
          <delta_ts>2011-12-09 20:03:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>darin</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>512879</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-12-01 10:24:35 -0800</bug_when>
    <thetext>This includes being able to post and cancel a notification, dispatching appropriate callbacks when the user interacts with the notification, and cleaning up caches when a notification is destroyed.

&lt;rdar://problem/10472195&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513151</commentid>
    <comment_count>1</comment_count>
      <attachid>117495</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-12-01 14:51:15 -0800</bug_when>
    <thetext>Created attachment 117495
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513177</commentid>
    <comment_count>2</comment_count>
      <attachid>117495</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-01 15:14:10 -0800</bug_when>
    <thetext>Comment on attachment 117495
Patch

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

&gt; Source/WebCore/notifications/Notification.idl:45
&gt; +        attribute EventListener onshow;
&gt; +        // TODO: remove this event listener
&gt;          attribute EventListener ondisplay;

I don’t like this comment. First, we don’t use TODO. Second, we normally use sentence capitalization. Third, this is between two attributes and I don’t know which it refers to. Fourth, this gives no rationale. Why should this be done, and why wasn’t it already done?

&gt; Source/WebKit2/UIProcess/API/C/WKNotification.h:39
&gt; +WK_EXPORT uint64_t WKNotificationGetNotificationID(WKNotificationRef notification);

Can this be just named GetID instead of GetNotificationID?

&gt; Source/WebKit2/UIProcess/WebNotificationManagerProxy.cpp:76
&gt;  void WebNotificationManagerProxy::show(const String&amp; title, const String&amp; body, uint64_t notificationID)
&gt;  {
&gt; -    RefPtr&lt;WebNotification&gt; notification = WebNotification::create(title, body);
&gt; +    m_provider.addNotificationManager(this);
&gt; +
&gt; +    RefPtr&lt;WebNotification&gt; notification = WebNotification::create(title, body, notificationID);
&gt; +    m_notifications.set(notificationID, notification);
&gt;      m_provider.show(notification.get());
&gt;  }

You should probably check for invalid notification IDs, since the hash table code will malfunction spectacularly if you try to use a 0 or -1.

&gt; Source/WebKit2/UIProcess/WebNotificationManagerProxy.cpp:85
&gt; +    if (!m_notifications.contains(notificationID))
&gt; +        return;
&gt; +    
&gt; +    m_provider.addNotificationManager(this);
&gt; +    WebNotification* notification = m_notifications.get(notificationID).get();
&gt; +    m_provider.cancel(notification);

It’s more efficient to do just a get or a find, not a combination of both a contains and a get. Since get will return 0 I think you can just use get.

You should probably check for invalid notification IDs, since the hash table code will malfunction spectacularly if you try to use a 0 or -1.

&gt; Source/WebKit2/UIProcess/WebNotificationManagerProxy.cpp:92
&gt; +void WebNotificationManagerProxy::didDestroyNotification(uint64_t notificationID)
&gt; +{
&gt; +    RefPtr&lt;WebNotification&gt; notification = m_notifications.take(notificationID);
&gt; +    m_provider.didDestroyNotification(notification.get());
&gt; +}

You should probably check for invalid notification IDs, since the hash table code will malfunction spectacularly if you try to use a 0 or -1.

You should probably check for null to make it harmless to call this with a bad notification ID.

&gt; Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp:100
&gt; +void WebNotificationManager::didShowNotification(uint64_t notificationID)
&gt; +{
&gt; +#if ENABLE(NOTIFICATIONS)
&gt; +    if (!m_notificationIDMap.contains(notificationID))
&gt; +        return;
&gt; +    m_notificationIDMap.get(notificationID)-&gt;dispatchShowEvent();
&gt; +#endif
&gt; +}

You should probably check for invalid notification IDs, since the hash table code will malfunction spectacularly if you try to use a 0 or -1.

It’s bad for performance to do both a contains and a get. You should just do the get and check for 0.

&gt; Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp:109
&gt; +void WebNotificationManager::didClickNotification(uint64_t notificationID)
&gt; +{
&gt; +#if ENABLE(NOTIFICATIONS)
&gt; +    if (!m_notificationIDMap.contains(notificationID))
&gt; +        return;
&gt; +    m_notificationIDMap.get(notificationID)-&gt;dispatchClickEvent();
&gt; +#endif
&gt; +}

You should probably check for invalid notification IDs, since the hash table code will malfunction spectacularly if you try to use a 0 or -1.

It’s bad for performance to do both a contains and a get. You should just do the get and check for 0.

&gt; Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp:122
&gt; +void WebNotificationManager::didCloseNotifications(const Vector&lt;uint64_t&gt;&amp; notificationIDs)
&gt; +{
&gt; +#if ENABLE(NOTIFICATIONS)
&gt; +    size_t count = notificationIDs.size();
&gt; +    for (size_t i = 0; i &lt; count; ++i) {
&gt; +        uint64_t notificationID = notificationIDs[i];
&gt; +        if (!m_notificationIDMap.contains(notificationID))
&gt; +            return;
&gt; +        m_notificationIDMap.get(notificationID)-&gt;dispatchCloseEvent();
&gt; +    }
&gt;  #endif
&gt;  }

You should probably check for invalid notification IDs, since the hash table code will malfunction spectacularly if you try to use a 0 or -1.

It’s bad for performance to do both a contains and a get. You should just do the get and check for 0.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebNotificationClient.cpp:72
&gt;      notImplemented();

Need to use UNUSED_PARAM here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513203</commentid>
    <comment_count>3</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-12-01 15:36:21 -0800</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #2)
&gt; I don’t like this comment. First, we don’t use TODO. Second, we normally use sentence capitalization. Third, this is between two attributes and I don’t know which it refers to. Fourth, this gives no rationale. Why should this be done, and why wasn’t it already done?

I will fix this comment. This ondisplay event listener should be deprecated in favor of the onshow listener because that is what the latest spec uses. But I will try to get more info on whether anyone is using this listener, and try to remove it right now instead of waiting.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/WKNotification.h:39
&gt; &gt; +WK_EXPORT uint64_t WKNotificationGetNotificationID(WKNotificationRef notification);
&gt; 
&gt; Can this be just named GetID instead of GetNotificationID?

Done. I was going for naming consistency (I haven&apos;t seen any instances of getID), but it does end up being redundant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513265</commentid>
    <comment_count>4</comment_count>
      <attachid>117523</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-12-01 16:45:34 -0800</bug_when>
    <thetext>Created attachment 117523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513279</commentid>
    <comment_count>5</comment_count>
      <attachid>117523</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-01 16:56:06 -0800</bug_when>
    <thetext>Comment on attachment 117523
Patch

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

&gt; Source/WebCore/notifications/Notification.cpp:40
&gt; +#include &quot;ErrorEvent.h&quot;
&gt; +#include &quot;Event.h&quot;

No need to add the include of Event.h since ErrorEvent.h includes it.

&gt; Source/WebKit2/UIProcess/WebNotificationManagerProxy.cpp:71
&gt; +    ASSERT(notificationID);

0 is not the only bad value for hash tables. 0xFFFFFFFFFFFFFFFF is also bad.

Why is it OK to assert this? What guarantees we won’t get a 0 or -1 here? In particular, if this value comes from the web process, that’s considered “untrusted” since it could be controlled by an attacker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513343</commentid>
    <comment_count>6</comment_count>
      <attachid>117534</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-12-01 17:46:41 -0800</bug_when>
    <thetext>Created attachment 117534
Patch #3

Added a new inline function to check the notification ID, and converted most of the previous ASSERTs to use that method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513359</commentid>
    <comment_count>7</comment_count>
      <attachid>117534</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-01 18:00:45 -0800</bug_when>
    <thetext>Comment on attachment 117534
Patch #3

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

&gt; Source/WebKit2/UIProcess/WebNotification.h:75
&gt; +inline bool isNotificationIDValid(uint64_t id)
&gt; +{
&gt; +    return id &amp;&amp; id != static_cast&lt;uint64_t&gt;(-1);
&gt; +}

Would be nice to have a rationale comment explaining why these two values are invalid.

&gt; Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp:46
&gt; +    while (!isNotificationIDValid(uniqueNotificationID))
&gt; +        ++uniqueNotificationID;

This is dead code. You should remove it. There’s literally no chance we will ever count from 1 all the way up to 2^64. And I don’t think we need to pretend that the isNotificationIDValid function is a secret abstraction. This is literally untestable code that will never do anything!

&gt; Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp:82
&gt; +    uint64_t notificationID = m_notificationMap.get(notification);
&gt; +    if (!notificationID)
&gt; +        return;

Can this function be passed a null pointer? If so you need a check for that.

&gt; Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp:93
&gt; +    uint64_t notificationID = m_notificationMap.take(notification);
&gt; +    if (!notificationID)
&gt; +        return;

Can this function be passed a null pointer? If so you need a check for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513542</commentid>
    <comment_count>8</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-12-01 23:12:53 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 117534 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117534&amp;action=review
&gt; 
&gt; Would be nice to have a rationale comment explaining why these two values are invalid.

Done

&gt; This is dead code. You should remove it. There’s literally no chance we will ever count from 1 all the way up to 2^64. And I don’t think we need to pretend that the isNotificationIDValid function is a secret abstraction. This is literally untestable code that will never do anything!

Done

&gt; Can this function be passed a null pointer? If so you need a check for that.

A null pointer should not be passable, but I&apos;ve added the check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513543</commentid>
    <comment_count>9</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-12-01 23:14:44 -0800</bug_when>
    <thetext>Committed r101750: &lt;http://trac.webkit.org/changeset/101750&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513660</commentid>
    <comment_count>10</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-12-02 04:00:38 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Committed r101750: &lt;http://trac.webkit.org/changeset/101750&gt;

A build fix for Qt/WK2 was landed in http://trac.webkit.org/changeset/101780.
Seems like the Qt port is the only one building with WK2 _and_ ENABLE_NOTIFICATIONS=1.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117495</attachid>
            <date>2011-12-01 14:51:15 -0800</date>
            <delta_ts>2011-12-01 16:45:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73572-20111201145230.patch</filename>
            <type>text/plain</type>
            <size>40527</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIwM2JjZGM5ZDcxNTdk
YmMzMDA0MjFiZDFiODkwODBkYmZiYWQ4Mi4uYWY1NWNiYzJkNGI5ZTg4ZTkzOTA4YjQ2MWVmYTU0
YzM0NzkyOWU3NCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTEyLTAxICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgZnVydGhlciBzdXBw
b3J0IGZvciBub3RpZmljYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MzU3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA0NzIxOTU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
LmV4cC5pbjogRXhwb3J0IGNvbnN0cnVjdG9yIGFuZCBkaXNwYXRjaCBmdW5jdGlvbnMKKyAgICAg
ICAgKiBkb20vRXZlbnROYW1lcy5oOiBBZGQgc2hvdyBldmVudC4KKyAgICAgICAgKiBub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OnNob3cpOiBGb3IgdGhlIE1hYyBwbGF0Zm9ybSwgd2UganVzdCBmb3J3YXJkIHRoZSBzaG93KCkg
Y2FsbCB0byB0aGUKKyAgICAgICAgbm90aWZpY2F0aW9uIGNsaWVudCBhbmQgdXBkYXRlIHRoZSBz
dGF0ZSwgYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHN5bmNocm9ub3VzIGFja25vd2xlZGdtZW50IHRo
YXQgdGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBnb3QgZGVsaXZlcmVkLgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaFNob3dFdmVudCk6IENyZWF0ZSBzaW1wbGUgZXZl
bnRzIGFuZCBkaXNwYXRjaCB0byB0aGUgbm90aWZpY2F0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNrRXZlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpOb3RpZmljYXRpb246OmRpc3BhdGNoRXJyb3JFdmVudCk6IERpdHRvLgorICAgICAg
ICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6IEFkZCBkaXNwYXRjaCBmdW5jdGlvbnMu
CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOiBBZGQgb25zaG93IGV2
ZW50IGxpc3RlbmVyIChUT0RPOiByZW1vdmUgb25kaXNwbGF5KQorCiAyMDExLTExLTMwICBIYW5z
IE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgogCiAgICAgICAgIFhIUiAncHJvZ3Jlc3MnIGV2
ZW50IGNvZGUgYXNzdW1lcyB3cm9uZ2x5IHRoYXQgZXhwZWN0ZWRMZW5ndGggPj0gMApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDk1M2UyM2FmNGViMDMzMTBiYWFhNDdmODM1NDNhZGY3OTJkZDExYzkuLjliYWYwNTFk
YzBjNDYzYTYxOTg5MGQxNWFlN2VkOTMzMjBhZDBlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3
MiBAQAorMjAxMS0xMi0wMSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAg
W1dLMl0gQWRkIGZ1cnRoZXIgc3VwcG9ydCBmb3Igbm90aWZpY2F0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NzIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzEwNDcyMTk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIubWVzc2FnZXMuaW46IEFkZGVkLiBDb250YWlucyBtZXNzYWdlcyBmb3IgY2FsbGJhY2tz
CisgICAgICAgIGZyb20gdGhlIG5vdGlmaWNhdGlvbiBwbGF0Zm9ybS4KKworICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6IEFkZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyLgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLnByaTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9N
ZXNzYWdlSUQuaDogQWRkIG1lc3NhZ2UgY2xhc3MuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UpOiBGb3J3YXJkIGNhbGxzIHRvIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgd2hlbiBuZWVkZWQu
CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IG1l
c3NhZ2UgZmlsZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uLmg6IEFk
ZCBhbmQgZXhwb3NlIGludGVybmFsIElEIG9mIGVhY2ggbm90aWZpY2F0aW9uIHNlbnQgdG8gdGhl
IHBsYXRmb3JtLgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb246OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbjo6bm90aWZpY2F0aW9uSUQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJO
b3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlm
aWNhdGlvbjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjpkZWNv
ZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oOiBFeHBvc2Ug
bm90aWZpY2F0aW9uIElEIHRvIFdLQVBJLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05v
dGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXS05vdGlmaWNhdGlvbkdldE5vdGlmaWNhdGlvbklE
KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaDog
QWRkIGNhbGxiYWNrcyBmb3IgZGlzcGF0Y2hpbmcgZXZlbnRzIGJhY2sgdG8gdGhlIG5vdGlmaWNh
dGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjppbnZhbGlk
YXRlKTogUmVtb3ZlIG1hbmFnZXIuCisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6c2hvdyk6IEFkZCBtYW5hZ2VyIHByaW9yIHRvIHNob3dpbmcuCisgICAgICAg
IChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKTogQWRkIG1hbmFn
ZXIgcHJpb3IgdG8gY2FuY2VsaW5nLgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJE
aWRDbGlja05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLTm90aWZpY2F0
aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbik6CisgICAgICAgIChXS05vdGlm
aWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdL
Tm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKToKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
blByb3ZpZGVyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uUHJvdmlkZXI6OmFkZE5vdGlmaWNhdGlvbk1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdl
cik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uUHJvdmlkZXIuaDog
RXhwb3NlIGFkZC9yZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyIGNhbGxzCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oOiBBZGQgYm9v
a2tlZXBpbmcgdG8ga2VlcCB0cmFjayBvZiBub3RpZmljYXRpb24gSURzIHdpdGgKKyAgICAgICAg
Tm90aWZpY2F0aW9uIGluc3RhbmNlcy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRl
Tm90aWZpY2F0aW9uSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXI6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpj
YW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0
cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdl
cjo6ZGlkU2hvd05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
bk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xvc2VOb3RpZmljYXRpb25zKToKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46IEFkZCBEaWRE
ZXN0cm95Tm90aWZpY2F0aW9uIG1lc3NhZ2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJO
b3RpZmljYXRpb25DbGllbnQ6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCk6IEltcGxlbWVu
dGVkLgorCiAyMDExLTExLTMwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBhbiB1bm5lZWRlZCBhcmd1bWVudCBmcm9tIEZyYW1lTG9hZGVyQ2xp
ZW50Ojpkb3dubG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4g
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA5OTBiYjBhMjFhZWFiYWI0MzU3
OTljM2FlMzQxYjk2NzhmOTE5OGU3Li4zNDhhNDRhMzE1NmQ0MzY2MjQwN2ZiYTcyYzJjNWFmOTFh
ZGFhNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjAwOSwzICsyMDA5LDExIEBAIF9fWk5L
N1dlYkNvcmU3SW50U2l6ZWN2N19OU1NpemVFdgogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xF
T1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKIF93a0NyZWF0ZVZN
UHJlc3N1cmVEaXNwYXRjaE9uTWFpblF1ZXVlCiAjZW5kaWYKKworI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQorX19aTjdXZWJDb3JlMTJOb3RpZmljYXRpb25DMUV2CitfX1pON1dlYkNvcmUxMk5v
dGlmaWNhdGlvbkQxRXYKK19fWk43V2ViQ29yZTEyTm90aWZpY2F0aW9uMTdkaXNwYXRjaFNob3dF
dmVudEV2CitfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbjE4ZGlzcGF0Y2hDbGlja0V2ZW50RXYK
K19fWk43V2ViQ29yZTEyTm90aWZpY2F0aW9uMThkaXNwYXRjaENsb3NlRXZlbnRFdgorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCBjNTM2Y2ZjMDA0ODBjYzc0ZDRlYTEyZWRmMWJk
NmU3ZjQ3NTdlOWZmLi5kM2NmM2ZkYzlkNmI3OTBjMWM2OTUxMDhhYTk3ZjliNTdlNjEwODI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTE5NCw2ICsxOTQsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgbWFjcm8oYWRkc3RyZWFtKSBcCiAgICAgbWFjcm8ocmVtb3Zlc3RyZWFtKSBc
CiAgICAgXAorICAgIG1hY3JvKHNob3cpIFwKKyAgICBcCiAKIC8vIGVuZCBvZiBET01fRVZFTlRf
TkFNRVNfRk9SX0VBQ0gKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCmluZGV4IDM0NDQyNDJjYjVjMThmZjFiMDM0OWFiYjgxNTA2OTgzOWE4ZDc0MzMu
LmFiOWU5ZTRkNjk2OTZlMDFmODQyMDBkODllZTc0MGViNmRkYjJiMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTM2LDYgKzM2LDggQEAK
ICNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbkNvbnRlbnRzLmgiCkBAIC0xMjcsNiArMTI5LDExIEBAIHZvaWQgTm90aWZpY2F0aW9u
OjpzaG93KCkKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBzdGFydExvYWRpbmcoKTsK
KyNlbGlmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAobV9zdGF0ZSA9PSBJZGxlICYmIG1fbm90aWZp
Y2F0aW9uQ2VudGVyLT5wcmVzZW50ZXIoKSkgeworICAgICAgICBtX25vdGlmaWNhdGlvbkNlbnRl
ci0+cHJlc2VudGVyKCktPnNob3codGhpcyk7CisgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOwor
ICAgIH0KICNlbHNlCiAgICAgLy8gcHJldmVudCBkb3VibGUtc2hvd2luZwogICAgIGlmIChtX3N0
YXRlID09IElkbGUgJiYgbV9ub3RpZmljYXRpb25DZW50ZXItPnByZXNlbnRlcigpICYmIG1fbm90
aWZpY2F0aW9uQ2VudGVyLT5wcmVzZW50ZXIoKS0+c2hvdyh0aGlzKSkKQEAgLTIzMCw2ICsyMzcs
MjYgQEAgdm9pZCBOb3RpZmljYXRpb246OmZpbmlzaExvYWRpbmcoKQogICAgIHVuc2V0UGVuZGlu
Z0FjdGl2aXR5KHRoaXMpOwogfQogCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZl
bnQoKQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2hv
d0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNo
Q2xpY2tFdmVudCgpCit7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5jbGlja0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246
OmRpc3BhdGNoQ2xvc2VFdmVudCgpCit7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKwordm9pZCBOb3Rp
ZmljYXRpb246OmRpc3BhdGNoRXJyb3JFdmVudCgpCit7CisgICAgZGlzcGF0Y2hFdmVudChFcnJv
ckV2ZW50OjpjcmVhdGUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmgKaW5kZXggYmI0MGE4MDk0ODE0OGNmYWE5MDBmNTYxYzkyOGE0YTVhMmM3
MjlmYy4uOTVjZDc4MTgxMDViMjA4YjY5MzM1YTBlN2I2MGRmNTY4NTE4OGVmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC04OCwxMCArODgsMTcg
QEAgcHVibGljOgogCiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVy
biBkaXIoKSA9PSAicnRsIiA/IFJUTCA6IExUUjsgfQogCisgICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihzaG93KTsKKyAgICAvLyBUT0RPOiByZW1vdmUgdGhpcyBldmVudC4KICAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGRpc3BsYXkpOwogICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoY2xvc2UpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
Y2xpY2spOworICAgIAorICAgIHZvaWQgZGlzcGF0Y2hDbGlja0V2ZW50KCk7CisgICAgdm9pZCBk
aXNwYXRjaENsb3NlRXZlbnQoKTsKKyAgICB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgpOworICAg
IHZvaWQgZGlzcGF0Y2hTaG93RXZlbnQoKTsKIAogICAgIHVzaW5nIFJlZkNvdW50ZWQ8Tm90aWZp
Y2F0aW9uPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPjo6ZGVyZWY7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwKaW5kZXgg
NWFmN2M0ZGZmZjVhYzBlOGZhZTZmYjU5MDE5MjM4YzNjOTYwMTg0My4uYTYzMGRhYjNjOTUxOTU2
MzIxN2VhNGQ3MDBkYzI1MzhlNTZlNDRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmlkbApAQCAtNDAsNiArNDAsOCBAQCBtb2R1bGUgdGhyZWFkcyB7
CiAgICAgICAgIHZvaWQgc2hvdygpOwogICAgICAgICB2b2lkIGNhbmNlbCgpOwogCisgICAgICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uc2hvdzsKKyAgICAgICAgLy8gVE9ETzogcmVtb3Zl
IHRoaXMgZXZlbnQgbGlzdGVuZXIKICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25k
aXNwbGF5OwogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOwogICAgICAg
ICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsb3NlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggOTRlM2YzZDlkY2Y0YjJiOGVlMzAwYzFhODBjY2UyZjM0YzEyYjdmYy4uYTMw
MGY4NGJkOWJkOTNlNWVlMjc2MzgxMDgwNjExNTMyNWQxYTI4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC03NCw2ICs3NCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAg
IFdlYk1lZGlhQ2FjaGVNYW5hZ2VyIFwKICAgICBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5IFwK
ICAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkgXAorICAgIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXIgXAogICAgIFdlYlBhZ2UgXAogICAgIFdlYlBhZ2VQcm94eSBcCiAgICAgV2ViUHJvY2Vz
cyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3Vy
Y2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5wcmkKaW5kZXggY2FlNjAyMDFlMzI2MGUzZTY4ZDJl
NDM0YmVkMmUyZDlhMTEzNGI0Yy4uNGYyNWJmNDM4YjBlYjA1YzI4YzViMWUzMWFkMjIxNGNiNjI5
NGVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtODQsNiArODQsNyBAQCBNRVNT
QUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJNZWRpYUNhY2hlTWFuYWdlci5tZXNzYWdlcy5pbiBc
CiAgICAgV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBcCiAgICAgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIFwKKyAgICBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyLm1lc3NhZ2VzLmluIFwKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5p
biBcCiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBcCiAgICAgV2Vi
UGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9NZXNzYWdlSUQuaAppbmRleCAyOTZjMjJmMjU5ZmY5YTM2MzA2NDQ1NmRlYzQ1NTQ0
ODMzM2VjNWM4Li4zMGRmMTQ4NzBhMTQ2NjQ2ZmRkMTZjMWM4YzVhYzkwNjMzYmQ3N2RhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmgKQEAgLTQ4LDYgKzQ4
LDcgQEAgZW51bSBNZXNzYWdlQ2xhc3MgewogICAgIE1lc3NhZ2VDbGFzc1dlYkluc3BlY3RvciwK
ICAgICBNZXNzYWdlQ2xhc3NXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAgIE1lc3NhZ2VD
bGFzc1dlYk1lZGlhQ2FjaGVNYW5hZ2VyLAorICAgIE1lc3NhZ2VDbGFzc1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXIsCiAgICAgTWVzc2FnZUNsYXNzV2ViUGFnZSwKICAgICBNZXNzYWdlQ2xhc3NXZWJQ
cm9jZXNzLAogICAgIE1lc3NhZ2VDbGFzc1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5jcHAKaW5kZXgg
MzhjNDcyZGY3NzE5NDYwYThlZTc1M2MwY2I0YTIwMTA5YjZkODVmNy4uZjk4OGEzODYzNTYxMWYz
ZTdjNjM1MjE3MzA3ZDlhYmVkMWE4ZmE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uY3BwCkBAIC00NiwzICs0Niw3IEBAIFdLU3RyaW5n
UmVmIFdLTm90aWZpY2F0aW9uQ29weUJvZHkoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9u
KQogICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwobm90aWZpY2F0aW9uKS0+Ym9keSgpKTsK
IH0KIAordWludDY0X3QgV0tOb3RpZmljYXRpb25HZXROb3RpZmljYXRpb25JRChXS05vdGlmaWNh
dGlvblJlZiBub3RpZmljYXRpb24pCit7CisgICAgcmV0dXJuIHRvSW1wbChub3RpZmljYXRpb24p
LT5ub3RpZmljYXRpb25JRCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tOb3RpZmljYXRpb24uaAppbmRleCBiOGQyZGY1ODljZjRmZTczOGEwNDkzNWU4NmY5ZTc3
MTgwYTU2YjkyLi4zMjc5MjFkZTE2MGM3Mjc4NmZhYmVjOGY0ODA4NWIyODY0ZTBiODNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaApAQCAt
MzYsNyArMzYsOCBAQCBXS19FWFBPUlQgV0tUeXBlSUQgV0tOb3RpZmljYXRpb25HZXRUeXBlSUQo
KTsKIAogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLTm90aWZpY2F0aW9uQ29weVRpdGxlKFdLTm90
aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tOb3Rp
ZmljYXRpb25Db3B5Qm9keShXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwotICAgIAor
V0tfRVhQT1JUIHVpbnQ2NF90IFdLTm90aWZpY2F0aW9uR2V0Tm90aWZpY2F0aW9uSUQoV0tOb3Rp
ZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNh
dGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZp
Y2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMTAxMmRmMTQ3MjhjMDkwZTI0ZDQ2NDY5YzdiMzU2MzBl
NTlkZWEzYi4uNmRkZmE0Y2M4YTFiZDNhOTkyMjFhMWVhYmRhNWUzMDE2ZTI3MzY5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9u
TWFuYWdlci5jcHAKQEAgLTM1LDcgKzM1LDIzIEBAIFdLVHlwZUlEIFdLTm90aWZpY2F0aW9uTWFu
YWdlckdldFR5cGVJRCgpCiB7CiAgICAgcmV0dXJuIHRvQVBJKFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eTo6QVBJVHlwZSk7CiB9CisKIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJv
dmlkZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIGNvbnN0IFdLTm90aWZp
Y2F0aW9uUHJvdmlkZXIqIHdrUHJvdmlkZXIpCiB7CiAgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5p
bml0aWFsaXplUHJvdmlkZXIod2tQcm92aWRlcik7CiB9CisKK3ZvaWQgV0tOb3RpZmljYXRpb25N
YW5hZ2VyUHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uTWFuYWdlclJl
ZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCkKK3sKKyAgICB0b0ltcGwobWFu
YWdlclJlZiktPnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCk7Cit9
CisKK3ZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlv
bihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgdWludDY0X3Qgbm90aWZpY2F0
aW9uSUQpCit7CisgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5wcm92aWRlckRpZENsaWNrTm90aWZp
Y2F0aW9uKG5vdGlmaWNhdGlvbklEKTsKK30KKwordm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFu
YWdlclJlZiwgV0tBcnJheVJlZiBub3RpZmljYXRpb25JRHMpCit7CisgICAgdG9JbXBsKG1hbmFn
ZXJSZWYpLT5wcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyh0b0ltcGwobm90aWZpY2F0aW9u
SURzKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tO
b3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tO
b3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggM2M3NDM1MTgwYTRkZGQ0ZjZmNWJmY2JjNmE5YzQ0
MmIwZTc0YjQ1ZS4uNzM2MGRhZDAxNGE5YTAwNzRiOGZiYmE3ZTFkNzc1YjIyMDI3OGRjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlv
bk1hbmFnZXIuaApAQCAtMzYsNiArMzYsMTAgQEAgZXh0ZXJuICJDIiB7CiBXS19FWFBPUlQgV0tU
eXBlSUQgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0VHlwZUlEKCk7CiBXS19FWFBPUlQgdm9pZCBX
S05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYg
bWFuYWdlclJlZiwgY29uc3QgV0tOb3RpZmljYXRpb25Qcm92aWRlciogd2tQcm92aWRlcik7CiAK
K1dLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hvd05vdGlm
aWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgdWludDY0X3Qgbm90
aWZpY2F0aW9uSUQpOworV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlk
ZXJEaWRDbGlja05vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJl
ZiwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOworV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRp
b25NYW5hZ2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoV0tOb3RpZmljYXRpb25NYW5h
Z2VyUmVmIG1hbmFnZXJSZWYsIFdLQXJyYXlSZWYgbm90aWZpY2F0aW9uSURzKTsKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IDI3YmE2MmZjYTE5NWVh
YTIyYzkzNzk2NTE2ZmQ0MTEzOTE1YjhjODEuLjZmYTY1YmJlN2ViOTRhNmE1OGQ0YzFmMmQ0Zjdm
N2I0NjNhZTBkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S05vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAtMzQsMTIgKzM0LDE4IEBAIGV4dGVybiAi
QyIgewogCiB0eXBlZGVmIHZvaWQgKCpXS05vdGlmaWNhdGlvblByb3ZpZGVyU2hvd0NhbGxiYWNr
KShXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwogdHlwZWRlZiB2b2lkICgqV0tOb3RpZmljYXRpb25Qcm92aWRlckNhbmNlbENhbGxiYWNrKShX
S05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwor
dHlwZWRlZiB2b2lkICgqV0tOb3RpZmljYXRpb25Qcm92aWRlckRpZERlc3Ryb3lOb3RpZmljYXRp
b25DYWxsYmFjaykoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLTm90aWZpY2F0aW9uUHJvdmlkZXJBZGROb3Rp
ZmljYXRpb25NYW5hZ2VyQ2FsbGJhY2spKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2Vy
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLTm90aWZpY2F0aW9u
UHJvdmlkZXJSZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyQ2FsbGJhY2spKFdLTm90aWZpY2F0aW9u
TWFuYWdlclJlZiBtYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogc3RydWN0IFdL
Tm90aWZpY2F0aW9uUHJvdmlkZXIgewogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwogICAgIGNvbnN0IHZvaWQqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwog
ICAgIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJTaG93Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICBzaG93OwogICAgIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJDYW5jZWxDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICBjYW5jZWw7CisgICAgV0tOb3RpZmljYXRpb25Qcm92aWRlckRpZERl
c3Ryb3lOb3RpZmljYXRpb25DYWxsYmFjayAgICAgIGRpZERlc3Ryb3lOb3RpZmljYXRpb247Cisg
ICAgV0tOb3RpZmljYXRpb25Qcm92aWRlckFkZE5vdGlmaWNhdGlvbk1hbmFnZXJDYWxsYmFjayAg
ICAgIGFkZE5vdGlmaWNhdGlvbk1hbmFnZXI7CisgICAgV0tOb3RpZmljYXRpb25Qcm92aWRlclJl
bW92ZU5vdGlmaWNhdGlvbk1hbmFnZXJDYWxsYmFjayAgIHJlbW92ZU5vdGlmaWNhdGlvbk1hbmFn
ZXI7CiB9OwogdHlwZWRlZiBzdHJ1Y3QgV0tOb3RpZmljYXRpb25Qcm92aWRlciBXS05vdGlmaWNh
dGlvblByb3ZpZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Tm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRp
b24uY3BwCmluZGV4IDFkMjhjMTRmNzVkNWViNWM0YmI2ZjIyZGU5OTBjZGYyZTdkYWIwOGYuLjNm
MDI1OTg2MjRjMTU2YTk4ZmJmMjA5YTYyMmUxMTkxYzJhNmZkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb24uY3BwCkBAIC0zNyw5ICszNywxMCBAQCBXZWJO
b3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbigpCiB7CiB9CiAKLVdlYk5vdGlmaWNhdGlvbjo6
V2ViTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSkK
K1dlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNv
bnN0IFN0cmluZyYgYm9keSwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiAgICAgOiBtX3RpdGxl
KHRpdGxlKQogICAgICwgbV9ib2R5KGJvZHkpCisgICAgLCBtX25vdGlmaWNhdGlvbklEKG5vdGlm
aWNhdGlvbklEKQogewogfQogCkBAIC00OSwxMiArNTAsMTIgQEAgV2ViTm90aWZpY2F0aW9uOjp+
V2ViTm90aWZpY2F0aW9uKCkKIAogdm9pZCBXZWJOb3RpZmljYXRpb246OmVuY29kZShDb3JlSVBD
OjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci0+ZW5jb2Rl
KENvcmVJUEM6OkluKG1fdGl0bGUsIG1fYm9keSkpOworICAgIGVuY29kZXItPmVuY29kZShDb3Jl
SVBDOjpJbihtX3RpdGxlLCBtX2JvZHksIG1fbm90aWZpY2F0aW9uSUQpKTsKIH0KIAogYm9vbCBX
ZWJOb3RpZmljYXRpb246OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIs
IFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQogewotICAgIHJldHVybiBkZWNvZGVyLT5k
ZWNvZGUoQ29yZUlQQzo6T3V0KG5vdGlmaWNhdGlvbi5tX3RpdGxlLCBub3RpZmljYXRpb24ubV9i
b2R5KSk7CisgICAgcmV0dXJuIGRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQobm90aWZpY2F0
aW9uLm1fdGl0bGUsIG5vdGlmaWNhdGlvbi5tX2JvZHksIG5vdGlmaWNhdGlvbi5tX25vdGlmaWNh
dGlvbklEKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk5vdGlmaWNhdGlvbi5oCmluZGV4IDU2ODQ5ZGY1MmU4YzNiNjI1ZWI2OWMyMzVh
MjVmNDcxN2Y5ODdiYTMuLjZlZTc4ZjVmY2U4NWJkMTU2ZDMxZjRjMmJkYjgxMWRjMTAyMDAxOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uLmgKQEAgLTQ0LDI2
ICs0NCwyOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVO
b3RpZmljYXRpb247CiAgICAgCiAgICAgV2ViTm90aWZpY2F0aW9uKCk7Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViTm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29u
c3QgU3RyaW5nJiBib2R5KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgdWludDY0X3Qg
bm90aWZpY2F0aW9uSUQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYk5v
dGlmaWNhdGlvbih0aXRsZSwgYm9keSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
Yk5vdGlmaWNhdGlvbih0aXRsZSwgYm9keSwgbm90aWZpY2F0aW9uSUQpKTsKICAgICB9CiAgICAg
dmlydHVhbCB+V2ViTm90aWZpY2F0aW9uKCk7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiB0aXRs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KICAgICAKICAgICBjb25zdCBTdHJpbmcmIGJv
ZHkoKSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0KKyAgICAKKyAgICB1aW50NjRfdCBub3RpZmlj
YXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uSUQ7IH0KIAogICAgIHZvaWQg
ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0OwogICAgIHN0YXRpYyBib29s
IGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBXZWJOb3RpZmljYXRpb24mKTsKIAog
cHJpdmF0ZToKLSAgICBXZWJOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiBib2R5KTsKKyAgICBXZWJOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgU3RyaW5nJiBib2R5LCB1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CiAKICAgICB2aXJ0
dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KICAgICAKICAgICBTdHJp
bmcgbV90aXRsZTsKICAgICBTdHJpbmcgbV9ib2R5OworICAgIHVpbnQ2NF90IG1fbm90aWZpY2F0
aW9uSUQ7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmlu
ZGV4IGMyYjBjZDc2MDk5NzhlMzU5MWYzMWI5ZDUxNTViMzM1OTJhYzk3NjcuLmQ3ZGI0YmUzY2Y5
YjE3Zjc3MzNhODBiYmZlMTYwYTY5MGFmNWMyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC0yNiw4
ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5oIgogCisjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAi
V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3Rp
ZmljYXRpb25Db250ZW50cy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV1RGOwpAQCAtNTEsNiArNTMs
NyBAQCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6On5XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkoKQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgp
CiB7CisgICAgbV9wcm92aWRlci5yZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKHRoaXMpOwogfQog
CiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVByb3ZpZGVyKGNv
bnN0IFdLTm90aWZpY2F0aW9uUHJvdmlkZXIgKnByb3ZpZGVyKQpAQCAtNjUsMTMgKzY4LDYwIEBA
IHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3Jl
SVBDOjpDb25uZWN0aW9uKiBjb25uZWN0CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpzaG93KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgdWludDY0
X3Qgbm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4gbm90aWZp
Y2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHkpOworICAgIG1fcHJv
dmlkZXIuYWRkTm90aWZpY2F0aW9uTWFuYWdlcih0aGlzKTsKKworICAgIFJlZlB0cjxXZWJOb3Rp
ZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBi
b2R5LCBub3RpZmljYXRpb25JRCk7CisgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRp
b25JRCwgbm90aWZpY2F0aW9uKTsKICAgICBtX3Byb3ZpZGVyLnNob3cobm90aWZpY2F0aW9uLmdl
dCgpKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbCh1aW50
NjRfdCBub3RpZmljYXRpb25JRCkKIHsKLSAgICBtX3Byb3ZpZGVyLmNhbmNlbCgwKTsKKyAgICBp
ZiAoIW1fbm90aWZpY2F0aW9ucy5jb250YWlucyhub3RpZmljYXRpb25JRCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBtX3Byb3ZpZGVyLmFkZE5vdGlmaWNhdGlvbk1hbmFnZXIodGhpcyk7
CisgICAgV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0
KG5vdGlmaWNhdGlvbklEKS5nZXQoKTsKKyAgICBtX3Byb3ZpZGVyLmNhbmNlbChub3RpZmljYXRp
b24pOworfQorICAgIAordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ry
b3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit7CisgICAgUmVmUHRyPFdl
Yk5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLnRha2Uobm90aWZp
Y2F0aW9uSUQpOworICAgIG1fcHJvdmlkZXIuZGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmlj
YXRpb24uZ2V0KCkpOworfQorCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJv
dmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQoreworICAg
IGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9jb250ZXh0LT5z
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFNo
b3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpKTsKK30KKwordm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qgbm90
aWZpY2F0aW9uSUQpCit7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBtX2NvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpKTsKK30K
KworCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5v
dGlmaWNhdGlvbnMoSW1tdXRhYmxlQXJyYXkqIG5vdGlmaWNhdGlvbklEcykKK3sKKyAgICBpZiAo
IW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHNpemVfdCBzaXplID0gbm90
aWZpY2F0aW9uSURzLT5zaXplKCk7CisgICAgCisgICAgVmVjdG9yPHVpbnQ2NF90PiB2ZWN0b3JO
b3RpZmljYXRpb25JRHM7CisgICAgdmVjdG9yTm90aWZpY2F0aW9uSURzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoc2l6ZSk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCisgICAgICAgIHZlY3Rvck5vdGlmaWNhdGlvbklEcy5hcHBlbmQobm90aWZpY2F0aW9uSURz
LT5hdDxXZWJVSW50NjQ+KGkpLT52YWx1ZSgpKTsKKyAgICAKKyAgICBtX2NvbnRleHQtPnNlbmRU
b0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xvc2VO
b3RpZmljYXRpb25zKHZlY3Rvck5vdGlmaWNhdGlvbklEcykpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBjYzc3OWI5ZmViZGQ0NjJjNTYxN2YzMzAzZmRjOGRk
OWNhNzRmMzliLi41ODdmYTlhNDg2MWRhMTZkYjhjZDU5NTc2MmE5Yzc4Y2ZhMmMzMmY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiTWVzc2FnZUlELmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAK
IG5hbWVzcGFjZSBDb3JlSVBDIHsKQEAgLTM4LDYgKzM5LDcgQEAgY2xhc3MgQ29ubmVjdGlvbjsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEltbXV0YWJsZUFycmF5OwogY2xhc3MgV2Vi
Q29udGV4dDsKIAogY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQ
SU9iamVjdCB7CkBAIC01Miw2ICs1NCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxp
emVQcm92aWRlcihjb25zdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyKik7CiAgICAgCisgICAgdm9p
ZCBwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwor
ICAgIHZvaWQgcHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRp
b25JRCk7CisgICAgdm9pZCBwcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhJbW11dGFibGVB
cnJheSogbm90aWZpY2F0aW9uSURzKTsKKyAgICAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciopOwogCiBwcml2YXRlOgpAQCAtNjQsOSArNzAsMTMgQEAgcHJpdmF0ZToKICAg
ICAvLyBNZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCBzaG93KGNvbnN0IFdURjo6U3RyaW5nJiB0
aXRsZSwgY29uc3QgV1RGOjpTdHJpbmcmIGJvZHksIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsK
ICAgICB2b2lkIGNhbmNlbCh1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBkaWRE
ZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKKyAgICAKKyAgICB0
eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+ID4gV2ViTm90
aWZpY2F0aW9uTWFwOwogICAgIAogICAgIFdlYkNvbnRleHQqIG1fY29udGV4dDsKICAgICBXZWJO
b3RpZmljYXRpb25Qcm92aWRlciBtX3Byb3ZpZGVyOworICAgIFdlYk5vdGlmaWNhdGlvbk1hcCBt
X25vdGlmaWNhdGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU3Njc4YTRiMjM1ZGQ0NWU3MTYyZjRkMjcyN2I3N2Fh
NWZiODA0NGIuLjZkNDAzYzNkN2Q4NTljZTVkOTAwYTQ4YTBkZWI0NjlkODA2MTg4YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNCArMjMsNSBAQAogbWVzc2FnZXMg
LT4gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5IHsKICAgICBTaG93KFdURjo6U3RyaW5nIHRp
dGxlLCBXVEY6OlN0cmluZyBib2R5LCB1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CiAgICAgQ2Fu
Y2VsKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKKyAgICBEaWREZXN0cm95Tm90aWZpY2F0aW9u
KHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IGY3YWM1ZTc4N2Q2YmMy
NjM3ZmYwNzM3NDExMDUwYzYyMGU3NDlmYzkuLjQ2MWIxYWQ3ODk2ZGFlOTcyOGUwNDcyYjNhZmI2
NWVjYTM4NGRlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5v
dGlmaWNhdGlvblByb3ZpZGVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00Nyw0
ICs0OCwyOCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjYW5jZWwoV2ViTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgbV9jbGllbnQuY2FuY2VsKHRvQVBJKG5vdGlmaWNh
dGlvbiksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCit2b2lkIFdlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0
aW9uKQoreworICAgIGlmICghbV9jbGllbnQuZGlkRGVzdHJveU5vdGlmaWNhdGlvbikKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LmRpZERlc3Ryb3lOb3RpZmljYXRpb24odG9B
UEkobm90aWZpY2F0aW9uKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXI6OmFkZE5vdGlmaWNhdGlvbk1hbmFnZXIoV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5KiBtYW5hZ2VyKQoreworICAgIGlmICghbV9jbGllbnQuYWRkTm90aWZpY2F0
aW9uTWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LmFkZE5vdGlm
aWNhdGlvbk1hbmFnZXIodG9BUEkobWFuYWdlciksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQor
Cit2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZW1vdmVOb3RpZmljYXRpb25NYW5hZ2Vy
KFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSogbWFuYWdlcikKK3sKKyAgICBpZiAoIW1fY2xp
ZW50LnJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBtX2NsaWVudC5yZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKHRvQVBJKG1hbmFnZXIpLCBtX2Ns
aWVudC5jbGllbnRJbmZvKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IGVi
MmJmNDdlYmJjMTVkMzBkZDEzODE4ZjY5YzQzM2RiZWUyOGM1YTIuLmZmNDBiYThmN2QwZjlmYjBk
NGQ5MTUxODkwNmQzYjEzNGU4MzZlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCkBAIC0zMywxMSArMzMsMTYgQEAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJOb3RpZmljYXRpb247CitjbGFzcyBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk7CiAgICAgCiBjbGFzcyBXZWJOb3RpZmljYXRpb25Qcm92aWRlciA6
IHB1YmxpYyBBUElDbGllbnQ8V0tOb3RpZmljYXRpb25Qcm92aWRlciwga1dLTm90aWZpY2F0aW9u
UHJvdmlkZXJDdXJyZW50VmVyc2lvbj4gewogcHVibGljOgogICAgIHZvaWQgc2hvdyhXZWJOb3Rp
ZmljYXRpb24qKTsKICAgICB2b2lkIGNhbmNlbChXZWJOb3RpZmljYXRpb24qKTsKKyAgICB2b2lk
IGRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViTm90aWZpY2F0aW9uKik7CisKKyAgICB2b2lkIGFk
ZE5vdGlmaWNhdGlvbk1hbmFnZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Kik7CisgICAg
dm9pZCByZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eSopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTUzZTliMDRiMzQ2ZDkyZDdj
ZGM0NjVkYWY2ODEzNjg0MjIwOTM5ZS4uMjYxMDEyNTE1OWY0YWIxZmZkZWI5ODg4MDk4MDY2Yzdh
Yjc4NTRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjYwLDYgKzI2MCw4IEBACiAJCTMxOEJFMTc1MTQ3NDNERDcwMEE4RkJC
MiAvKiBXS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzE4QkUxNzQxNDc0M0RENjAwQThGQkIyIC8qIFdLTm90aWZp
Y2F0aW9uTWFuYWdlci5jcHAgKi87IH07CiAJCTMxOEJFMTc3MTQ3NDNFNjAwMEE4RkJCMiAvKiBX
S05vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMThCRTE3NjE0NzQzRTYwMDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb24uY3BwICov
OyB9OwogCQkzMThCRTE3OTE0NzQzRTZGMDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOEJFMTc4MTQ3NDNF
NkEwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTMxQkE5MjREMTQ4ODMxMjYwMDYyRURCNSAvKiBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQkE5MjQ4MTQ4ODMwODEwMDYyRURCNSAvKiBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMzFCQTky
NEUxNDg4MzEyNjAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFCQTkyNDkxNDg4
MzA4MTAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oICovOyB9Owog
CQkzMUMxMUFCMzE0ODQ1MkU5MDA0OUE0Q0MgLyogV2ViTm90aWZpY2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzExQUIxMTQ4NDUyRTkw
MDQ5QTRDQyAvKiBXZWJOb3RpZmljYXRpb24uY3BwICovOyB9OwogCQkzMUMxMUFCNDE0ODQ1MkU5
MDA0OUE0Q0MgLyogV2ViTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMUMxMUFCMjE0ODQ1MkU5MDA0OUE0Q0MgLyogV2ViTm90aWZp
Y2F0aW9uLmggKi87IH07CiAJCTMxRUEyNUQyMTM0Rjc4QzAwMDVCMTQ1MiAvKiBOYXRpdmVXZWJN
b3VzZUV2ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzFFQTI1RDAxMzRGNzhCMjAwNUIxNDUyIC8qIE5hdGl2ZVdlYk1vdXNlRXZlbnRNYWMu
bW0gKi87IH07CkBAIC0xMjMyLDYgKzEyMzQsOCBAQAogCQkzMThCRTE3NDE0NzQzREQ2MDBBOEZC
QjIgLyogV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMxOEJFMTc2MTQ3NDNFNjAwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS05vdGlmaWNhdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxOEJFMTc4MTQ3NDNFNkEwMEE4RkJC
MiAvKiBXS05vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05vdGlmaWNhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUJBOTI0ODE0ODgzMDgxMDA2MkVEQjUgLyog
V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFCQTkyNDkxNDg4MzA4MTAw
NjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMTFBQjExNDg0NTJFOTAwNDlBNENDIC8qIFdl
Yk5vdGlmaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJOb3RpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUMxMUFC
MjE0ODQ1MkU5MDA0OUE0Q0MgLyogV2ViTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMUVBMjVEMDEzNEY3OEIyMDA1QjE0NTIgLyogTmF0aXZlV2ViTW91c2VFdmVudE1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5hdGl2ZVdlYk1vdXNlRXZlbnRNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTAzLDYgKzM1MDcsOCBAQAogCQkJCTMzRDNB
M0M1MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VzLmggKi8s
CiAJCQkJMzNEM0EzQzYxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTMzRDNBM0M3MTMzOTYxNzkwMDcwOUJFNCAv
KiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQkzMUJBOTI0ODE0
ODgzMDgxMDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCisJCQkJMzFCQTkyNDkxNDg4MzA4MTAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlcy5oICovLAogCQkJCTMxOEJFMTY1MTQ3MzQzMzcwMEE4RkJCMiAvKiBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTMxOEJF
MTY2MTQ3MzQzMzcwMEE4RkJCMiAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdl
cy5oICovLAogCQkJCUMwQ0U3MjlFMTI0N0U3MUQwMEJDMEVDNCAvKiBXZWJQYWdlTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKQEAgLTQwMzQsNiArNDA0MCw3IEBACiAJCQkJMzE4QkUxNzExNDc0M0RC
MTAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzE4QkUxNzkxNDc0M0U2RjAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMUMxMUFCNDE0ODQ1MkU5MDA0OUE0Q0MgLyogV2ViTm90aWZpY2F0aW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMUJBOTI0RTE0ODgzMTI2MDA2MkVEQjUgLyogV2ViTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTQ3NDIsNiArNDc0OSw3IEBA
CiAJCQkJMzE4QkUxNzUxNDc0M0RENzAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uTWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzMThCRTE3NzE0NzQzRTYwMDBBOEZCQjIgLyogV0tOb3Rp
ZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMTFBQjMxNDg0NTJFOTAwNDlBNEND
IC8qIFdlYk5vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUJBOTI0RDE0ODgz
MTI2MDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCBh
NGQ2YmYwMDE5NTc0ZTY4NzhiZWRiYmIzMjEyZGViNzZkMGI1N2ZjLi42ZDQzNDEwMzMwMjMxYmUw
ZjIwMDczODIyN2YwNGNjZWYyZjAyODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXIuY3BwCkBAIC0zNyw3ICszNywxNSBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewotICAgIAorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitzdGF0
aWMgdWludDY0X3QgZ2VuZXJhdGVOb3RpZmljYXRpb25JRCgpCit7CisgICAgc3RhdGljIHVpbnQ2
NF90IHVuaXF1ZU5vdGlmaWNhdGlvbklEID0gMTsKKyAgICByZXR1cm4gdW5pcXVlTm90aWZpY2F0
aW9uSUQrKzsKK30KKyNlbmRpZgorCiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MqIHByb2Nlc3MpCiAgICAgOiBtX3Byb2Nlc3MocHJvY2Vz
cykKIHsKQEAgLTQ3LDEwICs1NSwxOSBAQCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjp+V2ViTm90
aWZpY2F0aW9uTWFuYWdlcigpCiB7CiB9CiAKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQ
Qzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVu
dHMpCit7CisgICAgZGlkUmVjZWl2ZVdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlKGNvbm5l
Y3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKK30KKwogYm9vbCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQog
ewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OlNob3cobm90aWZp
Y2F0aW9uLT5jb250ZW50cygpLnRpdGxlLCBub3RpZmljYXRpb24tPmNvbnRlbnRzKCkuYm9keSwg
MCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCA9IGdlbmVy
YXRlTm90aWZpY2F0aW9uSUQoKTsKKyAgICBtX25vdGlmaWNhdGlvbk1hcC5zZXQobm90aWZpY2F0
aW9uLCBub3RpZmljYXRpb25JRCk7CisgICAgbV9ub3RpZmljYXRpb25JRE1hcC5zZXQobm90aWZp
Y2F0aW9uSUQsIG5vdGlmaWNhdGlvbik7CisgICAgCisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6U2hvdyhub3Rp
ZmljYXRpb24tPmNvbnRlbnRzKCkudGl0bGUsIG5vdGlmaWNhdGlvbi0+Y29udGVudHMoKS5ib2R5
LCBub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKICNlbmRpZgogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtNTgsNyArNzUsNDkgQEAgYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpz
aG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWwoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIFdl
YlBhZ2UqIHBhZ2UpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgbV9wcm9jZXNz
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6Q2FuY2VsKDApLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Q2FuY2VsKG1f
bm90aWZpY2F0aW9uTWFwLmdldChub3RpZmljYXRpb24pKSwgcGFnZS0+cGFnZUlEKCkpOworICAg
IC8vIG9uIGNsb3NlIGlmIGRlbGl2ZXJlZCwgb3RoZXJ3aXNlIG5vdGhpbmcuCisjZW5kaWYKK30K
Kwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKE5v
dGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQoreworI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQorICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gbV9ub3RpZmljYXRp
b25NYXAudGFrZShub3RpZmljYXRpb24pOworICAgIG1fbm90aWZpY2F0aW9uSURNYXAudGFrZShu
b3RpZmljYXRpb25JRCk7CisgICAgLy8gaWYgZGVzdHJveWVkLCBubyBjYWxsYmFja3MsIHJpZ2h0
PworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OkRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQp
LCBwYWdlLT5wYWdlSUQoKSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQoreworI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIGlmICghbV9ub3RpZmljYXRpb25JRE1hcC5jb250
YWlucyhub3RpZmljYXRpb25JRCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX25vdGlmaWNhdGlv
bklETWFwLmdldChub3RpZmljYXRpb25JRCktPmRpc3BhdGNoU2hvd0V2ZW50KCk7CisjZW5kaWYK
K30KKwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbGlja05vdGlmaWNhdGlvbih1
aW50NjRfdCBub3RpZmljYXRpb25JRCkKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAg
ICBpZiAoIW1fbm90aWZpY2F0aW9uSURNYXAuY29udGFpbnMobm90aWZpY2F0aW9uSUQpKQorICAg
ICAgICByZXR1cm47CisgICAgbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQp
LT5kaXNwYXRjaENsaWNrRXZlbnQoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXI6OmRpZENsb3NlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBu
b3RpZmljYXRpb25JRHMpCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgc2l6ZV90
IGNvdW50ID0gbm90aWZpY2F0aW9uSURzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBub3Rp
ZmljYXRpb25JRHNbaV07CisgICAgICAgIGlmICghbV9ub3RpZmljYXRpb25JRE1hcC5jb250YWlu
cyhub3RpZmljYXRpb25JRCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fbm90aWZp
Y2F0aW9uSURNYXAuZ2V0KG5vdGlmaWNhdGlvbklEKS0+ZGlzcGF0Y2hDbG9zZUV2ZW50KCk7Cisg
ICAgfQogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDAw
MzNhZTM4YjUyOTkwMDBkYWY4ODhjM2Y0ZGVlMWRlYzY3NWZjYmMuLjA3Y2ZhZmM3ODU2ZDA4ZWUw
N2FkYjczZWNlNGI1OTg1NGVmZWNlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIu
aApAQCAtMjYsMTEgKzI2LDIwIEBACiAjaWZuZGVmIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJfaAog
I2RlZmluZSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyX2gKIAorI2luY2x1ZGUgIk1lc3NhZ2VJRC5o
IgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIENvcmVJUEMgeworY2xhc3MgQXJndW1lbnREZWNvZGVyOworY2xhc3MgQ29ubmVjdGlv
bjsKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTm90aWZpY2F0aW9uOyAgICAKLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKK30KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ1LDkg
KzU0LDI4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdyhXZWJDb3JlOjpOb3RpZmljYXRpb24q
LCBXZWJQYWdlKik7CiAgICAgdm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiwgV2Vi
UGFnZSopOworICAgIC8vIFRoaXMgY2FsbGJhY2sgY29tZXMgZnJvbSBXZWJDb3JlLCBub3QgbWVz
c2FnZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4KKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRp
b24oV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiwgV2ViUGFnZSopOworCisgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqKTsKIAogcHJpdmF0ZToKKyAgICAvLyBJbXBsZW1lbnRlZCBp
biBnZW5lcmF0ZWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyAg
ICB2b2lkIGRpZFJlY2VpdmVXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
KTsKKyAgICAKKyAgICB2b2lkIGRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0
aW9uSUQpOworICAgIHZvaWQgZGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0
aW9uSUQpOworICAgIHZvaWQgZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50
NjRfdD4mIG5vdGlmaWNhdGlvbklEcyk7CisKICAgICBXZWJQcm9jZXNzKiBtX3Byb2Nlc3M7CisK
KyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbj4sIHVpbnQ2NF90PiBOb3RpZmljYXRpb25NYXA7CisgICAgTm90
aWZpY2F0aW9uTWFwIG1fbm90aWZpY2F0aW9uTWFwOworICAgIAorICAgIHR5cGVkZWYgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6Ok5vdGlmaWNhdGlvbj4gPiBOb3RpZmljYXRpb25J
RE1hcDsKKyAgICBOb3RpZmljYXRpb25JRE1hcCBtX25vdGlmaWNhdGlvbklETWFwOworI2VuZGlm
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNkOTdmZjdhMjgxZjVkNTY1N2Y1
Zjk0ZmI0N2Y0ZGVjMjNiY2U2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
CkBAIC0wLDAgKzEsMjcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworbWVzc2FnZXMgLT4gV2ViTm90aWZpY2F0aW9uTWFuYWdlciB7CisgICAgRGlkU2hvd05vdGlm
aWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAgRGlkQ2xpY2tOb3RpZmljYXRp
b24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOworICAgIERpZENsb3NlTm90aWZpY2F0aW9ucyhW
ZWN0b3I8dWludDY0X3Q+IG5vdGlmaWNhdGlvbklEcyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNh
dGlvbkNsaWVudC5jcHAKaW5kZXggMDU3MTdmZmRjZDBmNjQxNjIyNWQ4ODQzYmZjNzg4MjlkZmU1
MTIxZC4uZjgzOTdmYjA4YjU3NGFiZDNiZDYyNDE1N2U0MmY3ZDNiN2RmNWU1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRp
b25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcApAQCAtNjQsOSArNjQsMTMgQEAgdm9pZCBXZWJO
b3RpZmljYXRpb25DbGllbnQ6OmNhbmNlbChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICNl
bmRpZgogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uT2JqZWN0
RGVzdHJveWVkKE5vdGlmaWNhdGlvbiopCit2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90
aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5vdGlm
aWNhdGlvbk1hbmFnZXIoKS5kaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgbV9w
YWdlKTsKKyNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdl
Yk5vdGlmaWNhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCmluZGV4IDI3OTA5MzJhODhhNWQyYjM4ZjA2NGFkM2IxMWYyMTAyMzRl
YTMyOGIuLjA2ODFhMjc0NzM1YWU4NDU4MzM4OWE3MmY0MmFhN2FlNTc4NGEyYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNjM4LDYgKzYzOCwxMyBAQCB2
b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIENvcmVJUEM6Ok1lcwogICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdl
Q2xhc3NXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpKSB7CisgICAgICAgIG1fbm90aWZpY2F0aW9u
TWFuYWdlci5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50
cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICAKICAgICBpZiAobWVzc2Fn
ZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyPigpKSB7
CiAgICAgICAgIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpzaGFyZWQoKS5kaWRSZWNlaXZlTWVz
c2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117523</attachid>
            <date>2011-12-01 16:45:34 -0800</date>
            <delta_ts>2011-12-01 17:46:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73572-20111201164649.patch</filename>
            <type>text/plain</type>
            <size>41403</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIwM2JjZGM5ZDcxNTdk
YmMzMDA0MjFiZDFiODkwODBkYmZiYWQ4Mi4uMDk1NDI1OWQyM2U0ZWFjOGJiZTJiYTZmN2Q5NmI4
MDljMjk0NjYxYSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTEyLTAxICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgZnVydGhlciBzdXBw
b3J0IGZvciBub3RpZmljYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MzU3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA0NzIxOTU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
LmV4cC5pbjogRXhwb3J0IGNvbnN0cnVjdG9yIGFuZCBkaXNwYXRjaCBmdW5jdGlvbnMKKyAgICAg
ICAgKiBkb20vRXZlbnROYW1lcy5oOiBBZGQgc2hvdyBldmVudC4KKyAgICAgICAgKiBub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OnNob3cpOiBGb3IgdGhlIE1hYyBwbGF0Zm9ybSwgd2UganVzdCBmb3J3YXJkIHRoZSBzaG93KCkg
Y2FsbCB0byB0aGUKKyAgICAgICAgbm90aWZpY2F0aW9uIGNsaWVudCBhbmQgdXBkYXRlIHRoZSBz
dGF0ZSwgYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHN5bmNocm9ub3VzIGFja25vd2xlZGdtZW50IHRo
YXQgdGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBnb3QgZGVsaXZlcmVkLgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaFNob3dFdmVudCk6IENyZWF0ZSBzaW1wbGUgZXZl
bnRzIGFuZCBkaXNwYXRjaCB0byB0aGUgbm90aWZpY2F0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNrRXZlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpOb3RpZmljYXRpb246OmRpc3BhdGNoRXJyb3JFdmVudCk6IERpdHRvLgorICAgICAg
ICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6IEFkZCBkaXNwYXRjaCBmdW5jdGlvbnMu
CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOiBBZGQgb25zaG93IGV2
ZW50IGxpc3RlbmVyLiBUaGUgb25kaXNwbGF5IGV2ZW50IGxpc3RlbmVyIHNob3VsZCBiZQorICAg
ICAgICByZW1vdmVkIHdoZW4gaW1wbGVtZW50YXRpb25zIGNoYW5nZSB0aGUgZXZlbnQgbGlzdGVu
ZXIgdG8gb25zaG93LgorCiAyMDExLTExLTMwICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUu
Y29tPgogCiAgICAgICAgIFhIUiAncHJvZ3Jlc3MnIGV2ZW50IGNvZGUgYXNzdW1lcyB3cm9uZ2x5
IHRoYXQgZXhwZWN0ZWRMZW5ndGggPj0gMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDk1M2UyM2FmNGViMDMzMTBi
YWFhNDdmODM1NDNhZGY3OTJkZDExYzkuLjliYWYwNTFkYzBjNDYzYTYxOTg5MGQxNWFlN2VkOTMz
MjBhZDBlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxMS0xMi0wMSAgSm9uIExl
ZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIGZ1cnRoZXIgc3VwcG9y
dCBmb3Igbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzM1NzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNDcyMTk1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46IEFkZGVk
LiBDb250YWlucyBtZXNzYWdlcyBmb3IgY2FsbGJhY2tzCisgICAgICAgIGZyb20gdGhlIG5vdGlm
aWNhdGlvbiBwbGF0Zm9ybS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IEFkZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaTogRGl0
dG8uCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaDogQWRkIG1lc3NhZ2Ug
Y2xhc3MuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOiBGb3J3YXJkIGNhbGxzIHRvIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIgd2hlbiBuZWVkZWQuCisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IG1lc3NhZ2UgZmlsZXMuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uLmg6IEFkZCBhbmQgZXhwb3NlIGludGVybmFsIElE
IG9mIGVhY2ggbm90aWZpY2F0aW9uIHNlbnQgdG8gdGhlIHBsYXRmb3JtLgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlm
aWNhdGlvbjo6bm90aWZpY2F0aW9uSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOb3RpZmlj
YXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbjo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oOiBFeHBvc2Ugbm90aWZpY2F0aW9uIElEIHRvIFdLQVBJ
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5jcHA6CisgICAgICAg
IChXS05vdGlmaWNhdGlvbkdldE5vdGlmaWNhdGlvbklEKToKKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaDogQWRkIGNhbGxiYWNrcyBmb3IgZGlzcGF0
Y2hpbmcgZXZlbnRzIGJhY2sgdG8gdGhlIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKTogUmVtb3ZlIG1hbmFnZXIuCisg
ICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyk6IEFkZCBt
YW5hZ2VyIHByaW9yIHRvIHNob3dpbmcuCisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eTo6Y2FuY2VsKTogQWRkIG1hbmFnZXIgcHJpb3IgdG8gY2FuY2VsaW5nLgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lO
b3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRD
bG9zZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNh
dGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hv
d05vdGlmaWNhdGlvbik6CisgICAgICAgIChXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRp
ZENsaWNrTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3Zp
ZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb25Q
cm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpz
aG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmNhbmNlbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpkaWREZXN0cm95Tm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmFk
ZE5vdGlmaWNhdGlvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25Q
cm92aWRlcjo6cmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uUHJvdmlkZXIuaDogRXhwb3NlIGFkZC9yZW1vdmVOb3RpZmlj
YXRpb25NYW5hZ2VyIGNhbGxzCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5oOiBBZGQgYm9va2tlZXBpbmcgdG8ga2VlcCB0cmFjayBv
ZiBub3RpZmljYXRpb24gSURzIHdpdGgKKyAgICAgICAgTm90aWZpY2F0aW9uIGluc3RhbmNlcy4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlTm90aWZpY2F0aW9uSUQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3cpOgorICAgICAgICAo
V2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZp
Y2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xv
c2VOb3RpZmljYXRpb25zKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkubWVzc2FnZXMuaW46IEFkZCBEaWREZXN0cm95Tm90aWZpY2F0aW9uIG1lc3Nh
Z2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25D
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25DbGllbnQ6Om5vdGlm
aWNhdGlvbk9iamVjdERlc3Ryb3llZCk6IEltcGxlbWVudGVkLgorCiAyMDExLTExLTMwICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhbiB1bm5l
ZWRlZCBhcmd1bWVudCBmcm9tIEZyYW1lTG9hZGVyQ2xpZW50Ojpkb3dubG9hZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCA5OTBiYjBhMjFhZWFiYWI0MzU3OTljM2FlMzQxYjk2NzhmOTE5OGU3Li4z
NDhhNDRhMzE1NmQ0MzY2MjQwN2ZiYTcyYzJjNWFmOTFhZGFhNGEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtMjAwOSwzICsyMDA5LDExIEBAIF9fWk5LN1dlYkNvcmU3SW50U2l6ZWN2N19OU1Np
emVFdgogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX1NOT1dfTEVPUEFSRCkKIF93a0NyZWF0ZVZNUHJlc3N1cmVEaXNwYXRjaE9uTWFpblF1
ZXVlCiAjZW5kaWYKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorX19aTjdXZWJDb3JlMTJO
b3RpZmljYXRpb25DMUV2CitfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbkQxRXYKK19fWk43V2Vi
Q29yZTEyTm90aWZpY2F0aW9uMTdkaXNwYXRjaFNob3dFdmVudEV2CitfX1pON1dlYkNvcmUxMk5v
dGlmaWNhdGlvbjE4ZGlzcGF0Y2hDbGlja0V2ZW50RXYKK19fWk43V2ViQ29yZTEyTm90aWZpY2F0
aW9uMThkaXNwYXRjaENsb3NlRXZlbnRFdgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApp
bmRleCBjNTM2Y2ZjMDA0ODBjYzc0ZDRlYTEyZWRmMWJkNmU3ZjQ3NTdlOWZmLi5kM2NmM2ZkYzlk
NmI3OTBjMWM2OTUxMDhhYTk3ZjliNTdlNjEwODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgK
QEAgLTE5NCw2ICsxOTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oYWRkc3Ry
ZWFtKSBcCiAgICAgbWFjcm8ocmVtb3Zlc3RyZWFtKSBcCiAgICAgXAorICAgIG1hY3JvKHNob3cp
IFwKKyAgICBcCiAKIC8vIGVuZCBvZiBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0gKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IDM0NDQyNDJj
YjVjMThmZjFiMDM0OWFiYjgxNTA2OTgzOWE4ZDc0MzMuLmFiOWU5ZTRkNjk2OTZlMDFmODQyMDBk
ODllZTc0MGViNmRkYjJiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5jcHAKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlICJOb3RpZmljYXRpb24u
aCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2lu
Y2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNvbnRlbnRzLmgiCkBAIC0x
MjcsNiArMTI5LDExIEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkKICAgICAgICAgfQogICAg
IH0gZWxzZQogICAgICAgICBzdGFydExvYWRpbmcoKTsKKyNlbGlmIFBMQVRGT1JNKE1BQykKKyAg
ICBpZiAobV9zdGF0ZSA9PSBJZGxlICYmIG1fbm90aWZpY2F0aW9uQ2VudGVyLT5wcmVzZW50ZXIo
KSkgeworICAgICAgICBtX25vdGlmaWNhdGlvbkNlbnRlci0+cHJlc2VudGVyKCktPnNob3codGhp
cyk7CisgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOworICAgIH0KICNlbHNlCiAgICAgLy8gcHJl
dmVudCBkb3VibGUtc2hvd2luZwogICAgIGlmIChtX3N0YXRlID09IElkbGUgJiYgbV9ub3RpZmlj
YXRpb25DZW50ZXItPnByZXNlbnRlcigpICYmIG1fbm90aWZpY2F0aW9uQ2VudGVyLT5wcmVzZW50
ZXIoKS0+c2hvdyh0aGlzKSkKQEAgLTIzMCw2ICsyMzcsMjYgQEAgdm9pZCBOb3RpZmljYXRpb246
OmZpbmlzaExvYWRpbmcoKQogICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogfQogCit2
b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZlbnQoKQoreworICAgIGRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2hvd0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsK
K30KKwordm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xpY2tFdmVudCgpCit7CisgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBmYWxzZSwg
ZmFsc2UpKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xvc2VFdmVudCgpCit7
CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50
LCBmYWxzZSwgZmFsc2UpKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoRXJyb3JF
dmVudCgpCit7CisgICAgZGlzcGF0Y2hFdmVudChFcnJvckV2ZW50OjpjcmVhdGUoKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggYmI0
MGE4MDk0ODE0OGNmYWE5MDBmNTYxYzkyOGE0YTVhMmM3MjlmYy4uZGQwZDZlZDg0YWQzMDc5ZDg4
YmEwMmEwMmJjYWNjNmE2NDVjYjM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oCkBAIC04OCwxMCArODgsMTggQEAgcHVibGljOgogCiAgICAgVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBkaXIoKSA9PSAicnRsIiA/IFJUTCA6
IExUUjsgfQogCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihzaG93KTsKKyAg
ICAvLyBGSVhNRTogVGhlIGxhdGVzdCBXZWIgTm90aWZpY2F0aW9ucyBzdGFuZGFyZCB1c2VzIHRo
ZSBvbnNob3cgZXZlbnQgbGlzdGVuZXIuCisgICAgLy8gVGhlIG9uZGlzcGxheSBldmVudCBsaXN0
ZW5lciBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIGltcGxlbWVudGF0aW9ucyBjaGFuZ2UgdGhlIGV2
ZW50IGxpc3RlbmVyIHRvIG9uc2hvdy4KICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKGRpc3BsYXkpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3Ip
OwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2xvc2UpOwogICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2xpY2spOworICAgIAorICAgIHZvaWQgZGlzcGF0
Y2hDbGlja0V2ZW50KCk7CisgICAgdm9pZCBkaXNwYXRjaENsb3NlRXZlbnQoKTsKKyAgICB2b2lk
IGRpc3BhdGNoRXJyb3JFdmVudCgpOworICAgIHZvaWQgZGlzcGF0Y2hTaG93RXZlbnQoKTsKIAog
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPjo6cmVmOwogICAgIHVzaW5nIFJlZkNv
dW50ZWQ8Tm90aWZpY2F0aW9uPjo6ZGVyZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5pZGwKaW5kZXggNWFmN2M0ZGZmZjVhYzBlOGZhZTZmYjU5MDE5MjM4
YzNjOTYwMTg0My4uZDhjYjNjYzM5YTI1ZTcxNzQzZTlmNzVlOWU4Y2Y0YzE4MGUyMjE2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbApAQCAtNDAs
NiArNDAsOSBAQCBtb2R1bGUgdGhyZWFkcyB7CiAgICAgICAgIHZvaWQgc2hvdygpOwogICAgICAg
ICB2b2lkIGNhbmNlbCgpOwogCisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uc2hv
dzsKKyAgICAgICAgLy8gRklYTUU6IFRoZSBsYXRlc3QgV2ViIE5vdGlmaWNhdGlvbnMgc3RhbmRh
cmQgdXNlcyB0aGUgb25zaG93IGV2ZW50IGxpc3RlbmVyLgorICAgICAgICAvLyBUaGUgb25kaXNw
bGF5IGV2ZW50IGxpc3RlbmVyIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gaW1wbGVtZW50YXRpb25z
IGNoYW5nZSB0aGUgZXZlbnQgbGlzdGVuZXIgdG8gb25zaG93LgogICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmRpc3BsYXk7CiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9uZXJyb3I7CiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2xvc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktp
dDIvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5NGUzZjNkOWRjZjRiMmI4ZWUzMDBjMWE4MGNj
ZTJmMzRjMTJiN2ZjLi5hMzAwZjg0YmQ5YmQ5M2U1ZWUyNzYzODEwODA2MTE1MzI1ZDFhMjg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc0LDYgKzc0LDcgQEAgTUVTU0FHRV9S
RUNFSVZFUlMgPSBcCiAgICAgV2ViTWVkaWFDYWNoZU1hbmFnZXIgXAogICAgIFdlYk1lZGlhQ2Fj
aGVNYW5hZ2VyUHJveHkgXAogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSBcCisgICAg
V2ViTm90aWZpY2F0aW9uTWFuYWdlciBcCiAgICAgV2ViUGFnZSBcCiAgICAgV2ViUGFnZVByb3h5
IFwKICAgICBXZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRT
b3VyY2VzLnByaSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCBjYWU2
MDIwMWUzMjYwZTNlNjhkMmU0MzRiZWQyZTJkOWExMTM0YjRjLi40ZjI1YmY0MzhiMGViMDVjMjhj
NWIxZTMxYWQyMjE0Y2I2Mjk0ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVk
U291cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC04
NCw2ICs4NCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFdlYk1lZGlhQ2FjaGVNYW5h
Z2VyLm1lc3NhZ2VzLmluIFwKICAgICBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluIFwKICAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gXAorICAg
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gXAogICAgIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyLm1lc3NhZ2VzLmluIFwKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluIFwKICAgICBXZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmggYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCmluZGV4IDI5NmMyMmYyNTlmZjlh
MzYzMDY0NDU2ZGVjNDU1NDQ4MzMzZWM1YzguLjMwZGYxNDg3MGExNDY2NDZmZGQxNmMxYzhjNWFj
OTA2MzNiZDc3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
TWVzc2FnZUlELmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
SUQuaApAQCAtNDgsNiArNDgsNyBAQCBlbnVtIE1lc3NhZ2VDbGFzcyB7CiAgICAgTWVzc2FnZUNs
YXNzV2ViSW5zcGVjdG9yLAogICAgIE1lc3NhZ2VDbGFzc1dlYktleVZhbHVlU3RvcmFnZU1hbmFn
ZXIsCiAgICAgTWVzc2FnZUNsYXNzV2ViTWVkaWFDYWNoZU1hbmFnZXIsCisgICAgTWVzc2FnZUNs
YXNzV2ViTm90aWZpY2F0aW9uTWFuYWdlciwKICAgICBNZXNzYWdlQ2xhc3NXZWJQYWdlLAogICAg
IE1lc3NhZ2VDbGFzc1dlYlByb2Nlc3MsCiAgICAgTWVzc2FnZUNsYXNzV2ViUmVzb3VyY2VDYWNo
ZU1hbmFnZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tO
b3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZp
Y2F0aW9uLmNwcAppbmRleCAzOGM0NzJkZjc3MTk0NjBhOGVlNzUzYzBjYjRhMjAxMDliNmQ4NWY3
Li4wODhlNzczNzc3Y2IxY2E2ZjVhNTY4MmZhNDBiNjBmZGFjYWE4NDNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5jcHAKQEAgLTQ2LDMg
KzQ2LDcgQEAgV0tTdHJpbmdSZWYgV0tOb3RpZmljYXRpb25Db3B5Qm9keShXS05vdGlmaWNhdGlv
blJlZiBub3RpZmljYXRpb24pCiAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChub3RpZmlj
YXRpb24pLT5ib2R5KCkpOwogfQogCit1aW50NjRfdCBXS05vdGlmaWNhdGlvbkdldElEKFdLTm90
aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbikKK3sKKyAgICByZXR1cm4gdG9JbXBsKG5vdGlmaWNh
dGlvbiktPm5vdGlmaWNhdGlvbklEKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oCmluZGV4IGI4ZDJkZjU4OWNmNGZlNzM4YTA0OTM1ZTg2
ZjllNzcxODBhNTZiOTIuLmQzOTVmNWRmYzE5ZDdhNmNiZmE0MzA2ZDlhZGQzOTRhYzBjMTI0Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5o
CkBAIC0zNiw3ICszNiw4IEBAIFdLX0VYUE9SVCBXS1R5cGVJRCBXS05vdGlmaWNhdGlvbkdldFR5
cGVJRCgpOwogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tOb3RpZmljYXRpb25Db3B5VGl0bGUo
V0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKTsKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBX
S05vdGlmaWNhdGlvbkNvcHlCb2R5KFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7Ci0g
ICAgCitXS19FWFBPUlQgdWludDY0X3QgV0tOb3RpZmljYXRpb25HZXRJRChXS05vdGlmaWNhdGlv
blJlZiBub3RpZmljYXRpb24pOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcAppbmRleCAxMDEyZGYxNDcyOGMwOTBlMjRkNDY0NjljN2IzNTYzMGU1OWRlYTNi
Li42ZGRmYTRjYzhhMWJkM2E5OTIyMWExZWFiZGE1ZTMwMTZlMjczNjlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcApAQCAtMzUsNyArMzUsMjMgQEAgV0tUeXBlSUQgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0
VHlwZUlEKCkKIHsKICAgICByZXR1cm4gdG9BUEkoV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjpBUElUeXBlKTsKIH0KKwogdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihX
S05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgY29uc3QgV0tOb3RpZmljYXRpb25Q
cm92aWRlciogd2tQcm92aWRlcikKIHsKICAgICB0b0ltcGwobWFuYWdlclJlZiktPmluaXRpYWxp
emVQcm92aWRlcih3a1Byb3ZpZGVyKTsKIH0KKwordm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZFNob3dOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFn
ZXJSZWYsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQoreworICAgIHRvSW1wbChtYW5hZ2VyUmVm
KS0+cHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKTsKK30KKwordm9p
ZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKFdLTm90
aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCkK
K3sKKyAgICB0b0ltcGwobWFuYWdlclJlZiktPnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24o
bm90aWZpY2F0aW9uSUQpOworfQorCit2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVy
RGlkQ2xvc2VOb3RpZmljYXRpb25zKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVm
LCBXS0FycmF5UmVmIG5vdGlmaWNhdGlvbklEcykKK3sKKyAgICB0b0ltcGwobWFuYWdlclJlZikt
PnByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKHRvSW1wbChub3RpZmljYXRpb25JRHMpKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNh
dGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNh
dGlvbk1hbmFnZXIuaAppbmRleCAzYzc0MzUxODBhNGRkZDRmNmY1YmZjYmM2YTljNDQyYjBlNzRi
NDVlLi43MzYwZGFkMDE0YTlhMDA3NGI4ZmJiYTdlMWQ3NzViMjIwMjc4ZGNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdl
ci5oCkBAIC0zNiw2ICszNiwxMCBAQCBleHRlcm4gIkMiIHsKIFdLX0VYUE9SVCBXS1R5cGVJRCBX
S05vdGlmaWNhdGlvbk1hbmFnZXJHZXRUeXBlSUQoKTsKIFdLX0VYUE9SVCB2b2lkIFdLTm90aWZp
Y2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2Vy
UmVmLCBjb25zdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyKiB3a1Byb3ZpZGVyKTsKIAorV0tfRVhQ
T1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9u
KFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBub3RpZmljYXRp
b25JRCk7CitXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENs
aWNrTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50
NjRfdCBub3RpZmljYXRpb25JRCk7CitXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJQcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYg
bWFuYWdlclJlZiwgV0tBcnJheVJlZiBub3RpZmljYXRpb25JRHMpOworCiAjaWZkZWYgX19jcGx1
c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS05vdGlmaWNhdGlvblByb3ZpZGVyLmgKaW5kZXggMjdiYTYyZmNhMTk1ZWFhMjJjOTM3
OTY1MTZmZDQxMTM5MTViOGM4MS4uNmZhNjViYmU3ZWI5NGE2YTU4ZDRjMWYyZDRmN2Y3YjQ2M2Fl
MGQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZp
Y2F0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tO
b3RpZmljYXRpb25Qcm92aWRlci5oCkBAIC0zNCwxMiArMzQsMTggQEAgZXh0ZXJuICJDIiB7CiAK
IHR5cGVkZWYgdm9pZCAoKldLTm90aWZpY2F0aW9uUHJvdmlkZXJTaG93Q2FsbGJhY2spKFdLTm90
aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBl
ZGVmIHZvaWQgKCpXS05vdGlmaWNhdGlvblByb3ZpZGVyQ2FuY2VsQ2FsbGJhY2spKFdLTm90aWZp
Y2F0aW9uUmVmIG5vdGlmaWNhdGlvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVm
IHZvaWQgKCpXS05vdGlmaWNhdGlvblByb3ZpZGVyRGlkRGVzdHJveU5vdGlmaWNhdGlvbkNhbGxi
YWNrKShXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24sIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOwordHlwZWRlZiB2b2lkICgqV0tOb3RpZmljYXRpb25Qcm92aWRlckFkZE5vdGlmaWNhdGlv
bk1hbmFnZXJDYWxsYmFjaykoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXIsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tOb3RpZmljYXRpb25Qcm92aWRl
clJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXJDYWxsYmFjaykoV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UmVmIG1hbmFnZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiBzdHJ1Y3QgV0tOb3RpZmlj
YXRpb25Qcm92aWRlciB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CiAgICAgY29uc3Qgdm9pZCogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CiAgICAgV0tO
b3RpZmljYXRpb25Qcm92aWRlclNob3dDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgIHNo
b3c7CiAgICAgV0tOb3RpZmljYXRpb25Qcm92aWRlckNhbmNlbENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgIGNhbmNlbDsKKyAgICBXS05vdGlmaWNhdGlvblByb3ZpZGVyRGlkRGVzdHJveU5v
dGlmaWNhdGlvbkNhbGxiYWNrICAgICAgZGlkRGVzdHJveU5vdGlmaWNhdGlvbjsKKyAgICBXS05v
dGlmaWNhdGlvblByb3ZpZGVyQWRkTm90aWZpY2F0aW9uTWFuYWdlckNhbGxiYWNrICAgICAgYWRk
Tm90aWZpY2F0aW9uTWFuYWdlcjsKKyAgICBXS05vdGlmaWNhdGlvblByb3ZpZGVyUmVtb3ZlTm90
aWZpY2F0aW9uTWFuYWdlckNhbGxiYWNrICAgcmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcjsKIH07
CiB0eXBlZGVmIHN0cnVjdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyIFdLTm90aWZpY2F0aW9uUHJv
dmlkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmlj
YXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvbi5jcHAK
aW5kZXggMWQyOGMxNGY3NWQ1ZWI1YzRiYjZmMjJkZTk5MGNkZjJlN2RhYjA4Zi4uM2YwMjU5ODYy
NGMxNTZhOThmYmYyMDlhNjIyZTExOTFjMmE2ZmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk5vdGlmaWNhdGlvbi5jcHAKQEAgLTM3LDkgKzM3LDEwIEBAIFdlYk5vdGlmaWNh
dGlvbjo6V2ViTm90aWZpY2F0aW9uKCkKIHsKIH0KIAotV2ViTm90aWZpY2F0aW9uOjpXZWJOb3Rp
ZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5KQorV2ViTm90
aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiBib2R5LCB1aW50NjRfdCBub3RpZmljYXRpb25JRCkKICAgICA6IG1fdGl0bGUodGl0bGUp
CiAgICAgLCBtX2JvZHkoYm9keSkKKyAgICAsIG1fbm90aWZpY2F0aW9uSUQobm90aWZpY2F0aW9u
SUQpCiB7CiB9CiAKQEAgLTQ5LDEyICs1MCwxMiBAQCBXZWJOb3RpZmljYXRpb246On5XZWJOb3Rp
ZmljYXRpb24oKQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbjo6ZW5jb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQ
Qzo6SW4obV90aXRsZSwgbV9ib2R5KSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6Oklu
KG1fdGl0bGUsIG1fYm9keSwgbV9ub3RpZmljYXRpb25JRCkpOwogfQogCiBib29sIFdlYk5vdGlm
aWNhdGlvbjo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViTm90
aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCiB7Ci0gICAgcmV0dXJuIGRlY29kZXItPmRlY29kZShD
b3JlSVBDOjpPdXQobm90aWZpY2F0aW9uLm1fdGl0bGUsIG5vdGlmaWNhdGlvbi5tX2JvZHkpKTsK
KyAgICByZXR1cm4gZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChub3RpZmljYXRpb24ubV90
aXRsZSwgbm90aWZpY2F0aW9uLm1fYm9keSwgbm90aWZpY2F0aW9uLm1fbm90aWZpY2F0aW9uSUQp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViTm90aWZpY2F0aW9uLmgKaW5kZXggNTY4NDlkZjUyZThjM2I2MjVlYjY5YzIzNWEyNWY0NzE3
Zjk4N2JhMy4uNmVlNzhmNWZjZTg1YmQxNTZkMzFmNGMyYmRiODExZGMxMDIwMDE5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb24uaApAQCAtNDQsMjYgKzQ0LDI5
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZU5vdGlmaWNh
dGlvbjsKICAgICAKICAgICBXZWJOb3RpZmljYXRpb24oKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJp
bmcmIGJvZHkpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViTm90aWZpY2F0aW9uPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCB1aW50NjRfdCBub3RpZmlj
YXRpb25JRCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViTm90aWZpY2F0
aW9uKHRpdGxlLCBib2R5KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViTm90aWZp
Y2F0aW9uKHRpdGxlLCBib2R5LCBub3RpZmljYXRpb25JRCkpOwogICAgIH0KICAgICB2aXJ0dWFs
IH5XZWJOb3RpZmljYXRpb24oKTsKICAgICAKICAgICBjb25zdCBTdHJpbmcmIHRpdGxlKCkgY29u
c3QgeyByZXR1cm4gbV90aXRsZTsgfQogICAgIAogICAgIGNvbnN0IFN0cmluZyYgYm9keSgpIGNv
bnN0IHsgcmV0dXJuIG1fYm9keTsgfQorICAgIAorICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25JRDsgfQogCiAgICAgdm9pZCBlbmNvZGUo
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFdlYk5vdGlmaWNhdGlvbiYpOwogCiBwcml2YXRl
OgotICAgIFdlYk5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcm
IGJvZHkpOworICAgIFdlYk5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIGJvZHksIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKIAogICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQogICAgIAogICAgIFN0cmluZyBtX3Rp
dGxlOwogICAgIFN0cmluZyBtX2JvZHk7CisgICAgdWludDY0X3QgbV9ub3RpZmljYXRpb25JRDsK
IH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggYzJi
MGNkNzYwOTk3OGUzNTkxZjMxYjlkNTE1NWIzMzU5MmFjOTc2Ny4uYTUzOTQ0NTMxNGM1MTQ4NzI2
ZjExZWVmOGE3MzlkOTJlYWNkZTJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTI2LDggKzI2LDEw
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmgiCiAKKyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgogI2luY2x1ZGUgIldlYkNv
bnRleHQuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlv
bkNvbnRlbnRzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CkBAIC01MSw2ICs1Myw3IEBAIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6fldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSgp
CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKCkKIHsKKyAg
ICBtX3Byb3ZpZGVyLnJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIodGhpcyk7CiB9CiAKIHZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojppbml0aWFsaXplUHJvdmlkZXIoY29uc3QgV0tO
b3RpZmljYXRpb25Qcm92aWRlciAqcHJvdmlkZXIpCkBAIC02NSwxMyArNjgsNzIgQEAgdm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qIGNvbm5lY3QKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNo
b3coY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCB1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCkKIHsKLSAgICBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24g
PSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSk7CisgICAgQVNTRVJUKG5vdGlm
aWNhdGlvbklEKTsKKyAgICBtX3Byb3ZpZGVyLmFkZE5vdGlmaWNhdGlvbk1hbmFnZXIodGhpcyk7
CisKKyAgICBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBXZWJOb3RpZmlj
YXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgbm90aWZpY2F0aW9uSUQpOworICAgIG1fbm90aWZp
Y2F0aW9ucy5zZXQobm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbik7CiAgICAgbV9wcm92aWRl
ci5zaG93KG5vdGlmaWNhdGlvbi5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpjYW5jZWwodWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgbV9wcm92
aWRlci5jYW5jZWwoMCk7CisgICAgQVNTRVJUKG5vdGlmaWNhdGlvbklEKTsKKyAgICBSZWZQdHI8
V2ViTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KG5vdGlm
aWNhdGlvbklEKTsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9wcm92aWRlci5hZGROb3RpZmljYXRpb25NYW5hZ2VyKHRoaXMpOworICAgIG1fcHJvdmlk
ZXIuY2FuY2VsKG5vdGlmaWNhdGlvbi5nZXQoKSk7Cit9CisgICAgCit2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmlj
YXRpb25JRCkKK3sKKyAgICBBU1NFUlQobm90aWZpY2F0aW9uSUQpOworICAgIFJlZlB0cjxXZWJO
b3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy50YWtlKG5vdGlmaWNh
dGlvbklEKTsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9wcm92aWRlci5kaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5nZXQoKSk7Cit9
CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3Rp
ZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit7CisgICAgaWYgKCFtX2NvbnRleHQp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBBU1NFUlQobm90aWZpY2F0aW9uSUQpOworICAg
IG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpEaWRTaG93Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSk7Cit9CisKK3ZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9u
KHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQoreworICAgIGlmICghbV9jb250ZXh0KQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgQVNTRVJUKG5vdGlmaWNhdGlvbklEKTsKKyAgICBtX2NvbnRl
eHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
RGlkQ2xpY2tOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpKTsKK30KKworCit2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoSW1t
dXRhYmxlQXJyYXkqIG5vdGlmaWNhdGlvbklEcykKK3sKKyAgICBpZiAoIW1fY29udGV4dCkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIHNpemVfdCBzaXplID0gbm90aWZpY2F0aW9uSURzLT5z
aXplKCk7CisgICAgCisgICAgVmVjdG9yPHVpbnQ2NF90PiB2ZWN0b3JOb3RpZmljYXRpb25JRHM7
CisgICAgdmVjdG9yTm90aWZpY2F0aW9uSURzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7
CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAg
dWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRpb25JRHMtPmF0PFdlYlVJbnQ2ND4o
aSktPnZhbHVlKCk7CisgICAgICAgIGlmIChub3RpZmljYXRpb25JRCkKKyAgICAgICAgICAgIHZl
Y3Rvck5vdGlmaWNhdGlvbklEcy5hcHBlbmQobm90aWZpY2F0aW9uSUQpOworICAgIH0KKyAgICAK
KyAgICBpZiAodmVjdG9yTm90aWZpY2F0aW9uSURzLnNpemUoKSkKKyAgICAgICAgbV9jb250ZXh0
LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRp
ZENsb3NlTm90aWZpY2F0aW9ucyh2ZWN0b3JOb3RpZmljYXRpb25JRHMpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXggY2M3NzliOWZlYmRkNDYyYzU2MTdmMzMw
M2ZkYzhkZDljYTc0ZjM5Yi4uNTg3ZmE5YTQ4NjFkYTE2ZGI4Y2Q1OTU3NjJhOWM3OGNmYTJjMzJm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VJRC5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CkBAIC0zOCw2ICszOSw3IEBAIGNsYXNzIENvbm5l
Y3Rpb247CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBJbW11dGFibGVBcnJheTsKIGNs
YXNzIFdlYkNvbnRleHQ7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSA6IHB1
YmxpYyBBUElPYmplY3QgewpAQCAtNTIsNiArNTQsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBp
bml0aWFsaXplUHJvdmlkZXIoY29uc3QgV0tOb3RpZmljYXRpb25Qcm92aWRlciopOwogICAgIAor
ICAgIHZvaWQgcHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlv
bklEKTsKKyAgICB2b2lkIHByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qgbm90
aWZpY2F0aW9uSUQpOworICAgIHZvaWQgcHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoSW1t
dXRhYmxlQXJyYXkqIG5vdGlmaWNhdGlvbklEcyk7CisgICAgCiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqKTsKIAogcHJpdmF0ZToKQEAgLTY0LDkgKzcwLDEzIEBAIHByaXZh
dGU6CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgc2hvdyhjb25zdCBXVEY6OlN0
cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiBib2R5LCB1aW50NjRfdCBub3RpZmljYXRp
b25JRCk7CiAgICAgdm9pZCBjYW5jZWwodWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOworICAgIHZv
aWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAg
CisgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPiA+
IFdlYk5vdGlmaWNhdGlvbk1hcDsKICAgICAKICAgICBXZWJDb250ZXh0KiBtX2NvbnRleHQ7CiAg
ICAgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgbV9wcm92aWRlcjsKKyAgICBXZWJOb3RpZmljYXRp
b25NYXAgbV9ub3RpZmljYXRpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlNzY3OGE0YjIzNWRkNDVlNzE2MmY0ZDI3
MjdiNzdhYTVmYjgwNDRiLi42ZDQwM2MzZDdkODU5Y2U1ZDkwMGE0OGEwZGViNDY5ZDgwNjE4OGFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDQgKzIzLDUgQEAKIG1l
c3NhZ2VzIC0+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSB7CiAgICAgU2hvdyhXVEY6OlN0
cmluZyB0aXRsZSwgV1RGOjpTdHJpbmcgYm9keSwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwog
ICAgIENhbmNlbCh1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAgRGlkRGVzdHJveU5vdGlm
aWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCBmN2FjNWU3
ODdkNmJjMjYzN2ZmMDczNzQxMTA1MGM2MjBlNzQ5ZmM5Li40NjFiMWFkNzg5NmRhZTk3MjhlMDQ3
MmIzYWZiNjVlY2EzODRkZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUg
IldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApA
QCAtNDcsNCArNDgsMjggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6Y2FuY2VsKFdl
Yk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogICAgIG1fY2xpZW50LmNhbmNlbCh0b0FQSShu
b3RpZmljYXRpb24pLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAordm9pZCBXZWJOb3RpZmlj
YXRpb25Qcm92aWRlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbikKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZERlc3Ryb3lOb3RpZmljYXRpb24p
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2NsaWVudC5kaWREZXN0cm95Tm90aWZpY2F0
aW9uKHRvQVBJKG5vdGlmaWNhdGlvbiksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCit2b2lk
IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjphZGROb3RpZmljYXRpb25NYW5hZ2VyKFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eSogbWFuYWdlcikKK3sKKyAgICBpZiAoIW1fY2xpZW50LmFkZE5v
dGlmaWNhdGlvbk1hbmFnZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2NsaWVudC5h
ZGROb3RpZmljYXRpb25NYW5hZ2VyKHRvQVBJKG1hbmFnZXIpLCBtX2NsaWVudC5jbGllbnRJbmZv
KTsKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVtb3ZlTm90aWZpY2F0aW9u
TWFuYWdlcihXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkqIG1hbmFnZXIpCit7CisgICAgaWYg
KCFtX2NsaWVudC5yZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgbV9jbGllbnQucmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcih0b0FQSShtYW5hZ2Vy
KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaApp
bmRleCBlYjJiZjQ3ZWJiYzE1ZDMwZGQxMzgxOGY2OWM0MzNkYmVlMjhjNWEyLi5mZjQwYmE4Zjdk
MGY5ZmIwZDRkOTE1MTg5MDZkM2IxMzRlODM2ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAtMzMsMTEgKzMzLDE2IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViTm90aWZpY2F0aW9uOworY2xhc3MgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5OwogICAgIAogY2xhc3MgV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIgOiBwdWJsaWMgQVBJQ2xpZW50PFdLTm90aWZpY2F0aW9uUHJvdmlkZXIsIGtXS05vdGlm
aWNhdGlvblByb3ZpZGVyQ3VycmVudFZlcnNpb24+IHsKIHB1YmxpYzoKICAgICB2b2lkIHNob3co
V2ViTm90aWZpY2F0aW9uKik7CiAgICAgdm9pZCBjYW5jZWwoV2ViTm90aWZpY2F0aW9uKik7Cisg
ICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYk5vdGlmaWNhdGlvbiopOworCisgICAg
dm9pZCBhZGROb3RpZmljYXRpb25NYW5hZ2VyKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSop
OworICAgIHZvaWQgcmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcihXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk1M2U5YjA0YjM0
NmQ5MmQ3Y2RjNDY1ZGFmNjgxMzY4NDIyMDkzOWUuLjI2MTAxMjUxNTlmNGFiMWZmZGViOTg4ODA5
ODA2NmM3YWI3ODU0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTI2MCw2ICsyNjAsOCBAQAogCQkzMThCRTE3NTE0NzQzREQ3
MDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOEJFMTc0MTQ3NDNERDYwMEE4RkJCMiAvKiBX
S05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwICovOyB9OwogCQkzMThCRTE3NzE0NzQzRTYwMDBBOEZC
QjIgLyogV0tOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzE4QkUxNzYxNDc0M0U2MDAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9u
LmNwcCAqLzsgfTsKIAkJMzE4QkUxNzkxNDc0M0U2RjAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMThCRTE3
ODE0NzQzRTZBMDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzMUJBOTI0RDE0ODgzMTI2MDA2MkVEQjUg
LyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUJBOTI0ODE0ODgzMDgxMDA2MkVE
QjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJ
CTMxQkE5MjRFMTQ4ODMxMjYwMDYyRURCNSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQkE5
MjQ5MTQ4ODMwODEwMDYyRURCNSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCAq
LzsgfTsKIAkJMzFDMTFBQjMxNDg0NTJFOTAwNDlBNENDIC8qIFdlYk5vdGlmaWNhdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUMxMUFCMTE0
ODQ1MkU5MDA0OUE0Q0MgLyogV2ViTm90aWZpY2F0aW9uLmNwcCAqLzsgfTsKIAkJMzFDMTFBQjQx
NDg0NTJFOTAwNDlBNENDIC8qIFdlYk5vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMTFBQjIxNDg0NTJFOTAwNDlBNENDIC8qIFdl
Yk5vdGlmaWNhdGlvbi5oICovOyB9OwogCQkzMUVBMjVEMjEzNEY3OEMwMDA1QjE0NTIgLyogTmF0
aXZlV2ViTW91c2VFdmVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxRUEyNUQwMTM0Rjc4QjIwMDVCMTQ1MiAvKiBOYXRpdmVXZWJNb3VzZUV2
ZW50TWFjLm1tICovOyB9OwpAQCAtMTIzMiw2ICsxMjM0LDggQEAKIAkJMzE4QkUxNzQxNDc0M0RE
NjAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMThCRTE3NjE0NzQzRTYwMDBBOEZCQjIgLyogV0tOb3RpZmlj
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tOb3RpZmlj
YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMThCRTE3ODE0NzQzRTZB
MDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOb3RpZmljYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFCQTkyNDgxNDg4MzA4MTAwNjJF
REI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQkE5MjQ5MTQ4
ODMwODEwMDYyRURCNSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQzExQUIxMTQ4NDUyRTkwMDQ5QTRD
QyAvKiBXZWJOb3RpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViTm90aWZpY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzFDMTFBQjIxNDg0NTJFOTAwNDlBNENDIC8qIFdlYk5vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzFFQTI1RDAxMzRGNzhCMjAwNUIxNDUyIC8qIE5hdGl2ZVdlYk1vdXNl
RXZlbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOYXRpdmVXZWJNb3VzZUV2ZW50TWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzUwMyw2ICszNTA3LDggQEAKIAkJ
CQkzM0QzQTNDNTEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJNZXNzYWdl
cy5oICovLAogCQkJCTMzRDNBM0M2MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFu
YWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkzM0QzQTNDNzEzMzk2MTc5MDA3
MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJMzFC
QTkyNDgxNDg4MzA4MTAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLAorCQkJCTMxQkE5MjQ5MTQ4ODMwODEwMDYyRURCNSAvKiBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQkzMThCRTE2NTE0NzM0MzM3MDBBOEZCQjIg
LyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJ
CQkzMThCRTE2NjE0NzM0MzM3MDBBOEZCQjIgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
TWVzc2FnZXMuaCAqLywKIAkJCQlDMENFNzI5RTEyNDdFNzFEMDBCQzBFQzQgLyogV2ViUGFnZU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC00MDM0LDYgKzQwNDAsNyBAQAogCQkJCTMxOEJFMTcx
MTQ3NDNEQjEwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMxOEJFMTc5MTQ3NDNFNkYwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzFDMTFBQjQxNDg0NTJFOTAwNDlBNENDIC8qIFdlYk5vdGlmaWNhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFCQTkyNEUxNDg4MzEyNjAwNjJFREI1IC8qIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00NzQyLDYgKzQ3
NDksNyBAQAogCQkJCTMxOEJFMTc1MTQ3NDNERDcwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE4QkUxNzcxNDc0M0U2MDAwQThGQkIyIC8q
IFdLTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzExQUIzMTQ4NDUyRTkw
MDQ5QTRDQyAvKiBXZWJOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFCQTky
NEQxNDg4MzEyNjAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAK
aW5kZXggYTRkNmJmMDAxOTU3NGU2ODc4YmVkYmJiMzIxMmRlYjc2ZDBiNTdmYy4uNGY1ZDA4MzNh
ZGE5NjBlZDVmNDNjMmY5MjAxYWViMTIzODdjMGM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyLmNwcApAQCAtMzcsNyArMzcsMTUgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLSAgICAKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQorc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTm90aWZpY2F0aW9uSUQoKQoreworICAgIHN0YXRp
YyB1aW50NjRfdCB1bmlxdWVOb3RpZmljYXRpb25JRCA9IDE7CisgICAgcmV0dXJuIHVuaXF1ZU5v
dGlmaWNhdGlvbklEKys7Cit9CisjZW5kaWYKKwogV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzKiBwcm9jZXNzKQogICAgIDogbV9wcm9jZXNz
KHByb2Nlc3MpCiB7CkBAIC00NywxMCArNTUsMjAgQEAgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
fldlYk5vdGlmaWNhdGlvbk1hbmFnZXIoKQogewogfQogCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXI6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24s
IENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
YXJndW1lbnRzKQoreworICAgIGRpZFJlY2VpdmVXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7Cit9CisKIGJvb2wgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSog
cGFnZSkKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBtX3Byb2Nlc3MtPmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpTaG93
KG5vdGlmaWNhdGlvbi0+Y29udGVudHMoKS50aXRsZSwgbm90aWZpY2F0aW9uLT5jb250ZW50cygp
LmJvZHksIDApLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQg
PSBnZW5lcmF0ZU5vdGlmaWNhdGlvbklEKCk7CisgICAgQVNTRVJUKG5vdGlmaWNhdGlvbklEKTsK
KyAgICBtX25vdGlmaWNhdGlvbk1hcC5zZXQobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25JRCk7
CisgICAgbV9ub3RpZmljYXRpb25JRE1hcC5zZXQobm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlv
bik7CisgICAgCisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6U2hvdyhub3RpZmljYXRpb24tPmNvbnRlbnRzKCku
dGl0bGUsIG5vdGlmaWNhdGlvbi0+Y29udGVudHMoKS5ib2R5LCBub3RpZmljYXRpb25JRCksIHBh
Z2UtPnBhZ2VJRCgpKTsKICNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNTgsNyArNzYs
NTcgQEAgYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiogbm90
aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpj
YW5jZWwoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiB7CiAjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Q2FuY2VsKDApLCBwYWdlLT5w
YWdlSUQoKSk7CisgICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBtX25vdGlmaWNhdGlvbk1h
cC5nZXQobm90aWZpY2F0aW9uKTsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbklEKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Q2FuY2VsKG5vdGlmaWNhdGlvbklEKSwgcGFn
ZS0+cGFnZUlEKCkpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgV2ViUGFn
ZSogcGFnZSkKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICB1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCA9IG1fbm90aWZpY2F0aW9uTWFwLnRha2Uobm90aWZpY2F0aW9uKTsKKyAgICBp
ZiAoIW5vdGlmaWNhdGlvbklEKQorICAgICAgICByZXR1cm47CisKKyAgICBtX25vdGlmaWNhdGlv
bklETWFwLnRha2Uobm90aWZpY2F0aW9uSUQpOworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OkRpZERlc3Ryb3lO
b3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CisjZW5kaWYKK30K
Kwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIFJl
ZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAuZ2V0
KG5vdGlmaWNhdGlvbklEKTsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJu
OworICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hTaG93RXZlbnQoKTsKKyNlbmRpZgorfQorCit2
b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIFJlZlB0
cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAuZ2V0KG5v
dGlmaWNhdGlvbklEKTsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJuOwor
ICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hDbGlja0V2ZW50KCk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVj
dG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURzKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorICAgIHNpemVfdCBjb3VudCA9IG5vdGlmaWNhdGlvbklEcy5zaXplKCk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIHVpbnQ2NF90IG5vdGlm
aWNhdGlvbklEID0gbm90aWZpY2F0aW9uSURzW2ldOworICAgICAgICBSZWZQdHI8Tm90aWZpY2F0
aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb25J
RCk7CisgICAgICAgIGlmICghbm90aWZpY2F0aW9uKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CisgICAgfQogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDAwMzNhZTM4YjUyOTkw
MDBkYWY4ODhjM2Y0ZGVlMWRlYzY3NWZjYmMuLjA3Y2ZhZmM3ODU2ZDA4ZWUwN2FkYjczZWNlNGI1
OTg1NGVmZWNlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAtMjYsMTEg
KzI2LDIwIEBACiAjaWZuZGVmIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJfaAogI2RlZmluZSBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyX2gKIAorI2luY2x1ZGUgIk1lc3NhZ2VJRC5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIENvcmVJ
UEMgeworY2xhc3MgQXJndW1lbnREZWNvZGVyOworY2xhc3MgQ29ubmVjdGlvbjsKK30KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTm90aWZpY2F0aW9uOyAgICAKLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKK30KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ1LDkgKzU0LDI4IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgc2hvdyhXZWJDb3JlOjpOb3RpZmljYXRpb24qLCBXZWJQYWdlKik7
CiAgICAgdm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiwgV2ViUGFnZSopOworICAg
IC8vIFRoaXMgY2FsbGJhY2sgY29tZXMgZnJvbSBXZWJDb3JlLCBub3QgbWVzc2FnZWQgZnJvbSB0
aGUgVUkgcHJvY2Vzcy4KKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViQ29yZTo6
Tm90aWZpY2F0aW9uKiwgV2ViUGFnZSopOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqKTsKIAogcHJpdmF0ZToKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICB2b2lkIGRpZFJl
Y2VpdmVXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKKyAgICAKKyAg
ICB2b2lkIGRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOworICAg
IHZvaWQgZGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOworICAg
IHZvaWQgZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlm
aWNhdGlvbklEcyk7CisKICAgICBXZWJQcm9jZXNzKiBtX3Byb2Nlc3M7CisKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbj4sIHVpbnQ2NF90PiBOb3RpZmljYXRpb25NYXA7CisgICAgTm90aWZpY2F0aW9uTWFw
IG1fbm90aWZpY2F0aW9uTWFwOworICAgIAorICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPFdlYkNvcmU6Ok5vdGlmaWNhdGlvbj4gPiBOb3RpZmljYXRpb25JRE1hcDsKKyAgICBO
b3RpZmljYXRpb25JRE1hcCBtX25vdGlmaWNhdGlvbklETWFwOworI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIu
bWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNkOTdmZjdhMjgxZjVkNTY1N2Y1Zjk0ZmI0N2Y0ZGVj
MjNiY2U2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
MjcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMg
LT4gV2ViTm90aWZpY2F0aW9uTWFuYWdlciB7CisgICAgRGlkU2hvd05vdGlmaWNhdGlvbih1aW50
NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAgRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qg
bm90aWZpY2F0aW9uSUQpOworICAgIERpZENsb3NlTm90aWZpY2F0aW9ucyhWZWN0b3I8dWludDY0
X3Q+IG5vdGlmaWNhdGlvbklEcyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5j
cHAKaW5kZXggMDU3MTdmZmRjZDBmNjQxNjIyNWQ4ODQzYmZjNzg4MjlkZmU1MTIxZC4uZjE4NDhi
ZGZmOWRiNWNiZGY4NjY0YmEwMzlhZDY2YTc1NmNjMjM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZp
Y2F0aW9uQ2xpZW50LmNwcApAQCAtNjQsOSArNjQsMTQgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25D
bGllbnQ6OmNhbmNlbChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICNlbmRpZgogfQogCi12
b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5v
dGlmaWNhdGlvbiopCit2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uT2Jq
ZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogeworI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5vdGlmaWNhdGlvbk1hbmFn
ZXIoKS5kaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgbV9wYWdlKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyNlbmRpZgogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Np
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDI3OTA5MzJhODhhNWQy
YjM4ZjA2NGFkM2IxMWYyMTAyMzRlYTMyOGIuLjA2ODFhMjc0NzM1YWU4NDU4MzM4OWE3MmY0MmFh
N2FlNTc4NGEyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApA
QCAtNjM4LDYgKzYzOCwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lcwogICAgICAgICByZXR1
cm47CiAgICAgfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgaWYgKG1lc3NhZ2VJ
RC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpKSB7Cisg
ICAgICAgIG1fbm90aWZpY2F0aW9uTWFuYWdlci5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYK
KyAgICAKICAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYlJlc291
cmNlQ2FjaGVNYW5hZ2VyPigpKSB7CiAgICAgICAgIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpz
aGFyZWQoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50
cyk7CiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117534</attachid>
            <date>2011-12-01 17:46:41 -0800</date>
            <delta_ts>2011-12-01 18:00:44 -0800</delta_ts>
            <desc>Patch #3</desc>
            <filename>bug-73572-20111201174756.patch</filename>
            <type>text/plain</type>
            <size>41990</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY2YWE4MjIwZmEzZGE1
MjJmOTY3MjhmYmMyM2Q2MDU3ZGZiN2JlZC4uZGM5Nzk5OTIwNjdlMzhjNWVjNTc5YTkxYmVlYmZj
ZTg0OTM1ZjU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTEyLTAxICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgZnVydGhlciBzdXBw
b3J0IGZvciBub3RpZmljYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MzU3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA0NzIxOTU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
LmV4cC5pbjogRXhwb3J0IGNvbnN0cnVjdG9yIGFuZCBkaXNwYXRjaCBmdW5jdGlvbnMKKyAgICAg
ICAgKiBkb20vRXZlbnROYW1lcy5oOiBBZGQgc2hvdyBldmVudC4KKyAgICAgICAgKiBub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OnNob3cpOiBGb3IgdGhlIE1hYyBwbGF0Zm9ybSwgd2UganVzdCBmb3J3YXJkIHRoZSBzaG93KCkg
Y2FsbCB0byB0aGUKKyAgICAgICAgbm90aWZpY2F0aW9uIGNsaWVudCBhbmQgdXBkYXRlIHRoZSBz
dGF0ZSwgYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHN5bmNocm9ub3VzIGFja25vd2xlZGdtZW50IHRo
YXQgdGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBnb3QgZGVsaXZlcmVkLgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaFNob3dFdmVudCk6IENyZWF0ZSBzaW1wbGUgZXZl
bnRzIGFuZCBkaXNwYXRjaCB0byB0aGUgbm90aWZpY2F0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNrRXZlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpOb3RpZmljYXRpb246OmRpc3BhdGNoRXJyb3JFdmVudCk6IERpdHRvLgorICAgICAg
ICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6IEFkZCBkaXNwYXRjaCBmdW5jdGlvbnMu
CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOiBBZGQgb25zaG93IGV2
ZW50IGxpc3RlbmVyLiBUaGUgb25kaXNwbGF5IGV2ZW50IGxpc3RlbmVyIHNob3VsZCBiZQorICAg
ICAgICByZW1vdmVkIHdoZW4gaW1wbGVtZW50YXRpb25zIGNoYW5nZSB0aGUgZXZlbnQgbGlzdGVu
ZXIgdG8gb25zaG93LgorCiAyMDExLTEyLTAxICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbRmlsZVN5c3RlbSBBUEldIERpcmVjdG9yeUVudHJ5LnJlbW92
ZVJlY3Vyc2l2ZWx5IHN1Y2Nlc3NDYWxsYmFjayBpcyByZXF1aXJlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDAz
MThhZDZiZjc5NDk1YzVlNDg4NGE5MjM0Y2JhYzVlYWM1NjM2OGQuLjYxZTZkNzMxMDZiMDViMTNl
NWQ1YTBiNGI0M2JiOTI0Y2NiYWQ5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAx
MS0xMi0wMSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRk
IGZ1cnRoZXIgc3VwcG9ydCBmb3Igbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzEwNDcyMTk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVz
c2FnZXMuaW46IEFkZGVkLiBDb250YWlucyBtZXNzYWdlcyBmb3IgY2FsbGJhY2tzCisgICAgICAg
IGZyb20gdGhlIG5vdGlmaWNhdGlvbiBwbGF0Zm9ybS4KKworICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6IEFkZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyLgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLnByaTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQu
aDogQWRkIG1lc3NhZ2UgY2xhc3MuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOiBGb3J3
YXJkIGNhbGxzIHRvIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgd2hlbiBuZWVkZWQuCisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IG1lc3NhZ2UgZmls
ZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uLmg6IEFkZCBhbmQgZXhw
b3NlIGludGVybmFsIElEIG9mIGVhY2ggbm90aWZpY2F0aW9uIHNlbnQgdG8gdGhlIHBsYXRmb3Jt
LgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYk5vdGlmaWNhdGlvbjo6bm90aWZpY2F0aW9uSUQpOgorICAgICAgICAoV2ViS2l0
Ojppc05vdGlmaWNhdGlvbklEVmFsaWQpOiBDaGVja3MgdGhhdCB0aGUgSUQgaXMgbm90IGEgdmFs
dWUgdGhhdCBtaWdodCB0cmlwIHVwIHRoZSBIYXNoTWFwcyB1c2VkCisgICAgICAgIGZvciBtYXBw
aW5nIElEcyB0byBub3RpZmljYXRpb25zLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOb3RpZmlj
YXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbjo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oOiBFeHBvc2Ugbm90aWZpY2F0aW9uIElEIHRvIFdLQVBJ
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5jcHA6CisgICAgICAg
IChXS05vdGlmaWNhdGlvbkdldE5vdGlmaWNhdGlvbklEKToKKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaDogQWRkIGNhbGxiYWNrcyBmb3IgZGlzcGF0
Y2hpbmcgZXZlbnRzIGJhY2sgdG8gdGhlIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKTogUmVtb3ZlIG1hbmFnZXIuCisg
ICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyk6IEFkZCBt
YW5hZ2VyIHByaW9yIHRvIHNob3dpbmcuCisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eTo6Y2FuY2VsKTogQWRkIG1hbmFnZXIgcHJpb3IgdG8gY2FuY2VsaW5nLgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lO
b3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRD
bG9zZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNh
dGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hv
d05vdGlmaWNhdGlvbik6CisgICAgICAgIChXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRp
ZENsaWNrTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3Zp
ZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb25Q
cm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpz
aG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmNhbmNlbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpkaWREZXN0cm95Tm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmFk
ZE5vdGlmaWNhdGlvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25Q
cm92aWRlcjo6cmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uUHJvdmlkZXIuaDogRXhwb3NlIGFkZC9yZW1vdmVOb3RpZmlj
YXRpb25NYW5hZ2VyIGNhbGxzCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5oOiBBZGQgYm9va2tlZXBpbmcgdG8ga2VlcCB0cmFjayBv
ZiBub3RpZmljYXRpb24gSURzIHdpdGgKKyAgICAgICAgTm90aWZpY2F0aW9uIGluc3RhbmNlcy4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlTm90aWZpY2F0aW9uSUQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3cpOgorICAgICAgICAo
V2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZp
Y2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xv
c2VOb3RpZmljYXRpb25zKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkubWVzc2FnZXMuaW46IEFkZCBEaWREZXN0cm95Tm90aWZpY2F0aW9uIG1lc3Nh
Z2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25D
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25DbGllbnQ6Om5vdGlm
aWNhdGlvbk9iamVjdERlc3Ryb3llZCk6IEltcGxlbWVudGVkLgorCiAyMDExLTEyLTAxICBCZXRo
IERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1OTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYjgwMDNm
ZDFjMGY3YjA2MmI3NzZmNjlhOWFmOWNmMGIxODkyNWQyNC4uNTk0M2JhYjU4NmU4YmY2MTZiZmJj
ZTUxOTVmNWI2ZjAwOGY3NTEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTIwMDgsMyArMjAw
OCwxMSBAQCBfX1pOSzdXZWJDb3JlN0ludFNpemVjdjdfTlNTaXplRXYKICNpZiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CiBfd2tDcmVhdGVWTVByZXNzdXJlRGlzcGF0Y2hPbk1haW5RdWV1ZQogI2VuZGlmCisKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKK19fWk43V2ViQ29yZTEyTm90aWZpY2F0aW9uQzFFdgorX19a
TjdXZWJDb3JlMTJOb3RpZmljYXRpb25EMUV2CitfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbjE3
ZGlzcGF0Y2hTaG93RXZlbnRFdgorX19aTjdXZWJDb3JlMTJOb3RpZmljYXRpb24xOGRpc3BhdGNo
Q2xpY2tFdmVudEV2CitfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbjE4ZGlzcGF0Y2hDbG9zZUV2
ZW50RXYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggYzUzNmNmYzAwNDgwY2M3
NGQ0ZWExMmVkZjFiZDZlN2Y0NzU3ZTlmZi4uZDNjZjNmZGM5ZDZiNzkwYzFjNjk1MTA4YWE5N2Y5
YjU3ZTYxMDgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0xOTQsNiArMTk0LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGFkZHN0cmVhbSkgXAogICAgIG1hY3JvKHJl
bW92ZXN0cmVhbSkgXAogICAgIFwKKyAgICBtYWNybyhzaG93KSBcCisgICAgXAogCiAvLyBlbmQg
b2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCAzNDQ0MjQyY2I1YzE4ZmYxYjAzNDlhYmI4MTUw
Njk4MzlhOGQ3NDMzLi5kNzk5MWYyZDljZDk4ZDRlZTI1MWExMWI3ZWQ0YjdhMGE1MTExNzMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAKICNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9u
Q29udGVudHMuaCIKQEAgLTEyNyw2ICsxMjgsMTEgQEAgdm9pZCBOb3RpZmljYXRpb246OnNob3co
KQogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIHN0YXJ0TG9hZGluZygpOworI2VsaWYg
UExBVEZPUk0oTUFDKQorICAgIGlmIChtX3N0YXRlID09IElkbGUgJiYgbV9ub3RpZmljYXRpb25D
ZW50ZXItPnByZXNlbnRlcigpKSB7CisgICAgICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyLT5wcmVz
ZW50ZXIoKS0+c2hvdyh0aGlzKTsKKyAgICAgICAgbV9zdGF0ZSA9IFNob3dpbmc7CisgICAgfQog
I2Vsc2UKICAgICAvLyBwcmV2ZW50IGRvdWJsZS1zaG93aW5nCiAgICAgaWYgKG1fc3RhdGUgPT0g
SWRsZSAmJiBtX25vdGlmaWNhdGlvbkNlbnRlci0+cHJlc2VudGVyKCkgJiYgbV9ub3RpZmljYXRp
b25DZW50ZXItPnByZXNlbnRlcigpLT5zaG93KHRoaXMpKQpAQCAtMjMwLDYgKzIzNiwyNiBAQCB2
b2lkIE5vdGlmaWNhdGlvbjo6ZmluaXNoTG9hZGluZygpCiAgICAgdW5zZXRQZW5kaW5nQWN0aXZp
dHkodGhpcyk7CiB9CiAKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaFNob3dFdmVudCgpCit7
CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zaG93RXZlbnQs
IGZhbHNlLCBmYWxzZSkpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbGlja0V2
ZW50KCkKK3sKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNs
aWNrRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0
Y2hDbG9zZUV2ZW50KCkKK3sKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorCit2b2lkIE5vdGlmaWNhdGlv
bjo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKK3sKKyAgICBkaXNwYXRjaEV2ZW50KEVycm9yRXZlbnQ6
OmNyZWF0ZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKE5PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaAppbmRleCBiYjQwYTgwOTQ4MTQ4Y2ZhYTkwMGY1NjFjOTI4YTRhNWEyYzcyOWZjLi5k
ZDBkNmVkODRhZDMwNzlkODhiYTAyYTAyYmNhY2M2YTY0NWNiMzlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAgLTg4LDEwICs4OCwxOCBAQCBwdWJs
aWM6CiAKICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGRpcigp
ID09ICJydGwiID8gUlRMIDogTFRSOyB9CiAKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKHNob3cpOworICAgIC8vIEZJWE1FOiBUaGUgbGF0ZXN0IFdlYiBOb3RpZmljYXRpb25z
IHN0YW5kYXJkIHVzZXMgdGhlIG9uc2hvdyBldmVudCBsaXN0ZW5lci4KKyAgICAvLyBUaGUgb25k
aXNwbGF5IGV2ZW50IGxpc3RlbmVyIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gaW1wbGVtZW50YXRp
b25zIGNoYW5nZSB0aGUgZXZlbnQgbGlzdGVuZXIgdG8gb25zaG93LgogICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoZGlzcGxheSk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihlcnJvcik7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihj
bG9zZSk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjbGljayk7CisgICAg
CisgICAgdm9pZCBkaXNwYXRjaENsaWNrRXZlbnQoKTsKKyAgICB2b2lkIGRpc3BhdGNoQ2xvc2VF
dmVudCgpOworICAgIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgdm9pZCBkaXNwYXRj
aFNob3dFdmVudCgpOwogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+OjpyZWY7
CiAgICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+OjpkZXJlZjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAppbmRleCA1YWY3YzRkZmZmNWFj
MGU4ZmFlNmZiNTkwMTkyMzhjM2M5NjAxODQzLi5kOGNiM2NjMzlhMjVlNzE3NDNlOWY3NWU5ZThj
ZjRjMTgwZTIyMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaWRsCkBAIC00MCw2ICs0MCw5IEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgdm9p
ZCBzaG93KCk7CiAgICAgICAgIHZvaWQgY2FuY2VsKCk7CiAKKyAgICAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25zaG93OworICAgICAgICAvLyBGSVhNRTogVGhlIGxhdGVzdCBXZWIgTm90
aWZpY2F0aW9ucyBzdGFuZGFyZCB1c2VzIHRoZSBvbnNob3cgZXZlbnQgbGlzdGVuZXIuCisgICAg
ICAgIC8vIFRoZSBvbmRpc3BsYXkgZXZlbnQgbGlzdGVuZXIgc2hvdWxkIGJlIHJlbW92ZWQgd2hl
biBpbXBsZW1lbnRhdGlvbnMgY2hhbmdlIHRoZSBldmVudCBsaXN0ZW5lciB0byBvbnNob3cuCiAg
ICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZGlzcGxheTsKICAgICAgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25jbG9zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDk0ZTNmM2Q5ZGNm
NGIyYjhlZTMwMGMxYTgwY2NlMmYzNGMxMmI3ZmMuLmEzMDBmODRiZDliZDkzZTVlZTI3NjM4MTA4
MDYxMTUzMjVkMWEyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNzQsNiAr
NzQsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJNZWRpYUNhY2hlTWFuYWdlciBc
CiAgICAgV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eSBcCiAgICAgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5IFwKKyAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIFwKICAgICBXZWJQYWdlIFwK
ICAgICBXZWJQYWdlUHJveHkgXAogICAgIFdlYlByb2Nlc3MgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJj
ZXMucHJpCmluZGV4IGNhZTYwMjAxZTMyNjBlM2U2OGQyZTQzNGJlZDJlMmQ5YTExMzRiNGMuLjRm
MjViZjQzOGIwZWIwNWMyOGM1YjFlMzFhZDIyMTRjYjYyOTRlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVk
U291cmNlcy5wcmkKQEAgLTg0LDYgKzg0LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAg
V2ViTWVkaWFDYWNoZU1hbmFnZXIubWVzc2FnZXMuaW4gXAogICAgIFdlYk1lZGlhQ2FjaGVNYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4gXAogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbiBcCisgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBcCiAg
ICAgV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4gXAogICAgIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gXAogICAgIFdlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2Fn
ZXMuaW4gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlSUQuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmgKaW5k
ZXggMjk2YzIyZjI1OWZmOWEzNjMwNjQ0NTZkZWM0NTU0NDgzMzNlYzVjOC4uMzBkZjE0ODcwYTE0
NjY0NmZkZDE2YzFjOGM1YWM5MDYzM2JkNzdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VJRC5oCkBAIC00OCw2ICs0OCw3IEBAIGVudW0gTWVzc2FnZUNsYXNz
IHsKICAgICBNZXNzYWdlQ2xhc3NXZWJJbnNwZWN0b3IsCiAgICAgTWVzc2FnZUNsYXNzV2ViS2V5
VmFsdWVTdG9yYWdlTWFuYWdlciwKICAgICBNZXNzYWdlQ2xhc3NXZWJNZWRpYUNhY2hlTWFuYWdl
ciwKKyAgICBNZXNzYWdlQ2xhc3NXZWJOb3RpZmljYXRpb25NYW5hZ2VyLAogICAgIE1lc3NhZ2VD
bGFzc1dlYlBhZ2UsCiAgICAgTWVzc2FnZUNsYXNzV2ViUHJvY2VzcywKICAgICBNZXNzYWdlQ2xh
c3NXZWJSZXNvdXJjZUNhY2hlTWFuYWdlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tOb3RpZmljYXRpb24uY3BwCmluZGV4IDM4YzQ3MmRmNzcxOTQ2MGE4ZWU3NTNj
MGNiNGEyMDEwOWI2ZDg1ZjcuLjA4OGU3NzM3NzdjYjFjYTZmNWE1NjgyZmE0MGI2MGZkYWNhYTg0
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0
aW9uLmNwcApAQCAtNDYsMyArNDYsNyBAQCBXS1N0cmluZ1JlZiBXS05vdGlmaWNhdGlvbkNvcHlC
b2R5KFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbikKICAgICByZXR1cm4gdG9Db3BpZWRB
UEkodG9JbXBsKG5vdGlmaWNhdGlvbiktPmJvZHkoKSk7CiB9CiAKK3VpbnQ2NF90IFdLTm90aWZp
Y2F0aW9uR2V0SUQoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKQoreworICAgIHJldHVy
biB0b0ltcGwobm90aWZpY2F0aW9uKS0+bm90aWZpY2F0aW9uSUQoKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmgKaW5kZXggYjhkMmRmNTg5
Y2Y0ZmU3MzhhMDQ5MzVlODZmOWU3NzE4MGE1NmI5Mi4uZDM5NWY1ZGZjMTlkN2E2Y2JmYTQzMDZk
OWFkZDM5NGFjMGMxMjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLTm90aWZpY2F0aW9uLmgKQEAgLTM2LDcgKzM2LDggQEAgV0tfRVhQT1JUIFdLVHlwZUlEIFdL
Tm90aWZpY2F0aW9uR2V0VHlwZUlEKCk7CiAKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS05vdGlm
aWNhdGlvbkNvcHlUaXRsZShXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLTm90aWZpY2F0aW9uQ29weUJvZHkoV0tOb3RpZmljYXRpb25SZWYg
bm90aWZpY2F0aW9uKTsKLSAgICAKK1dLX0VYUE9SVCB1aW50NjRfdCBXS05vdGlmaWNhdGlvbkdl
dElEKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CisKICNpZmRlZiBfX2NwbHVzcGx1
cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDEwMTJkZjE0NzI4YzA5MGUyNGQ0NjQ2
OWM3YjM1NjMwZTU5ZGVhM2IuLjZkZGZhNGNjOGExYmQzYTk5MjIxYTFlYWJkYTVlMzAxNmUyNzM2
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNh
dGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0zNSw3ICszNSwyMyBAQCBXS1R5cGVJRCBXS05vdGlm
aWNhdGlvbk1hbmFnZXJHZXRUeXBlSUQoKQogewogICAgIHJldHVybiB0b0FQSShXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OkFQSVR5cGUpOwogfQorCiB2b2lkIFdLTm90aWZpY2F0aW9uTWFu
YWdlclNldFByb3ZpZGVyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBjb25z
dCBXS05vdGlmaWNhdGlvblByb3ZpZGVyKiB3a1Byb3ZpZGVyKQogewogICAgIHRvSW1wbChtYW5h
Z2VyUmVmKS0+aW5pdGlhbGl6ZVByb3ZpZGVyKHdrUHJvdmlkZXIpOwogfQorCit2b2lkIFdLTm90
aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlv
bk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit7CisgICAg
dG9JbXBsKG1hbmFnZXJSZWYpLT5wcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24obm90aWZpY2F0
aW9uSUQpOworfQorCit2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tO
b3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEKQoreworICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRD
bGlja05vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCk7Cit9CisKK3ZvaWQgV0tOb3RpZmljYXRp
b25NYW5hZ2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoV0tOb3RpZmljYXRpb25NYW5h
Z2VyUmVmIG1hbmFnZXJSZWYsIFdLQXJyYXlSZWYgbm90aWZpY2F0aW9uSURzKQoreworICAgIHRv
SW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnModG9JbXBsKG5v
dGlmaWNhdGlvbklEcykpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDNjNzQzNTE4MGE0ZGRkNGY2ZjVi
ZmNiYzZhOWM0NDJiMGU3NGI0NWUuLjczNjBkYWQwMTRhOWEwMDc0YjhmYmJhN2UxZDc3NWIyMjAy
NzhkY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlm
aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tO
b3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTM2LDYgKzM2LDEwIEBAIGV4dGVybiAiQyIgewogV0tf
RVhQT1JUIFdLVHlwZUlEIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFR5cGVJRCgpOwogV0tfRVhQ
T1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tOb3RpZmljYXRpb25N
YW5hZ2VyUmVmIG1hbmFnZXJSZWYsIGNvbnN0IFdLTm90aWZpY2F0aW9uUHJvdmlkZXIqIHdrUHJv
dmlkZXIpOwogCitXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRp
ZFNob3dOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIHVp
bnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKK1dLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFu
YWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVm
IG1hbmFnZXJSZWYsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKK1dLX0VYUE9SVCB2b2lkIFdL
Tm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKFdLTm90aWZp
Y2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5UmVmIG5vdGlmaWNhdGlvbklEcyk7
CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uUHJvdmlkZXIuaAppbmRleCAyN2Jh
NjJmY2ExOTVlYWEyMmM5Mzc5NjUxNmZkNDExMzkxNWI4YzgxLi42ZmE2NWJiZTdlYjk0YTZhNThk
NGMxZjJkNGY3ZjdiNDYzYWUwZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tOb3RpZmljYXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAgLTM0LDEyICszNCwxOCBA
QCBleHRlcm4gIkMiIHsKIAogdHlwZWRlZiB2b2lkICgqV0tOb3RpZmljYXRpb25Qcm92aWRlclNo
b3dDYWxsYmFjaykoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLTm90aWZpY2F0aW9uUHJvdmlkZXJDYW5jZWxD
YWxsYmFjaykoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLTm90aWZpY2F0aW9uUHJvdmlkZXJEaWREZXN0cm95
Tm90aWZpY2F0aW9uQ2FsbGJhY2spKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS05vdGlmaWNhdGlvblByb3Zp
ZGVyQWRkTm90aWZpY2F0aW9uTWFuYWdlckNhbGxiYWNrKShXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYgbWFuYWdlciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS05v
dGlmaWNhdGlvblByb3ZpZGVyUmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlckNhbGxiYWNrKShXS05v
dGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAK
IHN0cnVjdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyIHsKICAgICBpbnQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKICAgICBjb25z
dCB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xp
ZW50SW5mbzsKICAgICBXS05vdGlmaWNhdGlvblByb3ZpZGVyU2hvd0NhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgc2hvdzsKICAgICBXS05vdGlmaWNhdGlvblByb3ZpZGVyQ2FuY2VsQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsOworICAgIFdLTm90aWZpY2F0aW9uUHJv
dmlkZXJEaWREZXN0cm95Tm90aWZpY2F0aW9uQ2FsbGJhY2sgICAgICBkaWREZXN0cm95Tm90aWZp
Y2F0aW9uOworICAgIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJBZGROb3RpZmljYXRpb25NYW5hZ2Vy
Q2FsbGJhY2sgICAgICBhZGROb3RpZmljYXRpb25NYW5hZ2VyOworICAgIFdLTm90aWZpY2F0aW9u
UHJvdmlkZXJSZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyQ2FsbGJhY2sgICByZW1vdmVOb3RpZmlj
YXRpb25NYW5hZ2VyOwogfTsKIHR5cGVkZWYgc3RydWN0IFdLTm90aWZpY2F0aW9uUHJvdmlkZXIg
V0tOb3RpZmljYXRpb25Qcm92aWRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk5vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Tm90aWZpY2F0aW9uLmNwcAppbmRleCAxZDI4YzE0Zjc1ZDVlYjVjNGJiNmYyMmRlOTkwY2RmMmU3
ZGFiMDhmLi4zZjAyNTk4NjI0YzE1NmE5OGZiZjIwOWE2MjJlMTE5MWMyYTZmZDNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtMzcsOSArMzcs
MTAgQEAgV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oKQogewogfQogCi1XZWJOb3Rp
ZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJp
bmcmIGJvZHkpCitXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogICAg
IDogbV90aXRsZSh0aXRsZSkKICAgICAsIG1fYm9keShib2R5KQorICAgICwgbV9ub3RpZmljYXRp
b25JRChub3RpZmljYXRpb25JRCkKIHsKIH0KIApAQCAtNDksMTIgKzUwLDEyIEBAIFdlYk5vdGlm
aWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uOjplbmNv
ZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29k
ZXItPmVuY29kZShDb3JlSVBDOjpJbihtX3RpdGxlLCBtX2JvZHkpKTsKKyAgICBlbmNvZGVyLT5l
bmNvZGUoQ29yZUlQQzo6SW4obV90aXRsZSwgbV9ib2R5LCBtX25vdGlmaWNhdGlvbklEKSk7CiB9
CiAKIGJvb2wgV2ViTm90aWZpY2F0aW9uOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKLSAgICByZXR1cm4g
ZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChub3RpZmljYXRpb24ubV90aXRsZSwgbm90aWZp
Y2F0aW9uLm1fYm9keSkpOworICAgIHJldHVybiBkZWNvZGVyLT5kZWNvZGUoQ29yZUlQQzo6T3V0
KG5vdGlmaWNhdGlvbi5tX3RpdGxlLCBub3RpZmljYXRpb24ubV9ib2R5LCBub3RpZmljYXRpb24u
bV9ub3RpZmljYXRpb25JRCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb24uaAppbmRleCA1Njg0OWRmNTJlOGMzYjYy
NWViNjljMjM1YTI1ZjQ3MTdmOTg3YmEzLi5lZmI0YTI0YmNmNTYxNmJmYTMwYzU5NjA5NzEyYzc5
ZTI3Yjk3MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTm90aWZp
Y2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvbi5o
CkBAIC00NCwyOCArNDQsMzYgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5
cGUgPSBUeXBlTm90aWZpY2F0aW9uOwogICAgIAogICAgIFdlYk5vdGlmaWNhdGlvbigpOwotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJOb3Rp
ZmljYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHks
IHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJOb3RpZmljYXRpb24odGl0bGUsIGJvZHkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJOb3RpZmljYXRpb24odGl0bGUsIGJvZHksIG5vdGlmaWNhdGlvbklEKSk7CiAg
ICAgfQogICAgIHZpcnR1YWwgfldlYk5vdGlmaWNhdGlvbigpOwogICAgIAogICAgIGNvbnN0IFN0
cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9CiAgICAgCiAgICAgY29uc3Qg
U3RyaW5nJiBib2R5KCkgY29uc3QgeyByZXR1cm4gbV9ib2R5OyB9CisgICAgCisgICAgdWludDY0
X3Qgbm90aWZpY2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlvbklEOyB9CiAK
ICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKICAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgV2ViTm90aWZpY2F0
aW9uJik7CiAKIHByaXZhdGU6Ci0gICAgV2ViTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgYm9keSk7CisgICAgV2ViTm90aWZpY2F0aW9uKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwog
CiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CiAgICAg
CiAgICAgU3RyaW5nIG1fdGl0bGU7CiAgICAgU3RyaW5nIG1fYm9keTsKKyAgICB1aW50NjRfdCBt
X25vdGlmaWNhdGlvbklEOwogfTsKLSAgICAKKworaW5saW5lIGJvb2wgaXNOb3RpZmljYXRpb25J
RFZhbGlkKHVpbnQ2NF90IGlkKQoreworICAgIHJldHVybiBpZCAmJiBpZCAhPSBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oLTEpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IFdlYk5vdGlmaWNhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGMyYjBjZDc2MDk5NzhlMzU5
MWYzMWI5ZDUxNTViMzM1OTJhYzk3NjcuLjkwMjlkYzQ0ZTlmYThmODgyNTAyZTMwMmFlYjhiYWZl
ODZkMzRiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC0yNiw4ICsyNiwxMCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogCisj
aW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5j
bHVkZSAiV2ViTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25Db250ZW50cy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV1RGOwpAQCAtNTEsNiArNTMsNyBAQCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6On5XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoKQogCiB2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCiB7CisgICAgbV9wcm92aWRlci5y
ZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKHRoaXMpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLTm90aWZpY2F0aW9uUHJv
dmlkZXIgKnByb3ZpZGVyKQpAQCAtNjUsMTMgKzY4LDc1IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiB7
Ci0gICAgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0
aW9uOjpjcmVhdGUodGl0bGUsIGJvZHkpOworICAgIGlmICghaXNOb3RpZmljYXRpb25JRFZhbGlk
KG5vdGlmaWNhdGlvbklEKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fcHJvdmlkZXIu
YWRkTm90aWZpY2F0aW9uTWFuYWdlcih0aGlzKTsKKworICAgIFJlZlB0cjxXZWJOb3RpZmljYXRp
b24+IG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBu
b3RpZmljYXRpb25JRCk7CisgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRpb25JRCwg
bm90aWZpY2F0aW9uKTsKICAgICBtX3Byb3ZpZGVyLnNob3cobm90aWZpY2F0aW9uLmdldCgpKTsK
IH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbCh1aW50NjRfdCBu
b3RpZmljYXRpb25JRCkKIHsKLSAgICBtX3Byb3ZpZGVyLmNhbmNlbCgwKTsKKyAgICBpZiAoIWlz
Tm90aWZpY2F0aW9uSURWYWxpZChub3RpZmljYXRpb25JRCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9u
cy5nZXQobm90aWZpY2F0aW9uSUQpOworICAgIGlmICghbm90aWZpY2F0aW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3Byb3ZpZGVyLmFkZE5vdGlmaWNhdGlvbk1hbmFnZXIodGhpcyk7Cisg
ICAgbV9wcm92aWRlci5jYW5jZWwobm90aWZpY2F0aW9uLmdldCgpKTsKK30KKyAgICAKK3ZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKQoreworICAgIGlmICghaXNOb3RpZmljYXRpb25JRFZhbGlkKG5v
dGlmaWNhdGlvbklEKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFdlYk5vdGlmaWNh
dGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLnRha2Uobm90aWZpY2F0aW9uSUQp
OworICAgIGlmICghbm90aWZpY2F0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb3Zp
ZGVyLmRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmdldCgpKTsKK30KKwordm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlv
bih1aW50NjRfdCBub3RpZmljYXRpb25JRCkKK3sKKyAgICBpZiAoIW1fY29udGV4dCkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3Nh
Z2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRTaG93Tm90aWZpY2F0aW9uKG5vdGlmaWNh
dGlvbklEKSk7Cit9CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRl
ckRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQoreworICAgIGlm
ICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9jb250ZXh0LT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsaWNr
Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSk7Cit9CisKKwordm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKEltbXV0YWJsZUFy
cmF5KiBub3RpZmljYXRpb25JRHMpCit7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBzaXplX3Qgc2l6ZSA9IG5vdGlmaWNhdGlvbklEcy0+c2l6ZSgpOwor
ICAgIAorICAgIFZlY3Rvcjx1aW50NjRfdD4gdmVjdG9yTm90aWZpY2F0aW9uSURzOworICAgIHZl
Y3Rvck5vdGlmaWNhdGlvbklEcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworICAgIAor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEID0gbm90aWZpY2F0aW9uSURzLT5hdDxXZWJVSW50NjQ+KGkpLT52YWx1
ZSgpOworICAgICAgICB2ZWN0b3JOb3RpZmljYXRpb25JRHMuYXBwZW5kKG5vdGlmaWNhdGlvbklE
KTsKKyAgICB9CisgICAgCisgICAgaWYgKHZlY3Rvck5vdGlmaWNhdGlvbklEcy5zaXplKCkpCisg
ICAgICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpEaWRDbG9zZU5vdGlmaWNhdGlvbnModmVjdG9yTm90aWZpY2F0aW9uSURz
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4IGNjNzc5Yjlm
ZWJkZDQ2MmM1NjE3ZjMzMDNmZGM4ZGQ5Y2E3NGYzOWIuLjU4N2ZhOWE0ODYxZGExNmRiOGNkNTk1
NzYyYTljNzhjZmEyYzMyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlSUQuaCIKICNpbmNsdWRlICJXZWJO
b3RpZmljYXRpb25Qcm92aWRlci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIENvcmVJUEMgewpAQCAtMzgsNiArMzks
NyBAQCBjbGFzcyBDb25uZWN0aW9uOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgSW1t
dXRhYmxlQXJyYXk7CiBjbGFzcyBXZWJDb250ZXh0OwogCiBjbGFzcyBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0IHsKQEAgLTUyLDYgKzU0LDEwIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLTm90aWZpY2F0aW9uUHJv
dmlkZXIqKTsKICAgICAKKyAgICB2b2lkIHByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50
NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBwcm92aWRlckRpZENsaWNrTm90aWZpY2F0
aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIHByb3ZpZGVyRGlkQ2xvc2VO
b3RpZmljYXRpb25zKEltbXV0YWJsZUFycmF5KiBub3RpZmljYXRpb25JRHMpOworICAgIAogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1l
c3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAKIHByaXZhdGU6CkBAIC02NCw5
ICs3MCwxMyBAQCBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIHNo
b3coY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXVEY6OlN0cmluZyYgYm9keSwgdWlu
dDY0X3Qgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgY2FuY2VsKHVpbnQ2NF90IG5vdGlmaWNh
dGlvbklEKTsKKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZp
Y2F0aW9uSUQpOworICAgIAorICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdl
Yk5vdGlmaWNhdGlvbj4gPiBXZWJOb3RpZmljYXRpb25NYXA7CiAgICAgCiAgICAgV2ViQ29udGV4
dCogbV9jb250ZXh0OwogICAgIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyIG1fcHJvdmlkZXI7Cisg
ICAgV2ViTm90aWZpY2F0aW9uTWFwIG1fbm90aWZpY2F0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTc2NzhhNGIy
MzVkZDQ1ZTcxNjJmNGQyNzI3Yjc3YWE1ZmI4MDQ0Yi4uNmQ0MDNjM2Q3ZDg1OWNlNWQ5MDBhNDhh
MGRlYjQ2OWQ4MDYxODhhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0y
Myw0ICsyMyw1IEBACiBtZXNzYWdlcyAtPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkgewog
ICAgIFNob3coV1RGOjpTdHJpbmcgdGl0bGUsIFdURjo6U3RyaW5nIGJvZHksIHVpbnQ2NF90IG5v
dGlmaWNhdGlvbklEKTsKICAgICBDYW5jZWwodWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOworICAg
IERpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5j
cHAKaW5kZXggZjdhYzVlNzg3ZDZiYzI2MzdmZjA3Mzc0MTEwNTBjNjIwZTc0OWZjOS4uNDYxYjFh
ZDc4OTZkYWU5NzI4ZTA0NzJiM2FmYjY1ZWNhMzg0ZGViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRp
b24uaCIKKyNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKQEAgLTQ3LDQgKzQ4LDI4IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXI6OmNhbmNlbChXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICAgICBtX2NsaWVu
dC5jYW5jZWwodG9BUEkobm90aWZpY2F0aW9uKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAK
K3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2Vi
Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgaWYgKCFtX2NsaWVudC5kaWREZXN0
cm95Tm90aWZpY2F0aW9uKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9jbGllbnQuZGlk
RGVzdHJveU5vdGlmaWNhdGlvbih0b0FQSShub3RpZmljYXRpb24pLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6YWRkTm90aWZpY2F0aW9u
TWFuYWdlcihXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkqIG1hbmFnZXIpCit7CisgICAgaWYg
KCFtX2NsaWVudC5hZGROb3RpZmljYXRpb25NYW5hZ2VyKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgbV9jbGllbnQuYWRkTm90aWZpY2F0aW9uTWFuYWdlcih0b0FQSShtYW5hZ2VyKSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJl
bW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KiBtYW5h
Z2VyKQoreworICAgIGlmICghbV9jbGllbnQucmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcikKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LnJlbW92ZU5vdGlmaWNhdGlvbk1hbmFn
ZXIodG9BUEkobWFuYWdlciksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNh
dGlvblByb3ZpZGVyLmgKaW5kZXggZWIyYmY0N2ViYmMxNWQzMGRkMTM4MThmNjljNDMzZGJlZTI4
YzVhMi4uZmY0MGJhOGY3ZDBmOWZiMGQ0ZDkxNTE4OTA2ZDNiMTM0ZTgzNmU3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAg
LTMzLDExICszMywxNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYk5vdGlmaWNh
dGlvbjsKK2NsYXNzIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTsKICAgICAKIGNsYXNzIFdl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyIDogcHVibGljIEFQSUNsaWVudDxXS05vdGlmaWNhdGlvblBy
b3ZpZGVyLCBrV0tOb3RpZmljYXRpb25Qcm92aWRlckN1cnJlbnRWZXJzaW9uPiB7CiBwdWJsaWM6
CiAgICAgdm9pZCBzaG93KFdlYk5vdGlmaWNhdGlvbiopOwogICAgIHZvaWQgY2FuY2VsKFdlYk5v
dGlmaWNhdGlvbiopOworICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJOb3RpZmlj
YXRpb24qKTsKKworICAgIHZvaWQgYWRkTm90aWZpY2F0aW9uTWFuYWdlcihXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkqKTsKKyAgICB2b2lkIHJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIoV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA5NTNlOWIwNGIzNDZkOTJkN2NkYzQ2NWRhZjY4MTM2ODQyMjA5MzllLi4yNjEwMTI1MTU5
ZjRhYjFmZmRlYjk4ODgwOTgwNjZjN2FiNzg1NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjAsNiArMjYwLDggQEAKIAkJ
MzE4QkUxNzUxNDc0M0RENzAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMThCRTE3NDE0NzQz
REQ2MDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJMzE4QkUx
NzcxNDc0M0U2MDAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOEJFMTc2MTQ3NDNFNjAwMEE4RkJCMiAv
KiBXS05vdGlmaWNhdGlvbi5jcHAgKi87IH07CiAJCTMxOEJFMTc5MTQ3NDNFNkYwMEE4RkJCMiAv
KiBXS05vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzE4QkUxNzgxNDc0M0U2QTAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzFCQTkyNEQx
NDg4MzEyNjAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFCQTky
NDgxNDg4MzA4MTAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OworCQkzMUJBOTI0RTE0ODgzMTI2MDA2MkVEQjUgLyogV2ViTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMUJBOTI0OTE0ODgzMDgxMDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VzLmggKi87IH07CiAJCTMxQzExQUIzMTQ4NDUyRTkwMDQ5QTRDQyAvKiBXZWJO
b3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzFDMTFBQjExNDg0NTJFOTAwNDlBNENDIC8qIFdlYk5vdGlmaWNhdGlvbi5jcHAgKi87
IH07CiAJCTMxQzExQUI0MTQ4NDUyRTkwMDQ5QTRDQyAvKiBXZWJOb3RpZmljYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzExQUIyMTQ4NDUy
RTkwMDQ5QTRDQyAvKiBXZWJOb3RpZmljYXRpb24uaCAqLzsgfTsKIAkJMzFFQTI1RDIxMzRGNzhD
MDAwNUIxNDUyIC8qIE5hdGl2ZVdlYk1vdXNlRXZlbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUVBMjVEMDEzNEY3OEIyMDA1QjE0NTIgLyog
TmF0aXZlV2ViTW91c2VFdmVudE1hYy5tbSAqLzsgfTsKQEAgLTEyMzIsNiArMTIzNCw4IEBACiAJ
CTMxOEJFMTc0MTQ3NDNERDYwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE4QkUxNzYxNDc0M0U2MDAwQThG
QkIyIC8qIFdLTm90aWZpY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdLTm90aWZpY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzE4QkUxNzgxNDc0M0U2QTAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLTm90aWZpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQkE5
MjQ4MTQ4ODMwODEwMDYyRURCNSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMUJBOTI0OTE0ODgzMDgxMDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUMxMUFC
MTE0ODQ1MkU5MDA0OUE0Q0MgLyogV2ViTm90aWZpY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxQzExQUIyMTQ4NDUyRTkwMDQ5QTRDQyAvKiBXZWJOb3RpZmljYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxRUEyNUQwMTM0Rjc4QjIwMDVCMTQ1MiAv
KiBOYXRpdmVXZWJNb3VzZUV2ZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmF0aXZl
V2ViTW91c2VFdmVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1MDMs
NiArMzUwNyw4IEBACiAJCQkJMzNEM0EzQzUxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2Fj
aGVNYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQkzM0QzQTNDNjEzMzk2MTc5MDA3MDlCRTQgLyog
V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMzNE
M0EzQzcxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdl
cy5oICovLAorCQkJCTMxQkE5MjQ4MTQ4ODMwODEwMDYyRURCNSAvKiBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkzMUJBOTI0OTE0ODgzMDgxMDA2MkVE
QjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJCQkJMzE4QkUxNjUx
NDczNDMzNzAwQThGQkIyIC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8sCiAJCQkJMzE4QkUxNjYxNDczNDMzNzAwQThGQkIyIC8qIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJQzBDRTcyOUUxMjQ3RTcxRDAwQkMw
RUM0IC8qIFdlYlBhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtNDAzNCw2ICs0MDQwLDcg
QEAKIAkJCQkzMThCRTE3MTE0NzQzREIxMDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb25NYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMThCRTE3OTE0NzQzRTZGMDBBOEZCQjIgLyogV0tOb3Rp
ZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzExQUI0MTQ4NDUyRTkwMDQ5QTRDQyAv
KiBXZWJOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQkE5MjRFMTQ4ODMxMjYw
MDYyRURCNSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtNDc0Miw2ICs0NzQ5LDcgQEAKIAkJCQkzMThCRTE3NTE0NzQzREQ3MDBBOEZCQjIgLyog
V0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxOEJFMTc3MTQ3
NDNFNjAwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
MUMxMUFCMzE0ODQ1MkU5MDA0OUE0Q0MgLyogV2ViTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTMxQkE5MjREMTQ4ODMxMjYwMDYyRURCNSAvKiBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXIuY3BwCmluZGV4IGE0ZDZiZjAwMTk1NzRlNjg3OGJlZGJiYjMyMTJkZWI3NmQw
YjU3ZmMuLjhkM2ZhNGY4ZDE1YTMyZjg2ZjE3YmFhNGNmYmQwNmYwMGRmMDQ3NzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTM3LDcgKzM3LDE3IEBACiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgCisKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZU5vdGlmaWNhdGlvbklE
KCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlTm90aWZpY2F0aW9uSUQgPSAxOworICAg
IHdoaWxlICghaXNOb3RpZmljYXRpb25JRFZhbGlkKHVuaXF1ZU5vdGlmaWNhdGlvbklEKSkKKyAg
ICAgICAgKyt1bmlxdWVOb3RpZmljYXRpb25JRDsKKyAgICByZXR1cm4gdW5pcXVlTm90aWZpY2F0
aW9uSUQrKzsKK30KKyNlbmRpZgorCiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MqIHByb2Nlc3MpCiAgICAgOiBtX3Byb2Nlc3MocHJvY2Vz
cykKIHsKQEAgLTQ3LDEwICs1NywxOSBAQCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjp+V2ViTm90
aWZpY2F0aW9uTWFuYWdlcigpCiB7CiB9CiAKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQ
Qzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVu
dHMpCit7CisgICAgZGlkUmVjZWl2ZVdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlKGNvbm5l
Y3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKK30KKwogYm9vbCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQog
ewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OlNob3cobm90aWZp
Y2F0aW9uLT5jb250ZW50cygpLnRpdGxlLCBub3RpZmljYXRpb24tPmNvbnRlbnRzKCkuYm9keSwg
MCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCA9IGdlbmVy
YXRlTm90aWZpY2F0aW9uSUQoKTsKKyAgICBtX25vdGlmaWNhdGlvbk1hcC5zZXQobm90aWZpY2F0
aW9uLCBub3RpZmljYXRpb25JRCk7CisgICAgbV9ub3RpZmljYXRpb25JRE1hcC5zZXQobm90aWZp
Y2F0aW9uSUQsIG5vdGlmaWNhdGlvbik7CisgICAgCisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6U2hvdyhub3Rp
ZmljYXRpb24tPmNvbnRlbnRzKCkudGl0bGUsIG5vdGlmaWNhdGlvbi0+Y29udGVudHMoKS5ib2R5
LCBub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKICNlbmRpZgogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtNTgsNyArNzcsNjkgQEAgYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpz
aG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWwoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIFdl
YlBhZ2UqIHBhZ2UpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgbV9wcm9jZXNz
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6Q2FuY2VsKDApLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgdWludDY0X3Qgbm90aWZpY2F0aW9u
SUQgPSBtX25vdGlmaWNhdGlvbk1hcC5nZXQobm90aWZpY2F0aW9uKTsKKyAgICBpZiAoIW5vdGlm
aWNhdGlvbklEKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9wcm9jZXNzLT5jb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Q2FuY2Vs
KG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+cGFnZUlEKCkpOworI2VuZGlmCit9CisKK3ZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKKyAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCA9IG1fbm90aWZpY2F0aW9uTWFwLnRha2Uo
bm90aWZpY2F0aW9uKTsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbklEKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX25vdGlmaWNhdGlvbklETWFwLnRha2Uobm90aWZpY2F0aW9uSUQpOworICAgIG1f
cHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OkRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpLCBwYWdlLT5w
YWdlSUQoKSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRT
aG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQoreworI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQorICAgIGlmICghaXNOb3RpZmljYXRpb25JRFZhbGlkKG5vdGlmaWNhdGlv
bklEKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5v
dGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAuZ2V0KG5vdGlmaWNhdGlvbklEKTsKKyAg
ICBpZiAoIW5vdGlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbm90aWZpY2F0aW9u
LT5kaXNwYXRjaFNob3dFdmVudCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit7
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgaWYgKCFpc05vdGlmaWNhdGlvbklEVmFs
aWQobm90aWZpY2F0aW9uSUQpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8Tm90aWZp
Y2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRp
b25JRCk7CisgICAgaWYgKCFub3RpZmljYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG5v
dGlmaWNhdGlvbi0+ZGlzcGF0Y2hDbGlja0V2ZW50KCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYgbm90aWZpY2F0aW9uSURzKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQor
ICAgIHNpemVfdCBjb3VudCA9IG5vdGlmaWNhdGlvbklEcy5zaXplKCk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlv
bklEID0gbm90aWZpY2F0aW9uSURzW2ldOworICAgICAgICBpZiAoIWlzTm90aWZpY2F0aW9uSURW
YWxpZChub3RpZmljYXRpb25JRCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBS
ZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdl
dChub3RpZmljYXRpb25JRCk7CisgICAgICAgIGlmICghbm90aWZpY2F0aW9uKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgbm90aWZpY2F0aW9uLT5kaXNwYXRjaENsb3NlRXZlbnQo
KTsKKyAgICB9CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKaW5k
ZXggMDAzM2FlMzhiNTI5OTAwMGRhZjg4OGMzZjRkZWUxZGVjNjc1ZmNiYy4uMDdjZmFmYzc4NTZk
MDhlZTA3YWRiNzNlY2U0YjU5ODU0ZWZlY2U3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlci5oCkBAIC0yNiwxMSArMjYsMjAgQEAKICNpZm5kZWYgV2ViTm90aWZpY2F0aW9uTWFuYWdl
cl9oCiAjZGVmaW5lIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJfaAogCisjaW5jbHVkZSAiTWVzc2Fn
ZUlELmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgQ29yZUlQQyB7CitjbGFzcyBBcmd1bWVudERlY29kZXI7CitjbGFzcyBDb25u
ZWN0aW9uOworfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOb3RpZmljYXRpb247ICAg
IAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAt
NDUsOSArNTQsMjggQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG93KFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbiosIFdlYlBhZ2UqKTsKICAgICB2b2lkIGNhbmNlbChXZWJDb3JlOjpOb3RpZmljYXRpb24q
LCBXZWJQYWdlKik7CisgICAgLy8gVGhpcyBjYWxsYmFjayBjb21lcyBmcm9tIFdlYkNvcmUsIG5v
dCBtZXNzYWdlZCBmcm9tIHRoZSBVSSBwcm9jZXNzLgorICAgIHZvaWQgZGlkRGVzdHJveU5vdGlm
aWNhdGlvbihXZWJDb3JlOjpOb3RpZmljYXRpb24qLCBXZWJQYWdlKik7CisKKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQs
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogCiBwcml2YXRlOgorICAgIC8vIEltcGxlbWVu
dGVkIGluIGdlbmVyYXRlZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNw
cAorICAgIHZvaWQgZGlkUmVjZWl2ZVdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciopOworICAgIAorICAgIHZvaWQgZGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCk7CisgICAgdm9pZCBkaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCk7CisgICAgdm9pZCBkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURzKTsKKwogICAgIFdlYlByb2Nlc3MqIG1fcHJvY2Vz
czsKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uPiwgdWludDY0X3Q+IE5vdGlmaWNhdGlvbk1hcDsKKyAg
ICBOb3RpZmljYXRpb25NYXAgbV9ub3RpZmljYXRpb25NYXA7CisgICAgCisgICAgdHlwZWRlZiBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uPiA+IE5vdGlmaWNh
dGlvbklETWFwOworICAgIE5vdGlmaWNhdGlvbklETWFwIG1fbm90aWZpY2F0aW9uSURNYXA7Cisj
ZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2Q5N2ZmN2EyODFmNWQ1
NjU3ZjVmOTRmYjQ3ZjRkZWMyM2JjZTZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW4KQEAgLTAsMCArMSwyNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMg
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
IyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCittZXNzYWdlcyAtPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIHsKKyAgICBEaWRTaG93
Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKKyAgICBEaWRDbGlja05vdGlm
aWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAgRGlkQ2xvc2VOb3RpZmljYXRp
b25zKFZlY3Rvcjx1aW50NjRfdD4gbm90aWZpY2F0aW9uSURzKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90
aWZpY2F0aW9uQ2xpZW50LmNwcAppbmRleCAwNTcxN2ZmZGNkMGY2NDE2MjI1ZDg4NDNiZmM3ODgy
OWRmZTUxMjFkLi5mMTg0OGJkZmY5ZGI1Y2JkZjg2NjRiYTAzOWFkNjZhNzU2Y2MyMzVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlm
aWNhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3BwCkBAIC02NCw5ICs2NCwxNCBAQCB2b2lk
IFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2FuY2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9u
KQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpub3RpZmljYXRpb25P
YmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uKikKK3ZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50
Ojpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24p
CiB7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
bm90aWZpY2F0aW9uTWFuYWdlcigpLmRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9u
LCBtX3BhZ2UpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50
OjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggMjc5MDkzMmE4OGE1ZDJiMzhmMDY0YWQzYjExZjIxMDIzNGVhMzI4Yi4uMDY4MWEyNzQ3MzVh
ZTg0NTgzMzg5YTcyZjQyYWE3YWU1Nzg0YTJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCkBAIC02MzgsNiArNjM4LDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6
TWVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
KyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXI+KCkpIHsKKyAgICAgICAgbV9ub3RpZmljYXRpb25NYW5hZ2VyLmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgorICAgIAogICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVz
c2FnZUNsYXNzV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXI+KCkpIHsKICAgICAgICAgV2ViUmVzb3Vy
Y2VDYWNoZU1hbmFnZXI6OnNoYXJlZCgpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIG1l
c3NhZ2VJRCwgYXJndW1lbnRzKTsKICAgICAgICAgcmV0dXJuOwo=
</data>
<flag name="review"
          id="116992"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>