<?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>81081</bug_id>
          
          <creation_ts>2012-03-13 23:14:21 -0700</creation_ts>
          <short_desc>[Chromium] Add PagePopup implementation</short_desc>
          <delta_ts>2012-04-12 02:59:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>83555</dependson>
    
    <dependson>83561</dependson>
    
    <dependson>83750</dependson>
          <blocked>53961</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>jianli</cc>
    
    <cc>kbr</cc>
    
    <cc>levin</cc>
    
    <cc>morrita</cc>
    
    <cc>pfeldman</cc>
    
    <cc>senorblanco</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>578184</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-13 23:14:21 -0700</bug_when>
    <thetext>[Chromium] Add PagePopup implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578215</commentid>
    <comment_count>1</comment_count>
      <attachid>131800</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-14 00:40:22 -0700</bug_when>
    <thetext>Created attachment 131800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578216</commentid>
    <comment_count>2</comment_count>
      <attachid>131800</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-14 00:41:38 -0700</bug_when>
    <thetext>Comment on attachment 131800
Patch

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

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:2
&gt; - * Copyright (C) 2009 Google Inc. All rights reserved.
&gt; + * Copyright (C) 2012 Google Inc. All rights reserved.

&apos;2009&apos; was incorrect. This file was committed in 2012.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579975</commentid>
    <comment_count>3</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-15 17:59:30 -0700</bug_when>
    <thetext>Add reviewers suggested by webkit-patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579994</commentid>
    <comment_count>4</comment_count>
      <attachid>131800</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-15 18:20:13 -0700</bug_when>
    <thetext>Comment on attachment 131800
Patch

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

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:994
&gt; +    if (!client)
&gt; +        return 0;

Should it be an error to call this function with a null client?

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:1001
&gt; +    ASSERT(popupWidget);
&gt; +    if (!popupWidget)
&gt; +        return 0;

Should we just crash in this case rather than returning zero?  If this case can happen, we should remove the asert.

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:57
&gt; +class PagePopupChromeClient : public EmptyChromeClient {

Hum...  So, the PagePopup has fake clients like an SVGImage?  How does this compare to the way &lt;select&gt; drop-downs are implemented?

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:63
&gt; +    {

Please add the explicit keywork to one-argument constructors.

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:156
&gt; +bool WebPagePopupImpl::initPage()

This is all reminding me of SVGImage, which is a less-than-ideal approach.  Rather than re-embedding WebCore at the WebKit layer, would it make more sense for the embedder to create a real WebView to hold the PagePopup?

Consider, for example, the case of showing &lt;video&gt; in the page popup.  That&apos;s something that doesn&apos;t work properly in an SVGImage and probably wouldn&apos;t work properly here either.  If the embedder provided a real WebView, then everything would be wired up normally...  I&apos;m sure there&apos;s a trade-off, but it might be worth considering.

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:258
&gt; +bool WebPagePopupImpl::handleInputEvent(const WebInputEvent&amp; event)

This function looks like another maintenance burden.  At least SVGImage is non-interactive...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579995</commentid>
    <comment_count>5</comment_count>
      <attachid>131800</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-15 18:22:10 -0700</bug_when>
    <thetext>Comment on attachment 131800
Patch

I&apos;m marking this R- for now.  I&apos;m not sure this is the best approach.  Maybe there are downsides to other approaches that I haven&apos;t considered...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579997</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-15 18:22:35 -0700</bug_when>
    <thetext>Have you looked at how the &lt;select&gt; popup works?  It seems you&apos;re trying to solve a very similar problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580009</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-15 18:27:35 -0700</bug_when>
    <thetext>What&apos;s this for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580013</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-15 18:29:28 -0700</bug_when>
    <thetext>&gt; What&apos;s this for?

tkent can probably give you more details, but my understanding is that this for things like &lt;input type=&quot;calendar&quot;&gt; to have a nice calendar picker popup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580033</commentid>
    <comment_count>9</comment_count>
      <attachid>131800</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-15 19:11:52 -0700</bug_when>
    <thetext>Comment on attachment 131800
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:57
&gt;&gt; +class PagePopupChromeClient : public EmptyChromeClient {
&gt; 
&gt; Hum...  So, the PagePopup has fake clients like an SVGImage?  How does this compare to the way &lt;select&gt; drop-downs are implemented?

&lt;select&gt; popup doesn&apos;t need ChromeClient because it doesn&apos;t have a Page.

&gt;&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:156
&gt;&gt; +bool WebPagePopupImpl::initPage()
&gt; 
&gt; This is all reminding me of SVGImage, which is a less-than-ideal approach.  Rather than re-embedding WebCore at the WebKit layer, would it make more sense for the embedder to create a real WebView to hold the PagePopup?
&gt; 
&gt; Consider, for example, the case of showing &lt;video&gt; in the page popup.  That&apos;s something that doesn&apos;t work properly in an SVGImage and probably wouldn&apos;t work properly here either.  If the embedder provided a real WebView, then everything would be wired up normally...  I&apos;m sure there&apos;s a trade-off, but it might be worth considering.

Yes, using a real WebView is worth considering.
I decided not to use WebView because
- I don&apos;t want to change focus on the main WebView when a popup is opened, but I want to support keyboard operation in a PagePopup.
  This is very similar to &lt;select&gt; popup.  So I think WebWidget is more suitable than WebView.
- PagePopup doesn&apos;t need many things which WebView provides.  It doesn&apos;t need to support &lt;video&gt;, x-webkit-speech, geolocation, etc.

I was afraid code duplication with WebViewImpl, but the code of WebpagePopupImpl is not so large. Surprisingly, WebPagePopupImpl.cpp is smaller than WebPopupMenuImpl.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580303</commentid>
    <comment_count>10</comment_count>
      <attachid>132234</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-16 02:33:34 -0700</bug_when>
    <thetext>Created attachment 132234
Patch 2

0-check and explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580304</commentid>
    <comment_count>11</comment_count>
      <attachid>131800</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-16 02:35:43 -0700</bug_when>
    <thetext>Comment on attachment 131800
Patch

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

&gt;&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:994
&gt;&gt; +        return 0;
&gt; 
&gt; Should it be an error to call this function with a null client?

I changed this ASSERT(client) because passing 0 is a wrong usage.

&gt;&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:1001
&gt;&gt; +        return 0;
&gt; 
&gt; Should we just crash in this case rather than returning zero?  If this case can happen, we should remove the asert.

I removed 0-check and return.  AFAIK, createPopupMenu() doesn&apos;t return 0.

&gt;&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:63
&gt;&gt; +    {
&gt; 
&gt; Please add the explicit keywork to one-argument constructors.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583969</commentid>
    <comment_count>12</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-21 04:03:50 -0700</bug_when>
    <thetext>Any other comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584237</commentid>
    <comment_count>13</comment_count>
      <attachid>132234</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-21 09:47:09 -0700</bug_when>
    <thetext>Comment on attachment 132234
Patch 2

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

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:210
&gt; +    // setValeuAndClosePopup() deletes the popup object. Do not access it.

Typo: setValeuAndClosePopup

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:337
&gt; +        m_v8this.Dispose();

Please Clear() the handle after Disposing it.

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:365
&gt; +    return adoptRef(new WebPagePopupImpl(client)).leakRef();

Can we hold this reference somewhere rather than calling leakRef() and deref() manually?  This ownership model is pretty fragile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584258</commentid>
    <comment_count>14</comment_count>
      <attachid>132234</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-21 10:00:13 -0700</bug_when>
    <thetext>Comment on attachment 132234
Patch 2

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

This patch doesn&apos;t seem well factored.  We&apos;re trying to do a bunch of work in the WebKit layer that doesn&apos;t really seem to belong here (e.g., V8 bindings).  We&apos;re also duplicating a bunch of code from elsewhere in the WebKit layer.  I need to study how the select popup works.  It seems like it&apos;s trying to do a similar thing, but I don&apos;t remember it having all these messy parts.

My overall sense is that this approach feels &quot;glued on&quot; rather than naturally fitting into the overall design of WebKit.

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:172
&gt; +    static EditorClient* emptyEditorClient = new EmptyEditorClient;
&gt; +    pageClients.editorClient = emptyEditorClient;
&gt; +#if ENABLE(CONTEXT_MENUS)
&gt; +    static ContextMenuClient* emptyContextMenuClient = new EmptyContextMenuClient;
&gt; +    pageClients.contextMenuClient = emptyContextMenuClient;
&gt; +#endif
&gt; +#if ENABLE(DRAG_SUPPORT)
&gt; +    static DragClient* emptyDragClient = new EmptyDragClient;
&gt; +    pageClients.dragClient = emptyDragClient;
&gt; +#endif
&gt; +#if ENABLE(INSPECTOR)
&gt; +    static InspectorClient* emptyInspectorClient = new EmptyInspectorClient;
&gt; +    pageClients.inspectorClient = emptyInspectorClient;
&gt; +#endif

This all feel reminiscent of the code for SVGImage, which is a pain to maintain.  Maybe WebCore should have a notion of a FakePage that we can use both for SVGImage and here?

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:199
&gt; +    {
&gt; +        v8::HandleScope handleScope;
&gt; +        v8::Handle&lt;v8::Context&gt; context = V8Proxy::mainWorldContext(frame.get());
&gt; +        if (context.IsEmpty())
&gt; +            return false;
&gt; +        v8::Context::Scope scope(context);
&gt; +        m_v8this = v8::Persistent&lt;v8::External&gt;::New(v8::External::New(this));
&gt; +        v8::Local&lt;v8::FunctionTemplate&gt; templ = v8::FunctionTemplate::New(setValueAndClosePopupCallback, m_v8this);
&gt; +        context-&gt;Global()-&gt;Set(v8::String::New(&quot;setValueAndClosePopup&quot;), v8::Handle&lt;v8::Function&gt;(templ-&gt;GetFunction()));
&gt; +    }

It feels wrong to have bindings code in the WebKit layer.  Wouldn&apos;t it be better to have the bindings code in WebCore/bindings and enable it via some sort of setting?

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:238
&gt; +void WebPagePopupImpl::paint(WebCanvas* canvas, const WebRect&amp; rect)

Is this code copy/pasted from elsewhere as well?

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:256
&gt; +bool WebPagePopupImpl::handleInputEvent(const WebInputEvent&amp; event)

This feels like an &quot;on the cheap&quot; re-implementation of WebViewImpl::handleInputEvent.  It seems like there should be some way of refactoring the code so we don&apos;t need to repeat ourselves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597249</commentid>
    <comment_count>15</comment_count>
      <attachid>132234</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-06 01:17:08 -0700</bug_when>
    <thetext>Comment on attachment 132234
Patch 2

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

I&apos;ll work on code sharing with WebVIewImpl.


&gt;&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:199
&gt;&gt; +    }
&gt; 
&gt; It feels wrong to have bindings code in the WebKit layer.  Wouldn&apos;t it be better to have the bindings code in WebCore/bindings and enable it via some sort of setting?

Supplimental=DOMWindow and V8EnabledAtRuntime might help.


&gt;&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:365
&gt;&gt; +    return adoptRef(new WebPagePopupImpl(client)).leakRef();
&gt; 
&gt; Can we hold this reference somewhere rather than calling leakRef() and deref() manually?  This ownership model is pretty fragile.

WebViewImpl might be able to own this.  I&apos;ll try it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597259</commentid>
    <comment_count>16</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-06 02:10:01 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; It feels wrong to have bindings code in the WebKit layer.  Wouldn&apos;t it be better to have the bindings code in WebCore/bindings and enable it via some sort of setting?
&gt; 
&gt; Supplimental=DOMWindow and V8EnabledAtRuntime might help.

I found V8EnabledAtRuntime didn&apos;t work in this case.  It&apos;s per-process setting, and I want per-page or per-window setting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597362</commentid>
    <comment_count>17</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-06 08:07:56 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; I&apos;ll work on code sharing with WebVIewImpl.

Is it acceptable to use virtual inheritance?  I&apos;d like to do:

class WebView : virtual public WebWidget { ...

class PageView : virtual public WebWidget { ... // Common implementation of WebViewImpl and WebPagePopupImpl

class WebViewImpl : public WebView, public PageView, ... { ...
class WebPagePopupImpl: public PageView, ... { ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598979</commentid>
    <comment_count>18</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-09 21:09:32 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #15)
&gt; &gt; I&apos;ll work on code sharing with WebVIewImpl.
&gt; 
&gt; Is it acceptable to use virtual inheritance?  I&apos;d like to do:
&gt; 
&gt; class WebView : virtual public WebWidget { ...
&gt; 
&gt; class PageView : virtual public WebWidget { ... // Common implementation of WebViewImpl and WebPagePopupImpl
&gt; 
&gt; class WebViewImpl : public WebView, public PageView, ... { ...
&gt; class WebPagePopupImpl: public PageView, ... { ...

I found we couldn&apos;t use virtual inheritance. We sometimes use WebWidget -&gt; WebView cast.

content/renderer/render_view_impl.cc:668:10: error: cannot cast &apos;WebKit::WebWidget *&apos; to &apos;WebKit::WebView *&apos; via virtual base &apos;WebKit::WebWidget&apos;
  return static_cast&lt;WebKit::WebView*&gt;(webwidget());
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599072</commentid>
    <comment_count>19</comment_count>
      <attachid>136409</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-10 00:26:08 -0700</bug_when>
    <thetext>Created attachment 136409
WIP

Sharing some code in WebViewImpl.cpp and WebPagePopupImpl.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600049</commentid>
    <comment_count>20</comment_count>
      <attachid>136626</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-10 23:02:30 -0700</bug_when>
    <thetext>Created attachment 136626
WIP 2

It depends on Bug 83561</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600113</commentid>
    <comment_count>21</comment_count>
      <attachid>136626</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-11 00:54:09 -0700</bug_when>
    <thetext>Comment on attachment 136626
WIP 2

Attachment 136626 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12383687</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600827</commentid>
    <comment_count>22</comment_count>
      <attachid>136813</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-11 20:06:59 -0700</bug_when>
    <thetext>Created attachment 136813
Patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600831</commentid>
    <comment_count>23</comment_count>
      <attachid>136813</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-11 20:12:16 -0700</bug_when>
    <thetext>Comment on attachment 136813
Patch 3

Attachment 136813 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12387439</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600837</commentid>
    <comment_count>24</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-11 20:21:29 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt;&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:365
&gt; &gt;&gt; +    return adoptRef(new WebPagePopupImpl(client)).leakRef();
&gt; &gt; 
&gt; &gt; Can we hold this reference somewhere rather than calling leakRef() and deref() manually?  This ownership model is pretty fragile.
&gt; 
&gt; WebViewImpl might be able to own this.  I&apos;ll try it.

I tried to make WebViewImpl::m_pagePopup OwnPtr&lt;&gt;. But I decided I didn&apos;t do it.
We need to close the popup before deleting the WebPagePopupImpl object. However WebWidgetClient::closeWidgetSoon() closes the widget asynchronously.  We can know the deletable timing by WebPagePopupImpl::close() callback.  I think deleting WebPagePopupImpl itself in close() is much simpler than notifying the timing to WebViewImpl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600838</commentid>
    <comment_count>25</comment_count>
      <attachid>136818</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-11 20:23:28 -0700</bug_when>
    <thetext>Created attachment 136818
Patch 4

fix release build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600847</commentid>
    <comment_count>26</comment_count>
      <attachid>136818</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-11 20:40:13 -0700</bug_when>
    <thetext>Comment on attachment 136818
Patch 4

Attachment 136818 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12387458

New failing tests:
compositing/checkerboard.html
compositing/absolute-position-changed-in-composited-layer.html
compositing/geometry/fixed-in-composited.html
compositing/layer-creation/fixed-position-scroll.html
compositing/iframes/nested-composited-iframe.html
compositing/iframes/overlapped-nested-iframes.html
compositing/geometry/limit-layer-bounds-fixed-positioned.html
compositing/geometry/vertical-scroll-composited.html
compositing/geometry/horizontal-scroll-composited.html
accessibility/aria-disabled.html
compositing/overflow/fixed-position-ancestor-clip.html
http/tests/cache/history-only-cached-subresource-loads.html
accessibility/aria-roles.html
http/tests/appcache/crash-when-navigating-away-then-back.html
accessibility/img-alt-tag-only-whitespace.html
http/tests/cache/history-only-cached-subresource-loads-max-age-https.html
compositing/geometry/fixed-position.html
compositing/iframes/fixed-position-iframe.html
compositing/scroll-painted-composited-content.html
compositing/absolute-position-changed-with-composited-parent-layer.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600848</commentid>
    <comment_count>27</comment_count>
      <attachid>136820</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-11 20:40:17 -0700</bug_when>
    <thetext>Created attachment 136820
Archive of layout-test-results from ec2-cr-linux-03

The attached test failures were seen while running run-webkit-tests on the chromium-ews.
Bot: ec2-cr-linux-03  Port: &lt;class &apos;webkitpy.common.config.ports.ChromiumXVFBPort&apos;&gt;  Platform: Linux-2.6.35-28-virtual-x86_64-with-Ubuntu-10.10-maverick</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600867</commentid>
    <comment_count>28</comment_count>
      <attachid>136822</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-11 21:37:11 -0700</bug_when>
    <thetext>Created attachment 136822
Patch 5

fix test failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600894</commentid>
    <comment_count>29</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-11 22:31:45 -0700</bug_when>
    <thetext>I can separate the PageWidgetDelegate part to another patch if this way to share code looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600900</commentid>
    <comment_count>30</comment_count>
      <attachid>136822</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-11 22:44:43 -0700</bug_when>
    <thetext>Comment on attachment 136822
Patch 5

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

&gt; Source/WebKit/chromium/src/PageWidgetDelegate.cpp:51
&gt; +    if (!page-&gt;mainFrame())
&gt; +        return 0;

Can a Page fail to have a mainFrame ?

&gt; Source/WebKit/chromium/src/PageWidgetDelegate.cpp:93
&gt; +    if (view &amp;&amp; page-&gt;mainFrame()-&gt;document()) {

You don&apos;t need to null-check from Frame to Document.  A Frame always has a Document.

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:60
&gt; +    explicit PagePopupChromeClient(WebPagePopupImpl* popup) : m_popup(popup)

&quot;: m_popup(popup)&quot; should be on its own line.

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:162
&gt; +    m_page-&gt;settings()-&gt;setScriptEnabled(true);
&gt; +    m_page-&gt;settings()-&gt;setAllowScriptsToCloseWindows(true);

What happens to the rest of the settings?  They get whatever random defaults we happen to set in Settings.cpp?

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:261
&gt; +    delete this;

There isn&apos;t a better object to own this one?

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:286
&gt; +    ASSERT(client);
&gt; +    if (!client)
&gt; +        return 0;

Why do we both ASSERT client and then handle the case when client is 0.  It seems like we should just crash in that case and be happy for the bug report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600901</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-11 22:45:06 -0700</bug_when>
    <thetext>tkent!  This is so much better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600902</commentid>
    <comment_count>32</comment_count>
      <attachid>136822</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-11 22:49:34 -0700</bug_when>
    <thetext>Comment on attachment 136822
Patch 5

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

&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:176
&gt; +    DocumentWriter* writer = frame-&gt;loader()-&gt;activeDocumentLoader()-&gt;writer();
&gt; +    writer-&gt;setMIMEType(&quot;text/html&quot;);
&gt; +    writer-&gt;setEncoding(&quot;UTF-8&quot;, false);
&gt; +    writer-&gt;begin();
&gt; +    m_popupClient-&gt;writeDocument(*writer);
&gt; +    writer-&gt;end();

I wonder if it would be easier to use the DocumentWriter::replaceDocument function.  What you really want to do is use &quot;srcdoc&quot;, but that&apos;s a feature of iframes, and not something that works on the main frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600905</commentid>
    <comment_count>33</comment_count>
      <attachid>136822</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-11 22:52:28 -0700</bug_when>
    <thetext>Comment on attachment 136822
Patch 5

There&apos;s a lot going on in this patch.  I don&apos;t feel like I&apos;m an expert in all of it.  Everything looks reasonable, and you say that you&apos;re confident in the details, so I&apos;m inclined to R+ the patch.  It&apos;s very possible that there are bugs in here that we&apos;ve missed, but we can iterate if that&apos;s the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600907</commentid>
    <comment_count>34</comment_count>
      <attachid>136822</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-11 22:54:06 -0700</bug_when>
    <thetext>Comment on attachment 136822
Patch 5

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

&gt; Source/WebKit/chromium/src/PageWidgetDelegate.cpp:190
&gt; +    // We call mouseMoved here instead of handleMouseMovedEvent because we need
&gt; +    // our ChromeClientImpl to receive changes to the mouse position and tooltip
&gt; +    // text, and mouseMoved handles all of that.
&gt; +    mainFrame.eventHandler()-&gt;mouseMoved(PlatformMouseEventBuilder(mainFrame.view(), event));

This makes me wonder if this isn&apos;t 100% factored perfectly, but I&apos;m not sure what to recommend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600933</commentid>
    <comment_count>35</comment_count>
      <attachid>136822</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-11 23:38:59 -0700</bug_when>
    <thetext>Comment on attachment 136822
Patch 5

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

&gt;&gt; Source/WebKit/chromium/src/PageWidgetDelegate.cpp:51
&gt;&gt; +        return 0;
&gt; 
&gt; Can a Page fail to have a mainFrame ?

Maybe no?
This is equivalent to the original code in WebViewImpl and WebFrameImpl.  I&apos;ll add a FIXME comment here.

&gt;&gt; Source/WebKit/chromium/src/PageWidgetDelegate.cpp:93
&gt;&gt; +    if (view &amp;&amp; page-&gt;mainFrame()-&gt;document()) {
&gt; 
&gt; You don&apos;t need to null-check from Frame to Document.  A Frame always has a Document.

The original code in WebFrameImpl had the document check.  I&apos;m not confident Frame::document() never be null.  I&apos;ll add a FIXME comment.

&gt;&gt; Source/WebKit/chromium/src/PageWidgetDelegate.cpp:190
&gt;&gt; +    mainFrame.eventHandler()-&gt;mouseMoved(PlatformMouseEventBuilder(mainFrame.view(), event));
&gt; 
&gt; This makes me wonder if this isn&apos;t 100% factored perfectly, but I&apos;m not sure what to recommend.

This was copied from WebViewImpl.cpp.

&gt;&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:60
&gt;&gt; +    explicit PagePopupChromeClient(WebPagePopupImpl* popup) : m_popup(popup)
&gt; 
&gt; &quot;: m_popup(popup)&quot; should be on its own line.

will do.

&gt;&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:162
&gt;&gt; +    m_page-&gt;settings()-&gt;setAllowScriptsToCloseWindows(true);
&gt; 
&gt; What happens to the rest of the settings?  They get whatever random defaults we happen to set in Settings.cpp?

Because this page will contain only specific documents and is not exposed to web developers, I don&apos;t care settings much.

&gt;&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:261
&gt;&gt; +    delete this;
&gt; 
&gt; There isn&apos;t a better object to own this one?

See https://bugs.webkit.org/show_bug.cgi?id=81081#c24

&gt;&gt; Source/WebKit/chromium/src/WebPagePopupImpl.cpp:286
&gt;&gt; +        return 0;
&gt; 
&gt; Why do we both ASSERT client and then handle the case when client is 0.  It seems like we should just crash in that case and be happy for the bug report.

will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600936</commentid>
    <comment_count>36</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-11 23:42:38 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; I can separate the PageWidgetDelegate part to another patch if this way to share code looks good.

Though the patch already has r+, I&apos;ll separate the patch into two parts and commit them without additional review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601018</commentid>
    <comment_count>37</comment_count>
      <attachid>136853</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-12 01:58:27 -0700</bug_when>
    <thetext>Created attachment 136853
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601027</commentid>
    <comment_count>38</comment_count>
      <attachid>136853</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-12 02:11:00 -0700</bug_when>
    <thetext>Comment on attachment 136853
Patch for landing

Rejecting attachment 136853 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebKit/chromium/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/12391325</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601029</commentid>
    <comment_count>39</comment_count>
      <attachid>136857</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-12 02:18:39 -0700</bug_when>
    <thetext>Created attachment 136857
Patch for landing

fill out the reviewer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601047</commentid>
    <comment_count>40</comment_count>
      <attachid>136857</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-12 02:59:51 -0700</bug_when>
    <thetext>Comment on attachment 136857
Patch for landing

Clearing flags on attachment: 136857

Committed r113956: &lt;http://trac.webkit.org/changeset/113956&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601048</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-12 02:59:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131800</attachid>
            <date>2012-03-14 00:40:22 -0700</date>
            <delta_ts>2012-03-16 02:35:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81081-20120314164020.patch</filename>
            <type>text/plain</type>
            <size>28348</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGNmZjNhOTc2NjgwYzJiZGQyOTkyZDJlYTY0MjczNmMxYWJkNWUxYTUuLjdlYWM2NzViNThiY2Zi
YzAzNzhhMDdmODcyMGVlZTg2OGJmZTFkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMTItMDMtMTMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIFBhZ2VQb3B1cCBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEwODEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViUGFn
ZVBvcHVwSW1wbCBjbGFzcywgd2hpY2ggaXMgYW4gaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAg
V2ViQ29yZTo6UGFnZVBvcHVwIGludGVyZmFjZSBhbmQgV2ViS2l0OjpXZWJQYWdlUG9wdXAgaW50
ZXJmYWNlLiBJdCdzIGEKKyAgICAgICAgV2ViV2lkZ2V0IHdoaWNoIGhhcyBhIFBhZ2Ugb2JqZWN0
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgbWFrZXMgbm8gYmVoYXZpb3Ig
Y2hhbmdlIHlldC4KKworICAgICAgICAqIFdlYktpdC5neXA6IEFkZCBXZWJQYWdlUG9wdXBJbXBs
LmgKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudEltcGw6Omhhc09wZW5lZFBvcHVwKToKKyAgICAgICAgRGVsZWdhdGUgdG8g
V2ViVmlld0ltcGw6Omhhc09wZW5lZFBvcHVwKCkuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudEltcGw6Om9wZW5QYWdlUG9wdXApOgorICAgICAgICBBZGRlZC4gQ2FsY3VsYXRlcyBhIGdv
b2QgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBwYWdlIHBvcHVwIGZyb20gdGhlCisgICAgICAg
IHNwZWNpZmllZCBlbGVtZW50IHJlY3RhbmdsZS4KKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50SW1wbDo6Y2xvc2VQYWdlUG9wdXApOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xp
ZW50SW1wbC5oOgorICAgICAgICAoQ2hyb21lQ2xpZW50SW1wbCk6IEFkZCBkZWxhcmF0aW9ucyBv
ZiBvcGVuUGFnZVBvcHVwIGFuZCBjbG9zZVBhZ2VQb3B1cC4KKyAgICAgICAgKiBzcmMvV2ViUGFn
ZVBvcHVwSW1wbC5jcHA6CisgICAgICAgIChQYWdlUG9wdXBDaHJvbWVDbGllbnQpOgorICAgICAg
ICBUaGlzIGlzIGEgbGlnaHQgaW1wbGVtZW50YXRpb24gb2YgQ2hyb21lQ2xpZW50IGZvciB0aGUg
cGFnZSBpbgorICAgICAgICBXZWJQYWdlUG9wdXBJbXBsLiBUaGlzIGlzIGEgZnJpZW5kIG9mIFdl
YlBhZ2VQb3B1cEltcGwgYmVjYXNlIG9mIGVhc2Ugb2YKKyAgICAgICAgYWNjZXNzIHRvIGl0cyBt
ZW1iZXJzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpXZWJQYWdlUG9wdXBJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6fldlYlBhZ2VQb3B1cElt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjppbml0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UpOgorICAgICAgICBNYWtlIGEgUGFn
ZSBhbmQgaW5qZWN0IHNldFZhbHVlQW5kQ2xvc2VQb3B1cCBmdW5jdGlvbi4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpzaXplKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVBvcHVwSW1wbDo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
b3B1cEltcGw6OmNvbXBvc2l0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6
OmxheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OnBhaW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6cmVzaXplKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVBvcHVwSW1wbDo6c2V0Rm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJ
bXBsOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmNsb3NlUG9w
dXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXA6OmNyZWF0ZSk6CisgICAgICAgICog
c3JjL1dlYlBhZ2VQb3B1cEltcGwuaDogQWRkZWQuCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmtleUV2ZW50KTogSWYgYSB2aXNp
YmxlIFBhZ2VQb3B1cCBleGlzdHMsIGZvcndhcmQga2V5IGV2ZW50cyB0byBpdC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OmNoYXJFdmVudCk6IGRpdHRvLgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6cG9wdXBPcGVuZWQpOgorICAgICAgICBBZGRlZC4gUmVnaXN0ZXIgYW4g
b3BlbmluZyBQYWdlUG9wdXAuIFN0b3AgY2FyZXQgYmxpbmtpbmcuCisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpwb3B1cENsb3NlZCk6CisgICAgICAgIEFkZGVkLiBVbnJlZ2lzdGVyIGEg
Y2xvc2luZyBQYWdlUG9wdXAuICBSZXN1bWUgY2FyZXQgYmxpbmtpbmcuCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRGb2N1cyk6CisgICAgICAgIFVzZSBoaWRlUG9wdXBzKCkgYmVj
YXVzZSB3ZSB3YW50IHRvIGFkZCBjb2RlIHRvIGNsb3NlIGEgUGFnZVBvcHVwLgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6aGlkZVBvcHVwcyk6CisgICAgICAgIEFkZCBjb2RlIHRvIGNs
b3NlIGEgUGFnZVBvcHVwLgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAo
V2ViVmlld0ltcGwpOiBBZGQgbV9wYWdlUG9wdXAgZGF0YSBtZW1iZXIgdG8gc3RvcmUgYSB2aXNp
YmxlIFBhZ2VQb3B1cC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omhhc09wZW5lZFBv
cHVwKTogQWRkZWQuCisKIDIwMTItMDMtMTMgIFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSB3cm9uZyB0cmFuc2Zvcm0gY2F1c2luZyBp
bmNvcnJlY3QgY3VsbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDFmNmMxOGM0
ZTZmZTA3MzRjYjI3MGU4Y2M3YTlkNzdjMTFmYTI2YmEuLmRkZjA4NzZiNDM0YWE2YWQ3YzI4MWQw
NGMwMTcxOGU0ZWIwMjRmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTYxNyw2
ICs2MTcsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViTm90aWZpY2F0aW9uLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJPcHRpb25FbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJQ
YWdlUG9wdXBJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViUGFnZVNlcmlhbGl6ZXIu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmgnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCA0ZDM4MWVj
NDk1Zjg2NjRhMzlhMTM1ZWY4YzUzNzE2MWZmOWUyYzE3Li5lOGE4ODIyYWNkYWE3OGRjMDViNmUz
N2YyOGFlY2NlODgxZTMwMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkdlb2xvY2F0
aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgorI2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKICNpbmNsdWRlICJJY29uLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtODEsNiArODIs
NyBAQAogI2luY2x1ZGUgIldlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUg
IldlYlBhZ2VQb3B1cEltcGwuaCIKICNpbmNsdWRlICJXZWJJY29uTG9hZGluZ0NvbXBsZXRpb25J
bXBsLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgpA
QCAtOTY5LDcgKzk3MSw3IEBAIGJvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c2VsZWN0SXRlbUFsaWdu
bWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpCiAKIGJvb2wgQ2hyb21lQ2xpZW50SW1w
bDo6aGFzT3BlbmVkUG9wdXAoKSBjb25zdAogewotICAgIHJldHVybiAhIW1fd2ViVmlldy0+c2Vs
ZWN0UG9wdXAoKTsKKyAgICByZXR1cm4gbV93ZWJWaWV3LT5oYXNPcGVuZWRQb3B1cCgpOwogfQog
CiBQYXNzUmVmUHRyPFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51
KFBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdApAQCAtOTg1LDYgKzk4Nyw0NCBAQCBQYXNz
UmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlU2VhcmNoUG9w
dXBNZW51KFBvcHVwTWVudUNsaQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBN
ZW51Q2hyb21pdW0oY2xpZW50KSk7CiB9CiAKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKK1BhZ2VQ
b3B1cCogQ2hyb21lQ2xpZW50SW1wbDo6b3BlblBhZ2VQb3B1cChQYWdlUG9wdXBDbGllbnQqIGNs
aWVudCwgY29uc3QgSW50UmVjdCYgb3JpZ2luQm91bmRzSW5Sb290VmlldykKK3sKKyAgICBpZiAo
IWNsaWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGhhc09wZW5lZFBvcHVwKCkpCisg
ICAgICAgIG1fd2ViVmlldy0+aGlkZVBvcHVwcygpOworCisgICAgV2ViV2lkZ2V0KiBwb3B1cFdp
ZGdldCA9IG1fd2ViVmlldy0+Y2xpZW50KCktPmNyZWF0ZVBvcHVwTWVudShXZWJQb3B1cFR5cGVQ
YWdlKTsKKyAgICBBU1NFUlQocG9wdXBXaWRnZXQpOworICAgIGlmICghcG9wdXBXaWRnZXQpCisg
ICAgICAgIHJldHVybiAwOworICAgIFdlYlBhZ2VQb3B1cEltcGwqIHBvcHVwID0gc3RhdGljX2Nh
c3Q8V2ViUGFnZVBvcHVwSW1wbCo+KHBvcHVwV2lkZ2V0KTsKKyAgICBXZWJTaXplIHJvb3RWaWV3
U2l6ZSA9IG1fd2ViVmlldy0+c2l6ZSgpOworICAgIEludFNpemUgcG9wdXBTaXplID0gY2xpZW50
LT5jb250ZW50U2l6ZSgpOworICAgIEludFJlY3QgcG9wdXBCb3VuZHNJblJvb3RWaWV3KEludFBv
aW50KG1heCgwLCBvcmlnaW5Cb3VuZHNJblJvb3RWaWV3LngoKSksIG1heCgwLCBvcmlnaW5Cb3Vu
ZHNJblJvb3RWaWV3Lm1heFkoKSkpLCBwb3B1cFNpemUpOworICAgIGlmIChwb3B1cEJvdW5kc0lu
Um9vdFZpZXcubWF4WSgpID4gcm9vdFZpZXdTaXplLmhlaWdodCkKKyAgICAgICAgcG9wdXBCb3Vu
ZHNJblJvb3RWaWV3LnNldFkobWF4KDAsIG9yaWdpbkJvdW5kc0luUm9vdFZpZXcueSgpIC0gcG9w
dXBTaXplLmhlaWdodCgpKSk7CisgICAgaWYgKHBvcHVwQm91bmRzSW5Sb290Vmlldy5tYXhYKCkg
PiByb290Vmlld1NpemUud2lkdGgpCisgICAgICAgIHBvcHVwQm91bmRzSW5Sb290Vmlldy5zZXRY
KG1heCgwLCByb290Vmlld1NpemUud2lkdGggLSBwb3B1cFNpemUud2lkdGgoKSkpOworICAgIGlm
ICghcG9wdXAtPmluaXQobV93ZWJWaWV3LCBjbGllbnQsIHJvb3RWaWV3VG9TY3JlZW4ocG9wdXBC
b3VuZHNJblJvb3RWaWV3KSkpIHsKKyAgICAgICAgcG9wdXAtPmNsb3NlUG9wdXAoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorICAgIG1fd2ViVmlldy0+cG9wdXBPcGVuZWQocG9wdXApOwor
ICAgIHJldHVybiBwb3B1cDsKK30KKwordm9pZCBDaHJvbWVDbGllbnRJbXBsOjpjbG9zZVBhZ2VQ
b3B1cChQYWdlUG9wdXAqIHBvcHVwKQoreworICAgIGlmICghcG9wdXApCisgICAgICAgIHJldHVy
bjsKKyAgICBXZWJQYWdlUG9wdXBJbXBsKiBwb3B1cEltcGwgPSBzdGF0aWNfY2FzdDxXZWJQYWdl
UG9wdXBJbXBsKj4ocG9wdXApOworICAgIG1fd2ViVmlldy0+cG9wdXBDbG9zZWQocG9wdXBJbXBs
KTsKKyAgICBwb3B1cEltcGwtPmNsb3NlUG9wdXAoKTsKK30KKyNlbmRpZgorCiBib29sIENocm9t
ZUNsaWVudEltcGw6OnNob3VsZFJ1bk1vZGFsRGlhbG9nRHVyaW5nUGFnZURpc21pc3NhbChjb25z
dCBEaWFsb2dUeXBlJiBkaWFsb2dUeXBlLCBjb25zdCBTdHJpbmcmIGRpYWxvZ01lc3NhZ2UsIEZy
YW1lTG9hZGVyOjpQYWdlRGlzbWlzc2FsVHlwZSBkaXNtaXNzYWxUeXBlKSBjb25zdAogewogICAg
IGNvbnN0IGNoYXIqIGtEaWFsb2dzW10gPSB7ImFsZXJ0IiwgImNvbmZpcm0iLCAicHJvbXB0Iiwg
InNob3dNb2RhbERpYWxvZyJ9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ2hyb21lQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5oCmluZGV4IDM0YTBiNWFkZjg3OGYwNzk2ZjY4NmMzOWFlODZiNjgzMDgwZDBm
NzEuLjA2ZWY0NzhlMmE3MTllNjYwZmI1Mzg2NmJiZGI4YWI4ZjI4ODdmZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKQEAgLTE5NSw2ICsxOTUs
MTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNPcGVuZWRQb3B1cCgpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0
ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CisjaWYgRU5BQkxFKFBBR0VfUE9Q
VVApCisgICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlUG9wdXAqIG9wZW5QYWdlUG9wdXAoV2ViQ29y
ZTo6UGFnZVBvcHVwQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBhZ2VQb3B1cChXZWJDb3JlOjpQYWdlUG9wdXAqKSBPVkVS
UklERTsKKyNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFJ1bk1vZGFsRGlhbG9nRHVy
aW5nUGFnZURpc21pc3NhbChjb25zdCBEaWFsb2dUeXBlJiwgY29uc3QgU3RyaW5nJiBkaWFsb2dN
ZXNzYWdlLCBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UGFnZURpc21pc3NhbFR5cGUpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwCmlu
ZGV4IGJjODEwYzdiMWIxNjhkYjdlY2JlMjE1ZDAxOWM2MzQ3M2YxYjRmZDIuLjdjZWE4ODBjNGQ0
MzQ1ZTQwYjU4ZTdjMmFkY2IzYTY0YWQ2NGZkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOSwyMSArMjksMzQ2IEBACiAgKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQb3B1cEltcGwuaCIKIAorI2lu
Y2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgorI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCisjaW5jbHVk
ZSAiRm9jdXNDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRm9ybVN0YXRlLmgiCisjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCisjaW5jbHVkZSAiUGFn
ZS5oIgorI2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgi
CisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUg
IldlYklucHV0RXZlbnQuaCIKKyNpbmNsdWRlICJXZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oIgog
I2luY2x1ZGUgIldlYlBhZ2VQb3B1cC5oIgorI2luY2x1ZGUgIldlYldpZGdldENsaWVudC5oIgor
I2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjaWYgRU5BQkxFKFBBR0Vf
UE9QVVApCisKK2NsYXNzIFBhZ2VQb3B1cENocm9tZUNsaWVudCA6IHB1YmxpYyBFbXB0eUNocm9t
ZUNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZVBvcHVwQ2hyb21lQ2xpZW50
KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVibGljOgorICAgIFBhZ2VQb3B1
cENocm9tZUNsaWVudChXZWJQYWdlUG9wdXBJbXBsKiBwb3B1cCkgOiBtX3BvcHVwKHBvcHVwKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcG9wdXAtPndpZGdldENsaWVudCgpKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93U29vbigpIE9WRVJSSURFCisg
ICAgeworICAgICAgICBtX3BvcHVwLT5jbG9zZVBvcHVwKCk7CisgICAgfQorCisgICAgdmlydHVh
bCBGbG9hdFJlY3Qgd2luZG93UmVjdCgpIE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1cm4g
RmxvYXRSZWN0KG1fcG9wdXAtPm1fd2luZG93UmVjdEluU2NyZWVuLngsIG1fcG9wdXAtPm1fd2lu
ZG93UmVjdEluU2NyZWVuLnksIG1fcG9wdXAtPm1fd2luZG93UmVjdEluU2NyZWVuLndpZHRoLCBt
X3BvcHVwLT5tX3dpbmRvd1JlY3RJblNjcmVlbi5oZWlnaHQpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCBzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgT1ZFUlJJREUKKyAg
ICB7CisgICAgICAgIG1fcG9wdXAtPm1fd2luZG93UmVjdEluU2NyZWVuID0gSW50UmVjdChyZWN0
KTsKKyAgICAgICAgbV9wb3B1cC0+d2lkZ2V0Q2xpZW50KCktPnNldFdpbmRvd1JlY3QobV9wb3B1
cC0+bV93aW5kb3dSZWN0SW5TY3JlZW4pOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZGRN
ZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYpIE9WRVJSSURFCisgICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgZnByaW50Zihz
dGRlcnIsICJDT05TT0xFIE1FU1NTQUdFOiV1OiAlc1xuIiwgbGluZU51bWJlciwgbWVzc2FnZS51
dGY4KCkuZGF0YSgpKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShtZXNzYWdlKTsKKyAg
ICAgICAgVU5VU0VEX1BBUkFNKGxpbmVOdW1iZXIpOworI2VuZGlmCisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KGNvbnN0IEludFJlY3QmIHBh
aW50UmVjdCwgYm9vbCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGlmIChwYWludFJlY3QuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3BvcHVwLT53aWRnZXRDbGll
bnQoKS0+ZGlkSW52YWxpZGF0ZVJlY3QocGFpbnRSZWN0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiBz
Y3JvbGxSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkgT1ZFUlJJREUKKyAgICB7CisgICAg
ICAgIG1fcG9wdXAtPndpZGdldENsaWVudCgpLT5kaWRTY3JvbGxSZWN0KHNjcm9sbERlbHRhLndp
ZHRoKCksIHNjcm9sbERlbHRhLmhlaWdodCgpLCBpbnRlcnNlY3Rpb24oc2Nyb2xsUmVjdCwgY2xp
cFJlY3QpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzRm9y
U2xvd1Njcm9sbChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0LCBib29sIGltbWVkaWF0ZSkgT1ZF
UlJJREUKKyAgICB7CisgICAgICAgIGludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KHVwZGF0
ZVJlY3QsIGltbWVkaWF0ZSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5p
bWF0aW9uKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fcG9wdXAtPndpZGdldENsaWVudCgp
LT5zY2hlZHVsZUFuaW1hdGlvbigpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCogd2ViVmll
dygpIGNvbnN0IE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1cm4gbV9wb3B1cC0+bV93ZWJW
aWV3OworICAgIH0KKworICAgIFdlYlBhZ2VQb3B1cEltcGwqIG1fcG9wdXA7Cit9OworCiAvLyBX
ZWJQYWdlUG9wdXBJbXBsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLy8gRklYTUU6IFdlYlBhZ2VQb3B1cEltcGwgaW1w
bGVtZW50YXRpb24gd2lsbCBiZSB3cml0dGVuIGhlcmUuCitXZWJQYWdlUG9wdXBJbXBsOjpXZWJQ
YWdlUG9wdXBJbXBsKFdlYldpZGdldENsaWVudCogY2xpZW50KQorICAgIDogbV93aWRnZXRDbGll
bnQoY2xpZW50KQoreworICAgIEFTU0VSVChjbGllbnQpOworfQorCitXZWJQYWdlUG9wdXBJbXBs
Ojp+V2ViUGFnZVBvcHVwSW1wbCgpCit7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aW5p
dChXZWJWaWV3SW1wbCogd2ViVmlldywgUGFnZVBvcHVwQ2xpZW50KiBwb3B1cENsaWVudCwgY29u
c3QgSW50UmVjdCYgYm91bmRzSW5TY3JlZW4pCit7CisgICAgQVNTRVJUKHdlYlZpZXcpOworICAg
IEFTU0VSVChwb3B1cENsaWVudCk7CisgICAgaWYgKCFwb3B1cENsaWVudCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIG1fcG9wdXBDbGllbnQgPSBwb3B1cENsaWVudDsKKyAgICBtX3dlYlZp
ZXcgPSB3ZWJWaWV3OworCisgICAgbV93aWRnZXRDbGllbnQtPnNldFdpbmRvd1JlY3QoYm91bmRz
SW5TY3JlZW4pOworICAgIG1fd2luZG93UmVjdEluU2NyZWVuID0gYm91bmRzSW5TY3JlZW47Cisg
ICAgaWYgKCFpbml0UGFnZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV93aWRnZXRD
bGllbnQtPnNob3coV2ViTmF2aWdhdGlvblBvbGljeSgpKTsKKworICAgIHNldEZvY3VzKHRydWUp
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBh
Z2UoKQoreworICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGllbnRzOworICAgIG1fY2hyb21l
Q2xpZW50ID0gYWRvcHRQdHIobmV3IFBhZ2VQb3B1cENocm9tZUNsaWVudCh0aGlzKSk7CisgICAg
cGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0gbV9jaHJvbWVDbGllbnQuZ2V0KCk7CisgICAgc3Rh
dGljIEVkaXRvckNsaWVudCogZW1wdHlFZGl0b3JDbGllbnQgPSBuZXcgRW1wdHlFZGl0b3JDbGll
bnQ7CisgICAgcGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50ID0gZW1wdHlFZGl0b3JDbGllbnQ7Cisj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgc3RhdGljIENvbnRleHRNZW51Q2xpZW50KiBl
bXB0eUNvbnRleHRNZW51Q2xpZW50ID0gbmV3IEVtcHR5Q29udGV4dE1lbnVDbGllbnQ7CisgICAg
cGFnZUNsaWVudHMuY29udGV4dE1lbnVDbGllbnQgPSBlbXB0eUNvbnRleHRNZW51Q2xpZW50Owor
I2VuZGlmCisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKKyAgICBzdGF0aWMgRHJhZ0NsaWVudCog
ZW1wdHlEcmFnQ2xpZW50ID0gbmV3IEVtcHR5RHJhZ0NsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5k
cmFnQ2xpZW50ID0gZW1wdHlEcmFnQ2xpZW50OworI2VuZGlmCisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKyAgICBzdGF0aWMgSW5zcGVjdG9yQ2xpZW50KiBlbXB0eUluc3BlY3RvckNsaWVudCA9IG5l
dyBFbXB0eUluc3BlY3RvckNsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQg
PSBlbXB0eUluc3BlY3RvckNsaWVudDsKKyNlbmRpZgorICAgIG1fcGFnZSA9IGFkb3B0UHRyKG5l
dyBQYWdlKHBhZ2VDbGllbnRzKSk7CisgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRTY3JpcHRF
bmFibGVkKHRydWUpOworICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0QWxsb3dTY3JpcHRzVG9D
bG9zZVdpbmRvd3ModHJ1ZSk7CisgICAgc3RhdGljIEZyYW1lTG9hZGVyQ2xpZW50KiBlbXB0eUZy
YW1lTG9hZGVyQ2xpZW50ID0gIG5ldyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OworICAgIFJlZlB0
cjxGcmFtZT4gZnJhbWUgPSBGcmFtZTo6Y3JlYXRlKG1fcGFnZS5nZXQoKSwgMCwgZW1wdHlGcmFt
ZUxvYWRlckNsaWVudCk7CisgICAgZnJhbWUtPnNldFZpZXcoRnJhbWVWaWV3OjpjcmVhdGUoZnJh
bWUuZ2V0KCkpKTsKKyAgICBmcmFtZS0+aW5pdCgpOworICAgIGZyYW1lLT52aWV3KCktPnJlc2l6
ZShtX3BvcHVwQ2xpZW50LT5jb250ZW50U2l6ZSgpKTsKKyAgICBmcmFtZS0+dmlldygpLT5zZXRU
cmFuc3BhcmVudChmYWxzZSk7CisKKyAgICBEb2N1bWVudFdyaXRlciogd3JpdGVyID0gZnJhbWUt
PmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKTsKKyAgICB3cml0ZXIt
PnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKKyAgICB3cml0ZXItPnNldEVuY29kaW5nKCJVVEYt
OCIsIGZhbHNlKTsKKyAgICB3cml0ZXItPmJlZ2luKCk7CisgICAgbV9wb3B1cENsaWVudC0+d3Jp
dGVEb2N1bWVudCgqd3JpdGVyKTsKKyAgICB3cml0ZXItPmVuZCgpOworCisgICAgeworICAgICAg
ICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGNvbnRleHQgPSBWOFByb3h5OjptYWluV29ybGRDb250ZXh0KGZyYW1lLmdldCgpKTsK
KyAgICAgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CisgICAgICAgIG1f
djh0aGlzID0gdjg6OlBlcnNpc3RlbnQ8djg6OkV4dGVybmFsPjo6TmV3KHY4OjpFeHRlcm5hbDo6
TmV3KHRoaXMpKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1w
bCA9IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoc2V0VmFsdWVBbmRDbG9zZVBvcHVwQ2FsbGJh
Y2ssIG1fdjh0aGlzKTsKKyAgICAgICAgY29udGV4dC0+R2xvYmFsKCktPlNldCh2ODo6U3RyaW5n
OjpOZXcoInNldFZhbHVlQW5kQ2xvc2VQb3B1cCIpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4o
dGVtcGwtPkdldEZ1bmN0aW9uKCkpKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJQYWdlUG9wdXBJbXBsOjpzZXRWYWx1ZUFuZENsb3NlUG9w
dXBDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIGlmIChhcmdzLkxl
bmd0aCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1l
bnRzIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKyAgICBXZWJQYWdlUG9wdXBJbXBsKiBwb3B1cCA9
IHN0YXRpY19jYXN0PFdlYlBhZ2VQb3B1cEltcGwqPih2ODo6RXh0ZXJuYWw6OkNhc3QoKmFyZ3Mu
RGF0YSgpKS0+VmFsdWUoKSk7CisgICAgQVNTRVJUKHBvcHVwKTsKKyAgICBwb3B1cC0+bV9wb3B1
cENsaWVudC0+c2V0VmFsdWVBbmRDbG9zZVBvcHVwKHRvSW50MzIoYXJnc1swXSksIHRvV2ViQ29y
ZVN0cmluZyhhcmdzLCAxKSk7CisgICAgLy8gc2V0VmFsZXVBbmRDbG9zZVBvcHVwKCkgZGVsZXRl
cyB0aGUgcG9wdXAgb2JqZWN0LiBEbyBub3QgYWNjZXNzIGl0LgorICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7Cit9CisKK1dlYlNpemUgV2ViUGFnZVBvcHVwSW1wbDo6c2l6ZSgpCit7CisgICAg
cmV0dXJuIG1fcG9wdXBDbGllbnQtPmNvbnRlbnRTaXplKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVBv
cHVwSW1wbDo6YW5pbWF0ZShkb3VibGUgZnJhbWVCZWdpblRpbWUpCit7CisjaWYgRU5BQkxFKFJF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorICAgIGlmICghZnJhbWVCZWdpblRpbWUpCisgICAgICAg
IGZyYW1lQmVnaW5UaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgp
LT52aWV3KCktPnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoY29udmVydFNlY29uZHNUb0RPTVRp
bWVTdGFtcChmcmFtZUJlZ2luVGltZSkpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUGFnZVBvcHVw
SW1wbDo6Y29tcG9zaXRlKGJvb2wpCit7Cit9CisKK3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6bGF5
b3V0KCkKK3sKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPnNldEZyYW1lUmVjdCht
X3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPmZyYW1lUmVjdCgpKTsKKyAgICBtX3BhZ2UtPm1h
aW5GcmFtZSgpLT52aWV3KCktPmxheW91dCgpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6
OnBhaW50KFdlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIGlm
IChyZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEdyYXBoaWNzQ29udGV4dEJ1
aWxkZXIgYnVpbGRlcihjYW52YXMpOworICAgIEdyYXBoaWNzQ29udGV4dCYgZ2MgPSBidWlsZGVy
LmNvbnRleHQoKTsKKyAgICBnYy5zYXZlKCk7CisgICAgZ2MuY2xpcChyZWN0KTsKKyAgICBtX3Bh
Z2UtPm1haW5GcmFtZSgpLT52aWV3KCktPnBhaW50KCZnYywgcmVjdCk7CisgICAgZ2MucmVzdG9y
ZSgpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnJlc2l6ZShjb25zdCBXZWJTaXplJiBu
ZXdTaXplKQoreworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+cmVzaXplKG5ld1Np
emUpOworICAgIG1fd2lkZ2V0Q2xpZW50LT5kaWRJbnZhbGlkYXRlUmVjdChXZWJSZWN0KDAsIDAs
IG5ld1NpemUud2lkdGgsIG5ld1NpemUuaGVpZ2h0KSk7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVw
SW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBldmVudCkKK3sKKyAg
ICBpZiAoIW1fcGFnZS0+bWFpbkZyYW1lKCkgfHwgIW1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXco
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFp
bkZyYW1lKCk7CisgICAgc3dpdGNoIChldmVudC50eXBlKSB7CisgICAgY2FzZSBXZWJJbnB1dEV2
ZW50OjpNb3VzZU1vdmU6CisgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VNb3Zl
ZChQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKGZyYW1lLT52aWV3KCksICpzdGF0aWNfY2FzdDxj
b25zdCBXZWJNb3VzZUV2ZW50Kj4oJmV2ZW50KSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlTGVhdmU6CisgICAgICAgIGZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGFuZGxlTW91c2VNb3ZlRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihm
cmFtZS0+dmlldygpLCAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCo+KCZldmVudCkp
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdo
ZWVsOgorICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVdoZWVsRXZlbnQoUGxh
dGZvcm1XaGVlbEV2ZW50QnVpbGRlcihmcmFtZS0+dmlldygpLCAqc3RhdGljX2Nhc3Q8Y29uc3Qg
V2ViTW91c2VXaGVlbEV2ZW50Kj4oJmV2ZW50KSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlRG93bjogeworICAgICAgICBmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVudChQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVy
KGZyYW1lLT52aWV3KCksICpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmV2ZW50
KSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50
OjpNb3VzZVVwOgorICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUmVs
ZWFzZUV2ZW50KFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIoZnJhbWUtPnZpZXcoKSwgKnN0YXRp
Y19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQqPigmZXZlbnQpKSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bjoKKyAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6OktleURvd246CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpLZXlVcDoKKyAgICBj
YXNlIFdlYklucHV0RXZlbnQ6OkNoYXI6CisgICAgICAgIC8vIFRoZSBtYWluIFdlYlZpZXcgcmVj
ZWl2ZXMga2V5IGV2ZW50cyBhbmQgZm9yd2FyZCB0aGVtIHRvIHRoaXMgdmlhIGhhbmRsZUtleUV2
ZW50KCkuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
R2VzdHVyZVNjcm9sbEJlZ2luOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9s
bEVuZDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6CisgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDoKKyAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVUYXA6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwRG93bjoKKyAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CisgICAgICAgIHJldHVybiBmcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1
aWxkZXIoZnJhbWUtPnZpZXcoKSwgKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+
KCZldmVudCkpKTsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEJlZ2luOgor
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoRW5kOgorICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOgorICAgICAgICAvLyBGSVhNRTogT25jZSBQbGF0
Zm9ybUdlc3R1cmVFdmVudCBpcyB1cGRhdGVkIHRvIHN1cHBvcnQgcGluY2gsIHRoaXMKKyAgICAg
ICAgLy8gc2hvdWxkIGNhbGwgaGFuZGxlR2VzdHVyZUV2ZW50LCBqdXN0IGxpa2UgaXQgY3VycmVu
dGx5IGRvZXMgZm9yCisgICAgICAgIC8vIGdlc3R1cmUgc2Nyb2xsLgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBXZWJJ
bnB1dEV2ZW50OjpUb3VjaFN0YXJ0OgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hNb3Zl
OgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2
ZW50OjpUb3VjaENhbmNlbDoKKyAgICAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
aGFuZGxlVG91Y2hFdmVudChQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyKGZyYW1lLT52aWV3KCks
ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJUb3VjaEV2ZW50Kj4oJmV2ZW50KSkpOworI2VuZGlmCisK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCitib29sIFdlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUtleUV2ZW50
KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKCFtX3BhZ2Ut
Pm1haW5GcmFtZSgpIHx8ICFtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPmtleUV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBXZWJQYWdlUG9wdXBJbXBsOjpzZXRGb2N1
cyhib29sIGVuYWJsZSkKK3sKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRGb2N1
c2VkKGVuYWJsZSk7CisgICAgaWYgKGVuYWJsZSkKKyAgICAgICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+c2V0QWN0aXZlKHRydWUpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OmNs
b3NlKCkKK3sKKyAgICBpZiAobV9wYWdlKSB7CisgICAgICAgIG1fcGFnZS5jbGVhcigpOworICAg
ICAgICBtX2Nocm9tZUNsaWVudC5jbGVhcigpOworICAgICAgICBtX3Y4dGhpcy5EaXNwb3NlKCk7
CisgICAgfQorICAgIGRlcmVmKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6Y2xvc2VQ
b3B1cCgpCit7CisgICAgaWYgKG1fcGFnZSkgeworICAgICAgICBtX3BhZ2UtPnNldEdyb3VwTmFt
ZShTdHJpbmcoKSk7CisgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5zdG9w
QWxsTG9hZGVycygpOworICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+c3Rv
cExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3lOb25lKTsKKyAgICB9CisgICAgbV93aWRnZXRDbGll
bnQtPmNsb3NlV2lkZ2V0U29vbigpOworCisgICAgbV9wb3B1cENsaWVudC0+ZGlkQ2xvc2VQb3B1
cCgpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKFBBR0VfUE9QVVApCiAKIC8vIFdlYlBhZ2VQb3B1
cCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLVdlYlBhZ2VQb3B1cCogV2ViUGFnZVBvcHVwOjpjcmVhdGUoV2ViV2lkZ2V0
Q2xpZW50KikKK1dlYlBhZ2VQb3B1cCogV2ViUGFnZVBvcHVwOjpjcmVhdGUoV2ViV2lkZ2V0Q2xp
ZW50KiBjbGllbnQpCiB7Ci0gICAgLy8gRklYTUU6IFJldHVybnMgYSBXZWJQYWdlUG9wdXBJbXBs
IG9iamVjdC4KKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAg
ICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgLy8gUGFzcyB0aGUgV2ViUGFn
ZVBvcHVwSW1wbCdzIHNlbGYtcmVmZXJlbmNlIHRvIHRoZSBjYWxsZXIuCisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJQYWdlUG9wdXBJbXBsKGNsaWVudCkpLmxlYWtSZWYoKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGNsaWVudCk7CiAgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJQYWdlUG9wdXBJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdl
UG9wdXBJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzcyYTYyY2NiYjEwOGQzY2ZiNWUzZGRlMzNhOGVhZmQz
N2M4MDUzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlBhZ2VQb3B1cEltcGwuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQYWdlUG9wdXBJbXBs
X2gKKyNkZWZpbmUgV2ViUGFnZVBvcHVwSW1wbF9oCisKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkK
KworI2luY2x1ZGUgIlBhZ2VQb3B1cC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQb3B1cC5oIgorI2lu
Y2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFBhZ2U7CitjbGFzcyBQYWdl
UG9wdXBDbGllbnQ7CitjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7Cit9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBQYWdlUG9wdXBDaHJvbWVDbGllbnQ7CitjbGFzcyBXZWJWaWV3
SW1wbDsKKworY2xhc3MgV2ViUGFnZVBvcHVwSW1wbCA6IHB1YmxpYyBXZWJQYWdlUG9wdXAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYkNvcmU6OlBhZ2VQb3B1cCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgUmVmQ291bnRlZDxXZWJQYWdlUG9wdXBJbXBsPiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKK3B1YmxpYzoKKyAgICAvLyBDYWxsZWQg
YnkgQ2hyb21lQ2xpZW50SW1wbDo6b3BlblBhZ2VQb3B1cCgpLgorICAgIGJvb2wgaW5pdChXZWJW
aWV3SW1wbCosIFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudCosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGJvdW5kc0luU2NyZWVuKTsKKyAgICAvLyBDYWxsZWQgYnkgV2ViVmlld0ltcGwuCisgICAg
Ym9vbCBoYW5kbGVLZXlFdmVudChjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQm
KTsKKyAgICB2b2lkIGNsb3NlUG9wdXAoKTsKKyAgICB2aXJ0dWFsIH5XZWJQYWdlUG9wdXBJbXBs
KCk7CisgICAgV2ViV2lkZ2V0Q2xpZW50KiB3aWRnZXRDbGllbnQoKSBjb25zdCB7IHJldHVybiBt
X3dpZGdldENsaWVudDsgfQorCitwcml2YXRlOgorICAgIC8vIFdlYldpZGdldCBmdW5jdGlvbnMK
KyAgICB2aXJ0dWFsIFdlYlNpemUgc2l6ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBh
bmltYXRlKGRvdWJsZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXBvc2l0ZShib29s
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVzaXplKGNvbnN0IFdlYlNpemUmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgY2xvc2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlSW5wdXRF
dmVudChjb25zdCBXZWJJbnB1dEV2ZW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dEZvY3VzKGJvb2wpIE9WRVJSSURFOworCisgICAgV2ViUGFnZVBvcHVwSW1wbChXZWJXaWRnZXRD
bGllbnQqKTsKKyAgICBib29sIGluaXRQYWdlKCk7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBzZXRWYWx1ZUFuZENsb3NlUG9wdXBDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
Jik7CisKKyAgICBXZWJXaWRnZXRDbGllbnQqIG1fd2lkZ2V0Q2xpZW50OworICAgIFdlYlJlY3Qg
bV93aW5kb3dSZWN0SW5TY3JlZW47CisgICAgV2ViVmlld0ltcGwqIG1fd2ViVmlldzsKKyAgICBP
d25QdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOworICAgIE93blB0cjxQYWdlUG9wdXBDaHJvbWVD
bGllbnQ+IG1fY2hyb21lQ2xpZW50OworICAgIFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudCogbV9w
b3B1cENsaWVudDsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RXh0ZXJuYWw+IG1fdjh0aGlzOwor
CisgICAgZnJpZW5kIGNsYXNzIFdlYlBhZ2VQb3B1cDsKKyAgICBmcmllbmQgY2xhc3MgUGFnZVBv
cHVwQ2hyb21lQ2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisjZW5kaWYgLy8g
RU5BQkxFKFBBR0VfUE9QVVApCisjZW5kaWYgLy8gV2ViUGFnZVBvcHVwSW1wbF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMjBlMmU0ZWYzMTNjZjcz
MjVmMjUyYjg0NjUxZjg2MDY4NDlhYmFhMy4uM2M5YmE0NzJlZmMzYWY3ZTczZWEzOGRiYTlkODJh
ODViYTQwZTgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cApAQCAtMTMwLDYgKzEzMCw3IEBACiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmll
dy5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViTm9k
ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQb3B1cEltcGwuaCIKICNpbmNsdWRlICJXZWJQbHVnaW4u
aCIKICNpbmNsdWRlICJXZWJQbHVnaW5BY3Rpb24uaCIKICNpbmNsdWRlICJXZWJQbHVnaW5Db250
YWluZXJJbXBsLmgiCkBAIC02MzEsNiArNjMyLDEwIEBAIGJvb2wgV2ViVmlld0ltcGw6OmtleUV2
ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIC8vIG5vdCB0aGUgcGFnZS4K
ICAgICBpZiAobV9zZWxlY3RQb3B1cCkKICAgICAgICAgcmV0dXJuIG1fc2VsZWN0UG9wdXAtPmhh
bmRsZUtleUV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIoZXZlbnQpKTsKKyNpZiBF
TkFCTEUoUEFHRV9QT1BVUCkKKyAgICBpZiAobV9wYWdlUG9wdXApCisgICAgICAgIHJldHVybiBt
X3BhZ2VQb3B1cC0+aGFuZGxlS2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihl
dmVudCkpOworI2VuZGlmCiAKICAgICAvLyBHaXZlIEF1dG9jb21wbGV0ZSBhIGNoYW5jZSB0byBj
b25zdW1lIHRoZSBrZXkgZXZlbnRzIGl0IGlzIGludGVyZXN0ZWQgaW4uCiAgICAgaWYgKGF1dG9j
b21wbGV0ZUhhbmRsZUtleUV2ZW50KGV2ZW50KSkKQEAgLTc0Myw2ICs3NDgsMTAgQEAgYm9vbCBX
ZWJWaWV3SW1wbDo6Y2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAg
IC8vIG5vdCB0aGUgcGFnZS4KICAgICBpZiAobV9zZWxlY3RQb3B1cCkKICAgICAgICAgcmV0dXJu
IG1fc2VsZWN0UG9wdXAtPmhhbmRsZUtleUV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxk
ZXIoZXZlbnQpKTsKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBpZiAobV9wYWdlUG9wdXAp
CisgICAgICAgIHJldHVybiBtX3BhZ2VQb3B1cC0+aGFuZGxlS2V5RXZlbnQoUGxhdGZvcm1LZXli
b2FyZEV2ZW50QnVpbGRlcihldmVudCkpOworI2VuZGlmCiAKICAgICBGcmFtZSogZnJhbWUgPSBm
b2N1c2VkV2ViQ29yZUZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTExMDUsNiArMTExNCwy
NSBAQCB2b2lkICBXZWJWaWV3SW1wbDo6cG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWlu
ZXIqIHBvcHVwQ29udGFpbmVyKQogICAgIH0KIH0KIAorI2lmIEVOQUJMRShQQUdFX1BPUFVQKQor
dm9pZCBXZWJWaWV3SW1wbDo6cG9wdXBPcGVuZWQoV2ViUGFnZVBvcHVwSW1wbCogcG9wdXApCit7
CisgICAgQVNTRVJUKCFtX3BhZ2VQb3B1cCk7CisgICAgbV9wYWdlUG9wdXAgPSBwb3B1cDsKKwor
ICAgIGlmIChGcmFtZSogZnJhbWUgPSBmb2N1c2VkV2ViQ29yZUZyYW1lKCkpCisgICAgICAgIGZy
YW1lLT5zZWxlY3Rpb24oKS0+c2V0Q2FyZXRWaXNpYmxlKGZhbHNlKTsKK30KKwordm9pZCBXZWJW
aWV3SW1wbDo6cG9wdXBDbG9zZWQoV2ViUGFnZVBvcHVwSW1wbCogcG9wdXApCit7CisgICAgQVNT
RVJUKG1fcGFnZVBvcHVwID09IHBvcHVwKTsKKyAgICBtX3BhZ2VQb3B1cCA9IDA7CisgICAgaWYg
KEZyYW1lKiBmcmFtZSA9IGZvY3VzZWRXZWJDb3JlRnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5wYWdlQWN0aXZhdGlvbkNoYW5nZWQoKTsKK30KKyNlbmRpZgorCiB2b2lkIFdl
YlZpZXdJbXBsOjpoaWRlQXV0b2ZpbGxQb3B1cCgpCiB7CiAgICAgaWYgKG1fYXV0b2ZpbGxQb3B1
cFNob3dpbmcpIHsKQEAgLTE2MTUsOCArMTY0Myw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldEZv
Y3VzKGJvb2wgZW5hYmxlKQogICAgICAgICB9CiAgICAgICAgIG1faW1lQWNjZXB0RXZlbnRzID0g
dHJ1ZTsKICAgICB9IGVsc2UgewotICAgICAgICBoaWRlQXV0b2ZpbGxQb3B1cCgpOwotICAgICAg
ICBoaWRlU2VsZWN0UG9wdXAoKTsKKyAgICAgICAgaGlkZVBvcHVwcygpOwogCiAgICAgICAgIC8v
IENsZWFyIGZvY3VzIG9uIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBmcmFtZSBpZiBhbnkuCiAgICAg
ICAgIGlmICghbV9wYWdlKQpAQCAtMjcwOCw2ICsyNzM1LDEzIEBAIHZvaWQgV2ViVmlld0ltcGw6
OmhpZGVQb3B1cHMoKQogewogICAgIGhpZGVTZWxlY3RQb3B1cCgpOwogICAgIGhpZGVBdXRvZmls
bFBvcHVwKCk7CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAgaWYgKG1fcGFnZVBvcHVwKSB7
CisgICAgICAgIFdlYlBhZ2VQb3B1cEltcGwqIHBhZ2VQb3B1cCA9IG1fcGFnZVBvcHVwLmdldCgp
OworICAgICAgICBwb3B1cENsb3NlZChwYWdlUG9wdXApOworICAgICAgICBwYWdlUG9wdXAtPmNs
b3NlUG9wdXAoKTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6cGVyZm9y
bUN1c3RvbUNvbnRleHRNZW51QWN0aW9uKHVuc2lnbmVkIGFjdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDM4MTllY2I2NTU0MWUxZDUzZGEwODY4MWQy
NjYwOGJkYzM2NWVhNWIuLmNmYzkzMzg1NzNhZDllOGM2MDBlYzU4ZGQ5OTM4YmU4MWExZGZlYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtODksNiArODks
NyBAQCBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2Vu
dFByaXZhdGU7CiBjbGFzcyBXZWJGcmFtZUltcGw7CiBjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7Citj
bGFzcyBXZWJQYWdlUG9wdXBJbXBsOwogY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJLZXlib2Fy
ZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKQEAgLTQyNyw2ICs0MjgsMTAgQEAgcHVibGlj
OgogICAgIC8vIE5vdGlmaWNhdGlvbiB0aGF0IGEgcG9wdXAgd2FzIG9wZW5lZC9jbG9zZWQuCiAg
ICAgdm9pZCBwb3B1cE9wZW5lZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWlu
ZXIpOwogICAgIHZvaWQgcG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVw
Q29udGFpbmVyKTsKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICB2b2lkIHBvcHVwT3BlbmVk
KFdlYlBhZ2VQb3B1cEltcGwqKTsKKyAgICB2b2lkIHBvcHVwQ2xvc2VkKFdlYlBhZ2VQb3B1cElt
cGwqKTsKKyNlbmRpZgogCiAgICAgdm9pZCBoaWRlQXV0b2ZpbGxQb3B1cCgpOwogCkBAIC00NjQs
NiArNDY5LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJpbGl0eVN0YXRl
KFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGUsIGJvb2wpOwogCiAgICAgV2ViQ29yZTo6UG9wdXBDb250
YWluZXIqIHNlbGVjdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RQb3B1cC5nZXQoKTsg
fQorI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorICAgIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25z
dCB7IHJldHVybiBtX3NlbGVjdFBvcHVwIHx8IG1fcGFnZVBvcHVwOyB9CisjZWxzZQorICAgIGJv
b2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdFBvcHVwOyB9CisjZW5k
aWYKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXZlbnQgbGVhZHMgdG8gc2Nyb2xsaW5n
LgogICAgIHN0YXRpYyBib29sIG1hcEtleUNvZGVGb3JTY3JvbGwoaW50IGtleUNvZGUsCkBAIC02
NjUsNiArNjc1LDExIEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIHBvcHVwIGFzc29jaWF0ZWQgd2l0
aCBhIHNlbGVjdCBlbGVtZW50LgogICAgIFJlZlB0cjxXZWJDb3JlOjpQb3B1cENvbnRhaW5lcj4g
bV9zZWxlY3RQb3B1cDsKIAorI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorICAgIC8vIFRoZSBwb3B1
cCBhc3NvY2lhdGVkIHdpdGggYW4gaW5wdXQgZWxlbWVudC4KKyAgICBSZWZQdHI8V2ViUGFnZVBv
cHVwSW1wbD4gbV9wYWdlUG9wdXA7CisjZW5kaWYKKwogICAgIE93blB0cjxXZWJEZXZUb29sc0Fn
ZW50UHJpdmF0ZT4gbV9kZXZUb29sc0FnZW50OwogICAgIE93blB0cjxQYWdlT3ZlcmxheUxpc3Q+
IG1fcGFnZU92ZXJsYXlzOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132234</attachid>
            <date>2012-03-16 02:33:34 -0700</date>
            <delta_ts>2012-04-10 00:25:58 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-81081-20120316183329.patch</filename>
            <type>text/plain</type>
            <size>28260</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwOTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDMwYWNmMmZhYzczMWE5ZWIwMzA3YTI3ZDI1YWMwOWVmNjI1NWE1NGUuLjE4MGY0M2E1OTNhMDg0
MWQ2NWRhMDg4OGRjN2U3OWYwMmVlMjAzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMTItMDMtMTMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIFBhZ2VQb3B1cCBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEwODEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViUGFn
ZVBvcHVwSW1wbCBjbGFzcywgd2hpY2ggaXMgYW4gaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAg
V2ViQ29yZTo6UGFnZVBvcHVwIGludGVyZmFjZSBhbmQgV2ViS2l0OjpXZWJQYWdlUG9wdXAgaW50
ZXJmYWNlLiBJdCdzIGEKKyAgICAgICAgV2ViV2lkZ2V0IHdoaWNoIGhhcyBhIFBhZ2Ugb2JqZWN0
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgbWFrZXMgbm8gYmVoYXZpb3Ig
Y2hhbmdlIHlldC4KKworICAgICAgICAqIFdlYktpdC5neXA6IEFkZCBXZWJQYWdlUG9wdXBJbXBs
LmgKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudEltcGw6Omhhc09wZW5lZFBvcHVwKToKKyAgICAgICAgRGVsZWdhdGUgdG8g
V2ViVmlld0ltcGw6Omhhc09wZW5lZFBvcHVwKCkuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudEltcGw6Om9wZW5QYWdlUG9wdXApOgorICAgICAgICBBZGRlZC4gQ2FsY3VsYXRlcyBhIGdv
b2QgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBwYWdlIHBvcHVwIGZyb20gdGhlCisgICAgICAg
IHNwZWNpZmllZCBlbGVtZW50IHJlY3RhbmdsZS4KKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50SW1wbDo6Y2xvc2VQYWdlUG9wdXApOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xp
ZW50SW1wbC5oOgorICAgICAgICAoQ2hyb21lQ2xpZW50SW1wbCk6IEFkZCBkZWxhcmF0aW9ucyBv
ZiBvcGVuUGFnZVBvcHVwIGFuZCBjbG9zZVBhZ2VQb3B1cC4KKyAgICAgICAgKiBzcmMvV2ViUGFn
ZVBvcHVwSW1wbC5jcHA6CisgICAgICAgIChQYWdlUG9wdXBDaHJvbWVDbGllbnQpOgorICAgICAg
ICBUaGlzIGlzIGEgbGlnaHQgaW1wbGVtZW50YXRpb24gb2YgQ2hyb21lQ2xpZW50IGZvciB0aGUg
cGFnZSBpbgorICAgICAgICBXZWJQYWdlUG9wdXBJbXBsLiBUaGlzIGlzIGEgZnJpZW5kIG9mIFdl
YlBhZ2VQb3B1cEltcGwgYmVjYXNlIG9mIGVhc2Ugb2YKKyAgICAgICAgYWNjZXNzIHRvIGl0cyBt
ZW1iZXJzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpXZWJQYWdlUG9wdXBJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6fldlYlBhZ2VQb3B1cElt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjppbml0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UpOgorICAgICAgICBNYWtlIGEgUGFn
ZSBhbmQgaW5qZWN0IHNldFZhbHVlQW5kQ2xvc2VQb3B1cCBmdW5jdGlvbi4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpzaXplKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVBvcHVwSW1wbDo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
b3B1cEltcGw6OmNvbXBvc2l0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6
OmxheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OnBhaW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6cmVzaXplKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVBvcHVwSW1wbDo6c2V0Rm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJ
bXBsOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmNsb3NlUG9w
dXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXA6OmNyZWF0ZSk6CisgICAgICAgICog
c3JjL1dlYlBhZ2VQb3B1cEltcGwuaDogQWRkZWQuCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmtleUV2ZW50KTogSWYgYSB2aXNp
YmxlIFBhZ2VQb3B1cCBleGlzdHMsIGZvcndhcmQga2V5IGV2ZW50cyB0byBpdC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OmNoYXJFdmVudCk6IGRpdHRvLgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6cG9wdXBPcGVuZWQpOgorICAgICAgICBBZGRlZC4gUmVnaXN0ZXIgYW4g
b3BlbmluZyBQYWdlUG9wdXAuIFN0b3AgY2FyZXQgYmxpbmtpbmcuCisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpwb3B1cENsb3NlZCk6CisgICAgICAgIEFkZGVkLiBVbnJlZ2lzdGVyIGEg
Y2xvc2luZyBQYWdlUG9wdXAuICBSZXN1bWUgY2FyZXQgYmxpbmtpbmcuCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRGb2N1cyk6CisgICAgICAgIFVzZSBoaWRlUG9wdXBzKCkgYmVj
YXVzZSB3ZSB3YW50IHRvIGFkZCBjb2RlIHRvIGNsb3NlIGEgUGFnZVBvcHVwLgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6aGlkZVBvcHVwcyk6CisgICAgICAgIEFkZCBjb2RlIHRvIGNs
b3NlIGEgUGFnZVBvcHVwLgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAo
V2ViVmlld0ltcGwpOiBBZGQgbV9wYWdlUG9wdXAgZGF0YSBtZW1iZXIgdG8gc3RvcmUgYSB2aXNp
YmxlIFBhZ2VQb3B1cC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omhhc09wZW5lZFBv
cHVwKTogQWRkZWQuCisKIDIwMTItMDMtMTUgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBTcGVlY2ggSmF2YVNjcmlwdCBBUEk6IFNwZWVjaFJlY29nbml0aW9u
LCBDb250cm9sbGVyIGFuZCBDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAx
ZjZjMThjNGU2ZmUwNzM0Y2IyNzBlOGNjN2E5ZDc3YzExZmEyNmJhLi5kZGYwODc2YjQzNGFhNmFk
N2MyODFkMDRjMDE3MThlNGViMDI0ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBA
IC02MTcsNiArNjE3LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYk5vdGlmaWNhdGlvbi5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViT3B0aW9uRWxlbWVudC5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdz
cmMvV2ViUGFnZVBvcHVwSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlBhZ2VTZXJp
YWxpemVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQYWdlU2VyaWFsaXplckltcGwu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5oJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXgg
NGQzODFlYzQ5NWY4NjY0YTM5YTEzNWVmOGM1MzcxNjFmZjllMmMxNy4uOGYwMDE0ZmNhZGQ2YzI4
N2EzYjZjMmQ2OTBhYjdhOWNlNjY2OWFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJH
ZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0
UmVzdWx0LmgiCiAjaW5jbHVkZSAiSWNvbi5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTgx
LDYgKzgyLDcgQEAKICNpbmNsdWRlICJXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKKyNp
bmNsdWRlICJXZWJQYWdlUG9wdXBJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSWNvbkxvYWRpbmdDb21w
bGV0aW9uSW1wbC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJL
aXQuaCIKQEAgLTk2OSw3ICs5NzEsNyBAQCBib29sIENocm9tZUNsaWVudEltcGw6OnNlbGVjdEl0
ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKQogCiBib29sIENocm9tZUNs
aWVudEltcGw6Omhhc09wZW5lZFBvcHVwKCkgY29uc3QKIHsKLSAgICByZXR1cm4gISFtX3dlYlZp
ZXctPnNlbGVjdFBvcHVwKCk7CisgICAgcmV0dXJuIG1fd2ViVmlldy0+aGFzT3BlbmVkUG9wdXAo
KTsKIH0KIAogUGFzc1JlZlB0cjxQb3B1cE1lbnU+IENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVBv
cHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKQEAgLTk4NSw2ICs5ODcsNDEg
QEAgUGFzc1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVNl
YXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlYXJj
aFBvcHVwTWVudUNocm9taXVtKGNsaWVudCkpOwogfQogCisjaWYgRU5BQkxFKFBBR0VfUE9QVVAp
CitQYWdlUG9wdXAqIENocm9tZUNsaWVudEltcGw6Om9wZW5QYWdlUG9wdXAoUGFnZVBvcHVwQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IEludFJlY3QmIG9yaWdpbkJvdW5kc0luUm9vdFZpZXcpCit7Cisg
ICAgQVNTRVJUKGNsaWVudCk7CisgICAgaWYgKGhhc09wZW5lZFBvcHVwKCkpCisgICAgICAgIG1f
d2ViVmlldy0+aGlkZVBvcHVwcygpOworCisgICAgV2ViV2lkZ2V0KiBwb3B1cFdpZGdldCA9IG1f
d2ViVmlldy0+Y2xpZW50KCktPmNyZWF0ZVBvcHVwTWVudShXZWJQb3B1cFR5cGVQYWdlKTsKKyAg
ICBBU1NFUlQocG9wdXBXaWRnZXQpOworICAgIFdlYlBhZ2VQb3B1cEltcGwqIHBvcHVwID0gc3Rh
dGljX2Nhc3Q8V2ViUGFnZVBvcHVwSW1wbCo+KHBvcHVwV2lkZ2V0KTsKKyAgICBXZWJTaXplIHJv
b3RWaWV3U2l6ZSA9IG1fd2ViVmlldy0+c2l6ZSgpOworICAgIEludFNpemUgcG9wdXBTaXplID0g
Y2xpZW50LT5jb250ZW50U2l6ZSgpOworICAgIEludFJlY3QgcG9wdXBCb3VuZHNJblJvb3RWaWV3
KEludFBvaW50KG1heCgwLCBvcmlnaW5Cb3VuZHNJblJvb3RWaWV3LngoKSksIG1heCgwLCBvcmln
aW5Cb3VuZHNJblJvb3RWaWV3Lm1heFkoKSkpLCBwb3B1cFNpemUpOworICAgIGlmIChwb3B1cEJv
dW5kc0luUm9vdFZpZXcubWF4WSgpID4gcm9vdFZpZXdTaXplLmhlaWdodCkKKyAgICAgICAgcG9w
dXBCb3VuZHNJblJvb3RWaWV3LnNldFkobWF4KDAsIG9yaWdpbkJvdW5kc0luUm9vdFZpZXcueSgp
IC0gcG9wdXBTaXplLmhlaWdodCgpKSk7CisgICAgaWYgKHBvcHVwQm91bmRzSW5Sb290Vmlldy5t
YXhYKCkgPiByb290Vmlld1NpemUud2lkdGgpCisgICAgICAgIHBvcHVwQm91bmRzSW5Sb290Vmll
dy5zZXRYKG1heCgwLCByb290Vmlld1NpemUud2lkdGggLSBwb3B1cFNpemUud2lkdGgoKSkpOwor
ICAgIGlmICghcG9wdXAtPmluaXQobV93ZWJWaWV3LCBjbGllbnQsIHJvb3RWaWV3VG9TY3JlZW4o
cG9wdXBCb3VuZHNJblJvb3RWaWV3KSkpIHsKKyAgICAgICAgcG9wdXAtPmNsb3NlUG9wdXAoKTsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIG1fd2ViVmlldy0+cG9wdXBPcGVuZWQocG9w
dXApOworICAgIHJldHVybiBwb3B1cDsKK30KKwordm9pZCBDaHJvbWVDbGllbnRJbXBsOjpjbG9z
ZVBhZ2VQb3B1cChQYWdlUG9wdXAqIHBvcHVwKQoreworICAgIGlmICghcG9wdXApCisgICAgICAg
IHJldHVybjsKKyAgICBXZWJQYWdlUG9wdXBJbXBsKiBwb3B1cEltcGwgPSBzdGF0aWNfY2FzdDxX
ZWJQYWdlUG9wdXBJbXBsKj4ocG9wdXApOworICAgIG1fd2ViVmlldy0+cG9wdXBDbG9zZWQocG9w
dXBJbXBsKTsKKyAgICBwb3B1cEltcGwtPmNsb3NlUG9wdXAoKTsKK30KKyNlbmRpZgorCiBib29s
IENocm9tZUNsaWVudEltcGw6OnNob3VsZFJ1bk1vZGFsRGlhbG9nRHVyaW5nUGFnZURpc21pc3Nh
bChjb25zdCBEaWFsb2dUeXBlJiBkaWFsb2dUeXBlLCBjb25zdCBTdHJpbmcmIGRpYWxvZ01lc3Nh
Z2UsIEZyYW1lTG9hZGVyOjpQYWdlRGlzbWlzc2FsVHlwZSBkaXNtaXNzYWxUeXBlKSBjb25zdAog
ewogICAgIGNvbnN0IGNoYXIqIGtEaWFsb2dzW10gPSB7ImFsZXJ0IiwgImNvbmZpcm0iLCAicHJv
bXB0IiwgInNob3dNb2RhbERpYWxvZyJ9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5oCmluZGV4IDM0YTBiNWFkZjg3OGYwNzk2ZjY4NmMzOWFlODZiNjgz
MDgwZDBmNzEuLjA2ZWY0NzhlMmE3MTllNjYwZmI1Mzg2NmJiZGI4YWI4ZjI4ODdmZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKQEAgLTE5NSw2
ICsxOTUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNPcGVuZWRQb3B1cCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+
IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQ
b3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CisjaWYgRU5BQkxFKFBB
R0VfUE9QVVApCisgICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlUG9wdXAqIG9wZW5QYWdlUG9wdXAo
V2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBhZ2VQb3B1cChXZWJDb3JlOjpQYWdlUG9wdXAq
KSBPVkVSUklERTsKKyNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFJ1bk1vZGFsRGlh
bG9nRHVyaW5nUGFnZURpc21pc3NhbChjb25zdCBEaWFsb2dUeXBlJiwgY29uc3QgU3RyaW5nJiBk
aWFsb2dNZXNzYWdlLCBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UGFnZURpc21pc3NhbFR5cGUpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9w
dXBJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwu
Y3BwCmluZGV4IGJjODEwYzdiMWIxNjhkYjdlY2JlMjE1ZDAxOWM2MzQ3M2YxYjRmZDIuLjRhZTZk
OGNlMTI2NjkzNWJiNDYwZWZlZGNhM2E1ZGMxZjk0MmQ4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOSwyMSArMjksMzQ0IEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQb3B1cEltcGwuaCIK
IAorI2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgorI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCisj
aW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRm9ybVN0YXRlLmgiCisjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCisjaW5jbHVk
ZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgorI2luY2x1ZGUgIlNldHRp
bmdzLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2lu
Y2x1ZGUgIldlYklucHV0RXZlbnQuaCIKKyNpbmNsdWRlICJXZWJJbnB1dEV2ZW50Q29udmVyc2lv
bi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQb3B1cC5oIgorI2luY2x1ZGUgIldlYldpZGdldENsaWVu
dC5oIgorI2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIuaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjaWYgRU5BQkxF
KFBBR0VfUE9QVVApCisKK2NsYXNzIFBhZ2VQb3B1cENocm9tZUNsaWVudCA6IHB1YmxpYyBFbXB0
eUNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZVBvcHVwQ2hyb21l
Q2xpZW50KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVibGljOgorICAgIGV4
cGxpY2l0IFBhZ2VQb3B1cENocm9tZUNsaWVudChXZWJQYWdlUG9wdXBJbXBsKiBwb3B1cCkgOiBt
X3BvcHVwKHBvcHVwKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcG9wdXAtPndpZGdldENsaWVu
dCgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93U29v
bigpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX3BvcHVwLT5jbG9zZVBvcHVwKCk7CisgICAg
fQorCisgICAgdmlydHVhbCBGbG9hdFJlY3Qgd2luZG93UmVjdCgpIE9WRVJSSURFCisgICAgewor
ICAgICAgICByZXR1cm4gRmxvYXRSZWN0KG1fcG9wdXAtPm1fd2luZG93UmVjdEluU2NyZWVuLngs
IG1fcG9wdXAtPm1fd2luZG93UmVjdEluU2NyZWVuLnksIG1fcG9wdXAtPm1fd2luZG93UmVjdElu
U2NyZWVuLndpZHRoLCBtX3BvcHVwLT5tX3dpbmRvd1JlY3RJblNjcmVlbi5oZWlnaHQpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fcG9wdXAtPm1fd2luZG93UmVjdEluU2NyZWVu
ID0gSW50UmVjdChyZWN0KTsKKyAgICAgICAgbV9wb3B1cC0+d2lkZ2V0Q2xpZW50KCktPnNldFdp
bmRvd1JlY3QobV9wb3B1cC0+bV93aW5kb3dSZWN0SW5TY3JlZW4pOworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBl
LCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFCisgICAgeworI2lmbmRlZiBOREVCVUcKKyAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJDT05TT0xFIE1FU1NTQUdFOiV1OiAlc1xuIiwgbGluZU51
bWJlciwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJB
TShtZXNzYWdlKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGxpbmVOdW1iZXIpOworI2VuZGlmCisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KGNv
bnN0IEludFJlY3QmIHBhaW50UmVjdCwgYm9vbCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGlm
IChwYWludFJlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3Bv
cHVwLT53aWRnZXRDbGllbnQoKS0+ZGlkSW52YWxpZGF0ZVJlY3QocGFpbnRSZWN0KTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBj
b25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkgT1ZFUlJJ
REUKKyAgICB7CisgICAgICAgIG1fcG9wdXAtPndpZGdldENsaWVudCgpLT5kaWRTY3JvbGxSZWN0
KHNjcm9sbERlbHRhLndpZHRoKCksIHNjcm9sbERlbHRhLmhlaWdodCgpLCBpbnRlcnNlY3Rpb24o
c2Nyb2xsUmVjdCwgY2xpcFJlY3QpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxp
ZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0LCBib29s
IGltbWVkaWF0ZSkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGludmFsaWRhdGVDb250ZW50c0Fu
ZFJvb3RWaWV3KHVwZGF0ZVJlY3QsIGltbWVkaWF0ZSk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fcG9wdXAt
PndpZGdldENsaWVudCgpLT5zY2hlZHVsZUFuaW1hdGlvbigpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCogd2ViVmlldygpIGNvbnN0IE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1cm4g
bV9wb3B1cC0+bV93ZWJWaWV3OworICAgIH0KKworICAgIFdlYlBhZ2VQb3B1cEltcGwqIG1fcG9w
dXA7Cit9OworCiAvLyBXZWJQYWdlUG9wdXBJbXBsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLy8gRklYTUU6IFdlYlBh
Z2VQb3B1cEltcGwgaW1wbGVtZW50YXRpb24gd2lsbCBiZSB3cml0dGVuIGhlcmUuCitXZWJQYWdl
UG9wdXBJbXBsOjpXZWJQYWdlUG9wdXBJbXBsKFdlYldpZGdldENsaWVudCogY2xpZW50KQorICAg
IDogbV93aWRnZXRDbGllbnQoY2xpZW50KQoreworICAgIEFTU0VSVChjbGllbnQpOworfQorCitX
ZWJQYWdlUG9wdXBJbXBsOjp+V2ViUGFnZVBvcHVwSW1wbCgpCit7Cit9CisKK2Jvb2wgV2ViUGFn
ZVBvcHVwSW1wbDo6aW5pdChXZWJWaWV3SW1wbCogd2ViVmlldywgUGFnZVBvcHVwQ2xpZW50KiBw
b3B1cENsaWVudCwgY29uc3QgSW50UmVjdCYgYm91bmRzSW5TY3JlZW4pCit7CisgICAgQVNTRVJU
KHdlYlZpZXcpOworICAgIEFTU0VSVChwb3B1cENsaWVudCk7CisgICAgbV93ZWJWaWV3ID0gd2Vi
VmlldzsKKyAgICBtX3BvcHVwQ2xpZW50ID0gcG9wdXBDbGllbnQ7CisKKyAgICBtX3dpZGdldENs
aWVudC0+c2V0V2luZG93UmVjdChib3VuZHNJblNjcmVlbik7CisgICAgbV93aW5kb3dSZWN0SW5T
Y3JlZW4gPSBib3VuZHNJblNjcmVlbjsKKyAgICBpZiAoIWluaXRQYWdlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBtX3dpZGdldENsaWVudC0+c2hvdyhXZWJOYXZpZ2F0aW9uUG9saWN5
KCkpOworCisgICAgc2V0Rm9jdXModHJ1ZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBXZWJQYWdlUG9wdXBJbXBsOjppbml0UGFnZSgpCit7CisgICAgUGFnZTo6UGFnZUNsaWVudHMg
cGFnZUNsaWVudHM7CisgICAgbV9jaHJvbWVDbGllbnQgPSBhZG9wdFB0cihuZXcgUGFnZVBvcHVw
Q2hyb21lQ2xpZW50KHRoaXMpKTsKKyAgICBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQgPSBtX2No
cm9tZUNsaWVudC5nZXQoKTsKKyAgICBzdGF0aWMgRWRpdG9yQ2xpZW50KiBlbXB0eUVkaXRvckNs
aWVudCA9IG5ldyBFbXB0eUVkaXRvckNsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5lZGl0b3JDbGll
bnQgPSBlbXB0eUVkaXRvckNsaWVudDsKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICBz
dGF0aWMgQ29udGV4dE1lbnVDbGllbnQqIGVtcHR5Q29udGV4dE1lbnVDbGllbnQgPSBuZXcgRW1w
dHlDb250ZXh0TWVudUNsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5jb250ZXh0TWVudUNsaWVudCA9
IGVtcHR5Q29udGV4dE1lbnVDbGllbnQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JU
KQorICAgIHN0YXRpYyBEcmFnQ2xpZW50KiBlbXB0eURyYWdDbGllbnQgPSBuZXcgRW1wdHlEcmFn
Q2xpZW50OworICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBlbXB0eURyYWdDbGllbnQ7Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIHN0YXRpYyBJbnNwZWN0b3JDbGllbnQq
IGVtcHR5SW5zcGVjdG9yQ2xpZW50ID0gbmV3IEVtcHR5SW5zcGVjdG9yQ2xpZW50OworICAgIHBh
Z2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IGVtcHR5SW5zcGVjdG9yQ2xpZW50OworI2VuZGlm
CisgICAgbV9wYWdlID0gYWRvcHRQdHIobmV3IFBhZ2UocGFnZUNsaWVudHMpKTsKKyAgICBtX3Bh
Z2UtPnNldHRpbmdzKCktPnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CisgICAgbV9wYWdlLT5zZXR0
aW5ncygpLT5zZXRBbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyh0cnVlKTsKKyAgICBzdGF0aWMg
RnJhbWVMb2FkZXJDbGllbnQqIGVtcHR5RnJhbWVMb2FkZXJDbGllbnQgPSAgbmV3IEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ7CisgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IEZyYW1lOjpjcmVhdGUo
bV9wYWdlLmdldCgpLCAwLCBlbXB0eUZyYW1lTG9hZGVyQ2xpZW50KTsKKyAgICBmcmFtZS0+c2V0
VmlldyhGcmFtZVZpZXc6OmNyZWF0ZShmcmFtZS5nZXQoKSkpOworICAgIGZyYW1lLT5pbml0KCk7
CisgICAgZnJhbWUtPnZpZXcoKS0+cmVzaXplKG1fcG9wdXBDbGllbnQtPmNvbnRlbnRTaXplKCkp
OworICAgIGZyYW1lLT52aWV3KCktPnNldFRyYW5zcGFyZW50KGZhbHNlKTsKKworICAgIERvY3Vt
ZW50V3JpdGVyKiB3cml0ZXIgPSBmcmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPndyaXRlcigpOworICAgIHdyaXRlci0+c2V0TUlNRVR5cGUoInRleHQvaHRtbCIpOworICAg
IHdyaXRlci0+c2V0RW5jb2RpbmcoIlVURi04IiwgZmFsc2UpOworICAgIHdyaXRlci0+YmVnaW4o
KTsKKyAgICBtX3BvcHVwQ2xpZW50LT53cml0ZURvY3VtZW50KCp3cml0ZXIpOworICAgIHdyaXRl
ci0+ZW5kKCk7CisKKyAgICB7CisgICAgICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsK
KyAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IFY4UHJveHk6Om1haW5X
b3JsZENvbnRleHQoZnJhbWUuZ2V0KCkpOworICAgICAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBz
Y29wZShjb250ZXh0KTsKKyAgICAgICAgbV92OHRoaXMgPSB2ODo6UGVyc2lzdGVudDx2ODo6RXh0
ZXJuYWw+OjpOZXcodjg6OkV4dGVybmFsOjpOZXcodGhpcykpOworICAgICAgICB2ODo6TG9jYWw8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhz
ZXRWYWx1ZUFuZENsb3NlUG9wdXBDYWxsYmFjaywgbV92OHRoaXMpOworICAgICAgICBjb250ZXh0
LT5HbG9iYWwoKS0+U2V0KHY4OjpTdHJpbmc6Ok5ldygic2V0VmFsdWVBbmRDbG9zZVBvcHVwIiks
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPih0ZW1wbC0+R2V0RnVuY3Rpb24oKSkpOworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYlBhZ2VQb3B1
cEltcGw6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQorICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBWOFByb3h5OjpUeXBlRXJyb3IpOworICAg
IFdlYlBhZ2VQb3B1cEltcGwqIHBvcHVwID0gc3RhdGljX2Nhc3Q8V2ViUGFnZVBvcHVwSW1wbCo+
KHY4OjpFeHRlcm5hbDo6Q2FzdCgqYXJncy5EYXRhKCkpLT5WYWx1ZSgpKTsKKyAgICBBU1NFUlQo
cG9wdXApOworICAgIHBvcHVwLT5tX3BvcHVwQ2xpZW50LT5zZXRWYWx1ZUFuZENsb3NlUG9wdXAo
dG9JbnQzMihhcmdzWzBdKSwgdG9XZWJDb3JlU3RyaW5nKGFyZ3MsIDEpKTsKKyAgICAvLyBzZXRW
YWxldUFuZENsb3NlUG9wdXAoKSBkZWxldGVzIHRoZSBwb3B1cCBvYmplY3QuIERvIG5vdCBhY2Nl
c3MgaXQuCisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKworV2ViU2l6ZSBXZWJQYWdl
UG9wdXBJbXBsOjpzaXplKCkKK3sKKyAgICByZXR1cm4gbV9wb3B1cENsaWVudC0+Y29udGVudFNp
emUoKTsKK30KKwordm9pZCBXZWJQYWdlUG9wdXBJbXBsOjphbmltYXRlKGRvdWJsZSBmcmFtZUJl
Z2luVGltZSkKK3sKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisgICAgaWYg
KCFmcmFtZUJlZ2luVGltZSkKKyAgICAgICAgZnJhbWVCZWdpblRpbWUgPSBjdXJyZW50VGltZSgp
OworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2VydmljZVNjcmlwdGVkQW5pbWF0
aW9ucyhjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKGZyYW1lQmVnaW5UaW1lKSk7CisjZW5k
aWYKK30KKwordm9pZCBXZWJQYWdlUG9wdXBJbXBsOjpjb21wb3NpdGUoYm9vbCkKK3sKK30KKwor
dm9pZCBXZWJQYWdlUG9wdXBJbXBsOjpsYXlvdXQoKQoreworICAgIG1fcGFnZS0+bWFpbkZyYW1l
KCktPnZpZXcoKS0+c2V0RnJhbWVSZWN0KG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+ZnJh
bWVSZWN0KCkpOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+bGF5b3V0KCk7Cit9
CisKK3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6cGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0
IFdlYlJlY3QmIHJlY3QpCit7CisgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisgICAgR3JhcGhpY3NDb250ZXh0QnVpbGRlciBidWlsZGVyKGNhbnZhcyk7CisgICAgR3Jh
cGhpY3NDb250ZXh0JiBnYyA9IGJ1aWxkZXIuY29udGV4dCgpOworICAgIGdjLnNhdmUoKTsKKyAg
ICBnYy5jbGlwKHJlY3QpOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+cGFpbnQo
JmdjLCByZWN0KTsKKyAgICBnYy5yZXN0b3JlKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVBvcHVwSW1w
bDo6cmVzaXplKGNvbnN0IFdlYlNpemUmIG5ld1NpemUpCit7CisgICAgbV9wYWdlLT5tYWluRnJh
bWUoKS0+dmlldygpLT5yZXNpemUobmV3U2l6ZSk7CisgICAgbV93aWRnZXRDbGllbnQtPmRpZElu
dmFsaWRhdGVSZWN0KFdlYlJlY3QoMCwgMCwgbmV3U2l6ZS53aWR0aCwgbmV3U2l6ZS5oZWlnaHQp
KTsKK30KKworYm9vbCBXZWJQYWdlUG9wdXBJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdl
YklucHV0RXZlbnQmIGV2ZW50KQoreworICAgIGlmICghbV9wYWdlLT5tYWluRnJhbWUoKSB8fCAh
bV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
RnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKKyAgICBzd2l0Y2ggKGV2ZW50LnR5
cGUpIHsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlTW92ZToKKyAgICAgICAgZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5tb3VzZU1vdmVkKFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIoZnJh
bWUtPnZpZXcoKSwgKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQqPigmZXZlbnQpKSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VMZWF2
ZToKKyAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZU1vdmVFdmVudChQ
bGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKGZyYW1lLT52aWV3KCksICpzdGF0aWNfY2FzdDxjb25z
dCBXZWJNb3VzZUV2ZW50Kj4oJmV2ZW50KSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBj
YXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw6CisgICAgICAgIGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKGZyYW1lLT52
aWV3KCksICpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQqPigmZXZlbnQpKSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VEb3du
OiB7CisgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQcmVzc0V2ZW50
KFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIoZnJhbWUtPnZpZXcoKSwgKnN0YXRpY19jYXN0PGNv
bnN0IFdlYk1vdXNlRXZlbnQqPigmZXZlbnQpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlVXA6CisgICAgICAgIGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50QnVp
bGRlcihmcmFtZS0+dmlldygpLCAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCo+KCZl
dmVudCkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpS
YXdLZXlEb3duOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6S2V5RG93bjoKKyAgICBjYXNlIFdl
YklucHV0RXZlbnQ6OktleVVwOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6Q2hhcjoKKyAgICAg
ICAgLy8gVGhlIG1haW4gV2ViVmlldyByZWNlaXZlcyBrZXkgZXZlbnRzIGFuZCBmb3J3YXJkIHRo
ZW0gdG8gdGhpcyB2aWEgaGFuZGxlS2V5RXZlbnQoKS4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMp
CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CisgICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
R2VzdHVyZVNjcm9sbFVwZGF0ZToKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGlu
Z1N0YXJ0OgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOgorICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6
Okdlc3R1cmVUYXBEb3duOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZURvdWJsZVRh
cDoKKyAgICAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlR2VzdHVyZUV2
ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihmcmFtZS0+dmlldygpLCAqc3RhdGljX2Nh
c3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmV2ZW50KSkpOworICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZVBpbmNoQmVnaW46CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
UGluY2hFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hVcGRhdGU6Cisg
ICAgICAgIC8vIEZJWE1FOiBPbmNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50IGlzIHVwZGF0ZWQgdG8g
c3VwcG9ydCBwaW5jaCwgdGhpcworICAgICAgICAvLyBzaG91bGQgY2FsbCBoYW5kbGVHZXN0dXJl
RXZlbnQsIGp1c3QgbGlrZSBpdCBjdXJyZW50bHkgZG9lcyBmb3IKKyAgICAgICAgLy8gZ2VzdHVy
ZSBzY3JvbGwuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoU3RhcnQ6CisgICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpUb3VjaE1vdmU6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3Vj
aEVuZDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoQ2FuY2VsOgorICAgICAgICByZXR1
cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2ZW50KFBsYXRmb3JtVG91Y2hF
dmVudEJ1aWxkZXIoZnJhbWUtPnZpZXcoKSwgKnN0YXRpY19jYXN0PGNvbnN0IFdlYlRvdWNoRXZl
bnQqPigmZXZlbnQpKSk7CisjZW5kaWYKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wgV2ViUGFn
ZVBvcHVwSW1wbDo6aGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBl
dmVudCkKK3sKKyAgICBpZiAoIW1fcGFnZS0+bWFpbkZyYW1lKCkgfHwgIW1fcGFnZS0+bWFpbkZy
YW1lKCktPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoZXZlbnQpOworfQorCit2b2lk
IFdlYlBhZ2VQb3B1cEltcGw6OnNldEZvY3VzKGJvb2wgZW5hYmxlKQoreworICAgIG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3VzZWQoZW5hYmxlKTsKKyAgICBpZiAoZW5hYmxlKQor
ICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRBY3RpdmUodHJ1ZSk7Cit9CisK
K3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6Y2xvc2UoKQoreworICAgIGlmIChtX3BhZ2UpIHsKKyAg
ICAgICAgbV9wYWdlLmNsZWFyKCk7CisgICAgICAgIG1fY2hyb21lQ2xpZW50LmNsZWFyKCk7Cisg
ICAgICAgIG1fdjh0aGlzLkRpc3Bvc2UoKTsKKyAgICB9CisgICAgZGVyZWYoKTsKK30KKwordm9p
ZCBXZWJQYWdlUG9wdXBJbXBsOjpjbG9zZVBvcHVwKCkKK3sKKyAgICBpZiAobV9wYWdlKSB7Cisg
ICAgICAgIG1fcGFnZS0+c2V0R3JvdXBOYW1lKFN0cmluZygpKTsKKyAgICAgICAgbV9wYWdlLT5t
YWluRnJhbWUoKS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CisgICAgICAgIG1fcGFnZS0+
bWFpbkZyYW1lKCktPmxvYWRlcigpLT5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeU5vbmUp
OworICAgIH0KKyAgICBtX3dpZGdldENsaWVudC0+Y2xvc2VXaWRnZXRTb29uKCk7CisKKyAgICBt
X3BvcHVwQ2xpZW50LT5kaWRDbG9zZVBvcHVwKCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoUEFH
RV9QT1BVUCkKIAogLy8gV2ViUGFnZVBvcHVwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2ViUGFnZVBvcHVwKiBXZWJQ
YWdlUG9wdXA6OmNyZWF0ZShXZWJXaWRnZXRDbGllbnQqKQorV2ViUGFnZVBvcHVwKiBXZWJQYWdl
UG9wdXA6OmNyZWF0ZShXZWJXaWRnZXRDbGllbnQqIGNsaWVudCkKIHsKLSAgICAvLyBGSVhNRTog
UmV0dXJucyBhIFdlYlBhZ2VQb3B1cEltcGwgb2JqZWN0LgorI2lmIEVOQUJMRShQQUdFX1BPUFVQ
KQorICAgIEFTU0VSVChjbGllbnQpOworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm4g
MDsKKyAgICAvLyBQYXNzIHRoZSBXZWJQYWdlUG9wdXBJbXBsJ3Mgc2VsZi1yZWZlcmVuY2UgdG8g
dGhlIGNhbGxlci4KKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBhZ2VQb3B1cEltcGwoY2xp
ZW50KSkubGVha1JlZigpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY2xpZW50KTsKICAgICBy
ZXR1cm4gMDsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzJhNjJj
Y2JiMTA4ZDNjZmI1ZTNkZGUzM2E4ZWFmZDM3YzgwNTNjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5oCkBAIC0wLDAgKzEsOTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlBhZ2VQb3B1cEltcGxfaAorI2RlZmluZSBXZWJQYWdlUG9wdXBJbXBsX2gK
KworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorCisjaW5jbHVkZSAiUGFnZVBvcHVwLmgiCisjaW5j
bHVkZSAiV2ViUGFnZVBvcHVwLmgiCisjaW5jbHVkZSA8djguaD4KKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgUGFnZTsKK2NsYXNzIFBhZ2VQb3B1cENsaWVudDsKK2NsYXNzIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBhZ2VQb3B1cENo
cm9tZUNsaWVudDsKK2NsYXNzIFdlYlZpZXdJbXBsOworCitjbGFzcyBXZWJQYWdlUG9wdXBJbXBs
IDogcHVibGljIFdlYlBhZ2VQb3B1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
V2ViQ29yZTo6UGFnZVBvcHVwLAorICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBSZWZD
b3VudGVkPFdlYlBhZ2VQb3B1cEltcGw+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KworcHVibGljOgorICAgIC8vIENhbGxlZCBieSBDaHJvbWVDbGllbnRJbXBsOjpvcGVuUGFnZVBv
cHVwKCkuCisgICAgYm9vbCBpbml0KFdlYlZpZXdJbXBsKiwgV2ViQ29yZTo6UGFnZVBvcHVwQ2xp
ZW50KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgYm91bmRzSW5TY3JlZW4pOworICAgIC8vIENh
bGxlZCBieSBXZWJWaWV3SW1wbC4KKyAgICBib29sIGhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYkNv
cmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpOworICAgIHZvaWQgY2xvc2VQb3B1cCgpOworICAg
IHZpcnR1YWwgfldlYlBhZ2VQb3B1cEltcGwoKTsKKyAgICBXZWJXaWRnZXRDbGllbnQqIHdpZGdl
dENsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkZ2V0Q2xpZW50OyB9CisKK3ByaXZhdGU6Cisg
ICAgLy8gV2ViV2lkZ2V0IGZ1bmN0aW9ucworICAgIHZpcnR1YWwgV2ViU2l6ZSBzaXplKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoZG91YmxlKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgY29tcG9zaXRlKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwgY29u
c3QgV2ViUmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNpemUoY29uc3QgV2Vi
U2l6ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoYm9vbCkgT1ZFUlJJREU7CisKKyAgICBX
ZWJQYWdlUG9wdXBJbXBsKFdlYldpZGdldENsaWVudCopOworICAgIGJvb2wgaW5pdFBhZ2UoKTsK
KyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNldFZhbHVlQW5kQ2xvc2VQb3B1cENh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKKworICAgIFdlYldpZGdldENsaWVudCogbV93
aWRnZXRDbGllbnQ7CisgICAgV2ViUmVjdCBtX3dpbmRvd1JlY3RJblNjcmVlbjsKKyAgICBXZWJW
aWV3SW1wbCogbV93ZWJWaWV3OworICAgIE93blB0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7Cisg
ICAgT3duUHRyPFBhZ2VQb3B1cENocm9tZUNsaWVudD4gbV9jaHJvbWVDbGllbnQ7CisgICAgV2Vi
Q29yZTo6UGFnZVBvcHVwQ2xpZW50KiBtX3BvcHVwQ2xpZW50OworICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpFeHRlcm5hbD4gbV92OHRoaXM7CisKKyAgICBmcmllbmQgY2xhc3MgV2ViUGFnZVBvcHVw
OworICAgIGZyaWVuZCBjbGFzcyBQYWdlUG9wdXBDaHJvbWVDbGllbnQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKyNlbmRpZiAvLyBFTkFCTEUoUEFHRV9QT1BVUCkKKyNlbmRpZiAvLyBX
ZWJQYWdlUG9wdXBJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAppbmRleCA0ODkwNmVhNWY5NTM1OWQ3MTA0ZmYxMDgyOTZkOTQ2YWViMTFmY2M4Li4zMWQ5
NGFkZDA4ZGQ2NDRlMmI1NzhlNTdlMTE3ZGJiNzQ4MjBhMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xMzEsNiArMTMxLDcgQEAKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJB
Y3Rpb24uaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBvcHVwSW1w
bC5oIgogI2luY2x1ZGUgIldlYlBsdWdpbi5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkFjdGlvbi5o
IgogI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lckltcGwuaCIKQEAgLTYzNSw2ICs2MzYsMTAg
QEAgYm9vbCBXZWJWaWV3SW1wbDo6a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZl
bnQpCiAgICAgLy8gbm90IHRoZSBwYWdlLgogICAgIGlmIChtX3NlbGVjdFBvcHVwKQogICAgICAg
ICByZXR1cm4gbV9zZWxlY3RQb3B1cC0+aGFuZGxlS2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2
ZW50QnVpbGRlcihldmVudCkpOworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorICAgIGlmIChtX3Bh
Z2VQb3B1cCkKKyAgICAgICAgcmV0dXJuIG1fcGFnZVBvcHVwLT5oYW5kbGVLZXlFdmVudChQbGF0
Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50KSk7CisjZW5kaWYKIAogICAgIC8vIEdpdmUg
QXV0b2NvbXBsZXRlIGEgY2hhbmNlIHRvIGNvbnN1bWUgdGhlIGtleSBldmVudHMgaXQgaXMgaW50
ZXJlc3RlZCBpbi4KICAgICBpZiAoYXV0b2NvbXBsZXRlSGFuZGxlS2V5RXZlbnQoZXZlbnQpKQpA
QCAtNzQ3LDYgKzc1MiwxMCBAQCBib29sIFdlYlZpZXdJbXBsOjpjaGFyRXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgLy8gbm90IHRoZSBwYWdlLgogICAgIGlmIChtX3Nl
bGVjdFBvcHVwKQogICAgICAgICByZXR1cm4gbV9zZWxlY3RQb3B1cC0+aGFuZGxlS2V5RXZlbnQo
UGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihldmVudCkpOworI2lmIEVOQUJMRShQQUdFX1BP
UFVQKQorICAgIGlmIChtX3BhZ2VQb3B1cCkKKyAgICAgICAgcmV0dXJuIG1fcGFnZVBvcHVwLT5o
YW5kbGVLZXlFdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50KSk7CisjZW5k
aWYKIAogICAgIEZyYW1lKiBmcmFtZSA9IGZvY3VzZWRXZWJDb3JlRnJhbWUoKTsKICAgICBpZiAo
IWZyYW1lKQpAQCAtMTEwOSw2ICsxMTE4LDI1IEBAIHZvaWQgIFdlYlZpZXdJbXBsOjpwb3B1cENs
b3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpCiAgICAgfQogfQog
CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCit2b2lkIFdlYlZpZXdJbXBsOjpwb3B1cE9wZW5lZChX
ZWJQYWdlUG9wdXBJbXBsKiBwb3B1cCkKK3sKKyAgICBBU1NFUlQoIW1fcGFnZVBvcHVwKTsKKyAg
ICBtX3BhZ2VQb3B1cCA9IHBvcHVwOworCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGZvY3VzZWRX
ZWJDb3JlRnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRDYXJldFZpc2li
bGUoZmFsc2UpOworfQorCit2b2lkIFdlYlZpZXdJbXBsOjpwb3B1cENsb3NlZChXZWJQYWdlUG9w
dXBJbXBsKiBwb3B1cCkKK3sKKyAgICBBU1NFUlQobV9wYWdlUG9wdXAgPT0gcG9wdXApOworICAg
IG1fcGFnZVBvcHVwID0gMDsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gZm9jdXNlZFdlYkNvcmVG
cmFtZSgpKQorICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnBhZ2VBY3RpdmF0aW9uQ2hhbmdl
ZCgpOworfQorI2VuZGlmCisKIHZvaWQgV2ViVmlld0ltcGw6OmhpZGVBdXRvZmlsbFBvcHVwKCkK
IHsKICAgICBpZiAobV9hdXRvZmlsbFBvcHVwU2hvd2luZykgewpAQCAtMTYyNCw4ICsxNjUyLDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Rm9jdXMoYm9vbCBlbmFibGUpCiAgICAgICAgIH0KICAg
ICAgICAgbV9pbWVBY2NlcHRFdmVudHMgPSB0cnVlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGhp
ZGVBdXRvZmlsbFBvcHVwKCk7Ci0gICAgICAgIGhpZGVTZWxlY3RQb3B1cCgpOworICAgICAgICBo
aWRlUG9wdXBzKCk7CiAKICAgICAgICAgLy8gQ2xlYXIgZm9jdXMgb24gdGhlIGN1cnJlbnRseSBm
b2N1c2VkIGZyYW1lIGlmIGFueS4KICAgICAgICAgaWYgKCFtX3BhZ2UpCkBAIC0yNzA5LDYgKzI3
MzYsMTMgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aGlkZVBvcHVwcygpCiB7CiAgICAgaGlkZVNlbGVj
dFBvcHVwKCk7CiAgICAgaGlkZUF1dG9maWxsUG9wdXAoKTsKKyNpZiBFTkFCTEUoUEFHRV9QT1BV
UCkKKyAgICBpZiAobV9wYWdlUG9wdXApIHsKKyAgICAgICAgV2ViUGFnZVBvcHVwSW1wbCogcGFn
ZVBvcHVwID0gbV9wYWdlUG9wdXAuZ2V0KCk7CisgICAgICAgIHBvcHVwQ2xvc2VkKHBhZ2VQb3B1
cCk7CisgICAgICAgIHBhZ2VQb3B1cC0+Y2xvc2VQb3B1cCgpOworICAgIH0KKyNlbmRpZgogfQog
CiB2b2lkIFdlYlZpZXdJbXBsOjpwZXJmb3JtQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5zaWdu
ZWQgYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXgg
OWQ5Mzk2OWY4Y2YxZmE2MDRhM2U5NTEzN2RmZTIwODgxYzE5OTM0Ny4uY2Y5NDY4MjIxZTY4ODNm
NGRlOTk2YmU0MmQ1ZjY4ZjY0N2FkN2Q0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCkBAIC04OSw2ICs4OSw3IEBAIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRDbGll
bnQ7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50UHJpdmF0ZTsKIGNsYXNzIFdlYkZyYW1lSW1wbDsK
IGNsYXNzIFdlYkdlc3R1cmVFdmVudDsKK2NsYXNzIFdlYlBhZ2VQb3B1cEltcGw7CiBjbGFzcyBX
ZWJJbWFnZTsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwpA
QCAtNDI0LDYgKzQyNSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gTm90aWZpY2F0aW9uIHRoYXQgYSBw
b3B1cCB3YXMgb3BlbmVkL2Nsb3NlZC4KICAgICB2b2lkIHBvcHVwT3BlbmVkKFdlYkNvcmU6OlBv
cHVwQ29udGFpbmVyKiBwb3B1cENvbnRhaW5lcik7CiAgICAgdm9pZCBwb3B1cENsb3NlZChXZWJD
b3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpOworI2lmIEVOQUJMRShQQUdFX1BP
UFVQKQorICAgIHZvaWQgcG9wdXBPcGVuZWQoV2ViUGFnZVBvcHVwSW1wbCopOworICAgIHZvaWQg
cG9wdXBDbG9zZWQoV2ViUGFnZVBvcHVwSW1wbCopOworI2VuZGlmCiAKICAgICB2b2lkIGhpZGVB
dXRvZmlsbFBvcHVwKCk7CiAKQEAgLTQ2MSw2ICs0NjYsMTEgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGUoV2ViUGFnZVZpc2liaWxpdHlTdGF0ZSwgYm9vbCk7
CiAKICAgICBXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogc2VsZWN0UG9wdXAoKSBjb25zdCB7IHJl
dHVybiBtX3NlbGVjdFBvcHVwLmdldCgpOyB9CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAg
Ym9vbCBoYXNPcGVuZWRQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0UG9wdXAgfHwgbV9w
YWdlUG9wdXA7IH0KKyNlbHNlCisgICAgYm9vbCBoYXNPcGVuZWRQb3B1cCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2VsZWN0UG9wdXA7IH0KKyNlbmRpZgogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRo
ZSBldmVudCBsZWFkcyB0byBzY3JvbGxpbmcuCiAgICAgc3RhdGljIGJvb2wgbWFwS2V5Q29kZUZv
clNjcm9sbChpbnQga2V5Q29kZSwKQEAgLTY2Miw2ICs2NzIsMTEgQEAgcHJpdmF0ZToKICAgICAv
LyBUaGUgcG9wdXAgYXNzb2NpYXRlZCB3aXRoIGEgc2VsZWN0IGVsZW1lbnQuCiAgICAgUmVmUHRy
PFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyPiBtX3NlbGVjdFBvcHVwOwogCisjaWYgRU5BQkxFKFBB
R0VfUE9QVVApCisgICAgLy8gVGhlIHBvcHVwIGFzc29jaWF0ZWQgd2l0aCBhbiBpbnB1dCBlbGVt
ZW50LgorICAgIFJlZlB0cjxXZWJQYWdlUG9wdXBJbXBsPiBtX3BhZ2VQb3B1cDsKKyNlbmRpZgor
CiAgICAgT3duUHRyPFdlYkRldlRvb2xzQWdlbnRQcml2YXRlPiBtX2RldlRvb2xzQWdlbnQ7CiAg
ICAgT3duUHRyPFBhZ2VPdmVybGF5TGlzdD4gbV9wYWdlT3ZlcmxheXM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136409</attachid>
            <date>2012-04-10 00:26:08 -0700</date>
            <delta_ts>2012-04-10 23:02:23 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-81081-20120410162606.patch</filename>
            <type>text/plain</type>
            <size>53637</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNjk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDUwMTU3N2RjZmYyNDUyY2YxZDkwZDlkNzhjMDBlYjMyOTE1YzZkY2QuLjZlMTc4OTRjZGE5MTk5
MWE5YjZhYmU3MmYzMzRlY2ExNTc5MjRiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMTItMDQtMTAgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIFBhZ2VQb3B1cCBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEwODEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViUGFn
ZVBvcHVwSW1wbCBjbGFzcywgd2hpY2ggaXMgYW4gaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAg
V2ViQ29yZTo6UGFnZVBvcHVwIGludGVyZmFjZSBhbmQgV2ViS2l0OjpXZWJQYWdlUG9wdXAgaW50
ZXJmYWNlLiBJdCdzIGEKKyAgICAgICAgV2ViV2lkZ2V0IHdoaWNoIGhhcyBhIFBhZ2Ugb2JqZWN0
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgbWFrZXMgbm8gYmVoYXZpb3Ig
Y2hhbmdlIHlldC4KKworICAgICAgICAqIFdlYktpdC5neXA6IEFkZCBXZWJQYWdlUG9wdXBJbXBs
LmgKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudEltcGw6Omhhc09wZW5lZFBvcHVwKToKKyAgICAgICAgRGVsZWdhdGUgdG8g
V2ViVmlld0ltcGw6Omhhc09wZW5lZFBvcHVwKCkuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudEltcGw6Om9wZW5QYWdlUG9wdXApOgorICAgICAgICBBZGRlZC4gQ2FsY3VsYXRlcyBhIGdv
b2QgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBwYWdlIHBvcHVwIGZyb20gdGhlCisgICAgICAg
IHNwZWNpZmllZCBlbGVtZW50IHJlY3RhbmdsZS4KKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50SW1wbDo6Y2xvc2VQYWdlUG9wdXApOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xp
ZW50SW1wbC5oOgorICAgICAgICAoQ2hyb21lQ2xpZW50SW1wbCk6IEFkZCBkZWxhcmF0aW9ucyBv
ZiBvcGVuUGFnZVBvcHVwIGFuZCBjbG9zZVBhZ2VQb3B1cC4KKyAgICAgICAgKiBzcmMvV2ViUGFn
ZVBvcHVwSW1wbC5jcHA6CisgICAgICAgIChQYWdlUG9wdXBDaHJvbWVDbGllbnQpOgorICAgICAg
ICBUaGlzIGlzIGEgbGlnaHQgaW1wbGVtZW50YXRpb24gb2YgQ2hyb21lQ2xpZW50IGZvciB0aGUg
cGFnZSBpbgorICAgICAgICBXZWJQYWdlUG9wdXBJbXBsLiBUaGlzIGlzIGEgZnJpZW5kIG9mIFdl
YlBhZ2VQb3B1cEltcGwgYmVjYXNlIG9mIGVhc2Ugb2YKKyAgICAgICAgYWNjZXNzIHRvIGl0cyBt
ZW1iZXJzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpXZWJQYWdlUG9wdXBJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6fldlYlBhZ2VQb3B1cElt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjppbml0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UpOgorICAgICAgICBNYWtlIGEgUGFn
ZSBhbmQgaW5qZWN0IHNldFZhbHVlQW5kQ2xvc2VQb3B1cCBmdW5jdGlvbi4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpzaXplKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVBvcHVwSW1wbDo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
b3B1cEltcGw6OmNvbXBvc2l0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6
OmxheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OnBhaW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6cmVzaXplKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVBvcHVwSW1wbDo6c2V0Rm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJ
bXBsOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmNsb3NlUG9w
dXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXA6OmNyZWF0ZSk6CisgICAgICAgICog
c3JjL1dlYlBhZ2VQb3B1cEltcGwuaDogQWRkZWQuCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmtleUV2ZW50KTogSWYgYSB2aXNp
YmxlIFBhZ2VQb3B1cCBleGlzdHMsIGZvcndhcmQga2V5IGV2ZW50cyB0byBpdC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OmNoYXJFdmVudCk6IGRpdHRvLgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6cG9wdXBPcGVuZWQpOgorICAgICAgICBBZGRlZC4gUmVnaXN0ZXIgYW4g
b3BlbmluZyBQYWdlUG9wdXAuIFN0b3AgY2FyZXQgYmxpbmtpbmcuCisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpwb3B1cENsb3NlZCk6CisgICAgICAgIEFkZGVkLiBVbnJlZ2lzdGVyIGEg
Y2xvc2luZyBQYWdlUG9wdXAuICBSZXN1bWUgY2FyZXQgYmxpbmtpbmcuCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRGb2N1cyk6CisgICAgICAgIFVzZSBoaWRlUG9wdXBzKCkgYmVj
YXVzZSB3ZSB3YW50IHRvIGFkZCBjb2RlIHRvIGNsb3NlIGEgUGFnZVBvcHVwLgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6aGlkZVBvcHVwcyk6CisgICAgICAgIEFkZCBjb2RlIHRvIGNs
b3NlIGEgUGFnZVBvcHVwLgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAo
V2ViVmlld0ltcGwpOiBBZGQgbV9wYWdlUG9wdXAgZGF0YSBtZW1iZXIgdG8gc3RvcmUgYSB2aXNp
YmxlIFBhZ2VQb3B1cC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omhhc09wZW5lZFBv
cHVwKTogQWRkZWQuCisKIDIwMTItMDQtMDkgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSwgV2ViVmll
d0ltcGw6Om1fbGFzdE1vdXNlUG9zaXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcAppbmRleCAzYzcyZTliMjBmNWYwNDI5
NzBjMTM0ODIxNTMwNTFlOWRjZjU2OTBiLi5mNGFkYmNiMzQzNjZiMDgyYmZjYTEyNWMyMWEzNTg0
MDM1Yzk3MDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRh
clBpY2tlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVu
ZGFyUGlja2VyRWxlbWVudC5jcHAKQEAgLTU1LDYgKzU1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAogaW5saW5lIENhbGVuZGFyUGlja2VyRWxlbWVudDo6Q2FsZW5kYXJQaWNrZXJF
bGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywg
ZG9jdW1lbnQpCisgICAgLCBtX3BvcHVwKDApCiB7CiAgICAgc2V0U2hhZG93UHNldWRvSWQoIi13
ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCmluZGV4IDY4YzgxZTQ4MmE3NzA0MTdmNTM4ZTg3ZmExM2RhNWMxOTBlYTg2MmYuLmM3
ZGFhMGJiYjA0NzA4YTIxNzAzNDE1NzY0YzRlYzA1NjM0ZWU4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKQEAgLTQ1NCw2ICs0NTQsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvUGFn
ZU92ZXJsYXkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9QYWdlT3ZlcmxheUxpc3QuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1BhZ2VPdmVybGF5TGlzdC5oJywKKyAgICAgICAgICAgICAg
ICAnc3JjL1BhZ2VXaWRnZXREZWxlZ2F0ZS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvUGFn
ZVdpZGdldERlbGVnYXRlLmgnLAogICAgICAgICAgICAgICAgICdzcmMvUGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1BsYXRmb3JtTWVzc2FnZVBv
cnRDaGFubmVsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcCcs
CkBAIC02MDcsNiArNjA5LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYk5vdGlmaWNhdGlv
bi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViT3B0aW9uRWxlbWVudC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAnLAorICAgICAgICAgICAgICAg
ICdzcmMvV2ViUGFnZVBvcHVwSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlBhZ2VT
ZXJpYWxpemVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQYWdlU2VyaWFsaXplcklt
cGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5oJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQppbmRleCAzY2NhZmViMjVmOGRkNmExN2Rh
OTM0YTM3ZWFkMDQxMzhkMGVhMTUwLi4yNGYyZjdiN2YyYjMwZDA3ZWZkNWVkMzI0MzA4NTE2Mzgw
ZDE4YzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCkBAIC01Myw3ICs1Myw3
IEBACiAgICAgICAnRU5BQkxFX0lDT05EQVRBQkFTRT0wJywKICAgICAgICdFTkFCTEVfSU5ERVhF
RF9EQVRBQkFTRT0xJywKICAgICAgICdFTkFCTEVfSU5QVVRfU1BFRUNIPTEnLAotICAgICAgJ0VO
QUJMRV9JTlBVVF9UWVBFX0RBVEU9MCcsCisgICAgICAnRU5BQkxFX0lOUFVUX1RZUEVfREFURT0x
JywKICAgICAgICdFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRT0wJywKICAgICAgICdFTkFCTEVf
SU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMPTAnLAogICAgICAgJ0VOQUJMRV9JTlBVVF9UWVBFX01P
TlRIPTAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBs
LmNwcAppbmRleCBmYzY3NGExMGY5M2U0ZTczNGZjMjdmZWQyNGJiMDdkMzIxMGFlNTI5Li5hODE0
Y2I2ZjJkNzlhYjY3MmRkOWE0YTE2ZDdmMjY0NGI4NDcwMjhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNTQsNiArNTQsNyBAQAog
I2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCiAj
aW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkljb24uaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCkBAIC04Myw2ICs4NCw3IEBACiAjaW5jbHVkZSAiV2ViRmlsZUNob29zZXJDb21w
bGV0aW9uSW1wbC5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWVJbXBsLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBvcHVwSW1wbC5oIgogI2luY2x1ZGUgIldl
Ykljb25Mb2FkaW5nQ29tcGxldGlvbkltcGwuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50Lmgi
CiAjaW5jbHVkZSAiV2ViS2l0LmgiCkBAIC05NzIsNyArOTc0LDcgQEAgYm9vbCBDaHJvbWVDbGll
bnRJbXBsOjpzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkK
IAogYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpoYXNPcGVuZWRQb3B1cCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuICEhbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpOworICAgIHJldHVybiBtX3dlYlZpZXct
Pmhhc09wZW5lZFBvcHVwKCk7CiB9CiAKIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBDaHJvbWVDbGll
bnRJbXBsOjpjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CkBA
IC05ODksMTUgKzk5MSwzNyBAQCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lQ2xp
ZW50SW1wbDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaQogfQogCiAjaWYgRU5B
QkxFKFBBR0VfUE9QVVApCi1QYWdlUG9wdXAqIENocm9tZUNsaWVudEltcGw6Om9wZW5QYWdlUG9w
dXAoUGFnZVBvcHVwQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpCi17Ci0gICAgLy8gRklYTUU6IElt
cGVsZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gMDsKK1BhZ2VQb3B1cCogQ2hyb21lQ2xpZW50SW1w
bDo6b3BlblBhZ2VQb3B1cChQYWdlUG9wdXBDbGllbnQqIGNsaWVudCwgY29uc3QgSW50UmVjdCYg
b3JpZ2luQm91bmRzSW5Sb290VmlldykKK3sKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAgICBpZiAo
aGFzT3BlbmVkUG9wdXAoKSkKKyAgICAgICAgbV93ZWJWaWV3LT5oaWRlUG9wdXBzKCk7CisKKyAg
ICBXZWJXaWRnZXQqIHBvcHVwV2lkZ2V0ID0gbV93ZWJWaWV3LT5jbGllbnQoKS0+Y3JlYXRlUG9w
dXBNZW51KFdlYlBvcHVwVHlwZVBhZ2UpOworICAgIEFTU0VSVChwb3B1cFdpZGdldCk7CisgICAg
V2ViUGFnZVBvcHVwSW1wbCogcG9wdXAgPSBzdGF0aWNfY2FzdDxXZWJQYWdlUG9wdXBJbXBsKj4o
cG9wdXBXaWRnZXQpOworICAgIFdlYlNpemUgcm9vdFZpZXdTaXplID0gbV93ZWJWaWV3LT5zaXpl
KCk7CisgICAgSW50U2l6ZSBwb3B1cFNpemUgPSBjbGllbnQtPmNvbnRlbnRTaXplKCk7CisgICAg
SW50UmVjdCBwb3B1cEJvdW5kc0luUm9vdFZpZXcoSW50UG9pbnQobWF4KDAsIG9yaWdpbkJvdW5k
c0luUm9vdFZpZXcueCgpKSwgbWF4KDAsIG9yaWdpbkJvdW5kc0luUm9vdFZpZXcubWF4WSgpKSks
IHBvcHVwU2l6ZSk7CisgICAgaWYgKHBvcHVwQm91bmRzSW5Sb290Vmlldy5tYXhZKCkgPiByb290
Vmlld1NpemUuaGVpZ2h0KQorICAgICAgICBwb3B1cEJvdW5kc0luUm9vdFZpZXcuc2V0WShtYXgo
MCwgb3JpZ2luQm91bmRzSW5Sb290Vmlldy55KCkgLSBwb3B1cFNpemUuaGVpZ2h0KCkpKTsKKyAg
ICBpZiAocG9wdXBCb3VuZHNJblJvb3RWaWV3Lm1heFgoKSA+IHJvb3RWaWV3U2l6ZS53aWR0aCkK
KyAgICAgICAgcG9wdXBCb3VuZHNJblJvb3RWaWV3LnNldFgobWF4KDAsIHJvb3RWaWV3U2l6ZS53
aWR0aCAtIHBvcHVwU2l6ZS53aWR0aCgpKSk7CisgICAgaWYgKCFwb3B1cC0+aW5pdChtX3dlYlZp
ZXcsIGNsaWVudCwgcm9vdFZpZXdUb1NjcmVlbihwb3B1cEJvdW5kc0luUm9vdFZpZXcpKSkgewor
ICAgICAgICBwb3B1cC0+Y2xvc2VQb3B1cCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cisg
ICAgbV93ZWJWaWV3LT5wb3B1cE9wZW5lZChwb3B1cCk7CisgICAgcmV0dXJuIHBvcHVwOwogfQog
Ci12b2lkIENocm9tZUNsaWVudEltcGw6OmNsb3NlUGFnZVBvcHVwKFBhZ2VQb3B1cCopCit2b2lk
IENocm9tZUNsaWVudEltcGw6OmNsb3NlUGFnZVBvcHVwKFBhZ2VQb3B1cCogcG9wdXApCiB7Ci0g
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIGlmICghcG9wdXApCisgICAgICAgIHJl
dHVybjsKKyAgICBXZWJQYWdlUG9wdXBJbXBsKiBwb3B1cEltcGwgPSBzdGF0aWNfY2FzdDxXZWJQ
YWdlUG9wdXBJbXBsKj4ocG9wdXApOworICAgIG1fd2ViVmlldy0+cG9wdXBDbG9zZWQocG9wdXBJ
bXBsKTsKKyAgICBwb3B1cEltcGwtPmNsb3NlUG9wdXAoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QYWdlV2lkZ2V0RGVsZWdhdGUuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVnYXRlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42NjhkZmExNmJhZDExZWUyOTVjODQ3YTk2MzQ0YmUxNjcyYzI3NjBiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVnYXRlLmNw
cApAQCAtMCwwICsxLDIwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYWdlV2lk
Z2V0RGVsZWdhdGUuaCIKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3
LmgiCisjaW5jbHVkZSAiUGFnZU92ZXJsYXlMaXN0LmgiCisjaW5jbHVkZSAiV2ViSW5wdXRFdmVu
dC5oIgorI2luY2x1ZGUgIldlYklucHV0RXZlbnRDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAicGFp
bnRpbmcvR3JhcGhpY3NDb250ZXh0QnVpbGRlci5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBpbmxpbmUgRnJhbWVWaWV3KiBtYWlu
RnJhbWVWaWV3KFBhZ2UqIHBhZ2UpCit7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4g
MDsKKyAgICBpZiAoIXBhZ2UtPm1haW5GcmFtZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKK30KKwordm9pZCBQYWdlV2lkZ2V0RGVs
ZWdhdGU6OmxheW91dChQYWdlKiBwYWdlKQoreworICAgIEZyYW1lVmlldyogdmlldyA9IG1haW5G
cmFtZVZpZXcocGFnZSk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisgICAgLy8g
SW4gb3JkZXIgZm9yIG91ciBjaGlsZCBIV05EcyAoTmF0aXZlV2luZG93V2lkZ2V0cykgdG8gdXBk
YXRlIHByb3Blcmx5LAorICAgIC8vIHRoZXkgbmVlZCB0byBiZSB0b2xkIHRoYXQgd2UgYXJlIHVw
ZGF0aW5nIHRoZSBzY3JlZW4uIFRoZSBwcm9ibGVtIGlzIHRoYXQKKyAgICAvLyB0aGUgbmF0aXZl
IHdpZGdldHMgbmVlZCB0byByZWNhbGN1bGF0ZSB0aGVpciBjbGlwIHJlZ2lvbiBhbmQgbm90IG92
ZXJsYXAKKyAgICAvLyBhbnkgb2Ygb3VyIG5vbi1uYXRpdmUgd2lkZ2V0cy4gVG8gZm9yY2UgdGhl
IHJlc2l6aW5nLCBjYWxsCisgICAgLy8gc2V0RnJhbWVSZWN0KCkuIFRoaXMgd2lsbCBiZSBhIHF1
aWNrIG9wZXJhdGlvbiBmb3IgbW9zdCBmcmFtZXMsIGJ1dCB0aGUKKyAgICAvLyBOYXRpdmVXaW5k
b3dXaWRnZXRzIHdpbGwgdXBkYXRlIGEgcHJvcGVyIGNsaXBwaW5nIHJlZ2lvbi4KKyAgICB2aWV3
LT5zZXRGcmFtZVJlY3Qodmlldy0+ZnJhbWVSZWN0KCkpOworICAgIC8vIHNldEZyYW1lUmVjdCBt
YXkgaGF2ZSB0aGUgc2lkZS1lZmZlY3Qgb2YgY2F1c2luZyBleGlzdGluZyBwYWdlIGxheW91dCB0
bworICAgIC8vIGJlIGludmFsaWRhdGVkLCBzbyBsYXlvdXQgbmVlZHMgdG8gYmUgY2FsbGVkIGxh
c3QuCisgICAgdmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwor
fQorCit2b2lkIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6cGFpbnQoUGFnZSogcGFnZSwgUGFnZU92ZXJs
YXlMaXN0KiBvdmVybGF5cywgV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3Qp
Cit7CisgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgR3JhcGhp
Y3NDb250ZXh0QnVpbGRlciBidWlsZGVyKGNhbnZhcyk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBn
YyA9IGJ1aWxkZXIuY29udGV4dCgpOworICAgIEludFJlY3QgZGlydHlSZWN0KHJlY3QpOworICAg
IGdjLnNhdmUoKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJhbWVWaWV3KHBhZ2UpOwor
ICAgIGlmICh2aWV3ICYmIHBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKSB7CisgICAgICAg
IGdjLmNsaXAoZGlydHlSZWN0KTsKKyAgICAgICAgdmlldy0+cGFpbnQoJmdjLCBkaXJ0eVJlY3Qp
OworICAgICAgICBpZiAob3ZlcmxheXMpCisgICAgICAgICAgICBvdmVybGF5cy0+cGFpbnRXZWJG
cmFtZShnYyk7CisgICAgfSBlbHNlCisgICAgICAgIGdjLmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBnYy5yZXN0b3JlKCk7Cit9CisK
K2Jvb2wgUGFnZVdpZGdldERlbGVnYXRlOjpoYW5kbGVJbnB1dEV2ZW50KFBhZ2UqIHBhZ2UsIFBh
Z2VXaWRnZXRFdmVudEhhbmRsZXImIGhhbmRsZXIsIGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50
KQoreworICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UgPyBwYWdlLT5tYWluRnJhbWUoKSA6IDA7Cisg
ICAgc3dpdGNoIChldmVudC50eXBlKSB7CisKKyAgICAvLyBGSVhNRTogV2ViS2l0IHNlZW1zIHRv
IGFsd2F5cyByZXR1cm4gZmFsc2Ugb24gbW91c2UgZXZlbnRzIHByb2Nlc3NpbmcKKyAgICAvLyBt
ZXRob2RzLiBGb3Igbm93IHdlJ2xsIGFzc3VtZSBpdCBoYXMgcHJvY2Vzc2VkIHRoZW0gKGFzIHdl
IGFyZSBvbmx5CisgICAgLy8gaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGtleWJvYXJkIGV2ZW50cyBh
cmUgcHJvY2Vzc2VkKS4KKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlTW92ZToKKyAgICAg
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBoYW5kbGVyLmhhbmRsZU1vdXNlTW92ZSgqZnJhbWUsICpzdGF0aWNfY2FzdDxj
b25zdCBXZWJNb3VzZUV2ZW50Kj4oJmV2ZW50KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VMZWF2ZToKKyAgICAgICAgaWYgKCFmcmFtZSB8fCAh
ZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBoYW5kbGVy
LmhhbmRsZU1vdXNlTGVhdmUoKmZyYW1lLCAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVu
dCo+KCZldmVudCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Ok1vdXNlRG93bjoKKyAgICAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBoYW5kbGVyLmhhbmRsZU1vdXNlRG93bigq
ZnJhbWUsICpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmV2ZW50KSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VVcDoKKyAgICAg
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBoYW5kbGVyLmhhbmRsZU1vdXNlVXAoKmZyYW1lLCAqc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViTW91c2VFdmVudCo+KCZldmVudCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbDoKKyAgICAgICAgaWYgKCFmcmFtZSB8fCAh
ZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IGhhbmRsZXIuaGFuZGxlTW91c2VXaGVlbCgqZnJhbWUsICpzdGF0aWNfY2FzdDxjb25zdCBXZWJN
b3VzZVdoZWVsRXZlbnQqPigmZXZlbnQpKTsKKworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6UmF3
S2V5RG93bjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OktleURvd246CisgICAgY2FzZSBXZWJJ
bnB1dEV2ZW50OjpLZXlVcDoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIuaGFuZGxlS2V5RXZlbnQo
KnN0YXRpY19jYXN0PGNvbnN0IFdlYktleWJvYXJkRXZlbnQqPigmZXZlbnQpKTsKKworICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6Q2hhcjoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIuaGFuZGxlQ2hh
ckV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJLZXlib2FyZEV2ZW50Kj4oJmV2ZW50KSk7CisK
KyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlU2Nyb2xsQmVnaW46CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5k
OgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZToKKyAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OgorICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZUZsaW5nQ2FuY2VsOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRh
cDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXBEb3duOgorICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIuaGFu
ZGxlR2VzdHVyZUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmZXZl
bnQpKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6OlRvdWNoU3RhcnQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaE1vdmU6
CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaEVuZDoKKyAgICBjYXNlIFdlYklucHV0RXZl
bnQ6OlRvdWNoQ2FuY2VsOgorICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+dmlldygpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gaGFuZGxlci5oYW5kbGVU
b3VjaEV2ZW50KCpmcmFtZSwgKnN0YXRpY19jYXN0PGNvbnN0IFdlYlRvdWNoRXZlbnQqPigmZXZl
bnQpKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVnaW46CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlUGluY2hFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hVcGRh
dGU6CisgICAgICAgIC8vIEZJWE1FOiBPbmNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50IGlzIHVwZGF0
ZWQgdG8gc3VwcG9ydCBwaW5jaCwgdGhpcworICAgICAgICAvLyBzaG91bGQgY2FsbCBoYW5kbGVH
ZXN0dXJlRXZlbnQsIGp1c3QgbGlrZSBpdCBjdXJyZW50bHkgZG9lcyBmb3IKKyAgICAgICAgLy8g
Z2VzdHVyZSBzY3JvbGwuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8g
RGVmYXVsdCBoYW5kbGVycyBmb3IgUGFnZVdpZGdldEV2ZW50SGFuZGxlcgorCit2b2lkIFBhZ2VX
aWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZShGcmFtZSYgbWFpbkZyYW1lLCBjb25z
dCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICAvLyBXZSBjYWxsIG1vdXNlTW92ZWQgaGVy
ZSBpbnN0ZWFkIG9mIGhhbmRsZU1vdXNlTW92ZWRFdmVudCBiZWNhdXNlIHdlIG5lZWQKKyAgICAv
LyBvdXIgQ2hyb21lQ2xpZW50SW1wbCB0byByZWNlaXZlIGNoYW5nZXMgdG8gdGhlIG1vdXNlIHBv
c2l0aW9uIGFuZCB0b29sdGlwCisgICAgLy8gdGV4dCwgYW5kIG1vdXNlTW92ZWQgaGFuZGxlcyBh
bGwgb2YgdGhhdC4KKyAgICBtYWluRnJhbWUuZXZlbnRIYW5kbGVyKCktPm1vdXNlTW92ZWQoUGxh
dGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihtYWluRnJhbWUudmlldygpLCBldmVudCkpOworfQorCit2
b2lkIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTGVhdmUoRnJhbWUmIG1haW5G
cmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgbWFpbkZyYW1lLmV2ZW50
SGFuZGxlcigpLT5oYW5kbGVNb3VzZU1vdmVFdmVudChQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVy
KG1haW5GcmFtZS52aWV3KCksIGV2ZW50KSk7Cit9CisKK3ZvaWQgUGFnZVdpZGdldEV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VEb3duKEZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZl
bnQmIGV2ZW50KQoreworICAgIG1haW5GcmFtZS5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQ
cmVzc0V2ZW50KFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIobWFpbkZyYW1lLnZpZXcoKSwgZXZl
bnQpKTsKK30KKwordm9pZCBQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVVwKEZy
YW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIG1haW5G
cmFtZS5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoUGxhdGZvcm1Nb3Vz
ZUV2ZW50QnVpbGRlcihtYWluRnJhbWUudmlldygpLCBldmVudCkpOworfQorCitib29sIFBhZ2VX
aWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlV2hlZWwoRnJhbWUmIG1haW5GcmFtZSwgY29u
c3QgV2ViTW91c2VXaGVlbEV2ZW50JiBldmVudCkKK3sKKyAgICByZXR1cm4gbWFpbkZyYW1lLmV2
ZW50SGFuZGxlcigpLT5oYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIo
bWFpbkZyYW1lLnZpZXcoKSwgZXZlbnQpKTsKK30KKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Citib29sIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoRnJhbWUmIG1h
aW5GcmFtZSwgY29uc3QgV2ViVG91Y2hFdmVudCYgZXZlbnQpCit7CisgICAgcmV0dXJuIG1haW5G
cmFtZS5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVG91Y2hFdmVudChQbGF0Zm9ybVRvdWNoRXZlbnRC
dWlsZGVyKG1haW5GcmFtZS52aWV3KCksIGV2ZW50KSk7Cit9CisjZW5kaWYKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVnYXRlLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QYWdlV2lkZ2V0RGVsZWdhdGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43OTJkOGFjMmIzM2IyMDc0ZDEzMzllZTFhNWI5Yzk1ZDFkZGM5ZjIzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVnYXRlLmgKQEAg
LTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgUGFnZVdpZGdldERlbGVnYXRlX2gKKyNkZWZpbmUgUGFnZVdp
ZGdldERlbGVnYXRlX2gKKworI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJXaWRnZXQu
aCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lOworY2xhc3MgUGFnZTsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBhZ2VPdmVybGF5TGlzdDsKK2NsYXNzIFdl
Ykdlc3R1cmVFdmVudDsKK2NsYXNzIFdlYklucHV0RXZlbnQ7CitjbGFzcyBXZWJLZXlib2FyZEV2
ZW50OworY2xhc3MgV2ViTW91c2VFdmVudDsKK2NsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKK2Ns
YXNzIFdlYlRvdWNoRXZlbnQ7CisKK2NsYXNzIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZU1vdmUoV2ViQ29yZTo6RnJhbWUmIG1h
aW5GcmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVN
b3VzZUxlYXZlKFdlYkNvcmU6OkZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91c2VEb3duKFdlYkNvcmU6OkZyYW1lJiBtYWlu
RnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91
c2VVcChXZWJDb3JlOjpGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJNb3VzZUV2ZW50Jik7Cisg
ICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlV2hlZWwoV2ViQ29yZTo6RnJhbWUmIG1haW5GcmFt
ZSwgY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtl
eUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhh
bmRsZUNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JikgPSAwOworI2lmIEVOQUJMRShH
RVNUVVJFX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0
IFdlYkdlc3R1cmVFdmVudCYpID0gMDsKKyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisgICAgdmlydHVhbCBib29sIGhhbmRsZVRvdWNoRXZlbnQoV2ViQ29yZTo6RnJhbWUmIG1haW5G
cmFtZSwgY29uc3QgV2ViVG91Y2hFdmVudCYpOworI2VuZGlmCisgICAgdmlydHVhbCB+UGFnZVdp
ZGdldEV2ZW50SGFuZGxlcigpIHsgfQorfTsKKworCisvLyBDb21tb24gaW1wbGVtZW50YXRpb24g
b2YgV2ViVmlld0ltcGwgYW5kIFdlYlBhZ2VQb3B1cEltcGwuCitjbGFzcyBQYWdlV2lkZ2V0RGVs
ZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGxheW91dChXZWJDb3JlOjpQYWdlKik7
CisgICAgc3RhdGljIHZvaWQgcGFpbnQoV2ViQ29yZTo6UGFnZSosIFBhZ2VPdmVybGF5TGlzdCos
IFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKTsKKyAgICBzdGF0aWMgYm9vbCBoYW5kbGVJbnB1
dEV2ZW50KFdlYkNvcmU6OlBhZ2UqLCBQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyJiwgY29uc3QgV2Vi
SW5wdXRFdmVudCYpOworCitwcml2YXRlOgorICAgIFBhZ2VXaWRnZXREZWxlZ2F0ZSgpIHsgfQor
fTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcAppbmRleCA4MTNjOWQ3MDc0MzM5YzQ4N2U0YjI0ZmVmOGZjZjUxNWQzYmQyYTc5Li4zZjlk
OWQzMTExZWIwYmNlMThmNzY2ZTMzYzkzMTU4YzliNzM5ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTIwNTYsMzUgKzIwNTYsNiBAQCBQYXNz
UmVmUHRyPEZyYW1lPiBXZWJGcmFtZUltcGw6OmNyZWF0ZUNoaWxkRnJhbWUoCiAgICAgcmV0dXJu
IGNoaWxkRnJhbWUucmVsZWFzZSgpOwogfQogCi12b2lkIFdlYkZyYW1lSW1wbDo6bGF5b3V0KCkK
LXsKLSAgICAvLyBsYXlvdXQgdGhpcyBmcmFtZQotICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJh
bWUtPnZpZXcoKTsKLSAgICBpZiAodmlldykKLSAgICAgICAgdmlldy0+dXBkYXRlTGF5b3V0QW5k
U3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwotfQotCi12b2lkIFdlYkZyYW1lSW1wbDo6cGFpbnRX
aXRoQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGdjLCBjb25zdCBXZWJSZWN0JiByZWN0KQotewot
ICAgIEludFJlY3QgZGlydHlSZWN0KHJlY3QpOwotICAgIGdjLnNhdmUoKTsKLSAgICBpZiAobV9m
cmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFtZVZpZXcoKSkgewotICAgICAgICBnYy5jbGlwKGRpcnR5
UmVjdCk7Ci0gICAgICAgIGZyYW1lVmlldygpLT5wYWludCgmZ2MsIGRpcnR5UmVjdCk7Ci0gICAg
ICAgIGlmICh2aWV3SW1wbCgpLT5wYWdlT3ZlcmxheXMoKSkKLSAgICAgICAgICAgIHZpZXdJbXBs
KCktPnBhZ2VPdmVybGF5cygpLT5wYWludFdlYkZyYW1lKGdjKTsKLSAgICB9IGVsc2UKLSAgICAg
ICAgZ2MuZmlsbFJlY3QoZGlydHlSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwotICAgIGdjLnJlc3RvcmUoKTsKLX0KLQotdm9pZCBXZWJGcmFtZUltcGw6OnBhaW50KFdl
YkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0KQotewotICAgIGlmIChyZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHBhaW50V2l0aENvbnRleHQoR3JhcGhpY3ND
b250ZXh0QnVpbGRlcihjYW52YXMpLmNvbnRleHQoKSwgcmVjdCk7Ci19Ci0KIHZvaWQgV2ViRnJh
bWVJbXBsOjpjcmVhdGVGcmFtZVZpZXcoKQogewogICAgIEFTU0VSVChtX2ZyYW1lKTsgLy8gSWYg
bV9mcmFtZSBkb2Vzbid0IGV4aXN0LCB3ZSBwcm9iYWJseSBkaWRuJ3QgaW5pdCBwcm9wZXJseS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKaW5kZXggOWM4NmQ3NTE0
YWMwMGVhNWYxZGJiODE3NzliM2NhMzU4MTZmMzY3NS4uM2FiYzZjNDkzNDRkMWUzNjkwNjQ3OTFh
ZWVmYTBiM2EwMDQwMjkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmgKQEAgLTIzMCw5ICsyMzAsNiBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpGcmFtZT4gY3JlYXRlQ2hpbGRGcmFtZSgKICAgICAgICAgY29uc3QgV2ViQ29yZTo6RnJhbWVM
b2FkUmVxdWVzdCYsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCopOwogCi0gICAgdm9p
ZCBsYXlvdXQoKTsKLSAgICB2b2lkIHBhaW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKTsK
LSAgICB2b2lkIHBhaW50V2l0aENvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgV2ViUmVjdCYpOwogICAgIHZvaWQgY3JlYXRlRnJhbWVWaWV3KCk7CiAKICAgICBzdGF0aWMg
V2ViRnJhbWVJbXBsKiBmcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAKaW5kZXggYmM4MTBj
N2IxYjE2OGRiN2VjYmUyMTVkMDE5YzYzNDczZjFiNGZkMi4uODYyYzU2MGNmNTZmNDcwMWE3OWRl
ZDY1ZTlkOGUwMzFjOGQxZDAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUGFnZVBvcHVwSW1wbC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTI5LDIxICsyOSwzMDUgQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBvcHVwSW1wbC5oIgogCisjaW5jbHVkZSAiRW1w
dHlDbGllbnRzLmgiCisjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKKyNpbmNsdWRlICJGb2N1c0Nv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJGb3JtU3RhdGUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKKyNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5j
bHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCisjaW5jbHVkZSAiUGFnZVdpZGdldERlbGVnYXRlLmgi
CisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRl
ICJWOFByb3h5LmgiCisjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgorI2luY2x1ZGUgIldlYklu
cHV0RXZlbnRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBvcHVwLmgiCisjaW5jbHVk
ZSAiV2ViV2lkZ2V0Q2xpZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorCitjbGFzcyBQYWdlUG9w
dXBDaHJvbWVDbGllbnQgOiBwdWJsaWMgRW1wdHlDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFBhZ2VQb3B1cENocm9tZUNsaWVudCk7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQYWdlUG9wdXBDaHJvbWVDbGllbnQo
V2ViUGFnZVBvcHVwSW1wbCogcG9wdXApIDogbV9wb3B1cChwb3B1cCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX3BvcHVwLT53aWRnZXRDbGllbnQoKSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvd1Nvb24oKSBPVkVSUklERQorICAgIHsKKyAgICAgICAg
bV9wb3B1cC0+Y2xvc2VQb3B1cCgpOworICAgIH0KKworICAgIHZpcnR1YWwgRmxvYXRSZWN0IHdp
bmRvd1JlY3QoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgcmV0dXJuIEZsb2F0UmVjdChtX3Bv
cHVwLT5tX3dpbmRvd1JlY3RJblNjcmVlbi54LCBtX3BvcHVwLT5tX3dpbmRvd1JlY3RJblNjcmVl
bi55LCBtX3BvcHVwLT5tX3dpbmRvd1JlY3RJblNjcmVlbi53aWR0aCwgbV9wb3B1cC0+bV93aW5k
b3dSZWN0SW5TY3JlZW4uaGVpZ2h0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lu
ZG93UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpIE9WRVJSSURFCisgICAgeworICAgICAgICBt
X3BvcHVwLT5tX3dpbmRvd1JlY3RJblNjcmVlbiA9IEludFJlY3QocmVjdCk7CisgICAgICAgIG1f
cG9wdXAtPndpZGdldENsaWVudCgpLT5zZXRXaW5kb3dSZWN0KG1fcG9wdXAtPm1fd2luZG93UmVj
dEluU2NyZWVuKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29s
ZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmKSBPVkVSUklE
RQorICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ09OU09M
RSBNRVNTU0FHRToldTogJXNcbiIsIGxpbmVOdW1iZXIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7
CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7CisgICAgICAgIFVOVVNFRF9Q
QVJBTShsaW5lTnVtYmVyKTsKKyNlbmRpZgorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlQ29udGVudHNBbmRSb290Vmlldyhjb25zdCBJbnRSZWN0JiBwYWludFJlY3QsIGJvb2wp
IE9WRVJSSURFCisgICAgeworICAgICAgICBpZiAocGFpbnRSZWN0LmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9wb3B1cC0+d2lkZ2V0Q2xpZW50KCktPmRpZEludmFs
aWRhdGVSZWN0KHBhaW50UmVjdCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbChj
b25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29u
c3QgSW50UmVjdCYgY2xpcFJlY3QpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX3BvcHVwLT53
aWRnZXRDbGllbnQoKS0+ZGlkU2Nyb2xsUmVjdChzY3JvbGxEZWx0YS53aWR0aCgpLCBzY3JvbGxE
ZWx0YS5oZWlnaHQoKSwgaW50ZXJzZWN0aW9uKHNjcm9sbFJlY3QsIGNsaXBSZWN0KSk7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29u
c3QgSW50UmVjdCYgdXBkYXRlUmVjdCwgYm9vbCBpbW1lZGlhdGUpIE9WRVJSSURFCisgICAgewor
ICAgICAgICBpbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyh1cGRhdGVSZWN0LCBpbW1lZGlh
dGUpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIE9WRVJS
SURFCisgICAgeworICAgICAgICBtX3BvcHVwLT53aWRnZXRDbGllbnQoKS0+c2NoZWR1bGVBbmlt
YXRpb24oKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQqIHdlYlZpZXcoKSBjb25zdCBPVkVS
UklERQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcG9wdXAtPm1fd2ViVmlldzsKKyAgICB9CisK
KyAgICBXZWJQYWdlUG9wdXBJbXBsKiBtX3BvcHVwOworfTsKKwogLy8gV2ViUGFnZVBvcHVwSW1w
bCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLS8vIEZJWE1FOiBXZWJQYWdlUG9wdXBJbXBsIGltcGxlbWVudGF0aW9uIHdp
bGwgYmUgd3JpdHRlbiBoZXJlLgorV2ViUGFnZVBvcHVwSW1wbDo6V2ViUGFnZVBvcHVwSW1wbChX
ZWJXaWRnZXRDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fd2lkZ2V0Q2xpZW50KGNsaWVudCkKK3sK
KyAgICBBU1NFUlQoY2xpZW50KTsKK30KKworV2ViUGFnZVBvcHVwSW1wbDo6fldlYlBhZ2VQb3B1
cEltcGwoKQoreworfQorCitib29sIFdlYlBhZ2VQb3B1cEltcGw6OmluaXQoV2ViVmlld0ltcGwq
IHdlYlZpZXcsIFBhZ2VQb3B1cENsaWVudCogcG9wdXBDbGllbnQsIGNvbnN0IEludFJlY3QmIGJv
dW5kc0luU2NyZWVuKQoreworICAgIEFTU0VSVCh3ZWJWaWV3KTsKKyAgICBBU1NFUlQocG9wdXBD
bGllbnQpOworICAgIG1fd2ViVmlldyA9IHdlYlZpZXc7CisgICAgbV9wb3B1cENsaWVudCA9IHBv
cHVwQ2xpZW50OworCisgICAgbV93aWRnZXRDbGllbnQtPnNldFdpbmRvd1JlY3QoYm91bmRzSW5T
Y3JlZW4pOworICAgIG1fd2luZG93UmVjdEluU2NyZWVuID0gYm91bmRzSW5TY3JlZW47CisgICAg
aWYgKCFpbml0UGFnZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV93aWRnZXRDbGll
bnQtPnNob3coV2ViTmF2aWdhdGlvblBvbGljeSgpKTsKKworICAgIHNldEZvY3VzKHRydWUpOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2Uo
KQoreworICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGllbnRzOworICAgIG1fY2hyb21lQ2xp
ZW50ID0gYWRvcHRQdHIobmV3IFBhZ2VQb3B1cENocm9tZUNsaWVudCh0aGlzKSk7CisgICAgcGFn
ZUNsaWVudHMuY2hyb21lQ2xpZW50ID0gbV9jaHJvbWVDbGllbnQuZ2V0KCk7CisgICAgc3RhdGlj
IEVkaXRvckNsaWVudCogZW1wdHlFZGl0b3JDbGllbnQgPSBuZXcgRW1wdHlFZGl0b3JDbGllbnQ7
CisgICAgcGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50ID0gZW1wdHlFZGl0b3JDbGllbnQ7CisjaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgc3RhdGljIENvbnRleHRNZW51Q2xpZW50KiBlbXB0
eUNvbnRleHRNZW51Q2xpZW50ID0gbmV3IEVtcHR5Q29udGV4dE1lbnVDbGllbnQ7CisgICAgcGFn
ZUNsaWVudHMuY29udGV4dE1lbnVDbGllbnQgPSBlbXB0eUNvbnRleHRNZW51Q2xpZW50OworI2Vu
ZGlmCisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKKyAgICBzdGF0aWMgRHJhZ0NsaWVudCogZW1w
dHlEcmFnQ2xpZW50ID0gbmV3IEVtcHR5RHJhZ0NsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5kcmFn
Q2xpZW50ID0gZW1wdHlEcmFnQ2xpZW50OworI2VuZGlmCisjaWYgRU5BQkxFKElOU1BFQ1RPUikK
KyAgICBzdGF0aWMgSW5zcGVjdG9yQ2xpZW50KiBlbXB0eUluc3BlY3RvckNsaWVudCA9IG5ldyBF
bXB0eUluc3BlY3RvckNsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBl
bXB0eUluc3BlY3RvckNsaWVudDsKKyNlbmRpZgorICAgIG1fcGFnZSA9IGFkb3B0UHRyKG5ldyBQ
YWdlKHBhZ2VDbGllbnRzKSk7CisgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRTY3JpcHRFbmFi
bGVkKHRydWUpOworICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0QWxsb3dTY3JpcHRzVG9DbG9z
ZVdpbmRvd3ModHJ1ZSk7CisgICAgc3RhdGljIEZyYW1lTG9hZGVyQ2xpZW50KiBlbXB0eUZyYW1l
TG9hZGVyQ2xpZW50ID0gIG5ldyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OworICAgIFJlZlB0cjxG
cmFtZT4gZnJhbWUgPSBGcmFtZTo6Y3JlYXRlKG1fcGFnZS5nZXQoKSwgMCwgZW1wdHlGcmFtZUxv
YWRlckNsaWVudCk7CisgICAgZnJhbWUtPnNldFZpZXcoRnJhbWVWaWV3OjpjcmVhdGUoZnJhbWUu
Z2V0KCkpKTsKKyAgICBmcmFtZS0+aW5pdCgpOworICAgIGZyYW1lLT52aWV3KCktPnJlc2l6ZSht
X3BvcHVwQ2xpZW50LT5jb250ZW50U2l6ZSgpKTsKKyAgICBmcmFtZS0+dmlldygpLT5zZXRUcmFu
c3BhcmVudChmYWxzZSk7CisKKyAgICBEb2N1bWVudFdyaXRlciogd3JpdGVyID0gZnJhbWUtPmxv
YWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKTsKKyAgICB3cml0ZXItPnNl
dE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKKyAgICB3cml0ZXItPnNldEVuY29kaW5nKCJVVEYtOCIs
IGZhbHNlKTsKKyAgICB3cml0ZXItPmJlZ2luKCk7CisgICAgbV9wb3B1cENsaWVudC0+d3JpdGVE
b2N1bWVudCgqd3JpdGVyKTsKKyAgICB3cml0ZXItPmVuZCgpOworCisgICAgeworICAgICAgICAv
LyBGSVhNRTogTW92ZSB0byBXZWJDb3JlLgorICAgICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxl
U2NvcGU7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBWOFByb3h5
OjptYWluV29ybGRDb250ZXh0KGZyYW1lLmdldCgpKTsKKyAgICAgICAgaWYgKGNvbnRleHQuSXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB2ODo6Q29udGV4dDo6
U2NvcGUgc2NvcGUoY29udGV4dCk7CisgICAgICAgIG1fdjh0aGlzID0gdjg6OlBlcnNpc3RlbnQ8
djg6OkV4dGVybmFsPjo6TmV3KHY4OjpFeHRlcm5hbDo6TmV3KHRoaXMpKTsKKyAgICAgICAgdjg6
OkxvY2FsPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoc2V0VmFsdWVBbmRDbG9zZVBvcHVwQ2FsbGJhY2ssIG1fdjh0aGlzKTsKKyAgICAgICAg
Y29udGV4dC0+R2xvYmFsKCktPlNldCh2ODo6U3RyaW5nOjpOZXcoInNldFZhbHVlQW5kQ2xvc2VQ
b3B1cCIpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4odGVtcGwtPkdldEZ1bmN0aW9uKCkpKTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJQ
YWdlUG9wdXBJbXBsOjpzZXRWYWx1ZUFuZENsb3NlUG9wdXBDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQoreworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKKyAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQcm94eTo6VHlwZUVycm9y
KTsKKyAgICBXZWJQYWdlUG9wdXBJbXBsKiBwb3B1cCA9IHN0YXRpY19jYXN0PFdlYlBhZ2VQb3B1
cEltcGwqPih2ODo6RXh0ZXJuYWw6OkNhc3QoKmFyZ3MuRGF0YSgpKS0+VmFsdWUoKSk7CisgICAg
QVNTRVJUKHBvcHVwKTsKKyAgICBwb3B1cC0+bV9wb3B1cENsaWVudC0+c2V0VmFsdWVBbmRDbG9z
ZVBvcHVwKHRvSW50MzIoYXJnc1swXSksIHRvV2ViQ29yZVN0cmluZyhhcmdzLCAxKSk7CisgICAg
Ly8gc2V0VmFsZXVBbmRDbG9zZVBvcHVwKCkgZGVsZXRlcyB0aGUgcG9wdXAgb2JqZWN0LiBEbyBu
b3QgYWNjZXNzIGl0LgorICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK1dlYlNpemUg
V2ViUGFnZVBvcHVwSW1wbDo6c2l6ZSgpCit7CisgICAgcmV0dXJuIG1fcG9wdXBDbGllbnQtPmNv
bnRlbnRTaXplKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6YW5pbWF0ZShkb3VibGUg
ZnJhbWVCZWdpblRpbWUpCit7CisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQor
ICAgIGlmICghZnJhbWVCZWdpblRpbWUpCisgICAgICAgIGZyYW1lQmVnaW5UaW1lID0gY3VycmVu
dFRpbWUoKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPnNlcnZpY2VTY3JpcHRl
ZEFuaW1hdGlvbnMoY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChmcmFtZUJlZ2luVGltZSkp
OworI2VuZGlmCit9CisKK3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6Y29tcG9zaXRlKGJvb2wpCit7
Cit9CisKK3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6bGF5b3V0KCkKK3sKKyAgICBQYWdlV2lkZ2V0
RGVsZWdhdGU6OmxheW91dChtX3BhZ2UuZ2V0KCkpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cElt
cGw6OnBhaW50KFdlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAg
IFBhZ2VXaWRnZXREZWxlZ2F0ZTo6cGFpbnQobV9wYWdlLmdldCgpLCAwLCBjYW52YXMsIHJlY3Qp
OworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnJlc2l6ZShjb25zdCBXZWJTaXplJiBuZXdT
aXplKQoreworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+cmVzaXplKG5ld1NpemUp
OworICAgIG1fd2lkZ2V0Q2xpZW50LT5kaWRJbnZhbGlkYXRlUmVjdChXZWJSZWN0KDAsIDAsIG5l
d1NpemUud2lkdGgsIG5ld1NpemUuaGVpZ2h0KSk7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1w
bDo6aGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpCit7CisgICAgLy8gVGhl
IG1haW4gV2ViVmlldyByZWNlaXZlcyBrZXkgZXZlbnRzIGFuZCBmb3J3YXJkIHRoZW0gdG8gdGhp
cyB2aWEgaGFuZGxlS2V5RXZlbnQoKS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlQ2hhckV2ZW50
KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKQoreworICAgIC8vIFRoZSBtYWluIFdlYlZpZXcgcmVj
ZWl2ZXMga2V5IGV2ZW50cyBhbmQgZm9yd2FyZCB0aGVtIHRvIHRoaXMgdmlhIGhhbmRsZUtleUV2
ZW50KCkuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorYm9vbCBXZWJQYWdlUG9wdXBJbXBsOjpoYW5k
bGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAo
IW1fcGFnZSB8fCAhbV9wYWdlLT5tYWluRnJhbWUoKSB8fCAhbV9wYWdlLT5tYWluRnJhbWUoKS0+
dmlldygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRnJhbWUmIGZyYW1lID0gKm1fcGFn
ZS0+bWFpbkZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lLmV2ZW50SGFuZGxlcigpLT5oYW5kbGVH
ZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKGZyYW1lLnZpZXcoKSwgZXZl
bnQpKTsKK30KKyNlbmRpZgorCitib29sIFdlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUlucHV0RXZl
bnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCit7CisgICAgcmV0dXJuIFBhZ2VXaWRnZXRE
ZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0aGlzLCBldmVudCk7Cit9
CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAoIW1fcGFnZS0+bWFpbkZyYW1lKCkgfHwg
IW1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoZXZl
bnQpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnNldEZvY3VzKGJvb2wgZW5hYmxlKQor
eworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3VzZWQoZW5hYmxlKTsKKyAg
ICBpZiAoZW5hYmxlKQorICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRBY3Rp
dmUodHJ1ZSk7Cit9CisKK3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6Y2xvc2UoKQoreworICAgIGlm
IChtX3BhZ2UpIHsKKyAgICAgICAgbV9wYWdlLmNsZWFyKCk7CisgICAgICAgIG1fY2hyb21lQ2xp
ZW50LmNsZWFyKCk7CisgICAgICAgIG1fdjh0aGlzLkRpc3Bvc2UoKTsKKyAgICAgICAgbV92OHRo
aXMuQ2xlYXIoKTsKKyAgICB9CisgICAgZGVyZWYoKTsKK30KKwordm9pZCBXZWJQYWdlUG9wdXBJ
bXBsOjpjbG9zZVBvcHVwKCkKK3sKKyAgICBpZiAobV9wYWdlKSB7CisgICAgICAgIG1fcGFnZS0+
c2V0R3JvdXBOYW1lKFN0cmluZygpKTsKKyAgICAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+bG9h
ZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CisgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmxv
YWRlcigpLT5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeU5vbmUpOworICAgIH0KKyAgICBt
X3dpZGdldENsaWVudC0+Y2xvc2VXaWRnZXRTb29uKCk7CisKKyAgICBtX3BvcHVwQ2xpZW50LT5k
aWRDbG9zZVBvcHVwKCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoUEFHRV9QT1BVUCkKIAogLy8g
V2ViUGFnZVBvcHVwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2ViUGFnZVBvcHVwKiBXZWJQYWdlUG9wdXA6OmNyZWF0
ZShXZWJXaWRnZXRDbGllbnQqKQorV2ViUGFnZVBvcHVwKiBXZWJQYWdlUG9wdXA6OmNyZWF0ZShX
ZWJXaWRnZXRDbGllbnQqIGNsaWVudCkKIHsKLSAgICAvLyBGSVhNRTogUmV0dXJucyBhIFdlYlBh
Z2VQb3B1cEltcGwgb2JqZWN0LgorI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorICAgIEFTU0VSVChj
bGllbnQpOworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICAvLyBQYXNz
IHRoZSBXZWJQYWdlUG9wdXBJbXBsJ3Mgc2VsZi1yZWZlcmVuY2UgdG8gdGhlIGNhbGxlci4KKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBhZ2VQb3B1cEltcGwoY2xpZW50KSkubGVha1JlZigp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY2xpZW50KTsKICAgICByZXR1cm4gMDsKKyNlbmRp
ZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBhZ2VQb3B1cEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmUxNTZkZjU2MTQ4MjE0OGI0ZTRj
OTg4NWQ2N2Y4YzA0YmZkOTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5oCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQ
YWdlUG9wdXBJbXBsX2gKKyNkZWZpbmUgV2ViUGFnZVBvcHVwSW1wbF9oCisKKyNpZiBFTkFCTEUo
UEFHRV9QT1BVUCkKKworI2luY2x1ZGUgIlBhZ2VQb3B1cC5oIgorI2luY2x1ZGUgIlBhZ2VXaWRn
ZXREZWxlZ2F0ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQb3B1cC5oIgorI2luY2x1ZGUgPHY4Lmg+
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFBhZ2U7CitjbGFzcyBQYWdlUG9wdXBDbGllbnQ7
CitjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBQYWdlUG9wdXBDaHJvbWVDbGllbnQ7CitjbGFzcyBXZWJWaWV3SW1wbDsKKworY2xh
c3MgV2ViUGFnZVBvcHVwSW1wbCA6IHB1YmxpYyBXZWJQYWdlUG9wdXAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFdlYkNvcmU6OlBhZ2VQb3B1cCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgUmVmQ291bnRlZDxXZWJQYWdlUG9wdXBJbXBsPiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CisKK3B1YmxpYzoKKyAgICAvLyBDYWxsZWQgYnkgQ2hyb21lQ2xp
ZW50SW1wbDo6b3BlblBhZ2VQb3B1cCgpLgorICAgIGJvb2wgaW5pdChXZWJWaWV3SW1wbCosIFdl
YkNvcmU6OlBhZ2VQb3B1cENsaWVudCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGJvdW5kc0lu
U2NyZWVuKTsKKyAgICAvLyBDYWxsZWQgYnkgV2ViVmlld0ltcGwuCisgICAgYm9vbCBoYW5kbGVL
ZXlFdmVudChjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKTsKKyAgICB2b2lk
IGNsb3NlUG9wdXAoKTsKKyAgICB2aXJ0dWFsIH5XZWJQYWdlUG9wdXBJbXBsKCk7CisgICAgV2Vi
V2lkZ2V0Q2xpZW50KiB3aWRnZXRDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3dpZGdldENsaWVu
dDsgfQorCitwcml2YXRlOgorICAgIC8vIFdlYldpZGdldCBmdW5jdGlvbnMKKyAgICB2aXJ0dWFs
IFdlYlNpemUgc2l6ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJs
ZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXBvc2l0ZShib29sKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVzaXplKGNvbnN0IFdlYlNpemUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xv
c2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlSW5wdXRFdmVudChjb25zdCBX
ZWJJbnB1dEV2ZW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wp
IE9WRVJSSURFOworCisgICAgLy8gUGFnZVdpZGdldERlbGVnYXRlIGZ1bmN0aW9ucworICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2
ZW50JikgT1ZFUlJJREU7CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIHZpcnR1YWwg
Ym9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JikgT1ZFUlJJREU7
CisjZW5kaWYKKworICAgIFdlYlBhZ2VQb3B1cEltcGwoV2ViV2lkZ2V0Q2xpZW50Kik7CisgICAg
Ym9vbCBpbml0UGFnZSgpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc2V0VmFs
dWVBbmRDbG9zZVBvcHVwQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworCisgICAgV2Vi
V2lkZ2V0Q2xpZW50KiBtX3dpZGdldENsaWVudDsKKyAgICBXZWJSZWN0IG1fd2luZG93UmVjdElu
U2NyZWVuOworICAgIFdlYlZpZXdJbXBsKiBtX3dlYlZpZXc7CisgICAgT3duUHRyPFdlYkNvcmU6
OlBhZ2U+IG1fcGFnZTsKKyAgICBPd25QdHI8UGFnZVBvcHVwQ2hyb21lQ2xpZW50PiBtX2Nocm9t
ZUNsaWVudDsKKyAgICBXZWJDb3JlOjpQYWdlUG9wdXBDbGllbnQqIG1fcG9wdXBDbGllbnQ7Cisg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkV4dGVybmFsPiBtX3Y4dGhpczsKKworICAgIGZyaWVuZCBj
bGFzcyBXZWJQYWdlUG9wdXA7CisgICAgZnJpZW5kIGNsYXNzIFBhZ2VQb3B1cENocm9tZUNsaWVu
dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2VuZGlmIC8vIEVOQUJMRShQQUdFX1BP
UFVQKQorI2VuZGlmIC8vIFdlYlBhZ2VQb3B1cEltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDk1MDU2ZjZhNDhmZGM4MDRhMDlhMDFlNjc3ZTY5
MTgzMzI4ODIwZDEuLjQ3NWIyNWEyNDE0MzJkYjk5NzBlOWYwYzcxYTEwMzA4NzAxNTk5NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTg3LDYgKzg3
LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVk
ZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCisjaW5jbHVkZSAiUGFnZVdpZGdldERlbGVnYXRl
LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNr
aWEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKQEAgLTEyOSw2ICsxMzAs
NyBAQAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQWN0aW9u
LmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQb3B1cEltcGwuaCIK
ICNpbmNsdWRlICJXZWJQbHVnaW4uaCIKICNpbmNsdWRlICJXZWJQbHVnaW5BY3Rpb24uaCIKICNp
bmNsdWRlICJXZWJQbHVnaW5Db250YWluZXJJbXBsLmgiCkBAIC00NjEsMzYgKzQ2MywxNCBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoYm9vbCB2YWx1
ZSkKICAgICAgICAgbV9wYWdlLT5zZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHModmFsdWUp
OwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjptb3VzZU1vdmUoY29uc3QgV2ViTW91c2VFdmVudCYg
ZXZlbnQpCit2b2lkIFdlYlZpZXdJbXBsOjpoYW5kbGVNb3VzZUxlYXZlKEZyYW1lJiBtYWluRnJh
bWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogewotICAgIGlmICghbWFpbkZyYW1lSW1w
bCgpIHx8ICFtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBXZSBjYWxsIG1vdXNlTW92ZWQgaGVyZSBpbnN0ZWFkIG9mIGhhbmRsZU1vdXNlTW92
ZWRFdmVudCBiZWNhdXNlIHdlIG5lZWQKLSAgICAvLyBvdXIgQ2hyb21lQ2xpZW50SW1wbCB0byBy
ZWNlaXZlIGNoYW5nZXMgdG8gdGhlIG1vdXNlIHBvc2l0aW9uIGFuZAotICAgIC8vIHRvb2x0aXAg
dGV4dCwgYW5kIG1vdXNlTW92ZWQgaGFuZGxlcyBhbGwgb2YgdGhhdC4KLSAgICBtYWluRnJhbWVJ
bXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5tb3VzZU1vdmVkKAotICAgICAgICBQbGF0
Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50
KSk7Ci19Ci0KLXZvaWQgV2ViVmlld0ltcGw6Om1vdXNlTGVhdmUoY29uc3QgV2ViTW91c2VFdmVu
dCYgZXZlbnQpCi17Ci0gICAgLy8gVGhpcyBldmVudCBnZXRzIHNlbnQgYXMgdGhlIG1haW4gZnJh
bWUgaXMgY2xvc2luZy4gIEluIHRoYXQgY2FzZSwganVzdAotICAgIC8vIGlnbm9yZSBpdC4KLSAg
ICBpZiAoIW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSkK
LSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9jbGllbnQtPnNldE1vdXNlT3ZlclVSTChXZWJVUkwo
KSk7Ci0KLSAgICBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5k
bGVNb3VzZU1vdmVFdmVudCgKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihtYWlu
RnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVudCkpOworICAgIFBhZ2VXaWRnZXRFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlTGVhdmUobWFpbkZyYW1lLCBldmVudCk7CiB9CiAKLXZvaWQgV2Vi
Vmlld0ltcGw6Om1vdXNlRG93bihjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3ZvaWQgV2Vi
Vmlld0ltcGw6OmhhbmRsZU1vdXNlRG93bihGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJNb3Vz
ZUV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoIW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZyYW1l
SW1wbCgpLT5mcmFtZVZpZXcoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gSWYgdGhlcmUg
aXMgYSBzZWxlY3QgcG9wdXAgb3BlbiwgY2xvc2UgaXQgYXMgdGhlIHVzZXIgaXMgY2xpY2tpbmcg
b24KICAgICAvLyB0aGUgcGFnZSAob3V0c2lkZSBvZiB0aGUgcG9wdXApLiAgV2UgYWxzbyBzYXZl
IGl0IHNvIHdlIGNhbiBwcmV2ZW50IGEKICAgICAvLyBjbGljayBvbiB0aGUgc2VsZWN0IGVsZW1l
bnQgZnJvbSBpbW1lZGlhdGVseSByZW9wZW5pbmcgdGhlIHBvcHVwLgpAQCAtNTE0LDggKzQ5NCw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6Om1vdXNlRG93bihjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVu
dCkKICAgICAgICAgICAgIG1fbW91c2VDYXB0dXJlTm9kZSA9IGhpdE5vZGU7CiAgICAgfQogCi0g
ICAgbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQ
cmVzc0V2ZW50KAotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKG1haW5GcmFtZUlt
cGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KSk7CisgICAgUGFnZVdpZGdldEV2ZW50SGFuZGxlcjo6
aGFuZGxlTW91c2VEb3duKG1haW5GcmFtZSwgZXZlbnQpOwogCiAgICAgaWYgKG1fc2VsZWN0UG9w
dXAgJiYgbV9zZWxlY3RQb3B1cCA9PSBzZWxlY3RQb3B1cCkgewogICAgICAgICAvLyBUaGF0IGNs
aWNrIHRyaWdnZXJlZCBhIHNlbGVjdCBwb3B1cCB3aGljaCBpcyB0aGUgc2FtZSBhcyB0aGUgb25l
IHRoYXQKQEAgLTU2NiwxMSArNTQ1LDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VDb250ZXh0
TWVudShjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4u
LgogfQogCi12b2lkIFdlYlZpZXdJbXBsOjptb3VzZVVwKGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2
ZW50KQordm9pZCBXZWJWaWV3SW1wbDo6aGFuZGxlTW91c2VVcChGcmFtZSYgbWFpbkZyYW1lLCBj
b25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoIW1haW5GcmFtZUltcGwoKSB8
fCAhbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSkKLSAgICAgICAgcmV0dXJuOwotCiAjaWYg
T1MoVU5JWCkgJiYgIU9TKERBUldJTikKICAgICAvLyBJZiB0aGUgZXZlbnQgd2FzIGEgbWlkZGxl
IGNsaWNrLCBhdHRlbXB0IHRvIGNvcHkgdGV4dCBpbnRvIHRoZSBmb2N1c2VkCiAgICAgLy8gZnJh
bWUuIFdlIGV4ZWN1dGUgdGhpcyBiZWZvcmUgd2UgbGV0IHRoZSBwYWdlIGhhdmUgYSBnbyBhdCB0
aGUgZXZlbnQKQEAgLTYwOCw4ICs1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjptb3VzZVVwKGNv
bnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogICAgIH0KICNlbmRpZgogCi0gICAgbWFpbkZyYW1l
SW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQo
Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIobWFpbkZyYW1lSW1wbCgpLT5mcmFt
ZVZpZXcoKSwgZXZlbnQpKTsKKyAgICBQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3Vz
ZVVwKG1haW5GcmFtZSwgZXZlbnQpOwogCiAjaWYgT1MoV0lORE9XUykKICAgICAvLyBEaXNwYXRj
aCB0aGUgY29udGV4dG1lbnUgZXZlbnQgcmVnYXJkbGVzcyBvZiBpZiB0aGUgY2xpY2sgd2FzIHN3
YWxsb3dlZC4KQEAgLTYxOSwxMiArNTk0LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VVcChj
b25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKICNlbmRpZgogfQogCi1ib29sIFdlYlZpZXdJbXBs
Ojptb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYgZXZlbnQpCi17Ci0gICAgUGxh
dGZvcm1XaGVlbEV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJh
bWVWaWV3KCksIGV2ZW50KTsKLSAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5l
dmVudEhhbmRsZXIoKS0+aGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybUV2ZW50KTsKLX0KLQogdm9p
ZCBXZWJWaWV3SW1wbDo6c2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlbHRhKQog
ewogICAgIFdlYk1vdXNlV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbDsKQEAgLTY0MSwxMSArNjEw
LDEyIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBkZWx0YSkKICAgICBzeW50aGV0aWNXaGVlbC5nbG9iYWxZID0gbV9sYXN0V2hlZWxHbG9iYWxQ
b3NpdGlvbi55OwogICAgIHN5bnRoZXRpY1doZWVsLm1vZGlmaWVycyA9IG1fZmxpbmdNb2RpZmll
cjsKIAotICAgIG1vdXNlV2hlZWwoc3ludGhldGljV2hlZWwpOworICAgIGlmIChtX3BhZ2UgJiYg
bV9wYWdlLT5tYWluRnJhbWUoKSAmJiBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpCisgICAg
ICAgIGhhbmRsZU1vdXNlV2hlZWwoKm1fcGFnZS0+bWFpbkZyYW1lKCksIHN5bnRoZXRpY1doZWVs
KTsKIH0KIAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKLWJvb2wgV2ViVmlld0ltcGw6Omdl
c3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQorYm9vbCBXZWJWaWV3SW1w
bDo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiB7CiAg
ICAgc3dpdGNoIChldmVudC50eXBlKSB7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
RmxpbmdTdGFydDogewpAQCAtNzE1LDcgKzY4NSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnN0YXJ0
UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGwsIGJvb2wgdXNlQW5jaG9y
CiB9CiAjZW5kaWYKIAotYm9vbCBXZWJWaWV3SW1wbDo6a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9h
cmRFdmVudCYgZXZlbnQpCitib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVLZXlFdmVudChjb25zdCBX
ZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBBU1NFUlQoKGV2ZW50LnR5cGUgPT0gV2Vi
SW5wdXRFdmVudDo6UmF3S2V5RG93bikKICAgICAgICAgfHwgKGV2ZW50LnR5cGUgPT0gV2ViSW5w
dXRFdmVudDo6S2V5RG93bikKQEAgLTczNyw2ICs3MDcsMTYgQEAgYm9vbCBXZWJWaWV3SW1wbDo6
a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgLy8gbm90IHRoZSBw
YWdlLgogICAgIGlmIChtX3NlbGVjdFBvcHVwKQogICAgICAgICByZXR1cm4gbV9zZWxlY3RQb3B1
cC0+aGFuZGxlS2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihldmVudCkpOwor
I2lmIEVOQUJMRShQQUdFX1BPUFVQKQorICAgIGlmIChtX3BhZ2VQb3B1cCkgeworICAgICAgICBt
X3BhZ2VQb3B1cC0+aGFuZGxlS2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihl
dmVudCkpOworICAgICAgICAvLyBXZSBuZWVkIHRvIGlnbm9yZSB0aGUgbmV4dCBDaGFyIGV2ZW50
IGFmdGVyIHRoaXMgb3RoZXJ3aXNlIHByZXNzaW5nCisgICAgICAgIC8vIGVudGVyIHdoZW4gc2Vs
ZWN0aW5nIGFuIGl0ZW0gaW4gdGhlIHBvcHVwIHdpbGwgZ28gdG8gdGhlIHBhZ2UuCisgICAgICAg
IGlmIChXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3duID09IGV2ZW50LnR5cGUpCisgICAgICAgICAg
ICBtX3N1cHByZXNzTmV4dEtleXByZXNzRXZlbnQgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisjZW5kaWYKIAogICAgIC8vIEdpdmUgQXV0b2NvbXBsZXRlIGEgY2hhbmNlIHRv
IGNvbnN1bWUgdGhlIGtleSBldmVudHMgaXQgaXMgaW50ZXJlc3RlZCBpbi4KICAgICBpZiAoYXV0
b2NvbXBsZXRlSGFuZGxlS2V5RXZlbnQoZXZlbnQpKQpAQCAtODMzLDcgKzgxMyw3IEBAIGJvb2wg
V2ViVmlld0ltcGw6OmF1dG9jb21wbGV0ZUhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJk
RXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBXZWJWaWV3SW1wbDo6
Y2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQorYm9vbCBXZWJWaWV3SW1w
bDo6aGFuZGxlQ2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAg
IEFTU0VSVChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6OkNoYXIpOwogCkBAIC04NDksNiAr
ODI5LDEwIEBAIGJvb2wgV2ViVmlld0ltcGw6OmNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2
ZW50JiBldmVudCkKICAgICAvLyBub3QgdGhlIHBhZ2UuCiAgICAgaWYgKG1fc2VsZWN0UG9wdXAp
CiAgICAgICAgIHJldHVybiBtX3NlbGVjdFBvcHVwLT5oYW5kbGVLZXlFdmVudChQbGF0Zm9ybUtl
eWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50KSk7CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAg
aWYgKG1fcGFnZVBvcHVwKQorICAgICAgICByZXR1cm4gbV9wYWdlUG9wdXAtPmhhbmRsZUtleUV2
ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIoZXZlbnQpKTsKKyNlbmRpZgogCiAgICAg
RnJhbWUqIGZyYW1lID0gZm9jdXNlZFdlYkNvcmVGcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBA
IC04NzksMTggKzg2Myw2IEBAIGJvb2wgV2ViVmlld0ltcGw6OmNoYXJFdmVudChjb25zdCBXZWJL
ZXlib2FyZEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCi1ib29sIFdlYlZpZXdJbXBsOjp0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNo
RXZlbnQmIGV2ZW50KQotewotICAgIGlmICghbWFpbkZyYW1lSW1wbCgpIHx8ICFtYWluRnJhbWVJ
bXBsKCktPmZyYW1lVmlldygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBQbGF0Zm9y
bVRvdWNoRXZlbnRCdWlsZGVyIHRvdWNoRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJh
bWVWaWV3KCksIGV2ZW50KTsKLSAgICBib29sIGRlZmF1bHRQcmV2ZW50ZWQgPSBtYWluRnJhbWVJ
bXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2ZW50KHRvdWNoRXZl
bnRCdWlsZGVyKTsKLSAgICByZXR1cm4gZGVmYXVsdFByZXZlbnRlZDsKLX0KLSNlbmRpZgotCiAj
aWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogV2ViUmVjdCBXZWJWaWV3SW1wbDo6Y29tcHV0ZUJs
b2NrQm91bmRzKGNvbnN0IFdlYlJlY3QmIHJlY3QsIEF1dG9ab29tVHlwZSB6b29tVHlwZSkKIHsK
QEAgLTEyMTEsNiArMTE4MywyNSBAQCB2b2lkICBXZWJWaWV3SW1wbDo6cG9wdXBDbG9zZWQoV2Vi
Q29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyKQogICAgIH0KIH0KIAorI2lmIEVO
QUJMRShQQUdFX1BPUFVQKQordm9pZCBXZWJWaWV3SW1wbDo6cG9wdXBPcGVuZWQoV2ViUGFnZVBv
cHVwSW1wbCogcG9wdXApCit7CisgICAgQVNTRVJUKCFtX3BhZ2VQb3B1cCk7CisgICAgbV9wYWdl
UG9wdXAgPSBwb3B1cDsKKworICAgIGlmIChGcmFtZSogZnJhbWUgPSBmb2N1c2VkV2ViQ29yZUZy
YW1lKCkpCisgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0Q2FyZXRWaXNpYmxlKGZhbHNl
KTsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6cG9wdXBDbG9zZWQoV2ViUGFnZVBvcHVwSW1wbCog
cG9wdXApCit7CisgICAgQVNTRVJUKG1fcGFnZVBvcHVwID09IHBvcHVwKTsKKyAgICBtX3BhZ2VQ
b3B1cCA9IDA7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGZvY3VzZWRXZWJDb3JlRnJhbWUoKSkK
KyAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5wYWdlQWN0aXZhdGlvbkNoYW5nZWQoKTsKK30K
KyNlbmRpZgorCiB2b2lkIFdlYlZpZXdJbXBsOjpoaWRlQXV0b2ZpbGxQb3B1cCgpCiB7CiAgICAg
aWYgKG1fYXV0b2ZpbGxQb3B1cFNob3dpbmcpIHsKQEAgLTE0MTksMjQgKzE0MTAsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2lu
VGltZSkKIHZvaWQgV2ViVmlld0ltcGw6OmxheW91dCgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIldl
YlZpZXdJbXBsOjpsYXlvdXQiLCB0aGlzLCAwKTsKLQotICAgIFdlYkZyYW1lSW1wbCogd2ViZnJh
bWUgPSBtYWluRnJhbWVJbXBsKCk7Ci0gICAgaWYgKHdlYmZyYW1lKSB7Ci0gICAgICAgIC8vIElu
IG9yZGVyIGZvciBvdXIgY2hpbGQgSFdORHMgKE5hdGl2ZVdpbmRvd1dpZGdldHMpIHRvIHVwZGF0
ZSBwcm9wZXJseSwKLSAgICAgICAgLy8gdGhleSBuZWVkIHRvIGJlIHRvbGQgdGhhdCB3ZSBhcmUg
dXBkYXRpbmcgdGhlIHNjcmVlbi4gIFRoZSBwcm9ibGVtIGlzCi0gICAgICAgIC8vIHRoYXQgdGhl
IG5hdGl2ZSB3aWRnZXRzIG5lZWQgdG8gcmVjYWxjdWxhdGUgdGhlaXIgY2xpcCByZWdpb24gYW5k
IG5vdAotICAgICAgICAvLyBvdmVybGFwIGFueSBvZiBvdXIgbm9uLW5hdGl2ZSB3aWRnZXRzLiAg
VG8gZm9yY2UgdGhlIHJlc2l6aW5nLCBjYWxsCi0gICAgICAgIC8vIHNldEZyYW1lUmVjdCgpLiAg
VGhpcyB3aWxsIGJlIGEgcXVpY2sgb3BlcmF0aW9uIGZvciBtb3N0IGZyYW1lcywgYnV0Ci0gICAg
ICAgIC8vIHRoZSBOYXRpdmVXaW5kb3dXaWRnZXRzIHdpbGwgdXBkYXRlIGEgcHJvcGVyIGNsaXBw
aW5nIHJlZ2lvbi4KLSAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gd2ViZnJhbWUtPmZyYW1lVmll
dygpOwotICAgICAgICBpZiAodmlldykKLSAgICAgICAgICAgIHZpZXctPnNldEZyYW1lUmVjdCh2
aWV3LT5mcmFtZVJlY3QoKSk7Ci0KLSAgICAgICAgLy8gc2V0RnJhbWVSZWN0IG1heSBoYXZlIHRo
ZSBzaWRlLWVmZmVjdCBvZiBjYXVzaW5nIGV4aXN0aW5nIHBhZ2UKLSAgICAgICAgLy8gbGF5b3V0
IHRvIGJlIGludmFsaWRhdGVkLCBzbyBsYXlvdXQgbmVlZHMgdG8gYmUgY2FsbGVkIGxhc3QuCi0K
LSAgICAgICAgd2ViZnJhbWUtPmxheW91dCgpOwotICAgIH0KKyAgICBQYWdlV2lkZ2V0RGVsZWdh
dGU6OmxheW91dChtX3BhZ2UuZ2V0KCkpOwogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQpAQCAtMTQ4OSw5ICsxNDYzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cGFpbnQoV2Vi
Q2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3QpCiAjZW5kaWYKICAgICB9IGVsc2Ug
ewogICAgICAgICBkb3VibGUgcGFpbnRTdGFydCA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgICAgIFdl
YkZyYW1lSW1wbCogd2ViZnJhbWUgPSBtYWluRnJhbWVJbXBsKCk7Ci0gICAgICAgIGlmICh3ZWJm
cmFtZSkKLSAgICAgICAgICAgIHdlYmZyYW1lLT5wYWludChjYW52YXMsIHJlY3QpOworICAgICAg
ICBQYWdlV2lkZ2V0RGVsZWdhdGU6OnBhaW50KG1fcGFnZS5nZXQoKSwgcGFnZU92ZXJsYXlzKCks
IGNhbnZhcywgcmVjdCk7CiAgICAgICAgIGRvdWJsZSBwYWludEVuZCA9IGN1cnJlbnRUaW1lKCk7
CiAgICAgICAgIGRvdWJsZSBwaXhlbHNQZXJTZWMgPSAocmVjdC53aWR0aCAqIHJlY3QuaGVpZ2h0
KSAvIChwYWludEVuZCAtIHBhaW50U3RhcnQpOwogICAgICAgICBXZWJLaXQ6OlBsYXRmb3JtOjpj
dXJyZW50KCktPmhpc3RvZ3JhbUN1c3RvbUNvdW50cygiUmVuZGVyZXI0LlNvZnR3YXJlUGFpbnRE
dXJhdGlvbk1TIiwgKHBhaW50RW5kIC0gcGFpbnRTdGFydCkgKiAxMDAwLCAwLCAxMjAsIDMwKTsK
QEAgLTE2NDgsNzkgKzE2MjAsOCBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50
KGNvbnN0IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIGJvb2wgaGFuZGxlZCA9IHRydWU7Ci0KLSAgICAvLyBGSVhNRTogV2ViS2l0
IHNlZW1zIHRvIGFsd2F5cyByZXR1cm4gZmFsc2Ugb24gbW91c2UgZXZlbnRzIHByb2Nlc3NpbmcK
LSAgICAvLyBtZXRob2RzLiBGb3Igbm93IHdlJ2xsIGFzc3VtZSBpdCBoYXMgcHJvY2Vzc2VkIHRo
ZW0gKGFzIHdlIGFyZSBvbmx5Ci0gICAgLy8gaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGtleWJvYXJk
IGV2ZW50cyBhcmUgcHJvY2Vzc2VkKS4KLSAgICBzd2l0Y2ggKGlucHV0RXZlbnQudHlwZSkgewot
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VNb3ZlOgotICAgICAgICBtb3VzZU1vdmUoKnN0
YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQqPigmaW5wdXRFdmVudCkpOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VMZWF2ZToKLSAgICAgICAgbW91
c2VMZWF2ZSgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCo+KCZpbnB1dEV2ZW50KSk7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsOgot
ICAgICAgICBoYW5kbGVkID0gbW91c2VXaGVlbCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VX
aGVlbEV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Ok1vdXNlRG93bjoKLSAgICAgICAgbW91c2VEb3duKCpzdGF0aWNfY2FzdDxj
b25zdCBXZWJNb3VzZUV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlVXA6Ci0gICAgICAgIG1vdXNlVXAoKnN0YXRpY19j
YXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQqPigmaW5wdXRFdmVudCkpOwotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bjoKLSAgICBjYXNlIFdlYklucHV0
RXZlbnQ6OktleURvd246Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpLZXlVcDoKLSAgICAgICAg
aGFuZGxlZCA9IGtleUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJLZXlib2FyZEV2ZW50Kj4o
JmlucHV0RXZlbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6
OkNoYXI6Ci0gICAgICAgIGhhbmRsZWQgPSBjaGFyRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdl
YktleWJvYXJkRXZlbnQqPigmaW5wdXRFdmVudCkpOwotICAgICAgICBicmVhazsKLQotI2lmIEVO
QUJMRShHRVNUVVJFX0VWRU5UUykKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3Jv
bGxCZWdpbjoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6Ci0gICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOgotICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlRmxpbmdDYW5jZWw6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOgotICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcERvd246Ci0gICAgY2FzZSBXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlRG91YmxlVGFwOgotICAgICAgICBoYW5kbGVkID0gZ2VzdHVyZUV2ZW50KCpz
dGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmaW5wdXRFdmVudCkpOwotICAgICAg
ICBicmVhazsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBjYXNlIFdl
YklucHV0RXZlbnQ6OlRvdWNoU3RhcnQ6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaE1v
dmU6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaEVuZDoKLSAgICBjYXNlIFdlYklucHV0
RXZlbnQ6OlRvdWNoQ2FuY2VsOgotICAgICAgICBoYW5kbGVkID0gdG91Y2hFdmVudCgqc3RhdGlj
X2Nhc3Q8Y29uc3QgV2ViVG91Y2hFdmVudCo+KCZpbnB1dEV2ZW50KSk7Ci0gICAgICAgIGJyZWFr
OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCi0gICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVQaW5jaEVuZDoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZToK
LSAgICAgICAgLy8gRklYTUU6IE9uY2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQgaXMgdXBkYXRlZCB0
byBzdXBwb3J0IHBpbmNoLCB0aGlzIHNob3VsZCBjYWxsIGhhbmRsZUdlc3R1cmVFdmVudCwganVz
dCBsaWtlIGl0IGN1cnJlbnRseSBkb2VzIGZvciBnZXN0dXJlIHNjcm9sbC4KLSAgICAgICAgaGFu
ZGxlZCA9IGZhbHNlOwotICAgICAgICBicmVhazsKLSNlbmRpZgotCi0gICAgZGVmYXVsdDoKLSAg
ICAgICAgaGFuZGxlZCA9IGZhbHNlOwotICAgIH0KLQorICAgIGJvb2wgaGFuZGxlZCA9IFBhZ2VX
aWRnZXREZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0aGlzLCBpbnB1
dEV2ZW50KTsKICAgICBtX2N1cnJlbnRJbnB1dEV2ZW50ID0gMDsKLQogICAgIHJldHVybiBoYW5k
bGVkOwogfQogCkBAIC0xNzU5LDggKzE2NjAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRGb2N1
cyhib29sIGVuYWJsZSkKICAgICAgICAgfQogICAgICAgICBtX2ltZUFjY2VwdEV2ZW50cyA9IHRy
dWU7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaGlkZUF1dG9maWxsUG9wdXAoKTsKLSAgICAgICAg
aGlkZVNlbGVjdFBvcHVwKCk7CisgICAgICAgIGhpZGVQb3B1cHMoKTsKIAogICAgICAgICAvLyBD
bGVhciBmb2N1cyBvbiB0aGUgY3VycmVudGx5IGZvY3VzZWQgZnJhbWUgaWYgYW55LgogICAgICAg
ICBpZiAoIW1fcGFnZSkKQEAgLTI4NDksNiArMjc0OSwxMyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpo
aWRlUG9wdXBzKCkKIHsKICAgICBoaWRlU2VsZWN0UG9wdXAoKTsKICAgICBoaWRlQXV0b2ZpbGxQ
b3B1cCgpOworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorICAgIGlmIChtX3BhZ2VQb3B1cCkgewor
ICAgICAgICBXZWJQYWdlUG9wdXBJbXBsKiBwYWdlUG9wdXAgPSBtX3BhZ2VQb3B1cC5nZXQoKTsK
KyAgICAgICAgcG9wdXBDbG9zZWQocGFnZVBvcHVwKTsKKyAgICAgICAgcGFnZVBvcHVwLT5jbG9z
ZVBvcHVwKCk7CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnBlcmZvcm1D
dXN0b21Db250ZXh0TWVudUFjdGlvbih1bnNpZ25lZCBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA2MzRhNDFiNmNmODc3MDY5YmM3ZTc5NTJiN2E1
ZTNiYzllODA0NTAxLi4zMjFmZTRmN2RjMTczZjIwMTk4ZmNmNWE5MDVkMzdlMGJiNjlhYThkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTUyLDYgKzUyLDcg
QEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVy
SW1wbC5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5TGlzdC5oIgorI2luY2x1ZGUgIlBhZ2VXaWRn
ZXREZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgiCiAj
aW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
QEAgLTk1LDYgKzk2LDcgQEAgY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKIGNsYXNzIFdl
YkRldlRvb2xzQWdlbnRQcml2YXRlOwogY2xhc3MgV2ViRnJhbWVJbXBsOwogY2xhc3MgV2ViR2Vz
dHVyZUV2ZW50OworY2xhc3MgV2ViUGFnZVBvcHVwSW1wbDsKIGNsYXNzIFdlYkltYWdlOwogY2xh
c3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CkBAIC0xMDIsNyArMTA0
LDcgQEAgY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50OwogY2xhc3MgV2ViU2V0dGluZ3NJbXBsOwog
Y2xhc3MgV2ViVG91Y2hFdmVudDsKIAotY2xhc3MgV2ViVmlld0ltcGwgOiBwdWJsaWMgV2ViVmll
dywgcHVibGljIFdlYkxheWVyVHJlZVZpZXdDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPFdlYlZp
ZXdJbXBsPiwgcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IHsKK2Ns
YXNzIFdlYlZpZXdJbXBsIDogcHVibGljIFdlYlZpZXcsIHB1YmxpYyBXZWJMYXllclRyZWVWaWV3
Q2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3SW1wbD4sIHB1YmxpYyBXZWJDb3JlOjpQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCwgcHVibGljIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXIg
ewogcHVibGljOgogICAgIGVudW0gQXV0b1pvb21UeXBlIHsKICAgICAgICAgRG91YmxlVGFwLApA
QCAtMzMwLDE4ICszMzIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBvYnNlcnZlTmV3TmF2aWdhdGlv
bigpOwogCiAgICAgLy8gRXZlbnQgcmVsYXRlZCBtZXRob2RzOgotICAgIHZvaWQgbW91c2VNb3Zl
KGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKLSAgICB2b2lkIG1vdXNlTGVhdmUoY29uc3QgV2ViTW91
c2VFdmVudCYpOwotICAgIHZvaWQgbW91c2VEb3duKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKLSAg
ICB2b2lkIG1vdXNlVXAoY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIHZvaWQgbW91c2VDb250
ZXh0TWVudShjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgdm9pZCBtb3VzZURvdWJsZUNsaWNr
KGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKLSAgICBib29sIG1vdXNlV2hlZWwoY29uc3QgV2ViTW91
c2VXaGVlbEV2ZW50Jik7Ci0gICAgYm9vbCBnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2
ZW50Jik7CiAgICAgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBuZXdTY2FsZSwg
ZG91YmxlIGR1cmF0aW9uU2VjKTsKLSAgICBib29sIGtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJk
RXZlbnQmKTsKLSAgICBib29sIGNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7Ci0g
ICAgYm9vbCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKIAogICAgIHZvaWQgbnVt
YmVyT2ZXaGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKTsKICAgICB2b2lkIG51bWJl
ck9mVG91Y2hFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCk7CkBAIC00NTEsNiArNDQ0LDEw
IEBAIHB1YmxpYzoKICAgICAvLyBOb3RpZmljYXRpb24gdGhhdCBhIHBvcHVwIHdhcyBvcGVuZWQv
Y2xvc2VkLgogICAgIHZvaWQgcG9wdXBPcGVuZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBv
cHVwQ29udGFpbmVyKTsKICAgICB2b2lkIHBvcHVwQ2xvc2VkKFdlYkNvcmU6OlBvcHVwQ29udGFp
bmVyKiBwb3B1cENvbnRhaW5lcik7CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAgdm9pZCBw
b3B1cE9wZW5lZChXZWJQYWdlUG9wdXBJbXBsKik7CisgICAgdm9pZCBwb3B1cENsb3NlZChXZWJQ
YWdlUG9wdXBJbXBsKik7CisjZW5kaWYKIAogICAgIHZvaWQgaGlkZUF1dG9maWxsUG9wdXAoKTsK
IApAQCAtNDg5LDYgKzQ4NiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2li
aWxpdHlTdGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlLCBib29sKTsKIAogICAgIFdlYkNvcmU6
OlBvcHVwQ29udGFpbmVyKiBzZWxlY3RQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0UG9w
dXAuZ2V0KCk7IH0KKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBib29sIGhhc09wZW5lZFBv
cHVwKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RQb3B1cCB8fCBtX3BhZ2VQb3B1cDsgfQorI2Vs
c2UKKyAgICBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RQb3B1
cDsgfQorI2VuZGlmCiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IGxlYWRzIHRv
IHNjcm9sbGluZy4KICAgICBzdGF0aWMgYm9vbCBtYXBLZXlDb2RlRm9yU2Nyb2xsKGludCBrZXlD
b2RlLApAQCAtNTkxLDYgKzU5MywxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9pbnRlckxvY2tN
b3VzZUV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmKTsKICNlbmRpZgogCisgICAgLy8gUGFnZVdp
ZGdldEV2ZW50SGFuZGxlciBmdW5jdGlvbnMKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91c2VM
ZWF2ZShXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91c2VEb3duKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2Vi
TW91c2VFdmVudCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZVVwKFdl
YkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViTW91c2VFdmVudCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlQ2hhckV2ZW50KGNvbnN0IFdl
YktleWJvYXJkRXZlbnQmKSBPVkVSUklERTsKKwogICAgIFdlYlZpZXdDbGllbnQqIG1fY2xpZW50
OwogICAgIFdlYkF1dG9maWxsQ2xpZW50KiBtX2F1dG9maWxsQ2xpZW50OwogICAgIFdlYlBlcm1p
c3Npb25DbGllbnQqIG1fcGVybWlzc2lvbkNsaWVudDsKQEAgLTY5Miw2ICs3MDIsMTEgQEAgcHJp
dmF0ZToKICAgICAvLyBUaGUgcG9wdXAgYXNzb2NpYXRlZCB3aXRoIGEgc2VsZWN0IGVsZW1lbnQu
CiAgICAgUmVmUHRyPFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyPiBtX3NlbGVjdFBvcHVwOwogCisj
aWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAgLy8gVGhlIHBvcHVwIGFzc29jaWF0ZWQgd2l0aCBh
biBpbnB1dCBlbGVtZW50LgorICAgIFJlZlB0cjxXZWJQYWdlUG9wdXBJbXBsPiBtX3BhZ2VQb3B1
cDsKKyNlbmRpZgorCiAgICAgT3duUHRyPFdlYkRldlRvb2xzQWdlbnRQcml2YXRlPiBtX2RldlRv
b2xzQWdlbnQ7CiAgICAgT3duUHRyPFBhZ2VPdmVybGF5TGlzdD4gbV9wYWdlT3ZlcmxheXM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136626</attachid>
            <date>2012-04-10 23:02:30 -0700</date>
            <delta_ts>2012-04-11 20:06:47 -0700</delta_ts>
            <desc>WIP 2</desc>
            <filename>bug-81081-20120411150228.patch</filename>
            <type>text/plain</type>
            <size>51807</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzODI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGZkNDY1NjQ0ZWEyM2VhNTIzMDg5YzQxZjlhYjgzZmIyNTQzYjM5YWMuLmIxZjY3N2JiMmMyNzQ1
NmFkMTViY2M2MTViZWUzNjljMzE5NzI1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMTItMDQtMTAgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIFBhZ2VQb3B1cCBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEwODEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViUGFn
ZVBvcHVwSW1wbCBjbGFzcywgd2hpY2ggaXMgYW4gaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAg
V2ViQ29yZTo6UGFnZVBvcHVwIGludGVyZmFjZSBhbmQgV2ViS2l0OjpXZWJQYWdlUG9wdXAgaW50
ZXJmYWNlLiBJdCdzIGEKKyAgICAgICAgV2ViV2lkZ2V0IHdoaWNoIGhhcyBhIFBhZ2Ugb2JqZWN0
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgbWFrZXMgbm8gYmVoYXZpb3Ig
Y2hhbmdlIHlldC4KKworICAgICAgICAqIFdlYktpdC5neXA6IEFkZCBXZWJQYWdlUG9wdXBJbXBs
LmgKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudEltcGw6Omhhc09wZW5lZFBvcHVwKToKKyAgICAgICAgRGVsZWdhdGUgdG8g
V2ViVmlld0ltcGw6Omhhc09wZW5lZFBvcHVwKCkuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudEltcGw6Om9wZW5QYWdlUG9wdXApOgorICAgICAgICBBZGRlZC4gQ2FsY3VsYXRlcyBhIGdv
b2QgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBwYWdlIHBvcHVwIGZyb20gdGhlCisgICAgICAg
IHNwZWNpZmllZCBlbGVtZW50IHJlY3RhbmdsZS4KKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50SW1wbDo6Y2xvc2VQYWdlUG9wdXApOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xp
ZW50SW1wbC5oOgorICAgICAgICAoQ2hyb21lQ2xpZW50SW1wbCk6IEFkZCBkZWxhcmF0aW9ucyBv
ZiBvcGVuUGFnZVBvcHVwIGFuZCBjbG9zZVBhZ2VQb3B1cC4KKyAgICAgICAgKiBzcmMvV2ViUGFn
ZVBvcHVwSW1wbC5jcHA6CisgICAgICAgIChQYWdlUG9wdXBDaHJvbWVDbGllbnQpOgorICAgICAg
ICBUaGlzIGlzIGEgbGlnaHQgaW1wbGVtZW50YXRpb24gb2YgQ2hyb21lQ2xpZW50IGZvciB0aGUg
cGFnZSBpbgorICAgICAgICBXZWJQYWdlUG9wdXBJbXBsLiBUaGlzIGlzIGEgZnJpZW5kIG9mIFdl
YlBhZ2VQb3B1cEltcGwgYmVjYXNlIG9mIGVhc2Ugb2YKKyAgICAgICAgYWNjZXNzIHRvIGl0cyBt
ZW1iZXJzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpXZWJQYWdlUG9wdXBJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6fldlYlBhZ2VQb3B1cElt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjppbml0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UpOgorICAgICAgICBNYWtlIGEgUGFn
ZSBhbmQgaW5qZWN0IHNldFZhbHVlQW5kQ2xvc2VQb3B1cCBmdW5jdGlvbi4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpzaXplKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVBvcHVwSW1wbDo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
b3B1cEltcGw6OmNvbXBvc2l0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6
OmxheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OnBhaW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6cmVzaXplKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVBvcHVwSW1wbDo6c2V0Rm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJ
bXBsOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmNsb3NlUG9w
dXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXA6OmNyZWF0ZSk6CisgICAgICAgICog
c3JjL1dlYlBhZ2VQb3B1cEltcGwuaDogQWRkZWQuCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmtleUV2ZW50KTogSWYgYSB2aXNp
YmxlIFBhZ2VQb3B1cCBleGlzdHMsIGZvcndhcmQga2V5IGV2ZW50cyB0byBpdC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OmNoYXJFdmVudCk6IGRpdHRvLgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6cG9wdXBPcGVuZWQpOgorICAgICAgICBBZGRlZC4gUmVnaXN0ZXIgYW4g
b3BlbmluZyBQYWdlUG9wdXAuIFN0b3AgY2FyZXQgYmxpbmtpbmcuCisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpwb3B1cENsb3NlZCk6CisgICAgICAgIEFkZGVkLiBVbnJlZ2lzdGVyIGEg
Y2xvc2luZyBQYWdlUG9wdXAuICBSZXN1bWUgY2FyZXQgYmxpbmtpbmcuCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRGb2N1cyk6CisgICAgICAgIFVzZSBoaWRlUG9wdXBzKCkgYmVj
YXVzZSB3ZSB3YW50IHRvIGFkZCBjb2RlIHRvIGNsb3NlIGEgUGFnZVBvcHVwLgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6aGlkZVBvcHVwcyk6CisgICAgICAgIEFkZCBjb2RlIHRvIGNs
b3NlIGEgUGFnZVBvcHVwLgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAo
V2ViVmlld0ltcGwpOiBBZGQgbV9wYWdlUG9wdXAgZGF0YSBtZW1iZXIgdG8gc3RvcmUgYSB2aXNp
YmxlIFBhZ2VQb3B1cC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omhhc09wZW5lZFBv
cHVwKTogQWRkZWQuCisKIDIwMTItMDQtMTAgIEFtaSBGaXNjaG1hbiAgPGZpc2NobWFuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSb2xsIENocm9taXVtIERFUFMgdG8gbGFzdC1rbm93biBnb29k
IHJldmlzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggNjhjODFlNDgyYTc3MDQx
N2Y1MzhlODdmYTEzZGE1YzE5MGVhODYyZi4uYzdkYWEwYmJiMDQ3MDhhMjE3MDM0MTU3NjRjNGVj
MDU2MzRlZTg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtNDU0LDYgKzQ1NCw4
IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9QYWdlT3ZlcmxheS5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL1BhZ2VPdmVybGF5TGlzdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvUGFnZU92
ZXJsYXlMaXN0LmgnLAorICAgICAgICAgICAgICAgICdzcmMvUGFnZVdpZGdldERlbGVnYXRlLmNw
cCcsCisgICAgICAgICAgICAgICAgJ3NyYy9QYWdlV2lkZ2V0RGVsZWdhdGUuaCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwJywKQEAgLTYwNyw2ICs2MDksNyBAQAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViTm90aWZpY2F0aW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJPcHRpb25FbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQYWdlUG9w
dXBJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJQYWdlUG9wdXBJbXBsLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViUGFnZVNlcmlhbGl6ZXIuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9mZWF0dXJlcy5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5n
eXBpCmluZGV4IDA2NzMyN2M2MzlhMjU1NmJkZGYwODA5NzUwZDdjOGE1YTg5NWFlZDkuLmQwNjlm
ZDk0MzA1ZGY0Nzk5N2M3NmU5OWVlZjIzMjE2MjY3MGI3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L2ZlYXR1cmVzLmd5cGkKQEAgLTU0LDcgKzU0LDcgQEAKICAgICAgICdFTkFCTEVfSUNPTkRBVEFC
QVNFPTAnLAogICAgICAgJ0VOQUJMRV9JTkRFWEVEX0RBVEFCQVNFPTEnLAogICAgICAgJ0VOQUJM
RV9JTlBVVF9TUEVFQ0g9MScsCi0gICAgICAnRU5BQkxFX0lOUFVUX1RZUEVfREFURT0wJywKKyAg
ICAgICdFTkFCTEVfSU5QVVRfVFlQRV9EQVRFPTEnLAogICAgICAgJ0VOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FPTAnLAogICAgICAgJ0VOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUw9MCcs
CiAgICAgICAnRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEg9MCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCmluZGV4IDQyNzM1YTQ2ZDkyZTFjMDg3
MDA2NmJmOWI0Y2Y5ZDlkMzViM2FmZDYuLmNhMzYwNWY2YmE4YzJhNDMxOGJjZjhmNTQwNjQ3Mzk0
OGQ3MjU2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVu
dEltcGwuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbi5o
IgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFnZVBv
cHVwQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJQb3B1cENvbnRhaW5lci5oIgpAQCAtODcsNiArODgs
NyBAQAogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNp
bmNsdWRlICJXZWJOb2RlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBvcHVwSW1wbC5oIgogI2luY2x1
ZGUgIldlYlBsdWdpbi5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lckltcGwuaCIKICNp
bmNsdWRlICJXZWJQb3B1cE1lbnVJbXBsLmgiCkBAIC05NzcsNyArOTc5LDcgQEAgYm9vbCBDaHJv
bWVDbGllbnRJbXBsOjpzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0
aW9uKCkKIAogYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpoYXNPcGVuZWRQb3B1cCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuICEhbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpOworICAgIHJldHVybiBtX3dl
YlZpZXctPmhhc09wZW5lZFBvcHVwKCk7CiB9CiAKIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBDaHJv
bWVDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNv
bnN0CkBAIC05OTQsMTUgKzk5NiwzNyBAQCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hy
b21lQ2xpZW50SW1wbDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaQogfQogCiAj
aWYgRU5BQkxFKFBBR0VfUE9QVVApCi1QYWdlUG9wdXAqIENocm9tZUNsaWVudEltcGw6Om9wZW5Q
YWdlUG9wdXAoUGFnZVBvcHVwQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpCi17Ci0gICAgLy8gRklY
TUU6IEltcGVsZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gMDsKK1BhZ2VQb3B1cCogQ2hyb21lQ2xp
ZW50SW1wbDo6b3BlblBhZ2VQb3B1cChQYWdlUG9wdXBDbGllbnQqIGNsaWVudCwgY29uc3QgSW50
UmVjdCYgb3JpZ2luQm91bmRzSW5Sb290VmlldykKK3sKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAg
ICBpZiAoaGFzT3BlbmVkUG9wdXAoKSkKKyAgICAgICAgbV93ZWJWaWV3LT5oaWRlUG9wdXBzKCk7
CisKKyAgICBXZWJXaWRnZXQqIHBvcHVwV2lkZ2V0ID0gbV93ZWJWaWV3LT5jbGllbnQoKS0+Y3Jl
YXRlUG9wdXBNZW51KFdlYlBvcHVwVHlwZVBhZ2UpOworICAgIEFTU0VSVChwb3B1cFdpZGdldCk7
CisgICAgV2ViUGFnZVBvcHVwSW1wbCogcG9wdXAgPSBzdGF0aWNfY2FzdDxXZWJQYWdlUG9wdXBJ
bXBsKj4ocG9wdXBXaWRnZXQpOworICAgIFdlYlNpemUgcm9vdFZpZXdTaXplID0gbV93ZWJWaWV3
LT5zaXplKCk7CisgICAgSW50U2l6ZSBwb3B1cFNpemUgPSBjbGllbnQtPmNvbnRlbnRTaXplKCk7
CisgICAgSW50UmVjdCBwb3B1cEJvdW5kc0luUm9vdFZpZXcoSW50UG9pbnQobWF4KDAsIG9yaWdp
bkJvdW5kc0luUm9vdFZpZXcueCgpKSwgbWF4KDAsIG9yaWdpbkJvdW5kc0luUm9vdFZpZXcubWF4
WSgpKSksIHBvcHVwU2l6ZSk7CisgICAgaWYgKHBvcHVwQm91bmRzSW5Sb290Vmlldy5tYXhZKCkg
PiByb290Vmlld1NpemUuaGVpZ2h0KQorICAgICAgICBwb3B1cEJvdW5kc0luUm9vdFZpZXcuc2V0
WShtYXgoMCwgb3JpZ2luQm91bmRzSW5Sb290Vmlldy55KCkgLSBwb3B1cFNpemUuaGVpZ2h0KCkp
KTsKKyAgICBpZiAocG9wdXBCb3VuZHNJblJvb3RWaWV3Lm1heFgoKSA+IHJvb3RWaWV3U2l6ZS53
aWR0aCkKKyAgICAgICAgcG9wdXBCb3VuZHNJblJvb3RWaWV3LnNldFgobWF4KDAsIHJvb3RWaWV3
U2l6ZS53aWR0aCAtIHBvcHVwU2l6ZS53aWR0aCgpKSk7CisgICAgaWYgKCFwb3B1cC0+aW5pdCht
X3dlYlZpZXcsIGNsaWVudCwgcm9vdFZpZXdUb1NjcmVlbihwb3B1cEJvdW5kc0luUm9vdFZpZXcp
KSkgeworICAgICAgICBwb3B1cC0+Y2xvc2VQb3B1cCgpOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisgICAgbV93ZWJWaWV3LT5wb3B1cE9wZW5lZChwb3B1cCk7CisgICAgcmV0dXJuIHBvcHVw
OwogfQogCi12b2lkIENocm9tZUNsaWVudEltcGw6OmNsb3NlUGFnZVBvcHVwKFBhZ2VQb3B1cCop
Cit2b2lkIENocm9tZUNsaWVudEltcGw6OmNsb3NlUGFnZVBvcHVwKFBhZ2VQb3B1cCogcG9wdXAp
CiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIGlmICghcG9wdXApCisgICAg
ICAgIHJldHVybjsKKyAgICBXZWJQYWdlUG9wdXBJbXBsKiBwb3B1cEltcGwgPSBzdGF0aWNfY2Fz
dDxXZWJQYWdlUG9wdXBJbXBsKj4ocG9wdXApOworICAgIG1fd2ViVmlldy0+cG9wdXBDbG9zZWQo
cG9wdXBJbXBsKTsKKyAgICBwb3B1cEltcGwtPmNsb3NlUG9wdXAoKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QYWdlV2lkZ2V0RGVsZWdhdGUu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVnYXRlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jY2JkODdmNzAxZGVjMzAyOWNhNTg5NGJjYTk1YTFjZjVkZGQ2MmJiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVn
YXRlLmNwcApAQCAtMCwwICsxLDIyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
YWdlV2lkZ2V0RGVsZWdhdGUuaCIKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCisjaW5jbHVkZSAiUGFnZU92ZXJsYXlMaXN0LmgiCisjaW5jbHVkZSAiV2ViSW5w
dXRFdmVudC5oIgorI2luY2x1ZGUgIldlYklucHV0RXZlbnRDb252ZXJzaW9uLmgiCisjaW5jbHVk
ZSAicGFpbnRpbmcvR3JhcGhpY3NDb250ZXh0QnVpbGRlci5oIgorI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3N0YXRpYyBpbmxpbmUgRnJhbWVWaWV3KiBtYWluRnJhbWVWaWV3KFBhZ2UqIHBhZ2Up
Cit7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIXBhZ2UtPm1h
aW5GcmFtZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcGFnZS0+bWFpbkZyYW1l
KCktPnZpZXcoKTsKK30KKwordm9pZCBQYWdlV2lkZ2V0RGVsZWdhdGU6OmFuaW1hdGUoUGFnZSog
cGFnZSwgZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKQoreworI2lmIEVOQUJMRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJhbWVWaWV3
KHBhZ2UpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuOworICAgIGRvdWJsZSB0aW1l
U2hpZnQgPSBjdXJyZW50VGltZSgpIC0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Cisg
ICAgdmlldy0+c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhjb252ZXJ0U2Vjb25kc1RvRE9NVGlt
ZVN0YW1wKG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lICsgdGltZVNoaWZ0KSk7CisjZW5kaWYKK30K
Kwordm9pZCBQYWdlV2lkZ2V0RGVsZWdhdGU6OmxheW91dChQYWdlKiBwYWdlKQoreworICAgIEZy
YW1lVmlldyogdmlldyA9IG1haW5GcmFtZVZpZXcocGFnZSk7CisgICAgaWYgKCF2aWV3KQorICAg
ICAgICByZXR1cm47CisgICAgLy8gSW4gb3JkZXIgZm9yIG91ciBjaGlsZCBIV05EcyAoTmF0aXZl
V2luZG93V2lkZ2V0cykgdG8gdXBkYXRlIHByb3Blcmx5LAorICAgIC8vIHRoZXkgbmVlZCB0byBi
ZSB0b2xkIHRoYXQgd2UgYXJlIHVwZGF0aW5nIHRoZSBzY3JlZW4uIFRoZSBwcm9ibGVtIGlzIHRo
YXQKKyAgICAvLyB0aGUgbmF0aXZlIHdpZGdldHMgbmVlZCB0byByZWNhbGN1bGF0ZSB0aGVpciBj
bGlwIHJlZ2lvbiBhbmQgbm90IG92ZXJsYXAKKyAgICAvLyBhbnkgb2Ygb3VyIG5vbi1uYXRpdmUg
d2lkZ2V0cy4gVG8gZm9yY2UgdGhlIHJlc2l6aW5nLCBjYWxsCisgICAgLy8gc2V0RnJhbWVSZWN0
KCkuIFRoaXMgd2lsbCBiZSBhIHF1aWNrIG9wZXJhdGlvbiBmb3IgbW9zdCBmcmFtZXMsIGJ1dCB0
aGUKKyAgICAvLyBOYXRpdmVXaW5kb3dXaWRnZXRzIHdpbGwgdXBkYXRlIGEgcHJvcGVyIGNsaXBw
aW5nIHJlZ2lvbi4KKyAgICB2aWV3LT5zZXRGcmFtZVJlY3Qodmlldy0+ZnJhbWVSZWN0KCkpOwor
CisgICAgLy8gc2V0RnJhbWVSZWN0IG1heSBoYXZlIHRoZSBzaWRlLWVmZmVjdCBvZiBjYXVzaW5n
IGV4aXN0aW5nIHBhZ2UgbGF5b3V0IHRvCisgICAgLy8gYmUgaW52YWxpZGF0ZWQsIHNvIGxheW91
dCBuZWVkcyB0byBiZSBjYWxsZWQgbGFzdC4KKyAgICB2aWV3LT51cGRhdGVMYXlvdXRBbmRTdHls
ZUlmTmVlZGVkUmVjdXJzaXZlKCk7Cit9CisKK3ZvaWQgUGFnZVdpZGdldERlbGVnYXRlOjpwYWlu
dChQYWdlKiBwYWdlLCBQYWdlT3ZlcmxheUxpc3QqIG92ZXJsYXlzLCBXZWJDYW52YXMqIGNhbnZh
cywgY29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBpZiAocmVjdC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBHcmFwaGljc0NvbnRleHRCdWlsZGVyIGJ1aWxkZXIoY2FudmFzKTsK
KyAgICBHcmFwaGljc0NvbnRleHQmIGdjID0gYnVpbGRlci5jb250ZXh0KCk7CisgICAgSW50UmVj
dCBkaXJ0eVJlY3QocmVjdCk7CisgICAgZ2Muc2F2ZSgpOworICAgIEZyYW1lVmlldyogdmlldyA9
IG1haW5GcmFtZVZpZXcocGFnZSk7CisgICAgaWYgKHZpZXcgJiYgcGFnZS0+bWFpbkZyYW1lKCkt
PmRvY3VtZW50KCkpIHsKKyAgICAgICAgZ2MuY2xpcChkaXJ0eVJlY3QpOworICAgICAgICB2aWV3
LT5wYWludCgmZ2MsIGRpcnR5UmVjdCk7CisgICAgICAgIGlmIChvdmVybGF5cykKKyAgICAgICAg
ICAgIG92ZXJsYXlzLT5wYWludFdlYkZyYW1lKGdjKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZ2Mu
ZmlsbFJlY3QoZGlydHlSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIGdjLnJlc3RvcmUoKTsKK30KKworYm9vbCBQYWdlV2lkZ2V0RGVsZWdhdGU6OmhhbmRsZUlu
cHV0RXZlbnQoUGFnZSogcGFnZSwgUGFnZVdpZGdldEV2ZW50SGFuZGxlciYgaGFuZGxlciwgY29u
c3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCit7CisgICAgRnJhbWUqIGZyYW1lID0gcGFnZSA/IHBh
Z2UtPm1haW5GcmFtZSgpIDogMDsKKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKKworICAgIC8v
IEZJWE1FOiBXZWJLaXQgc2VlbXMgdG8gYWx3YXlzIHJldHVybiBmYWxzZSBvbiBtb3VzZSBldmVu
dHMgcHJvY2Vzc2luZworICAgIC8vIG1ldGhvZHMuIEZvciBub3cgd2UnbGwgYXNzdW1lIGl0IGhh
cyBwcm9jZXNzZWQgdGhlbSAoYXMgd2UgYXJlIG9ubHkKKyAgICAvLyBpbnRlcmVzdGVkIGluIHdo
ZXRoZXIga2V5Ym9hcmQgZXZlbnRzIGFyZSBwcm9jZXNzZWQpLgorICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6TW91c2VNb3ZlOgorICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+dmlldygpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGhhbmRsZXIuaGFuZGxlTW91c2VNb3Zl
KCpmcmFtZSwgKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQqPigmZXZlbnQpKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZUxlYXZlOgor
ICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+dmlldygpKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGhhbmRsZXIuaGFuZGxlTW91c2VMZWF2ZSgqZnJhbWUsICpzdGF0aWNf
Y2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmV2ZW50KSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VEb3duOgorICAgICAgICBpZiAoIWZyYW1l
IHx8ICFmcmFtZS0+dmlldygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGhh
bmRsZXIuaGFuZGxlTW91c2VEb3duKCpmcmFtZSwgKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNl
RXZlbnQqPigmZXZlbnQpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpNb3VzZVVwOgorICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+dmlldygpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGhhbmRsZXIuaGFuZGxlTW91c2VVcCgq
ZnJhbWUsICpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmV2ZW50KSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsOgor
ICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+dmlldygpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gaGFuZGxlci5oYW5kbGVNb3VzZVdoZWVsKCpmcmFtZSwg
KnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCo+KCZldmVudCkpOworCisgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3duOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
S2V5RG93bjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OktleVVwOgorICAgICAgICByZXR1cm4g
aGFuZGxlci5oYW5kbGVLZXlFdmVudCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViS2V5Ym9hcmRFdmVu
dCo+KCZldmVudCkpOworCisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpDaGFyOgorICAgICAgICBy
ZXR1cm4gaGFuZGxlci5oYW5kbGVDaGFyRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYktleWJv
YXJkRXZlbnQqPigmZXZlbnQpKTsKKworI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICBj
YXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
U2Nyb2xsVXBkYXRlOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ6
CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw6CisgICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZVRhcERvd246CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRG91YmxlVGFwOgorICAg
ICAgICByZXR1cm4gaGFuZGxlci5oYW5kbGVHZXN0dXJlRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0
IFdlYkdlc3R1cmVFdmVudCo+KCZldmVudCkpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hTdGFydDoKKyAgICBjYXNlIFdl
YklucHV0RXZlbnQ6OlRvdWNoTW92ZToKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoRW5k
OgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hDYW5jZWw6CisgICAgICAgIGlmICghZnJh
bWUgfHwgIWZyYW1lLT52aWV3KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBoYW5kbGVyLmhhbmRsZVRvdWNoRXZlbnQoKmZyYW1lLCAqc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViVG91Y2hFdmVudCo+KCZldmVudCkpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoR0VTVFVS
RV9FVkVOVFMpCisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjoKKyAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEVuZDoKKyAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZToKKyAgICAgICAgLy8gRklYTUU6IE9uY2UgUGxhdGZv
cm1HZXN0dXJlRXZlbnQgaXMgdXBkYXRlZCB0byBzdXBwb3J0IHBpbmNoLCB0aGlzCisgICAgICAg
IC8vIHNob3VsZCBjYWxsIGhhbmRsZUdlc3R1cmVFdmVudCwganVzdCBsaWtlIGl0IGN1cnJlbnRs
eSBkb2VzIGZvcgorICAgICAgICAvLyBnZXN0dXJlIHNjcm9sbC4KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLyBEZWZhdWx0IGhhbmRsZXJzIGZvciBQYWdlV2lkZ2V0RXZl
bnRIYW5kbGVyCisKK3ZvaWQgUGFnZVdpZGdldEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3Zl
KEZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIC8v
IFdlIGNhbGwgbW91c2VNb3ZlZCBoZXJlIGluc3RlYWQgb2YgaGFuZGxlTW91c2VNb3ZlZEV2ZW50
IGJlY2F1c2Ugd2UgbmVlZAorICAgIC8vIG91ciBDaHJvbWVDbGllbnRJbXBsIHRvIHJlY2VpdmUg
Y2hhbmdlcyB0byB0aGUgbW91c2UgcG9zaXRpb24gYW5kIHRvb2x0aXAKKyAgICAvLyB0ZXh0LCBh
bmQgbW91c2VNb3ZlZCBoYW5kbGVzIGFsbCBvZiB0aGF0LgorICAgIG1haW5GcmFtZS5ldmVudEhh
bmRsZXIoKS0+bW91c2VNb3ZlZChQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKG1haW5GcmFtZS52
aWV3KCksIGV2ZW50KSk7Cit9CisKK3ZvaWQgUGFnZVdpZGdldEV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VMZWF2ZShGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkK
K3sKKyAgICBtYWluRnJhbWUuZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlTW92ZUV2ZW50KFBs
YXRmb3JtTW91c2VFdmVudEJ1aWxkZXIobWFpbkZyYW1lLnZpZXcoKSwgZXZlbnQpKTsKK30KKwor
dm9pZCBQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURvd24oRnJhbWUmIG1haW5G
cmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgbWFpbkZyYW1lLmV2ZW50
SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRl
cihtYWluRnJhbWUudmlldygpLCBldmVudCkpOworfQorCit2b2lkIFBhZ2VXaWRnZXRFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlVXAoRnJhbWUmIG1haW5GcmFtZSwgY29uc3QgV2ViTW91c2VFdmVu
dCYgZXZlbnQpCit7CisgICAgbWFpbkZyYW1lLmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVJl
bGVhc2VFdmVudChQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKG1haW5GcmFtZS52aWV3KCksIGV2
ZW50KSk7Cit9CisKK2Jvb2wgUGFnZVdpZGdldEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VXaGVl
bChGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmIGV2ZW50KQorewor
ICAgIHJldHVybiBtYWluRnJhbWUuZXZlbnRIYW5kbGVyKCktPmhhbmRsZVdoZWVsRXZlbnQoUGxh
dGZvcm1XaGVlbEV2ZW50QnVpbGRlcihtYWluRnJhbWUudmlldygpLCBldmVudCkpOworfQorCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2Jvb2wgUGFnZVdpZGdldEV2ZW50SGFuZGxlcjo6aGFu
ZGxlVG91Y2hFdmVudChGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJUb3VjaEV2ZW50JiBldmVu
dCkKK3sKKyAgICByZXR1cm4gbWFpbkZyYW1lLmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2
ZW50KFBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIobWFpbkZyYW1lLnZpZXcoKSwgZXZlbnQpKTsK
K30KKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
YWdlV2lkZ2V0RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BhZ2VXaWRn
ZXREZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiYmUyNjlhY2I3NWFkM2Q2ZGEyOWIwNDE5MTdmNzA1
MGE5YTdiMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
YWdlV2lkZ2V0RGVsZWdhdGUuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQYWdlV2lkZ2V0RGVs
ZWdhdGVfaAorI2RlZmluZSBQYWdlV2lkZ2V0RGVsZWdhdGVfaAorCisjaW5jbHVkZSAiUGFnZS5o
IgorI2luY2x1ZGUgIldlYldpZGdldC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNhbnZhcy5o
IgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
RnJhbWU7CitjbGFzcyBQYWdlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGFn
ZU92ZXJsYXlMaXN0OworY2xhc3MgV2ViR2VzdHVyZUV2ZW50OworY2xhc3MgV2ViSW5wdXRFdmVu
dDsKK2NsYXNzIFdlYktleWJvYXJkRXZlbnQ7CitjbGFzcyBXZWJNb3VzZUV2ZW50OworY2xhc3Mg
V2ViTW91c2VXaGVlbEV2ZW50OworY2xhc3MgV2ViVG91Y2hFdmVudDsKKworY2xhc3MgUGFnZVdp
ZGdldEV2ZW50SGFuZGxlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZU1vdXNl
TW92ZShXZWJDb3JlOjpGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJNb3VzZUV2ZW50Jik7Cisg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZU1vdXNlTGVhdmUoV2ViQ29yZTo6RnJhbWUmIG1haW5GcmFt
ZSwgY29uc3QgV2ViTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZURv
d24oV2ViQ29yZTo6RnJhbWUmIG1haW5GcmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYpOworICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZVVwKFdlYkNvcmU6OkZyYW1lJiBtYWluRnJhbWUsIGNv
bnN0IFdlYk1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VXaGVlbChX
ZWJDb3JlOjpGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlQ2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmKSA9IDA7CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JikgPSAwOworI2VuZGlmCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlVG91Y2hFdmVu
dChXZWJDb3JlOjpGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJUb3VjaEV2ZW50Jik7CisjZW5k
aWYKKyAgICB2aXJ0dWFsIH5QYWdlV2lkZ2V0RXZlbnRIYW5kbGVyKCkgeyB9Cit9OworCisKKy8v
IENvbW1vbiBpbXBsZW1lbnRhdGlvbiBvZiBXZWJWaWV3SW1wbCBhbmQgV2ViUGFnZVBvcHVwSW1w
bC4KK2NsYXNzIFBhZ2VXaWRnZXREZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQg
YW5pbWF0ZShXZWJDb3JlOjpQYWdlKiwgZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKTsK
KyAgICBzdGF0aWMgdm9pZCBsYXlvdXQoV2ViQ29yZTo6UGFnZSopOworICAgIHN0YXRpYyB2b2lk
IHBhaW50KFdlYkNvcmU6OlBhZ2UqLCBQYWdlT3ZlcmxheUxpc3QqLCBXZWJDYW52YXMqLCBjb25z
dCBXZWJSZWN0Jik7CisgICAgc3RhdGljIGJvb2wgaGFuZGxlSW5wdXRFdmVudChXZWJDb3JlOjpQ
YWdlKiwgUGFnZVdpZGdldEV2ZW50SGFuZGxlciYsIGNvbnN0IFdlYklucHV0RXZlbnQmKTsKKwor
cHJpdmF0ZToKKyAgICBQYWdlV2lkZ2V0RGVsZWdhdGUoKSB7IH0KK307CisKK30KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggODEzYzlk
NzA3NDMzOWM0ODdlNGIyNGZlZjhmY2Y1MTVkM2JkMmE3OS4uM2Y5ZDlkMzExMWViMGJjZTE4Zjc2
NmUzM2M5MzE1OGM5YjczOTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuY3BwCkBAIC0yMDU2LDM1ICsyMDU2LDYgQEAgUGFzc1JlZlB0cjxGcmFtZT4gV2Vi
RnJhbWVJbXBsOjpjcmVhdGVDaGlsZEZyYW1lKAogICAgIHJldHVybiBjaGlsZEZyYW1lLnJlbGVh
c2UoKTsKIH0KIAotdm9pZCBXZWJGcmFtZUltcGw6OmxheW91dCgpCi17Ci0gICAgLy8gbGF5b3V0
IHRoaXMgZnJhbWUKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7Ci0gICAg
aWYgKHZpZXcpCi0gICAgICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1
cnNpdmUoKTsKLX0KLQotdm9pZCBXZWJGcmFtZUltcGw6OnBhaW50V2l0aENvbnRleHQoR3JhcGhp
Y3NDb250ZXh0JiBnYywgY29uc3QgV2ViUmVjdCYgcmVjdCkKLXsKLSAgICBJbnRSZWN0IGRpcnR5
UmVjdChyZWN0KTsKLSAgICBnYy5zYXZlKCk7Ci0gICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkg
JiYgZnJhbWVWaWV3KCkpIHsKLSAgICAgICAgZ2MuY2xpcChkaXJ0eVJlY3QpOwotICAgICAgICBm
cmFtZVZpZXcoKS0+cGFpbnQoJmdjLCBkaXJ0eVJlY3QpOwotICAgICAgICBpZiAodmlld0ltcGwo
KS0+cGFnZU92ZXJsYXlzKCkpCi0gICAgICAgICAgICB2aWV3SW1wbCgpLT5wYWdlT3ZlcmxheXMo
KS0+cGFpbnRXZWJGcmFtZShnYyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGdjLmZpbGxSZWN0KGRp
cnR5UmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBnYy5yZXN0
b3JlKCk7Ci19Ci0KLXZvaWQgV2ViRnJhbWVJbXBsOjpwYWludChXZWJDYW52YXMqIGNhbnZhcywg
Y29uc3QgV2ViUmVjdCYgcmVjdCkKLXsKLSAgICBpZiAocmVjdC5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBwYWludFdpdGhDb250ZXh0KEdyYXBoaWNzQ29udGV4dEJ1aWxkZXIoY2Fu
dmFzKS5jb250ZXh0KCksIHJlY3QpOwotfQotCiB2b2lkIFdlYkZyYW1lSW1wbDo6Y3JlYXRlRnJh
bWVWaWV3KCkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7IC8vIElmIG1fZnJhbWUgZG9lc24ndCBl
eGlzdCwgd2UgcHJvYmFibHkgZGlkbid0IGluaXQgcHJvcGVybHkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCmluZGV4IDljODZkNzUxNGFjMDBlYTVmMWRiYjgxNzc5
YjNjYTM1ODE2ZjM2NzUuLjNhYmM2YzQ5MzQ0ZDFlMzY5MDY0NzkxYWVlZmEwYjNhMDA0MDI5MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC0yMzAsOSAr
MjMwLDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUNo
aWxkRnJhbWUoCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBXZWJD
b3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqKTsKIAotICAgIHZvaWQgbGF5b3V0KCk7Ci0gICAg
dm9pZCBwYWludChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0Jik7Ci0gICAgdm9pZCBwYWludFdp
dGhDb250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYlJlY3QmKTsKICAg
ICB2b2lkIGNyZWF0ZUZyYW1lVmlldygpOwogCiAgICAgc3RhdGljIFdlYkZyYW1lSW1wbCogZnJv
bUZyYW1lKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwCmluZGV4IGJjODEwYzdiMWIxNjhkYjdlY2JlMjE1
ZDAxOWM2MzQ3M2YxYjRmZDIuLmEwZDMxZTI0YzgyZGQzNTIwZGM2YTEyZTEzNzRjNjM1ZmZjOTYz
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0yOSwyMSArMjksMjY1IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYlBhZ2VQb3B1cEltcGwuaCIKIAorI2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgorI2lu
Y2x1ZGUgIkZpbGVDaG9vc2VyLmgiCisjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCisjaW5j
bHVkZSAiRm9ybVN0YXRlLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSFRN
TEZvcm1FbGVtZW50LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VQb3B1cENs
aWVudC5oIgorI2luY2x1ZGUgIlBhZ2VXaWRnZXREZWxlZ2F0ZS5oIgorI2luY2x1ZGUgIlNldHRp
bmdzLmgiCisjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgorI2luY2x1ZGUgIldlYklucHV0RXZl
bnRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBvcHVwLmgiCisjaW5jbHVkZSAiV2Vi
V2lkZ2V0Q2xpZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAorI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorCitjbGFzcyBQYWdlUG9wdXBDaHJv
bWVDbGllbnQgOiBwdWJsaWMgRW1wdHlDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFBhZ2VQb3B1cENocm9tZUNsaWVudCk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQYWdlUG9wdXBDaHJvbWVDbGllbnQoV2ViUGFn
ZVBvcHVwSW1wbCogcG9wdXApIDogbV9wb3B1cChwb3B1cCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3BvcHVwLT53aWRnZXRDbGllbnQoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZpcnR1
YWwgdm9pZCBjbG9zZVdpbmRvd1Nvb24oKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9wb3B1
cC0+Y2xvc2VQb3B1cCgpOworICAgIH0KKworICAgIHZpcnR1YWwgRmxvYXRSZWN0IHdpbmRvd1Jl
Y3QoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgcmV0dXJuIEZsb2F0UmVjdChtX3BvcHVwLT5t
X3dpbmRvd1JlY3RJblNjcmVlbi54LCBtX3BvcHVwLT5tX3dpbmRvd1JlY3RJblNjcmVlbi55LCBt
X3BvcHVwLT5tX3dpbmRvd1JlY3RJblNjcmVlbi53aWR0aCwgbV9wb3B1cC0+bV93aW5kb3dSZWN0
SW5TY3JlZW4uaGVpZ2h0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2luZG93UmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX3BvcHVw
LT5tX3dpbmRvd1JlY3RJblNjcmVlbiA9IEludFJlY3QocmVjdCk7CisgICAgICAgIG1fcG9wdXAt
PndpZGdldENsaWVudCgpLT5zZXRXaW5kb3dSZWN0KG1fcG9wdXAtPm1fd2luZG93UmVjdEluU2Ny
ZWVuKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNz
YWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERQorICAg
IHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ09OU09MRSBNRVNT
U0FHRToldTogJXNcbiIsIGxpbmVOdW1iZXIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisjZWxz
ZQorICAgICAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7CisgICAgICAgIFVOVVNFRF9QQVJBTShs
aW5lTnVtYmVyKTsKKyNlbmRpZgorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
Q29udGVudHNBbmRSb290Vmlldyhjb25zdCBJbnRSZWN0JiBwYWludFJlY3QsIGJvb2wpIE9WRVJS
SURFCisgICAgeworICAgICAgICBpZiAocGFpbnRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgbV9wb3B1cC0+d2lkZ2V0Q2xpZW50KCktPmRpZEludmFsaWRhdGVS
ZWN0KHBhaW50UmVjdCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBJ
bnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50
UmVjdCYgY2xpcFJlY3QpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX3BvcHVwLT53aWRnZXRD
bGllbnQoKS0+ZGlkU2Nyb2xsUmVjdChzY3JvbGxEZWx0YS53aWR0aCgpLCBzY3JvbGxEZWx0YS5o
ZWlnaHQoKSwgaW50ZXJzZWN0aW9uKHNjcm9sbFJlY3QsIGNsaXBSZWN0KSk7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3QgSW50
UmVjdCYgdXBkYXRlUmVjdCwgYm9vbCBpbW1lZGlhdGUpIE9WRVJSSURFCisgICAgeworICAgICAg
ICBpbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyh1cGRhdGVSZWN0LCBpbW1lZGlhdGUpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIE9WRVJSSURFCisg
ICAgeworICAgICAgICBtX3BvcHVwLT53aWRnZXRDbGllbnQoKS0+c2NoZWR1bGVBbmltYXRpb24o
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQqIHdlYlZpZXcoKSBjb25zdCBPVkVSUklERQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcG9wdXAtPm1fd2ViVmlldzsKKyAgICB9CisKKyAgICBX
ZWJQYWdlUG9wdXBJbXBsKiBtX3BvcHVwOworfTsKKwogLy8gV2ViUGFnZVBvcHVwSW1wbCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLS8vIEZJWE1FOiBXZWJQYWdlUG9wdXBJbXBsIGltcGxlbWVudGF0aW9uIHdpbGwgYmUg
d3JpdHRlbiBoZXJlLgorV2ViUGFnZVBvcHVwSW1wbDo6V2ViUGFnZVBvcHVwSW1wbChXZWJXaWRn
ZXRDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fd2lkZ2V0Q2xpZW50KGNsaWVudCkKK3sKKyAgICBB
U1NFUlQoY2xpZW50KTsKK30KKworV2ViUGFnZVBvcHVwSW1wbDo6fldlYlBhZ2VQb3B1cEltcGwo
KQoreworfQorCitib29sIFdlYlBhZ2VQb3B1cEltcGw6OmluaXQoV2ViVmlld0ltcGwqIHdlYlZp
ZXcsIFBhZ2VQb3B1cENsaWVudCogcG9wdXBDbGllbnQsIGNvbnN0IEludFJlY3QmIGJvdW5kc0lu
U2NyZWVuKQoreworICAgIEFTU0VSVCh3ZWJWaWV3KTsKKyAgICBBU1NFUlQocG9wdXBDbGllbnQp
OworICAgIG1fd2ViVmlldyA9IHdlYlZpZXc7CisgICAgbV9wb3B1cENsaWVudCA9IHBvcHVwQ2xp
ZW50OworCisgICAgbV93aWRnZXRDbGllbnQtPnNldFdpbmRvd1JlY3QoYm91bmRzSW5TY3JlZW4p
OworICAgIG1fd2luZG93UmVjdEluU2NyZWVuID0gYm91bmRzSW5TY3JlZW47CisgICAgaWYgKCFp
bml0UGFnZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV93aWRnZXRDbGllbnQtPnNo
b3coV2ViTmF2aWdhdGlvblBvbGljeSgpKTsKKworICAgIHNldEZvY3VzKHRydWUpOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UoKQorewor
ICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGllbnRzOworICAgIGZpbGxXaXRoRW1wdHlDbGll
bnRzKHBhZ2VDbGllbnRzKTsKKyAgICBtX2Nocm9tZUNsaWVudCA9IGFkb3B0UHRyKG5ldyBQYWdl
UG9wdXBDaHJvbWVDbGllbnQodGhpcykpOworICAgIHBhZ2VDbGllbnRzLmNocm9tZUNsaWVudCA9
IG1fY2hyb21lQ2xpZW50LmdldCgpOworCisgICAgbV9wYWdlID0gYWRvcHRQdHIobmV3IFBhZ2Uo
cGFnZUNsaWVudHMpKTsKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFNjcmlwdEVuYWJsZWQo
dHJ1ZSk7CisgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRBbGxvd1NjcmlwdHNUb0Nsb3NlV2lu
ZG93cyh0cnVlKTsKKworICAgIHN0YXRpYyBGcmFtZUxvYWRlckNsaWVudCogZW1wdHlGcmFtZUxv
YWRlckNsaWVudCA9ICBuZXcgRW1wdHlGcmFtZUxvYWRlckNsaWVudDsKKyAgICBSZWZQdHI8RnJh
bWU+IGZyYW1lID0gRnJhbWU6OmNyZWF0ZShtX3BhZ2UuZ2V0KCksIDAsIGVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQpOworICAgIGZyYW1lLT5zZXRWaWV3KEZyYW1lVmlldzo6Y3JlYXRlKGZyYW1lLmdl
dCgpKSk7CisgICAgZnJhbWUtPmluaXQoKTsKKyAgICBmcmFtZS0+dmlldygpLT5yZXNpemUobV9w
b3B1cENsaWVudC0+Y29udGVudFNpemUoKSk7CisgICAgZnJhbWUtPnZpZXcoKS0+c2V0VHJhbnNw
YXJlbnQoZmFsc2UpOworCisgICAgRG9jdW1lbnRXcml0ZXIqIHdyaXRlciA9IGZyYW1lLT5sb2Fk
ZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCk7CisgICAgd3JpdGVyLT5zZXRN
SU1FVHlwZSgidGV4dC9odG1sIik7CisgICAgd3JpdGVyLT5zZXRFbmNvZGluZygiVVRGLTgiLCBm
YWxzZSk7CisgICAgd3JpdGVyLT5iZWdpbigpOworICAgIG1fcG9wdXBDbGllbnQtPndyaXRlRG9j
dW1lbnQoKndyaXRlcik7CisgICAgd3JpdGVyLT5lbmQoKTsKKworICAgIGZyYW1lLT5zY3JpcHQo
KS0+aW5zdGFsbEZ1bmN0aW9uc0ZvclBhZ2VQb3B1cChmcmFtZS5nZXQoKSwgbV9wb3B1cENsaWVu
dCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1dlYlNpemUgV2ViUGFnZVBvcHVwSW1wbDo6c2l6
ZSgpCit7CisgICAgcmV0dXJuIG1fcG9wdXBDbGllbnQtPmNvbnRlbnRTaXplKCk7Cit9CisKK3Zv
aWQgV2ViUGFnZVBvcHVwSW1wbDo6YW5pbWF0ZShkb3VibGUpCit7CisgICAgUGFnZVdpZGdldERl
bGVnYXRlOjphbmltYXRlKG1fcGFnZS5nZXQoKSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCkpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OmNvbXBvc2l0ZShib29sKQoreworfQor
Cit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OmxheW91dCgpCit7CisgICAgUGFnZVdpZGdldERlbGVn
YXRlOjpsYXlvdXQobV9wYWdlLmdldCgpKTsKK30KKwordm9pZCBXZWJQYWdlUG9wdXBJbXBsOjpw
YWludChXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBQYWdl
V2lkZ2V0RGVsZWdhdGU6OnBhaW50KG1fcGFnZS5nZXQoKSwgMCwgY2FudmFzLCByZWN0KTsKK30K
Kwordm9pZCBXZWJQYWdlUG9wdXBJbXBsOjpyZXNpemUoY29uc3QgV2ViU2l6ZSYgbmV3U2l6ZSkK
K3sKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPnJlc2l6ZShuZXdTaXplKTsKKyAg
ICBtX3dpZGdldENsaWVudC0+ZGlkSW52YWxpZGF0ZVJlY3QoV2ViUmVjdCgwLCAwLCBuZXdTaXpl
LndpZHRoLCBuZXdTaXplLmhlaWdodCkpOworfQorCitib29sIFdlYlBhZ2VQb3B1cEltcGw6Omhh
bmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKQoreworICAgIC8vIFRoZSBtYWlu
IFdlYlZpZXcgcmVjZWl2ZXMga2V5IGV2ZW50cyBhbmQgZm9yd2FyZCB0aGVtIHRvIHRoaXMgdmlh
IGhhbmRsZUtleUV2ZW50KCkuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIFdlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUNoYXJFdmVudChjb25z
dCBXZWJLZXlib2FyZEV2ZW50JikKK3sKKyAgICAvLyBUaGUgbWFpbiBXZWJWaWV3IHJlY2VpdmVz
IGtleSBldmVudHMgYW5kIGZvcndhcmQgdGhlbSB0byB0aGlzIHZpYSBoYW5kbGVLZXlFdmVudCgp
LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworI2lm
IEVOQUJMRShHRVNUVVJFX0VWRU5UUykKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlR2Vz
dHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKCFtX3Bh
Z2UgfHwgIW1fcGFnZS0+bWFpbkZyYW1lKCkgfHwgIW1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXco
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEZyYW1lJiBmcmFtZSA9ICptX3BhZ2UtPm1h
aW5GcmFtZSgpOworICAgIHJldHVybiBmcmFtZS5ldmVudEhhbmRsZXIoKS0+aGFuZGxlR2VzdHVy
ZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihmcmFtZS52aWV3KCksIGV2ZW50KSk7
Cit9CisjZW5kaWYKKworYm9vbCBXZWJQYWdlUG9wdXBJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNv
bnN0IFdlYklucHV0RXZlbnQmIGV2ZW50KQoreworICAgIHJldHVybiBQYWdlV2lkZ2V0RGVsZWdh
dGU6OmhhbmRsZUlucHV0RXZlbnQobV9wYWdlLmdldCgpLCAqdGhpcywgZXZlbnQpOworfQorCiti
b29sIFdlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKCFtX3BhZ2UtPm1haW5GcmFtZSgpIHx8ICFtX3Bh
Z2UtPm1haW5GcmFtZSgpLT52aWV3KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2ZW50KGV2ZW50KTsK
K30KKwordm9pZCBXZWJQYWdlUG9wdXBJbXBsOjpzZXRGb2N1cyhib29sIGVuYWJsZSkKK3sKKyAg
ICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkKGVuYWJsZSk7CisgICAgaWYg
KGVuYWJsZSkKKyAgICAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0QWN0aXZlKHRy
dWUpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OmNsb3NlKCkKK3sKKyAgICBpZiAobV9w
YWdlKSB7CisgICAgICAgIG1fcGFnZS5jbGVhcigpOworICAgICAgICBtX2Nocm9tZUNsaWVudC5j
bGVhcigpOworICAgIH0KKyAgICBkZXJlZigpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6
OmNsb3NlUG9wdXAoKQoreworICAgIGlmIChtX3BhZ2UpIHsKKyAgICAgICAgbV9wYWdlLT5zZXRH
cm91cE5hbWUoU3RyaW5nKCkpOworICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIo
KS0+c3RvcEFsbExvYWRlcnMoKTsKKyAgICAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVy
KCktPnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5Tm9uZSk7CisgICAgfQorICAgIG1fd2lk
Z2V0Q2xpZW50LT5jbG9zZVdpZGdldFNvb24oKTsKKworICAgIG1fcG9wdXBDbGllbnQtPmRpZENs
b3NlUG9wdXAoKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShQQUdFX1BPUFVQKQogCiAvLyBXZWJQ
YWdlUG9wdXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1XZWJQYWdlUG9wdXAqIFdlYlBhZ2VQb3B1cDo6Y3JlYXRlKFdl
YldpZGdldENsaWVudCopCitXZWJQYWdlUG9wdXAqIFdlYlBhZ2VQb3B1cDo6Y3JlYXRlKFdlYldp
ZGdldENsaWVudCogY2xpZW50KQogewotICAgIC8vIEZJWE1FOiBSZXR1cm5zIGEgV2ViUGFnZVBv
cHVwSW1wbCBvYmplY3QuCisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAgQVNTRVJUKGNsaWVu
dCk7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybiAwOworICAgIC8vIFBhc3MgdGhl
IFdlYlBhZ2VQb3B1cEltcGwncyBzZWxmLXJlZmVyZW5jZSB0byB0aGUgY2FsbGVyLgorICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViUGFnZVBvcHVwSW1wbChjbGllbnQpKS5sZWFrUmVmKCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShjbGllbnQpOwogICAgIHJldHVybiAwOworI2VuZGlmCiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUGFnZVBvcHVwSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzNDM4NWZkMDMwYTQ3NzliMTY3YzkxNzIy
OWRmMGQ0YmMyOTQxMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJQYWdlUG9wdXBJbXBsLmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBhZ2VQ
b3B1cEltcGxfaAorI2RlZmluZSBXZWJQYWdlUG9wdXBJbXBsX2gKKworI2lmIEVOQUJMRShQQUdF
X1BPUFVQKQorCisjaW5jbHVkZSAiUGFnZVBvcHVwLmgiCisjaW5jbHVkZSAiUGFnZVdpZGdldERl
bGVnYXRlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBvcHVwLmgiCisjaW5jbHVkZSA8d3RmL093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFBhZ2U7CitjbGFzcyBQYWdlUG9wdXBDbGllbnQ7CitjbGFzcyBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYWdlUG9wdXBDaHJv
bWVDbGllbnQ7CitjbGFzcyBXZWJWaWV3SW1wbDsKKworY2xhc3MgV2ViUGFnZVBvcHVwSW1wbCA6
IHB1YmxpYyBXZWJQYWdlUG9wdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFBh
Z2VXaWRnZXRFdmVudEhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdl
YkNvcmU6OlBhZ2VQb3B1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgUmVmQ291
bnRlZDxXZWJQYWdlUG9wdXBJbXBsPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisK
K3B1YmxpYzoKKyAgICAvLyBDYWxsZWQgYnkgQ2hyb21lQ2xpZW50SW1wbDo6b3BlblBhZ2VQb3B1
cCgpLgorICAgIGJvb2wgaW5pdChXZWJWaWV3SW1wbCosIFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVu
dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGJvdW5kc0luU2NyZWVuKTsKKyAgICAvLyBDYWxs
ZWQgYnkgV2ViVmlld0ltcGwuCisgICAgYm9vbCBoYW5kbGVLZXlFdmVudChjb25zdCBXZWJDb3Jl
OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKTsKKyAgICB2b2lkIGNsb3NlUG9wdXAoKTsKKyAgICB2
aXJ0dWFsIH5XZWJQYWdlUG9wdXBJbXBsKCk7CisgICAgV2ViV2lkZ2V0Q2xpZW50KiB3aWRnZXRD
bGllbnQoKSBjb25zdCB7IHJldHVybiBtX3dpZGdldENsaWVudDsgfQorCitwcml2YXRlOgorICAg
IC8vIFdlYldpZGdldCBmdW5jdGlvbnMKKyAgICB2aXJ0dWFsIFdlYlNpemUgc2l6ZSgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGNvbXBvc2l0ZShib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5
b3V0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIGNvbnN0
IFdlYlJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzaXplKGNvbnN0IFdlYlNp
emUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgaGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpIE9WRVJSSURFOworCisgICAgLy8g
UGFnZVdpZGdldEV2ZW50SGFuZGxlciBmdW5jdGlvbnMKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxl
S2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBoYW5kbGVDaGFyRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpIE9WRVJSSURFOwor
I2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVy
ZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpIE9WRVJSSURFOworI2VuZGlmCisKKyAgICBX
ZWJQYWdlUG9wdXBJbXBsKFdlYldpZGdldENsaWVudCopOworICAgIGJvb2wgaW5pdFBhZ2UoKTsK
KworICAgIFdlYldpZGdldENsaWVudCogbV93aWRnZXRDbGllbnQ7CisgICAgV2ViUmVjdCBtX3dp
bmRvd1JlY3RJblNjcmVlbjsKKyAgICBXZWJWaWV3SW1wbCogbV93ZWJWaWV3OworICAgIE93blB0
cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CisgICAgT3duUHRyPFBhZ2VQb3B1cENocm9tZUNsaWVu
dD4gbV9jaHJvbWVDbGllbnQ7CisgICAgV2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50KiBtX3BvcHVw
Q2xpZW50OworCisgICAgZnJpZW5kIGNsYXNzIFdlYlBhZ2VQb3B1cDsKKyAgICBmcmllbmQgY2xh
c3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cisj
ZW5kaWYgLy8gRU5BQkxFKFBBR0VfUE9QVVApCisjZW5kaWYgLy8gV2ViUGFnZVBvcHVwSW1wbF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNDkwMzkz
ZjcwZWRjNGYyMzU5NGJlMzAyMzYwYjY4N2UwODQwNmVhZC4uMDIwZGQ2MzZlNzg4NDRkNzRjMWM3
N2I0YzY3NWUxYjA3ZTJmNGIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcApAQCAtODcsNiArODcsNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCIKKyNpbmNs
dWRlICJQYWdlV2lkZ2V0RGVsZWdhdGUuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRF
dmVudC5oIgpAQCAtMTI5LDYgKzEzMCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVk
ZSAiV2ViTWVkaWFQbGF5ZXJBY3Rpb24uaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZVBvcHVwSW1wbC5oIgogI2luY2x1ZGUgIldlYlBsdWdpbi5oIgogI2luY2x1ZGUg
IldlYlBsdWdpbkFjdGlvbi5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lckltcGwuaCIK
QEAgLTQ2MSwzNiArNDYzLDE0IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFRhYktleUN5Y2xlc1Ro
cm91Z2hFbGVtZW50cyhib29sIHZhbHVlKQogICAgICAgICBtX3BhZ2UtPnNldFRhYktleUN5Y2xl
c1Rocm91Z2hFbGVtZW50cyh2YWx1ZSk7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6Om1vdXNlTW92
ZShjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3ZvaWQgV2ViVmlld0ltcGw6OmhhbmRsZU1v
dXNlTGVhdmUoRnJhbWUmIG1haW5GcmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiB7
Ci0gICAgaWYgKCFtYWluRnJhbWVJbXBsKCkgfHwgIW1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFdlIGNhbGwgbW91c2VNb3ZlZCBoZXJlIGlu
c3RlYWQgb2YgaGFuZGxlTW91c2VNb3ZlZEV2ZW50IGJlY2F1c2Ugd2UgbmVlZAotICAgIC8vIG91
ciBDaHJvbWVDbGllbnRJbXBsIHRvIHJlY2VpdmUgY2hhbmdlcyB0byB0aGUgbW91c2UgcG9zaXRp
b24gYW5kCi0gICAgLy8gdG9vbHRpcCB0ZXh0LCBhbmQgbW91c2VNb3ZlZCBoYW5kbGVzIGFsbCBv
ZiB0aGF0LgotICAgIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPm1v
dXNlTW92ZWQoCi0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIobWFpbkZyYW1lSW1w
bCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpKTsKLX0KLQotdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VM
ZWF2ZShjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKLXsKLSAgICAvLyBUaGlzIGV2ZW50IGdl
dHMgc2VudCBhcyB0aGUgbWFpbiBmcmFtZSBpcyBjbG9zaW5nLiAgSW4gdGhhdCBjYXNlLCBqdXN0
Ci0gICAgLy8gaWdub3JlIGl0LgotICAgIGlmICghbWFpbkZyYW1lSW1wbCgpIHx8ICFtYWluRnJh
bWVJbXBsKCktPmZyYW1lVmlldygpKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX2NsaWVudC0+
c2V0TW91c2VPdmVyVVJMKFdlYlVSTCgpKTsKLQotICAgIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlTW92ZUV2ZW50KAotICAgICAgICBQbGF0Zm9y
bU1vdXNlRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KSk7
CisgICAgUGFnZVdpZGdldEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VMZWF2ZShtYWluRnJhbWUs
IGV2ZW50KTsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VEb3duKGNvbnN0IFdlYk1vdXNl
RXZlbnQmIGV2ZW50KQordm9pZCBXZWJWaWV3SW1wbDo6aGFuZGxlTW91c2VEb3duKEZyYW1lJiBt
YWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogewotICAgIGlmICghbWFpbkZy
YW1lSW1wbCgpIHx8ICFtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpKQotICAgICAgICByZXR1
cm47Ci0KICAgICAvLyBJZiB0aGVyZSBpcyBhIHNlbGVjdCBwb3B1cCBvcGVuLCBjbG9zZSBpdCBh
cyB0aGUgdXNlciBpcyBjbGlja2luZyBvbgogICAgIC8vIHRoZSBwYWdlIChvdXRzaWRlIG9mIHRo
ZSBwb3B1cCkuICBXZSBhbHNvIHNhdmUgaXQgc28gd2UgY2FuIHByZXZlbnQgYQogICAgIC8vIGNs
aWNrIG9uIHRoZSBzZWxlY3QgZWxlbWVudCBmcm9tIGltbWVkaWF0ZWx5IHJlb3BlbmluZyB0aGUg
cG9wdXAuCkBAIC01MTQsOCArNDk0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VEb3duKGNv
bnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgbV9tb3VzZUNhcHR1cmVOb2Rl
ID0gaGl0Tm9kZTsKICAgICB9CiAKLSAgICBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50
SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQoCi0gICAgICAgIFBsYXRmb3JtTW91c2VF
dmVudEJ1aWxkZXIobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpKTsKKyAgICBQ
YWdlV2lkZ2V0RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURvd24obWFpbkZyYW1lLCBldmVudCk7
CiAKICAgICBpZiAobV9zZWxlY3RQb3B1cCAmJiBtX3NlbGVjdFBvcHVwID09IHNlbGVjdFBvcHVw
KSB7CiAgICAgICAgIC8vIFRoYXQgY2xpY2sgdHJpZ2dlcmVkIGEgc2VsZWN0IHBvcHVwIHdoaWNo
IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgdGhhdApAQCAtNTY2LDExICs1NDUsOCBAQCB2b2lkIFdl
YlZpZXdJbXBsOjptb3VzZUNvbnRleHRNZW51KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQog
ICAgIC8vIGltcGxlbWVudGF0aW9uLi4uCiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6Om1vdXNlVXAo
Y29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCit2b2lkIFdlYlZpZXdJbXBsOjpoYW5kbGVNb3Vz
ZVVwKEZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogewotICAg
IGlmICghbWFpbkZyYW1lSW1wbCgpIHx8ICFtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpKQot
ICAgICAgICByZXR1cm47Ci0KICNpZiBPUyhVTklYKSAmJiAhT1MoREFSV0lOKQogICAgIC8vIElm
IHRoZSBldmVudCB3YXMgYSBtaWRkbGUgY2xpY2ssIGF0dGVtcHQgdG8gY29weSB0ZXh0IGludG8g
dGhlIGZvY3VzZWQKICAgICAvLyBmcmFtZS4gV2UgZXhlY3V0ZSB0aGlzIGJlZm9yZSB3ZSBsZXQg
dGhlIHBhZ2UgaGF2ZSBhIGdvIGF0IHRoZSBldmVudApAQCAtNjA4LDggKzU4NCw3IEBAIHZvaWQg
V2ViVmlld0ltcGw6Om1vdXNlVXAoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgfQog
I2VuZGlmCiAKLSAgICBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5o
YW5kbGVNb3VzZVJlbGVhc2VFdmVudCgKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRl
cihtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVudCkpOworICAgIFBhZ2VXaWRnZXRF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlVXAobWFpbkZyYW1lLCBldmVudCk7CiAKICNpZiBPUyhX
SU5ET1dTKQogICAgIC8vIERpc3BhdGNoIHRoZSBjb250ZXh0bWVudSBldmVudCByZWdhcmRsZXNz
IG9mIGlmIHRoZSBjbGljayB3YXMgc3dhbGxvd2VkLgpAQCAtNjE5LDEyICs1OTQsNiBAQCB2b2lk
IFdlYlZpZXdJbXBsOjptb3VzZVVwKGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogI2VuZGlm
CiB9CiAKLWJvb2wgV2ViVmlld0ltcGw6Om1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVlbEV2
ZW50JiBldmVudCkKLXsKLSAgICBQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyIHBsYXRmb3JtRXZl
bnQobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpOwotICAgIHJldHVybiBtYWlu
RnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVXaGVlbEV2ZW50KHBs
YXRmb3JtRXZlbnQpOwotfQotCiB2b2lkIFdlYlZpZXdJbXBsOjpzY3JvbGxCeShjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgZGVsdGEpCiB7CiAgICAgV2ViTW91c2VXaGVlbEV2ZW50IHN5bnRoZXRp
Y1doZWVsOwpAQCAtNjQxLDExICs2MTAsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2Nyb2xsQnko
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlbHRhKQogICAgIHN5bnRoZXRpY1doZWVsLmdsb2Jh
bFkgPSBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uLnk7CiAgICAgc3ludGhldGljV2hlZWwubW9k
aWZpZXJzID0gbV9mbGluZ01vZGlmaWVyOwogCi0gICAgbW91c2VXaGVlbChzeW50aGV0aWNXaGVl
bCk7CisgICAgaWYgKG1fcGFnZSAmJiBtX3BhZ2UtPm1haW5GcmFtZSgpICYmIG1fcGFnZS0+bWFp
bkZyYW1lKCktPnZpZXcoKSkKKyAgICAgICAgaGFuZGxlTW91c2VXaGVlbCgqbV9wYWdlLT5tYWlu
RnJhbWUoKSwgc3ludGhldGljV2hlZWwpOwogfQogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRT
KQotYm9vbCBXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYg
ZXZlbnQpCitib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2Vz
dHVyZUV2ZW50JiBldmVudCkKIHsKICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKICAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OiB7CkBAIC03MTYsNyArNjg2LDcgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQm
IHNjcm9sbCwgYm9vbCB1c2VBbmNob3IKIH0KICNlbmRpZgogCi1ib29sIFdlYlZpZXdJbXBsOjpr
ZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKK2Jvb2wgV2ViVmlld0ltcGw6
OmhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIEFT
U0VSVCgoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3duKQogICAgICAgICB8
fCAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpLZXlEb3duKQpAQCAtNzM4LDYgKzcwOCwx
NiBAQCBib29sIFdlYlZpZXdJbXBsOjprZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBl
dmVudCkKICAgICAvLyBub3QgdGhlIHBhZ2UuCiAgICAgaWYgKG1fc2VsZWN0UG9wdXApCiAgICAg
ICAgIHJldHVybiBtX3NlbGVjdFBvcHVwLT5oYW5kbGVLZXlFdmVudChQbGF0Zm9ybUtleWJvYXJk
RXZlbnRCdWlsZGVyKGV2ZW50KSk7CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAgaWYgKG1f
cGFnZVBvcHVwKSB7CisgICAgICAgIG1fcGFnZVBvcHVwLT5oYW5kbGVLZXlFdmVudChQbGF0Zm9y
bUtleWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50KSk7CisgICAgICAgIC8vIFdlIG5lZWQgdG8gaWdu
b3JlIHRoZSBuZXh0IENoYXIgZXZlbnQgYWZ0ZXIgdGhpcyBvdGhlcndpc2UgcHJlc3NpbmcKKyAg
ICAgICAgLy8gZW50ZXIgd2hlbiBzZWxlY3RpbmcgYW4gaXRlbSBpbiB0aGUgcG9wdXAgd2lsbCBn
byB0byB0aGUgcGFnZS4KKyAgICAgICAgaWYgKFdlYklucHV0RXZlbnQ6OlJhd0tleURvd24gPT0g
ZXZlbnQudHlwZSkKKyAgICAgICAgICAgIG1fc3VwcHJlc3NOZXh0S2V5cHJlc3NFdmVudCA9IHRy
dWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgogCiAgICAgLy8gR2l2ZSBB
dXRvY29tcGxldGUgYSBjaGFuY2UgdG8gY29uc3VtZSB0aGUga2V5IGV2ZW50cyBpdCBpcyBpbnRl
cmVzdGVkIGluLgogICAgIGlmIChhdXRvY29tcGxldGVIYW5kbGVLZXlFdmVudChldmVudCkpCkBA
IC04MzQsNyArODE0LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6YXV0b2NvbXBsZXRlSGFuZGxlS2V5
RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIFdlYlZpZXdJbXBsOjpjaGFyRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYg
ZXZlbnQpCitib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVDaGFyRXZlbnQoY29uc3QgV2ViS2V5Ym9h
cmRFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVu
dDo6Q2hhcik7CiAKQEAgLTg1MCw2ICs4MzAsMTAgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y2hhckV2
ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIC8vIG5vdCB0aGUgcGFnZS4K
ICAgICBpZiAobV9zZWxlY3RQb3B1cCkKICAgICAgICAgcmV0dXJuIG1fc2VsZWN0UG9wdXAtPmhh
bmRsZUtleUV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIoZXZlbnQpKTsKKyNpZiBF
TkFCTEUoUEFHRV9QT1BVUCkKKyAgICBpZiAobV9wYWdlUG9wdXApCisgICAgICAgIHJldHVybiBt
X3BhZ2VQb3B1cC0+aGFuZGxlS2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihl
dmVudCkpOworI2VuZGlmCiAKICAgICBGcmFtZSogZnJhbWUgPSBmb2N1c2VkV2ViQ29yZUZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTg4MCwxOCArODY0LDYgQEAgYm9vbCBXZWJWaWV3SW1w
bDo6Y2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiB0
cnVlOwogfQogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLWJvb2wgV2ViVmlld0ltcGw6OnRv
dWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgZXZlbnQpCi17Ci0gICAgaWYgKCFtYWluRnJh
bWVJbXBsKCkgfHwgIW1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIFBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIgdG91Y2hFdmVudEJ1aWxk
ZXIobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpOwotICAgIGJvb2wgZGVmYXVs
dFByZXZlbnRlZCA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhh
bmRsZVRvdWNoRXZlbnQodG91Y2hFdmVudEJ1aWxkZXIpOwotICAgIHJldHVybiBkZWZhdWx0UHJl
dmVudGVkOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiBXZWJSZWN0
IFdlYlZpZXdJbXBsOjpjb21wdXRlQmxvY2tCb3VuZHMoY29uc3QgV2ViUmVjdCYgcmVjdCwgQXV0
b1pvb21UeXBlIHpvb21UeXBlKQogewpAQCAtMTIxMiw2ICsxMTg0LDI1IEBAIHZvaWQgIFdlYlZp
ZXdJbXBsOjpwb3B1cENsb3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWlu
ZXIpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCit2b2lkIFdlYlZpZXdJbXBs
Ojpwb3B1cE9wZW5lZChXZWJQYWdlUG9wdXBJbXBsKiBwb3B1cCkKK3sKKyAgICBBU1NFUlQoIW1f
cGFnZVBvcHVwKTsKKyAgICBtX3BhZ2VQb3B1cCA9IHBvcHVwOworCisgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IGZvY3VzZWRXZWJDb3JlRnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5zZXRDYXJldFZpc2libGUoZmFsc2UpOworfQorCit2b2lkIFdlYlZpZXdJbXBsOjpwb3B1cENs
b3NlZChXZWJQYWdlUG9wdXBJbXBsKiBwb3B1cCkKK3sKKyAgICBBU1NFUlQobV9wYWdlUG9wdXAg
PT0gcG9wdXApOworICAgIG1fcGFnZVBvcHVwID0gMDsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0g
Zm9jdXNlZFdlYkNvcmVGcmFtZSgpKQorICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnBhZ2VB
Y3RpdmF0aW9uQ2hhbmdlZCgpOworfQorI2VuZGlmCisKIHZvaWQgV2ViVmlld0ltcGw6OmhpZGVB
dXRvZmlsbFBvcHVwKCkKIHsKICAgICBpZiAobV9hdXRvZmlsbFBvcHVwU2hvd2luZykgewpAQCAt
MTQxNSwzMiArMTQwNiwxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKGRv
dWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkKICAgICAgICAgICAgIG1fZ2VzdHVyZUFuaW1h
dGlvbi5jbGVhcigpOwogICAgIH0KIAotICAgIGRvdWJsZSB0aW1lU2hpZnQgPSBjdXJyZW50VGlt
ZSgpIC0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Ci0gICAgdmlldy0+c2VydmljZVNj
cmlwdGVkQW5pbWF0aW9ucyhjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKG1vbm90b25pY0Zy
YW1lQmVnaW5UaW1lICsgdGltZVNoaWZ0KSk7CisgICAgUGFnZVdpZGdldERlbGVnYXRlOjphbmlt
YXRlKG1fcGFnZS5nZXQoKSwgbW9ub3RvbmljRnJhbWVCZWdpblRpbWUpOwogI2VuZGlmCiB9CiAK
IHZvaWQgV2ViVmlld0ltcGw6OmxheW91dCgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIldlYlZpZXdJ
bXBsOjpsYXlvdXQiLCB0aGlzLCAwKTsKLQotICAgIFdlYkZyYW1lSW1wbCogd2ViZnJhbWUgPSBt
YWluRnJhbWVJbXBsKCk7Ci0gICAgaWYgKHdlYmZyYW1lKSB7Ci0gICAgICAgIC8vIEluIG9yZGVy
IGZvciBvdXIgY2hpbGQgSFdORHMgKE5hdGl2ZVdpbmRvd1dpZGdldHMpIHRvIHVwZGF0ZSBwcm9w
ZXJseSwKLSAgICAgICAgLy8gdGhleSBuZWVkIHRvIGJlIHRvbGQgdGhhdCB3ZSBhcmUgdXBkYXRp
bmcgdGhlIHNjcmVlbi4gIFRoZSBwcm9ibGVtIGlzCi0gICAgICAgIC8vIHRoYXQgdGhlIG5hdGl2
ZSB3aWRnZXRzIG5lZWQgdG8gcmVjYWxjdWxhdGUgdGhlaXIgY2xpcCByZWdpb24gYW5kIG5vdAot
ICAgICAgICAvLyBvdmVybGFwIGFueSBvZiBvdXIgbm9uLW5hdGl2ZSB3aWRnZXRzLiAgVG8gZm9y
Y2UgdGhlIHJlc2l6aW5nLCBjYWxsCi0gICAgICAgIC8vIHNldEZyYW1lUmVjdCgpLiAgVGhpcyB3
aWxsIGJlIGEgcXVpY2sgb3BlcmF0aW9uIGZvciBtb3N0IGZyYW1lcywgYnV0Ci0gICAgICAgIC8v
IHRoZSBOYXRpdmVXaW5kb3dXaWRnZXRzIHdpbGwgdXBkYXRlIGEgcHJvcGVyIGNsaXBwaW5nIHJl
Z2lvbi4KLSAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gd2ViZnJhbWUtPmZyYW1lVmlldygpOwot
ICAgICAgICBpZiAodmlldykKLSAgICAgICAgICAgIHZpZXctPnNldEZyYW1lUmVjdCh2aWV3LT5m
cmFtZVJlY3QoKSk7Ci0KLSAgICAgICAgLy8gc2V0RnJhbWVSZWN0IG1heSBoYXZlIHRoZSBzaWRl
LWVmZmVjdCBvZiBjYXVzaW5nIGV4aXN0aW5nIHBhZ2UKLSAgICAgICAgLy8gbGF5b3V0IHRvIGJl
IGludmFsaWRhdGVkLCBzbyBsYXlvdXQgbmVlZHMgdG8gYmUgY2FsbGVkIGxhc3QuCi0KLSAgICAg
ICAgd2ViZnJhbWUtPmxheW91dCgpOwotICAgIH0KKyAgICBQYWdlV2lkZ2V0RGVsZWdhdGU6Omxh
eW91dChtX3BhZ2UuZ2V0KCkpOwogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQpAQCAtMTQ5Myw5ICsxNDY2LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cGFpbnQoV2ViQ2FudmFz
KiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3QpCiAjZW5kaWYKICAgICB9IGVsc2UgewogICAg
ICAgICBkb3VibGUgcGFpbnRTdGFydCA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgICAgIFdlYkZyYW1l
SW1wbCogd2ViZnJhbWUgPSBtYWluRnJhbWVJbXBsKCk7Ci0gICAgICAgIGlmICh3ZWJmcmFtZSkK
LSAgICAgICAgICAgIHdlYmZyYW1lLT5wYWludChjYW52YXMsIHJlY3QpOworICAgICAgICBQYWdl
V2lkZ2V0RGVsZWdhdGU6OnBhaW50KG1fcGFnZS5nZXQoKSwgcGFnZU92ZXJsYXlzKCksIGNhbnZh
cywgcmVjdCk7CiAgICAgICAgIGRvdWJsZSBwYWludEVuZCA9IGN1cnJlbnRUaW1lKCk7CiAgICAg
ICAgIGRvdWJsZSBwaXhlbHNQZXJTZWMgPSAocmVjdC53aWR0aCAqIHJlY3QuaGVpZ2h0KSAvIChw
YWludEVuZCAtIHBhaW50U3RhcnQpOwogICAgICAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50
KCktPmhpc3RvZ3JhbUN1c3RvbUNvdW50cygiUmVuZGVyZXI0LlNvZnR3YXJlUGFpbnREdXJhdGlv
bk1TIiwgKHBhaW50RW5kIC0gcGFpbnRTdGFydCkgKiAxMDAwLCAwLCAxMjAsIDMwKTsKQEAgLTE2
NTIsNzkgKzE2MjMsOCBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0
IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIGJvb2wgaGFuZGxlZCA9IHRydWU7Ci0KLSAgICAvLyBGSVhNRTogV2ViS2l0IHNlZW1z
IHRvIGFsd2F5cyByZXR1cm4gZmFsc2Ugb24gbW91c2UgZXZlbnRzIHByb2Nlc3NpbmcKLSAgICAv
LyBtZXRob2RzLiBGb3Igbm93IHdlJ2xsIGFzc3VtZSBpdCBoYXMgcHJvY2Vzc2VkIHRoZW0gKGFz
IHdlIGFyZSBvbmx5Ci0gICAgLy8gaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGtleWJvYXJkIGV2ZW50
cyBhcmUgcHJvY2Vzc2VkKS4KLSAgICBzd2l0Y2ggKGlucHV0RXZlbnQudHlwZSkgewotICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6TW91c2VNb3ZlOgotICAgICAgICBtb3VzZU1vdmUoKnN0YXRpY19j
YXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQqPigmaW5wdXRFdmVudCkpOwotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VMZWF2ZToKLSAgICAgICAgbW91c2VMZWF2
ZSgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCo+KCZpbnB1dEV2ZW50KSk7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsOgotICAgICAg
ICBoYW5kbGVkID0gbW91c2VXaGVlbCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VXaGVlbEV2
ZW50Kj4oJmlucHV0RXZlbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Ok1vdXNlRG93bjoKLSAgICAgICAgbW91c2VEb3duKCpzdGF0aWNfY2FzdDxjb25zdCBX
ZWJNb3VzZUV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Ok1vdXNlVXA6Ci0gICAgICAgIG1vdXNlVXAoKnN0YXRpY19jYXN0PGNv
bnN0IFdlYk1vdXNlRXZlbnQqPigmaW5wdXRFdmVudCkpOwotICAgICAgICBicmVhazsKLQotICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bjoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6
OktleURvd246Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpLZXlVcDoKLSAgICAgICAgaGFuZGxl
ZCA9IGtleUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJLZXlib2FyZEV2ZW50Kj4oJmlucHV0
RXZlbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6OkNoYXI6
Ci0gICAgICAgIGhhbmRsZWQgPSBjaGFyRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYktleWJv
YXJkRXZlbnQqPigmaW5wdXRFdmVudCkpOwotICAgICAgICBicmVhazsKLQotI2lmIEVOQUJMRShH
RVNUVVJFX0VWRU5UUykKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdp
bjoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6Ci0gICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOgotICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZUZsaW5nU3RhcnQ6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxp
bmdDYW5jZWw6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOgotICAgIGNhc2Ug
V2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcERvd246Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlRG91YmxlVGFwOgotICAgICAgICBoYW5kbGVkID0gZ2VzdHVyZUV2ZW50KCpzdGF0aWNf
Y2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmaW5wdXRFdmVudCkpOwotICAgICAgICBicmVh
azsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBjYXNlIFdlYklucHV0
RXZlbnQ6OlRvdWNoU3RhcnQ6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaE1vdmU6Ci0g
ICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaEVuZDoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6
OlRvdWNoQ2FuY2VsOgotICAgICAgICBoYW5kbGVkID0gdG91Y2hFdmVudCgqc3RhdGljX2Nhc3Q8
Y29uc3QgV2ViVG91Y2hFdmVudCo+KCZpbnB1dEV2ZW50KSk7Ci0gICAgICAgIGJyZWFrOwotI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCi0gICAgY2FzZSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlUGluY2hCZWdpbjoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5j
aEVuZDoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZToKLSAgICAg
ICAgLy8gRklYTUU6IE9uY2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQgaXMgdXBkYXRlZCB0byBzdXBw
b3J0IHBpbmNoLCB0aGlzIHNob3VsZCBjYWxsIGhhbmRsZUdlc3R1cmVFdmVudCwganVzdCBsaWtl
IGl0IGN1cnJlbnRseSBkb2VzIGZvciBnZXN0dXJlIHNjcm9sbC4KLSAgICAgICAgaGFuZGxlZCA9
IGZhbHNlOwotICAgICAgICBicmVhazsKLSNlbmRpZgotCi0gICAgZGVmYXVsdDoKLSAgICAgICAg
aGFuZGxlZCA9IGZhbHNlOwotICAgIH0KLQorICAgIGJvb2wgaGFuZGxlZCA9IFBhZ2VXaWRnZXRE
ZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0aGlzLCBpbnB1dEV2ZW50
KTsKICAgICBtX2N1cnJlbnRJbnB1dEV2ZW50ID0gMDsKLQogICAgIHJldHVybiBoYW5kbGVkOwog
fQogCkBAIC0xNzYzLDggKzE2NjMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRGb2N1cyhib29s
IGVuYWJsZSkKICAgICAgICAgfQogICAgICAgICBtX2ltZUFjY2VwdEV2ZW50cyA9IHRydWU7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgaGlkZUF1dG9maWxsUG9wdXAoKTsKLSAgICAgICAgaGlkZVNl
bGVjdFBvcHVwKCk7CisgICAgICAgIGhpZGVQb3B1cHMoKTsKIAogICAgICAgICAvLyBDbGVhciBm
b2N1cyBvbiB0aGUgY3VycmVudGx5IGZvY3VzZWQgZnJhbWUgaWYgYW55LgogICAgICAgICBpZiAo
IW1fcGFnZSkKQEAgLTI4NTMsNiArMjc1MiwxMyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpoaWRlUG9w
dXBzKCkKIHsKICAgICBoaWRlU2VsZWN0UG9wdXAoKTsKICAgICBoaWRlQXV0b2ZpbGxQb3B1cCgp
OworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorICAgIGlmIChtX3BhZ2VQb3B1cCkgeworICAgICAg
ICBXZWJQYWdlUG9wdXBJbXBsKiBwYWdlUG9wdXAgPSBtX3BhZ2VQb3B1cC5nZXQoKTsKKyAgICAg
ICAgcG9wdXBDbG9zZWQocGFnZVBvcHVwKTsKKyAgICAgICAgcGFnZVBvcHVwLT5jbG9zZVBvcHVw
KCk7CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnBlcmZvcm1DdXN0b21D
b250ZXh0TWVudUFjdGlvbih1bnNpZ25lZCBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaAppbmRleCBiOTJkNjM5YTBkYzEzODIwN2VlY2ZkNjc3ZmQ4ZWU3MmRi
ZDdhZDNjLi45NjBlYTIxN2U0NmQxOTk3ZWMzZWY5Mzc5ZDM5ZGUwYzFjNjgyYmRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTUyLDYgKzUyLDcgQEAKICNp
bmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5o
IgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5TGlzdC5oIgorI2luY2x1ZGUgIlBhZ2VXaWRnZXREZWxl
Z2F0ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgiCiAjaW5jbHVk
ZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTk1
LDYgKzk2LDcgQEAgY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKIGNsYXNzIFdlYkRldlRv
b2xzQWdlbnRQcml2YXRlOwogY2xhc3MgV2ViRnJhbWVJbXBsOwogY2xhc3MgV2ViR2VzdHVyZUV2
ZW50OworY2xhc3MgV2ViUGFnZVBvcHVwSW1wbDsKIGNsYXNzIFdlYkltYWdlOwogY2xhc3MgV2Vi
S2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CkBAIC0xMDIsNyArMTA0LDcgQEAg
Y2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50OwogY2xhc3MgV2ViU2V0dGluZ3NJbXBsOwogY2xhc3Mg
V2ViVG91Y2hFdmVudDsKIAotY2xhc3MgV2ViVmlld0ltcGwgOiBwdWJsaWMgV2ViVmlldywgcHVi
bGljIFdlYkxheWVyVHJlZVZpZXdDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZXdJbXBs
PiwgcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IHsKK2NsYXNzIFdl
YlZpZXdJbXBsIDogcHVibGljIFdlYlZpZXcsIHB1YmxpYyBXZWJMYXllclRyZWVWaWV3Q2xpZW50
LCBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3SW1wbD4sIHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZVRhcmdldCwgcHVibGljIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXIgewogcHVi
bGljOgogICAgIGVudW0gQXV0b1pvb21UeXBlIHsKICAgICAgICAgRG91YmxlVGFwLApAQCAtMzMw
LDE4ICszMzIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBvYnNlcnZlTmV3TmF2aWdhdGlvbigpOwog
CiAgICAgLy8gRXZlbnQgcmVsYXRlZCBtZXRob2RzOgotICAgIHZvaWQgbW91c2VNb3ZlKGNvbnN0
IFdlYk1vdXNlRXZlbnQmKTsKLSAgICB2b2lkIG1vdXNlTGVhdmUoY29uc3QgV2ViTW91c2VFdmVu
dCYpOwotICAgIHZvaWQgbW91c2VEb3duKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKLSAgICB2b2lk
IG1vdXNlVXAoY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIHZvaWQgbW91c2VDb250ZXh0TWVu
dShjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgdm9pZCBtb3VzZURvdWJsZUNsaWNrKGNvbnN0
IFdlYk1vdXNlRXZlbnQmKTsKLSAgICBib29sIG1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVl
bEV2ZW50Jik7Ci0gICAgYm9vbCBnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7
CiAgICAgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBuZXdTY2FsZSwgZG91Ymxl
IGR1cmF0aW9uU2VjKTsKLSAgICBib29sIGtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQm
KTsKLSAgICBib29sIGNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7Ci0gICAgYm9v
bCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKIAogICAgIHZvaWQgbnVtYmVyT2ZX
aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKTsKICAgICB2b2lkIG51bWJlck9mVG91
Y2hFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCk7CkBAIC00NTEsNiArNDQ0LDEwIEBAIHB1
YmxpYzoKICAgICAvLyBOb3RpZmljYXRpb24gdGhhdCBhIHBvcHVwIHdhcyBvcGVuZWQvY2xvc2Vk
LgogICAgIHZvaWQgcG9wdXBPcGVuZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29u
dGFpbmVyKTsKICAgICB2b2lkIHBvcHVwQ2xvc2VkKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBw
b3B1cENvbnRhaW5lcik7CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAgdm9pZCBwb3B1cE9w
ZW5lZChXZWJQYWdlUG9wdXBJbXBsKik7CisgICAgdm9pZCBwb3B1cENsb3NlZChXZWJQYWdlUG9w
dXBJbXBsKik7CisjZW5kaWYKIAogICAgIHZvaWQgaGlkZUF1dG9maWxsUG9wdXAoKTsKIApAQCAt
NDg5LDYgKzQ4NiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2liaWxpdHlT
dGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlLCBib29sKTsKIAogICAgIFdlYkNvcmU6OlBvcHVw
Q29udGFpbmVyKiBzZWxlY3RQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0UG9wdXAuZ2V0
KCk7IH0KKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBib29sIGhhc09wZW5lZFBvcHVwKCkg
Y29uc3QgeyByZXR1cm4gbV9zZWxlY3RQb3B1cCB8fCBtX3BhZ2VQb3B1cDsgfQorI2Vsc2UKKyAg
ICBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RQb3B1cDsgfQor
I2VuZGlmCiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IGxlYWRzIHRvIHNjcm9s
bGluZy4KICAgICBzdGF0aWMgYm9vbCBtYXBLZXlDb2RlRm9yU2Nyb2xsKGludCBrZXlDb2RlLApA
QCAtNTkxLDYgKzU5MywxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9pbnRlckxvY2tNb3VzZUV2
ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmKTsKICNlbmRpZgogCisgICAgLy8gUGFnZVdpZGdldEV2
ZW50SGFuZGxlciBmdW5jdGlvbnMKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91c2VMZWF2ZShX
ZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlTW91c2VEb3duKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViTW91c2VF
dmVudCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZVVwKFdlYkNvcmU6
OkZyYW1lJiwgY29uc3QgV2ViTW91c2VFdmVudCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlQ2hhckV2ZW50KGNvbnN0IFdlYktleWJv
YXJkRXZlbnQmKSBPVkVSUklERTsKKwogICAgIFdlYlZpZXdDbGllbnQqIG1fY2xpZW50OwogICAg
IFdlYkF1dG9maWxsQ2xpZW50KiBtX2F1dG9maWxsQ2xpZW50OwogICAgIFdlYlBlcm1pc3Npb25D
bGllbnQqIG1fcGVybWlzc2lvbkNsaWVudDsKQEAgLTY5Miw2ICs3MDIsMTEgQEAgcHJpdmF0ZToK
ICAgICAvLyBUaGUgcG9wdXAgYXNzb2NpYXRlZCB3aXRoIGEgc2VsZWN0IGVsZW1lbnQuCiAgICAg
UmVmUHRyPFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyPiBtX3NlbGVjdFBvcHVwOwogCisjaWYgRU5B
QkxFKFBBR0VfUE9QVVApCisgICAgLy8gVGhlIHBvcHVwIGFzc29jaWF0ZWQgd2l0aCBhbiBpbnB1
dCBlbGVtZW50LgorICAgIFJlZlB0cjxXZWJQYWdlUG9wdXBJbXBsPiBtX3BhZ2VQb3B1cDsKKyNl
bmRpZgorCiAgICAgT3duUHRyPFdlYkRldlRvb2xzQWdlbnRQcml2YXRlPiBtX2RldlRvb2xzQWdl
bnQ7CiAgICAgT3duUHRyPFBhZ2VPdmVybGF5TGlzdD4gbV9wYWdlT3ZlcmxheXM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136813</attachid>
            <date>2012-04-11 20:06:59 -0700</date>
            <delta_ts>2012-04-11 20:23:15 -0700</delta_ts>
            <desc>Patch 3</desc>
            <filename>bug-81081-20120412120656.patch</filename>
            <type>text/plain</type>
            <size>53987</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzOTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDFiYmE5NTVjOTQxMzEzMjI0NDU3NTg0ZDFhMTgwMWFmYmJiYWFlMmMuLmIyN2Y4NTU2MzZkMDVk
YjBhYjQ1NmY1MGE3OTJlNTMwOTFiYjRjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTA3IEBACisyMDEyLTA0LTExICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEFkZCBQYWdlUG9wdXAgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMDgxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYlBh
Z2VQb3B1cEltcGwgY2xhc3MsIHdoaWNoIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mCisgICAgICAg
IFdlYkNvcmU6OlBhZ2VQb3B1cCBpbnRlcmZhY2UgYW5kIFdlYktpdDo6V2ViUGFnZVBvcHVwIGlu
dGVyZmFjZS4gSXQncyBhCisgICAgICAgIFdlYldpZGdldCB3aGljaCBoYXMgYSBQYWdlIG9iamVj
dC4KKworICAgICAgICBJbiBvcmRlciB0byBzaGFyZSBjb2RlIGluIFdlYlZpZXdJbXBsIGFuZCBX
ZWJQYWdlUG9wdXBJbXBsLCB3ZSBtb3ZlIHNvbWUKKyAgICAgICAgY29kZSBvZiBXZWJWaWV3SW1w
bCBhbmQgV2ViRnJhbWVJbXBsIHRvIFBhZ2VXaWRnZXREZWxlZ2F0ZS4KKyAgICAgICAgUGFnZVdp
ZGdldERlbGVnYXRlIGlzIGEgc2V0IG9mIHN0YXRpYyBmdW5jdGlvbnMgYmVjYXVzZSB3ZSBjYW4n
dCB1c2UKKyAgICAgICAgdmlydHVhbCBpbmhlcml0YW5jZSBpbiB0aGlzIGNhc2UgYW5kIHdlIGRv
bid0IHdhbnQgdG8gbW92ZSBXZWJWaWV3J3MKKyAgICAgICAgZGF0YSBtZW1iZXJzIHRvIGFub3Ro
ZXIgY2xhc3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBtYWtlcyBubyBi
ZWhhdmlvciBjaGFuZ2UgeWV0LgorCisgICAgICAgICogV2ViS2l0Lmd5cDogQWRkIFBhZ2VXaWRn
ZXREZWxlZ2F0ZS57Y3BwLGh9IGFuZCBXZWJQYWdlUG9wdXBJbXBsLmguCisgICAgICAgICogc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBs
OjpoYXNPcGVuZWRQb3B1cCk6IFN1cHBvcnRzIHRoZSBQYWdlUG9wdXAuCisgICAgICAgIChXZWJL
aXQ6OkNocm9tZUNsaWVudEltcGw6Om9wZW5QYWdlUG9wdXApOgorICAgICAgICBqdXN0IGRlbGVn
YXRlIHRvIFdlYlZpZXdJbXBsOjpvcGVuUGFnZVBvcHVwKCkuCisgICAgICAgIChXZWJLaXQ6OkNo
cm9tZUNsaWVudEltcGw6OmNsb3NlUGFnZVBvcHVwKTogZGl0dG8uCisgICAgICAgICogc3JjL1Bh
Z2VXaWRnZXREZWxlZ2F0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjptYWluRnJhbWVW
aWV3KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdldERlbGVnYXRlOjphbmltYXRlKToKKyAg
ICAgICAgTW92ZWQgZnJvbSBhIHBhcnQgb2YgV2ViVmlld0ltcGw6OmFuaW1hdGllKCkKKyAgICAg
ICAgKFdlYktpdDo6UGFnZVdpZGdldERlbGVnYXRlOjpsYXlvdXQpOgorICAgICAgICBNb3ZlZCBm
cm9tIFdlYlZpZXdJbXBsOjpsYXlvdXQoKSBhbmQgV2ViRnJhbWVJbXBsOjpsYXlvdXQoKS4KKyAg
ICAgICAgKFdlYktpdDo6UGFnZVdpZGdldERlbGVnYXRlOjpwYWludCk6CisgICAgICAgIE1vdmVk
IGZyb20gV2ViRnJhbWVJbXBsOjpwYWludCgpIGFuZCBwYWludFdpdGhDb250ZXh0KCkuCisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAg
ICAgIE1vdmVkIGZyb20gYSBwYXJ0IG9mIFdlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KCku
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92
ZSk6CisgICAgICAgIENvbW1vbiBpbXBsZW1lbnRhdGlvbiBvZiBhbiBldmVudCBoYW5kbGluZy4K
KyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdldEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VMZWF2
ZSk6IGRpdHRvLgorICAgICAgICAoV2ViS2l0OjpQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZURvd24pOiBkaXR0by4KKyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdldEV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VVcCk6IGRpdHRvLgorICAgICAgICAoV2ViS2l0OjpQYWdlV2lkZ2V0
RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVdoZWVsKTogZGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OlBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOiBkaXR0by4KKyAgICAg
ICAgKiBzcmMvUGFnZVdpZGdldERlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJG
cmFtZUltcGwuY3BwOgorICAgICAgICBSZW1vdmUgbGF5b3V0KCksIHBhaW50V2l0aENvbnRleHQo
KSwgYW5kIHBhaW50KCkuIFRoZXkgYXJlIG1vdmVkIHRvCisgICAgICAgIFBhZ2VXaWRnZXREZWxl
Z2F0ZS4KKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisgICAgICAgIChXZWJGcmFtZUlt
cGwpOiBSZW1vdmUgbGF5b3V0KCksIHBhaW50V2l0aENvbnRleHQoKSwgYW5kIHBhaW50KCkuCisK
KyAgICAgICAgKiBzcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHA6CisgICAgICAgIChQYWdlUG9wdXBD
aHJvbWVDbGllbnQpOgorICAgICAgICBUaGlzIGlzIGEgbGlnaHQgaW1wbGVtZW50YXRpb24gb2Yg
Q2hyb21lQ2xpZW50IGZvciB0aGUgcGFnZSBpbgorICAgICAgICBXZWJQYWdlUG9wdXBJbXBsLiBU
aGlzIGlzIGEgZnJpZW5kIG9mIFdlYlBhZ2VQb3B1cEltcGwgYmVjYXNlIG9mIGVhc2Ugb2YKKyAg
ICAgICAgYWNjZXNzIHRvIGl0cyBtZW1iZXJzLgorICAgICAgICAoV2ViS2l0OjpQYWdlUG9wdXBD
aHJvbWVDbGllbnQ6OlBhZ2VQb3B1cENocm9tZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQb3B1cEltcGw6OldlYlBhZ2VQb3B1cEltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUG9wdXBJbXBsOjp+V2ViUGFnZVBvcHVwSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQb3B1cEltcGw6OmluaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpp
bml0UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OnNpemUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjphbmltYXRlKTogQ2FsbHMgUGFnZVdpZGdl
dERlbGVnYXRlOjphbmltYXRlKCkuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6
OmNvbXBvc2l0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmxheW91dCk6
IENhbGxzIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6bGF5b3V0KCkuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQb3B1cEltcGw6OnBhaW50KTogQ2FsbHMgUGFnZVdpZGdldERlbGVnYXRlOjpwYWludCgp
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpyZXNpemUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpoYW5kbGVLZXlFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUNoYXJFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUG9wdXBJbXBsOjpzZXRGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1
cEltcGw6OmNsb3NlKTogRGVsZXRlIHRoZSBwYWdlLCBhbmQga2lsbCBpdHNlbGYuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmNsb3NlUG9wdXApOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUG9wdXA6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYlBhZ2VQb3B1cEltcGwu
aDogQWRkZWQuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOiBJbml0aWFsaXplIG1fcGFnZVBvcHVwLgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlTW91c2VMZWF2ZSk6CisgICAgICAg
IFJlbmFtZWQgZnJvbSBtb3VzZUxlYXZlKCksIHVzZSBQYWdlV2lkZ2V0RGVsZWdhdGU6OmhhbmRs
ZU1vdXNlTGVhdmUoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRsZU1vdXNl
RG93bik6CisgICAgICAgIFJlbmFtZWQgZnJvbSBtb3VzZURvd24oKSwgdXNlIFBhZ2VXaWRnZXRE
ZWxlZ2F0ZTo6aGFuZGxlTW91c2VEb3duKCkuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpoYW5kbGVNb3VzZVVwKToKKyAgICAgICAgUmVuYW1lZCBmcm9tIG1vdXNlVXAoKSwgdXNlIFBh
Z2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlTW91c2VVcCgpLgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2Nyb2xsQnkpOiBDYWxscyByZW5hbWVkIGhhbmRsZU1vdXNlV2hlZWwoKS4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRsZUdlc3R1cmVFdmVudCk6IFJlbmFtZWQg
ZnJvbSBnZXN0dXJlRXZlbnQoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRs
ZUtleUV2ZW50KToKKyAgICAgICAgUmVuYW1lZCBmcm9tIGtleUV2ZW50KCkuIEZvcndhcmQga2V5
IGV2ZW50cyB0byBhIFBhZ2VQb3B1cCBpZiBpdCBpcyBvcGVuLgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6aGFuZGxlQ2hhckV2ZW50KToKKyAgICAgICAgUmVuYW1lZCBmcm9tIGNoYXJF
dmVudCgpLiBGb3J3YXJkIGNoYXIgZXZlbnRzIHRvIGEgUGFnZVBvcHVwIGlmIGl0IGlzIG9wZW4u
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpvcGVuUGFnZVBvcHVwKToKKyAgICAgICAg
QWRkZWQuIEluc3RhbnRpYXRlIGEgV2ViUGFnZVBvcHVwSW1wbCwgY2FsY3VsYXRlcyBhIGdvb2Qg
Ym91bmRpbmcKKyAgICAgICAgcmVjdGFuZ2xlIG9mIHRoZSBwYWdlIHBvcHVwIGZyb20gdGhlIHNw
ZWNpZmllZCBlbGVtZW50IHJlY3RhbmdsZSwKKyAgICAgICAgaW5pdGlhbGl6ZSB0aGUgV2ViUGFn
ZVBvcHVwSW1wbCwgYW5kIHN0b3AgY2FyZXQgYmxpbmsuCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpjbG9zZVBhZ2VQb3B1cCk6CisgICAgICAgIENsb3NlIHRoZSBwb3B1cCwgY2xlYXIg
bV9wYWdlUG9wdXAsIGFuZCByZXN1bWUgY2FyZXQgYmxpbmsuCisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKTogVXNlcyBQYWdlV2lkZ2V0RGVsZWdhdGU6OmFu
aW1hdGUoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmxheW91dCk6IFVzZXMgUGFn
ZVdpZGdldERlbGVnYXRlOjpsYXlvdXQoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnBhaW50KTogVXNlcyBQYWdlV2lkZ2V0RGVsZWdhdGU6OnBhaW50KCkuCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KTogVXNlcyBQYWdlV2lkZ2V0RGVsZWdh
dGU6OmhhbmRsZUlucHV0RXZlbnQoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNl
dEZvY3VzKTogSGlkZSBhbGwgdGhlIHBvcHVwcy4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OmhpZGVQb3B1cHMpOiBIaWRlIHRoZSBwYWdlIHBvcHVwIHRvby4KKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omhhc09wZW5lZFBv
cHVwKTogQ2hlY2tzIHRoZSBwYWdlIHBvcHVwIHRvby4KKwogMjAxMi0wNC0xMSAgRGF2aWQgRG9y
d2luICA8ZGRvcndpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGtleVN5c3RlbSBhdHRy
aWJ1dGUgdG8gY2FuUGxheVR5cGUoKSBmb3IgRW5jcnlwdGVkIE1lZGlhIEV4dGVuc2lvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBkNmE3ZjcxMzYxYzMwOTgxMTkxNGEyMzJlZGJm
MmViMDA1Yzg3ZjhmLi5iY2VmZmFhMzlmNjMzMzAxNjNmYzA3MDY2OGY5YzI0NGI3ZGM0MmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC00NTgsNiArNDU4LDggQEAKICAgICAgICAg
ICAgICAgICAnc3JjL1BhZ2VPdmVybGF5LmgnLAogICAgICAgICAgICAgICAgICdzcmMvUGFnZU92
ZXJsYXlMaXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9QYWdlT3ZlcmxheUxpc3QuaCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9QYWdlV2lkZ2V0RGVsZWdhdGUuY3BwJywKKyAgICAgICAg
ICAgICAgICAnc3JjL1BhZ2VXaWRnZXREZWxlZ2F0ZS5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Q
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1BsYXRm
b3JtU3VwcG9ydC5jcHAnLApAQCAtNjExLDYgKzYxMyw3IEBACiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJOb3RpZmljYXRpb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk9wdGlvbkVs
ZW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwJywK
KyAgICAgICAgICAgICAgICAnc3JjL1dlYlBhZ2VQb3B1cEltcGwuaCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJQYWdlU2VyaWFsaXplci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
UGFnZVNlcmlhbGl6ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQYWdlU2Vy
aWFsaXplckltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuY3BwCmluZGV4IDQyNzM1YTQ2ZDkyZTFjMDg3MDA2NmJmOWI0Y2Y5ZDlkMzViM2Fm
ZDYuLjE5OTJjZDRhYWFmNjVkZDkxZjUwNjFjZGY5MzVhMjhmYTAwNWIxZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC05NzcsNyAr
OTc3LDcgQEAgYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93
c01lbnVXcml0aW5nRGlyZWN0aW9uKCkKIAogYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpoYXNPcGVu
ZWRQb3B1cCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICEhbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgp
OworICAgIHJldHVybiBtX3dlYlZpZXctPmhhc09wZW5lZFBvcHVwKCk7CiB9CiAKIFBhc3NSZWZQ
dHI8UG9wdXBNZW51PiBDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51
Q2xpZW50KiBjbGllbnQpIGNvbnN0CkBAIC05OTQsMTUgKzk5NCwxNCBAQCBQYXNzUmVmUHRyPFNl
YXJjaFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBv
cHVwTWVudUNsaQogfQogCiAjaWYgRU5BQkxFKFBBR0VfUE9QVVApCi1QYWdlUG9wdXAqIENocm9t
ZUNsaWVudEltcGw6Om9wZW5QYWdlUG9wdXAoUGFnZVBvcHVwQ2xpZW50KiwgY29uc3QgSW50UmVj
dCYpCitQYWdlUG9wdXAqIENocm9tZUNsaWVudEltcGw6Om9wZW5QYWdlUG9wdXAoUGFnZVBvcHVw
Q2xpZW50KiBjbGllbnQsIGNvbnN0IEludFJlY3QmIG9yaWdpbkJvdW5kc0luUm9vdFZpZXcpCiB7
Ci0gICAgLy8gRklYTUU6IEltcGVsZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbV93ZWJWaWV3LT5vcGVuUGFnZVBvcHVwKGNsaWVudCwgb3JpZ2luQm91bmRzSW5Sb290Vmll
dyk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Y2xvc2VQYWdlUG9wdXAoUGFnZVBvcHVw
KikKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Y2xvc2VQYWdlUG9wdXAoUGFnZVBvcHVwKiBwb3B1
cCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgbV93ZWJWaWV3LT5jbG9z
ZVBhZ2VQb3B1cChwb3B1cCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1BhZ2VXaWRnZXREZWxlZ2F0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2NiZDg3ZjcwMWRl
YzMwMjljYTU4OTRiY2E5NWExY2Y1ZGRkNjJiYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1BhZ2VXaWRnZXREZWxlZ2F0ZS5jcHAKQEAgLTAsMCArMSwyMjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFnZVdpZGdldERlbGVnYXRlLmgiCisK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIlBh
Z2VPdmVybGF5TGlzdC5oIgorI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKKyNpbmNsdWRlICJX
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oIgorI2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29u
dGV4dEJ1aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgaW5saW5lIEZy
YW1lVmlldyogbWFpbkZyYW1lVmlldyhQYWdlKiBwYWdlKQoreworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFwYWdlLT5tYWluRnJhbWUoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIHBhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCk7Cit9CisKK3ZvaWQg
UGFnZVdpZGdldERlbGVnYXRlOjphbmltYXRlKFBhZ2UqIHBhZ2UsIGRvdWJsZSBtb25vdG9uaWNG
cmFtZUJlZ2luVGltZSkKK3sKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lVmlldyhwYWdlKTsKKyAgICBpZiAoIXZpZXcp
CisgICAgICAgIHJldHVybjsKKyAgICBkb3VibGUgdGltZVNoaWZ0ID0gY3VycmVudFRpbWUoKSAt
IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIHZpZXctPnNlcnZpY2VTY3JpcHRl
ZEFuaW1hdGlvbnMoY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChtb25vdG9uaWNGcmFtZUJl
Z2luVGltZSArIHRpbWVTaGlmdCkpOworI2VuZGlmCit9CisKK3ZvaWQgUGFnZVdpZGdldERlbGVn
YXRlOjpsYXlvdXQoUGFnZSogcGFnZSkKK3sKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJh
bWVWaWV3KHBhZ2UpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuOworICAgIC8vIElu
IG9yZGVyIGZvciBvdXIgY2hpbGQgSFdORHMgKE5hdGl2ZVdpbmRvd1dpZGdldHMpIHRvIHVwZGF0
ZSBwcm9wZXJseSwKKyAgICAvLyB0aGV5IG5lZWQgdG8gYmUgdG9sZCB0aGF0IHdlIGFyZSB1cGRh
dGluZyB0aGUgc2NyZWVuLiBUaGUgcHJvYmxlbSBpcyB0aGF0CisgICAgLy8gdGhlIG5hdGl2ZSB3
aWRnZXRzIG5lZWQgdG8gcmVjYWxjdWxhdGUgdGhlaXIgY2xpcCByZWdpb24gYW5kIG5vdCBvdmVy
bGFwCisgICAgLy8gYW55IG9mIG91ciBub24tbmF0aXZlIHdpZGdldHMuIFRvIGZvcmNlIHRoZSBy
ZXNpemluZywgY2FsbAorICAgIC8vIHNldEZyYW1lUmVjdCgpLiBUaGlzIHdpbGwgYmUgYSBxdWlj
ayBvcGVyYXRpb24gZm9yIG1vc3QgZnJhbWVzLCBidXQgdGhlCisgICAgLy8gTmF0aXZlV2luZG93
V2lkZ2V0cyB3aWxsIHVwZGF0ZSBhIHByb3BlciBjbGlwcGluZyByZWdpb24uCisgICAgdmlldy0+
c2V0RnJhbWVSZWN0KHZpZXctPmZyYW1lUmVjdCgpKTsKKworICAgIC8vIHNldEZyYW1lUmVjdCBt
YXkgaGF2ZSB0aGUgc2lkZS1lZmZlY3Qgb2YgY2F1c2luZyBleGlzdGluZyBwYWdlIGxheW91dCB0
bworICAgIC8vIGJlIGludmFsaWRhdGVkLCBzbyBsYXlvdXQgbmVlZHMgdG8gYmUgY2FsbGVkIGxh
c3QuCisgICAgdmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwor
fQorCit2b2lkIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6cGFpbnQoUGFnZSogcGFnZSwgUGFnZU92ZXJs
YXlMaXN0KiBvdmVybGF5cywgV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3Qp
Cit7CisgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgR3JhcGhp
Y3NDb250ZXh0QnVpbGRlciBidWlsZGVyKGNhbnZhcyk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBn
YyA9IGJ1aWxkZXIuY29udGV4dCgpOworICAgIEludFJlY3QgZGlydHlSZWN0KHJlY3QpOworICAg
IGdjLnNhdmUoKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJhbWVWaWV3KHBhZ2UpOwor
ICAgIGlmICh2aWV3ICYmIHBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKSB7CisgICAgICAg
IGdjLmNsaXAoZGlydHlSZWN0KTsKKyAgICAgICAgdmlldy0+cGFpbnQoJmdjLCBkaXJ0eVJlY3Qp
OworICAgICAgICBpZiAob3ZlcmxheXMpCisgICAgICAgICAgICBvdmVybGF5cy0+cGFpbnRXZWJG
cmFtZShnYyk7CisgICAgfSBlbHNlCisgICAgICAgIGdjLmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBnYy5yZXN0b3JlKCk7Cit9CisK
K2Jvb2wgUGFnZVdpZGdldERlbGVnYXRlOjpoYW5kbGVJbnB1dEV2ZW50KFBhZ2UqIHBhZ2UsIFBh
Z2VXaWRnZXRFdmVudEhhbmRsZXImIGhhbmRsZXIsIGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50
KQoreworICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UgPyBwYWdlLT5tYWluRnJhbWUoKSA6IDA7Cisg
ICAgc3dpdGNoIChldmVudC50eXBlKSB7CisKKyAgICAvLyBGSVhNRTogV2ViS2l0IHNlZW1zIHRv
IGFsd2F5cyByZXR1cm4gZmFsc2Ugb24gbW91c2UgZXZlbnRzIHByb2Nlc3NpbmcKKyAgICAvLyBt
ZXRob2RzLiBGb3Igbm93IHdlJ2xsIGFzc3VtZSBpdCBoYXMgcHJvY2Vzc2VkIHRoZW0gKGFzIHdl
IGFyZSBvbmx5CisgICAgLy8gaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGtleWJvYXJkIGV2ZW50cyBh
cmUgcHJvY2Vzc2VkKS4KKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlTW92ZToKKyAgICAg
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBoYW5kbGVyLmhhbmRsZU1vdXNlTW92ZSgqZnJhbWUsICpzdGF0aWNfY2FzdDxj
b25zdCBXZWJNb3VzZUV2ZW50Kj4oJmV2ZW50KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VMZWF2ZToKKyAgICAgICAgaWYgKCFmcmFtZSB8fCAh
ZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBoYW5kbGVy
LmhhbmRsZU1vdXNlTGVhdmUoKmZyYW1lLCAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVu
dCo+KCZldmVudCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Ok1vdXNlRG93bjoKKyAgICAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBoYW5kbGVyLmhhbmRsZU1vdXNlRG93bigq
ZnJhbWUsICpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmV2ZW50KSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VVcDoKKyAgICAg
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBoYW5kbGVyLmhhbmRsZU1vdXNlVXAoKmZyYW1lLCAqc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViTW91c2VFdmVudCo+KCZldmVudCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbDoKKyAgICAgICAgaWYgKCFmcmFtZSB8fCAh
ZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IGhhbmRsZXIuaGFuZGxlTW91c2VXaGVlbCgqZnJhbWUsICpzdGF0aWNfY2FzdDxjb25zdCBXZWJN
b3VzZVdoZWVsRXZlbnQqPigmZXZlbnQpKTsKKworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6UmF3
S2V5RG93bjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OktleURvd246CisgICAgY2FzZSBXZWJJ
bnB1dEV2ZW50OjpLZXlVcDoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIuaGFuZGxlS2V5RXZlbnQo
KnN0YXRpY19jYXN0PGNvbnN0IFdlYktleWJvYXJkRXZlbnQqPigmZXZlbnQpKTsKKworICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6Q2hhcjoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIuaGFuZGxlQ2hh
ckV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJLZXlib2FyZEV2ZW50Kj4oJmV2ZW50KSk7CisK
KyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlU2Nyb2xsQmVnaW46CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5k
OgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZToKKyAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OgorICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZUZsaW5nQ2FuY2VsOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRh
cDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXBEb3duOgorICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIuaGFu
ZGxlR2VzdHVyZUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmZXZl
bnQpKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6OlRvdWNoU3RhcnQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaE1vdmU6
CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaEVuZDoKKyAgICBjYXNlIFdlYklucHV0RXZl
bnQ6OlRvdWNoQ2FuY2VsOgorICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+dmlldygpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gaGFuZGxlci5oYW5kbGVU
b3VjaEV2ZW50KCpmcmFtZSwgKnN0YXRpY19jYXN0PGNvbnN0IFdlYlRvdWNoRXZlbnQqPigmZXZl
bnQpKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVnaW46CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlUGluY2hFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hVcGRh
dGU6CisgICAgICAgIC8vIEZJWE1FOiBPbmNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50IGlzIHVwZGF0
ZWQgdG8gc3VwcG9ydCBwaW5jaCwgdGhpcworICAgICAgICAvLyBzaG91bGQgY2FsbCBoYW5kbGVH
ZXN0dXJlRXZlbnQsIGp1c3QgbGlrZSBpdCBjdXJyZW50bHkgZG9lcyBmb3IKKyAgICAgICAgLy8g
Z2VzdHVyZSBzY3JvbGwuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8g
RGVmYXVsdCBoYW5kbGVycyBmb3IgUGFnZVdpZGdldEV2ZW50SGFuZGxlcgorCit2b2lkIFBhZ2VX
aWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZShGcmFtZSYgbWFpbkZyYW1lLCBjb25z
dCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICAvLyBXZSBjYWxsIG1vdXNlTW92ZWQgaGVy
ZSBpbnN0ZWFkIG9mIGhhbmRsZU1vdXNlTW92ZWRFdmVudCBiZWNhdXNlIHdlIG5lZWQKKyAgICAv
LyBvdXIgQ2hyb21lQ2xpZW50SW1wbCB0byByZWNlaXZlIGNoYW5nZXMgdG8gdGhlIG1vdXNlIHBv
c2l0aW9uIGFuZCB0b29sdGlwCisgICAgLy8gdGV4dCwgYW5kIG1vdXNlTW92ZWQgaGFuZGxlcyBh
bGwgb2YgdGhhdC4KKyAgICBtYWluRnJhbWUuZXZlbnRIYW5kbGVyKCktPm1vdXNlTW92ZWQoUGxh
dGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihtYWluRnJhbWUudmlldygpLCBldmVudCkpOworfQorCit2
b2lkIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTGVhdmUoRnJhbWUmIG1haW5G
cmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgbWFpbkZyYW1lLmV2ZW50
SGFuZGxlcigpLT5oYW5kbGVNb3VzZU1vdmVFdmVudChQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVy
KG1haW5GcmFtZS52aWV3KCksIGV2ZW50KSk7Cit9CisKK3ZvaWQgUGFnZVdpZGdldEV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VEb3duKEZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZl
bnQmIGV2ZW50KQoreworICAgIG1haW5GcmFtZS5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQ
cmVzc0V2ZW50KFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIobWFpbkZyYW1lLnZpZXcoKSwgZXZl
bnQpKTsKK30KKwordm9pZCBQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVVwKEZy
YW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIG1haW5G
cmFtZS5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoUGxhdGZvcm1Nb3Vz
ZUV2ZW50QnVpbGRlcihtYWluRnJhbWUudmlldygpLCBldmVudCkpOworfQorCitib29sIFBhZ2VX
aWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlV2hlZWwoRnJhbWUmIG1haW5GcmFtZSwgY29u
c3QgV2ViTW91c2VXaGVlbEV2ZW50JiBldmVudCkKK3sKKyAgICByZXR1cm4gbWFpbkZyYW1lLmV2
ZW50SGFuZGxlcigpLT5oYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIo
bWFpbkZyYW1lLnZpZXcoKSwgZXZlbnQpKTsKK30KKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Citib29sIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoRnJhbWUmIG1h
aW5GcmFtZSwgY29uc3QgV2ViVG91Y2hFdmVudCYgZXZlbnQpCit7CisgICAgcmV0dXJuIG1haW5G
cmFtZS5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVG91Y2hFdmVudChQbGF0Zm9ybVRvdWNoRXZlbnRC
dWlsZGVyKG1haW5GcmFtZS52aWV3KCksIGV2ZW50KSk7Cit9CisjZW5kaWYKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVnYXRlLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QYWdlV2lkZ2V0RGVsZWdhdGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kYmJlMjY5YWNiNzVhZDNkNmRhMjliMDQxOTE3ZjcwNTBhOWE3YjJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVnYXRlLmgKQEAg
LTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgUGFnZVdpZGdldERlbGVnYXRlX2gKKyNkZWZpbmUgUGFnZVdp
ZGdldERlbGVnYXRlX2gKKworI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJXaWRnZXQu
aCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lOworY2xhc3MgUGFnZTsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBhZ2VPdmVybGF5TGlzdDsKK2NsYXNzIFdl
Ykdlc3R1cmVFdmVudDsKK2NsYXNzIFdlYklucHV0RXZlbnQ7CitjbGFzcyBXZWJLZXlib2FyZEV2
ZW50OworY2xhc3MgV2ViTW91c2VFdmVudDsKK2NsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKK2Ns
YXNzIFdlYlRvdWNoRXZlbnQ7CisKK2NsYXNzIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZU1vdmUoV2ViQ29yZTo6RnJhbWUmIG1h
aW5GcmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVN
b3VzZUxlYXZlKFdlYkNvcmU6OkZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91c2VEb3duKFdlYkNvcmU6OkZyYW1lJiBtYWlu
RnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91
c2VVcChXZWJDb3JlOjpGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJNb3VzZUV2ZW50Jik7Cisg
ICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlV2hlZWwoV2ViQ29yZTo6RnJhbWUmIG1haW5GcmFt
ZSwgY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtl
eUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhh
bmRsZUNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JikgPSAwOworI2lmIEVOQUJMRShH
RVNUVVJFX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0
IFdlYkdlc3R1cmVFdmVudCYpID0gMDsKKyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisgICAgdmlydHVhbCBib29sIGhhbmRsZVRvdWNoRXZlbnQoV2ViQ29yZTo6RnJhbWUmIG1haW5G
cmFtZSwgY29uc3QgV2ViVG91Y2hFdmVudCYpOworI2VuZGlmCisgICAgdmlydHVhbCB+UGFnZVdp
ZGdldEV2ZW50SGFuZGxlcigpIHsgfQorfTsKKworCisvLyBDb21tb24gaW1wbGVtZW50YXRpb24g
b2YgV2ViVmlld0ltcGwgYW5kIFdlYlBhZ2VQb3B1cEltcGwuCitjbGFzcyBQYWdlV2lkZ2V0RGVs
ZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGFuaW1hdGUoV2ViQ29yZTo6UGFnZSos
IGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CisgICAgc3RhdGljIHZvaWQgbGF5b3V0
KFdlYkNvcmU6OlBhZ2UqKTsKKyAgICBzdGF0aWMgdm9pZCBwYWludChXZWJDb3JlOjpQYWdlKiwg
UGFnZU92ZXJsYXlMaXN0KiwgV2ViQ2FudmFzKiwgY29uc3QgV2ViUmVjdCYpOworICAgIHN0YXRp
YyBib29sIGhhbmRsZUlucHV0RXZlbnQoV2ViQ29yZTo6UGFnZSosIFBhZ2VXaWRnZXRFdmVudEhh
bmRsZXImLCBjb25zdCBXZWJJbnB1dEV2ZW50Jik7CisKK3ByaXZhdGU6CisgICAgUGFnZVdpZGdl
dERlbGVnYXRlKCkgeyB9Cit9OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDgxM2M5ZDcwNzQzMzljNDg3ZTRiMjRmZWY4ZmNm
NTE1ZDNiZDJhNzkuLjNmOWQ5ZDMxMTFlYjBiY2UxOGY3NjZlMzNjOTMxNThjOWI3Mzk4MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMjA1Niwz
NSArMjA1Niw2IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lSW1wbDo6Y3JlYXRlQ2hpbGRG
cmFtZSgKICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgV2ViRnJh
bWVJbXBsOjpsYXlvdXQoKQotewotICAgIC8vIGxheW91dCB0aGlzIGZyYW1lCi0gICAgRnJhbWVW
aWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwotICAgIGlmICh2aWV3KQotICAgICAgICB2aWV3
LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7Ci19Ci0KLXZvaWQgV2Vi
RnJhbWVJbXBsOjpwYWludFdpdGhDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgZ2MsIGNvbnN0IFdl
YlJlY3QmIHJlY3QpCi17Ci0gICAgSW50UmVjdCBkaXJ0eVJlY3QocmVjdCk7Ci0gICAgZ2Muc2F2
ZSgpOwotICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICYmIGZyYW1lVmlldygpKSB7Ci0gICAg
ICAgIGdjLmNsaXAoZGlydHlSZWN0KTsKLSAgICAgICAgZnJhbWVWaWV3KCktPnBhaW50KCZnYywg
ZGlydHlSZWN0KTsKLSAgICAgICAgaWYgKHZpZXdJbXBsKCktPnBhZ2VPdmVybGF5cygpKQotICAg
ICAgICAgICAgdmlld0ltcGwoKS0+cGFnZU92ZXJsYXlzKCktPnBhaW50V2ViRnJhbWUoZ2MpOwot
ICAgIH0gZWxzZQotICAgICAgICBnYy5maWxsUmVjdChkaXJ0eVJlY3QsIENvbG9yOjp3aGl0ZSwg
Q29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgZ2MucmVzdG9yZSgpOwotfQotCi12b2lkIFdlYkZy
YW1lSW1wbDo6cGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17
Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcGFpbnRXaXRo
Q29udGV4dChHcmFwaGljc0NvbnRleHRCdWlsZGVyKGNhbnZhcykuY29udGV4dCgpLCByZWN0KTsK
LX0KLQogdm9pZCBXZWJGcmFtZUltcGw6OmNyZWF0ZUZyYW1lVmlldygpCiB7CiAgICAgQVNTRVJU
KG1fZnJhbWUpOyAvLyBJZiBtX2ZyYW1lIGRvZXNuJ3QgZXhpc3QsIHdlIHByb2JhYmx5IGRpZG4n
dCBpbml0IHByb3Blcmx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
aAppbmRleCA5Yzg2ZDc1MTRhYzAwZWE1ZjFkYmI4MTc3OWIzY2EzNTgxNmYzNjc1Li4zYWJjNmM0
OTM0NGQxZTM2OTA2NDc5MWFlZWZhMGIzYTAwNDAyOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuaApAQCAtMjMwLDkgKzIzMCw2IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVDaGlsZEZyYW1lKAogICAgICAgICBjb25z
dCBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVt
ZW50Kik7CiAKLSAgICB2b2lkIGxheW91dCgpOwotICAgIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwg
Y29uc3QgV2ViUmVjdCYpOwotICAgIHZvaWQgcGFpbnRXaXRoQ29udGV4dChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBXZWJSZWN0Jik7CiAgICAgdm9pZCBjcmVhdGVGcmFtZVZpZXco
KTsKIAogICAgIHN0YXRpYyBXZWJGcmFtZUltcGwqIGZyb21GcmFtZShXZWJDb3JlOjpGcmFtZSog
ZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBv
cHVwSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBs
LmNwcAppbmRleCBiYzgxMGM3YjFiMTY4ZGI3ZWNiZTIxNWQwMTljNjM0NzNmMWI0ZmQyLi4yMjRj
ZDE1NjM1YmE5ODg3YjVmY2E0YzZjODcxM2NiM2QwYmNhNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjksMjEgKzI5LDI2NyBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYWdlUG9wdXBJbXBsLmgi
CiAKKyNpbmNsdWRlICJFbXB0eUNsaWVudHMuaCIKKyNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgor
I2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1
ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRlICJQYWdl
V2lkZ2V0RGVsZWdhdGUuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYklu
cHV0RXZlbnQuaCIKKyNpbmNsdWRlICJXZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQb3B1cC5oIgorI2luY2x1ZGUgIldlYldpZGdldENsaWVudC5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKyNpZiBFTkFCTEUo
UEFHRV9QT1BVUCkKKworY2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50IDogcHVibGljIEVtcHR5
Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlUG9wdXBDaHJvbWVD
bGllbnQpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgZXhw
bGljaXQgUGFnZVBvcHVwQ2hyb21lQ2xpZW50KFdlYlBhZ2VQb3B1cEltcGwqIHBvcHVwKSA6IG1f
cG9wdXAocG9wdXApCisgICAgeworICAgICAgICBBU1NFUlQobV9wb3B1cC0+d2lkZ2V0Q2xpZW50
KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3dTb29u
KCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fcG9wdXAtPmNsb3NlUG9wdXAoKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCB3aW5kb3dSZWN0KCkgT1ZFUlJJREUKKyAgICB7Cisg
ICAgICAgIHJldHVybiBGbG9hdFJlY3QobV9wb3B1cC0+bV93aW5kb3dSZWN0SW5TY3JlZW4ueCwg
bV9wb3B1cC0+bV93aW5kb3dSZWN0SW5TY3JlZW4ueSwgbV9wb3B1cC0+bV93aW5kb3dSZWN0SW5T
Y3JlZW4ud2lkdGgsIG1fcG9wdXAtPm1fd2luZG93UmVjdEluU2NyZWVuLmhlaWdodCk7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
KSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9wb3B1cC0+bV93aW5kb3dSZWN0SW5TY3JlZW4g
PSBJbnRSZWN0KHJlY3QpOworICAgICAgICBtX3BvcHVwLT53aWRnZXRDbGllbnQoKS0+c2V0V2lu
ZG93UmVjdChtX3BvcHVwLT5tX3dpbmRvd1JlY3RJblNjcmVlbik7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUs
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREUKKyAgICB7CisjaWZuZGVmIE5ERUJVRworICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIkNPTlNPTEUgTUVTU1NBR0U6JXU6ICVzXG4iLCBsaW5lTnVt
YmVyLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFN
KG1lc3NhZ2UpOworICAgICAgICBVTlVTRURfUEFSQU0obGluZU51bWJlcik7CisjZW5kaWYKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29u
c3QgSW50UmVjdCYgcGFpbnRSZWN0LCBib29sKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaWYg
KHBhaW50UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fcG9w
dXAtPndpZGdldENsaWVudCgpLT5kaWRJbnZhbGlkYXRlUmVjdChwYWludFJlY3QpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNv
bnN0IEludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBPVkVSUklE
RQorICAgIHsKKyAgICAgICAgbV9wb3B1cC0+d2lkZ2V0Q2xpZW50KCktPmRpZFNjcm9sbFJlY3Qo
c2Nyb2xsRGVsdGEud2lkdGgoKSwgc2Nyb2xsRGVsdGEuaGVpZ2h0KCksIGludGVyc2VjdGlvbihz
Y3JvbGxSZWN0LCBjbGlwUmVjdCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIGJvb2wg
aW1tZWRpYXRlKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaW52YWxpZGF0ZUNvbnRlbnRzQW5k
Um9vdFZpZXcodXBkYXRlUmVjdCwgaW1tZWRpYXRlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVBbmltYXRpb24oKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9wb3B1cC0+
d2lkZ2V0Q2xpZW50KCktPnNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkKiB3ZWJWaWV3KCkgY29uc3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3BvcHVwLT5tX3dlYlZpZXc7CisgICAgfQorCisgICAgV2ViUGFnZVBvcHVwSW1wbCogbV9wb3B1
cDsKK307CisKIC8vIFdlYlBhZ2VQb3B1cEltcGwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0vLyBGSVhNRTogV2ViUGFn
ZVBvcHVwSW1wbCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIHdyaXR0ZW4gaGVyZS4KK1dlYlBhZ2VQ
b3B1cEltcGw6OldlYlBhZ2VQb3B1cEltcGwoV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQpCisgICAg
OiBtX3dpZGdldENsaWVudChjbGllbnQpCit7CisgICAgQVNTRVJUKGNsaWVudCk7Cit9CisKK1dl
YlBhZ2VQb3B1cEltcGw6On5XZWJQYWdlUG9wdXBJbXBsKCkKK3sKKyAgICBBU1NFUlQoIW1fcGFn
ZSk7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aW5pdChXZWJWaWV3SW1wbCogd2ViVmll
dywgUGFnZVBvcHVwQ2xpZW50KiBwb3B1cENsaWVudCwgY29uc3QgSW50UmVjdCYgYm91bmRzSW5T
Y3JlZW4pCit7CisgICAgQVNTRVJUKHdlYlZpZXcpOworICAgIEFTU0VSVChwb3B1cENsaWVudCk7
CisgICAgbV93ZWJWaWV3ID0gd2ViVmlldzsKKyAgICBtX3BvcHVwQ2xpZW50ID0gcG9wdXBDbGll
bnQ7CisKKyAgICBtX3dpZGdldENsaWVudC0+c2V0V2luZG93UmVjdChib3VuZHNJblNjcmVlbik7
CisgICAgbV93aW5kb3dSZWN0SW5TY3JlZW4gPSBib3VuZHNJblNjcmVlbjsKKyAgICBpZiAoIWlu
aXRQYWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3dpZGdldENsaWVudC0+c2hv
dyhXZWJOYXZpZ2F0aW9uUG9saWN5KCkpOworCisgICAgc2V0Rm9jdXModHJ1ZSk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJQYWdlUG9wdXBJbXBsOjppbml0UGFnZSgpCit7Cisg
ICAgUGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVudHM7CisgICAgZmlsbFdpdGhFbXB0eUNsaWVu
dHMocGFnZUNsaWVudHMpOworICAgIG1fY2hyb21lQ2xpZW50ID0gYWRvcHRQdHIobmV3IFBhZ2VQ
b3B1cENocm9tZUNsaWVudCh0aGlzKSk7CisgICAgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0g
bV9jaHJvbWVDbGllbnQuZ2V0KCk7CisKKyAgICBtX3BhZ2UgPSBhZG9wdFB0cihuZXcgUGFnZShw
YWdlQ2xpZW50cykpOworICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0U2NyaXB0RW5hYmxlZCh0
cnVlKTsKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEFsbG93U2NyaXB0c1RvQ2xvc2VXaW5k
b3dzKHRydWUpOworCisgICAgc3RhdGljIEZyYW1lTG9hZGVyQ2xpZW50KiBlbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50ID0gIG5ldyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OworICAgIFJlZlB0cjxGcmFt
ZT4gZnJhbWUgPSBGcmFtZTo6Y3JlYXRlKG1fcGFnZS5nZXQoKSwgMCwgZW1wdHlGcmFtZUxvYWRl
ckNsaWVudCk7CisgICAgZnJhbWUtPnNldFZpZXcoRnJhbWVWaWV3OjpjcmVhdGUoZnJhbWUuZ2V0
KCkpKTsKKyAgICBmcmFtZS0+aW5pdCgpOworICAgIGZyYW1lLT52aWV3KCktPnJlc2l6ZShtX3Bv
cHVwQ2xpZW50LT5jb250ZW50U2l6ZSgpKTsKKyAgICBmcmFtZS0+dmlldygpLT5zZXRUcmFuc3Bh
cmVudChmYWxzZSk7CisKKyAgICBEb2N1bWVudFdyaXRlciogd3JpdGVyID0gZnJhbWUtPmxvYWRl
cigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKTsKKyAgICB3cml0ZXItPnNldE1J
TUVUeXBlKCJ0ZXh0L2h0bWwiKTsKKyAgICB3cml0ZXItPnNldEVuY29kaW5nKCJVVEYtOCIsIGZh
bHNlKTsKKyAgICB3cml0ZXItPmJlZ2luKCk7CisgICAgbV9wb3B1cENsaWVudC0+d3JpdGVEb2N1
bWVudCgqd3JpdGVyKTsKKyAgICB3cml0ZXItPmVuZCgpOworCisgICAgZnJhbWUtPnNjcmlwdCgp
LT5pbnN0YWxsRnVuY3Rpb25zRm9yUGFnZVBvcHVwKGZyYW1lLmdldCgpLCBtX3BvcHVwQ2xpZW50
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworV2ViU2l6ZSBXZWJQYWdlUG9wdXBJbXBsOjpzaXpl
KCkKK3sKKyAgICByZXR1cm4gbV9wb3B1cENsaWVudC0+Y29udGVudFNpemUoKTsKK30KKwordm9p
ZCBXZWJQYWdlUG9wdXBJbXBsOjphbmltYXRlKGRvdWJsZSkKK3sKKyAgICBQYWdlV2lkZ2V0RGVs
ZWdhdGU6OmFuaW1hdGUobV9wYWdlLmdldCgpLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KSk7Cit9CisKK3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6Y29tcG9zaXRlKGJvb2wpCit7Cit9CisK
K3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6bGF5b3V0KCkKK3sKKyAgICBQYWdlV2lkZ2V0RGVsZWdh
dGU6OmxheW91dChtX3BhZ2UuZ2V0KCkpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnBh
aW50KFdlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFBhZ2VX
aWRnZXREZWxlZ2F0ZTo6cGFpbnQobV9wYWdlLmdldCgpLCAwLCBjYW52YXMsIHJlY3QpOworfQor
Cit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnJlc2l6ZShjb25zdCBXZWJTaXplJiBuZXdTaXplKQor
eworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+
cmVzaXplKG5ld1NpemUpOworICAgIG1fd2lkZ2V0Q2xpZW50LT5kaWRJbnZhbGlkYXRlUmVjdChX
ZWJSZWN0KDAsIDAsIG5ld1NpemUud2lkdGgsIG5ld1NpemUuaGVpZ2h0KSk7Cit9CisKK2Jvb2wg
V2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYp
Cit7CisgICAgLy8gVGhlIG1haW4gV2ViVmlldyByZWNlaXZlcyBrZXkgZXZlbnRzIGFuZCBmb3J3
YXJkIHRoZW0gdG8gdGhpcyB2aWEgaGFuZGxlS2V5RXZlbnQoKS4KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6
aGFuZGxlQ2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKQoreworICAgIC8vIFRoZSBt
YWluIFdlYlZpZXcgcmVjZWl2ZXMga2V5IGV2ZW50cyBhbmQgZm9yd2FyZCB0aGVtIHRvIHRoaXMg
dmlhIGhhbmRsZUtleUV2ZW50KCkuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorYm9vbCBXZWJQYWdl
UG9wdXBJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVu
dCkKK3sKKyAgICBpZiAoIW1fcGFnZSB8fCAhbV9wYWdlLT5tYWluRnJhbWUoKSB8fCAhbV9wYWdl
LT5tYWluRnJhbWUoKS0+dmlldygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRnJhbWUm
IGZyYW1lID0gKm1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lLmV2ZW50SGFu
ZGxlcigpLT5oYW5kbGVHZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKGZy
YW1lLnZpZXcoKSwgZXZlbnQpKTsKK30KKyNlbmRpZgorCitib29sIFdlYlBhZ2VQb3B1cEltcGw6
OmhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCit7CisgICAgcmV0
dXJuIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0
aGlzLCBldmVudCk7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlS2V5RXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAoIW1fcGFnZS0+
bWFpbkZyYW1lKCkgfHwgIW1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIo
KS0+a2V5RXZlbnQoZXZlbnQpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnNldEZvY3Vz
KGJvb2wgZW5hYmxlKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisgICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZChlbmFibGUpOworICAgIGlmIChl
bmFibGUpCisgICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEFjdGl2ZSh0cnVl
KTsKK30KKwordm9pZCBXZWJQYWdlUG9wdXBJbXBsOjpjbG9zZSgpCit7CisgICAgaWYgKG1fcGFn
ZSkKKyAgICAgICAgbV9wYWdlLmNsZWFyKCk7CisgICAgZGVsZXRlIHRoaXM7Cit9CisKK3ZvaWQg
V2ViUGFnZVBvcHVwSW1wbDo6Y2xvc2VQb3B1cCgpCit7CisgICAgaWYgKG1fcGFnZSkgeworICAg
ICAgICBtX3BhZ2UtPnNldEdyb3VwTmFtZShTdHJpbmcoKSk7CisgICAgICAgIG1fcGFnZS0+bWFp
bkZyYW1lKCktPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygpOworICAgICAgICBtX3BhZ2UtPm1h
aW5GcmFtZSgpLT5sb2FkZXIoKS0+c3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3lOb25lKTsK
KyAgICB9CisgICAgLy8gY2xvc2VXaWRnZXRTb29uKCkgd2lsbCBjYWxsIHRoaXMtPmNsb3NlKCkg
bGF0ZXIuCisgICAgbV93aWRnZXRDbGllbnQtPmNsb3NlV2lkZ2V0U29vbigpOworCisgICAgbV9w
b3B1cENsaWVudC0+ZGlkQ2xvc2VQb3B1cCgpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKFBBR0Vf
UE9QVVApCiAKIC8vIFdlYlBhZ2VQb3B1cCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdlYlBhZ2VQb3B1cCogV2ViUGFn
ZVBvcHVwOjpjcmVhdGUoV2ViV2lkZ2V0Q2xpZW50KikKK1dlYlBhZ2VQb3B1cCogV2ViUGFnZVBv
cHVwOjpjcmVhdGUoV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgLy8gRklYTUU6IFJl
dHVybnMgYSBXZWJQYWdlUG9wdXBJbXBsIG9iamVjdC4KKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkK
KyAgICBBU1NFUlQoY2xpZW50KTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG5ldyBXZWJQYWdlUG9wdXBJbXBsKGNsaWVudCk7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShjbGllbnQpOwogICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UGFnZVBvcHVwSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVw
SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI1YWZjYjQxYWQ4YTU5MDU0YWNlNmNlOGNjOWRiMmM0MmI0NDk5
NDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdl
UG9wdXBJbXBsLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBhZ2VQb3B1cEltcGxfaAor
I2RlZmluZSBXZWJQYWdlUG9wdXBJbXBsX2gKKworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorCisj
aW5jbHVkZSAiUGFnZVBvcHVwLmgiCisjaW5jbHVkZSAiUGFnZVdpZGdldERlbGVnYXRlLmgiCisj
aW5jbHVkZSAiV2ViUGFnZVBvcHVwLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQYWdlOworY2xhc3MgUGFnZVBvcHVwQ2xpZW50OworY2xh
c3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50OworY2xhc3MgV2ViVmlld0ltcGw7CisKK2NsYXNzIFdl
YlBhZ2VQb3B1cEltcGwgOiBwdWJsaWMgV2ViUGFnZVBvcHVwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBXZWJDb3JlOjpQYWdlUG9wdXAgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFdlYlBhZ2VQb3B1cEltcGwpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitw
dWJsaWM6CisgICAgYm9vbCBpbml0KFdlYlZpZXdJbXBsKiwgV2ViQ29yZTo6UGFnZVBvcHVwQ2xp
ZW50KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgYm91bmRzSW5TY3JlZW4pOworICAgIGJvb2wg
aGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7Cisg
ICAgdm9pZCBjbG9zZVBvcHVwKCk7CisgICAgV2ViV2lkZ2V0Q2xpZW50KiB3aWRnZXRDbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX3dpZGdldENsaWVudDsgfQorCitwcml2YXRlOgorICAgIC8vIFdl
YldpZGdldCBmdW5jdGlvbnMKKyAgICB2aXJ0dWFsIFdlYlNpemUgc2l6ZSgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGNvbXBvc2l0ZShib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJl
Y3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzaXplKGNvbnN0IFdlYlNpemUmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgaGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpIE9WRVJSSURFOworCisgICAgLy8gUGFnZVdp
ZGdldEV2ZW50SGFuZGxlciBmdW5jdGlvbnMKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5RXZl
bnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVDaGFyRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpIE9WRVJSSURFOworI2lmIEVO
QUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50
KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpIE9WRVJSSURFOworI2VuZGlmCisKKyAgICBleHBsaWNp
dCBXZWJQYWdlUG9wdXBJbXBsKFdlYldpZGdldENsaWVudCopOworICAgIHZpcnR1YWwgfldlYlBh
Z2VQb3B1cEltcGwoKTsKKyAgICBib29sIGluaXRQYWdlKCk7CisKKyAgICBXZWJXaWRnZXRDbGll
bnQqIG1fd2lkZ2V0Q2xpZW50OworICAgIFdlYlJlY3QgbV93aW5kb3dSZWN0SW5TY3JlZW47Cisg
ICAgV2ViVmlld0ltcGwqIG1fd2ViVmlldzsKKyAgICBPd25QdHI8V2ViQ29yZTo6UGFnZT4gbV9w
YWdlOworICAgIE93blB0cjxQYWdlUG9wdXBDaHJvbWVDbGllbnQ+IG1fY2hyb21lQ2xpZW50Owor
ICAgIFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudCogbV9wb3B1cENsaWVudDsKKworICAgIGZyaWVu
ZCBjbGFzcyBXZWJQYWdlUG9wdXA7CisgICAgZnJpZW5kIGNsYXNzIFBhZ2VQb3B1cENocm9tZUNs
aWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2VuZGlmIC8vIEVOQUJMRShQQUdF
X1BPUFVQKQorI2VuZGlmIC8vIFdlYlBhZ2VQb3B1cEltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDJlNDhkNGNkZjg5NGE5ZGI1MDcyYzc3MmYx
MDIzYmZjMjY3ZGNmNTcuLjlkMDZhZDEwZDVlNTk5NmRlZmZmZThjZDQ5Yjg3MDlhOTQ5ZGVjNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTg4LDYg
Kzg4LDggQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5j
bHVkZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCisjaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50
LmgiCisjaW5jbHVkZSAiUGFnZVdpZGdldERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2Fy
ZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaCIKQEAgLTEzMCw2ICsxMzIsNyBAQAogI2luY2x1ZGUgIldlYktpdC5o
IgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5o
IgorI2luY2x1ZGUgIldlYlBhZ2VQb3B1cEltcGwuaCIKICNpbmNsdWRlICJXZWJQbHVnaW4uaCIK
ICNpbmNsdWRlICJXZWJQbHVnaW5BY3Rpb24uaCIKICNpbmNsdWRlICJXZWJQbHVnaW5Db250YWlu
ZXJJbXBsLmgiCkBAIC0zNjksNiArMzcyLDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdl
YlZpZXdDbGllbnQqIGNsaWVudCkKICAgICAsIG1fZHJhZ09wZXJhdGlvbihXZWJEcmFnT3BlcmF0
aW9uTm9uZSkKICAgICAsIG1fYXV0b2ZpbGxQb3B1cFNob3dpbmcoZmFsc2UpCiAgICAgLCBtX2F1
dG9maWxsUG9wdXAoMCkKKyAgICAsIG1fcGFnZVBvcHVwKDApCiAgICAgLCBtX2lzVHJhbnNwYXJl
bnQoZmFsc2UpCiAgICAgLCBtX3RhYnNUb0xpbmtzKGZhbHNlKQogICAgICwgbV9kcmFnU2Nyb2xs
VGltZXIoYWRvcHRQdHIobmV3IERyYWdTY3JvbGxUaW1lcikpCkBAIC00NjksMzYgKzQ3MywxNCBA
QCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoYm9vbCB2
YWx1ZSkKICAgICAgICAgbV9wYWdlLT5zZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHModmFs
dWUpOwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjptb3VzZU1vdmUoY29uc3QgV2ViTW91c2VFdmVu
dCYgZXZlbnQpCit2b2lkIFdlYlZpZXdJbXBsOjpoYW5kbGVNb3VzZUxlYXZlKEZyYW1lJiBtYWlu
RnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogewotICAgIGlmICghbWFpbkZyYW1l
SW1wbCgpIHx8ICFtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBXZSBjYWxsIG1vdXNlTW92ZWQgaGVyZSBpbnN0ZWFkIG9mIGhhbmRsZU1vdXNl
TW92ZWRFdmVudCBiZWNhdXNlIHdlIG5lZWQKLSAgICAvLyBvdXIgQ2hyb21lQ2xpZW50SW1wbCB0
byByZWNlaXZlIGNoYW5nZXMgdG8gdGhlIG1vdXNlIHBvc2l0aW9uIGFuZAotICAgIC8vIHRvb2x0
aXAgdGV4dCwgYW5kIG1vdXNlTW92ZWQgaGFuZGxlcyBhbGwgb2YgdGhhdC4KLSAgICBtYWluRnJh
bWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5tb3VzZU1vdmVkKAotICAgICAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2
ZW50KSk7Ci19Ci0KLXZvaWQgV2ViVmlld0ltcGw6Om1vdXNlTGVhdmUoY29uc3QgV2ViTW91c2VF
dmVudCYgZXZlbnQpCi17Ci0gICAgLy8gVGhpcyBldmVudCBnZXRzIHNlbnQgYXMgdGhlIG1haW4g
ZnJhbWUgaXMgY2xvc2luZy4gIEluIHRoYXQgY2FzZSwganVzdAotICAgIC8vIGlnbm9yZSBpdC4K
LSAgICBpZiAoIW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXco
KSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9jbGllbnQtPnNldE1vdXNlT3ZlclVSTChXZWJV
UkwoKSk7Ci0KLSAgICBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5o
YW5kbGVNb3VzZU1vdmVFdmVudCgKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlciht
YWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVudCkpOworICAgIFBhZ2VXaWRnZXRFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlTGVhdmUobWFpbkZyYW1lLCBldmVudCk7CiB9CiAKLXZvaWQg
V2ViVmlld0ltcGw6Om1vdXNlRG93bihjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3ZvaWQg
V2ViVmlld0ltcGw6OmhhbmRsZU1vdXNlRG93bihGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJN
b3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoIW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZy
YW1lSW1wbCgpLT5mcmFtZVZpZXcoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gSWYgdGhl
cmUgaXMgYSBzZWxlY3QgcG9wdXAgb3BlbiwgY2xvc2UgaXQgYXMgdGhlIHVzZXIgaXMgY2xpY2tp
bmcgb24KICAgICAvLyB0aGUgcGFnZSAob3V0c2lkZSBvZiB0aGUgcG9wdXApLiAgV2UgYWxzbyBz
YXZlIGl0IHNvIHdlIGNhbiBwcmV2ZW50IGEKICAgICAvLyBjbGljayBvbiB0aGUgc2VsZWN0IGVs
ZW1lbnQgZnJvbSBpbW1lZGlhdGVseSByZW9wZW5pbmcgdGhlIHBvcHVwLgpAQCAtNTIyLDggKzUw
NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6Om1vdXNlRG93bihjb25zdCBXZWJNb3VzZUV2ZW50JiBl
dmVudCkKICAgICAgICAgICAgIG1fbW91c2VDYXB0dXJlTm9kZSA9IGhpdE5vZGU7CiAgICAgfQog
Ci0gICAgbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91
c2VQcmVzc0V2ZW50KAotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKG1haW5GcmFt
ZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KSk7CisgICAgUGFnZVdpZGdldEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VEb3duKG1haW5GcmFtZSwgZXZlbnQpOwogCiAgICAgaWYgKG1fc2VsZWN0
UG9wdXAgJiYgbV9zZWxlY3RQb3B1cCA9PSBzZWxlY3RQb3B1cCkgewogICAgICAgICAvLyBUaGF0
IGNsaWNrIHRyaWdnZXJlZCBhIHNlbGVjdCBwb3B1cCB3aGljaCBpcyB0aGUgc2FtZSBhcyB0aGUg
b25lIHRoYXQKQEAgLTU3NCwxMSArNTU1LDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VDb250
ZXh0TWVudShjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKICAgICAvLyBpbXBsZW1lbnRhdGlv
bi4uLgogfQogCi12b2lkIFdlYlZpZXdJbXBsOjptb3VzZVVwKGNvbnN0IFdlYk1vdXNlRXZlbnQm
IGV2ZW50KQordm9pZCBXZWJWaWV3SW1wbDo6aGFuZGxlTW91c2VVcChGcmFtZSYgbWFpbkZyYW1l
LCBjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoIW1haW5GcmFtZUltcGwo
KSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSkKLSAgICAgICAgcmV0dXJuOwotCiAj
aWYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikKICAgICAvLyBJZiB0aGUgZXZlbnQgd2FzIGEgbWlk
ZGxlIGNsaWNrLCBhdHRlbXB0IHRvIGNvcHkgdGV4dCBpbnRvIHRoZSBmb2N1c2VkCiAgICAgLy8g
ZnJhbWUuIFdlIGV4ZWN1dGUgdGhpcyBiZWZvcmUgd2UgbGV0IHRoZSBwYWdlIGhhdmUgYSBnbyBh
dCB0aGUgZXZlbnQKQEAgLTYxNiw4ICs1OTQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjptb3VzZVVw
KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogICAgIH0KICNlbmRpZgogCi0gICAgbWFpbkZy
YW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZl
bnQoCi0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIobWFpbkZyYW1lSW1wbCgpLT5m
cmFtZVZpZXcoKSwgZXZlbnQpKTsKKyAgICBQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyOjpoYW5kbGVN
b3VzZVVwKG1haW5GcmFtZSwgZXZlbnQpOwogCiAjaWYgT1MoV0lORE9XUykKICAgICAvLyBEaXNw
YXRjaCB0aGUgY29udGV4dG1lbnUgZXZlbnQgcmVnYXJkbGVzcyBvZiBpZiB0aGUgY2xpY2sgd2Fz
IHN3YWxsb3dlZC4KQEAgLTYyNywxMiArNjA0LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VV
cChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKICNlbmRpZgogfQogCi1ib29sIFdlYlZpZXdJ
bXBsOjptb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYgZXZlbnQpCi17Ci0gICAg
UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+
ZnJhbWVWaWV3KCksIGV2ZW50KTsKLSAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgp
LT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybUV2ZW50KTsKLX0KLQog
dm9pZCBXZWJWaWV3SW1wbDo6c2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlbHRh
KQogewogICAgIFdlYk1vdXNlV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbDsKQEAgLTY0OSwxMSAr
NjIwLDEyIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBkZWx0YSkKICAgICBzeW50aGV0aWNXaGVlbC5nbG9iYWxZID0gbV9sYXN0V2hlZWxHbG9i
YWxQb3NpdGlvbi55OwogICAgIHN5bnRoZXRpY1doZWVsLm1vZGlmaWVycyA9IG1fZmxpbmdNb2Rp
ZmllcjsKIAotICAgIG1vdXNlV2hlZWwoc3ludGhldGljV2hlZWwpOworICAgIGlmIChtX3BhZ2Ug
JiYgbV9wYWdlLT5tYWluRnJhbWUoKSAmJiBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpCisg
ICAgICAgIGhhbmRsZU1vdXNlV2hlZWwoKm1fcGFnZS0+bWFpbkZyYW1lKCksIHN5bnRoZXRpY1do
ZWVsKTsKIH0KIAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKLWJvb2wgV2ViVmlld0ltcGw6
Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQorYm9vbCBXZWJWaWV3
SW1wbDo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiB7
CiAgICAgc3dpdGNoIChldmVudC50eXBlKSB7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlRmxpbmdTdGFydDogewpAQCAtNzI0LDcgKzY5Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnN0
YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGwsIGJvb2wgdXNlQW5j
aG9yCiB9CiAjZW5kaWYKIAotYm9vbCBXZWJWaWV3SW1wbDo6a2V5RXZlbnQoY29uc3QgV2ViS2V5
Ym9hcmRFdmVudCYgZXZlbnQpCitib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVLZXlFdmVudChjb25z
dCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBBU1NFUlQoKGV2ZW50LnR5cGUgPT0g
V2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bikKICAgICAgICAgfHwgKGV2ZW50LnR5cGUgPT0gV2Vi
SW5wdXRFdmVudDo6S2V5RG93bikKQEAgLTc0Niw2ICs3MTgsMTYgQEAgYm9vbCBXZWJWaWV3SW1w
bDo6a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgLy8gbm90IHRo
ZSBwYWdlLgogICAgIGlmIChtX3NlbGVjdFBvcHVwKQogICAgICAgICByZXR1cm4gbV9zZWxlY3RQ
b3B1cC0+aGFuZGxlS2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihldmVudCkp
OworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorICAgIGlmIChtX3BhZ2VQb3B1cCkgeworICAgICAg
ICBtX3BhZ2VQb3B1cC0+aGFuZGxlS2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRl
cihldmVudCkpOworICAgICAgICAvLyBXZSBuZWVkIHRvIGlnbm9yZSB0aGUgbmV4dCBDaGFyIGV2
ZW50IGFmdGVyIHRoaXMgb3RoZXJ3aXNlIHByZXNzaW5nCisgICAgICAgIC8vIGVudGVyIHdoZW4g
c2VsZWN0aW5nIGFuIGl0ZW0gaW4gdGhlIHBvcHVwIHdpbGwgZ28gdG8gdGhlIHBhZ2UuCisgICAg
ICAgIGlmIChXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3duID09IGV2ZW50LnR5cGUpCisgICAgICAg
ICAgICBtX3N1cHByZXNzTmV4dEtleXByZXNzRXZlbnQgPSB0cnVlOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisjZW5kaWYKIAogICAgIC8vIEdpdmUgQXV0b2NvbXBsZXRlIGEgY2hhbmNl
IHRvIGNvbnN1bWUgdGhlIGtleSBldmVudHMgaXQgaXMgaW50ZXJlc3RlZCBpbi4KICAgICBpZiAo
YXV0b2NvbXBsZXRlSGFuZGxlS2V5RXZlbnQoZXZlbnQpKQpAQCAtODQyLDcgKzgyNCw3IEBAIGJv
b2wgV2ViVmlld0ltcGw6OmF1dG9jb21wbGV0ZUhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJv
YXJkRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBXZWJWaWV3SW1w
bDo6Y2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQorYm9vbCBXZWJWaWV3
SW1wbDo6aGFuZGxlQ2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogewog
ICAgIEFTU0VSVChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6OkNoYXIpOwogCkBAIC04NTgs
NiArODQwLDEwIEBAIGJvb2wgV2ViVmlld0ltcGw6OmNoYXJFdmVudChjb25zdCBXZWJLZXlib2Fy
ZEV2ZW50JiBldmVudCkKICAgICAvLyBub3QgdGhlIHBhZ2UuCiAgICAgaWYgKG1fc2VsZWN0UG9w
dXApCiAgICAgICAgIHJldHVybiBtX3NlbGVjdFBvcHVwLT5oYW5kbGVLZXlFdmVudChQbGF0Zm9y
bUtleWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50KSk7CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisg
ICAgaWYgKG1fcGFnZVBvcHVwKQorICAgICAgICByZXR1cm4gbV9wYWdlUG9wdXAtPmhhbmRsZUtl
eUV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIoZXZlbnQpKTsKKyNlbmRpZgogCiAg
ICAgRnJhbWUqIGZyYW1lID0gZm9jdXNlZFdlYkNvcmVGcmFtZSgpOwogICAgIGlmICghZnJhbWUp
CkBAIC04ODgsMTggKzg3NCw2IEBAIGJvb2wgV2ViVmlld0ltcGw6OmNoYXJFdmVudChjb25zdCBX
ZWJLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCi1ib29sIFdlYlZpZXdJbXBsOjp0b3VjaEV2ZW50KGNvbnN0IFdlYlRv
dWNoRXZlbnQmIGV2ZW50KQotewotICAgIGlmICghbWFpbkZyYW1lSW1wbCgpIHx8ICFtYWluRnJh
bWVJbXBsKCktPmZyYW1lVmlldygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBQbGF0
Zm9ybVRvdWNoRXZlbnRCdWlsZGVyIHRvdWNoRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+
ZnJhbWVWaWV3KCksIGV2ZW50KTsKLSAgICBib29sIGRlZmF1bHRQcmV2ZW50ZWQgPSBtYWluRnJh
bWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2ZW50KHRvdWNo
RXZlbnRCdWlsZGVyKTsKLSAgICByZXR1cm4gZGVmYXVsdFByZXZlbnRlZDsKLX0KLSNlbmRpZgot
CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogV2ViUmVjdCBXZWJWaWV3SW1wbDo6Y29tcHV0
ZUJsb2NrQm91bmRzKGNvbnN0IFdlYlJlY3QmIHJlY3QsIEF1dG9ab29tVHlwZSB6b29tVHlwZSkK
IHsKQEAgLTEyMjAsNiArMTE5NCw0OCBAQCB2b2lkICBXZWJWaWV3SW1wbDo6cG9wdXBDbG9zZWQo
V2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyKQogICAgIH0KIH0KIAorI2lm
IEVOQUJMRShQQUdFX1BPUFVQKQorUGFnZVBvcHVwKiBXZWJWaWV3SW1wbDo6b3BlblBhZ2VQb3B1
cChQYWdlUG9wdXBDbGllbnQqIGNsaWVudCwgY29uc3QgSW50UmVjdCYgb3JpZ2luQm91bmRzSW5S
b290VmlldykKK3sKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAgICBpZiAoaGFzT3BlbmVkUG9wdXAo
KSkKKyAgICAgICAgaGlkZVBvcHVwcygpOworICAgIEFTU0VSVCghbV9wYWdlUG9wdXApOworCisg
ICAgV2ViV2lkZ2V0KiBwb3B1cFdpZGdldCA9IG1fY2xpZW50LT5jcmVhdGVQb3B1cE1lbnUoV2Vi
UG9wdXBUeXBlUGFnZSk7CisgICAgQVNTRVJUKHBvcHVwV2lkZ2V0KTsKKyAgICBtX3BhZ2VQb3B1
cCA9IHN0YXRpY19jYXN0PFdlYlBhZ2VQb3B1cEltcGwqPihwb3B1cFdpZGdldCk7CisgICAgV2Vi
U2l6ZSByb290Vmlld1NpemUgPSBzaXplKCk7CisgICAgSW50U2l6ZSBwb3B1cFNpemUgPSBjbGll
bnQtPmNvbnRlbnRTaXplKCk7CisgICAgSW50UmVjdCBwb3B1cEJvdW5kc0luUm9vdFZpZXcoSW50
UG9pbnQobWF4KDAsIG9yaWdpbkJvdW5kc0luUm9vdFZpZXcueCgpKSwgbWF4KDAsIG9yaWdpbkJv
dW5kc0luUm9vdFZpZXcubWF4WSgpKSksIHBvcHVwU2l6ZSk7CisgICAgaWYgKHBvcHVwQm91bmRz
SW5Sb290Vmlldy5tYXhZKCkgPiByb290Vmlld1NpemUuaGVpZ2h0KQorICAgICAgICBwb3B1cEJv
dW5kc0luUm9vdFZpZXcuc2V0WShtYXgoMCwgb3JpZ2luQm91bmRzSW5Sb290Vmlldy55KCkgLSBw
b3B1cFNpemUuaGVpZ2h0KCkpKTsKKyAgICBpZiAocG9wdXBCb3VuZHNJblJvb3RWaWV3Lm1heFgo
KSA+IHJvb3RWaWV3U2l6ZS53aWR0aCkKKyAgICAgICAgcG9wdXBCb3VuZHNJblJvb3RWaWV3LnNl
dFgobWF4KDAsIHJvb3RWaWV3U2l6ZS53aWR0aCAtIHBvcHVwU2l6ZS53aWR0aCgpKSk7CisgICAg
aWYgKCFtX3BhZ2VQb3B1cC0+aW5pdCh0aGlzLCBjbGllbnQsIG1fY2hyb21lQ2xpZW50SW1wbC5y
b290Vmlld1RvU2NyZWVuKHBvcHVwQm91bmRzSW5Sb290VmlldykpKSB7CisgICAgICAgIG1fcGFn
ZVBvcHVwLT5jbG9zZVBvcHVwKCk7CisgICAgICAgIG1fcGFnZVBvcHVwID0gMDsKKyAgICB9CisK
KyAgICBpZiAoRnJhbWUqIGZyYW1lID0gZm9jdXNlZFdlYkNvcmVGcmFtZSgpKQorICAgICAgICBm
cmFtZS0+c2VsZWN0aW9uKCktPnNldENhcmV0VmlzaWJsZShmYWxzZSk7CisgICAgcmV0dXJuIG1f
cGFnZVBvcHVwOworfQorCit2b2lkIFdlYlZpZXdJbXBsOjpjbG9zZVBhZ2VQb3B1cChQYWdlUG9w
dXAqIHBvcHVwKQoreworICAgIGlmICghcG9wdXApCisgICAgICAgIHJldHVybjsKKyAgICBXZWJQ
YWdlUG9wdXBJbXBsKiBwb3B1cEltcGwgPSBzdGF0aWNfY2FzdDxXZWJQYWdlUG9wdXBJbXBsKj4o
cG9wdXApOworICAgIEFTU0VSVChtX3BhZ2VQb3B1cCA9PSBwb3B1cEltcGwpOworICAgIG1fcGFn
ZVBvcHVwLT5jbG9zZVBvcHVwKCk7CisgICAgbV9wYWdlUG9wdXAgPSAwOworCisgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IGZvY3VzZWRXZWJDb3JlRnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5wYWdlQWN0aXZhdGlvbkNoYW5nZWQoKTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlZp
ZXdJbXBsOjpoaWRlQXV0b2ZpbGxQb3B1cCgpCiB7CiAgICAgaWYgKG1fYXV0b2ZpbGxQb3B1cFNo
b3dpbmcpIHsKQEAgLTE0MzAsMzIgKzE0NDYsMTQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRl
QW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljRnJhbWVCZWdpblRpbWUpCiAgICAgICAgICAgICBt
X2dlc3R1cmVBbmltYXRpb24uY2xlYXIoKTsKICAgICB9CiAKLSAgICBkb3VibGUgdGltZVNoaWZ0
ID0gY3VycmVudFRpbWUoKSAtIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwotICAgIHZp
ZXctPnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFt
cChtb25vdG9uaWNGcmFtZUJlZ2luVGltZSArIHRpbWVTaGlmdCkpOworICAgIFBhZ2VXaWRnZXRE
ZWxlZ2F0ZTo6YW5pbWF0ZShtX3BhZ2UuZ2V0KCksIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKTsK
ICNlbmRpZgogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpsYXlvdXQoKQogewogICAgIFRSQUNFX0VW
RU5UKCJXZWJWaWV3SW1wbDo6bGF5b3V0IiwgdGhpcywgMCk7Ci0KLSAgICBXZWJGcmFtZUltcGwq
IHdlYmZyYW1lID0gbWFpbkZyYW1lSW1wbCgpOwotICAgIGlmICh3ZWJmcmFtZSkgewotICAgICAg
ICAvLyBJbiBvcmRlciBmb3Igb3VyIGNoaWxkIEhXTkRzIChOYXRpdmVXaW5kb3dXaWRnZXRzKSB0
byB1cGRhdGUgcHJvcGVybHksCi0gICAgICAgIC8vIHRoZXkgbmVlZCB0byBiZSB0b2xkIHRoYXQg
d2UgYXJlIHVwZGF0aW5nIHRoZSBzY3JlZW4uICBUaGUgcHJvYmxlbSBpcwotICAgICAgICAvLyB0
aGF0IHRoZSBuYXRpdmUgd2lkZ2V0cyBuZWVkIHRvIHJlY2FsY3VsYXRlIHRoZWlyIGNsaXAgcmVn
aW9uIGFuZCBub3QKLSAgICAgICAgLy8gb3ZlcmxhcCBhbnkgb2Ygb3VyIG5vbi1uYXRpdmUgd2lk
Z2V0cy4gIFRvIGZvcmNlIHRoZSByZXNpemluZywgY2FsbAotICAgICAgICAvLyBzZXRGcmFtZVJl
Y3QoKS4gIFRoaXMgd2lsbCBiZSBhIHF1aWNrIG9wZXJhdGlvbiBmb3IgbW9zdCBmcmFtZXMsIGJ1
dAotICAgICAgICAvLyB0aGUgTmF0aXZlV2luZG93V2lkZ2V0cyB3aWxsIHVwZGF0ZSBhIHByb3Bl
ciBjbGlwcGluZyByZWdpb24uCi0gICAgICAgIEZyYW1lVmlldyogdmlldyA9IHdlYmZyYW1lLT5m
cmFtZVZpZXcoKTsKLSAgICAgICAgaWYgKHZpZXcpCi0gICAgICAgICAgICB2aWV3LT5zZXRGcmFt
ZVJlY3Qodmlldy0+ZnJhbWVSZWN0KCkpOwotCi0gICAgICAgIC8vIHNldEZyYW1lUmVjdCBtYXkg
aGF2ZSB0aGUgc2lkZS1lZmZlY3Qgb2YgY2F1c2luZyBleGlzdGluZyBwYWdlCi0gICAgICAgIC8v
IGxheW91dCB0byBiZSBpbnZhbGlkYXRlZCwgc28gbGF5b3V0IG5lZWRzIHRvIGJlIGNhbGxlZCBs
YXN0LgotCi0gICAgICAgIHdlYmZyYW1lLT5sYXlvdXQoKTsKLSAgICB9CisgICAgUGFnZVdpZGdl
dERlbGVnYXRlOjpsYXlvdXQobV9wYWdlLmdldCgpKTsKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKQEAgLTE1MDgsOSArMTUwNiw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBh
aW50KFdlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0KQogI2VuZGlmCiAgICAg
fSBlbHNlIHsKICAgICAgICAgZG91YmxlIHBhaW50U3RhcnQgPSBjdXJyZW50VGltZSgpOwotICAg
ICAgICBXZWJGcmFtZUltcGwqIHdlYmZyYW1lID0gbWFpbkZyYW1lSW1wbCgpOwotICAgICAgICBp
ZiAod2ViZnJhbWUpCi0gICAgICAgICAgICB3ZWJmcmFtZS0+cGFpbnQoY2FudmFzLCByZWN0KTsK
KyAgICAgICAgUGFnZVdpZGdldERlbGVnYXRlOjpwYWludChtX3BhZ2UuZ2V0KCksIHBhZ2VPdmVy
bGF5cygpLCBjYW52YXMsIHJlY3QpOwogICAgICAgICBkb3VibGUgcGFpbnRFbmQgPSBjdXJyZW50
VGltZSgpOwogICAgICAgICBkb3VibGUgcGl4ZWxzUGVyU2VjID0gKHJlY3Qud2lkdGggKiByZWN0
LmhlaWdodCkgLyAocGFpbnRFbmQgLSBwYWludFN0YXJ0KTsKICAgICAgICAgV2ViS2l0OjpQbGF0
Zm9ybTo6Y3VycmVudCgpLT5oaXN0b2dyYW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5Tb2Z0d2Fy
ZVBhaW50RHVyYXRpb25NUyIsIChwYWludEVuZCAtIHBhaW50U3RhcnQpICogMTAwMCwgMCwgMTIw
LCAzMCk7CkBAIC0xNjY3LDc5ICsxNjYzLDggQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlSW5w
dXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBpbnB1dEV2ZW50KQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBib29sIGhhbmRsZWQgPSB0cnVlOwotCi0gICAgLy8gRklYTUU6
IFdlYktpdCBzZWVtcyB0byBhbHdheXMgcmV0dXJuIGZhbHNlIG9uIG1vdXNlIGV2ZW50cyBwcm9j
ZXNzaW5nCi0gICAgLy8gbWV0aG9kcy4gRm9yIG5vdyB3ZSdsbCBhc3N1bWUgaXQgaGFzIHByb2Nl
c3NlZCB0aGVtIChhcyB3ZSBhcmUgb25seQotICAgIC8vIGludGVyZXN0ZWQgaW4gd2hldGhlciBr
ZXlib2FyZCBldmVudHMgYXJlIHByb2Nlc3NlZCkuCi0gICAgc3dpdGNoIChpbnB1dEV2ZW50LnR5
cGUpIHsKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlTW92ZToKLSAgICAgICAgbW91c2VN
b3ZlKCpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKLSAg
ICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlTGVhdmU6Ci0gICAg
ICAgIG1vdXNlTGVhdmUoKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQqPigmaW5wdXRF
dmVudCkpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VX
aGVlbDoKLSAgICAgICAgaGFuZGxlZCA9IG1vdXNlV2hlZWwoKnN0YXRpY19jYXN0PGNvbnN0IFdl
Yk1vdXNlV2hlZWxFdmVudCo+KCZpbnB1dEV2ZW50KSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZURvd246Ci0gICAgICAgIG1vdXNlRG93bigqc3RhdGlj
X2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCo+KCZpbnB1dEV2ZW50KSk7Ci0gICAgICAgIGJyZWFr
OwotCi0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZVVwOgotICAgICAgICBtb3VzZVVwKCpz
dGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlJhd0tleURvd246Ci0gICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpLZXlEb3duOgotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6S2V5VXA6Ci0g
ICAgICAgIGhhbmRsZWQgPSBrZXlFdmVudCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViS2V5Ym9hcmRF
dmVudCo+KCZpbnB1dEV2ZW50KSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpDaGFyOgotICAgICAgICBoYW5kbGVkID0gY2hhckV2ZW50KCpzdGF0aWNfY2FzdDxj
b25zdCBXZWJLZXlib2FyZEV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0K
LSNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCi0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlU2Nyb2xsQmVnaW46Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5k
OgotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZToKLSAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OgotICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZUZsaW5nQ2FuY2VsOgotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRh
cDoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXBEb3duOgotICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKLSAgICAgICAgaGFuZGxlZCA9IGdlc3R1cmVF
dmVudCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmlucHV0RXZlbnQpKTsK
LSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaFN0YXJ0OgotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
VG91Y2hNb3ZlOgotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hFbmQ6Ci0gICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpUb3VjaENhbmNlbDoKLSAgICAgICAgaGFuZGxlZCA9IHRvdWNoRXZlbnQo
KnN0YXRpY19jYXN0PGNvbnN0IFdlYlRvdWNoRXZlbnQqPigmaW5wdXRFdmVudCkpOwotICAgICAg
ICBicmVhazsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQotICAgIGNhc2Ug
V2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVnaW46Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlUGluY2hFbmQ6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hV
cGRhdGU6Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50IGlzIHVw
ZGF0ZWQgdG8gc3VwcG9ydCBwaW5jaCwgdGhpcyBzaG91bGQgY2FsbCBoYW5kbGVHZXN0dXJlRXZl
bnQsIGp1c3QgbGlrZSBpdCBjdXJyZW50bHkgZG9lcyBmb3IgZ2VzdHVyZSBzY3JvbGwuCi0gICAg
ICAgIGhhbmRsZWQgPSBmYWxzZTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIGhhbmRsZWQgPSBmYWxzZTsKLSAgICB9Ci0KKyAgICBib29sIGhhbmRsZWQg
PSBQYWdlV2lkZ2V0RGVsZWdhdGU6OmhhbmRsZUlucHV0RXZlbnQobV9wYWdlLmdldCgpLCAqdGhp
cywgaW5wdXRFdmVudCk7CiAgICAgbV9jdXJyZW50SW5wdXRFdmVudCA9IDA7Ci0KICAgICByZXR1
cm4gaGFuZGxlZDsKIH0KIApAQCAtMTc3OCw4ICsxNzAzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
c2V0Rm9jdXMoYm9vbCBlbmFibGUpCiAgICAgICAgIH0KICAgICAgICAgbV9pbWVBY2NlcHRFdmVu
dHMgPSB0cnVlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGhpZGVBdXRvZmlsbFBvcHVwKCk7Ci0g
ICAgICAgIGhpZGVTZWxlY3RQb3B1cCgpOworICAgICAgICBoaWRlUG9wdXBzKCk7CiAKICAgICAg
ICAgLy8gQ2xlYXIgZm9jdXMgb24gdGhlIGN1cnJlbnRseSBmb2N1c2VkIGZyYW1lIGlmIGFueS4K
ICAgICAgICAgaWYgKCFtX3BhZ2UpCkBAIC0yODY4LDYgKzI3OTIsOSBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpoaWRlUG9wdXBzKCkKIHsKICAgICBoaWRlU2VsZWN0UG9wdXAoKTsKICAgICBoaWRlQXV0
b2ZpbGxQb3B1cCgpOworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorICAgIGNsb3NlUGFnZVBvcHVw
KG1fcGFnZVBvcHVwKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpwZXJmb3JtQ3Vz
dG9tQ29udGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggNDYyN2Y3NzczNzU4ZDM3NDQwOGE1MmVkNTA1ODJi
ZGJjOGI4NTc3Mi4uMzIzNzlkZGU1ZDVjYjM4Y2RiOWI5ZmQ1ZjIwMWNlNjFkODAzNmZiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC01Miw2ICs1Miw3IEBA
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlcklt
cGwuaCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheUxpc3QuaCIKKyNpbmNsdWRlICJQYWdlV2lkZ2V0
RGVsZWdhdGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oIgogI2lu
Y2x1ZGUgIlVzZXJNZWRpYUNsaWVudEltcGwuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBA
IC02OCw2ICs2OSw4IEBAIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgSGl0VGVzdFJlc3VsdDsK
IGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQYWdlOworY2xhc3MgUGFnZVBvcHVwOworY2xh
c3MgUGFnZVBvcHVwQ2xpZW50OwogY2xhc3MgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQ7CiBj
bGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQb3B1cENvbnRhaW5lcjsKQEAgLTk2
LDYgKzk5LDcgQEAgY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKIGNsYXNzIFdlYkRldlRv
b2xzQWdlbnRQcml2YXRlOwogY2xhc3MgV2ViRnJhbWVJbXBsOwogY2xhc3MgV2ViR2VzdHVyZUV2
ZW50OworY2xhc3MgV2ViUGFnZVBvcHVwSW1wbDsKIGNsYXNzIFdlYkltYWdlOwogY2xhc3MgV2Vi
S2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CkBAIC0xMDMsNyArMTA3LDcgQEAg
Y2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50OwogY2xhc3MgV2ViU2V0dGluZ3NJbXBsOwogY2xhc3Mg
V2ViVG91Y2hFdmVudDsKIAotY2xhc3MgV2ViVmlld0ltcGwgOiBwdWJsaWMgV2ViVmlldywgcHVi
bGljIFdlYkxheWVyVHJlZVZpZXdDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZXdJbXBs
PiwgcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IHsKK2NsYXNzIFdl
YlZpZXdJbXBsIDogcHVibGljIFdlYlZpZXcsIHB1YmxpYyBXZWJMYXllclRyZWVWaWV3Q2xpZW50
LCBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3SW1wbD4sIHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZVRhcmdldCwgcHVibGljIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXIgewogcHVi
bGljOgogICAgIGVudW0gQXV0b1pvb21UeXBlIHsKICAgICAgICAgRG91YmxlVGFwLApAQCAtMzM0
LDE4ICszMzgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBvYnNlcnZlTmV3TmF2aWdhdGlvbigpOwog
CiAgICAgLy8gRXZlbnQgcmVsYXRlZCBtZXRob2RzOgotICAgIHZvaWQgbW91c2VNb3ZlKGNvbnN0
IFdlYk1vdXNlRXZlbnQmKTsKLSAgICB2b2lkIG1vdXNlTGVhdmUoY29uc3QgV2ViTW91c2VFdmVu
dCYpOwotICAgIHZvaWQgbW91c2VEb3duKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKLSAgICB2b2lk
IG1vdXNlVXAoY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIHZvaWQgbW91c2VDb250ZXh0TWVu
dShjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgdm9pZCBtb3VzZURvdWJsZUNsaWNrKGNvbnN0
IFdlYk1vdXNlRXZlbnQmKTsKLSAgICBib29sIG1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVl
bEV2ZW50Jik7Ci0gICAgYm9vbCBnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7
CiAgICAgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBuZXdTY2FsZSwgZG91Ymxl
IGR1cmF0aW9uU2VjKTsKLSAgICBib29sIGtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQm
KTsKLSAgICBib29sIGNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7Ci0gICAgYm9v
bCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKIAogICAgIHZvaWQgbnVtYmVyT2ZX
aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKTsKICAgICB2b2lkIG51bWJlck9mVG91
Y2hFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCk7CkBAIC00NTUsNiArNDUwLDEwIEBAIHB1
YmxpYzoKICAgICAvLyBOb3RpZmljYXRpb24gdGhhdCBhIHBvcHVwIHdhcyBvcGVuZWQvY2xvc2Vk
LgogICAgIHZvaWQgcG9wdXBPcGVuZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29u
dGFpbmVyKTsKICAgICB2b2lkIHBvcHVwQ2xvc2VkKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBw
b3B1cENvbnRhaW5lcik7CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAgV2ViQ29yZTo6UGFn
ZVBvcHVwKiBvcGVuUGFnZVBvcHVwKFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudCosIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIG9yaWdpbkJvdW5kc0luUm9vdFZpZXcpOworICAgIHZvaWQgY2xvc2VQ
YWdlUG9wdXAoV2ViQ29yZTo6UGFnZVBvcHVwKik7CisjZW5kaWYKIAogICAgIHZvaWQgaGlkZUF1
dG9maWxsUG9wdXAoKTsKIApAQCAtNDkzLDYgKzQ5MiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpc2liaWxpdHlTdGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlLCBib29sKTsK
IAogICAgIFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBzZWxlY3RQb3B1cCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2VsZWN0UG9wdXAuZ2V0KCk7IH0KKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBi
b29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RQb3B1cCB8fCBtX3Bh
Z2VQb3B1cDsgfQorI2Vsc2UKKyAgICBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3QgeyByZXR1
cm4gbV9zZWxlY3RQb3B1cDsgfQorI2VuZGlmCiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IGV2ZW50IGxlYWRzIHRvIHNjcm9sbGluZy4KICAgICBzdGF0aWMgYm9vbCBtYXBLZXlDb2RlRm9y
U2Nyb2xsKGludCBrZXlDb2RlLApAQCAtNTk1LDYgKzU5OSwxNCBAQCBwcml2YXRlOgogICAgIHZv
aWQgcG9pbnRlckxvY2tNb3VzZUV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmKTsKICNlbmRpZgog
CisgICAgLy8gUGFnZVdpZGdldEV2ZW50SGFuZGxlciBmdW5jdGlvbnMKKyAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlTW91c2VMZWF2ZShXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYk1vdXNlRXZlbnQm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91c2VEb3duKFdlYkNvcmU6OkZy
YW1lJiwgY29uc3QgV2ViTW91c2VFdmVudCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVNb3VzZVVwKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViTW91c2VFdmVudCYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVy
ZUV2ZW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleUV2ZW50KGNvbnN0
IFdlYktleWJvYXJkRXZlbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlQ2hh
ckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKSBPVkVSUklERTsKKwogICAgIFdlYlZpZXdD
bGllbnQqIG1fY2xpZW50OwogICAgIFdlYkF1dG9maWxsQ2xpZW50KiBtX2F1dG9maWxsQ2xpZW50
OwogICAgIFdlYlBlcm1pc3Npb25DbGllbnQqIG1fcGVybWlzc2lvbkNsaWVudDsKQEAgLTY5Niw2
ICs3MDgsMTEgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgcG9wdXAgYXNzb2NpYXRlZCB3aXRoIGEg
c2VsZWN0IGVsZW1lbnQuCiAgICAgUmVmUHRyPFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyPiBtX3Nl
bGVjdFBvcHVwOwogCisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAgLy8gVGhlIHBvcHVwIGFz
c29jaWF0ZWQgd2l0aCBhbiBpbnB1dCBlbGVtZW50LgorICAgIFdlYlBhZ2VQb3B1cEltcGwqIG1f
cGFnZVBvcHVwOworI2VuZGlmCisKICAgICBPd25QdHI8V2ViRGV2VG9vbHNBZ2VudFByaXZhdGU+
IG1fZGV2VG9vbHNBZ2VudDsKICAgICBPd25QdHI8UGFnZU92ZXJsYXlMaXN0PiBtX3BhZ2VPdmVy
bGF5czsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136818</attachid>
            <date>2012-04-11 20:23:28 -0700</date>
            <delta_ts>2012-04-11 21:36:59 -0700</delta_ts>
            <desc>Patch 4</desc>
            <filename>bug-81081-20120412122326.patch</filename>
            <type>text/plain</type>
            <size>54004</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzOTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDFiYmE5NTVjOTQxMzEzMjI0NDU3NTg0ZDFhMTgwMWFmYmJiYWFlMmMuLmIyN2Y4NTU2MzZkMDVk
YjBhYjQ1NmY1MGE3OTJlNTMwOTFiYjRjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTA3IEBACisyMDEyLTA0LTExICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEFkZCBQYWdlUG9wdXAgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMDgxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYlBh
Z2VQb3B1cEltcGwgY2xhc3MsIHdoaWNoIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mCisgICAgICAg
IFdlYkNvcmU6OlBhZ2VQb3B1cCBpbnRlcmZhY2UgYW5kIFdlYktpdDo6V2ViUGFnZVBvcHVwIGlu
dGVyZmFjZS4gSXQncyBhCisgICAgICAgIFdlYldpZGdldCB3aGljaCBoYXMgYSBQYWdlIG9iamVj
dC4KKworICAgICAgICBJbiBvcmRlciB0byBzaGFyZSBjb2RlIGluIFdlYlZpZXdJbXBsIGFuZCBX
ZWJQYWdlUG9wdXBJbXBsLCB3ZSBtb3ZlIHNvbWUKKyAgICAgICAgY29kZSBvZiBXZWJWaWV3SW1w
bCBhbmQgV2ViRnJhbWVJbXBsIHRvIFBhZ2VXaWRnZXREZWxlZ2F0ZS4KKyAgICAgICAgUGFnZVdp
ZGdldERlbGVnYXRlIGlzIGEgc2V0IG9mIHN0YXRpYyBmdW5jdGlvbnMgYmVjYXVzZSB3ZSBjYW4n
dCB1c2UKKyAgICAgICAgdmlydHVhbCBpbmhlcml0YW5jZSBpbiB0aGlzIGNhc2UgYW5kIHdlIGRv
bid0IHdhbnQgdG8gbW92ZSBXZWJWaWV3J3MKKyAgICAgICAgZGF0YSBtZW1iZXJzIHRvIGFub3Ro
ZXIgY2xhc3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBtYWtlcyBubyBi
ZWhhdmlvciBjaGFuZ2UgeWV0LgorCisgICAgICAgICogV2ViS2l0Lmd5cDogQWRkIFBhZ2VXaWRn
ZXREZWxlZ2F0ZS57Y3BwLGh9IGFuZCBXZWJQYWdlUG9wdXBJbXBsLmguCisgICAgICAgICogc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBs
OjpoYXNPcGVuZWRQb3B1cCk6IFN1cHBvcnRzIHRoZSBQYWdlUG9wdXAuCisgICAgICAgIChXZWJL
aXQ6OkNocm9tZUNsaWVudEltcGw6Om9wZW5QYWdlUG9wdXApOgorICAgICAgICBqdXN0IGRlbGVn
YXRlIHRvIFdlYlZpZXdJbXBsOjpvcGVuUGFnZVBvcHVwKCkuCisgICAgICAgIChXZWJLaXQ6OkNo
cm9tZUNsaWVudEltcGw6OmNsb3NlUGFnZVBvcHVwKTogZGl0dG8uCisgICAgICAgICogc3JjL1Bh
Z2VXaWRnZXREZWxlZ2F0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjptYWluRnJhbWVW
aWV3KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdldERlbGVnYXRlOjphbmltYXRlKToKKyAg
ICAgICAgTW92ZWQgZnJvbSBhIHBhcnQgb2YgV2ViVmlld0ltcGw6OmFuaW1hdGllKCkKKyAgICAg
ICAgKFdlYktpdDo6UGFnZVdpZGdldERlbGVnYXRlOjpsYXlvdXQpOgorICAgICAgICBNb3ZlZCBm
cm9tIFdlYlZpZXdJbXBsOjpsYXlvdXQoKSBhbmQgV2ViRnJhbWVJbXBsOjpsYXlvdXQoKS4KKyAg
ICAgICAgKFdlYktpdDo6UGFnZVdpZGdldERlbGVnYXRlOjpwYWludCk6CisgICAgICAgIE1vdmVk
IGZyb20gV2ViRnJhbWVJbXBsOjpwYWludCgpIGFuZCBwYWludFdpdGhDb250ZXh0KCkuCisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAg
ICAgIE1vdmVkIGZyb20gYSBwYXJ0IG9mIFdlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KCku
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92
ZSk6CisgICAgICAgIENvbW1vbiBpbXBsZW1lbnRhdGlvbiBvZiBhbiBldmVudCBoYW5kbGluZy4K
KyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdldEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VMZWF2
ZSk6IGRpdHRvLgorICAgICAgICAoV2ViS2l0OjpQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZURvd24pOiBkaXR0by4KKyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdldEV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VVcCk6IGRpdHRvLgorICAgICAgICAoV2ViS2l0OjpQYWdlV2lkZ2V0
RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVdoZWVsKTogZGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OlBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOiBkaXR0by4KKyAgICAg
ICAgKiBzcmMvUGFnZVdpZGdldERlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJG
cmFtZUltcGwuY3BwOgorICAgICAgICBSZW1vdmUgbGF5b3V0KCksIHBhaW50V2l0aENvbnRleHQo
KSwgYW5kIHBhaW50KCkuIFRoZXkgYXJlIG1vdmVkIHRvCisgICAgICAgIFBhZ2VXaWRnZXREZWxl
Z2F0ZS4KKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisgICAgICAgIChXZWJGcmFtZUlt
cGwpOiBSZW1vdmUgbGF5b3V0KCksIHBhaW50V2l0aENvbnRleHQoKSwgYW5kIHBhaW50KCkuCisK
KyAgICAgICAgKiBzcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHA6CisgICAgICAgIChQYWdlUG9wdXBD
aHJvbWVDbGllbnQpOgorICAgICAgICBUaGlzIGlzIGEgbGlnaHQgaW1wbGVtZW50YXRpb24gb2Yg
Q2hyb21lQ2xpZW50IGZvciB0aGUgcGFnZSBpbgorICAgICAgICBXZWJQYWdlUG9wdXBJbXBsLiBU
aGlzIGlzIGEgZnJpZW5kIG9mIFdlYlBhZ2VQb3B1cEltcGwgYmVjYXNlIG9mIGVhc2Ugb2YKKyAg
ICAgICAgYWNjZXNzIHRvIGl0cyBtZW1iZXJzLgorICAgICAgICAoV2ViS2l0OjpQYWdlUG9wdXBD
aHJvbWVDbGllbnQ6OlBhZ2VQb3B1cENocm9tZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQb3B1cEltcGw6OldlYlBhZ2VQb3B1cEltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUG9wdXBJbXBsOjp+V2ViUGFnZVBvcHVwSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQb3B1cEltcGw6OmluaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpp
bml0UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OnNpemUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjphbmltYXRlKTogQ2FsbHMgUGFnZVdpZGdl
dERlbGVnYXRlOjphbmltYXRlKCkuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6
OmNvbXBvc2l0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmxheW91dCk6
IENhbGxzIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6bGF5b3V0KCkuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQb3B1cEltcGw6OnBhaW50KTogQ2FsbHMgUGFnZVdpZGdldERlbGVnYXRlOjpwYWludCgp
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpyZXNpemUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpoYW5kbGVLZXlFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUNoYXJFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUG9wdXBJbXBsOjpzZXRGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1
cEltcGw6OmNsb3NlKTogRGVsZXRlIHRoZSBwYWdlLCBhbmQga2lsbCBpdHNlbGYuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmNsb3NlUG9wdXApOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUG9wdXA6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYlBhZ2VQb3B1cEltcGwu
aDogQWRkZWQuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOiBJbml0aWFsaXplIG1fcGFnZVBvcHVwLgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlTW91c2VMZWF2ZSk6CisgICAgICAg
IFJlbmFtZWQgZnJvbSBtb3VzZUxlYXZlKCksIHVzZSBQYWdlV2lkZ2V0RGVsZWdhdGU6OmhhbmRs
ZU1vdXNlTGVhdmUoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRsZU1vdXNl
RG93bik6CisgICAgICAgIFJlbmFtZWQgZnJvbSBtb3VzZURvd24oKSwgdXNlIFBhZ2VXaWRnZXRE
ZWxlZ2F0ZTo6aGFuZGxlTW91c2VEb3duKCkuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpoYW5kbGVNb3VzZVVwKToKKyAgICAgICAgUmVuYW1lZCBmcm9tIG1vdXNlVXAoKSwgdXNlIFBh
Z2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlTW91c2VVcCgpLgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2Nyb2xsQnkpOiBDYWxscyByZW5hbWVkIGhhbmRsZU1vdXNlV2hlZWwoKS4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRsZUdlc3R1cmVFdmVudCk6IFJlbmFtZWQg
ZnJvbSBnZXN0dXJlRXZlbnQoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRs
ZUtleUV2ZW50KToKKyAgICAgICAgUmVuYW1lZCBmcm9tIGtleUV2ZW50KCkuIEZvcndhcmQga2V5
IGV2ZW50cyB0byBhIFBhZ2VQb3B1cCBpZiBpdCBpcyBvcGVuLgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6aGFuZGxlQ2hhckV2ZW50KToKKyAgICAgICAgUmVuYW1lZCBmcm9tIGNoYXJF
dmVudCgpLiBGb3J3YXJkIGNoYXIgZXZlbnRzIHRvIGEgUGFnZVBvcHVwIGlmIGl0IGlzIG9wZW4u
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpvcGVuUGFnZVBvcHVwKToKKyAgICAgICAg
QWRkZWQuIEluc3RhbnRpYXRlIGEgV2ViUGFnZVBvcHVwSW1wbCwgY2FsY3VsYXRlcyBhIGdvb2Qg
Ym91bmRpbmcKKyAgICAgICAgcmVjdGFuZ2xlIG9mIHRoZSBwYWdlIHBvcHVwIGZyb20gdGhlIHNw
ZWNpZmllZCBlbGVtZW50IHJlY3RhbmdsZSwKKyAgICAgICAgaW5pdGlhbGl6ZSB0aGUgV2ViUGFn
ZVBvcHVwSW1wbCwgYW5kIHN0b3AgY2FyZXQgYmxpbmsuCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpjbG9zZVBhZ2VQb3B1cCk6CisgICAgICAgIENsb3NlIHRoZSBwb3B1cCwgY2xlYXIg
bV9wYWdlUG9wdXAsIGFuZCByZXN1bWUgY2FyZXQgYmxpbmsuCisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKTogVXNlcyBQYWdlV2lkZ2V0RGVsZWdhdGU6OmFu
aW1hdGUoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmxheW91dCk6IFVzZXMgUGFn
ZVdpZGdldERlbGVnYXRlOjpsYXlvdXQoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnBhaW50KTogVXNlcyBQYWdlV2lkZ2V0RGVsZWdhdGU6OnBhaW50KCkuCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KTogVXNlcyBQYWdlV2lkZ2V0RGVsZWdh
dGU6OmhhbmRsZUlucHV0RXZlbnQoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNl
dEZvY3VzKTogSGlkZSBhbGwgdGhlIHBvcHVwcy4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OmhpZGVQb3B1cHMpOiBIaWRlIHRoZSBwYWdlIHBvcHVwIHRvby4KKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omhhc09wZW5lZFBv
cHVwKTogQ2hlY2tzIHRoZSBwYWdlIHBvcHVwIHRvby4KKwogMjAxMi0wNC0xMSAgRGF2aWQgRG9y
d2luICA8ZGRvcndpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGtleVN5c3RlbSBhdHRy
aWJ1dGUgdG8gY2FuUGxheVR5cGUoKSBmb3IgRW5jcnlwdGVkIE1lZGlhIEV4dGVuc2lvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBkNmE3ZjcxMzYxYzMwOTgxMTkxNGEyMzJlZGJm
MmViMDA1Yzg3ZjhmLi5iY2VmZmFhMzlmNjMzMzAxNjNmYzA3MDY2OGY5YzI0NGI3ZGM0MmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC00NTgsNiArNDU4LDggQEAKICAgICAgICAg
ICAgICAgICAnc3JjL1BhZ2VPdmVybGF5LmgnLAogICAgICAgICAgICAgICAgICdzcmMvUGFnZU92
ZXJsYXlMaXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9QYWdlT3ZlcmxheUxpc3QuaCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9QYWdlV2lkZ2V0RGVsZWdhdGUuY3BwJywKKyAgICAgICAg
ICAgICAgICAnc3JjL1BhZ2VXaWRnZXREZWxlZ2F0ZS5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Q
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1BsYXRm
b3JtU3VwcG9ydC5jcHAnLApAQCAtNjExLDYgKzYxMyw3IEBACiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJOb3RpZmljYXRpb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk9wdGlvbkVs
ZW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwJywK
KyAgICAgICAgICAgICAgICAnc3JjL1dlYlBhZ2VQb3B1cEltcGwuaCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJQYWdlU2VyaWFsaXplci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
UGFnZVNlcmlhbGl6ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQYWdlU2Vy
aWFsaXplckltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuY3BwCmluZGV4IDQyNzM1YTQ2ZDkyZTFjMDg3MDA2NmJmOWI0Y2Y5ZDlkMzViM2Fm
ZDYuLjE5OTJjZDRhYWFmNjVkZDkxZjUwNjFjZGY5MzVhMjhmYTAwNWIxZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC05NzcsNyAr
OTc3LDcgQEAgYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93
c01lbnVXcml0aW5nRGlyZWN0aW9uKCkKIAogYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpoYXNPcGVu
ZWRQb3B1cCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICEhbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgp
OworICAgIHJldHVybiBtX3dlYlZpZXctPmhhc09wZW5lZFBvcHVwKCk7CiB9CiAKIFBhc3NSZWZQ
dHI8UG9wdXBNZW51PiBDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51
Q2xpZW50KiBjbGllbnQpIGNvbnN0CkBAIC05OTQsMTUgKzk5NCwxNCBAQCBQYXNzUmVmUHRyPFNl
YXJjaFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBv
cHVwTWVudUNsaQogfQogCiAjaWYgRU5BQkxFKFBBR0VfUE9QVVApCi1QYWdlUG9wdXAqIENocm9t
ZUNsaWVudEltcGw6Om9wZW5QYWdlUG9wdXAoUGFnZVBvcHVwQ2xpZW50KiwgY29uc3QgSW50UmVj
dCYpCitQYWdlUG9wdXAqIENocm9tZUNsaWVudEltcGw6Om9wZW5QYWdlUG9wdXAoUGFnZVBvcHVw
Q2xpZW50KiBjbGllbnQsIGNvbnN0IEludFJlY3QmIG9yaWdpbkJvdW5kc0luUm9vdFZpZXcpCiB7
Ci0gICAgLy8gRklYTUU6IEltcGVsZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbV93ZWJWaWV3LT5vcGVuUGFnZVBvcHVwKGNsaWVudCwgb3JpZ2luQm91bmRzSW5Sb290Vmll
dyk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Y2xvc2VQYWdlUG9wdXAoUGFnZVBvcHVw
KikKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Y2xvc2VQYWdlUG9wdXAoUGFnZVBvcHVwKiBwb3B1
cCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgbV93ZWJWaWV3LT5jbG9z
ZVBhZ2VQb3B1cChwb3B1cCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1BhZ2VXaWRnZXREZWxlZ2F0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2NiZDg3ZjcwMWRl
YzMwMjljYTU4OTRiY2E5NWExY2Y1ZGRkNjJiYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1BhZ2VXaWRnZXREZWxlZ2F0ZS5jcHAKQEAgLTAsMCArMSwyMjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFnZVdpZGdldERlbGVnYXRlLmgiCisK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIlBh
Z2VPdmVybGF5TGlzdC5oIgorI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKKyNpbmNsdWRlICJX
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oIgorI2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29u
dGV4dEJ1aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgaW5saW5lIEZy
YW1lVmlldyogbWFpbkZyYW1lVmlldyhQYWdlKiBwYWdlKQoreworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFwYWdlLT5tYWluRnJhbWUoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIHBhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCk7Cit9CisKK3ZvaWQg
UGFnZVdpZGdldERlbGVnYXRlOjphbmltYXRlKFBhZ2UqIHBhZ2UsIGRvdWJsZSBtb25vdG9uaWNG
cmFtZUJlZ2luVGltZSkKK3sKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lVmlldyhwYWdlKTsKKyAgICBpZiAoIXZpZXcp
CisgICAgICAgIHJldHVybjsKKyAgICBkb3VibGUgdGltZVNoaWZ0ID0gY3VycmVudFRpbWUoKSAt
IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIHZpZXctPnNlcnZpY2VTY3JpcHRl
ZEFuaW1hdGlvbnMoY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChtb25vdG9uaWNGcmFtZUJl
Z2luVGltZSArIHRpbWVTaGlmdCkpOworI2VuZGlmCit9CisKK3ZvaWQgUGFnZVdpZGdldERlbGVn
YXRlOjpsYXlvdXQoUGFnZSogcGFnZSkKK3sKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJh
bWVWaWV3KHBhZ2UpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuOworICAgIC8vIElu
IG9yZGVyIGZvciBvdXIgY2hpbGQgSFdORHMgKE5hdGl2ZVdpbmRvd1dpZGdldHMpIHRvIHVwZGF0
ZSBwcm9wZXJseSwKKyAgICAvLyB0aGV5IG5lZWQgdG8gYmUgdG9sZCB0aGF0IHdlIGFyZSB1cGRh
dGluZyB0aGUgc2NyZWVuLiBUaGUgcHJvYmxlbSBpcyB0aGF0CisgICAgLy8gdGhlIG5hdGl2ZSB3
aWRnZXRzIG5lZWQgdG8gcmVjYWxjdWxhdGUgdGhlaXIgY2xpcCByZWdpb24gYW5kIG5vdCBvdmVy
bGFwCisgICAgLy8gYW55IG9mIG91ciBub24tbmF0aXZlIHdpZGdldHMuIFRvIGZvcmNlIHRoZSBy
ZXNpemluZywgY2FsbAorICAgIC8vIHNldEZyYW1lUmVjdCgpLiBUaGlzIHdpbGwgYmUgYSBxdWlj
ayBvcGVyYXRpb24gZm9yIG1vc3QgZnJhbWVzLCBidXQgdGhlCisgICAgLy8gTmF0aXZlV2luZG93
V2lkZ2V0cyB3aWxsIHVwZGF0ZSBhIHByb3BlciBjbGlwcGluZyByZWdpb24uCisgICAgdmlldy0+
c2V0RnJhbWVSZWN0KHZpZXctPmZyYW1lUmVjdCgpKTsKKworICAgIC8vIHNldEZyYW1lUmVjdCBt
YXkgaGF2ZSB0aGUgc2lkZS1lZmZlY3Qgb2YgY2F1c2luZyBleGlzdGluZyBwYWdlIGxheW91dCB0
bworICAgIC8vIGJlIGludmFsaWRhdGVkLCBzbyBsYXlvdXQgbmVlZHMgdG8gYmUgY2FsbGVkIGxh
c3QuCisgICAgdmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwor
fQorCit2b2lkIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6cGFpbnQoUGFnZSogcGFnZSwgUGFnZU92ZXJs
YXlMaXN0KiBvdmVybGF5cywgV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3Qp
Cit7CisgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgR3JhcGhp
Y3NDb250ZXh0QnVpbGRlciBidWlsZGVyKGNhbnZhcyk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBn
YyA9IGJ1aWxkZXIuY29udGV4dCgpOworICAgIEludFJlY3QgZGlydHlSZWN0KHJlY3QpOworICAg
IGdjLnNhdmUoKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJhbWVWaWV3KHBhZ2UpOwor
ICAgIGlmICh2aWV3ICYmIHBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKSB7CisgICAgICAg
IGdjLmNsaXAoZGlydHlSZWN0KTsKKyAgICAgICAgdmlldy0+cGFpbnQoJmdjLCBkaXJ0eVJlY3Qp
OworICAgICAgICBpZiAob3ZlcmxheXMpCisgICAgICAgICAgICBvdmVybGF5cy0+cGFpbnRXZWJG
cmFtZShnYyk7CisgICAgfSBlbHNlCisgICAgICAgIGdjLmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBnYy5yZXN0b3JlKCk7Cit9CisK
K2Jvb2wgUGFnZVdpZGdldERlbGVnYXRlOjpoYW5kbGVJbnB1dEV2ZW50KFBhZ2UqIHBhZ2UsIFBh
Z2VXaWRnZXRFdmVudEhhbmRsZXImIGhhbmRsZXIsIGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50
KQoreworICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UgPyBwYWdlLT5tYWluRnJhbWUoKSA6IDA7Cisg
ICAgc3dpdGNoIChldmVudC50eXBlKSB7CisKKyAgICAvLyBGSVhNRTogV2ViS2l0IHNlZW1zIHRv
IGFsd2F5cyByZXR1cm4gZmFsc2Ugb24gbW91c2UgZXZlbnRzIHByb2Nlc3NpbmcKKyAgICAvLyBt
ZXRob2RzLiBGb3Igbm93IHdlJ2xsIGFzc3VtZSBpdCBoYXMgcHJvY2Vzc2VkIHRoZW0gKGFzIHdl
IGFyZSBvbmx5CisgICAgLy8gaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGtleWJvYXJkIGV2ZW50cyBh
cmUgcHJvY2Vzc2VkKS4KKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlTW92ZToKKyAgICAg
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBoYW5kbGVyLmhhbmRsZU1vdXNlTW92ZSgqZnJhbWUsICpzdGF0aWNfY2FzdDxj
b25zdCBXZWJNb3VzZUV2ZW50Kj4oJmV2ZW50KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VMZWF2ZToKKyAgICAgICAgaWYgKCFmcmFtZSB8fCAh
ZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBoYW5kbGVy
LmhhbmRsZU1vdXNlTGVhdmUoKmZyYW1lLCAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVu
dCo+KCZldmVudCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Ok1vdXNlRG93bjoKKyAgICAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBoYW5kbGVyLmhhbmRsZU1vdXNlRG93bigq
ZnJhbWUsICpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmV2ZW50KSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VVcDoKKyAgICAg
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBoYW5kbGVyLmhhbmRsZU1vdXNlVXAoKmZyYW1lLCAqc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViTW91c2VFdmVudCo+KCZldmVudCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbDoKKyAgICAgICAgaWYgKCFmcmFtZSB8fCAh
ZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IGhhbmRsZXIuaGFuZGxlTW91c2VXaGVlbCgqZnJhbWUsICpzdGF0aWNfY2FzdDxjb25zdCBXZWJN
b3VzZVdoZWVsRXZlbnQqPigmZXZlbnQpKTsKKworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6UmF3
S2V5RG93bjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OktleURvd246CisgICAgY2FzZSBXZWJJ
bnB1dEV2ZW50OjpLZXlVcDoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIuaGFuZGxlS2V5RXZlbnQo
KnN0YXRpY19jYXN0PGNvbnN0IFdlYktleWJvYXJkRXZlbnQqPigmZXZlbnQpKTsKKworICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6Q2hhcjoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIuaGFuZGxlQ2hh
ckV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJLZXlib2FyZEV2ZW50Kj4oJmV2ZW50KSk7CisK
KyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlU2Nyb2xsQmVnaW46CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5k
OgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZToKKyAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OgorICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZUZsaW5nQ2FuY2VsOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRh
cDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXBEb3duOgorICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIuaGFu
ZGxlR2VzdHVyZUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmZXZl
bnQpKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6OlRvdWNoU3RhcnQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaE1vdmU6
CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaEVuZDoKKyAgICBjYXNlIFdlYklucHV0RXZl
bnQ6OlRvdWNoQ2FuY2VsOgorICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+dmlldygpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gaGFuZGxlci5oYW5kbGVU
b3VjaEV2ZW50KCpmcmFtZSwgKnN0YXRpY19jYXN0PGNvbnN0IFdlYlRvdWNoRXZlbnQqPigmZXZl
bnQpKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVnaW46CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlUGluY2hFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hVcGRh
dGU6CisgICAgICAgIC8vIEZJWE1FOiBPbmNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50IGlzIHVwZGF0
ZWQgdG8gc3VwcG9ydCBwaW5jaCwgdGhpcworICAgICAgICAvLyBzaG91bGQgY2FsbCBoYW5kbGVH
ZXN0dXJlRXZlbnQsIGp1c3QgbGlrZSBpdCBjdXJyZW50bHkgZG9lcyBmb3IKKyAgICAgICAgLy8g
Z2VzdHVyZSBzY3JvbGwuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8g
RGVmYXVsdCBoYW5kbGVycyBmb3IgUGFnZVdpZGdldEV2ZW50SGFuZGxlcgorCit2b2lkIFBhZ2VX
aWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZShGcmFtZSYgbWFpbkZyYW1lLCBjb25z
dCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICAvLyBXZSBjYWxsIG1vdXNlTW92ZWQgaGVy
ZSBpbnN0ZWFkIG9mIGhhbmRsZU1vdXNlTW92ZWRFdmVudCBiZWNhdXNlIHdlIG5lZWQKKyAgICAv
LyBvdXIgQ2hyb21lQ2xpZW50SW1wbCB0byByZWNlaXZlIGNoYW5nZXMgdG8gdGhlIG1vdXNlIHBv
c2l0aW9uIGFuZCB0b29sdGlwCisgICAgLy8gdGV4dCwgYW5kIG1vdXNlTW92ZWQgaGFuZGxlcyBh
bGwgb2YgdGhhdC4KKyAgICBtYWluRnJhbWUuZXZlbnRIYW5kbGVyKCktPm1vdXNlTW92ZWQoUGxh
dGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihtYWluRnJhbWUudmlldygpLCBldmVudCkpOworfQorCit2
b2lkIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTGVhdmUoRnJhbWUmIG1haW5G
cmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgbWFpbkZyYW1lLmV2ZW50
SGFuZGxlcigpLT5oYW5kbGVNb3VzZU1vdmVFdmVudChQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVy
KG1haW5GcmFtZS52aWV3KCksIGV2ZW50KSk7Cit9CisKK3ZvaWQgUGFnZVdpZGdldEV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VEb3duKEZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZl
bnQmIGV2ZW50KQoreworICAgIG1haW5GcmFtZS5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQ
cmVzc0V2ZW50KFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIobWFpbkZyYW1lLnZpZXcoKSwgZXZl
bnQpKTsKK30KKwordm9pZCBQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVVwKEZy
YW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIG1haW5G
cmFtZS5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoUGxhdGZvcm1Nb3Vz
ZUV2ZW50QnVpbGRlcihtYWluRnJhbWUudmlldygpLCBldmVudCkpOworfQorCitib29sIFBhZ2VX
aWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlV2hlZWwoRnJhbWUmIG1haW5GcmFtZSwgY29u
c3QgV2ViTW91c2VXaGVlbEV2ZW50JiBldmVudCkKK3sKKyAgICByZXR1cm4gbWFpbkZyYW1lLmV2
ZW50SGFuZGxlcigpLT5oYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIo
bWFpbkZyYW1lLnZpZXcoKSwgZXZlbnQpKTsKK30KKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Citib29sIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoRnJhbWUmIG1h
aW5GcmFtZSwgY29uc3QgV2ViVG91Y2hFdmVudCYgZXZlbnQpCit7CisgICAgcmV0dXJuIG1haW5G
cmFtZS5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVG91Y2hFdmVudChQbGF0Zm9ybVRvdWNoRXZlbnRC
dWlsZGVyKG1haW5GcmFtZS52aWV3KCksIGV2ZW50KSk7Cit9CisjZW5kaWYKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVnYXRlLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QYWdlV2lkZ2V0RGVsZWdhdGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kYmJlMjY5YWNiNzVhZDNkNmRhMjliMDQxOTE3ZjcwNTBhOWE3YjJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVnYXRlLmgKQEAg
LTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgUGFnZVdpZGdldERlbGVnYXRlX2gKKyNkZWZpbmUgUGFnZVdp
ZGdldERlbGVnYXRlX2gKKworI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJXaWRnZXQu
aCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lOworY2xhc3MgUGFnZTsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBhZ2VPdmVybGF5TGlzdDsKK2NsYXNzIFdl
Ykdlc3R1cmVFdmVudDsKK2NsYXNzIFdlYklucHV0RXZlbnQ7CitjbGFzcyBXZWJLZXlib2FyZEV2
ZW50OworY2xhc3MgV2ViTW91c2VFdmVudDsKK2NsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKK2Ns
YXNzIFdlYlRvdWNoRXZlbnQ7CisKK2NsYXNzIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZU1vdmUoV2ViQ29yZTo6RnJhbWUmIG1h
aW5GcmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVN
b3VzZUxlYXZlKFdlYkNvcmU6OkZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91c2VEb3duKFdlYkNvcmU6OkZyYW1lJiBtYWlu
RnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91
c2VVcChXZWJDb3JlOjpGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJNb3VzZUV2ZW50Jik7Cisg
ICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlV2hlZWwoV2ViQ29yZTo6RnJhbWUmIG1haW5GcmFt
ZSwgY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtl
eUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhh
bmRsZUNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JikgPSAwOworI2lmIEVOQUJMRShH
RVNUVVJFX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0
IFdlYkdlc3R1cmVFdmVudCYpID0gMDsKKyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisgICAgdmlydHVhbCBib29sIGhhbmRsZVRvdWNoRXZlbnQoV2ViQ29yZTo6RnJhbWUmIG1haW5G
cmFtZSwgY29uc3QgV2ViVG91Y2hFdmVudCYpOworI2VuZGlmCisgICAgdmlydHVhbCB+UGFnZVdp
ZGdldEV2ZW50SGFuZGxlcigpIHsgfQorfTsKKworCisvLyBDb21tb24gaW1wbGVtZW50YXRpb24g
b2YgV2ViVmlld0ltcGwgYW5kIFdlYlBhZ2VQb3B1cEltcGwuCitjbGFzcyBQYWdlV2lkZ2V0RGVs
ZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGFuaW1hdGUoV2ViQ29yZTo6UGFnZSos
IGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CisgICAgc3RhdGljIHZvaWQgbGF5b3V0
KFdlYkNvcmU6OlBhZ2UqKTsKKyAgICBzdGF0aWMgdm9pZCBwYWludChXZWJDb3JlOjpQYWdlKiwg
UGFnZU92ZXJsYXlMaXN0KiwgV2ViQ2FudmFzKiwgY29uc3QgV2ViUmVjdCYpOworICAgIHN0YXRp
YyBib29sIGhhbmRsZUlucHV0RXZlbnQoV2ViQ29yZTo6UGFnZSosIFBhZ2VXaWRnZXRFdmVudEhh
bmRsZXImLCBjb25zdCBXZWJJbnB1dEV2ZW50Jik7CisKK3ByaXZhdGU6CisgICAgUGFnZVdpZGdl
dERlbGVnYXRlKCkgeyB9Cit9OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDgxM2M5ZDcwNzQzMzljNDg3ZTRiMjRmZWY4ZmNm
NTE1ZDNiZDJhNzkuLjNmOWQ5ZDMxMTFlYjBiY2UxOGY3NjZlMzNjOTMxNThjOWI3Mzk4MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMjA1Niwz
NSArMjA1Niw2IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lSW1wbDo6Y3JlYXRlQ2hpbGRG
cmFtZSgKICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgV2ViRnJh
bWVJbXBsOjpsYXlvdXQoKQotewotICAgIC8vIGxheW91dCB0aGlzIGZyYW1lCi0gICAgRnJhbWVW
aWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwotICAgIGlmICh2aWV3KQotICAgICAgICB2aWV3
LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7Ci19Ci0KLXZvaWQgV2Vi
RnJhbWVJbXBsOjpwYWludFdpdGhDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgZ2MsIGNvbnN0IFdl
YlJlY3QmIHJlY3QpCi17Ci0gICAgSW50UmVjdCBkaXJ0eVJlY3QocmVjdCk7Ci0gICAgZ2Muc2F2
ZSgpOwotICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICYmIGZyYW1lVmlldygpKSB7Ci0gICAg
ICAgIGdjLmNsaXAoZGlydHlSZWN0KTsKLSAgICAgICAgZnJhbWVWaWV3KCktPnBhaW50KCZnYywg
ZGlydHlSZWN0KTsKLSAgICAgICAgaWYgKHZpZXdJbXBsKCktPnBhZ2VPdmVybGF5cygpKQotICAg
ICAgICAgICAgdmlld0ltcGwoKS0+cGFnZU92ZXJsYXlzKCktPnBhaW50V2ViRnJhbWUoZ2MpOwot
ICAgIH0gZWxzZQotICAgICAgICBnYy5maWxsUmVjdChkaXJ0eVJlY3QsIENvbG9yOjp3aGl0ZSwg
Q29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgZ2MucmVzdG9yZSgpOwotfQotCi12b2lkIFdlYkZy
YW1lSW1wbDo6cGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17
Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcGFpbnRXaXRo
Q29udGV4dChHcmFwaGljc0NvbnRleHRCdWlsZGVyKGNhbnZhcykuY29udGV4dCgpLCByZWN0KTsK
LX0KLQogdm9pZCBXZWJGcmFtZUltcGw6OmNyZWF0ZUZyYW1lVmlldygpCiB7CiAgICAgQVNTRVJU
KG1fZnJhbWUpOyAvLyBJZiBtX2ZyYW1lIGRvZXNuJ3QgZXhpc3QsIHdlIHByb2JhYmx5IGRpZG4n
dCBpbml0IHByb3Blcmx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
aAppbmRleCA5Yzg2ZDc1MTRhYzAwZWE1ZjFkYmI4MTc3OWIzY2EzNTgxNmYzNjc1Li4zYWJjNmM0
OTM0NGQxZTM2OTA2NDc5MWFlZWZhMGIzYTAwNDAyOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuaApAQCAtMjMwLDkgKzIzMCw2IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVDaGlsZEZyYW1lKAogICAgICAgICBjb25z
dCBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVt
ZW50Kik7CiAKLSAgICB2b2lkIGxheW91dCgpOwotICAgIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwg
Y29uc3QgV2ViUmVjdCYpOwotICAgIHZvaWQgcGFpbnRXaXRoQ29udGV4dChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBXZWJSZWN0Jik7CiAgICAgdm9pZCBjcmVhdGVGcmFtZVZpZXco
KTsKIAogICAgIHN0YXRpYyBXZWJGcmFtZUltcGwqIGZyb21GcmFtZShXZWJDb3JlOjpGcmFtZSog
ZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBv
cHVwSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBs
LmNwcAppbmRleCBiYzgxMGM3YjFiMTY4ZGI3ZWNiZTIxNWQwMTljNjM0NzNmMWI0ZmQyLi5iMmI2
YWExNTY5MzI3OTQ2MzgzNzg1ZDE1YjNjMDFiMDAyMjNjNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjksMjEgKzI5LDI2NiBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYWdlUG9wdXBJbXBsLmgi
CiAKKyNpbmNsdWRlICJFbXB0eUNsaWVudHMuaCIKKyNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgor
I2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1
ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRlICJQYWdl
V2lkZ2V0RGVsZWdhdGUuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYklu
cHV0RXZlbnQuaCIKKyNpbmNsdWRlICJXZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQb3B1cC5oIgorI2luY2x1ZGUgIldlYldpZGdldENsaWVudC5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKyNpZiBFTkFCTEUo
UEFHRV9QT1BVUCkKKworY2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50IDogcHVibGljIEVtcHR5
Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlUG9wdXBDaHJvbWVD
bGllbnQpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgZXhw
bGljaXQgUGFnZVBvcHVwQ2hyb21lQ2xpZW50KFdlYlBhZ2VQb3B1cEltcGwqIHBvcHVwKSA6IG1f
cG9wdXAocG9wdXApCisgICAgeworICAgICAgICBBU1NFUlQobV9wb3B1cC0+d2lkZ2V0Q2xpZW50
KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3dTb29u
KCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fcG9wdXAtPmNsb3NlUG9wdXAoKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCB3aW5kb3dSZWN0KCkgT1ZFUlJJREUKKyAgICB7Cisg
ICAgICAgIHJldHVybiBGbG9hdFJlY3QobV9wb3B1cC0+bV93aW5kb3dSZWN0SW5TY3JlZW4ueCwg
bV9wb3B1cC0+bV93aW5kb3dSZWN0SW5TY3JlZW4ueSwgbV9wb3B1cC0+bV93aW5kb3dSZWN0SW5T
Y3JlZW4ud2lkdGgsIG1fcG9wdXAtPm1fd2luZG93UmVjdEluU2NyZWVuLmhlaWdodCk7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
KSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9wb3B1cC0+bV93aW5kb3dSZWN0SW5TY3JlZW4g
PSBJbnRSZWN0KHJlY3QpOworICAgICAgICBtX3BvcHVwLT53aWRnZXRDbGllbnQoKS0+c2V0V2lu
ZG93UmVjdChtX3BvcHVwLT5tX3dpbmRvd1JlY3RJblNjcmVlbik7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUs
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREUKKyAgICB7CisjaWZuZGVmIE5ERUJVRworICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIkNPTlNPTEUgTUVTU1NBR0U6JXU6ICVzXG4iLCBsaW5lTnVt
YmVyLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFN
KG1lc3NhZ2UpOworICAgICAgICBVTlVTRURfUEFSQU0obGluZU51bWJlcik7CisjZW5kaWYKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29u
c3QgSW50UmVjdCYgcGFpbnRSZWN0LCBib29sKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaWYg
KHBhaW50UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fcG9w
dXAtPndpZGdldENsaWVudCgpLT5kaWRJbnZhbGlkYXRlUmVjdChwYWludFJlY3QpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNv
bnN0IEludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBPVkVSUklE
RQorICAgIHsKKyAgICAgICAgbV9wb3B1cC0+d2lkZ2V0Q2xpZW50KCktPmRpZFNjcm9sbFJlY3Qo
c2Nyb2xsRGVsdGEud2lkdGgoKSwgc2Nyb2xsRGVsdGEuaGVpZ2h0KCksIGludGVyc2VjdGlvbihz
Y3JvbGxSZWN0LCBjbGlwUmVjdCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIGJvb2wg
aW1tZWRpYXRlKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaW52YWxpZGF0ZUNvbnRlbnRzQW5k
Um9vdFZpZXcodXBkYXRlUmVjdCwgaW1tZWRpYXRlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVBbmltYXRpb24oKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9wb3B1cC0+
d2lkZ2V0Q2xpZW50KCktPnNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkKiB3ZWJWaWV3KCkgY29uc3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3BvcHVwLT5tX3dlYlZpZXc7CisgICAgfQorCisgICAgV2ViUGFnZVBvcHVwSW1wbCogbV9wb3B1
cDsKK307CisKIC8vIFdlYlBhZ2VQb3B1cEltcGwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0vLyBGSVhNRTogV2ViUGFn
ZVBvcHVwSW1wbCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIHdyaXR0ZW4gaGVyZS4KK1dlYlBhZ2VQ
b3B1cEltcGw6OldlYlBhZ2VQb3B1cEltcGwoV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQpCisgICAg
OiBtX3dpZGdldENsaWVudChjbGllbnQpCit7CisgICAgQVNTRVJUKGNsaWVudCk7Cit9CisKK1dl
YlBhZ2VQb3B1cEltcGw6On5XZWJQYWdlUG9wdXBJbXBsKCkKK3sKKyAgICBBU1NFUlQoIW1fcGFn
ZSk7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aW5pdChXZWJWaWV3SW1wbCogd2ViVmll
dywgUGFnZVBvcHVwQ2xpZW50KiBwb3B1cENsaWVudCwgY29uc3QgSW50UmVjdCYgYm91bmRzSW5T
Y3JlZW4pCit7CisgICAgQVNTRVJUKHdlYlZpZXcpOworICAgIEFTU0VSVChwb3B1cENsaWVudCk7
CisgICAgbV93ZWJWaWV3ID0gd2ViVmlldzsKKyAgICBtX3BvcHVwQ2xpZW50ID0gcG9wdXBDbGll
bnQ7CisKKyAgICBtX3dpZGdldENsaWVudC0+c2V0V2luZG93UmVjdChib3VuZHNJblNjcmVlbik7
CisgICAgbV93aW5kb3dSZWN0SW5TY3JlZW4gPSBib3VuZHNJblNjcmVlbjsKKyAgICBpZiAoIWlu
aXRQYWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3dpZGdldENsaWVudC0+c2hv
dyhXZWJOYXZpZ2F0aW9uUG9saWN5KCkpOworCisgICAgc2V0Rm9jdXModHJ1ZSk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJQYWdlUG9wdXBJbXBsOjppbml0UGFnZSgpCit7Cisg
ICAgUGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVudHM7CisgICAgZmlsbFdpdGhFbXB0eUNsaWVu
dHMocGFnZUNsaWVudHMpOworICAgIG1fY2hyb21lQ2xpZW50ID0gYWRvcHRQdHIobmV3IFBhZ2VQ
b3B1cENocm9tZUNsaWVudCh0aGlzKSk7CisgICAgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0g
bV9jaHJvbWVDbGllbnQuZ2V0KCk7CisKKyAgICBtX3BhZ2UgPSBhZG9wdFB0cihuZXcgUGFnZShw
YWdlQ2xpZW50cykpOworICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0U2NyaXB0RW5hYmxlZCh0
cnVlKTsKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEFsbG93U2NyaXB0c1RvQ2xvc2VXaW5k
b3dzKHRydWUpOworCisgICAgc3RhdGljIEZyYW1lTG9hZGVyQ2xpZW50KiBlbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50ID0gIG5ldyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OworICAgIFJlZlB0cjxGcmFt
ZT4gZnJhbWUgPSBGcmFtZTo6Y3JlYXRlKG1fcGFnZS5nZXQoKSwgMCwgZW1wdHlGcmFtZUxvYWRl
ckNsaWVudCk7CisgICAgZnJhbWUtPnNldFZpZXcoRnJhbWVWaWV3OjpjcmVhdGUoZnJhbWUuZ2V0
KCkpKTsKKyAgICBmcmFtZS0+aW5pdCgpOworICAgIGZyYW1lLT52aWV3KCktPnJlc2l6ZShtX3Bv
cHVwQ2xpZW50LT5jb250ZW50U2l6ZSgpKTsKKyAgICBmcmFtZS0+dmlldygpLT5zZXRUcmFuc3Bh
cmVudChmYWxzZSk7CisKKyAgICBEb2N1bWVudFdyaXRlciogd3JpdGVyID0gZnJhbWUtPmxvYWRl
cigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKTsKKyAgICB3cml0ZXItPnNldE1J
TUVUeXBlKCJ0ZXh0L2h0bWwiKTsKKyAgICB3cml0ZXItPnNldEVuY29kaW5nKCJVVEYtOCIsIGZh
bHNlKTsKKyAgICB3cml0ZXItPmJlZ2luKCk7CisgICAgbV9wb3B1cENsaWVudC0+d3JpdGVEb2N1
bWVudCgqd3JpdGVyKTsKKyAgICB3cml0ZXItPmVuZCgpOworCisgICAgZnJhbWUtPnNjcmlwdCgp
LT5pbnN0YWxsRnVuY3Rpb25zRm9yUGFnZVBvcHVwKGZyYW1lLmdldCgpLCBtX3BvcHVwQ2xpZW50
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworV2ViU2l6ZSBXZWJQYWdlUG9wdXBJbXBsOjpzaXpl
KCkKK3sKKyAgICByZXR1cm4gbV9wb3B1cENsaWVudC0+Y29udGVudFNpemUoKTsKK30KKwordm9p
ZCBXZWJQYWdlUG9wdXBJbXBsOjphbmltYXRlKGRvdWJsZSkKK3sKKyAgICBQYWdlV2lkZ2V0RGVs
ZWdhdGU6OmFuaW1hdGUobV9wYWdlLmdldCgpLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KSk7Cit9CisKK3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6Y29tcG9zaXRlKGJvb2wpCit7Cit9CisK
K3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6bGF5b3V0KCkKK3sKKyAgICBQYWdlV2lkZ2V0RGVsZWdh
dGU6OmxheW91dChtX3BhZ2UuZ2V0KCkpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnBh
aW50KFdlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFBhZ2VX
aWRnZXREZWxlZ2F0ZTo6cGFpbnQobV9wYWdlLmdldCgpLCAwLCBjYW52YXMsIHJlY3QpOworfQor
Cit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnJlc2l6ZShjb25zdCBXZWJTaXplJiBuZXdTaXplKQor
eworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+
cmVzaXplKG5ld1NpemUpOworICAgIG1fd2lkZ2V0Q2xpZW50LT5kaWRJbnZhbGlkYXRlUmVjdChX
ZWJSZWN0KDAsIDAsIG5ld1NpemUud2lkdGgsIG5ld1NpemUuaGVpZ2h0KSk7Cit9CisKK2Jvb2wg
V2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYp
Cit7CisgICAgLy8gVGhlIG1haW4gV2ViVmlldyByZWNlaXZlcyBrZXkgZXZlbnRzIGFuZCBmb3J3
YXJkIHRoZW0gdG8gdGhpcyB2aWEgaGFuZGxlS2V5RXZlbnQoKS4KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6
aGFuZGxlQ2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKQoreworICAgIC8vIFRoZSBt
YWluIFdlYlZpZXcgcmVjZWl2ZXMga2V5IGV2ZW50cyBhbmQgZm9yd2FyZCB0aGVtIHRvIHRoaXMg
dmlhIGhhbmRsZUtleUV2ZW50KCkuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorYm9vbCBXZWJQYWdl
UG9wdXBJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVu
dCkKK3sKKyAgICBpZiAoIW1fcGFnZSB8fCAhbV9wYWdlLT5tYWluRnJhbWUoKSB8fCAhbV9wYWdl
LT5tYWluRnJhbWUoKS0+dmlldygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRnJhbWUm
IGZyYW1lID0gKm1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lLmV2ZW50SGFu
ZGxlcigpLT5oYW5kbGVHZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKGZy
YW1lLnZpZXcoKSwgZXZlbnQpKTsKK30KKyNlbmRpZgorCitib29sIFdlYlBhZ2VQb3B1cEltcGw6
OmhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCit7CisgICAgcmV0
dXJuIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0
aGlzLCBldmVudCk7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlS2V5RXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAoIW1fcGFnZS0+
bWFpbkZyYW1lKCkgfHwgIW1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIo
KS0+a2V5RXZlbnQoZXZlbnQpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnNldEZvY3Vz
KGJvb2wgZW5hYmxlKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisgICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZChlbmFibGUpOworICAgIGlmIChl
bmFibGUpCisgICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEFjdGl2ZSh0cnVl
KTsKK30KKwordm9pZCBXZWJQYWdlUG9wdXBJbXBsOjpjbG9zZSgpCit7CisgICAgbV9wYWdlLmNs
ZWFyKCk7CisgICAgZGVsZXRlIHRoaXM7Cit9CisKK3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6Y2xv
c2VQb3B1cCgpCit7CisgICAgaWYgKG1fcGFnZSkgeworICAgICAgICBtX3BhZ2UtPnNldEdyb3Vw
TmFtZShTdHJpbmcoKSk7CisgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5z
dG9wQWxsTG9hZGVycygpOworICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+
c3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3lOb25lKTsKKyAgICB9CisgICAgLy8gY2xvc2VX
aWRnZXRTb29uKCkgd2lsbCBjYWxsIHRoaXMtPmNsb3NlKCkgbGF0ZXIuCisgICAgbV93aWRnZXRD
bGllbnQtPmNsb3NlV2lkZ2V0U29vbigpOworCisgICAgbV9wb3B1cENsaWVudC0+ZGlkQ2xvc2VQ
b3B1cCgpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKFBBR0VfUE9QVVApCiAKIC8vIFdlYlBhZ2VQ
b3B1cCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLVdlYlBhZ2VQb3B1cCogV2ViUGFnZVBvcHVwOjpjcmVhdGUoV2ViV2lk
Z2V0Q2xpZW50KikKK1dlYlBhZ2VQb3B1cCogV2ViUGFnZVBvcHVwOjpjcmVhdGUoV2ViV2lkZ2V0
Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgLy8gRklYTUU6IFJldHVybnMgYSBXZWJQYWdlUG9wdXBJ
bXBsIG9iamVjdC4KKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBBU1NFUlQoY2xpZW50KTsK
KyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG5ldyBXZWJQ
YWdlUG9wdXBJbXBsKGNsaWVudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjbGllbnQpOwog
ICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1
YWZjYjQxYWQ4YTU5MDU0YWNlNmNlOGNjOWRiMmM0MmI0NDk5NDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmgKQEAgLTAsMCAr
MSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYlBhZ2VQb3B1cEltcGxfaAorI2RlZmluZSBXZWJQYWdlUG9wdXBJ
bXBsX2gKKworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorCisjaW5jbHVkZSAiUGFnZVBvcHVwLmgi
CisjaW5jbHVkZSAiUGFnZVdpZGdldERlbGVnYXRlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBvcHVw
LmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBQYWdlOworY2xhc3MgUGFnZVBvcHVwQ2xpZW50OworY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xp
ZW50OworY2xhc3MgV2ViVmlld0ltcGw7CisKK2NsYXNzIFdlYlBhZ2VQb3B1cEltcGwgOiBwdWJs
aWMgV2ViUGFnZVBvcHVwLAorICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBQYWdlV2lk
Z2V0RXZlbnRIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3Jl
OjpQYWdlUG9wdXAgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlBhZ2VQb3B1cEltcGwp
OworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgYm9vbCBpbml0
KFdlYlZpZXdJbXBsKiwgV2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgYm91bmRzSW5TY3JlZW4pOworICAgIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3Qg
V2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7CisgICAgdm9pZCBjbG9zZVBvcHVwKCk7
CisgICAgV2ViV2lkZ2V0Q2xpZW50KiB3aWRnZXRDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3dp
ZGdldENsaWVudDsgfQorCitwcml2YXRlOgorICAgIC8vIFdlYldpZGdldCBmdW5jdGlvbnMKKyAg
ICB2aXJ0dWFsIFdlYlNpemUgc2l6ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhbmlt
YXRlKGRvdWJsZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXBvc2l0ZShib29sKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVzaXplKGNvbnN0IFdlYlNpemUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2xvc2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlSW5wdXRFdmVu
dChjb25zdCBXZWJJbnB1dEV2ZW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEZv
Y3VzKGJvb2wpIE9WRVJSSURFOworCisgICAgLy8gUGFnZVdpZGdldEV2ZW50SGFuZGxlciBmdW5j
dGlvbnMKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVDaGFyRXZlbnQoY29uc3Qg
V2ViS2V5Ym9hcmRFdmVudCYpIE9WRVJSSURFOworI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykK
KyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVu
dCYpIE9WRVJSSURFOworI2VuZGlmCisKKyAgICBleHBsaWNpdCBXZWJQYWdlUG9wdXBJbXBsKFdl
YldpZGdldENsaWVudCopOworICAgIHZpcnR1YWwgfldlYlBhZ2VQb3B1cEltcGwoKTsKKyAgICBi
b29sIGluaXRQYWdlKCk7CisKKyAgICBXZWJXaWRnZXRDbGllbnQqIG1fd2lkZ2V0Q2xpZW50Owor
ICAgIFdlYlJlY3QgbV93aW5kb3dSZWN0SW5TY3JlZW47CisgICAgV2ViVmlld0ltcGwqIG1fd2Vi
VmlldzsKKyAgICBPd25QdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOworICAgIE93blB0cjxQYWdl
UG9wdXBDaHJvbWVDbGllbnQ+IG1fY2hyb21lQ2xpZW50OworICAgIFdlYkNvcmU6OlBhZ2VQb3B1
cENsaWVudCogbV9wb3B1cENsaWVudDsKKworICAgIGZyaWVuZCBjbGFzcyBXZWJQYWdlUG9wdXA7
CisgICAgZnJpZW5kIGNsYXNzIFBhZ2VQb3B1cENocm9tZUNsaWVudDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorI2VuZGlmIC8vIEVOQUJMRShQQUdFX1BPUFVQKQorI2VuZGlmIC8vIFdl
YlBhZ2VQb3B1cEltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCmluZGV4IDJlNDhkNGNkZjg5NGE5ZGI1MDcyYzc3MmYxMDIzYmZjMjY3ZGNmNTcuLmMwZDI4
NzYyZTE2NDI0NDA2OTBhMWIyZDE5ZTQ5MGNkNDE1Nzc0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTg4LDYgKzg4LDggQEAKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwTG9hZERl
ZmVycmVyLmgiCisjaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCisjaW5jbHVkZSAiUGFnZVdp
ZGdldERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtQ29udGV4dFNraWEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKQEAg
LTEzMCw2ICsxMzIsNyBAQAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYk1lZGlh
UGxheWVyQWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQ
b3B1cEltcGwuaCIKICNpbmNsdWRlICJXZWJQbHVnaW4uaCIKICNpbmNsdWRlICJXZWJQbHVnaW5B
Y3Rpb24uaCIKICNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXJJbXBsLmgiCkBAIC0zNjksNiAr
MzcyLDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkK
ICAgICAsIG1fZHJhZ09wZXJhdGlvbihXZWJEcmFnT3BlcmF0aW9uTm9uZSkKICAgICAsIG1fYXV0
b2ZpbGxQb3B1cFNob3dpbmcoZmFsc2UpCiAgICAgLCBtX2F1dG9maWxsUG9wdXAoMCkKKyAgICAs
IG1fcGFnZVBvcHVwKDApCiAgICAgLCBtX2lzVHJhbnNwYXJlbnQoZmFsc2UpCiAgICAgLCBtX3Rh
YnNUb0xpbmtzKGZhbHNlKQogICAgICwgbV9kcmFnU2Nyb2xsVGltZXIoYWRvcHRQdHIobmV3IERy
YWdTY3JvbGxUaW1lcikpCkBAIC00NjksMzYgKzQ3MywxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoYm9vbCB2YWx1ZSkKICAgICAgICAgbV9wYWdl
LT5zZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHModmFsdWUpOwogfQogCi12b2lkIFdlYlZp
ZXdJbXBsOjptb3VzZU1vdmUoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCit2b2lkIFdlYlZp
ZXdJbXBsOjpoYW5kbGVNb3VzZUxlYXZlKEZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNl
RXZlbnQmIGV2ZW50KQogewotICAgIGlmICghbWFpbkZyYW1lSW1wbCgpIHx8ICFtYWluRnJhbWVJ
bXBsKCktPmZyYW1lVmlldygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBjYWxsIG1v
dXNlTW92ZWQgaGVyZSBpbnN0ZWFkIG9mIGhhbmRsZU1vdXNlTW92ZWRFdmVudCBiZWNhdXNlIHdl
IG5lZWQKLSAgICAvLyBvdXIgQ2hyb21lQ2xpZW50SW1wbCB0byByZWNlaXZlIGNoYW5nZXMgdG8g
dGhlIG1vdXNlIHBvc2l0aW9uIGFuZAotICAgIC8vIHRvb2x0aXAgdGV4dCwgYW5kIG1vdXNlTW92
ZWQgaGFuZGxlcyBhbGwgb2YgdGhhdC4KLSAgICBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2
ZW50SGFuZGxlcigpLT5tb3VzZU1vdmVkKAotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWls
ZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KSk7Ci19Ci0KLXZvaWQgV2Vi
Vmlld0ltcGw6Om1vdXNlTGVhdmUoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCi17Ci0gICAg
Ly8gVGhpcyBldmVudCBnZXRzIHNlbnQgYXMgdGhlIG1haW4gZnJhbWUgaXMgY2xvc2luZy4gIElu
IHRoYXQgY2FzZSwganVzdAotICAgIC8vIGlnbm9yZSBpdC4KLSAgICBpZiAoIW1haW5GcmFtZUlt
cGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSkKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgbV9jbGllbnQtPnNldE1vdXNlT3ZlclVSTChXZWJVUkwoKSk7Ci0KLSAgICBtYWluRnJh
bWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZU1vdmVFdmVudCgK
LSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihtYWluRnJhbWVJbXBsKCktPmZyYW1l
VmlldygpLCBldmVudCkpOworICAgIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNl
TGVhdmUobWFpbkZyYW1lLCBldmVudCk7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6Om1vdXNlRG93
bihjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3ZvaWQgV2ViVmlld0ltcGw6OmhhbmRsZU1v
dXNlRG93bihGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKIHsK
LSAgICBpZiAoIW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXco
KSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gSWYgdGhlcmUgaXMgYSBzZWxlY3QgcG9wdXAg
b3BlbiwgY2xvc2UgaXQgYXMgdGhlIHVzZXIgaXMgY2xpY2tpbmcgb24KICAgICAvLyB0aGUgcGFn
ZSAob3V0c2lkZSBvZiB0aGUgcG9wdXApLiAgV2UgYWxzbyBzYXZlIGl0IHNvIHdlIGNhbiBwcmV2
ZW50IGEKICAgICAvLyBjbGljayBvbiB0aGUgc2VsZWN0IGVsZW1lbnQgZnJvbSBpbW1lZGlhdGVs
eSByZW9wZW5pbmcgdGhlIHBvcHVwLgpAQCAtNTIyLDggKzUwNCw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6Om1vdXNlRG93bihjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKICAgICAgICAgICAgIG1f
bW91c2VDYXB0dXJlTm9kZSA9IGhpdE5vZGU7CiAgICAgfQogCi0gICAgbWFpbkZyYW1lSW1wbCgp
LT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQcmVzc0V2ZW50KAotICAgICAg
ICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCks
IGV2ZW50KSk7CisgICAgUGFnZVdpZGdldEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEb3duKG1h
aW5GcmFtZSwgZXZlbnQpOwogCiAgICAgaWYgKG1fc2VsZWN0UG9wdXAgJiYgbV9zZWxlY3RQb3B1
cCA9PSBzZWxlY3RQb3B1cCkgewogICAgICAgICAvLyBUaGF0IGNsaWNrIHRyaWdnZXJlZCBhIHNl
bGVjdCBwb3B1cCB3aGljaCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHRoYXQKQEAgLTU3NCwxMSAr
NTU1LDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VDb250ZXh0TWVudShjb25zdCBXZWJNb3Vz
ZUV2ZW50JiBldmVudCkKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4uLgogfQogCi12b2lkIFdlYlZp
ZXdJbXBsOjptb3VzZVVwKGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQordm9pZCBXZWJWaWV3
SW1wbDo6aGFuZGxlTW91c2VVcChGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJNb3VzZUV2ZW50
JiBldmVudCkKIHsKLSAgICBpZiAoIW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgp
LT5mcmFtZVZpZXcoKSkKLSAgICAgICAgcmV0dXJuOwotCiAjaWYgT1MoVU5JWCkgJiYgIU9TKERB
UldJTikKICAgICAvLyBJZiB0aGUgZXZlbnQgd2FzIGEgbWlkZGxlIGNsaWNrLCBhdHRlbXB0IHRv
IGNvcHkgdGV4dCBpbnRvIHRoZSBmb2N1c2VkCiAgICAgLy8gZnJhbWUuIFdlIGV4ZWN1dGUgdGhp
cyBiZWZvcmUgd2UgbGV0IHRoZSBwYWdlIGhhdmUgYSBnbyBhdCB0aGUgZXZlbnQKQEAgLTYxNiw4
ICs1OTQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjptb3VzZVVwKGNvbnN0IFdlYk1vdXNlRXZlbnQm
IGV2ZW50KQogICAgIH0KICNlbmRpZgogCi0gICAgbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5l
dmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoCi0gICAgICAgIFBsYXRmb3Jt
TW91c2VFdmVudEJ1aWxkZXIobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpKTsK
KyAgICBQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVVwKG1haW5GcmFtZSwgZXZl
bnQpOwogCiAjaWYgT1MoV0lORE9XUykKICAgICAvLyBEaXNwYXRjaCB0aGUgY29udGV4dG1lbnUg
ZXZlbnQgcmVnYXJkbGVzcyBvZiBpZiB0aGUgY2xpY2sgd2FzIHN3YWxsb3dlZC4KQEAgLTYyNywx
MiArNjA0LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VVcChjb25zdCBXZWJNb3VzZUV2ZW50
JiBldmVudCkKICNlbmRpZgogfQogCi1ib29sIFdlYlZpZXdJbXBsOjptb3VzZVdoZWVsKGNvbnN0
IFdlYk1vdXNlV2hlZWxFdmVudCYgZXZlbnQpCi17Ci0gICAgUGxhdGZvcm1XaGVlbEV2ZW50QnVp
bGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsK
LSAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFu
ZGxlV2hlZWxFdmVudChwbGF0Zm9ybUV2ZW50KTsKLX0KLQogdm9pZCBXZWJWaWV3SW1wbDo6c2Ny
b2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlbHRhKQogewogICAgIFdlYk1vdXNlV2hl
ZWxFdmVudCBzeW50aGV0aWNXaGVlbDsKQEAgLTY0OSwxMSArNjIwLDEyIEBAIHZvaWQgV2ViVmll
d0ltcGw6OnNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZWx0YSkKICAgICBzeW50
aGV0aWNXaGVlbC5nbG9iYWxZID0gbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlvbi55OwogICAgIHN5
bnRoZXRpY1doZWVsLm1vZGlmaWVycyA9IG1fZmxpbmdNb2RpZmllcjsKIAotICAgIG1vdXNlV2hl
ZWwoc3ludGhldGljV2hlZWwpOworICAgIGlmIChtX3BhZ2UgJiYgbV9wYWdlLT5tYWluRnJhbWUo
KSAmJiBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpCisgICAgICAgIGhhbmRsZU1vdXNlV2hl
ZWwoKm1fcGFnZS0+bWFpbkZyYW1lKCksIHN5bnRoZXRpY1doZWVsKTsKIH0KIAogI2lmIEVOQUJM
RShHRVNUVVJFX0VWRU5UUykKLWJvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBX
ZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQorYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlR2VzdHVyZUV2
ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiB7CiAgICAgc3dpdGNoIChldmVudC50
eXBlKSB7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDogewpAQCAt
NzI0LDcgKzY5Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9u
KGNvbnN0IEludFBvaW50JiBzY3JvbGwsIGJvb2wgdXNlQW5jaG9yCiB9CiAjZW5kaWYKIAotYm9v
bCBXZWJWaWV3SW1wbDo6a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiti
b29sIFdlYlZpZXdJbXBsOjpoYW5kbGVLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBl
dmVudCkKIHsKICAgICBBU1NFUlQoKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6UmF3S2V5
RG93bikKICAgICAgICAgfHwgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6S2V5RG93bikK
QEAgLTc0Niw2ICs3MTgsMTYgQEAgYm9vbCBXZWJWaWV3SW1wbDo6a2V5RXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgLy8gbm90IHRoZSBwYWdlLgogICAgIGlmIChtX3Nl
bGVjdFBvcHVwKQogICAgICAgICByZXR1cm4gbV9zZWxlY3RQb3B1cC0+aGFuZGxlS2V5RXZlbnQo
UGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihldmVudCkpOworI2lmIEVOQUJMRShQQUdFX1BP
UFVQKQorICAgIGlmIChtX3BhZ2VQb3B1cCkgeworICAgICAgICBtX3BhZ2VQb3B1cC0+aGFuZGxl
S2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihldmVudCkpOworICAgICAgICAv
LyBXZSBuZWVkIHRvIGlnbm9yZSB0aGUgbmV4dCBDaGFyIGV2ZW50IGFmdGVyIHRoaXMgb3RoZXJ3
aXNlIHByZXNzaW5nCisgICAgICAgIC8vIGVudGVyIHdoZW4gc2VsZWN0aW5nIGFuIGl0ZW0gaW4g
dGhlIHBvcHVwIHdpbGwgZ28gdG8gdGhlIHBhZ2UuCisgICAgICAgIGlmIChXZWJJbnB1dEV2ZW50
OjpSYXdLZXlEb3duID09IGV2ZW50LnR5cGUpCisgICAgICAgICAgICBtX3N1cHByZXNzTmV4dEtl
eXByZXNzRXZlbnQgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYK
IAogICAgIC8vIEdpdmUgQXV0b2NvbXBsZXRlIGEgY2hhbmNlIHRvIGNvbnN1bWUgdGhlIGtleSBl
dmVudHMgaXQgaXMgaW50ZXJlc3RlZCBpbi4KICAgICBpZiAoYXV0b2NvbXBsZXRlSGFuZGxlS2V5
RXZlbnQoZXZlbnQpKQpAQCAtODQyLDcgKzgyNCw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmF1dG9j
b21wbGV0ZUhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBXZWJWaWV3SW1wbDo6Y2hhckV2ZW50KGNvbnN0IFdl
YktleWJvYXJkRXZlbnQmIGV2ZW50KQorYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlQ2hhckV2ZW50
KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIEFTU0VSVChldmVudC50eXBl
ID09IFdlYklucHV0RXZlbnQ6OkNoYXIpOwogCkBAIC04NTgsNiArODQwLDEwIEBAIGJvb2wgV2Vi
Vmlld0ltcGw6OmNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICAv
LyBub3QgdGhlIHBhZ2UuCiAgICAgaWYgKG1fc2VsZWN0UG9wdXApCiAgICAgICAgIHJldHVybiBt
X3NlbGVjdFBvcHVwLT5oYW5kbGVLZXlFdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVy
KGV2ZW50KSk7CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAgaWYgKG1fcGFnZVBvcHVwKQor
ICAgICAgICByZXR1cm4gbV9wYWdlUG9wdXAtPmhhbmRsZUtleUV2ZW50KFBsYXRmb3JtS2V5Ym9h
cmRFdmVudEJ1aWxkZXIoZXZlbnQpKTsKKyNlbmRpZgogCiAgICAgRnJhbWUqIGZyYW1lID0gZm9j
dXNlZFdlYkNvcmVGcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC04ODgsMTggKzg3NCw2IEBA
IGJvb2wgV2ViVmlld0ltcGw6OmNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVu
dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1ib29s
IFdlYlZpZXdJbXBsOjp0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIGV2ZW50KQotewot
ICAgIGlmICghbWFpbkZyYW1lSW1wbCgpIHx8ICFtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVy
IHRvdWNoRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsK
LSAgICBib29sIGRlZmF1bHRQcmV2ZW50ZWQgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2
ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2ZW50KHRvdWNoRXZlbnRCdWlsZGVyKTsKLSAgICBy
ZXR1cm4gZGVmYXVsdFByZXZlbnRlZDsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEdFU1RVUkVf
RVZFTlRTKQogV2ViUmVjdCBXZWJWaWV3SW1wbDo6Y29tcHV0ZUJsb2NrQm91bmRzKGNvbnN0IFdl
YlJlY3QmIHJlY3QsIEF1dG9ab29tVHlwZSB6b29tVHlwZSkKIHsKQEAgLTEyMjAsNiArMTE5NCw0
OSBAQCB2b2lkICBXZWJWaWV3SW1wbDo6cG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWlu
ZXIqIHBvcHVwQ29udGFpbmVyKQogICAgIH0KIH0KIAorI2lmIEVOQUJMRShQQUdFX1BPUFVQKQor
UGFnZVBvcHVwKiBXZWJWaWV3SW1wbDo6b3BlblBhZ2VQb3B1cChQYWdlUG9wdXBDbGllbnQqIGNs
aWVudCwgY29uc3QgSW50UmVjdCYgb3JpZ2luQm91bmRzSW5Sb290VmlldykKK3sKKyAgICBBU1NF
UlQoY2xpZW50KTsKKyAgICBpZiAoaGFzT3BlbmVkUG9wdXAoKSkKKyAgICAgICAgaGlkZVBvcHVw
cygpOworICAgIEFTU0VSVCghbV9wYWdlUG9wdXApOworCisgICAgV2ViV2lkZ2V0KiBwb3B1cFdp
ZGdldCA9IG1fY2xpZW50LT5jcmVhdGVQb3B1cE1lbnUoV2ViUG9wdXBUeXBlUGFnZSk7CisgICAg
QVNTRVJUKHBvcHVwV2lkZ2V0KTsKKyAgICBtX3BhZ2VQb3B1cCA9IHN0YXRpY19jYXN0PFdlYlBh
Z2VQb3B1cEltcGwqPihwb3B1cFdpZGdldCk7CisgICAgV2ViU2l6ZSByb290Vmlld1NpemUgPSBz
aXplKCk7CisgICAgSW50U2l6ZSBwb3B1cFNpemUgPSBjbGllbnQtPmNvbnRlbnRTaXplKCk7Cisg
ICAgSW50UmVjdCBwb3B1cEJvdW5kc0luUm9vdFZpZXcoSW50UG9pbnQobWF4KDAsIG9yaWdpbkJv
dW5kc0luUm9vdFZpZXcueCgpKSwgbWF4KDAsIG9yaWdpbkJvdW5kc0luUm9vdFZpZXcubWF4WSgp
KSksIHBvcHVwU2l6ZSk7CisgICAgaWYgKHBvcHVwQm91bmRzSW5Sb290Vmlldy5tYXhZKCkgPiBy
b290Vmlld1NpemUuaGVpZ2h0KQorICAgICAgICBwb3B1cEJvdW5kc0luUm9vdFZpZXcuc2V0WSht
YXgoMCwgb3JpZ2luQm91bmRzSW5Sb290Vmlldy55KCkgLSBwb3B1cFNpemUuaGVpZ2h0KCkpKTsK
KyAgICBpZiAocG9wdXBCb3VuZHNJblJvb3RWaWV3Lm1heFgoKSA+IHJvb3RWaWV3U2l6ZS53aWR0
aCkKKyAgICAgICAgcG9wdXBCb3VuZHNJblJvb3RWaWV3LnNldFgobWF4KDAsIHJvb3RWaWV3U2l6
ZS53aWR0aCAtIHBvcHVwU2l6ZS53aWR0aCgpKSk7CisgICAgaWYgKCFtX3BhZ2VQb3B1cC0+aW5p
dCh0aGlzLCBjbGllbnQsIG1fY2hyb21lQ2xpZW50SW1wbC5yb290Vmlld1RvU2NyZWVuKHBvcHVw
Qm91bmRzSW5Sb290VmlldykpKSB7CisgICAgICAgIG1fcGFnZVBvcHVwLT5jbG9zZVBvcHVwKCk7
CisgICAgICAgIG1fcGFnZVBvcHVwID0gMDsKKyAgICB9CisKKyAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gZm9jdXNlZFdlYkNvcmVGcmFtZSgpKQorICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNl
dENhcmV0VmlzaWJsZShmYWxzZSk7CisgICAgcmV0dXJuIG1fcGFnZVBvcHVwOworfQorCit2b2lk
IFdlYlZpZXdJbXBsOjpjbG9zZVBhZ2VQb3B1cChQYWdlUG9wdXAqIHBvcHVwKQoreworICAgIEFT
U0VSVChwb3B1cCk7CisgICAgV2ViUGFnZVBvcHVwSW1wbCogcG9wdXBJbXBsID0gc3RhdGljX2Nh
c3Q8V2ViUGFnZVBvcHVwSW1wbCo+KHBvcHVwKTsKKyAgICBBU1NFUlQobV9wYWdlUG9wdXAgPT0g
cG9wdXBJbXBsKTsKKyAgICBpZiAobV9wYWdlUG9wdXAgIT0gcG9wdXBJbXBsKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9wYWdlUG9wdXAtPmNsb3NlUG9wdXAoKTsKKyAgICBtX3BhZ2VQb3B1cCA9
IDA7CisKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gZm9jdXNlZFdlYkNvcmVGcmFtZSgpKQorICAg
ICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnBhZ2VBY3RpdmF0aW9uQ2hhbmdlZCgpOworfQorI2Vu
ZGlmCisKIHZvaWQgV2ViVmlld0ltcGw6OmhpZGVBdXRvZmlsbFBvcHVwKCkKIHsKICAgICBpZiAo
bV9hdXRvZmlsbFBvcHVwU2hvd2luZykgewpAQCAtMTQzMCwzMiArMTQ0NywxNCBAQCB2b2lkIFdl
YlZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGlt
ZSkKICAgICAgICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlvbi5jbGVhcigpOwogICAgIH0KIAotICAg
IGRvdWJsZSB0aW1lU2hpZnQgPSBjdXJyZW50VGltZSgpIC0gbW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCk7Ci0gICAgdmlldy0+c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhjb252ZXJ0U2Vj
b25kc1RvRE9NVGltZVN0YW1wKG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lICsgdGltZVNoaWZ0KSk7
CisgICAgUGFnZVdpZGdldERlbGVnYXRlOjphbmltYXRlKG1fcGFnZS5nZXQoKSwgbW9ub3Rvbmlj
RnJhbWVCZWdpblRpbWUpOwogI2VuZGlmCiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmxheW91dCgp
CiB7CiAgICAgVFJBQ0VfRVZFTlQoIldlYlZpZXdJbXBsOjpsYXlvdXQiLCB0aGlzLCAwKTsKLQot
ICAgIFdlYkZyYW1lSW1wbCogd2ViZnJhbWUgPSBtYWluRnJhbWVJbXBsKCk7Ci0gICAgaWYgKHdl
YmZyYW1lKSB7Ci0gICAgICAgIC8vIEluIG9yZGVyIGZvciBvdXIgY2hpbGQgSFdORHMgKE5hdGl2
ZVdpbmRvd1dpZGdldHMpIHRvIHVwZGF0ZSBwcm9wZXJseSwKLSAgICAgICAgLy8gdGhleSBuZWVk
IHRvIGJlIHRvbGQgdGhhdCB3ZSBhcmUgdXBkYXRpbmcgdGhlIHNjcmVlbi4gIFRoZSBwcm9ibGVt
IGlzCi0gICAgICAgIC8vIHRoYXQgdGhlIG5hdGl2ZSB3aWRnZXRzIG5lZWQgdG8gcmVjYWxjdWxh
dGUgdGhlaXIgY2xpcCByZWdpb24gYW5kIG5vdAotICAgICAgICAvLyBvdmVybGFwIGFueSBvZiBv
dXIgbm9uLW5hdGl2ZSB3aWRnZXRzLiAgVG8gZm9yY2UgdGhlIHJlc2l6aW5nLCBjYWxsCi0gICAg
ICAgIC8vIHNldEZyYW1lUmVjdCgpLiAgVGhpcyB3aWxsIGJlIGEgcXVpY2sgb3BlcmF0aW9uIGZv
ciBtb3N0IGZyYW1lcywgYnV0Ci0gICAgICAgIC8vIHRoZSBOYXRpdmVXaW5kb3dXaWRnZXRzIHdp
bGwgdXBkYXRlIGEgcHJvcGVyIGNsaXBwaW5nIHJlZ2lvbi4KLSAgICAgICAgRnJhbWVWaWV3KiB2
aWV3ID0gd2ViZnJhbWUtPmZyYW1lVmlldygpOwotICAgICAgICBpZiAodmlldykKLSAgICAgICAg
ICAgIHZpZXctPnNldEZyYW1lUmVjdCh2aWV3LT5mcmFtZVJlY3QoKSk7Ci0KLSAgICAgICAgLy8g
c2V0RnJhbWVSZWN0IG1heSBoYXZlIHRoZSBzaWRlLWVmZmVjdCBvZiBjYXVzaW5nIGV4aXN0aW5n
IHBhZ2UKLSAgICAgICAgLy8gbGF5b3V0IHRvIGJlIGludmFsaWRhdGVkLCBzbyBsYXlvdXQgbmVl
ZHMgdG8gYmUgY2FsbGVkIGxhc3QuCi0KLSAgICAgICAgd2ViZnJhbWUtPmxheW91dCgpOwotICAg
IH0KKyAgICBQYWdlV2lkZ2V0RGVsZWdhdGU6OmxheW91dChtX3BhZ2UuZ2V0KCkpOwogfQogCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAtMTUwOCw5ICsxNTA3LDcgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6cGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJl
Y3QpCiAjZW5kaWYKICAgICB9IGVsc2UgewogICAgICAgICBkb3VibGUgcGFpbnRTdGFydCA9IGN1
cnJlbnRUaW1lKCk7Ci0gICAgICAgIFdlYkZyYW1lSW1wbCogd2ViZnJhbWUgPSBtYWluRnJhbWVJ
bXBsKCk7Ci0gICAgICAgIGlmICh3ZWJmcmFtZSkKLSAgICAgICAgICAgIHdlYmZyYW1lLT5wYWlu
dChjYW52YXMsIHJlY3QpOworICAgICAgICBQYWdlV2lkZ2V0RGVsZWdhdGU6OnBhaW50KG1fcGFn
ZS5nZXQoKSwgcGFnZU92ZXJsYXlzKCksIGNhbnZhcywgcmVjdCk7CiAgICAgICAgIGRvdWJsZSBw
YWludEVuZCA9IGN1cnJlbnRUaW1lKCk7CiAgICAgICAgIGRvdWJsZSBwaXhlbHNQZXJTZWMgPSAo
cmVjdC53aWR0aCAqIHJlY3QuaGVpZ2h0KSAvIChwYWludEVuZCAtIHBhaW50U3RhcnQpOwogICAg
ICAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmhpc3RvZ3JhbUN1c3RvbUNvdW50cygi
UmVuZGVyZXI0LlNvZnR3YXJlUGFpbnREdXJhdGlvbk1TIiwgKHBhaW50RW5kIC0gcGFpbnRTdGFy
dCkgKiAxMDAwLCAwLCAxMjAsIDMwKTsKQEAgLTE2NjcsNzkgKzE2NjQsOCBAQCBib29sIFdlYlZp
ZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgaGFuZGxlZCA9IHRydWU7
Ci0KLSAgICAvLyBGSVhNRTogV2ViS2l0IHNlZW1zIHRvIGFsd2F5cyByZXR1cm4gZmFsc2Ugb24g
bW91c2UgZXZlbnRzIHByb2Nlc3NpbmcKLSAgICAvLyBtZXRob2RzLiBGb3Igbm93IHdlJ2xsIGFz
c3VtZSBpdCBoYXMgcHJvY2Vzc2VkIHRoZW0gKGFzIHdlIGFyZSBvbmx5Ci0gICAgLy8gaW50ZXJl
c3RlZCBpbiB3aGV0aGVyIGtleWJvYXJkIGV2ZW50cyBhcmUgcHJvY2Vzc2VkKS4KLSAgICBzd2l0
Y2ggKGlucHV0RXZlbnQudHlwZSkgewotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VNb3Zl
OgotICAgICAgICBtb3VzZU1vdmUoKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQqPigm
aW5wdXRFdmVudCkpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
TW91c2VMZWF2ZToKLSAgICAgICAgbW91c2VMZWF2ZSgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91
c2VFdmVudCo+KCZpbnB1dEV2ZW50KSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBXZWJJ
bnB1dEV2ZW50OjpNb3VzZVdoZWVsOgotICAgICAgICBoYW5kbGVkID0gbW91c2VXaGVlbCgqc3Rh
dGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlRG93bjoKLSAgICAgICAg
bW91c2VEb3duKCpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmlucHV0RXZlbnQp
KTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlVXA6Ci0g
ICAgICAgIG1vdXNlVXAoKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQqPigmaW5wdXRF
dmVudCkpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6UmF3S2V5
RG93bjoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6OktleURvd246Ci0gICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpLZXlVcDoKLSAgICAgICAgaGFuZGxlZCA9IGtleUV2ZW50KCpzdGF0aWNfY2FzdDxj
b25zdCBXZWJLZXlib2FyZEV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0K
LSAgICBjYXNlIFdlYklucHV0RXZlbnQ6OkNoYXI6Ci0gICAgICAgIGhhbmRsZWQgPSBjaGFyRXZl
bnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYktleWJvYXJkRXZlbnQqPigmaW5wdXRFdmVudCkpOwot
ICAgICAgICBicmVhazsKLQotI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKLSAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6
Okdlc3R1cmVTY3JvbGxFbmQ6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xs
VXBkYXRlOgotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ6Ci0gICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw6Ci0gICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlVGFwOgotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcERv
d246Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRG91YmxlVGFwOgotICAgICAgICBo
YW5kbGVkID0gZ2VzdHVyZUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQq
PigmaW5wdXRFdmVudCkpOwotICAgICAgICBicmVhazsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoU3RhcnQ6Ci0gICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpUb3VjaE1vdmU6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3Vj
aEVuZDoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoQ2FuY2VsOgotICAgICAgICBoYW5k
bGVkID0gdG91Y2hFdmVudCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViVG91Y2hFdmVudCo+KCZpbnB1
dEV2ZW50KSk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoR0VTVFVSRV9F
VkVOVFMpCi0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjoKLSAgICBj
YXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEVuZDoKLSAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZToKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQgaXMgdXBkYXRlZCB0byBzdXBwb3J0IHBpbmNoLCB0aGlzIHNob3VsZCBjYWxs
IGhhbmRsZUdlc3R1cmVFdmVudCwganVzdCBsaWtlIGl0IGN1cnJlbnRseSBkb2VzIGZvciBnZXN0
dXJlIHNjcm9sbC4KLSAgICAgICAgaGFuZGxlZCA9IGZhbHNlOwotICAgICAgICBicmVhazsKLSNl
bmRpZgotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgaGFuZGxlZCA9IGZhbHNlOwotICAgIH0KLQor
ICAgIGJvb2wgaGFuZGxlZCA9IFBhZ2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudCht
X3BhZ2UuZ2V0KCksICp0aGlzLCBpbnB1dEV2ZW50KTsKICAgICBtX2N1cnJlbnRJbnB1dEV2ZW50
ID0gMDsKLQogICAgIHJldHVybiBoYW5kbGVkOwogfQogCkBAIC0xNzc4LDggKzE3MDQsNyBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRGb2N1cyhib29sIGVuYWJsZSkKICAgICAgICAgfQogICAgICAg
ICBtX2ltZUFjY2VwdEV2ZW50cyA9IHRydWU7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaGlkZUF1
dG9maWxsUG9wdXAoKTsKLSAgICAgICAgaGlkZVNlbGVjdFBvcHVwKCk7CisgICAgICAgIGhpZGVQ
b3B1cHMoKTsKIAogICAgICAgICAvLyBDbGVhciBmb2N1cyBvbiB0aGUgY3VycmVudGx5IGZvY3Vz
ZWQgZnJhbWUgaWYgYW55LgogICAgICAgICBpZiAoIW1fcGFnZSkKQEAgLTI4NjgsNiArMjc5Myw5
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmhpZGVQb3B1cHMoKQogewogICAgIGhpZGVTZWxlY3RQb3B1
cCgpOwogICAgIGhpZGVBdXRvZmlsbFBvcHVwKCk7CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisg
ICAgY2xvc2VQYWdlUG9wdXAobV9wYWdlUG9wdXApOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViVmll
d0ltcGw6OnBlcmZvcm1DdXN0b21Db250ZXh0TWVudUFjdGlvbih1bnNpZ25lZCBhY3Rpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA0NjI3Zjc3NzM3NThk
Mzc0NDA4YTUyZWQ1MDU4MmJkYmM4Yjg1NzcyLi4zMjM3OWRkZTVkNWNiMzhjZGI5YjlmZDVmMjAx
Y2U2MWQ4MDM2ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
QEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTm90aWZp
Y2F0aW9uUHJlc2VudGVySW1wbC5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5TGlzdC5oIgorI2lu
Y2x1ZGUgIlBhZ2VXaWRnZXREZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1
cnZlVGFyZ2V0LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KQEAgLTY4LDYgKzY5LDggQEAgY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFz
cyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBhZ2U7CitjbGFz
cyBQYWdlUG9wdXA7CitjbGFzcyBQYWdlUG9wdXBDbGllbnQ7CiBjbGFzcyBQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZVRhcmdldDsKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBvcHVw
Q29udGFpbmVyOwpAQCAtOTYsNiArOTksNyBAQCBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50
OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGU7CiBjbGFzcyBXZWJGcmFtZUltcGw7CiBj
bGFzcyBXZWJHZXN0dXJlRXZlbnQ7CitjbGFzcyBXZWJQYWdlUG9wdXBJbXBsOwogY2xhc3MgV2Vi
SW1hZ2U7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKQEAg
LTEwMyw3ICsxMDcsNyBAQCBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CiBjbGFzcyBXZWJTZXR0
aW5nc0ltcGw7CiBjbGFzcyBXZWJUb3VjaEV2ZW50OwogCi1jbGFzcyBXZWJWaWV3SW1wbCA6IHB1
YmxpYyBXZWJWaWV3LCBwdWJsaWMgV2ViTGF5ZXJUcmVlVmlld0NsaWVudCwgcHVibGljIFJlZkNv
dW50ZWQ8V2ViVmlld0ltcGw+LCBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmVU
YXJnZXQgeworY2xhc3MgV2ViVmlld0ltcGwgOiBwdWJsaWMgV2ViVmlldywgcHVibGljIFdlYkxh
eWVyVHJlZVZpZXdDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZXdJbXBsPiwgcHVibGlj
IFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LCBwdWJsaWMgUGFnZVdpZGdldEV2
ZW50SGFuZGxlciB7CiBwdWJsaWM6CiAgICAgZW51bSBBdXRvWm9vbVR5cGUgewogICAgICAgICBE
b3VibGVUYXAsCkBAIC0zMzQsMTggKzMzOCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIG9ic2VydmVO
ZXdOYXZpZ2F0aW9uKCk7CiAKICAgICAvLyBFdmVudCByZWxhdGVkIG1ldGhvZHM6Ci0gICAgdm9p
ZCBtb3VzZU1vdmUoY29uc3QgV2ViTW91c2VFdmVudCYpOwotICAgIHZvaWQgbW91c2VMZWF2ZShj
b25zdCBXZWJNb3VzZUV2ZW50Jik7Ci0gICAgdm9pZCBtb3VzZURvd24oY29uc3QgV2ViTW91c2VF
dmVudCYpOwotICAgIHZvaWQgbW91c2VVcChjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgdm9p
ZCBtb3VzZUNvbnRleHRNZW51KGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lkIG1vdXNl
RG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYpOwotICAgIGJvb2wgbW91c2VXaGVlbChj
b25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKLSAgICBib29sIGdlc3R1cmVFdmVudChjb25zdCBX
ZWJHZXN0dXJlRXZlbnQmKTsKICAgICB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0
IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOwotICAgIGJvb2wga2V5RXZlbnQoY29uc3Qg
V2ViS2V5Ym9hcmRFdmVudCYpOwotICAgIGJvb2wgY2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJk
RXZlbnQmKTsKLSAgICBib29sIHRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYpOwogCiAg
ICAgdm9pZCBudW1iZXJPZldoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQpOwogICAg
IHZvaWQgbnVtYmVyT2ZUb3VjaEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKTsKQEAgLTQ1
NSw2ICs0NTAsMTAgQEAgcHVibGljOgogICAgIC8vIE5vdGlmaWNhdGlvbiB0aGF0IGEgcG9wdXAg
d2FzIG9wZW5lZC9jbG9zZWQuCiAgICAgdm9pZCBwb3B1cE9wZW5lZChXZWJDb3JlOjpQb3B1cENv
bnRhaW5lciogcG9wdXBDb250YWluZXIpOwogICAgIHZvaWQgcG9wdXBDbG9zZWQoV2ViQ29yZTo6
UG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyKTsKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkK
KyAgICBXZWJDb3JlOjpQYWdlUG9wdXAqIG9wZW5QYWdlUG9wdXAoV2ViQ29yZTo6UGFnZVBvcHVw
Q2xpZW50KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgb3JpZ2luQm91bmRzSW5Sb290Vmlldyk7
CisgICAgdm9pZCBjbG9zZVBhZ2VQb3B1cChXZWJDb3JlOjpQYWdlUG9wdXAqKTsKKyNlbmRpZgog
CiAgICAgdm9pZCBoaWRlQXV0b2ZpbGxQb3B1cCgpOwogCkBAIC00OTMsNiArNDkyLDExIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJpbGl0eVN0YXRlKFdlYlBhZ2VWaXNpYmls
aXR5U3RhdGUsIGJvb2wpOwogCiAgICAgV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHNlbGVjdFBv
cHVwKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RQb3B1cC5nZXQoKTsgfQorI2lmIEVOQUJMRShQ
QUdFX1BPUFVQKQorICAgIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdFBvcHVwIHx8IG1fcGFnZVBvcHVwOyB9CisjZWxzZQorICAgIGJvb2wgaGFzT3BlbmVkUG9w
dXAoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdFBvcHVwOyB9CisjZW5kaWYKIAogICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgZXZlbnQgbGVhZHMgdG8gc2Nyb2xsaW5nLgogICAgIHN0YXRpYyBi
b29sIG1hcEtleUNvZGVGb3JTY3JvbGwoaW50IGtleUNvZGUsCkBAIC01OTUsNiArNTk5LDE0IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBwb2ludGVyTG9ja01vdXNlRXZlbnQoY29uc3QgV2ViSW5wdXRF
dmVudCYpOwogI2VuZGlmCiAKKyAgICAvLyBQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyIGZ1bmN0aW9u
cworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZUxlYXZlKFdlYkNvcmU6OkZyYW1lJiwgY29u
c3QgV2ViTW91c2VFdmVudCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3Vz
ZURvd24oV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJNb3VzZUV2ZW50JikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZU1vdXNlVXAoV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJN
b3VzZUV2ZW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUdlc3R1cmVFdmVu
dChjb25zdCBXZWJHZXN0dXJlRXZlbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVDaGFyRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpIE9WRVJSSURF
OworCiAgICAgV2ViVmlld0NsaWVudCogbV9jbGllbnQ7CiAgICAgV2ViQXV0b2ZpbGxDbGllbnQq
IG1fYXV0b2ZpbGxDbGllbnQ7CiAgICAgV2ViUGVybWlzc2lvbkNsaWVudCogbV9wZXJtaXNzaW9u
Q2xpZW50OwpAQCAtNjk2LDYgKzcwOCwxMSBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBwb3B1cCBh
c3NvY2lhdGVkIHdpdGggYSBzZWxlY3QgZWxlbWVudC4KICAgICBSZWZQdHI8V2ViQ29yZTo6UG9w
dXBDb250YWluZXI+IG1fc2VsZWN0UG9wdXA7CiAKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAg
ICAvLyBUaGUgcG9wdXAgYXNzb2NpYXRlZCB3aXRoIGFuIGlucHV0IGVsZW1lbnQuCisgICAgV2Vi
UGFnZVBvcHVwSW1wbCogbV9wYWdlUG9wdXA7CisjZW5kaWYKKwogICAgIE93blB0cjxXZWJEZXZU
b29sc0FnZW50UHJpdmF0ZT4gbV9kZXZUb29sc0FnZW50OwogICAgIE93blB0cjxQYWdlT3Zlcmxh
eUxpc3Q+IG1fcGFnZU92ZXJsYXlzOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>136820</attachid>
            <date>2012-04-11 20:40:17 -0700</date>
            <delta_ts>2012-04-11 20:40:17 -0700</delta_ts>
            <desc>Archive of layout-test-results from ec2-cr-linux-03</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>135410</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAPsbjEAAAAAAAAAAAAAAAAAYABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvVVQJ
AAOpTIZPqUyGT3V4CwABBOgDAAAE6AMAAFBLAwQKAAAAAADgG4xAAAAAAAAAAAAAAAAAQwAcAHRt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL3B5d2Vic29ja2V0LndzLmxvZy0xMkFwcjIwMTItMDMzMDU5
LWVyci50eHRVVAkAA3NMhk9zTIZPdXgLAAEE6AMAAAToAwAAUEsDBBQAAgAIAPQbjEArdCQiOAUA
AAEcAAAmABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHRVVAkAA5xMhk90
TIZPdXgLAAEE6AMAAAToAwAArVlRduMoEPzfuxBnnH1v9wr7vSdAUktigoABZEd7+i2Q5Dgxwlie
n8SRq1pN01R3k957c/DkvDtwY2pe93TgdU3OsZPgzFIjLNX+xfTmjz6BrS13PTv3pJjiJ9FxL1TH
+JlPzIeHFa/fX3o/yA02NaS84JKNVmZwkxVSihoosY1qqCULi4xOMOpYQ5I8wTkhiVkuXHDNi4Hs
czaK2Tmg81ZPQLaWD5QD+vC7YeIeULR4N97KtBWdUGzgSrTAlFAc/swbd7yS1GQQuh6HYOpsBeIV
cAyhi4+Ou2jbJBqMnwrW13IhmVZsNA2H8WMpMoeTMp/RrbYkOsXuI4VyZP3XSJ2F7y8Lyzl8l5yj
euToaDyS6t56pa5xNGsNSm5DBo58s+T0aGtsIhShFHvRlwx+iUbwAtxwhoV3JNsCjuE2f2AvyNWR
XNBvwAXQuClzwraQkG3Gd/WcFSd+x7j3wQRD5IzVHaKXkRbdtlIokKKKZ3AqwtZEZZJPZLPBWhjw
zJMUuRxbJOjXqD2PGyfUiHRr9FlJzRs2jNILg/WtcXK7bZURt1FrQGF6DCdjG2kp/z5Lgz4tW5ZD
fUv9XMY9cE6cGEwuv7w2c61hP0pAbyWgP7dBi+beCcZJNKS3v75kGo6RbGpuM9E/W42j46C93I82
q/bfoNvAj96yVdDXrbhBLx0KVzVJ1ozhCAF84lIgAgJFxY04iehzmg1qjwVqO6H+yGkOWANOddn7
kHUOJ+WD8S6USG/cM5Y2uEZfq2BHNy3fFSyK2q19l6bAJ2OAvA7KhhPXztKHEXaO4I/H4McCeKj4
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
cXMqIbMxj6R6sPmkXH4rIwsrilmprvLJNEi4uQpbnOGoiJ72V1RiKyl4KsP6wl9SpkRq4IS2hIPz
ZjV733T4iTQeIU33urPS4k/XmZhz+ML3KJiPnltXxVRxwt+zsuWZVVHsyiPqUnOZlZw3aWdKpUBE
n8l3i/In3zp52C022RCC+oCIw+dOstkiK/QQe92zgYnNKL9JK4VExwLHDpJy8c0kcNzQIV3efQ3I
KWyA8Yr+0L4x/GfMGP/9gc2KutGgP7uQ7pYN035N1JfMMdnsq1Crer94qt94duhD9LhtsKbvPCJD
BBfvBp2lksXRFhhHXNypY7yEyUPbaHXJXNiq3APVhWA/sgsP62QN+u+9PYp0/wdQSwMECgAAAAAA
4BuMQAAAAAAAAAAAAAAAAEMAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9weXdlYnNvY2tldC53
cy5sb2ctMTJBcHIyMDEyLTAzMzA1OS1vdXQudHh0VVQJAANzTIZPc0yGT3V4CwABBOgDAAAE6AMA
AFBLAwQKAAAAAADlG4xAAAAAAAAAAAAAAAAAJgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Fj
Y2Vzc2liaWxpdHkvVVQJAAN+TIZPqUyGT3V4CwABBOgDAAAE6AMAAFBLAwQUAAIACADlG4xAPz64
avUBAAA+BQAAPgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2FjY2Vzc2liaWxpdHkvYXJpYS1y
b2xlcy1jcmFzaC1sb2cudHh0VVQJAAN9TIZPfUyGT3V4CwABBOgDAAAE6AMAAKWUXW+bMBSGr9df
wWVyx3eINU2KaKNVm9QoYdnFtItj+5BYNTYyZm3+/aDgLKtYG2kSEtjiec7xazAz0Bw9qQ9eqY13
21b1FhVHUxhEb1YL7kVhkAVzcrMrbh++FcT7iFVtT5/68d12S7wPFBokhCNtD4TsLLDHwgDDy+fZ
3PvhP6fpkvr48zU5A6XVqdJt4ymosKk7YD7SfUM7cVAgP4PiEs1oSsKQLy9M/vOihCjAMMxY6P+Z
/470i7CEdPcNHHCj67a+r2pJCJO6GcaDMqbA4FJ5ge4FPl1SzjSSi2wRJxNkfjS6wlwKVHbAhfoF
UnCwmGtlu+lmrc1O6qcdM1rK0ZcxpK86ybXpklqbLp++GUKaF8BZesUG7HEQII85Y1OCocyUYSBp
nAGLryMLfWaYX17VrkOQR4jJu2XQDsOHsuyeXbUUo+DfKFCJK4PgSm50I6zQKj+COiB3EubjG8tc
KVGB1YYQpa0oT5MS5i/jYPneItq63+1hhoI55wwUsqsDcPUdTCMavBf4NIs8DSidYoff/iuc0Ljs
tshsofeiEV2oAx/45ZJm6f8JkmQxJbiTWHWfostsrVnbrOoawYByR0jCU5gO7kyXPefeTqDEN97e
Z/fd52+642Xkcui3iT2OzQYcOQZ/nTMBj7orTKMs9W9+A1BLAwQKAAIAAADkG4xAaxPjWwIAAAAC
AAAAPgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2FjY2Vzc2liaWxpdHkvYXJpYS1kaXNhYmxl
ZC1zdGRlcnIudHh0VVQJAAN8TIZPfEyGT3V4CwABBOgDAAAE6AMAAAoKUEsDBBQAAgAIAOUbjED6
ZfyFDwIAAHgFAABPABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvYWNjZXNzaWJpbGl0eS9pbWct
YWx0LXRhZy1vbmx5LXdoaXRlc3BhY2UtY3Jhc2gtbG9nLnR4dFVUCQADfkyGT35Mhk91eAsAAQTo
AwAABOgDAACllF1vmzAUhq/XX8Flcsd3iDVNytJGqzapUcKyi2maju1DYtXYyJi2+feDgbOsYk2k
XYEtnuccv8BhBuqDJ/XeK7Txbpuy2qDiaHKD6E0qwb0oDIN4Sm62+e3D15x477Gs7PFDt77bbIj3
jkKNhHCkzZ6QrQX2mBtgeH4/mXrf/Zc0nVMff7wmJ6C0Opa6qT0FJdZVC0wHumtoK/YK5CdQXKIZ
TEkY8vmZyX+ZFbMk9OMwZaH/Z/8b0s/CEtJe17DHta6a6r6sJCFM6rpf98qYAoNz5Rm6E/h8TjnT
QM6yWZyMkMuD0SUupUBle1yoJ5CCg8WlVrbdrlfabKV+3jKjpRx8GUP6qpOlNm1SK9Pm0zVDSP0b
cJZOsQZ76AXIY87YmKAvM2boSRpnwOLryFyfGOYXV7XrEOQRYnKxDNp++VAU7b2rlmIU/BsFKnFh
EFzJta6FFVotD6D2yJ2E+fjGMRdKlGC1IURpK4rjqIT58ziYXzpEU3Vvu9+hYE45A4Xs6gBcfQfT
iAaXAh9nkacBpWNs/9t/gSMal90Gmc31TtSiDbXnA7+Y0yz9P0GSzMYEdxLL9lN0ma00a+pFVSEY
UG6EJDyF8eBOdNFx7ukECnzj6V12337+ph0vA7eE7jWxx6HZgCPH86ifsu4ndsjHRkgr1M9+Ni0q
0eE9OoMUOf9rQkUZthOG+2mUhje/AFBLAwQUAAIACADlG4xAdI0Me9sBAACGBAAATAAcAHRtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL2FjY2Vzc2liaWxpdHkvaW1nLWFsdC10YWctb25seS13aGl0ZXNw
YWNlLXN0ZGVyci50eHRVVAkAA35Mhk9+TIZPdXgLAAEE6AMAAAToAwAAnZRfb9sgFMWfk0/Rx/bN
dvwvvGXeolWbtKiJsoepqi5wnaBisDBum28/XEzkaUkn7cmAzu9cOHA9o9AhIRxpfyBka4E97www
nI5v725+RW95vqQRPs5nnrgFpdWp0X13o6DBrnXCu5H63DftVhwUyK+guEQzOmRJwpfOIXor6iJL
ojTJWRLNZz+RfhOWEPfdwAE3uu3b+6aVhDCpOz/3FikFBoPFBNkLfJ2qg8NIFGWRZhOiOhrdYCUF
KusxoV5ACg4WK62sW+7W2mylft0yo6UcfUqGdKxcaeMSWBt37qE4Id27MNADugF79CDylDM2Bb3t
JdITNC2BpR8TO33Wsqj+cFtBinyBmF21ReunP+rajYN7jov4bwSoxJVBCCU2uhNWaFUdQR2QB5hF
eOEYKyUasNoQorQV9ekizKJlGi+vbbZvh9vyKxTMOTegUP7zgKFegOiCxtcCvMwgz2NKp8wDKo7m
O5zQhEwekNmd3otOuLA8F0f1kpb5/4FZVkzBLxIb92RCFmvN+m7VtggGVGjZjOfwZyBnqh70QZVB
jRdU+/LePUvj2njUVzDEzZ7HTcUcOQ7RvZRDEwXpp15IK9ST7/1VKwbMIwXkyPn7H2BRoutkHuWL
PJn/BlBLAwQUAAIACADlG4xASw3GIsEBAABUBAAAOwAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L2FjY2Vzc2liaWxpdHkvYXJpYS1yb2xlcy1zdGRlcnIudHh0VVQJAAN9TIZPfUyGT3V4CwABBOgD
AAAE6AMAAJ2TS4vbMBSF18mvmOXMzu842gW3oUMLDZOQWZQurqTrRIwsGVnuTP595ZEVXOpMoWDQ
g/Ode3UsLSh0SAhH2p8I2VtgLwcDDKfz+4e7H9FbUaxphD+XC0/cg9Lq0ui+u1PQYNc64cNIfeqb
di9OCuQXUFyiGR3yJOFr5xC9rWpIY0ySkiXRcvGM9KuwhLhxByfc6bZvH5tWEsKk7vzaW2QUGAwW
E+Qo8HWqDg4jsSpXWT4hqrPRDVZSoLIeE+oXSMHBYqWVddvdVpu91K97ZrSUo0/JkI6VK21cAlvj
zj0UJ6R7FwZ6QHdgzx5EnnHGpqC3nSM9QbMSWPYxcdBXLYvqD9sKUuQpYn7TFq1ffq9rNw/uBabx
3whQiRuDEErsdCes0Ko6gzohDzCLcOYYGyUasNoQorQV9WUWZtE6i9e3mu3b4W/5HQrmmhtQKP95
wFAvQDSl8a0A5xnkRUzplHlCxdF8gwuakMkTMnvQR9EJF5bn4qhe07L4PzDPV1Pws8TGXZmQxVaz
vtu0LYIBFZ5szgv4M5ArVQ/6oMqhxhnVsXx019K4ZzzqKxjiZi9jUzFHjvH7e4556r6kSMsiWv4G
UEsDBAoAAAAAAOEbjEAAAAAAAAAAAAAAAAAdABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0
cC9VVAkAA3VMhk+pTIZPdXgLAAEE6AMAAAToAwAAUEsDBAoAAAAAAOQbjEAAAAAAAAAAAAAAAAAj
ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9VVAkAA3tMhk+pTIZPdXgLAAEE
6AMAAAToAwAAUEsDBAoAAAAAAOQbjEAAAAAAAAAAAAAAAAApABwAdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9VVAkAA3xMhk+pTIZPdXgLAAEE6AMAAAToAwAAUEsDBBQA
AgAIAOQbjEC1vJvGSwIAAK0FAABcABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0
cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLWNyYXNoLWxvZy50
eHRVVAkAA3xMhk98TIZPdXgLAAEE6AMAAAToAwAAhZTBctsgFEXXzVdomewkGSTDdLqJ4yTTtPHY
arPodIHgWWIigQZQE/99USzZsqO0Kxu45/LeBcQNs2VQ6SLYahMs2rpZgxJgMgMQXDZSBLM4SsMr
erHJFo8/Mhp8hrpxuy/d+Ga9psGnnFmgVEDeFpRuHOPPmWEcxv8vr4Jf4WuSkDyE3+fkJVNa7Wrd
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
Yhf/SbrNlfTHy/ms+4OUINjV5XOypwVIcBKTv2GH5QQ+dfs7k64dTqSSdtPvA8aExPEpaRo18f+S
dqaHUuCtnV8ZzIYYBW1fVUyqbiItosFPgIAQGbRjjLJIkLM/UEsDBBQAAgAIAOQbjEACs5STrAIA
AKMGAABqABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5
LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLW1heC1hZ2UtaHR0cHMtY3Jhc2gtbG9nLnR4
dFVUCQADe0yGT3tMhk91eAsAAQToAwAABOgDAAC1lF1v2jAUhq/XX5FLuNgUJ86Xte0GSovarQiy
dlJVIcc+gNUQR7bTln8/BwIEmm5XUySC7fd5z/GxT5iieuXkcukspHKG1bqcQsFBpQrA6ZWCO76H
fLdPLmbp8O5XSpyvsC7N5ns9vpxOifO4FRD7G8QEuYkbh6GPfBQkCbGCuylhoMz8BZRYbOalkmxe
aP2FsV6Ecf/JGVxO0/nkZvz7fqsYWPE2F+RFX1z7IGdBRQ7cAaW+fY5RjLpCJ63QPnLR/w79KaMa
COGQVUtCZoay51RRBu3/vb7z6L6FYZK58HRO9mghi81aVtop6Bp0aYF+Q9fHMBPLgubXtOA5qMYp
8DyetJzct2gBHHPqesxzj/MPkN0IQ4h9T+gSJrKsyvG6zAlhudS78c4SZ5TRtmULvRfw2qb2Tg0Z
xREO/kVqMCPJKr1nsiRgLSYFbWYryN8rcRAm6NS9dr2W2oYo6ItYUtMUGAcY8fjM9edOImQxkIVR
MrdVPIKpnNhbLorlpV3bHEJiH3VsaKTs+dxKartikAsoTLO1laxyfiVTeS20kWozNrBurBK24GdW
A6nsqTfSdk5L63BEIeAR+F1oXf93ag7M6ww0Yyvglb27TcRjPQhZCNWUDmyREe/ij/q9k03ViDWo
kaX5Ho8pD7rwdKWA8rTW67pU1DLpgR4XBpS93TuXLEAYh+8aZCsnZFodMuAp1c87BoWJ6/ntzH+A
1rZCt1KWW+ioDTGOEvhIOoQFqDtlieZKnIDA4g9B+SDVQRngE+VuC41+Ytv5KhfZNq8HYVZDYdvd
2F3tGztEcFLH882cFizEYZD8TX6QhfBBt71SYerhSBRCr/bniXGSBEE3oapiZL+F9cxeHAFr21tF
a9XDyG3f4zUVRbMQZX7HRywBzmNoz2MU+zy5+ANQSwMECgAAAAAA4xuMQAAAAAAAAAAAAAAAACwA
HAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL1VUCQADekyGT6lM
hk91eAsAAQToAwAABOgDAABQSwMEFAACAAgA4huMQNBpff0YAQAAEAIAAEcAHAB0bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2ludGVycnVwdGVkLXVwZGF0ZS1kaWZm
LnR4dFVUCQADd0yGT3dMhk91eAsAAQToAwAABOgDAAClkMtuwjAQRff+itl1kRiX9EHZJSKUoiKC
CFXXo8QFq65jJRMBf98JVFW97vJYd+54jpQSFH15ZfHc9CRJdyRb3fWWOnUg8mp46RR6X2F10Mo4
0m3be9K17H2NpKU+eV0xj+hEIKIo+ncjVtSjvfalKcgkHk8hSuIJpKmAHc8DHZAAHXCNNRWSaRxc
+uDaAcem/ewA92g49MEr4HcRZ0cCBGy1bbDWtZCzl/nsdbleCJkX7+tVkeUX2GyLxXZelnCrpn9o
HFAS0F1A9wE9BPQY0CSgp4CmA80y/mQuonXxtsmz3ZwPkJusLEX0nC1XINmI/jFwRD7cthrrM3hW
rx3F0DVw5EDT29rdsL9BonGGDFoYNBi358pvUEsDBBQAAgAIAOMbjEC5EjugGwIAAOcEAABWABwA
dG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEt
Y29udGludWVkLWRvd25sb2FkLWFjdHVhbC50eHRVVAkAA3pMhk96TIZPdXgLAAEE6AMAAAToAwAA
lZRLj9owFIX3/IoruqCV6CgJEB67gUHtYijVQCtVVRcmviEujp1xHAFF/e+9JjwySBlNV06cz/fc
c2xnMv+ymD9OYTZdLO4/TUcghULwwxF8UxEr1omF5T7DqTHajGC++o2RhZ+6HMvXX5CwHJSGFG2i
ObR4kWb3WSZFxKzQasKiBB9Q4ppZnDApVyza5K2GZHs0wCy899reB8jFH4SB5+1Cz2sAPKHiaL4L
3NYgb1k+ljrawOHzcvb4txa9wJrv4TCeP/wo2UF7cGL7g+6u1w+P7E3pr7d1HRt4J/QML3Fn4fDO
0nDLh4G384cXHsBBYAp15baC28SBI2guE5ETklugUClGsAlxGZqP2oi1oFXX4CFyycNzoS0DrlWL
6uJzIQwCo6fYYJ6A1RDpNJNoEfIiijDP40LK/V3zVbudsOI3/A+//X5n13uL386g88Jvjta5PfuJ
tTm+nWyTDX+zagNTnApZTDNHa4iFlNCskyONiuDQBSwsFBnN0ESqKSnKV7nSoGPgzLI7WJIq11sl
NeOQJ7qQ/BJhs95YcBHqBkMSqobdLgWv7lYo1BqEigyyHLlz4j5yjFkhreulNxuXrdRKkkxFtOPu
dJOfruG57xWSCEWZksY5UdxFiJwmjq20X7HUvVT3/b7L7tQvUIjUMSt3vLYALaqUCLouFcnMmlpQ
mn495W7aF3G70JDXHM6n6fm0+X5QOZ9e4x9QSwMEFAACAAgA4RuMQEgxXermAQAAjwQAAF4AHAB0
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2NyYXNoLXdoZW4tbmF2
aWdhdGluZy1hd2F5LXRoZW4tYmFjay1jcmFzaC1sb2cudHh0VVQJAAN1TIZPdUyGT3V4CwABBOgD
AAAE6AMAAIWTwXLaMBCGz81T+Ag320g20nR6KaHJNG0YcMqh04MsLUYTW/JIckkuffaKYBORQnrC
q/2/f1erhRtmt1Gtq2ijTTTrmnYJSoApDEA0aqWIJmkSp2N6tSpm9w8FjT5C07rnT/v4ermk0YeS
WaBUQNlVlK4c44+FYRzC79E4+hk/ZRkpY/j1lhwxpdVzozsbKdaAbT0w7ul9QytZKVbfMCVqML0T
TlNBAqf4Kd/gMktYmfI0fj1fQ/lVOkr974JVsNBt1942bU0pr7U9xAdLVDLOQssA/SFhF1KDU0/m
0xzh/5EW3Fzzzg5MSTAPmAKsW22h/leJcEaSU/e96422voRiv2XFXD9ghFEipm9cvx8kUqvPWjmj
az/FV7DQC//eUlXXPvd8LIkmF0vWmomH5d1cm7nxzzUgG8TJJeRPEA2d4g2k5+//MuO1VELvjv2Q
PBzwN7DWv8Gd1i2ly04VzD72i4FQTuCSdAYbMPfGE/2lT0Dg04ugXmtzVGJ0ojxsca9f+IX9Usvy
pa+1dNuZ9Avt+Pa4ulkC4r3L3CoHxi/8UC3D5D35UZbBhX3aMen24VwqabcghqESgvF5wnRqLmvY
nwziHHho7xVBNkVJPAmyDZOqT+Tl5NzflAgxhfAcJdOJIFd/AVBLAwQUAAIACADhG4xAjKO4orAB
AACVAwAAWwAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvYXBwY2FjaGUvY3Jh
c2gtd2hlbi1uYXZpZ2F0aW5nLWF3YXktdGhlbi1iYWNrLXN0ZGVyci50eHRVVAkAA3VMhk91TIZP
dXgLAAEE6AMAAAToAwAAdZNNc5swEIbP9q/IMbkBlsDStS5Npmnrid36kMlBH2usCUiMJOrk0t9e
YT6K7fQEu/u870rLMuPMAaUSeFNQuvFMvG4tEzB9v727eY7e0pTwCF7ms05xy7TR75Vp3I1mFbg6
gHe9atVU9UYVmpX3TMsSbO+Ak0SS4BC9ZXvM05jxRCTRfLYD/lV5SsNzzQpYm7qpH6q6pFSUxnVx
Z4E4E6y1mEh+KThO6cGhV2TLDOH/KRz43IjGDSwnWAR2C85vDlBeEwinJO7cWpd744KlZr9VwXw/
KIRRLJe9y/eupIz+ZLS3pgzT+CfYmjVoqXTxOdTexxZocdWiNEz+fHrMjc1tGPeA7pEgl+ifSTSc
CO8hOb/XaVY7paU5jn1J1g7qGzgXZvhoTE3pU6O3zL32HxChjMAlsoI92B82kP1lzgQgllcCszN2
JDA6Ed1W9dw6LNCXUvFT/53yh5UKC+bFYVylNAb50WEftAcbFm9wTzH5CBvLKVx87yNTvg1zpZU7
gByGQwjG56RtdK5KaDMDlIFo7UJlkk1QHC1CtmJK94mML6a/AZFyCW2M4uVCkvlfUEsDBBQAAgAI
AOMbjEDmO8+5FgIAAOsEAABDABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9vcmlnaW4tcXVvdGEtYWN0dWFsLnR4dFVUCQADekyGT3pMhk91eAsAAQToAwAABOgD
AACVVEuP2jAQvvMrRvSwrURRXoTAjWVRu9JuqRa2UlX1YOyBuIQ4dRwRivrfOw6PTamCtqfIzjfz
PWaS8fTTbPowgcfJbDb6MBlCIlMENxzCc8pZsYoNzHcZTrRWegjTxQ/kBr6pw/Nw/A4xyyFVsEET
KwE3othkoyxLJGdGqnTMeIx3mOCKGRyzJFkwvs5vWgnboQZm4K3Tcd5BLn8hRI5Tho7TAnjCVKD+
InHbAHlN+W2i+Br2H+ePD78boWewEjvY307vvh6wUSc6YvtRUPb6YYW9aP35sq/Fes4RegLPsTSw
f2PocYkPPLd0B2c8gAWBLtIX3FYKE1vgENrzWOYEyQ1QqBQjmJhwGer3SsuVpKqX4IHb5OFnoQwN
iGkETJdKcxTd9lUvflgzE/6HmX7kl73XmPEHf5vJ0VgrR7FAKqvT0ZNR4DnrRQdYKqiTwU1m4QqW
Mkmg3cRHJDXGvkOM0kCR0Q1deCCXmm3wGKGNx/XXC0AKrQtzYv8nynazM+9MFAbEI9Q2TRQTzeLC
oFYTuDaOTCuOeQ55rIpEwJLJBIjaBuGR8YPcKgN79XwPp4/qVLHAZr6g36sR+k5k07DrsEEBalm1
xJIjCjpXU+jCfco1slymq+q1HfGVCIJz9wH9Pto0noCG1oUR+PpKEIOwVun5Pavr4JSWgwmS04Ft
LHl8cpkX3Mps2OGnyWkpXderrbHT+gNQSwMEFAACAAgA4huMQOr7tmmpAAAAHAEAAEsAHAB0bXAv
bGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2ludGVycnVwdGVkLXVwZGF0
ZS1leHBlY3RlZC50eHRVVAkAA3dMhk93TIZPdXgLAAEE6AMAAAToAwAATc5NDoIwEAXg/ZxiToA/
qAi7BggakRJq4noCFRpJIVDi9S1xYTeT+ZKXlxfzQvA8xXsqBMvSCHulJfpBhJXsB2qUbj3Pg4ec
DZqODJJGGsde1WTUoLGmupO4jA0ZiZ9hes9ILSkbehk5odL2Tsu4Zj2AX6dsIL6k8e1aZJDwZ5Fz
lqx/WfGssjtwuwn/2LnYu/BdHFwcXZxcBC7OLkKLmNlhCUDJhAD4AlBLAwQUAAIACADjG4xAmY6t
1AMDAACwBwAAVgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
b3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC13ZGlmZi5odG1sVVQJAAN6TIZPekyGT3V4
CwABBOgDAAAE6AMAAJVVXVPaQBR991fcwQfbGcQEEJBSZxBTdYpiBTvT6fRhyd6QrUs2bjYjlLG/
vXcJYIzi1GGGfOzZk3PPubnphMj4cScxc4nHFY4SFjBm/t1EqzTibdgNGPsEj1BhnBeXWGCXOgfZ
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
L2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29u
dGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1hbmlmZXN0cy1hY3R1YWwudHh0VVQJAAN5TIZPeUyG
T3V4CwABBOgDAAAE6AMAAJVUTW/TQBC991eMwqEgheKP2HFy60cEh9KgJiAhxGFtj+sla6/ZXSsJ
Ffx2Zu20NgVH5bTa1ZuZ997MzuXyZrW8XsD7xWp1/nYxB8FLBDecw8cyYfVdbmC9r3ChlFRzWMbf
MDHwRbZne/0KOdNQSijQ5DKF07QuqvOqEjxhhsvykiU5XqHAO2bwkgkRs2SjT08E26MCZuClM3Ze
geY/ECLH2YWOcwJwi2WK6hPH7QDkOeEXQiYbuH+3fn/9cxD6CJbpHu4vllefW2w0jg7YaTTZBdOw
wT5J/eFpXov1nAP0AbzGnYH7F4aOp/gwcnbu7BEPYEGg6rLDbXlqcgucw2idc00QbYBMJRvB5ISr
UL2Wit9xiuqMh8Q6D99raRhspSJ0IpWilok9JaWcRS0MrwRCwUqeUVb9ponRvYxno6O6/bAnPPoP
4dPpbDd9jnB/5v4hXKOxsh+EZVI1t4N+I8FzNvEYWJlSJoNFZeESMi4EjIbqUZFexUlEFbmBump9
8iDlWYYKS/O3wRpYLGsDbrCJAenlbLjM1J91ZTy/0YWjYRO8jlNg0RlX5ECmWIH0ToLaFus6SVDr
rBbUWSu8EUvse8xkdkR94PdKuY41vOdpY/QRVZNg0gv3Iq/VRZ1KpCXT0VXWn655Y+JfawR2xIJJ
x8u1idPDJqHQdpWMh4lRRC9+EoQ2nrZTw8AQAbGqWII3iCmmZ9Bwtg9QNi+gc1mLFGIELCUtw2bY
Ykm5BksGYdQr6bnWSt460E7LGLSELfnRpMZdRf/xiPywkz+zC+CXT9MN8Z6+Qkv40Y/t0QGn6F4u
v8nFaiMLmmTr5B54mVB7qBvd37Kj1HbIdO2kD9BO3bAHUb9WOLPTJNshJZv/vU9uFw8LwvW93kpx
Tn4DUEsDBBQAAgAIAOMbjEDeihWkagEAAE4CAABYABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLWV4cGVj
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
DdBkCeNcJRAq7e0ngHGkBS1/67dC5IFyHWVn+41ys3Y3G9vhJhFu8GOfqM2uv45/Hf86/nX86/jX
8a/jX8e/jn8d/zr+f3JkoN6u37OxSDHZxwZemrf0buZft3n8vwBQSwMEFAACAAgA4xuMQHe9HB+V
AQAAvwIAAEUAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29y
aWdpbi1xdW90YS1leHBlY3RlZC50eHRVVAkAA3pMhk96TIZPdXgLAAEE6AMAAAToAwAAbVFbjtow
FP1nFWcBEIVQqRV/biYzRU2BKswCjH1DLELs2o7oQ+3aaxsyQmoVKUru47zu6wZPVV29sEMFtt/X
m5IdNrstSlZ+qsK7rj+y8vMa9F0QSZLMmF4J7pUeSi462ll1UsPXUXv+rG1DYrTK/7hV1786780c
y+J9lodnOceHPM9/w4fpvjFc0DaBrv+sQj2flbtts6srfKmahr1UazywIdFhNJJ7QstVT3KOIwk+
OoJTPwnfogpcuXtTm80OnXLw5DzCtjiH7457GLILnTSCP1CIRJFgHLgl0NBqKyLOA5AjH2EmvjCR
/u54XqPIz8c5+CDBvaeLieMarep7KB8c4Kp8hwKqtfxCd0mRbrk6H0FBRIZDQPxXmtTXoddcwlgt
yDm4To+9THEgTEUdReC9IScJsfQajkw9nWJy940jQUVzF5LQbZqaQrv5yrAZhCXu1HBK7RRx8PEu
uMvAsLJvPCEZLmW8x7VTops43CgiYghvz5oGi5uJaWuxnMpkbcgwNiPXvVsg3dGQ8CT/D7Cazf4C
UEsDBBQAAgAIAOIbjEDOZOzvbQgAAOgkAABPABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9pbnRlcnJ1cHRlZC11cGRhdGUtcHJldHR5LWRpZmYuaHRtbFVUCQAD
d0yGT3dMhk91eAsAAQToAwAABOgDAADVWWtv28gV/e5fMbCRGliElGRJjiU7LryWvbtomgRxin4M
hpyhNDHJ4XKGlpW2/713XhRJkZKKSkV3g43Iedw5932GuRFyFdPbk2nM0ue3aPrCBJOUoH+cIPhP
0lfpERryHEvG0ylKeUqv9VTAc0JzL+BS8mSKBtkrIvBMyfXJv06MOCsk5DHPp+isP5zoOf+RxXTG
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
ngG4EaQwGOE9QgSU5FIXqbLoWwmWvAFcEKU+2AAqV1ESXlFm8MpmU8lFeKQPQe3vAsD+j5oZgydQ
7N3Z9TWyVPACHcrvouzxn0nZ4XcIufy1vv8Dr9ze/PWijbpv0It+AUWQuk+u3l5fXU7Rm+n19dmv
07Hch9zBGP2eQiKKG8gNXGKneS5o5ZX3QWT5v6n6rb7+B80wA/KNEsJnNEBHotgsMoRzXQcmuiSx
o93C+aT+6Kz3B5BKcRpHf3Fazl+RIPCCrswHuxKTJ1W4u15hhH4jKdzM/glk+ofTu/dnc3R/u6Nl
IqNPr27eXH7+4fQfbNK/tEC+tb+8Ov+XMmDYGmoDjoe9ef94sEcDjjcbsBCEd4sREAZ09hmA4Tb9
jQXqyfRQTC0aMRg6c3e0RyNG241Q/9+G8iKtlJcPOUL7MfpJ0LmTPdyY1MF79J3rfB2Cu4MahIf7
hLDrPgGGj49H8+N9YtjtfAuIuyN3GcTfcqPcPy67O/sDnFDzSG9oPPINt+P9u6G3sxuOu6PKDZ1u
hQuyf2v6XwHyThXTfmnNtz1Z7N8Rg93R3e/WXOE6ZcIvv7/s37zjnc3r9Xs18zrDTg23Ozwm7d/0
4VdAvFfF1S0NX/Estn/rdqdaYFHNvl5/UNr3JG98e3dJx9nZJf3BsOaSjlum8tYHy/1b634FvAcV
vEcl2d7y9Lp/S3cnZGBdzdZuZes3viPv3xe7k7H+sO6LwajsVtWb+P7N6u129/ltaq4NbrdTu/44
W19Ua/+lLd5f5XR9rfn1f1BLAwQUAAIACADjG4xAHObLf69CAAAeVAAAaQAcAHRtcC9sYXlvdXQt
dGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1k
b3dubG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMtYWN0dWFsLnBuZ1VUCQADeUyGT3lMhk91eAsAAQTo
AwAABOgDAADtu3dUk+kW/wuiglIVFVABsYB0BOlNUWQUCNKlBREC0qWX0EaKDSlK74oQ6dJrCE1A
OtJraKElEGkJEMp9Ms7MmTlnzl33rvVbd90/Tv6g5A3kzbP3893fz7v3++ohRIX+5PmTFBQU9Pd/
uatFQUF1iYLiyCOaI+CZs2fO8oBvvK7Kj1zNn8LMbV3c7CkkxS0tRMTFRaXEb96wEDGTlBQReXJT
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
89xdPrZhVUc313GSMUo8ii2ltDxA9TYukqvXDjGnQ6vY8Y2tzItDgMbeaj1Olkv4UFjtQ+H/ycXL
5+tUG7KHevOXlU/fTF9mx6vG7FqVy8k4VG+Nr/V/fP8DUEsDBBQAAgAIAOMbjEDjwvFxsAEAABcD
AABrABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4t
cXVvdGEtY29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1hbmlmZXN0cy1leHBlY3RlZC50eHRV
VAkAA3lMhk95TIZPdXgLAAEE6AMAAAToAwAAbZFhjtMwEIX/5xRzgGxJixCo/0IoUFHtFrV7AMeZ
NFad2NhjdSsEZ2dsF1IBilSlo8n73nvzvIUPm93mU33cQL3f77ZNfdw+PUJTN583/Lvbva+bL2vA
F4nYYVdbq5UUpMzUCDngk1MnNX0NhsRH4w4og1N0zdP194HIlrBcvV1U/CxLeFdV1Q8g3tYHKyQ+
JtH1z9c8r4rjoDwQegJWlmd+HwSBRfdgkiCImQ4y4uFbJMPFON6WxjmUpK9wUTTAGDQpqxFGMame
Vf2r9I2/U1wUd1CPFJG/RXvj0r8bmwysqnNbgpg6EEQ42rhuoFdagyIINnNX0Km+R4cT/WvYg2hN
IFi+ObeAPFnAkRm9cmygd2JEFmG9nM4HKdH7PmgOFbmJxaA7EdPfu0zWs6ZHaeIns6iLwDlhyZTg
EQR0qPEkCHmgdSvkuYQujDat/n2sm3gcwJQm4AcTdActAk4mnIZUXWu4C5XpOXoJ3sCFvaRtfLF8
LODTc4j2yhfIyn+8JMsikBm5v2jsCmqSnIEtz1eKreQYNGfm2nOBfJ7UIdsuin19OMBDNtPdrP1/
WPwCUEsDBBQAAgAIAOMbjEAyvg4I8wIAABsIAABUABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLWRpZmYu
dHh0VVQJAAN6TIZPekyGT3V4CwABBOgDAAAE6AMAAL1UXW/aMBR951dcsYduIikJUKA8FWi2VqOl
K3TSNO3BxBfi1cSp4wgY6n77rklpKSpVt1ZTpHw4557jYx9f13WhbKZJWbKFyoxrMDWuxjSTJi1H
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
Gib+H1BLAwQKAAAAAAD0G4xAAAAAAAAAAAAAAAAAJAAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L2NvbXBvc2l0aW5nL1VUCQADnEyGT6lMhk91eAsAAQToAwAABOgDAABQSwMECgAAAAAA9BuMQAAA
AAAAAAAAAAAAAC0AHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21wb3NpdGluZy9vdmVyZmxv
dy9VVAkAA5xMhk+pTIZPdXgLAAEE6AMAAAToAwAAUEsDBBQAAgAIAPQbjEBrVtBH1gEAAIYEAABX
ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvZml4ZWQtcG9z
aXRpb24tYW5jZXN0b3ItY2xpcC1jcmFzaC1sb2cudHh0VVQJAAOcTIZPnEyGT3V4CwABBOgDAAAE
6AMAAI2TXW+bMBSGr9dfwWVyR/gKsaZJKVm1apoShay9mKbp2D4Qq8ZGxrTNvx/UIWVV1uYK29Lz
nOMXH2ag2XtSl16hjbdqq3qLiqPZGURvUgvuhUEUxVNyle9W65874n3GqraHL/3+63ZLvE8UGiSE
I21LQnIL7GFngOF4PZl6v/znJFlQH3+/JSegtDpUum08BRU2dQdMj3TfUC5KBfIbKC7RHE1xEPDF
yOQ/z4soSWAWMxb4r+f3SL8LS0j33UCJG1239W1VS0KY1I3bO2VEgcFYOULvBD6NqcF0JOfpPIrP
kNne6AozKVBZhwv1CFJwsJhpZbvj5kabXOqnnBkt5dGXMqRvOsm06ZK6MV0+fTOENC/AYOkVG7B7
J0AeccbOCVyZcwZH0igFFl1G7vSJYX5xUbsDgjxEjD8sg9Zt10XRrYdqCYaz/6NAJS4NwlByoxth
hVbZHlSJfJAwH9+55lKJCqw2hChtRXE4K2H+IpotPrpEW/d/251QMKecgUJ6cQBD/QGmIT0bwWr9
414ork+BXx+OgQMPUv4ucpfedi/BdJP2CmfQN80enGQWREkYjuf3Me2f9EBdt0Jaof64SV3Woscd
OocEOf9nXgOgHJOFn4RJcPUXUEsDBBQAAgAIAPQbjECbtvmYogEAALQDAABUABwAdG1wL2xheW91
dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvZml4ZWQtcG9zaXRpb24tYW5jZXN0
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
FBkJQRlI+j3x6I5aScpv0xqlqFLE5VlbDPH4UJbdfnTPMF38i4AwuPYIY4iNa3TQzhZ7sDtUIywJ
nihjbXUFwXnOrQu6PJyEJVnRxepcsm3dv1a8EeCPfQMB7L8FjvFGSKTirxJvHu6ftVXu2MDrw9BA
UAlTJ6VP7K57Qd/9+D9QAX1y8jXCi4RmadrPzxvrv9yovm61Cdr+jpOyrnWPRSSHDJX6mpdUULoQ
kmRplsw/AVBLAwQUAAIACADxG4xA/Nmhn9YBAACGBAAAVwAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2hvcml6b250YWwtc2Nyb2xsLWNvbXBvc2l0ZWQtY3Jh
c2gtbG9nLnR4dFVUCQADlkyGT5ZMhk91eAsAAQToAwAABOgDAACNk9FumzAUhq/Xp+AyuSNACLGm
SSlZtWqaEoWsvZim6dg+EKvGRsa0zdsP6pCyirW5wrb0fef4x4cZqA+e1IWXa+Otm7LaoeJo9gbR
m1SCe2EQBcmUXGX79ebnnnifsazs8Uu3/7rbEe8ThRoJ4UibgpDMAnvYG2A4XE+m3i//OY6X1Mff
b8kJKK2OpW5qT0GJddUC0xPdNZSJQoH8BopLNCfTPAj4cmDynxf5PAoox4AF/uv5PdLvwhLSfrdQ
4FZXTXVbVpIQJnXt9k4ZUWAwVA7QO4FPQ6o3nchFsojmI2R6MLrEVApU1uFCPYIUHCymWtn2uL7R
JpP6KWNGS3nyJQzpm05SbdqkbkybT9cMIfUL0Fs6xRbswQmQR5yxMYErM2ZwJI0SYNFl5F6fGebn
F7XbI8hDxPmHZdC67SbP23VfLcZw9n8UqMSVQehLbnUtrNAqPYAqkPcS5uM711wpUYLVhhClrciP
oxLmL6PZ8qNLNFX3t90JBXPOGSgkFwfQ1+9hGtLRCNabH/dCcX0O/Pp4Chx4kPB3kbvktn0Jpp20
VziFrmn24CSzIIrDcDi/j0n3pHvquhHSCvXHTeqqEh3u0AXEyPk/8xomM8Zy7sdhHFz9BVBLAwQU
AAIACAD1G4xAAJRliqMBAAC0AwAAUgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2NvbXBvc2l0
aW5nL2dlb21ldHJ5L3ZlcnRpY2FsLXNjcm9sbC1jb21wb3NpdGVkLXN0ZGVyci50eHRVVAkAA51M
hk+dTIZPdXgLAAEE6AMAAAToAwAAhZPLTuMwFIbX7VOwhJ2bOGnqXQlCg0aISkWwQKPRsX3SWjh2
5DhA354Ex52MpmVWvuj//nOxz4xDi4xJ5N2Osa0H8froQOB0f3l18UI+8nzFCf6azwJxCcaaQ227
9sJAjW3TC69G6qarm63aGdA/wEiNbnTIkkSuegfysaxkJRYZyURC5rNn5D+VZ6xfN7DDjW265q5u
NGNC2zacgwXlIGCwmCBPCt+n6ugwEstiSbMJUe6drbHUCo0PmDJvoJUEj6U1vr9ub63bavu+Fc5q
PfoUAvkYubSu78Ct6+segjPWfgkjPaAb8PsAoqRSiCkYbE+RgeC0AEG/Jx7tUStI9W1aUYoyRczO
2qIPx4eq6vfRPcd08S8CXOPaIcQQG9sqr6wp92B2KCMsCJ4oY21UDd46xoz1qjqchAVZ0cXqXLJd
M7xWuOHgjn0DDsV/C4zxIsRT/leJNw/3z8pIe2zg9WFsIMikkCelT8Vd/4Ku//F/oBKG5MRrgBcJ
zdN0mJ+3YvhyUX3dKe2V+R0mZd2oAQvIEnKU8mte0orSIkWSp3ky/wRQSwMEFAACAAgA8huMQG9y
wnHWAQAAhgQAAF4AHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21wb3NpdGluZy9nZW9tZXRy
eS9saW1pdC1sYXllci1ib3VuZHMtZml4ZWQtcG9zaXRpb25lZC1jcmFzaC1sb2cudHh0VVQJAAOY
TIZPmEyGT3V4CwABBOgDAAAE6AMAAI2T0W7aMBSGr9enyCXcBSeEYE2TaFi1appAhLUX0zQd2ydg
1bEjx2nL2y+pCc0q1nIV29L3neM/PtxCvQ+U2QWFscGyKasNaoF2axGDUSVFEJE4JmN6lW+Xq59b
GnzGsnKHL93+62ZDg08MaqRUIGt2lOYO+MPWAsfhejQOfoXPSTJnIf5+S45AG30oTVMHGkqsqxYY
H+muoVzuNKhvoIVCezRNCRHzgSl8nhU4JRGPOCfh6/k9su/SUdp+17DDtama6rasFKVcmdrvvTJm
wGGoHKB3Ep+GVG86krN0Fk/PkNnemhIzJVE7j0v9CEoKcJgZ7drj+sbYXJmnnFuj1NGXcmRvOsmM
bZO6sW0+XTOU1i9Ab+kUa3B7L0ARC87PCXyZcwZPsjgFHl9Gbs2J4WFxUbs9giJCnH5YBp3froqi
XffVEowm/0eBKVxYhL7k2tTSSaOzPegdil7CQ3znmgstS3DGUqqNk8XhrISH83gy/+gSTdX9bX/C
wJ5yBgbpxQH09XuYRexsBMvVj3uphTkFfn04Bg6CpOJd5C69bV+CbSftFc6ga5o/eMmExEkUDef3
Me2edE9dN1I5qf/4SV1UssM9OoMEhfhnXknBUp6QMIkScvUXUEsDBBQAAgAIAPEbjEB2+DddoAEA
ALQDAABUABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvaG9y
aXpvbnRhbC1zY3JvbGwtY29tcG9zaXRlZC1zdGRlcnIudHh0VVQJAAOWTIZPlkyGT3V4CwABBOgD
AAAE6AMAAIWTy07DMBBF1+1XsCy7NEnT1LuSCoEQolIRLBBCY3vSWjh25DhA/x4HxyWIFlZ+6J47
D3tGFBokhCNtt4RsLLDXewMMh/vJ+dlT9JFlCxrh83jkiQkorfaVbpszBRU2tROe99SqreqN2CqQ
V6C4RNM7zOKYL5xD9DEvZ2lMOcYsjsajR6Q3whLi1jVsca3rtr6uakkIk7rxZ2+RUmDQWQyQB4Hv
Q3Vw6Il5Pk9nA6LYGV1hIQUq6zGh3kAKDhYLray7bi612Uj9vmFGS9n75AxpH7nQxnXg0ri6u+CE
NF/CQHfoGuzOg8hTztgQ9LbHSE/QNAeW/k3c64OWReWfaQUp8gRxdtIWrT/elaXbB/cMk+lvBKjE
pUEIIda6EVZoVexAbZEHmEV4pIylEhVYbQhR2opyfxRm0SKdLk4l29bda/kbCubQN6CQ/1tgiBcg
mtAfJa7ubh+F4vrQwIt930Dgcc6PSh/ya/eCxv34b6iALjn26uFpnGZJ0s3PW959uaC+aIW0Qr34
SVnWosM8MocMOf+alySfMlbyKEuyePwJUEsDBBQAAgAIAPUbjEB/a3A41wEAAIYEAABVABwAdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvdmVydGljYWwtc2Nyb2xs
LWNvbXBvc2l0ZWQtY3Jhc2gtbG9nLnR4dFVUCQADnUyGT51Mhk91eAsAAQToAwAABOgDAACNlNFu
mzAUhq/Xp+AyuSNACLGmSSlZtWqaEoWsvZim6dg+EKvGRsa0zdsP6pCyirW5wrb0fef4hwMzUB88
qQsv18ZbN2W1Q8XR7A2iN6kE98IgioMpucr2683PPfE+Y1nZ45du/3W3I94nCjUSwpE2BSGZBfaw
N8BwuJ5MvV/+cxwvqY+/35ITUFodS93UnoIS66oFpie6aygThQL5DRSXaE6meRDw5cDkPy9ynrPZ
3J+zwH89v0f6XVhC2ucWCtzqqqluy0oSwqSu3d4pIwoMhsoBeifwaUj1phO5SBbRfIRMD0aXmEqB
yjpcqEeQgoPFVCvbHtc32mRSP2XMaClPvoQhfdNJqk2b1I1p8+maIaR+AXpLp9iCPTgB8ogzNiZw
ZcYMjqRRAiy6jNzrM8P8/KJ2ewR5iDj/sAxat93kebvuq8UYzv6PApW4Mgh9ya2uhRVapQdQBfJe
wnx855orJUqw2hCitBX5cVTC/GU0W350iabq3rY7oWDOOQOF5OIA+vo9TEM6GsF68+NeKK7PgV8f
T4EDDxL+LnKX3LZfgmkn7RVOoWuaPTjJrP0RhOFwfh+T7pPuqetGSCvUHzepq0p0uEMXECPn/8xr
mEdREqIfh3Fw9RdQSwMEFAACAAgA7xuMQAiVUWaiAQAAtAMAAEsAHAB0bXAvbGF5b3V0LXRlc3Qt
cmVzdWx0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1pbi1jb21wb3NpdGVkLXN0ZGVyci50
eHRVVAkAA5FMhk+RTIZPdXgLAAEE6AMAAAToAwAAhZPLTuMwFIbX7VOwhF3qpLl4V4LQoNGISkWw
QKPRsX3SWjh25DhA334cHHcymsKsfNH//edinwWDHikVyIY9pTsH/OXBAsf5/vLq4jl5z/OKJfhz
uQjEJWijj60Z+gsNLfadF15N1M3Qdju516C+gRYK7eSwJkRU3iF5LxrCqpyUFSfJcvGE7Lt0lPp1
C3vcmm7o7tpOUcqV6cM5WGQMOIwWM+RR4ttcHR0moiiLbD0j6oM1LdZKonYBk/oVlBTgsDba+ev+
1tidMm87bo1Sk0/JkU2Ra2N9B26tr3sMTmn/IYz0iG7BHQKIIhOcz8Fge44MBMtK4NnXxIM5aXnS
fJlWlKJIEdef2qILx/um8fvonmO6+hcBpnBjEWKIremlk0bXB9B7FBHmCZ4pY6NlC85YSrVxsjme
hXlSZavqs2SHbnytcMPAnvoGDMr/FhjjRYil7K8Sb+5/PEktzKmB18epgSBIKc5KH8s7/4LW//g/
UA1jcvwlwCuS5Wk6zs9rOX65qL4epHJS/wqTsunkiAWkgByF+JgXUmDCGU/yNCfL31BLAwQUAAIA
CADvG4xAAgZOcdcBAACGBAAATgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2NvbXBvc2l0aW5n
L2dlb21ldHJ5L2ZpeGVkLWluLWNvbXBvc2l0ZWQtY3Jhc2gtbG9nLnR4dFVUCQADkUyGT5FMhk91
eAsAAQToAwAABOgDAACNk11vmzAUhq/XX8FlckeA8GFNk1KyatU0JUqy9mKapmP7QKwaGxnTNv9+
UIeUVVmbK2xLz3OOX3yYgWbvSV16hTbesq3qDSqOZmcQvUktuBcGMz+akqvtbrn6uSPeZ6xqe/jS
779uNsT7RKFBQjjStiRka4E97AwwHK8nU++X/xzHGfXx91tyAkqrQ6XbxlNQYVN3wPRI9w1tRalA
fgPFJZqjaR4EPBuZ/OekCGgWB2nGAv/1/B7pd2EJ6b5rKHGt67a+rWpJCJO6cXunjCgwGCtH6J3A
pzE1mI5kkibR/AyZ742uMJcClXW4UI8gBQeLuVa2O25utNlK/bRlRkt59KUM6ZtOcm26pG5Ml0/f
DCHNCzBYesUa7N4JkEecsXMCV+acwZE0SoFFl5E7fWKYX1zU7oAgDxHnH5ZB67aroujWQ7UYw9n/
UaASFwZhKLnWjbBCq3wPqkQ+SJiP71xzoUQFVhtClLaiOJyVMD+LZtlHl2jr/m+7EwrmlDNQSC8O
YKg/wDSkZyNYrn7cC8X1KfDrwzFw4EHK30Xu0tvuJZhu0l7hHPqm2YOTzIIoDsPx/D6m/ZMeqOtW
SCvUHzepi1r0uEMTiJHzf+Y1SNBnlPlxGAdXfwFQSwMEFAACAAgA8huMQLP3FNaiAQAAtAMAAFsA
HAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9saW1pdC1sYXll
ci1ib3VuZHMtZml4ZWQtcG9zaXRpb25lZC1zdGRlcnIudHh0VVQJAAOYTIZPmEyGT3V4CwABBOgD
AAAE6AMAAIWTy07jMBSG1+1TsCy71EnT1LuSCoHQiEpFsEAjdGyftBaOHTkO0LcfB8edjKbAyhf9
338u9pkwaJFSgazbU7pzwF8fLHAc72eXF8/JR56vWIK/p5NAzEAbfaxN115oqLFtvPByoDZd3ezk
XoO6AS0U2sFhQYhYeYfkY1nhgqQ85Zwk08kTsjvpKPXrFva4NU3X3NaNopQr04ZzsMgYcOgtRsij
xPexOjoMxLJYZosRUR6sqbFUErULmNRvoKQAh6XRzl+318bulHnfcWuUGnwKjmyIXBrrO3Btfd19
cErbT2Gke3QL7hBAFJngfAwG23NkIFhWAM++Jx7MScuT6tu0ohRFirj40hZdON5Xld9H9xzT+f8I
MIVrixBDbE0rnTS6PIDeo4gwT/BMGWsta3DGUqqNk9XxLMyTVTZffZVs1/SvFW4Y2FPfgEHxY4Ex
XoRYyv4pcXP/60lqYU4NvDoODQRBCnFW+ljc+he0/sf/hUrok+OvAZ6TLE/Tfn7eiv7LRfVVJ5WT
+iVMyrqRPRaQJeQoxOe8kIoVPCdJnuZk+gdQSwMEFAACAAgA5xuMQG8jMnGlAQAA5wMAADsAHAB0
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21wb3NpdGluZy9jaGVja2VyYm9hcmQtc3RkZXJyLnR4
dFVUCQADgUyGT4FMhk91eAsAAQToAwAABOgDAACFk8tu4yAUhtfJU3TZ7rDjEIddxlU11WjUSKna
xWg0OsBxgorBwriXtx9cTMdSnc6Ki/7vPxc4Cw4dMiaR90fGDh7E070DgdP95dXFL/JK6ZYT/L1c
ROISjDVvje27CwMNdm0QXo3Udd+0B3U0oL+DkRrd6LDOc7kNDuR1U3NJQeaZyMly8Yj8h/KMhXUP
R9zbtm9vm1YzJrTt4jlaFBwEDBYT5EHhy1SdHEZiU26K9YSoTs42WGmFxkdMmWfQSoLHyhofrrsb
6w7avhyEs1qPPqVAPkaurAsduHGh7iE4Y927MNEDugd/iiDKQgoxBaPtHBkJXpQgiq+Je/uhFaT+
Mq0kRblCXJ+1RR+Pd3Ud9smd4ir7jADXuHMIKcTedsora6oTmCPKBAuCM2XsjGrAW8eYsV7Vb7Ow
INsi255Ltm+H14o3HNxH34BD+d8CU7wE8RXPzjVwnkFJM86nzPXdz0dlpP3cdMCCl7PSh/I2vLoL
U/IPqmAoSDxFOMuLdU2Hv/NcDt80qb/1Sntl/sTp2rVqwCKyAYpSvs8YYFkiIXRF8+VfUEsDBBQA
AgAIAOcbjEBzn+/82QEAAMEEAAA+ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRp
bmcvY2hlY2tlcmJvYXJkLWNyYXNoLWxvZy50eHRVVAkAA4FMhk+BTIZPdXgLAAEE6AMAAAToAwAA
jZNbb9owFICf11+RR3jLjRCsaRILq1ZNEwhY+zBN07F9Eqw6duQ4bfn3S2rSZl1WePJF+r5zsQ8z
UB88qQsv18ZbNWW1RcXR7A2iN6kE96IwnKVTcrXbr9Y/9sT7iGVlj5+685ftlngfKNRICEfaFITs
LLD7vQGGw/1k6v30n5JkQX389ZacgNLqWOqm9hSUWFctMD3RXUI7USiQX0FxieZkmoUhXwxM/tM8
pzwBHgYs9F/v75B+E5aQdt1AgRtdNdVNWUlCmNS1OztlTIHBUDlAbwU+DqnedCLn6TyejZDZwegS
MylQWYcL9QBScLCYaWXb6/pam53UjztmtJQnX8qQvskk06bt1LVp+9MlQ0j9DPSWTrEBe3AC5DFn
bEzgwowZHEnjFFh8GbnXLwzz84vS7RHkEeLsbBi07rjO83bfR0swCv6PApW4NAh9yI2uhRVaZQdQ
BfJewnx8p8ylEiVYbQhR2or8OCph/iIOFueKaKrutd0NBfPSZ6CQXtyAPn4P04gG5xo+ziJPAkrH
2NX6+51QXP/7WIAxTd9FbtOb9heZdkpf4Qy6gtm9kwRhPMuT4Z98SLtx6KnPjZBWqN9uypeV6HCH
ziFBzv+adcA0Rd9PoiS8+gNQSwMEFAACAAgA5huMQEsqLHbbAQAAwgQAAGgAHAB0bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9jb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLXdpdGgt
Y29tcG9zaXRlZC1wYXJlbnQtbGF5ZXItY3Jhc2gtbG9nLnR4dFVUCQADf0yGT39Mhk91eAsAAQTo
AwAABOgDAACNk1tvmzAUgJ/XX8Fj8gaEcLGmSRlZtWqaEiVZ+zBN07F9SKwaGxnTNv9+UIeWdazJ
ky/S952LfZiB+uBJvfcKbbxlU1YbVBzNziB6k0pwbxaGUTIlV9vdcvVjR7yPWFb2+Kk7f9lsiPeB
Qo2EcKTNnpCtBXa/M8BwuJ9MvZ/+Uxxn1Mdfb8kJKK2OpW5qT0GJddUC0xPdJbQVewXyKygu0ZxM
8zDk2cDkPyVFEmUJ0piF/uv9HdJvwhLSrmvY41pXTXVTVpIQJnXtzk4ZUWAwVA7QW4GPQ6o3ncgk
TaL5CJkfjC4xlwKVdbhQDyAFB4u5Vra9rq+12Ur9uGVGS3nypQzpm0xybdpOXZu2P10yhNTPQG/p
FGuwBydAHnHGxgQuzJjBkTRKgUWXkTv9wjC/uCjdHkE+Q5yfDYPWHVdF0e77aDHOgv+jQCUuDEIf
cq1rYYVW+QHUHnkvYT6+U+ZCiRKsNoQobUVxHJUwP4uC7FwRTdW9truhYF76DBTSixvQx+9hOqPB
uYaPs8jjgNIxdrn6ficU1/8+FmBE03eR2/Sm/UWmndJXOIeuYHbvJEEYzYt4+Ccf0m4ceupzI6QV
6reb8kUlOtyhCcTI+V+zHrAMeVD48SwOr/4AUEsDBBQAAgAIAOYbjECXx/j4pwEAAOgDAABlABwA
dG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hh
bmdlZC13aXRoLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLXN0ZGVyci50eHRVVAkAA39Mhk9/TIZP
dXgLAAEE6AMAAAToAwAAhZPLbtswEEXX9ldkmewkWaYk7lwFQYOiiAEHyaIoiiE5solQpEBRefx9
qVBMBUROV3zgnjsPclYMeqRUIBuOlB4c8Kd7Cxzn+8uri1/JKyEVS/D3ehWIS9BGv7Vm6C80tNh3
Xng1UddD2x3kUYP6DlootJPDNstE5R2S16Ip8qpARniWrFePyH5IR6lf93DEvemG7rbtFKVcmT6c
g0XOgMNoMUMeJL7M1dFhIoqyyLczoj5Z02KtJGoXMKmfQUkBDmujnb/ub4w9KPNy4NYoNfmUHNkU
uTbWd+DG+rrH4JT278JIj+ge3CmAKHLB+RwMtktkIFheAs+/Ju7Nh5YnzZdpRSmKDeL2rC26cLxr
Gr+P7gQ36WcEmMKdRYgh9qaXThpdn0AfUUSYJ7hQxk7LFpyxlGrjZPO2CPOkytPqXLJDN75WuGFg
P/oGDMr/FhjjRYhtWHqugcsMCpIyNmeu734+Si3M56YD5qxclD6Ut/7VrZ+Sf1ANY0H8KcBplm8b
Mv6d53L8plH9bZDKSf0nTNeukyMWkAIICvE+YymvUKRNQjYkW/8FUEsDBAoAAAAAAPQbjEAAAAAA
AAAAAAAAAAAsABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9V
VAkAA5xMhk+pTIZPdXgLAAEE6AMAAAToAwAAUEsDBBQAAgAIAPEbjEAmOZ9umgEAAM8DAABMABwA
dG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9maXhlZC1wb3NpdGlv
bi1pZnJhbWUtc3RkZXJyLnR4dFVUCQADlUyGT5VMhk91eAsAAQToAwAABOgDAACFk11v2yAUhq+T
X9HL9g5/Ycxd5qpaNU2NlKq9qKbpAMcJqg0Wxlv770dKnHlK0l0ZrOd5Dwd0FgIG5FyhGLecbzzI
10cHEufr65urF/JGaSUI/lguonENxpr3zo7DlYEOhz6ANwfrduz6jd4aaL+CUS26Q0KRpqoKCeSt
bDJkhSIoU7JcPKP4pj3n4buGLa5tP/b3Xd9yLls7xH2MyAVI2EfMlCeNv+f0lHAwSlbmxcyod852
WLcajY/aIJ1t2wPOVIMi4rV1odE7F9rb15jA2hof3OEOBr8Gv4siqrxKy7m4+aDPmdEQORNMfG48
2iMrSfPpsSYUVYZYXIxFH7cPTRPWUzrFLDlVQLS4cghTibUdtNfW1DswW1STLAnmp/LK6A68dZwb
63XzflaWpMqT6tJhx16Bx/hHgDveGwhg/21wqjdJIhPJpQs876CiifjngW4fvj9ro+zppQPmgp1F
n9h9eHUXhuGvVMO+Ifka5STNi4bKYP9inOsj/WXUrdfmZxyiVa/3WlRKoKjUxyhlBaVlCYRmNF3+
AVBLAwQUAAIACAD0G4xASbFuUKYBAADnAwAAUAAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Nv
bXBvc2l0aW5nL2lmcmFtZXMvb3ZlcmxhcHBlZC1uZXN0ZWQtaWZyYW1lcy1zdGRlcnIudHh0VVQJ
AAOcTIZPnEyGT3V4CwABBOgDAAAE6AMAAIWTy07jMBSG1+1TsISdc6mTeNcJQoNGiEpFsBghdGyf
tBaOHTkOl7cnwQkTiZRZ+aL/+8/FPisOLTImkXcHxvYexPOdA4Hz/fnF2V/yRmnBCT6uV4E4B2PN
e2279sxAjW3TCy9G6rKrm706GNC/wUiNbnTYxLEsegfyllVxxmlUFCIm69UD8j/KM9avOzjgzjZd
c103mjGhbRvOwSLlIGCwmCH3Cl/n6slhJLI8Szczojw6W2OpFRofMGVeQCsJHktrfH/dXlm31/Z1
L5zVevTJBfIxcmld34Er19c9BGes/RRO9IDuwB8DiDKVQszBYLtEBoKnOYj0Z+LOfmkFqX5Ma5Ki
TBA3J23Rh+NtVfX7yZ1iEn1HgGvcOoQpxM62yitryiOYA8oJFgQXytgaVYO3jjFjvareF2FBijQq
TiXbNcNrhRsO7qtvwCH/b4FTvAniCY9ONXCZQUkjzufM5e3NgzLSfm86YMrzRel9ft2/uuun5B9U
wlCQeA5wFKebig5/5yUfvumk/tUp7ZV5CtO1bdSABSQDilJ+zpgUSUUiQhMarz8AUEsDBBQAAgAI
APMbjEBs1cHvzQEAAKgEAABSABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRpbmcv
aWZyYW1lcy9uZXN0ZWQtY29tcG9zaXRlZC1pZnJhbWUtY3Jhc2gtbG9nLnR4dFVUCQADmkyGT5pM
hk91eAsAAQToAwAABOgDAACNk0tv2zAMgM/rr/Axufn9EIYBmbNixTAkSLz2MAwDJdGOUFsyZHlr
/v3sOk7dzV1ykijg+0hRItPQHKxSFVautLVuq3qHkqPONKK1qAW3PNf3giW52WfrzbeMWO+xqs3x
Qx9/2u2I9Y5Cg4RwpG1ByN4Ae8w0MJzuF0vru/0Uhgm18cff5AKkksdKtY0locKm7oDlie4L2otC
QvkZJC9Rn0yB6/JkYrKfopxiaAdxwlz75fwB6RdhCOnWLRS4VXVb31V1SQgrVTPEg9KnwGCqnKD3
An9PqdF0IqM48oMZMj1oVWFaCpRmwBumVVmesJjnSF9jqdJdQ25114Y+5wikSprO0dxCY7ZgDoMA
uZ+40Zxg/0zNGQaS+jGN6XVkps4Ms/Oryh0R5B5icDENmiHc5Hm3H7OF6Dlvo0BLXGmEMeVWNcII
JdMDyAL5KGE2+m9LVlJUYJQmRCoj8uOshNmJ7ySXLtHWHAwOJxT0uc9AIb66AWP+EaYedS41fJ5F
Hjp09oHXm68PQnL172MB+jT+L3If33W/SHfD+AKn0F+YPQ4Sx/WDPGQTy6+YEHGmPraiNEL+HIZ5
VYseH9AIQuT81Uh339vOIzv0QvfmD1BLAwQUAAIACAD0G4xAf80xWNoBAADBBAAAUwAcAHRtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL2NvbXBvc2l0aW5nL2lmcmFtZXMvb3ZlcmxhcHBlZC1uZXN0ZWQt
aWZyYW1lcy1jcmFzaC1sb2cudHh0VVQJAAOcTIZPnEyGT3V4CwABBOgDAAAE6AMAAI2TyW7bMBBA
z81X6GjftFkLURRw5QYNisKG5SaHoiiG5MgmQpECRSXx31eKrERN1dgnLsB7s5DDDNQHR+q9U2jj
rJqy2qLiaHYG0ZlVgjuBH8bxnFzlu9X6x444H7Gs7PFTd/6y3RLnA4UaCeFImz0huQV2vzPAcLyf
zZ2f7lMUpdTFX2/JGSitjqVuakdBiXXVAvMT3SWUi70C+RUUl2hOpoXv83Rkcp/iwo9p5KUp893X
+zuk34QlpF03sMeNrprqpqwkIUzquj/3ypACg7FyhN4KfBxTg+lExkkcLibI7GB0iZkUqGyPC/UA
UnCwmGll2+v6Wptc6secGS3lyZcwpG8yybRpO3Vt2v50yRBSPwODpVNswB56AfKQMzYl6MNMGXqS
hgmw8DJyp18Y5hYXpTsgyAPExdkwaPvjuija/RAtwsD7PwpU4tIgDCE3uhZWaJUdQO2RDxLm4jtl
LpUowWpDiNJWFMdJCXPT0EvPFdFU3Wv3NxTMS5+BQnJxA4b4A0wD6p1r+DSLPPIonWJX6+93QnH9
72MBhjR5F7lNbtpfZNopfYUz6Apm973E88NFEY3/5EPSjcNAfW6EtEL97qd8WYkO79EYIuT8r1nn
LChcz42CyL/6A1BLAwQUAAIACADxG4xAd/3ic80BAACpBAAATwAcAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL2NvbXBvc2l0aW5nL2lmcmFtZXMvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNyYXNoLWxv
Zy50eHRVVAkAA5VMhk+VTIZPdXgLAAEE6AMAAAToAwAAjZNdb5swFIav11/BZXLH94c1TcrIqlXT
lChh7cU0Tcf2gVgFGxmzNf9+UEJKN7rkCh9Lz3Ps1xymoTlYpSqsXGlr3Vb1DiVHnWlEa1ELbnmu
58VLcrPP1ptvGbHeY1Wb44e+/rTbEesdhQYJ4UjbgpC9AfaYaWA4XS+W1nf7KQwTauOPv8kFSCWP
lWobS0KFTd0ByxPdH2gvCgnlZ5C8RH0yBa7Lk4nJfopyD+OA28hc+2X/AekXYQjpvlsocKvqtr6r
6pIQVqpmqAelT4HBVDlB7wX+nlKj6URGceQHM2R60KrCtBQozYA3TKuyPGExz5G+xlKlu0BudRdD
33MEUiVN52huoTFbMIdBgNxP3GhOsH+m5gwDSf2YxvQ6MlNnhtn5VccdEeQeYnCxDZqh3OR5tx67
heg5b6NAS1xphLHlVjXCCCXTA8gC+ShhNvpvS1ZSVGCUJkQqI/LjrITZie8kly7R1hwMDjsU9Dln
oBBfHcDYf4SpR51Lgc+zyEOHzj7wevP1QUiu/n0sQJ/G/0Xu47vuL9LdML7AKfQXZo+DxHH9IA/Z
xPIrJkScqY+tKI2QP4dhXtWixwc0ghA5fzXSXhCGUQR26IXuzR9QSwMEFAACAAgA8xuMQL8Z+xWZ
AQAAzgMAAE8AHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21wb3NpdGluZy9pZnJhbWVzL25l
c3RlZC1jb21wb3NpdGVkLWlmcmFtZS1zdGRlcnIudHh0VVQJAAOaTIZPmkyGT3V4CwABBOgDAAAE
6AMAAIWTy27jIBSG18lTdNnusOMLZpdxVU01qhopVbuoRqMDHCeoGCyMe3n7khJnPErSWXHR//3n
AmfGoUfGJPJhw9jag3h5cCBwur+8ungm70VRcYK/57NIXIKx5qO1Q39hoMW+C8KrPXU9tN1abQzo
n2CkRrd3yNNUVsGBvJcNx4LktBIpmc+ekP9SnrGwrmCDK9sN3W3bacaEtn08R4uMg4CdxQR5VPg2
VY8Oe6KkZZZPiHrrbIu1Vmh8xHrhrNZ7OZUN8iivrQuF3rhQ3i7GKKyt8YHtb6D3K/DbCKLMqrSc
gusv9SkyEjyjnPLviQd70ArSfJvWKEW5QMzP2qKPx/umCfvRvcBFcowA17h0CGOIle2VV9bUWzAb
lCMsCGbH8NKoFrx1jBnrVfNxEhakypLqXLJDJ8FjvOHgDn0DDvS/BY7xRogveHKugacZlEXC/3mg
6/u7J2WkPW46YMbpSekjvQ2v7sIw/IVq2BUkXiKcpFneFCLQr5QxdVD/GJT2yvyJQ7Ts1A6LSAkF
Svk1SuHbkaYkxaJI559QSwMEFAACAAgA6BuMQIksEGbHAQAAbAQAAFMAHAB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9jb21wb3NpdGluZy9zY3JvbGwtcGFpbnRlZC1jb21wb3NpdGVkLWNvbnRlbnQt
Y3Jhc2gtbG9nLnR4dFVUCQADhEyGT4RMhk91eAsAAQToAwAABOgDAACNk1FvmzAQx5/XT8Fj8kYM
AWJNk1KyatU0JUpY+zBV1dk+iFWwkTFb8+0HBVI60TVP+Cz9fnf85eMGqqOT68xJtXE2dVHuUQk0
iUF0ZqUUjkdI5M/p1SHZbH8m1PmMRWlPX9r6635PnU8MKqRUIKszSg8W+FNigOP4PJs7v9znIFgx
Fx/+JWegtDoVuq4cBQVWZQPMe7od6CAzBfk3UCJH05uWhIjVyOQ+h2kAi5QIzon7en+P7Lu0lDbf
HWS402Vd3hZlTinPddXVndJnwGGsHKF3Ev+MqcHUk2EU+ssJMj4aXWCcS1S2wytudJ73WCRSZG+x
WJsmkBvTxND2HIBYK9s4qhuo7A7ssROg8CHEKcHhhZoydCTzIxaxy8hEnxnupheNOyAoPMTlh23Q
duU2TZvz0C1Ab/E+CizHtUEYWu50Ja3UKj6CylAMEu6i/75krWQBVhtKlbYyPU1KuLvyF6uPfqIu
BVjsbhiYc87AILo4gKH/ADOPTUaw2f64l0roc+DXpz5wECQS/0XuotvmJZhmoV7hGNqh+VMnWRA/
8Lzxu/odUSrP1HUtcyvVY7eQ61K2eIeGEKAQb9aSBD5hvht4Abn6C1BLAwQUAAIACADoG4xASIRH
kZQBAACaAwAAUAAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2NvbXBvc2l0aW5nL3Njcm9sbC1w
YWludGVkLWNvbXBvc2l0ZWQtY29udGVudC1zdGRlcnIudHh0VVQJAAOETIZPhEyGT3V4CwABBOgD
AAAE6AMAAIWTzU7jMBSF1+1TsIRd6rhJ6l0JQiCEqFQEi9FodG3ftBaOHTkO0LfHwUknIwqz8rV1
vnN/bM84tMiYRN7tGNt6EC+PDgRO4/OLs1/Je5ateIK/57NInIOx5lDbrj0zUGPbBOHFQF11dbNV
OwP6BozU6AaHJSFyFRyS97zKYFERKQRJ5rNn5HfKMxbWDexwY5uuua0bzZjQto37aEE5COgtJsiT
wrepenQYiLzI6XJClHtnayy1QuMj1gpntR7khayQR3lpXWj02oX2+hyjsLTGB7a9htZvwO8jiJJC
jlNw+6k+RUaC04IX/Gfi0R61Iql+LGuUokwRl9/aoo/bh6oK8eieYbr4igDXuHYIY4qNbZVX1pR7
MDuUIywSpF/htVE1eOsYM9ar6nASFsmKLlbfFds1EjzGEw7uODfgUPy3wTHfCPGU/9Pi1cP9szLS
Hgd4eRgGCJIU8qT0qbgNN+jCw/4LldAXJ14ivCA0S9P+HbwWjKmj+rJT2ivzJ36IdaN6LCI5ZCjl
57cgGSWcJlmakfkHUEsDBAoAAAAAAPEbjEAAAAAAAAAAAAAAAAAzABwAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vVVQJAAOWTIZPqUyGT3V4CwABBOgD
AAAE6AMAAFBLAwQUAAIACADxG4xA9cr7KaIBAAC0AwAAUwAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLXNjcm9sbC1zdGRl
cnIudHh0VVQJAAOWTIZPlkyGT3V4CwABBOgDAAAE6AMAAIWTy07jMBSG1+1TsCy73Jqk3pVUCIRG
VCqCBRqhY/uktXDsyHGAvv04OO5kNAVWvuj//nOxz4xCh4RwpP2ekJ0F9vpggOF0v7i8eI4+8nxF
I/w9n3liAUqrY6P77kJBg13rhJcjtembdif2CuQNKC7RjA7LJOEr5xB9FDWmCYuXNUui+ewJ6Z2w
hLh1C3vc6rZvb5tWEsKk7vzZW2QUGAwWE+RR4PtUHRxGoiiLbDkhqoPRDVZSoLIeE+oNpOBgsdLK
uuvuWpud1O87ZrSUo0/JkI6RK21cB66Nq3sITkj3KQz0gG7BHjyIPOOMTUFve470BM1KYNn3xIM+
aVlUf5tWkCJPEZdf2qL1x/u6dvvgnmMa/48Albg2CCHEVnfCCq2qA6g98gCzCM+UsVaiAasNIUpb
UR/PwixaZfHqq2T7dngtf0PBnPoGFMofCwzxAkRT+k+Jm/tfT0JxfWrg1XFsIPCk5Gelj+Wte0Hj
fvxfqIIhOfbq4TjJ8jQd5uetHL5cUF/1QlqhXvykrFsxYB4pIEfOP+clLeM6oUWUp3ky/wNQSwME
FAACAAgA8RuMQP6Ze8XXAQAAhgQAAFYAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21wb3Np
dGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1zY3JvbGwtY3Jhc2gtbG9nLnR4dFVU
CQADlkyGT5ZMhk91eAsAAQToAwAABOgDAACNk9FumzAUhq/Xp+AyuSNAgFjTpJSsWjVNiZKsvZim
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
L1i1X8cugSaI+0aP237DR0d2aD87HUv63RAP2VDnDlwdTM1GolNysRPc/rahM0VGYQe4qCzZ7CDJ
YBhUZNz/YNgd9WAvoNG1Y9QB9yCgYxlwzgO8Qyb1h8A8YFAdnm5XzIPaJZZR17OwAwoOB4I9oGON
/gh7PWAPqtm3ALygVSSZdcnwiGcbD5njBSq8ZuZcT2dFmT5xmYjYAS+N9YlODdENqKb0uywq2EDl
xnuMirhJOkn2S+nk09T0+kH69jUqbxO+fX1OlkXBY0sZL52yGh1VuQ8Ndkdj6aSgIjSOkutmrW/K
Y+XyUBt3sWeGVZ85W1bTAIi9zO2kAwwcT4dOqIbIo6JiUQK+51R6yidwsBnAq4W2oMSabSvx75pB
vaprIi8dTbRGcS0y21htyyAHa4zerqPDRjCRZJxchPBf/h9QSwECHgMKAAAAAAD7G4xAAAAAAAAA
AAAAAAAAGAAYAAAAAAAAABAA7UEAAAAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvVVQFAAOpTIZP
dXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAA4BuMQAAAAAAAAAAAAAAAAEMAGAAAAAAAAAAAAKSB
UgAAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3B5d2Vic29ja2V0LndzLmxvZy0xMkFwcjIwMTIt
MDMzMDU5LWVyci50eHRVVAUAA3NMhk91eAsAAQToAwAABOgDAABQSwECHgMUAAIACAD0G4xAK3Qk
IjgFAAABHAAAJgAYAAAAAAABAAAApIHPAAAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNf
cnVuMC50eHRVVAUAA5xMhk91eAsAAQToAwAABOgDAABQSwECHgMUAAIACAD1G4xA2eJbByYFAADE
FwAAJgAYAAAAAAABAAAApIFnBgAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMS50
eHRVVAUAA51Mhk91eAsAAQToAwAABOgDAABQSwECHgMUAAIACAD1G4xAXNw2G0YRAAAnpQAAJgAY
AAAAAAABAAAApIHtCwAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMy50eHRVVAUA
A51Mhk91eAsAAQToAwAABOgDAABQSwECHgMKAAAAAADgG4xAAAAAAAAAAAAAAAAAQwAYAAAAAAAA
AAAApIGTHQAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcHl3ZWJzb2NrZXQud3MubG9nLTEyQXBy
MjAxMi0wMzMwNTktb3V0LnR4dFVUBQADc0yGT3V4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAAOUb
jEAAAAAAAAAAAAAAAAAmABgAAAAAAAAAEADtQRAeAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9h
Y2Nlc3NpYmlsaXR5L1VUBQADfkyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAOUbjEA/Prhq
9QEAAD4FAAA+ABgAAAAAAAEAAACkgXAeAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hY2Nlc3Np
YmlsaXR5L2FyaWEtcm9sZXMtY3Jhc2gtbG9nLnR4dFVUBQADfUyGT3V4CwABBOgDAAAE6AMAAFBL
AQIeAwoAAgAAAOQbjEBrE+NbAgAAAAIAAAA+ABgAAAAAAAEAAACkgd0gAAB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGlzYWJsZWQtc3RkZXJyLnR4dFVUBQADfEyG
T3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAOUbjED6ZfyFDwIAAHgFAABPABgAAAAAAAEAAACk
gVchAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hY2Nlc3NpYmlsaXR5L2ltZy1hbHQtdGFnLW9u
bHktd2hpdGVzcGFjZS1jcmFzaC1sb2cudHh0VVQFAAN+TIZPdXgLAAEE6AMAAAToAwAAUEsBAh4D
FAACAAgA5RuMQHSNDHvbAQAAhgQAAEwAGAAAAAAAAQAAAKSB7yMAAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL2FjY2Vzc2liaWxpdHkvaW1nLWFsdC10YWctb25seS13aGl0ZXNwYWNlLXN0ZGVyci50
eHRVVAUAA35Mhk91eAsAAQToAwAABOgDAABQSwECHgMUAAIACADlG4xASw3GIsEBAABUBAAAOwAY
AAAAAAABAAAApIFQJgAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LXJvbGVzLXN0ZGVyci50eHRVVAUAA31Mhk91eAsAAQToAwAABOgDAABQSwECHgMKAAAAAADhG4xA
AAAAAAAAAAAAAAAAHQAYAAAAAAAAABAA7UGGKAAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0
cC9VVAUAA3VMhk91eAsAAQToAwAABOgDAABQSwECHgMKAAAAAADkG4xAAAAAAAAAAAAAAAAAIwAY
AAAAAAAAABAA7UHdKAAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9VVAUAA3tM
hk91eAsAAQToAwAABOgDAABQSwECHgMKAAAAAADkG4xAAAAAAAAAAAAAAAAAKQAYAAAAAAAAABAA
7UE6KQAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9VVAUAA3xMhk91
eAsAAQToAwAABOgDAABQSwECHgMUAAIACADkG4xAtbybxksCAACtBQAAXAAYAAAAAAABAAAApIGd
KQAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHkt
Y2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLWNyYXNoLWxvZy50eHRVVAUAA3xMhk91eAsAAQToAwAA
BOgDAABQSwECHgMUAAIACADkG4xAu4gMMRICAACTBAAAWQAYAAAAAAABAAAApIF+LAAAdG1wL2xh
eW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1
YnJlc291cmNlLWxvYWRzLXN0ZGVyci50eHRVVAUAA3xMhk91eAsAAQToAwAABOgDAABQSwECHgMU
AAIACADkG4xAHzsQgnkCAAB5BQAAZwAYAAAAAAABAAAApIEjLwAAdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxv
YWRzLW1heC1hZ2UtaHR0cHMtc3RkZXJyLnR4dFVUBQADe0yGT3V4CwABBOgDAAAE6AMAAFBLAQIe
AxQAAgAIAOQbjEACs5STrAIAAKMGAABqABgAAAAAAAEAAACkgT0yAAB0bXAvbGF5b3V0LXRlc3Qt
cmVzdWx0cy9odHRwL3Rlc3RzL2NhY2hlL2hpc3Rvcnktb25seS1jYWNoZWQtc3VicmVzb3VyY2Ut
bG9hZHMtbWF4LWFnZS1odHRwcy1jcmFzaC1sb2cudHh0VVQFAAN7TIZPdXgLAAEE6AMAAAToAwAA
UEsBAh4DCgAAAAAA4xuMQAAAAAAAAAAAAAAAACwAGAAAAAAAAAAQAO1BjTUAAHRtcC9sYXlvdXQt
dGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvYXBwY2FjaGUvVVQFAAN6TIZPdXgLAAEE6AMAAAToAwAA
UEsBAh4DFAACAAgA4huMQNBpff0YAQAAEAIAAEcAGAAAAAAAAQAAAKSB8zUAAHRtcC9sYXlvdXQt
dGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvYXBwY2FjaGUvaW50ZXJydXB0ZWQtdXBkYXRlLWRpZmYu
dHh0VVQFAAN3TIZPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgA4xuMQLkSO6AbAgAA5wQAAFYA
GAAAAAAAAQAAAKSBjDcAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvYXBwY2Fj
aGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC1hY3R1YWwudHh0VVQFAAN6TIZPdXgL
AAEE6AMAAAToAwAAUEsBAh4DFAACAAgA4RuMQEgxXermAQAAjwQAAF4AGAAAAAAAAQAAAKSBNzoA
AHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvYXBwY2FjaGUvY3Jhc2gtd2hlbi1u
YXZpZ2F0aW5nLWF3YXktdGhlbi1iYWNrLWNyYXNoLWxvZy50eHRVVAUAA3VMhk91eAsAAQToAwAA
BOgDAABQSwECHgMUAAIACADhG4xAjKO4orABAACVAwAAWwAYAAAAAAABAAAApIG1PAAAdG1wL2xh
eW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9jcmFzaC13aGVuLW5hdmlnYXRp
bmctYXdheS10aGVuLWJhY2stc3RkZXJyLnR4dFVUBQADdUyGT3V4CwABBOgDAAAE6AMAAFBLAQIe
AxQAAgAIAOMbjEDmO8+5FgIAAOsEAABDABgAAAAAAAEAAACkgfo+AAB0bXAvbGF5b3V0LXRlc3Qt
cmVzdWx0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1hY3R1YWwudHh0VVQFAAN6
TIZPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgA4huMQOr7tmmpAAAAHAEAAEsAGAAAAAAAAQAA
AKSBjUEAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvYXBwY2FjaGUvaW50ZXJy
dXB0ZWQtdXBkYXRlLWV4cGVjdGVkLnR4dFVUBQADd0yGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQA
AgAIAOMbjECZjq3UAwMAALAHAABWABgAAAAAAAEAAACkgbtCAAB0bXAvbGF5b3V0LXRlc3QtcmVz
dWx0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQt
d2RpZmYuaHRtbFVUBQADekyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAOMbjEAiqe68HQoA
AKQrAABcABgAAAAAAAEAAACkgU5GAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQtcHJldHR5LWRpZmYuaHRt
bFVUBQADekyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAOMbjEAFO35iFQMAAG8IAABBABgA
AAAAAAEAAACkgQFRAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L29yaWdpbi1xdW90YS1kaWZmLnR4dFVUBQADekyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAI
AOIbjECgjdLuLwEAAPoBAABJABgAAAAAAAEAAACkgZFUAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2ludGVycnVwdGVkLXVwZGF0ZS13ZGlmZi5odG1sVVQFAAN3
TIZPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgA4xuMQL1P44x/MAAA0UAAAEMAGAAAAAAAAAAA
AKSBQ1YAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2lu
LXF1b3RhLWFjdHVhbC5wbmdVVAUAA3pMhk91eAsAAQToAwAABOgDAABQSwECHgMUAAIACADjG4xA
ozDhyp8CAACjBgAAaQAYAAAAAAABAAAApIE/hwAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLW11bHRpcGxl
LW1hbmlmZXN0cy1hY3R1YWwudHh0VVQFAAN5TIZPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgA
4xuMQN6KFaRqAQAATgIAAFgAGAAAAAAAAQAAAKSBgYoAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC1leHBl
Y3RlZC50eHRVVAUAA3pMhk91eAsAAQToAwAABOgDAABQSwECHgMUAAIACADjG4xAFMogfCIwAABJ
QAAAVgAYAAAAAAAAAAAApIF9jAAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLWFjdHVhbC5wbmdVVAUAA3pM
hk91eAsAAQToAwAABOgDAABQSwECHgMUAAIACADjG4xAd70cH5UBAAC/AgAARQAYAAAAAAABAAAA
pIEvvQAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4t
cXVvdGEtZXhwZWN0ZWQudHh0VVQFAAN6TIZPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgA4huM
QM5k7O9tCAAA6CQAAE8AGAAAAAAAAQAAAKSBQ78AAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvaW50ZXJydXB0ZWQtdXBkYXRlLXByZXR0eS1kaWZmLmh0bWxVVAUA
A3dMhk91eAsAAQToAwAABOgDAABQSwECHgMUAAIACADjG4xA6fE93YsDAADNCgAAZwAYAAAAAAAB
AAAApIE5yAAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmln
aW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1hbmlmZXN0cy1kaWZmLnR4dFVU
BQADeUyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAOMbjEDu9mWyPgMAAG4IAABDABgAAAAA
AAEAAACkgWXMAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29y
aWdpbi1xdW90YS13ZGlmZi5odG1sVVQFAAN6TIZPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgA
4xuMQMIk1I3RCgAAlDIAAG8AGAAAAAAAAQAAAKSBINAAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0
aXBsZS1tYW5pZmVzdHMtcHJldHR5LWRpZmYuaHRtbFVUBQADeUyGT3V4CwABBOgDAAAE6AMAAFBL
AQIeAxQAAgAIAOMbjEAc5st/r0IAAB5UAABpABgAAAAAAAAAAACkgZrbAAB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93
bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLWFjdHVhbC5wbmdVVAUAA3lMhk91eAsAAQToAwAABOgD
AABQSwECHgMUAAIACADjG4xAQ/HnPVcKAABvLgAASQAYAAAAAAABAAAApIHsHgEAdG1wL2xheW91
dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtcHJldHR5LWRp
ZmYuaHRtbFVUBQADekyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAOIbjEDK+p4noAAAAMwA
AABJABgAAAAAAAEAAACkgcYpAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL2ludGVycnVwdGVkLXVwZGF0ZS1hY3R1YWwudHh0VVQFAAN3TIZPdXgLAAEE6AMAAATo
AwAAUEsBAh4DFAACAAgA4xuMQK4gAM2eAwAASAoAAGkAGAAAAAAAAQAAAKSB6SoBAHRtcC9sYXlv
dXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVl
ZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMtd2RpZmYuaHRtbFVUBQADeUyGT3V4CwABBOgD
AAAE6AMAAFBLAQIeAxQAAgAIAOMbjEDjwvFxsAEAABcDAABrABgAAAAAAAEAAACkgSovAQB0bXAv
bGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250
aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLWV4cGVjdGVkLnR4dFVUBQADeUyGT3V4
CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAOMbjEAyvg4I8wIAABsIAABUABgAAAAAAAEAAACkgX8x
AQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90
YS1jb250aW51ZWQtZG93bmxvYWQtZGlmZi50eHRVVAUAA3pMhk91eAsAAQToAwAABOgDAABQSwEC
HgMUAAIACAD1G4xAHZevBkgFAAC0XAAAJQAYAAAAAAABAAAApIEANQEAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvZXJyb3JfbG9nLnR4dFVUBQADnUyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAI
APsbjEAAMYvMSyMAAOWWAAAkABgAAAAAAAEAAACkgac6AQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9yZXN1bHRzLmh0bWxVVAUAA6lMhk91eAsAAQToAwAABOgDAABQSwECHgMUAAIACAD1G4xA4rC7
VTQEAAAzFQAAJgAYAAAAAAABAAAApIFQXgEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNf
cnVuMi50eHRVVAUAA51Mhk91eAsAAQToAwAABOgDAABQSwECHgMUAAIACAD3G4xA4JSknbcDAAB+
DwAAKQAYAAAAAAABAAAApIHkYgEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRz
Lmpzb25VVAUAA6FMhk91eAsAAQToAwAABOgDAABQSwECHgMUAAIACADdG4xAkexmgRokAABvYQAA
IgAYAAAAAAABAAAApIH+ZgEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cGQuY29uZlVUBQAD
ckyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAAPQbjEAAAAAAAAAAAAAAAAAkABgAAAAAAAAA
EADtQXSLAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21wb3NpdGluZy9VVAUAA5xMhk91eAsA
AQToAwAABOgDAABQSwECHgMKAAAAAAD0G4xAAAAAAAAAAAAAAAAALQAYAAAAAAAAABAA7UHSiwEA
dG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvVVQFAAOcTIZPdXgL
AAEE6AMAAAToAwAAUEsBAh4DFAACAAgA9BuMQGtW0EfWAQAAhgQAAFcAGAAAAAAAAQAAAKSBOYwB
AHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2NvbXBvc2l0aW5nL292ZXJmbG93L2ZpeGVkLXBvc2l0
aW9uLWFuY2VzdG9yLWNsaXAtY3Jhc2gtbG9nLnR4dFVUBQADnEyGT3V4CwABBOgDAAAE6AMAAFBL
AQIeAxQAAgAIAPQbjECbtvmYogEAALQDAABUABgAAAAAAAEAAACkgaCOAQB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9maXhlZC1wb3NpdGlvbi1hbmNlc3Rvci1j
bGlwLXN0ZGVyci50eHRVVAUAA5xMhk91eAsAAQToAwAABOgDAABQSwECHgMUAAIACADmG4xAf1jC
naYBAADoAwAAXAAYAAAAAAABAAAApIHQkAEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9z
aXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLXN0ZGVy
ci50eHRVVAUAA39Mhk91eAsAAQToAwAABOgDAABQSwECHgMUAAIACADmG4xAUCBaDtoBAADCBAAA
XwAYAAAAAAABAAAApIEMkwEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRpbmcvYWJz
b2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLWNyYXNoLWxvZy50eHRV
VAUAA39Mhk91eAsAAQToAwAABOgDAABQSwECHgMKAAAAAAD1G4xAAAAAAAAAAAAAAAAALQAYAAAA
AAAAABAA7UF/lQEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkv
VVQFAAOdTIZPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgA8BuMQMwWjLrWAQAAhgQAAEkAGAAA
AAAAAQAAAKSB5pUBAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2NvbXBvc2l0aW5nL2dlb21ldHJ5
L2ZpeGVkLXBvc2l0aW9uLWNyYXNoLWxvZy50eHRVVAUAA5NMhk91eAsAAQToAwAABOgDAABQSwEC
HgMUAAIACADwG4xA9U3KgKMBAAC0AwAARgAYAAAAAAABAAAApIE/mAEAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tc3RkZXJyLnR4dFVU
BQADk0yGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAPEbjED82aGf1gEAAIYEAABXABgAAAAA
AAEAAACkgWKaAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9o
b3Jpem9udGFsLXNjcm9sbC1jb21wb3NpdGVkLWNyYXNoLWxvZy50eHRVVAUAA5ZMhk91eAsAAQTo
AwAABOgDAABQSwECHgMUAAIACAD1G4xAAJRliqMBAAC0AwAAUgAYAAAAAAABAAAApIHJnAEAdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvdmVydGljYWwtc2Nyb2xs
LWNvbXBvc2l0ZWQtc3RkZXJyLnR4dFVUBQADnUyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAI
APIbjEBvcsJx1gEAAIYEAABeABgAAAAAAAEAAACkgfieAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9jb21wb3NpdGluZy9nZW9tZXRyeS9saW1pdC1sYXllci1ib3VuZHMtZml4ZWQtcG9zaXRpb25l
ZC1jcmFzaC1sb2cudHh0VVQFAAOYTIZPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgA8RuMQHb4
N12gAQAAtAMAAFQAGAAAAAAAAQAAAKSBZqEBAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2NvbXBv
c2l0aW5nL2dlb21ldHJ5L2hvcml6b250YWwtc2Nyb2xsLWNvbXBvc2l0ZWQtc3RkZXJyLnR4dFVU
BQADlkyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAPUbjEB/a3A41wEAAIYEAABVABgAAAAA
AAEAAACkgZSjAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21wb3NpdGluZy9nZW9tZXRyeS92
ZXJ0aWNhbC1zY3JvbGwtY29tcG9zaXRlZC1jcmFzaC1sb2cudHh0VVQFAAOdTIZPdXgLAAEE6AMA
AAToAwAAUEsBAh4DFAACAAgA7xuMQAiVUWaiAQAAtAMAAEsAGAAAAAAAAQAAAKSB+qUBAHRtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLWluLWNvbXBvc2l0
ZWQtc3RkZXJyLnR4dFVUBQADkUyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAO8bjEACBk5x
1wEAAIYEAABOABgAAAAAAAEAAACkgSGoAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21wb3Np
dGluZy9nZW9tZXRyeS9maXhlZC1pbi1jb21wb3NpdGVkLWNyYXNoLWxvZy50eHRVVAUAA5FMhk91
eAsAAQToAwAABOgDAABQSwECHgMUAAIACADyG4xAs/cU1qIBAAC0AwAAWwAYAAAAAAABAAAApIGA
qgEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5
ZXItYm91bmRzLWZpeGVkLXBvc2l0aW9uZWQtc3RkZXJyLnR4dFVUBQADmEyGT3V4CwABBOgDAAAE
6AMAAFBLAQIeAxQAAgAIAOcbjEBvIzJxpQEAAOcDAAA7ABgAAAAAAAEAAACkgbesAQB0bXAvbGF5
b3V0LXRlc3QtcmVzdWx0cy9jb21wb3NpdGluZy9jaGVja2VyYm9hcmQtc3RkZXJyLnR4dFVUBQAD
gUyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAOcbjEBzn+/82QEAAMEEAAA+ABgAAAAAAAEA
AACkgdGuAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21wb3NpdGluZy9jaGVja2VyYm9hcmQt
Y3Jhc2gtbG9nLnR4dFVUBQADgUyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAOYbjEBLKix2
2wEAAMIEAABoABgAAAAAAAEAAACkgSKxAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21wb3Np
dGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLXdpdGgtY29tcG9zaXRlZC1wYXJlbnQtbGF5
ZXItY3Jhc2gtbG9nLnR4dFVUBQADf0yGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAOYbjECX
x/j4pwEAAOgDAABlABgAAAAAAAEAAACkgZ+zAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21w
b3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLXdpdGgtY29tcG9zaXRlZC1wYXJlbnQt
bGF5ZXItc3RkZXJyLnR4dFVUBQADf0yGT3V4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAAPQbjEAA
AAAAAAAAAAAAAAAsABgAAAAAAAAAEADtQeW1AQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21w
b3NpdGluZy9pZnJhbWVzL1VUBQADnEyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAPEbjEAm
OZ9umgEAAM8DAABMABgAAAAAAAEAAACkgUu2AQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21w
b3NpdGluZy9pZnJhbWVzL2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1zdGRlcnIudHh0VVQFAAOVTIZP
dXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgA9BuMQEmxblCmAQAA5wMAAFAAGAAAAAAAAQAAAKSB
a7gBAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2NvbXBvc2l0aW5nL2lmcmFtZXMvb3ZlcmxhcHBl
ZC1uZXN0ZWQtaWZyYW1lcy1zdGRlcnIudHh0VVQFAAOcTIZPdXgLAAEE6AMAAAToAwAAUEsBAh4D
FAACAAgA8xuMQGzVwe/NAQAAqAQAAFIAGAAAAAAAAQAAAKSBm7oBAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL2NvbXBvc2l0aW5nL2lmcmFtZXMvbmVzdGVkLWNvbXBvc2l0ZWQtaWZyYW1lLWNyYXNo
LWxvZy50eHRVVAUAA5pMhk91eAsAAQToAwAABOgDAABQSwECHgMUAAIACAD0G4xAf80xWNoBAADB
BAAAUwAYAAAAAAABAAAApIH0vAEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRpbmcv
aWZyYW1lcy9vdmVybGFwcGVkLW5lc3RlZC1pZnJhbWVzLWNyYXNoLWxvZy50eHRVVAUAA5xMhk91
eAsAAQToAwAABOgDAABQSwECHgMUAAIACADxG4xAd/3ic80BAACpBAAATwAYAAAAAAABAAAApIFb
vwEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9maXhlZC1wb3Np
dGlvbi1pZnJhbWUtY3Jhc2gtbG9nLnR4dFVUBQADlUyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQA
AgAIAPMbjEC/GfsVmQEAAM4DAABPABgAAAAAAAEAAACkgbHBAQB0bXAvbGF5b3V0LXRlc3QtcmVz
dWx0cy9jb21wb3NpdGluZy9pZnJhbWVzL25lc3RlZC1jb21wb3NpdGVkLWlmcmFtZS1zdGRlcnIu
dHh0VVQFAAOaTIZPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgA6BuMQIksEGbHAQAAbAQAAFMA
GAAAAAAAAQAAAKSB08MBAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2NvbXBvc2l0aW5nL3Njcm9s
bC1wYWludGVkLWNvbXBvc2l0ZWQtY29udGVudC1jcmFzaC1sb2cudHh0VVQFAAOETIZPdXgLAAEE
6AMAAAToAwAAUEsBAh4DFAACAAgA6BuMQEiER5GUAQAAmgMAAFAAGAAAAAAAAQAAAKSBJ8YBAHRt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL2NvbXBvc2l0aW5nL3Njcm9sbC1wYWludGVkLWNvbXBvc2l0
ZWQtY29udGVudC1zdGRlcnIudHh0VVQFAAOETIZPdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAA
8RuMQAAAAAAAAAAAAAAAADMAGAAAAAAAAAAQAO1BRcgBAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL1VUBQADlkyGT3V4CwABBOgDAAAE6AMAAFBLAQIe
AxQAAgAIAPEbjED1yvspogEAALQDAABTABgAAAAAAAEAAACkgbLIAQB0bXAvbGF5b3V0LXRlc3Qt
cmVzdWx0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1zY3JvbGwt
c3RkZXJyLnR4dFVUBQADlkyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAPEbjED+mXvF1wEA
AIYEAABWABgAAAAAAAEAAACkgeHKAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jb21wb3NpdGlu
Zy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1zY3JvbGwtY3Jhc2gtbG9nLnR4dFVUBQAD
lkyGT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAPQbjEB1A//jiBQAAKYMAQAmABgAAAAAAAEA
AACkgUjNAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hY2Nlc3NfbG9nLnR4dFVUBQADnEyGT3V4
CwABBOgDAAAE6AMAAFBLBQYAAAAAVABUAKwuAAAw4gEAAAA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136822</attachid>
            <date>2012-04-11 21:37:11 -0700</date>
            <delta_ts>2012-04-12 01:58:19 -0700</delta_ts>
            <desc>Patch 5</desc>
            <filename>bug-81081-20120412133708.patch</filename>
            <type>text/plain</type>
            <size>54031</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzOTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDFiYmE5NTVjOTQxMzEzMjI0NDU3NTg0ZDFhMTgwMWFmYmJiYWFlMmMuLmIyN2Y4NTU2MzZkMDVk
YjBhYjQ1NmY1MGE3OTJlNTMwOTFiYjRjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTA3IEBACisyMDEyLTA0LTExICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEFkZCBQYWdlUG9wdXAgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMDgxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYlBh
Z2VQb3B1cEltcGwgY2xhc3MsIHdoaWNoIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mCisgICAgICAg
IFdlYkNvcmU6OlBhZ2VQb3B1cCBpbnRlcmZhY2UgYW5kIFdlYktpdDo6V2ViUGFnZVBvcHVwIGlu
dGVyZmFjZS4gSXQncyBhCisgICAgICAgIFdlYldpZGdldCB3aGljaCBoYXMgYSBQYWdlIG9iamVj
dC4KKworICAgICAgICBJbiBvcmRlciB0byBzaGFyZSBjb2RlIGluIFdlYlZpZXdJbXBsIGFuZCBX
ZWJQYWdlUG9wdXBJbXBsLCB3ZSBtb3ZlIHNvbWUKKyAgICAgICAgY29kZSBvZiBXZWJWaWV3SW1w
bCBhbmQgV2ViRnJhbWVJbXBsIHRvIFBhZ2VXaWRnZXREZWxlZ2F0ZS4KKyAgICAgICAgUGFnZVdp
ZGdldERlbGVnYXRlIGlzIGEgc2V0IG9mIHN0YXRpYyBmdW5jdGlvbnMgYmVjYXVzZSB3ZSBjYW4n
dCB1c2UKKyAgICAgICAgdmlydHVhbCBpbmhlcml0YW5jZSBpbiB0aGlzIGNhc2UgYW5kIHdlIGRv
bid0IHdhbnQgdG8gbW92ZSBXZWJWaWV3J3MKKyAgICAgICAgZGF0YSBtZW1iZXJzIHRvIGFub3Ro
ZXIgY2xhc3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBtYWtlcyBubyBi
ZWhhdmlvciBjaGFuZ2UgeWV0LgorCisgICAgICAgICogV2ViS2l0Lmd5cDogQWRkIFBhZ2VXaWRn
ZXREZWxlZ2F0ZS57Y3BwLGh9IGFuZCBXZWJQYWdlUG9wdXBJbXBsLmguCisgICAgICAgICogc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBs
OjpoYXNPcGVuZWRQb3B1cCk6IFN1cHBvcnRzIHRoZSBQYWdlUG9wdXAuCisgICAgICAgIChXZWJL
aXQ6OkNocm9tZUNsaWVudEltcGw6Om9wZW5QYWdlUG9wdXApOgorICAgICAgICBqdXN0IGRlbGVn
YXRlIHRvIFdlYlZpZXdJbXBsOjpvcGVuUGFnZVBvcHVwKCkuCisgICAgICAgIChXZWJLaXQ6OkNo
cm9tZUNsaWVudEltcGw6OmNsb3NlUGFnZVBvcHVwKTogZGl0dG8uCisgICAgICAgICogc3JjL1Bh
Z2VXaWRnZXREZWxlZ2F0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjptYWluRnJhbWVW
aWV3KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdldERlbGVnYXRlOjphbmltYXRlKToKKyAg
ICAgICAgTW92ZWQgZnJvbSBhIHBhcnQgb2YgV2ViVmlld0ltcGw6OmFuaW1hdGllKCkKKyAgICAg
ICAgKFdlYktpdDo6UGFnZVdpZGdldERlbGVnYXRlOjpsYXlvdXQpOgorICAgICAgICBNb3ZlZCBm
cm9tIFdlYlZpZXdJbXBsOjpsYXlvdXQoKSBhbmQgV2ViRnJhbWVJbXBsOjpsYXlvdXQoKS4KKyAg
ICAgICAgKFdlYktpdDo6UGFnZVdpZGdldERlbGVnYXRlOjpwYWludCk6CisgICAgICAgIE1vdmVk
IGZyb20gV2ViRnJhbWVJbXBsOjpwYWludCgpIGFuZCBwYWludFdpdGhDb250ZXh0KCkuCisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAg
ICAgIE1vdmVkIGZyb20gYSBwYXJ0IG9mIFdlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KCku
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92
ZSk6CisgICAgICAgIENvbW1vbiBpbXBsZW1lbnRhdGlvbiBvZiBhbiBldmVudCBoYW5kbGluZy4K
KyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdldEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VMZWF2
ZSk6IGRpdHRvLgorICAgICAgICAoV2ViS2l0OjpQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZURvd24pOiBkaXR0by4KKyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdldEV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VVcCk6IGRpdHRvLgorICAgICAgICAoV2ViS2l0OjpQYWdlV2lkZ2V0
RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVdoZWVsKTogZGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OlBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOiBkaXR0by4KKyAgICAg
ICAgKiBzcmMvUGFnZVdpZGdldERlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJG
cmFtZUltcGwuY3BwOgorICAgICAgICBSZW1vdmUgbGF5b3V0KCksIHBhaW50V2l0aENvbnRleHQo
KSwgYW5kIHBhaW50KCkuIFRoZXkgYXJlIG1vdmVkIHRvCisgICAgICAgIFBhZ2VXaWRnZXREZWxl
Z2F0ZS4KKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisgICAgICAgIChXZWJGcmFtZUlt
cGwpOiBSZW1vdmUgbGF5b3V0KCksIHBhaW50V2l0aENvbnRleHQoKSwgYW5kIHBhaW50KCkuCisK
KyAgICAgICAgKiBzcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHA6CisgICAgICAgIChQYWdlUG9wdXBD
aHJvbWVDbGllbnQpOgorICAgICAgICBUaGlzIGlzIGEgbGlnaHQgaW1wbGVtZW50YXRpb24gb2Yg
Q2hyb21lQ2xpZW50IGZvciB0aGUgcGFnZSBpbgorICAgICAgICBXZWJQYWdlUG9wdXBJbXBsLiBU
aGlzIGlzIGEgZnJpZW5kIG9mIFdlYlBhZ2VQb3B1cEltcGwgYmVjYXNlIG9mIGVhc2Ugb2YKKyAg
ICAgICAgYWNjZXNzIHRvIGl0cyBtZW1iZXJzLgorICAgICAgICAoV2ViS2l0OjpQYWdlUG9wdXBD
aHJvbWVDbGllbnQ6OlBhZ2VQb3B1cENocm9tZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQb3B1cEltcGw6OldlYlBhZ2VQb3B1cEltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUG9wdXBJbXBsOjp+V2ViUGFnZVBvcHVwSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQb3B1cEltcGw6OmluaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpp
bml0UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OnNpemUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjphbmltYXRlKTogQ2FsbHMgUGFnZVdpZGdl
dERlbGVnYXRlOjphbmltYXRlKCkuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6
OmNvbXBvc2l0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmxheW91dCk6
IENhbGxzIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6bGF5b3V0KCkuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQb3B1cEltcGw6OnBhaW50KTogQ2FsbHMgUGFnZVdpZGdldERlbGVnYXRlOjpwYWludCgp
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpyZXNpemUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpoYW5kbGVLZXlFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUNoYXJFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUG9wdXBJbXBsOjpzZXRGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1
cEltcGw6OmNsb3NlKTogRGVsZXRlIHRoZSBwYWdlLCBhbmQga2lsbCBpdHNlbGYuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmNsb3NlUG9wdXApOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUG9wdXA6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYlBhZ2VQb3B1cEltcGwu
aDogQWRkZWQuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOiBJbml0aWFsaXplIG1fcGFnZVBvcHVwLgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlTW91c2VMZWF2ZSk6CisgICAgICAg
IFJlbmFtZWQgZnJvbSBtb3VzZUxlYXZlKCksIHVzZSBQYWdlV2lkZ2V0RGVsZWdhdGU6OmhhbmRs
ZU1vdXNlTGVhdmUoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRsZU1vdXNl
RG93bik6CisgICAgICAgIFJlbmFtZWQgZnJvbSBtb3VzZURvd24oKSwgdXNlIFBhZ2VXaWRnZXRE
ZWxlZ2F0ZTo6aGFuZGxlTW91c2VEb3duKCkuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpoYW5kbGVNb3VzZVVwKToKKyAgICAgICAgUmVuYW1lZCBmcm9tIG1vdXNlVXAoKSwgdXNlIFBh
Z2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlTW91c2VVcCgpLgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2Nyb2xsQnkpOiBDYWxscyByZW5hbWVkIGhhbmRsZU1vdXNlV2hlZWwoKS4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRsZUdlc3R1cmVFdmVudCk6IFJlbmFtZWQg
ZnJvbSBnZXN0dXJlRXZlbnQoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRs
ZUtleUV2ZW50KToKKyAgICAgICAgUmVuYW1lZCBmcm9tIGtleUV2ZW50KCkuIEZvcndhcmQga2V5
IGV2ZW50cyB0byBhIFBhZ2VQb3B1cCBpZiBpdCBpcyBvcGVuLgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6aGFuZGxlQ2hhckV2ZW50KToKKyAgICAgICAgUmVuYW1lZCBmcm9tIGNoYXJF
dmVudCgpLiBGb3J3YXJkIGNoYXIgZXZlbnRzIHRvIGEgUGFnZVBvcHVwIGlmIGl0IGlzIG9wZW4u
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpvcGVuUGFnZVBvcHVwKToKKyAgICAgICAg
QWRkZWQuIEluc3RhbnRpYXRlIGEgV2ViUGFnZVBvcHVwSW1wbCwgY2FsY3VsYXRlcyBhIGdvb2Qg
Ym91bmRpbmcKKyAgICAgICAgcmVjdGFuZ2xlIG9mIHRoZSBwYWdlIHBvcHVwIGZyb20gdGhlIHNw
ZWNpZmllZCBlbGVtZW50IHJlY3RhbmdsZSwKKyAgICAgICAgaW5pdGlhbGl6ZSB0aGUgV2ViUGFn
ZVBvcHVwSW1wbCwgYW5kIHN0b3AgY2FyZXQgYmxpbmsuCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpjbG9zZVBhZ2VQb3B1cCk6CisgICAgICAgIENsb3NlIHRoZSBwb3B1cCwgY2xlYXIg
bV9wYWdlUG9wdXAsIGFuZCByZXN1bWUgY2FyZXQgYmxpbmsuCisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKTogVXNlcyBQYWdlV2lkZ2V0RGVsZWdhdGU6OmFu
aW1hdGUoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmxheW91dCk6IFVzZXMgUGFn
ZVdpZGdldERlbGVnYXRlOjpsYXlvdXQoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnBhaW50KTogVXNlcyBQYWdlV2lkZ2V0RGVsZWdhdGU6OnBhaW50KCkuCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KTogVXNlcyBQYWdlV2lkZ2V0RGVsZWdh
dGU6OmhhbmRsZUlucHV0RXZlbnQoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNl
dEZvY3VzKTogSGlkZSBhbGwgdGhlIHBvcHVwcy4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OmhpZGVQb3B1cHMpOiBIaWRlIHRoZSBwYWdlIHBvcHVwIHRvby4KKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omhhc09wZW5lZFBv
cHVwKTogQ2hlY2tzIHRoZSBwYWdlIHBvcHVwIHRvby4KKwogMjAxMi0wNC0xMSAgRGF2aWQgRG9y
d2luICA8ZGRvcndpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGtleVN5c3RlbSBhdHRy
aWJ1dGUgdG8gY2FuUGxheVR5cGUoKSBmb3IgRW5jcnlwdGVkIE1lZGlhIEV4dGVuc2lvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBkNmE3ZjcxMzYxYzMwOTgxMTkxNGEyMzJlZGJm
MmViMDA1Yzg3ZjhmLi5iY2VmZmFhMzlmNjMzMzAxNjNmYzA3MDY2OGY5YzI0NGI3ZGM0MmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC00NTgsNiArNDU4LDggQEAKICAgICAgICAg
ICAgICAgICAnc3JjL1BhZ2VPdmVybGF5LmgnLAogICAgICAgICAgICAgICAgICdzcmMvUGFnZU92
ZXJsYXlMaXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9QYWdlT3ZlcmxheUxpc3QuaCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9QYWdlV2lkZ2V0RGVsZWdhdGUuY3BwJywKKyAgICAgICAg
ICAgICAgICAnc3JjL1BhZ2VXaWRnZXREZWxlZ2F0ZS5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Q
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1BsYXRm
b3JtU3VwcG9ydC5jcHAnLApAQCAtNjExLDYgKzYxMyw3IEBACiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJOb3RpZmljYXRpb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk9wdGlvbkVs
ZW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwJywK
KyAgICAgICAgICAgICAgICAnc3JjL1dlYlBhZ2VQb3B1cEltcGwuaCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJQYWdlU2VyaWFsaXplci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
UGFnZVNlcmlhbGl6ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQYWdlU2Vy
aWFsaXplckltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuY3BwCmluZGV4IDQyNzM1YTQ2ZDkyZTFjMDg3MDA2NmJmOWI0Y2Y5ZDlkMzViM2Fm
ZDYuLjE5OTJjZDRhYWFmNjVkZDkxZjUwNjFjZGY5MzVhMjhmYTAwNWIxZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC05NzcsNyAr
OTc3LDcgQEAgYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93
c01lbnVXcml0aW5nRGlyZWN0aW9uKCkKIAogYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpoYXNPcGVu
ZWRQb3B1cCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICEhbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgp
OworICAgIHJldHVybiBtX3dlYlZpZXctPmhhc09wZW5lZFBvcHVwKCk7CiB9CiAKIFBhc3NSZWZQ
dHI8UG9wdXBNZW51PiBDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51
Q2xpZW50KiBjbGllbnQpIGNvbnN0CkBAIC05OTQsMTUgKzk5NCwxNCBAQCBQYXNzUmVmUHRyPFNl
YXJjaFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBv
cHVwTWVudUNsaQogfQogCiAjaWYgRU5BQkxFKFBBR0VfUE9QVVApCi1QYWdlUG9wdXAqIENocm9t
ZUNsaWVudEltcGw6Om9wZW5QYWdlUG9wdXAoUGFnZVBvcHVwQ2xpZW50KiwgY29uc3QgSW50UmVj
dCYpCitQYWdlUG9wdXAqIENocm9tZUNsaWVudEltcGw6Om9wZW5QYWdlUG9wdXAoUGFnZVBvcHVw
Q2xpZW50KiBjbGllbnQsIGNvbnN0IEludFJlY3QmIG9yaWdpbkJvdW5kc0luUm9vdFZpZXcpCiB7
Ci0gICAgLy8gRklYTUU6IEltcGVsZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbV93ZWJWaWV3LT5vcGVuUGFnZVBvcHVwKGNsaWVudCwgb3JpZ2luQm91bmRzSW5Sb290Vmll
dyk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Y2xvc2VQYWdlUG9wdXAoUGFnZVBvcHVw
KikKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Y2xvc2VQYWdlUG9wdXAoUGFnZVBvcHVwKiBwb3B1
cCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgbV93ZWJWaWV3LT5jbG9z
ZVBhZ2VQb3B1cChwb3B1cCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1BhZ2VXaWRnZXREZWxlZ2F0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2NiZDg3ZjcwMWRl
YzMwMjljYTU4OTRiY2E5NWExY2Y1ZGRkNjJiYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1BhZ2VXaWRnZXREZWxlZ2F0ZS5jcHAKQEAgLTAsMCArMSwyMjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFnZVdpZGdldERlbGVnYXRlLmgiCisK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIlBh
Z2VPdmVybGF5TGlzdC5oIgorI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKKyNpbmNsdWRlICJX
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oIgorI2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29u
dGV4dEJ1aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgaW5saW5lIEZy
YW1lVmlldyogbWFpbkZyYW1lVmlldyhQYWdlKiBwYWdlKQoreworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFwYWdlLT5tYWluRnJhbWUoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIHBhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCk7Cit9CisKK3ZvaWQg
UGFnZVdpZGdldERlbGVnYXRlOjphbmltYXRlKFBhZ2UqIHBhZ2UsIGRvdWJsZSBtb25vdG9uaWNG
cmFtZUJlZ2luVGltZSkKK3sKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lVmlldyhwYWdlKTsKKyAgICBpZiAoIXZpZXcp
CisgICAgICAgIHJldHVybjsKKyAgICBkb3VibGUgdGltZVNoaWZ0ID0gY3VycmVudFRpbWUoKSAt
IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIHZpZXctPnNlcnZpY2VTY3JpcHRl
ZEFuaW1hdGlvbnMoY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChtb25vdG9uaWNGcmFtZUJl
Z2luVGltZSArIHRpbWVTaGlmdCkpOworI2VuZGlmCit9CisKK3ZvaWQgUGFnZVdpZGdldERlbGVn
YXRlOjpsYXlvdXQoUGFnZSogcGFnZSkKK3sKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJh
bWVWaWV3KHBhZ2UpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuOworICAgIC8vIElu
IG9yZGVyIGZvciBvdXIgY2hpbGQgSFdORHMgKE5hdGl2ZVdpbmRvd1dpZGdldHMpIHRvIHVwZGF0
ZSBwcm9wZXJseSwKKyAgICAvLyB0aGV5IG5lZWQgdG8gYmUgdG9sZCB0aGF0IHdlIGFyZSB1cGRh
dGluZyB0aGUgc2NyZWVuLiBUaGUgcHJvYmxlbSBpcyB0aGF0CisgICAgLy8gdGhlIG5hdGl2ZSB3
aWRnZXRzIG5lZWQgdG8gcmVjYWxjdWxhdGUgdGhlaXIgY2xpcCByZWdpb24gYW5kIG5vdCBvdmVy
bGFwCisgICAgLy8gYW55IG9mIG91ciBub24tbmF0aXZlIHdpZGdldHMuIFRvIGZvcmNlIHRoZSBy
ZXNpemluZywgY2FsbAorICAgIC8vIHNldEZyYW1lUmVjdCgpLiBUaGlzIHdpbGwgYmUgYSBxdWlj
ayBvcGVyYXRpb24gZm9yIG1vc3QgZnJhbWVzLCBidXQgdGhlCisgICAgLy8gTmF0aXZlV2luZG93
V2lkZ2V0cyB3aWxsIHVwZGF0ZSBhIHByb3BlciBjbGlwcGluZyByZWdpb24uCisgICAgdmlldy0+
c2V0RnJhbWVSZWN0KHZpZXctPmZyYW1lUmVjdCgpKTsKKworICAgIC8vIHNldEZyYW1lUmVjdCBt
YXkgaGF2ZSB0aGUgc2lkZS1lZmZlY3Qgb2YgY2F1c2luZyBleGlzdGluZyBwYWdlIGxheW91dCB0
bworICAgIC8vIGJlIGludmFsaWRhdGVkLCBzbyBsYXlvdXQgbmVlZHMgdG8gYmUgY2FsbGVkIGxh
c3QuCisgICAgdmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwor
fQorCit2b2lkIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6cGFpbnQoUGFnZSogcGFnZSwgUGFnZU92ZXJs
YXlMaXN0KiBvdmVybGF5cywgV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3Qp
Cit7CisgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgR3JhcGhp
Y3NDb250ZXh0QnVpbGRlciBidWlsZGVyKGNhbnZhcyk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBn
YyA9IGJ1aWxkZXIuY29udGV4dCgpOworICAgIEludFJlY3QgZGlydHlSZWN0KHJlY3QpOworICAg
IGdjLnNhdmUoKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJhbWVWaWV3KHBhZ2UpOwor
ICAgIGlmICh2aWV3ICYmIHBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKSB7CisgICAgICAg
IGdjLmNsaXAoZGlydHlSZWN0KTsKKyAgICAgICAgdmlldy0+cGFpbnQoJmdjLCBkaXJ0eVJlY3Qp
OworICAgICAgICBpZiAob3ZlcmxheXMpCisgICAgICAgICAgICBvdmVybGF5cy0+cGFpbnRXZWJG
cmFtZShnYyk7CisgICAgfSBlbHNlCisgICAgICAgIGdjLmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBnYy5yZXN0b3JlKCk7Cit9CisK
K2Jvb2wgUGFnZVdpZGdldERlbGVnYXRlOjpoYW5kbGVJbnB1dEV2ZW50KFBhZ2UqIHBhZ2UsIFBh
Z2VXaWRnZXRFdmVudEhhbmRsZXImIGhhbmRsZXIsIGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50
KQoreworICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UgPyBwYWdlLT5tYWluRnJhbWUoKSA6IDA7Cisg
ICAgc3dpdGNoIChldmVudC50eXBlKSB7CisKKyAgICAvLyBGSVhNRTogV2ViS2l0IHNlZW1zIHRv
IGFsd2F5cyByZXR1cm4gZmFsc2Ugb24gbW91c2UgZXZlbnRzIHByb2Nlc3NpbmcKKyAgICAvLyBt
ZXRob2RzLiBGb3Igbm93IHdlJ2xsIGFzc3VtZSBpdCBoYXMgcHJvY2Vzc2VkIHRoZW0gKGFzIHdl
IGFyZSBvbmx5CisgICAgLy8gaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGtleWJvYXJkIGV2ZW50cyBh
cmUgcHJvY2Vzc2VkKS4KKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlTW92ZToKKyAgICAg
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBoYW5kbGVyLmhhbmRsZU1vdXNlTW92ZSgqZnJhbWUsICpzdGF0aWNfY2FzdDxj
b25zdCBXZWJNb3VzZUV2ZW50Kj4oJmV2ZW50KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VMZWF2ZToKKyAgICAgICAgaWYgKCFmcmFtZSB8fCAh
ZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBoYW5kbGVy
LmhhbmRsZU1vdXNlTGVhdmUoKmZyYW1lLCAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVu
dCo+KCZldmVudCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Ok1vdXNlRG93bjoKKyAgICAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBoYW5kbGVyLmhhbmRsZU1vdXNlRG93bigq
ZnJhbWUsICpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmV2ZW50KSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VVcDoKKyAgICAg
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBoYW5kbGVyLmhhbmRsZU1vdXNlVXAoKmZyYW1lLCAqc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViTW91c2VFdmVudCo+KCZldmVudCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbDoKKyAgICAgICAgaWYgKCFmcmFtZSB8fCAh
ZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IGhhbmRsZXIuaGFuZGxlTW91c2VXaGVlbCgqZnJhbWUsICpzdGF0aWNfY2FzdDxjb25zdCBXZWJN
b3VzZVdoZWVsRXZlbnQqPigmZXZlbnQpKTsKKworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6UmF3
S2V5RG93bjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OktleURvd246CisgICAgY2FzZSBXZWJJ
bnB1dEV2ZW50OjpLZXlVcDoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIuaGFuZGxlS2V5RXZlbnQo
KnN0YXRpY19jYXN0PGNvbnN0IFdlYktleWJvYXJkRXZlbnQqPigmZXZlbnQpKTsKKworICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6Q2hhcjoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIuaGFuZGxlQ2hh
ckV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJLZXlib2FyZEV2ZW50Kj4oJmV2ZW50KSk7CisK
KyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlU2Nyb2xsQmVnaW46CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5k
OgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZToKKyAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OgorICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZUZsaW5nQ2FuY2VsOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRh
cDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXBEb3duOgorICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIuaGFu
ZGxlR2VzdHVyZUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmZXZl
bnQpKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6OlRvdWNoU3RhcnQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaE1vdmU6
CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaEVuZDoKKyAgICBjYXNlIFdlYklucHV0RXZl
bnQ6OlRvdWNoQ2FuY2VsOgorICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+dmlldygpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gaGFuZGxlci5oYW5kbGVU
b3VjaEV2ZW50KCpmcmFtZSwgKnN0YXRpY19jYXN0PGNvbnN0IFdlYlRvdWNoRXZlbnQqPigmZXZl
bnQpKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVnaW46CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlUGluY2hFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hVcGRh
dGU6CisgICAgICAgIC8vIEZJWE1FOiBPbmNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50IGlzIHVwZGF0
ZWQgdG8gc3VwcG9ydCBwaW5jaCwgdGhpcworICAgICAgICAvLyBzaG91bGQgY2FsbCBoYW5kbGVH
ZXN0dXJlRXZlbnQsIGp1c3QgbGlrZSBpdCBjdXJyZW50bHkgZG9lcyBmb3IKKyAgICAgICAgLy8g
Z2VzdHVyZSBzY3JvbGwuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8g
RGVmYXVsdCBoYW5kbGVycyBmb3IgUGFnZVdpZGdldEV2ZW50SGFuZGxlcgorCit2b2lkIFBhZ2VX
aWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZShGcmFtZSYgbWFpbkZyYW1lLCBjb25z
dCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICAvLyBXZSBjYWxsIG1vdXNlTW92ZWQgaGVy
ZSBpbnN0ZWFkIG9mIGhhbmRsZU1vdXNlTW92ZWRFdmVudCBiZWNhdXNlIHdlIG5lZWQKKyAgICAv
LyBvdXIgQ2hyb21lQ2xpZW50SW1wbCB0byByZWNlaXZlIGNoYW5nZXMgdG8gdGhlIG1vdXNlIHBv
c2l0aW9uIGFuZCB0b29sdGlwCisgICAgLy8gdGV4dCwgYW5kIG1vdXNlTW92ZWQgaGFuZGxlcyBh
bGwgb2YgdGhhdC4KKyAgICBtYWluRnJhbWUuZXZlbnRIYW5kbGVyKCktPm1vdXNlTW92ZWQoUGxh
dGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihtYWluRnJhbWUudmlldygpLCBldmVudCkpOworfQorCit2
b2lkIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTGVhdmUoRnJhbWUmIG1haW5G
cmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgbWFpbkZyYW1lLmV2ZW50
SGFuZGxlcigpLT5oYW5kbGVNb3VzZU1vdmVFdmVudChQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVy
KG1haW5GcmFtZS52aWV3KCksIGV2ZW50KSk7Cit9CisKK3ZvaWQgUGFnZVdpZGdldEV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VEb3duKEZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZl
bnQmIGV2ZW50KQoreworICAgIG1haW5GcmFtZS5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQ
cmVzc0V2ZW50KFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIobWFpbkZyYW1lLnZpZXcoKSwgZXZl
bnQpKTsKK30KKwordm9pZCBQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVVwKEZy
YW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIG1haW5G
cmFtZS5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoUGxhdGZvcm1Nb3Vz
ZUV2ZW50QnVpbGRlcihtYWluRnJhbWUudmlldygpLCBldmVudCkpOworfQorCitib29sIFBhZ2VX
aWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlV2hlZWwoRnJhbWUmIG1haW5GcmFtZSwgY29u
c3QgV2ViTW91c2VXaGVlbEV2ZW50JiBldmVudCkKK3sKKyAgICByZXR1cm4gbWFpbkZyYW1lLmV2
ZW50SGFuZGxlcigpLT5oYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIo
bWFpbkZyYW1lLnZpZXcoKSwgZXZlbnQpKTsKK30KKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Citib29sIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoRnJhbWUmIG1h
aW5GcmFtZSwgY29uc3QgV2ViVG91Y2hFdmVudCYgZXZlbnQpCit7CisgICAgcmV0dXJuIG1haW5G
cmFtZS5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVG91Y2hFdmVudChQbGF0Zm9ybVRvdWNoRXZlbnRC
dWlsZGVyKG1haW5GcmFtZS52aWV3KCksIGV2ZW50KSk7Cit9CisjZW5kaWYKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVnYXRlLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QYWdlV2lkZ2V0RGVsZWdhdGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kYmJlMjY5YWNiNzVhZDNkNmRhMjliMDQxOTE3ZjcwNTBhOWE3YjJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVnYXRlLmgKQEAg
LTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgUGFnZVdpZGdldERlbGVnYXRlX2gKKyNkZWZpbmUgUGFnZVdp
ZGdldERlbGVnYXRlX2gKKworI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJXaWRnZXQu
aCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lOworY2xhc3MgUGFnZTsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBhZ2VPdmVybGF5TGlzdDsKK2NsYXNzIFdl
Ykdlc3R1cmVFdmVudDsKK2NsYXNzIFdlYklucHV0RXZlbnQ7CitjbGFzcyBXZWJLZXlib2FyZEV2
ZW50OworY2xhc3MgV2ViTW91c2VFdmVudDsKK2NsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKK2Ns
YXNzIFdlYlRvdWNoRXZlbnQ7CisKK2NsYXNzIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZU1vdmUoV2ViQ29yZTo6RnJhbWUmIG1h
aW5GcmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVN
b3VzZUxlYXZlKFdlYkNvcmU6OkZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91c2VEb3duKFdlYkNvcmU6OkZyYW1lJiBtYWlu
RnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91
c2VVcChXZWJDb3JlOjpGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJNb3VzZUV2ZW50Jik7Cisg
ICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlV2hlZWwoV2ViQ29yZTo6RnJhbWUmIG1haW5GcmFt
ZSwgY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtl
eUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhh
bmRsZUNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JikgPSAwOworI2lmIEVOQUJMRShH
RVNUVVJFX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0
IFdlYkdlc3R1cmVFdmVudCYpID0gMDsKKyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisgICAgdmlydHVhbCBib29sIGhhbmRsZVRvdWNoRXZlbnQoV2ViQ29yZTo6RnJhbWUmIG1haW5G
cmFtZSwgY29uc3QgV2ViVG91Y2hFdmVudCYpOworI2VuZGlmCisgICAgdmlydHVhbCB+UGFnZVdp
ZGdldEV2ZW50SGFuZGxlcigpIHsgfQorfTsKKworCisvLyBDb21tb24gaW1wbGVtZW50YXRpb24g
b2YgV2ViVmlld0ltcGwgYW5kIFdlYlBhZ2VQb3B1cEltcGwuCitjbGFzcyBQYWdlV2lkZ2V0RGVs
ZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGFuaW1hdGUoV2ViQ29yZTo6UGFnZSos
IGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CisgICAgc3RhdGljIHZvaWQgbGF5b3V0
KFdlYkNvcmU6OlBhZ2UqKTsKKyAgICBzdGF0aWMgdm9pZCBwYWludChXZWJDb3JlOjpQYWdlKiwg
UGFnZU92ZXJsYXlMaXN0KiwgV2ViQ2FudmFzKiwgY29uc3QgV2ViUmVjdCYpOworICAgIHN0YXRp
YyBib29sIGhhbmRsZUlucHV0RXZlbnQoV2ViQ29yZTo6UGFnZSosIFBhZ2VXaWRnZXRFdmVudEhh
bmRsZXImLCBjb25zdCBXZWJJbnB1dEV2ZW50Jik7CisKK3ByaXZhdGU6CisgICAgUGFnZVdpZGdl
dERlbGVnYXRlKCkgeyB9Cit9OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDgxM2M5ZDcwNzQzMzljNDg3ZTRiMjRmZWY4ZmNm
NTE1ZDNiZDJhNzkuLjNmOWQ5ZDMxMTFlYjBiY2UxOGY3NjZlMzNjOTMxNThjOWI3Mzk4MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMjA1Niwz
NSArMjA1Niw2IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lSW1wbDo6Y3JlYXRlQ2hpbGRG
cmFtZSgKICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgV2ViRnJh
bWVJbXBsOjpsYXlvdXQoKQotewotICAgIC8vIGxheW91dCB0aGlzIGZyYW1lCi0gICAgRnJhbWVW
aWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwotICAgIGlmICh2aWV3KQotICAgICAgICB2aWV3
LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7Ci19Ci0KLXZvaWQgV2Vi
RnJhbWVJbXBsOjpwYWludFdpdGhDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgZ2MsIGNvbnN0IFdl
YlJlY3QmIHJlY3QpCi17Ci0gICAgSW50UmVjdCBkaXJ0eVJlY3QocmVjdCk7Ci0gICAgZ2Muc2F2
ZSgpOwotICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICYmIGZyYW1lVmlldygpKSB7Ci0gICAg
ICAgIGdjLmNsaXAoZGlydHlSZWN0KTsKLSAgICAgICAgZnJhbWVWaWV3KCktPnBhaW50KCZnYywg
ZGlydHlSZWN0KTsKLSAgICAgICAgaWYgKHZpZXdJbXBsKCktPnBhZ2VPdmVybGF5cygpKQotICAg
ICAgICAgICAgdmlld0ltcGwoKS0+cGFnZU92ZXJsYXlzKCktPnBhaW50V2ViRnJhbWUoZ2MpOwot
ICAgIH0gZWxzZQotICAgICAgICBnYy5maWxsUmVjdChkaXJ0eVJlY3QsIENvbG9yOjp3aGl0ZSwg
Q29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgZ2MucmVzdG9yZSgpOwotfQotCi12b2lkIFdlYkZy
YW1lSW1wbDo6cGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17
Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcGFpbnRXaXRo
Q29udGV4dChHcmFwaGljc0NvbnRleHRCdWlsZGVyKGNhbnZhcykuY29udGV4dCgpLCByZWN0KTsK
LX0KLQogdm9pZCBXZWJGcmFtZUltcGw6OmNyZWF0ZUZyYW1lVmlldygpCiB7CiAgICAgQVNTRVJU
KG1fZnJhbWUpOyAvLyBJZiBtX2ZyYW1lIGRvZXNuJ3QgZXhpc3QsIHdlIHByb2JhYmx5IGRpZG4n
dCBpbml0IHByb3Blcmx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
aAppbmRleCA5Yzg2ZDc1MTRhYzAwZWE1ZjFkYmI4MTc3OWIzY2EzNTgxNmYzNjc1Li4zYWJjNmM0
OTM0NGQxZTM2OTA2NDc5MWFlZWZhMGIzYTAwNDAyOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuaApAQCAtMjMwLDkgKzIzMCw2IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVDaGlsZEZyYW1lKAogICAgICAgICBjb25z
dCBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVt
ZW50Kik7CiAKLSAgICB2b2lkIGxheW91dCgpOwotICAgIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwg
Y29uc3QgV2ViUmVjdCYpOwotICAgIHZvaWQgcGFpbnRXaXRoQ29udGV4dChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBXZWJSZWN0Jik7CiAgICAgdm9pZCBjcmVhdGVGcmFtZVZpZXco
KTsKIAogICAgIHN0YXRpYyBXZWJGcmFtZUltcGwqIGZyb21GcmFtZShXZWJDb3JlOjpGcmFtZSog
ZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBv
cHVwSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBs
LmNwcAppbmRleCBiYzgxMGM3YjFiMTY4ZGI3ZWNiZTIxNWQwMTljNjM0NzNmMWI0ZmQyLi5iMmI2
YWExNTY5MzI3OTQ2MzgzNzg1ZDE1YjNjMDFiMDAyMjNjNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjksMjEgKzI5LDI2NiBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYWdlUG9wdXBJbXBsLmgi
CiAKKyNpbmNsdWRlICJFbXB0eUNsaWVudHMuaCIKKyNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgor
I2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1
ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRlICJQYWdl
V2lkZ2V0RGVsZWdhdGUuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYklu
cHV0RXZlbnQuaCIKKyNpbmNsdWRlICJXZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQb3B1cC5oIgorI2luY2x1ZGUgIldlYldpZGdldENsaWVudC5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKyNpZiBFTkFCTEUo
UEFHRV9QT1BVUCkKKworY2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50IDogcHVibGljIEVtcHR5
Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlUG9wdXBDaHJvbWVD
bGllbnQpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgZXhw
bGljaXQgUGFnZVBvcHVwQ2hyb21lQ2xpZW50KFdlYlBhZ2VQb3B1cEltcGwqIHBvcHVwKSA6IG1f
cG9wdXAocG9wdXApCisgICAgeworICAgICAgICBBU1NFUlQobV9wb3B1cC0+d2lkZ2V0Q2xpZW50
KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3dTb29u
KCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fcG9wdXAtPmNsb3NlUG9wdXAoKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCB3aW5kb3dSZWN0KCkgT1ZFUlJJREUKKyAgICB7Cisg
ICAgICAgIHJldHVybiBGbG9hdFJlY3QobV9wb3B1cC0+bV93aW5kb3dSZWN0SW5TY3JlZW4ueCwg
bV9wb3B1cC0+bV93aW5kb3dSZWN0SW5TY3JlZW4ueSwgbV9wb3B1cC0+bV93aW5kb3dSZWN0SW5T
Y3JlZW4ud2lkdGgsIG1fcG9wdXAtPm1fd2luZG93UmVjdEluU2NyZWVuLmhlaWdodCk7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
KSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9wb3B1cC0+bV93aW5kb3dSZWN0SW5TY3JlZW4g
PSBJbnRSZWN0KHJlY3QpOworICAgICAgICBtX3BvcHVwLT53aWRnZXRDbGllbnQoKS0+c2V0V2lu
ZG93UmVjdChtX3BvcHVwLT5tX3dpbmRvd1JlY3RJblNjcmVlbik7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUs
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREUKKyAgICB7CisjaWZuZGVmIE5ERUJVRworICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIkNPTlNPTEUgTUVTU1NBR0U6JXU6ICVzXG4iLCBsaW5lTnVt
YmVyLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFN
KG1lc3NhZ2UpOworICAgICAgICBVTlVTRURfUEFSQU0obGluZU51bWJlcik7CisjZW5kaWYKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29u
c3QgSW50UmVjdCYgcGFpbnRSZWN0LCBib29sKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaWYg
KHBhaW50UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fcG9w
dXAtPndpZGdldENsaWVudCgpLT5kaWRJbnZhbGlkYXRlUmVjdChwYWludFJlY3QpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNv
bnN0IEludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBPVkVSUklE
RQorICAgIHsKKyAgICAgICAgbV9wb3B1cC0+d2lkZ2V0Q2xpZW50KCktPmRpZFNjcm9sbFJlY3Qo
c2Nyb2xsRGVsdGEud2lkdGgoKSwgc2Nyb2xsRGVsdGEuaGVpZ2h0KCksIGludGVyc2VjdGlvbihz
Y3JvbGxSZWN0LCBjbGlwUmVjdCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIGJvb2wg
aW1tZWRpYXRlKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaW52YWxpZGF0ZUNvbnRlbnRzQW5k
Um9vdFZpZXcodXBkYXRlUmVjdCwgaW1tZWRpYXRlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVBbmltYXRpb24oKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9wb3B1cC0+
d2lkZ2V0Q2xpZW50KCktPnNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkKiB3ZWJWaWV3KCkgY29uc3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3BvcHVwLT5tX3dlYlZpZXc7CisgICAgfQorCisgICAgV2ViUGFnZVBvcHVwSW1wbCogbV9wb3B1
cDsKK307CisKIC8vIFdlYlBhZ2VQb3B1cEltcGwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0vLyBGSVhNRTogV2ViUGFn
ZVBvcHVwSW1wbCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIHdyaXR0ZW4gaGVyZS4KK1dlYlBhZ2VQ
b3B1cEltcGw6OldlYlBhZ2VQb3B1cEltcGwoV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQpCisgICAg
OiBtX3dpZGdldENsaWVudChjbGllbnQpCit7CisgICAgQVNTRVJUKGNsaWVudCk7Cit9CisKK1dl
YlBhZ2VQb3B1cEltcGw6On5XZWJQYWdlUG9wdXBJbXBsKCkKK3sKKyAgICBBU1NFUlQoIW1fcGFn
ZSk7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aW5pdChXZWJWaWV3SW1wbCogd2ViVmll
dywgUGFnZVBvcHVwQ2xpZW50KiBwb3B1cENsaWVudCwgY29uc3QgSW50UmVjdCYgYm91bmRzSW5T
Y3JlZW4pCit7CisgICAgQVNTRVJUKHdlYlZpZXcpOworICAgIEFTU0VSVChwb3B1cENsaWVudCk7
CisgICAgbV93ZWJWaWV3ID0gd2ViVmlldzsKKyAgICBtX3BvcHVwQ2xpZW50ID0gcG9wdXBDbGll
bnQ7CisKKyAgICBtX3dpZGdldENsaWVudC0+c2V0V2luZG93UmVjdChib3VuZHNJblNjcmVlbik7
CisgICAgbV93aW5kb3dSZWN0SW5TY3JlZW4gPSBib3VuZHNJblNjcmVlbjsKKyAgICBpZiAoIWlu
aXRQYWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3dpZGdldENsaWVudC0+c2hv
dyhXZWJOYXZpZ2F0aW9uUG9saWN5KCkpOworCisgICAgc2V0Rm9jdXModHJ1ZSk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJQYWdlUG9wdXBJbXBsOjppbml0UGFnZSgpCit7Cisg
ICAgUGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVudHM7CisgICAgZmlsbFdpdGhFbXB0eUNsaWVu
dHMocGFnZUNsaWVudHMpOworICAgIG1fY2hyb21lQ2xpZW50ID0gYWRvcHRQdHIobmV3IFBhZ2VQ
b3B1cENocm9tZUNsaWVudCh0aGlzKSk7CisgICAgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0g
bV9jaHJvbWVDbGllbnQuZ2V0KCk7CisKKyAgICBtX3BhZ2UgPSBhZG9wdFB0cihuZXcgUGFnZShw
YWdlQ2xpZW50cykpOworICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0U2NyaXB0RW5hYmxlZCh0
cnVlKTsKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEFsbG93U2NyaXB0c1RvQ2xvc2VXaW5k
b3dzKHRydWUpOworCisgICAgc3RhdGljIEZyYW1lTG9hZGVyQ2xpZW50KiBlbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50ID0gIG5ldyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OworICAgIFJlZlB0cjxGcmFt
ZT4gZnJhbWUgPSBGcmFtZTo6Y3JlYXRlKG1fcGFnZS5nZXQoKSwgMCwgZW1wdHlGcmFtZUxvYWRl
ckNsaWVudCk7CisgICAgZnJhbWUtPnNldFZpZXcoRnJhbWVWaWV3OjpjcmVhdGUoZnJhbWUuZ2V0
KCkpKTsKKyAgICBmcmFtZS0+aW5pdCgpOworICAgIGZyYW1lLT52aWV3KCktPnJlc2l6ZShtX3Bv
cHVwQ2xpZW50LT5jb250ZW50U2l6ZSgpKTsKKyAgICBmcmFtZS0+dmlldygpLT5zZXRUcmFuc3Bh
cmVudChmYWxzZSk7CisKKyAgICBEb2N1bWVudFdyaXRlciogd3JpdGVyID0gZnJhbWUtPmxvYWRl
cigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKTsKKyAgICB3cml0ZXItPnNldE1J
TUVUeXBlKCJ0ZXh0L2h0bWwiKTsKKyAgICB3cml0ZXItPnNldEVuY29kaW5nKCJVVEYtOCIsIGZh
bHNlKTsKKyAgICB3cml0ZXItPmJlZ2luKCk7CisgICAgbV9wb3B1cENsaWVudC0+d3JpdGVEb2N1
bWVudCgqd3JpdGVyKTsKKyAgICB3cml0ZXItPmVuZCgpOworCisgICAgZnJhbWUtPnNjcmlwdCgp
LT5pbnN0YWxsRnVuY3Rpb25zRm9yUGFnZVBvcHVwKGZyYW1lLmdldCgpLCBtX3BvcHVwQ2xpZW50
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworV2ViU2l6ZSBXZWJQYWdlUG9wdXBJbXBsOjpzaXpl
KCkKK3sKKyAgICByZXR1cm4gbV9wb3B1cENsaWVudC0+Y29udGVudFNpemUoKTsKK30KKwordm9p
ZCBXZWJQYWdlUG9wdXBJbXBsOjphbmltYXRlKGRvdWJsZSkKK3sKKyAgICBQYWdlV2lkZ2V0RGVs
ZWdhdGU6OmFuaW1hdGUobV9wYWdlLmdldCgpLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KSk7Cit9CisKK3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6Y29tcG9zaXRlKGJvb2wpCit7Cit9CisK
K3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6bGF5b3V0KCkKK3sKKyAgICBQYWdlV2lkZ2V0RGVsZWdh
dGU6OmxheW91dChtX3BhZ2UuZ2V0KCkpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnBh
aW50KFdlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFBhZ2VX
aWRnZXREZWxlZ2F0ZTo6cGFpbnQobV9wYWdlLmdldCgpLCAwLCBjYW52YXMsIHJlY3QpOworfQor
Cit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnJlc2l6ZShjb25zdCBXZWJTaXplJiBuZXdTaXplKQor
eworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+
cmVzaXplKG5ld1NpemUpOworICAgIG1fd2lkZ2V0Q2xpZW50LT5kaWRJbnZhbGlkYXRlUmVjdChX
ZWJSZWN0KDAsIDAsIG5ld1NpemUud2lkdGgsIG5ld1NpemUuaGVpZ2h0KSk7Cit9CisKK2Jvb2wg
V2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYp
Cit7CisgICAgLy8gVGhlIG1haW4gV2ViVmlldyByZWNlaXZlcyBrZXkgZXZlbnRzIGFuZCBmb3J3
YXJkIHRoZW0gdG8gdGhpcyB2aWEgaGFuZGxlS2V5RXZlbnQoKS4KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6
aGFuZGxlQ2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKQoreworICAgIC8vIFRoZSBt
YWluIFdlYlZpZXcgcmVjZWl2ZXMga2V5IGV2ZW50cyBhbmQgZm9yd2FyZCB0aGVtIHRvIHRoaXMg
dmlhIGhhbmRsZUtleUV2ZW50KCkuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorYm9vbCBXZWJQYWdl
UG9wdXBJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVu
dCkKK3sKKyAgICBpZiAoIW1fcGFnZSB8fCAhbV9wYWdlLT5tYWluRnJhbWUoKSB8fCAhbV9wYWdl
LT5tYWluRnJhbWUoKS0+dmlldygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRnJhbWUm
IGZyYW1lID0gKm1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lLmV2ZW50SGFu
ZGxlcigpLT5oYW5kbGVHZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKGZy
YW1lLnZpZXcoKSwgZXZlbnQpKTsKK30KKyNlbmRpZgorCitib29sIFdlYlBhZ2VQb3B1cEltcGw6
OmhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCit7CisgICAgcmV0
dXJuIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0
aGlzLCBldmVudCk7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlS2V5RXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAoIW1fcGFnZS0+
bWFpbkZyYW1lKCkgfHwgIW1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIo
KS0+a2V5RXZlbnQoZXZlbnQpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnNldEZvY3Vz
KGJvb2wgZW5hYmxlKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisgICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZChlbmFibGUpOworICAgIGlmIChl
bmFibGUpCisgICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEFjdGl2ZSh0cnVl
KTsKK30KKwordm9pZCBXZWJQYWdlUG9wdXBJbXBsOjpjbG9zZSgpCit7CisgICAgbV9wYWdlLmNs
ZWFyKCk7CisgICAgZGVsZXRlIHRoaXM7Cit9CisKK3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6Y2xv
c2VQb3B1cCgpCit7CisgICAgaWYgKG1fcGFnZSkgeworICAgICAgICBtX3BhZ2UtPnNldEdyb3Vw
TmFtZShTdHJpbmcoKSk7CisgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5z
dG9wQWxsTG9hZGVycygpOworICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+
c3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3lOb25lKTsKKyAgICB9CisgICAgLy8gY2xvc2VX
aWRnZXRTb29uKCkgd2lsbCBjYWxsIHRoaXMtPmNsb3NlKCkgbGF0ZXIuCisgICAgbV93aWRnZXRD
bGllbnQtPmNsb3NlV2lkZ2V0U29vbigpOworCisgICAgbV9wb3B1cENsaWVudC0+ZGlkQ2xvc2VQ
b3B1cCgpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKFBBR0VfUE9QVVApCiAKIC8vIFdlYlBhZ2VQ
b3B1cCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLVdlYlBhZ2VQb3B1cCogV2ViUGFnZVBvcHVwOjpjcmVhdGUoV2ViV2lk
Z2V0Q2xpZW50KikKK1dlYlBhZ2VQb3B1cCogV2ViUGFnZVBvcHVwOjpjcmVhdGUoV2ViV2lkZ2V0
Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgLy8gRklYTUU6IFJldHVybnMgYSBXZWJQYWdlUG9wdXBJ
bXBsIG9iamVjdC4KKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBBU1NFUlQoY2xpZW50KTsK
KyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG5ldyBXZWJQ
YWdlUG9wdXBJbXBsKGNsaWVudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjbGllbnQpOwog
ICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1
YWZjYjQxYWQ4YTU5MDU0YWNlNmNlOGNjOWRiMmM0MmI0NDk5NDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmgKQEAgLTAsMCAr
MSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYlBhZ2VQb3B1cEltcGxfaAorI2RlZmluZSBXZWJQYWdlUG9wdXBJ
bXBsX2gKKworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorCisjaW5jbHVkZSAiUGFnZVBvcHVwLmgi
CisjaW5jbHVkZSAiUGFnZVdpZGdldERlbGVnYXRlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBvcHVw
LmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBQYWdlOworY2xhc3MgUGFnZVBvcHVwQ2xpZW50OworY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xp
ZW50OworY2xhc3MgV2ViVmlld0ltcGw7CisKK2NsYXNzIFdlYlBhZ2VQb3B1cEltcGwgOiBwdWJs
aWMgV2ViUGFnZVBvcHVwLAorICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBQYWdlV2lk
Z2V0RXZlbnRIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3Jl
OjpQYWdlUG9wdXAgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlBhZ2VQb3B1cEltcGwp
OworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgYm9vbCBpbml0
KFdlYlZpZXdJbXBsKiwgV2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgYm91bmRzSW5TY3JlZW4pOworICAgIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3Qg
V2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7CisgICAgdm9pZCBjbG9zZVBvcHVwKCk7
CisgICAgV2ViV2lkZ2V0Q2xpZW50KiB3aWRnZXRDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3dp
ZGdldENsaWVudDsgfQorCitwcml2YXRlOgorICAgIC8vIFdlYldpZGdldCBmdW5jdGlvbnMKKyAg
ICB2aXJ0dWFsIFdlYlNpemUgc2l6ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhbmlt
YXRlKGRvdWJsZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXBvc2l0ZShib29sKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVzaXplKGNvbnN0IFdlYlNpemUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2xvc2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlSW5wdXRFdmVu
dChjb25zdCBXZWJJbnB1dEV2ZW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEZv
Y3VzKGJvb2wpIE9WRVJSSURFOworCisgICAgLy8gUGFnZVdpZGdldEV2ZW50SGFuZGxlciBmdW5j
dGlvbnMKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVDaGFyRXZlbnQoY29uc3Qg
V2ViS2V5Ym9hcmRFdmVudCYpIE9WRVJSSURFOworI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykK
KyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVu
dCYpIE9WRVJSSURFOworI2VuZGlmCisKKyAgICBleHBsaWNpdCBXZWJQYWdlUG9wdXBJbXBsKFdl
YldpZGdldENsaWVudCopOworICAgIHZpcnR1YWwgfldlYlBhZ2VQb3B1cEltcGwoKTsKKyAgICBi
b29sIGluaXRQYWdlKCk7CisKKyAgICBXZWJXaWRnZXRDbGllbnQqIG1fd2lkZ2V0Q2xpZW50Owor
ICAgIFdlYlJlY3QgbV93aW5kb3dSZWN0SW5TY3JlZW47CisgICAgV2ViVmlld0ltcGwqIG1fd2Vi
VmlldzsKKyAgICBPd25QdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOworICAgIE93blB0cjxQYWdl
UG9wdXBDaHJvbWVDbGllbnQ+IG1fY2hyb21lQ2xpZW50OworICAgIFdlYkNvcmU6OlBhZ2VQb3B1
cENsaWVudCogbV9wb3B1cENsaWVudDsKKworICAgIGZyaWVuZCBjbGFzcyBXZWJQYWdlUG9wdXA7
CisgICAgZnJpZW5kIGNsYXNzIFBhZ2VQb3B1cENocm9tZUNsaWVudDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorI2VuZGlmIC8vIEVOQUJMRShQQUdFX1BPUFVQKQorI2VuZGlmIC8vIFdl
YlBhZ2VQb3B1cEltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCmluZGV4IDJlNDhkNGNkZjg5NGE5ZGI1MDcyYzc3MmYxMDIzYmZjMjY3ZGNmNTcuLjFiMTY3
MmJmYzJmMTE2ZGUwZDBmZjNkZjlhZmI0ZGY3ZjMwZWFhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTg4LDYgKzg4LDggQEAKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwTG9hZERl
ZmVycmVyLmgiCisjaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCisjaW5jbHVkZSAiUGFnZVdp
ZGdldERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtQ29udGV4dFNraWEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKQEAg
LTEzMCw2ICsxMzIsNyBAQAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYk1lZGlh
UGxheWVyQWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQ
b3B1cEltcGwuaCIKICNpbmNsdWRlICJXZWJQbHVnaW4uaCIKICNpbmNsdWRlICJXZWJQbHVnaW5B
Y3Rpb24uaCIKICNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXJJbXBsLmgiCkBAIC0zNjksNiAr
MzcyLDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkK
ICAgICAsIG1fZHJhZ09wZXJhdGlvbihXZWJEcmFnT3BlcmF0aW9uTm9uZSkKICAgICAsIG1fYXV0
b2ZpbGxQb3B1cFNob3dpbmcoZmFsc2UpCiAgICAgLCBtX2F1dG9maWxsUG9wdXAoMCkKKyAgICAs
IG1fcGFnZVBvcHVwKDApCiAgICAgLCBtX2lzVHJhbnNwYXJlbnQoZmFsc2UpCiAgICAgLCBtX3Rh
YnNUb0xpbmtzKGZhbHNlKQogICAgICwgbV9kcmFnU2Nyb2xsVGltZXIoYWRvcHRQdHIobmV3IERy
YWdTY3JvbGxUaW1lcikpCkBAIC00NjksMzYgKzQ3MywxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoYm9vbCB2YWx1ZSkKICAgICAgICAgbV9wYWdl
LT5zZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHModmFsdWUpOwogfQogCi12b2lkIFdlYlZp
ZXdJbXBsOjptb3VzZU1vdmUoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCit2b2lkIFdlYlZp
ZXdJbXBsOjpoYW5kbGVNb3VzZUxlYXZlKEZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNl
RXZlbnQmIGV2ZW50KQogewotICAgIGlmICghbWFpbkZyYW1lSW1wbCgpIHx8ICFtYWluRnJhbWVJ
bXBsKCktPmZyYW1lVmlldygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBjYWxsIG1v
dXNlTW92ZWQgaGVyZSBpbnN0ZWFkIG9mIGhhbmRsZU1vdXNlTW92ZWRFdmVudCBiZWNhdXNlIHdl
IG5lZWQKLSAgICAvLyBvdXIgQ2hyb21lQ2xpZW50SW1wbCB0byByZWNlaXZlIGNoYW5nZXMgdG8g
dGhlIG1vdXNlIHBvc2l0aW9uIGFuZAotICAgIC8vIHRvb2x0aXAgdGV4dCwgYW5kIG1vdXNlTW92
ZWQgaGFuZGxlcyBhbGwgb2YgdGhhdC4KLSAgICBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2
ZW50SGFuZGxlcigpLT5tb3VzZU1vdmVkKAotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWls
ZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KSk7Ci19Ci0KLXZvaWQgV2Vi
Vmlld0ltcGw6Om1vdXNlTGVhdmUoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCi17Ci0gICAg
Ly8gVGhpcyBldmVudCBnZXRzIHNlbnQgYXMgdGhlIG1haW4gZnJhbWUgaXMgY2xvc2luZy4gIElu
IHRoYXQgY2FzZSwganVzdAotICAgIC8vIGlnbm9yZSBpdC4KLSAgICBpZiAoIW1haW5GcmFtZUlt
cGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSkKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgbV9jbGllbnQtPnNldE1vdXNlT3ZlclVSTChXZWJVUkwoKSk7Ci0KLSAgICBtYWluRnJh
bWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZU1vdmVFdmVudCgK
LSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihtYWluRnJhbWVJbXBsKCktPmZyYW1l
VmlldygpLCBldmVudCkpOworICAgIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNl
TGVhdmUobWFpbkZyYW1lLCBldmVudCk7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6Om1vdXNlRG93
bihjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3ZvaWQgV2ViVmlld0ltcGw6OmhhbmRsZU1v
dXNlRG93bihGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKIHsK
LSAgICBpZiAoIW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXco
KSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gSWYgdGhlcmUgaXMgYSBzZWxlY3QgcG9wdXAg
b3BlbiwgY2xvc2UgaXQgYXMgdGhlIHVzZXIgaXMgY2xpY2tpbmcgb24KICAgICAvLyB0aGUgcGFn
ZSAob3V0c2lkZSBvZiB0aGUgcG9wdXApLiAgV2UgYWxzbyBzYXZlIGl0IHNvIHdlIGNhbiBwcmV2
ZW50IGEKICAgICAvLyBjbGljayBvbiB0aGUgc2VsZWN0IGVsZW1lbnQgZnJvbSBpbW1lZGlhdGVs
eSByZW9wZW5pbmcgdGhlIHBvcHVwLgpAQCAtNTIyLDggKzUwNCw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6Om1vdXNlRG93bihjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKICAgICAgICAgICAgIG1f
bW91c2VDYXB0dXJlTm9kZSA9IGhpdE5vZGU7CiAgICAgfQogCi0gICAgbWFpbkZyYW1lSW1wbCgp
LT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQcmVzc0V2ZW50KAotICAgICAg
ICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCks
IGV2ZW50KSk7CisgICAgUGFnZVdpZGdldEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEb3duKG1h
aW5GcmFtZSwgZXZlbnQpOwogCiAgICAgaWYgKG1fc2VsZWN0UG9wdXAgJiYgbV9zZWxlY3RQb3B1
cCA9PSBzZWxlY3RQb3B1cCkgewogICAgICAgICAvLyBUaGF0IGNsaWNrIHRyaWdnZXJlZCBhIHNl
bGVjdCBwb3B1cCB3aGljaCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHRoYXQKQEAgLTU3NCwxMSAr
NTU1LDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VDb250ZXh0TWVudShjb25zdCBXZWJNb3Vz
ZUV2ZW50JiBldmVudCkKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4uLgogfQogCi12b2lkIFdlYlZp
ZXdJbXBsOjptb3VzZVVwKGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQordm9pZCBXZWJWaWV3
SW1wbDo6aGFuZGxlTW91c2VVcChGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJNb3VzZUV2ZW50
JiBldmVudCkKIHsKLSAgICBpZiAoIW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgp
LT5mcmFtZVZpZXcoKSkKLSAgICAgICAgcmV0dXJuOwotCiAjaWYgT1MoVU5JWCkgJiYgIU9TKERB
UldJTikKICAgICAvLyBJZiB0aGUgZXZlbnQgd2FzIGEgbWlkZGxlIGNsaWNrLCBhdHRlbXB0IHRv
IGNvcHkgdGV4dCBpbnRvIHRoZSBmb2N1c2VkCiAgICAgLy8gZnJhbWUuIFdlIGV4ZWN1dGUgdGhp
cyBiZWZvcmUgd2UgbGV0IHRoZSBwYWdlIGhhdmUgYSBnbyBhdCB0aGUgZXZlbnQKQEAgLTYxNiw4
ICs1OTQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjptb3VzZVVwKGNvbnN0IFdlYk1vdXNlRXZlbnQm
IGV2ZW50KQogICAgIH0KICNlbmRpZgogCi0gICAgbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5l
dmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoCi0gICAgICAgIFBsYXRmb3Jt
TW91c2VFdmVudEJ1aWxkZXIobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpKTsK
KyAgICBQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVVwKG1haW5GcmFtZSwgZXZl
bnQpOwogCiAjaWYgT1MoV0lORE9XUykKICAgICAvLyBEaXNwYXRjaCB0aGUgY29udGV4dG1lbnUg
ZXZlbnQgcmVnYXJkbGVzcyBvZiBpZiB0aGUgY2xpY2sgd2FzIHN3YWxsb3dlZC4KQEAgLTYyNywx
MiArNjA0LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VVcChjb25zdCBXZWJNb3VzZUV2ZW50
JiBldmVudCkKICNlbmRpZgogfQogCi1ib29sIFdlYlZpZXdJbXBsOjptb3VzZVdoZWVsKGNvbnN0
IFdlYk1vdXNlV2hlZWxFdmVudCYgZXZlbnQpCi17Ci0gICAgUGxhdGZvcm1XaGVlbEV2ZW50QnVp
bGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsK
LSAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFu
ZGxlV2hlZWxFdmVudChwbGF0Zm9ybUV2ZW50KTsKLX0KLQogdm9pZCBXZWJWaWV3SW1wbDo6c2Ny
b2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlbHRhKQogewogICAgIFdlYk1vdXNlV2hl
ZWxFdmVudCBzeW50aGV0aWNXaGVlbDsKQEAgLTY0OSwxMSArNjIwLDEyIEBAIHZvaWQgV2ViVmll
d0ltcGw6OnNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZWx0YSkKICAgICBzeW50
aGV0aWNXaGVlbC5nbG9iYWxZID0gbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlvbi55OwogICAgIHN5
bnRoZXRpY1doZWVsLm1vZGlmaWVycyA9IG1fZmxpbmdNb2RpZmllcjsKIAotICAgIG1vdXNlV2hl
ZWwoc3ludGhldGljV2hlZWwpOworICAgIGlmIChtX3BhZ2UgJiYgbV9wYWdlLT5tYWluRnJhbWUo
KSAmJiBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpCisgICAgICAgIGhhbmRsZU1vdXNlV2hl
ZWwoKm1fcGFnZS0+bWFpbkZyYW1lKCksIHN5bnRoZXRpY1doZWVsKTsKIH0KIAogI2lmIEVOQUJM
RShHRVNUVVJFX0VWRU5UUykKLWJvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBX
ZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQorYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlR2VzdHVyZUV2
ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiB7CiAgICAgc3dpdGNoIChldmVudC50
eXBlKSB7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDogewpAQCAt
NzI0LDcgKzY5Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9u
KGNvbnN0IEludFBvaW50JiBzY3JvbGwsIGJvb2wgdXNlQW5jaG9yCiB9CiAjZW5kaWYKIAotYm9v
bCBXZWJWaWV3SW1wbDo6a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiti
b29sIFdlYlZpZXdJbXBsOjpoYW5kbGVLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBl
dmVudCkKIHsKICAgICBBU1NFUlQoKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6UmF3S2V5
RG93bikKICAgICAgICAgfHwgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6S2V5RG93bikK
QEAgLTc0Niw2ICs3MTgsMTYgQEAgYm9vbCBXZWJWaWV3SW1wbDo6a2V5RXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgLy8gbm90IHRoZSBwYWdlLgogICAgIGlmIChtX3Nl
bGVjdFBvcHVwKQogICAgICAgICByZXR1cm4gbV9zZWxlY3RQb3B1cC0+aGFuZGxlS2V5RXZlbnQo
UGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihldmVudCkpOworI2lmIEVOQUJMRShQQUdFX1BP
UFVQKQorICAgIGlmIChtX3BhZ2VQb3B1cCkgeworICAgICAgICBtX3BhZ2VQb3B1cC0+aGFuZGxl
S2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihldmVudCkpOworICAgICAgICAv
LyBXZSBuZWVkIHRvIGlnbm9yZSB0aGUgbmV4dCBDaGFyIGV2ZW50IGFmdGVyIHRoaXMgb3RoZXJ3
aXNlIHByZXNzaW5nCisgICAgICAgIC8vIGVudGVyIHdoZW4gc2VsZWN0aW5nIGFuIGl0ZW0gaW4g
dGhlIHBvcHVwIHdpbGwgZ28gdG8gdGhlIHBhZ2UuCisgICAgICAgIGlmIChXZWJJbnB1dEV2ZW50
OjpSYXdLZXlEb3duID09IGV2ZW50LnR5cGUpCisgICAgICAgICAgICBtX3N1cHByZXNzTmV4dEtl
eXByZXNzRXZlbnQgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYK
IAogICAgIC8vIEdpdmUgQXV0b2NvbXBsZXRlIGEgY2hhbmNlIHRvIGNvbnN1bWUgdGhlIGtleSBl
dmVudHMgaXQgaXMgaW50ZXJlc3RlZCBpbi4KICAgICBpZiAoYXV0b2NvbXBsZXRlSGFuZGxlS2V5
RXZlbnQoZXZlbnQpKQpAQCAtODQyLDcgKzgyNCw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmF1dG9j
b21wbGV0ZUhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBXZWJWaWV3SW1wbDo6Y2hhckV2ZW50KGNvbnN0IFdl
YktleWJvYXJkRXZlbnQmIGV2ZW50KQorYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlQ2hhckV2ZW50
KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIEFTU0VSVChldmVudC50eXBl
ID09IFdlYklucHV0RXZlbnQ6OkNoYXIpOwogCkBAIC04NTgsNiArODQwLDEwIEBAIGJvb2wgV2Vi
Vmlld0ltcGw6OmNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICAv
LyBub3QgdGhlIHBhZ2UuCiAgICAgaWYgKG1fc2VsZWN0UG9wdXApCiAgICAgICAgIHJldHVybiBt
X3NlbGVjdFBvcHVwLT5oYW5kbGVLZXlFdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVy
KGV2ZW50KSk7CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAgaWYgKG1fcGFnZVBvcHVwKQor
ICAgICAgICByZXR1cm4gbV9wYWdlUG9wdXAtPmhhbmRsZUtleUV2ZW50KFBsYXRmb3JtS2V5Ym9h
cmRFdmVudEJ1aWxkZXIoZXZlbnQpKTsKKyNlbmRpZgogCiAgICAgRnJhbWUqIGZyYW1lID0gZm9j
dXNlZFdlYkNvcmVGcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC04ODgsMTggKzg3NCw2IEBA
IGJvb2wgV2ViVmlld0ltcGw6OmNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVu
dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1ib29s
IFdlYlZpZXdJbXBsOjp0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIGV2ZW50KQotewot
ICAgIGlmICghbWFpbkZyYW1lSW1wbCgpIHx8ICFtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVy
IHRvdWNoRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsK
LSAgICBib29sIGRlZmF1bHRQcmV2ZW50ZWQgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2
ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2ZW50KHRvdWNoRXZlbnRCdWlsZGVyKTsKLSAgICBy
ZXR1cm4gZGVmYXVsdFByZXZlbnRlZDsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEdFU1RVUkVf
RVZFTlRTKQogV2ViUmVjdCBXZWJWaWV3SW1wbDo6Y29tcHV0ZUJsb2NrQm91bmRzKGNvbnN0IFdl
YlJlY3QmIHJlY3QsIEF1dG9ab29tVHlwZSB6b29tVHlwZSkKIHsKQEAgLTEyMjAsNiArMTE5NCw0
OSBAQCB2b2lkICBXZWJWaWV3SW1wbDo6cG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWlu
ZXIqIHBvcHVwQ29udGFpbmVyKQogICAgIH0KIH0KIAorI2lmIEVOQUJMRShQQUdFX1BPUFVQKQor
UGFnZVBvcHVwKiBXZWJWaWV3SW1wbDo6b3BlblBhZ2VQb3B1cChQYWdlUG9wdXBDbGllbnQqIGNs
aWVudCwgY29uc3QgSW50UmVjdCYgb3JpZ2luQm91bmRzSW5Sb290VmlldykKK3sKKyAgICBBU1NF
UlQoY2xpZW50KTsKKyAgICBpZiAoaGFzT3BlbmVkUG9wdXAoKSkKKyAgICAgICAgaGlkZVBvcHVw
cygpOworICAgIEFTU0VSVCghbV9wYWdlUG9wdXApOworCisgICAgV2ViV2lkZ2V0KiBwb3B1cFdp
ZGdldCA9IG1fY2xpZW50LT5jcmVhdGVQb3B1cE1lbnUoV2ViUG9wdXBUeXBlUGFnZSk7CisgICAg
QVNTRVJUKHBvcHVwV2lkZ2V0KTsKKyAgICBtX3BhZ2VQb3B1cCA9IHN0YXRpY19jYXN0PFdlYlBh
Z2VQb3B1cEltcGwqPihwb3B1cFdpZGdldCk7CisgICAgV2ViU2l6ZSByb290Vmlld1NpemUgPSBz
aXplKCk7CisgICAgSW50U2l6ZSBwb3B1cFNpemUgPSBjbGllbnQtPmNvbnRlbnRTaXplKCk7Cisg
ICAgSW50UmVjdCBwb3B1cEJvdW5kc0luUm9vdFZpZXcoSW50UG9pbnQobWF4KDAsIG9yaWdpbkJv
dW5kc0luUm9vdFZpZXcueCgpKSwgbWF4KDAsIG9yaWdpbkJvdW5kc0luUm9vdFZpZXcubWF4WSgp
KSksIHBvcHVwU2l6ZSk7CisgICAgaWYgKHBvcHVwQm91bmRzSW5Sb290Vmlldy5tYXhZKCkgPiBy
b290Vmlld1NpemUuaGVpZ2h0KQorICAgICAgICBwb3B1cEJvdW5kc0luUm9vdFZpZXcuc2V0WSht
YXgoMCwgb3JpZ2luQm91bmRzSW5Sb290Vmlldy55KCkgLSBwb3B1cFNpemUuaGVpZ2h0KCkpKTsK
KyAgICBpZiAocG9wdXBCb3VuZHNJblJvb3RWaWV3Lm1heFgoKSA+IHJvb3RWaWV3U2l6ZS53aWR0
aCkKKyAgICAgICAgcG9wdXBCb3VuZHNJblJvb3RWaWV3LnNldFgobWF4KDAsIHJvb3RWaWV3U2l6
ZS53aWR0aCAtIHBvcHVwU2l6ZS53aWR0aCgpKSk7CisgICAgaWYgKCFtX3BhZ2VQb3B1cC0+aW5p
dCh0aGlzLCBjbGllbnQsIG1fY2hyb21lQ2xpZW50SW1wbC5yb290Vmlld1RvU2NyZWVuKHBvcHVw
Qm91bmRzSW5Sb290VmlldykpKSB7CisgICAgICAgIG1fcGFnZVBvcHVwLT5jbG9zZVBvcHVwKCk7
CisgICAgICAgIG1fcGFnZVBvcHVwID0gMDsKKyAgICB9CisKKyAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gZm9jdXNlZFdlYkNvcmVGcmFtZSgpKQorICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNl
dENhcmV0VmlzaWJsZShmYWxzZSk7CisgICAgcmV0dXJuIG1fcGFnZVBvcHVwOworfQorCit2b2lk
IFdlYlZpZXdJbXBsOjpjbG9zZVBhZ2VQb3B1cChQYWdlUG9wdXAqIHBvcHVwKQoreworICAgIEFT
U0VSVChwb3B1cCk7CisgICAgV2ViUGFnZVBvcHVwSW1wbCogcG9wdXBJbXBsID0gc3RhdGljX2Nh
c3Q8V2ViUGFnZVBvcHVwSW1wbCo+KHBvcHVwKTsKKyAgICBBU1NFUlQobV9wYWdlUG9wdXAgPT0g
cG9wdXBJbXBsKTsKKyAgICBpZiAobV9wYWdlUG9wdXAgIT0gcG9wdXBJbXBsKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9wYWdlUG9wdXAtPmNsb3NlUG9wdXAoKTsKKyAgICBtX3BhZ2VQb3B1cCA9
IDA7CisKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gZm9jdXNlZFdlYkNvcmVGcmFtZSgpKQorICAg
ICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnBhZ2VBY3RpdmF0aW9uQ2hhbmdlZCgpOworfQorI2Vu
ZGlmCisKIHZvaWQgV2ViVmlld0ltcGw6OmhpZGVBdXRvZmlsbFBvcHVwKCkKIHsKICAgICBpZiAo
bV9hdXRvZmlsbFBvcHVwU2hvd2luZykgewpAQCAtMTQzMCwzMiArMTQ0NywxNCBAQCB2b2lkIFdl
YlZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGlt
ZSkKICAgICAgICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlvbi5jbGVhcigpOwogICAgIH0KIAotICAg
IGRvdWJsZSB0aW1lU2hpZnQgPSBjdXJyZW50VGltZSgpIC0gbW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCk7Ci0gICAgdmlldy0+c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhjb252ZXJ0U2Vj
b25kc1RvRE9NVGltZVN0YW1wKG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lICsgdGltZVNoaWZ0KSk7
CisgICAgUGFnZVdpZGdldERlbGVnYXRlOjphbmltYXRlKG1fcGFnZS5nZXQoKSwgbW9ub3Rvbmlj
RnJhbWVCZWdpblRpbWUpOwogI2VuZGlmCiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmxheW91dCgp
CiB7CiAgICAgVFJBQ0VfRVZFTlQoIldlYlZpZXdJbXBsOjpsYXlvdXQiLCB0aGlzLCAwKTsKLQot
ICAgIFdlYkZyYW1lSW1wbCogd2ViZnJhbWUgPSBtYWluRnJhbWVJbXBsKCk7Ci0gICAgaWYgKHdl
YmZyYW1lKSB7Ci0gICAgICAgIC8vIEluIG9yZGVyIGZvciBvdXIgY2hpbGQgSFdORHMgKE5hdGl2
ZVdpbmRvd1dpZGdldHMpIHRvIHVwZGF0ZSBwcm9wZXJseSwKLSAgICAgICAgLy8gdGhleSBuZWVk
IHRvIGJlIHRvbGQgdGhhdCB3ZSBhcmUgdXBkYXRpbmcgdGhlIHNjcmVlbi4gIFRoZSBwcm9ibGVt
IGlzCi0gICAgICAgIC8vIHRoYXQgdGhlIG5hdGl2ZSB3aWRnZXRzIG5lZWQgdG8gcmVjYWxjdWxh
dGUgdGhlaXIgY2xpcCByZWdpb24gYW5kIG5vdAotICAgICAgICAvLyBvdmVybGFwIGFueSBvZiBv
dXIgbm9uLW5hdGl2ZSB3aWRnZXRzLiAgVG8gZm9yY2UgdGhlIHJlc2l6aW5nLCBjYWxsCi0gICAg
ICAgIC8vIHNldEZyYW1lUmVjdCgpLiAgVGhpcyB3aWxsIGJlIGEgcXVpY2sgb3BlcmF0aW9uIGZv
ciBtb3N0IGZyYW1lcywgYnV0Ci0gICAgICAgIC8vIHRoZSBOYXRpdmVXaW5kb3dXaWRnZXRzIHdp
bGwgdXBkYXRlIGEgcHJvcGVyIGNsaXBwaW5nIHJlZ2lvbi4KLSAgICAgICAgRnJhbWVWaWV3KiB2
aWV3ID0gd2ViZnJhbWUtPmZyYW1lVmlldygpOwotICAgICAgICBpZiAodmlldykKLSAgICAgICAg
ICAgIHZpZXctPnNldEZyYW1lUmVjdCh2aWV3LT5mcmFtZVJlY3QoKSk7Ci0KLSAgICAgICAgLy8g
c2V0RnJhbWVSZWN0IG1heSBoYXZlIHRoZSBzaWRlLWVmZmVjdCBvZiBjYXVzaW5nIGV4aXN0aW5n
IHBhZ2UKLSAgICAgICAgLy8gbGF5b3V0IHRvIGJlIGludmFsaWRhdGVkLCBzbyBsYXlvdXQgbmVl
ZHMgdG8gYmUgY2FsbGVkIGxhc3QuCi0KLSAgICAgICAgd2ViZnJhbWUtPmxheW91dCgpOwotICAg
IH0KKyAgICBQYWdlV2lkZ2V0RGVsZWdhdGU6OmxheW91dChtX3BhZ2UuZ2V0KCkpOwogfQogCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAtMTUwOCw5ICsxNTA3LDcgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6cGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJl
Y3QpCiAjZW5kaWYKICAgICB9IGVsc2UgewogICAgICAgICBkb3VibGUgcGFpbnRTdGFydCA9IGN1
cnJlbnRUaW1lKCk7Ci0gICAgICAgIFdlYkZyYW1lSW1wbCogd2ViZnJhbWUgPSBtYWluRnJhbWVJ
bXBsKCk7Ci0gICAgICAgIGlmICh3ZWJmcmFtZSkKLSAgICAgICAgICAgIHdlYmZyYW1lLT5wYWlu
dChjYW52YXMsIHJlY3QpOworICAgICAgICBQYWdlV2lkZ2V0RGVsZWdhdGU6OnBhaW50KG1fcGFn
ZS5nZXQoKSwgcGFnZU92ZXJsYXlzKCksIGNhbnZhcywgcmVjdCk7CiAgICAgICAgIGRvdWJsZSBw
YWludEVuZCA9IGN1cnJlbnRUaW1lKCk7CiAgICAgICAgIGRvdWJsZSBwaXhlbHNQZXJTZWMgPSAo
cmVjdC53aWR0aCAqIHJlY3QuaGVpZ2h0KSAvIChwYWludEVuZCAtIHBhaW50U3RhcnQpOwogICAg
ICAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmhpc3RvZ3JhbUN1c3RvbUNvdW50cygi
UmVuZGVyZXI0LlNvZnR3YXJlUGFpbnREdXJhdGlvbk1TIiwgKHBhaW50RW5kIC0gcGFpbnRTdGFy
dCkgKiAxMDAwLCAwLCAxMjAsIDMwKTsKQEAgLTE2NjcsNzkgKzE2NjQsOCBAQCBib29sIFdlYlZp
ZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgaGFuZGxlZCA9IHRydWU7
Ci0KLSAgICAvLyBGSVhNRTogV2ViS2l0IHNlZW1zIHRvIGFsd2F5cyByZXR1cm4gZmFsc2Ugb24g
bW91c2UgZXZlbnRzIHByb2Nlc3NpbmcKLSAgICAvLyBtZXRob2RzLiBGb3Igbm93IHdlJ2xsIGFz
c3VtZSBpdCBoYXMgcHJvY2Vzc2VkIHRoZW0gKGFzIHdlIGFyZSBvbmx5Ci0gICAgLy8gaW50ZXJl
c3RlZCBpbiB3aGV0aGVyIGtleWJvYXJkIGV2ZW50cyBhcmUgcHJvY2Vzc2VkKS4KLSAgICBzd2l0
Y2ggKGlucHV0RXZlbnQudHlwZSkgewotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VNb3Zl
OgotICAgICAgICBtb3VzZU1vdmUoKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQqPigm
aW5wdXRFdmVudCkpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
TW91c2VMZWF2ZToKLSAgICAgICAgbW91c2VMZWF2ZSgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91
c2VFdmVudCo+KCZpbnB1dEV2ZW50KSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBXZWJJ
bnB1dEV2ZW50OjpNb3VzZVdoZWVsOgotICAgICAgICBoYW5kbGVkID0gbW91c2VXaGVlbCgqc3Rh
dGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlRG93bjoKLSAgICAgICAg
bW91c2VEb3duKCpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmlucHV0RXZlbnQp
KTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlVXA6Ci0g
ICAgICAgIG1vdXNlVXAoKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQqPigmaW5wdXRF
dmVudCkpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6UmF3S2V5
RG93bjoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6OktleURvd246Ci0gICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpLZXlVcDoKLSAgICAgICAgaGFuZGxlZCA9IGtleUV2ZW50KCpzdGF0aWNfY2FzdDxj
b25zdCBXZWJLZXlib2FyZEV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0K
LSAgICBjYXNlIFdlYklucHV0RXZlbnQ6OkNoYXI6Ci0gICAgICAgIGhhbmRsZWQgPSBjaGFyRXZl
bnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYktleWJvYXJkRXZlbnQqPigmaW5wdXRFdmVudCkpOwot
ICAgICAgICBicmVhazsKLQotI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKLSAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6
Okdlc3R1cmVTY3JvbGxFbmQ6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xs
VXBkYXRlOgotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ6Ci0gICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw6Ci0gICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlVGFwOgotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcERv
d246Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRG91YmxlVGFwOgotICAgICAgICBo
YW5kbGVkID0gZ2VzdHVyZUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQq
PigmaW5wdXRFdmVudCkpOwotICAgICAgICBicmVhazsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoU3RhcnQ6Ci0gICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpUb3VjaE1vdmU6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3Vj
aEVuZDoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoQ2FuY2VsOgotICAgICAgICBoYW5k
bGVkID0gdG91Y2hFdmVudCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViVG91Y2hFdmVudCo+KCZpbnB1
dEV2ZW50KSk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoR0VTVFVSRV9F
VkVOVFMpCi0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjoKLSAgICBj
YXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEVuZDoKLSAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZToKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQgaXMgdXBkYXRlZCB0byBzdXBwb3J0IHBpbmNoLCB0aGlzIHNob3VsZCBjYWxs
IGhhbmRsZUdlc3R1cmVFdmVudCwganVzdCBsaWtlIGl0IGN1cnJlbnRseSBkb2VzIGZvciBnZXN0
dXJlIHNjcm9sbC4KLSAgICAgICAgaGFuZGxlZCA9IGZhbHNlOwotICAgICAgICBicmVhazsKLSNl
bmRpZgotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgaGFuZGxlZCA9IGZhbHNlOwotICAgIH0KLQor
ICAgIGJvb2wgaGFuZGxlZCA9IFBhZ2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudCht
X3BhZ2UuZ2V0KCksICp0aGlzLCBpbnB1dEV2ZW50KTsKICAgICBtX2N1cnJlbnRJbnB1dEV2ZW50
ID0gMDsKLQogICAgIHJldHVybiBoYW5kbGVkOwogfQogCkBAIC0xNzc4LDggKzE3MDQsNyBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRGb2N1cyhib29sIGVuYWJsZSkKICAgICAgICAgfQogICAgICAg
ICBtX2ltZUFjY2VwdEV2ZW50cyA9IHRydWU7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaGlkZUF1
dG9maWxsUG9wdXAoKTsKLSAgICAgICAgaGlkZVNlbGVjdFBvcHVwKCk7CisgICAgICAgIGhpZGVQ
b3B1cHMoKTsKIAogICAgICAgICAvLyBDbGVhciBmb2N1cyBvbiB0aGUgY3VycmVudGx5IGZvY3Vz
ZWQgZnJhbWUgaWYgYW55LgogICAgICAgICBpZiAoIW1fcGFnZSkKQEAgLTI4NjgsNiArMjc5Mywx
MCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpoaWRlUG9wdXBzKCkKIHsKICAgICBoaWRlU2VsZWN0UG9w
dXAoKTsKICAgICBoaWRlQXV0b2ZpbGxQb3B1cCgpOworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQor
ICAgIGlmIChtX3BhZ2VQb3B1cCkKKyAgICAgICAgY2xvc2VQYWdlUG9wdXAobV9wYWdlUG9wdXAp
OworI2VuZGlmCiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnBlcmZvcm1DdXN0b21Db250ZXh0TWVu
dUFjdGlvbih1bnNpZ25lZCBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaAppbmRleCA0NjI3Zjc3NzM3NThkMzc0NDA4YTUyZWQ1MDU4MmJkYmM4Yjg1NzcyLi4z
MjM3OWRkZTVkNWNiMzhjZGI5YjlmZDVmMjAxY2U2MWQ4MDM2ZmJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgogI2luY2x1
ZGUgIlBhZ2VPdmVybGF5TGlzdC5oIgorI2luY2x1ZGUgIlBhZ2VXaWRnZXREZWxlZ2F0ZS5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgiCiAjaW5jbHVkZSAiVXNlck1l
ZGlhQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTY4LDYgKzY5LDgg
QEAgY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgS2V5Ym9h
cmRFdmVudDsKIGNsYXNzIFBhZ2U7CitjbGFzcyBQYWdlUG9wdXA7CitjbGFzcyBQYWdlUG9wdXBD
bGllbnQ7CiBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldDsKIGNsYXNzIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBvcHVwQ29udGFpbmVyOwpAQCAtOTYsNiArOTksNyBAQCBj
bGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudFByaXZh
dGU7CiBjbGFzcyBXZWJGcmFtZUltcGw7CiBjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CitjbGFzcyBX
ZWJQYWdlUG9wdXBJbXBsOwogY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50
OwogY2xhc3MgV2ViTW91c2VFdmVudDsKQEAgLTEwMyw3ICsxMDcsNyBAQCBjbGFzcyBXZWJNb3Vz
ZVdoZWVsRXZlbnQ7CiBjbGFzcyBXZWJTZXR0aW5nc0ltcGw7CiBjbGFzcyBXZWJUb3VjaEV2ZW50
OwogCi1jbGFzcyBXZWJWaWV3SW1wbCA6IHB1YmxpYyBXZWJWaWV3LCBwdWJsaWMgV2ViTGF5ZXJU
cmVlVmlld0NsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlld0ltcGw+LCBwdWJsaWMgV2Vi
Q29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQgeworY2xhc3MgV2ViVmlld0ltcGwgOiBw
dWJsaWMgV2ViVmlldywgcHVibGljIFdlYkxheWVyVHJlZVZpZXdDbGllbnQsIHB1YmxpYyBSZWZD
b3VudGVkPFdlYlZpZXdJbXBsPiwgcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZl
VGFyZ2V0LCBwdWJsaWMgUGFnZVdpZGdldEV2ZW50SGFuZGxlciB7CiBwdWJsaWM6CiAgICAgZW51
bSBBdXRvWm9vbVR5cGUgewogICAgICAgICBEb3VibGVUYXAsCkBAIC0zMzQsMTggKzMzOCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIG9ic2VydmVOZXdOYXZpZ2F0aW9uKCk7CiAKICAgICAvLyBFdmVu
dCByZWxhdGVkIG1ldGhvZHM6Ci0gICAgdm9pZCBtb3VzZU1vdmUoY29uc3QgV2ViTW91c2VFdmVu
dCYpOwotICAgIHZvaWQgbW91c2VMZWF2ZShjb25zdCBXZWJNb3VzZUV2ZW50Jik7Ci0gICAgdm9p
ZCBtb3VzZURvd24oY29uc3QgV2ViTW91c2VFdmVudCYpOwotICAgIHZvaWQgbW91c2VVcChjb25z
dCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgdm9pZCBtb3VzZUNvbnRleHRNZW51KGNvbnN0IFdlYk1v
dXNlRXZlbnQmKTsKICAgICB2b2lkIG1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVu
dCYpOwotICAgIGJvb2wgbW91c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKLSAg
ICBib29sIGdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKICAgICB2b2lkIHN0
YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0YXJnZXRQb3Np
dGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMp
OwotICAgIGJvb2wga2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwotICAgIGJvb2wg
Y2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKLSAgICBib29sIHRvdWNoRXZlbnQo
Y29uc3QgV2ViVG91Y2hFdmVudCYpOwogCiAgICAgdm9pZCBudW1iZXJPZldoZWVsRXZlbnRIYW5k
bGVyc0NoYW5nZWQodW5zaWduZWQpOwogICAgIHZvaWQgbnVtYmVyT2ZUb3VjaEV2ZW50SGFuZGxl
cnNDaGFuZ2VkKHVuc2lnbmVkKTsKQEAgLTQ1NSw2ICs0NTAsMTAgQEAgcHVibGljOgogICAgIC8v
IE5vdGlmaWNhdGlvbiB0aGF0IGEgcG9wdXAgd2FzIG9wZW5lZC9jbG9zZWQuCiAgICAgdm9pZCBw
b3B1cE9wZW5lZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpOwogICAg
IHZvaWQgcG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVy
KTsKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBXZWJDb3JlOjpQYWdlUG9wdXAqIG9wZW5Q
YWdlUG9wdXAoV2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgb3JpZ2luQm91bmRzSW5Sb290Vmlldyk7CisgICAgdm9pZCBjbG9zZVBhZ2VQb3B1cChXZWJD
b3JlOjpQYWdlUG9wdXAqKTsKKyNlbmRpZgogCiAgICAgdm9pZCBoaWRlQXV0b2ZpbGxQb3B1cCgp
OwogCkBAIC00OTMsNiArNDkyLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlz
aWJpbGl0eVN0YXRlKFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGUsIGJvb2wpOwogCiAgICAgV2ViQ29y
ZTo6UG9wdXBDb250YWluZXIqIHNlbGVjdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RQ
b3B1cC5nZXQoKTsgfQorI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorICAgIGJvb2wgaGFzT3BlbmVk
UG9wdXAoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdFBvcHVwIHx8IG1fcGFnZVBvcHVwOyB9Cisj
ZWxzZQorICAgIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdFBv
cHVwOyB9CisjZW5kaWYKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXZlbnQgbGVhZHMg
dG8gc2Nyb2xsaW5nLgogICAgIHN0YXRpYyBib29sIG1hcEtleUNvZGVGb3JTY3JvbGwoaW50IGtl
eUNvZGUsCkBAIC01OTUsNiArNTk5LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwb2ludGVyTG9j
a01vdXNlRXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYpOwogI2VuZGlmCiAKKyAgICAvLyBQYWdl
V2lkZ2V0RXZlbnRIYW5kbGVyIGZ1bmN0aW9ucworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3Vz
ZUxlYXZlKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViTW91c2VFdmVudCYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZURvd24oV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBX
ZWJNb3VzZUV2ZW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZU1vdXNlVXAo
V2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJNb3VzZUV2ZW50JikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIGhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVDaGFyRXZlbnQoY29uc3Qg
V2ViS2V5Ym9hcmRFdmVudCYpIE9WRVJSSURFOworCiAgICAgV2ViVmlld0NsaWVudCogbV9jbGll
bnQ7CiAgICAgV2ViQXV0b2ZpbGxDbGllbnQqIG1fYXV0b2ZpbGxDbGllbnQ7CiAgICAgV2ViUGVy
bWlzc2lvbkNsaWVudCogbV9wZXJtaXNzaW9uQ2xpZW50OwpAQCAtNjk2LDYgKzcwOCwxMSBAQCBw
cml2YXRlOgogICAgIC8vIFRoZSBwb3B1cCBhc3NvY2lhdGVkIHdpdGggYSBzZWxlY3QgZWxlbWVu
dC4KICAgICBSZWZQdHI8V2ViQ29yZTo6UG9wdXBDb250YWluZXI+IG1fc2VsZWN0UG9wdXA7CiAK
KyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICAvLyBUaGUgcG9wdXAgYXNzb2NpYXRlZCB3aXRo
IGFuIGlucHV0IGVsZW1lbnQuCisgICAgV2ViUGFnZVBvcHVwSW1wbCogbV9wYWdlUG9wdXA7Cisj
ZW5kaWYKKwogICAgIE93blB0cjxXZWJEZXZUb29sc0FnZW50UHJpdmF0ZT4gbV9kZXZUb29sc0Fn
ZW50OwogICAgIE93blB0cjxQYWdlT3ZlcmxheUxpc3Q+IG1fcGFnZU92ZXJsYXlzOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136853</attachid>
            <date>2012-04-12 01:58:27 -0700</date>
            <delta_ts>2012-04-12 02:18:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-81081-20120412175826.patch</filename>
            <type>text/plain</type>
            <size>24226</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzOTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDJmYzNjMTMzNmEyZGI1N2RjMWM4YmY2ZDZlMTJkOGViYTA0NzRmYWQuLjljNDdhNmQ5ZWUzOWU1
ZTljYmRhZGQ5M2MwZTlkZTc0OGRhYmJjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjYgQEAKKzIwMTItMDQtMTEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIFBhZ2VQb3B1cCBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEwODEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViUGFn
ZVBvcHVwSW1wbCBjbGFzcywgd2hpY2ggaXMgYW4gaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAg
V2ViQ29yZTo6UGFnZVBvcHVwIGludGVyZmFjZSBhbmQgV2ViS2l0OjpXZWJQYWdlUG9wdXAgaW50
ZXJmYWNlLiBJdCdzIGEKKyAgICAgICAgV2ViV2lkZ2V0IHdoaWNoIGhhcyBhIFBhZ2Ugb2JqZWN0
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgbWFrZXMgbm8gYmVoYXZpb3Ig
Y2hhbmdlIHlldC4KKworICAgICAgICAqIFdlYktpdC5neXA6IEFkZCBXZWJQYWdlUG9wdXBJbXBs
LmguCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnRJbXBsOjpoYXNPcGVuZWRQb3B1cCk6IFN1cHBvcnRzIHRoZSBQYWdlUG9w
dXAuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6Om9wZW5QYWdlUG9wdXApOgor
ICAgICAgICBqdXN0IGRlbGVnYXRlIHRvIFdlYlZpZXdJbXBsOjpvcGVuUGFnZVBvcHVwKCkuCisg
ICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmNsb3NlUGFnZVBvcHVwKTogZGl0dG8u
CisKKyAgICAgICAgKiBzcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHA6CisgICAgICAgIChQYWdlUG9w
dXBDaHJvbWVDbGllbnQpOgorICAgICAgICBUaGlzIGlzIGEgbGlnaHQgaW1wbGVtZW50YXRpb24g
b2YgQ2hyb21lQ2xpZW50IGZvciB0aGUgcGFnZSBpbgorICAgICAgICBXZWJQYWdlUG9wdXBJbXBs
LiBUaGlzIGlzIGEgZnJpZW5kIG9mIFdlYlBhZ2VQb3B1cEltcGwgYmVjYXNlIG9mIGVhc2Ugb2YK
KyAgICAgICAgYWNjZXNzIHRvIGl0cyBtZW1iZXJzLgorICAgICAgICAoV2ViS2l0OjpQYWdlUG9w
dXBDaHJvbWVDbGllbnQ6OlBhZ2VQb3B1cENocm9tZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQb3B1cEltcGw6OldlYlBhZ2VQb3B1cEltcGwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUG9wdXBJbXBsOjp+V2ViUGFnZVBvcHVwSW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQb3B1cEltcGw6OmluaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBs
Ojppbml0UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OnNpemUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjphbmltYXRlKTogQ2FsbHMgUGFnZVdp
ZGdldERlbGVnYXRlOjphbmltYXRlKCkuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cElt
cGw6OmNvbXBvc2l0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmxheW91
dCk6IENhbGxzIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6bGF5b3V0KCkuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQb3B1cEltcGw6OnBhaW50KTogQ2FsbHMgUGFnZVdpZGdldERlbGVnYXRlOjpwYWlu
dCgpLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpyZXNpemUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpoYW5kbGVLZXlFdmVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUNoYXJFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUG9wdXBJbXBsOjpzZXRGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
b3B1cEltcGw6OmNsb3NlKTogRGVsZXRlIHRoZSBwYWdlLCBhbmQga2lsbCBpdHNlbGYuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmNsb3NlUG9wdXApOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUG9wdXA6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYlBhZ2VQb3B1cElt
cGwuaDogQWRkZWQuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOiBJbml0aWFsaXplIG1fcGFnZVBvcHVw
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlS2V5RXZlbnQpOgorICAgICAg
ICBSZW5hbWVkIGZyb20ga2V5RXZlbnQoKS4gRm9yd2FyZCBrZXkgZXZlbnRzIHRvIGEgUGFnZVBv
cHVwIGlmIGl0IGlzIG9wZW4uCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVD
aGFyRXZlbnQpOgorICAgICAgICBSZW5hbWVkIGZyb20gY2hhckV2ZW50KCkuIEZvcndhcmQgY2hh
ciBldmVudHMgdG8gYSBQYWdlUG9wdXAgaWYgaXQgaXMgb3Blbi4KKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6Om9wZW5QYWdlUG9wdXApOgorICAgICAgICBBZGRlZC4gSW5zdGFudGlhdGUg
YSBXZWJQYWdlUG9wdXBJbXBsLCBjYWxjdWxhdGVzIGEgZ29vZCBib3VuZGluZworICAgICAgICBy
ZWN0YW5nbGUgb2YgdGhlIHBhZ2UgcG9wdXAgZnJvbSB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgcmVj
dGFuZ2xlLAorICAgICAgICBpbml0aWFsaXplIHRoZSBXZWJQYWdlUG9wdXBJbXBsLCBhbmQgc3Rv
cCBjYXJldCBibGluay4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNsb3NlUGFnZVBv
cHVwKToKKyAgICAgICAgQ2xvc2UgdGhlIHBvcHVwLCBjbGVhciBtX3BhZ2VQb3B1cCwgYW5kIHJl
c3VtZSBjYXJldCBibGluay4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldEZvY3Vz
KTogSGlkZSBhbGwgdGhlIHBvcHVwcy4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omhp
ZGVQb3B1cHMpOiBIaWRlIHRoZSBwYWdlIHBvcHVwIHRvby4KKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omhhc09wZW5lZFBvcHVwKTog
Q2hlY2tzIHRoZSBwYWdlIHBvcHVwIHRvby4KKwogMjAxMi0wNC0xMiAgS2VudCBUYW11cmEgIDx0
a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBNb3ZlIHNvbWUgY29kZSBv
ZiBXZWJWaWV3SW1wbCBhbmQgV2ViRnJhbWVJbXBsIHRvIFBhZ2VXaWRnZXREZWxlZ2F0ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDVhNjVmMzU3YWFmMDI4ZDczMGQ2ZDIxNWY0YmNi
ZTU1MjY4OTQ3YTMuLmJjZWZmYWEzOWY2MzMzMDE2M2ZjMDcwNjY4ZjljMjQ0YjdkYzQyYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTYxMyw2ICs2MTMsNyBAQAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViTm90aWZpY2F0aW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJPcHRpb25FbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQYWdlUG9wdXBJ
bXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJQYWdlUG9wdXBJbXBsLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViUGFnZVNlcmlhbGl6ZXIuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCA0MjczNWE0NmQ5MmUxYzA4NzAwNjZiZjliNGNm
OWQ5ZDM1YjNhZmQ2Li4xOTkyY2Q0YWFhZjY1ZGQ5MWY1MDYxY2RmOTM1YTI4ZmEwMDViMWZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApA
QCAtOTc3LDcgKzk3Nyw3IEBAIGJvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c2VsZWN0SXRlbUFsaWdu
bWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpCiAKIGJvb2wgQ2hyb21lQ2xpZW50SW1w
bDo6aGFzT3BlbmVkUG9wdXAoKSBjb25zdAogewotICAgIHJldHVybiAhIW1fd2ViVmlldy0+c2Vs
ZWN0UG9wdXAoKTsKKyAgICByZXR1cm4gbV93ZWJWaWV3LT5oYXNPcGVuZWRQb3B1cCgpOwogfQog
CiBQYXNzUmVmUHRyPFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51
KFBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdApAQCAtOTk0LDE1ICs5OTQsMTQgQEAgUGFz
c1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVNlYXJjaFBv
cHVwTWVudShQb3B1cE1lbnVDbGkKIH0KIAogI2lmIEVOQUJMRShQQUdFX1BPUFVQKQotUGFnZVBv
cHVwKiBDaHJvbWVDbGllbnRJbXBsOjpvcGVuUGFnZVBvcHVwKFBhZ2VQb3B1cENsaWVudCosIGNv
bnN0IEludFJlY3QmKQorUGFnZVBvcHVwKiBDaHJvbWVDbGllbnRJbXBsOjpvcGVuUGFnZVBvcHVw
KFBhZ2VQb3B1cENsaWVudCogY2xpZW50LCBjb25zdCBJbnRSZWN0JiBvcmlnaW5Cb3VuZHNJblJv
b3RWaWV3KQogewotICAgIC8vIEZJWE1FOiBJbXBlbGVtZW50IHRoaXMuCi0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG1fd2ViVmlldy0+b3BlblBhZ2VQb3B1cChjbGllbnQsIG9yaWdpbkJvdW5k
c0luUm9vdFZpZXcpOwogfQogCi12b2lkIENocm9tZUNsaWVudEltcGw6OmNsb3NlUGFnZVBvcHVw
KFBhZ2VQb3B1cCopCit2b2lkIENocm9tZUNsaWVudEltcGw6OmNsb3NlUGFnZVBvcHVwKFBhZ2VQ
b3B1cCogcG9wdXApCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIG1fd2Vi
Vmlldy0+Y2xvc2VQYWdlUG9wdXAocG9wdXApOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAKaW5kZXggYmM4MTBjN2IxYjE2
OGRiN2VjYmUyMTVkMDE5YzYzNDczZjFiNGZkMi4uMGMyY2M2ZGJhNmMyMmU4N2FmYjJjYzA0YzNk
MWFmM2ZhMDUyYmU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UGFnZVBvcHVwSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFn
ZVBvcHVwSW1wbC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKQEAgLTI5LDIxICsyOSwyNjYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViUGFnZVBvcHVwSW1wbC5oIgogCisjaW5jbHVkZSAiRW1wdHlDbGll
bnRzLmgiCisjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKKyNpbmNsdWRlICJGb2N1c0NvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJGb3JtU3RhdGUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNp
bmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAi
UGFnZVBvcHVwQ2xpZW50LmgiCisjaW5jbHVkZSAiUGFnZVdpZGdldERlbGVnYXRlLmgiCisjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCisjaW5jbHVkZSAi
V2ViSW5wdXRFdmVudENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJXZWJQYWdlUG9wdXAuaCIKKyNp
bmNsdWRlICJXZWJXaWRnZXRDbGllbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisKK2NsYXNzIFBh
Z2VQb3B1cENocm9tZUNsaWVudCA6IHB1YmxpYyBFbXB0eUNocm9tZUNsaWVudCB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUGFnZVBvcHVwQ2hyb21lQ2xpZW50KTsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKKworcHVibGljOgorICAgIGV4cGxpY2l0IFBhZ2VQb3B1cENocm9tZUNs
aWVudChXZWJQYWdlUG9wdXBJbXBsKiBwb3B1cCkKKyAgICAgICAgOiBtX3BvcHVwKHBvcHVwKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcG9wdXAtPndpZGdldENsaWVudCgpKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93U29vbigpIE9WRVJSSURFCisg
ICAgeworICAgICAgICBtX3BvcHVwLT5jbG9zZVBvcHVwKCk7CisgICAgfQorCisgICAgdmlydHVh
bCBGbG9hdFJlY3Qgd2luZG93UmVjdCgpIE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1cm4g
RmxvYXRSZWN0KG1fcG9wdXAtPm1fd2luZG93UmVjdEluU2NyZWVuLngsIG1fcG9wdXAtPm1fd2lu
ZG93UmVjdEluU2NyZWVuLnksIG1fcG9wdXAtPm1fd2luZG93UmVjdEluU2NyZWVuLndpZHRoLCBt
X3BvcHVwLT5tX3dpbmRvd1JlY3RJblNjcmVlbi5oZWlnaHQpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCBzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgT1ZFUlJJREUKKyAg
ICB7CisgICAgICAgIG1fcG9wdXAtPm1fd2luZG93UmVjdEluU2NyZWVuID0gSW50UmVjdChyZWN0
KTsKKyAgICAgICAgbV9wb3B1cC0+d2lkZ2V0Q2xpZW50KCktPnNldFdpbmRvd1JlY3QobV9wb3B1
cC0+bV93aW5kb3dSZWN0SW5TY3JlZW4pOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZGRN
ZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYpIE9WRVJSSURFCisgICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgZnByaW50Zihz
dGRlcnIsICJDT05TT0xFIE1FU1NTQUdFOiV1OiAlc1xuIiwgbGluZU51bWJlciwgbWVzc2FnZS51
dGY4KCkuZGF0YSgpKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShtZXNzYWdlKTsKKyAg
ICAgICAgVU5VU0VEX1BBUkFNKGxpbmVOdW1iZXIpOworI2VuZGlmCisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KGNvbnN0IEludFJlY3QmIHBh
aW50UmVjdCwgYm9vbCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGlmIChwYWludFJlY3QuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3BvcHVwLT53aWRnZXRDbGll
bnQoKS0+ZGlkSW52YWxpZGF0ZVJlY3QocGFpbnRSZWN0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiBz
Y3JvbGxSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkgT1ZFUlJJREUKKyAgICB7CisgICAg
ICAgIG1fcG9wdXAtPndpZGdldENsaWVudCgpLT5kaWRTY3JvbGxSZWN0KHNjcm9sbERlbHRhLndp
ZHRoKCksIHNjcm9sbERlbHRhLmhlaWdodCgpLCBpbnRlcnNlY3Rpb24oc2Nyb2xsUmVjdCwgY2xp
cFJlY3QpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzRm9y
U2xvd1Njcm9sbChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0LCBib29sIGltbWVkaWF0ZSkgT1ZF
UlJJREUKKyAgICB7CisgICAgICAgIGludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KHVwZGF0
ZVJlY3QsIGltbWVkaWF0ZSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5p
bWF0aW9uKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fcG9wdXAtPndpZGdldENsaWVudCgp
LT5zY2hlZHVsZUFuaW1hdGlvbigpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCogd2ViVmll
dygpIGNvbnN0IE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1cm4gbV9wb3B1cC0+bV93ZWJW
aWV3OworICAgIH0KKworICAgIFdlYlBhZ2VQb3B1cEltcGwqIG1fcG9wdXA7Cit9OworCiAvLyBX
ZWJQYWdlUG9wdXBJbXBsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLy8gRklYTUU6IFdlYlBhZ2VQb3B1cEltcGwgaW1w
bGVtZW50YXRpb24gd2lsbCBiZSB3cml0dGVuIGhlcmUuCitXZWJQYWdlUG9wdXBJbXBsOjpXZWJQ
YWdlUG9wdXBJbXBsKFdlYldpZGdldENsaWVudCogY2xpZW50KQorICAgIDogbV93aWRnZXRDbGll
bnQoY2xpZW50KQoreworICAgIEFTU0VSVChjbGllbnQpOworfQorCitXZWJQYWdlUG9wdXBJbXBs
Ojp+V2ViUGFnZVBvcHVwSW1wbCgpCit7CisgICAgQVNTRVJUKCFtX3BhZ2UpOworfQorCitib29s
IFdlYlBhZ2VQb3B1cEltcGw6OmluaXQoV2ViVmlld0ltcGwqIHdlYlZpZXcsIFBhZ2VQb3B1cENs
aWVudCogcG9wdXBDbGllbnQsIGNvbnN0IEludFJlY3QmIGJvdW5kc0luU2NyZWVuKQoreworICAg
IEFTU0VSVCh3ZWJWaWV3KTsKKyAgICBBU1NFUlQocG9wdXBDbGllbnQpOworICAgIG1fd2ViVmll
dyA9IHdlYlZpZXc7CisgICAgbV9wb3B1cENsaWVudCA9IHBvcHVwQ2xpZW50OworCisgICAgbV93
aWRnZXRDbGllbnQtPnNldFdpbmRvd1JlY3QoYm91bmRzSW5TY3JlZW4pOworICAgIG1fd2luZG93
UmVjdEluU2NyZWVuID0gYm91bmRzSW5TY3JlZW47CisgICAgaWYgKCFpbml0UGFnZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgbV93aWRnZXRDbGllbnQtPnNob3coV2ViTmF2aWdhdGlv
blBvbGljeSgpKTsKKworICAgIHNldEZvY3VzKHRydWUpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UoKQoreworICAgIFBhZ2U6OlBhZ2VD
bGllbnRzIHBhZ2VDbGllbnRzOworICAgIGZpbGxXaXRoRW1wdHlDbGllbnRzKHBhZ2VDbGllbnRz
KTsKKyAgICBtX2Nocm9tZUNsaWVudCA9IGFkb3B0UHRyKG5ldyBQYWdlUG9wdXBDaHJvbWVDbGll
bnQodGhpcykpOworICAgIHBhZ2VDbGllbnRzLmNocm9tZUNsaWVudCA9IG1fY2hyb21lQ2xpZW50
LmdldCgpOworCisgICAgbV9wYWdlID0gYWRvcHRQdHIobmV3IFBhZ2UocGFnZUNsaWVudHMpKTsK
KyAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CisgICAgbV9w
YWdlLT5zZXR0aW5ncygpLT5zZXRBbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyh0cnVlKTsKKwor
ICAgIHN0YXRpYyBGcmFtZUxvYWRlckNsaWVudCogZW1wdHlGcmFtZUxvYWRlckNsaWVudCA9ICBu
ZXcgRW1wdHlGcmFtZUxvYWRlckNsaWVudDsKKyAgICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gRnJh
bWU6OmNyZWF0ZShtX3BhZ2UuZ2V0KCksIDAsIGVtcHR5RnJhbWVMb2FkZXJDbGllbnQpOworICAg
IGZyYW1lLT5zZXRWaWV3KEZyYW1lVmlldzo6Y3JlYXRlKGZyYW1lLmdldCgpKSk7CisgICAgZnJh
bWUtPmluaXQoKTsKKyAgICBmcmFtZS0+dmlldygpLT5yZXNpemUobV9wb3B1cENsaWVudC0+Y29u
dGVudFNpemUoKSk7CisgICAgZnJhbWUtPnZpZXcoKS0+c2V0VHJhbnNwYXJlbnQoZmFsc2UpOwor
CisgICAgRG9jdW1lbnRXcml0ZXIqIHdyaXRlciA9IGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9j
dW1lbnRMb2FkZXIoKS0+d3JpdGVyKCk7CisgICAgd3JpdGVyLT5zZXRNSU1FVHlwZSgidGV4dC9o
dG1sIik7CisgICAgd3JpdGVyLT5zZXRFbmNvZGluZygiVVRGLTgiLCBmYWxzZSk7CisgICAgd3Jp
dGVyLT5iZWdpbigpOworICAgIG1fcG9wdXBDbGllbnQtPndyaXRlRG9jdW1lbnQoKndyaXRlcik7
CisgICAgd3JpdGVyLT5lbmQoKTsKKworICAgIGZyYW1lLT5zY3JpcHQoKS0+aW5zdGFsbEZ1bmN0
aW9uc0ZvclBhZ2VQb3B1cChmcmFtZS5nZXQoKSwgbV9wb3B1cENsaWVudCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK1dlYlNpemUgV2ViUGFnZVBvcHVwSW1wbDo6c2l6ZSgpCit7CisgICAgcmV0
dXJuIG1fcG9wdXBDbGllbnQtPmNvbnRlbnRTaXplKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVBvcHVw
SW1wbDo6YW5pbWF0ZShkb3VibGUpCit7CisgICAgUGFnZVdpZGdldERlbGVnYXRlOjphbmltYXRl
KG1fcGFnZS5nZXQoKSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOworfQorCit2b2lk
IFdlYlBhZ2VQb3B1cEltcGw6OmNvbXBvc2l0ZShib29sKQoreworfQorCit2b2lkIFdlYlBhZ2VQ
b3B1cEltcGw6OmxheW91dCgpCit7CisgICAgUGFnZVdpZGdldERlbGVnYXRlOjpsYXlvdXQobV9w
YWdlLmdldCgpKTsKK30KKwordm9pZCBXZWJQYWdlUG9wdXBJbXBsOjpwYWludChXZWJDYW52YXMq
IGNhbnZhcywgY29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBQYWdlV2lkZ2V0RGVsZWdhdGU6
OnBhaW50KG1fcGFnZS5nZXQoKSwgMCwgY2FudmFzLCByZWN0KTsKK30KKwordm9pZCBXZWJQYWdl
UG9wdXBJbXBsOjpyZXNpemUoY29uc3QgV2ViU2l6ZSYgbmV3U2l6ZSkKK3sKKyAgICBpZiAobV9w
YWdlKQorICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPnJlc2l6ZShuZXdTaXpl
KTsKKyAgICBtX3dpZGdldENsaWVudC0+ZGlkSW52YWxpZGF0ZVJlY3QoV2ViUmVjdCgwLCAwLCBu
ZXdTaXplLndpZHRoLCBuZXdTaXplLmhlaWdodCkpOworfQorCitib29sIFdlYlBhZ2VQb3B1cElt
cGw6OmhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKQoreworICAgIC8vIFRo
ZSBtYWluIFdlYlZpZXcgcmVjZWl2ZXMga2V5IGV2ZW50cyBhbmQgZm9yd2FyZCB0aGVtIHRvIHRo
aXMgdmlhIGhhbmRsZUtleUV2ZW50KCkuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUNoYXJFdmVu
dChjb25zdCBXZWJLZXlib2FyZEV2ZW50JikKK3sKKyAgICAvLyBUaGUgbWFpbiBXZWJWaWV3IHJl
Y2VpdmVzIGtleSBldmVudHMgYW5kIGZvcndhcmQgdGhlbSB0byB0aGlzIHZpYSBoYW5kbGVLZXlF
dmVudCgpLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aGFu
ZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCit7CisgICAgaWYg
KCFtX3BhZ2UgfHwgIW1fcGFnZS0+bWFpbkZyYW1lKCkgfHwgIW1fcGFnZS0+bWFpbkZyYW1lKCkt
PnZpZXcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEZyYW1lJiBmcmFtZSA9ICptX3Bh
Z2UtPm1haW5GcmFtZSgpOworICAgIHJldHVybiBmcmFtZS5ldmVudEhhbmRsZXIoKS0+aGFuZGxl
R2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihmcmFtZS52aWV3KCksIGV2
ZW50KSk7Cit9CisjZW5kaWYKKworYm9vbCBXZWJQYWdlUG9wdXBJbXBsOjpoYW5kbGVJbnB1dEV2
ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50KQoreworICAgIHJldHVybiBQYWdlV2lkZ2V0
RGVsZWdhdGU6OmhhbmRsZUlucHV0RXZlbnQobV9wYWdlLmdldCgpLCAqdGhpcywgZXZlbnQpOwor
fQorCitib29sIFdlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUtleUV2ZW50KGNvbnN0IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKCFtX3BhZ2UtPm1haW5GcmFtZSgpIHx8
ICFtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2ZW50KGV2
ZW50KTsKK30KKwordm9pZCBXZWJQYWdlUG9wdXBJbXBsOjpzZXRGb2N1cyhib29sIGVuYWJsZSkK
K3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPnNldEZvY3VzZWQoZW5hYmxlKTsKKyAgICBpZiAoZW5hYmxlKQorICAgICAg
ICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRBY3RpdmUodHJ1ZSk7Cit9CisKK3ZvaWQg
V2ViUGFnZVBvcHVwSW1wbDo6Y2xvc2UoKQoreworICAgIG1fcGFnZS5jbGVhcigpOworICAgIGRl
bGV0ZSB0aGlzOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OmNsb3NlUG9wdXAoKQorewor
ICAgIGlmIChtX3BhZ2UpIHsKKyAgICAgICAgbV9wYWdlLT5zZXRHcm91cE5hbWUoU3RyaW5nKCkp
OworICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMo
KTsKKyAgICAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPnN0b3BMb2FkaW5nKFVu
bG9hZEV2ZW50UG9saWN5Tm9uZSk7CisgICAgfQorICAgIC8vIGNsb3NlV2lkZ2V0U29vbigpIHdp
bGwgY2FsbCB0aGlzLT5jbG9zZSgpIGxhdGVyLgorICAgIG1fd2lkZ2V0Q2xpZW50LT5jbG9zZVdp
ZGdldFNvb24oKTsKKworICAgIG1fcG9wdXBDbGllbnQtPmRpZENsb3NlUG9wdXAoKTsKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShQQUdFX1BPUFVQKQogCiAvLyBXZWJQYWdlUG9wdXAgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1XZWJQYWdlUG9wdXAqIFdlYlBhZ2VQb3B1cDo6Y3JlYXRlKFdlYldpZGdldENsaWVudCopCitX
ZWJQYWdlUG9wdXAqIFdlYlBhZ2VQb3B1cDo6Y3JlYXRlKFdlYldpZGdldENsaWVudCogY2xpZW50
KQogewotICAgIC8vIEZJWE1FOiBSZXR1cm5zIGEgV2ViUGFnZVBvcHVwSW1wbCBvYmplY3QuCisj
aWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIENSQVNIKCk7
CisgICAgcmV0dXJuIG5ldyBXZWJQYWdlUG9wdXBJbXBsKGNsaWVudCk7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShjbGllbnQpOwogICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UGFnZVBvcHVwSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVw
SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI1YWZjYjQxYWQ4YTU5MDU0YWNlNmNlOGNjOWRiMmM0MmI0NDk5
NDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdl
UG9wdXBJbXBsLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBhZ2VQb3B1cEltcGxfaAor
I2RlZmluZSBXZWJQYWdlUG9wdXBJbXBsX2gKKworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorCisj
aW5jbHVkZSAiUGFnZVBvcHVwLmgiCisjaW5jbHVkZSAiUGFnZVdpZGdldERlbGVnYXRlLmgiCisj
aW5jbHVkZSAiV2ViUGFnZVBvcHVwLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQYWdlOworY2xhc3MgUGFnZVBvcHVwQ2xpZW50OworY2xh
c3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50OworY2xhc3MgV2ViVmlld0ltcGw7CisKK2NsYXNzIFdl
YlBhZ2VQb3B1cEltcGwgOiBwdWJsaWMgV2ViUGFnZVBvcHVwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBXZWJDb3JlOjpQYWdlUG9wdXAgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFdlYlBhZ2VQb3B1cEltcGwpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitw
dWJsaWM6CisgICAgYm9vbCBpbml0KFdlYlZpZXdJbXBsKiwgV2ViQ29yZTo6UGFnZVBvcHVwQ2xp
ZW50KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgYm91bmRzSW5TY3JlZW4pOworICAgIGJvb2wg
aGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7Cisg
ICAgdm9pZCBjbG9zZVBvcHVwKCk7CisgICAgV2ViV2lkZ2V0Q2xpZW50KiB3aWRnZXRDbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX3dpZGdldENsaWVudDsgfQorCitwcml2YXRlOgorICAgIC8vIFdl
YldpZGdldCBmdW5jdGlvbnMKKyAgICB2aXJ0dWFsIFdlYlNpemUgc2l6ZSgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGNvbXBvc2l0ZShib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJl
Y3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzaXplKGNvbnN0IFdlYlNpemUmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgaGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpIE9WRVJSSURFOworCisgICAgLy8gUGFnZVdp
ZGdldEV2ZW50SGFuZGxlciBmdW5jdGlvbnMKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5RXZl
bnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVDaGFyRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpIE9WRVJSSURFOworI2lmIEVO
QUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50
KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpIE9WRVJSSURFOworI2VuZGlmCisKKyAgICBleHBsaWNp
dCBXZWJQYWdlUG9wdXBJbXBsKFdlYldpZGdldENsaWVudCopOworICAgIHZpcnR1YWwgfldlYlBh
Z2VQb3B1cEltcGwoKTsKKyAgICBib29sIGluaXRQYWdlKCk7CisKKyAgICBXZWJXaWRnZXRDbGll
bnQqIG1fd2lkZ2V0Q2xpZW50OworICAgIFdlYlJlY3QgbV93aW5kb3dSZWN0SW5TY3JlZW47Cisg
ICAgV2ViVmlld0ltcGwqIG1fd2ViVmlldzsKKyAgICBPd25QdHI8V2ViQ29yZTo6UGFnZT4gbV9w
YWdlOworICAgIE93blB0cjxQYWdlUG9wdXBDaHJvbWVDbGllbnQ+IG1fY2hyb21lQ2xpZW50Owor
ICAgIFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudCogbV9wb3B1cENsaWVudDsKKworICAgIGZyaWVu
ZCBjbGFzcyBXZWJQYWdlUG9wdXA7CisgICAgZnJpZW5kIGNsYXNzIFBhZ2VQb3B1cENocm9tZUNs
aWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2VuZGlmIC8vIEVOQUJMRShQQUdF
X1BPUFVQKQorI2VuZGlmIC8vIFdlYlBhZ2VQb3B1cEltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGJjZjZkODEyNDZjOGJlYTZkMzA5OGNhNDA2
MzBhYWZlZDliNmY4ZGMuLjFiMTY3MmJmYzJmMTE2ZGUwZDBmZjNkZjlhZmI0ZGY3ZjMwZWFhOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTg4LDYg
Kzg4LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5j
bHVkZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCisjaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50
LmgiCiAjaW5jbHVkZSAiUGFnZVdpZGdldERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2Fy
ZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKQEAgLTEzMSw2ICsxMzIsNyBA
QAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQWN0aW9uLmgi
CiAjaW5jbHVkZSAiV2ViTm9kZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQb3B1cEltcGwuaCIKICNp
bmNsdWRlICJXZWJQbHVnaW4uaCIKICNpbmNsdWRlICJXZWJQbHVnaW5BY3Rpb24uaCIKICNpbmNs
dWRlICJXZWJQbHVnaW5Db250YWluZXJJbXBsLmgiCkBAIC0zNzAsNiArMzcyLDcgQEAgV2ViVmll
d0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICAsIG1fZHJhZ09w
ZXJhdGlvbihXZWJEcmFnT3BlcmF0aW9uTm9uZSkKICAgICAsIG1fYXV0b2ZpbGxQb3B1cFNob3dp
bmcoZmFsc2UpCiAgICAgLCBtX2F1dG9maWxsUG9wdXAoMCkKKyAgICAsIG1fcGFnZVBvcHVwKDAp
CiAgICAgLCBtX2lzVHJhbnNwYXJlbnQoZmFsc2UpCiAgICAgLCBtX3RhYnNUb0xpbmtzKGZhbHNl
KQogICAgICwgbV9kcmFnU2Nyb2xsVGltZXIoYWRvcHRQdHIobmV3IERyYWdTY3JvbGxUaW1lcikp
CkBAIC03MTUsNiArNzE4LDE2IEBAIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUtleUV2ZW50KGNv
bnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIC8vIG5vdCB0aGUgcGFnZS4KICAgICBp
ZiAobV9zZWxlY3RQb3B1cCkKICAgICAgICAgcmV0dXJuIG1fc2VsZWN0UG9wdXAtPmhhbmRsZUtl
eUV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIoZXZlbnQpKTsKKyNpZiBFTkFCTEUo
UEFHRV9QT1BVUCkKKyAgICBpZiAobV9wYWdlUG9wdXApIHsKKyAgICAgICAgbV9wYWdlUG9wdXAt
PmhhbmRsZUtleUV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIoZXZlbnQpKTsKKyAg
ICAgICAgLy8gV2UgbmVlZCB0byBpZ25vcmUgdGhlIG5leHQgQ2hhciBldmVudCBhZnRlciB0aGlz
IG90aGVyd2lzZSBwcmVzc2luZworICAgICAgICAvLyBlbnRlciB3aGVuIHNlbGVjdGluZyBhbiBp
dGVtIGluIHRoZSBwb3B1cCB3aWxsIGdvIHRvIHRoZSBwYWdlLgorICAgICAgICBpZiAoV2ViSW5w
dXRFdmVudDo6UmF3S2V5RG93biA9PSBldmVudC50eXBlKQorICAgICAgICAgICAgbV9zdXBwcmVz
c05leHRLZXlwcmVzc0V2ZW50ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
I2VuZGlmCiAKICAgICAvLyBHaXZlIEF1dG9jb21wbGV0ZSBhIGNoYW5jZSB0byBjb25zdW1lIHRo
ZSBrZXkgZXZlbnRzIGl0IGlzIGludGVyZXN0ZWQgaW4uCiAgICAgaWYgKGF1dG9jb21wbGV0ZUhh
bmRsZUtleUV2ZW50KGV2ZW50KSkKQEAgLTgyNyw2ICs4NDAsMTAgQEAgYm9vbCBXZWJWaWV3SW1w
bDo6aGFuZGxlQ2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIC8v
IG5vdCB0aGUgcGFnZS4KICAgICBpZiAobV9zZWxlY3RQb3B1cCkKICAgICAgICAgcmV0dXJuIG1f
c2VsZWN0UG9wdXAtPmhhbmRsZUtleUV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIo
ZXZlbnQpKTsKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBpZiAobV9wYWdlUG9wdXApCisg
ICAgICAgIHJldHVybiBtX3BhZ2VQb3B1cC0+aGFuZGxlS2V5RXZlbnQoUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50QnVpbGRlcihldmVudCkpOworI2VuZGlmCiAKICAgICBGcmFtZSogZnJhbWUgPSBmb2N1
c2VkV2ViQ29yZUZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTExNzcsNiArMTE5NCw0OSBA
QCB2b2lkICBXZWJWaWV3SW1wbDo6cG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIq
IHBvcHVwQ29udGFpbmVyKQogICAgIH0KIH0KIAorI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorUGFn
ZVBvcHVwKiBXZWJWaWV3SW1wbDo6b3BlblBhZ2VQb3B1cChQYWdlUG9wdXBDbGllbnQqIGNsaWVu
dCwgY29uc3QgSW50UmVjdCYgb3JpZ2luQm91bmRzSW5Sb290VmlldykKK3sKKyAgICBBU1NFUlQo
Y2xpZW50KTsKKyAgICBpZiAoaGFzT3BlbmVkUG9wdXAoKSkKKyAgICAgICAgaGlkZVBvcHVwcygp
OworICAgIEFTU0VSVCghbV9wYWdlUG9wdXApOworCisgICAgV2ViV2lkZ2V0KiBwb3B1cFdpZGdl
dCA9IG1fY2xpZW50LT5jcmVhdGVQb3B1cE1lbnUoV2ViUG9wdXBUeXBlUGFnZSk7CisgICAgQVNT
RVJUKHBvcHVwV2lkZ2V0KTsKKyAgICBtX3BhZ2VQb3B1cCA9IHN0YXRpY19jYXN0PFdlYlBhZ2VQ
b3B1cEltcGwqPihwb3B1cFdpZGdldCk7CisgICAgV2ViU2l6ZSByb290Vmlld1NpemUgPSBzaXpl
KCk7CisgICAgSW50U2l6ZSBwb3B1cFNpemUgPSBjbGllbnQtPmNvbnRlbnRTaXplKCk7CisgICAg
SW50UmVjdCBwb3B1cEJvdW5kc0luUm9vdFZpZXcoSW50UG9pbnQobWF4KDAsIG9yaWdpbkJvdW5k
c0luUm9vdFZpZXcueCgpKSwgbWF4KDAsIG9yaWdpbkJvdW5kc0luUm9vdFZpZXcubWF4WSgpKSks
IHBvcHVwU2l6ZSk7CisgICAgaWYgKHBvcHVwQm91bmRzSW5Sb290Vmlldy5tYXhZKCkgPiByb290
Vmlld1NpemUuaGVpZ2h0KQorICAgICAgICBwb3B1cEJvdW5kc0luUm9vdFZpZXcuc2V0WShtYXgo
MCwgb3JpZ2luQm91bmRzSW5Sb290Vmlldy55KCkgLSBwb3B1cFNpemUuaGVpZ2h0KCkpKTsKKyAg
ICBpZiAocG9wdXBCb3VuZHNJblJvb3RWaWV3Lm1heFgoKSA+IHJvb3RWaWV3U2l6ZS53aWR0aCkK
KyAgICAgICAgcG9wdXBCb3VuZHNJblJvb3RWaWV3LnNldFgobWF4KDAsIHJvb3RWaWV3U2l6ZS53
aWR0aCAtIHBvcHVwU2l6ZS53aWR0aCgpKSk7CisgICAgaWYgKCFtX3BhZ2VQb3B1cC0+aW5pdCh0
aGlzLCBjbGllbnQsIG1fY2hyb21lQ2xpZW50SW1wbC5yb290Vmlld1RvU2NyZWVuKHBvcHVwQm91
bmRzSW5Sb290VmlldykpKSB7CisgICAgICAgIG1fcGFnZVBvcHVwLT5jbG9zZVBvcHVwKCk7Cisg
ICAgICAgIG1fcGFnZVBvcHVwID0gMDsKKyAgICB9CisKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0g
Zm9jdXNlZFdlYkNvcmVGcmFtZSgpKQorICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldENh
cmV0VmlzaWJsZShmYWxzZSk7CisgICAgcmV0dXJuIG1fcGFnZVBvcHVwOworfQorCit2b2lkIFdl
YlZpZXdJbXBsOjpjbG9zZVBhZ2VQb3B1cChQYWdlUG9wdXAqIHBvcHVwKQoreworICAgIEFTU0VS
VChwb3B1cCk7CisgICAgV2ViUGFnZVBvcHVwSW1wbCogcG9wdXBJbXBsID0gc3RhdGljX2Nhc3Q8
V2ViUGFnZVBvcHVwSW1wbCo+KHBvcHVwKTsKKyAgICBBU1NFUlQobV9wYWdlUG9wdXAgPT0gcG9w
dXBJbXBsKTsKKyAgICBpZiAobV9wYWdlUG9wdXAgIT0gcG9wdXBJbXBsKQorICAgICAgICByZXR1
cm47CisgICAgbV9wYWdlUG9wdXAtPmNsb3NlUG9wdXAoKTsKKyAgICBtX3BhZ2VQb3B1cCA9IDA7
CisKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gZm9jdXNlZFdlYkNvcmVGcmFtZSgpKQorICAgICAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPnBhZ2VBY3RpdmF0aW9uQ2hhbmdlZCgpOworfQorI2VuZGlm
CisKIHZvaWQgV2ViVmlld0ltcGw6OmhpZGVBdXRvZmlsbFBvcHVwKCkKIHsKICAgICBpZiAobV9h
dXRvZmlsbFBvcHVwU2hvd2luZykgewpAQCAtMTY0NCw4ICsxNzA0LDcgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6c2V0Rm9jdXMoYm9vbCBlbmFibGUpCiAgICAgICAgIH0KICAgICAgICAgbV9pbWVBY2Nl
cHRFdmVudHMgPSB0cnVlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGhpZGVBdXRvZmlsbFBvcHVw
KCk7Ci0gICAgICAgIGhpZGVTZWxlY3RQb3B1cCgpOworICAgICAgICBoaWRlUG9wdXBzKCk7CiAK
ICAgICAgICAgLy8gQ2xlYXIgZm9jdXMgb24gdGhlIGN1cnJlbnRseSBmb2N1c2VkIGZyYW1lIGlm
IGFueS4KICAgICAgICAgaWYgKCFtX3BhZ2UpCkBAIC0yNzM0LDYgKzI3OTMsMTAgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6aGlkZVBvcHVwcygpCiB7CiAgICAgaGlkZVNlbGVjdFBvcHVwKCk7CiAgICAg
aGlkZUF1dG9maWxsUG9wdXAoKTsKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBpZiAobV9w
YWdlUG9wdXApCisgICAgICAgIGNsb3NlUGFnZVBvcHVwKG1fcGFnZVBvcHVwKTsKKyNlbmRpZgog
fQogCiB2b2lkIFdlYlZpZXdJbXBsOjpwZXJmb3JtQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5z
aWduZWQgYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5k
ZXggNzIwMmE0N2JiNGU3Nzk3NTRlZDE4NWQ1MmI4YjM1OGI5NDYyZjljOC4uMzIzNzlkZGU1ZDVj
YjM4Y2RiOWI5ZmQ1ZjIwMWNlNjFkODAzNmZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCkBAIC02OSw2ICs2OSw4IEBAIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xh
c3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQYWdlOworY2xh
c3MgUGFnZVBvcHVwOworY2xhc3MgUGFnZVBvcHVwQ2xpZW50OwogY2xhc3MgUGxhdGZvcm1HZXN0
dXJlQ3VydmVUYXJnZXQ7CiBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQb3B1
cENvbnRhaW5lcjsKQEAgLTk3LDYgKzk5LDcgQEAgY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVu
dDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRQcml2YXRlOwogY2xhc3MgV2ViRnJhbWVJbXBsOwog
Y2xhc3MgV2ViR2VzdHVyZUV2ZW50OworY2xhc3MgV2ViUGFnZVBvcHVwSW1wbDsKIGNsYXNzIFdl
YkltYWdlOwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CkBA
IC00NDcsNiArNDUwLDEwIEBAIHB1YmxpYzoKICAgICAvLyBOb3RpZmljYXRpb24gdGhhdCBhIHBv
cHVwIHdhcyBvcGVuZWQvY2xvc2VkLgogICAgIHZvaWQgcG9wdXBPcGVuZWQoV2ViQ29yZTo6UG9w
dXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyKTsKICAgICB2b2lkIHBvcHVwQ2xvc2VkKFdlYkNv
cmU6OlBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRhaW5lcik7CisjaWYgRU5BQkxFKFBBR0VfUE9Q
VVApCisgICAgV2ViQ29yZTo6UGFnZVBvcHVwKiBvcGVuUGFnZVBvcHVwKFdlYkNvcmU6OlBhZ2VQ
b3B1cENsaWVudCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIG9yaWdpbkJvdW5kc0luUm9vdFZp
ZXcpOworICAgIHZvaWQgY2xvc2VQYWdlUG9wdXAoV2ViQ29yZTo6UGFnZVBvcHVwKik7CisjZW5k
aWYKIAogICAgIHZvaWQgaGlkZUF1dG9maWxsUG9wdXAoKTsKIApAQCAtNDg1LDYgKzQ5MiwxMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2liaWxpdHlTdGF0ZShXZWJQYWdlVmlz
aWJpbGl0eVN0YXRlLCBib29sKTsKIAogICAgIFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBzZWxl
Y3RQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0UG9wdXAuZ2V0KCk7IH0KKyNpZiBFTkFC
TEUoUEFHRV9QT1BVUCkKKyAgICBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3QgeyByZXR1cm4g
bV9zZWxlY3RQb3B1cCB8fCBtX3BhZ2VQb3B1cDsgfQorI2Vsc2UKKyAgICBib29sIGhhc09wZW5l
ZFBvcHVwKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RQb3B1cDsgfQorI2VuZGlmCiAKICAgICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IGxlYWRzIHRvIHNjcm9sbGluZy4KICAgICBzdGF0
aWMgYm9vbCBtYXBLZXlDb2RlRm9yU2Nyb2xsKGludCBrZXlDb2RlLApAQCAtNjk2LDYgKzcwOCwx
MSBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBwb3B1cCBhc3NvY2lhdGVkIHdpdGggYSBzZWxlY3Qg
ZWxlbWVudC4KICAgICBSZWZQdHI8V2ViQ29yZTo6UG9wdXBDb250YWluZXI+IG1fc2VsZWN0UG9w
dXA7CiAKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICAvLyBUaGUgcG9wdXAgYXNzb2NpYXRl
ZCB3aXRoIGFuIGlucHV0IGVsZW1lbnQuCisgICAgV2ViUGFnZVBvcHVwSW1wbCogbV9wYWdlUG9w
dXA7CisjZW5kaWYKKwogICAgIE93blB0cjxXZWJEZXZUb29sc0FnZW50UHJpdmF0ZT4gbV9kZXZU
b29sc0FnZW50OwogICAgIE93blB0cjxQYWdlT3ZlcmxheUxpc3Q+IG1fcGFnZU92ZXJsYXlzOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136857</attachid>
            <date>2012-04-12 02:18:39 -0700</date>
            <delta_ts>2012-04-12 02:59:51 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-81081-20120412181837.patch</filename>
            <type>text/plain</type>
            <size>24222</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzOTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDJmYzNjMTMzNmEyZGI1N2RjMWM4YmY2ZDZlMTJkOGViYTA0NzRmYWQuLjVhMzY5OTVkOTg3YTZh
M2QwYTc0YzAxZTNhNGQ0M2FkNWE4OWIxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjYgQEAKKzIwMTItMDQtMTEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIFBhZ2VQb3B1cCBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEwODEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIEFkZCBXZWJQYWdlUG9w
dXBJbXBsIGNsYXNzLCB3aGljaCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICBXZWJD
b3JlOjpQYWdlUG9wdXAgaW50ZXJmYWNlIGFuZCBXZWJLaXQ6OldlYlBhZ2VQb3B1cCBpbnRlcmZh
Y2UuIEl0J3MgYQorICAgICAgICBXZWJXaWRnZXQgd2hpY2ggaGFzIGEgUGFnZSBvYmplY3QuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBtYWtlcyBubyBiZWhhdmlvciBjaGFu
Z2UgeWV0LgorCisgICAgICAgICogV2ViS2l0Lmd5cDogQWRkIFdlYlBhZ2VQb3B1cEltcGwuaC4K
KyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNo
cm9tZUNsaWVudEltcGw6Omhhc09wZW5lZFBvcHVwKTogU3VwcG9ydHMgdGhlIFBhZ2VQb3B1cC4K
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6b3BlblBhZ2VQb3B1cCk6CisgICAg
ICAgIGp1c3QgZGVsZWdhdGUgdG8gV2ViVmlld0ltcGw6Om9wZW5QYWdlUG9wdXAoKS4KKyAgICAg
ICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6Y2xvc2VQYWdlUG9wdXApOiBkaXR0by4KKwor
ICAgICAgICAqIHNyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcDoKKyAgICAgICAgKFBhZ2VQb3B1cENo
cm9tZUNsaWVudCk6CisgICAgICAgIFRoaXMgaXMgYSBsaWdodCBpbXBsZW1lbnRhdGlvbiBvZiBD
aHJvbWVDbGllbnQgZm9yIHRoZSBwYWdlIGluCisgICAgICAgIFdlYlBhZ2VQb3B1cEltcGwuIFRo
aXMgaXMgYSBmcmllbmQgb2YgV2ViUGFnZVBvcHVwSW1wbCBiZWNhc2Ugb2YgZWFzZSBvZgorICAg
ICAgICBhY2Nlc3MgdG8gaXRzIG1lbWJlcnMuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VQb3B1cENo
cm9tZUNsaWVudDo6UGFnZVBvcHVwQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVBvcHVwSW1wbDo6V2ViUGFnZVBvcHVwSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQb3B1cEltcGw6On5XZWJQYWdlUG9wdXBJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVBvcHVwSW1wbDo6aW5pdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6Omlu
aXRQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6c2l6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmFuaW1hdGUpOiBDYWxscyBQYWdlV2lkZ2V0
RGVsZWdhdGU6OmFuaW1hdGUoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6
Y29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6bGF5b3V0KTog
Q2FsbHMgUGFnZVdpZGdldERlbGVnYXRlOjpsYXlvdXQoKS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVBvcHVwSW1wbDo6cGFpbnQpOiBDYWxscyBQYWdlV2lkZ2V0RGVsZWdhdGU6OnBhaW50KCku
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OnJlc2l6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUtleUV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlQ2hhckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQb3B1cEltcGw6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVw
SW1wbDo6Y2xvc2UpOiBEZWxldGUgdGhlIHBhZ2UsIGFuZCBraWxsIGl0c2VsZi4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6Y2xvc2VQb3B1cCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQb3B1cDo6Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvV2ViUGFnZVBvcHVwSW1wbC5o
OiBBZGRlZC4KKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6IEluaXRpYWxpemUgbV9wYWdlUG9wdXAuCisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVLZXlFdmVudCk6CisgICAgICAgIFJl
bmFtZWQgZnJvbSBrZXlFdmVudCgpLiBGb3J3YXJkIGtleSBldmVudHMgdG8gYSBQYWdlUG9wdXAg
aWYgaXQgaXMgb3Blbi4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRsZUNoYXJF
dmVudCk6CisgICAgICAgIFJlbmFtZWQgZnJvbSBjaGFyRXZlbnQoKS4gRm9yd2FyZCBjaGFyIGV2
ZW50cyB0byBhIFBhZ2VQb3B1cCBpZiBpdCBpcyBvcGVuLgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6b3BlblBhZ2VQb3B1cCk6CisgICAgICAgIEFkZGVkLiBJbnN0YW50aWF0ZSBhIFdl
YlBhZ2VQb3B1cEltcGwsIGNhbGN1bGF0ZXMgYSBnb29kIGJvdW5kaW5nCisgICAgICAgIHJlY3Rh
bmdsZSBvZiB0aGUgcGFnZSBwb3B1cCBmcm9tIHRoZSBzcGVjaWZpZWQgZWxlbWVudCByZWN0YW5n
bGUsCisgICAgICAgIGluaXRpYWxpemUgdGhlIFdlYlBhZ2VQb3B1cEltcGwsIGFuZCBzdG9wIGNh
cmV0IGJsaW5rLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y2xvc2VQYWdlUG9wdXAp
OgorICAgICAgICBDbG9zZSB0aGUgcG9wdXAsIGNsZWFyIG1fcGFnZVBvcHVwLCBhbmQgcmVzdW1l
IGNhcmV0IGJsaW5rLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Rm9jdXMpOiBI
aWRlIGFsbCB0aGUgcG9wdXBzLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGlkZVBv
cHVwcyk6IEhpZGUgdGhlIHBhZ2UgcG9wdXAgdG9vLgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1w
bC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFzT3BlbmVkUG9wdXApOiBDaGVj
a3MgdGhlIHBhZ2UgcG9wdXAgdG9vLgorCiAyMDEyLTA0LTEyICBLZW50IFRhbXVyYSAgPHRrZW50
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIE1vdmUgc29tZSBjb2RlIG9mIFdl
YlZpZXdJbXBsIGFuZCBXZWJGcmFtZUltcGwgdG8gUGFnZVdpZGdldERlbGVnYXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKaW5kZXggNWE2NWYzNTdhYWYwMjhkNzMwZDZkMjE1ZjRiY2JlNTUy
Njg5NDdhMy4uYmNlZmZhYTM5ZjYzMzMwMTYzZmMwNzA2NjhmOWMyNDRiN2RjNDJhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtNjEzLDYgKzYxMyw3IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJOb3RpZmljYXRpb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk9w
dGlvbkVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlBhZ2VQb3B1cEltcGwu
Y3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlBhZ2VQb3B1cEltcGwuaCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJQYWdlU2VyaWFsaXplci5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQ
YWdlU2VyaWFsaXplckltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9tZUNsaWVudEltcGwuY3BwCmluZGV4IDQyNzM1YTQ2ZDkyZTFjMDg3MDA2NmJmOWI0Y2Y5ZDlk
MzViM2FmZDYuLjE5OTJjZDRhYWFmNjVkZDkxZjUwNjFjZGY5MzVhMjhmYTAwNWIxZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC05
NzcsNyArOTc3LDcgQEAgYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpzZWxlY3RJdGVtQWxpZ25tZW50
Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkKIAogYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpo
YXNPcGVuZWRQb3B1cCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICEhbV93ZWJWaWV3LT5zZWxlY3RQ
b3B1cCgpOworICAgIHJldHVybiBtX3dlYlZpZXctPmhhc09wZW5lZFBvcHVwKCk7CiB9CiAKIFBh
c3NSZWZQdHI8UG9wdXBNZW51PiBDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnUoUG9w
dXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CkBAIC05OTQsMTUgKzk5NCwxNCBAQCBQYXNzUmVm
UHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlU2VhcmNoUG9wdXBN
ZW51KFBvcHVwTWVudUNsaQogfQogCiAjaWYgRU5BQkxFKFBBR0VfUE9QVVApCi1QYWdlUG9wdXAq
IENocm9tZUNsaWVudEltcGw6Om9wZW5QYWdlUG9wdXAoUGFnZVBvcHVwQ2xpZW50KiwgY29uc3Qg
SW50UmVjdCYpCitQYWdlUG9wdXAqIENocm9tZUNsaWVudEltcGw6Om9wZW5QYWdlUG9wdXAoUGFn
ZVBvcHVwQ2xpZW50KiBjbGllbnQsIGNvbnN0IEludFJlY3QmIG9yaWdpbkJvdW5kc0luUm9vdFZp
ZXcpCiB7Ci0gICAgLy8gRklYTUU6IEltcGVsZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gbV93ZWJWaWV3LT5vcGVuUGFnZVBvcHVwKGNsaWVudCwgb3JpZ2luQm91bmRzSW5S
b290Vmlldyk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Y2xvc2VQYWdlUG9wdXAoUGFn
ZVBvcHVwKikKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Y2xvc2VQYWdlUG9wdXAoUGFnZVBvcHVw
KiBwb3B1cCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgbV93ZWJWaWV3
LT5jbG9zZVBhZ2VQb3B1cChwb3B1cCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcAppbmRleCBiYzgxMGM3YjFiMTY4ZGI3
ZWNiZTIxNWQwMTljNjM0NzNmMWI0ZmQyLi4wYzJjYzZkYmE2YzIyZTg3YWZiMmNjMDRjM2QxYWYz
ZmEwNTJiZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdl
UG9wdXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9w
dXBJbXBsLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtMjksMjEgKzI5LDI2NiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJQYWdlUG9wdXBJbXBsLmgiCiAKKyNpbmNsdWRlICJFbXB0eUNsaWVudHMu
aCIKKyNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgorI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5o
IgorI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1
ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdl
UG9wdXBDbGllbnQuaCIKKyNpbmNsdWRlICJQYWdlV2lkZ2V0RGVsZWdhdGUuaCIKKyNpbmNsdWRl
ICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKKyNpbmNsdWRlICJXZWJJ
bnB1dEV2ZW50Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQb3B1cC5oIgorI2luY2x1
ZGUgIldlYldpZGdldENsaWVudC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKworY2xhc3MgUGFnZVBv
cHVwQ2hyb21lQ2xpZW50IDogcHVibGljIEVtcHR5Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShQYWdlUG9wdXBDaHJvbWVDbGllbnQpOworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgZXhwbGljaXQgUGFnZVBvcHVwQ2hyb21lQ2xpZW50
KFdlYlBhZ2VQb3B1cEltcGwqIHBvcHVwKQorICAgICAgICA6IG1fcG9wdXAocG9wdXApCisgICAg
eworICAgICAgICBBU1NFUlQobV9wb3B1cC0+d2lkZ2V0Q2xpZW50KCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3dTb29uKCkgT1ZFUlJJREUKKyAgICB7
CisgICAgICAgIG1fcG9wdXAtPmNsb3NlUG9wdXAoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIEZs
b2F0UmVjdCB3aW5kb3dSZWN0KCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiBGbG9h
dFJlY3QobV9wb3B1cC0+bV93aW5kb3dSZWN0SW5TY3JlZW4ueCwgbV9wb3B1cC0+bV93aW5kb3dS
ZWN0SW5TY3JlZW4ueSwgbV9wb3B1cC0+bV93aW5kb3dSZWN0SW5TY3JlZW4ud2lkdGgsIG1fcG9w
dXAtPm1fd2luZG93UmVjdEluU2NyZWVuLmhlaWdodCk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSBPVkVSUklERQorICAgIHsK
KyAgICAgICAgbV9wb3B1cC0+bV93aW5kb3dSZWN0SW5TY3JlZW4gPSBJbnRSZWN0KHJlY3QpOwor
ICAgICAgICBtX3BvcHVwLT53aWRnZXRDbGllbnQoKS0+c2V0V2luZG93UmVjdChtX3BvcHVwLT5t
X3dpbmRvd1JlY3RJblNjcmVlbik7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JikgT1ZFUlJJREUKKyAgICB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIkNPTlNPTEUgTUVTU1NBR0U6JXU6ICVzXG4iLCBsaW5lTnVtYmVyLCBtZXNzYWdlLnV0Zjgo
KS5kYXRhKCkpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1lc3NhZ2UpOworICAgICAg
ICBVTlVTRURfUEFSQU0obGluZU51bWJlcik7CisjZW5kaWYKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgSW50UmVjdCYgcGFpbnRS
ZWN0LCBib29sKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaWYgKHBhaW50UmVjdC5pc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fcG9wdXAtPndpZGdldENsaWVudCgp
LT5kaWRJbnZhbGlkYXRlUmVjdChwYWludFJlY3QpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGwoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHNjcm9s
bFJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBPVkVSUklERQorICAgIHsKKyAgICAgICAg
bV9wb3B1cC0+d2lkZ2V0Q2xpZW50KCktPmRpZFNjcm9sbFJlY3Qoc2Nyb2xsRGVsdGEud2lkdGgo
KSwgc2Nyb2xsRGVsdGEuaGVpZ2h0KCksIGludGVyc2VjdGlvbihzY3JvbGxSZWN0LCBjbGlwUmVj
dCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNGb3JTbG93
U2Nyb2xsKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIGJvb2wgaW1tZWRpYXRlKSBPVkVSUklE
RQorICAgIHsKKyAgICAgICAgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcodXBkYXRlUmVj
dCwgaW1tZWRpYXRlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRp
b24oKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9wb3B1cC0+d2lkZ2V0Q2xpZW50KCktPnNj
aGVkdWxlQW5pbWF0aW9uKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkKiB3ZWJWaWV3KCkg
Y29uc3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BvcHVwLT5tX3dlYlZpZXc7
CisgICAgfQorCisgICAgV2ViUGFnZVBvcHVwSW1wbCogbV9wb3B1cDsKK307CisKIC8vIFdlYlBh
Z2VQb3B1cEltcGwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi0vLyBGSVhNRTogV2ViUGFnZVBvcHVwSW1wbCBpbXBsZW1l
bnRhdGlvbiB3aWxsIGJlIHdyaXR0ZW4gaGVyZS4KK1dlYlBhZ2VQb3B1cEltcGw6OldlYlBhZ2VQ
b3B1cEltcGwoV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQpCisgICAgOiBtX3dpZGdldENsaWVudChj
bGllbnQpCit7CisgICAgQVNTRVJUKGNsaWVudCk7Cit9CisKK1dlYlBhZ2VQb3B1cEltcGw6On5X
ZWJQYWdlUG9wdXBJbXBsKCkKK3sKKyAgICBBU1NFUlQoIW1fcGFnZSk7Cit9CisKK2Jvb2wgV2Vi
UGFnZVBvcHVwSW1wbDo6aW5pdChXZWJWaWV3SW1wbCogd2ViVmlldywgUGFnZVBvcHVwQ2xpZW50
KiBwb3B1cENsaWVudCwgY29uc3QgSW50UmVjdCYgYm91bmRzSW5TY3JlZW4pCit7CisgICAgQVNT
RVJUKHdlYlZpZXcpOworICAgIEFTU0VSVChwb3B1cENsaWVudCk7CisgICAgbV93ZWJWaWV3ID0g
d2ViVmlldzsKKyAgICBtX3BvcHVwQ2xpZW50ID0gcG9wdXBDbGllbnQ7CisKKyAgICBtX3dpZGdl
dENsaWVudC0+c2V0V2luZG93UmVjdChib3VuZHNJblNjcmVlbik7CisgICAgbV93aW5kb3dSZWN0
SW5TY3JlZW4gPSBib3VuZHNJblNjcmVlbjsKKyAgICBpZiAoIWluaXRQYWdlKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBtX3dpZGdldENsaWVudC0+c2hvdyhXZWJOYXZpZ2F0aW9uUG9s
aWN5KCkpOworCisgICAgc2V0Rm9jdXModHJ1ZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBXZWJQYWdlUG9wdXBJbXBsOjppbml0UGFnZSgpCit7CisgICAgUGFnZTo6UGFnZUNsaWVu
dHMgcGFnZUNsaWVudHM7CisgICAgZmlsbFdpdGhFbXB0eUNsaWVudHMocGFnZUNsaWVudHMpOwor
ICAgIG1fY2hyb21lQ2xpZW50ID0gYWRvcHRQdHIobmV3IFBhZ2VQb3B1cENocm9tZUNsaWVudCh0
aGlzKSk7CisgICAgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0gbV9jaHJvbWVDbGllbnQuZ2V0
KCk7CisKKyAgICBtX3BhZ2UgPSBhZG9wdFB0cihuZXcgUGFnZShwYWdlQ2xpZW50cykpOworICAg
IG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKKyAgICBtX3BhZ2Ut
PnNldHRpbmdzKCktPnNldEFsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKHRydWUpOworCisgICAg
c3RhdGljIEZyYW1lTG9hZGVyQ2xpZW50KiBlbXB0eUZyYW1lTG9hZGVyQ2xpZW50ID0gIG5ldyBF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OworICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBGcmFtZTo6
Y3JlYXRlKG1fcGFnZS5nZXQoKSwgMCwgZW1wdHlGcmFtZUxvYWRlckNsaWVudCk7CisgICAgZnJh
bWUtPnNldFZpZXcoRnJhbWVWaWV3OjpjcmVhdGUoZnJhbWUuZ2V0KCkpKTsKKyAgICBmcmFtZS0+
aW5pdCgpOworICAgIGZyYW1lLT52aWV3KCktPnJlc2l6ZShtX3BvcHVwQ2xpZW50LT5jb250ZW50
U2l6ZSgpKTsKKyAgICBmcmFtZS0+dmlldygpLT5zZXRUcmFuc3BhcmVudChmYWxzZSk7CisKKyAg
ICBEb2N1bWVudFdyaXRlciogd3JpdGVyID0gZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVu
dExvYWRlcigpLT53cml0ZXIoKTsKKyAgICB3cml0ZXItPnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwi
KTsKKyAgICB3cml0ZXItPnNldEVuY29kaW5nKCJVVEYtOCIsIGZhbHNlKTsKKyAgICB3cml0ZXIt
PmJlZ2luKCk7CisgICAgbV9wb3B1cENsaWVudC0+d3JpdGVEb2N1bWVudCgqd3JpdGVyKTsKKyAg
ICB3cml0ZXItPmVuZCgpOworCisgICAgZnJhbWUtPnNjcmlwdCgpLT5pbnN0YWxsRnVuY3Rpb25z
Rm9yUGFnZVBvcHVwKGZyYW1lLmdldCgpLCBtX3BvcHVwQ2xpZW50KTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworV2ViU2l6ZSBXZWJQYWdlUG9wdXBJbXBsOjpzaXplKCkKK3sKKyAgICByZXR1cm4g
bV9wb3B1cENsaWVudC0+Y29udGVudFNpemUoKTsKK30KKwordm9pZCBXZWJQYWdlUG9wdXBJbXBs
OjphbmltYXRlKGRvdWJsZSkKK3sKKyAgICBQYWdlV2lkZ2V0RGVsZWdhdGU6OmFuaW1hdGUobV9w
YWdlLmdldCgpLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7Cit9CisKK3ZvaWQgV2Vi
UGFnZVBvcHVwSW1wbDo6Y29tcG9zaXRlKGJvb2wpCit7Cit9CisKK3ZvaWQgV2ViUGFnZVBvcHVw
SW1wbDo6bGF5b3V0KCkKK3sKKyAgICBQYWdlV2lkZ2V0RGVsZWdhdGU6OmxheW91dChtX3BhZ2Uu
Z2V0KCkpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnBhaW50KFdlYkNhbnZhcyogY2Fu
dmFzLCBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6cGFp
bnQobV9wYWdlLmdldCgpLCAwLCBjYW52YXMsIHJlY3QpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1
cEltcGw6OnJlc2l6ZShjb25zdCBXZWJTaXplJiBuZXdTaXplKQoreworICAgIGlmIChtX3BhZ2Up
CisgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+cmVzaXplKG5ld1NpemUpOwor
ICAgIG1fd2lkZ2V0Q2xpZW50LT5kaWRJbnZhbGlkYXRlUmVjdChXZWJSZWN0KDAsIDAsIG5ld1Np
emUud2lkdGgsIG5ld1NpemUuaGVpZ2h0KSk7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6
aGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpCit7CisgICAgLy8gVGhlIG1h
aW4gV2ViVmlldyByZWNlaXZlcyBrZXkgZXZlbnRzIGFuZCBmb3J3YXJkIHRoZW0gdG8gdGhpcyB2
aWEgaGFuZGxlS2V5RXZlbnQoKS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlQ2hhckV2ZW50KGNv
bnN0IFdlYktleWJvYXJkRXZlbnQmKQoreworICAgIC8vIFRoZSBtYWluIFdlYlZpZXcgcmVjZWl2
ZXMga2V5IGV2ZW50cyBhbmQgZm9yd2FyZCB0aGVtIHRvIHRoaXMgdmlhIGhhbmRsZUtleUV2ZW50
KCkuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisj
aWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorYm9vbCBXZWJQYWdlUG9wdXBJbXBsOjpoYW5kbGVH
ZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAoIW1f
cGFnZSB8fCAhbV9wYWdlLT5tYWluRnJhbWUoKSB8fCAhbV9wYWdlLT5tYWluRnJhbWUoKS0+dmll
dygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRnJhbWUmIGZyYW1lID0gKm1fcGFnZS0+
bWFpbkZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lLmV2ZW50SGFuZGxlcigpLT5oYW5kbGVHZXN0
dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKGZyYW1lLnZpZXcoKSwgZXZlbnQp
KTsKK30KKyNlbmRpZgorCitib29sIFdlYlBhZ2VQb3B1cEltcGw6OmhhbmRsZUlucHV0RXZlbnQo
Y29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCit7CisgICAgcmV0dXJuIFBhZ2VXaWRnZXREZWxl
Z2F0ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0aGlzLCBldmVudCk7Cit9CisK
K2Jvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXli
b2FyZEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAoIW1fcGFnZS0+bWFpbkZyYW1lKCkgfHwgIW1f
cGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoZXZlbnQp
OworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnNldEZvY3VzKGJvb2wgZW5hYmxlKQorewor
ICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisgICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+c2V0Rm9jdXNlZChlbmFibGUpOworICAgIGlmIChlbmFibGUpCisgICAgICAgIG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEFjdGl2ZSh0cnVlKTsKK30KKwordm9pZCBXZWJQ
YWdlUG9wdXBJbXBsOjpjbG9zZSgpCit7CisgICAgbV9wYWdlLmNsZWFyKCk7CisgICAgZGVsZXRl
IHRoaXM7Cit9CisKK3ZvaWQgV2ViUGFnZVBvcHVwSW1wbDo6Y2xvc2VQb3B1cCgpCit7CisgICAg
aWYgKG1fcGFnZSkgeworICAgICAgICBtX3BhZ2UtPnNldEdyb3VwTmFtZShTdHJpbmcoKSk7Cisg
ICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygpOwor
ICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+c3RvcExvYWRpbmcoVW5sb2Fk
RXZlbnRQb2xpY3lOb25lKTsKKyAgICB9CisgICAgLy8gY2xvc2VXaWRnZXRTb29uKCkgd2lsbCBj
YWxsIHRoaXMtPmNsb3NlKCkgbGF0ZXIuCisgICAgbV93aWRnZXRDbGllbnQtPmNsb3NlV2lkZ2V0
U29vbigpOworCisgICAgbV9wb3B1cENsaWVudC0+ZGlkQ2xvc2VQb3B1cCgpOworfQorCisjZW5k
aWYgLy8gRU5BQkxFKFBBR0VfUE9QVVApCiAKIC8vIFdlYlBhZ2VQb3B1cCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdl
YlBhZ2VQb3B1cCogV2ViUGFnZVBvcHVwOjpjcmVhdGUoV2ViV2lkZ2V0Q2xpZW50KikKK1dlYlBh
Z2VQb3B1cCogV2ViUGFnZVBvcHVwOjpjcmVhdGUoV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQpCiB7
Ci0gICAgLy8gRklYTUU6IFJldHVybnMgYSBXZWJQYWdlUG9wdXBJbXBsIG9iamVjdC4KKyNpZiBF
TkFCTEUoUEFHRV9QT1BVUCkKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgQ1JBU0goKTsKKyAg
ICByZXR1cm4gbmV3IFdlYlBhZ2VQb3B1cEltcGwoY2xpZW50KTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKGNsaWVudCk7CiAgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdl
UG9wdXBJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjVhZmNiNDFhZDhhNTkwNTRhY2U2Y2U4Y2M5ZGIyYzQyYjQ0OTk0Mwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1
cEltcGwuaApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUGFnZVBvcHVwSW1wbF9oCisjZGVm
aW5lIFdlYlBhZ2VQb3B1cEltcGxfaAorCisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisKKyNpbmNs
dWRlICJQYWdlUG9wdXAuaCIKKyNpbmNsdWRlICJQYWdlV2lkZ2V0RGVsZWdhdGUuaCIKKyNpbmNs
dWRlICJXZWJQYWdlUG9wdXAuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIFBhZ2U7CitjbGFzcyBQYWdlUG9wdXBDbGllbnQ7CitjbGFzcyBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQ
YWdlUG9wdXBDaHJvbWVDbGllbnQ7CitjbGFzcyBXZWJWaWV3SW1wbDsKKworY2xhc3MgV2ViUGFn
ZVBvcHVwSW1wbCA6IHB1YmxpYyBXZWJQYWdlUG9wdXAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFdlYkNvcmU6OlBhZ2VQb3B1cCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
V2ViUGFnZVBvcHVwSW1wbCk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKK3B1Ymxp
YzoKKyAgICBib29sIGluaXQoV2ViVmlld0ltcGwqLCBXZWJDb3JlOjpQYWdlUG9wdXBDbGllbnQq
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBib3VuZHNJblNjcmVlbik7CisgICAgYm9vbCBoYW5k
bGVLZXlFdmVudChjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKTsKKyAgICB2
b2lkIGNsb3NlUG9wdXAoKTsKKyAgICBXZWJXaWRnZXRDbGllbnQqIHdpZGdldENsaWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fd2lkZ2V0Q2xpZW50OyB9CisKK3ByaXZhdGU6CisgICAgLy8gV2ViV2lk
Z2V0IGZ1bmN0aW9ucworICAgIHZpcnR1YWwgV2ViU2l6ZSBzaXplKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGFuaW1hdGUoZG91YmxlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y29tcG9zaXRlKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwgY29uc3QgV2ViUmVjdCYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNpemUoY29uc3QgV2ViU2l6ZSYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoYm9vbCkgT1ZFUlJJREU7CisKKyAgICAvLyBQYWdlV2lkZ2V0
RXZlbnRIYW5kbGVyIGZ1bmN0aW9ucworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVLZXlFdmVudChj
b25zdCBXZWJLZXlib2FyZEV2ZW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGhhbmRs
ZUNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JikgT1ZFUlJJREU7CisjaWYgRU5BQkxF
KEdFU1RVUkVfRVZFTlRTKQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29u
c3QgV2ViR2VzdHVyZUV2ZW50JikgT1ZFUlJJREU7CisjZW5kaWYKKworICAgIGV4cGxpY2l0IFdl
YlBhZ2VQb3B1cEltcGwoV2ViV2lkZ2V0Q2xpZW50Kik7CisgICAgdmlydHVhbCB+V2ViUGFnZVBv
cHVwSW1wbCgpOworICAgIGJvb2wgaW5pdFBhZ2UoKTsKKworICAgIFdlYldpZGdldENsaWVudCog
bV93aWRnZXRDbGllbnQ7CisgICAgV2ViUmVjdCBtX3dpbmRvd1JlY3RJblNjcmVlbjsKKyAgICBX
ZWJWaWV3SW1wbCogbV93ZWJWaWV3OworICAgIE93blB0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7
CisgICAgT3duUHRyPFBhZ2VQb3B1cENocm9tZUNsaWVudD4gbV9jaHJvbWVDbGllbnQ7CisgICAg
V2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50KiBtX3BvcHVwQ2xpZW50OworCisgICAgZnJpZW5kIGNs
YXNzIFdlYlBhZ2VQb3B1cDsKKyAgICBmcmllbmQgY2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisjZW5kaWYgLy8gRU5BQkxFKFBBR0VfUE9Q
VVApCisjZW5kaWYgLy8gV2ViUGFnZVBvcHVwSW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYmNmNmQ4MTI0NmM4YmVhNmQzMDk4Y2E0MDYzMGFh
ZmVkOWI2ZjhkYy4uMWIxNjcyYmZjMmYxMTZkZTBkMGZmM2RmOWFmYjRkZjdmMzBlYWE5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtODgsNiArODgs
NyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRl
ICJQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIK
ICNpbmNsdWRlICJQYWdlV2lkZ2V0RGVsZWdhdGUuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgpAQCAtMTMxLDYgKzEzMiw3IEBACiAj
aW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJBY3Rpb24uaCIKICNp
bmNsdWRlICJXZWJOb2RlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBvcHVwSW1wbC5oIgogI2luY2x1
ZGUgIldlYlBsdWdpbi5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkFjdGlvbi5oIgogI2luY2x1ZGUg
IldlYlBsdWdpbkNvbnRhaW5lckltcGwuaCIKQEAgLTM3MCw2ICszNzIsNyBAQCBXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogICAgICwgbV9kcmFnT3BlcmF0
aW9uKFdlYkRyYWdPcGVyYXRpb25Ob25lKQogICAgICwgbV9hdXRvZmlsbFBvcHVwU2hvd2luZyhm
YWxzZSkKICAgICAsIG1fYXV0b2ZpbGxQb3B1cCgwKQorICAgICwgbV9wYWdlUG9wdXAoMCkKICAg
ICAsIG1faXNUcmFuc3BhcmVudChmYWxzZSkKICAgICAsIG1fdGFic1RvTGlua3MoZmFsc2UpCiAg
ICAgLCBtX2RyYWdTY3JvbGxUaW1lcihhZG9wdFB0cihuZXcgRHJhZ1Njcm9sbFRpbWVyKSkKQEAg
LTcxNSw2ICs3MTgsMTYgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlS2V5RXZlbnQoY29uc3Qg
V2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgLy8gbm90IHRoZSBwYWdlLgogICAgIGlmICht
X3NlbGVjdFBvcHVwKQogICAgICAgICByZXR1cm4gbV9zZWxlY3RQb3B1cC0+aGFuZGxlS2V5RXZl
bnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihldmVudCkpOworI2lmIEVOQUJMRShQQUdF
X1BPUFVQKQorICAgIGlmIChtX3BhZ2VQb3B1cCkgeworICAgICAgICBtX3BhZ2VQb3B1cC0+aGFu
ZGxlS2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihldmVudCkpOworICAgICAg
ICAvLyBXZSBuZWVkIHRvIGlnbm9yZSB0aGUgbmV4dCBDaGFyIGV2ZW50IGFmdGVyIHRoaXMgb3Ro
ZXJ3aXNlIHByZXNzaW5nCisgICAgICAgIC8vIGVudGVyIHdoZW4gc2VsZWN0aW5nIGFuIGl0ZW0g
aW4gdGhlIHBvcHVwIHdpbGwgZ28gdG8gdGhlIHBhZ2UuCisgICAgICAgIGlmIChXZWJJbnB1dEV2
ZW50OjpSYXdLZXlEb3duID09IGV2ZW50LnR5cGUpCisgICAgICAgICAgICBtX3N1cHByZXNzTmV4
dEtleXByZXNzRXZlbnQgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5k
aWYKIAogICAgIC8vIEdpdmUgQXV0b2NvbXBsZXRlIGEgY2hhbmNlIHRvIGNvbnN1bWUgdGhlIGtl
eSBldmVudHMgaXQgaXMgaW50ZXJlc3RlZCBpbi4KICAgICBpZiAoYXV0b2NvbXBsZXRlSGFuZGxl
S2V5RXZlbnQoZXZlbnQpKQpAQCAtODI3LDYgKzg0MCwxMCBAQCBib29sIFdlYlZpZXdJbXBsOjpo
YW5kbGVDaGFyRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgLy8gbm90
IHRoZSBwYWdlLgogICAgIGlmIChtX3NlbGVjdFBvcHVwKQogICAgICAgICByZXR1cm4gbV9zZWxl
Y3RQb3B1cC0+aGFuZGxlS2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihldmVu
dCkpOworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorICAgIGlmIChtX3BhZ2VQb3B1cCkKKyAgICAg
ICAgcmV0dXJuIG1fcGFnZVBvcHVwLT5oYW5kbGVLZXlFdmVudChQbGF0Zm9ybUtleWJvYXJkRXZl
bnRCdWlsZGVyKGV2ZW50KSk7CisjZW5kaWYKIAogICAgIEZyYW1lKiBmcmFtZSA9IGZvY3VzZWRX
ZWJDb3JlRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtMTE3Nyw2ICsxMTk0LDQ5IEBAIHZv
aWQgIFdlYlZpZXdJbXBsOjpwb3B1cENsb3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9w
dXBDb250YWluZXIpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCitQYWdlUG9w
dXAqIFdlYlZpZXdJbXBsOjpvcGVuUGFnZVBvcHVwKFBhZ2VQb3B1cENsaWVudCogY2xpZW50LCBj
b25zdCBJbnRSZWN0JiBvcmlnaW5Cb3VuZHNJblJvb3RWaWV3KQoreworICAgIEFTU0VSVChjbGll
bnQpOworICAgIGlmIChoYXNPcGVuZWRQb3B1cCgpKQorICAgICAgICBoaWRlUG9wdXBzKCk7Cisg
ICAgQVNTRVJUKCFtX3BhZ2VQb3B1cCk7CisKKyAgICBXZWJXaWRnZXQqIHBvcHVwV2lkZ2V0ID0g
bV9jbGllbnQtPmNyZWF0ZVBvcHVwTWVudShXZWJQb3B1cFR5cGVQYWdlKTsKKyAgICBBU1NFUlQo
cG9wdXBXaWRnZXQpOworICAgIG1fcGFnZVBvcHVwID0gc3RhdGljX2Nhc3Q8V2ViUGFnZVBvcHVw
SW1wbCo+KHBvcHVwV2lkZ2V0KTsKKyAgICBXZWJTaXplIHJvb3RWaWV3U2l6ZSA9IHNpemUoKTsK
KyAgICBJbnRTaXplIHBvcHVwU2l6ZSA9IGNsaWVudC0+Y29udGVudFNpemUoKTsKKyAgICBJbnRS
ZWN0IHBvcHVwQm91bmRzSW5Sb290VmlldyhJbnRQb2ludChtYXgoMCwgb3JpZ2luQm91bmRzSW5S
b290Vmlldy54KCkpLCBtYXgoMCwgb3JpZ2luQm91bmRzSW5Sb290Vmlldy5tYXhZKCkpKSwgcG9w
dXBTaXplKTsKKyAgICBpZiAocG9wdXBCb3VuZHNJblJvb3RWaWV3Lm1heFkoKSA+IHJvb3RWaWV3
U2l6ZS5oZWlnaHQpCisgICAgICAgIHBvcHVwQm91bmRzSW5Sb290Vmlldy5zZXRZKG1heCgwLCBv
cmlnaW5Cb3VuZHNJblJvb3RWaWV3LnkoKSAtIHBvcHVwU2l6ZS5oZWlnaHQoKSkpOworICAgIGlm
IChwb3B1cEJvdW5kc0luUm9vdFZpZXcubWF4WCgpID4gcm9vdFZpZXdTaXplLndpZHRoKQorICAg
ICAgICBwb3B1cEJvdW5kc0luUm9vdFZpZXcuc2V0WChtYXgoMCwgcm9vdFZpZXdTaXplLndpZHRo
IC0gcG9wdXBTaXplLndpZHRoKCkpKTsKKyAgICBpZiAoIW1fcGFnZVBvcHVwLT5pbml0KHRoaXMs
IGNsaWVudCwgbV9jaHJvbWVDbGllbnRJbXBsLnJvb3RWaWV3VG9TY3JlZW4ocG9wdXBCb3VuZHNJ
blJvb3RWaWV3KSkpIHsKKyAgICAgICAgbV9wYWdlUG9wdXAtPmNsb3NlUG9wdXAoKTsKKyAgICAg
ICAgbV9wYWdlUG9wdXAgPSAwOworICAgIH0KKworICAgIGlmIChGcmFtZSogZnJhbWUgPSBmb2N1
c2VkV2ViQ29yZUZyYW1lKCkpCisgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0Q2FyZXRW
aXNpYmxlKGZhbHNlKTsKKyAgICByZXR1cm4gbV9wYWdlUG9wdXA7Cit9CisKK3ZvaWQgV2ViVmll
d0ltcGw6OmNsb3NlUGFnZVBvcHVwKFBhZ2VQb3B1cCogcG9wdXApCit7CisgICAgQVNTRVJUKHBv
cHVwKTsKKyAgICBXZWJQYWdlUG9wdXBJbXBsKiBwb3B1cEltcGwgPSBzdGF0aWNfY2FzdDxXZWJQ
YWdlUG9wdXBJbXBsKj4ocG9wdXApOworICAgIEFTU0VSVChtX3BhZ2VQb3B1cCA9PSBwb3B1cElt
cGwpOworICAgIGlmIChtX3BhZ2VQb3B1cCAhPSBwb3B1cEltcGwpCisgICAgICAgIHJldHVybjsK
KyAgICBtX3BhZ2VQb3B1cC0+Y2xvc2VQb3B1cCgpOworICAgIG1fcGFnZVBvcHVwID0gMDsKKwor
ICAgIGlmIChGcmFtZSogZnJhbWUgPSBmb2N1c2VkV2ViQ29yZUZyYW1lKCkpCisgICAgICAgIGZy
YW1lLT5zZWxlY3Rpb24oKS0+cGFnZUFjdGl2YXRpb25DaGFuZ2VkKCk7Cit9CisjZW5kaWYKKwog
dm9pZCBXZWJWaWV3SW1wbDo6aGlkZUF1dG9maWxsUG9wdXAoKQogewogICAgIGlmIChtX2F1dG9m
aWxsUG9wdXBTaG93aW5nKSB7CkBAIC0xNjQ0LDggKzE3MDQsNyBAQCB2b2lkIFdlYlZpZXdJbXBs
OjpzZXRGb2N1cyhib29sIGVuYWJsZSkKICAgICAgICAgfQogICAgICAgICBtX2ltZUFjY2VwdEV2
ZW50cyA9IHRydWU7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaGlkZUF1dG9maWxsUG9wdXAoKTsK
LSAgICAgICAgaGlkZVNlbGVjdFBvcHVwKCk7CisgICAgICAgIGhpZGVQb3B1cHMoKTsKIAogICAg
ICAgICAvLyBDbGVhciBmb2N1cyBvbiB0aGUgY3VycmVudGx5IGZvY3VzZWQgZnJhbWUgaWYgYW55
LgogICAgICAgICBpZiAoIW1fcGFnZSkKQEAgLTI3MzQsNiArMjc5MywxMCBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpoaWRlUG9wdXBzKCkKIHsKICAgICBoaWRlU2VsZWN0UG9wdXAoKTsKICAgICBoaWRl
QXV0b2ZpbGxQb3B1cCgpOworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorICAgIGlmIChtX3BhZ2VQ
b3B1cCkKKyAgICAgICAgY2xvc2VQYWdlUG9wdXAobV9wYWdlUG9wdXApOworI2VuZGlmCiB9CiAK
IHZvaWQgV2ViVmlld0ltcGw6OnBlcmZvcm1DdXN0b21Db250ZXh0TWVudUFjdGlvbih1bnNpZ25l
ZCBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA3
MjAyYTQ3YmI0ZTc3OTc1NGVkMTg1ZDUyYjhiMzU4Yjk0NjJmOWM4Li4zMjM3OWRkZTVkNWNiMzhj
ZGI5YjlmZDVmMjAxY2U2MWQ4MDM2ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKQEAgLTY5LDYgKzY5LDggQEAgY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBI
aXRUZXN0UmVzdWx0OwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBhZ2U7CitjbGFzcyBQ
YWdlUG9wdXA7CitjbGFzcyBQYWdlUG9wdXBDbGllbnQ7CiBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZVRhcmdldDsKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBvcHVwQ29u
dGFpbmVyOwpAQCAtOTcsNiArOTksNyBAQCBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50Owog
Y2xhc3MgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGU7CiBjbGFzcyBXZWJGcmFtZUltcGw7CiBjbGFz
cyBXZWJHZXN0dXJlRXZlbnQ7CitjbGFzcyBXZWJQYWdlUG9wdXBJbXBsOwogY2xhc3MgV2ViSW1h
Z2U7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKQEAgLTQ0
Nyw2ICs0NTAsMTAgQEAgcHVibGljOgogICAgIC8vIE5vdGlmaWNhdGlvbiB0aGF0IGEgcG9wdXAg
d2FzIG9wZW5lZC9jbG9zZWQuCiAgICAgdm9pZCBwb3B1cE9wZW5lZChXZWJDb3JlOjpQb3B1cENv
bnRhaW5lciogcG9wdXBDb250YWluZXIpOwogICAgIHZvaWQgcG9wdXBDbG9zZWQoV2ViQ29yZTo6
UG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyKTsKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkK
KyAgICBXZWJDb3JlOjpQYWdlUG9wdXAqIG9wZW5QYWdlUG9wdXAoV2ViQ29yZTo6UGFnZVBvcHVw
Q2xpZW50KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgb3JpZ2luQm91bmRzSW5Sb290Vmlldyk7
CisgICAgdm9pZCBjbG9zZVBhZ2VQb3B1cChXZWJDb3JlOjpQYWdlUG9wdXAqKTsKKyNlbmRpZgog
CiAgICAgdm9pZCBoaWRlQXV0b2ZpbGxQb3B1cCgpOwogCkBAIC00ODUsNiArNDkyLDExIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJpbGl0eVN0YXRlKFdlYlBhZ2VWaXNpYmls
aXR5U3RhdGUsIGJvb2wpOwogCiAgICAgV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHNlbGVjdFBv
cHVwKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RQb3B1cC5nZXQoKTsgfQorI2lmIEVOQUJMRShQ
QUdFX1BPUFVQKQorICAgIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdFBvcHVwIHx8IG1fcGFnZVBvcHVwOyB9CisjZWxzZQorICAgIGJvb2wgaGFzT3BlbmVkUG9w
dXAoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdFBvcHVwOyB9CisjZW5kaWYKIAogICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgZXZlbnQgbGVhZHMgdG8gc2Nyb2xsaW5nLgogICAgIHN0YXRpYyBi
b29sIG1hcEtleUNvZGVGb3JTY3JvbGwoaW50IGtleUNvZGUsCkBAIC02OTYsNiArNzA4LDExIEBA
IHByaXZhdGU6CiAgICAgLy8gVGhlIHBvcHVwIGFzc29jaWF0ZWQgd2l0aCBhIHNlbGVjdCBlbGVt
ZW50LgogICAgIFJlZlB0cjxXZWJDb3JlOjpQb3B1cENvbnRhaW5lcj4gbV9zZWxlY3RQb3B1cDsK
IAorI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorICAgIC8vIFRoZSBwb3B1cCBhc3NvY2lhdGVkIHdp
dGggYW4gaW5wdXQgZWxlbWVudC4KKyAgICBXZWJQYWdlUG9wdXBJbXBsKiBtX3BhZ2VQb3B1cDsK
KyNlbmRpZgorCiAgICAgT3duUHRyPFdlYkRldlRvb2xzQWdlbnRQcml2YXRlPiBtX2RldlRvb2xz
QWdlbnQ7CiAgICAgT3duUHRyPFBhZ2VPdmVybGF5TGlzdD4gbV9wYWdlT3ZlcmxheXM7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>