<?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>180513</bug_id>
          
          <creation_ts>2017-12-06 17:24:15 -0800</creation_ts>
          <short_desc>[Touch Bar Web API] Add support for custom Touch Bar buttons</short_desc>
          <delta_ts>2023-08-22 22:31:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>178736</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Aishwarya Nirmal">anirmal</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annevk</cc>
    
    <cc>benjaminkindle</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>lwarlow</cc>
    
    <cc>tomac</cc>
    
    <cc>webkit-bugzilla</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1378947</commentid>
    <comment_count>0</comment_count>
    <who name="Aishwarya Nirmal">anirmal</who>
    <bug_when>2017-12-06 17:24:15 -0800</bug_when>
    <thetext>Support adding custom buttons to the Touch Bar as part of the WebKit Touch Bar API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378969</commentid>
    <comment_count>1</comment_count>
      <attachid>328668</attachid>
    <who name="Aishwarya Nirmal">anirmal</who>
    <bug_when>2017-12-06 17:53:13 -0800</bug_when>
    <thetext>Created attachment 328668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379015</commentid>
    <comment_count>2</comment_count>
      <attachid>328668</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-12-06 21:32:17 -0800</bug_when>
    <thetext>Comment on attachment 328668
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        No new tests.

I think we&apos;re at the point where we should be able to test end-to-end now...we should chat about a testing strategy for this. I could imagine either API tests that ask AppKit directly for touch bar state, or layout tests that involve plumbing touch bar state through UIScriptController in WebKitTestRunner.

&gt; Source/WebCore/html/HTMLMenuElement.cpp:51
&gt; +    for (unsigned i = 0; i &lt; children-&gt;length(); i++) {

I think childrenOfType&lt;HTMLMenuItemElement&gt;() is the preferred way to iterate over menuitems in the subtree. We just have to make sure we don&apos;t dispatch the event while the iterator is still in scope, otherwise we&apos;ll hit a security assertion. We could do something like:

- iterate over childrenOfType
- bail if we find an appropriate menuitem
- then dispatch a click on the menuitem

&gt; Source/WebCore/html/HTMLMenuElement.h:33
&gt; +    WEBCORE_EXPORT void didInteractWithItem(const WTF::String&amp; identifier);

I don&apos;t think we need the explicit WTF:: namespacing here.

&gt; Source/WebKit/Shared/TouchBarMenuData.h:51
&gt; +    Vector&lt;TouchBarMenuItemData&gt; items() const { return m_items; }

We should be able to keep this a const Vector&amp; if we tweak the call site to be something like

auto&amp; menuItems = touchBarMenuData.items();

Unless I&apos;m missing something, I don&apos;t think this really needs to return a copy?

&gt; Source/WebKit/Shared/TouchBarMenuData.h:57
&gt; +    String identifier() const { return m_id; }

Let&apos;s rename identifier =&gt; title, to reflect the change in attribute.

&gt; Source/WebKit/Shared/TouchBarMenuData.h:-59
&gt; -    

Nit - stray whitespace change.

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:650
&gt; +    [[NSNotificationCenter defaultCenter] removeObserver:self];

Hm...it&apos;s not obvious to me why we need to remove ourselves as an observer. Does this object start listening for notifications elsewhere in this patch?

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:670
&gt; +    return item;

This should probably return an -autorelease object, since the name (-itemForIdentifier:) doesn&apos;t reference &quot;new&quot; or &quot;create&quot;.

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:971
&gt; +        touchBar = m_customizedTouchBar.get();

It&apos;s a bit weird to refer to this page-controlled touch bar as the &quot;customized&quot; touch bar, since there&apos;s a notion of touch bar &quot;customization&quot; already (if you go into View &gt; Customize Touch Bar, you can rearrange or add or remove touch bar items) and it sounds confusing to mix the terms...

I think the &quot;pageCustomizedTouchBar&quot; terminology you use elsewhere in this patch makes this distinction clearer. Can we rename m_customizedTouchBar to m_pageCustomizedTouchBar to be consistent?

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1107
&gt; +    NSMutableSet&lt;NSTouchBarItem *&gt; *templateItems = [[NSMutableSet alloc] init];

adoptNS() here to fix the leak!

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1108
&gt; +    NSMutableArray&lt;NSTouchBarItemIdentifier&gt; *defaultItems = [[NSMutableArray alloc] init];

Ditto.

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1112
&gt; +        NSCustomTouchBarItem *touchBarItem = [[NSCustomTouchBarItem alloc] initWithIdentifier:item.identifier];

adoptNS() to fix the leak!

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:5411
&gt; +        if (auto* element = frame-&gt;document()-&gt;currentMenuElement().get())

We can remove the `.get()` at the end if we just make this `auto element`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380234</commentid>
    <comment_count>3</comment_count>
      <attachid>328668</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-11 09:34:48 -0800</bug_when>
    <thetext>Comment on attachment 328668
Patch

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

&gt; Source/WebKit/UIProcess/mac/PageClientImplMac.h:107
&gt; +    void touchBarMenuDataDidChange() override;

To get this compiling on iOS either:

1) We need a line like this in the iOS version in PageClientImplIOS.h, or
2) We need the function in the base class to not be pure virtual, or
3) We need to put it more of the code in a HAVE(TOUCH_BAR) or PLATFORM(MAC) conditional instead of PLATFORM(COCOA).

Or something else like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381202</commentid>
    <comment_count>4</comment_count>
      <attachid>329235</attachid>
    <who name="Aishwarya Nirmal">anirmal</who>
    <bug_when>2017-12-13 11:12:28 -0800</bug_when>
    <thetext>Created attachment 329235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381286</commentid>
    <comment_count>5</comment_count>
      <attachid>329255</attachid>
    <who name="Aishwarya Nirmal">anirmal</who>
    <bug_when>2017-12-13 13:53:24 -0800</bug_when>
    <thetext>Created attachment 329255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381289</commentid>
    <comment_count>6</comment_count>
      <attachid>329257</attachid>
    <who name="Aishwarya Nirmal">anirmal</who>
    <bug_when>2017-12-13 13:55:32 -0800</bug_when>
    <thetext>Created attachment 329257
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381413</commentid>
    <comment_count>7</comment_count>
      <attachid>329293</attachid>
    <who name="Aishwarya Nirmal">anirmal</who>
    <bug_when>2017-12-13 17:14:21 -0800</bug_when>
    <thetext>Created attachment 329293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381610</commentid>
    <comment_count>8</comment_count>
      <attachid>329293</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-12-14 07:48:50 -0800</bug_when>
    <thetext>Comment on attachment 329293
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:648
&gt; +- (void)didDestroyView

It doesn&apos;t look like anything calls -[WKPageCustomizedTouchBarItemController didDestroyView] here. It looks like we should call this in WebViewImpl::~WebViewImpl (just like we do for the text touch bar item controller) so we ensure that WKPageCustomizedTouchBarItemController&apos;s pointer to _webViewImpl is invalidated when our WebViewImpl goes away.

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:653
&gt; +- (void)touchBarMenuItemTapped:(WKPageCustomizedTouchBarButton *)button

Since _webViewImpl may be null if the WebViewImpl is destroyed, we probably need to check if (!_webViewImpl) and bail early here.

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1108
&gt; +    for (TouchBarMenuItemData&amp; item : items) {

Nit - instead of having the const TouchBarMenuData* touchBarMenuData up there, this would probably read better as:

for (auto&amp; item : m_page-&gt;touchBarMenuData().items()) {
    …
}

&gt; Source/WebKit/WebProcess/WebPage/WebPage.messages.in:33
&gt; +

Nit - I don&apos;t think we need another PLATFORM(COCOA) here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381683</commentid>
    <comment_count>9</comment_count>
      <attachid>329366</attachid>
    <who name="Aishwarya Nirmal">anirmal</who>
    <bug_when>2017-12-14 10:59:12 -0800</bug_when>
    <thetext>Created attachment 329366
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381726</commentid>
    <comment_count>10</comment_count>
      <attachid>329366</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-12-14 12:03:14 -0800</bug_when>
    <thetext>Comment on attachment 329366
Patch

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

&gt; Source/WebKit/Shared/WebPreferences.yaml:644
&gt; +  defaultValue: true

I don&apos;t think we&apos;ll want to enable &lt;menuitem&gt; by default quite yet!

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:667
&gt; +- (nullable NSTouchBarItem *)itemForIdentifier:(NSString *)identifier

Hm...is overriding -itemForIdentifier: here needed? The idea is that AppKit internally maintains a cache of touch bar items, and the superclass (NSTouchBar&apos;s) implementation of -itemForIdentifier: either returns a cached touch bar item (if any is found) or, if necessary, invokes -makeItemForIdentifier: to create a new touch bar item (which it then adds to the item cache).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381743</commentid>
    <comment_count>11</comment_count>
      <attachid>329380</attachid>
    <who name="Aishwarya Nirmal">anirmal</who>
    <bug_when>2017-12-14 12:18:21 -0800</bug_when>
    <thetext>Created attachment 329380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382368</commentid>
    <comment_count>12</comment_count>
      <attachid>329380</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-12-15 16:29:41 -0800</bug_when>
    <thetext>Comment on attachment 329380
Patch

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

This mostly looks good! There are still a few important issues, but core functionality is there and tested — let&apos;s add a couple of FIXMEs.

&gt; Source/WebCore/dom/Document.cpp:1017
&gt; +    m_currentMenuElement = element;

Nothing in this patch seems to clear out the current menu element (i.e. setCurrentMenuElement(nullptr)). Can we note this in a FIXME?

We probably should clear this out when a menu element is disconnected from the document, if the disconnected menu element is the current menu element.

&gt; Source/WebCore/html/HTMLMenuElement.cpp:52
&gt; +        if (item.attributeWithoutSynchronization(titleAttr) == identifier) {

I don&apos;t think checking against the button title will work if there are multiple buttons with the same title...can we note this in a FIXME?

I think we should probably assign a UUID for each menu element, and propagate that over IPC to the UI process and back instead.

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:667
&gt; +- (nullable NSTouchBarItem *)itemForIdentifier:(NSString *)identifier

We won&apos;t need to override this method if we&apos;re just calling super.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382639</commentid>
    <comment_count>13</comment_count>
      <attachid>329380</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-17 13:09:39 -0800</bug_when>
    <thetext>Comment on attachment 329380
Patch

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

This patch looks really good. There is more work that might be needed to get this completely solid.

Likely the best analogy for the global &quot;current menu element&quot; is the current title element, the one that determines the document’s title. Having clear rules about which menu element takes effect if there is more than one and what happens is menu elements are added or removed can easily become important for cross-browser interoperability, like they did for the title element.

It also seems wrong to call the menu element for the touch bar just the &quot;current menu element&quot;. It’s an important menu element, the one with a menu that should be seen, but there could also (some day) be a menu element for the current right mouse click, or something like that. So &quot;current menu element&quot; sounds not *quite* right as the name for the concept we are implementing, but maybe I am wrong about that.

The pattern for the title element is that the element itself just notifies the document and it’s the document that has to adjudicate which one is the effective title element. Thus the title element itself doesn’t do things like directly notifying a client that it exists, since that’s unwanted for an extra title element that is not the one in effect.

Sadly, the title element code is a bit complicated because of special cases for SVG, so we wouldn’t want to replicate all of its code, but the general pattern is probably right.

&gt;&gt; Source/WebCore/dom/Document.cpp:1017
&gt;&gt; +    m_currentMenuElement = element;
&gt; 
&gt; Nothing in this patch seems to clear out the current menu element (i.e. setCurrentMenuElement(nullptr)). Can we note this in a FIXME?
&gt; 
&gt; We probably should clear this out when a menu element is disconnected from the document, if the disconnected menu element is the current menu element.

The most likely correct pattern for object lifetimes would be to match the other RefPtr&lt;Element&gt; type data members in Document and add code to null it out in Document::removedLastRef. This is important to avoid a possible massive storage leak.

Separately, it’s also likely critical for correctness reasons to null it out when disconnecting from the document as Wenson says. So for that a FIXME, might be sufficient. I think what we need most for that is a test case.

&gt; Source/WebCore/dom/Document.h:481
&gt; +    void setCurrentMenuElement(RefPtr&lt;HTMLMenuElement&gt;&amp;&amp;);
&gt; +    RefPtr&lt;HTMLMenuElement&gt;&amp; currentMenuElement() { return m_currentMenuElement; }

Given that setCurrentMenuElement is only called when m_isTouchBarMenu is true, this is not a &quot;current menu element&quot; at all. It’s a &quot;current touch bar menu&quot;.

The argument to setCurrentMenuElement does not need to be a RefPtr&amp;&amp; unless callers are going to pass in a newly created object or need to hand over ownership for some reason. I suggest HTMLMenuElement&amp; or HTMLMenuElement* for the argument type.

It’s peculiar to have both a set function and also a function that returns a non-const reference. Those two idioms are both ways to allow someone to set and we don’t need both. I suggest changing currentMenuElement() to be a const member function that returns HTMLMenuElement*, or if I am out of date and it’s important to return RefPtr for our future design for security, then it should be a const member function that returns RefPtr&lt;HTMLMenuElement&gt; rather than a non-const member function that returns RefPtr&lt;HTMLMenuElement&gt;&amp;.

These two new functions should *not* be paragraphed in with adoptNode, which is a very different type of function with a more generic purpose. They should be their own paragraph or be grouped with functions that similarly track a document-wide special element.

&gt; Source/WebCore/html/HTMLMenuElement.cpp:46
&gt; +void HTMLMenuElement::didInteractWithItem(const String&amp; identifier)

I think this function should be called clickItem or something like that. Doesn’t seem to require the &quot;did&quot; naming.

But given Wenson’s comment about UUIDs this may be changing significantly anyway.

&gt; Source/WebCore/html/HTMLMenuElement.cpp:61
&gt; +    Ref&lt;MouseEvent&gt; mouseEvent = MouseEvent::create(eventNames().clickEvent, document().defaultView(), platformEvent, 0, 0);
&gt; +    tappedItem-&gt;dispatchEvent(mouseEvent);

I suggest combining these two into a single line.

&gt; Source/WebCore/html/HTMLMenuElement.cpp:68
&gt; +        document().setCurrentMenuElement(this);

This is a peculiar rule. It means that whenever we insert a new HTMLMenuElement that is a touch bar menu, then it will displace the already existing one. It’s a &quot;last one inserted wins&quot; rule. We should be sure that’s the rule we want. Arbitrary rules like this often lead to cross-browser incompatibility so it’s typically best to come up with an explicit rule.

&gt; Source/WebCore/html/HTMLMenuElement.cpp:70
&gt;          if (auto* page = document().page())
&gt;              page-&gt;chrome().client().didInsertMenuElement(*this);

Is it a good idea to call the chrome client every time we insert a touch bar menu element? What do we expect clients to do about multiple touch bar menu elements? I think maybe we actually want to call the client when the current menu element changes; could be a Document thing instead of an HTMLMenuElement thing. And also, seems not quite right to do this only for touch bar menus, yet have the client function be named generally &quot;did insert menu element&quot;. Name and semantics should match.

&gt; Source/WebCore/html/HTMLMenuElement.h:33
&gt; +    WEBCORE_EXPORT void didInteractWithItem(const WTF::String&amp; identifier);

No need for the &quot;WTF::&quot; prefix here.

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1109
&gt; +        RetainPtr&lt;NSCustomTouchBarItem&gt; touchBarItem = adoptNS([[NSCustomTouchBarItem alloc] initWithIdentifier:item.title]);

Can use &quot;auto&quot; here.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:5413
&gt; +    if (auto* frame = mainFrame()) {
&gt; +        if (auto element = frame-&gt;document()-&gt;currentMenuElement())
&gt; +            element-&gt;didInteractWithItem(touchBarMenuItemData.title);
&gt; +    }

Seems to me this should be calling a function on the Document, instead of explicitly getting at the current menu element. This function we would add on Document would replace the Document::currentMenuElement function entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1972905</commentid>
    <comment_count>14</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2023-08-22 22:31:01 -0700</bug_when>
    <thetext>Closing as this is not being worked on and would probably warrant a novel approach if started today.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328668</attachid>
            <date>2017-12-06 17:53:13 -0800</date>
            <delta_ts>2017-12-13 11:12:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180513-20171206175312.patch</filename>
            <type>text/plain</type>
            <size>25179</size>
            <attacher name="Aishwarya Nirmal">anirmal</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIzNjRhYzIyOWJjNzgx
MDYzOWYzMTFjNWFjZTYwNTJiODZjNTQ1ZS4uNjQ1MmNkOGI4YjIxNmQ1MmRhYzQwYWU0Y2I5MDU2
MWM3YTY1ZWU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTEyLTA2ICBBaXNo
d2FyeWEgTmlybWFsICA8YW5pcm1hbEBhcHBsZS5jb20+CisKKyAgICAgICAgW1RvdWNoIEJhciBX
ZWIgQVBJXSBBZGQgc3VwcG9ydCBmb3IgY3VzdG9tIFRvdWNoIEJhciBidXR0b25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA1MTMKKworICAgICAg
ICBBbGxvd3MgZm9yIHRoZSBtZW51IGVsZW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXN0b21p
emVkIHRvdWNoIGJhciB0bworICAgICAgICByZXNwb25kIHRvIHRvdWNoIGJhciBpbnRlcmFjdGlv
bnMgYW5kIGRpc3BhdGNoIHRoZSBhcHByb3ByaWF0ZSBldmVudC4KKworICAgICAgICBObyBuZXcg
dGVzdHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnNldEN1cnJlbnRNZW51RWxlbWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3VycmVudE1lbnVFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxNZW51RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVudUVsZW1lbnQ6OmRpZEludGVyYWN0V2l0aEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lbnVFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6CisgICAgICAgICogaHRtbC9IVE1M
TWVudUVsZW1lbnQuaDoKKwogMjAxNy0xMi0wNiAgRGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1ZXNh
ZGFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQXBwIE1hbmlmZXN0XSBBZGQgU1BJIGZvciBm
ZXRjaGluZyB0aGUgbWFuaWZlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDQ1NWQ1NzBlMWQ5MTUzN2NkOTJkZDdi
OWQ4M2I0MDc0MzY2NmU2MS4uZGQ3NDY1NjBiMDUwNjg5OGUwOGNhOWUyNDkyYmIxMzE1ZjNjMjNj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxNy0xMi0wNiAgQWlzaHdhcnlhIE5pcm1h
bCAgPGFuaXJtYWxAYXBwbGUuY29tPgorCisgICAgICAgIFtUb3VjaCBCYXIgV2ViIEFQSV0gQWRk
IHN1cHBvcnQgZm9yIGN1c3RvbSBUb3VjaCBCYXIgYnV0dG9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTEzCisKKyAgICAgICAgQWRkcyBjb21t
dW5pY2F0aW9uIGJldHdlZW4gdGhlIFdlYiBhbmQgVUkgcHJvY2Vzc2VzIHNvIHRoYXQgY3VzdG9t
IGJ1dHRvbnMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSB0b3VjaCBiYXIgYW5kIGNhbiB0
cmlnZ2VyIGFjdGlvbnMgd2hlbiB0YXBwZWQuCisKKyAgICAgICAgKiBTaGFyZWQvVG91Y2hCYXJN
ZW51RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoQmFyTWVudURhdGE6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoQmFyTWVudURhdGE6OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL1RvdWNoQmFyTWVudURhdGEuaDoKKyAgICAgICAgKFdlYktpdDo6VG91Y2hC
YXJNZW51RGF0YTo6aXRlbXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVE
YXRhOjpzZXRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6VG91Y2hCYXJNZW51RGF0YTo6
aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoQmFyTWVudURhdGE6OnNl
dElEKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0YTo6VG91Y2hCYXJNZW51SXRl
bURhdGEpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0YTo6ZGVjb2RlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgICgtW1dLVG91Y2hCYXJCdXR0b24g
Z2V0RGF0YV0pOgorICAgICAgICAoLVtXS1RvdWNoQmFyQnV0dG9uIHNldERhdGE6XSk6CisgICAg
ICAgICgtW1dLQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgaW5pdFdpdGhXZWJWaWV3
SW1wbDpdKToKKyAgICAgICAgKC1bV0tDdXN0b21pemVkVG91Y2hCYXJJdGVtQ29udHJvbGxlciBk
aWREZXN0cm95Vmlld10pOgorICAgICAgICAoLVtXS0N1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250
cm9sbGVyIHRvdWNoQmFyTWVudUl0ZW1UYXBwZWQ6XSk6CisgICAgICAgICgtW1dLQ3VzdG9taXpl
ZFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgdG91Y2hCYXI6bWFrZUl0ZW1Gb3JJZGVudGlmaWVyOl0p
OgorICAgICAgICAoLVtXS0N1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIGl0ZW1Gb3JJ
ZGVudGlmaWVyOl0pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXBkYXRlVG91Y2hC
YXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0VXBQYWdlQ3VzdG9taXplZFRv
dWNoQmFyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnVwZGF0ZVBhZ2VDdXN0b21p
emVkVG91Y2hCYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2VsZWN0aW9uRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnRvdWNoQmFyTWVudURhdGFE
aWRDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6dG91Y2hCYXJNZW51RGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGlkSW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51SXRlbSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6dG91Y2hCYXJNZW51RGF0YURp
ZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRJbnRlcmFjdFdpdGhUb3VjaEJhck1lbnVJdGVtKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE3LTEyLTA2ICBEYXZpZCBR
dWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBcHAgTWFu
aWZlc3RdIEFkZCBTUEkgZm9yIGZldGNoaW5nIHRoZSBtYW5pZmVzdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggZGJlMzRkODMyMDEzMDA1ZmU0OTgzMTA5ZTNjMDY0MjExMWQ4MTg0MC4uZWU0
M2VkNDc1YzY5ZGRhODc3MDdlZGQyNTVlZDkwYzk2ZmMzZWMxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC05MCw2ICs5MCw3IEBACiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MTWVudUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZUNvbGxl
Y3Rpb24uaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFBp
Y3R1cmVFbGVtZW50LmgiCkBAIC0xMDExLDYgKzEwMTIsMTEgQEAgRXhjZXB0aW9uT3I8UmVmPE5v
ZGU+PiBEb2N1bWVudDo6YWRvcHROb2RlKE5vZGUmIHNvdXJjZSkKICAgICByZXR1cm4gUmVmPE5v
ZGU+IHsgc291cmNlIH07CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnNldEN1cnJlbnRNZW51RWxlbWVu
dChSZWZQdHI8SFRNTE1lbnVFbGVtZW50PiYmIGVsZW1lbnQpCit7CisgICAgbV9jdXJyZW50TWVu
dUVsZW1lbnQgPSBlbGVtZW50OworfQorCiBib29sIERvY3VtZW50OjpoYXNWYWxpZE5hbWVzcGFj
ZUZvckVsZW1lbnRzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQogewogICAgIC8vIFRoZXNl
IGNoZWNrcyBhcmUgZnJvbSBET00gQ29yZSBMZXZlbCAyLCBjcmVhdGVFbGVtZW50TlMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggOTJlNmZlYWE0ODQ3MWUyZDI5NzFhNDkyMjM5OWY1ZDA2ZGQyOWQ5
NS4uMzMwYTM0NDc2NTZiM2NjZjRjNzE3NGY4OTkzYTAwODEwMDIzOWJhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBjbGFzcyBIVE1MSUZyYW1lRWxlbWVudDsKIGNs
YXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIGNsYXNzIEhUTUxN
ZWRpYUVsZW1lbnQ7CitjbGFzcyBIVE1MTWVudUVsZW1lbnQ7CiBjbGFzcyBIVE1MUGljdHVyZUVs
ZW1lbnQ7CiBjbGFzcyBIVE1MU2NyaXB0RWxlbWVudDsKIGNsYXNzIEhpdFRlc3RSZXF1ZXN0OwpA
QCAtNDc2LDYgKzQ3Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzVGltZXJUaHJvdHRsaW5nRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaW1lclRocm90dGxpbmdFbmFibGVkOyB9CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8Tm9kZT4+IGFkb3B0Tm9kZShOb2RlJiBz
b3VyY2UpOworICAgIHZvaWQgc2V0Q3VycmVudE1lbnVFbGVtZW50KFJlZlB0cjxIVE1MTWVudUVs
ZW1lbnQ+JiYpOworICAgIFJlZlB0cjxIVE1MTWVudUVsZW1lbnQ+JiBjdXJyZW50TWVudUVsZW1l
bnQoKSB7IHJldHVybiBtX2N1cnJlbnRNZW51RWxlbWVudDsgfQogCiAgICAgV0VCQ09SRV9FWFBP
UlQgUmVmPEhUTUxDb2xsZWN0aW9uPiBpbWFnZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8
SFRNTENvbGxlY3Rpb24+IGVtYmVkcygpOwpAQCAtMTg2OCw2ICsxODcxLDggQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmUHRyPFNXQ2xpZW50Q29ubmVjdGlv
bj4gbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbjsKICNlbmRpZgorCisgICAgUmVmUHRyPEhUTUxN
ZW51RWxlbWVudD4gbV9jdXJyZW50TWVudUVsZW1lbnQ7CiB9OwogCiBFbGVtZW50KiBldmVudFRh
cmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVudUVsZW1lbnQuY3BwCmluZGV4IDYyMTIyOTRlMTNlZjRjODFiZTU2ODUyZTQzMmVmMDJiODM2
YjQ2ZjQuLjg4OTE0YzIxMmZkMGYzNzY3NTQxMmJlODE0NTcyOGEzM2QyZDQyZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAKQEAgLTI2LDkgKzI2LDEyIEBACiAjaW5j
bHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE1lbnVJdGVt
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsMTAgKzQzLDI5IEBAIGlubGluZSBIVE1MTWVu
dUVsZW1lbnQ6OkhUTUxNZW51RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYKICAgICBBU1NFUlQoaGFzVGFnTmFtZShtZW51VGFnKSk7CiB9CiAKK3ZvaWQgSFRN
TE1lbnVFbGVtZW50OjpkaWRJbnRlcmFjdFdpdGhJdGVtKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVu
dGlmaWVyKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5tZW51SXRlbUVsZW1lbnRFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRv
IGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgY2hpbGRyZW4tPmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgYXV0byYgaXRlbSA9ICooY2hp
bGRyZW4tPml0ZW0oaSkpOworICAgICAgICBpZiAoIWlzPEhUTUxNZW51SXRlbUVsZW1lbnQ+KGl0
ZW0pKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoaXRlbS5hdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHRpdGxlQXR0cikgPT0gaWRlbnRpZmllcikgeworICAgICAgICAg
ICAgUGxhdGZvcm1Nb3VzZUV2ZW50IHBsYXRmb3JtRXZlbnQoSW50UG9pbnQgeyB9LCBJbnRQb2lu
dCB7IH0sIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgMSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdhbGxUaW1lOjpub3coKSwgMCwgU3ludGhldGljQ2xpY2tU
eXBlOjpOb1RhcCk7CisgICAgICAgICAgICBSZWY8TW91c2VFdmVudD4gbW91c2VFdmVudCA9IE1v
dXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgZG9jdW1lbnQoKS5kZWZh
dWx0VmlldygpLCBwbGF0Zm9ybUV2ZW50LCAwLCAwKTsKKyAgICAgICAgICAgIGl0ZW0uZGlzcGF0
Y2hFdmVudChtb3VzZUV2ZW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorfQorCiBOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBIVE1MTWVudUVsZW1lbnQ6
Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgdHlwZSwgQ29udGFpbmVyTm9kZSYg
YW5jZXN0b3IpCiB7CiAgICAgYXV0byByZXN1bHQgPSBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
QW5jZXN0b3IodHlwZSwgYW5jZXN0b3IpOwogICAgIGlmICh0eXBlLmNvbm5lY3RlZFRvRG9jdW1l
bnQgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5tZW51SXRlbUVs
ZW1lbnRFbmFibGVkKCkgJiYgbV9pc1RvdWNoQmFyTWVudSkgeworICAgICAgICBkb2N1bWVudCgp
LnNldEN1cnJlbnRNZW51RWxlbWVudCh0aGlzKTsKICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBk
b2N1bWVudCgpLnBhZ2UoKSkKICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmRp
ZEluc2VydE1lbnVFbGVtZW50KCp0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVu
dUVsZW1lbnQuaAppbmRleCAxYWQ5MGUzNDllMGMxZjAxNWVmODhiZmZmYTFlZDc4Mzg1NzMwMDVl
Li45NjlmMThlNDE4ODdhMzI1YzlkNTgwNGJhOGM2MjdkYTJmYjBmNzVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lbnVFbGVtZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAgY2xhc3MgSFRNTE1lbnVF
bGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPEhUTUxNZW51RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwogICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkSW50ZXJhY3RXaXRoSXRlbShj
b25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcik7CiAgICAgYm9vbCBpc1RvdWNoQmFyTWVudSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNUb3VjaEJhck1lbnU7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudURhdGEuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5jcHAKaW5kZXggNzUyNDc2M2UzNWFiMTdlMmI1
ZDRjNWNiZmMyMzMwNDNmMDA0M2QyMS4uOWVkNmVjNGNmODk3ZjQ1Njk1NDYyMzhkMjBiYTQ0ZDcx
M2VjNzI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5jcHAKQEAg
LTYwLDExICs2MCwyMCBAQCB2b2lkIFRvdWNoQmFyTWVudURhdGE6OnJlbW92ZU1lbnVJdGVtKGNv
bnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiBkYXRhKQogdm9pZCBUb3VjaEJhck1lbnVEYXRhOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgbV9p
dGVtczsKKyAgICBlbmNvZGVyIDw8IG1faWQ7CisgICAgZW5jb2RlciA8PCBtX2lzUGFnZUN1c3Rv
bWl6ZWQ7CiB9CiAKIGJvb2wgVG91Y2hCYXJNZW51RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgVG91Y2hCYXJNZW51RGF0YSYgZGF0YSkKIHsKLSAgICByZXR1cm4gZGVjb2Rlci5k
ZWNvZGUoZGF0YS5tX2l0ZW1zKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9pdGVt
cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEu
bV9pZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRh
dGEubV9pc1BhZ2VDdXN0b21pemVkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHRydWU7CiB9CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
b3VjaEJhck1lbnVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVEYXRh
LmgKaW5kZXggOGZjMjI5YmE4MGM4MWI4MDkwYzIyMTdjZmJkZWRmYjBiZjQ0ODljMy4uM2I2NTUy
NjI4YmMxYmQ3ZjRmNTA1NjQyYTBlMTFjNDM0M2I4OGI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RvdWNoQmFyTWVudURhdGEuaApAQCAtNDgsMTUgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFkZE1lbnVJdGVtKGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJik7CiAgICAgdm9pZCByZW1v
dmVNZW51SXRlbShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYpOwogICAgIAotICAgIGNvbnN0
IFZlY3RvcjxUb3VjaEJhck1lbnVJdGVtRGF0YT4mIGl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9p
dGVtczsgfQorICAgIFZlY3RvcjxUb3VjaEJhck1lbnVJdGVtRGF0YT4gaXRlbXMoKSBjb25zdCB7
IHJldHVybiBtX2l0ZW1zOyB9CiAgICAgCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikg
Y29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFRvdWNoQmFyTWVu
dURhdGEmKTsKICAgICAKLSAgICB2b2lkIHNldElEKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikg
eyBtX2lkID0gaWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0SWRlbnRpZmllcihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIpIHsgbV9pZCA9IGlkZW50aWZpZXI7IH0KKyAgICBTdHJpbmcgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKwogICAgIGJvb2wgaXNQYWdlQ3VzdG9taXpl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQYWdlQ3VzdG9taXplZDsgfQogICAgIHZvaWQgc2V0SXNQ
YWdlQ3VzdG9taXplZChib29sIGN1c3RvbWl6ZWQpIHsgbV9pc1BhZ2VDdXN0b21pemVkID0gY3Vz
dG9taXplZDsgfQotICAgIAorCiBwcml2YXRlOgogICAgIFZlY3RvcjxUb3VjaEJhck1lbnVJdGVt
RGF0YT4gbV9pdGVtczsKICAgICBTdHJpbmcgbV9pZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RvdWNoQmFyTWVudUl0ZW1EYXRhLmNwcAppbmRleCBkMDIyNmJiOWE5ZWMxYmFlMTgzNWJiZGRl
MTM0OGMxMjg2NmJkMTAzLi40NGY3Y2JmNDRiNDE4NzNlODNmNThhODk4NGY0M2JiMDFhZjUwOTkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwCkBA
IC00MSw3ICs0MSw3IEBAIHN0YXRpYyBJdGVtVHlwZSBpdGVtVHlwZShjb25zdCBTdHJpbmcmKQog
VG91Y2hCYXJNZW51SXRlbURhdGE6OlRvdWNoQmFyTWVudUl0ZW1EYXRhKGNvbnN0IFdlYkNvcmU6
OkhUTUxNZW51SXRlbUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgdHlwZSA9IGl0ZW1UeXBlKGVs
ZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6
OnR5cGVBdHRyKSk7Ci0gICAgaWRlbnRpZmllciA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OmlkQXR0cik7CisgICAgaWRlbnRpZmll
ciA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1M
TmFtZXM6OnRpdGxlQXR0cik7CiAgICAgcHJpb3JpdHkgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjp2YWx1ZUF0dHIpLnRvRmxvYXQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5k
ZXggNzg3YmE1MjY5YTNkMzExMzI4YmZiMjVmYjk5ZTc4MmFkOTFhOWFhOS4uNDljYWI0M2UzNWU1
ZTZjYjFiMTIyMjEwZWJlMzFjMGQ0NDYwZjUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC02Myw2ICs2Myw3IEBAIE9CSkNfQ0xBU1MgTlNDdXN0
b21Ub3VjaEJhckl0ZW07CiBPQkpDX0NMQVNTIE5TVG91Y2hCYXI7CiBPQkpDX0NMQVNTIE5TVG91
Y2hCYXJJdGVtOwogT0JKQ19DTEFTUyBOU1BvcG92ZXJUb3VjaEJhckl0ZW07CitPQkpDX0NMQVNT
IFdLQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFdLVGV4dFRv
dWNoQmFySXRlbUNvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyOwogI2VuZGlmIC8vIEhBVkUoVE9VQ0hfQkFSKQpAQCAtMjk0LDYgKzI5NSw3IEBAIHB1Ymxp
YzoKICAgICBpZCB2YWxpZFJlcXVlc3RvckZvclNlbmRBbmRSZXR1cm5UeXBlcyhOU1N0cmluZyAq
c2VuZFR5cGUsIE5TU3RyaW5nICpyZXR1cm5UeXBlKTsKICAgICB2b2lkIGNlbnRlclNlbGVjdGlv
bkluVmlzaWJsZUFyZWEoKTsKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpOworICAgIHZv
aWQgdG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSgpOwogICAgIHZvaWQgZGlkQmVjb21lRWRpdGFi
bGUoKTsKICAgICB2b2lkIHVwZGF0ZUZvbnRQYW5lbElmTmVlZGVkKCk7CiAgICAgdm9pZCBjaGFu
Z2VGb250RnJvbUZvbnRQYW5lbCgpOwpAQCAtNTQwLDggKzU0MiwxMCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIHZvaWQgc2V0VXBUZXh0VG91Y2hCYXIoTlNU
b3VjaEJhciAqKTsKKyAgICB2b2lkIHNldFVwUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcihOU1RvdWNo
QmFyICopOwogICAgIHZvaWQgdXBkYXRlVGV4dFRvdWNoQmFyKCk7CiAgICAgdm9pZCB1cGRhdGVN
ZWRpYVRvdWNoQmFyKCk7CisgICAgdm9pZCB1cGRhdGVQYWdlQ3VzdG9taXplZFRvdWNoQmFyKCk7
CiAKICAgICBib29sIHVzZU1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcoKSBjb25zdDsKICAgICBi
b29sIGlzUmljaGx5RWRpdGFibGUoKSBjb25zdDsKQEAgLTU1Niw3ICs1NjAsOSBAQCBwcml2YXRl
OgogICAgIFJldGFpblB0cjxOU1RvdWNoQmFyPiBtX3JpY2hUZXh0VG91Y2hCYXI7CiAgICAgUmV0
YWluUHRyPE5TVG91Y2hCYXI+IG1fcGxhaW5UZXh0VG91Y2hCYXI7CiAgICAgUmV0YWluUHRyPE5T
VG91Y2hCYXI+IG1fcGFzc3dvcmRUZXh0VG91Y2hCYXI7CisgICAgUmV0YWluUHRyPE5TVG91Y2hC
YXI+IG1fY3VzdG9taXplZFRvdWNoQmFyOwogICAgIFJldGFpblB0cjxXS1RleHRUb3VjaEJhckl0
ZW1Db250cm9sbGVyPiBtX3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyOworICAgIFJldGFpblB0
cjxXS0N1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyPiBtX2N1c3RvbWl6ZWRUb3VjaEJh
ckl0ZW1Db250cm9sbGVyOwogICAgIFJldGFpblB0cjxOU0NhbmRpZGF0ZUxpc3RUb3VjaEJhckl0
ZW0+IG1fcmljaFRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtOwogICAgIFJldGFpblB0cjxO
U0NhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0+IG1fcGxhaW5UZXh0Q2FuZGlkYXRlTGlzdFRvdWNo
QmFySXRlbTsKICAgICBSZXRhaW5QdHI8TlNDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtPiBtX3Bh
c3N3b3JkVGV4dENhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDJlZjBmMWE2NTE3NTBhMTM0ZGVkMjEz
YzIyZGRiZTFkZTEzN2I4NmIuLjQ2YjdmNTI0Njc0NzQ5Y2M5YjI3MTcxZmYwMDFjNjdlOTI4ODVk
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBA
IC00OSw2ICs0OSw4IEBACiAjaW1wb3J0ICJUZXh0Q2hlY2tlci5oIgogI2ltcG9ydCAiVGV4dENo
ZWNrZXJTdGF0ZS5oIgogI2ltcG9ydCAiVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94
eS5oIgorI2ltcG9ydCAiVG91Y2hCYXJNZW51RGF0YS5oIgorI2ltcG9ydCAiVG91Y2hCYXJNZW51
SXRlbURhdGEuaCIKICNpbXBvcnQgIlVJR2FtZXBhZFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJWaWV3
R2VzdHVyZUNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ckludGVybmFsLmgiCkBAIC02MDQsNiArNjA2LDcyIEBAIHN0YXRpYyBjb25zdCBOU1VJbnRlZ2Vy
IG9yZGVyZWRMaXN0U2VnbWVudCA9IDI7CiAKIEBlbmQKIAorQGludGVyZmFjZSBXS1RvdWNoQmFy
QnV0dG9uIDogTlNCdXR0b24geworQHByaXZhdGUKKyAgICBUb3VjaEJhck1lbnVJdGVtRGF0YSBk
YXRhOworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tUb3VjaEJhckJ1dHRvbgorLSAoY29u
c3QgVG91Y2hCYXJNZW51SXRlbURhdGEmKWdldERhdGEKK3sKKyAgICByZXR1cm4gZGF0YTsKK30K
KworLSAodm9pZClzZXREYXRhOihjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYpbWVudUl0ZW1E
YXRhCit7CisgICAgZGF0YSA9IG1lbnVJdGVtRGF0YTsKK30KKworQGVuZAorCitAaW50ZXJmYWNl
IFdLQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgOiBOU1RleHRUb3VjaEJhckl0ZW1D
b250cm9sbGVyPE5TVG91Y2hCYXJEZWxlZ2F0ZT4geworQHByaXZhdGUKKyAgICBXZWJWaWV3SW1w
bCogX3dlYlZpZXdJbXBsOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3SW1w
bDooV2ViVmlld0ltcGwqKXdlYlZpZXdJbXBsOworLSAodm9pZCl0b3VjaEJhck1lbnVJdGVtVGFw
cGVkOihXS1RvdWNoQmFyQnV0dG9uICopYnV0dG9uOworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
V0tDdXN0b21pemVkVG91Y2hCYXJJdGVtQ29udHJvbGxlcgorLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoV2ViVmlld0ltcGw6KFdlYlZpZXdJbXBsKil3ZWJWaWV3SW1wbAoreworICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3dlYlZpZXdJ
bXBsID0gd2ViVmlld0ltcGw7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkaWRE
ZXN0cm95VmlldworeworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0g
cmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CisgICAgX3dlYlZpZXdJbXBsID0gbnVsbHB0cjsKK30KKwor
LSAodm9pZCl0b3VjaEJhck1lbnVJdGVtVGFwcGVkOihXS1RvdWNoQmFyQnV0dG9uICopYnV0dG9u
Cit7CisgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZGlkSW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51
SXRlbShbYnV0dG9uIGdldERhdGFdKTsKK30KKworI3ByYWdtYSBtYXJrIE5TVG91Y2hCYXJEZWxl
Z2F0ZQorCistIChOU1RvdWNoQmFySXRlbSAqKXRvdWNoQmFyOihOU1RvdWNoQmFyICopdG91Y2hC
YXIgbWFrZUl0ZW1Gb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKK3sKKyAgICBy
ZXR1cm4gW3NlbGYgaXRlbUZvcklkZW50aWZpZXI6aWRlbnRpZmllcl07Cit9CisKKy0gKG51bGxh
YmxlIE5TVG91Y2hCYXJJdGVtICopaXRlbUZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRp
ZmllcgoreworICAgIE5TQ3VzdG9tVG91Y2hCYXJJdGVtICppdGVtID0gW1tOU0N1c3RvbVRvdWNo
QmFySXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50aWZpZXJdOworICAgIGl0ZW0u
dmlldyA9IFtOU0J1dHRvbiBidXR0b25XaXRoVGl0bGU6aWRlbnRpZmllciB0YXJnZXQ6aXRlbSBh
Y3Rpb246QHNlbGVjdG9yKHRvdWNoQmFyTWVudUl0ZW1UYXBwZWQ6KV07CisgICAgcmV0dXJuIGl0
ZW07Cit9CisKK0BlbmQKKwogQGludGVyZmFjZSBXS1RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVy
IDogTlNUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciA8TlNDYW5kaWRhdGVMaXN0VG91Y2hCYXJJ
dGVtRGVsZWdhdGUsIE5TVG91Y2hCYXJEZWxlZ2F0ZT4gewogQHByaXZhdGUKICAgICBCT09MIF90
ZXh0SXNCb2xkOwpAQCAtODk4LDYgKzk2NiwxMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVU
b3VjaEJhcigpCiAgICAgICAgIFttX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcgc2V0UGxheWJh
Y2tDb250cm9sc0NvbnRyb2xsZXI6bmlsXTsKICAgICB9CiAjZW5kaWYKKyAgICBlbHNlIGlmICht
X3BhZ2UtPnRvdWNoQmFyTWVudURhdGEoKS5pc1BhZ2VDdXN0b21pemVkKCkpIHsKKyAgICAgICAg
dXBkYXRlUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcigpOworICAgICAgICB0b3VjaEJhciA9IG1fY3Vz
dG9taXplZFRvdWNoQmFyLmdldCgpOworICAgIH0KIAogICAgIGlmICh0b3VjaEJhciA9PSBtX2N1
cnJlbnRUb3VjaEJhcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTAyOCw2ICsxMTAwLDI3IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnNldFVwVGV4dFRvdWNoQmFyKE5TVG91Y2hCYXIgKnRvdWNoQmFyKQog
ICAgICAgICB0ZXh0Rm9ybWF0SXRlbS5ncm91cFRvdWNoQmFyLmN1c3RvbWl6YXRpb25JZGVudGlm
aWVyID0gQCJXS1RleHRGb3JtYXRUb3VjaEJhciI7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnNl
dFVwUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcihOU1RvdWNoQmFyICp0b3VjaEJhcikKK3sKKyAgICBj
b25zdCBUb3VjaEJhck1lbnVEYXRhKiB0b3VjaEJhck1lbnVEYXRhID0gJihtX3BhZ2UtPnRvdWNo
QmFyTWVudURhdGEoKSk7CisgICAgVmVjdG9yPFRvdWNoQmFyTWVudUl0ZW1EYXRhPiBpdGVtcyA9
IHRvdWNoQmFyTWVudURhdGEtPml0ZW1zKCk7CisgICAgTlNNdXRhYmxlU2V0PE5TVG91Y2hCYXJJ
dGVtICo+ICp0ZW1wbGF0ZUl0ZW1zID0gW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdOworICAg
IE5TTXV0YWJsZUFycmF5PE5TVG91Y2hCYXJJdGVtSWRlbnRpZmllcj4gKmRlZmF1bHRJdGVtcyA9
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgIGZvciAoVG91Y2hCYXJNZW51SXRl
bURhdGEmIGl0ZW0gOiBpdGVtcykgeworICAgICAgICBpZiAoaXRlbS50eXBlICE9IEl0ZW1UeXBl
OjpCdXR0b24pIC8vIEN1cnJlbnRseSBvbmx5IGJ1dHRvbiBpcyBzdXBwb3J0ZWQuCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgTlNDdXN0b21Ub3VjaEJhckl0ZW0gKnRvdWNoQmFySXRl
bSA9IFtbTlNDdXN0b21Ub3VjaEJhckl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjppdGVt
LmlkZW50aWZpZXJdOworICAgICAgICBXS1RvdWNoQmFyQnV0dG9uICpidXR0b24gPSBbV0tUb3Vj
aEJhckJ1dHRvbiBidXR0b25XaXRoVGl0bGU6aXRlbS5pZGVudGlmaWVyIHRhcmdldDptX2N1c3Rv
bWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyLmdldCgpIGFjdGlvbjpAc2VsZWN0b3IodG91Y2hC
YXJNZW51SXRlbVRhcHBlZDopXTsKKyAgICAgICAgW2J1dHRvbiBzZXREYXRhOml0ZW1dOworICAg
ICAgICB0b3VjaEJhckl0ZW0udmlldyA9IGJ1dHRvbjsKKyAgICAgICAgW3RlbXBsYXRlSXRlbXMg
YWRkT2JqZWN0OnRvdWNoQmFySXRlbV07CisgICAgICAgIFtkZWZhdWx0SXRlbXMgYWRkT2JqZWN0
OnRvdWNoQmFySXRlbS5pZGVudGlmaWVyXTsKKyAgICB9CisgICAgW3RvdWNoQmFyIHNldERlbGVn
YXRlOm1fY3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXIuZ2V0KCldOworICAgIFt0b3Vj
aEJhciBzZXRUZW1wbGF0ZUl0ZW1zOnRlbXBsYXRlSXRlbXNdOworICAgIFt0b3VjaEJhciBzZXRE
ZWZhdWx0SXRlbUlkZW50aWZpZXJzOmRlZmF1bHRJdGVtc107Cit9CisKIGJvb2wgV2ViVmlld0lt
cGw6OmlzUmljaGx5RWRpdGFibGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhZ2UtPmVkaXRv
clN0YXRlKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUgJiYgIW1fcGFnZS0+bmVlZHNQbGFpblRl
eHRRdWlyaygpOwpAQCAtMTE0NCw2ICsxMjM3LDE2IEBAIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0
ZVRleHRUb3VjaEJhcigpCiAgICAgfQogfQogCit2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVQYWdl
Q3VzdG9taXplZFRvdWNoQmFyKCkKK3sKKyAgICBpZiAoIW1fY3VzdG9taXplZFRvdWNoQmFySXRl
bUNvbnRyb2xsZXIpCisgICAgICAgIG1fY3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXIg
PSBhZG9wdE5TKFtbV0tDdXN0b21pemVkVG91Y2hCYXJJdGVtQ29udHJvbGxlciBhbGxvY10gaW5p
dFdpdGhXZWJWaWV3SW1wbDp0aGlzXSk7CisgICAgaWYgKCFtX2N1c3RvbWl6ZWRUb3VjaEJhcikg
eworICAgICAgICBtX2N1c3RvbWl6ZWRUb3VjaEJhciA9IGFkb3B0TlMoW1tOU1RvdWNoQmFyIGFs
bG9jXSBpbml0XSk7CisgICAgICAgIHNldFVwUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcihtX2N1c3Rv
bWl6ZWRUb3VjaEJhci5nZXQoKSk7CisgICAgfQorfQorCiB2b2lkIFdlYlZpZXdJbXBsOjp1cGRh
dGVNZWRpYVRvdWNoQmFyKCkKIHsKICNpZiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01B
TkFHRVIpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKQEAgLTI2MTUsNiArMjcx
OCwxNSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZWxlY3Rpb25EaWRDaGFuZ2UoKQogICAgIFttX3Zp
ZXcgX3dlYl9lZGl0b3JTdGF0ZURpZENoYW5nZV07CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnRv
dWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKQoreworI2lmIEhBVkUoVE9VQ0hfQkFSKQorICAgIG1f
Y3VzdG9taXplZFRvdWNoQmFyID0gYWRvcHROUyhbW05TVG91Y2hCYXIgYWxsb2NdIGluaXRdKTsK
KyAgICBzZXRVcFBhZ2VDdXN0b21pemVkVG91Y2hCYXIobV9jdXN0b21pemVkVG91Y2hCYXIuZ2V0
KCkpOworICAgIHVwZGF0ZVRvdWNoQmFyKCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJWaWV3SW1w
bDo6ZGlkQmVjb21lRWRpdGFibGUoKQogewogICAgIFttX3dpbmRvd1Zpc2liaWxpdHlPYnNlcnZl
ciBzdGFydE9ic2VydmluZ0ZvbnRQYW5lbF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKaW5kZXggMjYxYjBkYjg1MTYwODY5OTk3MGY0YjQ0YjllY2QzMWRiYjJhNTc0Ni4uNjc1ZjU2
MTViMmU1MDIxODAyMjE2ZmE5OTExNjAzNTcyNzQ2YTkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaApAQCAtMTgwLDYgKzE4MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcihMYXllck9yVmlldyAqKSA9IDA7
CiAgICAgdmlydHVhbCBMYXllck9yVmlldyAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXll
cigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3
U25hcHNob3QoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRvdWNoQmFyTWVudURhdGFEaWRDaGFu
Z2UoKSA9IDA7CiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKICAgICB2aXJ0dWFsIHZv
aWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJHZXN0
dXJlRXZlbnQmKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDQ5OTc1Y2U4NWI1NWJjY2Q3MjA0ODMyYjUxNzZhNTQ2ODFlZWQ5ODEuLjE2
MThlZjU1ODMzMTA3ODQzNDMwOThhZDI1ZmU1NjU5YTg1MTVjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzE3MSwxNiArNzE3MSwyNCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBT
dHJpbmcmJiB0b3BGcmFtZQogdm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudURhdGFDaGFu
Z2VkKGNvbnN0IFRvdWNoQmFyTWVudURhdGEmIHRvdWNoQmFyTWVudURhdGEpCiB7CiAgICAgbV90
b3VjaEJhck1lbnVEYXRhID0gdG91Y2hCYXJNZW51RGF0YTsKKyAgICBtX3BhZ2VDbGllbnQudG91
Y2hCYXJNZW51RGF0YURpZENoYW5nZSgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dG91Y2hC
YXJNZW51SXRlbURhdGFBZGRlZChjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgdG91Y2hCYXJN
ZW51SXRlbURhdGEpCiB7CiAgICAgbV90b3VjaEJhck1lbnVEYXRhLmFkZE1lbnVJdGVtKHRvdWNo
QmFyTWVudUl0ZW1EYXRhKTsKKyAgICBtX3BhZ2VDbGllbnQudG91Y2hCYXJNZW51RGF0YURpZENo
YW5nZSgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dG91Y2hCYXJNZW51SXRlbURhdGFSZW1v
dmVkKGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiB0b3VjaEJhck1lbnVJdGVtRGF0YSkKIHsK
ICAgICBtX3RvdWNoQmFyTWVudURhdGEucmVtb3ZlTWVudUl0ZW0odG91Y2hCYXJNZW51SXRlbURh
dGEpOworICAgIG1fcGFnZUNsaWVudC50b3VjaEJhck1lbnVEYXRhRGlkQ2hhbmdlKCk7Cit9CisK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRJbnRlcmFjdFdpdGhUb3VjaEJhck1lbnVJdGVtKGNvbnN0
IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiB0b3VjaEJhck1lbnVJdGVtRGF0YSkKK3sKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEludGVyYWN0V2l0aFRvdWNoQmFyTWVu
dUl0ZW0odG91Y2hCYXJNZW51SXRlbURhdGEpLCBtX3BhZ2VJRCk7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwZDVjOGUxYTE3N2E4YjUwNDBi
MTA0ZDJmMjY4YzBhZTk3OWViMDliLi5kZDMwNDNmOWY0ZDZkOGU1MzQ1MTRhYWNlMzVhMTUwOTE4
OGJkZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTIzMywx
MCArMTIzMywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBlZGl0b3JTdGF0ZUNoYW5nZWQoY29uc3Qg
RWRpdG9yU3RhdGUmKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgdG91Y2hCYXJN
ZW51RGF0YVJlbW92ZWQoKTsKICAgICB2b2lkIHRvdWNoQmFyTWVudURhdGFDaGFuZ2VkKGNvbnN0
IFRvdWNoQmFyTWVudURhdGEmKTsKICAgICB2b2lkIHRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWQo
Y29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmKTsKICAgICB2b2lkIHRvdWNoQmFyTWVudUl0ZW1E
YXRhUmVtb3ZlZChjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYpOworICAgIHZvaWQgZGlkSW50
ZXJhY3RXaXRoVG91Y2hCYXJNZW51SXRlbShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYpOwog
I2VuZGlmCiAKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0
LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IHdlYlByb2Nlc3NDb250ZXh0SWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAppbmRl
eCBiMzEzOTVhNGU3ZGNkODYzYmE0ZGI2ZWEyMzk3Nzk4NDc1OTcxNzViLi5mOThjMmU3ZjdlZTZi
NDdmZmVhNzM0Nzk5MmQ4YzIwNGM0OTU2ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApAQCAtMTA0LDYgKzEwNCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIG5v
dGlmeUlucHV0Q29udGV4dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb24oKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZvaWQgdG91Y2hCYXJN
ZW51RGF0YURpZENoYW5nZSgpIG92ZXJyaWRlOwogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGNv
bnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwog
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggZjE2ZDkwZDhkYmRkMzM4NDQ5NTU1MmRjM2IzYzNi
NTc0MWVlZTBmNC4uOTRjM2ZmMzhhMWEzZDYyYWRlZTE0OGRhNDUzYWYxMmQ3MGQ3ZmNhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpA
QCAtNTI3LDYgKzUyNywxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZWxlY3Rpb25EaWRDaGFu
Z2UoKQogICAgIG1faW1wbC0+c2VsZWN0aW9uRGlkQ2hhbmdlKCk7CiB9CiAKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OnRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKQoreworICAgIG1faW1wbC0+dG91
Y2hCYXJNZW51RGF0YURpZENoYW5nZSgpOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjp3aGVl
bEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBl
dmVudCkKIHsKICAgICBpZiAoYXV0byBnZXN0dXJlQ29udHJvbGxlciA9IG1faW1wbC0+Z2VzdHVy
ZUNvbnRyb2xsZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggYTkxOGVjNmU1ZGE1ZGEyMzYyNTRkNTc4MjkxNmFjZWE2ZDgxZjJiOC4uNWVk
NGM5OTAxYjBhYzVjY2E1NmY4YzZjYTg0Y2UyMjIyMTVjOTU0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU0MDQsNiArNTQwNCwxNCBAQCB2
b2lkIFdlYlBhZ2U6OnNlbmRUb3VjaEJhck1lbnVJdGVtRGF0YVJlbW92ZWRVcGRhdGUoSFRNTE1l
bnVJdGVtRWxlbWVudCYgZWxlbWVudAogewogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6VG91Y2hCYXJNZW51SXRlbURhdGFSZW1vdmVkKFRvdWNoQmFyTWVudUl0ZW1EYXRhIHtlbGVt
ZW50fSkpOwogfQorCit2b2lkIFdlYlBhZ2U6OmRpZEludGVyYWN0V2l0aFRvdWNoQmFyTWVudUl0
ZW0oY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIHRvdWNoQmFyTWVudUl0ZW1EYXRhKQorewor
ICAgIGlmIChhdXRvKiBmcmFtZSA9IG1haW5GcmFtZSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBl
bGVtZW50ID0gZnJhbWUtPmRvY3VtZW50KCktPmN1cnJlbnRNZW51RWxlbWVudCgpLmdldCgpKQor
ICAgICAgICAgICAgZWxlbWVudC0+ZGlkSW50ZXJhY3RXaXRoSXRlbSh0b3VjaEJhck1lbnVJdGVt
RGF0YS5pZGVudGlmaWVyKTsKKyAgICB9Cit9CiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlOjpzZW5k
UGFydGlhbEVkaXRvclN0YXRlQW5kU2NoZWR1bGVQb3N0TGF5b3V0VXBkYXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAwOTA5MTI1M2NhYjdiOGJk
Mjg2MjRjMGU3NTgwMGI3MWMzNzQzMTA1Li41YjQwZDYzNWVlNmY3YjYyNWY4NGIwOWRhZTQ1MzQ0
YjgwZDNjMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAiU2FuZGJv
eEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgIlRvdWNo
QmFyTWVudUl0ZW1EYXRhLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJXZWJV
UkxTY2hlbWVIYW5kbGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CkBA
IC0xMDYwLDYgKzEwNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZFRvdWNoQmFyTWVudURh
dGFSZW1vdmVkVXBkYXRlKFdlYkNvcmU6OkhUTUxNZW51RWxlbWVudCYpOwogICAgIHZvaWQgc2Vu
ZFRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWRVcGRhdGUoV2ViQ29yZTo6SFRNTE1lbnVJdGVtRWxl
bWVudCYpOwogICAgIHZvaWQgc2VuZFRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZFVwZGF0ZShX
ZWJDb3JlOjpIVE1MTWVudUl0ZW1FbGVtZW50Jik7CisgICAgdm9pZCBkaWRJbnRlcmFjdFdpdGhU
b3VjaEJhck1lbnVJdGVtKGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJik7CiAjZW5kaWYKIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZjJmMThjYjU5YzlmOGQ0N2M1NzEyZmFlMThlMTE5NTk1
NGU0ZGE1Ni4uMzU3MzU3NzNmMzU1ZjQ5MTRjM2RlMjAzMmRiN2M0YmIwNDhlYjVlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCkBAIC0yOCw2ICsyOCwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBTZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBEaWRJbnRlcmFjdFdpdGhUb3VjaEJhck1lbnVJdGVtKHN0cnVj
dCBXZWJLaXQ6OlRvdWNoQmFyTWVudUl0ZW1EYXRhIHRvdWNoQmFyTWVudUl0ZW1EYXRhKQorI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBTZXRUb3BDb250ZW50SW5zZXRGZW5jZWQo
ZmxvYXQgY29udGVudEluc2V0LCBJUEM6OkF0dGFjaG1lbnQgZmVuY2VQb3J0KQogI2VuZGlmCiAg
ICAgU2V0VG9wQ29udGVudEluc2V0KGZsb2F0IGNvbnRlbnRJbnNldCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329235</attachid>
            <date>2017-12-13 11:12:28 -0800</date>
            <delta_ts>2017-12-13 13:53:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180513-20171213111228.patch</filename>
            <type>text/plain</type>
            <size>37390</size>
            <attacher name="Aishwarya Nirmal">anirmal</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIzNjRhYzIyOWJjNzgx
MDYzOWYzMTFjNWFjZTYwNTJiODZjNTQ1ZS4uMTliODkyYWE4YmEyNmIxNjUwOGU3ZDc4MWZmNWFk
MTFhMmUwZWUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTEyLTEzICBBaXNo
d2FyeWEgTmlybWFsICA8YW5pcm1hbEBhcHBsZS5jb20+CisKKyAgICAgICAgW1RvdWNoIEJhciBX
ZWIgQVBJXSBBZGQgc3VwcG9ydCBmb3IgY3VzdG9tIFRvdWNoIEJhciBidXR0b25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA1MTMKKworICAgICAg
ICBBbGxvd3MgZm9yIHRoZSBtZW51IGVsZW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXN0b21p
emVkIHRvdWNoIGJhciB0bworICAgICAgICByZXNwb25kIHRvIHRvdWNoIGJhciBpbnRlcmFjdGlv
bnMgYW5kIGRpc3BhdGNoIHRoZSBhcHByb3ByaWF0ZSBldmVudC4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9Ub3VjaEJhckFQSVRlc3RzLm1tCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEN1cnJlbnRNZW51RWxlbWVudCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3VycmVu
dE1lbnVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNZW51RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVudUVsZW1lbnQ6OmRpZEludGVyYWN0V2l0aEl0ZW0pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lbnVFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVudUVsZW1lbnQuaDoKKwogMjAxNy0xMi0wNiAgRGF2aWQgUXVl
c2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQXBwIE1hbmlm
ZXN0XSBBZGQgU1BJIGZvciBmZXRjaGluZyB0aGUgbWFuaWZlc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDQ1NWQ1
NzBlMWQ5MTUzN2NkOTJkZDdiOWQ4M2I0MDc0MzY2NmU2MS4uNTAyMzA3MWQ5ZmYwYzg4Njg2MTgy
MGZlNDFiYzI4ZGU1NjZkMzI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxNy0xMi0x
MyAgQWlzaHdhcnlhIE5pcm1hbCAgPGFuaXJtYWxAYXBwbGUuY29tPgorCisgICAgICAgIFtUb3Vj
aCBCYXIgV2ViIEFQSV0gQWRkIHN1cHBvcnQgZm9yIGN1c3RvbSBUb3VjaCBCYXIgYnV0dG9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTEzCisK
KyAgICAgICAgQWRkcyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIFdlYiBhbmQgVUkgcHJvY2Vz
c2VzIHNvIHRoYXQgY3VzdG9tIGJ1dHRvbnMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSB0
b3VjaCBiYXIgYW5kIGNhbiB0cmlnZ2VyIGFjdGlvbnMgd2hlbiB0YXBwZWQuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvVG91Y2hCYXJN
ZW51RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoQmFyTWVudURhdGE6OlRvdWNoQmFy
TWVudURhdGEpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVEYXRhOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVEYXRhOjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9Ub3VjaEJhck1lbnVEYXRhLmg6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoQmFy
TWVudURhdGE6OnNldElEKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvVG91Y2hCYXJNZW51
SXRlbURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0YTo6VG91
Y2hCYXJNZW51SXRlbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0
YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VG91Y2hCYXJNZW51SXRlbURhdGE6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmg6CisgICAg
ICAgIChXZWJLaXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAg
ICAgICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uIGdldERhdGFdKToKKyAgICAg
ICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uIHNldERhdGE6XSk6CisgICAgICAg
ICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIGluaXRXaXRoV2ViVmll
d0ltcGw6XSk6CisgICAgICAgICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9s
bGVyIGRpZERlc3Ryb3lWaWV3XSk6CisgICAgICAgICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJh
ckl0ZW1Db250cm9sbGVyIHRvdWNoQmFyTWVudUl0ZW1UYXBwZWQ6XSk6CisgICAgICAgICgtW1dL
UGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHRvdWNoQmFyOm1ha2VJdGVtRm9y
SWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNv
bnRyb2xsZXIgaXRlbUZvcklkZW50aWZpZXI6XSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjp1cGRhdGVUb3VjaEJhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRV
cFBhZ2VDdXN0b21pemVkVG91Y2hCYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dXBkYXRlUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpzZWxlY3Rpb25EaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6dG91Y2hCYXJNZW51RGF0YURpZENo
YW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6dG91Y2hCYXJNZW51RGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkSW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51
SXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
dG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRJbnRlcmFjdFdpdGhU
b3VjaEJhck1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDE3LTEyLTA2ICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFkZCBTUEkgZm9yIGZldGNoaW5nIHRoZSBtYW5pZmVz
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZGJlMzRkODMyMDEzMDA1ZmU0OTgzMTA5ZTNj
MDY0MjExMWQ4MTg0MC4uZWU0M2VkNDc1YzY5ZGRhODc3MDdlZGQyNTVlZDkwYzk2ZmMzZWMxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC05MCw2ICs5MCw3IEBACiAjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWVudUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgi
CiAjaW5jbHVkZSAiSFRNTFBpY3R1cmVFbGVtZW50LmgiCkBAIC0xMDExLDYgKzEwMTIsMTEgQEAg
RXhjZXB0aW9uT3I8UmVmPE5vZGU+PiBEb2N1bWVudDo6YWRvcHROb2RlKE5vZGUmIHNvdXJjZSkK
ICAgICByZXR1cm4gUmVmPE5vZGU+IHsgc291cmNlIH07CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnNl
dEN1cnJlbnRNZW51RWxlbWVudChSZWZQdHI8SFRNTE1lbnVFbGVtZW50PiYmIGVsZW1lbnQpCit7
CisgICAgbV9jdXJyZW50TWVudUVsZW1lbnQgPSBlbGVtZW50OworfQorCiBib29sIERvY3VtZW50
OjpoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lbnRzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1l
KQogewogICAgIC8vIFRoZXNlIGNoZWNrcyBhcmUgZnJvbSBET00gQ29yZSBMZXZlbCAyLCBjcmVh
dGVFbGVtZW50TlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOTJlNmZlYWE0ODQ3MWUyZDI5NzFh
NDkyMjM5OWY1ZDA2ZGQyOWQ5NS4uMzMwYTM0NDc2NTZiM2NjZjRjNzE3NGY4OTkzYTAwODEwMDIz
OWJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBjbGFzcyBIVE1M
SUZyYW1lRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxl
bWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBIVE1MTWVudUVsZW1lbnQ7CiBj
bGFzcyBIVE1MUGljdHVyZUVsZW1lbnQ7CiBjbGFzcyBIVE1MU2NyaXB0RWxlbWVudDsKIGNsYXNz
IEhpdFRlc3RSZXF1ZXN0OwpAQCAtNDc2LDYgKzQ3Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGlz
VGltZXJUaHJvdHRsaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaW1lclRocm90dGxp
bmdFbmFibGVkOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8Tm9kZT4+
IGFkb3B0Tm9kZShOb2RlJiBzb3VyY2UpOworICAgIHZvaWQgc2V0Q3VycmVudE1lbnVFbGVtZW50
KFJlZlB0cjxIVE1MTWVudUVsZW1lbnQ+JiYpOworICAgIFJlZlB0cjxIVE1MTWVudUVsZW1lbnQ+
JiBjdXJyZW50TWVudUVsZW1lbnQoKSB7IHJldHVybiBtX2N1cnJlbnRNZW51RWxlbWVudDsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhUTUxDb2xsZWN0aW9uPiBpbWFnZXMoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8SFRNTENvbGxlY3Rpb24+IGVtYmVkcygpOwpAQCAtMTg2OCw2ICsx
ODcxLDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmUHRy
PFNXQ2xpZW50Q29ubmVjdGlvbj4gbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbjsKICNlbmRpZgor
CisgICAgUmVmUHRyPEhUTUxNZW51RWxlbWVudD4gbV9jdXJyZW50TWVudUVsZW1lbnQ7CiB9Owog
CiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVudCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwCmluZGV4IDYyMTIyOTRlMTNlZjRjODFi
ZTU2ODUyZTQzMmVmMDJiODM2YjQ2ZjQuLjRmN2U3MjUxZmU5YTU2ZGYxNmU3MTk3YmIwODE0NTA0
MmE3ZDVkNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAKQEAgLTI2
LDkgKzI2LDEyIEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRNTE1lbnVJdGVtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1Nb3VzZUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsMTAgKzQzLDI3
IEBAIGlubGluZSBIVE1MTWVudUVsZW1lbnQ6OkhUTUxNZW51RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYKICAgICBBU1NFUlQoaGFzVGFnTmFtZShtZW51VGFn
KSk7CiB9CiAKK3ZvaWQgSFRNTE1lbnVFbGVtZW50OjpkaWRJbnRlcmFjdFdpdGhJdGVtKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkubWVudUl0ZW1FbGVtZW50RW5hYmxlZCgpKQorICAgICAgICByZXR1
cm47CisgICAgSFRNTE1lbnVJdGVtRWxlbWVudCogdGFwcGVkSXRlbTsKKyAgICBmb3IgKGF1dG8m
IGl0ZW0gOiBjaGlsZHJlbk9mVHlwZTxIVE1MTWVudUl0ZW1FbGVtZW50PigqdGhpcykpIHsKKyAg
ICAgICAgaWYgKGl0ZW0uYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0aXRsZUF0dHIp
ID09IGlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHRhcHBlZEl0ZW0gPSAmaXRlbTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIFBsYXRmb3JtTW91c2VFdmVudCBw
bGF0Zm9ybUV2ZW50KEludFBvaW50IHsgfSwgSW50UG9pbnQgeyB9LCBMZWZ0QnV0dG9uLCBQbGF0
Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBX
YWxsVGltZTo6bm93KCksIDAsIFN5bnRoZXRpY0NsaWNrVHlwZTo6Tm9UYXApOworICAgIFJlZjxN
b3VzZUV2ZW50PiBtb3VzZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50LCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIHBsYXRmb3JtRXZlbnQsIDAsIDAp
OworICAgIHRhcHBlZEl0ZW0tPmRpc3BhdGNoRXZlbnQobW91c2VFdmVudCk7Cit9CisKIE5vZGU6
Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhUTUxNZW51RWxlbWVudDo6aW5zZXJ0ZWRJbnRv
QW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSB0eXBlLCBDb250YWluZXJOb2RlJiBhbmNlc3RvcikKIHsK
ICAgICBhdXRvIHJlc3VsdCA9IEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcih0eXBl
LCBhbmNlc3Rvcik7CiAgICAgaWYgKHR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCAmJiBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLm1lbnVJdGVtRWxlbWVudEVuYWJsZWQo
KSAmJiBtX2lzVG91Y2hCYXJNZW51KSB7CisgICAgICAgIGRvY3VtZW50KCkuc2V0Q3VycmVudE1l
bnVFbGVtZW50KHRoaXMpOwogICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFn
ZSgpKQogICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZGlkSW5zZXJ0TWVudUVs
ZW1lbnQoKnRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lbnVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5oCmlu
ZGV4IDFhZDkwZTM0OWUwYzFmMDE1ZWY4OGJmZmZhMWVkNzgzODU3MzAwNWUuLjk2OWYxOGU0MTg4
N2EzMjVjOWQ1ODA0YmE4YzYyN2RhMmZiMGY3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lbnVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVu
dUVsZW1lbnQuaApAQCAtMzAsNiArMzAsNyBAQCBjbGFzcyBIVE1MTWVudUVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE1lbnVF
bGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRJbnRlcmFjdFdpdGhJdGVtKGNvbnN0IFdURjo6U3Ry
aW5nJiBpZGVudGlmaWVyKTsKICAgICBib29sIGlzVG91Y2hCYXJNZW51KCkgY29uc3QgeyByZXR1
cm4gbV9pc1RvdWNoQmFyTWVudTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
b3VjaEJhck1lbnVEYXRhLmNwcAppbmRleCA3NTI0NzYzZTM1YWIxN2UyYjVkNGM1Y2JmYzIzMzA0
M2YwMDQzZDIxLi43MWI4OWQ2YzAzNmJiMWVjYmZkOTc3ZDU2MzI4NDIzNTA3ZmU0MTE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVEYXRhLmNwcApAQCAtNDAsMTAgKzQwLDYg
QEAgVG91Y2hCYXJNZW51RGF0YTo6VG91Y2hCYXJNZW51RGF0YShjb25zdCBXZWJDb3JlOjpIVE1M
TWVudUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKCFlbGVtZW50LmlzVG91Y2hCYXJNZW51KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBXZSBjYW4ndCByZWx5IG9uIHVzaW5n
IHRoZSAnaWQnIGF0dHJpYnV0ZSBvZiB0aGUgZWxlbWVudCBoZXJlIHRvIGRpc3Rpbmd1aXNoCi0g
ICAgLy8gYmV0d2VlbiBkaWZmZXJlbnQgbWVudSBpdGVtcy4gRm9yIGluc3RhbmNlLCBhIG1lbnVp
dGVtIG1heSBoYXZlIHRoZSBzYW1lICdpZCcgYXMKLSAgICAvLyBhbm90aGVyLCBvciBoYXZlIG5v
ICdpZCcgYXQgYWxsLgotICAgIG1faWQgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjppZEF0dHIpOwogICAgIG1faXNQYWdlQ3VzdG9t
aXplZCA9IHRydWU7CiB9CiAgICAgCkBAIC02MCwxMSArNTYsMTcgQEAgdm9pZCBUb3VjaEJhck1l
bnVEYXRhOjpyZW1vdmVNZW51SXRlbShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgZGF0YSkK
IHZvaWQgVG91Y2hCYXJNZW51RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKICAgICBlbmNvZGVyIDw8IG1faXRlbXM7CisgICAgZW5jb2RlciA8PCBtX2lzUGFnZUN1
c3RvbWl6ZWQ7CiB9CiAKIGJvb2wgVG91Y2hCYXJNZW51RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgVG91Y2hCYXJNZW51RGF0YSYgZGF0YSkKIHsKLSAgICByZXR1cm4gZGVjb2Rl
ci5kZWNvZGUoZGF0YS5tX2l0ZW1zKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9p
dGVtcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRh
dGEubV9pc1BhZ2VDdXN0b21pemVkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHRydWU7CiB9CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
b3VjaEJhck1lbnVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVEYXRh
LmgKaW5kZXggOGZjMjI5YmE4MGM4MWI4MDkwYzIyMTdjZmJkZWRmYjBiZjQ0ODljMy4uZjM3NGU0
YzkxYmMyMmNjNWExZGE4NzhiNmI4ZjEyYTYzNzc2NTQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RvdWNoQmFyTWVudURhdGEuaApAQCAtNTIsMTQgKzUyLDEyIEBAIHB1YmxpYzoKICAgICAKICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoSVBDOjpEZWNvZGVyJiwgVG91Y2hCYXJNZW51RGF0YSYpOwotICAgIAotICAgIHZvaWQgc2V0
SUQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSB7IG1faWQgPSBpZGVudGlmaWVyOyB9CisKICAg
ICBib29sIGlzUGFnZUN1c3RvbWl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUGFnZUN1c3RvbWl6
ZWQ7IH0KICAgICB2b2lkIHNldElzUGFnZUN1c3RvbWl6ZWQoYm9vbCBjdXN0b21pemVkKSB7IG1f
aXNQYWdlQ3VzdG9taXplZCA9IGN1c3RvbWl6ZWQ7IH0KICAgICAKIHByaXZhdGU6CiAgICAgVmVj
dG9yPFRvdWNoQmFyTWVudUl0ZW1EYXRhPiBtX2l0ZW1zOwotICAgIFN0cmluZyBtX2lkOwogICAg
IAogICAgIGJvb2wgbV9pc1BhZ2VDdXN0b21pemVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAKaW5kZXggZDAyMjZiYjlhOWVj
MWJhZTE4MzViYmRkZTEzNDhjMTI4NjZiZDEwMy4uNjNlYThkMWQyYjlmNjE3OGU4NGQwMTBhNDlm
OGIwNGUzOTJjMDI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJN
ZW51SXRlbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0
ZW1EYXRhLmNwcApAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgSXRlbVR5cGUgaXRlbVR5cGUoY29u
c3QgU3RyaW5nJikKIFRvdWNoQmFyTWVudUl0ZW1EYXRhOjpUb3VjaEJhck1lbnVJdGVtRGF0YShj
b25zdCBXZWJDb3JlOjpIVE1MTWVudUl0ZW1FbGVtZW50JiBlbGVtZW50KQogewogICAgIHR5cGUg
PSBpdGVtVHlwZShlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29y
ZTo6SFRNTE5hbWVzOjp0eXBlQXR0cikpOwotICAgIGlkZW50aWZpZXIgPSBlbGVtZW50LmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjppZEF0dHIpOwor
ICAgIHRpdGxlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNv
cmU6OkhUTUxOYW1lczo6dGl0bGVBdHRyKTsKICAgICBwcmlvcml0eSA9IGVsZW1lbnQuYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnZhbHVlQXR0ciku
dG9GbG9hdCgpOwogfQogCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgVG91Y2hCYXJNZW51SXRlbURh
dGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rlci5l
bmNvZGVFbnVtKHR5cGUpOwogICAgIAotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKKyAgICBl
bmNvZGVyIDw8IHRpdGxlOwogICAgIGVuY29kZXIgPDwgcHJpb3JpdHk7CiB9CiAKQEAgLTU5LDcg
KzU5LDcgQEAgc3RkOjpvcHRpb25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gVG91Y2hCYXJNZW51
SXRlbURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
RW51bShyZXN1bHQudHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQudGl0bGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnByaW9yaXR5KSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5oCmluZGV4IDIzOGU2MzYzNzc0ZTdi
NTNhZjg2ZTBhYzEzNzZmZjFiMjA1YzNhMGMuLmIyMzNmMTA5OGExMzQ2Zjg4ODIzZjFmOTljOThl
ZmUzMTM1ZDk2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVu
dUl0ZW1EYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURh
dGEuaApAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgVG91Y2hCYXJNZW51SXRlbURhdGEgewogICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFRvdWNoQmFyTWVudUl0ZW1EYXRhPiBkZWNvZGUoSVBDOjpE
ZWNvZGVyJik7CiAgICAgCiAgICAgSXRlbVR5cGUgdHlwZSB7IEl0ZW1UeXBlOjpCdXR0b24gfTsK
LSAgICBTdHJpbmcgaWRlbnRpZmllcjsKKyAgICBTdHJpbmcgdGl0bGU7CiAgICAgZmxvYXQgcHJp
b3JpdHkgeyAwLjAgfTsKICAgICBib29sIHZhbGlkVG91Y2hCYXJEaXNwbGF5IHsgdHJ1ZSB9Owog
fTsKQEAgLTgxLDcgKzgxLDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUb3VjaEJh
ck1lbnVJdGVtRGF0YSYgbGhzLCBjb25zdCBUb3VjaEJhck1lbnVJdGVtRGEKIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIGxocywgY29uc3QgVG91Y2hC
YXJNZW51SXRlbURhdGEmIHJocykKIHsKICAgICByZXR1cm4gbGhzLnR5cGUgPT0gcmhzLnR5cGUK
LSAgICAgICAgJiYgbGhzLmlkZW50aWZpZXIgPT0gcmhzLmlkZW50aWZpZXIKKyAgICAgICAgJiYg
bGhzLnRpdGxlID09IHJocy50aXRsZQogICAgICAgICAmJiBsaHMucHJpb3JpdHkgPT0gcmhzLnBy
aW9yaXR5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
aAppbmRleCA3ODdiYTUyNjlhM2QzMTEzMjhiZmIyNWZiOTllNzgyYWQ5MWE5YWE5Li5hMWNlMzgx
ZTkyZjFmMDBlYjdjNGU0OWZmYzExYTQ1ZDU0ZGE0YzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTYzLDYgKzYzLDcgQEAgT0JKQ19DTEFTUyBO
U0N1c3RvbVRvdWNoQmFySXRlbTsKIE9CSkNfQ0xBU1MgTlNUb3VjaEJhcjsKIE9CSkNfQ0xBU1Mg
TlNUb3VjaEJhckl0ZW07CiBPQkpDX0NMQVNTIE5TUG9wb3ZlclRvdWNoQmFySXRlbTsKK09CSkNf
Q0xBU1MgV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXI7CiBPQkpDX0NMQVNT
IFdLVGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyOwogI2VuZGlmIC8vIEhBVkUoVE9VQ0hfQkFSKQpAQCAtMjk0LDYgKzI5NSw3
IEBAIHB1YmxpYzoKICAgICBpZCB2YWxpZFJlcXVlc3RvckZvclNlbmRBbmRSZXR1cm5UeXBlcyhO
U1N0cmluZyAqc2VuZFR5cGUsIE5TU3RyaW5nICpyZXR1cm5UeXBlKTsKICAgICB2b2lkIGNlbnRl
clNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKTsKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgp
OworICAgIHZvaWQgdG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSgpOwogICAgIHZvaWQgZGlkQmVj
b21lRWRpdGFibGUoKTsKICAgICB2b2lkIHVwZGF0ZUZvbnRQYW5lbElmTmVlZGVkKCk7CiAgICAg
dm9pZCBjaGFuZ2VGb250RnJvbUZvbnRQYW5lbCgpOwpAQCAtNTQwLDggKzU0MiwxMCBAQCBwdWJs
aWM6CiBwcml2YXRlOgogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIHZvaWQgc2V0VXBUZXh0VG91
Y2hCYXIoTlNUb3VjaEJhciAqKTsKKyAgICB2b2lkIHNldFVwUGFnZUN1c3RvbWl6ZWRUb3VjaEJh
cihOU1RvdWNoQmFyICopOwogICAgIHZvaWQgdXBkYXRlVGV4dFRvdWNoQmFyKCk7CiAgICAgdm9p
ZCB1cGRhdGVNZWRpYVRvdWNoQmFyKCk7CisgICAgdm9pZCB1cGRhdGVQYWdlQ3VzdG9taXplZFRv
dWNoQmFyKCk7CiAKICAgICBib29sIHVzZU1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcoKSBjb25z
dDsKICAgICBib29sIGlzUmljaGx5RWRpdGFibGUoKSBjb25zdDsKQEAgLTU1Niw3ICs1NjAsOSBA
QCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1RvdWNoQmFyPiBtX3JpY2hUZXh0VG91Y2hCYXI7
CiAgICAgUmV0YWluUHRyPE5TVG91Y2hCYXI+IG1fcGxhaW5UZXh0VG91Y2hCYXI7CiAgICAgUmV0
YWluUHRyPE5TVG91Y2hCYXI+IG1fcGFzc3dvcmRUZXh0VG91Y2hCYXI7CisgICAgUmV0YWluUHRy
PE5TVG91Y2hCYXI+IG1fcGFnZUN1c3RvbWl6ZWRUb3VjaEJhcjsKICAgICBSZXRhaW5QdHI8V0tU
ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlcj4gbV90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlcjsK
KyAgICBSZXRhaW5QdHI8V0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXI+IG1f
cGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyOwogICAgIFJldGFpblB0cjxOU0Nh
bmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0+IG1fcmljaFRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJ
dGVtOwogICAgIFJldGFpblB0cjxOU0NhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0+IG1fcGxhaW5U
ZXh0Q2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbTsKICAgICBSZXRhaW5QdHI8TlNDYW5kaWRhdGVM
aXN0VG91Y2hCYXJJdGVtPiBtX3Bhc3N3b3JkVGV4dENhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDJl
ZjBmMWE2NTE3NTBhMTM0ZGVkMjEzYzIyZGRiZTFkZTEzN2I4NmIuLjdmYWUwOTdhNGVhM2E5YmVi
MTI4YTQ3NDk0Y2FhNzYxMWU2YjFjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCkBAIC00OSw2ICs0OSw4IEBACiAjaW1wb3J0ICJUZXh0Q2hlY2tl
ci5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2ltcG9ydCAiVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIgorI2ltcG9ydCAiVG91Y2hCYXJNZW51RGF0YS5oIgor
I2ltcG9ydCAiVG91Y2hCYXJNZW51SXRlbURhdGEuaCIKICNpbXBvcnQgIlVJR2FtZXBhZFByb3Zp
ZGVyLmgiCiAjaW1wb3J0ICJWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgiCkBAIC02MDQsNiArNjA2LDcxIEBAIHN0
YXRpYyBjb25zdCBOU1VJbnRlZ2VyIG9yZGVyZWRMaXN0U2VnbWVudCA9IDI7CiAKIEBlbmQKIAor
QGludGVyZmFjZSBXS1BhZ2VDdXN0b21pemVkVG91Y2hCYXJCdXR0b24gOiBOU0J1dHRvbiB7CitA
cHJpdmF0ZQorICAgIFRvdWNoQmFyTWVudUl0ZW1EYXRhIGRhdGE7Cit9CitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBXS1BhZ2VDdXN0b21pemVkVG91Y2hCYXJCdXR0b24KKy0gKGNvbnN0IFRvdWNo
QmFyTWVudUl0ZW1EYXRhJilnZXREYXRhCit7CisgICAgcmV0dXJuIGRhdGE7Cit9CisKKy0gKHZv
aWQpc2V0RGF0YTooY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmKW1lbnVJdGVtRGF0YQorewor
ICAgIGRhdGEgPSBtZW51SXRlbURhdGE7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBXS1BhZ2VD
dXN0b21pemVkVG91Y2hCYXJJdGVtQ29udHJvbGxlciA6IE5TVGV4dFRvdWNoQmFySXRlbUNvbnRy
b2xsZXI8TlNUb3VjaEJhckRlbGVnYXRlPiB7CitAcHJpdmF0ZQorICAgIFdlYlZpZXdJbXBsKiBf
d2ViVmlld0ltcGw7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXdJbXBsOihX
ZWJWaWV3SW1wbCopd2ViVmlld0ltcGw7CistICh2b2lkKXRvdWNoQmFyTWVudUl0ZW1UYXBwZWQ6
KFdLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckJ1dHRvbiAqKWJ1dHRvbjsKK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFdLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3SW1wbDooV2ViVmlld0ltcGwqKXdlYlZpZXdJbXBsCit7
CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBfd2ViVmlld0ltcGwgPSB3ZWJWaWV3SW1wbDsKKworICAgIHJldHVybiBzZWxmOworfQor
CistICh2b2lkKWRpZERlc3Ryb3lWaWV3Cit7CisgICAgX3dlYlZpZXdJbXBsID0gbnVsbHB0cjsK
K30KKworLSAodm9pZCl0b3VjaEJhck1lbnVJdGVtVGFwcGVkOihXS1BhZ2VDdXN0b21pemVkVG91
Y2hCYXJCdXR0b24gKilidXR0b24KK3sKKyAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5kaWRJbnRl
cmFjdFdpdGhUb3VjaEJhck1lbnVJdGVtKFtidXR0b24gZ2V0RGF0YV0pOworfQorCisjcHJhZ21h
IG1hcmsgTlNUb3VjaEJhckRlbGVnYXRlCisKKy0gKE5TVG91Y2hCYXJJdGVtICopdG91Y2hCYXI6
KE5TVG91Y2hCYXIgKil0b3VjaEJhciBtYWtlSXRlbUZvcklkZW50aWZpZXI6KE5TU3RyaW5nICop
aWRlbnRpZmllcgoreworICAgIHJldHVybiBbc2VsZiBpdGVtRm9ySWRlbnRpZmllcjppZGVudGlm
aWVyXTsKK30KKworLSAobnVsbGFibGUgTlNUb3VjaEJhckl0ZW0gKilpdGVtRm9ySWRlbnRpZmll
cjooTlNTdHJpbmcgKilpZGVudGlmaWVyCit7CisgICAgTlNDdXN0b21Ub3VjaEJhckl0ZW0gKml0
ZW0gPSBbW1tOU0N1c3RvbVRvdWNoQmFySXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlk
ZW50aWZpZXJdIGF1dG9yZWxlYXNlXTsKKyAgICBpdGVtLnZpZXcgPSBbTlNCdXR0b24gYnV0dG9u
V2l0aFRpdGxlOmlkZW50aWZpZXIgdGFyZ2V0Oml0ZW0gYWN0aW9uOkBzZWxlY3Rvcih0b3VjaEJh
ck1lbnVJdGVtVGFwcGVkOildOworICAgIHJldHVybiBpdGVtOworfQorCitAZW5kCisKIEBpbnRl
cmZhY2UgV0tUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciA6IE5TVGV4dFRvdWNoQmFySXRlbUNv
bnRyb2xsZXIgPE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbURlbGVnYXRlLCBOU1RvdWNoQmFy
RGVsZWdhdGU+IHsKIEBwcml2YXRlCiAgICAgQk9PTCBfdGV4dElzQm9sZDsKQEAgLTg5OCw2ICs5
NjUsMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlVG91Y2hCYXIoKQogICAgICAgICBbbV9t
ZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IHNldFBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOm5p
bF07CiAgICAgfQogI2VuZGlmCisgICAgZWxzZSBpZiAobV9wYWdlLT50b3VjaEJhck1lbnVEYXRh
KCkuaXNQYWdlQ3VzdG9taXplZCgpKSB7CisgICAgICAgIHVwZGF0ZVBhZ2VDdXN0b21pemVkVG91
Y2hCYXIoKTsKKyAgICAgICAgdG91Y2hCYXIgPSBtX3BhZ2VDdXN0b21pemVkVG91Y2hCYXIuZ2V0
KCk7CisgICAgfQogCiAgICAgaWYgKHRvdWNoQmFyID09IG1fY3VycmVudFRvdWNoQmFyKQogICAg
ICAgICByZXR1cm47CkBAIC0xMDI4LDYgKzEwOTksMjcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0
VXBUZXh0VG91Y2hCYXIoTlNUb3VjaEJhciAqdG91Y2hCYXIpCiAgICAgICAgIHRleHRGb3JtYXRJ
dGVtLmdyb3VwVG91Y2hCYXIuY3VzdG9taXphdGlvbklkZW50aWZpZXIgPSBAIldLVGV4dEZvcm1h
dFRvdWNoQmFyIjsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c2V0VXBQYWdlQ3VzdG9taXplZFRv
dWNoQmFyKE5TVG91Y2hCYXIgKnRvdWNoQmFyKQoreworICAgIGNvbnN0IFRvdWNoQmFyTWVudURh
dGEqIHRvdWNoQmFyTWVudURhdGEgPSAmKG1fcGFnZS0+dG91Y2hCYXJNZW51RGF0YSgpKTsKKyAg
ICBWZWN0b3I8VG91Y2hCYXJNZW51SXRlbURhdGE+IGl0ZW1zID0gdG91Y2hCYXJNZW51RGF0YS0+
aXRlbXMoKTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU2V0PE5TVG91Y2hCYXJJdGVtICo+PiB0
ZW1wbGF0ZUl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOworICAg
IFJldGFpblB0cjxOU011dGFibGVBcnJheTxOU1RvdWNoQmFySXRlbUlkZW50aWZpZXI+PiBkZWZh
dWx0SXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBm
b3IgKFRvdWNoQmFyTWVudUl0ZW1EYXRhJiBpdGVtIDogaXRlbXMpIHsKKyAgICAgICAgaWYgKGl0
ZW0udHlwZSAhPSBJdGVtVHlwZTo6QnV0dG9uKSAvLyBDdXJyZW50bHkgb25seSBidXR0b24gaXMg
c3VwcG9ydGVkLgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFJldGFpblB0cjxOU0N1
c3RvbVRvdWNoQmFySXRlbT4gdG91Y2hCYXJJdGVtID0gYWRvcHROUyhbW05TQ3VzdG9tVG91Y2hC
YXJJdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6aXRlbS50aXRsZV0pOworICAgICAgICBX
S1BhZ2VDdXN0b21pemVkVG91Y2hCYXJCdXR0b24gKmJ1dHRvbiA9IFtXS1BhZ2VDdXN0b21pemVk
VG91Y2hCYXJCdXR0b24gYnV0dG9uV2l0aFRpdGxlOml0ZW0udGl0bGUgdGFyZ2V0Om1fcGFnZUN1
c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyLmdldCgpIGFjdGlvbjpAc2VsZWN0b3IodG91
Y2hCYXJNZW51SXRlbVRhcHBlZDopXTsKKyAgICAgICAgW2J1dHRvbiBzZXREYXRhOml0ZW1dOwor
ICAgICAgICB0b3VjaEJhckl0ZW0uZ2V0KCkudmlldyA9IGJ1dHRvbjsKKyAgICAgICAgW3RlbXBs
YXRlSXRlbXMgYWRkT2JqZWN0OnRvdWNoQmFySXRlbS5nZXQoKV07CisgICAgICAgIFtkZWZhdWx0
SXRlbXMgYWRkT2JqZWN0OnRvdWNoQmFySXRlbS5nZXQoKS5pZGVudGlmaWVyXTsKKyAgICB9Cisg
ICAgW3RvdWNoQmFyIHNldERlbGVnYXRlOm1fcGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250
cm9sbGVyLmdldCgpXTsKKyAgICBbdG91Y2hCYXIgc2V0VGVtcGxhdGVJdGVtczp0ZW1wbGF0ZUl0
ZW1zLmdldCgpXTsKKyAgICBbdG91Y2hCYXIgc2V0RGVmYXVsdEl0ZW1JZGVudGlmaWVyczpkZWZh
dWx0SXRlbXMuZ2V0KCldOworfQorCiBib29sIFdlYlZpZXdJbXBsOjppc1JpY2hseUVkaXRhYmxl
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlICYmICFtX3BhZ2UtPm5lZWRzUGxhaW5UZXh0UXVpcmsoKTsKQEAgLTExNDQs
NiArMTIzNiwxNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVUZXh0VG91Y2hCYXIoKQogICAg
IH0KIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcigp
Cit7CisgICAgaWYgKCFtX3BhZ2VDdXN0b21pemVkVG91Y2hCYXJJdGVtQ29udHJvbGxlcikKKyAg
ICAgICAgbV9wYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgPSBhZG9wdE5TKFtb
V0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoV2Vi
Vmlld0ltcGw6dGhpc10pOworICAgIGlmICghbV9wYWdlQ3VzdG9taXplZFRvdWNoQmFyKSB7Cisg
ICAgICAgIG1fcGFnZUN1c3RvbWl6ZWRUb3VjaEJhciA9IGFkb3B0TlMoW1tOU1RvdWNoQmFyIGFs
bG9jXSBpbml0XSk7CisgICAgICAgIHNldFVwUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcihtX3BhZ2VD
dXN0b21pemVkVG91Y2hCYXIuZ2V0KCkpOworICAgIH0KK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6
dXBkYXRlTWVkaWFUb3VjaEJhcigpCiB7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9M
U19NQU5BR0VSKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCkBAIC0yNjE1LDYg
KzI3MTcsMTQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2VsZWN0aW9uRGlkQ2hhbmdlKCkKICAgICBb
bV92aWV3IF93ZWJfZWRpdG9yU3RhdGVEaWRDaGFuZ2VdOwogfQogCit2b2lkIFdlYlZpZXdJbXBs
Ojp0b3VjaEJhck1lbnVEYXRhRGlkQ2hhbmdlKCkKK3sKKyNpZiBIQVZFKFRPVUNIX0JBUikKKyAg
ICBtX3BhZ2VDdXN0b21pemVkVG91Y2hCYXIgPSBuaWw7CisgICAgdXBkYXRlVG91Y2hCYXIoKTsK
KyNlbmRpZgorfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpkaWRCZWNvbWVFZGl0YWJsZSgpCiB7CiAg
ICAgW21fd2luZG93VmlzaWJpbGl0eU9ic2VydmVyIHN0YXJ0T2JzZXJ2aW5nRm9udFBhbmVsXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCAyNjFiMGRiODUxNjA4Njk5OTcw
ZjRiNDRiOWVjZDMxZGJiMmE1NzQ2Li5iMjk1YzBiZWJiZGJiOWRkYjcwZWNhMDA2MzVhOGU0YjYw
YjE2NjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xODAsNiArMTgw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Um9vdExheWVyKExheWVyT3JWaWV3ICopID0gMDsKICAgICB2aXJ0dWFsIExheWVyT3JWaWV3ICph
Y2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
UmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSgpIHsgfQogI2lmIEVOQUJMRShNQUNfR0VT
VFVSRV9FVkVOVFMpCiAgICAgdmlydHVhbCB2b2lkIGdlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRC
eVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViR2VzdHVyZUV2ZW50JikgPSAwOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0OTk3NWNlODViNTViY2Nk
NzIwNDgzMmI1MTc2YTU0NjgxZWVkOTgxLi4xNjE4ZWY1NTgzMzEwNzg0MzQzMDk4YWQyNWZlNTY1
OWE4NTE1YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTcxNzEsMTYgKzcxNzEsMjQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWUKIHZvaWQgV2ViUGFn
ZVByb3h5Ojp0b3VjaEJhck1lbnVEYXRhQ2hhbmdlZChjb25zdCBUb3VjaEJhck1lbnVEYXRhJiB0
b3VjaEJhck1lbnVEYXRhKQogewogICAgIG1fdG91Y2hCYXJNZW51RGF0YSA9IHRvdWNoQmFyTWVu
dURhdGE7CisgICAgbV9wYWdlQ2xpZW50LnRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWQoY29uc3QgVG91
Y2hCYXJNZW51SXRlbURhdGEmIHRvdWNoQmFyTWVudUl0ZW1EYXRhKQogewogICAgIG1fdG91Y2hC
YXJNZW51RGF0YS5hZGRNZW51SXRlbSh0b3VjaEJhck1lbnVJdGVtRGF0YSk7CisgICAgbV9wYWdl
Q2xpZW50LnRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZChjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0
YSYgdG91Y2hCYXJNZW51SXRlbURhdGEpCiB7CiAgICAgbV90b3VjaEJhck1lbnVEYXRhLnJlbW92
ZU1lbnVJdGVtKHRvdWNoQmFyTWVudUl0ZW1EYXRhKTsKKyAgICBtX3BhZ2VDbGllbnQudG91Y2hC
YXJNZW51RGF0YURpZENoYW5nZSgpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkSW50ZXJh
Y3RXaXRoVG91Y2hCYXJNZW51SXRlbShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgdG91Y2hC
YXJNZW51SXRlbURhdGEpCit7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRJbnRlcmFjdFdpdGhUb3VjaEJhck1lbnVJdGVtKHRvdWNoQmFyTWVudUl0ZW1EYXRhKSwg
bV9wYWdlSUQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggMGQ1YzhlMWExNzdhOGI1MDQwYjEwNGQyZjI2OGMwYWU5NzllYjA5Yi4uZGQzMDQz
ZjlmNGQ2ZDhlNTM0NTE0YWFjZTM1YTE1MDkxODhiZGU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyMzMsMTAgKzEyMzMsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgZWRpdG9yU3RhdGVDaGFuZ2VkKGNvbnN0IEVkaXRvclN0YXRlJik7CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICB2b2lkIHRvdWNoQmFyTWVudURhdGFSZW1vdmVkKCk7CiAgICAgdm9pZCB0
b3VjaEJhck1lbnVEYXRhQ2hhbmdlZChjb25zdCBUb3VjaEJhck1lbnVEYXRhJik7CiAgICAgdm9p
ZCB0b3VjaEJhck1lbnVJdGVtRGF0YUFkZGVkKGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJik7
CiAgICAgdm9pZCB0b3VjaEJhck1lbnVJdGVtRGF0YVJlbW92ZWQoY29uc3QgVG91Y2hCYXJNZW51
SXRlbURhdGEmKTsKKyAgICB2b2lkIGRpZEludGVyYWN0V2l0aFRvdWNoQmFyTWVudUl0ZW0oY29u
c3QgVG91Y2hCYXJNZW51SXRlbURhdGEmKTsKICNlbmRpZgogCiAgICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50
NjRfdCB3ZWJQcm9jZXNzQ29udGV4dElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggYjMxMzk1YTRlN2RjZDg2M2JhNGRiNmVhMjM5
Nzc5ODQ3NTk3MTc1Yi4uZjk4YzJlN2Y3ZWU2YjQ3ZmZlYTczNDc5OTJkOGMyMDRjNDk1NmUzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgK
QEAgLTEwNCw2ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0
YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRl
ZENvbXBvc2l0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKSBvdmVycmlkZTsK
IAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVy
dFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGYx
NmQ5MGQ4ZGJkZDMzODQ0OTU1NTJkYzNiM2MzYjU3NDFlZWUwZjQuLjk0YzNmZjM4YTFhM2Q2MmFk
ZWUxNDhkYTQ1M2FmMTJkNzBkN2ZjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTUyNyw2ICs1MjcsMTEgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2VsZWN0aW9uRGlkQ2hhbmdlKCkKICAgICBtX2ltcGwtPnNlbGVjdGlvbkRp
ZENoYW5nZSgpOwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp0b3VjaEJhck1lbnVEYXRhRGlk
Q2hhbmdlKCkKK3sKKyAgICBtX2ltcGwtPnRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKTsKK30K
Kwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6d2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUo
Y29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKGF1dG8gZ2VzdHVy
ZUNvbnRyb2xsZXIgPSBtX2ltcGwtPmdlc3R1cmVDb250cm9sbGVyKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGE5MThlYzZlNWRhNWRhMjM2
MjU0ZDU3ODI5MTZhY2VhNmQ4MWYyYjguLmQ3ZjQ2MTA1MmUwNTU3ODJkMjkyYzRkZmQ2OTY4MGYy
MDFlYzhlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC01NDA0LDYgKzU0MDQsMTQgQEAgdm9pZCBXZWJQYWdlOjpzZW5kVG91Y2hCYXJNZW51
SXRlbURhdGFSZW1vdmVkVXBkYXRlKEhUTUxNZW51SXRlbUVsZW1lbnQmIGVsZW1lbnQKIHsKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3Zl
ZChUb3VjaEJhck1lbnVJdGVtRGF0YSB7ZWxlbWVudH0pKTsKIH0KKwordm9pZCBXZWJQYWdlOjpk
aWRJbnRlcmFjdFdpdGhUb3VjaEJhck1lbnVJdGVtKGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRh
JiB0b3VjaEJhck1lbnVJdGVtRGF0YSkKK3sKKyAgICBpZiAoYXV0byogZnJhbWUgPSBtYWluRnJh
bWUoKSkgeworICAgICAgICBpZiAoYXV0byBlbGVtZW50ID0gZnJhbWUtPmRvY3VtZW50KCktPmN1
cnJlbnRNZW51RWxlbWVudCgpKQorICAgICAgICAgICAgZWxlbWVudC0+ZGlkSW50ZXJhY3RXaXRo
SXRlbSh0b3VjaEJhck1lbnVJdGVtRGF0YS50aXRsZSk7CisgICAgfQorfQogI2VuZGlmCiAKIHZv
aWQgV2ViUGFnZTo6c2VuZFBhcnRpYWxFZGl0b3JTdGF0ZUFuZFNjaGVkdWxlUG9zdExheW91dFVw
ZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
MDkwOTEyNTNjYWI3YjhiZDI4NjI0YzBlNzU4MDBiNzFjMzc0MzEwNS4uNWI0MGQ2MzVlZTZmN2I2
MjVmODRiMDlkYWU0NTM0NGI4MGQzYzBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlBsdWdpbi5oIgog
I2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIK
KyNpbmNsdWRlICJUb3VjaEJhck1lbnVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgi
CiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0
aXZpdHlTdGF0ZS5oPgpAQCAtMTA2MCw2ICsxMDYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
bmRUb3VjaEJhck1lbnVEYXRhUmVtb3ZlZFVwZGF0ZShXZWJDb3JlOjpIVE1MTWVudUVsZW1lbnQm
KTsKICAgICB2b2lkIHNlbmRUb3VjaEJhck1lbnVJdGVtRGF0YUFkZGVkVXBkYXRlKFdlYkNvcmU6
OkhUTUxNZW51SXRlbUVsZW1lbnQmKTsKICAgICB2b2lkIHNlbmRUb3VjaEJhck1lbnVJdGVtRGF0
YVJlbW92ZWRVcGRhdGUoV2ViQ29yZTo6SFRNTE1lbnVJdGVtRWxlbWVudCYpOworICAgIHZvaWQg
ZGlkSW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51SXRlbShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0
YSYpOwogI2VuZGlmCiAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGYyZjE4Y2I1OWM5ZjhkNDdj
NTcxMmZhZTE4ZTExOTU5NTRlNGRhNTYuLjM1NzM1NzczZjM1NWY0OTE0YzNkZTIwMzJkYjdjNGJi
MDQ4ZWI1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjgsNiArMjgsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNr
Z3JvdW5kKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgRGlkSW50ZXJhY3RXaXRoVG91Y2hC
YXJNZW51SXRlbShzdHJ1Y3QgV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0YSB0b3VjaEJhck1l
bnVJdGVtRGF0YSkKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2V0VG9wQ29u
dGVudEluc2V0RmVuY2VkKGZsb2F0IGNvbnRlbnRJbnNldCwgSVBDOjpBdHRhY2htZW50IGZlbmNl
UG9ydCkKICNlbmRpZgogICAgIFNldFRvcENvbnRlbnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQp
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzU4
OWJkZjdiNzc3M2FmMGVmMGQxYzJhMTZjZTUxN2VkMTEzMjlkZi4uZTQ5NGQxNTM3MDI4NmZhM2Iw
OTdhZDRmNjBhN2M0YzA4NDU3ZjQyNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTEyLTEzICBBaXNod2FyeWEg
TmlybWFsICA8YW5pcm1hbEBhcHBsZS5jb20+CisKKyAgICAgICAgW1RvdWNoIEJhciBXZWIgQVBJ
XSBBZGQgc3VwcG9ydCBmb3IgY3VzdG9tIFRvdWNoIEJhciBidXR0b25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA1MTMKKworICAgICAgICBUZXN0
cyBmb3IgdGhlIGluc2VydGlvbiBhbmQgY2xpY2tpbmcgb2YgY3VzdG9tIFRvdWNoIEJhciBidXR0
b25zCisgICAgICAgIHVzaW5nIHRoZSBXZWJLaXQgVG91Y2ggQmFyIEFQSS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL1RvdWNoQmFyQVBJVGVzdHMubW06IEFkZGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6c2V0dXBUZXN0V0tXZWJWaWV3KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCisyMDE3LTEyLTEzICBBaXNod2FyeWEgTmlybWFsICA8YW5pcm1hbEBhcHBsZS5j
b20+CisKKyAgICAgICAgW1RvdWNoIEJhciBXZWIgQVBJXSBBZGQgc3VwcG9ydCBmb3IgY3VzdG9t
IFRvdWNoIEJhciBidXR0b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODA1MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1RvdWNoQmFyQVBJ
VGVzdHMubW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0dXBUZXN0V0tXZWJW
aWV3KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3LTEyLTA2ICBEYXZp
ZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBcHAg
TWFuaWZlc3RdIEFkZCBTUEkgZm9yIGZldGNoaW5nIHRoZSBtYW5pZmVzdApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2MGJkZTJkMjdkMWM0MmJiNGJkY2YxNWRiODJiMTM2Yzk4NjQ2ZGM2Li43
OTgzMDRhNmQ4ZTEwYTE0YjdjYmRmMmM1MjlmNmQ3NmMzOGQ1YjkzIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTEwLDYgKzExMCw3IEBACiAJCTJFRkYwNkNEMUQ4QTQyOUEwMDA0QkIzMCAv
KiBpbnB1dC1maWVsZC1pbi1zY3JvbGxhYmxlLWRvY3VtZW50Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVGRjA2Q0MxRDhBNDI5MTAw
MDRCQjMwIC8qIGlucHV0LWZpZWxkLWluLXNjcm9sbGFibGUtZG9jdW1lbnQuaHRtbCAqLzsgfTsK
IAkJMkVGRjA2RDQxRDhBRURCQjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUZGMDZEMzFEOEFFREJCMDAw
NEJCMzAgLyogVGVzdFdLV2ViVmlldy5tbSAqLzsgfTsKIAkJMkVGRjA2RDcxRDhBRjM0QTAwMDRC
QjMwIC8qIFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVGRjA2RDYxRDhBRjM0QTAwMDRCQjMwIC8qIFdLV2Vi
Vmlld0NhbmRpZGF0ZVRlc3RzLm1tICovOyB9OworCQkyRkM3Q0RFMDFGREI0QzhFMDA1REZGNkQg
LyogVG91Y2hCYXJBUElUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJGQzdDRERFMUZEQjRCNTIwMDVERkY2RCAvKiBUb3VjaEJhckFQSVRlc3Rz
Lm1tICovOyB9OwogCQkzMTUxMTgxMDFEQjFBRTQwMDAxNzYzMDQgLyogRXh0ZW5kZWRDb2xvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTUxMTgw
RjFEQjFBREQ1MDAxNzYzMDQgLyogRXh0ZW5kZWRDb2xvci5jcHAgKi87IH07CiAJCTMxNTIzMUNB
MUVCM0IzQzcwMEEyMkExNiAvKiBHUFVDb21tYW5kUXVldWUubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTUyMzFDOTFFQjNCM0M3MDBBMjJBMTYgLyog
R1BVQ29tbWFuZFF1ZXVlLm1tICovOyB9OwogCQkzMTYyQUU5QzFFNkYyRkY1MDAwRTREQkMgLyog
R1BVRGV2aWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzE2MkFFOUIxRTZGMkZDRTAwMEU0REJDIC8qIEdQVURldmljZS5tbSAqLzsgfTsKQEAgLTEy
MDQsNiArMTIwNSw4IEBACiAJCTJFRkYwNkQyMUQ4QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJW
aWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RXS1dlYlZpZXcuaDsg
cGF0aCA9IGNvY29hL1Rlc3RXS1dlYlZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkVGRjA2RDMxRDhBRURCQjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0V0tXZWJWaWV3Lm1tOyBwYXRoID0g
Y29jb2EvVGVzdFdLV2ViVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVG
RjA2RDYxRDhBRjM0QTAwMDRCQjMwIC8qIFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3Q2FuZGlkYXRlVGVz
dHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJGQzdDRERFMUZEQjRCNTIwMDVE
RkY2RCAvKiBUb3VjaEJhckFQSVRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVG91Y2hCYXJBUElUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMkZDN0NEREYxRkRCNEI2QjAwNURGRjZEIC8qIHRvdWNoLWJhci1hcGktdGVzdHMuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ0b3VjaC1iYXItYXBpLXRlc3RzLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTUxMTgwRjFEQjFBREQ1MDAxNzYzMDQg
LyogRXh0ZW5kZWRDb2xvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBFeHRlbmRlZENvbG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE1MjMx
QzkxRUIzQjNDNzAwQTIyQTE2IC8qIEdQVUNvbW1hbmRRdWV1ZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbW1hbmRRdWV1ZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzE2MkFFOUIxRTZGMkZDRTAwMEU0REJDIC8qIEdQVURldmljZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVURldmljZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NDAsNiArMjg0Myw3IEBACiAJCQkJMzc5
OUFEMzkxNDEyMEE0MzAwNUVCMEM2IC8qIFN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9t
U3RyaW5nLm1tICovLAogCQkJCTkzOUJGRTM5MThFNTU0ODkwMDg4MzI3NSAvKiBTdHJpbmdUcnVu
Y2F0b3IubW0gKi8sCiAJCQkJMzdBNjg5NUQxNDhBOUI1MDAwNTEwMEZBIC8qIFN1YnJlc291cmNl
RXJyb3JDcmFzaC5tbSAqLywKKwkJCQkyRkM3Q0RERTFGREI0QjUyMDA1REZGNkQgLyogVG91Y2hC
YXJBUElUZXN0cy5tbSAqLywKIAkJCQlFNDkwMjk2NzE0RTJFM0E0MDAyQkVERDEgLyogVHlwaW5n
U3R5bGVDcmFzaC5tbSAqLywKIAkJCQk1MzY3NzAzMzFDQzgwMjI4MDBENDI1QjEgLyogV2ViU2Ny
aXB0T2JqZWN0RGVzY3JpcHRpb24ubW0gKi8sCiAJCQkJNTFGQkJCNEMxNTEzRDRFOTAwODIyNzM4
IC8qIFdlYlZpZXdDYW5QYXN0ZVVSTC5tbSAqLywKQEAgLTI4ODgsNiArMjg5Miw3IEBACiAJCQkJ
QTU3QTM0RjExNkFGNjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93
Q2hhbmdlcy5odG1sICovLAogCQkJCTUyQjhDRjk0MTU4NjhDRjAwMDI4MTA1MyAvKiBTZXREb2N1
bWVudFVSSS5odG1sICovLAogCQkJCUUxOTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9h
ZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCAqLywKKwkJCQkyRkM3Q0RERjFGREI0QjZC
MDA1REZGNkQgLyogdG91Y2gtYmFyLWFwaS10ZXN0cy5odG1sICovLAogCQkJCUM1NDBGNzgzMTUy
RTVBNzgwMEE0MEM4QyAvKiB2ZXJib3NlTWFya3VwLmh0bWwgKi8sCiAJCQkJNTM2NzcwMzUxQ0M4
MTJGOTAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLmh0bWwgKi8sCiAJCQkJ
Q0UxNEYxQTIxODE4NzNCMDAwMUMyNzA1IC8qIFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VS
TENyYXNoLmh0bWwgKi8sCkBAIC0zMTcxLDYgKzMxNzYsNyBAQAogCQkJCTFBREFEMTUwMUQ3N0E5
RjYwMDIxMjU4NiAvKiBCbG9ja1B0ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERTlDMUQw
QTU5MEMwMEZFQkNGMyAvKiBCbG9vbUZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qzgz
REVBMDFEMEE1OTBDMDBGRUJDRjMgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGMzBDQjVDMUZDRTE3OTYwMDRCNTMyMyAvKiBDb25jdXJyZW50
UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVDMzFEMEE1OTBDMDBGRUJD
RjMgLyogQ29uZGl0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUE2MUQwQTU5MEMw
MEZFQkNGMyAvKiBDb3VudGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBOTFEMEE1
OTBDMDBGRUJDRjMgLyogQ1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxOTUsNyArMzIw
MSw2IEBACiAJCQkJN0M4M0RFRjYxRDBBNTkwQzAwRkVCQ0YzIC8qIE1ldGFBbGxvY2F0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRkUxRDBBNTkwQzAwRkVCQ0YzIC8qIE5ha2VkUHRy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0Q1NEYzMUYzMzhDMzYwMEE5N0FBNyAvKiBOZXZl
ckRlc3Ryb3llZC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjMwQ0I1QzFGQ0UxNzk2MDA0QjUz
MjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RG
MDExRDBBNTkwQzAwRkVCQ0YzIC8qIE9wdGlvbmFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
NzdCQUEzMUQ5QUZGRkMwMDVGQzU2OCAvKiBPcHRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0RGMDIxRDBBNTkwQzAwRkVCQ0YzIC8qIE9TT2JqZWN0UHRyLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzUyNyw2ICszNTMyLDcgQEAKIAkJCQk5M0U2MTkzQjFGOTMxQjNBMDBBRjI0NUUg
LyogVGV4dENvZGVjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFMzUyNEY5MUIxNDQxQzQwMDI4
QTdDNSAvKiBUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdFREQxQTQxMUE5MjAwNDQ3QzRDIC8qIFRpbWVSYW5nZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMkZDN0NERTAxRkRCNEM4RTAwNURGRjZEIC8qIFRvdWNoQmFyQVBJVGVzdHMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VEMzFBNDExQTdFMDA0NDdDNEMgLyogVHlwaW5n
U3R5bGVDcmFzaC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQjQwQjRFMUY0Qjk4RDMwMDdEQzdC
OSAvKiBVSURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ2ODQ5QkUxRUVGNThFNDAw
QjkzN0ZFIC8qIFVJUGFzdGVib2FyZFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Ub3VjaEJhckFQSVRlc3RzLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvVG91Y2hCYXJBUElUZXN0cy5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yODJhMDVlNWI1MDIzNzA3YjBjYTZlYzBjNmY2ZDQxMTVlMjVjY2YyCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvVG91Y2hCYXJBUElUZXN0cy5tbQpA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
V0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQg
IlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
c3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBzZXR1cFRlc3RXS1dlYlZpZXcoKQorewor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgYXV0byBwcmVmZXJlbmNl
cyA9IChXS1ByZWZlcmVuY2VzUmVmKVtbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcmVmZXJlbmNl
c107CisgICAgV0tQcmVmZXJlbmNlc1NldE1lbnVJdGVtRWxlbWVudEVuYWJsZWQocHJlZmVyZW5j
ZXMsIHRydWUpOworICAgIHJldHVybiB3ZWJWaWV3OworfQorCitURVNUKFRvdWNoQmFyQVBJVGVz
dHMsIEluc2VydEJ1dHRvbnMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gc2V0dXBUZXN0V0tXZWJW
aWV3KCk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHk+
PG1lbnUgdHlwZT1cInRvdWNoYmFyXCI+PG1lbnVpdGVtIHR5cGU9XCJidXR0b25cIiB0aXRsZT1c
IkJ1dHRvblwiIG9uY2xpY2s9XCJidXR0b25PbkNsaWNrKClcIj48L21lbnVpdGVtPjwvbWVudT48
L2JvZHk+Il07CisgICAgTlNUb3VjaEJhciAqdG91Y2hCYXIgPSBbd2ViVmlldyBtYWtlVG91Y2hC
YXJdOworICAgIGF1dG8gaWRlbnRpZmllcnMgPSB0b3VjaEJhci5pdGVtSWRlbnRpZmllcnM7Cisg
ICAgdW5zaWduZWQgY291bnQgPSBbaWRlbnRpZmllcnMgY291bnRdOworICAgIEVYUEVDVF9FUSgo
dW5zaWduZWQpIDEsIGNvdW50KTsKK30KKworVEVTVChUb3VjaEJhckFQSVRlc3RzLCBDbGlja0J1
dHRvbnMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gc2V0dXBUZXN0V0tXZWJWaWV3KCk7CisgICAg
TlNTdHJpbmcgKmJvZHkgPSBAIjxib2R5PjxtZW51IHR5cGU9XCJ0b3VjaGJhclwiPjxtZW51aXRl
bSBpZD1cIm5vdC1jbGlja2VkXCIgdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiQnV0dG9uXCJcIj48
L21lbnVpdGVtPjwvbWVudT48L2JvZHk+IjsKKyAgICBOU1N0cmluZyAqc2NyaXB0ID0gQCI8c2Ny
aXB0PmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21lbnVpdGVtJykub25jbGljayA9IGZ1bmN0aW9u
KCkgeyB0aGlzLmlkID0gXCJjbGlja2VkXCI7IH08L3NjcmlwdD4iOworICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVA
JUAiLCBib2R5LCBzY3JpcHRdXTsKKworICAgIE5TVG91Y2hCYXIgKnRvdWNoQmFyID0gW3dlYlZp
ZXcgbWFrZVRvdWNoQmFyXTsKKyAgICBhdXRvIHRlbXBsYXRlSXRlbXMgPSB0b3VjaEJhci50ZW1w
bGF0ZUl0ZW1zOworICAgIGF1dG8gaXRlbSA9IFt0ZW1wbGF0ZUl0ZW1zIGFueU9iamVjdF07Cisg
ICAgYXV0byAqYnV0dG9uID0gaXRlbS52aWV3OworICAgIAorICAgIFsoTlNCdXR0b24gKilidXR0
b24gcGVyZm9ybUNsaWNrOihOU0J1dHRvbiAqKWJ1dHRvbl07CisKKyAgICBhdXRvIG5ld0lkID0g
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ21lbnVpdGVtJykuaWQiXTsKKyAgICBFWFBFQ1RfU1RSRVEoImNsaWNrZWQiLCBbbmV3
SWQgVVRGOFN0cmluZ10pOworfQorCit9CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329255</attachid>
            <date>2017-12-13 13:53:24 -0800</date>
            <delta_ts>2017-12-13 13:55:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180513-20171213135324.patch</filename>
            <type>text/plain</type>
            <size>37438</size>
            <attacher name="Aishwarya Nirmal">anirmal</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIzNjRhYzIyOWJjNzgx
MDYzOWYzMTFjNWFjZTYwNTJiODZjNTQ1ZS4uMTliODkyYWE4YmEyNmIxNjUwOGU3ZDc4MWZmNWFk
MTFhMmUwZWUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTEyLTEzICBBaXNo
d2FyeWEgTmlybWFsICA8YW5pcm1hbEBhcHBsZS5jb20+CisKKyAgICAgICAgW1RvdWNoIEJhciBX
ZWIgQVBJXSBBZGQgc3VwcG9ydCBmb3IgY3VzdG9tIFRvdWNoIEJhciBidXR0b25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA1MTMKKworICAgICAg
ICBBbGxvd3MgZm9yIHRoZSBtZW51IGVsZW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXN0b21p
emVkIHRvdWNoIGJhciB0bworICAgICAgICByZXNwb25kIHRvIHRvdWNoIGJhciBpbnRlcmFjdGlv
bnMgYW5kIGRpc3BhdGNoIHRoZSBhcHByb3ByaWF0ZSBldmVudC4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9Ub3VjaEJhckFQSVRlc3RzLm1tCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEN1cnJlbnRNZW51RWxlbWVudCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3VycmVu
dE1lbnVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNZW51RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVudUVsZW1lbnQ6OmRpZEludGVyYWN0V2l0aEl0ZW0pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lbnVFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVudUVsZW1lbnQuaDoKKwogMjAxNy0xMi0wNiAgRGF2aWQgUXVl
c2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQXBwIE1hbmlm
ZXN0XSBBZGQgU1BJIGZvciBmZXRjaGluZyB0aGUgbWFuaWZlc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDQ1NWQ1
NzBlMWQ5MTUzN2NkOTJkZDdiOWQ4M2I0MDc0MzY2NmU2MS4uNTAyMzA3MWQ5ZmYwYzg4Njg2MTgy
MGZlNDFiYzI4ZGU1NjZkMzI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxNy0xMi0x
MyAgQWlzaHdhcnlhIE5pcm1hbCAgPGFuaXJtYWxAYXBwbGUuY29tPgorCisgICAgICAgIFtUb3Vj
aCBCYXIgV2ViIEFQSV0gQWRkIHN1cHBvcnQgZm9yIGN1c3RvbSBUb3VjaCBCYXIgYnV0dG9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTEzCisK
KyAgICAgICAgQWRkcyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIFdlYiBhbmQgVUkgcHJvY2Vz
c2VzIHNvIHRoYXQgY3VzdG9tIGJ1dHRvbnMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSB0
b3VjaCBiYXIgYW5kIGNhbiB0cmlnZ2VyIGFjdGlvbnMgd2hlbiB0YXBwZWQuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvVG91Y2hCYXJN
ZW51RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoQmFyTWVudURhdGE6OlRvdWNoQmFy
TWVudURhdGEpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVEYXRhOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVEYXRhOjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9Ub3VjaEJhck1lbnVEYXRhLmg6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoQmFy
TWVudURhdGE6OnNldElEKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvVG91Y2hCYXJNZW51
SXRlbURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0YTo6VG91
Y2hCYXJNZW51SXRlbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0
YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VG91Y2hCYXJNZW51SXRlbURhdGE6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmg6CisgICAg
ICAgIChXZWJLaXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAg
ICAgICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uIGdldERhdGFdKToKKyAgICAg
ICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uIHNldERhdGE6XSk6CisgICAgICAg
ICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIGluaXRXaXRoV2ViVmll
d0ltcGw6XSk6CisgICAgICAgICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9s
bGVyIGRpZERlc3Ryb3lWaWV3XSk6CisgICAgICAgICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJh
ckl0ZW1Db250cm9sbGVyIHRvdWNoQmFyTWVudUl0ZW1UYXBwZWQ6XSk6CisgICAgICAgICgtW1dL
UGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHRvdWNoQmFyOm1ha2VJdGVtRm9y
SWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNv
bnRyb2xsZXIgaXRlbUZvcklkZW50aWZpZXI6XSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjp1cGRhdGVUb3VjaEJhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRV
cFBhZ2VDdXN0b21pemVkVG91Y2hCYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dXBkYXRlUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpzZWxlY3Rpb25EaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6dG91Y2hCYXJNZW51RGF0YURpZENo
YW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6dG91Y2hCYXJNZW51RGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkSW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51
SXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
dG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRJbnRlcmFjdFdpdGhU
b3VjaEJhck1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDE3LTEyLTA2ICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFkZCBTUEkgZm9yIGZldGNoaW5nIHRoZSBtYW5pZmVz
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZGJlMzRkODMyMDEzMDA1ZmU0OTgzMTA5ZTNj
MDY0MjExMWQ4MTg0MC4uZWU0M2VkNDc1YzY5ZGRhODc3MDdlZGQyNTVlZDkwYzk2ZmMzZWMxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC05MCw2ICs5MCw3IEBACiAjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWVudUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgi
CiAjaW5jbHVkZSAiSFRNTFBpY3R1cmVFbGVtZW50LmgiCkBAIC0xMDExLDYgKzEwMTIsMTEgQEAg
RXhjZXB0aW9uT3I8UmVmPE5vZGU+PiBEb2N1bWVudDo6YWRvcHROb2RlKE5vZGUmIHNvdXJjZSkK
ICAgICByZXR1cm4gUmVmPE5vZGU+IHsgc291cmNlIH07CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnNl
dEN1cnJlbnRNZW51RWxlbWVudChSZWZQdHI8SFRNTE1lbnVFbGVtZW50PiYmIGVsZW1lbnQpCit7
CisgICAgbV9jdXJyZW50TWVudUVsZW1lbnQgPSBlbGVtZW50OworfQorCiBib29sIERvY3VtZW50
OjpoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lbnRzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1l
KQogewogICAgIC8vIFRoZXNlIGNoZWNrcyBhcmUgZnJvbSBET00gQ29yZSBMZXZlbCAyLCBjcmVh
dGVFbGVtZW50TlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOTJlNmZlYWE0ODQ3MWUyZDI5NzFh
NDkyMjM5OWY1ZDA2ZGQyOWQ5NS4uMzMwYTM0NDc2NTZiM2NjZjRjNzE3NGY4OTkzYTAwODEwMDIz
OWJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBjbGFzcyBIVE1M
SUZyYW1lRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxl
bWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBIVE1MTWVudUVsZW1lbnQ7CiBj
bGFzcyBIVE1MUGljdHVyZUVsZW1lbnQ7CiBjbGFzcyBIVE1MU2NyaXB0RWxlbWVudDsKIGNsYXNz
IEhpdFRlc3RSZXF1ZXN0OwpAQCAtNDc2LDYgKzQ3Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGlz
VGltZXJUaHJvdHRsaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaW1lclRocm90dGxp
bmdFbmFibGVkOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8Tm9kZT4+
IGFkb3B0Tm9kZShOb2RlJiBzb3VyY2UpOworICAgIHZvaWQgc2V0Q3VycmVudE1lbnVFbGVtZW50
KFJlZlB0cjxIVE1MTWVudUVsZW1lbnQ+JiYpOworICAgIFJlZlB0cjxIVE1MTWVudUVsZW1lbnQ+
JiBjdXJyZW50TWVudUVsZW1lbnQoKSB7IHJldHVybiBtX2N1cnJlbnRNZW51RWxlbWVudDsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhUTUxDb2xsZWN0aW9uPiBpbWFnZXMoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8SFRNTENvbGxlY3Rpb24+IGVtYmVkcygpOwpAQCAtMTg2OCw2ICsx
ODcxLDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmUHRy
PFNXQ2xpZW50Q29ubmVjdGlvbj4gbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbjsKICNlbmRpZgor
CisgICAgUmVmUHRyPEhUTUxNZW51RWxlbWVudD4gbV9jdXJyZW50TWVudUVsZW1lbnQ7CiB9Owog
CiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVudCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwCmluZGV4IDYyMTIyOTRlMTNlZjRjODFi
ZTU2ODUyZTQzMmVmMDJiODM2YjQ2ZjQuLjRmN2U3MjUxZmU5YTU2ZGYxNmU3MTk3YmIwODE0NTA0
MmE3ZDVkNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAKQEAgLTI2
LDkgKzI2LDEyIEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRNTE1lbnVJdGVtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1Nb3VzZUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsMTAgKzQzLDI3
IEBAIGlubGluZSBIVE1MTWVudUVsZW1lbnQ6OkhUTUxNZW51RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYKICAgICBBU1NFUlQoaGFzVGFnTmFtZShtZW51VGFn
KSk7CiB9CiAKK3ZvaWQgSFRNTE1lbnVFbGVtZW50OjpkaWRJbnRlcmFjdFdpdGhJdGVtKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkubWVudUl0ZW1FbGVtZW50RW5hYmxlZCgpKQorICAgICAgICByZXR1
cm47CisgICAgSFRNTE1lbnVJdGVtRWxlbWVudCogdGFwcGVkSXRlbTsKKyAgICBmb3IgKGF1dG8m
IGl0ZW0gOiBjaGlsZHJlbk9mVHlwZTxIVE1MTWVudUl0ZW1FbGVtZW50PigqdGhpcykpIHsKKyAg
ICAgICAgaWYgKGl0ZW0uYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0aXRsZUF0dHIp
ID09IGlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHRhcHBlZEl0ZW0gPSAmaXRlbTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIFBsYXRmb3JtTW91c2VFdmVudCBw
bGF0Zm9ybUV2ZW50KEludFBvaW50IHsgfSwgSW50UG9pbnQgeyB9LCBMZWZ0QnV0dG9uLCBQbGF0
Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBX
YWxsVGltZTo6bm93KCksIDAsIFN5bnRoZXRpY0NsaWNrVHlwZTo6Tm9UYXApOworICAgIFJlZjxN
b3VzZUV2ZW50PiBtb3VzZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50LCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIHBsYXRmb3JtRXZlbnQsIDAsIDAp
OworICAgIHRhcHBlZEl0ZW0tPmRpc3BhdGNoRXZlbnQobW91c2VFdmVudCk7Cit9CisKIE5vZGU6
Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhUTUxNZW51RWxlbWVudDo6aW5zZXJ0ZWRJbnRv
QW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSB0eXBlLCBDb250YWluZXJOb2RlJiBhbmNlc3RvcikKIHsK
ICAgICBhdXRvIHJlc3VsdCA9IEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcih0eXBl
LCBhbmNlc3Rvcik7CiAgICAgaWYgKHR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCAmJiBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLm1lbnVJdGVtRWxlbWVudEVuYWJsZWQo
KSAmJiBtX2lzVG91Y2hCYXJNZW51KSB7CisgICAgICAgIGRvY3VtZW50KCkuc2V0Q3VycmVudE1l
bnVFbGVtZW50KHRoaXMpOwogICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFn
ZSgpKQogICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZGlkSW5zZXJ0TWVudUVs
ZW1lbnQoKnRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lbnVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5oCmlu
ZGV4IDFhZDkwZTM0OWUwYzFmMDE1ZWY4OGJmZmZhMWVkNzgzODU3MzAwNWUuLjk2OWYxOGU0MTg4
N2EzMjVjOWQ1ODA0YmE4YzYyN2RhMmZiMGY3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lbnVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVu
dUVsZW1lbnQuaApAQCAtMzAsNiArMzAsNyBAQCBjbGFzcyBIVE1MTWVudUVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE1lbnVF
bGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRJbnRlcmFjdFdpdGhJdGVtKGNvbnN0IFdURjo6U3Ry
aW5nJiBpZGVudGlmaWVyKTsKICAgICBib29sIGlzVG91Y2hCYXJNZW51KCkgY29uc3QgeyByZXR1
cm4gbV9pc1RvdWNoQmFyTWVudTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
b3VjaEJhck1lbnVEYXRhLmNwcAppbmRleCA3NTI0NzYzZTM1YWIxN2UyYjVkNGM1Y2JmYzIzMzA0
M2YwMDQzZDIxLi43MWI4OWQ2YzAzNmJiMWVjYmZkOTc3ZDU2MzI4NDIzNTA3ZmU0MTE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVEYXRhLmNwcApAQCAtNDAsMTAgKzQwLDYg
QEAgVG91Y2hCYXJNZW51RGF0YTo6VG91Y2hCYXJNZW51RGF0YShjb25zdCBXZWJDb3JlOjpIVE1M
TWVudUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKCFlbGVtZW50LmlzVG91Y2hCYXJNZW51KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBXZSBjYW4ndCByZWx5IG9uIHVzaW5n
IHRoZSAnaWQnIGF0dHJpYnV0ZSBvZiB0aGUgZWxlbWVudCBoZXJlIHRvIGRpc3Rpbmd1aXNoCi0g
ICAgLy8gYmV0d2VlbiBkaWZmZXJlbnQgbWVudSBpdGVtcy4gRm9yIGluc3RhbmNlLCBhIG1lbnVp
dGVtIG1heSBoYXZlIHRoZSBzYW1lICdpZCcgYXMKLSAgICAvLyBhbm90aGVyLCBvciBoYXZlIG5v
ICdpZCcgYXQgYWxsLgotICAgIG1faWQgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjppZEF0dHIpOwogICAgIG1faXNQYWdlQ3VzdG9t
aXplZCA9IHRydWU7CiB9CiAgICAgCkBAIC02MCwxMSArNTYsMTcgQEAgdm9pZCBUb3VjaEJhck1l
bnVEYXRhOjpyZW1vdmVNZW51SXRlbShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgZGF0YSkK
IHZvaWQgVG91Y2hCYXJNZW51RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKICAgICBlbmNvZGVyIDw8IG1faXRlbXM7CisgICAgZW5jb2RlciA8PCBtX2lzUGFnZUN1
c3RvbWl6ZWQ7CiB9CiAKIGJvb2wgVG91Y2hCYXJNZW51RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgVG91Y2hCYXJNZW51RGF0YSYgZGF0YSkKIHsKLSAgICByZXR1cm4gZGVjb2Rl
ci5kZWNvZGUoZGF0YS5tX2l0ZW1zKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9p
dGVtcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRh
dGEubV9pc1BhZ2VDdXN0b21pemVkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHRydWU7CiB9CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
b3VjaEJhck1lbnVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVEYXRh
LmgKaW5kZXggOGZjMjI5YmE4MGM4MWI4MDkwYzIyMTdjZmJkZWRmYjBiZjQ0ODljMy4uZjM3NGU0
YzkxYmMyMmNjNWExZGE4NzhiNmI4ZjEyYTYzNzc2NTQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RvdWNoQmFyTWVudURhdGEuaApAQCAtNTIsMTQgKzUyLDEyIEBAIHB1YmxpYzoKICAgICAKICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoSVBDOjpEZWNvZGVyJiwgVG91Y2hCYXJNZW51RGF0YSYpOwotICAgIAotICAgIHZvaWQgc2V0
SUQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSB7IG1faWQgPSBpZGVudGlmaWVyOyB9CisKICAg
ICBib29sIGlzUGFnZUN1c3RvbWl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUGFnZUN1c3RvbWl6
ZWQ7IH0KICAgICB2b2lkIHNldElzUGFnZUN1c3RvbWl6ZWQoYm9vbCBjdXN0b21pemVkKSB7IG1f
aXNQYWdlQ3VzdG9taXplZCA9IGN1c3RvbWl6ZWQ7IH0KICAgICAKIHByaXZhdGU6CiAgICAgVmVj
dG9yPFRvdWNoQmFyTWVudUl0ZW1EYXRhPiBtX2l0ZW1zOwotICAgIFN0cmluZyBtX2lkOwogICAg
IAogICAgIGJvb2wgbV9pc1BhZ2VDdXN0b21pemVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAKaW5kZXggZDAyMjZiYjlhOWVj
MWJhZTE4MzViYmRkZTEzNDhjMTI4NjZiZDEwMy4uNjNlYThkMWQyYjlmNjE3OGU4NGQwMTBhNDlm
OGIwNGUzOTJjMDI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJN
ZW51SXRlbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0
ZW1EYXRhLmNwcApAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgSXRlbVR5cGUgaXRlbVR5cGUoY29u
c3QgU3RyaW5nJikKIFRvdWNoQmFyTWVudUl0ZW1EYXRhOjpUb3VjaEJhck1lbnVJdGVtRGF0YShj
b25zdCBXZWJDb3JlOjpIVE1MTWVudUl0ZW1FbGVtZW50JiBlbGVtZW50KQogewogICAgIHR5cGUg
PSBpdGVtVHlwZShlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29y
ZTo6SFRNTE5hbWVzOjp0eXBlQXR0cikpOwotICAgIGlkZW50aWZpZXIgPSBlbGVtZW50LmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjppZEF0dHIpOwor
ICAgIHRpdGxlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNv
cmU6OkhUTUxOYW1lczo6dGl0bGVBdHRyKTsKICAgICBwcmlvcml0eSA9IGVsZW1lbnQuYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnZhbHVlQXR0ciku
dG9GbG9hdCgpOwogfQogCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgVG91Y2hCYXJNZW51SXRlbURh
dGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rlci5l
bmNvZGVFbnVtKHR5cGUpOwogICAgIAotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKKyAgICBl
bmNvZGVyIDw8IHRpdGxlOwogICAgIGVuY29kZXIgPDwgcHJpb3JpdHk7CiB9CiAKQEAgLTU5LDcg
KzU5LDcgQEAgc3RkOjpvcHRpb25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gVG91Y2hCYXJNZW51
SXRlbURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
RW51bShyZXN1bHQudHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQudGl0bGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnByaW9yaXR5KSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5oCmluZGV4IDIzOGU2MzYzNzc0ZTdi
NTNhZjg2ZTBhYzEzNzZmZjFiMjA1YzNhMGMuLmIyMzNmMTA5OGExMzQ2Zjg4ODIzZjFmOTljOThl
ZmUzMTM1ZDk2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVu
dUl0ZW1EYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURh
dGEuaApAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgVG91Y2hCYXJNZW51SXRlbURhdGEgewogICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFRvdWNoQmFyTWVudUl0ZW1EYXRhPiBkZWNvZGUoSVBDOjpE
ZWNvZGVyJik7CiAgICAgCiAgICAgSXRlbVR5cGUgdHlwZSB7IEl0ZW1UeXBlOjpCdXR0b24gfTsK
LSAgICBTdHJpbmcgaWRlbnRpZmllcjsKKyAgICBTdHJpbmcgdGl0bGU7CiAgICAgZmxvYXQgcHJp
b3JpdHkgeyAwLjAgfTsKICAgICBib29sIHZhbGlkVG91Y2hCYXJEaXNwbGF5IHsgdHJ1ZSB9Owog
fTsKQEAgLTgxLDcgKzgxLDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUb3VjaEJh
ck1lbnVJdGVtRGF0YSYgbGhzLCBjb25zdCBUb3VjaEJhck1lbnVJdGVtRGEKIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIGxocywgY29uc3QgVG91Y2hC
YXJNZW51SXRlbURhdGEmIHJocykKIHsKICAgICByZXR1cm4gbGhzLnR5cGUgPT0gcmhzLnR5cGUK
LSAgICAgICAgJiYgbGhzLmlkZW50aWZpZXIgPT0gcmhzLmlkZW50aWZpZXIKKyAgICAgICAgJiYg
bGhzLnRpdGxlID09IHJocy50aXRsZQogICAgICAgICAmJiBsaHMucHJpb3JpdHkgPT0gcmhzLnBy
aW9yaXR5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
aAppbmRleCA3ODdiYTUyNjlhM2QzMTEzMjhiZmIyNWZiOTllNzgyYWQ5MWE5YWE5Li5hMWNlMzgx
ZTkyZjFmMDBlYjdjNGU0OWZmYzExYTQ1ZDU0ZGE0YzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTYzLDYgKzYzLDcgQEAgT0JKQ19DTEFTUyBO
U0N1c3RvbVRvdWNoQmFySXRlbTsKIE9CSkNfQ0xBU1MgTlNUb3VjaEJhcjsKIE9CSkNfQ0xBU1Mg
TlNUb3VjaEJhckl0ZW07CiBPQkpDX0NMQVNTIE5TUG9wb3ZlclRvdWNoQmFySXRlbTsKK09CSkNf
Q0xBU1MgV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXI7CiBPQkpDX0NMQVNT
IFdLVGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyOwogI2VuZGlmIC8vIEhBVkUoVE9VQ0hfQkFSKQpAQCAtMjk0LDYgKzI5NSw3
IEBAIHB1YmxpYzoKICAgICBpZCB2YWxpZFJlcXVlc3RvckZvclNlbmRBbmRSZXR1cm5UeXBlcyhO
U1N0cmluZyAqc2VuZFR5cGUsIE5TU3RyaW5nICpyZXR1cm5UeXBlKTsKICAgICB2b2lkIGNlbnRl
clNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKTsKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgp
OworICAgIHZvaWQgdG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSgpOwogICAgIHZvaWQgZGlkQmVj
b21lRWRpdGFibGUoKTsKICAgICB2b2lkIHVwZGF0ZUZvbnRQYW5lbElmTmVlZGVkKCk7CiAgICAg
dm9pZCBjaGFuZ2VGb250RnJvbUZvbnRQYW5lbCgpOwpAQCAtNTQwLDggKzU0MiwxMCBAQCBwdWJs
aWM6CiBwcml2YXRlOgogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIHZvaWQgc2V0VXBUZXh0VG91
Y2hCYXIoTlNUb3VjaEJhciAqKTsKKyAgICB2b2lkIHNldFVwUGFnZUN1c3RvbWl6ZWRUb3VjaEJh
cihOU1RvdWNoQmFyICopOwogICAgIHZvaWQgdXBkYXRlVGV4dFRvdWNoQmFyKCk7CiAgICAgdm9p
ZCB1cGRhdGVNZWRpYVRvdWNoQmFyKCk7CisgICAgdm9pZCB1cGRhdGVQYWdlQ3VzdG9taXplZFRv
dWNoQmFyKCk7CiAKICAgICBib29sIHVzZU1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcoKSBjb25z
dDsKICAgICBib29sIGlzUmljaGx5RWRpdGFibGUoKSBjb25zdDsKQEAgLTU1Niw3ICs1NjAsOSBA
QCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1RvdWNoQmFyPiBtX3JpY2hUZXh0VG91Y2hCYXI7
CiAgICAgUmV0YWluUHRyPE5TVG91Y2hCYXI+IG1fcGxhaW5UZXh0VG91Y2hCYXI7CiAgICAgUmV0
YWluUHRyPE5TVG91Y2hCYXI+IG1fcGFzc3dvcmRUZXh0VG91Y2hCYXI7CisgICAgUmV0YWluUHRy
PE5TVG91Y2hCYXI+IG1fcGFnZUN1c3RvbWl6ZWRUb3VjaEJhcjsKICAgICBSZXRhaW5QdHI8V0tU
ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlcj4gbV90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlcjsK
KyAgICBSZXRhaW5QdHI8V0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXI+IG1f
cGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyOwogICAgIFJldGFpblB0cjxOU0Nh
bmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0+IG1fcmljaFRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJ
dGVtOwogICAgIFJldGFpblB0cjxOU0NhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0+IG1fcGxhaW5U
ZXh0Q2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbTsKICAgICBSZXRhaW5QdHI8TlNDYW5kaWRhdGVM
aXN0VG91Y2hCYXJJdGVtPiBtX3Bhc3N3b3JkVGV4dENhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDJl
ZjBmMWE2NTE3NTBhMTM0ZGVkMjEzYzIyZGRiZTFkZTEzN2I4NmIuLjdmYWUwOTdhNGVhM2E5YmVi
MTI4YTQ3NDk0Y2FhNzYxMWU2YjFjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCkBAIC00OSw2ICs0OSw4IEBACiAjaW1wb3J0ICJUZXh0Q2hlY2tl
ci5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2ltcG9ydCAiVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIgorI2ltcG9ydCAiVG91Y2hCYXJNZW51RGF0YS5oIgor
I2ltcG9ydCAiVG91Y2hCYXJNZW51SXRlbURhdGEuaCIKICNpbXBvcnQgIlVJR2FtZXBhZFByb3Zp
ZGVyLmgiCiAjaW1wb3J0ICJWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgiCkBAIC02MDQsNiArNjA2LDcxIEBAIHN0
YXRpYyBjb25zdCBOU1VJbnRlZ2VyIG9yZGVyZWRMaXN0U2VnbWVudCA9IDI7CiAKIEBlbmQKIAor
QGludGVyZmFjZSBXS1BhZ2VDdXN0b21pemVkVG91Y2hCYXJCdXR0b24gOiBOU0J1dHRvbiB7CitA
cHJpdmF0ZQorICAgIFRvdWNoQmFyTWVudUl0ZW1EYXRhIGRhdGE7Cit9CitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBXS1BhZ2VDdXN0b21pemVkVG91Y2hCYXJCdXR0b24KKy0gKGNvbnN0IFRvdWNo
QmFyTWVudUl0ZW1EYXRhJilnZXREYXRhCit7CisgICAgcmV0dXJuIGRhdGE7Cit9CisKKy0gKHZv
aWQpc2V0RGF0YTooY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmKW1lbnVJdGVtRGF0YQorewor
ICAgIGRhdGEgPSBtZW51SXRlbURhdGE7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBXS1BhZ2VD
dXN0b21pemVkVG91Y2hCYXJJdGVtQ29udHJvbGxlciA6IE5TVGV4dFRvdWNoQmFySXRlbUNvbnRy
b2xsZXI8TlNUb3VjaEJhckRlbGVnYXRlPiB7CitAcHJpdmF0ZQorICAgIFdlYlZpZXdJbXBsKiBf
d2ViVmlld0ltcGw7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXdJbXBsOihX
ZWJWaWV3SW1wbCopd2ViVmlld0ltcGw7CistICh2b2lkKXRvdWNoQmFyTWVudUl0ZW1UYXBwZWQ6
KFdLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckJ1dHRvbiAqKWJ1dHRvbjsKK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFdLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3SW1wbDooV2ViVmlld0ltcGwqKXdlYlZpZXdJbXBsCit7
CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBfd2ViVmlld0ltcGwgPSB3ZWJWaWV3SW1wbDsKKworICAgIHJldHVybiBzZWxmOworfQor
CistICh2b2lkKWRpZERlc3Ryb3lWaWV3Cit7CisgICAgX3dlYlZpZXdJbXBsID0gbnVsbHB0cjsK
K30KKworLSAodm9pZCl0b3VjaEJhck1lbnVJdGVtVGFwcGVkOihXS1BhZ2VDdXN0b21pemVkVG91
Y2hCYXJCdXR0b24gKilidXR0b24KK3sKKyAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5kaWRJbnRl
cmFjdFdpdGhUb3VjaEJhck1lbnVJdGVtKFtidXR0b24gZ2V0RGF0YV0pOworfQorCisjcHJhZ21h
IG1hcmsgTlNUb3VjaEJhckRlbGVnYXRlCisKKy0gKE5TVG91Y2hCYXJJdGVtICopdG91Y2hCYXI6
KE5TVG91Y2hCYXIgKil0b3VjaEJhciBtYWtlSXRlbUZvcklkZW50aWZpZXI6KE5TU3RyaW5nICop
aWRlbnRpZmllcgoreworICAgIHJldHVybiBbc2VsZiBpdGVtRm9ySWRlbnRpZmllcjppZGVudGlm
aWVyXTsKK30KKworLSAobnVsbGFibGUgTlNUb3VjaEJhckl0ZW0gKilpdGVtRm9ySWRlbnRpZmll
cjooTlNTdHJpbmcgKilpZGVudGlmaWVyCit7CisgICAgTlNDdXN0b21Ub3VjaEJhckl0ZW0gKml0
ZW0gPSBbW1tOU0N1c3RvbVRvdWNoQmFySXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlk
ZW50aWZpZXJdIGF1dG9yZWxlYXNlXTsKKyAgICBpdGVtLnZpZXcgPSBbTlNCdXR0b24gYnV0dG9u
V2l0aFRpdGxlOmlkZW50aWZpZXIgdGFyZ2V0Oml0ZW0gYWN0aW9uOkBzZWxlY3Rvcih0b3VjaEJh
ck1lbnVJdGVtVGFwcGVkOildOworICAgIHJldHVybiBpdGVtOworfQorCitAZW5kCisKIEBpbnRl
cmZhY2UgV0tUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciA6IE5TVGV4dFRvdWNoQmFySXRlbUNv
bnRyb2xsZXIgPE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbURlbGVnYXRlLCBOU1RvdWNoQmFy
RGVsZWdhdGU+IHsKIEBwcml2YXRlCiAgICAgQk9PTCBfdGV4dElzQm9sZDsKQEAgLTg5OCw2ICs5
NjUsMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlVG91Y2hCYXIoKQogICAgICAgICBbbV9t
ZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IHNldFBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOm5p
bF07CiAgICAgfQogI2VuZGlmCisgICAgZWxzZSBpZiAobV9wYWdlLT50b3VjaEJhck1lbnVEYXRh
KCkuaXNQYWdlQ3VzdG9taXplZCgpKSB7CisgICAgICAgIHVwZGF0ZVBhZ2VDdXN0b21pemVkVG91
Y2hCYXIoKTsKKyAgICAgICAgdG91Y2hCYXIgPSBtX3BhZ2VDdXN0b21pemVkVG91Y2hCYXIuZ2V0
KCk7CisgICAgfQogCiAgICAgaWYgKHRvdWNoQmFyID09IG1fY3VycmVudFRvdWNoQmFyKQogICAg
ICAgICByZXR1cm47CkBAIC0xMDI4LDYgKzEwOTksMjcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0
VXBUZXh0VG91Y2hCYXIoTlNUb3VjaEJhciAqdG91Y2hCYXIpCiAgICAgICAgIHRleHRGb3JtYXRJ
dGVtLmdyb3VwVG91Y2hCYXIuY3VzdG9taXphdGlvbklkZW50aWZpZXIgPSBAIldLVGV4dEZvcm1h
dFRvdWNoQmFyIjsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c2V0VXBQYWdlQ3VzdG9taXplZFRv
dWNoQmFyKE5TVG91Y2hCYXIgKnRvdWNoQmFyKQoreworICAgIGNvbnN0IFRvdWNoQmFyTWVudURh
dGEqIHRvdWNoQmFyTWVudURhdGEgPSAmKG1fcGFnZS0+dG91Y2hCYXJNZW51RGF0YSgpKTsKKyAg
ICBWZWN0b3I8VG91Y2hCYXJNZW51SXRlbURhdGE+IGl0ZW1zID0gdG91Y2hCYXJNZW51RGF0YS0+
aXRlbXMoKTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU2V0PE5TVG91Y2hCYXJJdGVtICo+PiB0
ZW1wbGF0ZUl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOworICAg
IFJldGFpblB0cjxOU011dGFibGVBcnJheTxOU1RvdWNoQmFySXRlbUlkZW50aWZpZXI+PiBkZWZh
dWx0SXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBm
b3IgKFRvdWNoQmFyTWVudUl0ZW1EYXRhJiBpdGVtIDogaXRlbXMpIHsKKyAgICAgICAgaWYgKGl0
ZW0udHlwZSAhPSBJdGVtVHlwZTo6QnV0dG9uKSAvLyBDdXJyZW50bHkgb25seSBidXR0b24gaXMg
c3VwcG9ydGVkLgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFJldGFpblB0cjxOU0N1
c3RvbVRvdWNoQmFySXRlbT4gdG91Y2hCYXJJdGVtID0gYWRvcHROUyhbW05TQ3VzdG9tVG91Y2hC
YXJJdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6aXRlbS50aXRsZV0pOworICAgICAgICBX
S1BhZ2VDdXN0b21pemVkVG91Y2hCYXJCdXR0b24gKmJ1dHRvbiA9IFtXS1BhZ2VDdXN0b21pemVk
VG91Y2hCYXJCdXR0b24gYnV0dG9uV2l0aFRpdGxlOml0ZW0udGl0bGUgdGFyZ2V0Om1fcGFnZUN1
c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyLmdldCgpIGFjdGlvbjpAc2VsZWN0b3IodG91
Y2hCYXJNZW51SXRlbVRhcHBlZDopXTsKKyAgICAgICAgW2J1dHRvbiBzZXREYXRhOml0ZW1dOwor
ICAgICAgICB0b3VjaEJhckl0ZW0uZ2V0KCkudmlldyA9IGJ1dHRvbjsKKyAgICAgICAgW3RlbXBs
YXRlSXRlbXMgYWRkT2JqZWN0OnRvdWNoQmFySXRlbS5nZXQoKV07CisgICAgICAgIFtkZWZhdWx0
SXRlbXMgYWRkT2JqZWN0OnRvdWNoQmFySXRlbS5nZXQoKS5pZGVudGlmaWVyXTsKKyAgICB9Cisg
ICAgW3RvdWNoQmFyIHNldERlbGVnYXRlOm1fcGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250
cm9sbGVyLmdldCgpXTsKKyAgICBbdG91Y2hCYXIgc2V0VGVtcGxhdGVJdGVtczp0ZW1wbGF0ZUl0
ZW1zLmdldCgpXTsKKyAgICBbdG91Y2hCYXIgc2V0RGVmYXVsdEl0ZW1JZGVudGlmaWVyczpkZWZh
dWx0SXRlbXMuZ2V0KCldOworfQorCiBib29sIFdlYlZpZXdJbXBsOjppc1JpY2hseUVkaXRhYmxl
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlICYmICFtX3BhZ2UtPm5lZWRzUGxhaW5UZXh0UXVpcmsoKTsKQEAgLTExNDQs
NiArMTIzNiwxNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVUZXh0VG91Y2hCYXIoKQogICAg
IH0KIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcigp
Cit7CisgICAgaWYgKCFtX3BhZ2VDdXN0b21pemVkVG91Y2hCYXJJdGVtQ29udHJvbGxlcikKKyAg
ICAgICAgbV9wYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgPSBhZG9wdE5TKFtb
V0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoV2Vi
Vmlld0ltcGw6dGhpc10pOworICAgIGlmICghbV9wYWdlQ3VzdG9taXplZFRvdWNoQmFyKSB7Cisg
ICAgICAgIG1fcGFnZUN1c3RvbWl6ZWRUb3VjaEJhciA9IGFkb3B0TlMoW1tOU1RvdWNoQmFyIGFs
bG9jXSBpbml0XSk7CisgICAgICAgIHNldFVwUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcihtX3BhZ2VD
dXN0b21pemVkVG91Y2hCYXIuZ2V0KCkpOworICAgIH0KK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6
dXBkYXRlTWVkaWFUb3VjaEJhcigpCiB7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9M
U19NQU5BR0VSKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCkBAIC0yNjE1LDYg
KzI3MTcsMTQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2VsZWN0aW9uRGlkQ2hhbmdlKCkKICAgICBb
bV92aWV3IF93ZWJfZWRpdG9yU3RhdGVEaWRDaGFuZ2VdOwogfQogCit2b2lkIFdlYlZpZXdJbXBs
Ojp0b3VjaEJhck1lbnVEYXRhRGlkQ2hhbmdlKCkKK3sKKyNpZiBIQVZFKFRPVUNIX0JBUikKKyAg
ICBtX3BhZ2VDdXN0b21pemVkVG91Y2hCYXIgPSBuaWw7CisgICAgdXBkYXRlVG91Y2hCYXIoKTsK
KyNlbmRpZgorfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpkaWRCZWNvbWVFZGl0YWJsZSgpCiB7CiAg
ICAgW21fd2luZG93VmlzaWJpbGl0eU9ic2VydmVyIHN0YXJ0T2JzZXJ2aW5nRm9udFBhbmVsXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCAyNjFiMGRiODUxNjA4Njk5OTcw
ZjRiNDRiOWVjZDMxZGJiMmE1NzQ2Li5iMjk1YzBiZWJiZGJiOWRkYjcwZWNhMDA2MzVhOGU0YjYw
YjE2NjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xODAsNiArMTgw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Um9vdExheWVyKExheWVyT3JWaWV3ICopID0gMDsKICAgICB2aXJ0dWFsIExheWVyT3JWaWV3ICph
Y2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
UmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSgpIHsgfQogI2lmIEVOQUJMRShNQUNfR0VT
VFVSRV9FVkVOVFMpCiAgICAgdmlydHVhbCB2b2lkIGdlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRC
eVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViR2VzdHVyZUV2ZW50JikgPSAwOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0OTk3NWNlODViNTViY2Nk
NzIwNDgzMmI1MTc2YTU0NjgxZWVkOTgxLi4xNjE4ZWY1NTgzMzEwNzg0MzQzMDk4YWQyNWZlNTY1
OWE4NTE1YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTcxNzEsMTYgKzcxNzEsMjQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWUKIHZvaWQgV2ViUGFn
ZVByb3h5Ojp0b3VjaEJhck1lbnVEYXRhQ2hhbmdlZChjb25zdCBUb3VjaEJhck1lbnVEYXRhJiB0
b3VjaEJhck1lbnVEYXRhKQogewogICAgIG1fdG91Y2hCYXJNZW51RGF0YSA9IHRvdWNoQmFyTWVu
dURhdGE7CisgICAgbV9wYWdlQ2xpZW50LnRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWQoY29uc3QgVG91
Y2hCYXJNZW51SXRlbURhdGEmIHRvdWNoQmFyTWVudUl0ZW1EYXRhKQogewogICAgIG1fdG91Y2hC
YXJNZW51RGF0YS5hZGRNZW51SXRlbSh0b3VjaEJhck1lbnVJdGVtRGF0YSk7CisgICAgbV9wYWdl
Q2xpZW50LnRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZChjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0
YSYgdG91Y2hCYXJNZW51SXRlbURhdGEpCiB7CiAgICAgbV90b3VjaEJhck1lbnVEYXRhLnJlbW92
ZU1lbnVJdGVtKHRvdWNoQmFyTWVudUl0ZW1EYXRhKTsKKyAgICBtX3BhZ2VDbGllbnQudG91Y2hC
YXJNZW51RGF0YURpZENoYW5nZSgpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkSW50ZXJh
Y3RXaXRoVG91Y2hCYXJNZW51SXRlbShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgdG91Y2hC
YXJNZW51SXRlbURhdGEpCit7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRJbnRlcmFjdFdpdGhUb3VjaEJhck1lbnVJdGVtKHRvdWNoQmFyTWVudUl0ZW1EYXRhKSwg
bV9wYWdlSUQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggMGQ1YzhlMWExNzdhOGI1MDQwYjEwNGQyZjI2OGMwYWU5NzllYjA5Yi4uZGQzMDQz
ZjlmNGQ2ZDhlNTM0NTE0YWFjZTM1YTE1MDkxODhiZGU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyMzMsMTAgKzEyMzMsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgZWRpdG9yU3RhdGVDaGFuZ2VkKGNvbnN0IEVkaXRvclN0YXRlJik7CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICB2b2lkIHRvdWNoQmFyTWVudURhdGFSZW1vdmVkKCk7CiAgICAgdm9pZCB0
b3VjaEJhck1lbnVEYXRhQ2hhbmdlZChjb25zdCBUb3VjaEJhck1lbnVEYXRhJik7CiAgICAgdm9p
ZCB0b3VjaEJhck1lbnVJdGVtRGF0YUFkZGVkKGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJik7
CiAgICAgdm9pZCB0b3VjaEJhck1lbnVJdGVtRGF0YVJlbW92ZWQoY29uc3QgVG91Y2hCYXJNZW51
SXRlbURhdGEmKTsKKyAgICB2b2lkIGRpZEludGVyYWN0V2l0aFRvdWNoQmFyTWVudUl0ZW0oY29u
c3QgVG91Y2hCYXJNZW51SXRlbURhdGEmKTsKICNlbmRpZgogCiAgICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50
NjRfdCB3ZWJQcm9jZXNzQ29udGV4dElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggYjMxMzk1YTRlN2RjZDg2M2JhNGRiNmVhMjM5
Nzc5ODQ3NTk3MTc1Yi4uZjk4YzJlN2Y3ZWU2YjQ3ZmZlYTczNDc5OTJkOGMyMDRjNDk1NmUzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgK
QEAgLTEwNCw2ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0
YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRl
ZENvbXBvc2l0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKSBvdmVycmlkZTsK
IAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVy
dFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGYx
NmQ5MGQ4ZGJkZDMzODQ0OTU1NTJkYzNiM2MzYjU3NDFlZWUwZjQuLjk0YzNmZjM4YTFhM2Q2MmFk
ZWUxNDhkYTQ1M2FmMTJkNzBkN2ZjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTUyNyw2ICs1MjcsMTEgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2VsZWN0aW9uRGlkQ2hhbmdlKCkKICAgICBtX2ltcGwtPnNlbGVjdGlvbkRp
ZENoYW5nZSgpOwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp0b3VjaEJhck1lbnVEYXRhRGlk
Q2hhbmdlKCkKK3sKKyAgICBtX2ltcGwtPnRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKTsKK30K
Kwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6d2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUo
Y29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKGF1dG8gZ2VzdHVy
ZUNvbnRyb2xsZXIgPSBtX2ltcGwtPmdlc3R1cmVDb250cm9sbGVyKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGE5MThlYzZlNWRhNWRhMjM2
MjU0ZDU3ODI5MTZhY2VhNmQ4MWYyYjguLmQ3ZjQ2MTA1MmUwNTU3ODJkMjkyYzRkZmQ2OTY4MGYy
MDFlYzhlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC01NDA0LDYgKzU0MDQsMTQgQEAgdm9pZCBXZWJQYWdlOjpzZW5kVG91Y2hCYXJNZW51
SXRlbURhdGFSZW1vdmVkVXBkYXRlKEhUTUxNZW51SXRlbUVsZW1lbnQmIGVsZW1lbnQKIHsKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3Zl
ZChUb3VjaEJhck1lbnVJdGVtRGF0YSB7ZWxlbWVudH0pKTsKIH0KKwordm9pZCBXZWJQYWdlOjpk
aWRJbnRlcmFjdFdpdGhUb3VjaEJhck1lbnVJdGVtKGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRh
JiB0b3VjaEJhck1lbnVJdGVtRGF0YSkKK3sKKyAgICBpZiAoYXV0byogZnJhbWUgPSBtYWluRnJh
bWUoKSkgeworICAgICAgICBpZiAoYXV0byBlbGVtZW50ID0gZnJhbWUtPmRvY3VtZW50KCktPmN1
cnJlbnRNZW51RWxlbWVudCgpKQorICAgICAgICAgICAgZWxlbWVudC0+ZGlkSW50ZXJhY3RXaXRo
SXRlbSh0b3VjaEJhck1lbnVJdGVtRGF0YS50aXRsZSk7CisgICAgfQorfQogI2VuZGlmCiAKIHZv
aWQgV2ViUGFnZTo6c2VuZFBhcnRpYWxFZGl0b3JTdGF0ZUFuZFNjaGVkdWxlUG9zdExheW91dFVw
ZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
MDkwOTEyNTNjYWI3YjhiZDI4NjI0YzBlNzU4MDBiNzFjMzc0MzEwNS4uNWI0MGQ2MzVlZTZmN2I2
MjVmODRiMDlkYWU0NTM0NGI4MGQzYzBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlBsdWdpbi5oIgog
I2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIK
KyNpbmNsdWRlICJUb3VjaEJhck1lbnVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgi
CiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0
aXZpdHlTdGF0ZS5oPgpAQCAtMTA2MCw2ICsxMDYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
bmRUb3VjaEJhck1lbnVEYXRhUmVtb3ZlZFVwZGF0ZShXZWJDb3JlOjpIVE1MTWVudUVsZW1lbnQm
KTsKICAgICB2b2lkIHNlbmRUb3VjaEJhck1lbnVJdGVtRGF0YUFkZGVkVXBkYXRlKFdlYkNvcmU6
OkhUTUxNZW51SXRlbUVsZW1lbnQmKTsKICAgICB2b2lkIHNlbmRUb3VjaEJhck1lbnVJdGVtRGF0
YVJlbW92ZWRVcGRhdGUoV2ViQ29yZTo6SFRNTE1lbnVJdGVtRWxlbWVudCYpOworICAgIHZvaWQg
ZGlkSW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51SXRlbShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0
YSYpOwogI2VuZGlmCiAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGYyZjE4Y2I1OWM5ZjhkNDdj
NTcxMmZhZTE4ZTExOTU5NTRlNGRhNTYuLjM1NzM1NzczZjM1NWY0OTE0YzNkZTIwMzJkYjdjNGJi
MDQ4ZWI1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjgsNiArMjgsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNr
Z3JvdW5kKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgRGlkSW50ZXJhY3RXaXRoVG91Y2hC
YXJNZW51SXRlbShzdHJ1Y3QgV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0YSB0b3VjaEJhck1l
bnVJdGVtRGF0YSkKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2V0VG9wQ29u
dGVudEluc2V0RmVuY2VkKGZsb2F0IGNvbnRlbnRJbnNldCwgSVBDOjpBdHRhY2htZW50IGZlbmNl
UG9ydCkKICNlbmRpZgogICAgIFNldFRvcENvbnRlbnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQp
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzU4
OWJkZjdiNzc3M2FmMGVmMGQxYzJhMTZjZTUxN2VkMTEzMjlkZi4uZTQ5NGQxNTM3MDI4NmZhM2Iw
OTdhZDRmNjBhN2M0YzA4NDU3ZjQyNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTEyLTEzICBBaXNod2FyeWEg
TmlybWFsICA8YW5pcm1hbEBhcHBsZS5jb20+CisKKyAgICAgICAgW1RvdWNoIEJhciBXZWIgQVBJ
XSBBZGQgc3VwcG9ydCBmb3IgY3VzdG9tIFRvdWNoIEJhciBidXR0b25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA1MTMKKworICAgICAgICBUZXN0
cyBmb3IgdGhlIGluc2VydGlvbiBhbmQgY2xpY2tpbmcgb2YgY3VzdG9tIFRvdWNoIEJhciBidXR0
b25zCisgICAgICAgIHVzaW5nIHRoZSBXZWJLaXQgVG91Y2ggQmFyIEFQSS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL1RvdWNoQmFyQVBJVGVzdHMubW06IEFkZGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6c2V0dXBUZXN0V0tXZWJWaWV3KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCisyMDE3LTEyLTEzICBBaXNod2FyeWEgTmlybWFsICA8YW5pcm1hbEBhcHBsZS5j
b20+CisKKyAgICAgICAgW1RvdWNoIEJhciBXZWIgQVBJXSBBZGQgc3VwcG9ydCBmb3IgY3VzdG9t
IFRvdWNoIEJhciBidXR0b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODA1MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1RvdWNoQmFyQVBJ
VGVzdHMubW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0dXBUZXN0V0tXZWJW
aWV3KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3LTEyLTA2ICBEYXZp
ZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBcHAg
TWFuaWZlc3RdIEFkZCBTUEkgZm9yIGZldGNoaW5nIHRoZSBtYW5pZmVzdApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2MGJkZTJkMjdkMWM0MmJiNGJkY2YxNWRiODJiMTM2Yzk4NjQ2ZGM2Li43
OTgzMDRhNmQ4ZTEwYTE0YjdjYmRmMmM1MjlmNmQ3NmMzOGQ1YjkzIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTEwLDYgKzExMCw3IEBACiAJCTJFRkYwNkNEMUQ4QTQyOUEwMDA0QkIzMCAv
KiBpbnB1dC1maWVsZC1pbi1zY3JvbGxhYmxlLWRvY3VtZW50Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVGRjA2Q0MxRDhBNDI5MTAw
MDRCQjMwIC8qIGlucHV0LWZpZWxkLWluLXNjcm9sbGFibGUtZG9jdW1lbnQuaHRtbCAqLzsgfTsK
IAkJMkVGRjA2RDQxRDhBRURCQjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUZGMDZEMzFEOEFFREJCMDAw
NEJCMzAgLyogVGVzdFdLV2ViVmlldy5tbSAqLzsgfTsKIAkJMkVGRjA2RDcxRDhBRjM0QTAwMDRC
QjMwIC8qIFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVGRjA2RDYxRDhBRjM0QTAwMDRCQjMwIC8qIFdLV2Vi
Vmlld0NhbmRpZGF0ZVRlc3RzLm1tICovOyB9OworCQkyRkM3Q0RFMDFGREI0QzhFMDA1REZGNkQg
LyogVG91Y2hCYXJBUElUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJGQzdDRERFMUZEQjRCNTIwMDVERkY2RCAvKiBUb3VjaEJhckFQSVRlc3Rz
Lm1tICovOyB9OwogCQkzMTUxMTgxMDFEQjFBRTQwMDAxNzYzMDQgLyogRXh0ZW5kZWRDb2xvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTUxMTgw
RjFEQjFBREQ1MDAxNzYzMDQgLyogRXh0ZW5kZWRDb2xvci5jcHAgKi87IH07CiAJCTMxNTIzMUNB
MUVCM0IzQzcwMEEyMkExNiAvKiBHUFVDb21tYW5kUXVldWUubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTUyMzFDOTFFQjNCM0M3MDBBMjJBMTYgLyog
R1BVQ29tbWFuZFF1ZXVlLm1tICovOyB9OwogCQkzMTYyQUU5QzFFNkYyRkY1MDAwRTREQkMgLyog
R1BVRGV2aWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzE2MkFFOUIxRTZGMkZDRTAwMEU0REJDIC8qIEdQVURldmljZS5tbSAqLzsgfTsKQEAgLTEy
MDQsNiArMTIwNSw4IEBACiAJCTJFRkYwNkQyMUQ4QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJW
aWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RXS1dlYlZpZXcuaDsg
cGF0aCA9IGNvY29hL1Rlc3RXS1dlYlZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkVGRjA2RDMxRDhBRURCQjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0V0tXZWJWaWV3Lm1tOyBwYXRoID0g
Y29jb2EvVGVzdFdLV2ViVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVG
RjA2RDYxRDhBRjM0QTAwMDRCQjMwIC8qIFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3Q2FuZGlkYXRlVGVz
dHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJGQzdDRERFMUZEQjRCNTIwMDVE
RkY2RCAvKiBUb3VjaEJhckFQSVRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVG91Y2hCYXJBUElUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMkZDN0NEREYxRkRCNEI2QjAwNURGRjZEIC8qIHRvdWNoLWJhci1hcGktdGVzdHMuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ0b3VjaC1iYXItYXBpLXRlc3RzLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTUxMTgwRjFEQjFBREQ1MDAxNzYzMDQg
LyogRXh0ZW5kZWRDb2xvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBFeHRlbmRlZENvbG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE1MjMx
QzkxRUIzQjNDNzAwQTIyQTE2IC8qIEdQVUNvbW1hbmRRdWV1ZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbW1hbmRRdWV1ZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzE2MkFFOUIxRTZGMkZDRTAwMEU0REJDIC8qIEdQVURldmljZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVURldmljZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NDAsNiArMjg0Myw3IEBACiAJCQkJMzc5
OUFEMzkxNDEyMEE0MzAwNUVCMEM2IC8qIFN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9t
U3RyaW5nLm1tICovLAogCQkJCTkzOUJGRTM5MThFNTU0ODkwMDg4MzI3NSAvKiBTdHJpbmdUcnVu
Y2F0b3IubW0gKi8sCiAJCQkJMzdBNjg5NUQxNDhBOUI1MDAwNTEwMEZBIC8qIFN1YnJlc291cmNl
RXJyb3JDcmFzaC5tbSAqLywKKwkJCQkyRkM3Q0RERTFGREI0QjUyMDA1REZGNkQgLyogVG91Y2hC
YXJBUElUZXN0cy5tbSAqLywKIAkJCQlFNDkwMjk2NzE0RTJFM0E0MDAyQkVERDEgLyogVHlwaW5n
U3R5bGVDcmFzaC5tbSAqLywKIAkJCQk1MzY3NzAzMzFDQzgwMjI4MDBENDI1QjEgLyogV2ViU2Ny
aXB0T2JqZWN0RGVzY3JpcHRpb24ubW0gKi8sCiAJCQkJNTFGQkJCNEMxNTEzRDRFOTAwODIyNzM4
IC8qIFdlYlZpZXdDYW5QYXN0ZVVSTC5tbSAqLywKQEAgLTI4ODgsNiArMjg5Miw3IEBACiAJCQkJ
QTU3QTM0RjExNkFGNjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93
Q2hhbmdlcy5odG1sICovLAogCQkJCTUyQjhDRjk0MTU4NjhDRjAwMDI4MTA1MyAvKiBTZXREb2N1
bWVudFVSSS5odG1sICovLAogCQkJCUUxOTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9h
ZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCAqLywKKwkJCQkyRkM3Q0RERjFGREI0QjZC
MDA1REZGNkQgLyogdG91Y2gtYmFyLWFwaS10ZXN0cy5odG1sICovLAogCQkJCUM1NDBGNzgzMTUy
RTVBNzgwMEE0MEM4QyAvKiB2ZXJib3NlTWFya3VwLmh0bWwgKi8sCiAJCQkJNTM2NzcwMzUxQ0M4
MTJGOTAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLmh0bWwgKi8sCiAJCQkJ
Q0UxNEYxQTIxODE4NzNCMDAwMUMyNzA1IC8qIFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VS
TENyYXNoLmh0bWwgKi8sCkBAIC0zMTcxLDYgKzMxNzYsNyBAQAogCQkJCTFBREFEMTUwMUQ3N0E5
RjYwMDIxMjU4NiAvKiBCbG9ja1B0ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERTlDMUQw
QTU5MEMwMEZFQkNGMyAvKiBCbG9vbUZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qzgz
REVBMDFEMEE1OTBDMDBGRUJDRjMgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGMzBDQjVDMUZDRTE3OTYwMDRCNTMyMyAvKiBDb25jdXJyZW50
UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVDMzFEMEE1OTBDMDBGRUJD
RjMgLyogQ29uZGl0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUE2MUQwQTU5MEMw
MEZFQkNGMyAvKiBDb3VudGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBOTFEMEE1
OTBDMDBGRUJDRjMgLyogQ1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxOTUsNyArMzIw
MSw2IEBACiAJCQkJN0M4M0RFRjYxRDBBNTkwQzAwRkVCQ0YzIC8qIE1ldGFBbGxvY2F0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRkUxRDBBNTkwQzAwRkVCQ0YzIC8qIE5ha2VkUHRy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0Q1NEYzMUYzMzhDMzYwMEE5N0FBNyAvKiBOZXZl
ckRlc3Ryb3llZC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjMwQ0I1QzFGQ0UxNzk2MDA0QjUz
MjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RG
MDExRDBBNTkwQzAwRkVCQ0YzIC8qIE9wdGlvbmFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
NzdCQUEzMUQ5QUZGRkMwMDVGQzU2OCAvKiBPcHRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0RGMDIxRDBBNTkwQzAwRkVCQ0YzIC8qIE9TT2JqZWN0UHRyLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzUyNyw2ICszNTMyLDcgQEAKIAkJCQk5M0U2MTkzQjFGOTMxQjNBMDBBRjI0NUUg
LyogVGV4dENvZGVjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFMzUyNEY5MUIxNDQxQzQwMDI4
QTdDNSAvKiBUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdFREQxQTQxMUE5MjAwNDQ3QzRDIC8qIFRpbWVSYW5nZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMkZDN0NERTAxRkRCNEM4RTAwNURGRjZEIC8qIFRvdWNoQmFyQVBJVGVzdHMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VEMzFBNDExQTdFMDA0NDdDNEMgLyogVHlwaW5n
U3R5bGVDcmFzaC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQjQwQjRFMUY0Qjk4RDMwMDdEQzdC
OSAvKiBVSURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ2ODQ5QkUxRUVGNThFNDAw
QjkzN0ZFIC8qIFVJUGFzdGVib2FyZFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Ub3VjaEJhckFQSVRlc3RzLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvVG91Y2hCYXJBUElUZXN0cy5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NzdhYWRiMzUyNDY4ZTUxN2I5MzczNGU4ZTU2YTI3MzI1YzExNGM4Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvVG91Y2hCYXJBUElUZXN0cy5tbQpA
QCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
V0tfQVBJX0VOQUJMRUQKKyNpZiBIQVZFKFRPVUNIX0JBUikKKworI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9X
S1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVBy
aXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBzZXR1
cFRlc3RXS1dlYlZpZXcoKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7
CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IChXS1ByZWZlcmVuY2VzUmVmKVtbd2ViVmlldyBjb25m
aWd1cmF0aW9uXSBwcmVmZXJlbmNlc107CisgICAgV0tQcmVmZXJlbmNlc1NldE1lbnVJdGVtRWxl
bWVudEVuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOworICAgIHJldHVybiB3ZWJWaWV3OworfQor
CitURVNUKFRvdWNoQmFyQVBJVGVzdHMsIEluc2VydEJ1dHRvbnMpCit7CisgICAgYXV0byB3ZWJW
aWV3ID0gc2V0dXBUZXN0V0tXZWJWaWV3KCk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOkAiPGJvZHk+PG1lbnUgdHlwZT1cInRvdWNoYmFyXCI+PG1lbnVpdGVtIHR5
cGU9XCJidXR0b25cIiB0aXRsZT1cIkJ1dHRvblwiIG9uY2xpY2s9XCJidXR0b25PbkNsaWNrKClc
Ij48L21lbnVpdGVtPjwvbWVudT48L2JvZHk+Il07CisgICAgTlNUb3VjaEJhciAqdG91Y2hCYXIg
PSBbd2ViVmlldyBtYWtlVG91Y2hCYXJdOworICAgIGF1dG8gaWRlbnRpZmllcnMgPSB0b3VjaEJh
ci5pdGVtSWRlbnRpZmllcnM7CisgICAgdW5zaWduZWQgY291bnQgPSBbaWRlbnRpZmllcnMgY291
bnRdOworICAgIEVYUEVDVF9FUSgodW5zaWduZWQpIDEsIGNvdW50KTsKK30KKworVEVTVChUb3Vj
aEJhckFQSVRlc3RzLCBDbGlja0J1dHRvbnMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gc2V0dXBU
ZXN0V0tXZWJWaWV3KCk7CisgICAgTlNTdHJpbmcgKmJvZHkgPSBAIjxib2R5PjxtZW51IHR5cGU9
XCJ0b3VjaGJhclwiPjxtZW51aXRlbSBpZD1cIm5vdC1jbGlja2VkXCIgdHlwZT1cImJ1dHRvblwi
IHRpdGxlPVwiQnV0dG9uXCJcIj48L21lbnVpdGVtPjwvbWVudT48L2JvZHk+IjsKKyAgICBOU1N0
cmluZyAqc2NyaXB0ID0gQCI8c2NyaXB0PmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21lbnVpdGVt
Jykub25jbGljayA9IGZ1bmN0aW9uKCkgeyB0aGlzLmlkID0gXCJjbGlja2VkXCI7IH08L3Njcmlw
dD4iOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIiVAJUAiLCBib2R5LCBzY3JpcHRdXTsKKworICAgIE5TVG91Y2hC
YXIgKnRvdWNoQmFyID0gW3dlYlZpZXcgbWFrZVRvdWNoQmFyXTsKKyAgICBhdXRvIHRlbXBsYXRl
SXRlbXMgPSB0b3VjaEJhci50ZW1wbGF0ZUl0ZW1zOworICAgIGF1dG8gaXRlbSA9IFt0ZW1wbGF0
ZUl0ZW1zIGFueU9iamVjdF07CisgICAgYXV0byAqYnV0dG9uID0gaXRlbS52aWV3OworICAgIAor
ICAgIFsoTlNCdXR0b24gKilidXR0b24gcGVyZm9ybUNsaWNrOihOU0J1dHRvbiAqKWJ1dHRvbl07
CisKKyAgICBhdXRvIG5ld0lkID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21lbnVpdGVtJykuaWQiXTsKKyAgICBFWFBFQ1Rf
U1RSRVEoImNsaWNrZWQiLCBbbmV3SWQgVVRGOFN0cmluZ10pOworfQorCit9CisKKyNlbmRpZiAv
LyBIQVZFKFRPVUNIX0JBUikKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329257</attachid>
            <date>2017-12-13 13:55:32 -0800</date>
            <delta_ts>2017-12-13 17:14:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180513-20171213135532.patch</filename>
            <type>text/plain</type>
            <size>37009</size>
            <attacher name="Aishwarya Nirmal">anirmal</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIzNjRhYzIyOWJjNzgx
MDYzOWYzMTFjNWFjZTYwNTJiODZjNTQ1ZS4uMTliODkyYWE4YmEyNmIxNjUwOGU3ZDc4MWZmNWFk
MTFhMmUwZWUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTEyLTEzICBBaXNo
d2FyeWEgTmlybWFsICA8YW5pcm1hbEBhcHBsZS5jb20+CisKKyAgICAgICAgW1RvdWNoIEJhciBX
ZWIgQVBJXSBBZGQgc3VwcG9ydCBmb3IgY3VzdG9tIFRvdWNoIEJhciBidXR0b25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA1MTMKKworICAgICAg
ICBBbGxvd3MgZm9yIHRoZSBtZW51IGVsZW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXN0b21p
emVkIHRvdWNoIGJhciB0bworICAgICAgICByZXNwb25kIHRvIHRvdWNoIGJhciBpbnRlcmFjdGlv
bnMgYW5kIGRpc3BhdGNoIHRoZSBhcHByb3ByaWF0ZSBldmVudC4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9Ub3VjaEJhckFQSVRlc3RzLm1tCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEN1cnJlbnRNZW51RWxlbWVudCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3VycmVu
dE1lbnVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNZW51RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVudUVsZW1lbnQ6OmRpZEludGVyYWN0V2l0aEl0ZW0pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lbnVFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVudUVsZW1lbnQuaDoKKwogMjAxNy0xMi0wNiAgRGF2aWQgUXVl
c2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQXBwIE1hbmlm
ZXN0XSBBZGQgU1BJIGZvciBmZXRjaGluZyB0aGUgbWFuaWZlc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDQ1NWQ1
NzBlMWQ5MTUzN2NkOTJkZDdiOWQ4M2I0MDc0MzY2NmU2MS4uNTAyMzA3MWQ5ZmYwYzg4Njg2MTgy
MGZlNDFiYzI4ZGU1NjZkMzI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxNy0xMi0x
MyAgQWlzaHdhcnlhIE5pcm1hbCAgPGFuaXJtYWxAYXBwbGUuY29tPgorCisgICAgICAgIFtUb3Vj
aCBCYXIgV2ViIEFQSV0gQWRkIHN1cHBvcnQgZm9yIGN1c3RvbSBUb3VjaCBCYXIgYnV0dG9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTEzCisK
KyAgICAgICAgQWRkcyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIFdlYiBhbmQgVUkgcHJvY2Vz
c2VzIHNvIHRoYXQgY3VzdG9tIGJ1dHRvbnMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSB0
b3VjaCBiYXIgYW5kIGNhbiB0cmlnZ2VyIGFjdGlvbnMgd2hlbiB0YXBwZWQuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvVG91Y2hCYXJN
ZW51RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoQmFyTWVudURhdGE6OlRvdWNoQmFy
TWVudURhdGEpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVEYXRhOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVEYXRhOjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9Ub3VjaEJhck1lbnVEYXRhLmg6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoQmFy
TWVudURhdGE6OnNldElEKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvVG91Y2hCYXJNZW51
SXRlbURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0YTo6VG91
Y2hCYXJNZW51SXRlbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0
YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VG91Y2hCYXJNZW51SXRlbURhdGE6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmg6CisgICAg
ICAgIChXZWJLaXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAg
ICAgICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uIGdldERhdGFdKToKKyAgICAg
ICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uIHNldERhdGE6XSk6CisgICAgICAg
ICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIGluaXRXaXRoV2ViVmll
d0ltcGw6XSk6CisgICAgICAgICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9s
bGVyIGRpZERlc3Ryb3lWaWV3XSk6CisgICAgICAgICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJh
ckl0ZW1Db250cm9sbGVyIHRvdWNoQmFyTWVudUl0ZW1UYXBwZWQ6XSk6CisgICAgICAgICgtW1dL
UGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHRvdWNoQmFyOm1ha2VJdGVtRm9y
SWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNv
bnRyb2xsZXIgaXRlbUZvcklkZW50aWZpZXI6XSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjp1cGRhdGVUb3VjaEJhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRV
cFBhZ2VDdXN0b21pemVkVG91Y2hCYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dXBkYXRlUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpzZWxlY3Rpb25EaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6dG91Y2hCYXJNZW51RGF0YURpZENo
YW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6dG91Y2hCYXJNZW51RGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkSW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51
SXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
dG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRJbnRlcmFjdFdpdGhU
b3VjaEJhck1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDE3LTEyLTA2ICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFkZCBTUEkgZm9yIGZldGNoaW5nIHRoZSBtYW5pZmVz
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZGJlMzRkODMyMDEzMDA1ZmU0OTgzMTA5ZTNj
MDY0MjExMWQ4MTg0MC4uZWU0M2VkNDc1YzY5ZGRhODc3MDdlZGQyNTVlZDkwYzk2ZmMzZWMxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC05MCw2ICs5MCw3IEBACiAjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWVudUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgi
CiAjaW5jbHVkZSAiSFRNTFBpY3R1cmVFbGVtZW50LmgiCkBAIC0xMDExLDYgKzEwMTIsMTEgQEAg
RXhjZXB0aW9uT3I8UmVmPE5vZGU+PiBEb2N1bWVudDo6YWRvcHROb2RlKE5vZGUmIHNvdXJjZSkK
ICAgICByZXR1cm4gUmVmPE5vZGU+IHsgc291cmNlIH07CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnNl
dEN1cnJlbnRNZW51RWxlbWVudChSZWZQdHI8SFRNTE1lbnVFbGVtZW50PiYmIGVsZW1lbnQpCit7
CisgICAgbV9jdXJyZW50TWVudUVsZW1lbnQgPSBlbGVtZW50OworfQorCiBib29sIERvY3VtZW50
OjpoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lbnRzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1l
KQogewogICAgIC8vIFRoZXNlIGNoZWNrcyBhcmUgZnJvbSBET00gQ29yZSBMZXZlbCAyLCBjcmVh
dGVFbGVtZW50TlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOTJlNmZlYWE0ODQ3MWUyZDI5NzFh
NDkyMjM5OWY1ZDA2ZGQyOWQ5NS4uMzMwYTM0NDc2NTZiM2NjZjRjNzE3NGY4OTkzYTAwODEwMDIz
OWJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBjbGFzcyBIVE1M
SUZyYW1lRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxl
bWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBIVE1MTWVudUVsZW1lbnQ7CiBj
bGFzcyBIVE1MUGljdHVyZUVsZW1lbnQ7CiBjbGFzcyBIVE1MU2NyaXB0RWxlbWVudDsKIGNsYXNz
IEhpdFRlc3RSZXF1ZXN0OwpAQCAtNDc2LDYgKzQ3Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGlz
VGltZXJUaHJvdHRsaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaW1lclRocm90dGxp
bmdFbmFibGVkOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8Tm9kZT4+
IGFkb3B0Tm9kZShOb2RlJiBzb3VyY2UpOworICAgIHZvaWQgc2V0Q3VycmVudE1lbnVFbGVtZW50
KFJlZlB0cjxIVE1MTWVudUVsZW1lbnQ+JiYpOworICAgIFJlZlB0cjxIVE1MTWVudUVsZW1lbnQ+
JiBjdXJyZW50TWVudUVsZW1lbnQoKSB7IHJldHVybiBtX2N1cnJlbnRNZW51RWxlbWVudDsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhUTUxDb2xsZWN0aW9uPiBpbWFnZXMoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8SFRNTENvbGxlY3Rpb24+IGVtYmVkcygpOwpAQCAtMTg2OCw2ICsx
ODcxLDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmUHRy
PFNXQ2xpZW50Q29ubmVjdGlvbj4gbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbjsKICNlbmRpZgor
CisgICAgUmVmUHRyPEhUTUxNZW51RWxlbWVudD4gbV9jdXJyZW50TWVudUVsZW1lbnQ7CiB9Owog
CiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVudCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwCmluZGV4IDYyMTIyOTRlMTNlZjRjODFi
ZTU2ODUyZTQzMmVmMDJiODM2YjQ2ZjQuLjRmN2U3MjUxZmU5YTU2ZGYxNmU3MTk3YmIwODE0NTA0
MmE3ZDVkNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAKQEAgLTI2
LDkgKzI2LDEyIEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRNTE1lbnVJdGVtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1Nb3VzZUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsMTAgKzQzLDI3
IEBAIGlubGluZSBIVE1MTWVudUVsZW1lbnQ6OkhUTUxNZW51RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYKICAgICBBU1NFUlQoaGFzVGFnTmFtZShtZW51VGFn
KSk7CiB9CiAKK3ZvaWQgSFRNTE1lbnVFbGVtZW50OjpkaWRJbnRlcmFjdFdpdGhJdGVtKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkubWVudUl0ZW1FbGVtZW50RW5hYmxlZCgpKQorICAgICAgICByZXR1
cm47CisgICAgSFRNTE1lbnVJdGVtRWxlbWVudCogdGFwcGVkSXRlbTsKKyAgICBmb3IgKGF1dG8m
IGl0ZW0gOiBjaGlsZHJlbk9mVHlwZTxIVE1MTWVudUl0ZW1FbGVtZW50PigqdGhpcykpIHsKKyAg
ICAgICAgaWYgKGl0ZW0uYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0aXRsZUF0dHIp
ID09IGlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHRhcHBlZEl0ZW0gPSAmaXRlbTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIFBsYXRmb3JtTW91c2VFdmVudCBw
bGF0Zm9ybUV2ZW50KEludFBvaW50IHsgfSwgSW50UG9pbnQgeyB9LCBMZWZ0QnV0dG9uLCBQbGF0
Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBX
YWxsVGltZTo6bm93KCksIDAsIFN5bnRoZXRpY0NsaWNrVHlwZTo6Tm9UYXApOworICAgIFJlZjxN
b3VzZUV2ZW50PiBtb3VzZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50LCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIHBsYXRmb3JtRXZlbnQsIDAsIDAp
OworICAgIHRhcHBlZEl0ZW0tPmRpc3BhdGNoRXZlbnQobW91c2VFdmVudCk7Cit9CisKIE5vZGU6
Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhUTUxNZW51RWxlbWVudDo6aW5zZXJ0ZWRJbnRv
QW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSB0eXBlLCBDb250YWluZXJOb2RlJiBhbmNlc3RvcikKIHsK
ICAgICBhdXRvIHJlc3VsdCA9IEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcih0eXBl
LCBhbmNlc3Rvcik7CiAgICAgaWYgKHR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCAmJiBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLm1lbnVJdGVtRWxlbWVudEVuYWJsZWQo
KSAmJiBtX2lzVG91Y2hCYXJNZW51KSB7CisgICAgICAgIGRvY3VtZW50KCkuc2V0Q3VycmVudE1l
bnVFbGVtZW50KHRoaXMpOwogICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFn
ZSgpKQogICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZGlkSW5zZXJ0TWVudUVs
ZW1lbnQoKnRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lbnVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5oCmlu
ZGV4IDFhZDkwZTM0OWUwYzFmMDE1ZWY4OGJmZmZhMWVkNzgzODU3MzAwNWUuLjk2OWYxOGU0MTg4
N2EzMjVjOWQ1ODA0YmE4YzYyN2RhMmZiMGY3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lbnVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVu
dUVsZW1lbnQuaApAQCAtMzAsNiArMzAsNyBAQCBjbGFzcyBIVE1MTWVudUVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE1lbnVF
bGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRJbnRlcmFjdFdpdGhJdGVtKGNvbnN0IFdURjo6U3Ry
aW5nJiBpZGVudGlmaWVyKTsKICAgICBib29sIGlzVG91Y2hCYXJNZW51KCkgY29uc3QgeyByZXR1
cm4gbV9pc1RvdWNoQmFyTWVudTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
b3VjaEJhck1lbnVEYXRhLmNwcAppbmRleCA3NTI0NzYzZTM1YWIxN2UyYjVkNGM1Y2JmYzIzMzA0
M2YwMDQzZDIxLi43MWI4OWQ2YzAzNmJiMWVjYmZkOTc3ZDU2MzI4NDIzNTA3ZmU0MTE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVEYXRhLmNwcApAQCAtNDAsMTAgKzQwLDYg
QEAgVG91Y2hCYXJNZW51RGF0YTo6VG91Y2hCYXJNZW51RGF0YShjb25zdCBXZWJDb3JlOjpIVE1M
TWVudUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKCFlbGVtZW50LmlzVG91Y2hCYXJNZW51KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBXZSBjYW4ndCByZWx5IG9uIHVzaW5n
IHRoZSAnaWQnIGF0dHJpYnV0ZSBvZiB0aGUgZWxlbWVudCBoZXJlIHRvIGRpc3Rpbmd1aXNoCi0g
ICAgLy8gYmV0d2VlbiBkaWZmZXJlbnQgbWVudSBpdGVtcy4gRm9yIGluc3RhbmNlLCBhIG1lbnVp
dGVtIG1heSBoYXZlIHRoZSBzYW1lICdpZCcgYXMKLSAgICAvLyBhbm90aGVyLCBvciBoYXZlIG5v
ICdpZCcgYXQgYWxsLgotICAgIG1faWQgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjppZEF0dHIpOwogICAgIG1faXNQYWdlQ3VzdG9t
aXplZCA9IHRydWU7CiB9CiAgICAgCkBAIC02MCwxMSArNTYsMTcgQEAgdm9pZCBUb3VjaEJhck1l
bnVEYXRhOjpyZW1vdmVNZW51SXRlbShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgZGF0YSkK
IHZvaWQgVG91Y2hCYXJNZW51RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKICAgICBlbmNvZGVyIDw8IG1faXRlbXM7CisgICAgZW5jb2RlciA8PCBtX2lzUGFnZUN1
c3RvbWl6ZWQ7CiB9CiAKIGJvb2wgVG91Y2hCYXJNZW51RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgVG91Y2hCYXJNZW51RGF0YSYgZGF0YSkKIHsKLSAgICByZXR1cm4gZGVjb2Rl
ci5kZWNvZGUoZGF0YS5tX2l0ZW1zKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9p
dGVtcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRh
dGEubV9pc1BhZ2VDdXN0b21pemVkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHRydWU7CiB9CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
b3VjaEJhck1lbnVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVEYXRh
LmgKaW5kZXggOGZjMjI5YmE4MGM4MWI4MDkwYzIyMTdjZmJkZWRmYjBiZjQ0ODljMy4uZjM3NGU0
YzkxYmMyMmNjNWExZGE4NzhiNmI4ZjEyYTYzNzc2NTQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RvdWNoQmFyTWVudURhdGEuaApAQCAtNTIsMTQgKzUyLDEyIEBAIHB1YmxpYzoKICAgICAKICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoSVBDOjpEZWNvZGVyJiwgVG91Y2hCYXJNZW51RGF0YSYpOwotICAgIAotICAgIHZvaWQgc2V0
SUQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSB7IG1faWQgPSBpZGVudGlmaWVyOyB9CisKICAg
ICBib29sIGlzUGFnZUN1c3RvbWl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUGFnZUN1c3RvbWl6
ZWQ7IH0KICAgICB2b2lkIHNldElzUGFnZUN1c3RvbWl6ZWQoYm9vbCBjdXN0b21pemVkKSB7IG1f
aXNQYWdlQ3VzdG9taXplZCA9IGN1c3RvbWl6ZWQ7IH0KICAgICAKIHByaXZhdGU6CiAgICAgVmVj
dG9yPFRvdWNoQmFyTWVudUl0ZW1EYXRhPiBtX2l0ZW1zOwotICAgIFN0cmluZyBtX2lkOwogICAg
IAogICAgIGJvb2wgbV9pc1BhZ2VDdXN0b21pemVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAKaW5kZXggZDAyMjZiYjlhOWVj
MWJhZTE4MzViYmRkZTEzNDhjMTI4NjZiZDEwMy4uNjNlYThkMWQyYjlmNjE3OGU4NGQwMTBhNDlm
OGIwNGUzOTJjMDI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJN
ZW51SXRlbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0
ZW1EYXRhLmNwcApAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgSXRlbVR5cGUgaXRlbVR5cGUoY29u
c3QgU3RyaW5nJikKIFRvdWNoQmFyTWVudUl0ZW1EYXRhOjpUb3VjaEJhck1lbnVJdGVtRGF0YShj
b25zdCBXZWJDb3JlOjpIVE1MTWVudUl0ZW1FbGVtZW50JiBlbGVtZW50KQogewogICAgIHR5cGUg
PSBpdGVtVHlwZShlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29y
ZTo6SFRNTE5hbWVzOjp0eXBlQXR0cikpOwotICAgIGlkZW50aWZpZXIgPSBlbGVtZW50LmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjppZEF0dHIpOwor
ICAgIHRpdGxlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNv
cmU6OkhUTUxOYW1lczo6dGl0bGVBdHRyKTsKICAgICBwcmlvcml0eSA9IGVsZW1lbnQuYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnZhbHVlQXR0ciku
dG9GbG9hdCgpOwogfQogCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgVG91Y2hCYXJNZW51SXRlbURh
dGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rlci5l
bmNvZGVFbnVtKHR5cGUpOwogICAgIAotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKKyAgICBl
bmNvZGVyIDw8IHRpdGxlOwogICAgIGVuY29kZXIgPDwgcHJpb3JpdHk7CiB9CiAKQEAgLTU5LDcg
KzU5LDcgQEAgc3RkOjpvcHRpb25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gVG91Y2hCYXJNZW51
SXRlbURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
RW51bShyZXN1bHQudHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQudGl0bGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnByaW9yaXR5KSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5oCmluZGV4IDIzOGU2MzYzNzc0ZTdi
NTNhZjg2ZTBhYzEzNzZmZjFiMjA1YzNhMGMuLmIyMzNmMTA5OGExMzQ2Zjg4ODIzZjFmOTljOThl
ZmUzMTM1ZDk2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVu
dUl0ZW1EYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURh
dGEuaApAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgVG91Y2hCYXJNZW51SXRlbURhdGEgewogICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFRvdWNoQmFyTWVudUl0ZW1EYXRhPiBkZWNvZGUoSVBDOjpE
ZWNvZGVyJik7CiAgICAgCiAgICAgSXRlbVR5cGUgdHlwZSB7IEl0ZW1UeXBlOjpCdXR0b24gfTsK
LSAgICBTdHJpbmcgaWRlbnRpZmllcjsKKyAgICBTdHJpbmcgdGl0bGU7CiAgICAgZmxvYXQgcHJp
b3JpdHkgeyAwLjAgfTsKICAgICBib29sIHZhbGlkVG91Y2hCYXJEaXNwbGF5IHsgdHJ1ZSB9Owog
fTsKQEAgLTgxLDcgKzgxLDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUb3VjaEJh
ck1lbnVJdGVtRGF0YSYgbGhzLCBjb25zdCBUb3VjaEJhck1lbnVJdGVtRGEKIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIGxocywgY29uc3QgVG91Y2hC
YXJNZW51SXRlbURhdGEmIHJocykKIHsKICAgICByZXR1cm4gbGhzLnR5cGUgPT0gcmhzLnR5cGUK
LSAgICAgICAgJiYgbGhzLmlkZW50aWZpZXIgPT0gcmhzLmlkZW50aWZpZXIKKyAgICAgICAgJiYg
bGhzLnRpdGxlID09IHJocy50aXRsZQogICAgICAgICAmJiBsaHMucHJpb3JpdHkgPT0gcmhzLnBy
aW9yaXR5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
aAppbmRleCA3ODdiYTUyNjlhM2QzMTEzMjhiZmIyNWZiOTllNzgyYWQ5MWE5YWE5Li5hMWNlMzgx
ZTkyZjFmMDBlYjdjNGU0OWZmYzExYTQ1ZDU0ZGE0YzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTYzLDYgKzYzLDcgQEAgT0JKQ19DTEFTUyBO
U0N1c3RvbVRvdWNoQmFySXRlbTsKIE9CSkNfQ0xBU1MgTlNUb3VjaEJhcjsKIE9CSkNfQ0xBU1Mg
TlNUb3VjaEJhckl0ZW07CiBPQkpDX0NMQVNTIE5TUG9wb3ZlclRvdWNoQmFySXRlbTsKK09CSkNf
Q0xBU1MgV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXI7CiBPQkpDX0NMQVNT
IFdLVGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyOwogI2VuZGlmIC8vIEhBVkUoVE9VQ0hfQkFSKQpAQCAtMjk0LDYgKzI5NSw3
IEBAIHB1YmxpYzoKICAgICBpZCB2YWxpZFJlcXVlc3RvckZvclNlbmRBbmRSZXR1cm5UeXBlcyhO
U1N0cmluZyAqc2VuZFR5cGUsIE5TU3RyaW5nICpyZXR1cm5UeXBlKTsKICAgICB2b2lkIGNlbnRl
clNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKTsKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgp
OworICAgIHZvaWQgdG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSgpOwogICAgIHZvaWQgZGlkQmVj
b21lRWRpdGFibGUoKTsKICAgICB2b2lkIHVwZGF0ZUZvbnRQYW5lbElmTmVlZGVkKCk7CiAgICAg
dm9pZCBjaGFuZ2VGb250RnJvbUZvbnRQYW5lbCgpOwpAQCAtNTQwLDggKzU0MiwxMCBAQCBwdWJs
aWM6CiBwcml2YXRlOgogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIHZvaWQgc2V0VXBUZXh0VG91
Y2hCYXIoTlNUb3VjaEJhciAqKTsKKyAgICB2b2lkIHNldFVwUGFnZUN1c3RvbWl6ZWRUb3VjaEJh
cihOU1RvdWNoQmFyICopOwogICAgIHZvaWQgdXBkYXRlVGV4dFRvdWNoQmFyKCk7CiAgICAgdm9p
ZCB1cGRhdGVNZWRpYVRvdWNoQmFyKCk7CisgICAgdm9pZCB1cGRhdGVQYWdlQ3VzdG9taXplZFRv
dWNoQmFyKCk7CiAKICAgICBib29sIHVzZU1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcoKSBjb25z
dDsKICAgICBib29sIGlzUmljaGx5RWRpdGFibGUoKSBjb25zdDsKQEAgLTU1Niw3ICs1NjAsOSBA
QCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1RvdWNoQmFyPiBtX3JpY2hUZXh0VG91Y2hCYXI7
CiAgICAgUmV0YWluUHRyPE5TVG91Y2hCYXI+IG1fcGxhaW5UZXh0VG91Y2hCYXI7CiAgICAgUmV0
YWluUHRyPE5TVG91Y2hCYXI+IG1fcGFzc3dvcmRUZXh0VG91Y2hCYXI7CisgICAgUmV0YWluUHRy
PE5TVG91Y2hCYXI+IG1fcGFnZUN1c3RvbWl6ZWRUb3VjaEJhcjsKICAgICBSZXRhaW5QdHI8V0tU
ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlcj4gbV90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlcjsK
KyAgICBSZXRhaW5QdHI8V0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXI+IG1f
cGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyOwogICAgIFJldGFpblB0cjxOU0Nh
bmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0+IG1fcmljaFRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJ
dGVtOwogICAgIFJldGFpblB0cjxOU0NhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0+IG1fcGxhaW5U
ZXh0Q2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbTsKICAgICBSZXRhaW5QdHI8TlNDYW5kaWRhdGVM
aXN0VG91Y2hCYXJJdGVtPiBtX3Bhc3N3b3JkVGV4dENhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDJl
ZjBmMWE2NTE3NTBhMTM0ZGVkMjEzYzIyZGRiZTFkZTEzN2I4NmIuLjdmYWUwOTdhNGVhM2E5YmVi
MTI4YTQ3NDk0Y2FhNzYxMWU2YjFjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCkBAIC00OSw2ICs0OSw4IEBACiAjaW1wb3J0ICJUZXh0Q2hlY2tl
ci5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2ltcG9ydCAiVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIgorI2ltcG9ydCAiVG91Y2hCYXJNZW51RGF0YS5oIgor
I2ltcG9ydCAiVG91Y2hCYXJNZW51SXRlbURhdGEuaCIKICNpbXBvcnQgIlVJR2FtZXBhZFByb3Zp
ZGVyLmgiCiAjaW1wb3J0ICJWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgiCkBAIC02MDQsNiArNjA2LDcxIEBAIHN0
YXRpYyBjb25zdCBOU1VJbnRlZ2VyIG9yZGVyZWRMaXN0U2VnbWVudCA9IDI7CiAKIEBlbmQKIAor
QGludGVyZmFjZSBXS1BhZ2VDdXN0b21pemVkVG91Y2hCYXJCdXR0b24gOiBOU0J1dHRvbiB7CitA
cHJpdmF0ZQorICAgIFRvdWNoQmFyTWVudUl0ZW1EYXRhIGRhdGE7Cit9CitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBXS1BhZ2VDdXN0b21pemVkVG91Y2hCYXJCdXR0b24KKy0gKGNvbnN0IFRvdWNo
QmFyTWVudUl0ZW1EYXRhJilnZXREYXRhCit7CisgICAgcmV0dXJuIGRhdGE7Cit9CisKKy0gKHZv
aWQpc2V0RGF0YTooY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmKW1lbnVJdGVtRGF0YQorewor
ICAgIGRhdGEgPSBtZW51SXRlbURhdGE7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBXS1BhZ2VD
dXN0b21pemVkVG91Y2hCYXJJdGVtQ29udHJvbGxlciA6IE5TVGV4dFRvdWNoQmFySXRlbUNvbnRy
b2xsZXI8TlNUb3VjaEJhckRlbGVnYXRlPiB7CitAcHJpdmF0ZQorICAgIFdlYlZpZXdJbXBsKiBf
d2ViVmlld0ltcGw7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXdJbXBsOihX
ZWJWaWV3SW1wbCopd2ViVmlld0ltcGw7CistICh2b2lkKXRvdWNoQmFyTWVudUl0ZW1UYXBwZWQ6
KFdLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckJ1dHRvbiAqKWJ1dHRvbjsKK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFdLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3SW1wbDooV2ViVmlld0ltcGwqKXdlYlZpZXdJbXBsCit7
CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBfd2ViVmlld0ltcGwgPSB3ZWJWaWV3SW1wbDsKKworICAgIHJldHVybiBzZWxmOworfQor
CistICh2b2lkKWRpZERlc3Ryb3lWaWV3Cit7CisgICAgX3dlYlZpZXdJbXBsID0gbnVsbHB0cjsK
K30KKworLSAodm9pZCl0b3VjaEJhck1lbnVJdGVtVGFwcGVkOihXS1BhZ2VDdXN0b21pemVkVG91
Y2hCYXJCdXR0b24gKilidXR0b24KK3sKKyAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5kaWRJbnRl
cmFjdFdpdGhUb3VjaEJhck1lbnVJdGVtKFtidXR0b24gZ2V0RGF0YV0pOworfQorCisjcHJhZ21h
IG1hcmsgTlNUb3VjaEJhckRlbGVnYXRlCisKKy0gKE5TVG91Y2hCYXJJdGVtICopdG91Y2hCYXI6
KE5TVG91Y2hCYXIgKil0b3VjaEJhciBtYWtlSXRlbUZvcklkZW50aWZpZXI6KE5TU3RyaW5nICop
aWRlbnRpZmllcgoreworICAgIHJldHVybiBbc2VsZiBpdGVtRm9ySWRlbnRpZmllcjppZGVudGlm
aWVyXTsKK30KKworLSAobnVsbGFibGUgTlNUb3VjaEJhckl0ZW0gKilpdGVtRm9ySWRlbnRpZmll
cjooTlNTdHJpbmcgKilpZGVudGlmaWVyCit7CisgICAgTlNDdXN0b21Ub3VjaEJhckl0ZW0gKml0
ZW0gPSBbW1tOU0N1c3RvbVRvdWNoQmFySXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlk
ZW50aWZpZXJdIGF1dG9yZWxlYXNlXTsKKyAgICBpdGVtLnZpZXcgPSBbTlNCdXR0b24gYnV0dG9u
V2l0aFRpdGxlOmlkZW50aWZpZXIgdGFyZ2V0Oml0ZW0gYWN0aW9uOkBzZWxlY3Rvcih0b3VjaEJh
ck1lbnVJdGVtVGFwcGVkOildOworICAgIHJldHVybiBpdGVtOworfQorCitAZW5kCisKIEBpbnRl
cmZhY2UgV0tUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciA6IE5TVGV4dFRvdWNoQmFySXRlbUNv
bnRyb2xsZXIgPE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbURlbGVnYXRlLCBOU1RvdWNoQmFy
RGVsZWdhdGU+IHsKIEBwcml2YXRlCiAgICAgQk9PTCBfdGV4dElzQm9sZDsKQEAgLTg5OCw2ICs5
NjUsMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlVG91Y2hCYXIoKQogICAgICAgICBbbV9t
ZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IHNldFBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOm5p
bF07CiAgICAgfQogI2VuZGlmCisgICAgZWxzZSBpZiAobV9wYWdlLT50b3VjaEJhck1lbnVEYXRh
KCkuaXNQYWdlQ3VzdG9taXplZCgpKSB7CisgICAgICAgIHVwZGF0ZVBhZ2VDdXN0b21pemVkVG91
Y2hCYXIoKTsKKyAgICAgICAgdG91Y2hCYXIgPSBtX3BhZ2VDdXN0b21pemVkVG91Y2hCYXIuZ2V0
KCk7CisgICAgfQogCiAgICAgaWYgKHRvdWNoQmFyID09IG1fY3VycmVudFRvdWNoQmFyKQogICAg
ICAgICByZXR1cm47CkBAIC0xMDI4LDYgKzEwOTksMjcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0
VXBUZXh0VG91Y2hCYXIoTlNUb3VjaEJhciAqdG91Y2hCYXIpCiAgICAgICAgIHRleHRGb3JtYXRJ
dGVtLmdyb3VwVG91Y2hCYXIuY3VzdG9taXphdGlvbklkZW50aWZpZXIgPSBAIldLVGV4dEZvcm1h
dFRvdWNoQmFyIjsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c2V0VXBQYWdlQ3VzdG9taXplZFRv
dWNoQmFyKE5TVG91Y2hCYXIgKnRvdWNoQmFyKQoreworICAgIGNvbnN0IFRvdWNoQmFyTWVudURh
dGEqIHRvdWNoQmFyTWVudURhdGEgPSAmKG1fcGFnZS0+dG91Y2hCYXJNZW51RGF0YSgpKTsKKyAg
ICBWZWN0b3I8VG91Y2hCYXJNZW51SXRlbURhdGE+IGl0ZW1zID0gdG91Y2hCYXJNZW51RGF0YS0+
aXRlbXMoKTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU2V0PE5TVG91Y2hCYXJJdGVtICo+PiB0
ZW1wbGF0ZUl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOworICAg
IFJldGFpblB0cjxOU011dGFibGVBcnJheTxOU1RvdWNoQmFySXRlbUlkZW50aWZpZXI+PiBkZWZh
dWx0SXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBm
b3IgKFRvdWNoQmFyTWVudUl0ZW1EYXRhJiBpdGVtIDogaXRlbXMpIHsKKyAgICAgICAgaWYgKGl0
ZW0udHlwZSAhPSBJdGVtVHlwZTo6QnV0dG9uKSAvLyBDdXJyZW50bHkgb25seSBidXR0b24gaXMg
c3VwcG9ydGVkLgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFJldGFpblB0cjxOU0N1
c3RvbVRvdWNoQmFySXRlbT4gdG91Y2hCYXJJdGVtID0gYWRvcHROUyhbW05TQ3VzdG9tVG91Y2hC
YXJJdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6aXRlbS50aXRsZV0pOworICAgICAgICBX
S1BhZ2VDdXN0b21pemVkVG91Y2hCYXJCdXR0b24gKmJ1dHRvbiA9IFtXS1BhZ2VDdXN0b21pemVk
VG91Y2hCYXJCdXR0b24gYnV0dG9uV2l0aFRpdGxlOml0ZW0udGl0bGUgdGFyZ2V0Om1fcGFnZUN1
c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyLmdldCgpIGFjdGlvbjpAc2VsZWN0b3IodG91
Y2hCYXJNZW51SXRlbVRhcHBlZDopXTsKKyAgICAgICAgW2J1dHRvbiBzZXREYXRhOml0ZW1dOwor
ICAgICAgICB0b3VjaEJhckl0ZW0uZ2V0KCkudmlldyA9IGJ1dHRvbjsKKyAgICAgICAgW3RlbXBs
YXRlSXRlbXMgYWRkT2JqZWN0OnRvdWNoQmFySXRlbS5nZXQoKV07CisgICAgICAgIFtkZWZhdWx0
SXRlbXMgYWRkT2JqZWN0OnRvdWNoQmFySXRlbS5nZXQoKS5pZGVudGlmaWVyXTsKKyAgICB9Cisg
ICAgW3RvdWNoQmFyIHNldERlbGVnYXRlOm1fcGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250
cm9sbGVyLmdldCgpXTsKKyAgICBbdG91Y2hCYXIgc2V0VGVtcGxhdGVJdGVtczp0ZW1wbGF0ZUl0
ZW1zLmdldCgpXTsKKyAgICBbdG91Y2hCYXIgc2V0RGVmYXVsdEl0ZW1JZGVudGlmaWVyczpkZWZh
dWx0SXRlbXMuZ2V0KCldOworfQorCiBib29sIFdlYlZpZXdJbXBsOjppc1JpY2hseUVkaXRhYmxl
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlICYmICFtX3BhZ2UtPm5lZWRzUGxhaW5UZXh0UXVpcmsoKTsKQEAgLTExNDQs
NiArMTIzNiwxNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVUZXh0VG91Y2hCYXIoKQogICAg
IH0KIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcigp
Cit7CisgICAgaWYgKCFtX3BhZ2VDdXN0b21pemVkVG91Y2hCYXJJdGVtQ29udHJvbGxlcikKKyAg
ICAgICAgbV9wYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgPSBhZG9wdE5TKFtb
V0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoV2Vi
Vmlld0ltcGw6dGhpc10pOworICAgIGlmICghbV9wYWdlQ3VzdG9taXplZFRvdWNoQmFyKSB7Cisg
ICAgICAgIG1fcGFnZUN1c3RvbWl6ZWRUb3VjaEJhciA9IGFkb3B0TlMoW1tOU1RvdWNoQmFyIGFs
bG9jXSBpbml0XSk7CisgICAgICAgIHNldFVwUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcihtX3BhZ2VD
dXN0b21pemVkVG91Y2hCYXIuZ2V0KCkpOworICAgIH0KK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6
dXBkYXRlTWVkaWFUb3VjaEJhcigpCiB7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9M
U19NQU5BR0VSKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCkBAIC0yNjE1LDYg
KzI3MTcsMTQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2VsZWN0aW9uRGlkQ2hhbmdlKCkKICAgICBb
bV92aWV3IF93ZWJfZWRpdG9yU3RhdGVEaWRDaGFuZ2VdOwogfQogCit2b2lkIFdlYlZpZXdJbXBs
Ojp0b3VjaEJhck1lbnVEYXRhRGlkQ2hhbmdlKCkKK3sKKyNpZiBIQVZFKFRPVUNIX0JBUikKKyAg
ICBtX3BhZ2VDdXN0b21pemVkVG91Y2hCYXIgPSBuaWw7CisgICAgdXBkYXRlVG91Y2hCYXIoKTsK
KyNlbmRpZgorfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpkaWRCZWNvbWVFZGl0YWJsZSgpCiB7CiAg
ICAgW21fd2luZG93VmlzaWJpbGl0eU9ic2VydmVyIHN0YXJ0T2JzZXJ2aW5nRm9udFBhbmVsXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCAyNjFiMGRiODUxNjA4Njk5OTcw
ZjRiNDRiOWVjZDMxZGJiMmE1NzQ2Li5iMjk1YzBiZWJiZGJiOWRkYjcwZWNhMDA2MzVhOGU0YjYw
YjE2NjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xODAsNiArMTgw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Um9vdExheWVyKExheWVyT3JWaWV3ICopID0gMDsKICAgICB2aXJ0dWFsIExheWVyT3JWaWV3ICph
Y2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
UmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSgpIHsgfQogI2lmIEVOQUJMRShNQUNfR0VT
VFVSRV9FVkVOVFMpCiAgICAgdmlydHVhbCB2b2lkIGdlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRC
eVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViR2VzdHVyZUV2ZW50JikgPSAwOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0OTk3NWNlODViNTViY2Nk
NzIwNDgzMmI1MTc2YTU0NjgxZWVkOTgxLi4xNjE4ZWY1NTgzMzEwNzg0MzQzMDk4YWQyNWZlNTY1
OWE4NTE1YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTcxNzEsMTYgKzcxNzEsMjQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWUKIHZvaWQgV2ViUGFn
ZVByb3h5Ojp0b3VjaEJhck1lbnVEYXRhQ2hhbmdlZChjb25zdCBUb3VjaEJhck1lbnVEYXRhJiB0
b3VjaEJhck1lbnVEYXRhKQogewogICAgIG1fdG91Y2hCYXJNZW51RGF0YSA9IHRvdWNoQmFyTWVu
dURhdGE7CisgICAgbV9wYWdlQ2xpZW50LnRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWQoY29uc3QgVG91
Y2hCYXJNZW51SXRlbURhdGEmIHRvdWNoQmFyTWVudUl0ZW1EYXRhKQogewogICAgIG1fdG91Y2hC
YXJNZW51RGF0YS5hZGRNZW51SXRlbSh0b3VjaEJhck1lbnVJdGVtRGF0YSk7CisgICAgbV9wYWdl
Q2xpZW50LnRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZChjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0
YSYgdG91Y2hCYXJNZW51SXRlbURhdGEpCiB7CiAgICAgbV90b3VjaEJhck1lbnVEYXRhLnJlbW92
ZU1lbnVJdGVtKHRvdWNoQmFyTWVudUl0ZW1EYXRhKTsKKyAgICBtX3BhZ2VDbGllbnQudG91Y2hC
YXJNZW51RGF0YURpZENoYW5nZSgpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkSW50ZXJh
Y3RXaXRoVG91Y2hCYXJNZW51SXRlbShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgdG91Y2hC
YXJNZW51SXRlbURhdGEpCit7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRJbnRlcmFjdFdpdGhUb3VjaEJhck1lbnVJdGVtKHRvdWNoQmFyTWVudUl0ZW1EYXRhKSwg
bV9wYWdlSUQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggMGQ1YzhlMWExNzdhOGI1MDQwYjEwNGQyZjI2OGMwYWU5NzllYjA5Yi4uZGQzMDQz
ZjlmNGQ2ZDhlNTM0NTE0YWFjZTM1YTE1MDkxODhiZGU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyMzMsMTAgKzEyMzMsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgZWRpdG9yU3RhdGVDaGFuZ2VkKGNvbnN0IEVkaXRvclN0YXRlJik7CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICB2b2lkIHRvdWNoQmFyTWVudURhdGFSZW1vdmVkKCk7CiAgICAgdm9pZCB0
b3VjaEJhck1lbnVEYXRhQ2hhbmdlZChjb25zdCBUb3VjaEJhck1lbnVEYXRhJik7CiAgICAgdm9p
ZCB0b3VjaEJhck1lbnVJdGVtRGF0YUFkZGVkKGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJik7
CiAgICAgdm9pZCB0b3VjaEJhck1lbnVJdGVtRGF0YVJlbW92ZWQoY29uc3QgVG91Y2hCYXJNZW51
SXRlbURhdGEmKTsKKyAgICB2b2lkIGRpZEludGVyYWN0V2l0aFRvdWNoQmFyTWVudUl0ZW0oY29u
c3QgVG91Y2hCYXJNZW51SXRlbURhdGEmKTsKICNlbmRpZgogCiAgICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50
NjRfdCB3ZWJQcm9jZXNzQ29udGV4dElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggYjMxMzk1YTRlN2RjZDg2M2JhNGRiNmVhMjM5
Nzc5ODQ3NTk3MTc1Yi4uZjk4YzJlN2Y3ZWU2YjQ3ZmZlYTczNDc5OTJkOGMyMDRjNDk1NmUzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgK
QEAgLTEwNCw2ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0
YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRl
ZENvbXBvc2l0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKSBvdmVycmlkZTsK
IAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVy
dFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGYx
NmQ5MGQ4ZGJkZDMzODQ0OTU1NTJkYzNiM2MzYjU3NDFlZWUwZjQuLjk0YzNmZjM4YTFhM2Q2MmFk
ZWUxNDhkYTQ1M2FmMTJkNzBkN2ZjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTUyNyw2ICs1MjcsMTEgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2VsZWN0aW9uRGlkQ2hhbmdlKCkKICAgICBtX2ltcGwtPnNlbGVjdGlvbkRp
ZENoYW5nZSgpOwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp0b3VjaEJhck1lbnVEYXRhRGlk
Q2hhbmdlKCkKK3sKKyAgICBtX2ltcGwtPnRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKTsKK30K
Kwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6d2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUo
Y29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKGF1dG8gZ2VzdHVy
ZUNvbnRyb2xsZXIgPSBtX2ltcGwtPmdlc3R1cmVDb250cm9sbGVyKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGE5MThlYzZlNWRhNWRhMjM2
MjU0ZDU3ODI5MTZhY2VhNmQ4MWYyYjguLmQ3ZjQ2MTA1MmUwNTU3ODJkMjkyYzRkZmQ2OTY4MGYy
MDFlYzhlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC01NDA0LDYgKzU0MDQsMTQgQEAgdm9pZCBXZWJQYWdlOjpzZW5kVG91Y2hCYXJNZW51
SXRlbURhdGFSZW1vdmVkVXBkYXRlKEhUTUxNZW51SXRlbUVsZW1lbnQmIGVsZW1lbnQKIHsKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3Zl
ZChUb3VjaEJhck1lbnVJdGVtRGF0YSB7ZWxlbWVudH0pKTsKIH0KKwordm9pZCBXZWJQYWdlOjpk
aWRJbnRlcmFjdFdpdGhUb3VjaEJhck1lbnVJdGVtKGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRh
JiB0b3VjaEJhck1lbnVJdGVtRGF0YSkKK3sKKyAgICBpZiAoYXV0byogZnJhbWUgPSBtYWluRnJh
bWUoKSkgeworICAgICAgICBpZiAoYXV0byBlbGVtZW50ID0gZnJhbWUtPmRvY3VtZW50KCktPmN1
cnJlbnRNZW51RWxlbWVudCgpKQorICAgICAgICAgICAgZWxlbWVudC0+ZGlkSW50ZXJhY3RXaXRo
SXRlbSh0b3VjaEJhck1lbnVJdGVtRGF0YS50aXRsZSk7CisgICAgfQorfQogI2VuZGlmCiAKIHZv
aWQgV2ViUGFnZTo6c2VuZFBhcnRpYWxFZGl0b3JTdGF0ZUFuZFNjaGVkdWxlUG9zdExheW91dFVw
ZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
MDkwOTEyNTNjYWI3YjhiZDI4NjI0YzBlNzU4MDBiNzFjMzc0MzEwNS4uNWI0MGQ2MzVlZTZmN2I2
MjVmODRiMDlkYWU0NTM0NGI4MGQzYzBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlBsdWdpbi5oIgog
I2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIK
KyNpbmNsdWRlICJUb3VjaEJhck1lbnVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgi
CiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0
aXZpdHlTdGF0ZS5oPgpAQCAtMTA2MCw2ICsxMDYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
bmRUb3VjaEJhck1lbnVEYXRhUmVtb3ZlZFVwZGF0ZShXZWJDb3JlOjpIVE1MTWVudUVsZW1lbnQm
KTsKICAgICB2b2lkIHNlbmRUb3VjaEJhck1lbnVJdGVtRGF0YUFkZGVkVXBkYXRlKFdlYkNvcmU6
OkhUTUxNZW51SXRlbUVsZW1lbnQmKTsKICAgICB2b2lkIHNlbmRUb3VjaEJhck1lbnVJdGVtRGF0
YVJlbW92ZWRVcGRhdGUoV2ViQ29yZTo6SFRNTE1lbnVJdGVtRWxlbWVudCYpOworICAgIHZvaWQg
ZGlkSW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51SXRlbShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0
YSYpOwogI2VuZGlmCiAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGYyZjE4Y2I1OWM5ZjhkNDdj
NTcxMmZhZTE4ZTExOTU5NTRlNGRhNTYuLjM1NzM1NzczZjM1NWY0OTE0YzNkZTIwMzJkYjdjNGJi
MDQ4ZWI1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjgsNiArMjgsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNr
Z3JvdW5kKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgRGlkSW50ZXJhY3RXaXRoVG91Y2hC
YXJNZW51SXRlbShzdHJ1Y3QgV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0YSB0b3VjaEJhck1l
bnVJdGVtRGF0YSkKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2V0VG9wQ29u
dGVudEluc2V0RmVuY2VkKGZsb2F0IGNvbnRlbnRJbnNldCwgSVBDOjpBdHRhY2htZW50IGZlbmNl
UG9ydCkKICNlbmRpZgogICAgIFNldFRvcENvbnRlbnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQp
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzU4
OWJkZjdiNzc3M2FmMGVmMGQxYzJhMTZjZTUxN2VkMTEzMjlkZi4uNzYzYzQ0MjZkOGRlYTAwMjZk
NDgxMmNkZTY1OWVkMWE0ODJjNzllNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTEyLTEzICBBaXNod2FyeWEg
TmlybWFsICA8YW5pcm1hbEBhcHBsZS5jb20+CisKKyAgICAgICAgW1RvdWNoIEJhciBXZWIgQVBJ
XSBBZGQgc3VwcG9ydCBmb3IgY3VzdG9tIFRvdWNoIEJhciBidXR0b25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA1MTMKKworICAgICAgICBUZXN0
cyBmb3IgdGhlIGluc2VydGlvbiBhbmQgY2xpY2tpbmcgb2YgY3VzdG9tIFRvdWNoIEJhciBidXR0
b25zCisgICAgICAgIHVzaW5nIHRoZSBXZWJLaXQgVG91Y2ggQmFyIEFQSS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL1RvdWNoQmFyQVBJVGVzdHMubW06IEFkZGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6c2V0dXBUZXN0V0tXZWJWaWV3KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCiAyMDE3LTEyLTA2ICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFkZCBTUEkgZm9yIGZldGNoaW5n
IHRoZSBtYW5pZmVzdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MGJkZTJkMjdkMWM0MmJi
NGJkY2YxNWRiODJiMTM2Yzk4NjQ2ZGM2Li43OTgzMDRhNmQ4ZTEwYTE0YjdjYmRmMmM1MjlmNmQ3
NmMzOGQ1YjkzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEwLDYgKzExMCw3IEBACiAJ
CTJFRkYwNkNEMUQ4QTQyOUEwMDA0QkIzMCAvKiBpbnB1dC1maWVsZC1pbi1zY3JvbGxhYmxlLWRv
Y3VtZW50Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkVGRjA2Q0MxRDhBNDI5MTAwMDRCQjMwIC8qIGlucHV0LWZpZWxkLWluLXNjcm9s
bGFibGUtZG9jdW1lbnQuaHRtbCAqLzsgfTsKIAkJMkVGRjA2RDQxRDhBRURCQjAwMDRCQjMwIC8q
IFRlc3RXS1dlYlZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRUZGMDZEMzFEOEFFREJCMDAwNEJCMzAgLyogVGVzdFdLV2ViVmlldy5tbSAqLzsg
fTsKIAkJMkVGRjA2RDcxRDhBRjM0QTAwMDRCQjMwIC8qIFdLV2ViVmlld0NhbmRpZGF0ZVRlc3Rz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVGRjA2
RDYxRDhBRjM0QTAwMDRCQjMwIC8qIFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLm1tICovOyB9Owor
CQkyRkM3Q0RFMDFGREI0QzhFMDA1REZGNkQgLyogVG91Y2hCYXJBUElUZXN0cy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJGQzdDRERFMUZEQjRCNTIw
MDVERkY2RCAvKiBUb3VjaEJhckFQSVRlc3RzLm1tICovOyB9OwogCQkzMTUxMTgxMDFEQjFBRTQw
MDAxNzYzMDQgLyogRXh0ZW5kZWRDb2xvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTUxMTgwRjFEQjFBREQ1MDAxNzYzMDQgLyogRXh0ZW5kZWRD
b2xvci5jcHAgKi87IH07CiAJCTMxNTIzMUNBMUVCM0IzQzcwMEEyMkExNiAvKiBHUFVDb21tYW5k
UXVldWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTUyMzFDOTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVQ29tbWFuZFF1ZXVlLm1tICovOyB9OwogCQkz
MTYyQUU5QzFFNkYyRkY1MDAwRTREQkMgLyogR1BVRGV2aWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2MkFFOUIxRTZGMkZDRTAwMEU0REJDIC8q
IEdQVURldmljZS5tbSAqLzsgfTsKQEAgLTEyMDQsNiArMTIwNSw4IEBACiAJCTJFRkYwNkQyMUQ4
QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFRlc3RXS1dlYlZpZXcuaDsgcGF0aCA9IGNvY29hL1Rlc3RXS1dlYlZpZXcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVGRjA2RDMxRDhBRURCQjAwMDRCQjMwIC8q
IFRlc3RXS1dlYlZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBUZXN0V0tXZWJWaWV3Lm1tOyBwYXRoID0gY29jb2EvVGVzdFdLV2ViVmlldy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVGRjA2RDYxRDhBRjM0QTAwMDRCQjMwIC8qIFdLV2Vi
Vmlld0NhbmRpZGF0ZVRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTJGQzdDRERFMUZEQjRCNTIwMDVERkY2RCAvKiBUb3VjaEJhckFQSVRlc3RzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVG91Y2hCYXJBUElUZXN0cy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkZDN0NEREYxRkRCNEI2QjAwNURGRjZE
IC8qIHRvdWNoLWJhci1hcGktdGVzdHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJ0b3VjaC1iYXItYXBpLXRlc3RzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTUxMTgwRjFEQjFBREQ1MDAxNzYzMDQgLyogRXh0ZW5kZWRDb2xvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbmRlZENvbG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE1MjMxQzkxRUIzQjNDNzAwQTIyQTE2IC8qIEdQVUNvbW1h
bmRRdWV1ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNv
bW1hbmRRdWV1ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2MkFFOUIxRTZG
MkZDRTAwMEU0REJDIC8qIEdQVURldmljZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVURldmljZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI4NDAsNiArMjg0Myw3IEBACiAJCQkJMzc5OUFEMzkxNDEyMEE0MzAwNUVCMEM2IC8qIFN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nLm1tICovLAogCQkJCTkzOUJGRTM5MThF
NTU0ODkwMDg4MzI3NSAvKiBTdHJpbmdUcnVuY2F0b3IubW0gKi8sCiAJCQkJMzdBNjg5NUQxNDhB
OUI1MDAwNTEwMEZBIC8qIFN1YnJlc291cmNlRXJyb3JDcmFzaC5tbSAqLywKKwkJCQkyRkM3Q0RE
RTFGREI0QjUyMDA1REZGNkQgLyogVG91Y2hCYXJBUElUZXN0cy5tbSAqLywKIAkJCQlFNDkwMjk2
NzE0RTJFM0E0MDAyQkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSAqLywKIAkJCQk1MzY3NzAz
MzFDQzgwMjI4MDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24ubW0gKi8sCiAJ
CQkJNTFGQkJCNEMxNTEzRDRFOTAwODIyNzM4IC8qIFdlYlZpZXdDYW5QYXN0ZVVSTC5tbSAqLywK
QEAgLTI4ODgsNiArMjg5Miw3IEBACiAJCQkJQTU3QTM0RjExNkFGNjlFMjAwQzI1MDFGIC8qIFBh
Z2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sICovLAogCQkJCTUyQjhDRjk0
MTU4NjhDRjAwMDI4MTA1MyAvKiBTZXREb2N1bWVudFVSSS5odG1sICovLAogCQkJCUUxOTRFMUJD
MTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRt
bCAqLywKKwkJCQkyRkM3Q0RERjFGREI0QjZCMDA1REZGNkQgLyogdG91Y2gtYmFyLWFwaS10ZXN0
cy5odG1sICovLAogCQkJCUM1NDBGNzgzMTUyRTVBNzgwMEE0MEM4QyAvKiB2ZXJib3NlTWFya3Vw
Lmh0bWwgKi8sCiAJCQkJNTM2NzcwMzUxQ0M4MTJGOTAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVj
dERlc2NyaXB0aW9uLmh0bWwgKi8sCiAJCQkJQ0UxNEYxQTIxODE4NzNCMDAwMUMyNzA1IC8qIFdp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTENyYXNoLmh0bWwgKi8sCkBAIC0zMTcxLDYgKzMx
NzYsNyBAQAogCQkJCTFBREFEMTUwMUQ3N0E5RjYwMDIxMjU4NiAvKiBCbG9ja1B0ci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERTlDMUQwQTU5MEMwMEZFQkNGMyAvKiBCbG9vbUZpbHRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBMDFEMEE1OTBDMDBGRUJDRjMgLyogQ2hlY2tl
ZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMzBDQjVDMUZD
RTE3OTYwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzgzREVDMzFEMEE1OTBDMDBGRUJDRjMgLyogQ29uZGl0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNERUE2MUQwQTU5MEMwMEZFQkNGMyAvKiBDb3VudGVycy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzREVBOTFEMEE1OTBDMDBGRUJDRjMgLyogQ1N0cmluZy5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTMxOTUsNyArMzIwMSw2IEBACiAJCQkJN0M4M0RFRjYxRDBBNTkwQzAw
RkVCQ0YzIC8qIE1ldGFBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRkUx
RDBBNTkwQzAwRkVCQ0YzIC8qIE5ha2VkUHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0Q1
NEYzMUYzMzhDMzYwMEE5N0FBNyAvKiBOZXZlckRlc3Ryb3llZC5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQkwRjMwQ0I1QzFGQ0UxNzk2MDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMDExRDBBNTkwQzAwRkVCQ0YzIC8qIE9wdGlvbmFs
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNzdCQUEzMUQ5QUZGRkMwMDVGQzU2OCAvKiBPcHRp
b25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMDIxRDBBNTkwQzAwRkVCQ0YzIC8q
IE9TT2JqZWN0UHRyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzUyNyw2ICszNTMyLDcgQEAKIAkJ
CQk5M0U2MTkzQjFGOTMxQjNBMDBBRjI0NUUgLyogVGV4dENvZGVjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNFMzUyNEY5MUIxNDQxQzQwMDI4QTdDNSAvKiBUZXh0RmllbGREaWRCZWdpbkFuZEVu
ZEVkaXRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFREQxQTQxMUE5MjAwNDQ3QzRD
IC8qIFRpbWVSYW5nZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkZDN0NERTAxRkRCNEM4RTAw
NURGRjZEIC8qIFRvdWNoQmFyQVBJVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VE
MzFBNDExQTdFMDA0NDdDNEMgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTVDQjQwQjRFMUY0Qjk4RDMwMDdEQzdCOSAvKiBVSURlbGVnYXRlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRjQ2ODQ5QkUxRUVGNThFNDAwQjkzN0ZFIC8qIFVJUGFzdGVib2FyZFRlc3RzLm1t
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9Ub3VjaEJhckFQSVRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvVG91
Y2hCYXJBUElUZXN0cy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzdhYWRiMzUyNDY4ZTUxN2I5MzczNGU4ZTU2
YTI3MzI1YzExNGM4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvVG91Y2hCYXJBUElUZXN0cy5tbQpAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKyNpZiBIQVZFKFRPVUNI
X0JBUikKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dl
YlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgorI2lt
cG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdQcml2YXRlLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIFJl
dGFpblB0cjxUZXN0V0tXZWJWaWV3PiBzZXR1cFRlc3RXS1dlYlZpZXcoKQoreworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IChXS1By
ZWZlcmVuY2VzUmVmKVtbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcmVmZXJlbmNlc107CisgICAg
V0tQcmVmZXJlbmNlc1NldE1lbnVJdGVtRWxlbWVudEVuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUp
OworICAgIHJldHVybiB3ZWJWaWV3OworfQorCitURVNUKFRvdWNoQmFyQVBJVGVzdHMsIEluc2Vy
dEJ1dHRvbnMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gc2V0dXBUZXN0V0tXZWJWaWV3KCk7Cisg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHk+PG1lbnUgdHlw
ZT1cInRvdWNoYmFyXCI+PG1lbnVpdGVtIHR5cGU9XCJidXR0b25cIiB0aXRsZT1cIkJ1dHRvblwi
IG9uY2xpY2s9XCJidXR0b25PbkNsaWNrKClcIj48L21lbnVpdGVtPjwvbWVudT48L2JvZHk+Il07
CisgICAgTlNUb3VjaEJhciAqdG91Y2hCYXIgPSBbd2ViVmlldyBtYWtlVG91Y2hCYXJdOworICAg
IGF1dG8gaWRlbnRpZmllcnMgPSB0b3VjaEJhci5pdGVtSWRlbnRpZmllcnM7CisgICAgdW5zaWdu
ZWQgY291bnQgPSBbaWRlbnRpZmllcnMgY291bnRdOworICAgIEVYUEVDVF9FUSgodW5zaWduZWQp
IDEsIGNvdW50KTsKK30KKworVEVTVChUb3VjaEJhckFQSVRlc3RzLCBDbGlja0J1dHRvbnMpCit7
CisgICAgYXV0byB3ZWJWaWV3ID0gc2V0dXBUZXN0V0tXZWJWaWV3KCk7CisgICAgTlNTdHJpbmcg
KmJvZHkgPSBAIjxib2R5PjxtZW51IHR5cGU9XCJ0b3VjaGJhclwiPjxtZW51aXRlbSBpZD1cIm5v
dC1jbGlja2VkXCIgdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiQnV0dG9uXCJcIj48L21lbnVpdGVt
PjwvbWVudT48L2JvZHk+IjsKKyAgICBOU1N0cmluZyAqc2NyaXB0ID0gQCI8c2NyaXB0PmRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ21lbnVpdGVtJykub25jbGljayA9IGZ1bmN0aW9uKCkgeyB0aGlz
LmlkID0gXCJjbGlja2VkXCI7IH08L3NjcmlwdD4iOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAJUAiLCBib2R5
LCBzY3JpcHRdXTsKKworICAgIE5TVG91Y2hCYXIgKnRvdWNoQmFyID0gW3dlYlZpZXcgbWFrZVRv
dWNoQmFyXTsKKyAgICBhdXRvIHRlbXBsYXRlSXRlbXMgPSB0b3VjaEJhci50ZW1wbGF0ZUl0ZW1z
OworICAgIGF1dG8gaXRlbSA9IFt0ZW1wbGF0ZUl0ZW1zIGFueU9iamVjdF07CisgICAgYXV0byAq
YnV0dG9uID0gaXRlbS52aWV3OworICAgIAorICAgIFsoTlNCdXR0b24gKilidXR0b24gcGVyZm9y
bUNsaWNrOihOU0J1dHRvbiAqKWJ1dHRvbl07CisKKyAgICBhdXRvIG5ld0lkID0gW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21l
bnVpdGVtJykuaWQiXTsKKyAgICBFWFBFQ1RfU1RSRVEoImNsaWNrZWQiLCBbbmV3SWQgVVRGOFN0
cmluZ10pOworfQorCit9CisKKyNlbmRpZiAvLyBIQVZFKFRPVUNIX0JBUikKKyNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329293</attachid>
            <date>2017-12-13 17:14:21 -0800</date>
            <delta_ts>2017-12-14 10:59:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180513-20171213171420.patch</filename>
            <type>text/plain</type>
            <size>37055</size>
            <attacher name="Aishwarya Nirmal">anirmal</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIzNjRhYzIyOWJjNzgx
MDYzOWYzMTFjNWFjZTYwNTJiODZjNTQ1ZS4uMTliODkyYWE4YmEyNmIxNjUwOGU3ZDc4MWZmNWFk
MTFhMmUwZWUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTEyLTEzICBBaXNo
d2FyeWEgTmlybWFsICA8YW5pcm1hbEBhcHBsZS5jb20+CisKKyAgICAgICAgW1RvdWNoIEJhciBX
ZWIgQVBJXSBBZGQgc3VwcG9ydCBmb3IgY3VzdG9tIFRvdWNoIEJhciBidXR0b25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA1MTMKKworICAgICAg
ICBBbGxvd3MgZm9yIHRoZSBtZW51IGVsZW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXN0b21p
emVkIHRvdWNoIGJhciB0bworICAgICAgICByZXNwb25kIHRvIHRvdWNoIGJhciBpbnRlcmFjdGlv
bnMgYW5kIGRpc3BhdGNoIHRoZSBhcHByb3ByaWF0ZSBldmVudC4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9Ub3VjaEJhckFQSVRlc3RzLm1tCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEN1cnJlbnRNZW51RWxlbWVudCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3VycmVu
dE1lbnVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNZW51RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVudUVsZW1lbnQ6OmRpZEludGVyYWN0V2l0aEl0ZW0pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lbnVFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVudUVsZW1lbnQuaDoKKwogMjAxNy0xMi0wNiAgRGF2aWQgUXVl
c2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQXBwIE1hbmlm
ZXN0XSBBZGQgU1BJIGZvciBmZXRjaGluZyB0aGUgbWFuaWZlc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDQ1NWQ1
NzBlMWQ5MTUzN2NkOTJkZDdiOWQ4M2I0MDc0MzY2NmU2MS4uNTAyMzA3MWQ5ZmYwYzg4Njg2MTgy
MGZlNDFiYzI4ZGU1NjZkMzI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxNy0xMi0x
MyAgQWlzaHdhcnlhIE5pcm1hbCAgPGFuaXJtYWxAYXBwbGUuY29tPgorCisgICAgICAgIFtUb3Vj
aCBCYXIgV2ViIEFQSV0gQWRkIHN1cHBvcnQgZm9yIGN1c3RvbSBUb3VjaCBCYXIgYnV0dG9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTEzCisK
KyAgICAgICAgQWRkcyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIFdlYiBhbmQgVUkgcHJvY2Vz
c2VzIHNvIHRoYXQgY3VzdG9tIGJ1dHRvbnMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSB0
b3VjaCBiYXIgYW5kIGNhbiB0cmlnZ2VyIGFjdGlvbnMgd2hlbiB0YXBwZWQuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvVG91Y2hCYXJN
ZW51RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoQmFyTWVudURhdGE6OlRvdWNoQmFy
TWVudURhdGEpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVEYXRhOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVEYXRhOjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9Ub3VjaEJhck1lbnVEYXRhLmg6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoQmFy
TWVudURhdGE6OnNldElEKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvVG91Y2hCYXJNZW51
SXRlbURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0YTo6VG91
Y2hCYXJNZW51SXRlbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0
YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VG91Y2hCYXJNZW51SXRlbURhdGE6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmg6CisgICAg
ICAgIChXZWJLaXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAg
ICAgICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uIGdldERhdGFdKToKKyAgICAg
ICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uIHNldERhdGE6XSk6CisgICAgICAg
ICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIGluaXRXaXRoV2ViVmll
d0ltcGw6XSk6CisgICAgICAgICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9s
bGVyIGRpZERlc3Ryb3lWaWV3XSk6CisgICAgICAgICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJh
ckl0ZW1Db250cm9sbGVyIHRvdWNoQmFyTWVudUl0ZW1UYXBwZWQ6XSk6CisgICAgICAgICgtW1dL
UGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHRvdWNoQmFyOm1ha2VJdGVtRm9y
SWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNv
bnRyb2xsZXIgaXRlbUZvcklkZW50aWZpZXI6XSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjp1cGRhdGVUb3VjaEJhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRV
cFBhZ2VDdXN0b21pemVkVG91Y2hCYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dXBkYXRlUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpzZWxlY3Rpb25EaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6dG91Y2hCYXJNZW51RGF0YURpZENo
YW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6dG91Y2hCYXJNZW51RGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkSW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51
SXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
dG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRJbnRlcmFjdFdpdGhU
b3VjaEJhck1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDE3LTEyLTA2ICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFkZCBTUEkgZm9yIGZldGNoaW5nIHRoZSBtYW5pZmVz
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZGJlMzRkODMyMDEzMDA1ZmU0OTgzMTA5ZTNj
MDY0MjExMWQ4MTg0MC4uZWU0M2VkNDc1YzY5ZGRhODc3MDdlZGQyNTVlZDkwYzk2ZmMzZWMxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC05MCw2ICs5MCw3IEBACiAjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWVudUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgi
CiAjaW5jbHVkZSAiSFRNTFBpY3R1cmVFbGVtZW50LmgiCkBAIC0xMDExLDYgKzEwMTIsMTEgQEAg
RXhjZXB0aW9uT3I8UmVmPE5vZGU+PiBEb2N1bWVudDo6YWRvcHROb2RlKE5vZGUmIHNvdXJjZSkK
ICAgICByZXR1cm4gUmVmPE5vZGU+IHsgc291cmNlIH07CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnNl
dEN1cnJlbnRNZW51RWxlbWVudChSZWZQdHI8SFRNTE1lbnVFbGVtZW50PiYmIGVsZW1lbnQpCit7
CisgICAgbV9jdXJyZW50TWVudUVsZW1lbnQgPSBlbGVtZW50OworfQorCiBib29sIERvY3VtZW50
OjpoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lbnRzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1l
KQogewogICAgIC8vIFRoZXNlIGNoZWNrcyBhcmUgZnJvbSBET00gQ29yZSBMZXZlbCAyLCBjcmVh
dGVFbGVtZW50TlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOTJlNmZlYWE0ODQ3MWUyZDI5NzFh
NDkyMjM5OWY1ZDA2ZGQyOWQ5NS4uMzMwYTM0NDc2NTZiM2NjZjRjNzE3NGY4OTkzYTAwODEwMDIz
OWJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBjbGFzcyBIVE1M
SUZyYW1lRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxl
bWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBIVE1MTWVudUVsZW1lbnQ7CiBj
bGFzcyBIVE1MUGljdHVyZUVsZW1lbnQ7CiBjbGFzcyBIVE1MU2NyaXB0RWxlbWVudDsKIGNsYXNz
IEhpdFRlc3RSZXF1ZXN0OwpAQCAtNDc2LDYgKzQ3Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGlz
VGltZXJUaHJvdHRsaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaW1lclRocm90dGxp
bmdFbmFibGVkOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8Tm9kZT4+
IGFkb3B0Tm9kZShOb2RlJiBzb3VyY2UpOworICAgIHZvaWQgc2V0Q3VycmVudE1lbnVFbGVtZW50
KFJlZlB0cjxIVE1MTWVudUVsZW1lbnQ+JiYpOworICAgIFJlZlB0cjxIVE1MTWVudUVsZW1lbnQ+
JiBjdXJyZW50TWVudUVsZW1lbnQoKSB7IHJldHVybiBtX2N1cnJlbnRNZW51RWxlbWVudDsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhUTUxDb2xsZWN0aW9uPiBpbWFnZXMoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8SFRNTENvbGxlY3Rpb24+IGVtYmVkcygpOwpAQCAtMTg2OCw2ICsx
ODcxLDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmUHRy
PFNXQ2xpZW50Q29ubmVjdGlvbj4gbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbjsKICNlbmRpZgor
CisgICAgUmVmUHRyPEhUTUxNZW51RWxlbWVudD4gbV9jdXJyZW50TWVudUVsZW1lbnQ7CiB9Owog
CiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVudCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwCmluZGV4IDYyMTIyOTRlMTNlZjRjODFi
ZTU2ODUyZTQzMmVmMDJiODM2YjQ2ZjQuLjI0ZmI0M2ZkNTkyYjJhNmExYThjMWQwN2QwYTgwOGY3
ZDI0ZTRmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAKQEAgLTI2
LDkgKzI2LDEyIEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRNTE1lbnVJdGVtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1Nb3VzZUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsMTAgKzQzLDI5
IEBAIGlubGluZSBIVE1MTWVudUVsZW1lbnQ6OkhUTUxNZW51RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYKICAgICBBU1NFUlQoaGFzVGFnTmFtZShtZW51VGFn
KSk7CiB9CiAKK3ZvaWQgSFRNTE1lbnVFbGVtZW50OjpkaWRJbnRlcmFjdFdpdGhJdGVtKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkubWVudUl0ZW1FbGVtZW50RW5hYmxlZCgpKQorICAgICAgICByZXR1
cm47CisgICAgUmVmUHRyPEhUTUxNZW51SXRlbUVsZW1lbnQ+IHRhcHBlZEl0ZW07CisgICAgZm9y
IChhdXRvJiBpdGVtIDogY2hpbGRyZW5PZlR5cGU8SFRNTE1lbnVJdGVtRWxlbWVudD4oKnRoaXMp
KSB7CisgICAgICAgIGlmIChpdGVtLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odGl0
bGVBdHRyKSA9PSBpZGVudGlmaWVyKSB7CisgICAgICAgICAgICB0YXBwZWRJdGVtID0gJml0ZW07
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXRhcHBlZEl0
ZW0pCisgICAgICAgIHJldHVybjsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgcGxhdGZvcm1FdmVu
dChJbnRQb2ludCB7IH0sIEludFBvaW50IHsgfSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6
TW91c2VQcmVzc2VkLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5v
dygpLCAwLCBTeW50aGV0aWNDbGlja1R5cGU6Ok5vVGFwKTsKKyAgICBSZWY8TW91c2VFdmVudD4g
bW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwg
ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBwbGF0Zm9ybUV2ZW50LCAwLCAwKTsKKyAgICB0YXBw
ZWRJdGVtLT5kaXNwYXRjaEV2ZW50KG1vdXNlRXZlbnQpOworfQorCiBOb2RlOjpJbnNlcnRlZElu
dG9BbmNlc3RvclJlc3VsdCBIVE1MTWVudUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKElu
c2VydGlvblR5cGUgdHlwZSwgQ29udGFpbmVyTm9kZSYgYW5jZXN0b3IpCiB7CiAgICAgYXV0byBy
ZXN1bHQgPSBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IodHlwZSwgYW5jZXN0b3Ip
OwogICAgIGlmICh0eXBlLmNvbm5lY3RlZFRvRG9jdW1lbnQgJiYgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5tZW51SXRlbUVsZW1lbnRFbmFibGVkKCkgJiYgbV9pc1Rv
dWNoQmFyTWVudSkgeworICAgICAgICBkb2N1bWVudCgpLnNldEN1cnJlbnRNZW51RWxlbWVudCh0
aGlzKTsKICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKICAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmRpZEluc2VydE1lbnVFbGVtZW50KCp0aGlz
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuaAppbmRleCAxYWQ5MGUz
NDllMGMxZjAxNWVmODhiZmZmYTFlZDc4Mzg1NzMwMDVlLi45NjlmMThlNDE4ODdhMzI1YzlkNTgw
NGJhOGM2MjdkYTJmYjBmNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZW51RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmgK
QEAgLTMwLDYgKzMwLDcgQEAgY2xhc3MgSFRNTE1lbnVFbGVtZW50IGZpbmFsIDogcHVibGljIEhU
TUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxNZW51RWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlkSW50ZXJhY3RXaXRoSXRlbShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRp
Zmllcik7CiAgICAgYm9vbCBpc1RvdWNoQmFyTWVudSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUb3Vj
aEJhck1lbnU7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RvdWNoQmFyTWVudURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51
RGF0YS5jcHAKaW5kZXggNzUyNDc2M2UzNWFiMTdlMmI1ZDRjNWNiZmMyMzMwNDNmMDA0M2QyMS4u
NzFiODlkNmMwMzZiYjFlY2JmZDk3N2Q1NjMyODQyMzUwN2ZlNDExOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5jcHAKQEAgLTQwLDEwICs0MCw2IEBAIFRvdWNoQmFy
TWVudURhdGE6OlRvdWNoQmFyTWVudURhdGEoY29uc3QgV2ViQ29yZTo6SFRNTE1lbnVFbGVtZW50
JiBlbGVtZW50KQogICAgIGlmICghZWxlbWVudC5pc1RvdWNoQmFyTWVudSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAvLyBGSVhNRTogV2UgY2FuJ3QgcmVseSBvbiB1c2luZyB0aGUgJ2lkJyBh
dHRyaWJ1dGUgb2YgdGhlIGVsZW1lbnQgaGVyZSB0byBkaXN0aW5ndWlzaAotICAgIC8vIGJldHdl
ZW4gZGlmZmVyZW50IG1lbnUgaXRlbXMuIEZvciBpbnN0YW5jZSwgYSBtZW51aXRlbSBtYXkgaGF2
ZSB0aGUgc2FtZSAnaWQnIGFzCi0gICAgLy8gYW5vdGhlciwgb3IgaGF2ZSBubyAnaWQnIGF0IGFs
bC4KLSAgICBtX2lkID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdl
YkNvcmU6OkhUTUxOYW1lczo6aWRBdHRyKTsKICAgICBtX2lzUGFnZUN1c3RvbWl6ZWQgPSB0cnVl
OwogfQogICAgIApAQCAtNjAsMTEgKzU2LDE3IEBAIHZvaWQgVG91Y2hCYXJNZW51RGF0YTo6cmVt
b3ZlTWVudUl0ZW0oY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIGRhdGEpCiB2b2lkIFRvdWNo
QmFyTWVudURhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCBtX2l0ZW1zOworICAgIGVuY29kZXIgPDwgbV9pc1BhZ2VDdXN0b21pemVkOwog
fQogCiBib29sIFRvdWNoQmFyTWVudURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
IFRvdWNoQmFyTWVudURhdGEmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKGRh
dGEubV9pdGVtcyk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1faXRlbXMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1faXNQYWdl
Q3VzdG9taXplZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwog
fQogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51
RGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5oCmluZGV4IDhm
YzIyOWJhODBjODFiODA5MGMyMjE3Y2ZiZGVkZmIwYmY0NDg5YzMuLmYzNzRlNGM5MWJjMjJjYzVh
MWRhODc4YjZiOGYxMmE2Mzc3NjU0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RvdWNoQmFyTWVudURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1l
bnVEYXRhLmgKQEAgLTUyLDE0ICs1MiwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBlbmNv
ZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVj
b2RlciYsIFRvdWNoQmFyTWVudURhdGEmKTsKLSAgICAKLSAgICB2b2lkIHNldElEKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllcikgeyBtX2lkID0gaWRlbnRpZmllcjsgfQorCiAgICAgYm9vbCBpc1Bh
Z2VDdXN0b21pemVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1BhZ2VDdXN0b21pemVkOyB9CiAgICAg
dm9pZCBzZXRJc1BhZ2VDdXN0b21pemVkKGJvb2wgY3VzdG9taXplZCkgeyBtX2lzUGFnZUN1c3Rv
bWl6ZWQgPSBjdXN0b21pemVkOyB9CiAgICAgCiBwcml2YXRlOgogICAgIFZlY3RvcjxUb3VjaEJh
ck1lbnVJdGVtRGF0YT4gbV9pdGVtczsKLSAgICBTdHJpbmcgbV9pZDsKICAgICAKICAgICBib29s
IG1faXNQYWdlQ3VzdG9taXplZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwCmluZGV4IGQwMjI2YmI5YTllYzFiYWUxODM1YmJk
ZGUxMzQ4YzEyODY2YmQxMDMuLjYzZWE4ZDFkMmI5ZjYxNzhlODRkMDEwYTQ5ZjhiMDRlMzkyYzAy
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIEl0ZW1UeXBlIGl0ZW1UeXBlKGNvbnN0IFN0cmluZyYp
CiBUb3VjaEJhck1lbnVJdGVtRGF0YTo6VG91Y2hCYXJNZW51SXRlbURhdGEoY29uc3QgV2ViQ29y
ZTo6SFRNTE1lbnVJdGVtRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICB0eXBlID0gaXRlbVR5cGUo
ZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1l
czo6dHlwZUF0dHIpKTsKLSAgICBpZGVudGlmaWVyID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6aWRBdHRyKTsKKyAgICB0aXRsZSA9
IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFt
ZXM6OnRpdGxlQXR0cik7CiAgICAgcHJpb3JpdHkgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjp2YWx1ZUF0dHIpLnRvRmxvYXQoKTsK
IH0KIApAQCAtNDksNyArNDksNyBAQCB2b2lkIFRvdWNoQmFyTWVudUl0ZW1EYXRhOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIuZW5jb2RlRW51bSh0
eXBlKTsKICAgICAKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCB0
aXRsZTsKICAgICBlbmNvZGVyIDw8IHByaW9yaXR5OwogfQogCkBAIC01OSw3ICs1OSw3IEBAIHN0
ZDo6b3B0aW9uYWw8VG91Y2hCYXJNZW51SXRlbURhdGE+IFRvdWNoQmFyTWVudUl0ZW1EYXRhOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0
LnR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnRpdGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wcmlvcml0eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuaAppbmRleCAyMzhlNjM2Mzc3NGU3YjUzYWY4NmUwYWMx
Mzc2ZmYxYjIwNWMzYTBjLi5iMjMzZjEwOThhMTM0NmY4ODgyM2YxZjk5Yzk4ZWZlMzEzNWQ5NjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmgKQEAgLTUy
LDcgKzUyLDcgQEAgc3RydWN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhIHsKICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwog
ICAgIAogICAgIEl0ZW1UeXBlIHR5cGUgeyBJdGVtVHlwZTo6QnV0dG9uIH07Ci0gICAgU3RyaW5n
IGlkZW50aWZpZXI7CisgICAgU3RyaW5nIHRpdGxlOwogICAgIGZsb2F0IHByaW9yaXR5IHsgMC4w
IH07CiAgICAgYm9vbCB2YWxpZFRvdWNoQmFyRGlzcGxheSB7IHRydWUgfTsKIH07CkBAIC04MSw3
ICs4MSw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgVG91Y2hCYXJNZW51SXRlbURh
dGEmIGxocywgY29uc3QgVG91Y2hCYXJNZW51SXRlbURhCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiBsaHMsIGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1E
YXRhJiByaHMpCiB7CiAgICAgcmV0dXJuIGxocy50eXBlID09IHJocy50eXBlCi0gICAgICAgICYm
IGxocy5pZGVudGlmaWVyID09IHJocy5pZGVudGlmaWVyCisgICAgICAgICYmIGxocy50aXRsZSA9
PSByaHMudGl0bGUKICAgICAgICAgJiYgbGhzLnByaW9yaXR5ID09IHJocy5wcmlvcml0eTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggNzg3
YmE1MjY5YTNkMzExMzI4YmZiMjVmYjk5ZTc4MmFkOTFhOWFhOS4uYTFjZTM4MWU5MmYxZjAwZWI3
YzRlNDlmZmMxMWE0NWQ1NGRhNGMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5oCkBAIC02Myw2ICs2Myw3IEBAIE9CSkNfQ0xBU1MgTlNDdXN0b21Ub3Vj
aEJhckl0ZW07CiBPQkpDX0NMQVNTIE5TVG91Y2hCYXI7CiBPQkpDX0NMQVNTIE5TVG91Y2hCYXJJ
dGVtOwogT0JKQ19DTEFTUyBOU1BvcG92ZXJUb3VjaEJhckl0ZW07CitPQkpDX0NMQVNTIFdLUGFn
ZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyOwogT0JKQ19DTEFTUyBXS1RleHRUb3Vj
aEJhckl0ZW1Db250cm9sbGVyOwogT0JKQ19DTEFTUyBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdl
cjsKICNlbmRpZiAvLyBIQVZFKFRPVUNIX0JBUikKQEAgLTI5NCw2ICsyOTUsNyBAQCBwdWJsaWM6
CiAgICAgaWQgdmFsaWRSZXF1ZXN0b3JGb3JTZW5kQW5kUmV0dXJuVHlwZXMoTlNTdHJpbmcgKnNl
bmRUeXBlLCBOU1N0cmluZyAqcmV0dXJuVHlwZSk7CiAgICAgdm9pZCBjZW50ZXJTZWxlY3Rpb25J
blZpc2libGVBcmVhKCk7CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKTsKKyAgICB2b2lk
IHRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKTsKICAgICB2b2lkIGRpZEJlY29tZUVkaXRhYmxl
KCk7CiAgICAgdm9pZCB1cGRhdGVGb250UGFuZWxJZk5lZWRlZCgpOwogICAgIHZvaWQgY2hhbmdl
Rm9udEZyb21Gb250UGFuZWwoKTsKQEAgLTU0MCw4ICs1NDIsMTAgQEAgcHVibGljOgogcHJpdmF0
ZToKICNpZiBIQVZFKFRPVUNIX0JBUikKICAgICB2b2lkIHNldFVwVGV4dFRvdWNoQmFyKE5TVG91
Y2hCYXIgKik7CisgICAgdm9pZCBzZXRVcFBhZ2VDdXN0b21pemVkVG91Y2hCYXIoTlNUb3VjaEJh
ciAqKTsKICAgICB2b2lkIHVwZGF0ZVRleHRUb3VjaEJhcigpOwogICAgIHZvaWQgdXBkYXRlTWVk
aWFUb3VjaEJhcigpOworICAgIHZvaWQgdXBkYXRlUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcigpOwog
CiAgICAgYm9vbCB1c2VNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KCkgY29uc3Q7CiAgICAgYm9v
bCBpc1JpY2hseUVkaXRhYmxlKCkgY29uc3Q7CkBAIC01NTYsNyArNTYwLDkgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8TlNUb3VjaEJhcj4gbV9yaWNoVGV4dFRvdWNoQmFyOwogICAgIFJldGFp
blB0cjxOU1RvdWNoQmFyPiBtX3BsYWluVGV4dFRvdWNoQmFyOwogICAgIFJldGFpblB0cjxOU1Rv
dWNoQmFyPiBtX3Bhc3N3b3JkVGV4dFRvdWNoQmFyOworICAgIFJldGFpblB0cjxOU1RvdWNoQmFy
PiBtX3BhZ2VDdXN0b21pemVkVG91Y2hCYXI7CiAgICAgUmV0YWluUHRyPFdLVGV4dFRvdWNoQmFy
SXRlbUNvbnRyb2xsZXI+IG1fdGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXI7CisgICAgUmV0YWlu
UHRyPFdLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyPiBtX3BhZ2VDdXN0b21p
emVkVG91Y2hCYXJJdGVtQ29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8TlNDYW5kaWRhdGVMaXN0
VG91Y2hCYXJJdGVtPiBtX3JpY2hUZXh0Q2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbTsKICAgICBS
ZXRhaW5QdHI8TlNDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtPiBtX3BsYWluVGV4dENhbmRpZGF0
ZUxpc3RUb3VjaEJhckl0ZW07CiAgICAgUmV0YWluUHRyPE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFy
SXRlbT4gbV9wYXNzd29yZFRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAyZWYwZjFhNjUxNzUw
YTEzNGRlZDIxM2MyMmRkYmUxZGUxMzdiODZiLi43ZmFlMDk3YTRlYTNhOWJlYjEyOGE0NzQ5NGNh
YTc2MTFlNmIxYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQpAQCAtNDksNiArNDksOCBAQAogI2ltcG9ydCAiVGV4dENoZWNrZXIuaCIKICNpbXBv
cnQgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbXBvcnQgIlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHkuaCIKKyNpbXBvcnQgIlRvdWNoQmFyTWVudURhdGEuaCIKKyNpbXBvcnQgIlRv
dWNoQmFyTWVudUl0ZW1EYXRhLmgiCiAjaW1wb3J0ICJVSUdhbWVwYWRQcm92aWRlci5oIgogI2lt
cG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJJbnRlcm5hbC5oIgpAQCAtNjA0LDYgKzYwNiw3MSBAQCBzdGF0aWMgY29uc3Qg
TlNVSW50ZWdlciBvcmRlcmVkTGlzdFNlZ21lbnQgPSAyOwogCiBAZW5kCiAKK0BpbnRlcmZhY2Ug
V0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uIDogTlNCdXR0b24geworQHByaXZhdGUKKyAg
ICBUb3VjaEJhck1lbnVJdGVtRGF0YSBkYXRhOworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24g
V0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uCistIChjb25zdCBUb3VjaEJhck1lbnVJdGVt
RGF0YSYpZ2V0RGF0YQoreworICAgIHJldHVybiBkYXRhOworfQorCistICh2b2lkKXNldERhdGE6
KGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiltZW51SXRlbURhdGEKK3sKKyAgICBkYXRhID0g
bWVudUl0ZW1EYXRhOworfQorCitAZW5kCisKK0BpbnRlcmZhY2UgV0tQYWdlQ3VzdG9taXplZFRv
dWNoQmFySXRlbUNvbnRyb2xsZXIgOiBOU1RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyPE5TVG91
Y2hCYXJEZWxlZ2F0ZT4geworQHByaXZhdGUKKyAgICBXZWJWaWV3SW1wbCogX3dlYlZpZXdJbXBs
OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3SW1wbDooV2ViVmlld0ltcGwq
KXdlYlZpZXdJbXBsOworLSAodm9pZCl0b3VjaEJhck1lbnVJdGVtVGFwcGVkOihXS1BhZ2VDdXN0
b21pemVkVG91Y2hCYXJCdXR0b24gKilidXR0b247CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBX
S1BhZ2VDdXN0b21pemVkVG91Y2hCYXJJdGVtQ29udHJvbGxlcgorLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoV2ViVmlld0ltcGw6KFdlYlZpZXdJbXBsKil3ZWJWaWV3SW1wbAoreworICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3dlYlZp
ZXdJbXBsID0gd2ViVmlld0ltcGw7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClk
aWREZXN0cm95VmlldworeworICAgIF93ZWJWaWV3SW1wbCA9IG51bGxwdHI7Cit9CisKKy0gKHZv
aWQpdG91Y2hCYXJNZW51SXRlbVRhcHBlZDooV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9u
ICopYnV0dG9uCit7CisgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZGlkSW50ZXJhY3RXaXRoVG91
Y2hCYXJNZW51SXRlbShbYnV0dG9uIGdldERhdGFdKTsKK30KKworI3ByYWdtYSBtYXJrIE5TVG91
Y2hCYXJEZWxlZ2F0ZQorCistIChOU1RvdWNoQmFySXRlbSAqKXRvdWNoQmFyOihOU1RvdWNoQmFy
ICopdG91Y2hCYXIgbWFrZUl0ZW1Gb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIK
K3sKKyAgICByZXR1cm4gW3NlbGYgaXRlbUZvcklkZW50aWZpZXI6aWRlbnRpZmllcl07Cit9CisK
Ky0gKG51bGxhYmxlIE5TVG91Y2hCYXJJdGVtICopaXRlbUZvcklkZW50aWZpZXI6KE5TU3RyaW5n
ICopaWRlbnRpZmllcgoreworICAgIE5TQ3VzdG9tVG91Y2hCYXJJdGVtICppdGVtID0gW1tbTlND
dXN0b21Ub3VjaEJhckl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjppZGVudGlmaWVyXSBh
dXRvcmVsZWFzZV07CisgICAgaXRlbS52aWV3ID0gW05TQnV0dG9uIGJ1dHRvbldpdGhUaXRsZTpp
ZGVudGlmaWVyIHRhcmdldDppdGVtIGFjdGlvbjpAc2VsZWN0b3IodG91Y2hCYXJNZW51SXRlbVRh
cHBlZDopXTsKKyAgICByZXR1cm4gaXRlbTsKK30KKworQGVuZAorCiBAaW50ZXJmYWNlIFdLVGV4
dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgOiBOU1RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIDxO
U0NhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW1EZWxlZ2F0ZSwgTlNUb3VjaEJhckRlbGVnYXRlPiB7
CiBAcHJpdmF0ZQogICAgIEJPT0wgX3RleHRJc0JvbGQ7CkBAIC04OTgsNiArOTY1LDEwIEBAIHZv
aWQgV2ViVmlld0ltcGw6OnVwZGF0ZVRvdWNoQmFyKCkKICAgICAgICAgW21fbWVkaWFQbGF5YmFj
a0NvbnRyb2xzVmlldyBzZXRQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlcjpuaWxdOwogICAgIH0K
ICNlbmRpZgorICAgIGVsc2UgaWYgKG1fcGFnZS0+dG91Y2hCYXJNZW51RGF0YSgpLmlzUGFnZUN1
c3RvbWl6ZWQoKSkgeworICAgICAgICB1cGRhdGVQYWdlQ3VzdG9taXplZFRvdWNoQmFyKCk7Cisg
ICAgICAgIHRvdWNoQmFyID0gbV9wYWdlQ3VzdG9taXplZFRvdWNoQmFyLmdldCgpOworICAgIH0K
IAogICAgIGlmICh0b3VjaEJhciA9PSBtX2N1cnJlbnRUb3VjaEJhcikKICAgICAgICAgcmV0dXJu
OwpAQCAtMTAyOCw2ICsxMDk5LDI3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFVwVGV4dFRvdWNo
QmFyKE5TVG91Y2hCYXIgKnRvdWNoQmFyKQogICAgICAgICB0ZXh0Rm9ybWF0SXRlbS5ncm91cFRv
dWNoQmFyLmN1c3RvbWl6YXRpb25JZGVudGlmaWVyID0gQCJXS1RleHRGb3JtYXRUb3VjaEJhciI7
CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnNldFVwUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcihOU1Rv
dWNoQmFyICp0b3VjaEJhcikKK3sKKyAgICBjb25zdCBUb3VjaEJhck1lbnVEYXRhKiB0b3VjaEJh
ck1lbnVEYXRhID0gJihtX3BhZ2UtPnRvdWNoQmFyTWVudURhdGEoKSk7CisgICAgVmVjdG9yPFRv
dWNoQmFyTWVudUl0ZW1EYXRhPiBpdGVtcyA9IHRvdWNoQmFyTWVudURhdGEtPml0ZW1zKCk7Cisg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZVNldDxOU1RvdWNoQmFySXRlbSAqPj4gdGVtcGxhdGVJdGVt
cyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk8TlNUb3VjaEJhckl0ZW1JZGVudGlmaWVyPj4gZGVmYXVsdEl0ZW1zID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgZm9yIChUb3VjaEJh
ck1lbnVJdGVtRGF0YSYgaXRlbSA6IGl0ZW1zKSB7CisgICAgICAgIGlmIChpdGVtLnR5cGUgIT0g
SXRlbVR5cGU6OkJ1dHRvbikgLy8gQ3VycmVudGx5IG9ubHkgYnV0dG9uIGlzIHN1cHBvcnRlZC4K
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSZXRhaW5QdHI8TlNDdXN0b21Ub3VjaEJh
ckl0ZW0+IHRvdWNoQmFySXRlbSA9IGFkb3B0TlMoW1tOU0N1c3RvbVRvdWNoQmFySXRlbSBhbGxv
Y10gaW5pdFdpdGhJZGVudGlmaWVyOml0ZW0udGl0bGVdKTsKKyAgICAgICAgV0tQYWdlQ3VzdG9t
aXplZFRvdWNoQmFyQnV0dG9uICpidXR0b24gPSBbV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0
dG9uIGJ1dHRvbldpdGhUaXRsZTppdGVtLnRpdGxlIHRhcmdldDptX3BhZ2VDdXN0b21pemVkVG91
Y2hCYXJJdGVtQ29udHJvbGxlci5nZXQoKSBhY3Rpb246QHNlbGVjdG9yKHRvdWNoQmFyTWVudUl0
ZW1UYXBwZWQ6KV07CisgICAgICAgIFtidXR0b24gc2V0RGF0YTppdGVtXTsKKyAgICAgICAgdG91
Y2hCYXJJdGVtLmdldCgpLnZpZXcgPSBidXR0b247CisgICAgICAgIFt0ZW1wbGF0ZUl0ZW1zIGFk
ZE9iamVjdDp0b3VjaEJhckl0ZW0uZ2V0KCldOworICAgICAgICBbZGVmYXVsdEl0ZW1zIGFkZE9i
amVjdDp0b3VjaEJhckl0ZW0uZ2V0KCkuaWRlbnRpZmllcl07CisgICAgfQorICAgIFt0b3VjaEJh
ciBzZXREZWxlZ2F0ZTptX3BhZ2VDdXN0b21pemVkVG91Y2hCYXJJdGVtQ29udHJvbGxlci5nZXQo
KV07CisgICAgW3RvdWNoQmFyIHNldFRlbXBsYXRlSXRlbXM6dGVtcGxhdGVJdGVtcy5nZXQoKV07
CisgICAgW3RvdWNoQmFyIHNldERlZmF1bHRJdGVtSWRlbnRpZmllcnM6ZGVmYXVsdEl0ZW1zLmdl
dCgpXTsKK30KKwogYm9vbCBXZWJWaWV3SW1wbDo6aXNSaWNobHlFZGl0YWJsZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJs
ZSAmJiAhbV9wYWdlLT5uZWVkc1BsYWluVGV4dFF1aXJrKCk7CkBAIC0xMTQ0LDYgKzEyMzYsMTYg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlVGV4dFRvdWNoQmFyKCkKICAgICB9CiB9CiAKK3Zv
aWQgV2ViVmlld0ltcGw6OnVwZGF0ZVBhZ2VDdXN0b21pemVkVG91Y2hCYXIoKQoreworICAgIGlm
ICghbV9wYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXIpCisgICAgICAgIG1fcGFn
ZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyID0gYWRvcHROUyhbW1dLUGFnZUN1c3Rv
bWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFdlYlZpZXdJbXBsOnRo
aXNdKTsKKyAgICBpZiAoIW1fcGFnZUN1c3RvbWl6ZWRUb3VjaEJhcikgeworICAgICAgICBtX3Bh
Z2VDdXN0b21pemVkVG91Y2hCYXIgPSBhZG9wdE5TKFtbTlNUb3VjaEJhciBhbGxvY10gaW5pdF0p
OworICAgICAgICBzZXRVcFBhZ2VDdXN0b21pemVkVG91Y2hCYXIobV9wYWdlQ3VzdG9taXplZFRv
dWNoQmFyLmdldCgpKTsKKyAgICB9Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZU1lZGlh
VG91Y2hCYXIoKQogewogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQpAQCAtMjYxNSw2ICsyNzE3LDE0IEBA
IHZvaWQgV2ViVmlld0ltcGw6OnNlbGVjdGlvbkRpZENoYW5nZSgpCiAgICAgW21fdmlldyBfd2Vi
X2VkaXRvclN0YXRlRGlkQ2hhbmdlXTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6dG91Y2hCYXJN
ZW51RGF0YURpZENoYW5nZSgpCit7CisjaWYgSEFWRShUT1VDSF9CQVIpCisgICAgbV9wYWdlQ3Vz
dG9taXplZFRvdWNoQmFyID0gbmlsOworICAgIHVwZGF0ZVRvdWNoQmFyKCk7CisjZW5kaWYKK30K
Kwogdm9pZCBXZWJWaWV3SW1wbDo6ZGlkQmVjb21lRWRpdGFibGUoKQogewogICAgIFttX3dpbmRv
d1Zpc2liaWxpdHlPYnNlcnZlciBzdGFydE9ic2VydmluZ0ZvbnRQYW5lbF07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggMjYxYjBkYjg1MTYwODY5OTk3MGY0YjQ0YjllY2Qz
MWRiYjJhNTc0Ni4uYjI5NWMwYmViYmRiYjlkZGI3MGVjYTAwNjM1YThlNGI2MGIxNjY1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTgwLDYgKzE4MCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcihM
YXllck9yVmlldyAqKSA9IDA7CiAgICAgdmlydHVhbCBMYXllck9yVmlldyAqYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxWaWV3
U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRvdWNo
QmFyTWVudURhdGFEaWRDaGFuZ2UoKSB7IH0KICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRT
KQogICAgIHZpcnR1YWwgdm9pZCBnZXN0dXJlRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNv
bnN0IE5hdGl2ZVdlYkdlc3R1cmVFdmVudCYpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNDk5NzVjZTg1YjU1YmNjZDcyMDQ4MzJiNTE3
NmE1NDY4MWVlZDk4MS4uMTYxOGVmNTU4MzMxMDc4NDM0MzA5OGFkMjVmZTU2NTlhODUxNWM3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03MTcxLDE2ICs3
MTcxLDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcm
JiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lCiB2b2lkIFdlYlBhZ2VQcm94eTo6dG91
Y2hCYXJNZW51RGF0YUNoYW5nZWQoY29uc3QgVG91Y2hCYXJNZW51RGF0YSYgdG91Y2hCYXJNZW51
RGF0YSkKIHsKICAgICBtX3RvdWNoQmFyTWVudURhdGEgPSB0b3VjaEJhck1lbnVEYXRhOworICAg
IG1fcGFnZUNsaWVudC50b3VjaEJhck1lbnVEYXRhRGlkQ2hhbmdlKCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojp0b3VjaEJhck1lbnVJdGVtRGF0YUFkZGVkKGNvbnN0IFRvdWNoQmFyTWVudUl0
ZW1EYXRhJiB0b3VjaEJhck1lbnVJdGVtRGF0YSkKIHsKICAgICBtX3RvdWNoQmFyTWVudURhdGEu
YWRkTWVudUl0ZW0odG91Y2hCYXJNZW51SXRlbURhdGEpOworICAgIG1fcGFnZUNsaWVudC50b3Vj
aEJhck1lbnVEYXRhRGlkQ2hhbmdlKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaEJh
ck1lbnVJdGVtRGF0YVJlbW92ZWQoY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIHRvdWNoQmFy
TWVudUl0ZW1EYXRhKQogewogICAgIG1fdG91Y2hCYXJNZW51RGF0YS5yZW1vdmVNZW51SXRlbSh0
b3VjaEJhck1lbnVJdGVtRGF0YSk7CisgICAgbV9wYWdlQ2xpZW50LnRvdWNoQmFyTWVudURhdGFE
aWRDaGFuZ2UoKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpZEludGVyYWN0V2l0aFRvdWNo
QmFyTWVudUl0ZW0oY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIHRvdWNoQmFyTWVudUl0ZW1E
YXRhKQoreworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkSW50ZXJh
Y3RXaXRoVG91Y2hCYXJNZW51SXRlbSh0b3VjaEJhck1lbnVJdGVtRGF0YSksIG1fcGFnZUlEKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDBk
NWM4ZTFhMTc3YThiNTA0MGIxMDRkMmYyNjhjMGFlOTc5ZWIwOWIuLmRkMzA0M2Y5ZjRkNmQ4ZTUz
NDUxNGFhY2UzNWExNTA5MTg4YmRlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0xMjMzLDEwICsxMjMzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGVkaXRvclN0
YXRlQ2hhbmdlZChjb25zdCBFZGl0b3JTdGF0ZSYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgdm9pZCB0b3VjaEJhck1lbnVEYXRhUmVtb3ZlZCgpOwogICAgIHZvaWQgdG91Y2hCYXJNZW51
RGF0YUNoYW5nZWQoY29uc3QgVG91Y2hCYXJNZW51RGF0YSYpOwogICAgIHZvaWQgdG91Y2hCYXJN
ZW51SXRlbURhdGFBZGRlZChjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYpOwogICAgIHZvaWQg
dG91Y2hCYXJNZW51SXRlbURhdGFSZW1vdmVkKGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJik7
CisgICAgdm9pZCBkaWRJbnRlcmFjdFdpdGhUb3VjaEJhck1lbnVJdGVtKGNvbnN0IFRvdWNoQmFy
TWVudUl0ZW1EYXRhJik7CiAjZW5kaWYKIAogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJp
bmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3Qgd2ViUHJv
Y2Vzc0NvbnRleHRJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5oCmluZGV4IGIzMTM5NWE0ZTdkY2Q4NjNiYTRkYjZlYTIzOTc3OTg0NzU5NzE3
NWIuLmY5OGMyZTdmN2VlNmI0N2ZmZWE3MzQ3OTkyZDhjMjA0YzQ5NTZlMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCkBAIC0xMDQsNiAr
MTA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJy
aWRlOwogICAgIHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlv
bigpIG92ZXJyaWRlOwogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB0b3VjaEJhck1lbnVEYXRhRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAKICAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFj
ZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCBmMTZkOTBkOGRiZGQz
Mzg0NDk1NTUyZGMzYjNjM2I1NzQxZWVlMGY0Li45NGMzZmYzOGExYTNkNjJhZGVlMTQ4ZGE0NTNh
ZjEyZDcwZDdmY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tCkBAIC01MjcsNiArNTI3LDExIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6
OnNlbGVjdGlvbkRpZENoYW5nZSgpCiAgICAgbV9pbXBsLT5zZWxlY3Rpb25EaWRDaGFuZ2UoKTsK
IH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6dG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSgpCit7
CisgICAgbV9pbXBsLT50b3VjaEJhck1lbnVEYXRhRGlkQ2hhbmdlKCk7Cit9CisKIHZvaWQgUGFn
ZUNsaWVudEltcGw6OndoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2
ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQogewogICAgIGlmIChhdXRvIGdlc3R1cmVDb250cm9sbGVy
ID0gbV9pbXBsLT5nZXN0dXJlQ29udHJvbGxlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhOTE4ZWM2ZTVkYTVkYTIzNjI1NGQ1NzgyOTE2
YWNlYTZkODFmMmI4Li5kN2Y0NjEwNTJlMDU1NzgyZDI5MmM0ZGZkNjk2ODBmMjAxZWM4ZTU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTQw
NCw2ICs1NDA0LDE0IEBAIHZvaWQgV2ViUGFnZTo6c2VuZFRvdWNoQmFyTWVudUl0ZW1EYXRhUmVt
b3ZlZFVwZGF0ZShIVE1MTWVudUl0ZW1FbGVtZW50JiBlbGVtZW50CiB7CiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpUb3VjaEJhck1lbnVJdGVtRGF0YVJlbW92ZWQoVG91Y2hCYXJN
ZW51SXRlbURhdGEge2VsZW1lbnR9KSk7CiB9CisKK3ZvaWQgV2ViUGFnZTo6ZGlkSW50ZXJhY3RX
aXRoVG91Y2hCYXJNZW51SXRlbShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgdG91Y2hCYXJN
ZW51SXRlbURhdGEpCit7CisgICAgaWYgKGF1dG8qIGZyYW1lID0gbWFpbkZyYW1lKCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gZWxlbWVudCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jdXJyZW50TWVudUVs
ZW1lbnQoKSkKKyAgICAgICAgICAgIGVsZW1lbnQtPmRpZEludGVyYWN0V2l0aEl0ZW0odG91Y2hC
YXJNZW51SXRlbURhdGEudGl0bGUpOworICAgIH0KK30KICNlbmRpZgogCiB2b2lkIFdlYlBhZ2U6
OnNlbmRQYXJ0aWFsRWRpdG9yU3RhdGVBbmRTY2hlZHVsZVBvc3RMYXlvdXRVcGRhdGUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDA5MDkxMjUzY2Fi
N2I4YmQyODYyNGMwZTc1ODAwYjcxYzM3NDMxMDUuLjViNDBkNjM1ZWU2ZjdiNjI1Zjg0YjA5ZGFl
NDUzNDRiODBkM2MwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQbHVnaW4uaCIKICNpbmNsdWRlICJT
YW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSAi
VG91Y2hCYXJNZW51SXRlbURhdGEuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgogI2luY2x1ZGUg
IldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUu
aD4KQEAgLTEwNjAsNiArMTA2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kVG91Y2hCYXJN
ZW51RGF0YVJlbW92ZWRVcGRhdGUoV2ViQ29yZTo6SFRNTE1lbnVFbGVtZW50Jik7CiAgICAgdm9p
ZCBzZW5kVG91Y2hCYXJNZW51SXRlbURhdGFBZGRlZFVwZGF0ZShXZWJDb3JlOjpIVE1MTWVudUl0
ZW1FbGVtZW50Jik7CiAgICAgdm9pZCBzZW5kVG91Y2hCYXJNZW51SXRlbURhdGFSZW1vdmVkVXBk
YXRlKFdlYkNvcmU6OkhUTUxNZW51SXRlbUVsZW1lbnQmKTsKKyAgICB2b2lkIGRpZEludGVyYWN0
V2l0aFRvdWNoQmFyTWVudUl0ZW0oY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmKTsKICNlbmRp
ZgogCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBmMmYxOGNiNTljOWY4ZDQ3YzU3MTJmYWUxOGUx
MTk1OTU0ZTRkYTU2Li4zNTczNTc3M2YzNTVmNDkxNGMzZGUyMDMyZGI3YzRiYjA0OGViNWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTI4LDYgKzI4LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIERpZEludGVyYWN0V2l0aFRvdWNoQmFyTWVudUl0ZW0o
c3RydWN0IFdlYktpdDo6VG91Y2hCYXJNZW51SXRlbURhdGEgdG91Y2hCYXJNZW51SXRlbURhdGEp
CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFNldFRvcENvbnRlbnRJbnNldEZl
bmNlZChmbG9hdCBjb250ZW50SW5zZXQsIElQQzo6QXR0YWNobWVudCBmZW5jZVBvcnQpCiAjZW5k
aWYKICAgICBTZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgY29udGVudEluc2V0KQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM1ODliZGY3Yjc3NzNh
ZjBlZjBkMWMyYTE2Y2U1MTdlZDExMzI5ZGYuLjc2M2M0NDI2ZDhkZWEwMDI2ZDQ4MTJjZGU2NTll
ZDFhNDgyYzc5ZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0xMi0xMyAgQWlzaHdhcnlhIE5pcm1hbCAgPGFu
aXJtYWxAYXBwbGUuY29tPgorCisgICAgICAgIFtUb3VjaCBCYXIgV2ViIEFQSV0gQWRkIHN1cHBv
cnQgZm9yIGN1c3RvbSBUb3VjaCBCYXIgYnV0dG9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTEzCisKKyAgICAgICAgVGVzdHMgZm9yIHRoZSBp
bnNlcnRpb24gYW5kIGNsaWNraW5nIG9mIGN1c3RvbSBUb3VjaCBCYXIgYnV0dG9ucworICAgICAg
ICB1c2luZyB0aGUgV2ViS2l0IFRvdWNoIEJhciBBUEkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9Ub3VjaEJhckFQSVRlc3RzLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OnNldHVwVGVzdFdLV2ViVmlldyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwog
MjAxNy0xMi0wNiAgRGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWIgQXBwIE1hbmlmZXN0XSBBZGQgU1BJIGZvciBmZXRjaGluZyB0aGUgbWFuaWZl
c3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjBiZGUyZDI3ZDFjNDJiYjRiZGNmMTVkYjgy
YjEzNmM5ODY0NmRjNi4uNzk4MzA0YTZkOGUxMGExNGI3Y2JkZjJjNTI5ZjZkNzZjMzhkNWI5MyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMCw2ICsxMTAsNyBAQAogCQkyRUZGMDZDRDFE
OEE0MjlBMDAwNEJCMzAgLyogaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
RkYwNkNDMUQ4QTQyOTEwMDA0QkIzMCAvKiBpbnB1dC1maWVsZC1pbi1zY3JvbGxhYmxlLWRvY3Vt
ZW50Lmh0bWwgKi87IH07CiAJCTJFRkYwNkQ0MUQ4QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJW
aWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVG
RjA2RDMxRDhBRURCQjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcubW0gKi87IH07CiAJCTJFRkYw
NkQ3MUQ4QUYzNEEwMDA0QkIzMCAvKiBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYwNkQ2MUQ4QUYzNEEw
MDA0QkIzMCAvKiBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbSAqLzsgfTsKKwkJMkZDN0NERTAx
RkRCNEM4RTAwNURGRjZEIC8qIFRvdWNoQmFyQVBJVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRkM3Q0RERTFGREI0QjUyMDA1REZGNkQgLyog
VG91Y2hCYXJBUElUZXN0cy5tbSAqLzsgfTsKIAkJMzE1MTE4MTAxREIxQUU0MDAwMTc2MzA0IC8q
IEV4dGVuZGVkQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzE1MTE4MEYxREIxQURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwICov
OyB9OwogCQkzMTUyMzFDQTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVQ29tbWFuZFF1ZXVlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE1MjMxQzkxRUIz
QjNDNzAwQTIyQTE2IC8qIEdQVUNvbW1hbmRRdWV1ZS5tbSAqLzsgfTsKIAkJMzE2MkFFOUMxRTZG
MkZGNTAwMEU0REJDIC8qIEdQVURldmljZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxNjJBRTlCMUU2RjJGQ0UwMDBFNERCQyAvKiBHUFVEZXZpY2Uu
bW0gKi87IH07CkBAIC0xMjA0LDYgKzEyMDUsOCBAQAogCQkyRUZGMDZEMjFEOEFFREJCMDAwNEJC
MzAgLyogVGVzdFdLV2ViVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBU
ZXN0V0tXZWJWaWV3Lmg7IHBhdGggPSBjb2NvYS9UZXN0V0tXZWJWaWV3Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJFRkYwNkQzMUQ4QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJW
aWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdFdLV2Vi
Vmlldy5tbTsgcGF0aCA9IGNvY29hL1Rlc3RXS1dlYlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJFRkYwNkQ2MUQ4QUYzNEEwMDA0QkIzMCAvKiBXS1dlYlZpZXdDYW5kaWRh
dGVUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2Vi
Vmlld0NhbmRpZGF0ZVRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRkM3
Q0RERTFGREI0QjUyMDA1REZGNkQgLyogVG91Y2hCYXJBUElUZXN0cy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRvdWNoQmFyQVBJVGVzdHMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTJGQzdDRERGMUZEQjRCNkIwMDVERkY2RCAvKiB0b3VjaC1i
YXItYXBpLXRlc3RzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidG91Y2gtYmFy
LWFwaS10ZXN0cy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE1MTE4MEYx
REIxQURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5kZWRDb2xvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMxNTIzMUM5MUVCM0IzQzcwMEEyMkExNiAvKiBHUFVDb21tYW5kUXVldWUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVDb21tYW5kUXVldWUu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNjJBRTlCMUU2RjJGQ0UwMDBFNERC
QyAvKiBHUFVEZXZpY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBHUFVEZXZpY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODQwLDYgKzI4
NDMsNyBAQAogCQkJCTM3OTlBRDM5MTQxMjBBNDMwMDVFQjBDNiAvKiBTdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0RnJvbVN0cmluZy5tbSAqLywKIAkJCQk5MzlCRkUzOTE4RTU1NDg5MDA4ODMy
NzUgLyogU3RyaW5nVHJ1bmNhdG9yLm1tICovLAogCQkJCTM3QTY4OTVEMTQ4QTlCNTAwMDUxMDBG
QSAvKiBTdWJyZXNvdXJjZUVycm9yQ3Jhc2gubW0gKi8sCisJCQkJMkZDN0NEREUxRkRCNEI1MjAw
NURGRjZEIC8qIFRvdWNoQmFyQVBJVGVzdHMubW0gKi8sCiAJCQkJRTQ5MDI5NjcxNEUyRTNBNDAw
MkJFREQxIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gKi8sCiAJCQkJNTM2NzcwMzMxQ0M4MDIyODAw
RDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1tICovLAogCQkJCTUxRkJCQjRD
MTUxM0Q0RTkwMDgyMjczOCAvKiBXZWJWaWV3Q2FuUGFzdGVVUkwubW0gKi8sCkBAIC0yODg4LDYg
KzI4OTIsNyBAQAogCQkJCUE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0
eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLywKIAkJCQk1MkI4Q0Y5NDE1ODY4Q0YwMDAy
ODEwNTMgLyogU2V0RG9jdW1lbnRVUkkuaHRtbCAqLywKIAkJCQlFMTk0RTFCQzE3N0U1MzRBMDA5
QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgKi8sCisJCQkJ
MkZDN0NEREYxRkRCNEI2QjAwNURGRjZEIC8qIHRvdWNoLWJhci1hcGktdGVzdHMuaHRtbCAqLywK
IAkJCQlDNTQwRjc4MzE1MkU1QTc4MDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sICovLAog
CQkJCTUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlv
bi5odG1sICovLAogCQkJCUNFMTRGMUEyMTgxODczQjAwMDFDMjcwNSAvKiBXaWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0VG9VUkxDcmFzaC5odG1sICovLApAQCAtMzE3MSw2ICszMTc2LDcgQEAKIAkJ
CQkxQURBRDE1MDFENzdBOUY2MDAyMTI1ODYgLyogQmxvY2tQdHIubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3QzgzREU5QzFEMEE1OTBDMDBGRUJDRjMgLyogQmxvb21GaWx0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0RFQTAxRDBBNTkwQzAwRkVCQ0YzIC8qIENoZWNrZWRBcml0aG1ldGlj
T3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjMwQ0I1QzFGQ0UxNzk2MDA0QjUz
MjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RF
QzMxRDBBNTkwQzAwRkVCQ0YzIC8qIENvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QzgzREVBNjFEMEE1OTBDMDBGRUJDRjMgLyogQ291bnRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0RFQTkxRDBBNTkwQzAwRkVCQ0YzIC8qIENTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0zMTk1LDcgKzMyMDEsNiBAQAogCQkJCTdDODNERUY2MUQwQTU5MEMwMEZFQkNGMyAvKiBN
ZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUZFMUQwQTU5MEMwMEZF
QkNGMyAvKiBOYWtlZFB0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdENTRGMzFGMzM4QzM2
MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEYzMENC
NUMxRkNFMTc5NjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNERjAxMUQwQTU5MEMwMEZFQkNGMyAvKiBPcHRpb25hbC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTc3QkFBMzFEOUFGRkZDMDA1RkM1NjggLyogT3B0aW9uU2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDODNERjAyMUQwQTU5MEMwMEZFQkNGMyAvKiBPU09iamVjdFB0
ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM1MjcsNiArMzUzMiw3IEBACiAJCQkJOTNFNjE5M0Ix
RjkzMUIzQTAwQUYyNDVFIC8qIFRleHRDb2RlYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTM1
MjRGOTFCMTQ0MUM0MDAyOEE3QzUgLyogVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUREMUE0MTFBOTIwMDQ0N0M0QyAvKiBUaW1lUmFu
Z2VzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJGQzdDREUwMUZEQjRDOEUwMDVERkY2RCAvKiBU
b3VjaEJhckFQSVRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDMxQTQxMUE3RTAw
NDQ3QzRDIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0I0MEI0
RTFGNEI5OEQzMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0
Njg0OUJFMUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0cy5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvVG91Y2hCYXJB
UElUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1RvdWNoQmFyQVBJVGVz
dHMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjc3YWFkYjM1MjQ2OGU1MTdiOTM3MzRlOGU1NmEyNzMyNWMxMTRj
OAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1RvdWNo
QmFyQVBJVGVzdHMubW0KQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisjaWYgSEFWRShUT1VDSF9CQVIpCisKKyNp
bXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisj
aW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktp
dC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0
ZS5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBSZXRhaW5QdHI8VGVz
dFdLV2ViVmlldz4gc2V0dXBUZXN0V0tXZWJWaWV3KCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDQwMCwgNDAwKV0pOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAoV0tQcmVmZXJlbmNlc1Jl
ZilbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJlZmVyZW5jZXNdOworICAgIFdLUHJlZmVyZW5j
ZXNTZXRNZW51SXRlbUVsZW1lbnRFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKKyAgICByZXR1
cm4gd2ViVmlldzsKK30KKworVEVTVChUb3VjaEJhckFQSVRlc3RzLCBJbnNlcnRCdXR0b25zKQor
eworICAgIGF1dG8gd2ViVmlldyA9IHNldHVwVGVzdFdLV2ViVmlldygpOworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5PjxtZW51IHR5cGU9XCJ0b3VjaGJh
clwiPjxtZW51aXRlbSB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9XCJCdXR0b25cIiBvbmNsaWNrPVwi
YnV0dG9uT25DbGljaygpXCI+PC9tZW51aXRlbT48L21lbnU+PC9ib2R5PiJdOworICAgIE5TVG91
Y2hCYXIgKnRvdWNoQmFyID0gW3dlYlZpZXcgbWFrZVRvdWNoQmFyXTsKKyAgICBhdXRvIGlkZW50
aWZpZXJzID0gdG91Y2hCYXIuaXRlbUlkZW50aWZpZXJzOworICAgIHVuc2lnbmVkIGNvdW50ID0g
W2lkZW50aWZpZXJzIGNvdW50XTsKKyAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKSAxLCBjb3VudCk7
Cit9CisKK1RFU1QoVG91Y2hCYXJBUElUZXN0cywgQ2xpY2tCdXR0b25zKQoreworICAgIGF1dG8g
d2ViVmlldyA9IHNldHVwVGVzdFdLV2ViVmlldygpOworICAgIE5TU3RyaW5nICpib2R5ID0gQCI8
Ym9keT48bWVudSB0eXBlPVwidG91Y2hiYXJcIj48bWVudWl0ZW0gaWQ9XCJub3QtY2xpY2tlZFwi
IHR5cGU9XCJidXR0b25cIiB0aXRsZT1cIkJ1dHRvblwiXCI+PC9tZW51aXRlbT48L21lbnU+PC9i
b2R5PiI7CisgICAgTlNTdHJpbmcgKnNjcmlwdCA9IEAiPHNjcmlwdD5kb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCdtZW51aXRlbScpLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsgdGhpcy5pZCA9IFwiY2xp
Y2tlZFwiOyB9PC9zY3JpcHQ+IjsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCVAIiwgYm9keSwgc2NyaXB0XV07
CisKKyAgICBOU1RvdWNoQmFyICp0b3VjaEJhciA9IFt3ZWJWaWV3IG1ha2VUb3VjaEJhcl07Cisg
ICAgYXV0byB0ZW1wbGF0ZUl0ZW1zID0gdG91Y2hCYXIudGVtcGxhdGVJdGVtczsKKyAgICBhdXRv
IGl0ZW0gPSBbdGVtcGxhdGVJdGVtcyBhbnlPYmplY3RdOworICAgIGF1dG8gKmJ1dHRvbiA9IGl0
ZW0udmlldzsKKyAgICAKKyAgICBbKE5TQnV0dG9uICopYnV0dG9uIHBlcmZvcm1DbGljazooTlNC
dXR0b24gKilidXR0b25dOworCisgICAgYXV0byBuZXdJZCA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZW51aXRlbScpLmlk
Il07CisgICAgRVhQRUNUX1NUUkVRKCJjbGlja2VkIiwgW25ld0lkIFVURjhTdHJpbmddKTsKK30K
KworfQorCisjZW5kaWYgLy8gSEFWRShUT1VDSF9CQVIpCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJM
RUQKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329366</attachid>
            <date>2017-12-14 10:59:12 -0800</date>
            <delta_ts>2017-12-14 12:18:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180513-20171214105911.patch</filename>
            <type>text/plain</type>
            <size>37784</size>
            <attacher name="Aishwarya Nirmal">anirmal</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIzNjRhYzIyOWJjNzgx
MDYzOWYzMTFjNWFjZTYwNTJiODZjNTQ1ZS4uNzY0YmIxNWZjODM2MzIyNTMwNWFiYzA5ODg4NWZm
OWM5NmI3MWE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTEyLTE0ICBBaXNo
d2FyeWEgTmlybWFsICA8YW5pcm1hbEBhcHBsZS5jb20+CisKKyAgICAgICAgW1RvdWNoIEJhciBX
ZWIgQVBJXSBBZGQgc3VwcG9ydCBmb3IgY3VzdG9tIFRvdWNoIEJhciBidXR0b25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA1MTMKKworICAgICAg
ICBBbGxvd3MgZm9yIHRoZSBtZW51IGVsZW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXN0b21p
emVkIHRvdWNoIGJhciB0bworICAgICAgICByZXNwb25kIHRvIHRvdWNoIGJhciBpbnRlcmFjdGlv
bnMgYW5kIGRpc3BhdGNoIHRoZSBhcHByb3ByaWF0ZSBldmVudC4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9Ub3VjaEJhckFQSVRlc3RzLm1tCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEN1cnJlbnRNZW51RWxlbWVudCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3VycmVu
dE1lbnVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNZW51RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVudUVsZW1lbnQ6OmRpZEludGVyYWN0V2l0aEl0ZW0pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lbnVFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVudUVsZW1lbnQuaDoKKwogMjAxNy0xMi0wNiAgRGF2aWQgUXVl
c2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQXBwIE1hbmlm
ZXN0XSBBZGQgU1BJIGZvciBmZXRjaGluZyB0aGUgbWFuaWZlc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDQ1NWQ1
NzBlMWQ5MTUzN2NkOTJkZDdiOWQ4M2I0MDc0MzY2NmU2MS4uMjU4M2MzNjlkNTI3YmQ0NzYyZjcz
Nzg5NWVkNDIyZWUwZDZmMjYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxNy0xMi0x
NCAgQWlzaHdhcnlhIE5pcm1hbCAgPGFuaXJtYWxAYXBwbGUuY29tPgorCisgICAgICAgIFtUb3Vj
aCBCYXIgV2ViIEFQSV0gQWRkIHN1cHBvcnQgZm9yIGN1c3RvbSBUb3VjaCBCYXIgYnV0dG9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTEzCisK
KyAgICAgICAgQWRkcyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIFdlYiBhbmQgVUkgcHJvY2Vz
c2VzIHNvIHRoYXQgY3VzdG9tIGJ1dHRvbnMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSB0
b3VjaCBiYXIgYW5kIGNhbiB0cmlnZ2VyIGFjdGlvbnMgd2hlbiB0YXBwZWQuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvVG91Y2hCYXJN
ZW51RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoQmFyTWVudURhdGE6OlRvdWNoQmFy
TWVudURhdGEpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVEYXRhOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVEYXRhOjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9Ub3VjaEJhck1lbnVEYXRhLmg6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoQmFy
TWVudURhdGE6OnNldElEKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvVG91Y2hCYXJNZW51
SXRlbURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0YTo6VG91
Y2hCYXJNZW51SXRlbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0
YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VG91Y2hCYXJNZW51SXRlbURhdGE6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmg6CisgICAg
ICAgIChXZWJLaXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAg
ICAgICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uIGdldERhdGFdKToKKyAgICAg
ICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uIHNldERhdGE6XSk6CisgICAgICAg
ICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIGluaXRXaXRoV2ViVmll
d0ltcGw6XSk6CisgICAgICAgICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9s
bGVyIGRpZERlc3Ryb3lWaWV3XSk6CisgICAgICAgICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJh
ckl0ZW1Db250cm9sbGVyIHRvdWNoQmFyTWVudUl0ZW1UYXBwZWQ6XSk6CisgICAgICAgICgtW1dL
UGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHRvdWNoQmFyOm1ha2VJdGVtRm9y
SWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNv
bnRyb2xsZXIgaXRlbUZvcklkZW50aWZpZXI6XSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjp1cGRhdGVUb3VjaEJhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRV
cFBhZ2VDdXN0b21pemVkVG91Y2hCYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dXBkYXRlUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpzZWxlY3Rpb25EaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6dG91Y2hCYXJNZW51RGF0YURpZENo
YW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6dG91Y2hCYXJNZW51RGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkSW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51
SXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
dG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRJbnRlcmFjdFdpdGhU
b3VjaEJhck1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDE3LTEyLTA2ICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFkZCBTUEkgZm9yIGZldGNoaW5nIHRoZSBtYW5pZmVz
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZGJlMzRkODMyMDEzMDA1ZmU0OTgzMTA5ZTNj
MDY0MjExMWQ4MTg0MC4uZWU0M2VkNDc1YzY5ZGRhODc3MDdlZGQyNTVlZDkwYzk2ZmMzZWMxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC05MCw2ICs5MCw3IEBACiAjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWVudUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgi
CiAjaW5jbHVkZSAiSFRNTFBpY3R1cmVFbGVtZW50LmgiCkBAIC0xMDExLDYgKzEwMTIsMTEgQEAg
RXhjZXB0aW9uT3I8UmVmPE5vZGU+PiBEb2N1bWVudDo6YWRvcHROb2RlKE5vZGUmIHNvdXJjZSkK
ICAgICByZXR1cm4gUmVmPE5vZGU+IHsgc291cmNlIH07CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnNl
dEN1cnJlbnRNZW51RWxlbWVudChSZWZQdHI8SFRNTE1lbnVFbGVtZW50PiYmIGVsZW1lbnQpCit7
CisgICAgbV9jdXJyZW50TWVudUVsZW1lbnQgPSBlbGVtZW50OworfQorCiBib29sIERvY3VtZW50
OjpoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lbnRzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1l
KQogewogICAgIC8vIFRoZXNlIGNoZWNrcyBhcmUgZnJvbSBET00gQ29yZSBMZXZlbCAyLCBjcmVh
dGVFbGVtZW50TlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOTJlNmZlYWE0ODQ3MWUyZDI5NzFh
NDkyMjM5OWY1ZDA2ZGQyOWQ5NS4uMzMwYTM0NDc2NTZiM2NjZjRjNzE3NGY4OTkzYTAwODEwMDIz
OWJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBjbGFzcyBIVE1M
SUZyYW1lRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxl
bWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBIVE1MTWVudUVsZW1lbnQ7CiBj
bGFzcyBIVE1MUGljdHVyZUVsZW1lbnQ7CiBjbGFzcyBIVE1MU2NyaXB0RWxlbWVudDsKIGNsYXNz
IEhpdFRlc3RSZXF1ZXN0OwpAQCAtNDc2LDYgKzQ3Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGlz
VGltZXJUaHJvdHRsaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaW1lclRocm90dGxp
bmdFbmFibGVkOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8Tm9kZT4+
IGFkb3B0Tm9kZShOb2RlJiBzb3VyY2UpOworICAgIHZvaWQgc2V0Q3VycmVudE1lbnVFbGVtZW50
KFJlZlB0cjxIVE1MTWVudUVsZW1lbnQ+JiYpOworICAgIFJlZlB0cjxIVE1MTWVudUVsZW1lbnQ+
JiBjdXJyZW50TWVudUVsZW1lbnQoKSB7IHJldHVybiBtX2N1cnJlbnRNZW51RWxlbWVudDsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhUTUxDb2xsZWN0aW9uPiBpbWFnZXMoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8SFRNTENvbGxlY3Rpb24+IGVtYmVkcygpOwpAQCAtMTg2OCw2ICsx
ODcxLDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmUHRy
PFNXQ2xpZW50Q29ubmVjdGlvbj4gbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbjsKICNlbmRpZgor
CisgICAgUmVmUHRyPEhUTUxNZW51RWxlbWVudD4gbV9jdXJyZW50TWVudUVsZW1lbnQ7CiB9Owog
CiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVudCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwCmluZGV4IDYyMTIyOTRlMTNlZjRjODFi
ZTU2ODUyZTQzMmVmMDJiODM2YjQ2ZjQuLjI0ZmI0M2ZkNTkyYjJhNmExYThjMWQwN2QwYTgwOGY3
ZDI0ZTRmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAKQEAgLTI2
LDkgKzI2LDEyIEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRNTE1lbnVJdGVtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1Nb3VzZUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsMTAgKzQzLDI5
IEBAIGlubGluZSBIVE1MTWVudUVsZW1lbnQ6OkhUTUxNZW51RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYKICAgICBBU1NFUlQoaGFzVGFnTmFtZShtZW51VGFn
KSk7CiB9CiAKK3ZvaWQgSFRNTE1lbnVFbGVtZW50OjpkaWRJbnRlcmFjdFdpdGhJdGVtKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkubWVudUl0ZW1FbGVtZW50RW5hYmxlZCgpKQorICAgICAgICByZXR1
cm47CisgICAgUmVmUHRyPEhUTUxNZW51SXRlbUVsZW1lbnQ+IHRhcHBlZEl0ZW07CisgICAgZm9y
IChhdXRvJiBpdGVtIDogY2hpbGRyZW5PZlR5cGU8SFRNTE1lbnVJdGVtRWxlbWVudD4oKnRoaXMp
KSB7CisgICAgICAgIGlmIChpdGVtLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odGl0
bGVBdHRyKSA9PSBpZGVudGlmaWVyKSB7CisgICAgICAgICAgICB0YXBwZWRJdGVtID0gJml0ZW07
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXRhcHBlZEl0
ZW0pCisgICAgICAgIHJldHVybjsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgcGxhdGZvcm1FdmVu
dChJbnRQb2ludCB7IH0sIEludFBvaW50IHsgfSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6
TW91c2VQcmVzc2VkLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5v
dygpLCAwLCBTeW50aGV0aWNDbGlja1R5cGU6Ok5vVGFwKTsKKyAgICBSZWY8TW91c2VFdmVudD4g
bW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwg
ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBwbGF0Zm9ybUV2ZW50LCAwLCAwKTsKKyAgICB0YXBw
ZWRJdGVtLT5kaXNwYXRjaEV2ZW50KG1vdXNlRXZlbnQpOworfQorCiBOb2RlOjpJbnNlcnRlZElu
dG9BbmNlc3RvclJlc3VsdCBIVE1MTWVudUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKElu
c2VydGlvblR5cGUgdHlwZSwgQ29udGFpbmVyTm9kZSYgYW5jZXN0b3IpCiB7CiAgICAgYXV0byBy
ZXN1bHQgPSBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IodHlwZSwgYW5jZXN0b3Ip
OwogICAgIGlmICh0eXBlLmNvbm5lY3RlZFRvRG9jdW1lbnQgJiYgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5tZW51SXRlbUVsZW1lbnRFbmFibGVkKCkgJiYgbV9pc1Rv
dWNoQmFyTWVudSkgeworICAgICAgICBkb2N1bWVudCgpLnNldEN1cnJlbnRNZW51RWxlbWVudCh0
aGlzKTsKICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKICAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmRpZEluc2VydE1lbnVFbGVtZW50KCp0aGlz
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuaAppbmRleCAxYWQ5MGUz
NDllMGMxZjAxNWVmODhiZmZmYTFlZDc4Mzg1NzMwMDVlLi45NjlmMThlNDE4ODdhMzI1YzlkNTgw
NGJhOGM2MjdkYTJmYjBmNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZW51RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmgK
QEAgLTMwLDYgKzMwLDcgQEAgY2xhc3MgSFRNTE1lbnVFbGVtZW50IGZpbmFsIDogcHVibGljIEhU
TUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxNZW51RWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlkSW50ZXJhY3RXaXRoSXRlbShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRp
Zmllcik7CiAgICAgYm9vbCBpc1RvdWNoQmFyTWVudSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUb3Vj
aEJhck1lbnU7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RvdWNoQmFyTWVudURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51
RGF0YS5jcHAKaW5kZXggNzUyNDc2M2UzNWFiMTdlMmI1ZDRjNWNiZmMyMzMwNDNmMDA0M2QyMS4u
NzFiODlkNmMwMzZiYjFlY2JmZDk3N2Q1NjMyODQyMzUwN2ZlNDExOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5jcHAKQEAgLTQwLDEwICs0MCw2IEBAIFRvdWNoQmFy
TWVudURhdGE6OlRvdWNoQmFyTWVudURhdGEoY29uc3QgV2ViQ29yZTo6SFRNTE1lbnVFbGVtZW50
JiBlbGVtZW50KQogICAgIGlmICghZWxlbWVudC5pc1RvdWNoQmFyTWVudSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAvLyBGSVhNRTogV2UgY2FuJ3QgcmVseSBvbiB1c2luZyB0aGUgJ2lkJyBh
dHRyaWJ1dGUgb2YgdGhlIGVsZW1lbnQgaGVyZSB0byBkaXN0aW5ndWlzaAotICAgIC8vIGJldHdl
ZW4gZGlmZmVyZW50IG1lbnUgaXRlbXMuIEZvciBpbnN0YW5jZSwgYSBtZW51aXRlbSBtYXkgaGF2
ZSB0aGUgc2FtZSAnaWQnIGFzCi0gICAgLy8gYW5vdGhlciwgb3IgaGF2ZSBubyAnaWQnIGF0IGFs
bC4KLSAgICBtX2lkID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdl
YkNvcmU6OkhUTUxOYW1lczo6aWRBdHRyKTsKICAgICBtX2lzUGFnZUN1c3RvbWl6ZWQgPSB0cnVl
OwogfQogICAgIApAQCAtNjAsMTEgKzU2LDE3IEBAIHZvaWQgVG91Y2hCYXJNZW51RGF0YTo6cmVt
b3ZlTWVudUl0ZW0oY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIGRhdGEpCiB2b2lkIFRvdWNo
QmFyTWVudURhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCBtX2l0ZW1zOworICAgIGVuY29kZXIgPDwgbV9pc1BhZ2VDdXN0b21pemVkOwog
fQogCiBib29sIFRvdWNoQmFyTWVudURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
IFRvdWNoQmFyTWVudURhdGEmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKGRh
dGEubV9pdGVtcyk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1faXRlbXMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1faXNQYWdl
Q3VzdG9taXplZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwog
fQogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51
RGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5oCmluZGV4IDhm
YzIyOWJhODBjODFiODA5MGMyMjE3Y2ZiZGVkZmIwYmY0NDg5YzMuLmYzNzRlNGM5MWJjMjJjYzVh
MWRhODc4YjZiOGYxMmE2Mzc3NjU0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RvdWNoQmFyTWVudURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1l
bnVEYXRhLmgKQEAgLTUyLDE0ICs1MiwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBlbmNv
ZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVj
b2RlciYsIFRvdWNoQmFyTWVudURhdGEmKTsKLSAgICAKLSAgICB2b2lkIHNldElEKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllcikgeyBtX2lkID0gaWRlbnRpZmllcjsgfQorCiAgICAgYm9vbCBpc1Bh
Z2VDdXN0b21pemVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1BhZ2VDdXN0b21pemVkOyB9CiAgICAg
dm9pZCBzZXRJc1BhZ2VDdXN0b21pemVkKGJvb2wgY3VzdG9taXplZCkgeyBtX2lzUGFnZUN1c3Rv
bWl6ZWQgPSBjdXN0b21pemVkOyB9CiAgICAgCiBwcml2YXRlOgogICAgIFZlY3RvcjxUb3VjaEJh
ck1lbnVJdGVtRGF0YT4gbV9pdGVtczsKLSAgICBTdHJpbmcgbV9pZDsKICAgICAKICAgICBib29s
IG1faXNQYWdlQ3VzdG9taXplZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwCmluZGV4IGQwMjI2YmI5YTllYzFiYWUxODM1YmJk
ZGUxMzQ4YzEyODY2YmQxMDMuLjYzZWE4ZDFkMmI5ZjYxNzhlODRkMDEwYTQ5ZjhiMDRlMzkyYzAy
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIEl0ZW1UeXBlIGl0ZW1UeXBlKGNvbnN0IFN0cmluZyYp
CiBUb3VjaEJhck1lbnVJdGVtRGF0YTo6VG91Y2hCYXJNZW51SXRlbURhdGEoY29uc3QgV2ViQ29y
ZTo6SFRNTE1lbnVJdGVtRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICB0eXBlID0gaXRlbVR5cGUo
ZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1l
czo6dHlwZUF0dHIpKTsKLSAgICBpZGVudGlmaWVyID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6aWRBdHRyKTsKKyAgICB0aXRsZSA9
IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFt
ZXM6OnRpdGxlQXR0cik7CiAgICAgcHJpb3JpdHkgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjp2YWx1ZUF0dHIpLnRvRmxvYXQoKTsK
IH0KIApAQCAtNDksNyArNDksNyBAQCB2b2lkIFRvdWNoQmFyTWVudUl0ZW1EYXRhOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIuZW5jb2RlRW51bSh0
eXBlKTsKICAgICAKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCB0
aXRsZTsKICAgICBlbmNvZGVyIDw8IHByaW9yaXR5OwogfQogCkBAIC01OSw3ICs1OSw3IEBAIHN0
ZDo6b3B0aW9uYWw8VG91Y2hCYXJNZW51SXRlbURhdGE+IFRvdWNoQmFyTWVudUl0ZW1EYXRhOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0
LnR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnRpdGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wcmlvcml0eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuaAppbmRleCAyMzhlNjM2Mzc3NGU3YjUzYWY4NmUwYWMx
Mzc2ZmYxYjIwNWMzYTBjLi5iMjMzZjEwOThhMTM0NmY4ODgyM2YxZjk5Yzk4ZWZlMzEzNWQ5NjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmgKQEAgLTUy
LDcgKzUyLDcgQEAgc3RydWN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhIHsKICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwog
ICAgIAogICAgIEl0ZW1UeXBlIHR5cGUgeyBJdGVtVHlwZTo6QnV0dG9uIH07Ci0gICAgU3RyaW5n
IGlkZW50aWZpZXI7CisgICAgU3RyaW5nIHRpdGxlOwogICAgIGZsb2F0IHByaW9yaXR5IHsgMC4w
IH07CiAgICAgYm9vbCB2YWxpZFRvdWNoQmFyRGlzcGxheSB7IHRydWUgfTsKIH07CkBAIC04MSw3
ICs4MSw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgVG91Y2hCYXJNZW51SXRlbURh
dGEmIGxocywgY29uc3QgVG91Y2hCYXJNZW51SXRlbURhCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiBsaHMsIGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1E
YXRhJiByaHMpCiB7CiAgICAgcmV0dXJuIGxocy50eXBlID09IHJocy50eXBlCi0gICAgICAgICYm
IGxocy5pZGVudGlmaWVyID09IHJocy5pZGVudGlmaWVyCisgICAgICAgICYmIGxocy50aXRsZSA9
PSByaHMudGl0bGUKICAgICAgICAgJiYgbGhzLnByaW9yaXR5ID09IHJocy5wcmlvcml0eTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggYzUzMjU4OTA1
NTliZDYzYjMzZTI5ZDM5NzVhNTFkZmUwYjFmYzc5NC4uMzc2MTYwZTNhNjIwYTgzOTY5NGE3ZTIx
MjJhNDYzMTc2NGQ0ZjA0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55
YW1sCkBAIC02NDEsNyArNjQxLDcgQEAgQ3VzdG9tRWxlbWVudHNFbmFibGVkOgogCiBNZW51SXRl
bUVsZW1lbnRFbmFibGVkOgogICB0eXBlOiBib29sCi0gIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAg
ZGVmYXVsdFZhbHVlOiB0cnVlCiAgIHdlYmNvcmVCaW5kaW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzCiAKIEVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IDc4N2JhNTI2OWEzZDMxMTMyOGJmYjI1ZmI5OWU3
ODJhZDkxYTlhYTkuLmExY2UzODFlOTJmMWYwMGViN2M0ZTQ5ZmZjMTFhNDVkNTRkYTRjMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtNjMsNiAr
NjMsNyBAQCBPQkpDX0NMQVNTIE5TQ3VzdG9tVG91Y2hCYXJJdGVtOwogT0JKQ19DTEFTUyBOU1Rv
dWNoQmFyOwogT0JKQ19DTEFTUyBOU1RvdWNoQmFySXRlbTsKIE9CSkNfQ0xBU1MgTlNQb3BvdmVy
VG91Y2hCYXJJdGVtOworT0JKQ19DTEFTUyBXS1BhZ2VDdXN0b21pemVkVG91Y2hCYXJJdGVtQ29u
dHJvbGxlcjsKIE9CSkNfQ0xBU1MgV0tUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlcjsKIE9CSkNf
Q0xBU1MgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXI7CiAjZW5kaWYgLy8gSEFWRShUT1VDSF9C
QVIpCkBAIC0yOTQsNiArMjk1LDcgQEAgcHVibGljOgogICAgIGlkIHZhbGlkUmVxdWVzdG9yRm9y
U2VuZEFuZFJldHVyblR5cGVzKE5TU3RyaW5nICpzZW5kVHlwZSwgTlNTdHJpbmcgKnJldHVyblR5
cGUpOwogICAgIHZvaWQgY2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpOwogICAgIHZvaWQg
c2VsZWN0aW9uRGlkQ2hhbmdlKCk7CisgICAgdm9pZCB0b3VjaEJhck1lbnVEYXRhRGlkQ2hhbmdl
KCk7CiAgICAgdm9pZCBkaWRCZWNvbWVFZGl0YWJsZSgpOwogICAgIHZvaWQgdXBkYXRlRm9udFBh
bmVsSWZOZWVkZWQoKTsKICAgICB2b2lkIGNoYW5nZUZvbnRGcm9tRm9udFBhbmVsKCk7CkBAIC01
NDAsOCArNTQyLDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAjaWYgSEFWRShUT1VDSF9CQVIpCiAg
ICAgdm9pZCBzZXRVcFRleHRUb3VjaEJhcihOU1RvdWNoQmFyICopOworICAgIHZvaWQgc2V0VXBQ
YWdlQ3VzdG9taXplZFRvdWNoQmFyKE5TVG91Y2hCYXIgKik7CiAgICAgdm9pZCB1cGRhdGVUZXh0
VG91Y2hCYXIoKTsKICAgICB2b2lkIHVwZGF0ZU1lZGlhVG91Y2hCYXIoKTsKKyAgICB2b2lkIHVw
ZGF0ZVBhZ2VDdXN0b21pemVkVG91Y2hCYXIoKTsKIAogICAgIGJvb2wgdXNlTWVkaWFQbGF5YmFj
a0NvbnRyb2xzVmlldygpIGNvbnN0OwogICAgIGJvb2wgaXNSaWNobHlFZGl0YWJsZSgpIGNvbnN0
OwpAQCAtNTU2LDcgKzU2MCw5IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TVG91Y2hCYXI+
IG1fcmljaFRleHRUb3VjaEJhcjsKICAgICBSZXRhaW5QdHI8TlNUb3VjaEJhcj4gbV9wbGFpblRl
eHRUb3VjaEJhcjsKICAgICBSZXRhaW5QdHI8TlNUb3VjaEJhcj4gbV9wYXNzd29yZFRleHRUb3Vj
aEJhcjsKKyAgICBSZXRhaW5QdHI8TlNUb3VjaEJhcj4gbV9wYWdlQ3VzdG9taXplZFRvdWNoQmFy
OwogICAgIFJldGFpblB0cjxXS1RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyPiBtX3RleHRUb3Vj
aEJhckl0ZW1Db250cm9sbGVyOworICAgIFJldGFpblB0cjxXS1BhZ2VDdXN0b21pemVkVG91Y2hC
YXJJdGVtQ29udHJvbGxlcj4gbV9wYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXI7
CiAgICAgUmV0YWluUHRyPE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbT4gbV9yaWNoVGV4dENh
bmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW07CiAgICAgUmV0YWluUHRyPE5TQ2FuZGlkYXRlTGlzdFRv
dWNoQmFySXRlbT4gbV9wbGFpblRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtOwogICAgIFJl
dGFpblB0cjxOU0NhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0+IG1fcGFzc3dvcmRUZXh0Q2FuZGlk
YXRlTGlzdFRvdWNoQmFySXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KaW5kZXggMmVmMGYxYTY1MTc1MGExMzRkZWQyMTNjMjJkZGJlMWRlMTM3Yjg2
Yi4uZmQ2OTIwYTllMmJiMzQ0NTRiNGEyM2JlYzZjYTA4OTQwNDNlMTZiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQ5LDYgKzQ5LDggQEAK
ICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCiAjaW1wb3J0ICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAj
aW1wb3J0ICJUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgiCisjaW1wb3J0ICJU
b3VjaEJhck1lbnVEYXRhLmgiCisjaW1wb3J0ICJUb3VjaEJhck1lbnVJdGVtRGF0YS5oIgogI2lt
cG9ydCAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKICNpbXBvcnQgIlZpZXdHZXN0dXJlQ29udHJvbGxl
ci5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKQEAg
LTYwNCw2ICs2MDYsNzMgQEAgc3RhdGljIGNvbnN0IE5TVUludGVnZXIgb3JkZXJlZExpc3RTZWdt
ZW50ID0gMjsKIAogQGVuZAogCitAaW50ZXJmYWNlIFdLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckJ1
dHRvbiA6IE5TQnV0dG9uIHsKK0Bwcml2YXRlCisgICAgVG91Y2hCYXJNZW51SXRlbURhdGEgZGF0
YTsKK30KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckJ1
dHRvbgorLSAoY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmKWdldERhdGEKK3sKKyAgICByZXR1
cm4gZGF0YTsKK30KKworLSAodm9pZClzZXREYXRhOihjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0
YSYpbWVudUl0ZW1EYXRhCit7CisgICAgZGF0YSA9IG1lbnVJdGVtRGF0YTsKK30KKworQGVuZAor
CitAaW50ZXJmYWNlIFdLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIDogTlNU
ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlcjxOU1RvdWNoQmFyRGVsZWdhdGU+IHsKK0Bwcml2YXRl
CisgICAgV2ViVmlld0ltcGwqIF93ZWJWaWV3SW1wbDsKK30KKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoV2ViVmlld0ltcGw6KFdlYlZpZXdJbXBsKil3ZWJWaWV3SW1wbDsKKy0gKHZvaWQpdG91
Y2hCYXJNZW51SXRlbVRhcHBlZDooV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uICopYnV0
dG9uOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRl
bUNvbnRyb2xsZXIKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXdJbXBsOihXZWJWaWV3
SW1wbCopd2ViVmlld0ltcGwKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIF93ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsOworCisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGlkRGVzdHJveVZpZXcKK3sKKyAgICBfd2Vi
Vmlld0ltcGwgPSBudWxscHRyOworfQorCistICh2b2lkKXRvdWNoQmFyTWVudUl0ZW1UYXBwZWQ6
KFdLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckJ1dHRvbiAqKWJ1dHRvbgoreworICAgIGlmICghX3dl
YlZpZXdJbXBsKQorICAgICAgICByZXR1cm47CisgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZGlk
SW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51SXRlbShbYnV0dG9uIGdldERhdGFdKTsKK30KKworI3By
YWdtYSBtYXJrIE5TVG91Y2hCYXJEZWxlZ2F0ZQorCistIChOU1RvdWNoQmFySXRlbSAqKXRvdWNo
QmFyOihOU1RvdWNoQmFyICopdG91Y2hCYXIgbWFrZUl0ZW1Gb3JJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWlkZW50aWZpZXIKK3sKKyAgICByZXR1cm4gW3NlbGYgaXRlbUZvcklkZW50aWZpZXI6aWRl
bnRpZmllcl07Cit9CisKKy0gKG51bGxhYmxlIE5TVG91Y2hCYXJJdGVtICopaXRlbUZvcklkZW50
aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgoreworICAgIE5TQ3VzdG9tVG91Y2hCYXJJdGVt
ICppdGVtID0gW1tbTlNDdXN0b21Ub3VjaEJhckl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmll
cjppZGVudGlmaWVyXSBhdXRvcmVsZWFzZV07CisgICAgaXRlbS52aWV3ID0gW05TQnV0dG9uIGJ1
dHRvbldpdGhUaXRsZTppZGVudGlmaWVyIHRhcmdldDppdGVtIGFjdGlvbjpAc2VsZWN0b3IodG91
Y2hCYXJNZW51SXRlbVRhcHBlZDopXTsKKyAgICByZXR1cm4gaXRlbTsKK30KKworQGVuZAorCiBA
aW50ZXJmYWNlIFdLVGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgOiBOU1RleHRUb3VjaEJhckl0
ZW1Db250cm9sbGVyIDxOU0NhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW1EZWxlZ2F0ZSwgTlNUb3Vj
aEJhckRlbGVnYXRlPiB7CiBAcHJpdmF0ZQogICAgIEJPT0wgX3RleHRJc0JvbGQ7CkBAIC04OTgs
NiArOTY3LDEwIEBAIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZVRvdWNoQmFyKCkKICAgICAgICAg
W21fbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyBzZXRQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxl
cjpuaWxdOwogICAgIH0KICNlbmRpZgorICAgIGVsc2UgaWYgKG1fcGFnZS0+dG91Y2hCYXJNZW51
RGF0YSgpLmlzUGFnZUN1c3RvbWl6ZWQoKSkgeworICAgICAgICB1cGRhdGVQYWdlQ3VzdG9taXpl
ZFRvdWNoQmFyKCk7CisgICAgICAgIHRvdWNoQmFyID0gbV9wYWdlQ3VzdG9taXplZFRvdWNoQmFy
LmdldCgpOworICAgIH0KIAogICAgIGlmICh0b3VjaEJhciA9PSBtX2N1cnJlbnRUb3VjaEJhcikK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTAyOCw2ICsxMTAxLDI1IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNldFVwVGV4dFRvdWNoQmFyKE5TVG91Y2hCYXIgKnRvdWNoQmFyKQogICAgICAgICB0ZXh0Rm9y
bWF0SXRlbS5ncm91cFRvdWNoQmFyLmN1c3RvbWl6YXRpb25JZGVudGlmaWVyID0gQCJXS1RleHRG
b3JtYXRUb3VjaEJhciI7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnNldFVwUGFnZUN1c3RvbWl6
ZWRUb3VjaEJhcihOU1RvdWNoQmFyICp0b3VjaEJhcikKK3sKKyAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlU2V0PE5TVG91Y2hCYXJJdGVtICo+PiB0ZW1wbGF0ZUl0ZW1zID0gYWRvcHROUyhbW05TTXV0
YWJsZVNldCBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheTxOU1Rv
dWNoQmFySXRlbUlkZW50aWZpZXI+PiBkZWZhdWx0SXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX3BhZ2UtPnRvdWNo
QmFyTWVudURhdGEoKS5pdGVtcygpKSB7CisgICAgICAgIGlmIChpdGVtLnR5cGUgIT0gSXRlbVR5
cGU6OkJ1dHRvbikgLy8gQ3VycmVudGx5IG9ubHkgYnV0dG9uIGlzIHN1cHBvcnRlZC4KKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBSZXRhaW5QdHI8TlNDdXN0b21Ub3VjaEJhckl0ZW0+
IHRvdWNoQmFySXRlbSA9IGFkb3B0TlMoW1tOU0N1c3RvbVRvdWNoQmFySXRlbSBhbGxvY10gaW5p
dFdpdGhJZGVudGlmaWVyOml0ZW0udGl0bGVdKTsKKyAgICAgICAgV0tQYWdlQ3VzdG9taXplZFRv
dWNoQmFyQnV0dG9uICpidXR0b24gPSBbV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uIGJ1
dHRvbldpdGhUaXRsZTppdGVtLnRpdGxlIHRhcmdldDptX3BhZ2VDdXN0b21pemVkVG91Y2hCYXJJ
dGVtQ29udHJvbGxlci5nZXQoKSBhY3Rpb246QHNlbGVjdG9yKHRvdWNoQmFyTWVudUl0ZW1UYXBw
ZWQ6KV07CisgICAgICAgIFtidXR0b24gc2V0RGF0YTppdGVtXTsKKyAgICAgICAgdG91Y2hCYXJJ
dGVtLmdldCgpLnZpZXcgPSBidXR0b247CisgICAgICAgIFt0ZW1wbGF0ZUl0ZW1zIGFkZE9iamVj
dDp0b3VjaEJhckl0ZW0uZ2V0KCldOworICAgICAgICBbZGVmYXVsdEl0ZW1zIGFkZE9iamVjdDp0
b3VjaEJhckl0ZW0uZ2V0KCkuaWRlbnRpZmllcl07CisgICAgfQorICAgIFt0b3VjaEJhciBzZXRE
ZWxlZ2F0ZTptX3BhZ2VDdXN0b21pemVkVG91Y2hCYXJJdGVtQ29udHJvbGxlci5nZXQoKV07Cisg
ICAgW3RvdWNoQmFyIHNldFRlbXBsYXRlSXRlbXM6dGVtcGxhdGVJdGVtcy5nZXQoKV07CisgICAg
W3RvdWNoQmFyIHNldERlZmF1bHRJdGVtSWRlbnRpZmllcnM6ZGVmYXVsdEl0ZW1zLmdldCgpXTsK
K30KKwogYm9vbCBXZWJWaWV3SW1wbDo6aXNSaWNobHlFZGl0YWJsZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSAmJiAh
bV9wYWdlLT5uZWVkc1BsYWluVGV4dFF1aXJrKCk7CkBAIC0xMTQ0LDYgKzEyMzYsMTYgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6dXBkYXRlVGV4dFRvdWNoQmFyKCkKICAgICB9CiB9CiAKK3ZvaWQgV2Vi
Vmlld0ltcGw6OnVwZGF0ZVBhZ2VDdXN0b21pemVkVG91Y2hCYXIoKQoreworICAgIGlmICghbV9w
YWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXIpCisgICAgICAgIG1fcGFnZUN1c3Rv
bWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyID0gYWRvcHROUyhbW1dLUGFnZUN1c3RvbWl6ZWRU
b3VjaEJhckl0ZW1Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFdlYlZpZXdJbXBsOnRoaXNdKTsK
KyAgICBpZiAoIW1fcGFnZUN1c3RvbWl6ZWRUb3VjaEJhcikgeworICAgICAgICBtX3BhZ2VDdXN0
b21pemVkVG91Y2hCYXIgPSBhZG9wdE5TKFtbTlNUb3VjaEJhciBhbGxvY10gaW5pdF0pOworICAg
ICAgICBzZXRVcFBhZ2VDdXN0b21pemVkVG91Y2hCYXIobV9wYWdlQ3VzdG9taXplZFRvdWNoQmFy
LmdldCgpKTsKKyAgICB9Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZU1lZGlhVG91Y2hC
YXIoKQogewogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQpAQCAtMTMzNCw2ICsxNDM2LDcgQEAgV2ViVmll
d0ltcGw6On5XZWJWaWV3SW1wbCgpCiAKICNpZiBIQVZFKFRPVUNIX0JBUikKICAgICBbbV90ZXh0
VG91Y2hCYXJJdGVtQ29udHJvbGxlciBkaWREZXN0cm95Vmlld107CisgICAgW21fcGFnZUN1c3Rv
bWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIGRpZERlc3Ryb3lWaWV3XTsKICNpZiBFTkFCTEUo
V0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpCiAgICAgW21fbWVkaWFUb3VjaEJhclByb3Zp
ZGVyIHNldFBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOm5pbF07CiAgICAgW21fbWVkaWFQbGF5
YmFja0NvbnRyb2xzVmlldyBzZXRQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlcjpuaWxdOwpAQCAt
MjYxNSw2ICsyNzE4LDE0IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNlbGVjdGlvbkRpZENoYW5nZSgp
CiAgICAgW21fdmlldyBfd2ViX2VkaXRvclN0YXRlRGlkQ2hhbmdlXTsKIH0KIAordm9pZCBXZWJW
aWV3SW1wbDo6dG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSgpCit7CisjaWYgSEFWRShUT1VDSF9C
QVIpCisgICAgbV9wYWdlQ3VzdG9taXplZFRvdWNoQmFyID0gbmlsOworICAgIHVwZGF0ZVRvdWNo
QmFyKCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6ZGlkQmVjb21lRWRpdGFibGUo
KQogewogICAgIFttX3dpbmRvd1Zpc2liaWxpdHlPYnNlcnZlciBzdGFydE9ic2VydmluZ0ZvbnRQ
YW5lbF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggMjYxYjBkYjg1MTYw
ODY5OTk3MGY0YjQ0YjllY2QzMWRiYjJhNTc0Ni4uYjI5NWMwYmViYmRiYjlkZGI3MGVjYTAwNjM1
YThlNGI2MGIxNjY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTgw
LDYgKzE4MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ1Jvb3RMYXllcihMYXllck9yVmlldyAqKSA9IDA7CiAgICAgdmlydHVhbCBMYXllck9y
VmlldyAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKSB7IH0KICNpZiBFTkFCTEUo
TUFDX0dFU1RVUkVfRVZFTlRTKQogICAgIHZpcnR1YWwgdm9pZCBnZXN0dXJlRXZlbnRXYXNOb3RI
YW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYkdlc3R1cmVFdmVudCYpID0gMDsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNDk5NzVjZTg1
YjU1YmNjZDcyMDQ4MzJiNTE3NmE1NDY4MWVlZDk4MS4uMTYxOGVmNTU4MzMxMDc4NDM0MzA5OGFk
MjVmZTU2NTlhODUxNWM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC03MTcxLDE2ICs3MTcxLDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lCiB2b2lk
IFdlYlBhZ2VQcm94eTo6dG91Y2hCYXJNZW51RGF0YUNoYW5nZWQoY29uc3QgVG91Y2hCYXJNZW51
RGF0YSYgdG91Y2hCYXJNZW51RGF0YSkKIHsKICAgICBtX3RvdWNoQmFyTWVudURhdGEgPSB0b3Vj
aEJhck1lbnVEYXRhOworICAgIG1fcGFnZUNsaWVudC50b3VjaEJhck1lbnVEYXRhRGlkQ2hhbmdl
KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaEJhck1lbnVJdGVtRGF0YUFkZGVkKGNv
bnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiB0b3VjaEJhck1lbnVJdGVtRGF0YSkKIHsKICAgICBt
X3RvdWNoQmFyTWVudURhdGEuYWRkTWVudUl0ZW0odG91Y2hCYXJNZW51SXRlbURhdGEpOworICAg
IG1fcGFnZUNsaWVudC50b3VjaEJhck1lbnVEYXRhRGlkQ2hhbmdlKCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojp0b3VjaEJhck1lbnVJdGVtRGF0YVJlbW92ZWQoY29uc3QgVG91Y2hCYXJNZW51
SXRlbURhdGEmIHRvdWNoQmFyTWVudUl0ZW1EYXRhKQogewogICAgIG1fdG91Y2hCYXJNZW51RGF0
YS5yZW1vdmVNZW51SXRlbSh0b3VjaEJhck1lbnVJdGVtRGF0YSk7CisgICAgbV9wYWdlQ2xpZW50
LnRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEludGVyYWN0V2l0aFRvdWNoQmFyTWVudUl0ZW0oY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEm
IHRvdWNoQmFyTWVudUl0ZW1EYXRhKQoreworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkSW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51SXRlbSh0b3VjaEJhck1lbnVJdGVt
RGF0YSksIG1fcGFnZUlEKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDBkNWM4ZTFhMTc3YThiNTA0MGIxMDRkMmYyNjhjMGFlOTc5ZWIwOWIu
LmRkMzA0M2Y5ZjRkNmQ4ZTUzNDUxNGFhY2UzNWExNTA5MTg4YmRlN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjMzLDEwICsxMjMzLDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGVkaXRvclN0YXRlQ2hhbmdlZChjb25zdCBFZGl0b3JTdGF0ZSYpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCB0b3VjaEJhck1lbnVEYXRhUmVtb3ZlZCgpOwogICAg
IHZvaWQgdG91Y2hCYXJNZW51RGF0YUNoYW5nZWQoY29uc3QgVG91Y2hCYXJNZW51RGF0YSYpOwog
ICAgIHZvaWQgdG91Y2hCYXJNZW51SXRlbURhdGFBZGRlZChjb25zdCBUb3VjaEJhck1lbnVJdGVt
RGF0YSYpOwogICAgIHZvaWQgdG91Y2hCYXJNZW51SXRlbURhdGFSZW1vdmVkKGNvbnN0IFRvdWNo
QmFyTWVudUl0ZW1EYXRhJik7CisgICAgdm9pZCBkaWRJbnRlcmFjdFdpdGhUb3VjaEJhck1lbnVJ
dGVtKGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJik7CiAjZW5kaWYKIAogICAgIHZvaWQgaGFz
U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9z
dCwgdWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRleHRJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IGIzMTM5NWE0ZTdkY2Q4NjNiYTRk
YjZlYTIzOTc3OTg0NzU5NzE3NWIuLmY5OGMyZTdmN2VlNmI0N2ZmZWE3MzQ3OTkyZDhjMjA0YzQ5
NTZlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5oCkBAIC0xMDQsNiArMTA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0U2VjdXJl
SW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJvdXRE
aXNjYXJkZWRDb21wb3NpdGlvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hh
bmdlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB0b3VjaEJhck1lbnVEYXRhRGlkQ2hhbmdlKCkgb3Zl
cnJpZGU7CiAKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0
IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpp
bmRleCBmMTZkOTBkOGRiZGQzMzg0NDk1NTUyZGMzYjNjM2I1NzQxZWVlMGY0Li45NGMzZmYzOGEx
YTNkNjJhZGVlMTQ4ZGE0NTNhZjEyZDcwZDdmY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC01MjcsNiArNTI3LDExIEBAIHZv
aWQgUGFnZUNsaWVudEltcGw6OnNlbGVjdGlvbkRpZENoYW5nZSgpCiAgICAgbV9pbXBsLT5zZWxl
Y3Rpb25EaWRDaGFuZ2UoKTsKIH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6dG91Y2hCYXJNZW51
RGF0YURpZENoYW5nZSgpCit7CisgICAgbV9pbXBsLT50b3VjaEJhck1lbnVEYXRhRGlkQ2hhbmdl
KCk7Cit9CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OndoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlX
ZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQogewogICAgIGlmIChhdXRv
IGdlc3R1cmVDb250cm9sbGVyID0gbV9pbXBsLT5nZXN0dXJlQ29udHJvbGxlcigpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhOTE4ZWM2ZTVk
YTVkYTIzNjI1NGQ1NzgyOTE2YWNlYTZkODFmMmI4Li5kN2Y0NjEwNTJlMDU1NzgyZDI5MmM0ZGZk
Njk2ODBmMjAxZWM4ZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtNTQwNCw2ICs1NDA0LDE0IEBAIHZvaWQgV2ViUGFnZTo6c2VuZFRvdWNo
QmFyTWVudUl0ZW1EYXRhUmVtb3ZlZFVwZGF0ZShIVE1MTWVudUl0ZW1FbGVtZW50JiBlbGVtZW50
CiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpUb3VjaEJhck1lbnVJdGVtRGF0
YVJlbW92ZWQoVG91Y2hCYXJNZW51SXRlbURhdGEge2VsZW1lbnR9KSk7CiB9CisKK3ZvaWQgV2Vi
UGFnZTo6ZGlkSW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51SXRlbShjb25zdCBUb3VjaEJhck1lbnVJ
dGVtRGF0YSYgdG91Y2hCYXJNZW51SXRlbURhdGEpCit7CisgICAgaWYgKGF1dG8qIGZyYW1lID0g
bWFpbkZyYW1lKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gZWxlbWVudCA9IGZyYW1lLT5kb2N1bWVu
dCgpLT5jdXJyZW50TWVudUVsZW1lbnQoKSkKKyAgICAgICAgICAgIGVsZW1lbnQtPmRpZEludGVy
YWN0V2l0aEl0ZW0odG91Y2hCYXJNZW51SXRlbURhdGEudGl0bGUpOworICAgIH0KK30KICNlbmRp
ZgogCiB2b2lkIFdlYlBhZ2U6OnNlbmRQYXJ0aWFsRWRpdG9yU3RhdGVBbmRTY2hlZHVsZVBvc3RM
YXlvdXRVcGRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDA5MDkxMjUzY2FiN2I4YmQyODYyNGMwZTc1ODAwYjcxYzM3NDMxMDUuLjViNDBkNjM1
ZWU2ZjdiNjI1Zjg0YjA5ZGFlNDUzNDRiODBkM2MwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQbHVn
aW4uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVt
b3J5LmgiCisjaW5jbHVkZSAiVG91Y2hCYXJNZW51SXRlbURhdGEuaCIKICNpbmNsdWRlICJVc2Vy
RGF0YS5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0FjdGl2aXR5U3RhdGUuaD4KQEAgLTEwNjAsNiArMTA2MSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZW5kVG91Y2hCYXJNZW51RGF0YVJlbW92ZWRVcGRhdGUoV2ViQ29yZTo6SFRNTE1lbnVF
bGVtZW50Jik7CiAgICAgdm9pZCBzZW5kVG91Y2hCYXJNZW51SXRlbURhdGFBZGRlZFVwZGF0ZShX
ZWJDb3JlOjpIVE1MTWVudUl0ZW1FbGVtZW50Jik7CiAgICAgdm9pZCBzZW5kVG91Y2hCYXJNZW51
SXRlbURhdGFSZW1vdmVkVXBkYXRlKFdlYkNvcmU6OkhUTUxNZW51SXRlbUVsZW1lbnQmKTsKKyAg
ICB2b2lkIGRpZEludGVyYWN0V2l0aFRvdWNoQmFyTWVudUl0ZW0oY29uc3QgVG91Y2hCYXJNZW51
SXRlbURhdGEmKTsKICNlbmRpZgogCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBmMmYxOGNiNTlj
OWY4ZDQ3YzU3MTJmYWUxOGUxMTk1OTU0ZTRkYTU2Li4zZTE5MjAzYWExYWRlMjc4ZWE3ZDI2ODE1
NDg5NTVlODZkMzFlNmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI4LDYgKzI4LDggQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJh
d3NCYWNrZ3JvdW5kKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgRGlkSW50ZXJhY3RXaXRo
VG91Y2hCYXJNZW51SXRlbShzdHJ1Y3QgV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0YSB0b3Vj
aEJhck1lbnVJdGVtRGF0YSkKKwogICAgIFNldFRvcENvbnRlbnRJbnNldEZlbmNlZChmbG9hdCBj
b250ZW50SW5zZXQsIElQQzo6QXR0YWNobWVudCBmZW5jZVBvcnQpCiAjZW5kaWYKICAgICBTZXRU
b3BDb250ZW50SW5zZXQoZmxvYXQgY29udGVudEluc2V0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM1ODliZGY3Yjc3NzNhZjBlZjBkMWMyYTE2
Y2U1MTdlZDExMzI5ZGYuLmI2YzMxYzA3NzliMGQ0ZTZjZmVmODNhOWUyOGQ5NjcwZDIyNzliOGMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNy0xMi0xNCAgQWlzaHdhcnlhIE5pcm1hbCAgPGFuaXJtYWxAYXBwbGUu
Y29tPgorCisgICAgICAgIFtUb3VjaCBCYXIgV2ViIEFQSV0gQWRkIHN1cHBvcnQgZm9yIGN1c3Rv
bSBUb3VjaCBCYXIgYnV0dG9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgwNTEzCisKKyAgICAgICAgVGVzdHMgZm9yIHRoZSBpbnNlcnRpb24gYW5k
IGNsaWNraW5nIG9mIGN1c3RvbSBUb3VjaCBCYXIgYnV0dG9ucworICAgICAgICB1c2luZyB0aGUg
V2ViS2l0IFRvdWNoIEJhciBBUEkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Ub3VjaEJh
ckFQSVRlc3RzLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldHVwVGVzdFdL
V2ViVmlldyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0xMi0wNiAg
RGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIg
QXBwIE1hbmlmZXN0XSBBZGQgU1BJIGZvciBmZXRjaGluZyB0aGUgbWFuaWZlc3QKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNjBiZGUyZDI3ZDFjNDJiYjRiZGNmMTVkYjgyYjEzNmM5ODY0NmRj
Ni4uNzk4MzA0YTZkOGUxMGExNGI3Y2JkZjJjNTI5ZjZkNzZjMzhkNWI5MyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTExMCw2ICsxMTAsNyBAQAogCQkyRUZGMDZDRDFEOEE0MjlBMDAwNEJC
MzAgLyogaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudC5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYwNkNDMUQ4QTQy
OTEwMDA0QkIzMCAvKiBpbnB1dC1maWVsZC1pbi1zY3JvbGxhYmxlLWRvY3VtZW50Lmh0bWwgKi87
IH07CiAJCTJFRkYwNkQ0MUQ4QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJWaWV3Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVGRjA2RDMxRDhBRURC
QjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcubW0gKi87IH07CiAJCTJFRkYwNkQ3MUQ4QUYzNEEw
MDA0QkIzMCAvKiBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYwNkQ2MUQ4QUYzNEEwMDA0QkIzMCAvKiBX
S1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbSAqLzsgfTsKKwkJMkZDN0NERTAxRkRCNEM4RTAwNURG
RjZEIC8qIFRvdWNoQmFyQVBJVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRkM3Q0RERTFGREI0QjUyMDA1REZGNkQgLyogVG91Y2hCYXJBUElU
ZXN0cy5tbSAqLzsgfTsKIAkJMzE1MTE4MTAxREIxQUU0MDAwMTc2MzA0IC8qIEV4dGVuZGVkQ29s
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE1
MTE4MEYxREIxQURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwICovOyB9OwogCQkzMTUy
MzFDQTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVQ29tbWFuZFF1ZXVlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE1MjMxQzkxRUIzQjNDNzAwQTIyQTE2
IC8qIEdQVUNvbW1hbmRRdWV1ZS5tbSAqLzsgfTsKIAkJMzE2MkFFOUMxRTZGMkZGNTAwMEU0REJD
IC8qIEdQVURldmljZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxNjJBRTlCMUU2RjJGQ0UwMDBFNERCQyAvKiBHUFVEZXZpY2UubW0gKi87IH07CkBA
IC0xMjA0LDYgKzEyMDUsOCBAQAogCQkyRUZGMDZEMjFEOEFFREJCMDAwNEJCMzAgLyogVGVzdFdL
V2ViVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0V0tXZWJWaWV3
Lmg7IHBhdGggPSBjb2NvYS9UZXN0V0tXZWJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJFRkYwNkQzMUQ4QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJWaWV3Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdFdLV2ViVmlldy5tbTsgcGF0
aCA9IGNvY29hL1Rlc3RXS1dlYlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJFRkYwNkQ2MUQ4QUYzNEEwMDA0QkIzMCAvKiBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0NhbmRpZGF0
ZVRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRkM3Q0RERTFGREI0QjUy
MDA1REZGNkQgLyogVG91Y2hCYXJBUElUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFRvdWNoQmFyQVBJVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTJGQzdDRERGMUZEQjRCNkIwMDVERkY2RCAvKiB0b3VjaC1iYXItYXBpLXRlc3Rz
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidG91Y2gtYmFyLWFwaS10ZXN0cy5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE1MTE4MEYxREIxQURENTAwMTc2
MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRXh0ZW5kZWRDb2xvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
NTIzMUM5MUVCM0IzQzcwMEEyMkExNiAvKiBHUFVDb21tYW5kUXVldWUubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVDb21tYW5kUXVldWUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNjJBRTlCMUU2RjJGQ0UwMDBFNERCQyAvKiBHUFVEZXZp
Y2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVEZXZpY2Uu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODQwLDYgKzI4NDMsNyBAQAogCQkJ
CTM3OTlBRDM5MTQxMjBBNDMwMDVFQjBDNiAvKiBTdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
RnJvbVN0cmluZy5tbSAqLywKIAkJCQk5MzlCRkUzOTE4RTU1NDg5MDA4ODMyNzUgLyogU3RyaW5n
VHJ1bmNhdG9yLm1tICovLAogCQkJCTM3QTY4OTVEMTQ4QTlCNTAwMDUxMDBGQSAvKiBTdWJyZXNv
dXJjZUVycm9yQ3Jhc2gubW0gKi8sCisJCQkJMkZDN0NEREUxRkRCNEI1MjAwNURGRjZEIC8qIFRv
dWNoQmFyQVBJVGVzdHMubW0gKi8sCiAJCQkJRTQ5MDI5NjcxNEUyRTNBNDAwMkJFREQxIC8qIFR5
cGluZ1N0eWxlQ3Jhc2gubW0gKi8sCiAJCQkJNTM2NzcwMzMxQ0M4MDIyODAwRDQyNUIxIC8qIFdl
YlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1tICovLAogCQkJCTUxRkJCQjRDMTUxM0Q0RTkwMDgy
MjczOCAvKiBXZWJWaWV3Q2FuUGFzdGVVUkwubW0gKi8sCkBAIC0yODg4LDYgKzI4OTIsNyBAQAog
CQkJCUE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdp
bmRvd0NoYW5nZXMuaHRtbCAqLywKIAkJCQk1MkI4Q0Y5NDE1ODY4Q0YwMDAyODEwNTMgLyogU2V0
RG9jdW1lbnRVUkkuaHRtbCAqLywKIAkJCQlFMTk0RTFCQzE3N0U1MzRBMDA5QzRENEUgLyogU3Rv
cExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgKi8sCisJCQkJMkZDN0NEREYxRkRC
NEI2QjAwNURGRjZEIC8qIHRvdWNoLWJhci1hcGktdGVzdHMuaHRtbCAqLywKIAkJCQlDNTQwRjc4
MzE1MkU1QTc4MDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sICovLAogCQkJCTUzNjc3MDM1
MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sICovLAog
CQkJCUNFMTRGMUEyMTgxODczQjAwMDFDMjcwNSAvKiBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
VG9VUkxDcmFzaC5odG1sICovLApAQCAtMzE3MSw2ICszMTc2LDcgQEAKIAkJCQkxQURBRDE1MDFE
NzdBOUY2MDAyMTI1ODYgLyogQmxvY2tQdHIubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREU5
QzFEMEE1OTBDMDBGRUJDRjMgLyogQmxvb21GaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M4M0RFQTAxRDBBNTkwQzAwRkVCQ0YzIC8qIENoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjMwQ0I1QzFGQ0UxNzk2MDA0QjUzMjMgLyogQ29uY3Vy
cmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFQzMxRDBBNTkwQzAw
RkVCQ0YzIC8qIENvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBNjFEMEE1
OTBDMDBGRUJDRjMgLyogQ291bnRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFQTkx
RDBBNTkwQzAwRkVCQ0YzIC8qIENTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTk1LDcg
KzMyMDEsNiBAQAogCQkJCTdDODNERUY2MUQwQTU5MEMwMEZFQkNGMyAvKiBNZXRhQWxsb2NhdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUZFMUQwQTU5MEMwMEZFQkNGMyAvKiBOYWtl
ZFB0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdENTRGMzFGMzM4QzM2MDBBOTdBQTcgLyog
TmV2ZXJEZXN0cm95ZWQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEYzMENCNUMxRkNFMTc5NjAw
NEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
ODNERjAxMUQwQTU5MEMwMEZFQkNGMyAvKiBPcHRpb25hbC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQTc3QkFBMzFEOUFGRkZDMDA1RkM1NjggLyogT3B0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNERjAyMUQwQTU5MEMwMEZFQkNGMyAvKiBPU09iamVjdFB0ci5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTM1MjcsNiArMzUzMiw3IEBACiAJCQkJOTNFNjE5M0IxRjkzMUIzQTAwQUYy
NDVFIC8qIFRleHRDb2RlYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTM1MjRGOTFCMTQ0MUM0
MDAyOEE3QzUgLyogVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUREMUE0MTFBOTIwMDQ0N0M0QyAvKiBUaW1lUmFuZ2VzLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTJGQzdDREUwMUZEQjRDOEUwMDVERkY2RCAvKiBUb3VjaEJhckFQSVRl
c3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDMxQTQxMUE3RTAwNDQ3QzRDIC8qIFR5
cGluZ1N0eWxlQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0I0MEI0RTFGNEI5OEQzMDA3
REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0Njg0OUJFMUVFRjU4
RTQwMEI5MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0cy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvVG91Y2hCYXJBUElUZXN0cy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1RvdWNoQmFyQVBJVGVzdHMubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjc3YWFkYjM1MjQ2OGU1MTdiOTM3MzRlOGU1NmEyNzMyNWMxMTRjOAotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1RvdWNoQmFyQVBJVGVzdHMu
bW0KQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIFdLX0FQSV9FTkFCTEVECisjaWYgSEFWRShUT1VDSF9CQVIpCisKKyNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJL
aXQvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdh
dGVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorCituYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4g
c2V0dXBUZXN0V0tXZWJWaWV3KCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAw
KV0pOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAoV0tQcmVmZXJlbmNlc1JlZilbW3dlYlZpZXcg
Y29uZmlndXJhdGlvbl0gcHJlZmVyZW5jZXNdOworICAgIFdLUHJlZmVyZW5jZXNTZXRNZW51SXRl
bUVsZW1lbnRFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKKyAgICByZXR1cm4gd2ViVmlldzsK
K30KKworVEVTVChUb3VjaEJhckFQSVRlc3RzLCBJbnNlcnRCdXR0b25zKQoreworICAgIGF1dG8g
d2ViVmlldyA9IHNldHVwVGVzdFdLV2ViVmlldygpOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpAIjxib2R5PjxtZW51IHR5cGU9XCJ0b3VjaGJhclwiPjxtZW51aXRl
bSB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9XCJCdXR0b25cIiBvbmNsaWNrPVwiYnV0dG9uT25DbGlj
aygpXCI+PC9tZW51aXRlbT48L21lbnU+PC9ib2R5PiJdOworICAgIE5TVG91Y2hCYXIgKnRvdWNo
QmFyID0gW3dlYlZpZXcgbWFrZVRvdWNoQmFyXTsKKyAgICBhdXRvIGlkZW50aWZpZXJzID0gdG91
Y2hCYXIuaXRlbUlkZW50aWZpZXJzOworICAgIHVuc2lnbmVkIGNvdW50ID0gW2lkZW50aWZpZXJz
IGNvdW50XTsKKyAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKSAxLCBjb3VudCk7Cit9CisKK1RFU1Qo
VG91Y2hCYXJBUElUZXN0cywgQ2xpY2tCdXR0b25zKQoreworICAgIGF1dG8gd2ViVmlldyA9IHNl
dHVwVGVzdFdLV2ViVmlldygpOworICAgIE5TU3RyaW5nICpib2R5ID0gQCI8Ym9keT48bWVudSB0
eXBlPVwidG91Y2hiYXJcIj48bWVudWl0ZW0gaWQ9XCJub3QtY2xpY2tlZFwiIHR5cGU9XCJidXR0
b25cIiB0aXRsZT1cIkJ1dHRvblwiXCI+PC9tZW51aXRlbT48L21lbnU+PC9ib2R5PiI7CisgICAg
TlNTdHJpbmcgKnNjcmlwdCA9IEAiPHNjcmlwdD5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZW51
aXRlbScpLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsgdGhpcy5pZCA9IFwiY2xpY2tlZFwiOyB9PC9z
Y3JpcHQ+IjsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCVAIiwgYm9keSwgc2NyaXB0XV07CisKKyAgICBOU1Rv
dWNoQmFyICp0b3VjaEJhciA9IFt3ZWJWaWV3IG1ha2VUb3VjaEJhcl07CisgICAgYXV0byB0ZW1w
bGF0ZUl0ZW1zID0gdG91Y2hCYXIudGVtcGxhdGVJdGVtczsKKyAgICBhdXRvIGl0ZW0gPSBbdGVt
cGxhdGVJdGVtcyBhbnlPYmplY3RdOworICAgIGF1dG8gKmJ1dHRvbiA9IGl0ZW0udmlldzsKKyAg
ICAKKyAgICBbKE5TQnV0dG9uICopYnV0dG9uIHBlcmZvcm1DbGljazooTlNCdXR0b24gKilidXR0
b25dOworCisgICAgYXV0byBuZXdJZCA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZW51aXRlbScpLmlkIl07CisgICAgRVhQ
RUNUX1NUUkVRKCJjbGlja2VkIiwgW25ld0lkIFVURjhTdHJpbmddKTsKK30KKworfQorCisjZW5k
aWYgLy8gSEFWRShUT1VDSF9CQVIpCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329380</attachid>
            <date>2017-12-14 12:18:21 -0800</date>
            <delta_ts>2017-12-15 16:29:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180513-20171214121820.patch</filename>
            <type>text/plain</type>
            <size>37109</size>
            <attacher name="Aishwarya Nirmal">anirmal</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIzNjRhYzIyOWJjNzgx
MDYzOWYzMTFjNWFjZTYwNTJiODZjNTQ1ZS4uNzY0YmIxNWZjODM2MzIyNTMwNWFiYzA5ODg4NWZm
OWM5NmI3MWE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTEyLTE0ICBBaXNo
d2FyeWEgTmlybWFsICA8YW5pcm1hbEBhcHBsZS5jb20+CisKKyAgICAgICAgW1RvdWNoIEJhciBX
ZWIgQVBJXSBBZGQgc3VwcG9ydCBmb3IgY3VzdG9tIFRvdWNoIEJhciBidXR0b25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA1MTMKKworICAgICAg
ICBBbGxvd3MgZm9yIHRoZSBtZW51IGVsZW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXN0b21p
emVkIHRvdWNoIGJhciB0bworICAgICAgICByZXNwb25kIHRvIHRvdWNoIGJhciBpbnRlcmFjdGlv
bnMgYW5kIGRpc3BhdGNoIHRoZSBhcHByb3ByaWF0ZSBldmVudC4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9Ub3VjaEJhckFQSVRlc3RzLm1tCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEN1cnJlbnRNZW51RWxlbWVudCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3VycmVu
dE1lbnVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNZW51RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVudUVsZW1lbnQ6OmRpZEludGVyYWN0V2l0aEl0ZW0pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lbnVFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVudUVsZW1lbnQuaDoKKwogMjAxNy0xMi0wNiAgRGF2aWQgUXVl
c2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQXBwIE1hbmlm
ZXN0XSBBZGQgU1BJIGZvciBmZXRjaGluZyB0aGUgbWFuaWZlc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDQ1NWQ1
NzBlMWQ5MTUzN2NkOTJkZDdiOWQ4M2I0MDc0MzY2NmU2MS4uMjU4M2MzNjlkNTI3YmQ0NzYyZjcz
Nzg5NWVkNDIyZWUwZDZmMjYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxNy0xMi0x
NCAgQWlzaHdhcnlhIE5pcm1hbCAgPGFuaXJtYWxAYXBwbGUuY29tPgorCisgICAgICAgIFtUb3Vj
aCBCYXIgV2ViIEFQSV0gQWRkIHN1cHBvcnQgZm9yIGN1c3RvbSBUb3VjaCBCYXIgYnV0dG9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTEzCisK
KyAgICAgICAgQWRkcyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIFdlYiBhbmQgVUkgcHJvY2Vz
c2VzIHNvIHRoYXQgY3VzdG9tIGJ1dHRvbnMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSB0
b3VjaCBiYXIgYW5kIGNhbiB0cmlnZ2VyIGFjdGlvbnMgd2hlbiB0YXBwZWQuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvVG91Y2hCYXJN
ZW51RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoQmFyTWVudURhdGE6OlRvdWNoQmFy
TWVudURhdGEpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVEYXRhOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVEYXRhOjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9Ub3VjaEJhck1lbnVEYXRhLmg6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoQmFy
TWVudURhdGE6OnNldElEKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvVG91Y2hCYXJNZW51
SXRlbURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0YTo6VG91
Y2hCYXJNZW51SXRlbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVtRGF0
YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VG91Y2hCYXJNZW51SXRlbURhdGE6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmg6CisgICAg
ICAgIChXZWJLaXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAg
ICAgICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uIGdldERhdGFdKToKKyAgICAg
ICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uIHNldERhdGE6XSk6CisgICAgICAg
ICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIGluaXRXaXRoV2ViVmll
d0ltcGw6XSk6CisgICAgICAgICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9s
bGVyIGRpZERlc3Ryb3lWaWV3XSk6CisgICAgICAgICgtW1dLUGFnZUN1c3RvbWl6ZWRUb3VjaEJh
ckl0ZW1Db250cm9sbGVyIHRvdWNoQmFyTWVudUl0ZW1UYXBwZWQ6XSk6CisgICAgICAgICgtW1dL
UGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHRvdWNoQmFyOm1ha2VJdGVtRm9y
SWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNv
bnRyb2xsZXIgaXRlbUZvcklkZW50aWZpZXI6XSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjp1cGRhdGVUb3VjaEJhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRV
cFBhZ2VDdXN0b21pemVkVG91Y2hCYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dXBkYXRlUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpzZWxlY3Rpb25EaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6dG91Y2hCYXJNZW51RGF0YURpZENo
YW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6dG91Y2hCYXJNZW51RGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkSW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51
SXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
dG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRJbnRlcmFjdFdpdGhU
b3VjaEJhck1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDE3LTEyLTA2ICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFkZCBTUEkgZm9yIGZldGNoaW5nIHRoZSBtYW5pZmVz
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZGJlMzRkODMyMDEzMDA1ZmU0OTgzMTA5ZTNj
MDY0MjExMWQ4MTg0MC4uZWU0M2VkNDc1YzY5ZGRhODc3MDdlZGQyNTVlZDkwYzk2ZmMzZWMxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC05MCw2ICs5MCw3IEBACiAjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWVudUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgi
CiAjaW5jbHVkZSAiSFRNTFBpY3R1cmVFbGVtZW50LmgiCkBAIC0xMDExLDYgKzEwMTIsMTEgQEAg
RXhjZXB0aW9uT3I8UmVmPE5vZGU+PiBEb2N1bWVudDo6YWRvcHROb2RlKE5vZGUmIHNvdXJjZSkK
ICAgICByZXR1cm4gUmVmPE5vZGU+IHsgc291cmNlIH07CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnNl
dEN1cnJlbnRNZW51RWxlbWVudChSZWZQdHI8SFRNTE1lbnVFbGVtZW50PiYmIGVsZW1lbnQpCit7
CisgICAgbV9jdXJyZW50TWVudUVsZW1lbnQgPSBlbGVtZW50OworfQorCiBib29sIERvY3VtZW50
OjpoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lbnRzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1l
KQogewogICAgIC8vIFRoZXNlIGNoZWNrcyBhcmUgZnJvbSBET00gQ29yZSBMZXZlbCAyLCBjcmVh
dGVFbGVtZW50TlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOTJlNmZlYWE0ODQ3MWUyZDI5NzFh
NDkyMjM5OWY1ZDA2ZGQyOWQ5NS4uMzMwYTM0NDc2NTZiM2NjZjRjNzE3NGY4OTkzYTAwODEwMDIz
OWJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBjbGFzcyBIVE1M
SUZyYW1lRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxl
bWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBIVE1MTWVudUVsZW1lbnQ7CiBj
bGFzcyBIVE1MUGljdHVyZUVsZW1lbnQ7CiBjbGFzcyBIVE1MU2NyaXB0RWxlbWVudDsKIGNsYXNz
IEhpdFRlc3RSZXF1ZXN0OwpAQCAtNDc2LDYgKzQ3Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGlz
VGltZXJUaHJvdHRsaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaW1lclRocm90dGxp
bmdFbmFibGVkOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8Tm9kZT4+
IGFkb3B0Tm9kZShOb2RlJiBzb3VyY2UpOworICAgIHZvaWQgc2V0Q3VycmVudE1lbnVFbGVtZW50
KFJlZlB0cjxIVE1MTWVudUVsZW1lbnQ+JiYpOworICAgIFJlZlB0cjxIVE1MTWVudUVsZW1lbnQ+
JiBjdXJyZW50TWVudUVsZW1lbnQoKSB7IHJldHVybiBtX2N1cnJlbnRNZW51RWxlbWVudDsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhUTUxDb2xsZWN0aW9uPiBpbWFnZXMoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8SFRNTENvbGxlY3Rpb24+IGVtYmVkcygpOwpAQCAtMTg2OCw2ICsx
ODcxLDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmUHRy
PFNXQ2xpZW50Q29ubmVjdGlvbj4gbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbjsKICNlbmRpZgor
CisgICAgUmVmUHRyPEhUTUxNZW51RWxlbWVudD4gbV9jdXJyZW50TWVudUVsZW1lbnQ7CiB9Owog
CiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVudCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwCmluZGV4IDYyMTIyOTRlMTNlZjRjODFi
ZTU2ODUyZTQzMmVmMDJiODM2YjQ2ZjQuLjI0ZmI0M2ZkNTkyYjJhNmExYThjMWQwN2QwYTgwOGY3
ZDI0ZTRmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAKQEAgLTI2
LDkgKzI2LDEyIEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRNTE1lbnVJdGVtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1Nb3VzZUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsMTAgKzQzLDI5
IEBAIGlubGluZSBIVE1MTWVudUVsZW1lbnQ6OkhUTUxNZW51RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYKICAgICBBU1NFUlQoaGFzVGFnTmFtZShtZW51VGFn
KSk7CiB9CiAKK3ZvaWQgSFRNTE1lbnVFbGVtZW50OjpkaWRJbnRlcmFjdFdpdGhJdGVtKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkubWVudUl0ZW1FbGVtZW50RW5hYmxlZCgpKQorICAgICAgICByZXR1
cm47CisgICAgUmVmUHRyPEhUTUxNZW51SXRlbUVsZW1lbnQ+IHRhcHBlZEl0ZW07CisgICAgZm9y
IChhdXRvJiBpdGVtIDogY2hpbGRyZW5PZlR5cGU8SFRNTE1lbnVJdGVtRWxlbWVudD4oKnRoaXMp
KSB7CisgICAgICAgIGlmIChpdGVtLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odGl0
bGVBdHRyKSA9PSBpZGVudGlmaWVyKSB7CisgICAgICAgICAgICB0YXBwZWRJdGVtID0gJml0ZW07
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXRhcHBlZEl0
ZW0pCisgICAgICAgIHJldHVybjsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgcGxhdGZvcm1FdmVu
dChJbnRQb2ludCB7IH0sIEludFBvaW50IHsgfSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6
TW91c2VQcmVzc2VkLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5v
dygpLCAwLCBTeW50aGV0aWNDbGlja1R5cGU6Ok5vVGFwKTsKKyAgICBSZWY8TW91c2VFdmVudD4g
bW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwg
ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBwbGF0Zm9ybUV2ZW50LCAwLCAwKTsKKyAgICB0YXBw
ZWRJdGVtLT5kaXNwYXRjaEV2ZW50KG1vdXNlRXZlbnQpOworfQorCiBOb2RlOjpJbnNlcnRlZElu
dG9BbmNlc3RvclJlc3VsdCBIVE1MTWVudUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKElu
c2VydGlvblR5cGUgdHlwZSwgQ29udGFpbmVyTm9kZSYgYW5jZXN0b3IpCiB7CiAgICAgYXV0byBy
ZXN1bHQgPSBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IodHlwZSwgYW5jZXN0b3Ip
OwogICAgIGlmICh0eXBlLmNvbm5lY3RlZFRvRG9jdW1lbnQgJiYgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5tZW51SXRlbUVsZW1lbnRFbmFibGVkKCkgJiYgbV9pc1Rv
dWNoQmFyTWVudSkgeworICAgICAgICBkb2N1bWVudCgpLnNldEN1cnJlbnRNZW51RWxlbWVudCh0
aGlzKTsKICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKICAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmRpZEluc2VydE1lbnVFbGVtZW50KCp0aGlz
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuaAppbmRleCAxYWQ5MGUz
NDllMGMxZjAxNWVmODhiZmZmYTFlZDc4Mzg1NzMwMDVlLi45NjlmMThlNDE4ODdhMzI1YzlkNTgw
NGJhOGM2MjdkYTJmYjBmNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZW51RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmgK
QEAgLTMwLDYgKzMwLDcgQEAgY2xhc3MgSFRNTE1lbnVFbGVtZW50IGZpbmFsIDogcHVibGljIEhU
TUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxNZW51RWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlkSW50ZXJhY3RXaXRoSXRlbShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRp
Zmllcik7CiAgICAgYm9vbCBpc1RvdWNoQmFyTWVudSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUb3Vj
aEJhck1lbnU7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RvdWNoQmFyTWVudURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51
RGF0YS5jcHAKaW5kZXggNzUyNDc2M2UzNWFiMTdlMmI1ZDRjNWNiZmMyMzMwNDNmMDA0M2QyMS4u
NzFiODlkNmMwMzZiYjFlY2JmZDk3N2Q1NjMyODQyMzUwN2ZlNDExOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5jcHAKQEAgLTQwLDEwICs0MCw2IEBAIFRvdWNoQmFy
TWVudURhdGE6OlRvdWNoQmFyTWVudURhdGEoY29uc3QgV2ViQ29yZTo6SFRNTE1lbnVFbGVtZW50
JiBlbGVtZW50KQogICAgIGlmICghZWxlbWVudC5pc1RvdWNoQmFyTWVudSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAvLyBGSVhNRTogV2UgY2FuJ3QgcmVseSBvbiB1c2luZyB0aGUgJ2lkJyBh
dHRyaWJ1dGUgb2YgdGhlIGVsZW1lbnQgaGVyZSB0byBkaXN0aW5ndWlzaAotICAgIC8vIGJldHdl
ZW4gZGlmZmVyZW50IG1lbnUgaXRlbXMuIEZvciBpbnN0YW5jZSwgYSBtZW51aXRlbSBtYXkgaGF2
ZSB0aGUgc2FtZSAnaWQnIGFzCi0gICAgLy8gYW5vdGhlciwgb3IgaGF2ZSBubyAnaWQnIGF0IGFs
bC4KLSAgICBtX2lkID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdl
YkNvcmU6OkhUTUxOYW1lczo6aWRBdHRyKTsKICAgICBtX2lzUGFnZUN1c3RvbWl6ZWQgPSB0cnVl
OwogfQogICAgIApAQCAtNjAsMTEgKzU2LDE3IEBAIHZvaWQgVG91Y2hCYXJNZW51RGF0YTo6cmVt
b3ZlTWVudUl0ZW0oY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIGRhdGEpCiB2b2lkIFRvdWNo
QmFyTWVudURhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCBtX2l0ZW1zOworICAgIGVuY29kZXIgPDwgbV9pc1BhZ2VDdXN0b21pemVkOwog
fQogCiBib29sIFRvdWNoQmFyTWVudURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
IFRvdWNoQmFyTWVudURhdGEmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKGRh
dGEubV9pdGVtcyk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1faXRlbXMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1faXNQYWdl
Q3VzdG9taXplZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwog
fQogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51
RGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5oCmluZGV4IDhm
YzIyOWJhODBjODFiODA5MGMyMjE3Y2ZiZGVkZmIwYmY0NDg5YzMuLmYzNzRlNGM5MWJjMjJjYzVh
MWRhODc4YjZiOGYxMmE2Mzc3NjU0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RvdWNoQmFyTWVudURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1l
bnVEYXRhLmgKQEAgLTUyLDE0ICs1MiwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBlbmNv
ZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVj
b2RlciYsIFRvdWNoQmFyTWVudURhdGEmKTsKLSAgICAKLSAgICB2b2lkIHNldElEKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllcikgeyBtX2lkID0gaWRlbnRpZmllcjsgfQorCiAgICAgYm9vbCBpc1Bh
Z2VDdXN0b21pemVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1BhZ2VDdXN0b21pemVkOyB9CiAgICAg
dm9pZCBzZXRJc1BhZ2VDdXN0b21pemVkKGJvb2wgY3VzdG9taXplZCkgeyBtX2lzUGFnZUN1c3Rv
bWl6ZWQgPSBjdXN0b21pemVkOyB9CiAgICAgCiBwcml2YXRlOgogICAgIFZlY3RvcjxUb3VjaEJh
ck1lbnVJdGVtRGF0YT4gbV9pdGVtczsKLSAgICBTdHJpbmcgbV9pZDsKICAgICAKICAgICBib29s
IG1faXNQYWdlQ3VzdG9taXplZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwCmluZGV4IGQwMjI2YmI5YTllYzFiYWUxODM1YmJk
ZGUxMzQ4YzEyODY2YmQxMDMuLjYzZWE4ZDFkMmI5ZjYxNzhlODRkMDEwYTQ5ZjhiMDRlMzkyYzAy
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIEl0ZW1UeXBlIGl0ZW1UeXBlKGNvbnN0IFN0cmluZyYp
CiBUb3VjaEJhck1lbnVJdGVtRGF0YTo6VG91Y2hCYXJNZW51SXRlbURhdGEoY29uc3QgV2ViQ29y
ZTo6SFRNTE1lbnVJdGVtRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICB0eXBlID0gaXRlbVR5cGUo
ZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1l
czo6dHlwZUF0dHIpKTsKLSAgICBpZGVudGlmaWVyID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6aWRBdHRyKTsKKyAgICB0aXRsZSA9
IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFt
ZXM6OnRpdGxlQXR0cik7CiAgICAgcHJpb3JpdHkgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjp2YWx1ZUF0dHIpLnRvRmxvYXQoKTsK
IH0KIApAQCAtNDksNyArNDksNyBAQCB2b2lkIFRvdWNoQmFyTWVudUl0ZW1EYXRhOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIuZW5jb2RlRW51bSh0
eXBlKTsKICAgICAKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCB0
aXRsZTsKICAgICBlbmNvZGVyIDw8IHByaW9yaXR5OwogfQogCkBAIC01OSw3ICs1OSw3IEBAIHN0
ZDo6b3B0aW9uYWw8VG91Y2hCYXJNZW51SXRlbURhdGE+IFRvdWNoQmFyTWVudUl0ZW1EYXRhOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0
LnR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnRpdGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wcmlvcml0eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuaAppbmRleCAyMzhlNjM2Mzc3NGU3YjUzYWY4NmUwYWMx
Mzc2ZmYxYjIwNWMzYTBjLi5iMjMzZjEwOThhMTM0NmY4ODgyM2YxZjk5Yzk4ZWZlMzEzNWQ5NjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmgKQEAgLTUy
LDcgKzUyLDcgQEAgc3RydWN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhIHsKICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwog
ICAgIAogICAgIEl0ZW1UeXBlIHR5cGUgeyBJdGVtVHlwZTo6QnV0dG9uIH07Ci0gICAgU3RyaW5n
IGlkZW50aWZpZXI7CisgICAgU3RyaW5nIHRpdGxlOwogICAgIGZsb2F0IHByaW9yaXR5IHsgMC4w
IH07CiAgICAgYm9vbCB2YWxpZFRvdWNoQmFyRGlzcGxheSB7IHRydWUgfTsKIH07CkBAIC04MSw3
ICs4MSw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgVG91Y2hCYXJNZW51SXRlbURh
dGEmIGxocywgY29uc3QgVG91Y2hCYXJNZW51SXRlbURhCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiBsaHMsIGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1E
YXRhJiByaHMpCiB7CiAgICAgcmV0dXJuIGxocy50eXBlID09IHJocy50eXBlCi0gICAgICAgICYm
IGxocy5pZGVudGlmaWVyID09IHJocy5pZGVudGlmaWVyCisgICAgICAgICYmIGxocy50aXRsZSA9
PSByaHMudGl0bGUKICAgICAgICAgJiYgbGhzLnByaW9yaXR5ID09IHJocy5wcmlvcml0eTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggNzg3
YmE1MjY5YTNkMzExMzI4YmZiMjVmYjk5ZTc4MmFkOTFhOWFhOS4uYTFjZTM4MWU5MmYxZjAwZWI3
YzRlNDlmZmMxMWE0NWQ1NGRhNGMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5oCkBAIC02Myw2ICs2Myw3IEBAIE9CSkNfQ0xBU1MgTlNDdXN0b21Ub3Vj
aEJhckl0ZW07CiBPQkpDX0NMQVNTIE5TVG91Y2hCYXI7CiBPQkpDX0NMQVNTIE5TVG91Y2hCYXJJ
dGVtOwogT0JKQ19DTEFTUyBOU1BvcG92ZXJUb3VjaEJhckl0ZW07CitPQkpDX0NMQVNTIFdLUGFn
ZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyOwogT0JKQ19DTEFTUyBXS1RleHRUb3Vj
aEJhckl0ZW1Db250cm9sbGVyOwogT0JKQ19DTEFTUyBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdl
cjsKICNlbmRpZiAvLyBIQVZFKFRPVUNIX0JBUikKQEAgLTI5NCw2ICsyOTUsNyBAQCBwdWJsaWM6
CiAgICAgaWQgdmFsaWRSZXF1ZXN0b3JGb3JTZW5kQW5kUmV0dXJuVHlwZXMoTlNTdHJpbmcgKnNl
bmRUeXBlLCBOU1N0cmluZyAqcmV0dXJuVHlwZSk7CiAgICAgdm9pZCBjZW50ZXJTZWxlY3Rpb25J
blZpc2libGVBcmVhKCk7CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKTsKKyAgICB2b2lk
IHRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKTsKICAgICB2b2lkIGRpZEJlY29tZUVkaXRhYmxl
KCk7CiAgICAgdm9pZCB1cGRhdGVGb250UGFuZWxJZk5lZWRlZCgpOwogICAgIHZvaWQgY2hhbmdl
Rm9udEZyb21Gb250UGFuZWwoKTsKQEAgLTU0MCw4ICs1NDIsMTAgQEAgcHVibGljOgogcHJpdmF0
ZToKICNpZiBIQVZFKFRPVUNIX0JBUikKICAgICB2b2lkIHNldFVwVGV4dFRvdWNoQmFyKE5TVG91
Y2hCYXIgKik7CisgICAgdm9pZCBzZXRVcFBhZ2VDdXN0b21pemVkVG91Y2hCYXIoTlNUb3VjaEJh
ciAqKTsKICAgICB2b2lkIHVwZGF0ZVRleHRUb3VjaEJhcigpOwogICAgIHZvaWQgdXBkYXRlTWVk
aWFUb3VjaEJhcigpOworICAgIHZvaWQgdXBkYXRlUGFnZUN1c3RvbWl6ZWRUb3VjaEJhcigpOwog
CiAgICAgYm9vbCB1c2VNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KCkgY29uc3Q7CiAgICAgYm9v
bCBpc1JpY2hseUVkaXRhYmxlKCkgY29uc3Q7CkBAIC01NTYsNyArNTYwLDkgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8TlNUb3VjaEJhcj4gbV9yaWNoVGV4dFRvdWNoQmFyOwogICAgIFJldGFp
blB0cjxOU1RvdWNoQmFyPiBtX3BsYWluVGV4dFRvdWNoQmFyOwogICAgIFJldGFpblB0cjxOU1Rv
dWNoQmFyPiBtX3Bhc3N3b3JkVGV4dFRvdWNoQmFyOworICAgIFJldGFpblB0cjxOU1RvdWNoQmFy
PiBtX3BhZ2VDdXN0b21pemVkVG91Y2hCYXI7CiAgICAgUmV0YWluUHRyPFdLVGV4dFRvdWNoQmFy
SXRlbUNvbnRyb2xsZXI+IG1fdGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXI7CisgICAgUmV0YWlu
UHRyPFdLUGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyPiBtX3BhZ2VDdXN0b21p
emVkVG91Y2hCYXJJdGVtQ29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8TlNDYW5kaWRhdGVMaXN0
VG91Y2hCYXJJdGVtPiBtX3JpY2hUZXh0Q2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbTsKICAgICBS
ZXRhaW5QdHI8TlNDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtPiBtX3BsYWluVGV4dENhbmRpZGF0
ZUxpc3RUb3VjaEJhckl0ZW07CiAgICAgUmV0YWluUHRyPE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFy
SXRlbT4gbV9wYXNzd29yZFRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAyZWYwZjFhNjUxNzUw
YTEzNGRlZDIxM2MyMmRkYmUxZGUxMzdiODZiLi40M2RkNzVhNmEyNGEwMTEyYzA1ZWUzZWU1MGRi
ZDIzODMzMzk2YWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQpAQCAtNDksNiArNDksOCBAQAogI2ltcG9ydCAiVGV4dENoZWNrZXIuaCIKICNpbXBv
cnQgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbXBvcnQgIlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHkuaCIKKyNpbXBvcnQgIlRvdWNoQmFyTWVudURhdGEuaCIKKyNpbXBvcnQgIlRv
dWNoQmFyTWVudUl0ZW1EYXRhLmgiCiAjaW1wb3J0ICJVSUdhbWVwYWRQcm92aWRlci5oIgogI2lt
cG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJJbnRlcm5hbC5oIgpAQCAtNjA0LDYgKzYwNiw3MSBAQCBzdGF0aWMgY29uc3Qg
TlNVSW50ZWdlciBvcmRlcmVkTGlzdFNlZ21lbnQgPSAyOwogCiBAZW5kCiAKK0BpbnRlcmZhY2Ug
V0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uIDogTlNCdXR0b24geworQHByaXZhdGUKKyAg
ICBUb3VjaEJhck1lbnVJdGVtRGF0YSBkYXRhOworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24g
V0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9uCistIChjb25zdCBUb3VjaEJhck1lbnVJdGVt
RGF0YSYpZ2V0RGF0YQoreworICAgIHJldHVybiBkYXRhOworfQorCistICh2b2lkKXNldERhdGE6
KGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiltZW51SXRlbURhdGEKK3sKKyAgICBkYXRhID0g
bWVudUl0ZW1EYXRhOworfQorCitAZW5kCisKK0BpbnRlcmZhY2UgV0tQYWdlQ3VzdG9taXplZFRv
dWNoQmFySXRlbUNvbnRyb2xsZXIgOiBOU1RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyPE5TVG91
Y2hCYXJEZWxlZ2F0ZT4geworQHByaXZhdGUKKyAgICBXZWJWaWV3SW1wbCogX3dlYlZpZXdJbXBs
OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3SW1wbDooV2ViVmlld0ltcGwq
KXdlYlZpZXdJbXBsOworLSAodm9pZCl0b3VjaEJhck1lbnVJdGVtVGFwcGVkOihXS1BhZ2VDdXN0
b21pemVkVG91Y2hCYXJCdXR0b24gKilidXR0b247CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBX
S1BhZ2VDdXN0b21pemVkVG91Y2hCYXJJdGVtQ29udHJvbGxlcgorLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoV2ViVmlld0ltcGw6KFdlYlZpZXdJbXBsKil3ZWJWaWV3SW1wbAoreworICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3dlYlZp
ZXdJbXBsID0gd2ViVmlld0ltcGw7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClk
aWREZXN0cm95VmlldworeworICAgIF93ZWJWaWV3SW1wbCA9IG51bGxwdHI7Cit9CisKKy0gKHZv
aWQpdG91Y2hCYXJNZW51SXRlbVRhcHBlZDooV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFyQnV0dG9u
ICopYnV0dG9uCit7CisgICAgaWYgKCFfd2ViVmlld0ltcGwpCisgICAgICAgIHJldHVybjsKKyAg
ICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5kaWRJbnRlcmFjdFdpdGhUb3VjaEJhck1lbnVJdGVtKFti
dXR0b24gZ2V0RGF0YV0pOworfQorCisjcHJhZ21hIG1hcmsgTlNUb3VjaEJhckRlbGVnYXRlCisK
Ky0gKE5TVG91Y2hCYXJJdGVtICopdG91Y2hCYXI6KE5TVG91Y2hCYXIgKil0b3VjaEJhciBtYWtl
SXRlbUZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgoreworICAgIHJldHVybiBb
c2VsZiBpdGVtRm9ySWRlbnRpZmllcjppZGVudGlmaWVyXTsKK30KKworLSAobnVsbGFibGUgTlNU
b3VjaEJhckl0ZW0gKilpdGVtRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyCit7
CisgICAgcmV0dXJuIFtzdXBlciBpdGVtRm9ySWRlbnRpZmllcjppZGVudGlmaWVyXTsKK30KKwor
QGVuZAorCiBAaW50ZXJmYWNlIFdLVGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgOiBOU1RleHRU
b3VjaEJhckl0ZW1Db250cm9sbGVyIDxOU0NhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW1EZWxlZ2F0
ZSwgTlNUb3VjaEJhckRlbGVnYXRlPiB7CiBAcHJpdmF0ZQogICAgIEJPT0wgX3RleHRJc0JvbGQ7
CkBAIC04OTgsNiArOTY1LDEwIEBAIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZVRvdWNoQmFyKCkK
ICAgICAgICAgW21fbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyBzZXRQbGF5YmFja0NvbnRyb2xz
Q29udHJvbGxlcjpuaWxdOwogICAgIH0KICNlbmRpZgorICAgIGVsc2UgaWYgKG1fcGFnZS0+dG91
Y2hCYXJNZW51RGF0YSgpLmlzUGFnZUN1c3RvbWl6ZWQoKSkgeworICAgICAgICB1cGRhdGVQYWdl
Q3VzdG9taXplZFRvdWNoQmFyKCk7CisgICAgICAgIHRvdWNoQmFyID0gbV9wYWdlQ3VzdG9taXpl
ZFRvdWNoQmFyLmdldCgpOworICAgIH0KIAogICAgIGlmICh0b3VjaEJhciA9PSBtX2N1cnJlbnRU
b3VjaEJhcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTAyOCw2ICsxMDk5LDI1IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnNldFVwVGV4dFRvdWNoQmFyKE5TVG91Y2hCYXIgKnRvdWNoQmFyKQogICAgICAg
ICB0ZXh0Rm9ybWF0SXRlbS5ncm91cFRvdWNoQmFyLmN1c3RvbWl6YXRpb25JZGVudGlmaWVyID0g
QCJXS1RleHRGb3JtYXRUb3VjaEJhciI7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnNldFVwUGFn
ZUN1c3RvbWl6ZWRUb3VjaEJhcihOU1RvdWNoQmFyICp0b3VjaEJhcikKK3sKKyAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlU2V0PE5TVG91Y2hCYXJJdGVtICo+PiB0ZW1wbGF0ZUl0ZW1zID0gYWRvcHRO
UyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheTxOU1RvdWNoQmFySXRlbUlkZW50aWZpZXI+PiBkZWZhdWx0SXRlbXMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX3Bh
Z2UtPnRvdWNoQmFyTWVudURhdGEoKS5pdGVtcygpKSB7CisgICAgICAgIGlmIChpdGVtLnR5cGUg
IT0gSXRlbVR5cGU6OkJ1dHRvbikgLy8gQ3VycmVudGx5IG9ubHkgYnV0dG9uIGlzIHN1cHBvcnRl
ZC4KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSZXRhaW5QdHI8TlNDdXN0b21Ub3Vj
aEJhckl0ZW0+IHRvdWNoQmFySXRlbSA9IGFkb3B0TlMoW1tOU0N1c3RvbVRvdWNoQmFySXRlbSBh
bGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOml0ZW0udGl0bGVdKTsKKyAgICAgICAgV0tQYWdlQ3Vz
dG9taXplZFRvdWNoQmFyQnV0dG9uICpidXR0b24gPSBbV0tQYWdlQ3VzdG9taXplZFRvdWNoQmFy
QnV0dG9uIGJ1dHRvbldpdGhUaXRsZTppdGVtLnRpdGxlIHRhcmdldDptX3BhZ2VDdXN0b21pemVk
VG91Y2hCYXJJdGVtQ29udHJvbGxlci5nZXQoKSBhY3Rpb246QHNlbGVjdG9yKHRvdWNoQmFyTWVu
dUl0ZW1UYXBwZWQ6KV07CisgICAgICAgIFtidXR0b24gc2V0RGF0YTppdGVtXTsKKyAgICAgICAg
dG91Y2hCYXJJdGVtLmdldCgpLnZpZXcgPSBidXR0b247CisgICAgICAgIFt0ZW1wbGF0ZUl0ZW1z
IGFkZE9iamVjdDp0b3VjaEJhckl0ZW0uZ2V0KCldOworICAgICAgICBbZGVmYXVsdEl0ZW1zIGFk
ZE9iamVjdDp0b3VjaEJhckl0ZW0uZ2V0KCkuaWRlbnRpZmllcl07CisgICAgfQorICAgIFt0b3Vj
aEJhciBzZXREZWxlZ2F0ZTptX3BhZ2VDdXN0b21pemVkVG91Y2hCYXJJdGVtQ29udHJvbGxlci5n
ZXQoKV07CisgICAgW3RvdWNoQmFyIHNldFRlbXBsYXRlSXRlbXM6dGVtcGxhdGVJdGVtcy5nZXQo
KV07CisgICAgW3RvdWNoQmFyIHNldERlZmF1bHRJdGVtSWRlbnRpZmllcnM6ZGVmYXVsdEl0ZW1z
LmdldCgpXTsKK30KKwogYm9vbCBXZWJWaWV3SW1wbDo6aXNSaWNobHlFZGl0YWJsZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRSaWNobHlFZGl0
YWJsZSAmJiAhbV9wYWdlLT5uZWVkc1BsYWluVGV4dFF1aXJrKCk7CkBAIC0xMTQ0LDYgKzEyMzQs
MTYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlVGV4dFRvdWNoQmFyKCkKICAgICB9CiB9CiAK
K3ZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZVBhZ2VDdXN0b21pemVkVG91Y2hCYXIoKQoreworICAg
IGlmICghbV9wYWdlQ3VzdG9taXplZFRvdWNoQmFySXRlbUNvbnRyb2xsZXIpCisgICAgICAgIG1f
cGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyID0gYWRvcHROUyhbW1dLUGFnZUN1
c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFdlYlZpZXdJbXBs
OnRoaXNdKTsKKyAgICBpZiAoIW1fcGFnZUN1c3RvbWl6ZWRUb3VjaEJhcikgeworICAgICAgICBt
X3BhZ2VDdXN0b21pemVkVG91Y2hCYXIgPSBhZG9wdE5TKFtbTlNUb3VjaEJhciBhbGxvY10gaW5p
dF0pOworICAgICAgICBzZXRVcFBhZ2VDdXN0b21pemVkVG91Y2hCYXIobV9wYWdlQ3VzdG9taXpl
ZFRvdWNoQmFyLmdldCgpKTsKKyAgICB9Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZU1l
ZGlhVG91Y2hCYXIoKQogewogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdF
UikgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQpAQCAtMTMzNCw2ICsxNDM0LDcg
QEAgV2ViVmlld0ltcGw6On5XZWJWaWV3SW1wbCgpCiAKICNpZiBIQVZFKFRPVUNIX0JBUikKICAg
ICBbbV90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBkaWREZXN0cm95Vmlld107CisgICAgW21f
cGFnZUN1c3RvbWl6ZWRUb3VjaEJhckl0ZW1Db250cm9sbGVyIGRpZERlc3Ryb3lWaWV3XTsKICNp
ZiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpCiAgICAgW21fbWVkaWFUb3Vj
aEJhclByb3ZpZGVyIHNldFBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOm5pbF07CiAgICAgW21f
bWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyBzZXRQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlcjpu
aWxdOwpAQCAtMjYxNSw2ICsyNzE2LDE0IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNlbGVjdGlvbkRp
ZENoYW5nZSgpCiAgICAgW21fdmlldyBfd2ViX2VkaXRvclN0YXRlRGlkQ2hhbmdlXTsKIH0KIAor
dm9pZCBXZWJWaWV3SW1wbDo6dG91Y2hCYXJNZW51RGF0YURpZENoYW5nZSgpCit7CisjaWYgSEFW
RShUT1VDSF9CQVIpCisgICAgbV9wYWdlQ3VzdG9taXplZFRvdWNoQmFyID0gbmlsOworICAgIHVw
ZGF0ZVRvdWNoQmFyKCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6ZGlkQmVjb21l
RWRpdGFibGUoKQogewogICAgIFttX3dpbmRvd1Zpc2liaWxpdHlPYnNlcnZlciBzdGFydE9ic2Vy
dmluZ0ZvbnRQYW5lbF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggMjYx
YjBkYjg1MTYwODY5OTk3MGY0YjQ0YjllY2QzMWRiYjJhNTc0Ni4uYjI5NWMwYmViYmRiYjlkZGI3
MGVjYTAwNjM1YThlNGI2MGIxNjY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aApAQCAtMTgwLDYgKzE4MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcihMYXllck9yVmlldyAqKSA9IDA7CiAgICAgdmlydHVh
bCBMYXllck9yVmlldyAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKSB7IH0KICNp
ZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQogICAgIHZpcnR1YWwgdm9pZCBnZXN0dXJlRXZl
bnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYkdlc3R1cmVFdmVudCYpID0g
MDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
NDk5NzVjZTg1YjU1YmNjZDcyMDQ4MzJiNTE3NmE1NDY4MWVlZDk4MS4uMTYxOGVmNTU4MzMxMDc4
NDM0MzA5OGFkMjVmZTU2NTlhODUxNWM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC03MTcxLDE2ICs3MTcxLDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZy
YW1lCiB2b2lkIFdlYlBhZ2VQcm94eTo6dG91Y2hCYXJNZW51RGF0YUNoYW5nZWQoY29uc3QgVG91
Y2hCYXJNZW51RGF0YSYgdG91Y2hCYXJNZW51RGF0YSkKIHsKICAgICBtX3RvdWNoQmFyTWVudURh
dGEgPSB0b3VjaEJhck1lbnVEYXRhOworICAgIG1fcGFnZUNsaWVudC50b3VjaEJhck1lbnVEYXRh
RGlkQ2hhbmdlKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaEJhck1lbnVJdGVtRGF0
YUFkZGVkKGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiB0b3VjaEJhck1lbnVJdGVtRGF0YSkK
IHsKICAgICBtX3RvdWNoQmFyTWVudURhdGEuYWRkTWVudUl0ZW0odG91Y2hCYXJNZW51SXRlbURh
dGEpOworICAgIG1fcGFnZUNsaWVudC50b3VjaEJhck1lbnVEYXRhRGlkQ2hhbmdlKCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaEJhck1lbnVJdGVtRGF0YVJlbW92ZWQoY29uc3QgVG91
Y2hCYXJNZW51SXRlbURhdGEmIHRvdWNoQmFyTWVudUl0ZW1EYXRhKQogewogICAgIG1fdG91Y2hC
YXJNZW51RGF0YS5yZW1vdmVNZW51SXRlbSh0b3VjaEJhck1lbnVJdGVtRGF0YSk7CisgICAgbV9w
YWdlQ2xpZW50LnRvdWNoQmFyTWVudURhdGFEaWRDaGFuZ2UoKTsKK30KKwordm9pZCBXZWJQYWdl
UHJveHk6OmRpZEludGVyYWN0V2l0aFRvdWNoQmFyTWVudUl0ZW0oY29uc3QgVG91Y2hCYXJNZW51
SXRlbURhdGEmIHRvdWNoQmFyTWVudUl0ZW1EYXRhKQoreworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkSW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51SXRlbSh0b3VjaEJh
ck1lbnVJdGVtRGF0YSksIG1fcGFnZUlEKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDBkNWM4ZTFhMTc3YThiNTA0MGIxMDRkMmYyNjhjMGFl
OTc5ZWIwOWIuLmRkMzA0M2Y5ZjRkNmQ4ZTUzNDUxNGFhY2UzNWExNTA5MTg4YmRlN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjMzLDEwICsxMjMzLDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIGVkaXRvclN0YXRlQ2hhbmdlZChjb25zdCBFZGl0b3JTdGF0ZSYp
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCB0b3VjaEJhck1lbnVEYXRhUmVtb3Zl
ZCgpOwogICAgIHZvaWQgdG91Y2hCYXJNZW51RGF0YUNoYW5nZWQoY29uc3QgVG91Y2hCYXJNZW51
RGF0YSYpOwogICAgIHZvaWQgdG91Y2hCYXJNZW51SXRlbURhdGFBZGRlZChjb25zdCBUb3VjaEJh
ck1lbnVJdGVtRGF0YSYpOwogICAgIHZvaWQgdG91Y2hCYXJNZW51SXRlbURhdGFSZW1vdmVkKGNv
bnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJik7CisgICAgdm9pZCBkaWRJbnRlcmFjdFdpdGhUb3Vj
aEJhck1lbnVJdGVtKGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJik7CiAjZW5kaWYKIAogICAg
IHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRv
cEZyYW1lSG9zdCwgdWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRleHRJZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IGIzMTM5NWE0ZTdk
Y2Q4NjNiYTRkYjZlYTIzOTc3OTg0NzU5NzE3NWIuLmY5OGMyZTdmN2VlNmI0N2ZmZWE3MzQ3OTky
ZDhjMjA0YzQ5NTZlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oCkBAIC0xMDQsNiArMTA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
c2V0U2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SW5wdXRDb250
ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgc2VsZWN0
aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB0b3VjaEJhck1lbnVEYXRhRGlkQ2hh
bmdlKCkgb3ZlcnJpZGU7CiAKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNl
U3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6
RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5tbQppbmRleCBmMTZkOTBkOGRiZGQzMzg0NDk1NTUyZGMzYjNjM2I1NzQxZWVlMGY0Li45
NGMzZmYzOGExYTNkNjJhZGVlMTQ4ZGE0NTNhZjEyZDcwZDdmY2FiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC01MjcsNiArNTI3
LDExIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNlbGVjdGlvbkRpZENoYW5nZSgpCiAgICAgbV9p
bXBsLT5zZWxlY3Rpb25EaWRDaGFuZ2UoKTsKIH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6dG91
Y2hCYXJNZW51RGF0YURpZENoYW5nZSgpCit7CisgICAgbV9pbXBsLT50b3VjaEJhck1lbnVEYXRh
RGlkQ2hhbmdlKCk7Cit9CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OndoZWVsRXZlbnRXYXNOb3RI
YW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQogewogICAg
IGlmIChhdXRvIGdlc3R1cmVDb250cm9sbGVyID0gbV9pbXBsLT5nZXN0dXJlQ29udHJvbGxlcigp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBh
OTE4ZWM2ZTVkYTVkYTIzNjI1NGQ1NzgyOTE2YWNlYTZkODFmMmI4Li5kN2Y0NjEwNTJlMDU1Nzgy
ZDI5MmM0ZGZkNjk2ODBmMjAxZWM4ZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTQwNCw2ICs1NDA0LDE0IEBAIHZvaWQgV2ViUGFnZTo6
c2VuZFRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZFVwZGF0ZShIVE1MTWVudUl0ZW1FbGVtZW50
JiBlbGVtZW50CiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpUb3VjaEJhck1l
bnVJdGVtRGF0YVJlbW92ZWQoVG91Y2hCYXJNZW51SXRlbURhdGEge2VsZW1lbnR9KSk7CiB9CisK
K3ZvaWQgV2ViUGFnZTo6ZGlkSW50ZXJhY3RXaXRoVG91Y2hCYXJNZW51SXRlbShjb25zdCBUb3Vj
aEJhck1lbnVJdGVtRGF0YSYgdG91Y2hCYXJNZW51SXRlbURhdGEpCit7CisgICAgaWYgKGF1dG8q
IGZyYW1lID0gbWFpbkZyYW1lKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gZWxlbWVudCA9IGZyYW1l
LT5kb2N1bWVudCgpLT5jdXJyZW50TWVudUVsZW1lbnQoKSkKKyAgICAgICAgICAgIGVsZW1lbnQt
PmRpZEludGVyYWN0V2l0aEl0ZW0odG91Y2hCYXJNZW51SXRlbURhdGEudGl0bGUpOworICAgIH0K
K30KICNlbmRpZgogCiB2b2lkIFdlYlBhZ2U6OnNlbmRQYXJ0aWFsRWRpdG9yU3RhdGVBbmRTY2hl
ZHVsZVBvc3RMYXlvdXRVcGRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IDA5MDkxMjUzY2FiN2I4YmQyODYyNGMwZTc1ODAwYjcxYzM3NDMxMDUu
LjViNDBkNjM1ZWU2ZjdiNjI1Zjg0YjA5ZGFlNDUzNDRiODBkM2MwYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJQbHVnaW4uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAi
U2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSAiVG91Y2hCYXJNZW51SXRlbURhdGEuaCIKICNpbmNs
dWRlICJVc2VyRGF0YS5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KQEAgLTEwNjAsNiArMTA2MSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZW5kVG91Y2hCYXJNZW51RGF0YVJlbW92ZWRVcGRhdGUoV2ViQ29yZTo6
SFRNTE1lbnVFbGVtZW50Jik7CiAgICAgdm9pZCBzZW5kVG91Y2hCYXJNZW51SXRlbURhdGFBZGRl
ZFVwZGF0ZShXZWJDb3JlOjpIVE1MTWVudUl0ZW1FbGVtZW50Jik7CiAgICAgdm9pZCBzZW5kVG91
Y2hCYXJNZW51SXRlbURhdGFSZW1vdmVkVXBkYXRlKFdlYkNvcmU6OkhUTUxNZW51SXRlbUVsZW1l
bnQmKTsKKyAgICB2b2lkIGRpZEludGVyYWN0V2l0aFRvdWNoQmFyTWVudUl0ZW0oY29uc3QgVG91
Y2hCYXJNZW51SXRlbURhdGEmKTsKICNlbmRpZgogCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUGFn
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBm
MmYxOGNiNTljOWY4ZDQ3YzU3MTJmYWUxOGUxMTk1OTU0ZTRkYTU2Li4zZTE5MjAzYWExYWRlMjc4
ZWE3ZDI2ODE1NDg5NTVlODZkMzFlNmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI4LDYgKzI4LDggQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0RHJhd3NCYWNrZ3JvdW5k
KGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgRGlkSW50
ZXJhY3RXaXRoVG91Y2hCYXJNZW51SXRlbShzdHJ1Y3QgV2ViS2l0OjpUb3VjaEJhck1lbnVJdGVt
RGF0YSB0b3VjaEJhck1lbnVJdGVtRGF0YSkKKwogICAgIFNldFRvcENvbnRlbnRJbnNldEZlbmNl
ZChmbG9hdCBjb250ZW50SW5zZXQsIElQQzo6QXR0YWNobWVudCBmZW5jZVBvcnQpCiAjZW5kaWYK
ICAgICBTZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgY29udGVudEluc2V0KQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM1ODliZGY3Yjc3NzNhZjBl
ZjBkMWMyYTE2Y2U1MTdlZDExMzI5ZGYuLmI2YzMxYzA3NzliMGQ0ZTZjZmVmODNhOWUyOGQ5Njcw
ZDIyNzliOGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0xMi0xNCAgQWlzaHdhcnlhIE5pcm1hbCAgPGFuaXJt
YWxAYXBwbGUuY29tPgorCisgICAgICAgIFtUb3VjaCBCYXIgV2ViIEFQSV0gQWRkIHN1cHBvcnQg
Zm9yIGN1c3RvbSBUb3VjaCBCYXIgYnV0dG9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTEzCisKKyAgICAgICAgVGVzdHMgZm9yIHRoZSBpbnNl
cnRpb24gYW5kIGNsaWNraW5nIG9mIGN1c3RvbSBUb3VjaCBCYXIgYnV0dG9ucworICAgICAgICB1
c2luZyB0aGUgV2ViS2l0IFRvdWNoIEJhciBBUEkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9Ub3VjaEJhckFQSVRlc3RzLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNl
dHVwVGVzdFdLV2ViVmlldyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAx
Ny0xMi0wNiAgRGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtXZWIgQXBwIE1hbmlmZXN0XSBBZGQgU1BJIGZvciBmZXRjaGluZyB0aGUgbWFuaWZlc3QK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjBiZGUyZDI3ZDFjNDJiYjRiZGNmMTVkYjgyYjEz
NmM5ODY0NmRjNi4uNzk4MzA0YTZkOGUxMGExNGI3Y2JkZjJjNTI5ZjZkNzZjMzhkNWI5MyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMCw2ICsxMTAsNyBAQAogCQkyRUZGMDZDRDFEOEE0
MjlBMDAwNEJCMzAgLyogaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYw
NkNDMUQ4QTQyOTEwMDA0QkIzMCAvKiBpbnB1dC1maWVsZC1pbi1zY3JvbGxhYmxlLWRvY3VtZW50
Lmh0bWwgKi87IH07CiAJCTJFRkYwNkQ0MUQ4QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJWaWV3
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVGRjA2
RDMxRDhBRURCQjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcubW0gKi87IH07CiAJCTJFRkYwNkQ3
MUQ4QUYzNEEwMDA0QkIzMCAvKiBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYwNkQ2MUQ4QUYzNEEwMDA0
QkIzMCAvKiBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbSAqLzsgfTsKKwkJMkZDN0NERTAxRkRC
NEM4RTAwNURGRjZEIC8qIFRvdWNoQmFyQVBJVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRkM3Q0RERTFGREI0QjUyMDA1REZGNkQgLyogVG91
Y2hCYXJBUElUZXN0cy5tbSAqLzsgfTsKIAkJMzE1MTE4MTAxREIxQUU0MDAwMTc2MzA0IC8qIEV4
dGVuZGVkQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzE1MTE4MEYxREIxQURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwICovOyB9
OwogCQkzMTUyMzFDQTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVQ29tbWFuZFF1ZXVlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE1MjMxQzkxRUIzQjND
NzAwQTIyQTE2IC8qIEdQVUNvbW1hbmRRdWV1ZS5tbSAqLzsgfTsKIAkJMzE2MkFFOUMxRTZGMkZG
NTAwMEU0REJDIC8qIEdQVURldmljZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxNjJBRTlCMUU2RjJGQ0UwMDBFNERCQyAvKiBHUFVEZXZpY2UubW0g
Ki87IH07CkBAIC0xMjA0LDYgKzEyMDUsOCBAQAogCQkyRUZGMDZEMjFEOEFFREJCMDAwNEJCMzAg
LyogVGVzdFdLV2ViVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0
V0tXZWJWaWV3Lmg7IHBhdGggPSBjb2NvYS9UZXN0V0tXZWJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJFRkYwNkQzMUQ4QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJWaWV3
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdFdLV2ViVmll
dy5tbTsgcGF0aCA9IGNvY29hL1Rlc3RXS1dlYlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJFRkYwNkQ2MUQ4QUYzNEEwMDA0QkIzMCAvKiBXS1dlYlZpZXdDYW5kaWRhdGVU
ZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmll
d0NhbmRpZGF0ZVRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRkM3Q0RE
RTFGREI0QjUyMDA1REZGNkQgLyogVG91Y2hCYXJBUElUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRvdWNoQmFyQVBJVGVzdHMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTJGQzdDRERGMUZEQjRCNkIwMDVERkY2RCAvKiB0b3VjaC1iYXIt
YXBpLXRlc3RzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidG91Y2gtYmFyLWFw
aS10ZXN0cy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE1MTE4MEYxREIx
QURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRXh0ZW5kZWRDb2xvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxNTIzMUM5MUVCM0IzQzcwMEEyMkExNiAvKiBHUFVDb21tYW5kUXVldWUubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVDb21tYW5kUXVldWUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNjJBRTlCMUU2RjJGQ0UwMDBFNERCQyAv
KiBHUFVEZXZpY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBH
UFVEZXZpY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODQwLDYgKzI4NDMs
NyBAQAogCQkJCTM3OTlBRDM5MTQxMjBBNDMwMDVFQjBDNiAvKiBTdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0RnJvbVN0cmluZy5tbSAqLywKIAkJCQk5MzlCRkUzOTE4RTU1NDg5MDA4ODMyNzUg
LyogU3RyaW5nVHJ1bmNhdG9yLm1tICovLAogCQkJCTM3QTY4OTVEMTQ4QTlCNTAwMDUxMDBGQSAv
KiBTdWJyZXNvdXJjZUVycm9yQ3Jhc2gubW0gKi8sCisJCQkJMkZDN0NEREUxRkRCNEI1MjAwNURG
RjZEIC8qIFRvdWNoQmFyQVBJVGVzdHMubW0gKi8sCiAJCQkJRTQ5MDI5NjcxNEUyRTNBNDAwMkJF
REQxIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gKi8sCiAJCQkJNTM2NzcwMzMxQ0M4MDIyODAwRDQy
NUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1tICovLAogCQkJCTUxRkJCQjRDMTUx
M0Q0RTkwMDgyMjczOCAvKiBXZWJWaWV3Q2FuUGFzdGVVUkwubW0gKi8sCkBAIC0yODg4LDYgKzI4
OTIsNyBAQAogCQkJCUE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0
YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLywKIAkJCQk1MkI4Q0Y5NDE1ODY4Q0YwMDAyODEw
NTMgLyogU2V0RG9jdW1lbnRVUkkuaHRtbCAqLywKIAkJCQlFMTk0RTFCQzE3N0U1MzRBMDA5QzRE
NEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgKi8sCisJCQkJMkZD
N0NEREYxRkRCNEI2QjAwNURGRjZEIC8qIHRvdWNoLWJhci1hcGktdGVzdHMuaHRtbCAqLywKIAkJ
CQlDNTQwRjc4MzE1MkU1QTc4MDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sICovLAogCQkJ
CTUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5o
dG1sICovLAogCQkJCUNFMTRGMUEyMTgxODczQjAwMDFDMjcwNSAvKiBXaWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0VG9VUkxDcmFzaC5odG1sICovLApAQCAtMzE3MSw2ICszMTc2LDcgQEAKIAkJCQkx
QURBRDE1MDFENzdBOUY2MDAyMTI1ODYgLyogQmxvY2tQdHIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3QzgzREU5QzFEMEE1OTBDMDBGRUJDRjMgLyogQmxvb21GaWx0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0M4M0RFQTAxRDBBNTkwQzAwRkVCQ0YzIC8qIENoZWNrZWRBcml0aG1ldGljT3Bl
cmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjMwQ0I1QzFGQ0UxNzk2MDA0QjUzMjMg
LyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFQzMx
RDBBNTkwQzAwRkVCQ0YzIC8qIENvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qzgz
REVBNjFEMEE1OTBDMDBGRUJDRjMgLyogQ291bnRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M4M0RFQTkxRDBBNTkwQzAwRkVCQ0YzIC8qIENTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zMTk1LDcgKzMyMDEsNiBAQAogCQkJCTdDODNERUY2MUQwQTU5MEMwMEZFQkNGMyAvKiBNZXRh
QWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUZFMUQwQTU5MEMwMEZFQkNG
MyAvKiBOYWtlZFB0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdENTRGMzFGMzM4QzM2MDBB
OTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEYzMENCNUMx
RkNFMTc5NjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNERjAxMUQwQTU5MEMwMEZFQkNGMyAvKiBPcHRpb25hbC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTc3QkFBMzFEOUFGRkZDMDA1RkM1NjggLyogT3B0aW9uU2V0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERjAyMUQwQTU5MEMwMEZFQkNGMyAvKiBPU09iamVjdFB0ci5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTM1MjcsNiArMzUzMiw3IEBACiAJCQkJOTNFNjE5M0IxRjkz
MUIzQTAwQUYyNDVFIC8qIFRleHRDb2RlYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTM1MjRG
OTFCMTQ0MUM0MDAyOEE3QzUgLyogVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUREMUE0MTFBOTIwMDQ0N0M0QyAvKiBUaW1lUmFuZ2Vz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJGQzdDREUwMUZEQjRDOEUwMDVERkY2RCAvKiBUb3Vj
aEJhckFQSVRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDMxQTQxMUE3RTAwNDQ3
QzRDIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0I0MEI0RTFG
NEI5OEQzMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0Njg0
OUJFMUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0cy5tbSBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvVG91Y2hCYXJBUElU
ZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1RvdWNoQmFyQVBJVGVzdHMu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjc3YWFkYjM1MjQ2OGU1MTdiOTM3MzRlOGU1NmEyNzMyNWMxMTRjOAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1RvdWNoQmFy
QVBJVGVzdHMubW0KQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisjaWYgSEFWRShUT1VDSF9CQVIpCisKKyNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1w
b3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9X
S1VJRGVsZWdhdGVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5o
PgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBSZXRhaW5QdHI8VGVzdFdL
V2ViVmlldz4gc2V0dXBUZXN0V0tXZWJWaWV3KCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDQwMCwgNDAwKV0pOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAoV0tQcmVmZXJlbmNlc1JlZilb
W3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJlZmVyZW5jZXNdOworICAgIFdLUHJlZmVyZW5jZXNT
ZXRNZW51SXRlbUVsZW1lbnRFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKKyAgICByZXR1cm4g
d2ViVmlldzsKK30KKworVEVTVChUb3VjaEJhckFQSVRlc3RzLCBJbnNlcnRCdXR0b25zKQorewor
ICAgIGF1dG8gd2ViVmlldyA9IHNldHVwVGVzdFdLV2ViVmlldygpOworICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5PjxtZW51IHR5cGU9XCJ0b3VjaGJhclwi
PjxtZW51aXRlbSB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9XCJCdXR0b25cIiBvbmNsaWNrPVwiYnV0
dG9uT25DbGljaygpXCI+PC9tZW51aXRlbT48L21lbnU+PC9ib2R5PiJdOworICAgIE5TVG91Y2hC
YXIgKnRvdWNoQmFyID0gW3dlYlZpZXcgbWFrZVRvdWNoQmFyXTsKKyAgICBhdXRvIGlkZW50aWZp
ZXJzID0gdG91Y2hCYXIuaXRlbUlkZW50aWZpZXJzOworICAgIHVuc2lnbmVkIGNvdW50ID0gW2lk
ZW50aWZpZXJzIGNvdW50XTsKKyAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKSAxLCBjb3VudCk7Cit9
CisKK1RFU1QoVG91Y2hCYXJBUElUZXN0cywgQ2xpY2tCdXR0b25zKQoreworICAgIGF1dG8gd2Vi
VmlldyA9IHNldHVwVGVzdFdLV2ViVmlldygpOworICAgIE5TU3RyaW5nICpib2R5ID0gQCI8Ym9k
eT48bWVudSB0eXBlPVwidG91Y2hiYXJcIj48bWVudWl0ZW0gaWQ9XCJub3QtY2xpY2tlZFwiIHR5
cGU9XCJidXR0b25cIiB0aXRsZT1cIkJ1dHRvblwiXCI+PC9tZW51aXRlbT48L21lbnU+PC9ib2R5
PiI7CisgICAgTlNTdHJpbmcgKnNjcmlwdCA9IEAiPHNjcmlwdD5kb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCdtZW51aXRlbScpLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsgdGhpcy5pZCA9IFwiY2xpY2tl
ZFwiOyB9PC9zY3JpcHQ+IjsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJp
bmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCVAIiwgYm9keSwgc2NyaXB0XV07CisK
KyAgICBOU1RvdWNoQmFyICp0b3VjaEJhciA9IFt3ZWJWaWV3IG1ha2VUb3VjaEJhcl07CisgICAg
YXV0byB0ZW1wbGF0ZUl0ZW1zID0gdG91Y2hCYXIudGVtcGxhdGVJdGVtczsKKyAgICBhdXRvIGl0
ZW0gPSBbdGVtcGxhdGVJdGVtcyBhbnlPYmplY3RdOworICAgIGF1dG8gKmJ1dHRvbiA9IGl0ZW0u
dmlldzsKKyAgICAKKyAgICBbKE5TQnV0dG9uICopYnV0dG9uIHBlcmZvcm1DbGljazooTlNCdXR0
b24gKilidXR0b25dOworCisgICAgYXV0byBuZXdJZCA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZW51aXRlbScpLmlkIl07
CisgICAgRVhQRUNUX1NUUkVRKCJjbGlja2VkIiwgW25ld0lkIFVURjhTdHJpbmddKTsKK30KKwor
fQorCisjZW5kaWYgLy8gSEFWRShUT1VDSF9CQVIpCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQK
Kwo=
</data>
<flag name="review"
          id="348477"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>