<?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>73016</bug_id>
          
          <creation_ts>2011-11-23 04:11:19 -0800</creation_ts>
          <short_desc>[Qt][WK2] History is not accessible in QML.</short_desc>
          <delta_ts>2011-12-12 10:10:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexis Menard (darktears)">menard</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>508058</commentid>
    <comment_count>0</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-11-23 04:11:19 -0800</bug_when>
    <thetext>[Qt][WK2] History is not accessible in QML.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508059</commentid>
    <comment_count>1</comment_count>
      <attachid>116343</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-11-23 04:13:43 -0800</bug_when>
    <thetext>Created attachment 116343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508060</commentid>
    <comment_count>2</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-11-23 04:15:55 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=116343) [details]
&gt; Patch

First shot for feedback before I write tests :D.

QML code look like this

console.log(&quot;YOU WILL NAVIGATE TO&quot; + webView.history.backItem().url)

You can also do this :

ListView {
        id: list
        x: 100
        y: 0
        height : root.height
        width : 500
        model: webView.history.backItems(20)
        z:300

        delegate: Text {
                 text: &quot;url : &quot; + model.modelData.url
        }
}

Please go ahead on criticism.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508226</commentid>
    <comment_count>3</comment_count>
      <attachid>116343</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2011-11-23 10:45:17 -0800</bug_when>
    <thetext>Comment on attachment 116343
Patch

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

It looks very nice. :)

&gt; Source/WebKit2/UIProcess/API/qt/qwebpagehistory.cpp:97
&gt; +QWebPageHistory::QWebPageHistory()

Not sure, but isn&apos;t good practice to start member pointers to zero? Or wouldn&apos;t be a good idea to receive the pointer in the constructor and assign your private attribute here? The only place you create a QWebPageHistory you also set it&apos;s private attribute just afterwards and the rest of implementation depends on it. I think passing this on argument would make it more clear.

&gt; Source/WebKit2/UIProcess/API/qt/qwebpagehistory_p.h:72
&gt; +    QWebPageHistoryItem* backItem() const;

It may be just me but when I read &apos;backItem&apos;, I have the feeling you&apos;ll push all items in the list one step backwards. But this is the one that return the previous value, right? Wouldn&apos;t &apos;previousItem&apos; sound better?

&gt; Source/WebKit2/UIProcess/API/qt/qwebpagehistory_p.h:76
&gt; +    QVariant backItems(int maxItems) const;

Same feeling here.

&gt; ChangeLog:8
&gt; +        Add the new QWebPageHistory in the map file/

style (&apos;/&apos; in the end).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508702</commentid>
    <comment_count>4</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2011-11-24 04:08:10 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; Created an attachment (id=116343) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; First shot for feedback before I write tests :D.
&gt; 
&gt; QML code look like this
&gt; 
&gt; console.log(&quot;YOU WILL NAVIGATE TO&quot; + webView.history.backItem().url)
&gt; 

I think the property should be named navigationHistory, to signify that it&apos;s dealing with back-forward-history and not browsing history.

Also, I think we should consider doing a more model-like API here, meaning a single naviagtionHistory property, which is a model, and can be dropped in a ListView. naviagtionHistory.at(0) is the previous page in the history (the &quot;back&quot; item).


&gt; You can also do this :
&gt; 
&gt; ListView {
&gt;         id: list
&gt;         x: 100
&gt;         y: 0
&gt;         height : root.height
&gt;         width : 500
&gt;         model: webView.history.backItems(20)
&gt;         z:300
&gt; 
&gt;         delegate: Text {
&gt;                  text: &quot;url : &quot; + model.modelData.url
&gt;         }
&gt; }
&gt; 
&gt; Please go ahead on criticism.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508863</commentid>
    <comment_count>5</comment_count>
      <attachid>116531</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-11-24 12:20:30 -0800</bug_when>
    <thetext>Created attachment 116531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508864</commentid>
    <comment_count>6</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-11-24 12:29:49 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=116531) [details]
&gt; Patch

Example of usage :
    ListView {
        id: list
        x: 100
        y: 0
        height : root.height
        width : 300
        model: webView.navigationHistory.backItems
        z:300

        delegate: Text {
                        color:&quot;black&quot;
                        text: &quot;title : &quot; + title

                MouseArea {
                    anchors.fill: parent
                    onClicked: {
                            webView.navigationHistory.navigateBackTo(index)
                        }
                }
        }
    }

    ListView {
        id: list2
        x: list.x + list.width
        y: 0
        height : root.height
        width : 300
        model: pageWidget.webView.navigationHistory.forwardItems
        z:300

        delegate: Text {
                color:&quot;black&quot;
                text: &quot;title : &quot; + title
                MouseArea {
                    anchors.fill: parent
                    onClicked {  webView.navigationHistory.navigateForwardTo(index)
                        }
                }
        }
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508865</commentid>
    <comment_count>7</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-11-24 12:30:32 -0800</bug_when>
    <thetext>I&apos;ll write tests when you guys think the API is cool :D.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508903</commentid>
    <comment_count>8</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2011-11-24 14:09:55 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Created an attachment (id=116531) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; Example of usage :
&gt;                 MouseArea {
&gt;                     anchors.fill: parent
&gt;                     onClicked: {
&gt;                             webView.navigationHistory.navigateBackTo(index)
&gt;                         }

Looking at this I&apos;m thinking the action-part of the api should perhaps be on the view:

webView.goBack(index), where goBack(int count = 0) so our current goBack() would do the same thing

The webView.navigationHistory property sounds read only to me, so doing webView.navigationHistory.navigateBackTo() would be a bit strange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508905</commentid>
    <comment_count>9</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2011-11-24 14:10:26 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; Created an attachment (id=116531) [details] [details] [details]
&gt; &gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Example of usage :
&gt; &gt;                 MouseArea {
&gt; &gt;                     anchors.fill: parent
&gt; &gt;                     onClicked: {
&gt; &gt;                             webView.navigationHistory.navigateBackTo(index)
&gt; &gt;                         }
&gt; 
&gt; Looking at this I&apos;m thinking the action-part of the api should perhaps be on the view:
&gt; 
&gt; webView.goBack(index), where goBack(int count = 0) so our current goBack() would do the same thing
&gt; 
&gt; The webView.navigationHistory property sounds read only to me, so doing webView.navigationHistory.navigateBackTo() would be a bit strange.

sorry, goBack(int index = 0)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516213</commentid>
    <comment_count>10</comment_count>
      <attachid>118105</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-12-06 13:50:45 -0800</bug_when>
    <thetext>Created attachment 118105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516215</commentid>
    <comment_count>11</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-12-06 13:51:41 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=118105) [details]
&gt; Patch

Require declarative to be fixed first. But works otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516518</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-12-07 00:19:23 -0800</bug_when>
    <thetext>Would it perhaps make sense to modify the mini browser to also use this functionality?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516568</commentid>
    <comment_count>13</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-12-07 02:50:00 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Would it perhaps make sense to modify the mini browser to also use this functionality?

I was thinking too. I wanted to implement some kind of long press on the navigation buttons but popups are broken in Qt5 and popups in QML require some C++ QWindow. Not sure it&apos;s worth having this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516584</commentid>
    <comment_count>14</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2011-12-07 03:49:49 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Would it perhaps make sense to modify the mini browser to also use this functionality?
&gt; 
&gt; I was thinking too. I wanted to implement some kind of long press on the navigation buttons but popups are broken in Qt5 and popups in QML require some C++ QWindow. Not sure it&apos;s worth having this.

You don&apos;t need a real window. Just do a fake popup using regular QML?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516588</commentid>
    <comment_count>15</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-12-07 04:15:56 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; Would it perhaps make sense to modify the mini browser to also use this functionality?
&gt; &gt; 
&gt; &gt; I was thinking too. I wanted to implement some kind of long press on the navigation buttons but popups are broken in Qt5 and popups in QML require some C++ QWindow. Not sure it&apos;s worth having this.
&gt; 
&gt; You don&apos;t need a real window. Just do a fake popup using regular QML?

As discussed on IRC, I&apos;ll make an additional patch for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517287</commentid>
    <comment_count>16</comment_count>
      <attachid>118105</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-12-08 03:23:20 -0800</bug_when>
    <thetext>Comment on attachment 118105
Patch

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

&gt; Source/WebKit/qt/declarative/experimental/plugin.cpp:48
&gt; +        qmlRegisterUncreatableType&lt;QWebNavigationListModel&gt;(uri, 3, 0, &quot;WebNavigationListModel&quot;, QObject::tr(&quot;Cannot create separate instance of WebNavigationListModel&quot;));
&gt; +        qmlRegisterUncreatableType&lt;QWebNavigationHistory&gt;(uri, 3, 0, &quot;PageHistory&quot;, QObject::tr(&quot;Cannot create separate instance of PageHistory&quot;));

Hm, any particular reason for the naming inconsistency? The classes are called QWebNavigation* but the QML types are WebNavigationListMode and PageHistory (no Web prefix and Page instead).

&gt; Source/WebKit2/UIProcess/API/qt/qwebnavigationhistory.cpp:81
&gt; +void QWebNavigationHistoryPrivate::goBackTo(int index)
&gt; +{
&gt; +    WKRetainPtr&lt;WKBackForwardListItemRef&gt; itemRef = WKBackForwardListGetItemAtIndex(toAPI(m_backForwardList), -(index + 1));
&gt; +    if (itemRef &amp;&amp; m_page)
&gt; +        WKPageGoToBackForwardListItem(m_page-&gt;pageRef(), itemRef.get());
&gt; +}

One thing that just feels wrong about the history implementation is our mix of internal and C-API usage. Having toAPI in our internal code to get something done just doesn&apos;t feel right. Either we use internal types and functions or we use only public API and also store the FooRef public API types.

Anyway, this isn&apos;t your fault of course, this is how the &quot;old&quot; QWKHistory code was written. Think of my comment as something that maybe be worth addressing either now or in the future.

&gt; Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_navigationHistory.qml:83
&gt; +            webView.goBack(1)

I admit that I&apos;m not a fan of this API, I don&apos;t find it very readable because the meaning of the number isn&apos;t totally clear. Is it relative or absolute? I&apos;d prefer goBack() / goForward() and instead of a clearer name for the case where you want to jump to a specific index in the back or forward history. Consider this a bikeshedding comment :)

What I&apos;m thinking of for example is

webView.goBackToIndex(42);

What do you think?

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:69
&gt; +    connect(qmlWebView, SIGNAL(urlChanged(QUrl)), m_navigationHistory, SLOT(_q_reset()));

Is there perhaps a smarter way of doing this? It feels a bit strange to go all the way up to the public API layer to get a &quot;notification&quot; when we have to reset our history models. What about using WKPageLoaderClient&apos;s didChangeBackForwardList instead?

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:81
&gt; -    delete m_history;
&gt; +    delete m_navigationHistory;

Doesn&apos;t have to be in this patch, but it would be nice to get rid of the manual deletes and use smart pointers instead, following the WebKit pattern using OwnPtr.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.h:174
&gt; -    QWKHistory* m_history;
&gt; +    QWebNavigationHistory* m_navigationHistory;

It would be nice to combine this refactoring with also moving the code out of QtWebPageProxy, which we&apos;re trying to get rid of after all. Doesn&apos;t haaaaave to be in this patch though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517324</commentid>
    <comment_count>17</comment_count>
      <attachid>118105</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2011-12-08 05:27:02 -0800</bug_when>
    <thetext>Comment on attachment 118105
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_navigationHistory.qml:83
&gt;&gt; +            webView.goBack(1)
&gt; 
&gt; I admit that I&apos;m not a fan of this API, I don&apos;t find it very readable because the meaning of the number isn&apos;t totally clear. Is it relative or absolute? I&apos;d prefer goBack() / goForward() and instead of a clearer name for the case where you want to jump to a specific index in the back or forward history. Consider this a bikeshedding comment :)
&gt; 
&gt; What I&apos;m thinking of for example is
&gt; 
&gt; webView.goBackToIndex(42);
&gt; 
&gt; What do you think?

The goBack(1) form looks weird, but 1 should be the default, so you&apos;d normally do goBack(). The special case would be where you passed the index of a history item, and then the code would look like:

goBack(clickedHistoryItem.index)

Which is somewhat more explanatory. 

Another option would be to base the alternative form on the item itself::

goBack(clickedHistoryItem)

or even 

goBackTo(clickedHistoryItem)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518378</commentid>
    <comment_count>18</comment_count>
      <attachid>118605</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-12-09 12:05:05 -0800</bug_when>
    <thetext>Created attachment 118605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518382</commentid>
    <comment_count>19</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-12-09 12:07:35 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 118105 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118105&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_navigationHistory.qml:83
&gt; &gt;&gt; +            webView.goBack(1)
&gt; &gt; 
&gt; &gt; I admit that I&apos;m not a fan of this API, I don&apos;t find it very readable because the meaning of the number isn&apos;t totally clear. Is it relative or absolute? I&apos;d prefer goBack() / goForward() and instead of a clearer name for the case where you want to jump to a specific index in the back or forward history. Consider this a bikeshedding comment :)
&gt; &gt; 
&gt; &gt; What I&apos;m thinking of for example is
&gt; &gt; 
&gt; &gt; webView.goBackToIndex(42);
&gt; &gt; 
&gt; &gt; What do you think?
&gt; 
&gt; The goBack(1) form looks weird, but 1 should be the default, so you&apos;d normally do goBack(). The special case would be where you passed the index of a history item, and then the code would look like:
&gt; 
&gt; goBack(clickedHistoryItem.index)
&gt; 
&gt; Which is somewhat more explanatory. 
&gt; 
&gt; Another option would be to base the alternative form on the item itself::
&gt; 
&gt; goBack(clickedHistoryItem)
&gt; 
&gt; or even 
&gt; 
&gt; goBackTo(clickedHistoryItem)

For example (concrete usage) :

    ListView {
        id: list
        x: 100
        y: 0
        height : root.height
        width : 300
        model: pageWidget.webView.experimental.navigationHistory.backItems
        z:300

        delegate: Text {
                        color:&quot;black&quot;
                        text: &quot;title : &quot; + title

                MouseArea {
                    anchors.fill: parent
                    onClicked: {
                            pageWidget.webView.goBack(index)
                        }
                }
        }

}

It is insanely convenient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518415</commentid>
    <comment_count>20</comment_count>
      <attachid>118616</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-12-09 12:46:57 -0800</bug_when>
    <thetext>Created attachment 118616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519183</commentid>
    <comment_count>21</comment_count>
      <attachid>118784</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-12-12 07:24:48 -0800</bug_when>
    <thetext>Created attachment 118784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519186</commentid>
    <comment_count>22</comment_count>
      <attachid>118784</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-12-12 07:31:31 -0800</bug_when>
    <thetext>Comment on attachment 118784
Patch

r=me_and_torarne :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519188</commentid>
    <comment_count>23</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-12-12 07:39:49 -0800</bug_when>
    <thetext>Committed r102582: &lt;http://trac.webkit.org/changeset/102582&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519297</commentid>
    <comment_count>24</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-12-12 10:10:47 -0800</bug_when>
    <thetext>Committed r102597: &lt;http://trac.webkit.org/changeset/102597&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116343</attachid>
            <date>2011-11-23 04:13:43 -0800</date>
            <delta_ts>2011-11-24 12:20:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73016-20111123091340.patch</filename>
            <type>text/plain</type>
            <size>37282</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDU4NWRjZDZiYTRi
YzIwZTJhZjA4YjNlNDAxMWZlMWRiMjY4MTk0OTAuLmM4ZDQzZDVjMDEwNTY4NGNjN2Q1YzAxYzUz
YWFjMjdiZmU2MDlhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTEt
MjMgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAg
ICAgW1F0XVtXSzJdIEhpc3RvcnkgaXMgbm90IGFjY2Vzc2libGUgaW4gUU1MLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWdpc3RlciBRV2ViUGFnZUhp
c3RvcnkgYW5kIFFXZWJQYWdlSGlzdG9yeUl0ZW0gaW4gdGhlIFFNTCBwbHVnaW4uCisKKyAgICAg
ICAgKiBkZWNsYXJhdGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luOjpy
ZWdpc3RlclR5cGVzKToKKwogMjAxMS0xMS0yMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdv
b2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIEluc3BlY3Rvcjo6YnJp
bmdUb0Zyb250IGZyb20gdGhlIHByb3RvY29sLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGFlZjJjNzU0YThjN2Ey
MmM1NzcwY2NlMWZlNzQ1YmE3M2ViNmQ1YjguLjk2NTk4Nzg2ZTVjZTkzYTdmMDAxYWNlYWE2OGE2
ODIxY2ZiNjZhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMS0xMS0yMyAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRd
W1dLMl0gSGlzdG9yeSBpcyBub3QgYWNjZXNzaWJsZSBpbiBRTUwuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzAxNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBvbGQgcXdraGlzdG9yeSBhbmQg
Y3JlYXRlIFFXZWJQYWdlSGlzdG9yeSB3aGljaCBpcyBRTUwKKyAgICAgICAgZnJpZW5kbHkuCisK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlldy5jcHA6CisgICAgICAgIChRUXVpY2tXZWJWaWV3OjpoaXN0b3J5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcXdlYnBhZ2VoaXN0b3J5LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmNwcC4KKyAgICAgICAgKFFXZWJQYWdlSGlzdG9yeUl0
ZW1Qcml2YXRlOjpRV2ViUGFnZUhpc3RvcnlJdGVtUHJpdmF0ZSk6CisgICAgICAgIChRV2ViUGFn
ZUhpc3RvcnlJdGVtUHJpdmF0ZTo6flFXZWJQYWdlSGlzdG9yeUl0ZW1Qcml2YXRlKToKKyAgICAg
ICAgKFFXZWJQYWdlSGlzdG9yeUl0ZW06OlFXZWJQYWdlSGlzdG9yeUl0ZW0pOgorICAgICAgICAo
UVdlYlBhZ2VIaXN0b3J5SXRlbTo6flFXZWJQYWdlSGlzdG9yeUl0ZW0pOgorICAgICAgICAoUVdl
YlBhZ2VIaXN0b3J5SXRlbTo6dGl0bGUpOgorICAgICAgICAoUVdlYlBhZ2VIaXN0b3J5SXRlbTo6
dXJsKToKKyAgICAgICAgKFFXZWJQYWdlSGlzdG9yeVByaXZhdGU6OlFXZWJQYWdlSGlzdG9yeVBy
aXZhdGUpOgorICAgICAgICAoUVdlYlBhZ2VIaXN0b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeSk6
CisgICAgICAgIChRV2ViUGFnZUhpc3RvcnlQcml2YXRlOjp+UVdlYlBhZ2VIaXN0b3J5UHJpdmF0
ZSk6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6OlFXZWJQYWdlSGlzdG9yeSk6CisgICAgICAg
IChRV2ViUGFnZUhpc3Rvcnk6On5RV2ViUGFnZUhpc3RvcnkpOgorICAgICAgICAoUVdlYlBhZ2VI
aXN0b3J5OjpiYWNrTGlzdENvdW50KToKKyAgICAgICAgKFFXZWJQYWdlSGlzdG9yeTo6Zm9yd2Fy
ZExpc3RDb3VudCk6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6OmNvdW50KToKKyAgICAgICAg
KFFXZWJQYWdlSGlzdG9yeTo6Y3VycmVudEl0ZW0pOgorICAgICAgICAoUVdlYlBhZ2VIaXN0b3J5
OjpiYWNrSXRlbSk6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6OmZvcndhcmRJdGVtKToKKyAg
ICAgICAgKFFXZWJQYWdlSGlzdG9yeTo6aXRlbUF0KToKKyAgICAgICAgKFFXZWJQYWdlSGlzdG9y
eTo6Z29Ub0l0ZW1BdCk6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6OmJhY2tJdGVtcyk6Cisg
ICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6OmZvcndhcmRJdGVtcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xd2VicGFnZWhpc3RvcnlfcC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3F3ZWJwYWdlaGlzdG9yeV9wX3AuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9xd2toaXN0b3J5X3AuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OlF0V2ViUGFnZVByb3h5KToKKyAg
ICAgICAgKFF0V2ViUGFnZVByb3h5OjpoaXN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQv
UXRXZWJQYWdlUHJveHkuaDoKKwogMjAxMS0xMS0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgRW5zdXJlIHdlYiBwcm9jZXNzIGJlZm9yZSBz
dGFydGluZyBhIGRvd25sb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0
aXZlL3BsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3BsdWdpbi5jcHAK
aW5kZXggOTE2MzRlZTIxODE5NTg3Y2VmZGNjMDFjNDBmODc0ZTQ3MzAxMjYyMC4uM2I1YjgxZmIx
YzVlZmQ0MDQ4ZjgxZTM1MDI2NjJiYmFjNzVhMWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9xdC9kZWNsYXJhdGl2ZS9wbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFy
YXRpdmUvcGx1Z2luLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgInFxdWlja3dlYnBh
Z2VfcC5oIgogI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcC5oIgogI2luY2x1ZGUgInF3ZWJkb3du
bG9hZGl0ZW1fcC5oIgorI2luY2x1ZGUgInF3ZWJwYWdlaGlzdG9yeV9wLmgiCiAjaW5jbHVkZSAi
cXdlYnByZWZlcmVuY2VzX3AuaCIKIAogI2luY2x1ZGUgPFF0TmV0d29yay9xbmV0d29ya3JlcGx5
Lmg+CkBAIC01Myw2ICs1NCw4IEBAIHB1YmxpYzoKICAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0
YWJsZVR5cGU8UVF1aWNrV2ViUGFnZT4odXJpLCAzLCAwLCAiV2ViUGFnZSIsIFFPYmplY3Q6OnRy
KCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIFdlYlBhZ2UsIHVzZSBXZWJWaWV3
IikpOwogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRTmV0d29ya1JlcGx5Pih1
cmksIDMsIDAsICJOZXR3b3JrUmVwbHkiLCBRT2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBh
cmF0ZSBpbnN0YW5jZSBvZiBOZXR3b3JrUmVwbHkiKSk7CiAgICAgICAgIHFtbFJlZ2lzdGVyVW5j
cmVhdGFibGVUeXBlPFFXZWJEb3dubG9hZEl0ZW0+KHVyaSwgNSwgMCwgIkRvd25sb2FkSXRlbSIs
IFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIERvd25sb2Fk
SXRlbSIpKTsKKyAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVdlYlBhZ2VIaXN0
b3J5SXRlbT4odXJpLCA1LCAwLCAiUGFnZUhpc3RvcnlJdGVtIiwgUU9iamVjdDo6dHIoIkNhbm5v
dCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgUGFnZUhpc3RvcnlJdGVtIikpOworICAgICAg
ICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViUGFnZUhpc3Rvcnk+KHVyaSwgNSwgMCwg
IlBhZ2VIaXN0b3J5IiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFu
Y2Ugb2YgUGFnZUhpc3RvcnkiKSk7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXgg
YTU1MmQ1NWQ4ZGZhYTVjMmExZjVhMGMyMzBkZjUzZjUzNzA5NzFkMy4uNWM0NWNjY2ZiMjU1NDNk
NDJhYmJiMDQ2MmQyMjQyOGY5MDZkMWNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0yNTAsNiArMjUwLDgg
QEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtX3Bf
cC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oIFwKICAgICBVSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcF9wLmggXAorICAgIFVJUHJvY2Vzcy9BUEkvcXQv
cXdlYnBhZ2VoaXN0b3J5X3AuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2VicGFnZWhpc3Rv
cnlfcF9wLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmggXAogICAg
IFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaCBcCiAgICAgVUlQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBcCkBAIC0zMjUsOCAr
MzI3LDYgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGll
bnQuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggXAogICAgIFVJUHJvY2Vz
cy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5oIFwKLSAgICBVSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5o
IFwKLSAgICBVSVByb2Nlc3MvcXQvcXdraGlzdG9yeV9wLmggXAogICAgIFVJUHJvY2Vzcy9xdC9R
dFNHVXBkYXRlUXVldWUuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0U0dUaWxlTm9kZS5oIFwKICAg
ICBVSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmggXApAQCAtNTU0LDYg
KzU1NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQu
Y3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwIFwKICAgICBV
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwIFwKKyAgICBVSVByb2Nlc3MvQVBJL3F0
L3F3ZWJwYWdlaGlzdG9yeS5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
dy5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmNwcCBcCiAgICAg
VUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3Bw
IFwKQEAgLTYzMiw3ICs2MzMsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlTG9hZENsaWVudC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5j
cHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5jcHAgXAotICAgIFVJUHJv
Y2Vzcy9xdC9xd2toaXN0b3J5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0U0dVcGRhdGVRdWV1
ZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFNHVGlsZU5vZGUuY3BwIFwKICAgICBVSVByb2Nl
c3MvcXQvVGlsZWREcmF3aW5nQXJlYVByb3h5UXQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IDRiMmYyZjNjYzNkOTRk
NDkzYzI3MTJiZDM1Y2IxNGJlNjU3NDU0ZjQuLjI4MDY0NjljOWViMjQyN2FiMDAxZGJkNjg5Njgw
ZmRmMjdhMjM5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3LmNwcApAQCAtNTc1LDYgKzU3NSwxMyBAQCBRU3RyaW5nIFFRdWlja1dlYlZp
ZXc6OnRpdGxlKCkgY29uc3QKICAgICByZXR1cm4gZC0+cGFnZVByb3h5LT50aXRsZSgpOwogfQog
CitRV2ViUGFnZUhpc3RvcnkqIFFRdWlja1dlYlZpZXc6Omhpc3RvcnkoKSBjb25zdAoreworICAg
IFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsKKyAgICByZXR1cm4gZC0+cGFnZVByb3h5LT5oaXN0
b3J5KCk7Cit9CisKKwogUVdlYlByZWZlcmVuY2VzKiBRUXVpY2tXZWJWaWV3OjpwcmVmZXJlbmNl
cygpIGNvbnN0CiB7CiAgICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKaW5kZXggMmQxMDdm
NjE4MWJjYjE4ZGJiMGE0MWJjNjAwY2I0ZTgwM2NlYjYzYS4uNmFlZTlkMWMyMTAxMTU4NmM3NjYx
OGM3YmQ5ZjUxMGNiMWI0NmI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCkBAIC0zMCw2ICszMCw3IEBAIGNsYXNzIFFRdWlja1dl
YlZpZXdBdHRhY2hlZDsKIGNsYXNzIFFRdWlja1dlYlZpZXdQcml2YXRlOwogY2xhc3MgUVF1aWNr
V2ViVmlld0V4cGVyaW1lbnRhbDsKIGNsYXNzIFFXZWJEb3dubG9hZEl0ZW07CitjbGFzcyBRV2Vi
UGFnZUhpc3Rvcnk7CiBjbGFzcyBRV2ViUHJlZmVyZW5jZXM7CiAKIG5hbWVzcGFjZSBXVFIgewpA
QCAtNTUsNiArNTYsNyBAQCBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRUXVpY2tXZWJWaWV3IDogcHVi
bGljIFFRdWlja0l0ZW0gewogICAgIFFfUFJPUEVSVFkoYm9vbCBjYW5TdG9wIFJFQUQgY2FuU3Rv
cCBOT1RJRlkgbmF2aWdhdGlvblN0YXRlQ2hhbmdlZCBGSU5BTCkKICAgICBRX1BST1BFUlRZKGJv
b2wgY2FuUmVsb2FkIFJFQUQgY2FuUmVsb2FkIE5PVElGWSBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2Vk
IEZJTkFMKQogICAgIFFfUFJPUEVSVFkoUVdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcyBSRUFE
IHByZWZlcmVuY2VzIENPTlNUQU5UIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVdlYlBhZ2VIaXN0
b3J5KiBoaXN0b3J5IFJFQUQgaGlzdG9yeSBDT05TVEFOVCBGSU5BTCkKICAgICBRX1BST1BFUlRZ
KFFRdWlja1dlYlBhZ2UqIHBhZ2UgUkVBRCBwYWdlIENPTlNUQU5UIEZJTkFMKQogICAgIFFfRU5V
TVMoTmF2aWdhdGlvblBvbGljeSkKICAgICBRX0VOVU1TKEVycm9yVHlwZSkKQEAgLTgzLDYgKzg1
LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuU3RvcCgpIGNvbnN0OwogICAgIGJvb2wgY2FuUmVs
b2FkKCkgY29uc3Q7CiAKKyAgICBRV2ViUGFnZUhpc3RvcnkqIGhpc3RvcnkoKSBjb25zdDsKICAg
ICBRV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKCkgY29uc3Q7CiAgICAgUVF1aWNrV2ViUGFn
ZSogcGFnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3ZWJwYWdlaGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3
ZWJwYWdlaGlzdG9yeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFmNDZiZWZjYmIzMTg5YmZlMWRkMmExM2Q4
MzNiMDMxMmE2M2M3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYnBhZ2VoaXN0b3J5LmNwcApAQCAtMCwwICsxLDE4OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBKdWhhIFNhdm9sYWluZW4gKGp1aGEuc2F2b2xhaW5lbkB3ZWVnby5m
aSkKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJxd2VicGFnZWhp
c3RvcnlfcC5oIgorCisjaW5jbHVkZSAiUXRXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXS0Jh
Y2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKKyNpbmNsdWRlICJXS1VS
TC5oIgorI2luY2x1ZGUgIldLVVJMUXQuaCIKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3Qu
aCIKKworI2luY2x1ZGUgInF3ZWJwYWdlaGlzdG9yeV9wX3AuaCIKKyNpbmNsdWRlIDxRRGVjbGFy
YXRpdmVFbmdpbmU+CisjaW5jbHVkZSA8UVN0cmluZz4KKyNpbmNsdWRlIDxRVXJsPgorI2luY2x1
ZGUgPFdlYktpdDIvV0tBcnJheS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworUVdlYlBhZ2VIaXN0b3J5SXRlbVByaXZhdGU6
OlFXZWJQYWdlSGlzdG9yeUl0ZW1Qcml2YXRlKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBsaXN0
SXRlbSkKKyAgICA6IG1fYmFja0ZvcndhcmRMaXN0SXRlbShsaXN0SXRlbSkKK3sKK30KKworUVdl
YlBhZ2VIaXN0b3J5SXRlbVByaXZhdGU6On5RV2ViUGFnZUhpc3RvcnlJdGVtUHJpdmF0ZSgpCit7
Cit9CisKK1FXZWJQYWdlSGlzdG9yeUl0ZW06OlFXZWJQYWdlSGlzdG9yeUl0ZW0oV0tCYWNrRm9y
d2FyZExpc3RJdGVtUmVmIGl0ZW0pCisgICAgOiBRT2JqZWN0KCkKKyAgICAsIGQobmV3IFFXZWJQ
YWdlSGlzdG9yeUl0ZW1Qcml2YXRlKGl0ZW0pKQoreworfQorCitRV2ViUGFnZUhpc3RvcnlJdGVt
Ojp+UVdlYlBhZ2VIaXN0b3J5SXRlbSgpCit7Cit9CisKK1FTdHJpbmcgUVdlYlBhZ2VIaXN0b3J5
SXRlbTo6dGl0bGUoKSBjb25zdAoreworICAgIGlmICghZC0+bV9iYWNrRm9yd2FyZExpc3RJdGVt
KQorICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiB0aXRsZShBZG9wdFdLLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGl0bGUoZC0+bV9iYWNr
Rm9yd2FyZExpc3RJdGVtLmdldCgpKSk7CisgICAgcmV0dXJuIFdLU3RyaW5nQ29weVFTdHJpbmco
dGl0bGUuZ2V0KCkpOworfQorCitRVXJsIFFXZWJQYWdlSGlzdG9yeUl0ZW06OnVybCgpIGNvbnN0
Cit7CisgICAgaWYgKCFkLT5tX2JhY2tGb3J3YXJkTGlzdEl0ZW0pCisgICAgICAgIHJldHVybiBR
VXJsKCk7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybChBZG9wdFdLLCBXS0JhY2tGb3J3
YXJkTGlzdEl0ZW1Db3B5VVJMKGQtPm1fYmFja0ZvcndhcmRMaXN0SXRlbS5nZXQoKSkpOworICAg
IHJldHVybiBXS1VSTENvcHlRVXJsKHVybC5nZXQoKSk7Cit9CisKK1FXZWJQYWdlSGlzdG9yeVBy
aXZhdGU6OlFXZWJQYWdlSGlzdG9yeVByaXZhdGUoUXRXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYktp
dDo6V2ViQmFja0ZvcndhcmRMaXN0KiBsaXN0KQorICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBt
X2JhY2tGb3J3YXJkTGlzdChsaXN0KQoreworfQorCitRV2ViUGFnZUhpc3RvcnkqIFFXZWJQYWdl
SGlzdG9yeVByaXZhdGU6OmNyZWF0ZUhpc3RvcnkoUXRXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYktp
dDo6V2ViQmFja0ZvcndhcmRMaXN0KiBsaXN0KQoreworICAgIFFXZWJQYWdlSGlzdG9yeSogaGlz
dG9yeSA9IG5ldyBRV2ViUGFnZUhpc3RvcnkoKTsKKyAgICBoaXN0b3J5LT5kID0gbmV3IFFXZWJQ
YWdlSGlzdG9yeVByaXZhdGUocGFnZSwgbGlzdCk7CisgICAgcmV0dXJuIGhpc3Rvcnk7Cit9CisK
K1FXZWJQYWdlSGlzdG9yeVByaXZhdGU6On5RV2ViUGFnZUhpc3RvcnlQcml2YXRlKCkKK3sKK30K
KworUVdlYlBhZ2VIaXN0b3J5OjpRV2ViUGFnZUhpc3RvcnkoKQoreworfQorCitRV2ViUGFnZUhp
c3Rvcnk6On5RV2ViUGFnZUhpc3RvcnkoKQoreworICAgIGRlbGV0ZSBkOworfQorCitpbnQgUVdl
YlBhZ2VIaXN0b3J5OjpiYWNrTGlzdENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV0tCYWNr
Rm9yd2FyZExpc3RHZXRCYWNrTGlzdENvdW50KHRvQVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0KSk7
Cit9CisKK2ludCBRV2ViUGFnZUhpc3Rvcnk6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAorewor
ICAgIHJldHVybiBXS0JhY2tGb3J3YXJkTGlzdEdldEZvcndhcmRMaXN0Q291bnQodG9BUEkoZC0+
bV9iYWNrRm9yd2FyZExpc3QpKTsKK30KKworaW50IFFXZWJQYWdlSGlzdG9yeTo6Y291bnQoKSBj
b25zdAoreworICAgIHJldHVybiBiYWNrTGlzdENvdW50KCkgKyBmb3J3YXJkTGlzdENvdW50KCk7
Cit9CisKK1FXZWJQYWdlSGlzdG9yeUl0ZW0qIFFXZWJQYWdlSGlzdG9yeTo6Y3VycmVudEl0ZW0o
KSBjb25zdAoreworICAgIFdLUmV0YWluUHRyPFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gaXRl
bVJlZiA9IFdLQmFja0ZvcndhcmRMaXN0R2V0Q3VycmVudEl0ZW0odG9BUEkoZC0+bV9iYWNrRm9y
d2FyZExpc3QpKTsKKyAgICBRV2ViUGFnZUhpc3RvcnlJdGVtKiBpdGVtID0gbmV3IFFXZWJQYWdl
SGlzdG9yeUl0ZW0oaXRlbVJlZi5nZXQoKSk7CisgICAgUURlY2xhcmF0aXZlRW5naW5lOjpzZXRP
YmplY3RPd25lcnNoaXAoaXRlbSwgUURlY2xhcmF0aXZlRW5naW5lOjpKYXZhU2NyaXB0T3duZXJz
aGlwKTsKKyAgICByZXR1cm4gaXRlbTsKK30KKworUVdlYlBhZ2VIaXN0b3J5SXRlbSogUVdlYlBh
Z2VIaXN0b3J5OjpiYWNrSXRlbSgpIGNvbnN0Cit7CisgICAgV0tSZXRhaW5QdHI8V0tCYWNrRm9y
d2FyZExpc3RJdGVtUmVmPiBpdGVtUmVmID0gV0tCYWNrRm9yd2FyZExpc3RHZXRCYWNrSXRlbSh0
b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCkpOworICAgIFFXZWJQYWdlSGlzdG9yeUl0ZW0qIGl0
ZW0gPSBuZXcgUVdlYlBhZ2VIaXN0b3J5SXRlbShpdGVtUmVmLmdldCgpKTsKKyAgICBRRGVjbGFy
YXRpdmVFbmdpbmU6OnNldE9iamVjdE93bmVyc2hpcChpdGVtLCBRRGVjbGFyYXRpdmVFbmdpbmU6
OkphdmFTY3JpcHRPd25lcnNoaXApOworICAgIHJldHVybiBpdGVtOworfQorCitRV2ViUGFnZUhp
c3RvcnlJdGVtKiBRV2ViUGFnZUhpc3Rvcnk6OmZvcndhcmRJdGVtKCkgY29uc3QKK3sKKyAgICBX
S1JldGFpblB0cjxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+IGl0ZW1SZWYgPSBXS0JhY2tGb3J3
YXJkTGlzdEdldEZvcndhcmRJdGVtKHRvQVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0KSk7CisgICAg
UVdlYlBhZ2VIaXN0b3J5SXRlbSogaXRlbSA9IG5ldyBRV2ViUGFnZUhpc3RvcnlJdGVtKGl0ZW1S
ZWYuZ2V0KCkpOworICAgIFFEZWNsYXJhdGl2ZUVuZ2luZTo6c2V0T2JqZWN0T3duZXJzaGlwKGl0
ZW0sIFFEZWNsYXJhdGl2ZUVuZ2luZTo6SmF2YVNjcmlwdE93bmVyc2hpcCk7CisgICAgcmV0dXJu
IGl0ZW07Cit9CisKK1FXZWJQYWdlSGlzdG9yeUl0ZW0qIFFXZWJQYWdlSGlzdG9yeTo6aXRlbUF0
KGludCBpbmRleCkgY29uc3QKK3sKKyAgICBXS1JldGFpblB0cjxXS0JhY2tGb3J3YXJkTGlzdEl0
ZW1SZWY+IGl0ZW1SZWYgPSBXS0JhY2tGb3J3YXJkTGlzdEdldEl0ZW1BdEluZGV4KHRvQVBJKGQt
Pm1fYmFja0ZvcndhcmRMaXN0KSwgaW5kZXgpOworICAgIFFXZWJQYWdlSGlzdG9yeUl0ZW0qIGl0
ZW0gPSBuZXcgUVdlYlBhZ2VIaXN0b3J5SXRlbShpdGVtUmVmLmdldCgpKTsKKyAgICBRRGVjbGFy
YXRpdmVFbmdpbmU6OnNldE9iamVjdE93bmVyc2hpcChpdGVtLCBRRGVjbGFyYXRpdmVFbmdpbmU6
OkphdmFTY3JpcHRPd25lcnNoaXApOworICAgIHJldHVybiBpdGVtOworfQorCit2b2lkIFFXZWJQ
YWdlSGlzdG9yeTo6Z29Ub0l0ZW1BdChpbnQgaW5kZXgpIGNvbnN0Cit7CisgICAgV0tSZXRhaW5Q
dHI8V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBpdGVtUmVmID0gV0tCYWNrRm9yd2FyZExpc3RH
ZXRJdGVtQXRJbmRleCh0b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCksIGluZGV4KTsKKyAgICBp
ZiAoaXRlbVJlZiAmJiBkLT5tX3BhZ2UpCisgICAgICAgIFdLUGFnZUdvVG9CYWNrRm9yd2FyZExp
c3RJdGVtKGQtPm1fcGFnZS0+cGFnZVJlZigpLCBpdGVtUmVmLmdldCgpKTsKK30KKworUVZhcmlh
bnQgUVdlYlBhZ2VIaXN0b3J5OjpiYWNrSXRlbXMoaW50IG1heEl0ZW1zKSBjb25zdAoreworICAg
IFdLQXJyYXlSZWYgYXJyYXlSZWYgPSBXS0JhY2tGb3J3YXJkTGlzdENvcHlCYWNrTGlzdFdpdGhM
aW1pdCh0b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCksIG1heEl0ZW1zKTsKKyAgICBpbnQgc2l6
ZSA9IFdLQXJyYXlHZXRTaXplKGFycmF5UmVmKTsKKyAgICBRTGlzdDxRT2JqZWN0Kj4gaXRlbUxp
c3Q7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgV0tUeXBl
UmVmIHdrSGlzdG9yeUl0ZW0gPSBXS0FycmF5R2V0SXRlbUF0SW5kZXgoYXJyYXlSZWYsIGkpOwor
ICAgICAgICBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZiA9IHN0YXRpY19jYXN0PFdL
QmFja0ZvcndhcmRMaXN0SXRlbVJlZj4od2tIaXN0b3J5SXRlbSk7CisgICAgICAgIFFXZWJQYWdl
SGlzdG9yeUl0ZW0qIGl0ZW0gPSBuZXcgUVdlYlBhZ2VIaXN0b3J5SXRlbShpdGVtUmVmKTsKKyAg
ICAgICAgUURlY2xhcmF0aXZlRW5naW5lOjpzZXRPYmplY3RPd25lcnNoaXAoaXRlbSwgUURlY2xh
cmF0aXZlRW5naW5lOjpKYXZhU2NyaXB0T3duZXJzaGlwKTsKKyAgICAgICAgaXRlbUxpc3QuYXBw
ZW5kKGl0ZW0pOworICAgIH0KKyAgICByZXR1cm4gUVZhcmlhbnQ6OmZyb21WYWx1ZShpdGVtTGlz
dCk7Cit9CisKK1FWYXJpYW50IFFXZWJQYWdlSGlzdG9yeTo6Zm9yd2FyZEl0ZW1zKGludCBtYXhJ
dGVtcykgY29uc3QKK3sKKyAgICBXS0FycmF5UmVmIGFycmF5UmVmID0gV0tCYWNrRm9yd2FyZExp
c3RDb3B5Rm9yd2FyZExpc3RXaXRoTGltaXQodG9BUEkoZC0+bV9iYWNrRm9yd2FyZExpc3QpLCBt
YXhJdGVtcyk7CisgICAgaW50IHNpemUgPSBXS0FycmF5R2V0U2l6ZShhcnJheVJlZik7CisgICAg
UUxpc3Q8UU9iamVjdCo+IGl0ZW1MaXN0OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7CisgICAgICAgIFdLVHlwZVJlZiB3a0hpc3RvcnlJdGVtID0gV0tBcnJheUdldEl0ZW1B
dEluZGV4KGFycmF5UmVmLCBpKTsKKyAgICAgICAgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0
ZW1SZWYgPSBzdGF0aWNfY2FzdDxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+KHdrSGlzdG9yeUl0
ZW0pOworICAgICAgICBRV2ViUGFnZUhpc3RvcnlJdGVtKiBpdGVtID0gbmV3IFFXZWJQYWdlSGlz
dG9yeUl0ZW0oaXRlbVJlZik7CisgICAgICAgIFFEZWNsYXJhdGl2ZUVuZ2luZTo6c2V0T2JqZWN0
T3duZXJzaGlwKGl0ZW0sIFFEZWNsYXJhdGl2ZUVuZ2luZTo6SmF2YVNjcmlwdE93bmVyc2hpcCk7
CisgICAgICAgIGl0ZW1MaXN0LmFwcGVuZChpdGVtKTsKKyAgICB9CisgICAgcmV0dXJuIFFWYXJp
YW50Ojpmcm9tVmFsdWUoaXRlbUxpc3QpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwYWdlaGlzdG9yeV9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJwYWdlaGlzdG9yeV9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNkMmZjOWIy
ZTQwZWE4ZTg2OWRiNGQxOTNkY2U1YTQ4NjhiNDdjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBhZ2VoaXN0b3J5X3AuaApAQCAtMCwwICsx
LDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEp1aGEgU2F2b2xhaW5lbiAoanVoYS5z
YXZvbGFpbmVuQHdlZWdvLmZpKQorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBxd2VicGFnZWhpc3Rvcnlf
cF9oCisjZGVmaW5lIHF3ZWJwYWdlaGlzdG9yeV9wX2gKKworI2luY2x1ZGUgIldlYktpdDIvV0tC
YWNrRm9yd2FyZExpc3RJdGVtLmgiCisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorI2luY2x1
ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8UVVybD4KKyNpbmNsdWRlIDxRVmFyaWFudD4KKyNpbmNs
dWRlIDxxZGVjbGFyYXRpdmUuaD4KKworY2xhc3MgUVdlYlBhZ2VIaXN0b3J5UHJpdmF0ZTsKK2Ns
YXNzIFFXZWJQYWdlSGlzdG9yeUl0ZW1Qcml2YXRlOworY2xhc3MgUVVybDsKK2NsYXNzIFFTdHJp
bmc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OworfQor
CitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViUGFnZUhpc3RvcnlJdGVtIDogcHVibGljIFFPYmpl
Y3QgeworICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShRVXJsIHVybCBSRUFEIHVybCBDT05T
VEFOVCBGSU5BTCkKKyAgICBRX1BST1BFUlRZKFFTdHJpbmcgdGl0bGUgUkVBRCB0aXRsZSBDT05T
VEFOVCBGSU5BTCkKK3B1YmxpYzoKKyAgICB+UVdlYlBhZ2VIaXN0b3J5SXRlbSgpOworICAgIFFT
dHJpbmcgdGl0bGUoKSBjb25zdDsKKyAgICBRVXJsIHVybCgpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIFFXZWJQYWdlSGlzdG9yeUl0ZW0oV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmKTsKKworICAg
IFFXZWJQYWdlSGlzdG9yeUl0ZW1Qcml2YXRlKiBkOworCisgICAgZnJpZW5kIGNsYXNzIFFXZWJQ
YWdlSGlzdG9yeTsKKyAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2VIaXN0b3J5UHJpdmF0ZTsKK307
CisKK1FNTF9ERUNMQVJFX1RZUEUoUVdlYlBhZ2VIaXN0b3J5SXRlbSkKKworY2xhc3MgUVdFQktJ
VF9FWFBPUlQgUVdlYlBhZ2VIaXN0b3J5IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNU
CitwdWJsaWMgc2xvdHM6CisgICAgaW50IGJhY2tMaXN0Q291bnQoKSBjb25zdDsKKyAgICBpbnQg
Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0OworICAgIGludCBjb3VudCgpIGNvbnN0OworICAgIFFX
ZWJQYWdlSGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCkgY29uc3Q7CisgICAgUVdlYlBhZ2VIaXN0
b3J5SXRlbSogYmFja0l0ZW0oKSBjb25zdDsKKyAgICBRV2ViUGFnZUhpc3RvcnlJdGVtKiBmb3J3
YXJkSXRlbSgpIGNvbnN0OworICAgIFFXZWJQYWdlSGlzdG9yeUl0ZW0qIGl0ZW1BdChpbnQgaW5k
ZXgpIGNvbnN0OworICAgIHZvaWQgZ29Ub0l0ZW1BdChpbnQgaW5kZXgpIGNvbnN0OworICAgIFFW
YXJpYW50IGJhY2tJdGVtcyhpbnQgbWF4SXRlbXMpIGNvbnN0OworICAgIFFWYXJpYW50IGZvcndh
cmRJdGVtcyhpbnQgbWF4SXRlbXMpIGNvbnN0OworCitwcml2YXRlOgorICAgIFFXZWJQYWdlSGlz
dG9yeSgpOworICAgIH5RV2ViUGFnZUhpc3RvcnkoKTsKKworICAgIFFXZWJQYWdlSGlzdG9yeVBy
aXZhdGUqIGQ7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlSGlzdG9yeVByaXZhdGU7CisgICAg
ZnJpZW5kIGNsYXNzIFF0V2ViUGFnZVByb3h5OworfTsKKworUU1MX0RFQ0xBUkVfVFlQRShRV2Vi
UGFnZUhpc3RvcnkpCitRX0RFQ0xBUkVfTUVUQVRZUEUoUUxpc3Q8UU9iamVjdCo+KQorCisjZW5k
aWYgLyogcXdlYnBhZ2VoaXN0b3J5X3BfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2VicGFnZWhpc3RvcnlfcF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJwYWdlaGlzdG9yeV9wX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjIzMDVl
MmE0ZWFhOTAxYTNmZjlmMmJjOWY1MzlhYzg5YmI5NGUxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicGFnZWhpc3RvcnlfcF9wLmgKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBKdWhhIFNhdm9sYWluZW4gKGp1
aGEuc2F2b2xhaW5lbkB3ZWVnby5maSkKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgcXdlYnBhZ2VoaXN0
b3J5X3BfcF9oCisjZGVmaW5lIHF3ZWJwYWdlaGlzdG9yeV9wX3BfaAorCisjaW5jbHVkZSAicXdl
YmtpdGdsb2JhbC5oIgorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7Cit9CisKK2NsYXNzIFFX
ZWJQYWdlSGlzdG9yeTsKK2NsYXNzIFF0V2ViUGFnZVByb3h5OworCitjbGFzcyBRV0VCS0lUX0VY
UE9SVCBRV2ViUGFnZUhpc3RvcnlJdGVtUHJpdmF0ZSA6IHB1YmxpYyBRU2hhcmVkRGF0YSB7Citw
dWJsaWM6CisgICAgICAgflFXZWJQYWdlSGlzdG9yeUl0ZW1Qcml2YXRlKCk7Citwcml2YXRlOgor
ICAgIFFXZWJQYWdlSGlzdG9yeUl0ZW1Qcml2YXRlKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBs
aXN0SXRlbSk7CisgICAgV0tSZXRhaW5QdHI8V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBtX2Jh
Y2tGb3J3YXJkTGlzdEl0ZW07CisKKyAgICBRRXhwbGljaXRseVNoYXJlZERhdGFQb2ludGVyPFFX
ZWJQYWdlSGlzdG9yeUl0ZW1Qcml2YXRlPiBkOworCisgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdl
SGlzdG9yeTsKKyAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2VIaXN0b3J5SXRlbTsKK307CisKK2Ns
YXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJQYWdlSGlzdG9yeVByaXZhdGUgeworcHVibGljOgorICAg
IHN0YXRpYyBRV2ViUGFnZUhpc3RvcnkqIGNyZWF0ZUhpc3RvcnkoUXRXZWJQYWdlUHJveHkqLCBX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdCopOworCitwcml2YXRlOgorICAgIFFXZWJQYWdlSGlz
dG9yeVByaXZhdGUoUXRXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdCop
OworICAgIH5RV2ViUGFnZUhpc3RvcnlQcml2YXRlKCk7CisKKyAgICBRdFdlYlBhZ2VQcm94eSog
bV9wYWdlOworICAgIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0KiBtX2JhY2tGb3J3YXJkTGlz
dDsKKworICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZUhpc3Rvcnk7Cit9OworCisjZW5kaWYgLyog
cXdlYnBhZ2VoaXN0b3J5X3BfcF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1F0V2ViUGFnZVByb3h5LmNwcAppbmRleCBjMTA3NzNiYTk0NTQwY2NlNzJmMzliZDMzN2Q2YmYw
ZmFhOGFkY2VlLi43YjNjOThmZjI0YzIzNjE4NjQxMmNlNzdhMWMwZTQ2MzVkY2U0MzM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKQEAgLTM1
LDggKzM1LDggQEAKICNpbmNsdWRlICJDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCi0jaW5jbHVkZSAicXdr
aGlzdG9yeS5oIgotI2luY2x1ZGUgInF3a2hpc3RvcnlfcC5oIgorI2luY2x1ZGUgInF3ZWJwYWdl
aGlzdG9yeV9wLmgiCisjaW5jbHVkZSAicXdlYnBhZ2VoaXN0b3J5X3BfcC5oIgogI2luY2x1ZGUg
IkZpbmRJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVk
ZSAiTXV0YWJsZUFycmF5LmgiCkBAIC0xNDYsNyArMTQ2LDcgQEAgUXRXZWJQYWdlUHJveHk6OlF0
V2ViUGFnZVByb3h5KFFRdWlja1dlYlBhZ2UqIHFtbFdlYlBhZ2UsIFFRdWlja1dlYlZpZXcqIHFt
bFdlYlYKICAgICAsIG1fbmF2aWdhdG9yUXRPYmplY3RFbmFibGVkKGZhbHNlKQogewogICAgIG1f
d2ViUGFnZVByb3h5ID0gbV9jb250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMsIHRvSW1wbChwYWdl
R3JvdXBSZWYpKTsKLSAgICBtX2hpc3RvcnkgPSBRV0tIaXN0b3J5UHJpdmF0ZTo6Y3JlYXRlSGlz
dG9yeSh0aGlzLCBtX3dlYlBhZ2VQcm94eS0+YmFja0ZvcndhcmRMaXN0KCkpOworICAgIG1faGlz
dG9yeSA9IFFXZWJQYWdlSGlzdG9yeVByaXZhdGU6OmNyZWF0ZUhpc3RvcnkodGhpcywgbV93ZWJQ
YWdlUHJveHktPmJhY2tGb3J3YXJkTGlzdCgpKTsKICAgICBpZiAoIWNvbnRleHRSZWYpCiAgICAg
ICAgIHNfZGVmYXVsdFBhZ2VQcm94eUNvdW50Kys7CiB9CkBAIC03ODQsNyArNzg0LDcgQEAgdm9p
ZCBRdFdlYlBhZ2VQcm94eTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhxcmVhbCBwYWdlWm9v
bUZhY3RvciwgcXJlYWwgdGV4dFoKICAgICBXS1BhZ2VTZXRQYWdlQW5kVGV4dFpvb21GYWN0b3Jz
KHBhZ2VSZWYoKSwgcGFnZVpvb21GYWN0b3IsIHRleHRab29tRmFjdG9yKTsKIH0KIAotUVdLSGlz
dG9yeSogUXRXZWJQYWdlUHJveHk6Omhpc3RvcnkoKSBjb25zdAorUVdlYlBhZ2VIaXN0b3J5KiBR
dFdlYlBhZ2VQcm94eTo6aGlzdG9yeSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faGlzdG9yeTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKaW5kZXgg
Y2EzNjgyMDBlODI4MTk0OTAxOGQ3Y2U0MjA4OWYyNTg4NTE3ODMyMS4uMDVhNzFiMjU2MzhiMjE3
NmMwZGRkOWJmYzcyZjM1NjQxMTIxYzVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVByb3h5LmgKQEAgLTQ2LDggKzQ2LDggQEAgY2xhc3MgUVVuZG9TdGFjazsK
IFFUX0VORF9OQU1FU1BBQ0UKIAogY2xhc3MgUXRXZWJFcnJvcjsKK2NsYXNzIFFXZWJQYWdlSGlz
dG9yeTsKIGNsYXNzIFFXZWJQcmVmZXJlbmNlczsKLWNsYXNzIFFXS0hpc3Rvcnk7CiBjbGFzcyBR
UXVpY2tXZWJQYWdlOwogY2xhc3MgUVF1aWNrV2ViVmlldzsKIApAQCAtMTgyLDcgKzE4Miw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGZpbmRab29tYWJsZUFyZWFGb3JQb2ludChjb25zdCBRUG9pbnQm
KTsKICAgICB2b2lkIHJlbmRlclRvQ3VycmVudEdMQ29udGV4dChjb25zdCBXZWJDb3JlOjpUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKIAotICAgIFFXS0hpc3RvcnkqIGhpc3RvcnkoKSBj
b25zdDsKKyAgICBRV2ViUGFnZUhpc3RvcnkqIGhpc3RvcnkoKSBjb25zdDsKIAogICAgIHZvaWQg
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgZGF0
YSkKICAgICB7CkBAIC0yNDYsNyArMjQ2LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdW5zaWdu
ZWQgc19kZWZhdWx0UGFnZVByb3h5Q291bnQ7CiAKICAgICBSZWZQdHI8V2ViQ29udGV4dD4gbV9j
b250ZXh0OwotICAgIFFXS0hpc3RvcnkqIG1faGlzdG9yeTsKKyAgICBRV2ViUGFnZUhpc3Rvcnkq
IG1faGlzdG9yeTsKIAogICAgIG11dGFibGUgT3duUHRyPFFXZWJQcmVmZXJlbmNlcz4gbV9wcmVm
ZXJlbmNlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2hp
c3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzE0MjVmMGYwNzUwYmQ2NjFkN2RkMWFjODFm
ZTFhOGU4NGE1ZDQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDE5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEp1aGEgU2F2
b2xhaW5lbiAoanVoYS5zYXZvbGFpbmVuQHdlZWdvLmZpKQotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgInF3a2hpc3RvcnkuaCIKLQotI2luY2x1ZGUgPFFTaGFyZWREYXRhPgotI2luY2x1
ZGUgPFFTdHJpbmc+Ci0jaW5jbHVkZSA8UVVybD4KLSNpbmNsdWRlICJRdFdlYlBhZ2VQcm94eS5o
IgotI2luY2x1ZGUgInF3a2hpc3RvcnlfcC5oIgotI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlz
dC5oIgotI2luY2x1ZGUgPFdlYktpdDIvV0tBcnJheS5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tS
ZXRhaW5QdHIuaD4KLSNpbmNsdWRlICJXS0JhY2tGb3J3YXJkTGlzdC5oIgotI2luY2x1ZGUgIldL
U3RyaW5nUXQuaCIKLSNpbmNsdWRlICJXS1VSTC5oIgotI2luY2x1ZGUgIldLVVJMUXQuaCIKLQot
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotUVdLSGlzdG9yeUl0ZW1Qcml2YXRlOjpRV0tIaXN0
b3J5SXRlbVByaXZhdGUoV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGxpc3RJdGVtKQotICAgIDog
bV9iYWNrRm9yd2FyZExpc3RJdGVtKGxpc3RJdGVtKQotewotfQotCi1RV0tIaXN0b3J5SXRlbVBy
aXZhdGU6On5RV0tIaXN0b3J5SXRlbVByaXZhdGUoKQotewotfQotCi1RV0tIaXN0b3J5SXRlbTo6
UVdLSGlzdG9yeUl0ZW0oY29uc3QgUVdLSGlzdG9yeUl0ZW0mIG90aGVyKQotICAgIDogZChvdGhl
ci5kKSAKLXsKLX0KLQotUVdLSGlzdG9yeUl0ZW0mIFFXS0hpc3RvcnlJdGVtOjpRV0tIaXN0b3J5
SXRlbTo6b3BlcmF0b3I9KGNvbnN0IFFXS0hpc3RvcnlJdGVtJiBvdGhlcikgCi17IAotICAgIGQg
PSBvdGhlci5kOwotICAgIHJldHVybiAqdGhpczsgCi19Ci0KLVFXS0hpc3RvcnlJdGVtOjpRV0tI
aXN0b3J5SXRlbShXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbSkKLSAgICA6IGQobmV3IFFX
S0hpc3RvcnlJdGVtUHJpdmF0ZShpdGVtKSkKLXsKLX0KLQotUVdLSGlzdG9yeUl0ZW06On5RV0tI
aXN0b3J5SXRlbSgpCi17Ci19Ci0KLVFTdHJpbmcgUVdLSGlzdG9yeUl0ZW06OnRpdGxlKCkgY29u
c3QKLXsKLSAgICBpZiAoIWQtPm1fYmFja0ZvcndhcmRMaXN0SXRlbSkKLSAgICAgICAgcmV0dXJu
IFFTdHJpbmcoKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdGl0bGUoQWRvcHRXSywg
V0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weVRpdGxlKGQtPm1fYmFja0ZvcndhcmRMaXN0SXRlbS5n
ZXQoKSkpOwotICAgIHJldHVybiBXS1N0cmluZ0NvcHlRU3RyaW5nKHRpdGxlLmdldCgpKTsKLX0K
LQotUVVybCBRV0tIaXN0b3J5SXRlbTo6dXJsKCkgY29uc3QKLXsKLSAgICBpZiAoIWQtPm1fYmFj
a0ZvcndhcmRMaXN0SXRlbSkKLSAgICAgICAgcmV0dXJuIFFVcmwoKTsKLSAgICBXS1JldGFpblB0
cjxXS1VSTFJlZj4gdXJsKEFkb3B0V0ssIFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlVUkwoZC0+
bV9iYWNrRm9yd2FyZExpc3RJdGVtLmdldCgpKSk7Ci0gICAgcmV0dXJuIFdLVVJMQ29weVFVcmwo
dXJsLmdldCgpKTsKLX0KLQotUVdLSGlzdG9yeVByaXZhdGU6OlFXS0hpc3RvcnlQcml2YXRlKFF0
V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdCogbGlzdCkKLSAg
ICA6IG1fcGFnZShwYWdlKQotICAgICwgbV9iYWNrRm9yd2FyZExpc3QobGlzdCkKLXsKLX0KLQot
UVdLSGlzdG9yeSogUVdLSGlzdG9yeVByaXZhdGU6OmNyZWF0ZUhpc3RvcnkoUXRXZWJQYWdlUHJv
eHkqIHBhZ2UsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0KiBsaXN0KQotewotICAgIFFXS0hp
c3RvcnkqIGhpc3RvcnkgPSBuZXcgUVdLSGlzdG9yeSgpOwotICAgIGhpc3RvcnktPmQgPSBuZXcg
UVdLSGlzdG9yeVByaXZhdGUocGFnZSwgbGlzdCk7Ci0gICAgcmV0dXJuIGhpc3Rvcnk7Ci19Ci0K
LVFXS0hpc3RvcnlQcml2YXRlOjp+UVdLSGlzdG9yeVByaXZhdGUoKQotewotfQotCi1RV0tIaXN0
b3J5OjpRV0tIaXN0b3J5KCkKLXsKLX0KLQotUVdLSGlzdG9yeTo6flFXS0hpc3RvcnkoKQotewot
ICAgIGRlbGV0ZSBkOwotfQotCi1pbnQgUVdLSGlzdG9yeTo6YmFja0xpc3RDb3VudCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIFdLQmFja0ZvcndhcmRMaXN0R2V0QmFja0xpc3RDb3VudCh0b0FQSShk
LT5tX2JhY2tGb3J3YXJkTGlzdCkpOwotfQotCi1pbnQgUVdLSGlzdG9yeTo6Zm9yd2FyZExpc3RD
b3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdLQmFja0ZvcndhcmRMaXN0R2V0Rm9yd2FyZExp
c3RDb3VudCh0b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCkpOwotfQotCi1pbnQgUVdLSGlzdG9y
eTo6Y291bnQoKSBjb25zdAotewotICAgIHJldHVybiBiYWNrTGlzdENvdW50KCkgKyBmb3J3YXJk
TGlzdENvdW50KCk7Ci19Ci0KLVFXS0hpc3RvcnlJdGVtIFFXS0hpc3Rvcnk6OmN1cnJlbnRJdGVt
KCkgY29uc3QKLXsKLSAgICBXS1JldGFpblB0cjxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+IGl0
ZW1SZWYgPSBXS0JhY2tGb3J3YXJkTGlzdEdldEN1cnJlbnRJdGVtKHRvQVBJKGQtPm1fYmFja0Zv
cndhcmRMaXN0KSk7Ci0gICAgUVdLSGlzdG9yeUl0ZW0gaXRlbShpdGVtUmVmLmdldCgpKTsKLSAg
ICByZXR1cm4gaXRlbTsKLX0KLQotUVdLSGlzdG9yeUl0ZW0gUVdLSGlzdG9yeTo6YmFja0l0ZW0o
KSBjb25zdAotewotICAgIFdLUmV0YWluUHRyPFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gaXRl
bVJlZiA9IFdLQmFja0ZvcndhcmRMaXN0R2V0QmFja0l0ZW0odG9BUEkoZC0+bV9iYWNrRm9yd2Fy
ZExpc3QpKTsKLSAgICBRV0tIaXN0b3J5SXRlbSBpdGVtKGl0ZW1SZWYuZ2V0KCkpOwotICAgIHJl
dHVybiBpdGVtOwotfQotCi1RV0tIaXN0b3J5SXRlbSBRV0tIaXN0b3J5Ojpmb3J3YXJkSXRlbSgp
IGNvbnN0Ci17Ci0gICAgV0tSZXRhaW5QdHI8V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBpdGVt
UmVmID0gV0tCYWNrRm9yd2FyZExpc3RHZXRGb3J3YXJkSXRlbSh0b0FQSShkLT5tX2JhY2tGb3J3
YXJkTGlzdCkpOwotICAgIFFXS0hpc3RvcnlJdGVtIGl0ZW0oaXRlbVJlZi5nZXQoKSk7Ci0gICAg
cmV0dXJuIGl0ZW07Ci19Ci0KLVFXS0hpc3RvcnlJdGVtIFFXS0hpc3Rvcnk6Oml0ZW1BdChpbnQg
aW5kZXgpIGNvbnN0Ci17Ci0gICAgV0tSZXRhaW5QdHI8V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVm
PiBpdGVtUmVmID0gV0tCYWNrRm9yd2FyZExpc3RHZXRJdGVtQXRJbmRleCh0b0FQSShkLT5tX2Jh
Y2tGb3J3YXJkTGlzdCksIGluZGV4KTsKLSAgICBRV0tIaXN0b3J5SXRlbSBpdGVtKGl0ZW1SZWYu
Z2V0KCkpOwotICAgIHJldHVybiBpdGVtOwotfQotCi12b2lkIFFXS0hpc3Rvcnk6OmdvVG9JdGVt
QXQoaW50IGluZGV4KSBjb25zdAotewotICAgIFdLUmV0YWluUHRyPFdLQmFja0ZvcndhcmRMaXN0
SXRlbVJlZj4gaXRlbVJlZiA9IFdLQmFja0ZvcndhcmRMaXN0R2V0SXRlbUF0SW5kZXgodG9BUEko
ZC0+bV9iYWNrRm9yd2FyZExpc3QpLCBpbmRleCk7Ci0gICAgaWYgKGl0ZW1SZWYgJiYgZC0+bV9w
YWdlKSB7Ci0gICAgICAgIFFXS0hpc3RvcnlJdGVtIGl0ZW0oaXRlbVJlZi5nZXQoKSk7Ci0gICAg
ICAgIFdLUGFnZUdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKGQtPm1fcGFnZS0+cGFnZVJlZigpLCBp
dGVtLmQtPm1fYmFja0ZvcndhcmRMaXN0SXRlbS5nZXQoKSk7Ci0gICAgfQotfQotCi1RTGlzdDxR
V0tIaXN0b3J5SXRlbT4gUVdLSGlzdG9yeTo6YmFja0l0ZW1zKGludCBtYXhJdGVtcykgY29uc3QK
LXsKLSAgICBXS0FycmF5UmVmIGFycmF5UmVmID0gV0tCYWNrRm9yd2FyZExpc3RDb3B5QmFja0xp
c3RXaXRoTGltaXQodG9BUEkoZC0+bV9iYWNrRm9yd2FyZExpc3QpLCBtYXhJdGVtcyk7Ci0gICAg
aW50IHNpemUgPSBXS0FycmF5R2V0U2l6ZShhcnJheVJlZik7Ci0gICAgUUxpc3Q8UVdLSGlzdG9y
eUl0ZW0+IGl0ZW1MaXN0OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgIFdLVHlwZVJlZiB3a0hpc3RvcnlJdGVtID0gV0tBcnJheUdldEl0ZW1BdEluZGV4KGFy
cmF5UmVmLCBpKTsKLSAgICAgICAgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYgPSBz
dGF0aWNfY2FzdDxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+KHdrSGlzdG9yeUl0ZW0pOwotICAg
ICAgICBRV0tIaXN0b3J5SXRlbSBpdGVtKGl0ZW1SZWYpOwotICAgICAgICBpdGVtTGlzdC5hcHBl
bmQoaXRlbSk7Ci0gICAgfQotICAgIHJldHVybiBpdGVtTGlzdDsKLX0KLQotUUxpc3Q8UVdLSGlz
dG9yeUl0ZW0+IFFXS0hpc3Rvcnk6OmZvcndhcmRJdGVtcyhpbnQgbWF4SXRlbXMpIGNvbnN0Ci17
Ci0gICAgV0tBcnJheVJlZiBhcnJheVJlZiA9IFdLQmFja0ZvcndhcmRMaXN0Q29weUZvcndhcmRM
aXN0V2l0aExpbWl0KHRvQVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0KSwgbWF4SXRlbXMpOwotICAg
IGludCBzaXplID0gV0tBcnJheUdldFNpemUoYXJyYXlSZWYpOwotICAgIFFMaXN0PFFXS0hpc3Rv
cnlJdGVtPiBpdGVtTGlzdDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewot
ICAgICAgICBXS1R5cGVSZWYgd2tIaXN0b3J5SXRlbSA9IFdLQXJyYXlHZXRJdGVtQXRJbmRleChh
cnJheVJlZiwgaSk7Ci0gICAgICAgIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtUmVmID0g
c3RhdGljX2Nhc3Q8V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmPih3a0hpc3RvcnlJdGVtKTsKLSAg
ICAgICAgUVdLSGlzdG9yeUl0ZW0gaXRlbShpdGVtUmVmKTsKLSAgICAgICAgaXRlbUxpc3QuYXBw
ZW5kKGl0ZW0pOwotICAgIH0KLSAgICByZXR1cm4gaXRlbUxpc3Q7Ci19Ci0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlMDM1MTNmZGE1YWNjMjk5ZGQ2YjQzZDUwYzYwZTBlNDMxMTkyNDAxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9xd2toaXN0b3J5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEp1aGEgU2F2b2xhaW5lbiAoanVoYS5zYXZvbGFpbmVuQHdlZWdv
LmZpKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ki8KLQotI2lmbmRlZiBxd2toaXN0b3J5X2gKLSNkZWZpbmUgcXdraGlzdG9yeV9oCi0KLSNpbmNs
dWRlICJXZWJLaXQyL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5oIgotI2luY2x1ZGUgInF3ZWJraXRn
bG9iYWwuaCIKLSNpbmNsdWRlIDxRT2JqZWN0PgotI2luY2x1ZGUgPFFTaGFyZWREYXRhPgotCi1j
bGFzcyBRV0tIaXN0b3J5UHJpdmF0ZTsKLWNsYXNzIFFXS0hpc3RvcnlJdGVtUHJpdmF0ZTsKLWNs
YXNzIFFVcmw7Ci1jbGFzcyBRU3RyaW5nOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdl
YkJhY2tGb3J3YXJkTGlzdDsKLX0KLQotY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdLSGlzdG9yeUl0
ZW0gewotcHVibGljOgotICAgIFFXS0hpc3RvcnlJdGVtKGNvbnN0IFFXS0hpc3RvcnlJdGVtJiBv
dGhlcik7Ci0gICAgUVdLSGlzdG9yeUl0ZW0gJm9wZXJhdG9yPShjb25zdCBRV0tIaXN0b3J5SXRl
bSYgb3RoZXIpOwotCi0gICAgflFXS0hpc3RvcnlJdGVtKCk7Ci0gICAgUVN0cmluZyB0aXRsZSgp
IGNvbnN0OwotICAgIFFVcmwgdXJsKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgUVdLSGlzdG9y
eUl0ZW0oV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmKTsKLQotICAgIFFFeHBsaWNpdGx5U2hhcmVk
RGF0YVBvaW50ZXI8UVdLSGlzdG9yeUl0ZW1Qcml2YXRlPiBkOwotCi0gICAgZnJpZW5kIGNsYXNz
IFFXS0hpc3Rvcnk7Ci0gICAgZnJpZW5kIGNsYXNzIFFXS0hpc3RvcnlJdGVtUHJpdmF0ZTsKLX07
Ci0KLWNsYXNzIFFXRUJLSVRfRVhQT1JUIFFXS0hpc3RvcnkgOiBwdWJsaWMgUU9iamVjdCB7Ci0g
ICAgUV9PQkpFQ1QKLXB1YmxpYzoKLSAgICBpbnQgYmFja0xpc3RDb3VudCgpIGNvbnN0OwotICAg
IGludCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3Q7Ci0gICAgaW50IGNvdW50KCkgY29uc3Q7Ci0g
ICAgUVdLSGlzdG9yeUl0ZW0gY3VycmVudEl0ZW0oKSBjb25zdDsKLSAgICBRV0tIaXN0b3J5SXRl
bSBiYWNrSXRlbSgpIGNvbnN0OwotICAgIFFXS0hpc3RvcnlJdGVtIGZvcndhcmRJdGVtKCkgY29u
c3Q7Ci0gICAgUVdLSGlzdG9yeUl0ZW0gaXRlbUF0KGludCBpbmRleCkgY29uc3Q7Ci0gICAgdm9p
ZCBnb1RvSXRlbUF0KGludCBpbmRleCkgY29uc3Q7Ci0gICAgUUxpc3Q8UVdLSGlzdG9yeUl0ZW0+
IGJhY2tJdGVtcyhpbnQgbWF4SXRlbXMpIGNvbnN0OwotICAgIFFMaXN0PFFXS0hpc3RvcnlJdGVt
PiBmb3J3YXJkSXRlbXMoaW50IG1heEl0ZW1zKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBRV0tI
aXN0b3J5KCk7Ci0gICAgflFXS0hpc3RvcnkoKTsKLQotICAgIFFXS0hpc3RvcnlQcml2YXRlKiBk
OwotICAgIGZyaWVuZCBjbGFzcyBRV0tIaXN0b3J5UHJpdmF0ZTsKLSAgICBmcmllbmQgY2xhc3Mg
UXRXZWJQYWdlUHJveHk7Ci19OwotI2VuZGlmIC8qIHF3a2hpc3RvcnlfaCAqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnlfcC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnlfcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwZWYxNDNlMTc1ODgwOTcyNzhmZTk2YjkxMGM0NWU3OTIyNzExNjdhLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9xd2toaXN0b3J5X3AuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSnVoYSBTYXZvbGFpbmVuIChqdWhhLnNhdm9sYWlu
ZW5Ad2VlZ28uZmkpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwot
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0qLwotCi0jaWZuZGVmIHF3a2hpc3RvcnlfcF9oCi0jZGVmaW5lIHF3a2hpc3Rvcnlf
cF9oCi0KLSNpbmNsdWRlIDxRU2hhcmVkRGF0YT4KLSNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgi
Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWlu
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci1jbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7Ci19Ci0KLWNsYXNzIFFXS0hpc3Rvcnk7Ci1jbGFz
cyBRdFdlYlBhZ2VQcm94eTsKLQotY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdLSGlzdG9yeUl0ZW1Q
cml2YXRlIDogcHVibGljIFFTaGFyZWREYXRhIHsKLXB1YmxpYzoKLSAgICAgICB+UVdLSGlzdG9y
eUl0ZW1Qcml2YXRlKCk7Ci1wcml2YXRlOgotICAgIFFXS0hpc3RvcnlJdGVtUHJpdmF0ZShXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1SZWYgbGlzdEl0ZW0pOwotICAgIFdLUmV0YWluUHRyPFdLQmFja0Zv
cndhcmRMaXN0SXRlbVJlZj4gbV9iYWNrRm9yd2FyZExpc3RJdGVtOwotCi0gICAgZnJpZW5kIGNs
YXNzIFFXS0hpc3Rvcnk7Ci0gICAgZnJpZW5kIGNsYXNzIFFXS0hpc3RvcnlJdGVtOwotfTsKLQot
Y2xhc3MgUVdFQktJVF9FWFBPUlQgUVdLSGlzdG9yeVByaXZhdGUgewotcHVibGljOgotICAgIHN0
YXRpYyBRV0tIaXN0b3J5KiBjcmVhdGVIaXN0b3J5KFF0V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3QqKTsKLQotcHJpdmF0ZToKLSAgICBRV0tIaXN0b3J5UHJpdmF0ZShR
dFdlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0Kik7Ci0gICAgflFXS0hp
c3RvcnlQcml2YXRlKCk7Ci0KLSAgICBRdFdlYlBhZ2VQcm94eSogbV9wYWdlOwotICAgIFdlYktp
dDo6V2ViQmFja0ZvcndhcmRMaXN0KiBtX2JhY2tGb3J3YXJkTGlzdDsKLQotICAgIGZyaWVuZCBj
bGFzcyBRV0tIaXN0b3J5OwotfTsKLQotI2VuZGlmIC8qIHF3a2hpc3RvcnlfcF9oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvcXR3ZWJraXQtZXhwb3J0Lm1hcCBiL1NvdXJjZS9xdHdlYmtpdC1leHBv
cnQubWFwCmluZGV4IGE0MjYyMDMwMmJhMGJhMjBmOGRmODFlNjc3OGViYzRhNTg0ZjYxNTUuLmQw
OGViOTUxMzljNzQ1NmQ5MDZiYTcyM2Q2MDMyYmU0ZmE4ZDlhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9xdHdlYmtpdC1leHBvcnQubWFwCisrKyBiL1NvdXJjZS9xdHdlYmtpdC1leHBvcnQubWFwCkBA
IC0xMTgsNiArMTE4LDEyIEBAIHF3a18xLjAgewogICAgICAgICAqUVF1aWNrV2ViVmlld0V4cGVy
aW1lbnRhbDsKICAgICAgICAgbm9uLXZpcnR1YWw/dGh1bms/dG8/UVF1aWNrV2ViVmlld0V4cGVy
aW1lbnRhbCo7CiAgICAgICAgIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6Oio7CisgICAgICAg
ICpRV2ViUGFnZUhpc3Rvcnk7CisgICAgICAgIG5vbi12aXJ0dWFsP3RodW5rP3RvP1FXZWJQYWdl
SGlzdG9yeSo7CisgICAgICAgIFFXZWJQYWdlSGlzdG9yeTo6KjsKKyAgICAgICAgKlFXZWJQYWdl
SGlzdG9yeUl0ZW07CisgICAgICAgIG5vbi12aXJ0dWFsP3RodW5rP3RvP1FXZWJQYWdlSGlzdG9y
eSo7CisgICAgICAgIFFXZWJQYWdlSGlzdG9yeUl0ZW06Oio7CiAgICAgICAgICpRV2ViUHJlZmVy
ZW5jZXM7CiAgICAgICAgIG5vbi12aXJ0dWFsP3RodW5rP3RvP1FXZWJQcmVmZXJlbmNlcyo7CiAg
ICAgICAgIFFXZWJQcmVmZXJlbmNlczo6KjsKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCA4YWQ5M2QzOTljMTZiZjE3YzE2MTY3MGI3YTIyZmYwMmY5NDI1M2VkLi44ZTk3
NTZmZTA5OTBhMzhlZjkxODZhZWYyODJkODljNjc0MzNiNDFkIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEtMjMgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJd
IEhpc3RvcnkgaXMgbm90IGFjY2Vzc2libGUgaW4gUU1MLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMTYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIG5ldyBRV2ViUGFnZUhpc3RvcnkgaW4g
dGhlIG1hcCBmaWxlLworCisgICAgICAgICogU291cmNlL3F0d2Via2l0LWV4cG9ydC5tYXA6CisK
IDIwMTEtMTEtMjEgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
QWRkIEdZUC1nZW5lcmF0ZWQgV1RGLnhjb2RlcHJvaiB0byAuZ2l0aWdub3JlIGFmdGVyIHIxMDA4
NTEuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116531</attachid>
            <date>2011-11-24 12:20:30 -0800</date>
            <delta_ts>2011-12-06 13:50:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73016-20111124171841.patch</filename>
            <type>text/plain</type>
            <size>36756</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDU4NWRjZDZiYTRi
YzIwZTJhZjA4YjNlNDAxMWZlMWRiMjY4MTk0OTAuLmVmNTFhMGM4NzNiY2JlMTVjOGFhZDI1YTg0
ODEyYzQ1OWIxMjg4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTEt
MjQgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAg
ICAgW1F0XVtXSzJdIEhpc3RvcnkgaXMgbm90IGFjY2Vzc2libGUgaW4gUU1MLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWdpc3RlciBRV2ViTmF2aWdh
dGlvbkhpc3RvcnkgYW5kIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsIGluIHRoZSBRTUwgcGx1Z2lu
LgorCisgICAgICAgICogZGVjbGFyYXRpdmUvcGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdFFt
bFBsdWdpbjo6cmVnaXN0ZXJUeXBlcyk6CisKIDIwMTEtMTEtMjIgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBJbnNw
ZWN0b3I6OmJyaW5nVG9Gcm9udCBmcm9tIHRoZSBwcm90b2NvbC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlMTQ1
NTM0MTk2NzY5NzY1ZGJiZjViMTJhNjBlMjFlY2ZhOGZjODM1Li5lNGMzMzNhYWU1OTkwMGVmODQ5
MWU4ODM2NzI3N2IxMDcxNzQ4MjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEt
MTEtMjQgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAg
ICAgICAgW1F0XVtXSzJdIEhpc3RvcnkgaXMgbm90IGFjY2Vzc2libGUgaW4gUU1MLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIG9sZCBx
d2toaXN0b3J5IGFuZCBjcmVhdGUgUVdlYk5hdmlnYXRpb25IaXN0b3J5IHdoaWNoIGlzIFFNTAor
ICAgICAgICBmcmllbmRseSB3aXRoIGRhdGEgbW9kZWxzIHlvdSBjYW4gcGx1ZyB0byBhIHZpZXcg
aW4gUU1MLgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6bmF2aWdhdGlv
bkhpc3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZTo6UVdlYk5hdmln
YXRpb25MaXN0TW9kZWxQcml2YXRlKToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uSGlzdG9yeVBy
aXZhdGU6OlFXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGUpOgorICAgICAgICAoUVdlYk5hdmln
YXRpb25IaXN0b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeSk6CisgICAgICAgIChRV2ViTmF2aWdh
dGlvbkhpc3RvcnlQcml2YXRlOjpfcV9yZXNldCk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkxp
c3RNb2RlbDo6UVdlYk5hdmlnYXRpb25MaXN0TW9kZWwpOgorICAgICAgICAoUVdlYk5hdmlnYXRp
b25MaXN0TW9kZWw6On5RV2ViTmF2aWdhdGlvbkxpc3RNb2RlbCk6CisgICAgICAgIChRV2ViTmF2
aWdhdGlvbkxpc3RNb2RlbDo6cm93Q291bnQpOgorICAgICAgICAoUVdlYk5hdmlnYXRpb25MaXN0
TW9kZWw6OmRhdGEpOgorICAgICAgICAoUVdlYk5hdmlnYXRpb25IaXN0b3J5OjpRV2ViTmF2aWdh
dGlvbkhpc3RvcnkpOgorICAgICAgICAoUVdlYk5hdmlnYXRpb25IaXN0b3J5Ojp+UVdlYk5hdmln
YXRpb25IaXN0b3J5KToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6YmFja0l0ZW1z
KToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6Zm9yd2FyZEl0ZW1zKToKKyAgICAg
ICAgKFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6bmF2aWdhdGVCYWNrVG8pOgorICAgICAgICAoUVdl
Yk5hdmlnYXRpb25IaXN0b3J5OjpuYXZpZ2F0ZUZvcndhcmRUbyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnlfcC5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wX3AuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2toaXN0b3J5X3AuaC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OlF0V2ViUGFn
ZVByb3h5KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5Ojp+UXRXZWJQYWdlUHJveHkpOgorICAg
ICAgICAoUXRXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25IaXN0b3J5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXdraGlz
dG9yeS5jcHA6IFJlbW92ZWQuCisKIDIwMTEtMTEtMjEgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEg
IDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBNb3Zl
IFFRdWlja1dlYlZpZXc6OmRvd25sb2FkUmVxdWVzdGVkIHNpZ25hbCBpbnRvIGV4cGVyaW1lbnRh
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9wbHVnaW4uY3BwIGIv
U291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9wbHVnaW4uY3BwCmluZGV4IDkxNjM0ZWUyMTgx
OTU4N2NlZmRjYzAxYzQwZjg3NGU0NzMwMTI2MjAuLjA3MThlYzZhZTVkZGY3YWI2MWE1NjBiODAx
MjY0ZTZhZGQ0MWI3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUv
cGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3BsdWdpbi5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJxcXVpY2t3ZWJwYWdlX3AuaCIKICNpbmNsdWRl
ICJxcXVpY2t3ZWJ2aWV3X3AuaCIKICNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtX3AuaCIKKyNp
bmNsdWRlICJxd2VibmF2aWdhdGlvbmhpc3RvcnlfcC5oIgogI2luY2x1ZGUgInF3ZWJwcmVmZXJl
bmNlc19wLmgiCiAKICNpbmNsdWRlIDxRdE5ldHdvcmsvcW5ldHdvcmtyZXBseS5oPgpAQCAtNTMs
NiArNTQsOCBAQCBwdWJsaWM6CiAgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFR
dWlja1dlYlBhZ2U+KHVyaSwgMywgMCwgIldlYlBhZ2UiLCBRT2JqZWN0Ojp0cigiQ2Fubm90IGNy
ZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBXZWJQYWdlLCB1c2UgV2ViVmlldyIpKTsKICAgICAg
ICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UU5ldHdvcmtSZXBseT4odXJpLCAzLCAwLCAi
TmV0d29ya1JlcGx5IiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFu
Y2Ugb2YgTmV0d29ya1JlcGx5IikpOwogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlw
ZTxRV2ViRG93bmxvYWRJdGVtPih1cmksIDUsIDAsICJEb3dubG9hZEl0ZW0iLCBRT2JqZWN0Ojp0
cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBEb3dubG9hZEl0ZW0iKSk7Cisg
ICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVs
Pih1cmksIDUsIDAsICJXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsIiwgUU9iamVjdDo6dHIoIkNhbm5v
dCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgV2ViTmF2aWdhdGlvbkxpc3RNb2RlbCIpKTsK
KyAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVdlYk5hdmlnYXRpb25IaXN0b3J5
Pih1cmksIDUsIDAsICJQYWdlSGlzdG9yeSIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNl
cGFyYXRlIGluc3RhbmNlIG9mIFBhZ2VIaXN0b3J5IikpOwogI2VuZGlmCiAgICAgfQogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJn
ZXQucHJpCmluZGV4IDE0YzljMGMxMDNlNzQzZjQzZjNmYWU2OTAwOWZiMzEwN2EyMWI1MzUuLmVl
N2E3ZGQ1MGRhOWE4NTgyODU5M2M3ZDJhNDRiYzBkZWRhNDA0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAt
MjUwLDYgKzI1MCw4IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmRv
d25sb2FkaXRlbV9wX3AuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3Au
aCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3BfcC5oIFwKKyAgICBVSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wLmggXAorICAgIFVJUHJvY2Vzcy9B
UEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfcC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXdfcC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdf
cF9wLmggXAogICAgIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5LmggXApAQCAtMzI1LDggKzMyNyw2IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VQb2xpY3lDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZVByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5oIFwKLSAg
ICBVSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5oIFwKLSAgICBVSVByb2Nlc3MvcXQvcXdraGlzdG9y
eV9wLmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFNHVXBkYXRlUXVldWUuaCBcCiAgICAgVUlQcm9j
ZXNzL3F0L1F0U0dUaWxlTm9kZS5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lLmggXApAQCAtNTU0LDYgKzU1NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJ
UHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3
ZWJkb3dubG9hZGl0ZW0uY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2Uu
Y3BwIFwKKyAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeS5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgXAogICAgIFVJUHJvY2Vzcy9B
UEkvcXQvcXdlYnByZWZlcmVuY2VzLmNwcCBcCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwIFwKQEAgLTYzMyw3ICs2MzQsNiBAQCBT
T1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUG9saWN5Q2xpZW50LmNwcCBc
CiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0
L1F0V2ViUGFnZVVJQ2xpZW50LmNwcCBcCi0gICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuY3Bw
IFwKICAgICBVSVByb2Nlc3MvcXQvUXRTR1VwZGF0ZVF1ZXVlLmNwcCBcCiAgICAgVUlQcm9jZXNz
L3F0L1F0U0dUaWxlTm9kZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9UaWxlZERyYXdpbmdBcmVh
UHJveHlRdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlldy5jcHAKaW5kZXggZWJmODQxNzYwODc1MTkwMjAyMjlhZjZmYjk4YzcxODIzNjE2
YzgwOC4uYTM5YWYwMzU4OWVhNjRlNWNiODM1ZThjOWMzNDg1MWYxZmI3YTI0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC01
NDcsNiArNTQ3LDEyIEBAIFFTdHJpbmcgUVF1aWNrV2ViVmlldzo6dGl0bGUoKSBjb25zdAogICAg
IHJldHVybiBkLT5wYWdlUHJveHktPnRpdGxlKCk7CiB9CiAKK1FXZWJOYXZpZ2F0aW9uSGlzdG9y
eSogUVF1aWNrV2ViVmlldzo6bmF2aWdhdGlvbkhpc3RvcnkoKSBjb25zdAoreworICAgIFFfRChj
b25zdCBRUXVpY2tXZWJWaWV3KTsKKyAgICByZXR1cm4gZC0+cGFnZVByb3h5LT5uYXZpZ2F0aW9u
SGlzdG9yeSgpOworfQorCiBRV2ViUHJlZmVyZW5jZXMqIFFRdWlja1dlYlZpZXc6OnByZWZlcmVu
Y2VzKCkgY29uc3QKIHsKICAgICBRX0QoY29uc3QgUVF1aWNrV2ViVmlldyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAppbmRleCAzMjkx
ZGZmY2Y3Y2FiZmY2YzIzYWNkMDc3NjFhM2Q3ZTZhMjUxMzU0Li4xODNmNzdjZTFhNTE5ZjY3ZDVh
MDUyZmIwYzY2ZGY1ZGE0Mjc2MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKQEAgLTMwLDYgKzMwLDcgQEAgY2xhc3MgUVF1aWNr
V2ViVmlld0F0dGFjaGVkOwogY2xhc3MgUVF1aWNrV2ViVmlld1ByaXZhdGU7CiBjbGFzcyBRUXVp
Y2tXZWJWaWV3RXhwZXJpbWVudGFsOwogY2xhc3MgUVdlYkRvd25sb2FkSXRlbTsKK2NsYXNzIFFX
ZWJOYXZpZ2F0aW9uSGlzdG9yeTsKIGNsYXNzIFFXZWJQcmVmZXJlbmNlczsKIAogbmFtZXNwYWNl
IFdUUiB7CkBAIC01NSw2ICs1Niw3IEBAIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFRdWlja1dlYlZp
ZXcgOiBwdWJsaWMgUVF1aWNrSXRlbSB7CiAgICAgUV9QUk9QRVJUWShib29sIGNhblN0b3AgUkVB
RCBjYW5TdG9wIE5PVElGWSBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkIEZJTkFMKQogICAgIFFfUFJP
UEVSVFkoYm9vbCBjYW5SZWxvYWQgUkVBRCBjYW5SZWxvYWQgTk9USUZZIG5hdmlnYXRpb25TdGF0
ZUNoYW5nZWQgRklOQUwpCiAgICAgUV9QUk9QRVJUWShRV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVu
Y2VzIFJFQUQgcHJlZmVyZW5jZXMgQ09OU1RBTlQgRklOQUwpCisgICAgUV9QUk9QRVJUWShRV2Vi
TmF2aWdhdGlvbkhpc3RvcnkqIG5hdmlnYXRpb25IaXN0b3J5IFJFQUQgbmF2aWdhdGlvbkhpc3Rv
cnkgQ09OU1RBTlQgRklOQUwpCiAgICAgUV9QUk9QRVJUWShRUXVpY2tXZWJQYWdlKiBwYWdlIFJF
QUQgcGFnZSBDT05TVEFOVCBGSU5BTCkKICAgICBRX0VOVU1TKE5hdmlnYXRpb25SZXF1ZXN0QWN0
aW9uKQogICAgIFFfRU5VTVMoRXJyb3JUeXBlKQpAQCAtODQsNiArODYsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBjYW5TdG9wKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5SZWxvYWQoKSBjb25zdDsKIAor
ICAgIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeSogbmF2aWdhdGlvbkhpc3RvcnkoKSBjb25zdDsKICAg
ICBRV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKCkgY29uc3Q7CiAgICAgUVF1aWNrV2ViUGFn
ZSogcGFnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQxODc1OWY5ZjJhZjk2
M2Y1ODE4NWZhYmQ3M2FjMmM4OWQzZDE5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5LmNwcApAQCAtMCwwICsx
LDE1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBKdWhhIFNhdm9sYWluZW4gKGp1aGEu
c2F2b2xhaW5lbkB3ZWVnby5maSkKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJxd2VibmF2aWdhdGlvbmhpc3RvcnlfcC5oIgorCisjaW5jbHVkZSAiUXRXZWJQYWdl
UHJveHkuaCIKKyNpbmNsdWRlICJXS0JhY2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIldLU3Ry
aW5nUXQuaCIKKyNpbmNsdWRlICJXS1VSTC5oIgorI2luY2x1ZGUgIldLVVJMUXQuaCIKKyNpbmNs
dWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKKworI2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uaGlz
dG9yeV9wX3AuaCIKKyNpbmNsdWRlIDxRRGVjbGFyYXRpdmVFbmdpbmU+CisjaW5jbHVkZSA8UVN0
cmluZz4KKyNpbmNsdWRlIDxRVXJsPgorI2luY2x1ZGUgPFdlYktpdDIvV0tBcnJheS5oPgorI2lu
Y2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
KworUVdlYk5hdmlnYXRpb25MaXN0TW9kZWxQcml2YXRlOjpRV2ViTmF2aWdhdGlvbkxpc3RNb2Rl
bFByaXZhdGUoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqIGxpc3QpCisgICAgOiBtX2JhY2tG
b3J3YXJkTGlzdChsaXN0KQorICAgICwgaW5kZXhTaWduKDApCit7Cit9CisKK1FXZWJOYXZpZ2F0
aW9uSGlzdG9yeVByaXZhdGU6OlFXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGUoUXRXZWJQYWdl
UHJveHkqIHBhZ2UsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0KiBsaXN0KQorICAgIDogbV9w
YWdlKHBhZ2UpCisgICAgLCBtX2JhY2tGb3J3YXJkTGlzdChsaXN0KQorICAgICwgbV9iYWNrTmF2
aWdhdGlvbk1vZGVsKG5ldyBRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbChwYWdlLCBsaXN0KSkKKyAg
ICAsIG1fZm9yd2FyZE5hdmlnYXRpb25Nb2RlbChuZXcgUVdlYk5hdmlnYXRpb25MaXN0TW9kZWwo
cGFnZSwgbGlzdCkpCit7CisgICAgbV9iYWNrTmF2aWdhdGlvbk1vZGVsLT5kLT5jb3VudCA9ICZX
S0JhY2tGb3J3YXJkTGlzdEdldEJhY2tMaXN0Q291bnQ7CisgICAgbV9iYWNrTmF2aWdhdGlvbk1v
ZGVsLT5kLT5pbmRleFNpZ24gPSAtMTsKKyAgICBtX2ZvcndhcmROYXZpZ2F0aW9uTW9kZWwtPmQt
PmNvdW50ID0gJldLQmFja0ZvcndhcmRMaXN0R2V0Rm9yd2FyZExpc3RDb3VudDsKKyAgICBtX2Zv
cndhcmROYXZpZ2F0aW9uTW9kZWwtPmQtPmluZGV4U2lnbiA9IDE7Cit9CisKK1FXZWJOYXZpZ2F0
aW9uSGlzdG9yeSogUVdlYk5hdmlnYXRpb25IaXN0b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeShR
dFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqIGxpc3QpCit7
CisgICAgUVdlYk5hdmlnYXRpb25IaXN0b3J5KiBoaXN0b3J5ID0gbmV3IFFXZWJOYXZpZ2F0aW9u
SGlzdG9yeSgpOworICAgIGhpc3RvcnktPmQgPSBuZXcgUVdlYk5hdmlnYXRpb25IaXN0b3J5UHJp
dmF0ZShwYWdlLCBsaXN0KTsKKyAgICByZXR1cm4gaGlzdG9yeTsKK30KKwordm9pZCBRV2ViTmF2
aWdhdGlvbkhpc3RvcnlQcml2YXRlOjpfcV9yZXNldCgpCit7CisgICAgbV9iYWNrTmF2aWdhdGlv
bk1vZGVsLT5yZXNldCgpOworICAgIG1fZm9yd2FyZE5hdmlnYXRpb25Nb2RlbC0+cmVzZXQoKTsK
K30KKworUVdlYk5hdmlnYXRpb25MaXN0TW9kZWw6OlFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsKFFP
YmplY3QqIHBhcmVudCwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqIGxpc3QpCisgICAgOiBR
QWJzdHJhY3RMaXN0TW9kZWwocGFyZW50KQorICAgICwgZChuZXcgUVdlYk5hdmlnYXRpb25MaXN0
TW9kZWxQcml2YXRlKGxpc3QpKQoreworICAgIFFIYXNoPGludCwgUUJ5dGVBcnJheT4gcm9sZXM7
CisgICAgcm9sZXNbUVdlYk5hdmlnYXRpb25IaXN0b3J5OjpVcmxSb2xlXSA9ICJ1cmwiOworICAg
IHJvbGVzW1FXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6VGl0bGVSb2xlXSA9ICJ0aXRsZSI7CisgICAg
c2V0Um9sZU5hbWVzKHJvbGVzKTsKK30KKworUVdlYk5hdmlnYXRpb25MaXN0TW9kZWw6On5RV2Vi
TmF2aWdhdGlvbkxpc3RNb2RlbCgpCit7CisgICAgZGVsZXRlIGQ7Cit9CisKK2ludCBRV2ViTmF2
aWdhdGlvbkxpc3RNb2RlbDo6cm93Q291bnQoY29uc3QgUU1vZGVsSW5kZXgmKSBjb25zdAorewor
ICAgIHJldHVybiBkLT5jb3VudCh0b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCkpOworfQorCitR
VmFyaWFudCBRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbDo6ZGF0YShjb25zdCBRTW9kZWxJbmRleCYg
aW5kZXgsIGludCByb2xlKSBjb25zdAoreworICAgIGlmICghaW5kZXguaXNWYWxpZCgpKQorICAg
ICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKworICAgIGlmIChyb2xlIDwgUVdlYk5hdmlnYXRpb25I
aXN0b3J5OjpVcmxSb2xlIHx8IHJvbGUgPiBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6OlRpdGxlUm9s
ZSkKKyAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisKKyAgICBXS1JldGFpblB0cjxXS0JhY2tG
b3J3YXJkTGlzdEl0ZW1SZWY+IGl0ZW1SZWYgPSBXS0JhY2tGb3J3YXJkTGlzdEdldEl0ZW1BdElu
ZGV4KHRvQVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0KSwgKGluZGV4LnJvdygpICsgMSAqIGQtPmlu
ZGV4U2lnbikpOworICAgIGlmIChyb2xlID09IFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6VXJsUm9s
ZSkgeworICAgICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0V0ssIFdLQmFja0Zv
cndhcmRMaXN0SXRlbUNvcHlVUkwoaXRlbVJlZi5nZXQoKSkpOworICAgICAgICByZXR1cm4gV0tV
UkxDb3B5UVVybCh1cmwuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChyb2xlID09IFFXZWJOYXZp
Z2F0aW9uSGlzdG9yeTo6VGl0bGVSb2xlKSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiB0aXRsZShBZG9wdFdLLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGl0bGUoaXRlbVJl
Zi5nZXQoKSkpOworICAgICAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmluZyh0aXRsZS5nZXQo
KSk7CisgICAgfQorCisgICAgcmV0dXJuIFFWYXJpYW50KCk7Cit9CisKK1FXZWJOYXZpZ2F0aW9u
SGlzdG9yeTo6UVdlYk5hdmlnYXRpb25IaXN0b3J5KCkKKyAgICA6IFFPYmplY3QoKQoreworfQor
CitRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6On5RV2ViTmF2aWdhdGlvbkhpc3RvcnkoKQoreworICAg
IGRlbGV0ZSBkOworfQorCitRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbCogUVdlYk5hdmlnYXRpb25I
aXN0b3J5OjpiYWNrSXRlbXMoKSBjb25zdAoreworICAgIHJldHVybiBkLT5tX2JhY2tOYXZpZ2F0
aW9uTW9kZWw7Cit9CisKK1FXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsKiBRV2ViTmF2aWdhdGlvbkhp
c3Rvcnk6OmZvcndhcmRJdGVtcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPm1fZm9yd2FyZE5h
dmlnYXRpb25Nb2RlbDsKK30KKwordm9pZCBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6Om5hdmlnYXRl
QmFja1RvKGludCBpbmRleCkKK3sKKyAgICBXS1JldGFpblB0cjxXS0JhY2tGb3J3YXJkTGlzdEl0
ZW1SZWY+IGl0ZW1SZWYgPSBXS0JhY2tGb3J3YXJkTGlzdEdldEl0ZW1BdEluZGV4KHRvQVBJKGQt
Pm1fYmFja0ZvcndhcmRMaXN0KSwgaW5kZXggLSAxKTsKKyAgICBpZiAoaXRlbVJlZiAmJiBkLT5t
X3BhZ2UpCisgICAgICAgIFdLUGFnZUdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKGQtPm1fcGFnZS0+
cGFnZVJlZigpLCBpdGVtUmVmLmdldCgpKTsKK30KKwordm9pZCBRV2ViTmF2aWdhdGlvbkhpc3Rv
cnk6Om5hdmlnYXRlRm9yd2FyZFRvKGludCBpbmRleCkKK3sKKyAgICBXS1JldGFpblB0cjxXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1SZWY+IGl0ZW1SZWYgPSBXS0JhY2tGb3J3YXJkTGlzdEdldEl0ZW1B
dEluZGV4KHRvQVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0KSwgaW5kZXggKyAxKTsKKyAgICBpZiAo
aXRlbVJlZiAmJiBkLT5tX3BhZ2UpCisgICAgICAgIFdLUGFnZUdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtKGQtPm1fcGFnZS0+cGFnZVJlZigpLCBpdGVtUmVmLmdldCgpKTsKK30KKworI2luY2x1ZGUg
Im1vY19xd2VibmF2aWdhdGlvbmhpc3RvcnlfcC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTg0MGMwYmFmODUzYjJmNzljZWVhYzZmYTVjNWY3MWM1NzE2NjJjOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25o
aXN0b3J5X3AuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEp1
aGEgU2F2b2xhaW5lbiAoanVoYS5zYXZvbGFpbmVuQHdlZWdvLmZpKQorICogQ29weXJpZ2h0IChD
KSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lm
bmRlZiBxd2VibmF2aWdhdGlvbmhpc3RvcnlfcF9oCisjZGVmaW5lIHF3ZWJuYXZpZ2F0aW9uaGlz
dG9yeV9wX2gKKworI2luY2x1ZGUgIldlYktpdDIvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmgiCisj
aW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorI2luY2x1ZGUgPFFBYnN0cmFjdExpc3RNb2RlbD4K
KyNpbmNsdWRlIDxRT2JqZWN0PgorI2luY2x1ZGUgPFFVcmw+CisjaW5jbHVkZSA8UVZhcmlhbnQ+
CisjaW5jbHVkZSA8cWRlY2xhcmF0aXZlLmg+CisKK2NsYXNzIFFBYnN0cmFjdExpc3RNb2RlbDsK
K2NsYXNzIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGU7CitjbGFzcyBRV2ViTmF2aWdhdGlv
bkxpc3RNb2RlbFByaXZhdGU7CitjbGFzcyBRVXJsOworY2xhc3MgUVN0cmluZzsKKworbmFtZXNw
YWNlIFdlYktpdCB7CitjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7Cit9CisKK2NsYXNzIFFXRUJL
SVRfRVhQT1JUIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsIDogcHVibGljIFFBYnN0cmFjdExpc3RN
b2RlbCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBRV2ViTmF2aWdhdGlvbkxpc3RNb2Rl
bChRT2JqZWN0KiBwYXJlbnQsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0Kik7CisgICAgflFX
ZWJOYXZpZ2F0aW9uTGlzdE1vZGVsKCk7CisKKyAgICBpbnQgcm93Q291bnQoY29uc3QgUU1vZGVs
SW5kZXgmIHBhcmVudCA9IFFNb2RlbEluZGV4KCkpIGNvbnN0OworICAgIFFWYXJpYW50IGRhdGEo
Y29uc3QgUU1vZGVsSW5kZXgmIGluZGV4LCBpbnQgcm9sZSkgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgUVdlYk5hdmlnYXRpb25MaXN0TW9kZWxQcml2YXRlKiBkOworICAgIGZyaWVuZCBjbGFzcyBR
V2ViTmF2aWdhdGlvbkhpc3Rvcnk7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJOYXZpZ2F0aW9uSGlz
dG9yeVByaXZhdGU7Cit9OworCitRTUxfREVDTEFSRV9UWVBFKFFXZWJOYXZpZ2F0aW9uTGlzdE1v
ZGVsKQorCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViTmF2aWdhdGlvbkhpc3RvcnkgOiBwdWJs
aWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKKyAgICBRX1BST1BFUlRZKFFXZWJOYXZpZ2F0aW9u
TGlzdE1vZGVsKiBiYWNrSXRlbXMgUkVBRCBiYWNrSXRlbXMgQ09OU1RBTlQgRklOQUwpCisgICAg
UV9QUk9QRVJUWShRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbCogZm9yd2FyZEl0ZW1zIFJFQUQgZm9y
d2FyZEl0ZW1zIENPTlNUQU5UIEZJTkFMKQorcHVibGljOgorICAgIGVudW0gTmF2aWdhdGlvbkhp
c3RvcnlSb2xlcyB7CisgICAgICAgIFVybFJvbGUgPSBRdDo6VXNlclJvbGUgKyAxLAorICAgICAg
ICBUaXRsZVJvbGUgPSBRdDo6VXNlclJvbGUgKyAyCisgICAgfTsKKworICAgIFFXZWJOYXZpZ2F0
aW9uTGlzdE1vZGVsKiBiYWNrSXRlbXMoKSBjb25zdDsKKyAgICBRV2ViTmF2aWdhdGlvbkxpc3RN
b2RlbCogZm9yd2FyZEl0ZW1zKCkgY29uc3Q7CisKK3B1YmxpYyBzbG90czoKKyAgICB2b2lkIG5h
dmlnYXRlQmFja1RvKGludCBpbmRleCk7CisgICAgdm9pZCBuYXZpZ2F0ZUZvcndhcmRUbyhpbnQg
aW5kZXgpOworCitwcml2YXRlOgorICAgIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeSgpOworICAgIH5R
V2ViTmF2aWdhdGlvbkhpc3RvcnkoKTsKKworICAgIFFfUFJJVkFURV9TTE9UKGQsIHZvaWQgX3Ff
cmVzZXQoKSk7CisKKyAgICBRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlKiBkOworICAgIGZy
aWVuZCBjbGFzcyBRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlOworICAgIGZyaWVuZCBjbGFz
cyBRdFdlYlBhZ2VQcm94eTsKK307CisKK1FNTF9ERUNMQVJFX1RZUEUoUVdlYk5hdmlnYXRpb25I
aXN0b3J5KQorCisjZW5kaWYgLyogcXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfaCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3Rv
cnlfcF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9u
aGlzdG9yeV9wX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmRhMjk2YTkzOWMzNzc4NmY1MzA3MmFiMDZlZGE5
NzU5YzVmMmExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnlfcF9wLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBKdWhhIFNhdm9sYWluZW4gKGp1aGEuc2F2b2xhaW5lbkB3ZWVn
by5maSkKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgcXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfcF9oCisj
ZGVmaW5lIHF3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wX3BfaAorCisjaW5jbHVkZSAicXdlYmtpdGds
b2JhbC5oIgorCisjaW5jbHVkZSA8UU9iamVjdD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsK
K30KKworY2xhc3MgUVdlYk5hdmlnYXRpb25IaXN0b3J5OworY2xhc3MgUXRXZWJQYWdlUHJveHk7
CisKK2NsYXNzIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZSB7CitwdWJsaWM6CisgICAg
UVdlYk5hdmlnYXRpb25MaXN0TW9kZWxQcml2YXRlKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
Kik7CisKKyAgICB1bnNpZ25lZCAoKmNvdW50KShXS0JhY2tGb3J3YXJkTGlzdFJlZik7CisgICAg
V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqIG1fYmFja0ZvcndhcmRMaXN0OworICAgIGludCBp
bmRleFNpZ247Cit9OworCitjbGFzcyBRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUVdlYk5hdmlnYXRpb25IaXN0b3J5KiBjcmVhdGVIaXN0b3J5KFF0
V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqKTsKKworICAgIFFXZWJO
YXZpZ2F0aW9uSGlzdG9yeVByaXZhdGUoUXRXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdCopOworICAgIHZvaWQgX3FfcmVzZXQoKTsKKworICAgIFF0V2ViUGFnZVByb3h5
KiBtX3BhZ2U7CisgICAgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqIG1fYmFja0ZvcndhcmRM
aXN0OworICAgIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsKiBtX2JhY2tOYXZpZ2F0aW9uTW9kZWw7
CisgICAgUVdlYk5hdmlnYXRpb25MaXN0TW9kZWwqIG1fZm9yd2FyZE5hdmlnYXRpb25Nb2RlbDsK
K307CisKKyNlbmRpZiAvKiBxd2VibmF2aWdhdGlvbmhpc3RvcnlfcF9wX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IGE1YmIxY2Q2
MzA0MDdkOGI0NDhkMTFiNDZjMjVhY2RmM2M0OTZjMWIuLjVhZmJhY2M0MjYwNmU4ZWJmNzRjZTEz
MzBkYWMxNGRiNDUyZGUwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZVByb3h5LmNwcApAQCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUgIkNsaWVudEltcGwu
aCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94
eUltcGwuaCIKLSNpbmNsdWRlICJxd2toaXN0b3J5LmgiCi0jaW5jbHVkZSAicXdraGlzdG9yeV9w
LmgiCisjaW5jbHVkZSAicXdlYm5hdmlnYXRpb25oaXN0b3J5X3AuaCIKKyNpbmNsdWRlICJxd2Vi
bmF2aWdhdGlvbmhpc3RvcnlfcF9wLmgiCiAjaW5jbHVkZSAiRmluZEluZGljYXRvci5oIgogI2lu
Y2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJNdXRhYmxlQXJyYXkuaCIKQEAg
LTE0NCw3ICsxNDQsOCBAQCBRdFdlYlBhZ2VQcm94eTo6UXRXZWJQYWdlUHJveHkoUVF1aWNrV2Vi
UGFnZSogcW1sV2ViUGFnZSwgUVF1aWNrV2ViVmlldyogcW1sV2ViVgogICAgICwgbV9uYXZpZ2F0
b3JRdE9iamVjdEVuYWJsZWQoZmFsc2UpCiB7CiAgICAgbV93ZWJQYWdlUHJveHkgPSBtX2NvbnRl
eHQtPmNyZWF0ZVdlYlBhZ2UodGhpcywgdG9JbXBsKHBhZ2VHcm91cFJlZikpOwotICAgIG1faGlz
dG9yeSA9IFFXS0hpc3RvcnlQcml2YXRlOjpjcmVhdGVIaXN0b3J5KHRoaXMsIG1fd2ViUGFnZVBy
b3h5LT5iYWNrRm9yd2FyZExpc3QoKSk7CisgICAgbV9uYXZpZ2F0aW9uSGlzdG9yeSA9IFFXZWJO
YXZpZ2F0aW9uSGlzdG9yeVByaXZhdGU6OmNyZWF0ZUhpc3RvcnkodGhpcywgbV93ZWJQYWdlUHJv
eHktPmJhY2tGb3J3YXJkTGlzdCgpKTsKKyAgICBjb25uZWN0KHFtbFdlYlZpZXcsIFNJR05BTCh1
cmxDaGFuZ2VkKFFVcmwpKSwgbV9uYXZpZ2F0aW9uSGlzdG9yeSwgU0xPVChfcV9yZXNldCgpKSk7
CiAgICAgaWYgKCFjb250ZXh0UmVmKQogICAgICAgICBzX2RlZmF1bHRQYWdlUHJveHlDb3VudCsr
OwogfQpAQCAtMTY2LDcgKzE2Nyw3IEBAIFF0V2ViUGFnZVByb3h5Ojp+UXRXZWJQYWdlUHJveHko
KQogICAgICAgICAgICAgc19kb3dubG9hZE1hbmFnZXIuY2xlYXIoKTsKICAgICAgICAgfQogICAg
IH0KLSAgICBkZWxldGUgbV9oaXN0b3J5OworICAgIGRlbGV0ZSBtX25hdmlnYXRpb25IaXN0b3J5
OwogfQogCiBib29sIFF0V2ViUGFnZVByb3h5OjpoYW5kbGVFdmVudChRRXZlbnQqIGV2KQpAQCAt
NzgwLDkgKzc4MSw5IEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6OnNldFBhZ2VBbmRUZXh0Wm9vbUZh
Y3RvcnMocXJlYWwgcGFnZVpvb21GYWN0b3IsIHFyZWFsIHRleHRaCiAgICAgV0tQYWdlU2V0UGFn
ZUFuZFRleHRab29tRmFjdG9ycyhwYWdlUmVmKCksIHBhZ2Vab29tRmFjdG9yLCB0ZXh0Wm9vbUZh
Y3Rvcik7CiB9CiAKLVFXS0hpc3RvcnkqIFF0V2ViUGFnZVByb3h5OjpoaXN0b3J5KCkgY29uc3QK
K1FXZWJOYXZpZ2F0aW9uSGlzdG9yeSogUXRXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25IaXN0b3J5
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5OworICAgIHJldHVybiBtX25hdmlnYXRp
b25IaXN0b3J5OwogfQogCiB2b2lkIFF0V2ViUGFnZVByb3h5OjpzdGFydERyYWcoY29uc3QgV2Vi
Q29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJh
Z0ltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaApp
bmRleCBiMDRlZTBlYjNkNTEwYTJhMjk0YTM5ZDUwNjlmODNhZjJjOWVhN2E0Li5iMGUzNjE1ZGM1
MWQ2MjE3MGI1MzJkYzk0MzhjNjc2NTA4ZDJiZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaApAQCAtNDUsOCArNDUsOCBAQCBjbGFzcyBRVW5kb1N0
YWNrOwogUVRfRU5EX05BTUVTUEFDRQogCiBjbGFzcyBRdFdlYkVycm9yOworY2xhc3MgUVdlYk5h
dmlnYXRpb25IaXN0b3J5OwogY2xhc3MgUVdlYlByZWZlcmVuY2VzOwotY2xhc3MgUVdLSGlzdG9y
eTsKIGNsYXNzIFFRdWlja1dlYlBhZ2U7CiBjbGFzcyBRUXVpY2tXZWJWaWV3OwogCkBAIC0xODEs
NyArMTgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZmluZFpvb21hYmxlQXJlYUZvclBvaW50KGNv
bnN0IFFQb2ludCYpOwogICAgIHZvaWQgcmVuZGVyVG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFdl
YkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQpOwogCi0gICAgUVdLSGlzdG9yeSog
aGlzdG9yeSgpIGNvbnN0OworICAgIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeSogbmF2aWdhdGlvbkhp
c3RvcnkoKSBjb25zdDsKIAogICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3Qg
V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgZGF0YSkKICAgICB7CkBAIC0yNDQsNyArMjQ0LDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdW5zaWduZWQgc19kZWZhdWx0UGFnZVByb3h5Q291bnQ7CiAK
ICAgICBSZWZQdHI8V2ViQ29udGV4dD4gbV9jb250ZXh0OwotICAgIFFXS0hpc3RvcnkqIG1faGlz
dG9yeTsKKyAgICBRV2ViTmF2aWdhdGlvbkhpc3RvcnkqIG1fbmF2aWdhdGlvbkhpc3Rvcnk7CiAK
ICAgICBtdXRhYmxlIE93blB0cjxRV2ViUHJlZmVyZW5jZXM+IG1fcHJlZmVyZW5jZXM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNmMxNDI1ZjBmMDc1MGJkNjYxZDdkZDFhYzgxZmUxYThlODRhNWQ0OC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBKdWhhIFNhdm9sYWluZW4gKGp1aGEu
c2F2b2xhaW5lbkB3ZWVnby5maSkKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJxd2to
aXN0b3J5LmgiCi0KLSNpbmNsdWRlIDxRU2hhcmVkRGF0YT4KLSNpbmNsdWRlIDxRU3RyaW5nPgot
I2luY2x1ZGUgPFFVcmw+Ci0jaW5jbHVkZSAiUXRXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJx
d2toaXN0b3J5X3AuaCIKLSNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKLSNpbmNsdWRl
IDxXZWJLaXQyL1dLQXJyYXkuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+Ci0j
aW5jbHVkZSAiV0tCYWNrRm9yd2FyZExpc3QuaCIKLSNpbmNsdWRlICJXS1N0cmluZ1F0LmgiCi0j
aW5jbHVkZSAiV0tVUkwuaCIKLSNpbmNsdWRlICJXS1VSTFF0LmgiCi0KLXVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7Ci0KLVFXS0hpc3RvcnlJdGVtUHJpdmF0ZTo6UVdLSGlzdG9yeUl0ZW1Qcml2YXRl
KFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBsaXN0SXRlbSkKLSAgICA6IG1fYmFja0ZvcndhcmRM
aXN0SXRlbShsaXN0SXRlbSkKLXsKLX0KLQotUVdLSGlzdG9yeUl0ZW1Qcml2YXRlOjp+UVdLSGlz
dG9yeUl0ZW1Qcml2YXRlKCkKLXsKLX0KLQotUVdLSGlzdG9yeUl0ZW06OlFXS0hpc3RvcnlJdGVt
KGNvbnN0IFFXS0hpc3RvcnlJdGVtJiBvdGhlcikKLSAgICA6IGQob3RoZXIuZCkgCi17Ci19Ci0K
LVFXS0hpc3RvcnlJdGVtJiBRV0tIaXN0b3J5SXRlbTo6UVdLSGlzdG9yeUl0ZW06Om9wZXJhdG9y
PShjb25zdCBRV0tIaXN0b3J5SXRlbSYgb3RoZXIpIAoteyAKLSAgICBkID0gb3RoZXIuZDsKLSAg
ICByZXR1cm4gKnRoaXM7IAotfQotCi1RV0tIaXN0b3J5SXRlbTo6UVdLSGlzdG9yeUl0ZW0oV0tC
YWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0pCi0gICAgOiBkKG5ldyBRV0tIaXN0b3J5SXRlbVBy
aXZhdGUoaXRlbSkpCi17Ci19Ci0KLVFXS0hpc3RvcnlJdGVtOjp+UVdLSGlzdG9yeUl0ZW0oKQot
ewotfQotCi1RU3RyaW5nIFFXS0hpc3RvcnlJdGVtOjp0aXRsZSgpIGNvbnN0Ci17Ci0gICAgaWYg
KCFkLT5tX2JhY2tGb3J3YXJkTGlzdEl0ZW0pCi0gICAgICAgIHJldHVybiBRU3RyaW5nKCk7Ci0g
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRpdGxlKEFkb3B0V0ssIFdLQmFja0ZvcndhcmRM
aXN0SXRlbUNvcHlUaXRsZShkLT5tX2JhY2tGb3J3YXJkTGlzdEl0ZW0uZ2V0KCkpKTsKLSAgICBy
ZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmluZyh0aXRsZS5nZXQoKSk7Ci19Ci0KLVFVcmwgUVdLSGlz
dG9yeUl0ZW06OnVybCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFkLT5tX2JhY2tGb3J3YXJkTGlzdEl0
ZW0pCi0gICAgICAgIHJldHVybiBRVXJsKCk7Ci0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVy
bChBZG9wdFdLLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VVJMKGQtPm1fYmFja0ZvcndhcmRM
aXN0SXRlbS5nZXQoKSkpOwotICAgIHJldHVybiBXS1VSTENvcHlRVXJsKHVybC5nZXQoKSk7Ci19
Ci0KLVFXS0hpc3RvcnlQcml2YXRlOjpRV0tIaXN0b3J5UHJpdmF0ZShRdFdlYlBhZ2VQcm94eSog
cGFnZSwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqIGxpc3QpCi0gICAgOiBtX3BhZ2UocGFn
ZSkKLSAgICAsIG1fYmFja0ZvcndhcmRMaXN0KGxpc3QpCi17Ci19Ci0KLVFXS0hpc3RvcnkqIFFX
S0hpc3RvcnlQcml2YXRlOjpjcmVhdGVIaXN0b3J5KFF0V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJL
aXQ6OldlYkJhY2tGb3J3YXJkTGlzdCogbGlzdCkKLXsKLSAgICBRV0tIaXN0b3J5KiBoaXN0b3J5
ID0gbmV3IFFXS0hpc3RvcnkoKTsKLSAgICBoaXN0b3J5LT5kID0gbmV3IFFXS0hpc3RvcnlQcml2
YXRlKHBhZ2UsIGxpc3QpOwotICAgIHJldHVybiBoaXN0b3J5OwotfQotCi1RV0tIaXN0b3J5UHJp
dmF0ZTo6flFXS0hpc3RvcnlQcml2YXRlKCkKLXsKLX0KLQotUVdLSGlzdG9yeTo6UVdLSGlzdG9y
eSgpCi17Ci19Ci0KLVFXS0hpc3Rvcnk6On5RV0tIaXN0b3J5KCkKLXsKLSAgICBkZWxldGUgZDsK
LX0KLQotaW50IFFXS0hpc3Rvcnk6OmJhY2tMaXN0Q291bnQoKSBjb25zdAotewotICAgIHJldHVy
biBXS0JhY2tGb3J3YXJkTGlzdEdldEJhY2tMaXN0Q291bnQodG9BUEkoZC0+bV9iYWNrRm9yd2Fy
ZExpc3QpKTsKLX0KLQotaW50IFFXS0hpc3Rvcnk6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAot
ewotICAgIHJldHVybiBXS0JhY2tGb3J3YXJkTGlzdEdldEZvcndhcmRMaXN0Q291bnQodG9BUEko
ZC0+bV9iYWNrRm9yd2FyZExpc3QpKTsKLX0KLQotaW50IFFXS0hpc3Rvcnk6OmNvdW50KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gYmFja0xpc3RDb3VudCgpICsgZm9yd2FyZExpc3RDb3VudCgpOwot
fQotCi1RV0tIaXN0b3J5SXRlbSBRV0tIaXN0b3J5OjpjdXJyZW50SXRlbSgpIGNvbnN0Ci17Ci0g
ICAgV0tSZXRhaW5QdHI8V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBpdGVtUmVmID0gV0tCYWNr
Rm9yd2FyZExpc3RHZXRDdXJyZW50SXRlbSh0b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCkpOwot
ICAgIFFXS0hpc3RvcnlJdGVtIGl0ZW0oaXRlbVJlZi5nZXQoKSk7Ci0gICAgcmV0dXJuIGl0ZW07
Ci19Ci0KLVFXS0hpc3RvcnlJdGVtIFFXS0hpc3Rvcnk6OmJhY2tJdGVtKCkgY29uc3QKLXsKLSAg
ICBXS1JldGFpblB0cjxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+IGl0ZW1SZWYgPSBXS0JhY2tG
b3J3YXJkTGlzdEdldEJhY2tJdGVtKHRvQVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0KSk7Ci0gICAg
UVdLSGlzdG9yeUl0ZW0gaXRlbShpdGVtUmVmLmdldCgpKTsKLSAgICByZXR1cm4gaXRlbTsKLX0K
LQotUVdLSGlzdG9yeUl0ZW0gUVdLSGlzdG9yeTo6Zm9yd2FyZEl0ZW0oKSBjb25zdAotewotICAg
IFdLUmV0YWluUHRyPFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gaXRlbVJlZiA9IFdLQmFja0Zv
cndhcmRMaXN0R2V0Rm9yd2FyZEl0ZW0odG9BUEkoZC0+bV9iYWNrRm9yd2FyZExpc3QpKTsKLSAg
ICBRV0tIaXN0b3J5SXRlbSBpdGVtKGl0ZW1SZWYuZ2V0KCkpOwotICAgIHJldHVybiBpdGVtOwot
fQotCi1RV0tIaXN0b3J5SXRlbSBRV0tIaXN0b3J5OjppdGVtQXQoaW50IGluZGV4KSBjb25zdAot
ewotICAgIFdLUmV0YWluUHRyPFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gaXRlbVJlZiA9IFdL
QmFja0ZvcndhcmRMaXN0R2V0SXRlbUF0SW5kZXgodG9BUEkoZC0+bV9iYWNrRm9yd2FyZExpc3Qp
LCBpbmRleCk7Ci0gICAgUVdLSGlzdG9yeUl0ZW0gaXRlbShpdGVtUmVmLmdldCgpKTsKLSAgICBy
ZXR1cm4gaXRlbTsKLX0KLQotdm9pZCBRV0tIaXN0b3J5Ojpnb1RvSXRlbUF0KGludCBpbmRleCkg
Y29uc3QKLXsKLSAgICBXS1JldGFpblB0cjxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+IGl0ZW1S
ZWYgPSBXS0JhY2tGb3J3YXJkTGlzdEdldEl0ZW1BdEluZGV4KHRvQVBJKGQtPm1fYmFja0Zvcndh
cmRMaXN0KSwgaW5kZXgpOwotICAgIGlmIChpdGVtUmVmICYmIGQtPm1fcGFnZSkgewotICAgICAg
ICBRV0tIaXN0b3J5SXRlbSBpdGVtKGl0ZW1SZWYuZ2V0KCkpOwotICAgICAgICBXS1BhZ2VHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbShkLT5tX3BhZ2UtPnBhZ2VSZWYoKSwgaXRlbS5kLT5tX2JhY2tG
b3J3YXJkTGlzdEl0ZW0uZ2V0KCkpOwotICAgIH0KLX0KLQotUUxpc3Q8UVdLSGlzdG9yeUl0ZW0+
IFFXS0hpc3Rvcnk6OmJhY2tJdGVtcyhpbnQgbWF4SXRlbXMpIGNvbnN0Ci17Ci0gICAgV0tBcnJh
eVJlZiBhcnJheVJlZiA9IFdLQmFja0ZvcndhcmRMaXN0Q29weUJhY2tMaXN0V2l0aExpbWl0KHRv
QVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0KSwgbWF4SXRlbXMpOwotICAgIGludCBzaXplID0gV0tB
cnJheUdldFNpemUoYXJyYXlSZWYpOwotICAgIFFMaXN0PFFXS0hpc3RvcnlJdGVtPiBpdGVtTGlz
dDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBXS1R5cGVS
ZWYgd2tIaXN0b3J5SXRlbSA9IFdLQXJyYXlHZXRJdGVtQXRJbmRleChhcnJheVJlZiwgaSk7Ci0g
ICAgICAgIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtUmVmID0gc3RhdGljX2Nhc3Q8V0tC
YWNrRm9yd2FyZExpc3RJdGVtUmVmPih3a0hpc3RvcnlJdGVtKTsKLSAgICAgICAgUVdLSGlzdG9y
eUl0ZW0gaXRlbShpdGVtUmVmKTsKLSAgICAgICAgaXRlbUxpc3QuYXBwZW5kKGl0ZW0pOwotICAg
IH0KLSAgICByZXR1cm4gaXRlbUxpc3Q7Ci19Ci0KLVFMaXN0PFFXS0hpc3RvcnlJdGVtPiBRV0tI
aXN0b3J5Ojpmb3J3YXJkSXRlbXMoaW50IG1heEl0ZW1zKSBjb25zdAotewotICAgIFdLQXJyYXlS
ZWYgYXJyYXlSZWYgPSBXS0JhY2tGb3J3YXJkTGlzdENvcHlGb3J3YXJkTGlzdFdpdGhMaW1pdCh0
b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCksIG1heEl0ZW1zKTsKLSAgICBpbnQgc2l6ZSA9IFdL
QXJyYXlHZXRTaXplKGFycmF5UmVmKTsKLSAgICBRTGlzdDxRV0tIaXN0b3J5SXRlbT4gaXRlbUxp
c3Q7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgV0tUeXBl
UmVmIHdrSGlzdG9yeUl0ZW0gPSBXS0FycmF5R2V0SXRlbUF0SW5kZXgoYXJyYXlSZWYsIGkpOwot
ICAgICAgICBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZiA9IHN0YXRpY19jYXN0PFdL
QmFja0ZvcndhcmRMaXN0SXRlbVJlZj4od2tIaXN0b3J5SXRlbSk7Ci0gICAgICAgIFFXS0hpc3Rv
cnlJdGVtIGl0ZW0oaXRlbVJlZik7Ci0gICAgICAgIGl0ZW1MaXN0LmFwcGVuZChpdGVtKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGl0ZW1MaXN0OwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L3F3a2hpc3RvcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTAzNTEzZmRhNWFj
YzI5OWRkNmI0M2Q1MGM2MGUwZTQzMTE5MjQwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdraGlzdG9y
eS5oCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBKdWhhIFNhdm9sYWluZW4gKGp1aGEuc2F2b2xhaW5lbkB3ZWVnby5maSkKLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLSNpZm5kZWYg
cXdraGlzdG9yeV9oCi0jZGVmaW5lIHF3a2hpc3RvcnlfaAotCi0jaW5jbHVkZSAiV2ViS2l0Mi9X
S0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKLSNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCi0jaW5j
bHVkZSA8UU9iamVjdD4KLSNpbmNsdWRlIDxRU2hhcmVkRGF0YT4KLQotY2xhc3MgUVdLSGlzdG9y
eVByaXZhdGU7Ci1jbGFzcyBRV0tIaXN0b3J5SXRlbVByaXZhdGU7Ci1jbGFzcyBRVXJsOwotY2xh
c3MgUVN0cmluZzsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJCYWNrRm9yd2FyZExp
c3Q7Ci19Ci0KLWNsYXNzIFFXRUJLSVRfRVhQT1JUIFFXS0hpc3RvcnlJdGVtIHsKLXB1YmxpYzoK
LSAgICBRV0tIaXN0b3J5SXRlbShjb25zdCBRV0tIaXN0b3J5SXRlbSYgb3RoZXIpOwotICAgIFFX
S0hpc3RvcnlJdGVtICZvcGVyYXRvcj0oY29uc3QgUVdLSGlzdG9yeUl0ZW0mIG90aGVyKTsKLQot
ICAgIH5RV0tIaXN0b3J5SXRlbSgpOwotICAgIFFTdHJpbmcgdGl0bGUoKSBjb25zdDsKLSAgICBR
VXJsIHVybCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFFXS0hpc3RvcnlJdGVtKFdLQmFja0Zv
cndhcmRMaXN0SXRlbVJlZik7Ci0KLSAgICBRRXhwbGljaXRseVNoYXJlZERhdGFQb2ludGVyPFFX
S0hpc3RvcnlJdGVtUHJpdmF0ZT4gZDsKLQotICAgIGZyaWVuZCBjbGFzcyBRV0tIaXN0b3J5Owot
ICAgIGZyaWVuZCBjbGFzcyBRV0tIaXN0b3J5SXRlbVByaXZhdGU7Ci19OwotCi1jbGFzcyBRV0VC
S0lUX0VYUE9SVCBRV0tIaXN0b3J5IDogcHVibGljIFFPYmplY3QgewotICAgIFFfT0JKRUNUCi1w
dWJsaWM6Ci0gICAgaW50IGJhY2tMaXN0Q291bnQoKSBjb25zdDsKLSAgICBpbnQgZm9yd2FyZExp
c3RDb3VudCgpIGNvbnN0OwotICAgIGludCBjb3VudCgpIGNvbnN0OwotICAgIFFXS0hpc3RvcnlJ
dGVtIGN1cnJlbnRJdGVtKCkgY29uc3Q7Ci0gICAgUVdLSGlzdG9yeUl0ZW0gYmFja0l0ZW0oKSBj
b25zdDsKLSAgICBRV0tIaXN0b3J5SXRlbSBmb3J3YXJkSXRlbSgpIGNvbnN0OwotICAgIFFXS0hp
c3RvcnlJdGVtIGl0ZW1BdChpbnQgaW5kZXgpIGNvbnN0OwotICAgIHZvaWQgZ29Ub0l0ZW1BdChp
bnQgaW5kZXgpIGNvbnN0OwotICAgIFFMaXN0PFFXS0hpc3RvcnlJdGVtPiBiYWNrSXRlbXMoaW50
IG1heEl0ZW1zKSBjb25zdDsKLSAgICBRTGlzdDxRV0tIaXN0b3J5SXRlbT4gZm9yd2FyZEl0ZW1z
KGludCBtYXhJdGVtcykgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgUVdLSGlzdG9yeSgpOwotICAg
IH5RV0tIaXN0b3J5KCk7Ci0KLSAgICBRV0tIaXN0b3J5UHJpdmF0ZSogZDsKLSAgICBmcmllbmQg
Y2xhc3MgUVdLSGlzdG9yeVByaXZhdGU7Ci0gICAgZnJpZW5kIGNsYXNzIFF0V2ViUGFnZVByb3h5
OwotfTsKLSNlbmRpZiAvKiBxd2toaXN0b3J5X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9xd2toaXN0b3J5X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9xd2toaXN0b3J5X3AuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVmMTQz
ZTE3NTg4MDk3Mjc4ZmU5NmI5MTBjNDVlNzkyMjcxMTY3YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdr
aGlzdG9yeV9wLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEp1aGEgU2F2b2xhaW5lbiAoanVoYS5zYXZvbGFpbmVuQHdlZWdvLmZpKQot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0g
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQot
I2lmbmRlZiBxd2toaXN0b3J5X3BfaAotI2RlZmluZSBxd2toaXN0b3J5X3BfaAotCi0jaW5jbHVk
ZSA8UVNoYXJlZERhdGE+Ci0jaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgotI2luY2x1ZGUgPFdl
YktpdDIvV0tCYXNlLmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViQmFj
a0ZvcndhcmRMaXN0OwotfQotCi1jbGFzcyBRV0tIaXN0b3J5OwotY2xhc3MgUXRXZWJQYWdlUHJv
eHk7Ci0KLWNsYXNzIFFXRUJLSVRfRVhQT1JUIFFXS0hpc3RvcnlJdGVtUHJpdmF0ZSA6IHB1Ymxp
YyBRU2hhcmVkRGF0YSB7Ci1wdWJsaWM6Ci0gICAgICAgflFXS0hpc3RvcnlJdGVtUHJpdmF0ZSgp
OwotcHJpdmF0ZToKLSAgICBRV0tIaXN0b3J5SXRlbVByaXZhdGUoV0tCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmIGxpc3RJdGVtKTsKLSAgICBXS1JldGFpblB0cjxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1S
ZWY+IG1fYmFja0ZvcndhcmRMaXN0SXRlbTsKLQotICAgIGZyaWVuZCBjbGFzcyBRV0tIaXN0b3J5
OwotICAgIGZyaWVuZCBjbGFzcyBRV0tIaXN0b3J5SXRlbTsKLX07Ci0KLWNsYXNzIFFXRUJLSVRf
RVhQT1JUIFFXS0hpc3RvcnlQcml2YXRlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUVdLSGlzdG9y
eSogY3JlYXRlSGlzdG9yeShRdFdlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViQmFja0ZvcndhcmRM
aXN0Kik7Ci0KLXByaXZhdGU6Ci0gICAgUVdLSGlzdG9yeVByaXZhdGUoUXRXZWJQYWdlUHJveHkq
LCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdCopOwotICAgIH5RV0tIaXN0b3J5UHJpdmF0ZSgp
OwotCi0gICAgUXRXZWJQYWdlUHJveHkqIG1fcGFnZTsKLSAgICBXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdCogbV9iYWNrRm9yd2FyZExpc3Q7Ci0KLSAgICBmcmllbmQgY2xhc3MgUVdLSGlzdG9y
eTsKLX07Ci0KLSNlbmRpZiAvKiBxd2toaXN0b3J5X3BfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L3F0d2Via2l0LWV4cG9ydC5tYXAgYi9Tb3VyY2UvcXR3ZWJraXQtZXhwb3J0Lm1hcAppbmRleCBh
NDI2MjAzMDJiYTBiYTIwZjhkZjgxZTY3NzhlYmM0YTU4NGY2MTU1Li5lMzVkNzU2MDZhNTBmYzBk
NGNmMjFkNGMzNmQ5NTljOGQ3ZWVlZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvcXR3ZWJraXQtZXhw
b3J0Lm1hcAorKysgYi9Tb3VyY2UvcXR3ZWJraXQtZXhwb3J0Lm1hcApAQCAtMTE4LDYgKzExOCwx
MiBAQCBxd2tfMS4wIHsKICAgICAgICAgKlFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw7CiAgICAg
ICAgIG5vbi12aXJ0dWFsP3RodW5rP3RvP1FRdWlja1dlYlZpZXdFeHBlcmltZW50YWwqOwogICAg
ICAgICBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjoqOworICAgICAgICAqUVdlYk5hdmlnYXRp
b25IaXN0b3J5OworICAgICAgICBub24tdmlydHVhbD90aHVuaz90bz9RV2ViTmF2aWdhdGlvbkhp
c3RvcnkqOworICAgICAgICBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6Oio7CisgICAgICAgICpRV2Vi
TmF2aWdhdGlvbkxpc3RNb2RlbDsKKyAgICAgICAgbm9uLXZpcnR1YWw/dGh1bms/dG8/UVdlYk5h
dmlnYXRpb25MaXN0TW9kZWwqOworICAgICAgICBRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbDo6KjsK
ICAgICAgICAgKlFXZWJQcmVmZXJlbmNlczsKICAgICAgICAgbm9uLXZpcnR1YWw/dGh1bms/dG8/
UVdlYlByZWZlcmVuY2VzKjsKICAgICAgICAgUVdlYlByZWZlcmVuY2VzOjoqOwpkaWZmIC0tZ2l0
IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDEzZTVkZTk4MzgxMmJiN2JmNTY1YWEwNTM2
MmJmNTY1MmNlYWNjMmYuLmE2Y2UxZjFlMjU3NGI5YjE4N2ZkZmQ3MTBhY2Q5NzUxYjgzZDNkZTYg
MTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMS0xMS0yNCAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBbUXRdW1dLMl0gSGlzdG9yeSBpcyBub3QgYWNjZXNzaWJsZSBpbiBRTUwuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzAxNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgbmV3
IFFXZWJOYXZpZ2F0aW9uSGlzdG9yeSBpbiB0aGUgbWFwIGZpbGUuCisKKyAgICAgICAgKiBTb3Vy
Y2UvcXR3ZWJraXQtZXhwb3J0Lm1hcDoKKwogMjAxMS0xMS0yMyAgVG9yIEFybmUgVmVzdGLDuCAg
PHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBSZS1nZW5lcmF0ZSBR
dFdlYktpdCBBUEkgZm9yd2FyZGluZyBoZWFkZXJzIHdoZW4gQVBJIGNoYW5nZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118105</attachid>
            <date>2011-12-06 13:50:45 -0800</date>
            <delta_ts>2011-12-09 12:04:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73016-20111206185033.patch</filename>
            <type>text/plain</type>
            <size>43552</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGM2YzhlMGYyMzFm
M2Y4OWUxZDRlMGFkNTkxYzQ1MTllZThmMjkxNDguLjIwOTFmZjZmZWJhOTMwMjFhZjAyMTZhOTY0
ODFlNDJlNTJjNjUzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTEt
MjUgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAg
ICAgW1F0XVtXSzJdIEhpc3RvcnkgaXMgbm90IGFjY2Vzc2libGUgaW4gUU1MLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWdpc3RlciBRV2ViTmF2aWdh
dGlvbkhpc3RvcnkgYW5kIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsIGluIHRoZSBRTUwgcGx1Z2lu
LgorCisgICAgICAgICogZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3BsdWdpbi5jcHA6CisgICAg
ICAgIChXZWJLaXRRbWxQbHVnaW46OnJlZ2lzdGVyVHlwZXMpOgorCiAyMDExLTEyLTA2ICBaZW5v
IEFsYmlzc2VyICA8emVub0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bTWFjXSBCdWlsZGlu
ZyBkZWJ1ZyB2ZXJzaW9uIG9ubHkgZmFpbHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODRkMjdhODhiZmRkYjA4
ZjczMzU4MDZjYWJkNGRiY2E2NjNkZjMzOC4uM2FhOTU1Mjc2YzYxNGE4YTA5M2UwNDMwNTBhODdj
ODI5ZTQ4ODViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDExLTExLTI1ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF1b
V0syXSBIaXN0b3J5IGlzIG5vdCBhY2Nlc3NpYmxlIGluIFFNTC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDE2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBvbGQgcXdraGlzdG9yeSBh
bmQgY3JlYXRlIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeSB3aGljaCBpcyBRTUwKKyAgICAgICAgZnJp
ZW5kbHkgd2l0aCBkYXRhIG1vZGVscyB5b3UgY2FuIHBsdWcgdG8gYSB2aWV3IGluIFFNTC4KKwor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6Om5hdmlnYXRpb25IaXN0b3J5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5LmNwcDogQWRkZWQuCisgICAg
ICAgIChRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbFByaXZhdGU6OlFXZWJOYXZpZ2F0aW9uTGlzdE1v
ZGVsUHJpdmF0ZSk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlOjpRV2Vi
TmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlKToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uSGlzdG9y
eVByaXZhdGU6OmNyZWF0ZUhpc3RvcnkpOgorICAgICAgICAoUVdlYk5hdmlnYXRpb25IaXN0b3J5
UHJpdmF0ZTo6X3FfcmVzZXQpOgorICAgICAgICAoUVdlYk5hdmlnYXRpb25MaXN0TW9kZWw6OlFX
ZWJOYXZpZ2F0aW9uTGlzdE1vZGVsKToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVs
Ojp+UVdlYk5hdmlnYXRpb25MaXN0TW9kZWwpOgorICAgICAgICAoUVdlYk5hdmlnYXRpb25MaXN0
TW9kZWw6OnJvd0NvdW50KToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsOjpkYXRh
KToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6UVdlYk5hdmlnYXRpb25IaXN0b3J5
KToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6flFXZWJOYXZpZ2F0aW9uSGlzdG9y
eSk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6OmJhY2tJdGVtcyk6CisgICAgICAg
IChRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6OmZvcndhcmRJdGVtcyk6CisgICAgICAgIChRV2ViTmF2
aWdhdGlvbkhpc3Rvcnk6Om5hdmlnYXRlQmFja1RvKToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9u
SGlzdG9yeTo6bmF2aWdhdGVGb3J3YXJkVG8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQv
cXdlYm5hdmlnYXRpb25oaXN0b3J5X3AuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9xd2toaXN0b3J5LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2Vi
bmF2aWdhdGlvbmhpc3RvcnlfcF9wLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvcXdraGlzdG9yeV9wLmguCisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94eSk6Cisg
ICAgICAgIChRdFdlYlBhZ2VQcm94eTo6flF0V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFF0V2Vi
UGFnZVByb3h5OjpuYXZpZ2F0aW9uSGlzdG9yeSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuY3BwOiBS
ZW1vdmVkLgorCiAyMDExLTEyLTA2ICBBbGV4YW5kZXIgRsOmcsO4eSAgPGFsZXhhbmRlci5mYWVy
b3lAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IGFzc2VydGlvbiBpbiBRdFdlYlBhZ2VF
dmVudEhhbmRsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZl
L2V4cGVyaW1lbnRhbC9wbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9l
eHBlcmltZW50YWwvcGx1Z2luLmNwcAppbmRleCA4NjMxMmUxMDU5M2NmODFlOTRjMjQ4MTc5OGU4
YWZhMWUwMGZmNDBlLi5kZjBjYjIzNjJlYTYxYzY0YzFmNDg2Njc1NmFhZmU1Yzc4NmE1NjZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL2V4cGVyaW1lbnRhbC9wbHVn
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3Bs
dWdpbi5jcHAKQEAgLTIxLDYgKzIxLDggQEAKICNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3AuaCIK
ICNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtX3AuaCIKIAorI2luY2x1ZGUgInF3ZWJuYXZpZ2F0
aW9uaGlzdG9yeV9wLmgiCisKICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZS5o
PgogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZlZXh0ZW5zaW9ucGx1Z2luLmg+
CiAKQEAgLTQyLDYgKzQ0LDggQEAgcHVibGljOgogICAgICAgICBRX0FTU0VSVChRTGF0aW4xU3Ry
aW5nKHVyaSkgPT0gUUxhdGluMVN0cmluZygiUXRXZWJLaXQuZXhwZXJpbWVudGFsIikpOwogCiAg
ICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFXZWJEb3dubG9hZEl0ZW0+KHVyaSwg
MywgMCwgIkRvd25sb2FkSXRlbSIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRl
IGluc3RhbmNlIG9mIERvd25sb2FkSXRlbSIpKTsKKyAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0
YWJsZVR5cGU8UVdlYk5hdmlnYXRpb25MaXN0TW9kZWw+KHVyaSwgMywgMCwgIldlYk5hdmlnYXRp
b25MaXN0TW9kZWwiLCBRT2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5j
ZSBvZiBXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsIikpOworICAgICAgICBxbWxSZWdpc3RlclVuY3Jl
YXRhYmxlVHlwZTxRV2ViTmF2aWdhdGlvbkhpc3Rvcnk+KHVyaSwgMywgMCwgIlBhZ2VIaXN0b3J5
IiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgUGFnZUhp
c3RvcnkiKSk7CiAgICAgICAgIHFtbFJlZ2lzdGVyRXh0ZW5kZWRUeXBlPFFRdWlja1dlYlZpZXcs
IFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWxFeHRlbnNpb24+KHVyaSwgMywgMCwgIldlYlZpZXci
KTsKICAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVF1aWNrV2ViVmlld0V4cGVy
aW1lbnRhbD4odXJpLCAzLCAwLCAiUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCIsCiAgICAgICAg
ICAgICBRT2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBRUXVp
Y2tXZWJWaWV3RXhwZXJpbWVudGFsIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFy
Z2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggOTc2OTE0ZTU5YjhkNDUx
NWJlNjYyMGY5ZTBiNGU2MjRjNjNlYmJiMi4uMDlkMTAxMWQyNWMyNzk0MWE2OGJjYTRlZmE3YjIx
MmMxYjdjYTljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0xNzcsNiArMTc3LDggQEAgSEVBREVSUyArPSBc
CiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2VicGVybWlzc2lvbnJlcXVlc3RfcC5oIFwKICAgICBV
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnBhZ2VfcF9wLmggXAorICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRp
b25oaXN0b3J5X3AuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3Rv
cnlfcF9wLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmggXAogICAg
IFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaCBcCiAgICAgVUlQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBcCkBAIC0yNTgsOCAr
MjYwLDYgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBvbGljeUNs
aWVudC5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaCBcCiAgICAgVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmggXAotICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5
LmggXAotICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5X3AuaCBcCiAgICAgVUlQcm9jZXNzL3F0
L1F0U0dVcGRhdGVRdWV1ZS5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRTR1RpbGVOb2RlLmggXAog
ICAgIFVJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaCBcCkBAIC00ODgs
NiArNDg4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxv
YWRpdGVtLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2VicGVybWlzc2lvbnJlcXVlc3Qu
Y3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwIFwKKyAgICBVSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeS5jcHAgXAogICAgIFVJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZl
cmVuY2VzLmNwcCBcCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkuY3BwIFwKQEAgLTU3Myw3ICs1NzQsNiBAQCBTT1VSQ0VTICs9IFwKICAg
ICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUG9saWN5Q2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xp
ZW50LmNwcCBcCi0gICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuY3BwIFwKICAgICBVSVByb2Nl
c3MvcXQvUXRTR1VwZGF0ZVF1ZXVlLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0U0dUaWxlTm9k
ZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9UaWxlZERyYXdpbmdBcmVhUHJveHlRdC5jcHAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAK
aW5kZXggYjE0Nzg4MTEyODliZjczYTg3NTQyMmU1OWY4N2EzZWI5OTRjOTgyMS4uZWZiZWRiNTQz
YWRkMTE1YzBhN2E5MWNhMjUxYjgwNzViNWEyMzc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC00NjksNiArNDY5LDExIEBA
IHZvaWQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6c2V0Q29uZmlybURpYWxvZyhRRGVjbGFy
YXRpdmVDb21wb25lbnQqIGNvbmZpcm1ECiAgICAgZW1pdCBjb25maXJtRGlhbG9nQ2hhbmdlZCgp
OwogfQogCitRV2ViTmF2aWdhdGlvbkhpc3RvcnkqIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6
Om5hdmlnYXRpb25IaXN0b3J5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZF9wdHItPnBhZ2VQcm94
eS0+bmF2aWdhdGlvbkhpc3RvcnkoKTsKK30KKwogUURlY2xhcmF0aXZlQ29tcG9uZW50KiBRUXVp
Y2tXZWJWaWV3RXhwZXJpbWVudGFsOjpwcm9tcHREaWFsb2coKSBjb25zdAogewogICAgIFFfRChj
b25zdCBRUXVpY2tXZWJWaWV3KTsKQEAgLTUyOCwxNiArNTMzLDE2IEBAIHZvaWQgUVF1aWNrV2Vi
Vmlldzo6cG9zdE1lc3NhZ2UoY29uc3QgUVN0cmluZyYgbWVzc2FnZSkKICAgICBkLT5wYWdlUHJv
eHktPnBvc3RNZXNzYWdlVG9OYXZpZ2F0b3JRdE9iamVjdChtZXNzYWdlKTsKIH0KIAotdm9pZCBR
UXVpY2tXZWJWaWV3Ojpnb0JhY2soKQordm9pZCBRUXVpY2tXZWJWaWV3Ojpnb0JhY2soaW50IGlu
ZGV4KQogewogICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKLSAgICBkLT5wYWdlUHJveHktPmdvQmFj
aygpOworICAgIGQtPnBhZ2VQcm94eS0+Z29CYWNrKGluZGV4KTsKIH0KIAotdm9pZCBRUXVpY2tX
ZWJWaWV3Ojpnb0ZvcndhcmQoKQordm9pZCBRUXVpY2tXZWJWaWV3Ojpnb0ZvcndhcmQoaW50IGlu
ZGV4KQogewogICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKLSAgICBkLT5wYWdlUHJveHktPmdvRm9y
d2FyZCgpOworICAgIGQtPnBhZ2VQcm94eS0+Z29Gb3J3YXJkKGluZGV4KTsKIH0KIAogdm9pZCBR
UXVpY2tXZWJWaWV3OjpzdG9wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FxdWlja3dlYnZpZXdfcC5oCmluZGV4IGE3OTJkMGQ3ZmExYjlhYmI5NWJhNGI5NmYxYjBh
ZmViZDk0ZWE0ZTkuLjkxMThiOTAwOGNkN2QwMzgwMDMzM2MyM2E0MDQ3OTcxY2NiOTk0NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19w
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3Au
aApAQCAtMzAsNiArMzAsNyBAQCBjbGFzcyBRUXVpY2tXZWJWaWV3QXR0YWNoZWQ7CiBjbGFzcyBR
UXVpY2tXZWJWaWV3UHJpdmF0ZTsKIGNsYXNzIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw7CiBj
bGFzcyBRV2ViRG93bmxvYWRJdGVtOworY2xhc3MgUVdlYk5hdmlnYXRpb25IaXN0b3J5OwogY2xh
c3MgUVdlYlByZWZlcmVuY2VzOwogY2xhc3MgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OwogCkBAIC05
Niw4ICs5Nyw4IEBAIHB1YmxpYyBRX1NMT1RTOgogICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3Qg
UVN0cmluZyYpOwogICAgIHZvaWQgbG9hZEh0bWwoY29uc3QgUVN0cmluZyYgaHRtbCwgY29uc3Qg
UVVybCYgYmFzZVVybCA9IFFVcmwoKSk7CiAKLSAgICB2b2lkIGdvQmFjaygpOwotICAgIHZvaWQg
Z29Gb3J3YXJkKCk7CisgICAgdm9pZCBnb0JhY2soaW50IGluZGV4ID0gMCk7CisgICAgdm9pZCBn
b0ZvcndhcmQoaW50IGluZGV4ID0gMCk7CiAgICAgdm9pZCBzdG9wKCk7CiAgICAgdm9pZCByZWxv
YWQoKTsKIApAQCAtMTY2LDYgKzE2Nyw3IEBAIFFNTF9ERUNMQVJFX1RZUEVJTkZPKFFRdWlja1dl
YlZpZXcsIFFNTF9IQVNfQVRUQUNIRURfUFJPUEVSVElFUykKIAogY2xhc3MgUVdFQktJVF9FWFBP
UlQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCA6IHB1YmxpYyBRT2JqZWN0IHsKICAgICBRX09C
SkVDVAorICAgIFFfUFJPUEVSVFkoUVdlYk5hdmlnYXRpb25IaXN0b3J5KiBuYXZpZ2F0aW9uSGlz
dG9yeSBSRUFEIG5hdmlnYXRpb25IaXN0b3J5IENPTlNUQU5UIEZJTkFMKQogICAgIFFfUFJPUEVS
VFkoUURlY2xhcmF0aXZlQ29tcG9uZW50KiBhbGVydERpYWxvZyBSRUFEIGFsZXJ0RGlhbG9nIFdS
SVRFIHNldEFsZXJ0RGlhbG9nIE5PVElGWSBhbGVydERpYWxvZ0NoYW5nZWQpCiAgICAgUV9QUk9Q
RVJUWShRRGVjbGFyYXRpdmVDb21wb25lbnQqIGNvbmZpcm1EaWFsb2cgUkVBRCBjb25maXJtRGlh
bG9nIFdSSVRFIHNldENvbmZpcm1EaWFsb2cgTk9USUZZIGNvbmZpcm1EaWFsb2dDaGFuZ2VkKQog
ICAgIFFfUFJPUEVSVFkoUURlY2xhcmF0aXZlQ29tcG9uZW50KiBwcm9tcHREaWFsb2cgUkVBRCBw
cm9tcHREaWFsb2cgV1JJVEUgc2V0UHJvbXB0RGlhbG9nIE5PVElGWSBwcm9tcHREaWFsb2dDaGFu
Z2VkKQpAQCAtMTgzLDYgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByb21wdERpYWxv
ZyhRRGVjbGFyYXRpdmVDb21wb25lbnQqKTsKIAogICAgIGJvb2wgdXNlVHJhZGl0aW9uYWxEZXNr
dG9wQmVoYXZpb3VyKCkgY29uc3Q7CisgICAgUVdlYk5hdmlnYXRpb25IaXN0b3J5KiBuYXZpZ2F0
aW9uSGlzdG9yeSgpIGNvbnN0OwogCiBwdWJsaWMgUV9TTE9UUzoKICAgICB2b2lkIHNldFVzZVRy
YWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cihib29sIGVuYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzliMjlhZWNiZGJhY2Q0NTJkYjQ1Y2Q3YzAzY2NmMTAyMDExYWQ0ZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmln
YXRpb25oaXN0b3J5LmNwcApAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBKdWhhIFNhdm9sYWluZW4gKGp1aGEuc2F2b2xhaW5lbkB3ZWVnby5maSkKKyAqIENvcHly
aWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJxd2VibmF2aWdhdGlvbmhpc3Rvcnlf
cC5oIgorCisjaW5jbHVkZSAiUXRXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXS0JhY2tGb3J3
YXJkTGlzdC5oIgorI2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKKyNpbmNsdWRlICJXS1VSTC5oIgor
I2luY2x1ZGUgIldLVVJMUXQuaCIKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKKwor
I2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wX3AuaCIKKyNpbmNsdWRlIDxRRGVjbGFy
YXRpdmVFbmdpbmU+CisjaW5jbHVkZSA8UVN0cmluZz4KKyNpbmNsdWRlIDxRVXJsPgorI2luY2x1
ZGUgPFdlYktpdDIvV0tBcnJheS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworUVdlYk5hdmlnYXRpb25MaXN0TW9kZWxQcml2
YXRlOjpRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbFByaXZhdGUoV2ViS2l0OjpXZWJCYWNrRm9yd2Fy
ZExpc3QqIGxpc3QpCisgICAgOiBtX2JhY2tGb3J3YXJkTGlzdChsaXN0KQorICAgICwgaW5kZXhT
aWduKDApCit7Cit9CisKK1FXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGU6OlFXZWJOYXZpZ2F0
aW9uSGlzdG9yeVByaXZhdGUoUXRXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYktpdDo6V2ViQmFja0Zv
cndhcmRMaXN0KiBsaXN0KQorICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX2JhY2tGb3J3YXJk
TGlzdChsaXN0KQorICAgICwgbV9iYWNrTmF2aWdhdGlvbk1vZGVsKG5ldyBRV2ViTmF2aWdhdGlv
bkxpc3RNb2RlbChwYWdlLCBsaXN0KSkKKyAgICAsIG1fZm9yd2FyZE5hdmlnYXRpb25Nb2RlbChu
ZXcgUVdlYk5hdmlnYXRpb25MaXN0TW9kZWwocGFnZSwgbGlzdCkpCit7CisgICAgbV9iYWNrTmF2
aWdhdGlvbk1vZGVsLT5kLT5jb3VudCA9ICZXS0JhY2tGb3J3YXJkTGlzdEdldEJhY2tMaXN0Q291
bnQ7CisgICAgbV9iYWNrTmF2aWdhdGlvbk1vZGVsLT5kLT5pbmRleFNpZ24gPSAtMTsKKyAgICBt
X2ZvcndhcmROYXZpZ2F0aW9uTW9kZWwtPmQtPmNvdW50ID0gJldLQmFja0ZvcndhcmRMaXN0R2V0
Rm9yd2FyZExpc3RDb3VudDsKKyAgICBtX2ZvcndhcmROYXZpZ2F0aW9uTW9kZWwtPmQtPmluZGV4
U2lnbiA9IDE7Cit9CisKK1FXZWJOYXZpZ2F0aW9uSGlzdG9yeSogUVdlYk5hdmlnYXRpb25IaXN0
b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeShRdFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3QqIGxpc3QpCit7CisgICAgUVdlYk5hdmlnYXRpb25IaXN0b3J5KiBo
aXN0b3J5ID0gbmV3IFFXZWJOYXZpZ2F0aW9uSGlzdG9yeSgpOworICAgIGhpc3RvcnktPmQgPSBu
ZXcgUVdlYk5hdmlnYXRpb25IaXN0b3J5UHJpdmF0ZShwYWdlLCBsaXN0KTsKKyAgICByZXR1cm4g
aGlzdG9yeTsKK30KKwordm9pZCBRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlOjpfcV9yZXNl
dCgpCit7CisgICAgbV9iYWNrTmF2aWdhdGlvbk1vZGVsLT5yZXNldCgpOworICAgIG1fZm9yd2Fy
ZE5hdmlnYXRpb25Nb2RlbC0+cmVzZXQoKTsKK30KKwordm9pZCBRV2ViTmF2aWdhdGlvbkhpc3Rv
cnlQcml2YXRlOjpnb0JhY2tUbyhpbnQgaW5kZXgpCit7CisgICAgV0tSZXRhaW5QdHI8V0tCYWNr
Rm9yd2FyZExpc3RJdGVtUmVmPiBpdGVtUmVmID0gV0tCYWNrRm9yd2FyZExpc3RHZXRJdGVtQXRJ
bmRleCh0b0FQSShtX2JhY2tGb3J3YXJkTGlzdCksIC0oaW5kZXggKyAxKSk7CisgICAgaWYgKGl0
ZW1SZWYgJiYgbV9wYWdlKQorICAgICAgICBXS1BhZ2VHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSht
X3BhZ2UtPnBhZ2VSZWYoKSwgaXRlbVJlZi5nZXQoKSk7Cit9CisKK3ZvaWQgUVdlYk5hdmlnYXRp
b25IaXN0b3J5UHJpdmF0ZTo6Z29Gb3J3YXJkVG8oaW50IGluZGV4KQoreworICAgIFdLUmV0YWlu
UHRyPFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gaXRlbVJlZiA9IFdLQmFja0ZvcndhcmRMaXN0
R2V0SXRlbUF0SW5kZXgodG9BUEkobV9iYWNrRm9yd2FyZExpc3QpLCBpbmRleCArIDEpOworICAg
IGlmIChpdGVtUmVmICYmIG1fcGFnZSkKKyAgICAgICAgV0tQYWdlR29Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW0obV9wYWdlLT5wYWdlUmVmKCksIGl0ZW1SZWYuZ2V0KCkpOworfQorCitRV2ViTmF2aWdh
dGlvbkxpc3RNb2RlbDo6UVdlYk5hdmlnYXRpb25MaXN0TW9kZWwoUU9iamVjdCogcGFyZW50LCBX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdCogbGlzdCkKKyAgICA6IFFBYnN0cmFjdExpc3RNb2Rl
bChwYXJlbnQpCisgICAgLCBkKG5ldyBRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbFByaXZhdGUobGlz
dCkpCit7CisgICAgUUhhc2g8aW50LCBRQnl0ZUFycmF5PiByb2xlczsKKyAgICByb2xlc1tRV2Vi
TmF2aWdhdGlvbkhpc3Rvcnk6OlVybFJvbGVdID0gInVybCI7CisgICAgcm9sZXNbUVdlYk5hdmln
YXRpb25IaXN0b3J5OjpUaXRsZVJvbGVdID0gInRpdGxlIjsKKyAgICBzZXRSb2xlTmFtZXMocm9s
ZXMpOworfQorCitRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbDo6flFXZWJOYXZpZ2F0aW9uTGlzdE1v
ZGVsKCkKK3sKKyAgICBkZWxldGUgZDsKK30KKworaW50IFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVs
Ojpyb3dDb3VudChjb25zdCBRTW9kZWxJbmRleCYpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmNv
dW50KHRvQVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0KSk7Cit9CisKK1FWYXJpYW50IFFXZWJOYXZp
Z2F0aW9uTGlzdE1vZGVsOjpkYXRhKGNvbnN0IFFNb2RlbEluZGV4JiBpbmRleCwgaW50IHJvbGUp
IGNvbnN0Cit7CisgICAgaWYgKCFpbmRleC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBRVmFy
aWFudCgpOworCisgICAgaWYgKHJvbGUgPCBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6OlVybFJvbGUg
fHwgcm9sZSA+IFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6VGl0bGVSb2xlKQorICAgICAgICByZXR1
cm4gUVZhcmlhbnQoKTsKKworICAgIFdLUmV0YWluUHRyPFdLQmFja0ZvcndhcmRMaXN0SXRlbVJl
Zj4gaXRlbVJlZiA9IFdLQmFja0ZvcndhcmRMaXN0R2V0SXRlbUF0SW5kZXgodG9BUEkoZC0+bV9i
YWNrRm9yd2FyZExpc3QpLCAoaW5kZXgucm93KCkgKyAxKSAqIGQtPmluZGV4U2lnbik7CisgICAg
aWYgKHJvbGUgPT0gUVdlYk5hdmlnYXRpb25IaXN0b3J5OjpVcmxSb2xlKSB7CisgICAgICAgIFdL
UmV0YWluUHRyPFdLVVJMUmVmPiB1cmwoQWRvcHRXSywgV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29w
eVVSTChpdGVtUmVmLmdldCgpKSk7CisgICAgICAgIHJldHVybiBXS1VSTENvcHlRVXJsKHVybC5n
ZXQoKSk7CisgICAgfQorCisgICAgaWYgKHJvbGUgPT0gUVdlYk5hdmlnYXRpb25IaXN0b3J5OjpU
aXRsZVJvbGUpIHsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRpdGxlKEFkb3B0
V0ssIFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlUaXRsZShpdGVtUmVmLmdldCgpKSk7CisgICAg
ICAgIHJldHVybiBXS1N0cmluZ0NvcHlRU3RyaW5nKHRpdGxlLmdldCgpKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gUVZhcmlhbnQoKTsKK30KKworUVdlYk5hdmlnYXRpb25IaXN0b3J5OjpRV2ViTmF2
aWdhdGlvbkhpc3RvcnkoKQorICAgIDogUU9iamVjdCgpCit7Cit9CisKK1FXZWJOYXZpZ2F0aW9u
SGlzdG9yeTo6flFXZWJOYXZpZ2F0aW9uSGlzdG9yeSgpCit7CisgICAgZGVsZXRlIGQ7Cit9CisK
K1FXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsKiBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6OmJhY2tJdGVt
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPm1fYmFja05hdmlnYXRpb25Nb2RlbDsKK30KKwor
UVdlYk5hdmlnYXRpb25MaXN0TW9kZWwqIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6Zm9yd2FyZEl0
ZW1zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+bV9mb3J3YXJkTmF2aWdhdGlvbk1vZGVsOwor
fQorCisjaW5jbHVkZSAibW9jX3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wLmNwcCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5
X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0
b3J5X3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMzE5NjkzMzU0MTY0ZWRkYTAyZWY4MzQyMjhmZDI5YmJlMWMz
NTViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2VibmF2aWdhdGlvbmhpc3RvcnlfcC5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgSnVoYSBTYXZvbGFpbmVuIChqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmkpCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisqLworCisjaWZuZGVmIHF3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wX2gKKyNkZWZpbmUgcXdl
Ym5hdmlnYXRpb25oaXN0b3J5X3BfaAorCisjaW5jbHVkZSAiV2ViS2l0Mi9XS0JhY2tGb3J3YXJk
TGlzdEl0ZW0uaCIKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSA8UUFic3Ry
YWN0TGlzdE1vZGVsPgorI2luY2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8UVVybD4KKyNpbmNs
dWRlIDxRVmFyaWFudD4KKyNpbmNsdWRlIDxxZGVjbGFyYXRpdmUuaD4KKworY2xhc3MgUUFic3Ry
YWN0TGlzdE1vZGVsOworY2xhc3MgUVdlYk5hdmlnYXRpb25IaXN0b3J5UHJpdmF0ZTsKK2NsYXNz
IFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZTsKK2NsYXNzIFFVcmw7CitjbGFzcyBRU3Ry
aW5nOworCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKK30K
KworY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYk5hdmlnYXRpb25MaXN0TW9kZWwgOiBwdWJsaWMg
UUFic3RyYWN0TGlzdE1vZGVsIHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIFFXZWJOYXZp
Z2F0aW9uTGlzdE1vZGVsKFFPYmplY3QqIHBhcmVudCwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExp
c3QqKTsKKyAgICB+UVdlYk5hdmlnYXRpb25MaXN0TW9kZWwoKTsKKworICAgIGludCByb3dDb3Vu
dChjb25zdCBRTW9kZWxJbmRleCYgcGFyZW50ID0gUU1vZGVsSW5kZXgoKSkgY29uc3Q7CisgICAg
UVZhcmlhbnQgZGF0YShjb25zdCBRTW9kZWxJbmRleCYgaW5kZXgsIGludCByb2xlKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbFByaXZhdGUqIGQ7CisgICAg
ZnJpZW5kIGNsYXNzIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTsKKyAgICBmcmllbmQgY2xhc3MgUVdl
Yk5hdmlnYXRpb25IaXN0b3J5UHJpdmF0ZTsKK307CisKK1FNTF9ERUNMQVJFX1RZUEUoUVdlYk5h
dmlnYXRpb25MaXN0TW9kZWwpCisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJOYXZpZ2F0aW9u
SGlzdG9yeSA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorICAgIFFfUFJPUEVSVFko
UVdlYk5hdmlnYXRpb25MaXN0TW9kZWwqIGJhY2tJdGVtcyBSRUFEIGJhY2tJdGVtcyBDT05TVEFO
VCBGSU5BTCkKKyAgICBRX1BST1BFUlRZKFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsKiBmb3J3YXJk
SXRlbXMgUkVBRCBmb3J3YXJkSXRlbXMgQ09OU1RBTlQgRklOQUwpCitwdWJsaWM6CisgICAgZW51
bSBOYXZpZ2F0aW9uSGlzdG9yeVJvbGVzIHsKKyAgICAgICAgVXJsUm9sZSA9IFF0OjpVc2VyUm9s
ZSArIDEsCisgICAgICAgIFRpdGxlUm9sZSA9IFF0OjpVc2VyUm9sZSArIDIKKyAgICB9OworCisg
ICAgUVdlYk5hdmlnYXRpb25MaXN0TW9kZWwqIGJhY2tJdGVtcygpIGNvbnN0OworICAgIFFXZWJO
YXZpZ2F0aW9uTGlzdE1vZGVsKiBmb3J3YXJkSXRlbXMoKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBRV2ViTmF2aWdhdGlvbkhpc3RvcnkoKTsKKyAgICB+UVdlYk5hdmlnYXRpb25IaXN0b3J5KCk7
CisKKyAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX3Jlc2V0KCkpOworCisgICAgUVdlYk5h
dmlnYXRpb25IaXN0b3J5UHJpdmF0ZSogZDsKKyAgICBmcmllbmQgY2xhc3MgUVdlYk5hdmlnYXRp
b25IaXN0b3J5UHJpdmF0ZTsKKyAgICBmcmllbmQgY2xhc3MgUXRXZWJQYWdlUHJveHk7Cit9Owor
CitRTUxfREVDTEFSRV9UWVBFKFFXZWJOYXZpZ2F0aW9uSGlzdG9yeSkKKworI2VuZGlmIC8qIHF3
ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfcC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnlfcF9wLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDMyMWE1NzkxZTA5M2ZjMjVjODlkYWEzZmY3MjA0M2RiNjA0ZTIyNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0
b3J5X3BfcC5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSnVo
YSBTYXZvbGFpbmVuIChqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmkpCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZu
ZGVmIHF3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wX3BfaAorI2RlZmluZSBxd2VibmF2aWdhdGlvbmhp
c3RvcnlfcF9wX2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKworI2luY2x1ZGUgPFFP
YmplY3Q+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CitjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7Cit9CisKK2NsYXNzIFFXZWJOYXZpZ2F0
aW9uSGlzdG9yeTsKK2NsYXNzIFF0V2ViUGFnZVByb3h5OworCitjbGFzcyBRV2ViTmF2aWdhdGlv
bkxpc3RNb2RlbFByaXZhdGUgeworcHVibGljOgorICAgIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVs
UHJpdmF0ZShXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdCopOworCisgICAgdW5zaWduZWQgKCpj
b3VudCkoV0tCYWNrRm9yd2FyZExpc3RSZWYpOworICAgIFdlYktpdDo6V2ViQmFja0ZvcndhcmRM
aXN0KiBtX2JhY2tGb3J3YXJkTGlzdDsKKyAgICBpbnQgaW5kZXhTaWduOworfTsKKworY2xhc3Mg
UVdlYk5hdmlnYXRpb25IaXN0b3J5UHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFFXZWJO
YXZpZ2F0aW9uSGlzdG9yeSogY3JlYXRlSGlzdG9yeShRdFdlYlBhZ2VQcm94eSosIFdlYktpdDo6
V2ViQmFja0ZvcndhcmRMaXN0Kik7CisKKyAgICBRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRl
KFF0V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqKTsKKyAgICB2b2lk
IF9xX3Jlc2V0KCk7CisgICAgdm9pZCBnb0JhY2tUbyhpbnQgaW5kZXgpOworICAgIHZvaWQgZ29G
b3J3YXJkVG8oaW50IGluZGV4KTsKKworICAgIFF0V2ViUGFnZVByb3h5KiBtX3BhZ2U7CisgICAg
V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqIG1fYmFja0ZvcndhcmRMaXN0OworICAgIFFXZWJO
YXZpZ2F0aW9uTGlzdE1vZGVsKiBtX2JhY2tOYXZpZ2F0aW9uTW9kZWw7CisgICAgUVdlYk5hdmln
YXRpb25MaXN0TW9kZWwqIG1fZm9yd2FyZE5hdmlnYXRpb25Nb2RlbDsKK307CisKKyNlbmRpZiAv
KiBxd2VibmF2aWdhdGlvbmhpc3RvcnlfcF9wX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfbmF2aWdhdGlv
bkhpc3RvcnkucW1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0
ZXN0cy9XZWJWaWV3L3RzdF9uYXZpZ2F0aW9uSGlzdG9yeS5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTYzMzY2
MTgxMjY3MjFlMDc4MGYwOThlZTg0ZDY0ZTMyNTdjOWZkZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3Rf
bmF2aWdhdGlvbkhpc3RvcnkucW1sCkBAIC0wLDAgKzEsMTA4IEBACitpbXBvcnQgUXRRdWljayAy
LjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBvcnQgUXRXZWJLaXQgMy4wCitpbXBvcnQgUXRXZWJL
aXQuZXhwZXJpbWVudGFsIDMuMAorCitXZWJWaWV3IHsKKyAgICBpZDogd2ViVmlldworICAgIHdp
ZHRoOiA0MDAKKyAgICBoZWlnaHQ6IDMwMAorCisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6
IHNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAgc2lnbmFsTmFtZTogImxvYWRT
dWNjZWVkZWQiCisgICAgfQorCisgICAgTGlzdFZpZXcgeworICAgICAgICBpZDogYmFja0l0ZW1z
TGlzdAorICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICBtb2RlbDogd2ViVmll
dy5uYXZpZ2F0aW9uSGlzdG9yeS5iYWNrSXRlbXMKKyAgICAgICAgZGVsZWdhdGU6CisgICAgICAg
ICAgICBUZXh0IHsKKyAgICAgICAgICAgICAgICBjb2xvcjoiYmxhY2siCisgICAgICAgICAgICAg
ICAgdGV4dDogInRpdGxlIDogIiArIHRpdGxlCisgICAgICAgICAgICB9CisgICAgfQorCisgICAg
TGlzdFZpZXcgeworICAgICAgICBpZDogZm9yd2FyZEl0ZW1zTGlzdAorICAgICAgICBhbmNob3Jz
LmZpbGw6IHBhcmVudAorICAgICAgICBtb2RlbDogd2ViVmlldy5uYXZpZ2F0aW9uSGlzdG9yeS5m
b3J3YXJkSXRlbXMKKyAgICAgICAgZGVsZWdhdGU6CisgICAgICAgICAgICBUZXh0IHsKKyAgICAg
ICAgICAgICAgICBjb2xvcjoiYmxhY2siCisgICAgICAgICAgICAgICAgdGV4dDogInRpdGxlIDog
IiArIHRpdGxlCisgICAgICAgICAgICB9CisgICAgfQorCisgICAgVGVzdENhc2UgeworICAgICAg
ICBuYW1lOiAiV2ViVmlld05hdmlnYXRpb25IaXN0b3J5IgorCisgICAgICAgIGZ1bmN0aW9uIHRl
c3RfbmF2aWdhdGlvbkhpc3RvcnkoKSB7CisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwg
MCkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5sb2FkUHJvZ3Jlc3MsIDApCisgICAgICAg
ICAgICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90ZXN0MS5odG1sIikp
CisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2Fu
R29CYWNrLCBmYWxzZSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0ZvcndhcmQs
IGZhbHNlKQorICAgICAgICAgICAgY29tcGFyZShiYWNrSXRlbXNMaXN0LmNvdW50LCAwKQorICAg
ICAgICAgICAgY29tcGFyZShmb3J3YXJkSXRlbXNMaXN0LmNvdW50LCAwKQorICAgICAgICAgICAg
c3B5LmNsZWFyKCkKKyAgICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4v
Y29tbW9uL3Rlc3QyLmh0bWwiKSkKKyAgICAgICAgICAgIHNweS53YWl0KCkKKyAgICAgICAgICAg
IGNvbXBhcmUod2ViVmlldy51cmwsIFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDIuaHRt
bCIpKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdvQmFjaywgdHJ1ZSkKKyAgICAg
ICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0ZvcndhcmQsIGZhbHNlKQorICAgICAgICAgICAg
Y29tcGFyZShiYWNrSXRlbXNMaXN0LmNvdW50LCAxKQorICAgICAgICAgICAgc3B5LmNsZWFyKCkK
KyAgICAgICAgICAgIHdlYlZpZXcuZ29CYWNrKCkKKyAgICAgICAgICAgIHNweS53YWl0KCkKKyAg
ICAgICAgICAgIGNvbXBhcmUod2ViVmlldy51cmwsIFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24v
dGVzdDEuaHRtbCIpKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdvQmFjaywgZmFs
c2UpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29Gb3J3YXJkLCB0cnVlKQorICAg
ICAgICAgICAgY29tcGFyZShiYWNrSXRlbXNMaXN0LmNvdW50LCAwKQorICAgICAgICAgICAgY29t
cGFyZShmb3J3YXJkSXRlbXNMaXN0LmNvdW50LCAxKQorICAgICAgICAgICAgc3B5LmNsZWFyKCkK
KyAgICAgICAgICAgIHdlYlZpZXcuZ29Gb3J3YXJkKCkKKyAgICAgICAgICAgIHNweS53YWl0KCkK
KyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy51cmwsIFF0LnJlc29sdmVkVXJsKCIuLi9jb21t
b24vdGVzdDIuaHRtbCIpKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdvQmFjaywg
dHJ1ZSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0ZvcndhcmQsIGZhbHNlKQor
ICAgICAgICAgICAgY29tcGFyZShiYWNrSXRlbXNMaXN0LmNvdW50LCAxKQorICAgICAgICAgICAg
Y29tcGFyZShmb3J3YXJkSXRlbXNMaXN0LmNvdW50LCAwKQorICAgICAgICAgICAgc3B5LmNsZWFy
KCkKKyAgICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2ph
dmFzY3JpcHQuaHRtbCIpKQorICAgICAgICAgICAgc3B5LndhaXQoKQorICAgICAgICAgICAgY29t
cGFyZSh3ZWJWaWV3LnVybCwgUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9qYXZhc2NyaXB0Lmh0
bWwiKSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0JhY2ssIHRydWUpCisgICAg
ICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29Gb3J3YXJkLCBmYWxzZSkKKyAgICAgICAgICAg
IGNvbXBhcmUoYmFja0l0ZW1zTGlzdC5jb3VudCwgMikKKyAgICAgICAgICAgIGNvbXBhcmUoZm9y
d2FyZEl0ZW1zTGlzdC5jb3VudCwgMCkKKyAgICAgICAgICAgIHNweS5jbGVhcigpCisgICAgICAg
ICAgICB3ZWJWaWV3LmdvQmFjaygxKQorICAgICAgICAgICAgc3B5LndhaXQoKQorICAgICAgICAg
ICAgY29tcGFyZSh3ZWJWaWV3LnVybCwgUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90ZXN0MS5o
dG1sIikpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29CYWNrLCBmYWxzZSkKKyAg
ICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0ZvcndhcmQsIHRydWUpCisgICAgICAgICAg
ICBjb21wYXJlKGJhY2tJdGVtc0xpc3QuY291bnQsIDApCisgICAgICAgICAgICBjb21wYXJlKGZv
cndhcmRJdGVtc0xpc3QuY291bnQsIDIpCisgICAgICAgICAgICBzcHkuY2xlYXIoKQorICAgICAg
ICAgICAgd2ViVmlldy5nb0ZvcndhcmQoMSkKKyAgICAgICAgICAgIHNweS53YWl0KCkKKyAgICAg
ICAgICAgIGNvbXBhcmUod2ViVmlldy51cmwsIFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vamF2
YXNjcmlwdC5odG1sIikpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29CYWNrLCB0
cnVlKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdvRm9yd2FyZCwgZmFsc2UpCisg
ICAgICAgICAgICBjb21wYXJlKGJhY2tJdGVtc0xpc3QuY291bnQsIDIpCisgICAgICAgICAgICBj
b21wYXJlKGZvcndhcmRJdGVtc0xpc3QuY291bnQsIDApCisgICAgICAgICAgICBzcHkuY2xlYXIo
KQorICAgICAgICAgICAgd2ViVmlldy5nb0JhY2soKQorICAgICAgICAgICAgc3B5LndhaXQoKQor
ICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnVybCwgUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1v
bi90ZXN0Mi5odG1sIikpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29CYWNrLCB0
cnVlKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdvRm9yd2FyZCwgdHJ1ZSkKKyAg
ICAgICAgICAgIGNvbXBhcmUoYmFja0l0ZW1zTGlzdC5jb3VudCwgMSkKKyAgICAgICAgICAgIGNv
bXBhcmUoZm9yd2FyZEl0ZW1zTGlzdC5jb3VudCwgMSkKKyAgICAgICAgfQorICAgIH0KK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMv
cW1sdGVzdHMucHJvIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0
ZXN0cy9xbWx0ZXN0cy5wcm8KaW5kZXggZTFjNmQ4YjQyN2FiYWQxYTEyY2MyZGE1YWY0YTBhZjg1
N2VjNjc2Ni4uNzg1YTU0OTU3NGQwMzA0Y2EyOTE5ZjZkZDljZjcyNjFlOWU5MWE5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0
ZXN0cy5wcm8KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0
ZXN0cy9xbWx0ZXN0cy5wcm8KQEAgLTI4LDUgKzI4LDYgQEAgT1RIRVJfRklMRVMgKz0gXAogICAg
IFdlYlZpZXcvdHN0X2xvYWRIdG1sLnFtbCBcCiAgICAgV2ViVmlldy90c3RfbG9hZFByb2dyZXNz
LnFtbCBcCiAgICAgV2ViVmlldy90c3RfbG9hZFByb2dyZXNzU2lnbmFsLnFtbCBcCisgICAgV2Vi
Vmlldy90c3RfbmF2aWdhdGlvbkhpc3RvcnkucW1sIFwKICAgICBXZWJWaWV3L3RzdF9wcmVmZXJl
bmNlcy5xbWwgXAogICAgIFdlYlZpZXcvdHN0X3Byb3BlcnRpZXMucW1sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAppbmRleCAzZDFkMmI4MDM2ZTM1
MjJmMWU0NTU4MDE2ZjM2MTgxZmUyM2JmM2ZmLi5hMDZmYWQ5MTI0YjZkNzA4MDM2YmVkNmU0NWQ4
YWEyZTFiNTRmNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VQcm94eS5jcHAKQEAgLTMzLDggKzMzLDggQEAKIAogI2luY2x1ZGUgIkRvd25sb2FkUHJveHku
aCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgotI2luY2x1ZGUgInF3a2hpc3Rv
cnkuaCIKLSNpbmNsdWRlICJxd2toaXN0b3J5X3AuaCIKKyNpbmNsdWRlICJxd2VibmF2aWdhdGlv
bmhpc3RvcnlfcC5oIgorI2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wX3AuaCIKICNp
bmNsdWRlICJRdERvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIlF0UGFnZUNsaWVudC5oIgog
I2luY2x1ZGUgIlF0V2ViUGFnZUV2ZW50SGFuZGxlci5oIgpAQCAtNjUsNyArNjUsOCBAQCBRdFdl
YlBhZ2VQcm94eTo6UXRXZWJQYWdlUHJveHkoUVF1aWNrV2ViUGFnZSogcW1sV2ViUGFnZSwgUVF1
aWNrV2ViVmlldyogcW1sV2ViVgogICAgICwgbV9uYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQoZmFs
c2UpCiB7CiAgICAgbV93ZWJQYWdlUHJveHkgPSBtX2NvbnRleHQtPmNyZWF0ZVdlYlBhZ2UocGFn
ZUNsaWVudCwgdG9JbXBsKHBhZ2VHcm91cFJlZikpOwotICAgIG1faGlzdG9yeSA9IFFXS0hpc3Rv
cnlQcml2YXRlOjpjcmVhdGVIaXN0b3J5KHRoaXMsIG1fd2ViUGFnZVByb3h5LT5iYWNrRm9yd2Fy
ZExpc3QoKSk7CisgICAgbV9uYXZpZ2F0aW9uSGlzdG9yeSA9IFFXZWJOYXZpZ2F0aW9uSGlzdG9y
eVByaXZhdGU6OmNyZWF0ZUhpc3RvcnkodGhpcywgbV93ZWJQYWdlUHJveHktPmJhY2tGb3J3YXJk
TGlzdCgpKTsKKyAgICBjb25uZWN0KHFtbFdlYlZpZXcsIFNJR05BTCh1cmxDaGFuZ2VkKFFVcmwp
KSwgbV9uYXZpZ2F0aW9uSGlzdG9yeSwgU0xPVChfcV9yZXNldCgpKSk7CiB9CiAKIHZvaWQgUXRX
ZWJQYWdlUHJveHk6OmluaXQoUXRXZWJQYWdlRXZlbnRIYW5kbGVyKiBldmVudEhhbmRsZXIpCkBA
IC03Nyw3ICs3OCw3IEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6OmluaXQoUXRXZWJQYWdlRXZlbnRI
YW5kbGVyKiBldmVudEhhbmRsZXIpCiBRdFdlYlBhZ2VQcm94eTo6flF0V2ViUGFnZVByb3h5KCkK
IHsKICAgICBtX3dlYlBhZ2VQcm94eS0+Y2xvc2UoKTsKLSAgICBkZWxldGUgbV9oaXN0b3J5Owor
ICAgIGRlbGV0ZSBtX25hdmlnYXRpb25IaXN0b3J5OwogfQogCiB2b2lkIFF0V2ViUGFnZVByb3h5
OjpzaG93Q29udGV4dE1lbnUoUVNoYXJlZFBvaW50ZXI8UU1lbnU+IG1lbnUpCkBAIC0yMDQsOSAr
MjA1LDkgQEAgYm9vbCBRdFdlYlBhZ2VQcm94eTo6Y2FuR29CYWNrKCkgY29uc3QKICAgICByZXR1
cm4gbV93ZWJQYWdlUHJveHktPmNhbkdvQmFjaygpOwogfQogCi12b2lkIFF0V2ViUGFnZVByb3h5
Ojpnb0JhY2soKQordm9pZCBRdFdlYlBhZ2VQcm94eTo6Z29CYWNrKGludCBpbmRleCkKIHsKLSAg
ICBtX3dlYlBhZ2VQcm94eS0+Z29CYWNrKCk7CisgICAgbV9uYXZpZ2F0aW9uSGlzdG9yeS0+ZC0+
Z29CYWNrVG8oaW5kZXgpOwogfQogCiBib29sIFF0V2ViUGFnZVByb3h5OjpjYW5Hb0ZvcndhcmQo
KSBjb25zdApAQCAtMjE0LDkgKzIxNSw5IEBAIGJvb2wgUXRXZWJQYWdlUHJveHk6OmNhbkdvRm9y
d2FyZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fd2ViUGFnZVByb3h5LT5jYW5Hb0ZvcndhcmQoKTsK
IH0KIAotdm9pZCBRdFdlYlBhZ2VQcm94eTo6Z29Gb3J3YXJkKCkKK3ZvaWQgUXRXZWJQYWdlUHJv
eHk6OmdvRm9yd2FyZChpbnQgaW5kZXgpCiB7Ci0gICAgbV93ZWJQYWdlUHJveHktPmdvRm9yd2Fy
ZCgpOworICAgIG1fbmF2aWdhdGlvbkhpc3RvcnktPmQtPmdvRm9yd2FyZFRvKGluZGV4KTsKIH0K
IAogYm9vbCBRdFdlYlBhZ2VQcm94eTo6bG9hZGluZygpIGNvbnN0CkBAIC0zNTcsOSArMzU4LDkg
QEAgdm9pZCBRdFdlYlBhZ2VQcm94eTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhxcmVhbCBw
YWdlWm9vbUZhY3RvciwgcXJlYWwgdGV4dFoKICAgICBXS1BhZ2VTZXRQYWdlQW5kVGV4dFpvb21G
YWN0b3JzKHBhZ2VSZWYoKSwgcGFnZVpvb21GYWN0b3IsIHRleHRab29tRmFjdG9yKTsKIH0KIAot
UVdLSGlzdG9yeSogUXRXZWJQYWdlUHJveHk6Omhpc3RvcnkoKSBjb25zdAorUVdlYk5hdmlnYXRp
b25IaXN0b3J5KiBRdFdlYlBhZ2VQcm94eTo6bmF2aWdhdGlvbkhpc3RvcnkoKSBjb25zdAogewot
ICAgIHJldHVybiBtX2hpc3Rvcnk7CisgICAgcmV0dXJuIG1fbmF2aWdhdGlvbkhpc3Rvcnk7CiB9
CiAKIHZvaWQgUXRXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0
YSYgZHJhZ0RhdGEsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCmluZGV4IDFlNDU4MDM4
Zjc5NzY5NjQwMWVlMWFlNjdmZDkxZjExZTIxNDI0YTQuLjM4MWNiZmEyYWI5YWY1ZThkMjU2MDhm
MmUxY2VkNGZiZjIxMDlmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VQcm94eS5oCkBAIC00MCw4ICs0MCw4IEBAIGNsYXNzIFFRdWlja1dlYlZpZXc7CiBjbGFz
cyBRdFdlYkVycm9yOwogY2xhc3MgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOwogY2xhc3MgUVdlYkRv
d25sb2FkSXRlbTsKK2NsYXNzIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTsKIGNsYXNzIFFXZWJQcmVm
ZXJlbmNlczsKLWNsYXNzIFFXS0hpc3Rvcnk7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
UXRXZWJDb250ZXh0OwpAQCAtOTcsOSArOTcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcmKTsKIAogICAgIGJv
b2wgY2FuR29CYWNrKCkgY29uc3Q7Ci0gICAgdm9pZCBnb0JhY2soKTsKKyAgICB2b2lkIGdvQmFj
ayhpbnQgaW5kZXgpOwogICAgIGJvb2wgY2FuR29Gb3J3YXJkKCkgY29uc3Q7Ci0gICAgdm9pZCBn
b0ZvcndhcmQoKTsKKyAgICB2b2lkIGdvRm9yd2FyZChpbnQgaW5kZXgpOwogICAgIGJvb2wgbG9h
ZGluZygpIGNvbnN0OwogICAgIHZvaWQgc3RvcCgpOwogICAgIGJvb2wgY2FuUmVsb2FkKCkgY29u
c3Q7CkBAIC0xMzgsNyArMTM4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRl
bnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBRUG9pbnRGJik7CiAgICAgdm9pZCByZW5kZXJU
b0N1cnJlbnRHTENvbnRleHQoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCk7CiAKLSAgICBRV0tIaXN0b3J5KiBoaXN0b3J5KCkgY29uc3Q7CisgICAgUVdlYk5hdmln
YXRpb25IaXN0b3J5KiBuYXZpZ2F0aW9uSGlzdG9yeSgpIGNvbnN0OwogCiAgICAgdm9pZCBjb250
ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBkYXRhKQog
ICAgIHsKQEAgLTE3MSw3ICsxNzEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBSZWZQdHI8
UXRXZWJDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUVdLSGlzdG9yeSogbV9oaXN0b3J5OworICAg
IFFXZWJOYXZpZ2F0aW9uSGlzdG9yeSogbV9uYXZpZ2F0aW9uSGlzdG9yeTsKIAogICAgIG11dGFi
bGUgT3duUHRyPFFXZWJQcmVmZXJlbmNlcz4gbV9wcmVmZXJlbmNlczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2YzE0MjVmMGYwNzUwYmQ2NjFkN2RkMWFjODFmZTFhOGU4NGE1ZDQ4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9xd2toaXN0b3J5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEp1aGEgU2F2b2xhaW5lbiAoanVoYS5zYXZvbGFpbmVu
QHdlZWdvLmZpKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgInF3a2hpc3RvcnkuaCIK
LQotI2luY2x1ZGUgPFFTaGFyZWREYXRhPgotI2luY2x1ZGUgPFFTdHJpbmc+Ci0jaW5jbHVkZSA8
UVVybD4KLSNpbmNsdWRlICJRdFdlYlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgInF3a2hpc3Rvcnlf
cC5oIgotI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgotI2luY2x1ZGUgPFdlYktpdDIv
V0tBcnJheS5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KLSNpbmNsdWRlICJX
S0JhY2tGb3J3YXJkTGlzdC5oIgotI2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKLSNpbmNsdWRlICJX
S1VSTC5oIgotI2luY2x1ZGUgIldLVVJMUXQuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
LQotUVdLSGlzdG9yeUl0ZW1Qcml2YXRlOjpRV0tIaXN0b3J5SXRlbVByaXZhdGUoV0tCYWNrRm9y
d2FyZExpc3RJdGVtUmVmIGxpc3RJdGVtKQotICAgIDogbV9iYWNrRm9yd2FyZExpc3RJdGVtKGxp
c3RJdGVtKQotewotfQotCi1RV0tIaXN0b3J5SXRlbVByaXZhdGU6On5RV0tIaXN0b3J5SXRlbVBy
aXZhdGUoKQotewotfQotCi1RV0tIaXN0b3J5SXRlbTo6UVdLSGlzdG9yeUl0ZW0oY29uc3QgUVdL
SGlzdG9yeUl0ZW0mIG90aGVyKQotICAgIDogZChvdGhlci5kKSAKLXsKLX0KLQotUVdLSGlzdG9y
eUl0ZW0mIFFXS0hpc3RvcnlJdGVtOjpRV0tIaXN0b3J5SXRlbTo6b3BlcmF0b3I9KGNvbnN0IFFX
S0hpc3RvcnlJdGVtJiBvdGhlcikgCi17IAotICAgIGQgPSBvdGhlci5kOwotICAgIHJldHVybiAq
dGhpczsgCi19Ci0KLVFXS0hpc3RvcnlJdGVtOjpRV0tIaXN0b3J5SXRlbShXS0JhY2tGb3J3YXJk
TGlzdEl0ZW1SZWYgaXRlbSkKLSAgICA6IGQobmV3IFFXS0hpc3RvcnlJdGVtUHJpdmF0ZShpdGVt
KSkKLXsKLX0KLQotUVdLSGlzdG9yeUl0ZW06On5RV0tIaXN0b3J5SXRlbSgpCi17Ci19Ci0KLVFT
dHJpbmcgUVdLSGlzdG9yeUl0ZW06OnRpdGxlKCkgY29uc3QKLXsKLSAgICBpZiAoIWQtPm1fYmFj
a0ZvcndhcmRMaXN0SXRlbSkKLSAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKLSAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gdGl0bGUoQWRvcHRXSywgV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29w
eVRpdGxlKGQtPm1fYmFja0ZvcndhcmRMaXN0SXRlbS5nZXQoKSkpOwotICAgIHJldHVybiBXS1N0
cmluZ0NvcHlRU3RyaW5nKHRpdGxlLmdldCgpKTsKLX0KLQotUVVybCBRV0tIaXN0b3J5SXRlbTo6
dXJsKCkgY29uc3QKLXsKLSAgICBpZiAoIWQtPm1fYmFja0ZvcndhcmRMaXN0SXRlbSkKLSAgICAg
ICAgcmV0dXJuIFFVcmwoKTsKLSAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0V0ss
IFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlVUkwoZC0+bV9iYWNrRm9yd2FyZExpc3RJdGVtLmdl
dCgpKSk7Ci0gICAgcmV0dXJuIFdLVVJMQ29weVFVcmwodXJsLmdldCgpKTsKLX0KLQotUVdLSGlz
dG9yeVByaXZhdGU6OlFXS0hpc3RvcnlQcml2YXRlKFF0V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJL
aXQ6OldlYkJhY2tGb3J3YXJkTGlzdCogbGlzdCkKLSAgICA6IG1fcGFnZShwYWdlKQotICAgICwg
bV9iYWNrRm9yd2FyZExpc3QobGlzdCkKLXsKLX0KLQotUVdLSGlzdG9yeSogUVdLSGlzdG9yeVBy
aXZhdGU6OmNyZWF0ZUhpc3RvcnkoUXRXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0KiBsaXN0KQotewotICAgIFFXS0hpc3RvcnkqIGhpc3RvcnkgPSBuZXcgUVdL
SGlzdG9yeSgpOwotICAgIGhpc3RvcnktPmQgPSBuZXcgUVdLSGlzdG9yeVByaXZhdGUocGFnZSwg
bGlzdCk7Ci0gICAgcmV0dXJuIGhpc3Rvcnk7Ci19Ci0KLVFXS0hpc3RvcnlQcml2YXRlOjp+UVdL
SGlzdG9yeVByaXZhdGUoKQotewotfQotCi1RV0tIaXN0b3J5OjpRV0tIaXN0b3J5KCkKLXsKLX0K
LQotUVdLSGlzdG9yeTo6flFXS0hpc3RvcnkoKQotewotICAgIGRlbGV0ZSBkOwotfQotCi1pbnQg
UVdLSGlzdG9yeTo6YmFja0xpc3RDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdLQmFja0Zv
cndhcmRMaXN0R2V0QmFja0xpc3RDb3VudCh0b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCkpOwot
fQotCi1pbnQgUVdLSGlzdG9yeTo6Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFdLQmFja0ZvcndhcmRMaXN0R2V0Rm9yd2FyZExpc3RDb3VudCh0b0FQSShkLT5tX2JhY2tG
b3J3YXJkTGlzdCkpOwotfQotCi1pbnQgUVdLSGlzdG9yeTo6Y291bnQoKSBjb25zdAotewotICAg
IHJldHVybiBiYWNrTGlzdENvdW50KCkgKyBmb3J3YXJkTGlzdENvdW50KCk7Ci19Ci0KLVFXS0hp
c3RvcnlJdGVtIFFXS0hpc3Rvcnk6OmN1cnJlbnRJdGVtKCkgY29uc3QKLXsKLSAgICBXS1JldGFp
blB0cjxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+IGl0ZW1SZWYgPSBXS0JhY2tGb3J3YXJkTGlz
dEdldEN1cnJlbnRJdGVtKHRvQVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0KSk7Ci0gICAgUVdLSGlz
dG9yeUl0ZW0gaXRlbShpdGVtUmVmLmdldCgpKTsKLSAgICByZXR1cm4gaXRlbTsKLX0KLQotUVdL
SGlzdG9yeUl0ZW0gUVdLSGlzdG9yeTo6YmFja0l0ZW0oKSBjb25zdAotewotICAgIFdLUmV0YWlu
UHRyPFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gaXRlbVJlZiA9IFdLQmFja0ZvcndhcmRMaXN0
R2V0QmFja0l0ZW0odG9BUEkoZC0+bV9iYWNrRm9yd2FyZExpc3QpKTsKLSAgICBRV0tIaXN0b3J5
SXRlbSBpdGVtKGl0ZW1SZWYuZ2V0KCkpOwotICAgIHJldHVybiBpdGVtOwotfQotCi1RV0tIaXN0
b3J5SXRlbSBRV0tIaXN0b3J5Ojpmb3J3YXJkSXRlbSgpIGNvbnN0Ci17Ci0gICAgV0tSZXRhaW5Q
dHI8V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBpdGVtUmVmID0gV0tCYWNrRm9yd2FyZExpc3RH
ZXRGb3J3YXJkSXRlbSh0b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCkpOwotICAgIFFXS0hpc3Rv
cnlJdGVtIGl0ZW0oaXRlbVJlZi5nZXQoKSk7Ci0gICAgcmV0dXJuIGl0ZW07Ci19Ci0KLVFXS0hp
c3RvcnlJdGVtIFFXS0hpc3Rvcnk6Oml0ZW1BdChpbnQgaW5kZXgpIGNvbnN0Ci17Ci0gICAgV0tS
ZXRhaW5QdHI8V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBpdGVtUmVmID0gV0tCYWNrRm9yd2Fy
ZExpc3RHZXRJdGVtQXRJbmRleCh0b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCksIGluZGV4KTsK
LSAgICBRV0tIaXN0b3J5SXRlbSBpdGVtKGl0ZW1SZWYuZ2V0KCkpOwotICAgIHJldHVybiBpdGVt
OwotfQotCi12b2lkIFFXS0hpc3Rvcnk6OmdvVG9JdGVtQXQoaW50IGluZGV4KSBjb25zdAotewot
ICAgIFdLUmV0YWluUHRyPFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gaXRlbVJlZiA9IFdLQmFj
a0ZvcndhcmRMaXN0R2V0SXRlbUF0SW5kZXgodG9BUEkoZC0+bV9iYWNrRm9yd2FyZExpc3QpLCBp
bmRleCk7Ci0gICAgaWYgKGl0ZW1SZWYgJiYgZC0+bV9wYWdlKSB7Ci0gICAgICAgIFFXS0hpc3Rv
cnlJdGVtIGl0ZW0oaXRlbVJlZi5nZXQoKSk7Ci0gICAgICAgIFdLUGFnZUdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtKGQtPm1fcGFnZS0+cGFnZVJlZigpLCBpdGVtLmQtPm1fYmFja0ZvcndhcmRMaXN0
SXRlbS5nZXQoKSk7Ci0gICAgfQotfQotCi1RTGlzdDxRV0tIaXN0b3J5SXRlbT4gUVdLSGlzdG9y
eTo6YmFja0l0ZW1zKGludCBtYXhJdGVtcykgY29uc3QKLXsKLSAgICBXS0FycmF5UmVmIGFycmF5
UmVmID0gV0tCYWNrRm9yd2FyZExpc3RDb3B5QmFja0xpc3RXaXRoTGltaXQodG9BUEkoZC0+bV9i
YWNrRm9yd2FyZExpc3QpLCBtYXhJdGVtcyk7Ci0gICAgaW50IHNpemUgPSBXS0FycmF5R2V0U2l6
ZShhcnJheVJlZik7Ci0gICAgUUxpc3Q8UVdLSGlzdG9yeUl0ZW0+IGl0ZW1MaXN0OwotICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIFdLVHlwZVJlZiB3a0hpc3Rv
cnlJdGVtID0gV0tBcnJheUdldEl0ZW1BdEluZGV4KGFycmF5UmVmLCBpKTsKLSAgICAgICAgV0tC
YWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYgPSBzdGF0aWNfY2FzdDxXS0JhY2tGb3J3YXJk
TGlzdEl0ZW1SZWY+KHdrSGlzdG9yeUl0ZW0pOwotICAgICAgICBRV0tIaXN0b3J5SXRlbSBpdGVt
KGl0ZW1SZWYpOwotICAgICAgICBpdGVtTGlzdC5hcHBlbmQoaXRlbSk7Ci0gICAgfQotICAgIHJl
dHVybiBpdGVtTGlzdDsKLX0KLQotUUxpc3Q8UVdLSGlzdG9yeUl0ZW0+IFFXS0hpc3Rvcnk6OmZv
cndhcmRJdGVtcyhpbnQgbWF4SXRlbXMpIGNvbnN0Ci17Ci0gICAgV0tBcnJheVJlZiBhcnJheVJl
ZiA9IFdLQmFja0ZvcndhcmRMaXN0Q29weUZvcndhcmRMaXN0V2l0aExpbWl0KHRvQVBJKGQtPm1f
YmFja0ZvcndhcmRMaXN0KSwgbWF4SXRlbXMpOwotICAgIGludCBzaXplID0gV0tBcnJheUdldFNp
emUoYXJyYXlSZWYpOwotICAgIFFMaXN0PFFXS0hpc3RvcnlJdGVtPiBpdGVtTGlzdDsKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBXS1R5cGVSZWYgd2tIaXN0
b3J5SXRlbSA9IFdLQXJyYXlHZXRJdGVtQXRJbmRleChhcnJheVJlZiwgaSk7Ci0gICAgICAgIFdL
QmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtUmVmID0gc3RhdGljX2Nhc3Q8V0tCYWNrRm9yd2Fy
ZExpc3RJdGVtUmVmPih3a0hpc3RvcnlJdGVtKTsKLSAgICAgICAgUVdLSGlzdG9yeUl0ZW0gaXRl
bShpdGVtUmVmKTsKLSAgICAgICAgaXRlbUxpc3QuYXBwZW5kKGl0ZW0pOwotICAgIH0KLSAgICBy
ZXR1cm4gaXRlbUxpc3Q7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9xd2toaXN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdraGlzdG9y
eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDM1MTNmZGE1YWNjMjk5ZGQ2YjQz
ZDUwYzYwZTBlNDMxMTkyNDAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEp1aGEg
U2F2b2xhaW5lbiAoanVoYS5zYXZvbGFpbmVuQHdlZWdvLmZpKQotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQotI2lmbmRlZiBxd2toaXN0b3J5
X2gKLSNkZWZpbmUgcXdraGlzdG9yeV9oCi0KLSNpbmNsdWRlICJXZWJLaXQyL1dLQmFja0Zvcndh
cmRMaXN0SXRlbS5oIgotI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKLSNpbmNsdWRlIDxRT2Jq
ZWN0PgotI2luY2x1ZGUgPFFTaGFyZWREYXRhPgotCi1jbGFzcyBRV0tIaXN0b3J5UHJpdmF0ZTsK
LWNsYXNzIFFXS0hpc3RvcnlJdGVtUHJpdmF0ZTsKLWNsYXNzIFFVcmw7Ci1jbGFzcyBRU3RyaW5n
OwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKLX0KLQot
Y2xhc3MgUVdFQktJVF9FWFBPUlQgUVdLSGlzdG9yeUl0ZW0gewotcHVibGljOgotICAgIFFXS0hp
c3RvcnlJdGVtKGNvbnN0IFFXS0hpc3RvcnlJdGVtJiBvdGhlcik7Ci0gICAgUVdLSGlzdG9yeUl0
ZW0gJm9wZXJhdG9yPShjb25zdCBRV0tIaXN0b3J5SXRlbSYgb3RoZXIpOwotCi0gICAgflFXS0hp
c3RvcnlJdGVtKCk7Ci0gICAgUVN0cmluZyB0aXRsZSgpIGNvbnN0OwotICAgIFFVcmwgdXJsKCkg
Y29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgUVdLSGlzdG9yeUl0ZW0oV0tCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmKTsKLQotICAgIFFFeHBsaWNpdGx5U2hhcmVkRGF0YVBvaW50ZXI8UVdLSGlzdG9yeUl0
ZW1Qcml2YXRlPiBkOwotCi0gICAgZnJpZW5kIGNsYXNzIFFXS0hpc3Rvcnk7Ci0gICAgZnJpZW5k
IGNsYXNzIFFXS0hpc3RvcnlJdGVtUHJpdmF0ZTsKLX07Ci0KLWNsYXNzIFFXRUJLSVRfRVhQT1JU
IFFXS0hpc3RvcnkgOiBwdWJsaWMgUU9iamVjdCB7Ci0gICAgUV9PQkpFQ1QKLXB1YmxpYzoKLSAg
ICBpbnQgYmFja0xpc3RDb3VudCgpIGNvbnN0OwotICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkg
Y29uc3Q7Ci0gICAgaW50IGNvdW50KCkgY29uc3Q7Ci0gICAgUVdLSGlzdG9yeUl0ZW0gY3VycmVu
dEl0ZW0oKSBjb25zdDsKLSAgICBRV0tIaXN0b3J5SXRlbSBiYWNrSXRlbSgpIGNvbnN0OwotICAg
IFFXS0hpc3RvcnlJdGVtIGZvcndhcmRJdGVtKCkgY29uc3Q7Ci0gICAgUVdLSGlzdG9yeUl0ZW0g
aXRlbUF0KGludCBpbmRleCkgY29uc3Q7Ci0gICAgdm9pZCBnb1RvSXRlbUF0KGludCBpbmRleCkg
Y29uc3Q7Ci0gICAgUUxpc3Q8UVdLSGlzdG9yeUl0ZW0+IGJhY2tJdGVtcyhpbnQgbWF4SXRlbXMp
IGNvbnN0OwotICAgIFFMaXN0PFFXS0hpc3RvcnlJdGVtPiBmb3J3YXJkSXRlbXMoaW50IG1heEl0
ZW1zKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBRV0tIaXN0b3J5KCk7Ci0gICAgflFXS0hpc3Rv
cnkoKTsKLQotICAgIFFXS0hpc3RvcnlQcml2YXRlKiBkOwotICAgIGZyaWVuZCBjbGFzcyBRV0tI
aXN0b3J5UHJpdmF0ZTsKLSAgICBmcmllbmQgY2xhc3MgUXRXZWJQYWdlUHJveHk7Ci19OwotI2Vu
ZGlmIC8qIHF3a2hpc3RvcnlfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L3F3a2hpc3RvcnlfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2hp
c3RvcnlfcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWYxNDNlMTc1ODgwOTcy
NzhmZTk2YjkxMGM0NWU3OTIyNzExNjdhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2toaXN0b3J5X3Au
aAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgSnVoYSBTYXZvbGFpbmVuIChqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmkpCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaWZuZGVmIHF3
a2hpc3RvcnlfcF9oCi0jZGVmaW5lIHF3a2hpc3RvcnlfcF9oCi0KLSNpbmNsdWRlIDxRU2hhcmVk
RGF0YT4KLSNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCi0jaW5jbHVkZSA8V2ViS2l0Mi9XS0Jh
c2UuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJCYWNrRm9yd2FyZExp
c3Q7Ci19Ci0KLWNsYXNzIFFXS0hpc3Rvcnk7Ci1jbGFzcyBRdFdlYlBhZ2VQcm94eTsKLQotY2xh
c3MgUVdFQktJVF9FWFBPUlQgUVdLSGlzdG9yeUl0ZW1Qcml2YXRlIDogcHVibGljIFFTaGFyZWRE
YXRhIHsKLXB1YmxpYzoKLSAgICAgICB+UVdLSGlzdG9yeUl0ZW1Qcml2YXRlKCk7Ci1wcml2YXRl
OgotICAgIFFXS0hpc3RvcnlJdGVtUHJpdmF0ZShXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgbGlz
dEl0ZW0pOwotICAgIFdLUmV0YWluUHRyPFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gbV9iYWNr
Rm9yd2FyZExpc3RJdGVtOwotCi0gICAgZnJpZW5kIGNsYXNzIFFXS0hpc3Rvcnk7Ci0gICAgZnJp
ZW5kIGNsYXNzIFFXS0hpc3RvcnlJdGVtOwotfTsKLQotY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdL
SGlzdG9yeVByaXZhdGUgewotcHVibGljOgotICAgIHN0YXRpYyBRV0tIaXN0b3J5KiBjcmVhdGVI
aXN0b3J5KFF0V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqKTsKLQot
cHJpdmF0ZToKLSAgICBRV0tIaXN0b3J5UHJpdmF0ZShRdFdlYlBhZ2VQcm94eSosIFdlYktpdDo6
V2ViQmFja0ZvcndhcmRMaXN0Kik7Ci0gICAgflFXS0hpc3RvcnlQcml2YXRlKCk7Ci0KLSAgICBR
dFdlYlBhZ2VQcm94eSogbV9wYWdlOwotICAgIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0KiBt
X2JhY2tGb3J3YXJkTGlzdDsKLQotICAgIGZyaWVuZCBjbGFzcyBRV0tIaXN0b3J5OwotfTsKLQot
I2VuZGlmIC8qIHF3a2hpc3RvcnlfcF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvcXR3ZWJraXQt
ZXhwb3J0Lm1hcCBiL1NvdXJjZS9xdHdlYmtpdC1leHBvcnQubWFwCmluZGV4IGE1NDZjYjJmZmU0
OWI1YzY4YTkwYzY5YTUwNmY5ZmI4NDE5OTZkM2IuLjg5YmI5ZGI1MzNmZTI5NDkyODI5ZmE2OWRj
YmRiNWM1YTA4YTE1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9xdHdlYmtpdC1leHBvcnQubWFwCisr
KyBiL1NvdXJjZS9xdHdlYmtpdC1leHBvcnQubWFwCkBAIC0xMTgsNiArMTE4LDEyIEBAIHF3a18x
LjAgewogICAgICAgICAqUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDsKICAgICAgICAgbm9uLXZp
cnR1YWw/dGh1bms/dG8/UVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCo7CiAgICAgICAgIFFRdWlj
a1dlYlZpZXdFeHBlcmltZW50YWw6Oio7CisgICAgICAgICpRV2ViTmF2aWdhdGlvbkhpc3Rvcnk7
CisgICAgICAgIG5vbi12aXJ0dWFsP3RodW5rP3RvP1FXZWJOYXZpZ2F0aW9uSGlzdG9yeSo7Cisg
ICAgICAgIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6KjsKKyAgICAgICAgKlFXZWJOYXZpZ2F0aW9u
TGlzdE1vZGVsOworICAgICAgICBub24tdmlydHVhbD90aHVuaz90bz9RV2ViTmF2aWdhdGlvbkxp
c3RNb2RlbCo7CisgICAgICAgIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsOjoqOwogICAgICAgICAq
UVdlYlByZWZlcmVuY2VzOwogICAgICAgICBub24tdmlydHVhbD90aHVuaz90bz9RV2ViUHJlZmVy
ZW5jZXMqOwogICAgICAgICBRV2ViUHJlZmVyZW5jZXM6Oio7CmRpZmYgLS1naXQgYS9DaGFuZ2VM
b2cgYi9DaGFuZ2VMb2cKaW5kZXggODBhNmQ3ZTQ1YTRkMGE1ZjAyZTY4Njg1NWNiZjkxMjBhZGZh
ZDZmNS4uYTNkM2YwZGIwZDg5YTk5ZGZhNDI5YjQ4MjdhOTFjOGEzODMzMWUxZSAxMDA2NDQKLS0t
IGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTExLTI1
ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAg
IFtRdF1bV0syXSBIaXN0b3J5IGlzIG5vdCBhY2Nlc3NpYmxlIGluIFFNTC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDE2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBuZXcgUVdlYk5hdmln
YXRpb25IaXN0b3J5IGluIHRoZSBtYXAgZmlsZS4KKworICAgICAgICAqIFNvdXJjZS9xdHdlYmtp
dC1leHBvcnQubWFwOgorCiAyMDExLTEyLTA2ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNt
YW5uQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIGJ1aWxkLWpzYyBzY3JpcHQgZG9lc24ndCB3
b3JrCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118605</attachid>
            <date>2011-12-09 12:05:05 -0800</date>
            <delta_ts>2011-12-09 12:46:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73016-20111209140321.patch</filename>
            <type>text/plain</type>
            <size>47623</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGUwYThkN2NjYTg2
MWM1MWEyYWJiNDBjMzVlMjAxMjA0OTU1YTE5NzQuLjA0ZThmZjk5MDdlMGE0NTQxNTM1MGY5ZTZl
MTQ3YTFmZDM5ZDNmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTIt
MDkgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAg
ICAgW1F0XVtXSzJdIEhpc3RvcnkgaXMgbm90IGFjY2Vzc2libGUgaW4gUU1MLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWdpc3RlciBRV2ViTmF2aWdh
dGlvbkhpc3RvcnkgYW5kIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsIGluIHRoZSBRTUwgcGx1Z2lu
LgorCisgICAgICAgICogZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3BsdWdpbi5jcHA6CisgICAg
ICAgIChXZWJLaXRRbWxQbHVnaW46OnJlZ2lzdGVyVHlwZXMpOgorCiAyMDExLTEyLTA4ICBQaWVy
cmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgogCiAgICAgICAgIERyb3AgRU5BQkxF
X05PX0xJU1RCT1hfUkVOREVSSU5HLCBhbmQgbWFrZSBpdCBhIHJ1bnRpbWUgZGVjaXNpb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggOWU3ZjA4NTM5ZGRlMWE0YjM5MDNiNjg3ZTlmNGI5MDBjYjVkZDZjMi4uMGVm
ODk0ZjVjNTg2ZWU5ZDY4NzRlMzZlZGQ5NmNkNDc0ZjA4YjdhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUyIEBACisyMDExLTEyLTA5ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVu
Ym9zc2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBIaXN0b3J5IGlzIG5vdCBhY2Nlc3NpYmxl
IGluIFFNTC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczMDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIHRoZSBvbGQgcXdraGlzdG9yeSBhbmQgY3JlYXRlIFFXZWJOYXZpZ2F0aW9uSGlzdG9y
eSB3aGljaCBpcyBRTUwKKyAgICAgICAgZnJpZW5kbHkgd2l0aCBkYXRhIG1vZGVscyB5b3UgY2Fu
IHBsdWcgdG8gYSB2aWV3IGluIFFNTC4KKworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dl
YlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoUVF1aWNr
V2ViVmlld0V4cGVyaW1lbnRhbDo6bmF2aWdhdGlvbkhpc3RvcnkpOgorICAgICAgICAoUVF1aWNr
V2ViVmlldzo6Z29CYWNrKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6OmdvRm9yd2FyZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFFXZWJO
YXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZTo6UVdlYk5hdmlnYXRpb25MaXN0TW9kZWxQcml2YXRl
KToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGU6OlFXZWJOYXZpZ2F0aW9u
SGlzdG9yeVByaXZhdGUpOgorICAgICAgICAoUVdlYk5hdmlnYXRpb25IaXN0b3J5UHJpdmF0ZTo6
Y3JlYXRlSGlzdG9yeSk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlOjpy
ZXNldCk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlOjpnb0JhY2tUbyk6
CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlOjpnb0ZvcndhcmRUbyk6Cisg
ICAgICAgIChRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbDo6UVdlYk5hdmlnYXRpb25MaXN0TW9kZWwp
OgorICAgICAgICAoUVdlYk5hdmlnYXRpb25MaXN0TW9kZWw6On5RV2ViTmF2aWdhdGlvbkxpc3RN
b2RlbCk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbDo6cm93Q291bnQpOgorICAg
ICAgICAoUVdlYk5hdmlnYXRpb25MaXN0TW9kZWw6OmRhdGEpOgorICAgICAgICAoUVdlYk5hdmln
YXRpb25IaXN0b3J5OjpRV2ViTmF2aWdhdGlvbkhpc3RvcnkpOgorICAgICAgICAoUVdlYk5hdmln
YXRpb25IaXN0b3J5Ojp+UVdlYk5hdmlnYXRpb25IaXN0b3J5KToKKyAgICAgICAgKFFXZWJOYXZp
Z2F0aW9uSGlzdG9yeTo6YmFja0l0ZW1zKToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uSGlzdG9y
eTo6Zm9yd2FyZEl0ZW1zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0
aW9uaGlzdG9yeV9wLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
cXdraGlzdG9yeS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25o
aXN0b3J5X3BfcC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3
a2hpc3RvcnlfcC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMv
V2ViVmlldy90c3RfbmF2aWdhdGlvbkhpc3RvcnkucW1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VMb2Fk
Q2xpZW50OjpRdFdlYlBhZ2VMb2FkQ2xpZW50KToKKyAgICAgICAgKFF0V2ViUGFnZUxvYWRDbGll
bnQ6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZUxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OlF0V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFF0V2ViUGFnZVByb3h5Ojp+UXRXZWJQYWdlUHJveHkpOgorICAgICAgICAoUXRXZWJQYWdl
UHJveHk6OmdvQmFjayk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6Z29Gb3J3YXJkKToKKyAg
ICAgICAgKFF0V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uSGlzdG9yeSk6CisgICAgICAgICogVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3a2hp
c3RvcnkuY3BwOiBSZW1vdmVkLgorCiAyMDExLTEyLTA4ICBKb2NlbHluIFR1cmNvdHRlICA8am9j
ZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBVcGRhdGUgV2ViR3JhcGhp
Y0xheWVyJ3MgY2hpbGQgY29udGVudCBzY2FsZSBpbiBhbGwgY2hpbGQgYmluZGluZyBtZXRob2Qu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL2V4cGVyaW1lbnRhbC9w
bHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9leHBlcmltZW50YWwvcGx1
Z2luLmNwcAppbmRleCA4NjMxMmUxMDU5M2NmODFlOTRjMjQ4MTc5OGU4YWZhMWUwMGZmNDBlLi45
YWJhNzZhODc1MzZiZTUzOWQ0M2RmYTQxNjIxYzY0ZDM1ODczYTQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL2V4cGVyaW1lbnRhbC9wbHVnaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3BsdWdpbi5jcHAKQEAgLTIx
LDYgKzIxLDggQEAKICNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3AuaCIKICNpbmNsdWRlICJxd2Vi
ZG93bmxvYWRpdGVtX3AuaCIKIAorI2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wLmgi
CisKICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZS5oPgogI2luY2x1ZGUgPFF0
RGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZlZXh0ZW5zaW9ucGx1Z2luLmg+CiAKQEAgLTQyLDYgKzQ0
LDggQEAgcHVibGljOgogICAgICAgICBRX0FTU0VSVChRTGF0aW4xU3RyaW5nKHVyaSkgPT0gUUxh
dGluMVN0cmluZygiUXRXZWJLaXQuZXhwZXJpbWVudGFsIikpOwogCiAgICAgICAgIHFtbFJlZ2lz
dGVyVW5jcmVhdGFibGVUeXBlPFFXZWJEb3dubG9hZEl0ZW0+KHVyaSwgMywgMCwgIkRvd25sb2Fk
SXRlbSIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIERv
d25sb2FkSXRlbSIpKTsKKyAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVdlYk5h
dmlnYXRpb25MaXN0TW9kZWw+KHVyaSwgMywgMCwgIldlYk5hdmlnYXRpb25MaXN0TW9kZWwiLCBR
T2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBOYXZpZ2F0aW9u
TGlzdE1vZGVsIikpOworICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViTmF2
aWdhdGlvbkhpc3Rvcnk+KHVyaSwgMywgMCwgIlBhZ2VIaXN0b3J5IiwgUU9iamVjdDo6dHIoIkNh
bm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgTmF2aWdhdGlvbkhpc3RvcnkiKSk7CiAg
ICAgICAgIHFtbFJlZ2lzdGVyRXh0ZW5kZWRUeXBlPFFRdWlja1dlYlZpZXcsIFFRdWlja1dlYlZp
ZXdFeHBlcmltZW50YWxFeHRlbnNpb24+KHVyaSwgMywgMCwgIldlYlZpZXciKTsKICAgICAgICAg
cW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbD4odXJp
LCAzLCAwLCAiUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCIsCiAgICAgICAgICAgICBRT2JqZWN0
Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBRUXVpY2tXZWJWaWV3RXhw
ZXJpbWVudGFsIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggYTVkNGM2ZDY1NmU1ZWM4ZDNmNjJiNTkwMDcz
ZjFmZDYzY2E1NTM2YS4uZGVhYTI5NjNiNTlhMWQ2NjZkMmE1MzE5MWYyNDI4ZmU1MzEyNGY1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9UYXJnZXQucHJpCkBAIC0xNzksNiArMTc5LDggQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9xdC9xd2VicGVybWlzc2lvbnJlcXVlc3RfcC5oIFwKICAgICBVSVByb2Nlc3MvQVBJ
L3F0L3FxdWlja3dlYnBhZ2VfcC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBh
Z2VfcF9wLmggXAorICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5X3Au
aCBcCisgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnlfcF9wLmggXAog
ICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmggXAogICAgIFVJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaCBcCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBcCkBAIC0yNjIsOCArMjY0LDYgQEAgSEVB
REVSUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBvbGljeUNsaWVudC5oIFwKICAg
ICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZVVJQ2xpZW50LmggXAotICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmggXAotICAgIFVJ
UHJvY2Vzcy9xdC9xd2toaXN0b3J5X3AuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0U0dVcGRhdGVR
dWV1ZS5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRTR1RpbGVOb2RlLmggXAogICAgIFVJUHJvY2Vz
cy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaCBcCkBAIC00OTYsNiArNDk2LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcCBc
CiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2VicGVybWlzc2lvbnJlcXVlc3QuY3BwIFwKICAgICBV
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwIFwKKyAgICBVSVByb2Nlc3MvQVBJL3F0
L3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeS5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlldy5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmNwcCBc
CiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuY3BwIFwKQEAgLTU4Myw3ICs1ODQsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlUG9saWN5Q2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmNwcCBcCi0g
ICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRTR1Vw
ZGF0ZVF1ZXVlLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0U0dUaWxlTm9kZS5jcHAgXAogICAg
IFVJUHJvY2Vzcy9xdC9UaWxlZERyYXdpbmdBcmVhUHJveHlRdC5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKaW5kZXggMzA4NjA0
MmE0MjVmNTg0NThlNDhjMjhjYWZjOGU5MDAxM2Y5M2E2Ny4uZDMzNTRjYTRlN2E4ZWRhMTdiYTQ3
NTk3ZWE5YzQzMzI3MzQ3ZmE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbmNsdWRlICJx
cXVpY2t3ZWJwYWdlX3BfcC5oIgogI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcF9wLmgiCisjaW5j
bHVkZSAicXdlYm5hdmlnYXRpb25oaXN0b3J5X3AuaCIKKyNpbmNsdWRlICJxd2VibmF2aWdhdGlv
bmhpc3RvcnlfcF9wLmgiCiAjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzX3BfcC5oIgogCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgpAQCAtMTkwLDYgKzE5
MiwxMSBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3Bl
cnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcgogICAgIGludGVyYWN0aW9uRW5naW5lLT5h
cHBseUNvbnN0cmFpbnRzKGNvbXB1dGVWaWV3cG9ydENvbnN0cmFpbnRzKCkpOwogfQogCit2b2lk
IFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoKQoreworICAg
IHBhZ2VQcm94eS0+bmF2aWdhdGlvbkhpc3RvcnkoKS0+ZC0+cmVzZXQoKTsKK30KKwogdm9pZCBR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2Nyb2xsUG9zaXRpb25SZXF1ZXN0ZWQoY29uc3QgUVBvaW50
JiBwb3MpCiB7CiAgICAgaWYgKCF1c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIpCkBAIC00
NzksNiArNDg2LDExIEBAIHZvaWQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6c2V0Q29uZmly
bURpYWxvZyhRRGVjbGFyYXRpdmVDb21wb25lbnQqIGNvbmZpcm1ECiAgICAgZW1pdCBjb25maXJt
RGlhbG9nQ2hhbmdlZCgpOwogfQogCitRV2ViTmF2aWdhdGlvbkhpc3RvcnkqIFFRdWlja1dlYlZp
ZXdFeHBlcmltZW50YWw6Om5hdmlnYXRpb25IaXN0b3J5KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZF9wdHItPnBhZ2VQcm94eS0+bmF2aWdhdGlvbkhpc3RvcnkoKTsKK30KKwogUURlY2xhcmF0aXZl
Q29tcG9uZW50KiBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpwcm9tcHREaWFsb2coKSBjb25z
dAogewogICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsKQEAgLTUzOCwxNiArNTUwLDE2IEBA
IHZvaWQgUVF1aWNrV2ViVmlldzo6cG9zdE1lc3NhZ2UoY29uc3QgUVN0cmluZyYgbWVzc2FnZSkK
ICAgICBkLT5wYWdlUHJveHktPnBvc3RNZXNzYWdlVG9OYXZpZ2F0b3JRdE9iamVjdChtZXNzYWdl
KTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3Ojpnb0JhY2soKQordm9pZCBRUXVpY2tXZWJWaWV3
Ojpnb0JhY2soaW50IGluZGV4KQogewogICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKLSAgICBkLT5w
YWdlUHJveHktPmdvQmFjaygpOworICAgIGQtPnBhZ2VQcm94eS0+Z29CYWNrKGluZGV4KTsKIH0K
IAotdm9pZCBRUXVpY2tXZWJWaWV3Ojpnb0ZvcndhcmQoKQordm9pZCBRUXVpY2tXZWJWaWV3Ojpn
b0ZvcndhcmQoaW50IGluZGV4KQogewogICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKLSAgICBkLT5w
YWdlUHJveHktPmdvRm9yd2FyZCgpOworICAgIGQtPnBhZ2VQcm94eS0+Z29Gb3J3YXJkKGluZGV4
KTsKIH0KIAogdm9pZCBRUXVpY2tXZWJWaWV3OjpzdG9wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCmluZGV4IDQ1Njc3NzNlOTAxNWI3
OTE3NGFhM2U3OTJkMTI5ZThmNjA0NDdhNTMuLjgzZDkxMzAyOWM0NzU3ODgwMzlmMGZkMGE0Zjcz
NmU4ZjNmODZjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlld19wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3X3AuaApAQCAtMzAsNiArMzAsNyBAQCBjbGFzcyBRUXVpY2tXZWJWaWV3QXR0
YWNoZWQ7CiBjbGFzcyBRUXVpY2tXZWJWaWV3UHJpdmF0ZTsKIGNsYXNzIFFRdWlja1dlYlZpZXdF
eHBlcmltZW50YWw7CiBjbGFzcyBRV2ViRG93bmxvYWRJdGVtOworY2xhc3MgUVdlYk5hdmlnYXRp
b25IaXN0b3J5OwogY2xhc3MgUVdlYlByZWZlcmVuY2VzOwogY2xhc3MgUVdlYlBlcm1pc3Npb25S
ZXF1ZXN0OwogCkBAIC05OCw4ICs5OSw4IEBAIHB1YmxpYyBRX1NMT1RTOgogICAgIHZvaWQgcG9z
dE1lc3NhZ2UoY29uc3QgUVN0cmluZyYpOwogICAgIHZvaWQgbG9hZEh0bWwoY29uc3QgUVN0cmlu
ZyYgaHRtbCwgY29uc3QgUVVybCYgYmFzZVVybCA9IFFVcmwoKSk7CiAKLSAgICB2b2lkIGdvQmFj
aygpOwotICAgIHZvaWQgZ29Gb3J3YXJkKCk7CisgICAgdm9pZCBnb0JhY2soaW50IGluZGV4ID0g
MCk7CisgICAgdm9pZCBnb0ZvcndhcmQoaW50IGluZGV4ID0gMCk7CiAgICAgdm9pZCBzdG9wKCk7
CiAgICAgdm9pZCByZWxvYWQoKTsKIApAQCAtMTY4LDYgKzE2OSw3IEBAIFFNTF9ERUNMQVJFX1RZ
UEVJTkZPKFFRdWlja1dlYlZpZXcsIFFNTF9IQVNfQVRUQUNIRURfUFJPUEVSVElFUykKIAogY2xh
c3MgUVdFQktJVF9FWFBPUlQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCA6IHB1YmxpYyBRT2Jq
ZWN0IHsKICAgICBRX09CSkVDVAorICAgIFFfUFJPUEVSVFkoUVdlYk5hdmlnYXRpb25IaXN0b3J5
KiBuYXZpZ2F0aW9uSGlzdG9yeSBSRUFEIG5hdmlnYXRpb25IaXN0b3J5IENPTlNUQU5UIEZJTkFM
KQogICAgIFFfUFJPUEVSVFkoUURlY2xhcmF0aXZlQ29tcG9uZW50KiBhbGVydERpYWxvZyBSRUFE
IGFsZXJ0RGlhbG9nIFdSSVRFIHNldEFsZXJ0RGlhbG9nIE5PVElGWSBhbGVydERpYWxvZ0NoYW5n
ZWQpCiAgICAgUV9QUk9QRVJUWShRRGVjbGFyYXRpdmVDb21wb25lbnQqIGNvbmZpcm1EaWFsb2cg
UkVBRCBjb25maXJtRGlhbG9nIFdSSVRFIHNldENvbmZpcm1EaWFsb2cgTk9USUZZIGNvbmZpcm1E
aWFsb2dDaGFuZ2VkKQogICAgIFFfUFJPUEVSVFkoUURlY2xhcmF0aXZlQ29tcG9uZW50KiBwcm9t
cHREaWFsb2cgUkVBRCBwcm9tcHREaWFsb2cgV1JJVEUgc2V0UHJvbXB0RGlhbG9nIE5PVElGWSBw
cm9tcHREaWFsb2dDaGFuZ2VkKQpAQCAtMTg1LDYgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFByb21wdERpYWxvZyhRRGVjbGFyYXRpdmVDb21wb25lbnQqKTsKIAogICAgIGJvb2wgdXNl
VHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKCkgY29uc3Q7CisgICAgUVdlYk5hdmlnYXRpb25I
aXN0b3J5KiBuYXZpZ2F0aW9uSGlzdG9yeSgpIGNvbnN0OwogCiBwdWJsaWMgUV9TTE9UUzoKICAg
ICB2b2lkIHNldFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cihib29sIGVuYWJsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdf
cF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9w
LmgKaW5kZXggNjM0ZTgwMjA4OTE2MWUyOWU4OTEzMDIwMTU2N2NkZWExNDhlYWM2MS4uYWE0Y2Zk
ODg0NWFjYTgwODY1N2E3ZDdjZjlkZWJjZjk1NGExYTMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaApAQCAtNjEsNiArNjEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGaW5pc2hGaXJzdE5vbkVtcHR5TGF5b3V0KCk7CiAg
ICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgUVNpemUmIG5ld1NpemUpOwogICAg
IHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0
QXJndW1lbnRzJiBhcmdzKTsKKyAgICB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgpOwog
CiAgICAgdm9pZCBzY3JvbGxQb3NpdGlvblJlcXVlc3RlZChjb25zdCBRUG9pbnQmIHBvcyk7CiAg
ICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYmYyNjNjZDEwOTkxZjhiNmViYjNmMTc2NDNhNGI3ZTNmNDMwNjg2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3Rv
cnkuY3BwCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEp1aGEg
U2F2b2xhaW5lbiAoanVoYS5zYXZvbGFpbmVuQHdlZWdvLmZpKQorICogQ29weXJpZ2h0IChDKSAy
MDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wLmgiCisKKyNp
bmNsdWRlICJRdFdlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldLQmFja0ZvcndhcmRMaXN0Lmgi
CisjaW5jbHVkZSAiV0tTdHJpbmdRdC5oIgorI2luY2x1ZGUgIldLVVJMLmgiCisjaW5jbHVkZSAi
V0tVUkxRdC5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgorCisjaW5jbHVkZSAi
cXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfcC5oIgorI2luY2x1ZGUgPFFEZWNsYXJhdGl2ZUVuZ2lu
ZT4KKyNpbmNsdWRlIDxRU3RyaW5nPgorI2luY2x1ZGUgPFFVcmw+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0FycmF5Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCitRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbFByaXZhdGU6OlFXZWJO
YXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZShXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdCogbGlz
dCkKKyAgICA6IG1fYmFja0ZvcndhcmRMaXN0KGxpc3QpCisgICAgLCBpbmRleFNpZ24oMCkKK3sK
K30KKworUVdlYk5hdmlnYXRpb25IaXN0b3J5UHJpdmF0ZTo6UVdlYk5hdmlnYXRpb25IaXN0b3J5
UHJpdmF0ZShRdFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Qq
IGxpc3QpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fYmFja0ZvcndhcmRMaXN0KGxpc3Qp
CisgICAgLCBtX2JhY2tOYXZpZ2F0aW9uTW9kZWwobmV3IFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVs
KHBhZ2UsIGxpc3QpKQorICAgICwgbV9mb3J3YXJkTmF2aWdhdGlvbk1vZGVsKG5ldyBRV2ViTmF2
aWdhdGlvbkxpc3RNb2RlbChwYWdlLCBsaXN0KSkKK3sKKyAgICBtX2JhY2tOYXZpZ2F0aW9uTW9k
ZWwtPmQtPmNvdW50ID0gJldLQmFja0ZvcndhcmRMaXN0R2V0QmFja0xpc3RDb3VudDsKKyAgICBt
X2JhY2tOYXZpZ2F0aW9uTW9kZWwtPmQtPmluZGV4U2lnbiA9IC0xOworICAgIG1fZm9yd2FyZE5h
dmlnYXRpb25Nb2RlbC0+ZC0+Y291bnQgPSAmV0tCYWNrRm9yd2FyZExpc3RHZXRGb3J3YXJkTGlz
dENvdW50OworICAgIG1fZm9yd2FyZE5hdmlnYXRpb25Nb2RlbC0+ZC0+aW5kZXhTaWduID0gMTsK
K30KKworUVdlYk5hdmlnYXRpb25IaXN0b3J5KiBRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRl
OjpjcmVhdGVIaXN0b3J5KFF0V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdCogbGlzdCkKK3sKKyAgICBRV2ViTmF2aWdhdGlvbkhpc3RvcnkqIGhpc3RvcnkgPSBu
ZXcgUVdlYk5hdmlnYXRpb25IaXN0b3J5KCk7CisgICAgaGlzdG9yeS0+ZCA9IG5ldyBRV2ViTmF2
aWdhdGlvbkhpc3RvcnlQcml2YXRlKHBhZ2UsIGxpc3QpOworICAgIHJldHVybiBoaXN0b3J5Owor
fQorCit2b2lkIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGU6OnJlc2V0KCkKK3sKKyAgICBt
X2JhY2tOYXZpZ2F0aW9uTW9kZWwtPnJlc2V0KCk7CisgICAgbV9mb3J3YXJkTmF2aWdhdGlvbk1v
ZGVsLT5yZXNldCgpOworfQorCit2b2lkIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGU6Omdv
QmFja1RvKGludCBpbmRleCkKK3sKKyAgICBXS1JldGFpblB0cjxXS0JhY2tGb3J3YXJkTGlzdEl0
ZW1SZWY+IGl0ZW1SZWYgPSBXS0JhY2tGb3J3YXJkTGlzdEdldEl0ZW1BdEluZGV4KHRvQVBJKG1f
YmFja0ZvcndhcmRMaXN0KSwgLShpbmRleCArIDEpKTsKKyAgICBpZiAoaXRlbVJlZiAmJiBtX3Bh
Z2UpCisgICAgICAgIFdLUGFnZUdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKG1fcGFnZS0+cGFnZVJl
ZigpLCBpdGVtUmVmLmdldCgpKTsKK30KKwordm9pZCBRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2
YXRlOjpnb0ZvcndhcmRUbyhpbnQgaW5kZXgpCit7CisgICAgV0tSZXRhaW5QdHI8V0tCYWNrRm9y
d2FyZExpc3RJdGVtUmVmPiBpdGVtUmVmID0gV0tCYWNrRm9yd2FyZExpc3RHZXRJdGVtQXRJbmRl
eCh0b0FQSShtX2JhY2tGb3J3YXJkTGlzdCksIGluZGV4ICsgMSk7CisgICAgaWYgKGl0ZW1SZWYg
JiYgbV9wYWdlKQorICAgICAgICBXS1BhZ2VHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShtX3BhZ2Ut
PnBhZ2VSZWYoKSwgaXRlbVJlZi5nZXQoKSk7Cit9CisKK1FXZWJOYXZpZ2F0aW9uTGlzdE1vZGVs
OjpRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbChRT2JqZWN0KiBwYXJlbnQsIFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0KiBsaXN0KQorICAgIDogUUFic3RyYWN0TGlzdE1vZGVsKHBhcmVudCkKKyAg
ICAsIGQobmV3IFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZShsaXN0KSkKK3sKKyAgICBR
SGFzaDxpbnQsIFFCeXRlQXJyYXk+IHJvbGVzOworICAgIHJvbGVzW1FXZWJOYXZpZ2F0aW9uSGlz
dG9yeTo6VXJsUm9sZV0gPSAidXJsIjsKKyAgICByb2xlc1tRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6
OlRpdGxlUm9sZV0gPSAidGl0bGUiOworICAgIHNldFJvbGVOYW1lcyhyb2xlcyk7Cit9CisKK1FX
ZWJOYXZpZ2F0aW9uTGlzdE1vZGVsOjp+UVdlYk5hdmlnYXRpb25MaXN0TW9kZWwoKQoreworICAg
IGRlbGV0ZSBkOworfQorCitpbnQgUVdlYk5hdmlnYXRpb25MaXN0TW9kZWw6OnJvd0NvdW50KGNv
bnN0IFFNb2RlbEluZGV4JikgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+Y291bnQodG9BUEkoZC0+
bV9iYWNrRm9yd2FyZExpc3QpKTsKK30KKworUVZhcmlhbnQgUVdlYk5hdmlnYXRpb25MaXN0TW9k
ZWw6OmRhdGEoY29uc3QgUU1vZGVsSW5kZXgmIGluZGV4LCBpbnQgcm9sZSkgY29uc3QKK3sKKyAg
ICBpZiAoIWluZGV4LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisKKyAg
ICBpZiAocm9sZSA8IFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6VXJsUm9sZSB8fCByb2xlID4gUVdl
Yk5hdmlnYXRpb25IaXN0b3J5OjpUaXRsZVJvbGUpCisgICAgICAgIHJldHVybiBRVmFyaWFudCgp
OworCisgICAgV0tSZXRhaW5QdHI8V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBpdGVtUmVmID0g
V0tCYWNrRm9yd2FyZExpc3RHZXRJdGVtQXRJbmRleCh0b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlz
dCksIChpbmRleC5yb3coKSArIDEpICogZC0+aW5kZXhTaWduKTsKKyAgICBpZiAocm9sZSA9PSBR
V2ViTmF2aWdhdGlvbkhpc3Rvcnk6OlVybFJvbGUpIHsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tV
UkxSZWY+IHVybChBZG9wdFdLLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VVJMKGl0ZW1SZWYu
Z2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIFdLVVJMQ29weVFVcmwodXJsLmdldCgpKTsKKyAgICB9
CisKKyAgICBpZiAocm9sZSA9PSBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6OlRpdGxlUm9sZSkgewor
ICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdGl0bGUoQWRvcHRXSywgV0tCYWNrRm9y
d2FyZExpc3RJdGVtQ29weVRpdGxlKGl0ZW1SZWYuZ2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIFdL
U3RyaW5nQ29weVFTdHJpbmcodGl0bGUuZ2V0KCkpOworICAgIH0KKworICAgIHJldHVybiBRVmFy
aWFudCgpOworfQorCitRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6OlFXZWJOYXZpZ2F0aW9uSGlzdG9y
eSgpCisgICAgOiBRT2JqZWN0KCkKK3sKK30KKworUVdlYk5hdmlnYXRpb25IaXN0b3J5Ojp+UVdl
Yk5hdmlnYXRpb25IaXN0b3J5KCkKK3sKKyAgICBkZWxldGUgZDsKK30KKworUVdlYk5hdmlnYXRp
b25MaXN0TW9kZWwqIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6YmFja0l0ZW1zKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZC0+bV9iYWNrTmF2aWdhdGlvbk1vZGVsOworfQorCitRV2ViTmF2aWdhdGlv
bkxpc3RNb2RlbCogUVdlYk5hdmlnYXRpb25IaXN0b3J5Ojpmb3J3YXJkSXRlbXMoKSBjb25zdAor
eworICAgIHJldHVybiBkLT5tX2ZvcndhcmROYXZpZ2F0aW9uTW9kZWw7Cit9CisKKyNpbmNsdWRl
ICJtb2NfcXdlYm5hdmlnYXRpb25oaXN0b3J5X3AuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnlfcC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnlfcC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRmN2EwYzYxMWFkYTlmZWU3Y2JjN2YzOWFlZWRiMTc2YWM1MDE1MTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9u
aGlzdG9yeV9wLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBK
dWhhIFNhdm9sYWluZW4gKGp1aGEuc2F2b2xhaW5lbkB3ZWVnby5maSkKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNp
Zm5kZWYgcXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfaAorI2RlZmluZSBxd2VibmF2aWdhdGlvbmhp
c3RvcnlfcF9oCisKKyNpbmNsdWRlICJXZWJLaXQyL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5oIgor
I2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRQWJzdHJhY3RMaXN0TW9kZWw+
CisjaW5jbHVkZSA8UU9iamVjdD4KKyNpbmNsdWRlIDxRVXJsPgorI2luY2x1ZGUgPFFWYXJpYW50
PgorI2luY2x1ZGUgPHFkZWNsYXJhdGl2ZS5oPgorCitjbGFzcyBRQWJzdHJhY3RMaXN0TW9kZWw7
CitjbGFzcyBRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlOworY2xhc3MgUVdlYk5hdmlnYXRp
b25MaXN0TW9kZWxQcml2YXRlOworY2xhc3MgUVVybDsKK2NsYXNzIFFTdHJpbmc7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OworfQorCitjbGFzcyBRV0VC
S0lUX0VYUE9SVCBRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbCA6IHB1YmxpYyBRQWJzdHJhY3RMaXN0
TW9kZWwgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgUVdlYk5hdmlnYXRpb25MaXN0TW9k
ZWwoUU9iamVjdCogcGFyZW50LCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdCopOworICAgIH5R
V2ViTmF2aWdhdGlvbkxpc3RNb2RlbCgpOworCisgICAgaW50IHJvd0NvdW50KGNvbnN0IFFNb2Rl
bEluZGV4JiBwYXJlbnQgPSBRTW9kZWxJbmRleCgpKSBjb25zdDsKKyAgICBRVmFyaWFudCBkYXRh
KGNvbnN0IFFNb2RlbEluZGV4JiBpbmRleCwgaW50IHJvbGUpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZSogZDsKKyAgICBmcmllbmQgY2xhc3Mg
UVdlYk5hdmlnYXRpb25IaXN0b3J5OworICAgIGZyaWVuZCBjbGFzcyBRV2ViTmF2aWdhdGlvbkhp
c3RvcnlQcml2YXRlOworfTsKKworUU1MX0RFQ0xBUkVfVFlQRShRV2ViTmF2aWdhdGlvbkxpc3RN
b2RlbCkKKworY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYk5hdmlnYXRpb25IaXN0b3J5IDogcHVi
bGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShRV2ViTmF2aWdhdGlv
bkxpc3RNb2RlbCogYmFja0l0ZW1zIFJFQUQgYmFja0l0ZW1zIENPTlNUQU5UIEZJTkFMKQorICAg
IFFfUFJPUEVSVFkoUVdlYk5hdmlnYXRpb25MaXN0TW9kZWwqIGZvcndhcmRJdGVtcyBSRUFEIGZv
cndhcmRJdGVtcyBDT05TVEFOVCBGSU5BTCkKK3B1YmxpYzoKKyAgICBlbnVtIE5hdmlnYXRpb25I
aXN0b3J5Um9sZXMgeworICAgICAgICBVcmxSb2xlID0gUXQ6OlVzZXJSb2xlICsgMSwKKyAgICAg
ICAgVGl0bGVSb2xlID0gUXQ6OlVzZXJSb2xlICsgMgorICAgIH07CisKKyAgICBRV2ViTmF2aWdh
dGlvbkxpc3RNb2RlbCogYmFja0l0ZW1zKCkgY29uc3Q7CisgICAgUVdlYk5hdmlnYXRpb25MaXN0
TW9kZWwqIGZvcndhcmRJdGVtcygpIGNvbnN0OworCisgICAgdmlydHVhbCB+UVdlYk5hdmlnYXRp
b25IaXN0b3J5KCk7CisKK3ByaXZhdGU6CisgICAgUVdlYk5hdmlnYXRpb25IaXN0b3J5KCk7CisK
KyAgICBRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlKiBkOworICAgIGZyaWVuZCBjbGFzcyBR
V2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlOworICAgIGZyaWVuZCBjbGFzcyBRdFdlYlBhZ2VQ
cm94eTsKKyAgICBmcmllbmQgY2xhc3MgUVF1aWNrV2ViVmlld1ByaXZhdGU7Cit9OworCitRTUxf
REVDTEFSRV9UWVBFKFFXZWJOYXZpZ2F0aW9uSGlzdG9yeSkKKworI2VuZGlmIC8qIHF3ZWJuYXZp
Z2F0aW9uaGlzdG9yeV9wX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnlfcF9wLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ0
NDBlODhkZGZmMWQwNjFjYjNiMTk4Y2JmNzRjYTZhYTVhZTc2NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5X3Bf
cC5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSnVoYSBTYXZv
bGFpbmVuIChqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmkpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIHF3
ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wX3BfaAorI2RlZmluZSBxd2VibmF2aWdhdGlvbmhpc3Rvcnlf
cF9wX2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKworI2luY2x1ZGUgPFFPYmplY3Q+
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CitjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7Cit9CisKK2NsYXNzIFFXZWJOYXZpZ2F0aW9uSGlz
dG9yeTsKK2NsYXNzIFF0V2ViUGFnZVByb3h5OworCitjbGFzcyBRV2ViTmF2aWdhdGlvbkxpc3RN
b2RlbFByaXZhdGUgeworcHVibGljOgorICAgIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0
ZShXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdCopOworCisgICAgdW5zaWduZWQgKCpjb3VudCko
V0tCYWNrRm9yd2FyZExpc3RSZWYpOworICAgIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0KiBt
X2JhY2tGb3J3YXJkTGlzdDsKKyAgICBpbnQgaW5kZXhTaWduOworfTsKKworY2xhc3MgUVdlYk5h
dmlnYXRpb25IaXN0b3J5UHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFFXZWJOYXZpZ2F0
aW9uSGlzdG9yeSogY3JlYXRlSGlzdG9yeShRdFdlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0Kik7CisKKyAgICBRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlKFF0V2Vi
UGFnZVByb3h5KiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqKTsKKyAgICB2b2lkIHJlc2V0
KCk7CisgICAgdm9pZCBnb0JhY2tUbyhpbnQgaW5kZXgpOworICAgIHZvaWQgZ29Gb3J3YXJkVG8o
aW50IGluZGV4KTsKKworICAgIFF0V2ViUGFnZVByb3h5KiBtX3BhZ2U7CisgICAgV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3QqIG1fYmFja0ZvcndhcmRMaXN0OworICAgIFFXZWJOYXZpZ2F0aW9u
TGlzdE1vZGVsKiBtX2JhY2tOYXZpZ2F0aW9uTW9kZWw7CisgICAgUVdlYk5hdmlnYXRpb25MaXN0
TW9kZWwqIG1fZm9yd2FyZE5hdmlnYXRpb25Nb2RlbDsKK307CisKKyNlbmRpZiAvKiBxd2VibmF2
aWdhdGlvbmhpc3RvcnlfcF9wX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfbmF2aWdhdGlvbkhpc3Rvcnku
cW1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJW
aWV3L3RzdF9uYXZpZ2F0aW9uSGlzdG9yeS5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI5MzFkZDQ2YmU3NWNk
OWMxNDc2MDU2OGE2YTgyZThiNjFiMjZiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfbmF2aWdhdGlv
bkhpc3RvcnkucW1sCkBAIC0wLDAgKzEsMTA4IEBACitpbXBvcnQgUXRRdWljayAyLjAKK2ltcG9y
dCBRdFRlc3QgMS4wCitpbXBvcnQgUXRXZWJLaXQgMy4wCitpbXBvcnQgUXRXZWJLaXQuZXhwZXJp
bWVudGFsIDMuMAorCitXZWJWaWV3IHsKKyAgICBpZDogd2ViVmlldworICAgIHdpZHRoOiA0MDAK
KyAgICBoZWlnaHQ6IDMwMAorCisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IHNweQorICAg
ICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAgc2lnbmFsTmFtZTogImxvYWRTdWNjZWVkZWQi
CisgICAgfQorCisgICAgTGlzdFZpZXcgeworICAgICAgICBpZDogYmFja0l0ZW1zTGlzdAorICAg
ICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICBtb2RlbDogd2ViVmlldy5leHBlcmlt
ZW50YWwubmF2aWdhdGlvbkhpc3RvcnkuYmFja0l0ZW1zCisgICAgICAgIGRlbGVnYXRlOgorICAg
ICAgICAgICAgVGV4dCB7CisgICAgICAgICAgICAgICAgY29sb3I6ImJsYWNrIgorICAgICAgICAg
ICAgICAgIHRleHQ6ICJ0aXRsZSA6ICIgKyB0aXRsZQorICAgICAgICAgICAgfQorICAgIH0KKwor
ICAgIExpc3RWaWV3IHsKKyAgICAgICAgaWQ6IGZvcndhcmRJdGVtc0xpc3QKKyAgICAgICAgYW5j
aG9ycy5maWxsOiBwYXJlbnQKKyAgICAgICAgbW9kZWw6IHdlYlZpZXcuZXhwZXJpbWVudGFsLm5h
dmlnYXRpb25IaXN0b3J5LmZvcndhcmRJdGVtcworICAgICAgICBkZWxlZ2F0ZToKKyAgICAgICAg
ICAgIFRleHQgeworICAgICAgICAgICAgICAgIGNvbG9yOiJibGFjayIKKyAgICAgICAgICAgICAg
ICB0ZXh0OiAidGl0bGUgOiAiICsgdGl0bGUKKyAgICAgICAgICAgIH0KKyAgICB9CisKKyAgICBU
ZXN0Q2FzZSB7CisgICAgICAgIG5hbWU6ICJXZWJWaWV3TmF2aWdhdGlvbkhpc3RvcnkiCisKKyAg
ICAgICAgZnVuY3Rpb24gdGVzdF9uYXZpZ2F0aW9uSGlzdG9yeSgpIHsKKyAgICAgICAgICAgIGNv
bXBhcmUoc3B5LmNvdW50LCAwKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmxvYWRQcm9n
cmVzcywgMCkKKyAgICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29t
bW9uL3Rlc3QxLmh0bWwiKSkKKyAgICAgICAgICAgIHNweS53YWl0KCkKKyAgICAgICAgICAgIGNv
bXBhcmUod2ViVmlldy5jYW5Hb0JhY2ssIGZhbHNlKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJW
aWV3LmNhbkdvRm9yd2FyZCwgZmFsc2UpCisgICAgICAgICAgICBjb21wYXJlKGJhY2tJdGVtc0xp
c3QuY291bnQsIDApCisgICAgICAgICAgICBjb21wYXJlKGZvcndhcmRJdGVtc0xpc3QuY291bnQs
IDApCisgICAgICAgICAgICBzcHkuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy5sb2FkKFF0
LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDIuaHRtbCIpKQorICAgICAgICAgICAgc3B5Lndh
aXQoKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnVybCwgUXQucmVzb2x2ZWRVcmwoIi4u
L2NvbW1vbi90ZXN0Mi5odG1sIikpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29C
YWNrLCB0cnVlKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdvRm9yd2FyZCwgZmFs
c2UpCisgICAgICAgICAgICBjb21wYXJlKGJhY2tJdGVtc0xpc3QuY291bnQsIDEpCisgICAgICAg
ICAgICBzcHkuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy5nb0JhY2soKQorICAgICAgICAg
ICAgc3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnVybCwgUXQucmVzb2x2
ZWRVcmwoIi4uL2NvbW1vbi90ZXN0MS5odG1sIikpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZp
ZXcuY2FuR29CYWNrLCBmYWxzZSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0Zv
cndhcmQsIHRydWUpCisgICAgICAgICAgICBjb21wYXJlKGJhY2tJdGVtc0xpc3QuY291bnQsIDAp
CisgICAgICAgICAgICBjb21wYXJlKGZvcndhcmRJdGVtc0xpc3QuY291bnQsIDEpCisgICAgICAg
ICAgICBzcHkuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy5nb0ZvcndhcmQoKQorICAgICAg
ICAgICAgc3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnVybCwgUXQucmVz
b2x2ZWRVcmwoIi4uL2NvbW1vbi90ZXN0Mi5odG1sIikpCisgICAgICAgICAgICBjb21wYXJlKHdl
YlZpZXcuY2FuR29CYWNrLCB0cnVlKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdv
Rm9yd2FyZCwgZmFsc2UpCisgICAgICAgICAgICBjb21wYXJlKGJhY2tJdGVtc0xpc3QuY291bnQs
IDEpCisgICAgICAgICAgICBjb21wYXJlKGZvcndhcmRJdGVtc0xpc3QuY291bnQsIDApCisgICAg
ICAgICAgICBzcHkuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy5sb2FkKFF0LnJlc29sdmVk
VXJsKCIuLi9jb21tb24vamF2YXNjcmlwdC5odG1sIikpCisgICAgICAgICAgICBzcHkud2FpdCgp
CisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudXJsLCBRdC5yZXNvbHZlZFVybCgiLi4vY29t
bW9uL2phdmFzY3JpcHQuaHRtbCIpKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdv
QmFjaywgdHJ1ZSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0ZvcndhcmQsIGZh
bHNlKQorICAgICAgICAgICAgY29tcGFyZShiYWNrSXRlbXNMaXN0LmNvdW50LCAyKQorICAgICAg
ICAgICAgY29tcGFyZShmb3J3YXJkSXRlbXNMaXN0LmNvdW50LCAwKQorICAgICAgICAgICAgc3B5
LmNsZWFyKCkKKyAgICAgICAgICAgIHdlYlZpZXcuZ29CYWNrKDEpCisgICAgICAgICAgICBzcHku
d2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudXJsLCBRdC5yZXNvbHZlZFVybCgi
Li4vY29tbW9uL3Rlc3QxLmh0bWwiKSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5H
b0JhY2ssIGZhbHNlKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdvRm9yd2FyZCwg
dHJ1ZSkKKyAgICAgICAgICAgIGNvbXBhcmUoYmFja0l0ZW1zTGlzdC5jb3VudCwgMCkKKyAgICAg
ICAgICAgIGNvbXBhcmUoZm9yd2FyZEl0ZW1zTGlzdC5jb3VudCwgMikKKyAgICAgICAgICAgIHNw
eS5jbGVhcigpCisgICAgICAgICAgICB3ZWJWaWV3LmdvRm9yd2FyZCgxKQorICAgICAgICAgICAg
c3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnVybCwgUXQucmVzb2x2ZWRV
cmwoIi4uL2NvbW1vbi9qYXZhc2NyaXB0Lmh0bWwiKSkKKyAgICAgICAgICAgIGNvbXBhcmUod2Vi
Vmlldy5jYW5Hb0JhY2ssIHRydWUpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29G
b3J3YXJkLCBmYWxzZSkKKyAgICAgICAgICAgIGNvbXBhcmUoYmFja0l0ZW1zTGlzdC5jb3VudCwg
MikKKyAgICAgICAgICAgIGNvbXBhcmUoZm9yd2FyZEl0ZW1zTGlzdC5jb3VudCwgMCkKKyAgICAg
ICAgICAgIHNweS5jbGVhcigpCisgICAgICAgICAgICB3ZWJWaWV3LmdvQmFjaygpCisgICAgICAg
ICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudXJsLCBRdC5yZXNv
bHZlZFVybCgiLi4vY29tbW9uL3Rlc3QyLmh0bWwiKSkKKyAgICAgICAgICAgIGNvbXBhcmUod2Vi
Vmlldy5jYW5Hb0JhY2ssIHRydWUpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29G
b3J3YXJkLCB0cnVlKQorICAgICAgICAgICAgY29tcGFyZShiYWNrSXRlbXNMaXN0LmNvdW50LCAx
KQorICAgICAgICAgICAgY29tcGFyZShmb3J3YXJkSXRlbXNMaXN0LmNvdW50LCAxKQorICAgICAg
ICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZUxvYWRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZUxvYWRDbGllbnQuY3BwCmluZGV4IGEyNDgwZTM3MGJmOTFlZjcxZGVhZmYzMjA3MjRlMzU3
ZTM4ZTU4ZDQuLjEzYWZiMjE0MDI3YjI5Zjg1Y2RlYjMxZTdlZWFiMmI2ODkyNDdjN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5j
cHAKQEAgLTQ1LDYgKzQ1LDcgQEAgUXRXZWJQYWdlTG9hZENsaWVudDo6UXRXZWJQYWdlTG9hZENs
aWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgUVF1aWNrV2ViVmlldyogd2ViVmkKICAgICBsb2FkQ2xp
ZW50LmRpZENoYW5nZVByb2dyZXNzID0gZGlkQ2hhbmdlUHJvZ3Jlc3M7CiAgICAgbG9hZENsaWVu
dC5kaWRGaW5pc2hQcm9ncmVzcyA9IGRpZEZpbmlzaFByb2dyZXNzOwogICAgIGxvYWRDbGllbnQu
ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUgPSBkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZTsKKyAgICBsb2FkQ2xpZW50LmRpZENoYW5nZUJhY2tGb3J3
YXJkTGlzdCA9IGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdDsKICAgICBXS1BhZ2VTZXRQYWdlTG9h
ZGVyQ2xpZW50KHBhZ2VSZWYsICZsb2FkQ2xpZW50KTsKIH0KIApAQCAtNzcsNiArNzgsMTEgQEAg
dm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JGcmFtZSgpCiAgICAgbV93ZWJWaWV3LT5kX2Z1bmMoKS0+ZGlkRmluaXNoRmlyc3ROb25FbXB0
eUxheW91dCgpOwogfQogCit2b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZENoYW5nZUJhY2tG
b3J3YXJkTGlzdCgpCit7CisgICAgbV93ZWJWaWV3LT5kX2Z1bmMoKS0+ZGlkQ2hhbmdlQmFja0Zv
cndhcmRMaXN0KCk7Cit9CisKIHZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlzcGF0Y2hMb2Fk
U3VjY2VlZGVkKCkKIHsKICAgICBlbWl0IG1fd2ViVmlldy0+bmF2aWdhdGlvblN0YXRlQ2hhbmdl
ZCgpOwpAQCAtMTgyLDMgKzE4OCw4IEBAIHZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyCiAgICAgICAg
IHJldHVybjsKICAgICB0b1F0V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5mbyktPmRpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKCk7CiB9CisKK3ZvaWQgUXRXZWJQYWdlTG9h
ZENsaWVudDo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtUmVmLCBXS0FycmF5UmVmLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAg
IHRvUXRXZWJQYWdlTG9hZENsaWVudChjbGllbnRJbmZvKS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxv
YWRDbGllbnQuaAppbmRleCAwM2YyZjBlZWQzMDEzYTBkNGMxMWRhYjMzMTUwNzczNzhlYWJjNTI3
Li5mYmRiOTJlN2JlNjlkYTVhM2Q3ZDhmM2NiZTY2Mjc4NTNhZDdiMjRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50LmgKQEAgLTQwLDYg
KzQwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZShjb25zdCBRVXJsJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShjb25z
dCBRU3RyaW5nJik7CiAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JG
cmFtZSgpOworICAgIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCk7CiAKICAgICB2b2lk
IGRpc3BhdGNoTG9hZFN1Y2NlZWRlZCgpOwogICAgIHZvaWQgZGlzcGF0Y2hMb2FkRmFpbGVkKFdL
RXJyb3JSZWYpOwpAQCAtNTcsNiArNTgsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRp
ZENoYW5nZVByb2dyZXNzKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAg
c3RhdGljIHZvaWQgZGlkRmluaXNoUHJvZ3Jlc3MoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLCBXS0FycmF5UmVmLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKTsKIAogICAgIFFRdWlja1dlYlZpZXcqIG1fd2ViVmlldzsKICAg
ICBpbnQgbV9sb2FkUHJvZ3Jlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZVByb3h5LmNwcAppbmRleCAwMzYwMTFlMmEyZjljODMzMDgzMzdjNDE1MDVlNGRlNTBl
ZmY0ZGIzLi4zMThhMTk1YmVjMzA5NThjZGQxNzNmODIwMWIxZmUyN2RkZTdmYmZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKQEAgLTI4LDE0
ICsyOCwxNCBAQAogI2luY2x1ZGUgInFxdWlja3dlYnBhZ2VfcC5oIgogI2luY2x1ZGUgInF3ZWJk
b3dubG9hZGl0ZW1fcC5oIgogI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW1fcF9wLmgiCisjaW5j
bHVkZSAicXdlYm5hdmlnYXRpb25oaXN0b3J5X3AuaCIKKyNpbmNsdWRlICJxd2VibmF2aWdhdGlv
bmhpc3RvcnlfcF9wLmgiCiAjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzX3AuaCIKICNpbmNsdWRl
ICJxd2VicHJlZmVyZW5jZXNfcF9wLmgiCiAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAj
aW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRlICJMYXllclRyZWVIb3N0
UHJveHkuaCIKLSNpbmNsdWRlICJxd2toaXN0b3J5LmgiCi0jaW5jbHVkZSAicXdraGlzdG9yeV9w
LmgiCiAjaW5jbHVkZSAiUXREb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJRdFBhZ2VDbGll
bnQuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VFdmVudEhhbmRsZXIuaCIKQEAgLTY2LDcgKzY2LDcg
QEAgUXRXZWJQYWdlUHJveHk6OlF0V2ViUGFnZVByb3h5KFFRdWlja1dlYlBhZ2UqIHFtbFdlYlBh
Z2UsIFFRdWlja1dlYlZpZXcqIHFtbFdlYlYKICAgICAsIG1fbmF2aWdhdG9yUXRPYmplY3RFbmFi
bGVkKGZhbHNlKQogewogICAgIG1fd2ViUGFnZVByb3h5ID0gbV9jb250ZXh0LT5jcmVhdGVXZWJQ
YWdlKHBhZ2VDbGllbnQsIHRvSW1wbChwYWdlR3JvdXBSZWYpKTsKLSAgICBtX2hpc3RvcnkgPSBR
V0tIaXN0b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeSh0aGlzLCBtX3dlYlBhZ2VQcm94eS0+YmFj
a0ZvcndhcmRMaXN0KCkpOworICAgIG1fbmF2aWdhdGlvbkhpc3RvcnkgPSBhZG9wdFB0cihRV2Vi
TmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlOjpjcmVhdGVIaXN0b3J5KHRoaXMsIG1fd2ViUGFnZVBy
b3h5LT5iYWNrRm9yd2FyZExpc3QoKSkpOwogfQogCiB2b2lkIFF0V2ViUGFnZVByb3h5Ojppbml0
KFF0V2ViUGFnZUV2ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyKQpAQCAtNzgsNyArNzgsNiBAQCB2
b2lkIFF0V2ViUGFnZVByb3h5Ojppbml0KFF0V2ViUGFnZUV2ZW50SGFuZGxlciogZXZlbnRIYW5k
bGVyKQogUXRXZWJQYWdlUHJveHk6On5RdFdlYlBhZ2VQcm94eSgpCiB7CiAgICAgbV93ZWJQYWdl
UHJveHktPmNsb3NlKCk7Ci0gICAgZGVsZXRlIG1faGlzdG9yeTsKIH0KIAogdm9pZCBRdFdlYlBh
Z2VQcm94eTo6c2hvd0NvbnRleHRNZW51KFFTaGFyZWRQb2ludGVyPFFNZW51PiBtZW51KQpAQCAt
MjA1LDkgKzIwNCw5IEBAIGJvb2wgUXRXZWJQYWdlUHJveHk6OmNhbkdvQmFjaygpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fd2ViUGFnZVByb3h5LT5jYW5Hb0JhY2soKTsKIH0KIAotdm9pZCBRdFdlYlBh
Z2VQcm94eTo6Z29CYWNrKCkKK3ZvaWQgUXRXZWJQYWdlUHJveHk6OmdvQmFjayhpbnQgaW5kZXgp
CiB7Ci0gICAgbV93ZWJQYWdlUHJveHktPmdvQmFjaygpOworICAgIG1fbmF2aWdhdGlvbkhpc3Rv
cnktPmQtPmdvQmFja1RvKGluZGV4KTsKIH0KIAogYm9vbCBRdFdlYlBhZ2VQcm94eTo6Y2FuR29G
b3J3YXJkKCkgY29uc3QKQEAgLTIxNSw5ICsyMTQsOSBAQCBib29sIFF0V2ViUGFnZVByb3h5Ojpj
YW5Hb0ZvcndhcmQoKSBjb25zdAogICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS0+Y2FuR29Gb3J3
YXJkKCk7CiB9CiAKLXZvaWQgUXRXZWJQYWdlUHJveHk6OmdvRm9yd2FyZCgpCit2b2lkIFF0V2Vi
UGFnZVByb3h5Ojpnb0ZvcndhcmQoaW50IGluZGV4KQogewotICAgIG1fd2ViUGFnZVByb3h5LT5n
b0ZvcndhcmQoKTsKKyAgICBtX25hdmlnYXRpb25IaXN0b3J5LT5kLT5nb0ZvcndhcmRUbyhpbmRl
eCk7CiB9CiAKIGJvb2wgUXRXZWJQYWdlUHJveHk6OmxvYWRpbmcoKSBjb25zdApAQCAtMzU4LDkg
KzM1Nyw5IEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMo
cXJlYWwgcGFnZVpvb21GYWN0b3IsIHFyZWFsIHRleHRaCiAgICAgV0tQYWdlU2V0UGFnZUFuZFRl
eHRab29tRmFjdG9ycyhwYWdlUmVmKCksIHBhZ2Vab29tRmFjdG9yLCB0ZXh0Wm9vbUZhY3Rvcik7
CiB9CiAKLVFXS0hpc3RvcnkqIFF0V2ViUGFnZVByb3h5OjpoaXN0b3J5KCkgY29uc3QKK1FXZWJO
YXZpZ2F0aW9uSGlzdG9yeSogUXRXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25IaXN0b3J5KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5OworICAgIHJldHVybiBtX25hdmlnYXRpb25IaXN0
b3J5LmdldCgpOwogfQogCiB2b2lkIFF0V2ViUGFnZVByb3h5OjpzdGFydERyYWcoY29uc3QgV2Vi
Q29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJh
Z0ltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaApp
bmRleCBlZDQ4N2FhMDA2ZmFhMGRmMjA1Y2M5NzQ1MmNjODAzMDNlZjViZTUxLi5mMzAyOThjZmJm
Mjg2MmIxNjZlMmM3M2I5Y2YxN2FiZmMzMDlkOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaApAQCAtNDAsOCArNDAsOCBAQCBjbGFzcyBRUXVpY2tX
ZWJWaWV3OwogY2xhc3MgUXRXZWJFcnJvcjsKIGNsYXNzIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjsK
IGNsYXNzIFFXZWJEb3dubG9hZEl0ZW07CitjbGFzcyBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk7CiBj
bGFzcyBRV2ViUHJlZmVyZW5jZXM7Ci1jbGFzcyBRV0tIaXN0b3J5OwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIFF0V2ViQ29udGV4dDsKQEAgLTk3LDkgKzk3LDkgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3QgU3RyaW5n
Jik7CiAKICAgICBib29sIGNhbkdvQmFjaygpIGNvbnN0OwotICAgIHZvaWQgZ29CYWNrKCk7Cisg
ICAgdm9pZCBnb0JhY2soaW50IGluZGV4ID0gMCk7CiAgICAgYm9vbCBjYW5Hb0ZvcndhcmQoKSBj
b25zdDsKLSAgICB2b2lkIGdvRm9yd2FyZCgpOworICAgIHZvaWQgZ29Gb3J3YXJkKGludCBpbmRl
eCA9IDApOwogICAgIGJvb2wgbG9hZGluZygpIGNvbnN0OwogICAgIHZvaWQgc3RvcCgpOwogICAg
IGJvb2wgY2FuUmVsb2FkKCkgY29uc3Q7CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVuZGVyVG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQpOwogICAgIHZvaWQgcHVyZ2VHTFJlc291cmNlcygpOwogCi0gICAg
UVdLSGlzdG9yeSogaGlzdG9yeSgpIGNvbnN0OworICAgIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeSog
bmF2aWdhdGlvbkhpc3RvcnkoKSBjb25zdDsKIAogICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgZGF0YSkKICAgICB7CkBAIC0xNzIs
NyArMTcyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVmUHRyPFF0V2ViQ29udGV4dD4g
bV9jb250ZXh0OwotICAgIFFXS0hpc3RvcnkqIG1faGlzdG9yeTsKKyAgICBPd25QdHI8UVdlYk5h
dmlnYXRpb25IaXN0b3J5PiBtX25hdmlnYXRpb25IaXN0b3J5OwogCiAgICAgbXV0YWJsZSBPd25Q
dHI8UVdlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVuY2VzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvcXdraGlzdG9yeS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZj
MTQyNWYwZjA3NTBiZDY2MWQ3ZGQxYWM4MWZlMWE4ZTg0YTVkNDguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L3F3a2hpc3RvcnkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgSnVoYSBTYXZvbGFpbmVuIChqdWhhLnNhdm9sYWluZW5Ad2VlZ28u
ZmkpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0q
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAicXdraGlzdG9yeS5oIgotCi0jaW5j
bHVkZSA8UVNoYXJlZERhdGE+Ci0jaW5jbHVkZSA8UVN0cmluZz4KLSNpbmNsdWRlIDxRVXJsPgot
I2luY2x1ZGUgIlF0V2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSAicXdraGlzdG9yeV9wLmgiCi0j
aW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCi0jaW5jbHVkZSA8V2ViS2l0Mi9XS0FycmF5
Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgotI2luY2x1ZGUgIldLQmFja0Zv
cndhcmRMaXN0LmgiCi0jaW5jbHVkZSAiV0tTdHJpbmdRdC5oIgotI2luY2x1ZGUgIldLVVJMLmgi
Ci0jaW5jbHVkZSAiV0tVUkxRdC5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1RV0tI
aXN0b3J5SXRlbVByaXZhdGU6OlFXS0hpc3RvcnlJdGVtUHJpdmF0ZShXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1SZWYgbGlzdEl0ZW0pCi0gICAgOiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0obGlzdEl0ZW0p
Ci17Ci19Ci0KLVFXS0hpc3RvcnlJdGVtUHJpdmF0ZTo6flFXS0hpc3RvcnlJdGVtUHJpdmF0ZSgp
Ci17Ci19Ci0KLVFXS0hpc3RvcnlJdGVtOjpRV0tIaXN0b3J5SXRlbShjb25zdCBRV0tIaXN0b3J5
SXRlbSYgb3RoZXIpCi0gICAgOiBkKG90aGVyLmQpIAotewotfQotCi1RV0tIaXN0b3J5SXRlbSYg
UVdLSGlzdG9yeUl0ZW06OlFXS0hpc3RvcnlJdGVtOjpvcGVyYXRvcj0oY29uc3QgUVdLSGlzdG9y
eUl0ZW0mIG90aGVyKSAKLXsgCi0gICAgZCA9IG90aGVyLmQ7Ci0gICAgcmV0dXJuICp0aGlzOyAK
LX0KLQotUVdLSGlzdG9yeUl0ZW06OlFXS0hpc3RvcnlJdGVtKFdLQmFja0ZvcndhcmRMaXN0SXRl
bVJlZiBpdGVtKQotICAgIDogZChuZXcgUVdLSGlzdG9yeUl0ZW1Qcml2YXRlKGl0ZW0pKQotewot
fQotCi1RV0tIaXN0b3J5SXRlbTo6flFXS0hpc3RvcnlJdGVtKCkKLXsKLX0KLQotUVN0cmluZyBR
V0tIaXN0b3J5SXRlbTo6dGl0bGUoKSBjb25zdAotewotICAgIGlmICghZC0+bV9iYWNrRm9yd2Fy
ZExpc3RJdGVtKQotICAgICAgICByZXR1cm4gUVN0cmluZygpOwotICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiB0aXRsZShBZG9wdFdLLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGl0bGUo
ZC0+bV9iYWNrRm9yd2FyZExpc3RJdGVtLmdldCgpKSk7Ci0gICAgcmV0dXJuIFdLU3RyaW5nQ29w
eVFTdHJpbmcodGl0bGUuZ2V0KCkpOwotfQotCi1RVXJsIFFXS0hpc3RvcnlJdGVtOjp1cmwoKSBj
b25zdAotewotICAgIGlmICghZC0+bV9iYWNrRm9yd2FyZExpc3RJdGVtKQotICAgICAgICByZXR1
cm4gUVVybCgpOwotICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwoQWRvcHRXSywgV0tCYWNr
Rm9yd2FyZExpc3RJdGVtQ29weVVSTChkLT5tX2JhY2tGb3J3YXJkTGlzdEl0ZW0uZ2V0KCkpKTsK
LSAgICByZXR1cm4gV0tVUkxDb3B5UVVybCh1cmwuZ2V0KCkpOwotfQotCi1RV0tIaXN0b3J5UHJp
dmF0ZTo6UVdLSGlzdG9yeVByaXZhdGUoUXRXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYktpdDo6V2Vi
QmFja0ZvcndhcmRMaXN0KiBsaXN0KQotICAgIDogbV9wYWdlKHBhZ2UpCi0gICAgLCBtX2JhY2tG
b3J3YXJkTGlzdChsaXN0KQotewotfQotCi1RV0tIaXN0b3J5KiBRV0tIaXN0b3J5UHJpdmF0ZTo6
Y3JlYXRlSGlzdG9yeShRdFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViS2l0OjpXZWJCYWNrRm9yd2Fy
ZExpc3QqIGxpc3QpCi17Ci0gICAgUVdLSGlzdG9yeSogaGlzdG9yeSA9IG5ldyBRV0tIaXN0b3J5
KCk7Ci0gICAgaGlzdG9yeS0+ZCA9IG5ldyBRV0tIaXN0b3J5UHJpdmF0ZShwYWdlLCBsaXN0KTsK
LSAgICByZXR1cm4gaGlzdG9yeTsKLX0KLQotUVdLSGlzdG9yeVByaXZhdGU6On5RV0tIaXN0b3J5
UHJpdmF0ZSgpCi17Ci19Ci0KLVFXS0hpc3Rvcnk6OlFXS0hpc3RvcnkoKQotewotfQotCi1RV0tI
aXN0b3J5Ojp+UVdLSGlzdG9yeSgpCi17Ci0gICAgZGVsZXRlIGQ7Ci19Ci0KLWludCBRV0tIaXN0
b3J5OjpiYWNrTGlzdENvdW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gV0tCYWNrRm9yd2FyZExp
c3RHZXRCYWNrTGlzdENvdW50KHRvQVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0KSk7Ci19Ci0KLWlu
dCBRV0tIaXN0b3J5Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gV0tC
YWNrRm9yd2FyZExpc3RHZXRGb3J3YXJkTGlzdENvdW50KHRvQVBJKGQtPm1fYmFja0ZvcndhcmRM
aXN0KSk7Ci19Ci0KLWludCBRV0tIaXN0b3J5Ojpjb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGJhY2tMaXN0Q291bnQoKSArIGZvcndhcmRMaXN0Q291bnQoKTsKLX0KLQotUVdLSGlzdG9yeUl0
ZW0gUVdLSGlzdG9yeTo6Y3VycmVudEl0ZW0oKSBjb25zdAotewotICAgIFdLUmV0YWluUHRyPFdL
QmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gaXRlbVJlZiA9IFdLQmFja0ZvcndhcmRMaXN0R2V0Q3Vy
cmVudEl0ZW0odG9BUEkoZC0+bV9iYWNrRm9yd2FyZExpc3QpKTsKLSAgICBRV0tIaXN0b3J5SXRl
bSBpdGVtKGl0ZW1SZWYuZ2V0KCkpOwotICAgIHJldHVybiBpdGVtOwotfQotCi1RV0tIaXN0b3J5
SXRlbSBRV0tIaXN0b3J5OjpiYWNrSXRlbSgpIGNvbnN0Ci17Ci0gICAgV0tSZXRhaW5QdHI8V0tC
YWNrRm9yd2FyZExpc3RJdGVtUmVmPiBpdGVtUmVmID0gV0tCYWNrRm9yd2FyZExpc3RHZXRCYWNr
SXRlbSh0b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCkpOwotICAgIFFXS0hpc3RvcnlJdGVtIGl0
ZW0oaXRlbVJlZi5nZXQoKSk7Ci0gICAgcmV0dXJuIGl0ZW07Ci19Ci0KLVFXS0hpc3RvcnlJdGVt
IFFXS0hpc3Rvcnk6OmZvcndhcmRJdGVtKCkgY29uc3QKLXsKLSAgICBXS1JldGFpblB0cjxXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1SZWY+IGl0ZW1SZWYgPSBXS0JhY2tGb3J3YXJkTGlzdEdldEZvcndh
cmRJdGVtKHRvQVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0KSk7Ci0gICAgUVdLSGlzdG9yeUl0ZW0g
aXRlbShpdGVtUmVmLmdldCgpKTsKLSAgICByZXR1cm4gaXRlbTsKLX0KLQotUVdLSGlzdG9yeUl0
ZW0gUVdLSGlzdG9yeTo6aXRlbUF0KGludCBpbmRleCkgY29uc3QKLXsKLSAgICBXS1JldGFpblB0
cjxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+IGl0ZW1SZWYgPSBXS0JhY2tGb3J3YXJkTGlzdEdl
dEl0ZW1BdEluZGV4KHRvQVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0KSwgaW5kZXgpOwotICAgIFFX
S0hpc3RvcnlJdGVtIGl0ZW0oaXRlbVJlZi5nZXQoKSk7Ci0gICAgcmV0dXJuIGl0ZW07Ci19Ci0K
LXZvaWQgUVdLSGlzdG9yeTo6Z29Ub0l0ZW1BdChpbnQgaW5kZXgpIGNvbnN0Ci17Ci0gICAgV0tS
ZXRhaW5QdHI8V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBpdGVtUmVmID0gV0tCYWNrRm9yd2Fy
ZExpc3RHZXRJdGVtQXRJbmRleCh0b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCksIGluZGV4KTsK
LSAgICBpZiAoaXRlbVJlZiAmJiBkLT5tX3BhZ2UpIHsKLSAgICAgICAgUVdLSGlzdG9yeUl0ZW0g
aXRlbShpdGVtUmVmLmdldCgpKTsKLSAgICAgICAgV0tQYWdlR29Ub0JhY2tGb3J3YXJkTGlzdEl0
ZW0oZC0+bV9wYWdlLT5wYWdlUmVmKCksIGl0ZW0uZC0+bV9iYWNrRm9yd2FyZExpc3RJdGVtLmdl
dCgpKTsKLSAgICB9Ci19Ci0KLVFMaXN0PFFXS0hpc3RvcnlJdGVtPiBRV0tIaXN0b3J5OjpiYWNr
SXRlbXMoaW50IG1heEl0ZW1zKSBjb25zdAotewotICAgIFdLQXJyYXlSZWYgYXJyYXlSZWYgPSBX
S0JhY2tGb3J3YXJkTGlzdENvcHlCYWNrTGlzdFdpdGhMaW1pdCh0b0FQSShkLT5tX2JhY2tGb3J3
YXJkTGlzdCksIG1heEl0ZW1zKTsKLSAgICBpbnQgc2l6ZSA9IFdLQXJyYXlHZXRTaXplKGFycmF5
UmVmKTsKLSAgICBRTGlzdDxRV0tIaXN0b3J5SXRlbT4gaXRlbUxpc3Q7Ci0gICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgV0tUeXBlUmVmIHdrSGlzdG9yeUl0ZW0g
PSBXS0FycmF5R2V0SXRlbUF0SW5kZXgoYXJyYXlSZWYsIGkpOwotICAgICAgICBXS0JhY2tGb3J3
YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZiA9IHN0YXRpY19jYXN0PFdLQmFja0ZvcndhcmRMaXN0SXRl
bVJlZj4od2tIaXN0b3J5SXRlbSk7Ci0gICAgICAgIFFXS0hpc3RvcnlJdGVtIGl0ZW0oaXRlbVJl
Zik7Ci0gICAgICAgIGl0ZW1MaXN0LmFwcGVuZChpdGVtKTsKLSAgICB9Ci0gICAgcmV0dXJuIGl0
ZW1MaXN0OwotfQotCi1RTGlzdDxRV0tIaXN0b3J5SXRlbT4gUVdLSGlzdG9yeTo6Zm9yd2FyZEl0
ZW1zKGludCBtYXhJdGVtcykgY29uc3QKLXsKLSAgICBXS0FycmF5UmVmIGFycmF5UmVmID0gV0tC
YWNrRm9yd2FyZExpc3RDb3B5Rm9yd2FyZExpc3RXaXRoTGltaXQodG9BUEkoZC0+bV9iYWNrRm9y
d2FyZExpc3QpLCBtYXhJdGVtcyk7Ci0gICAgaW50IHNpemUgPSBXS0FycmF5R2V0U2l6ZShhcnJh
eVJlZik7Ci0gICAgUUxpc3Q8UVdLSGlzdG9yeUl0ZW0+IGl0ZW1MaXN0OwotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIFdLVHlwZVJlZiB3a0hpc3RvcnlJdGVt
ID0gV0tBcnJheUdldEl0ZW1BdEluZGV4KGFycmF5UmVmLCBpKTsKLSAgICAgICAgV0tCYWNrRm9y
d2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYgPSBzdGF0aWNfY2FzdDxXS0JhY2tGb3J3YXJkTGlzdEl0
ZW1SZWY+KHdrSGlzdG9yeUl0ZW0pOwotICAgICAgICBRV0tIaXN0b3J5SXRlbSBpdGVtKGl0ZW1S
ZWYpOwotICAgICAgICBpdGVtTGlzdC5hcHBlbmQoaXRlbSk7Ci0gICAgfQotICAgIHJldHVybiBp
dGVtTGlzdDsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3
a2hpc3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwMzUxM2ZkYTVhY2MyOTlkZDZiNDNkNTBjNjBl
MGU0MzExOTI0MDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaAorKysgL2Rldi9udWxs
CkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSnVoYSBTYXZvbGFp
bmVuIChqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmkpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaWZuZGVmIHF3a2hpc3RvcnlfaAotI2Rl
ZmluZSBxd2toaXN0b3J5X2gKLQotI2luY2x1ZGUgIldlYktpdDIvV0tCYWNrRm9yd2FyZExpc3RJ
dGVtLmgiCi0jaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgotI2luY2x1ZGUgPFFPYmplY3Q+Ci0j
aW5jbHVkZSA8UVNoYXJlZERhdGE+Ci0KLWNsYXNzIFFXS0hpc3RvcnlQcml2YXRlOwotY2xhc3Mg
UVdLSGlzdG9yeUl0ZW1Qcml2YXRlOwotY2xhc3MgUVVybDsKLWNsYXNzIFFTdHJpbmc7Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OwotfQotCi1jbGFzcyBR
V0VCS0lUX0VYUE9SVCBRV0tIaXN0b3J5SXRlbSB7Ci1wdWJsaWM6Ci0gICAgUVdLSGlzdG9yeUl0
ZW0oY29uc3QgUVdLSGlzdG9yeUl0ZW0mIG90aGVyKTsKLSAgICBRV0tIaXN0b3J5SXRlbSAmb3Bl
cmF0b3I9KGNvbnN0IFFXS0hpc3RvcnlJdGVtJiBvdGhlcik7Ci0KLSAgICB+UVdLSGlzdG9yeUl0
ZW0oKTsKLSAgICBRU3RyaW5nIHRpdGxlKCkgY29uc3Q7Ci0gICAgUVVybCB1cmwoKSBjb25zdDsK
LQotcHJpdmF0ZToKLSAgICBRV0tIaXN0b3J5SXRlbShXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYp
OwotCi0gICAgUUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcjxRV0tIaXN0b3J5SXRlbVByaXZh
dGU+IGQ7Ci0KLSAgICBmcmllbmQgY2xhc3MgUVdLSGlzdG9yeTsKLSAgICBmcmllbmQgY2xhc3Mg
UVdLSGlzdG9yeUl0ZW1Qcml2YXRlOwotfTsKLQotY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdLSGlz
dG9yeSA6IHB1YmxpYyBRT2JqZWN0IHsKLSAgICBRX09CSkVDVAotcHVibGljOgotICAgIGludCBi
YWNrTGlzdENvdW50KCkgY29uc3Q7Ci0gICAgaW50IGZvcndhcmRMaXN0Q291bnQoKSBjb25zdDsK
LSAgICBpbnQgY291bnQoKSBjb25zdDsKLSAgICBRV0tIaXN0b3J5SXRlbSBjdXJyZW50SXRlbSgp
IGNvbnN0OwotICAgIFFXS0hpc3RvcnlJdGVtIGJhY2tJdGVtKCkgY29uc3Q7Ci0gICAgUVdLSGlz
dG9yeUl0ZW0gZm9yd2FyZEl0ZW0oKSBjb25zdDsKLSAgICBRV0tIaXN0b3J5SXRlbSBpdGVtQXQo
aW50IGluZGV4KSBjb25zdDsKLSAgICB2b2lkIGdvVG9JdGVtQXQoaW50IGluZGV4KSBjb25zdDsK
LSAgICBRTGlzdDxRV0tIaXN0b3J5SXRlbT4gYmFja0l0ZW1zKGludCBtYXhJdGVtcykgY29uc3Q7
Ci0gICAgUUxpc3Q8UVdLSGlzdG9yeUl0ZW0+IGZvcndhcmRJdGVtcyhpbnQgbWF4SXRlbXMpIGNv
bnN0OwotCi1wcml2YXRlOgotICAgIFFXS0hpc3RvcnkoKTsKLSAgICB+UVdLSGlzdG9yeSgpOwot
Ci0gICAgUVdLSGlzdG9yeVByaXZhdGUqIGQ7Ci0gICAgZnJpZW5kIGNsYXNzIFFXS0hpc3RvcnlQ
cml2YXRlOwotICAgIGZyaWVuZCBjbGFzcyBRdFdlYlBhZ2VQcm94eTsKLX07Ci0jZW5kaWYgLyog
cXdraGlzdG9yeV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
cXdraGlzdG9yeV9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdraGlzdG9yeV9w
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlZjE0M2UxNzU4ODA5NzI3OGZlOTZi
OTEwYzQ1ZTc5MjI3MTE2N2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnlfcC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBKdWhh
IFNhdm9sYWluZW4gKGp1aGEuc2F2b2xhaW5lbkB3ZWVnby5maSkKLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLSNpZm5kZWYgcXdraGlzdG9y
eV9wX2gKLSNkZWZpbmUgcXdraGlzdG9yeV9wX2gKLQotI2luY2x1ZGUgPFFTaGFyZWREYXRhPgot
I2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgot
I2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKLX0K
LQotY2xhc3MgUVdLSGlzdG9yeTsKLWNsYXNzIFF0V2ViUGFnZVByb3h5OwotCi1jbGFzcyBRV0VC
S0lUX0VYUE9SVCBRV0tIaXN0b3J5SXRlbVByaXZhdGUgOiBwdWJsaWMgUVNoYXJlZERhdGEgewot
cHVibGljOgotICAgICAgIH5RV0tIaXN0b3J5SXRlbVByaXZhdGUoKTsKLXByaXZhdGU6Ci0gICAg
UVdLSGlzdG9yeUl0ZW1Qcml2YXRlKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBsaXN0SXRlbSk7
Ci0gICAgV0tSZXRhaW5QdHI8V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBtX2JhY2tGb3J3YXJk
TGlzdEl0ZW07Ci0KLSAgICBmcmllbmQgY2xhc3MgUVdLSGlzdG9yeTsKLSAgICBmcmllbmQgY2xh
c3MgUVdLSGlzdG9yeUl0ZW07Ci19OwotCi1jbGFzcyBRV0VCS0lUX0VYUE9SVCBRV0tIaXN0b3J5
UHJpdmF0ZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFFXS0hpc3RvcnkqIGNyZWF0ZUhpc3Rvcnko
UXRXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdCopOwotCi1wcml2YXRl
OgotICAgIFFXS0hpc3RvcnlQcml2YXRlKFF0V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJCYWNr
Rm9yd2FyZExpc3QqKTsKLSAgICB+UVdLSGlzdG9yeVByaXZhdGUoKTsKLQotICAgIFF0V2ViUGFn
ZVByb3h5KiBtX3BhZ2U7Ci0gICAgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqIG1fYmFja0Zv
cndhcmRMaXN0OwotCi0gICAgZnJpZW5kIGNsYXNzIFFXS0hpc3Rvcnk7Ci19OwotCi0jZW5kaWYg
LyogcXdraGlzdG9yeV9wX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9xdHdlYmtpdC1leHBvcnQu
bWFwIGIvU291cmNlL3F0d2Via2l0LWV4cG9ydC5tYXAKaW5kZXggYTU0NmNiMmZmZTQ5YjVjNjhh
OTBjNjlhNTA2ZjlmYjg0MTk5NmQzYi4uODliYjlkYjUzM2ZlMjk0OTI4MjlmYTY5ZGNiZGI1YzVh
MDhhMTU5YiAxMDA2NDQKLS0tIGEvU291cmNlL3F0d2Via2l0LWV4cG9ydC5tYXAKKysrIGIvU291
cmNlL3F0d2Via2l0LWV4cG9ydC5tYXAKQEAgLTExOCw2ICsxMTgsMTIgQEAgcXdrXzEuMCB7CiAg
ICAgICAgICpRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOwogICAgICAgICBub24tdmlydHVhbD90
aHVuaz90bz9RUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsKjsKICAgICAgICAgUVF1aWNrV2ViVmll
d0V4cGVyaW1lbnRhbDo6KjsKKyAgICAgICAgKlFXZWJOYXZpZ2F0aW9uSGlzdG9yeTsKKyAgICAg
ICAgbm9uLXZpcnR1YWw/dGh1bms/dG8/UVdlYk5hdmlnYXRpb25IaXN0b3J5KjsKKyAgICAgICAg
UVdlYk5hdmlnYXRpb25IaXN0b3J5OjoqOworICAgICAgICAqUVdlYk5hdmlnYXRpb25MaXN0TW9k
ZWw7CisgICAgICAgIG5vbi12aXJ0dWFsP3RodW5rP3RvP1FXZWJOYXZpZ2F0aW9uTGlzdE1vZGVs
KjsKKyAgICAgICAgUVdlYk5hdmlnYXRpb25MaXN0TW9kZWw6Oio7CiAgICAgICAgICpRV2ViUHJl
ZmVyZW5jZXM7CiAgICAgICAgIG5vbi12aXJ0dWFsP3RodW5rP3RvP1FXZWJQcmVmZXJlbmNlcyo7
CiAgICAgICAgIFFXZWJQcmVmZXJlbmNlczo6KjsKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0No
YW5nZUxvZwppbmRleCA1MTJmNWZjNDRlNzY3ZDBkYTkwZmM4NjcxODM1MTBkNjY5ZjUwNTM5Li5k
MjQwMDhiMjVlNzA3ZTU4YjkwY2ZhZTA4ODliYzNjYmMzOTAxMmQ4IDEwMDY0NAotLS0gYS9DaGFu
Z2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTItMDkgIEFsZXhp
cyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtX
SzJdIEhpc3RvcnkgaXMgbm90IGFjY2Vzc2libGUgaW4gUU1MLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIG5ldyBRV2ViTmF2aWdhdGlvbkhp
c3RvcnkgaW4gdGhlIG1hcCBmaWxlLgorCisgICAgICAgICogU291cmNlL3F0d2Via2l0LWV4cG9y
dC5tYXA6CisKIDIwMTEtMTItMDkgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBjb2xsYWJvcmEuY28u
dWs+CiAKICAgICAgICAgW0dUS10gSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBBY2NlbGVyYXRl
ZCBDb21wb3NpdGluZyB1c2luZyBDbHV0dGVyCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118616</attachid>
            <date>2011-12-09 12:46:57 -0800</date>
            <delta_ts>2011-12-12 07:24:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73016-20111209144513.patch</filename>
            <type>text/plain</type>
            <size>48011</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGUwYThkN2NjYTg2
MWM1MWEyYWJiNDBjMzVlMjAxMjA0OTU1YTE5NzQuLjA0ZThmZjk5MDdlMGE0NTQxNTM1MGY5ZTZl
MTQ3YTFmZDM5ZDNmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTIt
MDkgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAg
ICAgW1F0XVtXSzJdIEhpc3RvcnkgaXMgbm90IGFjY2Vzc2libGUgaW4gUU1MLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWdpc3RlciBRV2ViTmF2aWdh
dGlvbkhpc3RvcnkgYW5kIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsIGluIHRoZSBRTUwgcGx1Z2lu
LgorCisgICAgICAgICogZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3BsdWdpbi5jcHA6CisgICAg
ICAgIChXZWJLaXRRbWxQbHVnaW46OnJlZ2lzdGVyVHlwZXMpOgorCiAyMDExLTEyLTA4ICBQaWVy
cmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgogCiAgICAgICAgIERyb3AgRU5BQkxF
X05PX0xJU1RCT1hfUkVOREVSSU5HLCBhbmQgbWFrZSBpdCBhIHJ1bnRpbWUgZGVjaXNpb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggOWU3ZjA4NTM5ZGRlMWE0YjM5MDNiNjg3ZTlmNGI5MDBjYjVkZDZjMi4uOGQy
MWJkMmE0NWIxMDcyYzQ5OTg4NGM4YTY3MmZkMzBiZWY0NTUyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU0IEBACisyMDExLTEyLTA5ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVu
Ym9zc2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBIaXN0b3J5IGlzIG5vdCBhY2Nlc3NpYmxl
IGluIFFNTC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczMDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIHRoZSBvbGQgcXdraGlzdG9yeSBhbmQgY3JlYXRlIFFXZWJOYXZpZ2F0aW9uSGlzdG9y
eSB3aGljaCBpcyBRTUwKKyAgICAgICAgZnJpZW5kbHkgd2l0aCBkYXRhIG1vZGVscyB5b3UgY2Fu
IHBsdWcgdG8gYSB2aWV3IGluIFFNTC4KKworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dl
YlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoUVF1aWNr
V2ViVmlld0V4cGVyaW1lbnRhbDo6bmF2aWdhdGlvbkhpc3RvcnkpOgorICAgICAgICAoUVF1aWNr
V2ViVmlldzo6Z29CYWNrKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6OmdvRm9yd2FyZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFFXZWJO
YXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZTo6UVdlYk5hdmlnYXRpb25MaXN0TW9kZWxQcml2YXRl
KToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZTo6Y3JlYXRlV2ViTmF2
aWdhdGlvbk1vZGVsKToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGU6OlFX
ZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGUpOgorICAgICAgICAoUVdlYk5hdmlnYXRpb25IaXN0
b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeSk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkhpc3Rv
cnlQcml2YXRlOjpyZXNldCk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRl
Ojpnb0JhY2tUbyk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlOjpnb0Zv
cndhcmRUbyk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbDo6UVdlYk5hdmlnYXRp
b25MaXN0TW9kZWwpOgorICAgICAgICAoUVdlYk5hdmlnYXRpb25MaXN0TW9kZWw6On5RV2ViTmF2
aWdhdGlvbkxpc3RNb2RlbCk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbDo6cm93
Q291bnQpOgorICAgICAgICAoUVdlYk5hdmlnYXRpb25MaXN0TW9kZWw6OmRhdGEpOgorICAgICAg
ICAoUVdlYk5hdmlnYXRpb25IaXN0b3J5OjpRV2ViTmF2aWdhdGlvbkhpc3RvcnkpOgorICAgICAg
ICAoUVdlYk5hdmlnYXRpb25IaXN0b3J5Ojp+UVdlYk5hdmlnYXRpb25IaXN0b3J5KToKKyAgICAg
ICAgKFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6YmFja0l0ZW1zKToKKyAgICAgICAgKFFXZWJOYXZp
Z2F0aW9uSGlzdG9yeTo6Zm9yd2FyZEl0ZW1zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfcC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnlfcC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfbmF2aWdhdGlvbkhpc3RvcnkucW1sOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5jcHA6Cisg
ICAgICAgIChRdFdlYlBhZ2VMb2FkQ2xpZW50OjpRdFdlYlBhZ2VMb2FkQ2xpZW50KToKKyAgICAg
ICAgKFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OlF0
V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5Ojp+UXRXZWJQYWdlUHJveHkp
OgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmdvQmFjayk6CisgICAgICAgIChRdFdlYlBhZ2VQ
cm94eTo6Z29Gb3J3YXJkKToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uSGlz
dG9yeSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9xdC9xd2toaXN0b3J5Lmg6IFJlbW92ZWQuCisKIDIwMTEtMTItMDggIEpvY2VseW4gVHVy
Y290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIFVwZGF0
ZSBXZWJHcmFwaGljTGF5ZXIncyBjaGlsZCBjb250ZW50IHNjYWxlIGluIGFsbCBjaGlsZCBiaW5k
aW5nIG1ldGhvZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvZXhw
ZXJpbWVudGFsL3BsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL2V4cGVy
aW1lbnRhbC9wbHVnaW4uY3BwCmluZGV4IDg2MzEyZTEwNTkzY2Y4MWU5NGMyNDgxNzk4ZThhZmEx
ZTAwZmY0MGUuLjlhYmE3NmE4NzUzNmJlNTM5ZDQzZGZhNDE2MjFjNjRkMzU4NzNhNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3BsdWdpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9leHBlcmltZW50YWwvcGx1Z2lu
LmNwcApAQCAtMjEsNiArMjEsOCBAQAogI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcC5oIgogI2lu
Y2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW1fcC5oIgogCisjaW5jbHVkZSAicXdlYm5hdmlnYXRpb25o
aXN0b3J5X3AuaCIKKwogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZlLmg+CiAj
aW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xZGVjbGFyYXRpdmVleHRlbnNpb25wbHVnaW4uaD4KIApA
QCAtNDIsNiArNDQsOCBAQCBwdWJsaWM6CiAgICAgICAgIFFfQVNTRVJUKFFMYXRpbjFTdHJpbmco
dXJpKSA9PSBRTGF0aW4xU3RyaW5nKCJRdFdlYktpdC5leHBlcmltZW50YWwiKSk7CiAKICAgICAg
ICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVdlYkRvd25sb2FkSXRlbT4odXJpLCAzLCAw
LCAiRG93bmxvYWRJdGVtIiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5z
dGFuY2Ugb2YgRG93bmxvYWRJdGVtIikpOworICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxl
VHlwZTxRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbD4odXJpLCAzLCAwLCAiV2ViTmF2aWdhdGlvbkxp
c3RNb2RlbCIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9m
IE5hdmlnYXRpb25MaXN0TW9kZWwiKSk7CisgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVU
eXBlPFFXZWJOYXZpZ2F0aW9uSGlzdG9yeT4odXJpLCAzLCAwLCAiUGFnZUhpc3RvcnkiLCBRT2Jq
ZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBOYXZpZ2F0aW9uSGlz
dG9yeSIpKTsKICAgICAgICAgcW1sUmVnaXN0ZXJFeHRlbmRlZFR5cGU8UVF1aWNrV2ViVmlldywg
UVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbEV4dGVuc2lvbj4odXJpLCAzLCAwLCAiV2ViVmlldyIp
OwogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRUXVpY2tXZWJWaWV3RXhwZXJp
bWVudGFsPih1cmksIDMsIDAsICJRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsIiwKICAgICAgICAg
ICAgIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIFFRdWlj
a1dlYlZpZXdFeHBlcmltZW50YWwiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCBhNWQ0YzZkNjU2ZTVlYzhk
M2Y2MmI1OTAwNzNmMWZkNjNjYTU1MzZhLi5kZWFhMjk2M2I1OWExZDY2NmQyYTUzMTkxZjI0Mjhm
ZTUzMTI0ZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTE3OSw2ICsxNzksOCBAQCBIRUFERVJTICs9IFwK
ICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdF9wLmggXAogICAgIFVJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2VicGFnZV9wX3AuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlv
bmhpc3RvcnlfcC5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uaGlzdG9y
eV9wX3AuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaCBcCiAgICAg
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIFwKICAgICBVSVByb2Nlc3MvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIFwKQEAgLTI2Miw4ICsy
NjQsNiBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUG9saWN5Q2xp
ZW50LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oIFwKICAgICBVSVByb2Nl
c3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuaCBcCi0gICAgVUlQcm9jZXNzL3F0L3F3a2hpc3Rvcnku
aCBcCi0gICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnlfcC5oIFwKICAgICBVSVByb2Nlc3MvcXQv
UXRTR1VwZGF0ZVF1ZXVlLmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFNHVGlsZU5vZGUuaCBcCiAg
ICAgVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIFwKQEAgLTQ5Niw2
ICs0OTYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9h
ZGl0ZW0uY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdC5j
cHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHAgXAorICAgIFVJUHJv
Y2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVy
ZW5jZXMuY3BwIFwKICAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eS5jcHAgXApAQCAtNTgzLDcgKzU4NCw2IEBAIFNPVVJDRVMgKz0gXAogICAg
IFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQb2xpY3lDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGll
bnQuY3BwIFwKLSAgICBVSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5jcHAgXAogICAgIFVJUHJvY2Vz
cy9xdC9RdFNHVXBkYXRlUXVldWUuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRTR1RpbGVOb2Rl
LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1RpbGVkRHJhd2luZ0FyZWFQcm94eVF0LmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApp
bmRleCAzMDg2MDQyYTQyNWY1ODQ1OGU0OGMyOGNhZmM4ZTkwMDEzZjkzYTY3Li5kMzM1NGNhNGU3
YThlZGExN2JhNDc1OTdlYTljNDMzMjczNDdmYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKQEAgLTI5LDYgKzI5LDggQEAKIAog
I2luY2x1ZGUgInFxdWlja3dlYnBhZ2VfcF9wLmgiCiAjaW5jbHVkZSAicXF1aWNrd2Vidmlld19w
X3AuaCIKKyNpbmNsdWRlICJxd2VibmF2aWdhdGlvbmhpc3RvcnlfcC5oIgorI2luY2x1ZGUgInF3
ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wX3AuaCIKICNpbmNsdWRlICJxd2VicHJlZmVyZW5jZXNfcF9w
LmgiCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CkBA
IC0xOTAsNiArMTkyLDExIEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZVZp
ZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyCiAgICAgaW50ZXJhY3Rp
b25FbmdpbmUtPmFwcGx5Q29uc3RyYWludHMoY29tcHV0ZVZpZXdwb3J0Q29uc3RyYWludHMoKSk7
CiB9CiAKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlz
dCgpCit7CisgICAgcGFnZVByb3h5LT5uYXZpZ2F0aW9uSGlzdG9yeSgpLT5kLT5yZXNldCgpOwor
fQorCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpzY3JvbGxQb3NpdGlvblJlcXVlc3RlZChj
b25zdCBRUG9pbnQmIHBvcykKIHsKICAgICBpZiAoIXVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2
aW91cikKQEAgLTQ3OSw2ICs0ODYsMTEgQEAgdm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFs
OjpzZXRDb25maXJtRGlhbG9nKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogY29uZmlybUQKICAgICBl
bWl0IGNvbmZpcm1EaWFsb2dDaGFuZ2VkKCk7CiB9CiAKK1FXZWJOYXZpZ2F0aW9uSGlzdG9yeSog
UVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6bmF2aWdhdGlvbkhpc3RvcnkoKSBjb25zdAorewor
ICAgIHJldHVybiBkX3B0ci0+cGFnZVByb3h5LT5uYXZpZ2F0aW9uSGlzdG9yeSgpOworfQorCiBR
RGVjbGFyYXRpdmVDb21wb25lbnQqIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnByb21wdERp
YWxvZygpIGNvbnN0CiB7CiAgICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOwpAQCAtNTM4LDE2
ICs1NTAsMTYgQEAgdm9pZCBRUXVpY2tXZWJWaWV3Ojpwb3N0TWVzc2FnZShjb25zdCBRU3RyaW5n
JiBtZXNzYWdlKQogICAgIGQtPnBhZ2VQcm94eS0+cG9zdE1lc3NhZ2VUb05hdmlnYXRvclF0T2Jq
ZWN0KG1lc3NhZ2UpOwogfQogCi12b2lkIFFRdWlja1dlYlZpZXc6OmdvQmFjaygpCit2b2lkIFFR
dWlja1dlYlZpZXc6OmdvQmFjayhpbnQgaW5kZXgpCiB7CiAgICAgUV9EKFFRdWlja1dlYlZpZXcp
OwotICAgIGQtPnBhZ2VQcm94eS0+Z29CYWNrKCk7CisgICAgZC0+cGFnZVByb3h5LT5nb0JhY2so
aW5kZXgpOwogfQogCi12b2lkIFFRdWlja1dlYlZpZXc6OmdvRm9yd2FyZCgpCit2b2lkIFFRdWlj
a1dlYlZpZXc6OmdvRm9yd2FyZChpbnQgaW5kZXgpCiB7CiAgICAgUV9EKFFRdWlja1dlYlZpZXcp
OwotICAgIGQtPnBhZ2VQcm94eS0+Z29Gb3J3YXJkKCk7CisgICAgZC0+cGFnZVByb3h5LT5nb0Zv
cndhcmQoaW5kZXgpOwogfQogCiB2b2lkIFFRdWlja1dlYlZpZXc6OnN0b3AoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKaW5kZXggNDU2
Nzc3M2U5MDE1Yjc5MTc0YWEzZTc5MmQxMjllOGY2MDQ0N2E1My4uODNkOTEzMDI5YzQ3NTc4ODAz
OWYwZmQwYTRmNzM2ZThmM2Y4NmMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCkBAIC0zMCw2ICszMCw3IEBAIGNsYXNzIFFRdWlj
a1dlYlZpZXdBdHRhY2hlZDsKIGNsYXNzIFFRdWlja1dlYlZpZXdQcml2YXRlOwogY2xhc3MgUVF1
aWNrV2ViVmlld0V4cGVyaW1lbnRhbDsKIGNsYXNzIFFXZWJEb3dubG9hZEl0ZW07CitjbGFzcyBR
V2ViTmF2aWdhdGlvbkhpc3Rvcnk7CiBjbGFzcyBRV2ViUHJlZmVyZW5jZXM7CiBjbGFzcyBRV2Vi
UGVybWlzc2lvblJlcXVlc3Q7CiAKQEAgLTk4LDggKzk5LDggQEAgcHVibGljIFFfU0xPVFM6CiAg
ICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBRU3RyaW5nJik7CiAgICAgdm9pZCBsb2FkSHRtbChj
b25zdCBRU3RyaW5nJiBodG1sLCBjb25zdCBRVXJsJiBiYXNlVXJsID0gUVVybCgpKTsKIAotICAg
IHZvaWQgZ29CYWNrKCk7Ci0gICAgdm9pZCBnb0ZvcndhcmQoKTsKKyAgICB2b2lkIGdvQmFjayhp
bnQgaW5kZXggPSAwKTsKKyAgICB2b2lkIGdvRm9yd2FyZChpbnQgaW5kZXggPSAwKTsKICAgICB2
b2lkIHN0b3AoKTsKICAgICB2b2lkIHJlbG9hZCgpOwogCkBAIC0xNjgsNiArMTY5LDcgQEAgUU1M
X0RFQ0xBUkVfVFlQRUlORk8oUVF1aWNrV2ViVmlldywgUU1MX0hBU19BVFRBQ0hFRF9QUk9QRVJU
SUVTKQogCiBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsIDog
cHVibGljIFFPYmplY3QgewogICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShRV2ViTmF2aWdh
dGlvbkhpc3RvcnkqIG5hdmlnYXRpb25IaXN0b3J5IFJFQUQgbmF2aWdhdGlvbkhpc3RvcnkgQ09O
U1RBTlQgRklOQUwpCiAgICAgUV9QUk9QRVJUWShRRGVjbGFyYXRpdmVDb21wb25lbnQqIGFsZXJ0
RGlhbG9nIFJFQUQgYWxlcnREaWFsb2cgV1JJVEUgc2V0QWxlcnREaWFsb2cgTk9USUZZIGFsZXJ0
RGlhbG9nQ2hhbmdlZCkKICAgICBRX1BST1BFUlRZKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogY29u
ZmlybURpYWxvZyBSRUFEIGNvbmZpcm1EaWFsb2cgV1JJVEUgc2V0Q29uZmlybURpYWxvZyBOT1RJ
RlkgY29uZmlybURpYWxvZ0NoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShRRGVjbGFyYXRpdmVDb21w
b25lbnQqIHByb21wdERpYWxvZyBSRUFEIHByb21wdERpYWxvZyBXUklURSBzZXRQcm9tcHREaWFs
b2cgTk9USUZZIHByb21wdERpYWxvZ0NoYW5nZWQpCkBAIC0xODUsNiArMTg3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0UHJvbXB0RGlhbG9nKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCopOwogCiAg
ICAgYm9vbCB1c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIoKSBjb25zdDsKKyAgICBRV2Vi
TmF2aWdhdGlvbkhpc3RvcnkqIG5hdmlnYXRpb25IaXN0b3J5KCkgY29uc3Q7CiAKIHB1YmxpYyBR
X1NMT1RTOgogICAgIHZvaWQgc2V0VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKGJvb2wg
ZW5hYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlld19wX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlld19wX3AuaAppbmRleCA2MzRlODAyMDg5MTYxZTI5ZTg5MTMwMjAxNTY3Y2RlYTE0OGVh
YzYxLi5hYTRjZmQ4ODQ1YWNhODA4NjU3YTdkN2NmOWRlYmNmOTU0YTFhMzBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCkBA
IC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaEZpcnN0Tm9uRW1wdHlM
YXlvdXQoKTsKICAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBRU2l6ZSYgbmV3
U2l6ZSk7CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29y
ZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3MpOworICAgIHZvaWQgZGlkQ2hhbmdlQmFja0Zvcndh
cmRMaXN0KCk7CiAKICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uUmVxdWVzdGVkKGNvbnN0IFFQb2lu
dCYgcG9zKTsKICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnkuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjFkMGQxMThlMDgwMzRjNzU4N2YwY2VmY2IyNTBkZWViNWMwNzBjNDcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZp
Z2F0aW9uaGlzdG9yeS5jcHAKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgSnVoYSBTYXZvbGFpbmVuIChqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmkpCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicXdlYm5hdmlnYXRpb25oaXN0b3J5
X3AuaCIKKworI2luY2x1ZGUgIlF0V2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV0tCYWNrRm9y
d2FyZExpc3QuaCIKKyNpbmNsdWRlICJXS1N0cmluZ1F0LmgiCisjaW5jbHVkZSAiV0tVUkwuaCIK
KyNpbmNsdWRlICJXS1VSTFF0LmgiCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCisK
KyNpbmNsdWRlICJxd2VibmF2aWdhdGlvbmhpc3RvcnlfcF9wLmgiCisjaW5jbHVkZSA8UURlY2xh
cmF0aXZlRW5naW5lPgorI2luY2x1ZGUgPFFTdHJpbmc+CisjaW5jbHVkZSA8UVVybD4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQXJyYXkuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFja0ZvcndhcmRM
aXN0SXRlbS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS1JldGFpblB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitRV2ViTmF2aWdh
dGlvbkxpc3RNb2RlbFByaXZhdGU6OlFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZShXS0Jh
Y2tGb3J3YXJkTGlzdFJlZiBsaXN0KQorICAgIDogbV9iYWNrRm9yd2FyZExpc3QobGlzdCkKKyAg
ICAsIGluZGV4U2lnbigwKQoreworfQorCitRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbCogUVdlYk5h
dmlnYXRpb25MaXN0TW9kZWxQcml2YXRlOjpjcmVhdGVXZWJOYXZpZ2F0aW9uTW9kZWwoUU9iamVj
dCogcGFyZW50LCBXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0KQoreworICAgIFFXZWJOYXZpZ2F0
aW9uTGlzdE1vZGVsKiBtb2RlbCA9IG5ldyBRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbChwYXJlbnQp
OworICAgIG1vZGVsLT5kID0gbmV3IFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZShsaXN0
KTsKKyAgICByZXR1cm4gbW9kZWw7Cit9CisKKworUVdlYk5hdmlnYXRpb25IaXN0b3J5UHJpdmF0
ZTo6UVdlYk5hdmlnYXRpb25IaXN0b3J5UHJpdmF0ZShRdFdlYlBhZ2VQcm94eSogcGFnZSwgV0tC
YWNrRm9yd2FyZExpc3RSZWYgbGlzdCkKKyAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9iYWNr
Rm9yd2FyZExpc3QobGlzdCkKKyAgICAsIG1fYmFja05hdmlnYXRpb25Nb2RlbChRV2ViTmF2aWdh
dGlvbkxpc3RNb2RlbFByaXZhdGU6OmNyZWF0ZVdlYk5hdmlnYXRpb25Nb2RlbChwYWdlLCBsaXN0
KSkKKyAgICAsIG1fZm9yd2FyZE5hdmlnYXRpb25Nb2RlbChRV2ViTmF2aWdhdGlvbkxpc3RNb2Rl
bFByaXZhdGU6OmNyZWF0ZVdlYk5hdmlnYXRpb25Nb2RlbChwYWdlLCBsaXN0KSkKK3sKKyAgICBt
X2JhY2tOYXZpZ2F0aW9uTW9kZWwtPmQtPmNvdW50ID0gJldLQmFja0ZvcndhcmRMaXN0R2V0QmFj
a0xpc3RDb3VudDsKKyAgICBtX2JhY2tOYXZpZ2F0aW9uTW9kZWwtPmQtPmluZGV4U2lnbiA9IC0x
OworICAgIG1fZm9yd2FyZE5hdmlnYXRpb25Nb2RlbC0+ZC0+Y291bnQgPSAmV0tCYWNrRm9yd2Fy
ZExpc3RHZXRGb3J3YXJkTGlzdENvdW50OworICAgIG1fZm9yd2FyZE5hdmlnYXRpb25Nb2RlbC0+
ZC0+aW5kZXhTaWduID0gMTsKK30KKworUVdlYk5hdmlnYXRpb25IaXN0b3J5KiBRV2ViTmF2aWdh
dGlvbkhpc3RvcnlQcml2YXRlOjpjcmVhdGVIaXN0b3J5KFF0V2ViUGFnZVByb3h5KiBwYWdlLCBX
S0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0KQoreworICAgIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeSog
aGlzdG9yeSA9IG5ldyBRV2ViTmF2aWdhdGlvbkhpc3RvcnkoKTsKKyAgICBoaXN0b3J5LT5kID0g
bmV3IFFXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGUocGFnZSwgbGlzdCk7CisgICAgcmV0dXJu
IGhpc3Rvcnk7Cit9CisKK3ZvaWQgUVdlYk5hdmlnYXRpb25IaXN0b3J5UHJpdmF0ZTo6cmVzZXQo
KQoreworICAgIG1fYmFja05hdmlnYXRpb25Nb2RlbC0+cmVzZXQoKTsKKyAgICBtX2ZvcndhcmRO
YXZpZ2F0aW9uTW9kZWwtPnJlc2V0KCk7Cit9CisKK3ZvaWQgUVdlYk5hdmlnYXRpb25IaXN0b3J5
UHJpdmF0ZTo6Z29CYWNrVG8oaW50IGluZGV4KQoreworICAgIFdLUmV0YWluUHRyPFdLQmFja0Zv
cndhcmRMaXN0SXRlbVJlZj4gaXRlbVJlZiA9IFdLQmFja0ZvcndhcmRMaXN0R2V0SXRlbUF0SW5k
ZXgobV9iYWNrRm9yd2FyZExpc3QsIC0oaW5kZXggKyAxKSk7CisgICAgaWYgKGl0ZW1SZWYgJiYg
bV9wYWdlKQorICAgICAgICBXS1BhZ2VHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShtX3BhZ2UtPnBh
Z2VSZWYoKSwgaXRlbVJlZi5nZXQoKSk7Cit9CisKK3ZvaWQgUVdlYk5hdmlnYXRpb25IaXN0b3J5
UHJpdmF0ZTo6Z29Gb3J3YXJkVG8oaW50IGluZGV4KQoreworICAgIFdLUmV0YWluUHRyPFdLQmFj
a0ZvcndhcmRMaXN0SXRlbVJlZj4gaXRlbVJlZiA9IFdLQmFja0ZvcndhcmRMaXN0R2V0SXRlbUF0
SW5kZXgobV9iYWNrRm9yd2FyZExpc3QsIGluZGV4ICsgMSk7CisgICAgaWYgKGl0ZW1SZWYgJiYg
bV9wYWdlKQorICAgICAgICBXS1BhZ2VHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShtX3BhZ2UtPnBh
Z2VSZWYoKSwgaXRlbVJlZi5nZXQoKSk7Cit9CisKK1FXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsOjpR
V2ViTmF2aWdhdGlvbkxpc3RNb2RlbChRT2JqZWN0KiBwYXJlbnQpCisgICAgOiBRQWJzdHJhY3RM
aXN0TW9kZWwocGFyZW50KQoreworICAgIFFIYXNoPGludCwgUUJ5dGVBcnJheT4gcm9sZXM7Cisg
ICAgcm9sZXNbUVdlYk5hdmlnYXRpb25IaXN0b3J5OjpVcmxSb2xlXSA9ICJ1cmwiOworICAgIHJv
bGVzW1FXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6VGl0bGVSb2xlXSA9ICJ0aXRsZSI7CisgICAgc2V0
Um9sZU5hbWVzKHJvbGVzKTsKK30KKworUVdlYk5hdmlnYXRpb25MaXN0TW9kZWw6On5RV2ViTmF2
aWdhdGlvbkxpc3RNb2RlbCgpCit7CisgICAgZGVsZXRlIGQ7Cit9CisKK2ludCBRV2ViTmF2aWdh
dGlvbkxpc3RNb2RlbDo6cm93Q291bnQoY29uc3QgUU1vZGVsSW5kZXgmKSBjb25zdAoreworICAg
IHJldHVybiBkLT5jb3VudChkLT5tX2JhY2tGb3J3YXJkTGlzdCk7Cit9CisKK1FWYXJpYW50IFFX
ZWJOYXZpZ2F0aW9uTGlzdE1vZGVsOjpkYXRhKGNvbnN0IFFNb2RlbEluZGV4JiBpbmRleCwgaW50
IHJvbGUpIGNvbnN0Cit7CisgICAgaWYgKCFpbmRleC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
biBRVmFyaWFudCgpOworCisgICAgaWYgKHJvbGUgPCBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6OlVy
bFJvbGUgfHwgcm9sZSA+IFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6VGl0bGVSb2xlKQorICAgICAg
ICByZXR1cm4gUVZhcmlhbnQoKTsKKworICAgIFdLUmV0YWluUHRyPFdLQmFja0ZvcndhcmRMaXN0
SXRlbVJlZj4gaXRlbVJlZiA9IFdLQmFja0ZvcndhcmRMaXN0R2V0SXRlbUF0SW5kZXgoZC0+bV9i
YWNrRm9yd2FyZExpc3QsIChpbmRleC5yb3coKSArIDEpICogZC0+aW5kZXhTaWduKTsKKyAgICBp
ZiAocm9sZSA9PSBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6OlVybFJvbGUpIHsKKyAgICAgICAgV0tS
ZXRhaW5QdHI8V0tVUkxSZWY+IHVybChBZG9wdFdLLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5
VVJMKGl0ZW1SZWYuZ2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIFdLVVJMQ29weVFVcmwodXJsLmdl
dCgpKTsKKyAgICB9CisKKyAgICBpZiAocm9sZSA9PSBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6OlRp
dGxlUm9sZSkgeworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdGl0bGUoQWRvcHRX
SywgV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weVRpdGxlKGl0ZW1SZWYuZ2V0KCkpKTsKKyAgICAg
ICAgcmV0dXJuIFdLU3RyaW5nQ29weVFTdHJpbmcodGl0bGUuZ2V0KCkpOworICAgIH0KKworICAg
IHJldHVybiBRVmFyaWFudCgpOworfQorCitRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6OlFXZWJOYXZp
Z2F0aW9uSGlzdG9yeSgpCisgICAgOiBRT2JqZWN0KCkKK3sKK30KKworUVdlYk5hdmlnYXRpb25I
aXN0b3J5Ojp+UVdlYk5hdmlnYXRpb25IaXN0b3J5KCkKK3sKKyAgICBkZWxldGUgZDsKK30KKwor
UVdlYk5hdmlnYXRpb25MaXN0TW9kZWwqIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6YmFja0l0ZW1z
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+bV9iYWNrTmF2aWdhdGlvbk1vZGVsOworfQorCitR
V2ViTmF2aWdhdGlvbkxpc3RNb2RlbCogUVdlYk5hdmlnYXRpb25IaXN0b3J5Ojpmb3J3YXJkSXRl
bXMoKSBjb25zdAoreworICAgIHJldHVybiBkLT5tX2ZvcndhcmROYXZpZ2F0aW9uTW9kZWw7Cit9
CisKKyNpbmNsdWRlICJtb2NfcXdlYm5hdmlnYXRpb25oaXN0b3J5X3AuY3BwIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3Rvcnlf
cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3Rv
cnlfcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFlYTUyMDdiMTBmNzBjMTFlODYyNzQ4Y2NlNjRlNzAwMDJiNTU2
ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3
ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBKdWhhIFNhdm9sYWluZW4gKGp1aGEuc2F2b2xhaW5lbkB3ZWVnby5maSkKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyovCisKKyNpZm5kZWYgcXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfaAorI2RlZmluZSBxd2Vi
bmF2aWdhdGlvbmhpc3RvcnlfcF9oCisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisjaW5j
bHVkZSA8UUFic3RyYWN0TGlzdE1vZGVsPgorI2luY2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8
UVVybD4KKyNpbmNsdWRlIDxRVmFyaWFudD4KKyNpbmNsdWRlIDxxZGVjbGFyYXRpdmUuaD4KKwor
Y2xhc3MgUUFic3RyYWN0TGlzdE1vZGVsOworY2xhc3MgUVdlYk5hdmlnYXRpb25IaXN0b3J5UHJp
dmF0ZTsKK2NsYXNzIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZTsKK2NsYXNzIFFVcmw7
CitjbGFzcyBRU3RyaW5nOworCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViTmF2aWdhdGlvbkxp
c3RNb2RlbCA6IHB1YmxpYyBRQWJzdHJhY3RMaXN0TW9kZWwgeworICAgIFFfT0JKRUNUCitwdWJs
aWM6CisgICAgdmlydHVhbCB+UVdlYk5hdmlnYXRpb25MaXN0TW9kZWwoKTsKKworICAgIGludCBy
b3dDb3VudChjb25zdCBRTW9kZWxJbmRleCYgcGFyZW50ID0gUU1vZGVsSW5kZXgoKSkgY29uc3Q7
CisgICAgUVZhcmlhbnQgZGF0YShjb25zdCBRTW9kZWxJbmRleCYgaW5kZXgsIGludCByb2xlKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbChRT2JqZWN0KiBw
YXJlbnQpOworICAgIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZSogZDsKKyAgICBmcmll
bmQgY2xhc3MgUVdlYk5hdmlnYXRpb25MaXN0TW9kZWxQcml2YXRlOworICAgIGZyaWVuZCBjbGFz
cyBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJOYXZpZ2F0aW9u
SGlzdG9yeVByaXZhdGU7Cit9OworCitRTUxfREVDTEFSRV9UWVBFKFFXZWJOYXZpZ2F0aW9uTGlz
dE1vZGVsKQorCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViTmF2aWdhdGlvbkhpc3RvcnkgOiBw
dWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKKyAgICBRX1BST1BFUlRZKFFXZWJOYXZpZ2F0
aW9uTGlzdE1vZGVsKiBiYWNrSXRlbXMgUkVBRCBiYWNrSXRlbXMgQ09OU1RBTlQgRklOQUwpCisg
ICAgUV9QUk9QRVJUWShRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbCogZm9yd2FyZEl0ZW1zIFJFQUQg
Zm9yd2FyZEl0ZW1zIENPTlNUQU5UIEZJTkFMKQorcHVibGljOgorICAgIGVudW0gTmF2aWdhdGlv
bkhpc3RvcnlSb2xlcyB7CisgICAgICAgIFVybFJvbGUgPSBRdDo6VXNlclJvbGUgKyAxLAorICAg
ICAgICBUaXRsZVJvbGUgPSBRdDo6VXNlclJvbGUgKyAyCisgICAgfTsKKworICAgIFFXZWJOYXZp
Z2F0aW9uTGlzdE1vZGVsKiBiYWNrSXRlbXMoKSBjb25zdDsKKyAgICBRV2ViTmF2aWdhdGlvbkxp
c3RNb2RlbCogZm9yd2FyZEl0ZW1zKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIH5RV2ViTmF2aWdh
dGlvbkhpc3RvcnkoKTsKKworcHJpdmF0ZToKKyAgICBRV2ViTmF2aWdhdGlvbkhpc3RvcnkoKTsK
KworICAgIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGUqIGQ7CisgICAgZnJpZW5kIGNsYXNz
IFFXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGU7CisgICAgZnJpZW5kIGNsYXNzIFF0V2ViUGFn
ZVByb3h5OworICAgIGZyaWVuZCBjbGFzcyBRUXVpY2tXZWJWaWV3UHJpdmF0ZTsKK307CisKK1FN
TF9ERUNMQVJFX1RZUEUoUVdlYk5hdmlnYXRpb25IaXN0b3J5KQorCisjZW5kaWYgLyogcXdlYm5h
dmlnYXRpb25oaXN0b3J5X3BfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnlfcF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wX3AuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MzA4MjgzNTc2MzY0NDFhZTExZDMyZjFlOGRmNmZjM2I0MjZlMzYzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3Rvcnlf
cF9wLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBKdWhhIFNh
dm9sYWluZW4gKGp1aGEuc2F2b2xhaW5lbkB3ZWVnby5maSkKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYg
cXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfcF9oCisjZGVmaW5lIHF3ZWJuYXZpZ2F0aW9uaGlzdG9y
eV9wX3BfaAorCisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorCisjaW5jbHVkZSA8UU9iamVj
dD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRh
aW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKK30KKworY2xhc3MgUVdlYk5hdmlnYXRpb25I
aXN0b3J5OworY2xhc3MgUVdlYk5hdmlnYXRpb25MaXN0TW9kZWw7CitjbGFzcyBRdFdlYlBhZ2VQ
cm94eTsKKworY2xhc3MgUVdlYk5hdmlnYXRpb25MaXN0TW9kZWxQcml2YXRlIHsKK3B1YmxpYzoK
KyAgICBRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbFByaXZhdGUoV0tCYWNrRm9yd2FyZExpc3RSZWYp
OworCisgICAgc3RhdGljIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsKiBjcmVhdGVXZWJOYXZpZ2F0
aW9uTW9kZWwoUU9iamVjdCosIFdLQmFja0ZvcndhcmRMaXN0UmVmKTsKKworICAgIHVuc2lnbmVk
ICgqY291bnQpKFdLQmFja0ZvcndhcmRMaXN0UmVmKTsKKyAgICBXS0JhY2tGb3J3YXJkTGlzdFJl
ZiBtX2JhY2tGb3J3YXJkTGlzdDsKKyAgICBpbnQgaW5kZXhTaWduOworfTsKKworY2xhc3MgUVdl
Yk5hdmlnYXRpb25IaXN0b3J5UHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFFXZWJOYXZp
Z2F0aW9uSGlzdG9yeSogY3JlYXRlSGlzdG9yeShRdFdlYlBhZ2VQcm94eSosIFdLQmFja0Zvcndh
cmRMaXN0UmVmKTsKKworICAgIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGUoUXRXZWJQYWdl
UHJveHkqLCBXS0JhY2tGb3J3YXJkTGlzdFJlZik7CisgICAgdm9pZCByZXNldCgpOworICAgIHZv
aWQgZ29CYWNrVG8oaW50IGluZGV4KTsKKyAgICB2b2lkIGdvRm9yd2FyZFRvKGludCBpbmRleCk7
CisKKyAgICBRdFdlYlBhZ2VQcm94eSogbV9wYWdlOworICAgIFdLQmFja0ZvcndhcmRMaXN0UmVm
IG1fYmFja0ZvcndhcmRMaXN0OworICAgIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsKiBtX2JhY2tO
YXZpZ2F0aW9uTW9kZWw7CisgICAgUVdlYk5hdmlnYXRpb25MaXN0TW9kZWwqIG1fZm9yd2FyZE5h
dmlnYXRpb25Nb2RlbDsKK307CisKKyNlbmRpZiAvKiBxd2VibmF2aWdhdGlvbmhpc3RvcnlfcF9w
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cW1sdGVzdHMvV2ViVmlldy90c3RfbmF2aWdhdGlvbkhpc3RvcnkucW1sIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9uYXZpZ2F0aW9u
SGlzdG9yeS5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI5MzFkZDQ2YmU3NWNkOWMxNDc2MDU2OGE2YTgyZThi
NjFiMjZiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfbmF2aWdhdGlvbkhpc3RvcnkucW1sCkBAIC0w
LDAgKzEsMTA4IEBACitpbXBvcnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBv
cnQgUXRXZWJLaXQgMy4wCitpbXBvcnQgUXRXZWJLaXQuZXhwZXJpbWVudGFsIDMuMAorCitXZWJW
aWV3IHsKKyAgICBpZDogd2ViVmlldworICAgIHdpZHRoOiA0MDAKKyAgICBoZWlnaHQ6IDMwMAor
CisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IHNweQorICAgICAgICB0YXJnZXQ6IHdlYlZp
ZXcKKyAgICAgICAgc2lnbmFsTmFtZTogImxvYWRTdWNjZWVkZWQiCisgICAgfQorCisgICAgTGlz
dFZpZXcgeworICAgICAgICBpZDogYmFja0l0ZW1zTGlzdAorICAgICAgICBhbmNob3JzLmZpbGw6
IHBhcmVudAorICAgICAgICBtb2RlbDogd2ViVmlldy5leHBlcmltZW50YWwubmF2aWdhdGlvbkhp
c3RvcnkuYmFja0l0ZW1zCisgICAgICAgIGRlbGVnYXRlOgorICAgICAgICAgICAgVGV4dCB7Cisg
ICAgICAgICAgICAgICAgY29sb3I6ImJsYWNrIgorICAgICAgICAgICAgICAgIHRleHQ6ICJ0aXRs
ZSA6ICIgKyB0aXRsZQorICAgICAgICAgICAgfQorICAgIH0KKworICAgIExpc3RWaWV3IHsKKyAg
ICAgICAgaWQ6IGZvcndhcmRJdGVtc0xpc3QKKyAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQK
KyAgICAgICAgbW9kZWw6IHdlYlZpZXcuZXhwZXJpbWVudGFsLm5hdmlnYXRpb25IaXN0b3J5LmZv
cndhcmRJdGVtcworICAgICAgICBkZWxlZ2F0ZToKKyAgICAgICAgICAgIFRleHQgeworICAgICAg
ICAgICAgICAgIGNvbG9yOiJibGFjayIKKyAgICAgICAgICAgICAgICB0ZXh0OiAidGl0bGUgOiAi
ICsgdGl0bGUKKyAgICAgICAgICAgIH0KKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAg
IG5hbWU6ICJXZWJWaWV3TmF2aWdhdGlvbkhpc3RvcnkiCisKKyAgICAgICAgZnVuY3Rpb24gdGVz
dF9uYXZpZ2F0aW9uSGlzdG9yeSgpIHsKKyAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAw
KQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmxvYWRQcm9ncmVzcywgMCkKKyAgICAgICAg
ICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3QxLmh0bWwiKSkK
KyAgICAgICAgICAgIHNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5H
b0JhY2ssIGZhbHNlKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdvRm9yd2FyZCwg
ZmFsc2UpCisgICAgICAgICAgICBjb21wYXJlKGJhY2tJdGVtc0xpc3QuY291bnQsIDApCisgICAg
ICAgICAgICBjb21wYXJlKGZvcndhcmRJdGVtc0xpc3QuY291bnQsIDApCisgICAgICAgICAgICBz
cHkuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy5sb2FkKFF0LnJlc29sdmVkVXJsKCIuLi9j
b21tb24vdGVzdDIuaHRtbCIpKQorICAgICAgICAgICAgc3B5LndhaXQoKQorICAgICAgICAgICAg
Y29tcGFyZSh3ZWJWaWV3LnVybCwgUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90ZXN0Mi5odG1s
IikpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29CYWNrLCB0cnVlKQorICAgICAg
ICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdvRm9yd2FyZCwgZmFsc2UpCisgICAgICAgICAgICBj
b21wYXJlKGJhY2tJdGVtc0xpc3QuY291bnQsIDEpCisgICAgICAgICAgICBzcHkuY2xlYXIoKQor
ICAgICAgICAgICAgd2ViVmlldy5nb0JhY2soKQorICAgICAgICAgICAgc3B5LndhaXQoKQorICAg
ICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnVybCwgUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90
ZXN0MS5odG1sIikpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29CYWNrLCBmYWxz
ZSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0ZvcndhcmQsIHRydWUpCisgICAg
ICAgICAgICBjb21wYXJlKGJhY2tJdGVtc0xpc3QuY291bnQsIDApCisgICAgICAgICAgICBjb21w
YXJlKGZvcndhcmRJdGVtc0xpc3QuY291bnQsIDEpCisgICAgICAgICAgICBzcHkuY2xlYXIoKQor
ICAgICAgICAgICAgd2ViVmlldy5nb0ZvcndhcmQoKQorICAgICAgICAgICAgc3B5LndhaXQoKQor
ICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnVybCwgUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1v
bi90ZXN0Mi5odG1sIikpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29CYWNrLCB0
cnVlKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdvRm9yd2FyZCwgZmFsc2UpCisg
ICAgICAgICAgICBjb21wYXJlKGJhY2tJdGVtc0xpc3QuY291bnQsIDEpCisgICAgICAgICAgICBj
b21wYXJlKGZvcndhcmRJdGVtc0xpc3QuY291bnQsIDApCisgICAgICAgICAgICBzcHkuY2xlYXIo
KQorICAgICAgICAgICAgd2ViVmlldy5sb2FkKFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vamF2
YXNjcmlwdC5odG1sIikpCisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBjb21w
YXJlKHdlYlZpZXcudXJsLCBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2phdmFzY3JpcHQuaHRt
bCIpKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdvQmFjaywgdHJ1ZSkKKyAgICAg
ICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0ZvcndhcmQsIGZhbHNlKQorICAgICAgICAgICAg
Y29tcGFyZShiYWNrSXRlbXNMaXN0LmNvdW50LCAyKQorICAgICAgICAgICAgY29tcGFyZShmb3J3
YXJkSXRlbXNMaXN0LmNvdW50LCAwKQorICAgICAgICAgICAgc3B5LmNsZWFyKCkKKyAgICAgICAg
ICAgIHdlYlZpZXcuZ29CYWNrKDEpCisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAg
ICBjb21wYXJlKHdlYlZpZXcudXJsLCBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3QxLmh0
bWwiKSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0JhY2ssIGZhbHNlKQorICAg
ICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdvRm9yd2FyZCwgdHJ1ZSkKKyAgICAgICAgICAg
IGNvbXBhcmUoYmFja0l0ZW1zTGlzdC5jb3VudCwgMCkKKyAgICAgICAgICAgIGNvbXBhcmUoZm9y
d2FyZEl0ZW1zTGlzdC5jb3VudCwgMikKKyAgICAgICAgICAgIHNweS5jbGVhcigpCisgICAgICAg
ICAgICB3ZWJWaWV3LmdvRm9yd2FyZCgxKQorICAgICAgICAgICAgc3B5LndhaXQoKQorICAgICAg
ICAgICAgY29tcGFyZSh3ZWJWaWV3LnVybCwgUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9qYXZh
c2NyaXB0Lmh0bWwiKSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0JhY2ssIHRy
dWUpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29Gb3J3YXJkLCBmYWxzZSkKKyAg
ICAgICAgICAgIGNvbXBhcmUoYmFja0l0ZW1zTGlzdC5jb3VudCwgMikKKyAgICAgICAgICAgIGNv
bXBhcmUoZm9yd2FyZEl0ZW1zTGlzdC5jb3VudCwgMCkKKyAgICAgICAgICAgIHNweS5jbGVhcigp
CisgICAgICAgICAgICB3ZWJWaWV3LmdvQmFjaygpCisgICAgICAgICAgICBzcHkud2FpdCgpCisg
ICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudXJsLCBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9u
L3Rlc3QyLmh0bWwiKSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0JhY2ssIHRy
dWUpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29Gb3J3YXJkLCB0cnVlKQorICAg
ICAgICAgICAgY29tcGFyZShiYWNrSXRlbXNMaXN0LmNvdW50LCAxKQorICAgICAgICAgICAgY29t
cGFyZShmb3J3YXJkSXRlbXNMaXN0LmNvdW50LCAxKQorICAgICAgICB9CisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuY3Bw
CmluZGV4IGEyNDgwZTM3MGJmOTFlZjcxZGVhZmYzMjA3MjRlMzU3ZTM4ZTU4ZDQuLjEzYWZiMjE0
MDI3YjI5Zjg1Y2RlYjMxZTdlZWFiMmI2ODkyNDdjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5jcHAKQEAgLTQ1LDYgKzQ1LDcg
QEAgUXRXZWJQYWdlTG9hZENsaWVudDo6UXRXZWJQYWdlTG9hZENsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgUVF1aWNrV2ViVmlldyogd2ViVmkKICAgICBsb2FkQ2xpZW50LmRpZENoYW5nZVByb2dy
ZXNzID0gZGlkQ2hhbmdlUHJvZ3Jlc3M7CiAgICAgbG9hZENsaWVudC5kaWRGaW5pc2hQcm9ncmVz
cyA9IGRpZEZpbmlzaFByb2dyZXNzOwogICAgIGxvYWRDbGllbnQuZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUgPSBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JG
cmFtZTsKKyAgICBsb2FkQ2xpZW50LmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCA9IGRpZENoYW5n
ZUJhY2tGb3J3YXJkTGlzdDsKICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2VSZWYs
ICZsb2FkQ2xpZW50KTsKIH0KIApAQCAtNzcsNiArNzgsMTEgQEAgdm9pZCBRdFdlYlBhZ2VMb2Fk
Q2xpZW50OjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSgpCiAgICAgbV93
ZWJWaWV3LT5kX2Z1bmMoKS0+ZGlkRmluaXNoRmlyc3ROb25FbXB0eUxheW91dCgpOwogfQogCit2
b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgpCit7Cisg
ICAgbV93ZWJWaWV3LT5kX2Z1bmMoKS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCk7Cit9CisK
IHZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlzcGF0Y2hMb2FkU3VjY2VlZGVkKCkKIHsKICAg
ICBlbWl0IG1fd2ViVmlldy0+bmF2aWdhdGlvblN0YXRlQ2hhbmdlZCgpOwpAQCAtMTgyLDMgKzE4
OCw4IEBAIHZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Rm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyCiAgICAgICAgIHJldHVybjsKICAgICB0b1F0
V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5mbyktPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZvckZyYW1lKCk7CiB9CisKK3ZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkQ2hhbmdl
QmFja0ZvcndhcmRMaXN0KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLCBXS0Fy
cmF5UmVmLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRvUXRXZWJQYWdlTG9hZENs
aWVudChjbGllbnRJbmZvKS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuaAppbmRleCAw
M2YyZjBlZWQzMDEzYTBkNGMxMWRhYjMzMTUwNzczNzhlYWJjNTI3Li5mYmRiOTJlN2JlNjlkYTVh
M2Q3ZDhmM2NiZTY2Mjc4NTNhZDdiMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50LmgKQEAgLTQwLDYgKzQwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShjb25zdCBRVXJsJik7
CiAgICAgdm9pZCBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShjb25zdCBRU3RyaW5nJik7CiAgICAg
dm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSgpOworICAgIHZvaWQg
ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCk7CiAKICAgICB2b2lkIGRpc3BhdGNoTG9hZFN1Y2Nl
ZWRlZCgpOwogICAgIHZvaWQgZGlzcGF0Y2hMb2FkRmFpbGVkKFdLRXJyb3JSZWYpOwpAQCAtNTcs
NiArNTgsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVByb2dyZXNzKFdL
UGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmlu
aXNoUHJvZ3Jlc3MoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CisgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdLUGFnZVJlZiwgV0tC
YWNrRm9yd2FyZExpc3RJdGVtUmVmLCBXS0FycmF5UmVmLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKIAogICAgIFFRdWlja1dlYlZpZXcqIG1fd2ViVmlldzsKICAgICBpbnQgbV9sb2FkUHJvZ3Jl
c3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcApp
bmRleCAwMzYwMTFlMmEyZjljODMzMDgzMzdjNDE1MDVlNGRlNTBlZmY0ZGIzLi45ZWE2NTViZTc2
MTU3NTEyM2Q4ZjMyMTAxMzMyYTk5MTU0OWJmODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKQEAgLTI4LDE0ICsyOCwxNCBAQAogI2luY2x1
ZGUgInFxdWlja3dlYnBhZ2VfcC5oIgogI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW1fcC5oIgog
I2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW1fcF9wLmgiCisjaW5jbHVkZSAicXdlYm5hdmlnYXRp
b25oaXN0b3J5X3AuaCIKKyNpbmNsdWRlICJxd2VibmF2aWdhdGlvbmhpc3RvcnlfcF9wLmgiCiAj
aW5jbHVkZSAicXdlYnByZWZlcmVuY2VzX3AuaCIKICNpbmNsdWRlICJxd2VicHJlZmVyZW5jZXNf
cF9wLmgiCiAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0Fy
ZWFQcm94eUltcGwuaCIKICNpbmNsdWRlICJMYXllclRyZWVIb3N0UHJveHkuaCIKLSNpbmNsdWRl
ICJxd2toaXN0b3J5LmgiCi0jaW5jbHVkZSAicXdraGlzdG9yeV9wLmgiCiAjaW5jbHVkZSAiUXRE
b3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJRdFBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJR
dFdlYlBhZ2VFdmVudEhhbmRsZXIuaCIKQEAgLTY2LDcgKzY2LDcgQEAgUXRXZWJQYWdlUHJveHk6
OlF0V2ViUGFnZVByb3h5KFFRdWlja1dlYlBhZ2UqIHFtbFdlYlBhZ2UsIFFRdWlja1dlYlZpZXcq
IHFtbFdlYlYKICAgICAsIG1fbmF2aWdhdG9yUXRPYmplY3RFbmFibGVkKGZhbHNlKQogewogICAg
IG1fd2ViUGFnZVByb3h5ID0gbV9jb250ZXh0LT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIHRv
SW1wbChwYWdlR3JvdXBSZWYpKTsKLSAgICBtX2hpc3RvcnkgPSBRV0tIaXN0b3J5UHJpdmF0ZTo6
Y3JlYXRlSGlzdG9yeSh0aGlzLCBtX3dlYlBhZ2VQcm94eS0+YmFja0ZvcndhcmRMaXN0KCkpOwor
ICAgIG1fbmF2aWdhdGlvbkhpc3RvcnkgPSBhZG9wdFB0cihRV2ViTmF2aWdhdGlvbkhpc3RvcnlQ
cml2YXRlOjpjcmVhdGVIaXN0b3J5KHRoaXMsIHRvQVBJKG1fd2ViUGFnZVByb3h5LT5iYWNrRm9y
d2FyZExpc3QoKSkpKTsKIH0KIAogdm9pZCBRdFdlYlBhZ2VQcm94eTo6aW5pdChRdFdlYlBhZ2VF
dmVudEhhbmRsZXIqIGV2ZW50SGFuZGxlcikKQEAgLTc4LDcgKzc4LDYgQEAgdm9pZCBRdFdlYlBh
Z2VQcm94eTo6aW5pdChRdFdlYlBhZ2VFdmVudEhhbmRsZXIqIGV2ZW50SGFuZGxlcikKIFF0V2Vi
UGFnZVByb3h5Ojp+UXRXZWJQYWdlUHJveHkoKQogewogICAgIG1fd2ViUGFnZVByb3h5LT5jbG9z
ZSgpOwotICAgIGRlbGV0ZSBtX2hpc3Rvcnk7CiB9CiAKIHZvaWQgUXRXZWJQYWdlUHJveHk6OnNo
b3dDb250ZXh0TWVudShRU2hhcmVkUG9pbnRlcjxRTWVudT4gbWVudSkKQEAgLTIwNSw5ICsyMDQs
OSBAQCBib29sIFF0V2ViUGFnZVByb3h5OjpjYW5Hb0JhY2soKSBjb25zdAogICAgIHJldHVybiBt
X3dlYlBhZ2VQcm94eS0+Y2FuR29CYWNrKCk7CiB9CiAKLXZvaWQgUXRXZWJQYWdlUHJveHk6Omdv
QmFjaygpCit2b2lkIFF0V2ViUGFnZVByb3h5Ojpnb0JhY2soaW50IGluZGV4KQogewotICAgIG1f
d2ViUGFnZVByb3h5LT5nb0JhY2soKTsKKyAgICBtX25hdmlnYXRpb25IaXN0b3J5LT5kLT5nb0Jh
Y2tUbyhpbmRleCk7CiB9CiAKIGJvb2wgUXRXZWJQYWdlUHJveHk6OmNhbkdvRm9yd2FyZCgpIGNv
bnN0CkBAIC0yMTUsOSArMjE0LDkgQEAgYm9vbCBRdFdlYlBhZ2VQcm94eTo6Y2FuR29Gb3J3YXJk
KCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJQYWdlUHJveHktPmNhbkdvRm9yd2FyZCgpOwogfQog
Ci12b2lkIFF0V2ViUGFnZVByb3h5Ojpnb0ZvcndhcmQoKQordm9pZCBRdFdlYlBhZ2VQcm94eTo6
Z29Gb3J3YXJkKGludCBpbmRleCkKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS0+Z29Gb3J3YXJkKCk7
CisgICAgbV9uYXZpZ2F0aW9uSGlzdG9yeS0+ZC0+Z29Gb3J3YXJkVG8oaW5kZXgpOwogfQogCiBi
b29sIFF0V2ViUGFnZVByb3h5Ojpsb2FkaW5nKCkgY29uc3QKQEAgLTM1OCw5ICszNTcsOSBAQCB2
b2lkIFF0V2ViUGFnZVByb3h5OjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKHFyZWFsIHBhZ2Va
b29tRmFjdG9yLCBxcmVhbCB0ZXh0WgogICAgIFdLUGFnZVNldFBhZ2VBbmRUZXh0Wm9vbUZhY3Rv
cnMocGFnZVJlZigpLCBwYWdlWm9vbUZhY3RvciwgdGV4dFpvb21GYWN0b3IpOwogfQogCi1RV0tI
aXN0b3J5KiBRdFdlYlBhZ2VQcm94eTo6aGlzdG9yeSgpIGNvbnN0CitRV2ViTmF2aWdhdGlvbkhp
c3RvcnkqIFF0V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uSGlzdG9yeSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1faGlzdG9yeTsKKyAgICByZXR1cm4gbV9uYXZpZ2F0aW9uSGlzdG9yeS5nZXQoKTsK
IH0KIAogdm9pZCBRdFdlYlBhZ2VQcm94eTo6c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdE
YXRhJiBkcmFnRGF0YSwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKaW5kZXggZWQ0ODdh
YTAwNmZhYTBkZjIwNWNjOTc0NTJjYzgwMzAzZWY1YmU1MS4uZjMwMjk4Y2ZiZjI4NjJiMTY2ZTJj
NzNiOWNmMTdhYmZjMzA5ZDhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZVByb3h5LmgKQEAgLTQwLDggKzQwLDggQEAgY2xhc3MgUVF1aWNrV2ViVmlldzsKIGNs
YXNzIFF0V2ViRXJyb3I7CiBjbGFzcyBRdFdlYlBhZ2VFdmVudEhhbmRsZXI7CiBjbGFzcyBRV2Vi
RG93bmxvYWRJdGVtOworY2xhc3MgUVdlYk5hdmlnYXRpb25IaXN0b3J5OwogY2xhc3MgUVdlYlBy
ZWZlcmVuY2VzOwotY2xhc3MgUVdLSGlzdG9yeTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBRdFdlYkNvbnRleHQ7CkBAIC05Nyw5ICs5Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KGNvbnN0IFN0cmluZyYpOwogCiAgICAg
Ym9vbCBjYW5Hb0JhY2soKSBjb25zdDsKLSAgICB2b2lkIGdvQmFjaygpOworICAgIHZvaWQgZ29C
YWNrKGludCBpbmRleCA9IDApOwogICAgIGJvb2wgY2FuR29Gb3J3YXJkKCkgY29uc3Q7Ci0gICAg
dm9pZCBnb0ZvcndhcmQoKTsKKyAgICB2b2lkIGdvRm9yd2FyZChpbnQgaW5kZXggPSAwKTsKICAg
ICBib29sIGxvYWRpbmcoKSBjb25zdDsKICAgICB2b2lkIHN0b3AoKTsKICAgICBib29sIGNhblJl
bG9hZCgpIGNvbnN0OwpAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbmRl
clRvQ3VycmVudEdMQ29udGV4dChjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGZsb2F0KTsKICAgICB2b2lkIHB1cmdlR0xSZXNvdXJjZXMoKTsKIAotICAgIFFXS0hpc3Rvcnkq
IGhpc3RvcnkoKSBjb25zdDsKKyAgICBRV2ViTmF2aWdhdGlvbkhpc3RvcnkqIG5hdmlnYXRpb25I
aXN0b3J5KCkgY29uc3Q7CiAKICAgICB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0
IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGRhdGEpCiAgICAgewpAQCAtMTcyLDcgKzE3Miw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJlZlB0cjxRdFdlYkNvbnRleHQ+IG1fY29udGV4dDsK
LSAgICBRV0tIaXN0b3J5KiBtX2hpc3Rvcnk7CisgICAgT3duUHRyPFFXZWJOYXZpZ2F0aW9uSGlz
dG9yeT4gbV9uYXZpZ2F0aW9uSGlzdG9yeTsKIAogICAgIG11dGFibGUgT3duUHRyPFFXZWJQcmVm
ZXJlbmNlcz4gbV9wcmVmZXJlbmNlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L3F3a2hpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3
a2hpc3RvcnkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzE0MjVmMGYwNzUw
YmQ2NjFkN2RkMWFjODFmZTFhOGU4NGE1ZDQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2toaXN0b3J5
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEp1aGEgU2F2b2xhaW5lbiAoanVoYS5zYXZvbGFpbmVuQHdlZWdvLmZpKQotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgInF3a2hpc3RvcnkuaCIKLQotI2luY2x1ZGUgPFFTaGFy
ZWREYXRhPgotI2luY2x1ZGUgPFFTdHJpbmc+Ci0jaW5jbHVkZSA8UVVybD4KLSNpbmNsdWRlICJR
dFdlYlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgInF3a2hpc3RvcnlfcC5oIgotI2luY2x1ZGUgIldl
YkJhY2tGb3J3YXJkTGlzdC5oIgotI2luY2x1ZGUgPFdlYktpdDIvV0tBcnJheS5oPgotI2luY2x1
ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KLSNpbmNsdWRlICJXS0JhY2tGb3J3YXJkTGlzdC5o
IgotI2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKLSNpbmNsdWRlICJXS1VSTC5oIgotI2luY2x1ZGUg
IldLVVJMUXQuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotUVdLSGlzdG9yeUl0ZW1Q
cml2YXRlOjpRV0tIaXN0b3J5SXRlbVByaXZhdGUoV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGxp
c3RJdGVtKQotICAgIDogbV9iYWNrRm9yd2FyZExpc3RJdGVtKGxpc3RJdGVtKQotewotfQotCi1R
V0tIaXN0b3J5SXRlbVByaXZhdGU6On5RV0tIaXN0b3J5SXRlbVByaXZhdGUoKQotewotfQotCi1R
V0tIaXN0b3J5SXRlbTo6UVdLSGlzdG9yeUl0ZW0oY29uc3QgUVdLSGlzdG9yeUl0ZW0mIG90aGVy
KQotICAgIDogZChvdGhlci5kKSAKLXsKLX0KLQotUVdLSGlzdG9yeUl0ZW0mIFFXS0hpc3RvcnlJ
dGVtOjpRV0tIaXN0b3J5SXRlbTo6b3BlcmF0b3I9KGNvbnN0IFFXS0hpc3RvcnlJdGVtJiBvdGhl
cikgCi17IAotICAgIGQgPSBvdGhlci5kOwotICAgIHJldHVybiAqdGhpczsgCi19Ci0KLVFXS0hp
c3RvcnlJdGVtOjpRV0tIaXN0b3J5SXRlbShXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbSkK
LSAgICA6IGQobmV3IFFXS0hpc3RvcnlJdGVtUHJpdmF0ZShpdGVtKSkKLXsKLX0KLQotUVdLSGlz
dG9yeUl0ZW06On5RV0tIaXN0b3J5SXRlbSgpCi17Ci19Ci0KLVFTdHJpbmcgUVdLSGlzdG9yeUl0
ZW06OnRpdGxlKCkgY29uc3QKLXsKLSAgICBpZiAoIWQtPm1fYmFja0ZvcndhcmRMaXN0SXRlbSkK
LSAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
dGl0bGUoQWRvcHRXSywgV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weVRpdGxlKGQtPm1fYmFja0Zv
cndhcmRMaXN0SXRlbS5nZXQoKSkpOwotICAgIHJldHVybiBXS1N0cmluZ0NvcHlRU3RyaW5nKHRp
dGxlLmdldCgpKTsKLX0KLQotUVVybCBRV0tIaXN0b3J5SXRlbTo6dXJsKCkgY29uc3QKLXsKLSAg
ICBpZiAoIWQtPm1fYmFja0ZvcndhcmRMaXN0SXRlbSkKLSAgICAgICAgcmV0dXJuIFFVcmwoKTsK
LSAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0V0ssIFdLQmFja0ZvcndhcmRMaXN0
SXRlbUNvcHlVUkwoZC0+bV9iYWNrRm9yd2FyZExpc3RJdGVtLmdldCgpKSk7Ci0gICAgcmV0dXJu
IFdLVVJMQ29weVFVcmwodXJsLmdldCgpKTsKLX0KLQotUVdLSGlzdG9yeVByaXZhdGU6OlFXS0hp
c3RvcnlQcml2YXRlKFF0V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJk
TGlzdCogbGlzdCkKLSAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV9iYWNrRm9yd2FyZExpc3Qo
bGlzdCkKLXsKLX0KLQotUVdLSGlzdG9yeSogUVdLSGlzdG9yeVByaXZhdGU6OmNyZWF0ZUhpc3Rv
cnkoUXRXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0KiBsaXN0
KQotewotICAgIFFXS0hpc3RvcnkqIGhpc3RvcnkgPSBuZXcgUVdLSGlzdG9yeSgpOwotICAgIGhp
c3RvcnktPmQgPSBuZXcgUVdLSGlzdG9yeVByaXZhdGUocGFnZSwgbGlzdCk7Ci0gICAgcmV0dXJu
IGhpc3Rvcnk7Ci19Ci0KLVFXS0hpc3RvcnlQcml2YXRlOjp+UVdLSGlzdG9yeVByaXZhdGUoKQot
ewotfQotCi1RV0tIaXN0b3J5OjpRV0tIaXN0b3J5KCkKLXsKLX0KLQotUVdLSGlzdG9yeTo6flFX
S0hpc3RvcnkoKQotewotICAgIGRlbGV0ZSBkOwotfQotCi1pbnQgUVdLSGlzdG9yeTo6YmFja0xp
c3RDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdLQmFja0ZvcndhcmRMaXN0R2V0QmFja0xp
c3RDb3VudCh0b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCkpOwotfQotCi1pbnQgUVdLSGlzdG9y
eTo6Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdLQmFja0ZvcndhcmRM
aXN0R2V0Rm9yd2FyZExpc3RDb3VudCh0b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCkpOwotfQot
Ci1pbnQgUVdLSGlzdG9yeTo6Y291bnQoKSBjb25zdAotewotICAgIHJldHVybiBiYWNrTGlzdENv
dW50KCkgKyBmb3J3YXJkTGlzdENvdW50KCk7Ci19Ci0KLVFXS0hpc3RvcnlJdGVtIFFXS0hpc3Rv
cnk6OmN1cnJlbnRJdGVtKCkgY29uc3QKLXsKLSAgICBXS1JldGFpblB0cjxXS0JhY2tGb3J3YXJk
TGlzdEl0ZW1SZWY+IGl0ZW1SZWYgPSBXS0JhY2tGb3J3YXJkTGlzdEdldEN1cnJlbnRJdGVtKHRv
QVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0KSk7Ci0gICAgUVdLSGlzdG9yeUl0ZW0gaXRlbShpdGVt
UmVmLmdldCgpKTsKLSAgICByZXR1cm4gaXRlbTsKLX0KLQotUVdLSGlzdG9yeUl0ZW0gUVdLSGlz
dG9yeTo6YmFja0l0ZW0oKSBjb25zdAotewotICAgIFdLUmV0YWluUHRyPFdLQmFja0ZvcndhcmRM
aXN0SXRlbVJlZj4gaXRlbVJlZiA9IFdLQmFja0ZvcndhcmRMaXN0R2V0QmFja0l0ZW0odG9BUEko
ZC0+bV9iYWNrRm9yd2FyZExpc3QpKTsKLSAgICBRV0tIaXN0b3J5SXRlbSBpdGVtKGl0ZW1SZWYu
Z2V0KCkpOwotICAgIHJldHVybiBpdGVtOwotfQotCi1RV0tIaXN0b3J5SXRlbSBRV0tIaXN0b3J5
Ojpmb3J3YXJkSXRlbSgpIGNvbnN0Ci17Ci0gICAgV0tSZXRhaW5QdHI8V0tCYWNrRm9yd2FyZExp
c3RJdGVtUmVmPiBpdGVtUmVmID0gV0tCYWNrRm9yd2FyZExpc3RHZXRGb3J3YXJkSXRlbSh0b0FQ
SShkLT5tX2JhY2tGb3J3YXJkTGlzdCkpOwotICAgIFFXS0hpc3RvcnlJdGVtIGl0ZW0oaXRlbVJl
Zi5nZXQoKSk7Ci0gICAgcmV0dXJuIGl0ZW07Ci19Ci0KLVFXS0hpc3RvcnlJdGVtIFFXS0hpc3Rv
cnk6Oml0ZW1BdChpbnQgaW5kZXgpIGNvbnN0Ci17Ci0gICAgV0tSZXRhaW5QdHI8V0tCYWNrRm9y
d2FyZExpc3RJdGVtUmVmPiBpdGVtUmVmID0gV0tCYWNrRm9yd2FyZExpc3RHZXRJdGVtQXRJbmRl
eCh0b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCksIGluZGV4KTsKLSAgICBRV0tIaXN0b3J5SXRl
bSBpdGVtKGl0ZW1SZWYuZ2V0KCkpOwotICAgIHJldHVybiBpdGVtOwotfQotCi12b2lkIFFXS0hp
c3Rvcnk6OmdvVG9JdGVtQXQoaW50IGluZGV4KSBjb25zdAotewotICAgIFdLUmV0YWluUHRyPFdL
QmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gaXRlbVJlZiA9IFdLQmFja0ZvcndhcmRMaXN0R2V0SXRl
bUF0SW5kZXgodG9BUEkoZC0+bV9iYWNrRm9yd2FyZExpc3QpLCBpbmRleCk7Ci0gICAgaWYgKGl0
ZW1SZWYgJiYgZC0+bV9wYWdlKSB7Ci0gICAgICAgIFFXS0hpc3RvcnlJdGVtIGl0ZW0oaXRlbVJl
Zi5nZXQoKSk7Ci0gICAgICAgIFdLUGFnZUdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKGQtPm1fcGFn
ZS0+cGFnZVJlZigpLCBpdGVtLmQtPm1fYmFja0ZvcndhcmRMaXN0SXRlbS5nZXQoKSk7Ci0gICAg
fQotfQotCi1RTGlzdDxRV0tIaXN0b3J5SXRlbT4gUVdLSGlzdG9yeTo6YmFja0l0ZW1zKGludCBt
YXhJdGVtcykgY29uc3QKLXsKLSAgICBXS0FycmF5UmVmIGFycmF5UmVmID0gV0tCYWNrRm9yd2Fy
ZExpc3RDb3B5QmFja0xpc3RXaXRoTGltaXQodG9BUEkoZC0+bV9iYWNrRm9yd2FyZExpc3QpLCBt
YXhJdGVtcyk7Ci0gICAgaW50IHNpemUgPSBXS0FycmF5R2V0U2l6ZShhcnJheVJlZik7Ci0gICAg
UUxpc3Q8UVdLSGlzdG9yeUl0ZW0+IGl0ZW1MaXN0OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7Ci0gICAgICAgIFdLVHlwZVJlZiB3a0hpc3RvcnlJdGVtID0gV0tBcnJheUdl
dEl0ZW1BdEluZGV4KGFycmF5UmVmLCBpKTsKLSAgICAgICAgV0tCYWNrRm9yd2FyZExpc3RJdGVt
UmVmIGl0ZW1SZWYgPSBzdGF0aWNfY2FzdDxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+KHdrSGlz
dG9yeUl0ZW0pOwotICAgICAgICBRV0tIaXN0b3J5SXRlbSBpdGVtKGl0ZW1SZWYpOwotICAgICAg
ICBpdGVtTGlzdC5hcHBlbmQoaXRlbSk7Ci0gICAgfQotICAgIHJldHVybiBpdGVtTGlzdDsKLX0K
LQotUUxpc3Q8UVdLSGlzdG9yeUl0ZW0+IFFXS0hpc3Rvcnk6OmZvcndhcmRJdGVtcyhpbnQgbWF4
SXRlbXMpIGNvbnN0Ci17Ci0gICAgV0tBcnJheVJlZiBhcnJheVJlZiA9IFdLQmFja0ZvcndhcmRM
aXN0Q29weUZvcndhcmRMaXN0V2l0aExpbWl0KHRvQVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0KSwg
bWF4SXRlbXMpOwotICAgIGludCBzaXplID0gV0tBcnJheUdldFNpemUoYXJyYXlSZWYpOwotICAg
IFFMaXN0PFFXS0hpc3RvcnlJdGVtPiBpdGVtTGlzdDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewotICAgICAgICBXS1R5cGVSZWYgd2tIaXN0b3J5SXRlbSA9IFdLQXJyYXlH
ZXRJdGVtQXRJbmRleChhcnJheVJlZiwgaSk7Ci0gICAgICAgIFdLQmFja0ZvcndhcmRMaXN0SXRl
bVJlZiBpdGVtUmVmID0gc3RhdGljX2Nhc3Q8V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmPih3a0hp
c3RvcnlJdGVtKTsKLSAgICAgICAgUVdLSGlzdG9yeUl0ZW0gaXRlbShpdGVtUmVmKTsKLSAgICAg
ICAgaXRlbUxpc3QuYXBwZW5kKGl0ZW0pOwotICAgIH0KLSAgICByZXR1cm4gaXRlbUxpc3Q7Ci19
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2toaXN0b3J5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlMDM1MTNmZGE1YWNjMjk5ZGQ2YjQzZDUwYzYwZTBlNDMxMTkyNDAx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEp1aGEgU2F2b2xhaW5lbiAoanVoYS5z
YXZvbGFpbmVuQHdlZWdvLmZpKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotKi8KLQotI2lmbmRlZiBxd2toaXN0b3J5X2gKLSNkZWZpbmUgcXdraGlz
dG9yeV9oCi0KLSNpbmNsdWRlICJXZWJLaXQyL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5oIgotI2lu
Y2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKLSNpbmNsdWRlIDxRT2JqZWN0PgotI2luY2x1ZGUgPFFT
aGFyZWREYXRhPgotCi1jbGFzcyBRV0tIaXN0b3J5UHJpdmF0ZTsKLWNsYXNzIFFXS0hpc3RvcnlJ
dGVtUHJpdmF0ZTsKLWNsYXNzIFFVcmw7Ci1jbGFzcyBRU3RyaW5nOwotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLWNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKLX0KLQotY2xhc3MgUVdFQktJVF9FWFBP
UlQgUVdLSGlzdG9yeUl0ZW0gewotcHVibGljOgotICAgIFFXS0hpc3RvcnlJdGVtKGNvbnN0IFFX
S0hpc3RvcnlJdGVtJiBvdGhlcik7Ci0gICAgUVdLSGlzdG9yeUl0ZW0gJm9wZXJhdG9yPShjb25z
dCBRV0tIaXN0b3J5SXRlbSYgb3RoZXIpOwotCi0gICAgflFXS0hpc3RvcnlJdGVtKCk7Ci0gICAg
UVN0cmluZyB0aXRsZSgpIGNvbnN0OwotICAgIFFVcmwgdXJsKCkgY29uc3Q7Ci0KLXByaXZhdGU6
Ci0gICAgUVdLSGlzdG9yeUl0ZW0oV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmKTsKLQotICAgIFFF
eHBsaWNpdGx5U2hhcmVkRGF0YVBvaW50ZXI8UVdLSGlzdG9yeUl0ZW1Qcml2YXRlPiBkOwotCi0g
ICAgZnJpZW5kIGNsYXNzIFFXS0hpc3Rvcnk7Ci0gICAgZnJpZW5kIGNsYXNzIFFXS0hpc3RvcnlJ
dGVtUHJpdmF0ZTsKLX07Ci0KLWNsYXNzIFFXRUJLSVRfRVhQT1JUIFFXS0hpc3RvcnkgOiBwdWJs
aWMgUU9iamVjdCB7Ci0gICAgUV9PQkpFQ1QKLXB1YmxpYzoKLSAgICBpbnQgYmFja0xpc3RDb3Vu
dCgpIGNvbnN0OwotICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3Q7Ci0gICAgaW50IGNv
dW50KCkgY29uc3Q7Ci0gICAgUVdLSGlzdG9yeUl0ZW0gY3VycmVudEl0ZW0oKSBjb25zdDsKLSAg
ICBRV0tIaXN0b3J5SXRlbSBiYWNrSXRlbSgpIGNvbnN0OwotICAgIFFXS0hpc3RvcnlJdGVtIGZv
cndhcmRJdGVtKCkgY29uc3Q7Ci0gICAgUVdLSGlzdG9yeUl0ZW0gaXRlbUF0KGludCBpbmRleCkg
Y29uc3Q7Ci0gICAgdm9pZCBnb1RvSXRlbUF0KGludCBpbmRleCkgY29uc3Q7Ci0gICAgUUxpc3Q8
UVdLSGlzdG9yeUl0ZW0+IGJhY2tJdGVtcyhpbnQgbWF4SXRlbXMpIGNvbnN0OwotICAgIFFMaXN0
PFFXS0hpc3RvcnlJdGVtPiBmb3J3YXJkSXRlbXMoaW50IG1heEl0ZW1zKSBjb25zdDsKLQotcHJp
dmF0ZToKLSAgICBRV0tIaXN0b3J5KCk7Ci0gICAgflFXS0hpc3RvcnkoKTsKLQotICAgIFFXS0hp
c3RvcnlQcml2YXRlKiBkOwotICAgIGZyaWVuZCBjbGFzcyBRV0tIaXN0b3J5UHJpdmF0ZTsKLSAg
ICBmcmllbmQgY2xhc3MgUXRXZWJQYWdlUHJveHk7Ci19OwotI2VuZGlmIC8qIHF3a2hpc3Rvcnlf
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2hpc3Rvcnlf
cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnlfcC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWYxNDNlMTc1ODgwOTcyNzhmZTk2YjkxMGM0NWU3OTIy
NzExNjdhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2toaXN0b3J5X3AuaAorKysgL2Rldi9udWxsCkBA
IC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSnVoYSBTYXZvbGFpbmVu
IChqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmkpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaWZuZGVmIHF3a2hpc3RvcnlfcF9oCi0jZGVm
aW5lIHF3a2hpc3RvcnlfcF9oCi0KLSNpbmNsdWRlIDxRU2hhcmVkRGF0YT4KLSNpbmNsdWRlICJx
d2Via2l0Z2xvYmFsLmgiCi0jaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KLSNpbmNsdWRlIDxX
ZWJLaXQyL1dLUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7Ci19Ci0KLWNsYXNzIFFX
S0hpc3Rvcnk7Ci1jbGFzcyBRdFdlYlBhZ2VQcm94eTsKLQotY2xhc3MgUVdFQktJVF9FWFBPUlQg
UVdLSGlzdG9yeUl0ZW1Qcml2YXRlIDogcHVibGljIFFTaGFyZWREYXRhIHsKLXB1YmxpYzoKLSAg
ICAgICB+UVdLSGlzdG9yeUl0ZW1Qcml2YXRlKCk7Ci1wcml2YXRlOgotICAgIFFXS0hpc3RvcnlJ
dGVtUHJpdmF0ZShXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgbGlzdEl0ZW0pOwotICAgIFdLUmV0
YWluUHRyPFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gbV9iYWNrRm9yd2FyZExpc3RJdGVtOwot
Ci0gICAgZnJpZW5kIGNsYXNzIFFXS0hpc3Rvcnk7Ci0gICAgZnJpZW5kIGNsYXNzIFFXS0hpc3Rv
cnlJdGVtOwotfTsKLQotY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdLSGlzdG9yeVByaXZhdGUgewot
cHVibGljOgotICAgIHN0YXRpYyBRV0tIaXN0b3J5KiBjcmVhdGVIaXN0b3J5KFF0V2ViUGFnZVBy
b3h5KiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqKTsKLQotcHJpdmF0ZToKLSAgICBRV0tI
aXN0b3J5UHJpdmF0ZShRdFdlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
Kik7Ci0gICAgflFXS0hpc3RvcnlQcml2YXRlKCk7Ci0KLSAgICBRdFdlYlBhZ2VQcm94eSogbV9w
YWdlOwotICAgIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0KiBtX2JhY2tGb3J3YXJkTGlzdDsK
LQotICAgIGZyaWVuZCBjbGFzcyBRV0tIaXN0b3J5OwotfTsKLQotI2VuZGlmIC8qIHF3a2hpc3Rv
cnlfcF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvcXR3ZWJraXQtZXhwb3J0Lm1hcCBiL1NvdXJj
ZS9xdHdlYmtpdC1leHBvcnQubWFwCmluZGV4IGE1NDZjYjJmZmU0OWI1YzY4YTkwYzY5YTUwNmY5
ZmI4NDE5OTZkM2IuLjg5YmI5ZGI1MzNmZTI5NDkyODI5ZmE2OWRjYmRiNWM1YTA4YTE1OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9xdHdlYmtpdC1leHBvcnQubWFwCisrKyBiL1NvdXJjZS9xdHdlYmtp
dC1leHBvcnQubWFwCkBAIC0xMTgsNiArMTE4LDEyIEBAIHF3a18xLjAgewogICAgICAgICAqUVF1
aWNrV2ViVmlld0V4cGVyaW1lbnRhbDsKICAgICAgICAgbm9uLXZpcnR1YWw/dGh1bms/dG8/UVF1
aWNrV2ViVmlld0V4cGVyaW1lbnRhbCo7CiAgICAgICAgIFFRdWlja1dlYlZpZXdFeHBlcmltZW50
YWw6Oio7CisgICAgICAgICpRV2ViTmF2aWdhdGlvbkhpc3Rvcnk7CisgICAgICAgIG5vbi12aXJ0
dWFsP3RodW5rP3RvP1FXZWJOYXZpZ2F0aW9uSGlzdG9yeSo7CisgICAgICAgIFFXZWJOYXZpZ2F0
aW9uSGlzdG9yeTo6KjsKKyAgICAgICAgKlFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsOworICAgICAg
ICBub24tdmlydHVhbD90aHVuaz90bz9RV2ViTmF2aWdhdGlvbkxpc3RNb2RlbCo7CisgICAgICAg
IFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsOjoqOwogICAgICAgICAqUVdlYlByZWZlcmVuY2VzOwog
ICAgICAgICBub24tdmlydHVhbD90aHVuaz90bz9RV2ViUHJlZmVyZW5jZXMqOwogICAgICAgICBR
V2ViUHJlZmVyZW5jZXM6Oio7CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5k
ZXggNTEyZjVmYzQ0ZTc2N2QwZGE5MGZjODY3MTgzNTEwZDY2OWY1MDUzOS4uZDI0MDA4YjI1ZTcw
N2U1OGI5MGNmYWUwODg5YmMzY2JjMzkwMTJkOCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBi
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTEyLTA5ICBBbGV4aXMgTWVuYXJkICA8
YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBIaXN0b3J5
IGlzIG5vdCBhY2Nlc3NpYmxlIGluIFFNTC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTczMDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBuZXcgUVdlYk5hdmlnYXRpb25IaXN0b3J5IGluIHRo
ZSBtYXAgZmlsZS4KKworICAgICAgICAqIFNvdXJjZS9xdHdlYmtpdC1leHBvcnQubWFwOgorCiAy
MDExLTEyLTA5ICBKb29uZSBIdXIgIDxqb29uZS5odXJAY29sbGFib3JhLmNvLnVrPgogCiAgICAg
ICAgIFtHVEtdIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgQWNjZWxlcmF0ZWQgQ29tcG9zaXRp
bmcgdXNpbmcgQ2x1dHRlcgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118784</attachid>
            <date>2011-12-12 07:24:48 -0800</date>
            <delta_ts>2011-12-12 07:32:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73016-20111212122436.patch</filename>
            <type>text/plain</type>
            <size>47856</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDIxMjE3YzM2MGUz
ZmNhMzBiOWZiYWUyMmZkYTdiOGMzMmQ1OGEyMzkuLjNkOTIxOWIzMzAxY2E4Yjc3YjI0YzJlNGMz
YzcxNGJhN2M1ZTk5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTIt
MTIgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAg
ICAgW1F0XVtXSzJdIEhpc3RvcnkgaXMgbm90IGFjY2Vzc2libGUgaW4gUU1MLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWdpc3RlciBRV2ViTmF2aWdh
dGlvbkhpc3RvcnkgYW5kIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsIGluIHRoZSBRTUwgcGx1Z2lu
LgorCisgICAgICAgICogZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3BsdWdpbi5jcHA6CisgICAg
ICAgIChXZWJLaXRRbWxQbHVnaW46OnJlZ2lzdGVyVHlwZXMpOgorCiAyMDExLTEyLTA5ICBKZXN1
cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KIAogICAg
ICAgICBbUXRdIHJlcXVlc3QgcGFyYW1ldGVyIG9mIFFRdWlja1dlYlZpZXc6Om5hdmlnYXRpb25S
ZXF1ZXN0ZWQgaXMgbm90IGEgcmVnaXN0ZXJlZCB0eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMThiMzA4MWMz
YmNhYmVhOWFhZmU0MDU4ODU5ODUzZjk5MTk1NmZkMS4uY2E5MTAzYmRkMGU4OTdlMWZkYTMwYTRk
NTEzNmZiZTBmYWQ3OGI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDExLTEyLTEy
ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAg
IFtRdF1bV0syXSBIaXN0b3J5IGlzIG5vdCBhY2Nlc3NpYmxlIGluIFFNTC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDE2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBvbGQgcXdraGlz
dG9yeSBhbmQgY3JlYXRlIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeSB3aGljaCBpcyBRTUwKKyAgICAg
ICAgZnJpZW5kbHkgd2l0aCBkYXRhIG1vZGVscyB5b3UgY2FuIHBsdWcgdG8gYSB2aWV3IGluIFFN
TAorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZENoYW5n
ZUJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpu
YXZpZ2F0aW9uSGlzdG9yeSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpn
b0ZvcndhcmRUbyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpnb0JhY2tU
byk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZTo6UVdlYk5hdmlnYXRpb25MaXN0TW9kZWxQ
cml2YXRlKToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZTo6Y3JlYXRl
V2ViTmF2aWdhdGlvbk1vZGVsKToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZh
dGU6OlFXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGUpOgorICAgICAgICAoUVdlYk5hdmlnYXRp
b25IaXN0b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeSk6CisgICAgICAgIChRV2ViTmF2aWdhdGlv
bkhpc3RvcnlQcml2YXRlOjpyZXNldCk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkhpc3RvcnlQ
cml2YXRlOjpnb0JhY2tUbyk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRl
Ojpnb0ZvcndhcmRUbyk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbDo6UVdlYk5h
dmlnYXRpb25MaXN0TW9kZWwpOgorICAgICAgICAoUVdlYk5hdmlnYXRpb25MaXN0TW9kZWw6On5R
V2ViTmF2aWdhdGlvbkxpc3RNb2RlbCk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkxpc3RNb2Rl
bDo6cm93Q291bnQpOgorICAgICAgICAoUVdlYk5hdmlnYXRpb25MaXN0TW9kZWw6OmRhdGEpOgor
ICAgICAgICAoUVdlYk5hdmlnYXRpb25IaXN0b3J5OjpRV2ViTmF2aWdhdGlvbkhpc3RvcnkpOgor
ICAgICAgICAoUVdlYk5hdmlnYXRpb25IaXN0b3J5Ojp+UVdlYk5hdmlnYXRpb25IaXN0b3J5KToK
KyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6YmFja0l0ZW1zKToKKyAgICAgICAgKFFX
ZWJOYXZpZ2F0aW9uSGlzdG9yeTo6Zm9yd2FyZEl0ZW1zKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfcC5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnlfcC5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfbmF2aWdhdGlvbkhpc3Rvcnku
cW1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5j
cHA6CisgICAgICAgIChRdFdlYlBhZ2VMb2FkQ2xpZW50OjpRdFdlYlBhZ2VMb2FkQ2xpZW50KToK
KyAgICAgICAgKFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoUXRXZWJQYWdlUHJv
eHk6OlF0V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5Ojp+UXRXZWJQYWdl
UHJveHkpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmdvQmFja1RvKToKKyAgICAgICAgKFF0
V2ViUGFnZVByb3h5Ojpnb0ZvcndhcmRUbyk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6bmF2
aWdhdGlvbkhpc3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5oOiBSZW1vdmVkLgorCiAyMDExLTEyLTExICBH
b3BhbCBSYWdoYXZhbiAgPGdvcGFsLjEucmFnaGF2YW5Abm9raWEuY29tPgogCiAgICAgICAgIFtR
dF0gUVF1aWNrV2ViVmlldyBtaXNzaW5nIHRpdGxlQ2hhbmdlZCBzaWduYWwgdGVzdHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3BsdWdpbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL2V4cGVyaW1lbnRhbC9wbHVnaW4uY3Bw
CmluZGV4IDg2MzEyZTEwNTkzY2Y4MWU5NGMyNDgxNzk4ZThhZmExZTAwZmY0MGUuLjNiMzlhMmU5
OWRkNjY4NmZiYWE1ZmY5NTM4MGZiMGVmZDRlN2E3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvcXQvZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3BsdWdpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9xdC9kZWNsYXJhdGl2ZS9leHBlcmltZW50YWwvcGx1Z2luLmNwcApAQCAtMjEsNiArMjEs
OCBAQAogI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcC5oIgogI2luY2x1ZGUgInF3ZWJkb3dubG9h
ZGl0ZW1fcC5oIgogCisjaW5jbHVkZSAicXdlYm5hdmlnYXRpb25oaXN0b3J5X3AuaCIKKwogI2lu
Y2x1ZGUgPFF0RGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZlLmg+CiAjaW5jbHVkZSA8UXREZWNsYXJh
dGl2ZS9xZGVjbGFyYXRpdmVleHRlbnNpb25wbHVnaW4uaD4KIApAQCAtNDIsNiArNDQsOCBAQCBw
dWJsaWM6CiAgICAgICAgIFFfQVNTRVJUKFFMYXRpbjFTdHJpbmcodXJpKSA9PSBRTGF0aW4xU3Ry
aW5nKCJRdFdlYktpdC5leHBlcmltZW50YWwiKSk7CiAKICAgICAgICAgcW1sUmVnaXN0ZXJVbmNy
ZWF0YWJsZVR5cGU8UVdlYkRvd25sb2FkSXRlbT4odXJpLCAzLCAwLCAiRG93bmxvYWRJdGVtIiwg
UU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgRG93bmxvYWRJ
dGVtIikpOworICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViTmF2aWdhdGlv
bkxpc3RNb2RlbD4odXJpLCAzLCAwLCAiTmF2aWdhdGlvbkxpc3RNb2RlbCIsIFFPYmplY3Q6OnRy
KCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIE5hdmlnYXRpb25MaXN0TW9kZWwi
KSk7CisgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFXZWJOYXZpZ2F0aW9uSGlz
dG9yeT4odXJpLCAzLCAwLCAiTmF2aWdhdGlvbkhpc3RvcnkiLCBRT2JqZWN0Ojp0cigiQ2Fubm90
IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBOYXZpZ2F0aW9uSGlzdG9yeSIpKTsKICAgICAg
ICAgcW1sUmVnaXN0ZXJFeHRlbmRlZFR5cGU8UVF1aWNrV2ViVmlldywgUVF1aWNrV2ViVmlld0V4
cGVyaW1lbnRhbEV4dGVuc2lvbj4odXJpLCAzLCAwLCAiV2ViVmlldyIpOwogICAgICAgICBxbWxS
ZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsPih1cmksIDMs
IDAsICJRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsIiwKICAgICAgICAgICAgIFFPYmplY3Q6OnRy
KCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIFFRdWlja1dlYlZpZXdFeHBlcmlt
ZW50YWwiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNl
L1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCBiZTI4MTNiMzFlZmM4YjA5YmZiNmZiZmRjZTM2ZWI1
OGU1Y2RhM2M0Li44MzY5Nzg2NmRjZmViM2JiZmViNjQ2YWM1NDFkYjExYjFmZmZiZjlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkKQEAgLTE4MCw2ICsxODAsOCBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJuYXZpZ2F0aW9ucmVxdWVzdF9wLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2VicGFnZV9wLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9w
X3AuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnlfcC5oIFwK
KyAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wX3AuaCBcCiAgICAg
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIFwKICAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIFwKQEAgLTI2NCw4ICsyNjYsNiBAQCBIRUFERVJT
ICs9IFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUG9saWN5Q2xpZW50LmggXAogICAgIFVJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdl
VUlDbGllbnQuaCBcCi0gICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaCBcCi0gICAgVUlQcm9j
ZXNzL3F0L3F3a2hpc3RvcnlfcC5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRTR1VwZGF0ZVF1ZXVl
LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFNHVGlsZU5vZGUuaCBcCiAgICAgVUlQcm9jZXNzL3F0
L1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIFwKQEAgLTQ5OSw2ICs0OTksNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdC5jcHAg
XAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25yZXF1ZXN0LmNwcCBcCiAgICAg
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcCBcCisgICAgVUlQcm9jZXNzL0FQSS9x
dC9xd2VibmF2aWdhdGlvbmhpc3RvcnkuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnZpZXcuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlcy5jcHAg
XAogICAgIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5LmNwcCBcCkBAIC01ODcsNyArNTg4LDYgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVBvbGljeUNsaWVudC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5jcHAgXAot
ICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0U0dV
cGRhdGVRdWV1ZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFNHVGlsZU5vZGUuY3BwIFwKICAg
ICBVSVByb2Nlc3MvcXQvVGlsZWREcmF3aW5nQXJlYVByb3h5UXQuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IDMwODYw
NDJhNDI1ZjU4NDU4ZTQ4YzI4Y2FmYzhlOTAwMTNmOTNhNjcuLmQyYWVlMTg3NTY1ZDg0OTg1NTc5
NDI1ZDlkNjkwYjcyMDkxMTNjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAi
cXF1aWNrd2VicGFnZV9wX3AuaCIKICNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3BfcC5oIgorI2lu
Y2x1ZGUgInF3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wLmgiCisjaW5jbHVkZSAicXdlYm5hdmlnYXRp
b25oaXN0b3J5X3BfcC5oIgogI2luY2x1ZGUgInF3ZWJwcmVmZXJlbmNlc19wX3AuaCIKIAogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KQEAgLTE5MCw2ICsx
OTIsMTEgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9w
ZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXIKICAgICBpbnRlcmFjdGlvbkVuZ2luZS0+
YXBwbHlDb25zdHJhaW50cyhjb21wdXRlVmlld3BvcnRDb25zdHJhaW50cygpKTsKIH0KIAordm9p
ZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCkKK3sKKyAg
ICBwYWdlUHJveHktPm5hdmlnYXRpb25IaXN0b3J5KCktPmQtPnJlc2V0KCk7Cit9CisKIHZvaWQg
UVF1aWNrV2ViVmlld1ByaXZhdGU6OnNjcm9sbFBvc2l0aW9uUmVxdWVzdGVkKGNvbnN0IFFQb2lu
dCYgcG9zKQogewogICAgIGlmICghdXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKQpAQCAt
NDc5LDYgKzQ4NiwxMSBAQCB2b2lkIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnNldENvbmZp
cm1EaWFsb2coUURlY2xhcmF0aXZlQ29tcG9uZW50KiBjb25maXJtRAogICAgIGVtaXQgY29uZmly
bURpYWxvZ0NoYW5nZWQoKTsKIH0KIAorUVdlYk5hdmlnYXRpb25IaXN0b3J5KiBRUXVpY2tXZWJW
aWV3RXhwZXJpbWVudGFsOjpuYXZpZ2F0aW9uSGlzdG9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGRfcHRyLT5wYWdlUHJveHktPm5hdmlnYXRpb25IaXN0b3J5KCk7Cit9CisKIFFEZWNsYXJhdGl2
ZUNvbXBvbmVudCogUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6cHJvbXB0RGlhbG9nKCkgY29u
c3QKIHsKICAgICBRX0QoY29uc3QgUVF1aWNrV2ViVmlldyk7CkBAIC01MDAsNiArNTEyLDE2IEBA
IGJvb2wgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6dXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVo
YXZpb3VyKCkgY29uc3QKICAgICByZXR1cm4gZC0+dXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZp
b3VyOwogfQogCit2b2lkIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OmdvRm9yd2FyZFRvKGlu
dCBpbmRleCkKK3sKKyAgICBkX3B0ci0+cGFnZVByb3h5LT5nb0ZvcndhcmRUbyhpbmRleCk7Cit9
CisKK3ZvaWQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6Z29CYWNrVG8oaW50IGluZGV4KQor
eworICAgIGRfcHRyLT5wYWdlUHJveHktPmdvQmFja1RvKGluZGV4KTsKK30KKwogUVF1aWNrV2Vi
Vmlldzo6UVF1aWNrV2ViVmlldyhRUXVpY2tJdGVtKiBwYXJlbnQpCiAgICAgOiBRUXVpY2tJdGVt
KHBhcmVudCkKICAgICAsIGRfcHRyKG5ldyBRUXVpY2tXZWJWaWV3UHJpdmF0ZSh0aGlzKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19w
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCmlu
ZGV4IDA5OTUwNGY5OGI3M2YzZjFkZDE4ZDI4Y2E2YzE3ZGE5ZGVmNGQ3MTEuLjg1YmU5Zjg5MDNh
NGVmZDA0N2JkZTNjZjE5NzRkMTQzY2M5YjA3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaApAQCAtMzEsNiArMzEsNyBAQCBjbGFz
cyBRUXVpY2tXZWJWaWV3QXR0YWNoZWQ7CiBjbGFzcyBRUXVpY2tXZWJWaWV3UHJpdmF0ZTsKIGNs
YXNzIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw7CiBjbGFzcyBRV2ViRG93bmxvYWRJdGVtOwor
Y2xhc3MgUVdlYk5hdmlnYXRpb25IaXN0b3J5OwogY2xhc3MgUVdlYlByZWZlcmVuY2VzOwogY2xh
c3MgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OwogCkBAIC0xNjksNiArMTcwLDcgQEAgUU1MX0RFQ0xB
UkVfVFlQRUlORk8oUVF1aWNrV2ViVmlldywgUU1MX0hBU19BVFRBQ0hFRF9QUk9QRVJUSUVTKQog
CiBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsIDogcHVibGlj
IFFPYmplY3QgewogICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShRV2ViTmF2aWdhdGlvbkhp
c3RvcnkqIG5hdmlnYXRpb25IaXN0b3J5IFJFQUQgbmF2aWdhdGlvbkhpc3RvcnkgQ09OU1RBTlQg
RklOQUwpCiAgICAgUV9QUk9QRVJUWShRRGVjbGFyYXRpdmVDb21wb25lbnQqIGFsZXJ0RGlhbG9n
IFJFQUQgYWxlcnREaWFsb2cgV1JJVEUgc2V0QWxlcnREaWFsb2cgTk9USUZZIGFsZXJ0RGlhbG9n
Q2hhbmdlZCkKICAgICBRX1BST1BFUlRZKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogY29uZmlybURp
YWxvZyBSRUFEIGNvbmZpcm1EaWFsb2cgV1JJVEUgc2V0Q29uZmlybURpYWxvZyBOT1RJRlkgY29u
ZmlybURpYWxvZ0NoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShRRGVjbGFyYXRpdmVDb21wb25lbnQq
IHByb21wdERpYWxvZyBSRUFEIHByb21wdERpYWxvZyBXUklURSBzZXRQcm9tcHREaWFsb2cgTk9U
SUZZIHByb21wdERpYWxvZ0NoYW5nZWQpCkBAIC0xODYsOSArMTg4LDEyIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFByb21wdERpYWxvZyhRRGVjbGFyYXRpdmVDb21wb25lbnQqKTsKIAogICAgIGJv
b2wgdXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKCkgY29uc3Q7CisgICAgUVdlYk5hdmln
YXRpb25IaXN0b3J5KiBuYXZpZ2F0aW9uSGlzdG9yeSgpIGNvbnN0OwogCiBwdWJsaWMgUV9TTE9U
UzoKICAgICB2b2lkIHNldFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cihib29sIGVuYWJs
ZSk7CisgICAgdm9pZCBnb0JhY2tUbyhpbnQgaW5kZXgpOworICAgIHZvaWQgZ29Gb3J3YXJkVG8o
aW50IGluZGV4KTsKIAogUV9TSUdOQUxTOgogICAgIHZvaWQgYWxlcnREaWFsb2dDaGFuZ2VkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZp
ZXdfcF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdf
cF9wLmgKaW5kZXggNjM0ZTgwMjA4OTE2MWUyOWU4OTEzMDIwMTU2N2NkZWExNDhlYWM2MS4uYWE0
Y2ZkODg0NWFjYTgwODY1N2E3ZDdjZjlkZWJjZjk1NGExYTMwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaApAQCAtNjEsNiAr
NjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGaW5pc2hGaXJzdE5vbkVtcHR5TGF5b3V0KCk7
CiAgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgUVNpemUmIG5ld1NpemUpOwog
ICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdw
b3J0QXJndW1lbnRzJiBhcmdzKTsKKyAgICB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgp
OwogCiAgICAgdm9pZCBzY3JvbGxQb3NpdGlvblJlcXVlc3RlZChjb25zdCBRUG9pbnQmIHBvcyk7
CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45Yjc2NzhlZDI2YzY4NGU0MmQzMmExNTVkYWE4YmNhNDc2ZDk3MThhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhp
c3RvcnkuY3BwCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEp1
aGEgU2F2b2xhaW5lbiAoanVoYS5zYXZvbGFpbmVuQHdlZWdvLmZpKQorICogQ29weXJpZ2h0IChD
KSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wLmgiCisK
KyNpbmNsdWRlICJRdFdlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldLQmFja0ZvcndhcmRMaXN0
LmgiCisjaW5jbHVkZSAiV0tTdHJpbmdRdC5oIgorI2luY2x1ZGUgIldLVVJMLmgiCisjaW5jbHVk
ZSAiV0tVUkxRdC5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgorCisjaW5jbHVk
ZSAicXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfcC5oIgorI2luY2x1ZGUgPFFEZWNsYXJhdGl2ZUVu
Z2luZT4KKyNpbmNsdWRlIDxRU3RyaW5nPgorI2luY2x1ZGUgPFFVcmw+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0FycmF5Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0u
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRh
aW5QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworUVdlYk5hdmlnYXRpb25MaXN0
TW9kZWxQcml2YXRlOjpRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbFByaXZhdGUoV0tCYWNrRm9yd2Fy
ZExpc3RSZWYgbGlzdCkKKyAgICA6IG1fYmFja0ZvcndhcmRMaXN0KGxpc3QpCisgICAgLCBpbmRl
eFNpZ24oMCkKK3sKK30KKworUVdlYk5hdmlnYXRpb25MaXN0TW9kZWwqIFFXZWJOYXZpZ2F0aW9u
TGlzdE1vZGVsUHJpdmF0ZTo6Y3JlYXRlV2ViTmF2aWdhdGlvbk1vZGVsKFFPYmplY3QqIHBhcmVu
dCwgV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdCkKK3sKKyAgICBRV2ViTmF2aWdhdGlvbkxpc3RN
b2RlbCogbW9kZWwgPSBuZXcgUVdlYk5hdmlnYXRpb25MaXN0TW9kZWwocGFyZW50KTsKKyAgICBt
b2RlbC0+ZCA9IG5ldyBRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbFByaXZhdGUobGlzdCk7CisgICAg
cmV0dXJuIG1vZGVsOworfQorCisKK1FXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGU6OlFXZWJO
YXZpZ2F0aW9uSGlzdG9yeVByaXZhdGUoUXRXZWJQYWdlUHJveHkqIHBhZ2UsIFdLQmFja0Zvcndh
cmRMaXN0UmVmIGxpc3QpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fYmFja0ZvcndhcmRM
aXN0KGxpc3QpCisgICAgLCBtX2JhY2tOYXZpZ2F0aW9uTW9kZWwoUVdlYk5hdmlnYXRpb25MaXN0
TW9kZWxQcml2YXRlOjpjcmVhdGVXZWJOYXZpZ2F0aW9uTW9kZWwocGFnZSwgbGlzdCkpCisgICAg
LCBtX2ZvcndhcmROYXZpZ2F0aW9uTW9kZWwoUVdlYk5hdmlnYXRpb25MaXN0TW9kZWxQcml2YXRl
OjpjcmVhdGVXZWJOYXZpZ2F0aW9uTW9kZWwocGFnZSwgbGlzdCkpCit7CisgICAgbV9iYWNrTmF2
aWdhdGlvbk1vZGVsLT5kLT5jb3VudCA9ICZXS0JhY2tGb3J3YXJkTGlzdEdldEJhY2tMaXN0Q291
bnQ7CisgICAgbV9iYWNrTmF2aWdhdGlvbk1vZGVsLT5kLT5pbmRleFNpZ24gPSAtMTsKKyAgICBt
X2ZvcndhcmROYXZpZ2F0aW9uTW9kZWwtPmQtPmNvdW50ID0gJldLQmFja0ZvcndhcmRMaXN0R2V0
Rm9yd2FyZExpc3RDb3VudDsKKyAgICBtX2ZvcndhcmROYXZpZ2F0aW9uTW9kZWwtPmQtPmluZGV4
U2lnbiA9IDE7Cit9CisKK1FXZWJOYXZpZ2F0aW9uSGlzdG9yeSogUVdlYk5hdmlnYXRpb25IaXN0
b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeShRdFdlYlBhZ2VQcm94eSogcGFnZSwgV0tCYWNrRm9y
d2FyZExpc3RSZWYgbGlzdCkKK3sKKyAgICBRV2ViTmF2aWdhdGlvbkhpc3RvcnkqIGhpc3Rvcnkg
PSBuZXcgUVdlYk5hdmlnYXRpb25IaXN0b3J5KCk7CisgICAgaGlzdG9yeS0+ZCA9IG5ldyBRV2Vi
TmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlKHBhZ2UsIGxpc3QpOworICAgIHJldHVybiBoaXN0b3J5
OworfQorCit2b2lkIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGU6OnJlc2V0KCkKK3sKKyAg
ICBtX2JhY2tOYXZpZ2F0aW9uTW9kZWwtPnJlc2V0KCk7CisgICAgbV9mb3J3YXJkTmF2aWdhdGlv
bk1vZGVsLT5yZXNldCgpOworfQorCit2b2lkIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeVByaXZhdGU6
OmdvQmFja1RvKGludCBpbmRleCkKK3sKKyAgICBXS1JldGFpblB0cjxXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1SZWY+IGl0ZW1SZWYgPSBXS0JhY2tGb3J3YXJkTGlzdEdldEl0ZW1BdEluZGV4KG1fYmFj
a0ZvcndhcmRMaXN0LmdldCgpLCAtKGluZGV4ICsgMSkpOworICAgIGlmIChpdGVtUmVmICYmIG1f
cGFnZSkKKyAgICAgICAgV0tQYWdlR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0obV9wYWdlLT5wYWdl
UmVmKCksIGl0ZW1SZWYuZ2V0KCkpOworfQorCit2b2lkIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeVBy
aXZhdGU6OmdvRm9yd2FyZFRvKGludCBpbmRleCkKK3sKKyAgICBXS1JldGFpblB0cjxXS0JhY2tG
b3J3YXJkTGlzdEl0ZW1SZWY+IGl0ZW1SZWYgPSBXS0JhY2tGb3J3YXJkTGlzdEdldEl0ZW1BdElu
ZGV4KG1fYmFja0ZvcndhcmRMaXN0LmdldCgpLCBpbmRleCArIDEpOworICAgIGlmIChpdGVtUmVm
ICYmIG1fcGFnZSkKKyAgICAgICAgV0tQYWdlR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0obV9wYWdl
LT5wYWdlUmVmKCksIGl0ZW1SZWYuZ2V0KCkpOworfQorCitRV2ViTmF2aWdhdGlvbkxpc3RNb2Rl
bDo6UVdlYk5hdmlnYXRpb25MaXN0TW9kZWwoUU9iamVjdCogcGFyZW50KQorICAgIDogUUFic3Ry
YWN0TGlzdE1vZGVsKHBhcmVudCkKK3sKKyAgICBRSGFzaDxpbnQsIFFCeXRlQXJyYXk+IHJvbGVz
OworICAgIHJvbGVzW1FXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6VXJsUm9sZV0gPSAidXJsIjsKKyAg
ICByb2xlc1tRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6OlRpdGxlUm9sZV0gPSAidGl0bGUiOworICAg
IHNldFJvbGVOYW1lcyhyb2xlcyk7Cit9CisKK1FXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsOjp+UVdl
Yk5hdmlnYXRpb25MaXN0TW9kZWwoKQoreworICAgIGRlbGV0ZSBkOworfQorCitpbnQgUVdlYk5h
dmlnYXRpb25MaXN0TW9kZWw6OnJvd0NvdW50KGNvbnN0IFFNb2RlbEluZGV4JikgY29uc3QKK3sK
KyAgICByZXR1cm4gZC0+Y291bnQoZC0+bV9iYWNrRm9yd2FyZExpc3QuZ2V0KCkpOworfQorCitR
VmFyaWFudCBRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbDo6ZGF0YShjb25zdCBRTW9kZWxJbmRleCYg
aW5kZXgsIGludCByb2xlKSBjb25zdAoreworICAgIGlmICghaW5kZXguaXNWYWxpZCgpKQorICAg
ICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKworICAgIGlmIChyb2xlIDwgUVdlYk5hdmlnYXRpb25I
aXN0b3J5OjpVcmxSb2xlIHx8IHJvbGUgPiBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk6OlRpdGxlUm9s
ZSkKKyAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisKKyAgICBXS1JldGFpblB0cjxXS0JhY2tG
b3J3YXJkTGlzdEl0ZW1SZWY+IGl0ZW1SZWYgPSBXS0JhY2tGb3J3YXJkTGlzdEdldEl0ZW1BdElu
ZGV4KGQtPm1fYmFja0ZvcndhcmRMaXN0LmdldCgpLCAoaW5kZXgucm93KCkgKyAxKSAqIGQtPmlu
ZGV4U2lnbik7CisgICAgaWYgKHJvbGUgPT0gUVdlYk5hdmlnYXRpb25IaXN0b3J5OjpVcmxSb2xl
KSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwoQWRvcHRXSywgV0tCYWNrRm9y
d2FyZExpc3RJdGVtQ29weVVSTChpdGVtUmVmLmdldCgpKSk7CisgICAgICAgIHJldHVybiBXS1VS
TENvcHlRVXJsKHVybC5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKHJvbGUgPT0gUVdlYk5hdmln
YXRpb25IaXN0b3J5OjpUaXRsZVJvbGUpIHsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHRpdGxlKEFkb3B0V0ssIFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlUaXRsZShpdGVtUmVm
LmdldCgpKSk7CisgICAgICAgIHJldHVybiBXS1N0cmluZ0NvcHlRU3RyaW5nKHRpdGxlLmdldCgp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gUVZhcmlhbnQoKTsKK30KKworUVdlYk5hdmlnYXRpb25I
aXN0b3J5OjpRV2ViTmF2aWdhdGlvbkhpc3RvcnkoKQorICAgIDogUU9iamVjdCgpCit7Cit9CisK
K1FXZWJOYXZpZ2F0aW9uSGlzdG9yeTo6flFXZWJOYXZpZ2F0aW9uSGlzdG9yeSgpCit7CisgICAg
ZGVsZXRlIGQ7Cit9CisKK1FXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsKiBRV2ViTmF2aWdhdGlvbkhp
c3Rvcnk6OmJhY2tJdGVtcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPm1fYmFja05hdmlnYXRp
b25Nb2RlbDsKK30KKworUVdlYk5hdmlnYXRpb25MaXN0TW9kZWwqIFFXZWJOYXZpZ2F0aW9uSGlz
dG9yeTo6Zm9yd2FyZEl0ZW1zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+bV9mb3J3YXJkTmF2
aWdhdGlvbk1vZGVsOworfQorCisjaW5jbHVkZSAibW9jX3F3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9w
LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5h
dmlnYXRpb25oaXN0b3J5X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdl
Ym5hdmlnYXRpb25oaXN0b3J5X3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWE1MjA3YjEwZjcwYzExZTg2Mjc0
OGNjZTY0ZTcwMDAyYjU1NmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnlfcC5oCkBAIC0wLDAgKzEsODYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSnVoYSBTYXZvbGFpbmVuIChqdWhhLnNhdm9sYWlu
ZW5Ad2VlZ28uZmkpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIHF3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9w
X2gKKyNkZWZpbmUgcXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfaAorCisjaW5jbHVkZSAicXdlYmtp
dGdsb2JhbC5oIgorI2luY2x1ZGUgPFFBYnN0cmFjdExpc3RNb2RlbD4KKyNpbmNsdWRlIDxRT2Jq
ZWN0PgorI2luY2x1ZGUgPFFVcmw+CisjaW5jbHVkZSA8UVZhcmlhbnQ+CisjaW5jbHVkZSA8cWRl
Y2xhcmF0aXZlLmg+CisKK2NsYXNzIFFBYnN0cmFjdExpc3RNb2RlbDsKK2NsYXNzIFFXZWJOYXZp
Z2F0aW9uSGlzdG9yeVByaXZhdGU7CitjbGFzcyBRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbFByaXZh
dGU7CitjbGFzcyBRVXJsOworY2xhc3MgUVN0cmluZzsKKworY2xhc3MgUVdFQktJVF9FWFBPUlQg
UVdlYk5hdmlnYXRpb25MaXN0TW9kZWwgOiBwdWJsaWMgUUFic3RyYWN0TGlzdE1vZGVsIHsKKyAg
ICBRX09CSkVDVAorcHVibGljOgorICAgIHZpcnR1YWwgflFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVs
KCk7CisKKyAgICBpbnQgcm93Q291bnQoY29uc3QgUU1vZGVsSW5kZXgmIHBhcmVudCA9IFFNb2Rl
bEluZGV4KCkpIGNvbnN0OworICAgIFFWYXJpYW50IGRhdGEoY29uc3QgUU1vZGVsSW5kZXgmIGlu
ZGV4LCBpbnQgcm9sZSkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUVdlYk5hdmlnYXRpb25MaXN0
TW9kZWwoUU9iamVjdCogcGFyZW50KTsKKyAgICBRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbFByaXZh
dGUqIGQ7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsUHJpdmF0ZTsK
KyAgICBmcmllbmQgY2xhc3MgUVdlYk5hdmlnYXRpb25IaXN0b3J5OworICAgIGZyaWVuZCBjbGFz
cyBRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlOworfTsKKworUU1MX0RFQ0xBUkVfVFlQRShR
V2ViTmF2aWdhdGlvbkxpc3RNb2RlbCkKKworY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYk5hdmln
YXRpb25IaXN0b3J5IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisgICAgUV9QUk9Q
RVJUWShRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbCogYmFja0l0ZW1zIFJFQUQgYmFja0l0ZW1zIENP
TlNUQU5UIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVdlYk5hdmlnYXRpb25MaXN0TW9kZWwqIGZv
cndhcmRJdGVtcyBSRUFEIGZvcndhcmRJdGVtcyBDT05TVEFOVCBGSU5BTCkKK3B1YmxpYzoKKyAg
ICBlbnVtIE5hdmlnYXRpb25IaXN0b3J5Um9sZXMgeworICAgICAgICBVcmxSb2xlID0gUXQ6OlVz
ZXJSb2xlICsgMSwKKyAgICAgICAgVGl0bGVSb2xlID0gUXQ6OlVzZXJSb2xlICsgMgorICAgIH07
CisKKyAgICBRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbCogYmFja0l0ZW1zKCkgY29uc3Q7CisgICAg
UVdlYk5hdmlnYXRpb25MaXN0TW9kZWwqIGZvcndhcmRJdGVtcygpIGNvbnN0OworCisgICAgdmly
dHVhbCB+UVdlYk5hdmlnYXRpb25IaXN0b3J5KCk7CisKK3ByaXZhdGU6CisgICAgUVdlYk5hdmln
YXRpb25IaXN0b3J5KCk7CisKKyAgICBRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlKiBkOwor
ICAgIGZyaWVuZCBjbGFzcyBRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlOworICAgIGZyaWVu
ZCBjbGFzcyBRdFdlYlBhZ2VQcm94eTsKKyAgICBmcmllbmQgY2xhc3MgUVF1aWNrV2ViVmlld1By
aXZhdGU7Cit9OworCitRTUxfREVDTEFSRV9UWVBFKFFXZWJOYXZpZ2F0aW9uSGlzdG9yeSkKKwor
I2VuZGlmIC8qIHF3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfcC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmhpc3RvcnlfcF9w
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTg4MTBkNDI0Njg5Y2U4Yjk0YjlhZjAxOTlkZjUzOWI4NWFiNWZhNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5h
dmlnYXRpb25oaXN0b3J5X3BfcC5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgSnVoYSBTYXZvbGFpbmVuIChqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmkpCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisqLworCisjaWZuZGVmIHF3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wX3BfaAorI2RlZmluZSBxd2Vi
bmF2aWdhdGlvbmhpc3RvcnlfcF9wX2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKwor
I2luY2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7Cit9CisKK2NsYXNz
IFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTsKK2NsYXNzIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsOwor
Y2xhc3MgUXRXZWJQYWdlUHJveHk7CisKK2NsYXNzIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsUHJp
dmF0ZSB7CitwdWJsaWM6CisgICAgUVdlYk5hdmlnYXRpb25MaXN0TW9kZWxQcml2YXRlKFdLQmFj
a0ZvcndhcmRMaXN0UmVmKTsKKworICAgIHN0YXRpYyBRV2ViTmF2aWdhdGlvbkxpc3RNb2RlbCog
Y3JlYXRlV2ViTmF2aWdhdGlvbk1vZGVsKFFPYmplY3QqLCBXS0JhY2tGb3J3YXJkTGlzdFJlZik7
CisKKyAgICB1bnNpZ25lZCAoKmNvdW50KShXS0JhY2tGb3J3YXJkTGlzdFJlZik7CisgICAgV0tS
ZXRhaW5QdHI8V0tCYWNrRm9yd2FyZExpc3RSZWY+IG1fYmFja0ZvcndhcmRMaXN0OworICAgIGlu
dCBpbmRleFNpZ247Cit9OworCitjbGFzcyBRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUVdlYk5hdmlnYXRpb25IaXN0b3J5KiBjcmVhdGVIaXN0b3J5
KFF0V2ViUGFnZVByb3h5KiwgV0tCYWNrRm9yd2FyZExpc3RSZWYpOworCisgICAgUVdlYk5hdmln
YXRpb25IaXN0b3J5UHJpdmF0ZShRdFdlYlBhZ2VQcm94eSosIFdLQmFja0ZvcndhcmRMaXN0UmVm
KTsKKyAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBnb0JhY2tUbyhpbnQgaW5kZXgpOworICAg
IHZvaWQgZ29Gb3J3YXJkVG8oaW50IGluZGV4KTsKKworICAgIFF0V2ViUGFnZVByb3h5KiBtX3Bh
Z2U7CisgICAgV0tSZXRhaW5QdHI8V0tCYWNrRm9yd2FyZExpc3RSZWY+IG1fYmFja0ZvcndhcmRM
aXN0OworICAgIFFXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsKiBtX2JhY2tOYXZpZ2F0aW9uTW9kZWw7
CisgICAgUVdlYk5hdmlnYXRpb25MaXN0TW9kZWwqIG1fZm9yd2FyZE5hdmlnYXRpb25Nb2RlbDsK
K307CisKKyNlbmRpZiAvKiBxd2VibmF2aWdhdGlvbmhpc3RvcnlfcF9wX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmll
dy90c3RfbmF2aWdhdGlvbkhpc3RvcnkucW1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9uYXZpZ2F0aW9uSGlzdG9yeS5xbWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjhhZWViNTU2ZTJhMWMyOGM3MTNkZTQxMzE1ODA2MWU0ZTU4MWQzZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVz
dHMvV2ViVmlldy90c3RfbmF2aWdhdGlvbkhpc3RvcnkucW1sCkBAIC0wLDAgKzEsMTA4IEBACitp
bXBvcnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBvcnQgUXRXZWJLaXQgMy4w
CitpbXBvcnQgUXRXZWJLaXQuZXhwZXJpbWVudGFsIDMuMAorCitXZWJWaWV3IHsKKyAgICBpZDog
d2ViVmlldworICAgIHdpZHRoOiA0MDAKKyAgICBoZWlnaHQ6IDMwMAorCisgICAgU2lnbmFsU3B5
IHsKKyAgICAgICAgaWQ6IHNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAgc2ln
bmFsTmFtZTogImxvYWRTdWNjZWVkZWQiCisgICAgfQorCisgICAgTGlzdFZpZXcgeworICAgICAg
ICBpZDogYmFja0l0ZW1zTGlzdAorICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAg
ICBtb2RlbDogd2ViVmlldy5leHBlcmltZW50YWwubmF2aWdhdGlvbkhpc3RvcnkuYmFja0l0ZW1z
CisgICAgICAgIGRlbGVnYXRlOgorICAgICAgICAgICAgVGV4dCB7CisgICAgICAgICAgICAgICAg
Y29sb3I6ImJsYWNrIgorICAgICAgICAgICAgICAgIHRleHQ6ICJ0aXRsZSA6ICIgKyB0aXRsZQor
ICAgICAgICAgICAgfQorICAgIH0KKworICAgIExpc3RWaWV3IHsKKyAgICAgICAgaWQ6IGZvcndh
cmRJdGVtc0xpc3QKKyAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAgICAgICAgbW9kZWw6
IHdlYlZpZXcuZXhwZXJpbWVudGFsLm5hdmlnYXRpb25IaXN0b3J5LmZvcndhcmRJdGVtcworICAg
ICAgICBkZWxlZ2F0ZToKKyAgICAgICAgICAgIFRleHQgeworICAgICAgICAgICAgICAgIGNvbG9y
OiJibGFjayIKKyAgICAgICAgICAgICAgICB0ZXh0OiAidGl0bGUgOiAiICsgdGl0bGUKKyAgICAg
ICAgICAgIH0KKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIG5hbWU6ICJXZWJWaWV3
TmF2aWdhdGlvbkhpc3RvcnkiCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9uYXZpZ2F0aW9uSGlz
dG9yeSgpIHsKKyAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAwKQorICAgICAgICAgICAg
Y29tcGFyZSh3ZWJWaWV3LmxvYWRQcm9ncmVzcywgMCkKKyAgICAgICAgICAgIHdlYlZpZXcubG9h
ZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3QxLmh0bWwiKSkKKyAgICAgICAgICAgIHNw
eS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0JhY2ssIGZhbHNlKQor
ICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdvRm9yd2FyZCwgZmFsc2UpCisgICAgICAg
ICAgICBjb21wYXJlKGJhY2tJdGVtc0xpc3QuY291bnQsIDApCisgICAgICAgICAgICBjb21wYXJl
KGZvcndhcmRJdGVtc0xpc3QuY291bnQsIDApCisgICAgICAgICAgICBzcHkuY2xlYXIoKQorICAg
ICAgICAgICAgd2ViVmlldy5sb2FkKFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDIuaHRt
bCIpKQorICAgICAgICAgICAgc3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3
LnVybCwgUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90ZXN0Mi5odG1sIikpCisgICAgICAgICAg
ICBjb21wYXJlKHdlYlZpZXcuY2FuR29CYWNrLCB0cnVlKQorICAgICAgICAgICAgY29tcGFyZSh3
ZWJWaWV3LmNhbkdvRm9yd2FyZCwgZmFsc2UpCisgICAgICAgICAgICBjb21wYXJlKGJhY2tJdGVt
c0xpc3QuY291bnQsIDEpCisgICAgICAgICAgICBzcHkuY2xlYXIoKQorICAgICAgICAgICAgd2Vi
Vmlldy5leHBlcmltZW50YWwuZ29CYWNrVG8oMCkKKyAgICAgICAgICAgIHNweS53YWl0KCkKKyAg
ICAgICAgICAgIGNvbXBhcmUod2ViVmlldy51cmwsIFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24v
dGVzdDEuaHRtbCIpKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdvQmFjaywgZmFs
c2UpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29Gb3J3YXJkLCB0cnVlKQorICAg
ICAgICAgICAgY29tcGFyZShiYWNrSXRlbXNMaXN0LmNvdW50LCAwKQorICAgICAgICAgICAgY29t
cGFyZShmb3J3YXJkSXRlbXNMaXN0LmNvdW50LCAxKQorICAgICAgICAgICAgc3B5LmNsZWFyKCkK
KyAgICAgICAgICAgIHdlYlZpZXcuZ29Gb3J3YXJkKCkKKyAgICAgICAgICAgIHNweS53YWl0KCkK
KyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy51cmwsIFF0LnJlc29sdmVkVXJsKCIuLi9jb21t
b24vdGVzdDIuaHRtbCIpKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LmNhbkdvQmFjaywg
dHJ1ZSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0ZvcndhcmQsIGZhbHNlKQor
ICAgICAgICAgICAgY29tcGFyZShiYWNrSXRlbXNMaXN0LmNvdW50LCAxKQorICAgICAgICAgICAg
Y29tcGFyZShmb3J3YXJkSXRlbXNMaXN0LmNvdW50LCAwKQorICAgICAgICAgICAgc3B5LmNsZWFy
KCkKKyAgICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2ph
dmFzY3JpcHQuaHRtbCIpKQorICAgICAgICAgICAgc3B5LndhaXQoKQorICAgICAgICAgICAgY29t
cGFyZSh3ZWJWaWV3LnVybCwgUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9qYXZhc2NyaXB0Lmh0
bWwiKSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0JhY2ssIHRydWUpCisgICAg
ICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29Gb3J3YXJkLCBmYWxzZSkKKyAgICAgICAgICAg
IGNvbXBhcmUoYmFja0l0ZW1zTGlzdC5jb3VudCwgMikKKyAgICAgICAgICAgIGNvbXBhcmUoZm9y
d2FyZEl0ZW1zTGlzdC5jb3VudCwgMCkKKyAgICAgICAgICAgIHNweS5jbGVhcigpCisgICAgICAg
ICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5nb0JhY2tUbygxKQorICAgICAgICAgICAgc3B5Lndh
aXQoKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnVybCwgUXQucmVzb2x2ZWRVcmwoIi4u
L2NvbW1vbi90ZXN0MS5odG1sIikpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY2FuR29C
YWNrLCBmYWxzZSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jYW5Hb0ZvcndhcmQsIHRy
dWUpCisgICAgICAgICAgICBjb21wYXJlKGJhY2tJdGVtc0xpc3QuY291bnQsIDApCisgICAgICAg
ICAgICBjb21wYXJlKGZvcndhcmRJdGVtc0xpc3QuY291bnQsIDIpCisgICAgICAgICAgICBzcHku
Y2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy5leHBlcmltZW50YWwuZ29Gb3J3YXJkVG8oMSkK
KyAgICAgICAgICAgIHNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy51cmws
IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vamF2YXNjcmlwdC5odG1sIikpCisgICAgICAgICAg
ICBjb21wYXJlKHdlYlZpZXcuY2FuR29CYWNrLCB0cnVlKQorICAgICAgICAgICAgY29tcGFyZSh3
ZWJWaWV3LmNhbkdvRm9yd2FyZCwgZmFsc2UpCisgICAgICAgICAgICBjb21wYXJlKGJhY2tJdGVt
c0xpc3QuY291bnQsIDIpCisgICAgICAgICAgICBjb21wYXJlKGZvcndhcmRJdGVtc0xpc3QuY291
bnQsIDApCisgICAgICAgICAgICBzcHkuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy5nb0Jh
Y2soKQorICAgICAgICAgICAgc3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3
LnVybCwgUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90ZXN0Mi5odG1sIikpCisgICAgICAgICAg
ICBjb21wYXJlKHdlYlZpZXcuY2FuR29CYWNrLCB0cnVlKQorICAgICAgICAgICAgY29tcGFyZSh3
ZWJWaWV3LmNhbkdvRm9yd2FyZCwgdHJ1ZSkKKyAgICAgICAgICAgIGNvbXBhcmUoYmFja0l0ZW1z
TGlzdC5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUoZm9yd2FyZEl0ZW1zTGlzdC5jb3Vu
dCwgMSkKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50LmNwcAppbmRleCBhMjQ4MGUzNzBiZjkxZWY3MWRl
YWZmMzIwNzI0ZTM1N2UzOGU1OGQ0Li4xM2FmYjIxNDAyN2IyOWY4NWNkZWIzMWU3ZWVhYjJiNjg5
MjQ3YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdl
TG9hZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZUxvYWRDbGllbnQuY3BwCkBAIC00NSw2ICs0NSw3IEBAIFF0V2ViUGFnZUxvYWRDbGllbnQ6OlF0
V2ViUGFnZUxvYWRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFFRdWlja1dlYlZpZXcqIHdlYlZp
CiAgICAgbG9hZENsaWVudC5kaWRDaGFuZ2VQcm9ncmVzcyA9IGRpZENoYW5nZVByb2dyZXNzOwog
ICAgIGxvYWRDbGllbnQuZGlkRmluaXNoUHJvZ3Jlc3MgPSBkaWRGaW5pc2hQcm9ncmVzczsKICAg
ICBsb2FkQ2xpZW50LmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lID0gZGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWU7CisgICAgbG9hZENsaWVudC5kaWRD
aGFuZ2VCYWNrRm9yd2FyZExpc3QgPSBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Q7CiAgICAgV0tQ
YWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlUmVmLCAmbG9hZENsaWVudCk7CiB9CiAKQEAgLTc3
LDYgKzc4LDExIEBAIHZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUoKQogICAgIG1fd2ViVmlldy0+ZF9mdW5jKCktPmRpZEZpbmlz
aEZpcnN0Tm9uRW1wdHlMYXlvdXQoKTsKIH0KIAordm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50Ojpk
aWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoKQoreworICAgIG1fd2ViVmlldy0+ZF9mdW5jKCktPmRp
ZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgpOworfQorCiB2b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6
OmRpc3BhdGNoTG9hZFN1Y2NlZWRlZCgpCiB7CiAgICAgZW1pdCBtX3dlYlZpZXctPm5hdmlnYXRp
b25TdGF0ZUNoYW5nZWQoKTsKQEAgLTE4MiwzICsxODgsOCBAQCB2b2lkIFF0V2ViUGFnZUxvYWRD
bGllbnQ6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdLUGFnZVJlZiwg
V0tGcgogICAgICAgICByZXR1cm47CiAgICAgdG9RdFdlYlBhZ2VMb2FkQ2xpZW50KGNsaWVudElu
Zm8pLT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSgpOwogfQorCit2b2lk
IFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXS1BhZ2VSZWYs
IFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiwgV0tBcnJheVJlZiwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbykKK3sKKyAgICB0b1F0V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5mbyktPmRpZENoYW5n
ZUJhY2tGb3J3YXJkTGlzdCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VMb2FkQ2xpZW50LmgKaW5kZXggMDNmMmYwZWVkMzAxM2EwZDRjMTFkYWIzMzE1
MDc3Mzc4ZWFiYzUyNy4uZmJkYjkyZTdiZTY5ZGE1YTNkN2Q4ZjNjYmU2NjI3ODUzYWQ3YjI0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVu
dC5oCkBAIC00MCw2ICs0MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWUoY29uc3QgUVVybCYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxl
Rm9yRnJhbWUoY29uc3QgUVN0cmluZyYpOwogICAgIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9yRnJhbWUoKTsKKyAgICB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgp
OwogCiAgICAgdm9pZCBkaXNwYXRjaExvYWRTdWNjZWVkZWQoKTsKICAgICB2b2lkIGRpc3BhdGNo
TG9hZEZhaWxlZChXS0Vycm9yUmVmKTsKQEAgLTU3LDYgKzU4LDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFByb2dyZXNzKFdLUGFnZVJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYgdXNl
ckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZENoYW5n
ZUJhY2tGb3J3YXJkTGlzdChXS1BhZ2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiwgV0tB
cnJheVJlZiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiAKICAgICBRUXVpY2tXZWJWaWV3KiBt
X3dlYlZpZXc7CiAgICAgaW50IG1fbG9hZFByb2dyZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKaW5kZXggMDM2MDExZTJhMmY5YzgzMzA4MzM3
YzQxNTA1ZTRkZTUwZWZmNGRiMy4uZDUxMjVmMDljYWFkYjdjMzI0MWRhYWZlMTY4ODQzZWFiYWQy
ZTc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
Y3BwCkBAIC0yOCwxNCArMjgsMTQgQEAKICNpbmNsdWRlICJxcXVpY2t3ZWJwYWdlX3AuaCIKICNp
bmNsdWRlICJxd2ViZG93bmxvYWRpdGVtX3AuaCIKICNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVt
X3BfcC5oIgorI2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wLmgiCisjaW5jbHVkZSAi
cXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfcC5oIgogI2luY2x1ZGUgInF3ZWJwcmVmZXJlbmNlc19w
LmgiCiAjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzX3BfcC5oIgogCiAjaW5jbHVkZSAiRG93bmxv
YWRQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCiAjaW5jbHVkZSAi
TGF5ZXJUcmVlSG9zdFByb3h5LmgiCi0jaW5jbHVkZSAicXdraGlzdG9yeS5oIgotI2luY2x1ZGUg
InF3a2hpc3RvcnlfcC5oIgogI2luY2x1ZGUgIlF0RG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiUXRQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmgiCkBA
IC02Niw3ICs2Niw3IEBAIFF0V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94eShRUXVpY2tXZWJQ
YWdlKiBxbWxXZWJQYWdlLCBRUXVpY2tXZWJWaWV3KiBxbWxXZWJWCiAgICAgLCBtX25hdmlnYXRv
clF0T2JqZWN0RW5hYmxlZChmYWxzZSkKIHsKICAgICBtX3dlYlBhZ2VQcm94eSA9IG1fY29udGV4
dC0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCB0b0ltcGwocGFnZUdyb3VwUmVmKSk7Ci0gICAg
bV9oaXN0b3J5ID0gUVdLSGlzdG9yeVByaXZhdGU6OmNyZWF0ZUhpc3RvcnkodGhpcywgbV93ZWJQ
YWdlUHJveHktPmJhY2tGb3J3YXJkTGlzdCgpKTsKKyAgICBtX25hdmlnYXRpb25IaXN0b3J5ID0g
YWRvcHRQdHIoUVdlYk5hdmlnYXRpb25IaXN0b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeSh0aGlz
LCB0b0FQSShtX3dlYlBhZ2VQcm94eS0+YmFja0ZvcndhcmRMaXN0KCkpKSk7CiB9CiAKIHZvaWQg
UXRXZWJQYWdlUHJveHk6OmluaXQoUXRXZWJQYWdlRXZlbnRIYW5kbGVyKiBldmVudEhhbmRsZXIp
CkBAIC03OCw3ICs3OCw2IEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6OmluaXQoUXRXZWJQYWdlRXZl
bnRIYW5kbGVyKiBldmVudEhhbmRsZXIpCiBRdFdlYlBhZ2VQcm94eTo6flF0V2ViUGFnZVByb3h5
KCkKIHsKICAgICBtX3dlYlBhZ2VQcm94eS0+Y2xvc2UoKTsKLSAgICBkZWxldGUgbV9oaXN0b3J5
OwogfQogCiB2b2lkIFF0V2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUoUVNoYXJlZFBvaW50
ZXI8UU1lbnU+IG1lbnUpCkBAIC0yMTAsNiArMjA5LDExIEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6
OmdvQmFjaygpCiAgICAgbV93ZWJQYWdlUHJveHktPmdvQmFjaygpOwogfQogCit2b2lkIFF0V2Vi
UGFnZVByb3h5Ojpnb0JhY2tUbyhpbnQgaW5kZXgpCit7CisgICAgbV9uYXZpZ2F0aW9uSGlzdG9y
eS0+ZC0+Z29CYWNrVG8oaW5kZXgpOworfQorCiBib29sIFF0V2ViUGFnZVByb3h5OjpjYW5Hb0Zv
cndhcmQoKSBjb25zdAogewogICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS0+Y2FuR29Gb3J3YXJk
KCk7CkBAIC0yMjAsNiArMjI0LDExIEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6OmdvRm9yd2FyZCgp
CiAgICAgbV93ZWJQYWdlUHJveHktPmdvRm9yd2FyZCgpOwogfQogCit2b2lkIFF0V2ViUGFnZVBy
b3h5Ojpnb0ZvcndhcmRUbyhpbnQgaW5kZXgpCit7CisgICAgbV9uYXZpZ2F0aW9uSGlzdG9yeS0+
ZC0+Z29Gb3J3YXJkVG8oaW5kZXgpOworfQorCiBib29sIFF0V2ViUGFnZVByb3h5Ojpsb2FkaW5n
KCkgY29uc3QKIHsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJGcmFtZVByb3h5PiBtYWluRnJhbWUg
PSBtX3dlYlBhZ2VQcm94eS0+bWFpbkZyYW1lKCk7CkBAIC0zNTgsOSArMzY3LDkgQEAgdm9pZCBR
dFdlYlBhZ2VQcm94eTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhxcmVhbCBwYWdlWm9vbUZh
Y3RvciwgcXJlYWwgdGV4dFoKICAgICBXS1BhZ2VTZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKHBh
Z2VSZWYoKSwgcGFnZVpvb21GYWN0b3IsIHRleHRab29tRmFjdG9yKTsKIH0KIAotUVdLSGlzdG9y
eSogUXRXZWJQYWdlUHJveHk6Omhpc3RvcnkoKSBjb25zdAorUVdlYk5hdmlnYXRpb25IaXN0b3J5
KiBRdFdlYlBhZ2VQcm94eTo6bmF2aWdhdGlvbkhpc3RvcnkoKSBjb25zdAogewotICAgIHJldHVy
biBtX2hpc3Rvcnk7CisgICAgcmV0dXJuIG1fbmF2aWdhdGlvbkhpc3RvcnkuZ2V0KCk7CiB9CiAK
IHZvaWQgUXRXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYg
ZHJhZ0RhdGEsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCmluZGV4IGVkNDg3YWEwMDZm
YWEwZGYyMDVjYzk3NDUyY2M4MDMwM2VmNWJlNTEuLjllNWQ5NDRhZWNiYTU2NDY4YTFkNjU0MTc0
N2M3MzUxYmQ3ZTkwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VQcm94eS5oCkBAIC00MCw4ICs0MCw4IEBAIGNsYXNzIFFRdWlja1dlYlZpZXc7CiBjbGFzcyBR
dFdlYkVycm9yOwogY2xhc3MgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOwogY2xhc3MgUVdlYkRvd25s
b2FkSXRlbTsKK2NsYXNzIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeTsKIGNsYXNzIFFXZWJQcmVmZXJl
bmNlczsKLWNsYXNzIFFXS0hpc3Rvcnk7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUXRX
ZWJDb250ZXh0OwpAQCAtOTgsOCArOTgsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBjYW5Hb0Jh
Y2soKSBjb25zdDsKICAgICB2b2lkIGdvQmFjaygpOworICAgIHZvaWQgZ29CYWNrVG8oaW50IGlu
ZGV4KTsKICAgICBib29sIGNhbkdvRm9yd2FyZCgpIGNvbnN0OwogICAgIHZvaWQgZ29Gb3J3YXJk
KCk7CisgICAgdm9pZCBnb0ZvcndhcmRUbyhpbnQgaW5kZXgpOwogICAgIGJvb2wgbG9hZGluZygp
IGNvbnN0OwogICAgIHZvaWQgc3RvcCgpOwogICAgIGJvb2wgY2FuUmVsb2FkKCkgY29uc3Q7CkBA
IC0xMzksNyArMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVuZGVyVG9DdXJyZW50R0xDb250
ZXh0KGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQpOwogICAgIHZv
aWQgcHVyZ2VHTFJlc291cmNlcygpOwogCi0gICAgUVdLSGlzdG9yeSogaGlzdG9yeSgpIGNvbnN0
OworICAgIFFXZWJOYXZpZ2F0aW9uSGlzdG9yeSogbmF2aWdhdGlvbkhpc3RvcnkoKSBjb25zdDsK
IAogICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJ
dGVtRGF0YSYgZGF0YSkKICAgICB7CkBAIC0xNzIsNyArMTc0LDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAgICAgUmVmUHRyPFF0V2ViQ29udGV4dD4gbV9jb250ZXh0OwotICAgIFFXS0hpc3Rvcnkq
IG1faGlzdG9yeTsKKyAgICBPd25QdHI8UVdlYk5hdmlnYXRpb25IaXN0b3J5PiBtX25hdmlnYXRp
b25IaXN0b3J5OwogCiAgICAgbXV0YWJsZSBPd25QdHI8UVdlYlByZWZlcmVuY2VzPiBtX3ByZWZl
cmVuY2VzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdraGlz
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjMTQyNWYwZjA3NTBiZDY2MWQ3ZGQxYWM4MWZl
MWE4ZTg0YTVkNDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSnVoYSBTYXZv
bGFpbmVuIChqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmkpCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAicXdraGlzdG9yeS5oIgotCi0jaW5jbHVkZSA8UVNoYXJlZERhdGE+Ci0jaW5jbHVk
ZSA8UVN0cmluZz4KLSNpbmNsdWRlIDxRVXJsPgotI2luY2x1ZGUgIlF0V2ViUGFnZVByb3h5Lmgi
Ci0jaW5jbHVkZSAicXdraGlzdG9yeV9wLmgiCi0jaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0
LmgiCi0jaW5jbHVkZSA8V2ViS2l0Mi9XS0FycmF5Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS1Jl
dGFpblB0ci5oPgotI2luY2x1ZGUgIldLQmFja0ZvcndhcmRMaXN0LmgiCi0jaW5jbHVkZSAiV0tT
dHJpbmdRdC5oIgotI2luY2x1ZGUgIldLVVJMLmgiCi0jaW5jbHVkZSAiV0tVUkxRdC5oIgotCi11
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1RV0tIaXN0b3J5SXRlbVByaXZhdGU6OlFXS0hpc3Rv
cnlJdGVtUHJpdmF0ZShXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgbGlzdEl0ZW0pCi0gICAgOiBt
X2JhY2tGb3J3YXJkTGlzdEl0ZW0obGlzdEl0ZW0pCi17Ci19Ci0KLVFXS0hpc3RvcnlJdGVtUHJp
dmF0ZTo6flFXS0hpc3RvcnlJdGVtUHJpdmF0ZSgpCi17Ci19Ci0KLVFXS0hpc3RvcnlJdGVtOjpR
V0tIaXN0b3J5SXRlbShjb25zdCBRV0tIaXN0b3J5SXRlbSYgb3RoZXIpCi0gICAgOiBkKG90aGVy
LmQpIAotewotfQotCi1RV0tIaXN0b3J5SXRlbSYgUVdLSGlzdG9yeUl0ZW06OlFXS0hpc3RvcnlJ
dGVtOjpvcGVyYXRvcj0oY29uc3QgUVdLSGlzdG9yeUl0ZW0mIG90aGVyKSAKLXsgCi0gICAgZCA9
IG90aGVyLmQ7Ci0gICAgcmV0dXJuICp0aGlzOyAKLX0KLQotUVdLSGlzdG9yeUl0ZW06OlFXS0hp
c3RvcnlJdGVtKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtKQotICAgIDogZChuZXcgUVdL
SGlzdG9yeUl0ZW1Qcml2YXRlKGl0ZW0pKQotewotfQotCi1RV0tIaXN0b3J5SXRlbTo6flFXS0hp
c3RvcnlJdGVtKCkKLXsKLX0KLQotUVN0cmluZyBRV0tIaXN0b3J5SXRlbTo6dGl0bGUoKSBjb25z
dAotewotICAgIGlmICghZC0+bV9iYWNrRm9yd2FyZExpc3RJdGVtKQotICAgICAgICByZXR1cm4g
UVN0cmluZygpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0aXRsZShBZG9wdFdLLCBX
S0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGl0bGUoZC0+bV9iYWNrRm9yd2FyZExpc3RJdGVtLmdl
dCgpKSk7Ci0gICAgcmV0dXJuIFdLU3RyaW5nQ29weVFTdHJpbmcodGl0bGUuZ2V0KCkpOwotfQot
Ci1RVXJsIFFXS0hpc3RvcnlJdGVtOjp1cmwoKSBjb25zdAotewotICAgIGlmICghZC0+bV9iYWNr
Rm9yd2FyZExpc3RJdGVtKQotICAgICAgICByZXR1cm4gUVVybCgpOwotICAgIFdLUmV0YWluUHRy
PFdLVVJMUmVmPiB1cmwoQWRvcHRXSywgV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weVVSTChkLT5t
X2JhY2tGb3J3YXJkTGlzdEl0ZW0uZ2V0KCkpKTsKLSAgICByZXR1cm4gV0tVUkxDb3B5UVVybCh1
cmwuZ2V0KCkpOwotfQotCi1RV0tIaXN0b3J5UHJpdmF0ZTo6UVdLSGlzdG9yeVByaXZhdGUoUXRX
ZWJQYWdlUHJveHkqIHBhZ2UsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0KiBsaXN0KQotICAg
IDogbV9wYWdlKHBhZ2UpCi0gICAgLCBtX2JhY2tGb3J3YXJkTGlzdChsaXN0KQotewotfQotCi1R
V0tIaXN0b3J5KiBRV0tIaXN0b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeShRdFdlYlBhZ2VQcm94
eSogcGFnZSwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqIGxpc3QpCi17Ci0gICAgUVdLSGlz
dG9yeSogaGlzdG9yeSA9IG5ldyBRV0tIaXN0b3J5KCk7Ci0gICAgaGlzdG9yeS0+ZCA9IG5ldyBR
V0tIaXN0b3J5UHJpdmF0ZShwYWdlLCBsaXN0KTsKLSAgICByZXR1cm4gaGlzdG9yeTsKLX0KLQot
UVdLSGlzdG9yeVByaXZhdGU6On5RV0tIaXN0b3J5UHJpdmF0ZSgpCi17Ci19Ci0KLVFXS0hpc3Rv
cnk6OlFXS0hpc3RvcnkoKQotewotfQotCi1RV0tIaXN0b3J5Ojp+UVdLSGlzdG9yeSgpCi17Ci0g
ICAgZGVsZXRlIGQ7Ci19Ci0KLWludCBRV0tIaXN0b3J5OjpiYWNrTGlzdENvdW50KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gV0tCYWNrRm9yd2FyZExpc3RHZXRCYWNrTGlzdENvdW50KHRvQVBJKGQt
Pm1fYmFja0ZvcndhcmRMaXN0KSk7Ci19Ci0KLWludCBRV0tIaXN0b3J5Ojpmb3J3YXJkTGlzdENv
dW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gV0tCYWNrRm9yd2FyZExpc3RHZXRGb3J3YXJkTGlz
dENvdW50KHRvQVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0KSk7Ci19Ci0KLWludCBRV0tIaXN0b3J5
Ojpjb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGJhY2tMaXN0Q291bnQoKSArIGZvcndhcmRM
aXN0Q291bnQoKTsKLX0KLQotUVdLSGlzdG9yeUl0ZW0gUVdLSGlzdG9yeTo6Y3VycmVudEl0ZW0o
KSBjb25zdAotewotICAgIFdLUmV0YWluUHRyPFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gaXRl
bVJlZiA9IFdLQmFja0ZvcndhcmRMaXN0R2V0Q3VycmVudEl0ZW0odG9BUEkoZC0+bV9iYWNrRm9y
d2FyZExpc3QpKTsKLSAgICBRV0tIaXN0b3J5SXRlbSBpdGVtKGl0ZW1SZWYuZ2V0KCkpOwotICAg
IHJldHVybiBpdGVtOwotfQotCi1RV0tIaXN0b3J5SXRlbSBRV0tIaXN0b3J5OjpiYWNrSXRlbSgp
IGNvbnN0Ci17Ci0gICAgV0tSZXRhaW5QdHI8V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBpdGVt
UmVmID0gV0tCYWNrRm9yd2FyZExpc3RHZXRCYWNrSXRlbSh0b0FQSShkLT5tX2JhY2tGb3J3YXJk
TGlzdCkpOwotICAgIFFXS0hpc3RvcnlJdGVtIGl0ZW0oaXRlbVJlZi5nZXQoKSk7Ci0gICAgcmV0
dXJuIGl0ZW07Ci19Ci0KLVFXS0hpc3RvcnlJdGVtIFFXS0hpc3Rvcnk6OmZvcndhcmRJdGVtKCkg
Y29uc3QKLXsKLSAgICBXS1JldGFpblB0cjxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+IGl0ZW1S
ZWYgPSBXS0JhY2tGb3J3YXJkTGlzdEdldEZvcndhcmRJdGVtKHRvQVBJKGQtPm1fYmFja0Zvcndh
cmRMaXN0KSk7Ci0gICAgUVdLSGlzdG9yeUl0ZW0gaXRlbShpdGVtUmVmLmdldCgpKTsKLSAgICBy
ZXR1cm4gaXRlbTsKLX0KLQotUVdLSGlzdG9yeUl0ZW0gUVdLSGlzdG9yeTo6aXRlbUF0KGludCBp
bmRleCkgY29uc3QKLXsKLSAgICBXS1JldGFpblB0cjxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+
IGl0ZW1SZWYgPSBXS0JhY2tGb3J3YXJkTGlzdEdldEl0ZW1BdEluZGV4KHRvQVBJKGQtPm1fYmFj
a0ZvcndhcmRMaXN0KSwgaW5kZXgpOwotICAgIFFXS0hpc3RvcnlJdGVtIGl0ZW0oaXRlbVJlZi5n
ZXQoKSk7Ci0gICAgcmV0dXJuIGl0ZW07Ci19Ci0KLXZvaWQgUVdLSGlzdG9yeTo6Z29Ub0l0ZW1B
dChpbnQgaW5kZXgpIGNvbnN0Ci17Ci0gICAgV0tSZXRhaW5QdHI8V0tCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmPiBpdGVtUmVmID0gV0tCYWNrRm9yd2FyZExpc3RHZXRJdGVtQXRJbmRleCh0b0FQSShk
LT5tX2JhY2tGb3J3YXJkTGlzdCksIGluZGV4KTsKLSAgICBpZiAoaXRlbVJlZiAmJiBkLT5tX3Bh
Z2UpIHsKLSAgICAgICAgUVdLSGlzdG9yeUl0ZW0gaXRlbShpdGVtUmVmLmdldCgpKTsKLSAgICAg
ICAgV0tQYWdlR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oZC0+bV9wYWdlLT5wYWdlUmVmKCksIGl0
ZW0uZC0+bV9iYWNrRm9yd2FyZExpc3RJdGVtLmdldCgpKTsKLSAgICB9Ci19Ci0KLVFMaXN0PFFX
S0hpc3RvcnlJdGVtPiBRV0tIaXN0b3J5OjpiYWNrSXRlbXMoaW50IG1heEl0ZW1zKSBjb25zdAot
ewotICAgIFdLQXJyYXlSZWYgYXJyYXlSZWYgPSBXS0JhY2tGb3J3YXJkTGlzdENvcHlCYWNrTGlz
dFdpdGhMaW1pdCh0b0FQSShkLT5tX2JhY2tGb3J3YXJkTGlzdCksIG1heEl0ZW1zKTsKLSAgICBp
bnQgc2l6ZSA9IFdLQXJyYXlHZXRTaXplKGFycmF5UmVmKTsKLSAgICBRTGlzdDxRV0tIaXN0b3J5
SXRlbT4gaXRlbUxpc3Q7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAg
ICAgICAgV0tUeXBlUmVmIHdrSGlzdG9yeUl0ZW0gPSBXS0FycmF5R2V0SXRlbUF0SW5kZXgoYXJy
YXlSZWYsIGkpOwotICAgICAgICBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZiA9IHN0
YXRpY19jYXN0PFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4od2tIaXN0b3J5SXRlbSk7Ci0gICAg
ICAgIFFXS0hpc3RvcnlJdGVtIGl0ZW0oaXRlbVJlZik7Ci0gICAgICAgIGl0ZW1MaXN0LmFwcGVu
ZChpdGVtKTsKLSAgICB9Ci0gICAgcmV0dXJuIGl0ZW1MaXN0OwotfQotCi1RTGlzdDxRV0tIaXN0
b3J5SXRlbT4gUVdLSGlzdG9yeTo6Zm9yd2FyZEl0ZW1zKGludCBtYXhJdGVtcykgY29uc3QKLXsK
LSAgICBXS0FycmF5UmVmIGFycmF5UmVmID0gV0tCYWNrRm9yd2FyZExpc3RDb3B5Rm9yd2FyZExp
c3RXaXRoTGltaXQodG9BUEkoZC0+bV9iYWNrRm9yd2FyZExpc3QpLCBtYXhJdGVtcyk7Ci0gICAg
aW50IHNpemUgPSBXS0FycmF5R2V0U2l6ZShhcnJheVJlZik7Ci0gICAgUUxpc3Q8UVdLSGlzdG9y
eUl0ZW0+IGl0ZW1MaXN0OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgIFdLVHlwZVJlZiB3a0hpc3RvcnlJdGVtID0gV0tBcnJheUdldEl0ZW1BdEluZGV4KGFy
cmF5UmVmLCBpKTsKLSAgICAgICAgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYgPSBz
dGF0aWNfY2FzdDxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+KHdrSGlzdG9yeUl0ZW0pOwotICAg
ICAgICBRV0tIaXN0b3J5SXRlbSBpdGVtKGl0ZW1SZWYpOwotICAgICAgICBpdGVtTGlzdC5hcHBl
bmQoaXRlbSk7Ci0gICAgfQotICAgIHJldHVybiBpdGVtTGlzdDsKLX0KLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGUwMzUxM2ZkYTVhY2MyOTlkZDZiNDNkNTBjNjBlMGU0MzExOTI0MDEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L3F3a2hpc3RvcnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgSnVoYSBTYXZvbGFpbmVuIChqdWhhLnNhdm9sYWluZW5Ad2VlZ28u
ZmkpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0q
LwotCi0jaWZuZGVmIHF3a2hpc3RvcnlfaAotI2RlZmluZSBxd2toaXN0b3J5X2gKLQotI2luY2x1
ZGUgIldlYktpdDIvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmgiCi0jaW5jbHVkZSAicXdlYmtpdGds
b2JhbC5oIgotI2luY2x1ZGUgPFFPYmplY3Q+Ci0jaW5jbHVkZSA8UVNoYXJlZERhdGE+Ci0KLWNs
YXNzIFFXS0hpc3RvcnlQcml2YXRlOwotY2xhc3MgUVdLSGlzdG9yeUl0ZW1Qcml2YXRlOwotY2xh
c3MgUVVybDsKLWNsYXNzIFFTdHJpbmc7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2Vi
QmFja0ZvcndhcmRMaXN0OwotfQotCi1jbGFzcyBRV0VCS0lUX0VYUE9SVCBRV0tIaXN0b3J5SXRl
bSB7Ci1wdWJsaWM6Ci0gICAgUVdLSGlzdG9yeUl0ZW0oY29uc3QgUVdLSGlzdG9yeUl0ZW0mIG90
aGVyKTsKLSAgICBRV0tIaXN0b3J5SXRlbSAmb3BlcmF0b3I9KGNvbnN0IFFXS0hpc3RvcnlJdGVt
JiBvdGhlcik7Ci0KLSAgICB+UVdLSGlzdG9yeUl0ZW0oKTsKLSAgICBRU3RyaW5nIHRpdGxlKCkg
Y29uc3Q7Ci0gICAgUVVybCB1cmwoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBRV0tIaXN0b3J5
SXRlbShXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYpOwotCi0gICAgUUV4cGxpY2l0bHlTaGFyZWRE
YXRhUG9pbnRlcjxRV0tIaXN0b3J5SXRlbVByaXZhdGU+IGQ7Ci0KLSAgICBmcmllbmQgY2xhc3Mg
UVdLSGlzdG9yeTsKLSAgICBmcmllbmQgY2xhc3MgUVdLSGlzdG9yeUl0ZW1Qcml2YXRlOwotfTsK
LQotY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdLSGlzdG9yeSA6IHB1YmxpYyBRT2JqZWN0IHsKLSAg
ICBRX09CSkVDVAotcHVibGljOgotICAgIGludCBiYWNrTGlzdENvdW50KCkgY29uc3Q7Ci0gICAg
aW50IGZvcndhcmRMaXN0Q291bnQoKSBjb25zdDsKLSAgICBpbnQgY291bnQoKSBjb25zdDsKLSAg
ICBRV0tIaXN0b3J5SXRlbSBjdXJyZW50SXRlbSgpIGNvbnN0OwotICAgIFFXS0hpc3RvcnlJdGVt
IGJhY2tJdGVtKCkgY29uc3Q7Ci0gICAgUVdLSGlzdG9yeUl0ZW0gZm9yd2FyZEl0ZW0oKSBjb25z
dDsKLSAgICBRV0tIaXN0b3J5SXRlbSBpdGVtQXQoaW50IGluZGV4KSBjb25zdDsKLSAgICB2b2lk
IGdvVG9JdGVtQXQoaW50IGluZGV4KSBjb25zdDsKLSAgICBRTGlzdDxRV0tIaXN0b3J5SXRlbT4g
YmFja0l0ZW1zKGludCBtYXhJdGVtcykgY29uc3Q7Ci0gICAgUUxpc3Q8UVdLSGlzdG9yeUl0ZW0+
IGZvcndhcmRJdGVtcyhpbnQgbWF4SXRlbXMpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFFXS0hp
c3RvcnkoKTsKLSAgICB+UVdLSGlzdG9yeSgpOwotCi0gICAgUVdLSGlzdG9yeVByaXZhdGUqIGQ7
Ci0gICAgZnJpZW5kIGNsYXNzIFFXS0hpc3RvcnlQcml2YXRlOwotICAgIGZyaWVuZCBjbGFzcyBR
dFdlYlBhZ2VQcm94eTsKLX07Ci0jZW5kaWYgLyogcXdraGlzdG9yeV9oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdraGlzdG9yeV9wLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvcXdraGlzdG9yeV9wLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDBlZjE0M2UxNzU4ODA5NzI3OGZlOTZiOTEwYzQ1ZTc5MjI3MTE2N2EuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L3F3a2hpc3RvcnlfcC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBKdWhhIFNhdm9sYWluZW4gKGp1aGEuc2F2b2xhaW5l
bkB3ZWVnby5maSkKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0g
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSovCi0KLSNpZm5kZWYgcXdraGlzdG9yeV9wX2gKLSNkZWZpbmUgcXdraGlzdG9yeV9w
X2gKLQotI2luY2x1ZGUgPFFTaGFyZWREYXRhPgotI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIK
LSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LWNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKLX0KLQotY2xhc3MgUVdLSGlzdG9yeTsKLWNsYXNz
IFF0V2ViUGFnZVByb3h5OwotCi1jbGFzcyBRV0VCS0lUX0VYUE9SVCBRV0tIaXN0b3J5SXRlbVBy
aXZhdGUgOiBwdWJsaWMgUVNoYXJlZERhdGEgewotcHVibGljOgotICAgICAgIH5RV0tIaXN0b3J5
SXRlbVByaXZhdGUoKTsKLXByaXZhdGU6Ci0gICAgUVdLSGlzdG9yeUl0ZW1Qcml2YXRlKFdLQmFj
a0ZvcndhcmRMaXN0SXRlbVJlZiBsaXN0SXRlbSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tCYWNrRm9y
d2FyZExpc3RJdGVtUmVmPiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW07Ci0KLSAgICBmcmllbmQgY2xh
c3MgUVdLSGlzdG9yeTsKLSAgICBmcmllbmQgY2xhc3MgUVdLSGlzdG9yeUl0ZW07Ci19OwotCi1j
bGFzcyBRV0VCS0lUX0VYUE9SVCBRV0tIaXN0b3J5UHJpdmF0ZSB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFFXS0hpc3RvcnkqIGNyZWF0ZUhpc3RvcnkoUXRXZWJQYWdlUHJveHkqLCBXZWJLaXQ6Oldl
YkJhY2tGb3J3YXJkTGlzdCopOwotCi1wcml2YXRlOgotICAgIFFXS0hpc3RvcnlQcml2YXRlKFF0
V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqKTsKLSAgICB+UVdLSGlz
dG9yeVByaXZhdGUoKTsKLQotICAgIFF0V2ViUGFnZVByb3h5KiBtX3BhZ2U7Ci0gICAgV2ViS2l0
OjpXZWJCYWNrRm9yd2FyZExpc3QqIG1fYmFja0ZvcndhcmRMaXN0OwotCi0gICAgZnJpZW5kIGNs
YXNzIFFXS0hpc3Rvcnk7Ci19OwotCi0jZW5kaWYgLyogcXdraGlzdG9yeV9wX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9xdHdlYmtpdC1leHBvcnQubWFwIGIvU291cmNlL3F0d2Via2l0LWV4cG9y
dC5tYXAKaW5kZXggNGI2ZTc1ZmYxZTE5NmMxMmM1YzcwOGU1MGIwYzA0YTA2YmZjYWMwNC4uYjc3
NjkzYzQ5YmUyYjFlNGNkZDExN2ViYjViZDVjYmNlNjI3NmE0MiAxMDA2NDQKLS0tIGEvU291cmNl
L3F0d2Via2l0LWV4cG9ydC5tYXAKKysrIGIvU291cmNlL3F0d2Via2l0LWV4cG9ydC5tYXAKQEAg
LTExOCw2ICsxMTgsMTIgQEAgcXdrXzEuMCB7CiAgICAgICAgICpRUXVpY2tXZWJWaWV3RXhwZXJp
bWVudGFsOwogICAgICAgICBub24tdmlydHVhbD90aHVuaz90bz9RUXVpY2tXZWJWaWV3RXhwZXJp
bWVudGFsKjsKICAgICAgICAgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6KjsKKyAgICAgICAg
KlFXZWJOYXZpZ2F0aW9uSGlzdG9yeTsKKyAgICAgICAgbm9uLXZpcnR1YWw/dGh1bms/dG8/UVdl
Yk5hdmlnYXRpb25IaXN0b3J5KjsKKyAgICAgICAgUVdlYk5hdmlnYXRpb25IaXN0b3J5OjoqOwor
ICAgICAgICAqUVdlYk5hdmlnYXRpb25MaXN0TW9kZWw7CisgICAgICAgIG5vbi12aXJ0dWFsP3Ro
dW5rP3RvP1FXZWJOYXZpZ2F0aW9uTGlzdE1vZGVsKjsKKyAgICAgICAgUVdlYk5hdmlnYXRpb25M
aXN0TW9kZWw6Oio7CiAgICAgICAgICpRV2ViUHJlZmVyZW5jZXM7CiAgICAgICAgIG5vbi12aXJ0
dWFsP3RodW5rP3RvP1FXZWJQcmVmZXJlbmNlcyo7CiAgICAgICAgIFFXZWJQcmVmZXJlbmNlczo6
KjsKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyMzM4YjZiOGI5NDEy
NmZkMGJiYjhiYzUzMDc5MTUyOGE3OGEyYTY0Li5lYWM1NmYxMDhiNDgxMGZhYThmMzBhNTNlMjVk
NWFkOTQ2M2FmMzc1IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTEtMTItMTIgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9w
ZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIEhpc3RvcnkgaXMgbm90IGFjY2Vzc2li
bGUgaW4gUU1MLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzMwMTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgdGhlIG5ldyBRV2ViTmF2aWdhdGlvbkhpc3RvcnkgaW4gdGhlIG1hcCBmaWxlLgorCisg
ICAgICAgICogU291cmNlL3F0d2Via2l0LWV4cG9ydC5tYXA6CisKIDIwMTEtMTItMDkgIEplc3Vz
IFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgogCiAgICAg
ICAgIFtRdF0gcmVxdWVzdCBwYXJhbWV0ZXIgb2YgUVF1aWNrV2ViVmlldzo6bmF2aWdhdGlvblJl
cXVlc3RlZCBpcyBub3QgYSByZWdpc3RlcmVkIHR5cGUK
</data>
<flag name="review"
          id="118628"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>