<?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>102339</bug_id>
          
          <creation_ts>2012-11-14 23:02:06 -0800</creation_ts>
          <short_desc>Provide page/window coordinates to plugin&apos;s local coordinates translation in WebPluginContainer.</short_desc>
          <delta_ts>2012-11-20 14:42:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter>lazyboy</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>767755</commentid>
    <comment_count>0</comment_count>
    <who name="">lazyboy</who>
    <bug_when>2012-11-14 23:02:06 -0800</bug_when>
    <thetext>Provide page/window coordinates to plugin&apos;s local coordinates translation in WebPluginContainer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767757</commentid>
    <comment_count>1</comment_count>
      <attachid>174357</attachid>
    <who name="">lazyboy</who>
    <bug_when>2012-11-14 23:02:56 -0800</bug_when>
    <thetext>Created attachment 174357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767758</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 23:06:44 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767759</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 23:07:05 -0800</bug_when>
    <thetext>Attachment 174357 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Sourc...&quot; exit_code: 1
Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767782</commentid>
    <comment_count>4</comment_count>
      <attachid>174357</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-15 00:07:23 -0800</bug_when>
    <thetext>Comment on attachment 174357
Patch

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

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768262</commentid>
    <comment_count>5</comment_count>
      <attachid>174357</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-15 10:28:11 -0800</bug_when>
    <thetext>Comment on attachment 174357
Patch

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

&gt; Source/WebKit/chromium/ChangeLog:8
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).

Please fill out this part of the ChangeLog.

&gt; Source/WebKit/chromium/tests/FrameTestHelpers.cpp:60
&gt; +    virtual WebPlugin* createPlugin(WebFrame* frame, const WebPluginParams&amp; params) OVERRIDE

We shouldn&apos;t need to add this to every TestWebFrameClient.  The tests in WebPluginContainerTest.cpp should create a new subclass of TestWebFrameClient that adds this override.

&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:66
&gt; +WebPluginContainerImpl* getWebPluginContainer(WebView* webView, const WebString&amp; id)

This function dives too much into WebCore.  We should be able to write these tests in terms of the WebKit API, not in terms of WebCore implementation details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768400</commentid>
    <comment_count>6</comment_count>
      <attachid>174501</attachid>
    <who name="">lazyboy</who>
    <bug_when>2012-11-15 12:52:50 -0800</bug_when>
    <thetext>Created attachment 174501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768410</commentid>
    <comment_count>7</comment_count>
      <attachid>174357</attachid>
    <who name="">lazyboy</who>
    <bug_when>2012-11-15 12:58:56 -0800</bug_when>
    <thetext>Comment on attachment 174357
Patch

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

&gt;&gt; Source/WebKit/chromium/ChangeLog:8
&gt;&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
&gt; 
&gt; Please fill out this part of the ChangeLog.

Done.

&gt;&gt; Source/WebKit/chromium/tests/FrameTestHelpers.cpp:60
&gt;&gt; +    virtual WebPlugin* createPlugin(WebFrame* frame, const WebPluginParams&amp; params) OVERRIDE
&gt; 
&gt; We shouldn&apos;t need to add this to every TestWebFrameClient.  The tests in WebPluginContainerTest.cpp should create a new subclass of TestWebFrameClient that adds this override.

Done.

&gt;&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:66
&gt;&gt; +WebPluginContainerImpl* getWebPluginContainer(WebView* webView, const WebString&amp; id)
&gt; 
&gt; This function dives too much into WebCore.  We should be able to write these tests in terms of the WebKit API, not in terms of WebCore implementation details.

I&apos;m using WebFrameImpl::pluginContainerFromNode(WebNode) now, so no more WebCore here, but also means I had to expose that static function in WebFrameImpl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768426</commentid>
    <comment_count>8</comment_count>
      <attachid>174501</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-15 13:18:03 -0800</bug_when>
    <thetext>Comment on attachment 174501
Patch

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

This patch is looking good.  Some minor details.

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:307
&gt; -static WebPluginContainerImpl* pluginContainerFromNode(const WebNode&amp; node)
&gt; +WebPluginContainerImpl* WebFrameImpl::pluginContainerFromNode(const WebNode&amp; node)

Should this be a function on WebNode?

&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:74
&gt; +        if (params.mimeType == WebKit::FakeWebPlugin::mimeType())

No need for &quot;WebKit::&quot;.  We&apos;re already in the WebKit namespace.

&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:84
&gt; +static WebFrameClient* pluginWebFrameClient()
&gt; +{
&gt; +    DEFINE_STATIC_LOCAL(TestPluginWebFrameClient, pluginClient, ());
&gt; +    return &amp;pluginClient;
&gt; +}

Why is this static?  We should just create one on the stack for each test.

&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:89
&gt; +    return WebFrameImpl::pluginContainerFromNode(element);

Yeah, moving pluginContainerFromNode to WebElement might be the best thing.

&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:97
&gt; +    static_cast&lt;WebViewImpl*&gt;(webView)-&gt;settings()-&gt;setPluginsEnabled(true);

Why WebViewImpl?  You should be able to do all this this through the API.

&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:102
&gt; +    WebPluginContainerImpl* pluginContainerOne = getWebPluginContainer(webView, WebString::fromUTF8(&quot;translated-plugin&quot;));

Why WebPluginContainerImpl?  You should be able to do all of this though the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768538</commentid>
    <comment_count>9</comment_count>
      <attachid>174527</attachid>
    <who name="">lazyboy</who>
    <bug_when>2012-11-15 15:01:05 -0800</bug_when>
    <thetext>Created attachment 174527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768542</commentid>
    <comment_count>10</comment_count>
      <attachid>174501</attachid>
    <who name="">lazyboy</who>
    <bug_when>2012-11-15 15:02:29 -0800</bug_when>
    <thetext>Comment on attachment 174501
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:307
&gt;&gt; +WebPluginContainerImpl* WebFrameImpl::pluginContainerFromNode(const WebNode&amp; node)
&gt; 
&gt; Should this be a function on WebNode?

Moved the function to WebElement (non-static). Calling it pluginContainerFromElement(), &quot;FromElement&quot; part seems extraneous, but taking it away also creates confusion, do you have any suggestion?

&gt;&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:74
&gt;&gt; +        if (params.mimeType == WebKit::FakeWebPlugin::mimeType())
&gt; 
&gt; No need for &quot;WebKit::&quot;.  We&apos;re already in the WebKit namespace.

Done.

&gt;&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:84
&gt;&gt; +}
&gt; 
&gt; Why is this static?  We should just create one on the stack for each test.

Copy paste effect from WebViewTest.
Fixed.

&gt;&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:89
&gt;&gt; +    return WebFrameImpl::pluginContainerFromNode(element);
&gt; 
&gt; Yeah, moving pluginContainerFromNode to WebElement might be the best thing.

Moved.

&gt;&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:97
&gt;&gt; +    static_cast&lt;WebViewImpl*&gt;(webView)-&gt;settings()-&gt;setPluginsEnabled(true);
&gt; 
&gt; Why WebViewImpl?  You should be able to do all this this through the API.

Done.

&gt;&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:102
&gt;&gt; +    WebPluginContainerImpl* pluginContainerOne = getWebPluginContainer(webView, WebString::fromUTF8(&quot;translated-plugin&quot;));
&gt; 
&gt; Why WebPluginContainerImpl?  You should be able to do all of this though the API.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768552</commentid>
    <comment_count>11</comment_count>
      <attachid>174527</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-15 15:11:57 -0800</bug_when>
    <thetext>Comment on attachment 174527
Patch

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

&gt; Source/WebKit/chromium/public/WebElement.h:86
&gt; +        WEBKIT_EXPORT WebPluginContainerImpl* pluginContainerFromElement() const;

API functions should return the API type.  That means this should return a WebPluginContainer* not a WebPluginContainerImpl*.

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:1217
&gt; -            pluginContainer = pluginContainerFromNode(node);
&gt; +            pluginContainer = node.toConst&lt;WebElement&gt;().pluginContainerFromElement();

How do you know that this cast is safe?  Maybe pluginContainerFromElement would be better on WebNode after all...  Also, you&apos;ll probably want to call it just &quot;pluginContainer&quot;.  It&apos;s obviously from a node (or an element) if its a member function.

&gt; Source/WebKit/chromium/tests/FakeWebPlugin.cpp:64
&gt; +const WebString&amp; FakeWebPlugin::mimeType()
&gt; +{
&gt; +    DEFINE_STATIC_LOCAL(const WebString, kTestWebPluginMimeType, (WebString::fromUTF8(&quot;application/x-webkit-test-webplugin&quot;)));
&gt; +    return kTestWebPluginMimeType;
&gt; +}

Why are you creating a static for this?  I would just create a temporary WebString in the one place where you need it.

&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:80
&gt; +WebPluginContainerImpl* getWebPluginContainer(WebView* webView, const WebString&amp; id)

WebPluginContainerImpl -&gt; WebPluginContainer.  You seem to only need the API type.  You should use the API type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768611</commentid>
    <comment_count>12</comment_count>
      <attachid>174541</attachid>
    <who name="">lazyboy</who>
    <bug_when>2012-11-15 16:15:22 -0800</bug_when>
    <thetext>Created attachment 174541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768627</commentid>
    <comment_count>13</comment_count>
      <attachid>174527</attachid>
    <who name="">lazyboy</who>
    <bug_when>2012-11-15 16:20:49 -0800</bug_when>
    <thetext>Comment on attachment 174527
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebElement.h:86
&gt;&gt; +        WEBKIT_EXPORT WebPluginContainerImpl* pluginContainerFromElement() const;
&gt; 
&gt; API functions should return the API type.  That means this should return a WebPluginContainer* not a WebPluginContainerImpl*.

Yes, I was hesitant to use Impl here, changed to WebPluginContainer. This also means even if we&apos;re returning WebPluginContainer* from the function, the actual function contents need to get it as WebPluginContainerImpl* and then return it (WebPluginContainerImpl is Widget, but WebPluginContainer is not).
Also all usages in WebFrameImpl requires casting the return value to WebPluginContainerImpl*, which I think is OK?
Done.

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:1217
&gt;&gt; +            pluginContainer = node.toConst&lt;WebElement&gt;().pluginContainerFromElement();
&gt; 
&gt; How do you know that this cast is safe?  Maybe pluginContainerFromElement would be better on WebNode after all...  Also, you&apos;ll probably want to call it just &quot;pluginContainer&quot;.  It&apos;s obviously from a node (or an element) if its a member function.

Move to WebNode.

&gt;&gt; Source/WebKit/chromium/tests/FakeWebPlugin.cpp:64
&gt;&gt; +}
&gt; 
&gt; Why are you creating a static for this?  I would just create a temporary WebString in the one place where you need it.

Done.
I thought using static would be nicer so we don&apos;t create WebString each time we hit createPlugin(), well this is test.

&gt;&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:80
&gt;&gt; +WebPluginContainerImpl* getWebPluginContainer(WebView* webView, const WebString&amp; id)
&gt; 
&gt; WebPluginContainerImpl -&gt; WebPluginContainer.  You seem to only need the API type.  You should use the API type.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768743</commentid>
    <comment_count>14</comment_count>
      <attachid>174541</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-15 17:34:38 -0800</bug_when>
    <thetext>Comment on attachment 174541
Patch

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

Thanks.  One (minor) question below.

&gt; Source/WebKit/chromium/tests/FrameTestHelpers.h:46
&gt; +class TestWebFrameClient : public WebFrameClient {
&gt; +};

What&apos;s the point of exposing the class?

&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:71
&gt; +class TestPluginWebFrameClient : public FrameTestHelpers::TestWebFrameClient {

It seesms like this class could just as easily inherit from WebFrameClient directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768768</commentid>
    <comment_count>15</comment_count>
      <attachid>174541</attachid>
    <who name="">lazyboy</who>
    <bug_when>2012-11-15 17:50:03 -0800</bug_when>
    <thetext>Comment on attachment 174541
Patch

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

Sending replies.
Thanks for the review.

&gt;&gt; Source/WebKit/chromium/tests/FrameTestHelpers.h:46
&gt;&gt; +};
&gt; 
&gt; What&apos;s the point of exposing the class?

Comment below.

&gt;&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:71
&gt;&gt; +class TestPluginWebFrameClient : public FrameTestHelpers::TestWebFrameClient {
&gt; 
&gt; It seesms like this class could just as easily inherit from WebFrameClient directly.

Yes it easily could.
All tests using same base Test* class would have the benefit that we share mocking/testing properties as much, so down the road if anyone adds useful stub to TestWebFrameClient, we get that for free here.
Unfortunately this is not a win-win situation as I think of it more now, it also makes TestWebFrameClient more constrained, it cannot break certain plugin functionality this test expects (which is empty at this moment).
I can remove this and make it direct subclass of WebFrameClient if you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768774</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-15 17:54:38 -0800</bug_when>
    <thetext>&gt; I can remove this and make it direct subclass of WebFrameClient if you like.

Yeah, that&apos;s probably better.  We can always expose TestWebFrameClient in the header later if we find that useful</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768797</commentid>
    <comment_count>17</comment_count>
      <attachid>174583</attachid>
    <who name="">lazyboy</who>
    <bug_when>2012-11-15 18:19:13 -0800</bug_when>
    <thetext>Created attachment 174583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768798</commentid>
    <comment_count>18</comment_count>
      <attachid>174541</attachid>
    <who name="">lazyboy</who>
    <bug_when>2012-11-15 18:20:38 -0800</bug_when>
    <thetext>Comment on attachment 174541
Patch

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

&gt;&gt;&gt; Source/WebKit/chromium/tests/WebPluginContainerTest.cpp:71
&gt;&gt;&gt; +class TestPluginWebFrameClient : public FrameTestHelpers::TestWebFrameClient {
&gt;&gt; 
&gt;&gt; It seesms like this class could just as easily inherit from WebFrameClient directly.
&gt; 
&gt; Yes it easily could.
&gt; All tests using same base Test* class would have the benefit that we share mocking/testing properties as much, so down the road if anyone adds useful stub to TestWebFrameClient, we get that for free here.
&gt; Unfortunately this is not a win-win situation as I think of it more now, it also makes TestWebFrameClient more constrained, it cannot break certain plugin functionality this test expects (which is empty at this moment).
&gt; I can remove this and make it direct subclass of WebFrameClient if you like.

Removed and subclassing WebFrameClient.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768849</commentid>
    <comment_count>19</comment_count>
      <attachid>174583</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-15 19:41:09 -0800</bug_when>
    <thetext>Comment on attachment 174583
Patch

Clearing flags on attachment: 174583

Committed r134880: &lt;http://trac.webkit.org/changeset/134880&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768850</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-15 19:41:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768959</commentid>
    <comment_count>21</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-15 23:34:43 -0800</bug_when>
    <thetext>Reverted r134880 for reason:

it broke Chromium Windows build

Committed r134907: &lt;http://trac.webkit.org/changeset/134907&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769626</commentid>
    <comment_count>22</comment_count>
      <attachid>174751</attachid>
    <who name="">lazyboy</who>
    <bug_when>2012-11-16 13:28:54 -0800</bug_when>
    <thetext>Created attachment 174751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769627</commentid>
    <comment_count>23</comment_count>
    <who name="">lazyboy</who>
    <bug_when>2012-11-16 13:30:43 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Reverted r134880 for reason:
&gt; 
&gt; it broke Chromium Windows build
&gt; 
&gt; Committed r134907: &lt;http://trac.webkit.org/changeset/134907&gt;

Uploaded patch with windows fix.
Change in WebPluginContainer.h: #include &quot;platform/WebCommon.h&quot; -&gt; for uint32_t in windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769961</commentid>
    <comment_count>24</comment_count>
      <attachid>174751</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-17 10:04:28 -0800</bug_when>
    <thetext>Comment on attachment 174751
Patch

Clearing flags on attachment: 174751

Committed r135047: &lt;http://trac.webkit.org/changeset/135047&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769962</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-17 10:04:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770246</commentid>
    <comment_count>26</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-18 17:50:33 -0800</bug_when>
    <thetext>Reverted r135047 for reason:

it broke Chromium Windows/Mac build

Committed r135094: &lt;http://trac.webkit.org/changeset/135094&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770247</commentid>
    <comment_count>27</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-18 17:52:41 -0800</bug_when>
    <thetext>Rolled out this patch because it broke Chromium Win/Mac build:

http://build.chromium.org/p/chromium.webkit/builders/WebKit%20Win%20Builder%20%28dbg%29/builds/31315/steps/compile/logs/stdio

http://build.webkit.org/builders/Chromium%20Win%20Release%20%28Tests%29/builds/31480/steps/webkitpy-test/logs/stdio

It looks like you need to address symbol issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770248</commentid>
    <comment_count>28</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-18 17:53:10 -0800</bug_when>
    <thetext>FYI: Rolled out in r135094.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771400</commentid>
    <comment_count>29</comment_count>
      <attachid>175116</attachid>
    <who name="">lazyboy</who>
    <bug_when>2012-11-19 19:21:06 -0800</bug_when>
    <thetext>Created attachment 175116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771404</commentid>
    <comment_count>30</comment_count>
    <who name="">lazyboy</who>
    <bug_when>2012-11-19 19:25:18 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; Rolled out this patch because it broke Chromium Win/Mac build:
&gt; 
&gt; http://build.chromium.org/p/chromium.webkit/builders/WebKit%20Win%20Builder%20%28dbg%29/builds/31315/steps/compile/logs/stdio
&gt; 
&gt; http://build.webkit.org/builders/Chromium%20Win%20Release%20%28Tests%29/builds/31480/steps/webkitpy-test/logs/stdio
&gt; 
&gt; It looks like you need to address symbol issues.

Another fixed attempt for windows, looks like I&apos;ve been missing a comma separating file list in WebKit.gyp !

Checked in win builder, compile passes:
before (to replicate):
build.chromium.org/p/tryserver.chromium/builders/win/builds/37536
after:
build.chromium.org/p/tryserver.chromium/builders/win/builds/37577</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772038</commentid>
    <comment_count>31</comment_count>
      <attachid>175252</attachid>
    <who name="">lazyboy</who>
    <bug_when>2012-11-20 11:27:42 -0800</bug_when>
    <thetext>Created attachment 175252
Patch, sync so it applies correctly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772187</commentid>
    <comment_count>32</comment_count>
      <attachid>175252</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 14:42:11 -0800</bug_when>
    <thetext>Comment on attachment 175252
Patch, sync so it applies correctly

Clearing flags on attachment: 175252

Committed r135315: &lt;http://trac.webkit.org/changeset/135315&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174357</attachid>
            <date>2012-11-14 23:02:56 -0800</date>
            <delta_ts>2012-11-15 12:58:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102339-20121115020054.patch</filename>
            <type>text/plain</type>
            <size>20202</size>
            <attacher>lazyboy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGNlYzE4M2MxOWJlZTVjZGZlNGU5Njg2Mzc1NGRiNDQyNWU0ODc2ODYuLjJkZGJjNjk4MGJmZmY5
MDhmNDY1NzkzMGFjNWU0YjcyZjk3NjU3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTItMTEtMTQgIElzdGlhcXVlIEFobWVkICA8bGF6eWJveUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUHJvdmlkZSBwYWdlL3dpbmRvdyBjb29yZGluYXRlcyB0byBw
bHVnaW4ncyBsb2NhbCBjb29yZGluYXRlcyB0cmFuc2xhdGlvbiBpbiBXZWJQbHVnaW5Db250YWlu
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDIz
MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRp
dGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9u
YWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAg
ICogcHVibGljL1dlYlBsdWdpbkNvbnRhaW5lci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYlBsdWdpbkNvbnRhaW5lcik6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5l
ckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjp3aW5k
b3dUb0xvY2FsUG9pbnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViUGx1
Z2luQ29udGFpbmVySW1wbC5oOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFpbmVySW1wbCk6Cisg
ICAgICAgICogdGVzdHMvRmFrZVdlYlBsdWdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYlBsdWdpbjo6RmFrZVdlYlBsdWdpbik6CisgICAg
ICAgIChXZWJLaXQ6OkZha2VXZWJQbHVnaW46On5GYWtlV2ViUGx1Z2luKToKKyAgICAgICAgKFdl
YktpdDo6RmFrZVdlYlBsdWdpbjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkZha2VX
ZWJQbHVnaW46OmRlc3Ryb3kpOgorICAgICAgICAoV2ViS2l0OjpGYWtlV2ViUGx1Z2luOjptaW1l
VHlwZSk6CisgICAgICAgICogdGVzdHMvRmFrZVdlYlBsdWdpbi5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChGYWtlV2ViUGx1Z2luKToKKyAgICAgICAgKiB0ZXN0cy9GcmFt
ZVRlc3RIZWxwZXJzLmNwcDoKKyAgICAgICAgKiB0ZXN0cy9XZWJQbHVnaW5Db250YWluZXJUZXN0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFp
bmVyVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lclRlc3Q6OldlYlBs
dWdpbkNvbnRhaW5lclRlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJU
ZXN0OjpUZWFyRG93bik6CisgICAgICAgIChXZWJLaXQ6OmdldFdlYlBsdWdpbkNvbnRhaW5lcik6
CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvZGF0YS9wbHVnaW5f
Y29udGFpbmVyLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTE0ICBNaWtlIFJlZWQgIDxyZWVkQGdv
b2dsZS5jb20+CiAKICAgICAgICAgRHluYW1pY2FsbHkgY3JlYXRlIGNhbnZhcyBpbiBTZXR1cCgp
IHRvIGF2b2lkIGNhbGxpbmcgREVQUkVDQVRFRCBmdW5jdGlvbiBzZXREZXZpY2UoKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA0NzYwYzdmZTYxMmZlYjYzMzQwNWNiNTRlZDE4MjFi
MzVkYTlmNjA1Li5lMzQ4MjVhN2EyN2U0OWVjMmUxZjczMzQ1OTc2YWEzZDA3MTBjYzA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC03MTQsNiArNzE0LDcgQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIyBmdW5jdGlvbnMgZGVmaW5lZCBvbmx5IGluICFXRUJLSVRf
SU1QTEVNRU5UQVRJT04uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9B
c3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndGVzdHMvRXZlbnRMaXN0ZW5lclRlc3QuY3BwJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Rlc3RzL0Zha2VXZWJQbHVnaW4uY3BwJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9MZXZlbERCVGVzdC5jcHAn
LApAQCAtNzI4LDYgKzcyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0
ZXN0cy9XZWJJbWFnZVRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJQbHVnaW5Db250YWluZXJUZXN0LmNw
cCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYlZpZXdUZXN0LmNw
cCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnY29uZGl0aW9ucyc6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4
IDAwMjlkYTRiMDc1ZTA3M2NiZmQ2NDFiMDIwNGJjMDA4MDNjNDFmNDcuLmRkNWQ2Y2YxYjZiZThi
MGNiMDk3ZWYwZTI1NGZkMDEwM2VmM2QwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
aQpAQCAtNjQsNiArNjQsOCBAQAogICAgICAgICAgICAgJ3Rlc3RzL0RlZmVycmVkSW1hZ2VEZWNv
ZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9FdmVudExpc3RlbmVyVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rl
c3RzL0Zha2VXZWJQbHVnaW4uY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9GYWtlV2ViUGx1Z2lu
LmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0Zha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZS5o
JywKICAgICAgICAgICAgICd0ZXN0cy9GYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAgICAg
ICAgICAgICAndGVzdHMvRmlsdGVyT3BlcmF0aW9uc1Rlc3QuY3BwJywKQEAgLTExMyw2ICsxMTUs
NyBAQAogICAgICAgICAgICAgJ3Rlc3RzL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbFRlc3QuY3Bw
JywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwJywKKyAgICAgICAgICAg
ICd0ZXN0cy9XZWJQbHVnaW5Db250YWluZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMv
V2ViU29ja2V0RGVmbGF0ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJVUkxS
ZXF1ZXN0VGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViUGx1Z2luQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJQbHVnaW5Db250YWluZXIuaAppbmRleCBkZWJlMjYwMzgwMWI4ZmMxOGM3MjEzZDQ4ZTIxMDMw
OGJhY2VlYzMwLi5kMGE0ZGIxNTU0OGJhMjg0NThmNDAwMmY4ZWU4MjEwMWY0YjhkNGI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5Db250YWluZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5Db250YWluZXIu
aApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBXZWJQbHVnaW47CiBjbGFzcyBXZWJTdHJpbmc7CiBj
bGFzcyBXZWJVUkw7CiBjbGFzcyBXZWJVUkxSZXF1ZXN0Oworc3RydWN0IFdlYlBvaW50Owogc3Ry
dWN0IFdlYlJlY3Q7CiAKIGNsYXNzIFdlYlBsdWdpbkNvbnRhaW5lciB7CkBAIC0xMTEsNiArMTEy
LDkgQEAgcHVibGljOgogICAgIC8vIE5vdGlmaWVzIHdoZW4gdGhlIHBsdWdpbiBzdGFydHMvc3Rv
cHMgYWNjZXB0aW5nIHRvdWNoIGV2ZW50cy4KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNBY2NlcHRp
bmdUb3VjaEV2ZW50cyhib29sKSA9IDA7CiAKKyAgICAvLyBDb252ZXJ0cyB2aWV3J3Mgd2luZG93
IGNvb3JkaW5hdGVzIHRvIHBsdWdpbidzIGxvY2FsIGNvb3JkaW5hdGVzLgorICAgIHZpcnR1YWwg
V2ViUG9pbnQgd2luZG93VG9Mb2NhbFBvaW50KGNvbnN0IFdlYlBvaW50JikgPSAwOworCiAgICAg
dmlydHVhbCBXZWJQbHVnaW4qIHBsdWdpbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGx1
Z2luKFdlYlBsdWdpbiopID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAppbmRleCA3Mzg0MmExOWY4YmU1Y2Y0OTZj
OTgwZjUwODYzMTMwZGMwM2I4MWRjLi4yMzYyZWJiYTY1MjJkYjBkMmE0OTRhNGY1MDg0MDRlZWE1
MTVhMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5D
b250YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVn
aW5Db250YWluZXJJbXBsLmNwcApAQCAtNTMxLDYgKzUzMSwxNSBAQCB2b2lkIFdlYlBsdWdpbkNv
bnRhaW5lckltcGw6OnNldElzQWNjZXB0aW5nVG91Y2hFdmVudHMoYm9vbCBhY2NlcHRpbmdUb3Vj
aEV2ZW50cwogICAgICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPmRpZFJlbW92ZVRvdWNoRXZl
bnRIYW5kbGVyKCk7CiB9CiAKK1dlYlBvaW50IFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OndpbmRv
d1RvTG9jYWxQb2ludChjb25zdCBXZWJQb2ludCYgcG9pbnQpCit7CisgICAgU2Nyb2xsVmlldyog
dmlldyA9IHBhcmVudCgpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIHBvaW50Owor
ICAgIFdlYlBvaW50IHdpbmRvd1BvaW50ID0gdmlldy0+d2luZG93VG9Db250ZW50cyhwb2ludCk7
CisgICAgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChtX2VsZW1lbnQtPnJlbmRlcmVyKCktPmFic29s
dXRlVG9Mb2NhbChMYXlvdXRQb2ludCh3aW5kb3dQb2ludCksIFVzZVRyYW5zZm9ybXMgfCBTbmFw
T2Zmc2V0Rm9yVHJhbnNmb3JtcykpOworfQorCiB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsK
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgcGx1Z2luIHJlY2VpdmVzIHdpbmRvdyBnZW9tZXRy
eSBiZWZvcmUgZGF0YSwgb3IgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCmluZGV4IDg5ZjI5NzFiNzIzMjllMGZkNjY0Nzk3
NjU2ZmEwM2MyZDk0MTVmY2IuLjdlNzk0NDYwN2FmOTMwNWU3MGZlM2RjZWU3OGE5ZGVkZmNjODA5
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRh
aW5lckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250
YWluZXJJbXBsLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldE9wYXF1ZShib29sKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNSZWN0VG9wbW9zdChjb25zdCBX
ZWJSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHNldElzQWNjZXB0aW5nVG91Y2hFdmVudHMoYm9v
bCk7CisgICAgdmlydHVhbCBXZWJQb2ludCB3aW5kb3dUb0xvY2FsUG9pbnQoY29uc3QgV2ViUG9p
bnQmKTsKIAogICAgIC8vIFRoaXMgY2Fubm90IGJlIG51bGwuCiAgICAgV2ViUGx1Z2luKiBwbHVn
aW4oKSB7IHJldHVybiBtX3dlYlBsdWdpbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9GYWtlV2ViUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvRmFrZVdlYlBsdWdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRiZGQxNTAwMWE4N2EwNjZjOWRk
NDJhNjgyMzgwZjZjZDU2YTdiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRmFrZVdlYlBsdWdpbi5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJGYWtlV2ViUGx1Z2luLmgiCisKKyNpbmNsdWRlICJXZWJQbHVn
aW5QYXJhbXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitGYWtlV2ViUGx1Z2luOjpGYWtlV2ViUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgV2ViUGx1Z2luUGFyYW1zJiBwYXJhbXMpCisgICAgOiBtX2ZyYW1lKGZyYW1lKQorewor
fQorCitGYWtlV2ViUGx1Z2luOjp+RmFrZVdlYlBsdWdpbigpCit7Cit9CisKK2Jvb2wgRmFrZVdl
YlBsdWdpbjo6aW5pdGlhbGl6ZShXZWJQbHVnaW5Db250YWluZXIqIGNvbnRhaW5lcikKK3sKKyAg
ICBtX2NvbnRhaW5lciA9IGNvbnRhaW5lcjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBG
YWtlV2ViUGx1Z2luOjpkZXN0cm95KCkKK3sKKyAgICBtX2NvbnRhaW5lciA9IDA7CisgICAgbV9m
cmFtZSA9IDA7Cit9CisKK2NvbnN0IFdlYlN0cmluZyYgRmFrZVdlYlBsdWdpbjo6bWltZVR5cGUo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgV2ViU3RyaW5nLCBrVGVzdFdlYlBs
dWdpbk1pbWVUeXBlLCAoV2ViU3RyaW5nOjpmcm9tVVRGOCgiYXBwbGljYXRpb24veC13ZWJraXQt
dGVzdC13ZWJwbHVnaW4iKSkpOworICAgIHJldHVybiBrVGVzdFdlYlBsdWdpbk1pbWVUeXBlOwor
fQorCit9IC8vIG5hbWVzcGFjZSAgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0Zha2VXZWJQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvRmFrZVdlYlBsdWdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MGZiYzMxZjVhZDAzZDQzYTAxYWI2ODU1
MjQxZmIyZDNjZGMwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0Zha2VXZWJQbHVnaW4uaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGYWtlV2ViUGx1
Z2luX2gKKyNkZWZpbmUgRmFrZVdlYlBsdWdpbl9oCisKKyNpbmNsdWRlICJXZWJQbHVnaW4uaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRyYWdEYXRhOworY2xhc3MgV2ViRnJh
bWU7CitjbGFzcyBXZWJJbnB1dEV2ZW50OworY2xhc3MgV2ViUGx1Z2luQ29udGFpbmVyOworY2xh
c3MgV2ViVVJMOworY2xhc3MgV2ViVVJMUmVxdWVzdDsKK2NsYXNzIFdlYlVSTFJlc3BvbnNlOwor
CitjbGFzcyBGYWtlV2ViUGx1Z2luIDogcHVibGljIFdlYlBsdWdpbiB7CitwdWJsaWM6CisgICAg
RmFrZVdlYlBsdWdpbihXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJQbHVnaW5Q
YXJhbXMmKTsKKyAgICB2aXJ0dWFsIH5GYWtlV2ViUGx1Z2luKCk7CisKKyAgICBzdGF0aWMgY29u
c3QgV2ViU3RyaW5nJiBtaW1lVHlwZSgpOworCisgICAgLy8gV2ViUGx1Z2luIG1ldGhvZHM6Cisg
ICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXIqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgTlBPYmplY3QqIHNjcmlwdGFibGVPYmplY3QoKSBPVkVSUklERSB7IHJldHVybiAwOyB9Cisg
ICAgdmlydHVhbCBib29sIGNhblByb2Nlc3NEcmFnKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViS2l0OjpXZWJDYW52YXMqLCBjb25z
dCBXZWJLaXQ6OldlYlJlY3QmKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
R2VvbWV0cnkoY29uc3QgV2ViS2l0OjpXZWJSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYktpdDo6
V2ViUmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2ViUmVj
dD4mIGN1dE91dHNSZWN0cywgYm9vbCBpc1Zpc2libGUpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVGb2N1cyhib29sKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlVmlzaWJpbGl0eShib29sKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgYWNj
ZXB0c0lucHV0RXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViSW5wdXRFdmVudCYsIFdlYktp
dDo6V2ViQ3Vyc29ySW5mbyYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGhhbmRsZURyYWdTdGF0dXNVcGRhdGUoV2ViS2l0OjpXZWJEcmFnU3RhdHVzLCBjb25z
dCBXZWJLaXQ6OldlYkRyYWdEYXRhJiwgV2ViS2l0OjpXZWJEcmFnT3BlcmF0aW9uc01hc2ssIGNv
bnN0IFdlYktpdDo6V2ViUG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJLaXQ6OldlYlBvaW50JiBz
Y3JlZW5Qb3NpdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmKSBPVkVS
UklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5n
KGNvbnN0IFdlYktpdDo6V2ViVVJMRXJyb3ImKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoTG9hZGluZ0ZyYW1lUmVxdWVzdChjb25zdCBXZWJLaXQ6OldlYlVSTCYsIHZv
aWQqIG5vdGlmeURhdGEpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9h
ZGluZ0ZyYW1lUmVxdWVzdChjb25zdCBXZWJLaXQ6OldlYlVSTCYsIHZvaWQqIG5vdGlmeURhdGEs
IGNvbnN0IFdlYktpdDo6V2ViVVJMRXJyb3ImKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNQbGFjZWhvbGRlcigpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKK3ByaXZhdGU6
CisgICAgV2ViRnJhbWUqIG1fZnJhbWU7CisgICAgV2ViUGx1Z2luQ29udGFpbmVyKiBtX2NvbnRh
aW5lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRmFrZVdlYlBs
dWdpbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVz
dEhlbHBlcnMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxw
ZXJzLmNwcAppbmRleCBjM2U4YmYwOGRkYmY2ZDljODMzOTdiZmI5YzA4YThmMzY1OTU3NjI3Li4y
ZmM0ZjAxMGQxMzI4YjM5MDg1NWE1ZTY1ZGQ3NDQ0NDIwNGYzYmMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5jcHAKQEAgLTMxLDEwICsz
MSwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMu
aCIKIAorI2luY2x1ZGUgIkZha2VXZWJQbHVnaW4uaCIKICNpbmNsdWRlICJVUkxUZXN0SGVscGVy
cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlICJXZWJGcmFtZS5o
IgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViUGx1Z2luUGFyYW1z
LmgiCiAjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJp
bmcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxSZXF1ZXN0LmgiCkBAIC01NSw2ICs1Nywx
MiBAQCB2b2lkIGxvYWRGcmFtZShXZWJGcmFtZSogZnJhbWUsIGNvbnN0IHN0ZDo6c3RyaW5nJiB1
cmwpCiB9CiAKIGNsYXNzIFRlc3RXZWJGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVu
dCB7CisgICAgdmlydHVhbCBXZWJQbHVnaW4qIGNyZWF0ZVBsdWdpbihXZWJGcmFtZSogZnJhbWUs
IGNvbnN0IFdlYlBsdWdpblBhcmFtcyYgcGFyYW1zKSBPVkVSUklERQorICAgIHsKKyAgICAgICAg
aWYgKHBhcmFtcy5taW1lVHlwZSA9PSBXZWJLaXQ6OkZha2VXZWJQbHVnaW46Om1pbWVUeXBlKCkp
CisgICAgICAgICAgICByZXR1cm4gbmV3IEZha2VXZWJQbHVnaW4oZnJhbWUsIHBhcmFtcyk7Cisg
ICAgICAgIHJldHVybiBXZWJGcmFtZUNsaWVudDo6Y3JlYXRlUGx1Z2luKGZyYW1lLCBwYXJhbXMp
OworICAgIH0KIH07CiAKIHN0YXRpYyBXZWJGcmFtZUNsaWVudCogZGVmYXVsdFdlYkZyYW1lQ2xp
ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGx1Z2lu
Q29udGFpbmVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBsdWdp
bkNvbnRhaW5lclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlMWUyY2YyYjU0NjdiZGIwN2ZkNmEwNTIx
ODc0NmUzZTA2MmExMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYlBsdWdpbkNvbnRhaW5lclRlc3QuY3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lckltcGwuaCIKKworI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZVRlc3RIZWxwZXJzLmgiCisjaW5jbHVk
ZSAiVVJMVGVzdEhlbHBlcnMuaCIKKyNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgorI2luY2x1ZGUg
IldlYkVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYlNldHRp
bmdzLmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCisj
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRf
c3VwcG9ydC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgeworCitj
bGFzcyBXZWJQbHVnaW5Db250YWluZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVi
bGljOgorICAgIFdlYlBsdWdpbkNvbnRhaW5lclRlc3QoKQorICAgICAgICA6IG1fYmFzZVVSTCgi
aHR0cDovL3d3dy50ZXN0LmNvbS8iKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKQorICAgIHsKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxN
b2NrZWRVUkxzKCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgc3RkOjpzdHJpbmcgbV9iYXNl
VVJMOworfTsKKworV2ViUGx1Z2luQ29udGFpbmVySW1wbCogZ2V0V2ViUGx1Z2luQ29udGFpbmVy
KFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFdlYlN0cmluZyYgaWQpCit7CisgICAgUmVmUHRyPFdl
YkNvcmU6Ok5vZGU+IG5vZGUgPSBzdGF0aWNfY2FzdDxQYXNzUmVmUHRyPFdlYkNvcmU6Ok5vZGU+
ID4od2ViVmlldy0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoaWQpKTsK
KyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbm9kZS0+aGFzVGFn
TmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6Om9iamVjdFRhZykgJiYgIW5vZGUtPmhhc1RhZ05hbWUo
V2ViQ29yZTo6SFRNTE5hbWVzOjplbWJlZFRhZykpCisgICAgICAgIHJldHVybiAwOworCisgICAg
V2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAociAm
JiByLT5pc1dpZGdldCgpKSB7CisgICAgICAgIFdlYkNvcmU6OldpZGdldCogd2lkZ2V0ID0gV2Vi
Q29yZTo6dG9SZW5kZXJXaWRnZXQociktPndpZGdldCgpOworICAgICAgICBpZiAod2lkZ2V0ICYm
IHdpZGdldC0+aXNQbHVnaW5Db250YWluZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxXZWJQbHVnaW5Db250YWluZXJJbXBsKj4od2lkZ2V0KTsKKyAgICB9CisgICAgcmV0dXJu
IDA7Cit9CisKK1RFU1RfRihXZWJQbHVnaW5Db250YWluZXJUZXN0LCBXaW5kb3dUb0xvY2FsUG9p
bnRUZXN0KQoreworICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNl
VVJMKFdlYlN0cmluZzo6ZnJvbVVURjgobV9iYXNlVVJMLmNfc3RyKCkpLCBXZWJTdHJpbmc6OmZy
b21VVEY4KCJwbHVnaW5fY29udGFpbmVyLmh0bWwiKSk7CisgICAgV2ViVmlldyogd2ViVmlldyA9
IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJwbHVn
aW5fY29udGFpbmVyLmh0bWwiLCB0cnVlKTsKKyAgICBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+
KHdlYlZpZXcpLT5zZXR0aW5ncygpLT5zZXRQbHVnaW5zRW5hYmxlZCh0cnVlKTsKKyAgICB3ZWJW
aWV3LT5yZXNpemUoV2ViU2l6ZSgzMDAsIDMwMCkpOworICAgIHdlYlZpZXctPmxheW91dCgpOwor
ICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBBU1NFUlQo
d2ViVmlldyk7CisKKyAgICBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXJP
bmUgPSBnZXRXZWJQbHVnaW5Db250YWluZXIod2ViVmlldywgV2ViU3RyaW5nOjpmcm9tVVRGOCgi
dHJhbnNsYXRlZC1wbHVnaW4iKSk7CisgICAgQVNTRVJUKHBsdWdpbkNvbnRhaW5lck9uZSk7Cisg
ICAgV2ViUG9pbnQgcG9pbnQxID0gcGx1Z2luQ29udGFpbmVyT25lLT53aW5kb3dUb0xvY2FsUG9p
bnQoV2ViUG9pbnQoMTAsIDEwKSk7CisgICAgQVNTRVJUX0VRKDAsIHBvaW50MS54KTsKKyAgICBB
U1NFUlRfRVEoMCwgcG9pbnQxLnkpOworICAgIFdlYlBvaW50IHBvaW50MiA9IHBsdWdpbkNvbnRh
aW5lck9uZS0+d2luZG93VG9Mb2NhbFBvaW50KFdlYlBvaW50KDEwMCwgMTAwKSk7CisgICAgQVNT
RVJUX0VRKDkwLCBwb2ludDIueCk7CisgICAgQVNTRVJUX0VRKDkwLCBwb2ludDIueSk7CisKKyAg
ICBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXJUd28gPSBnZXRXZWJQbHVn
aW5Db250YWluZXIod2ViVmlldywgV2ViU3RyaW5nOjpmcm9tVVRGOCgicm90YXRlZC1wbHVnaW4i
KSk7CisgICAgQVNTRVJUKHBsdWdpbkNvbnRhaW5lclR3byk7CisgICAgV2ViUG9pbnQgcG9pbnQz
ID0gcGx1Z2luQ29udGFpbmVyVHdvLT53aW5kb3dUb0xvY2FsUG9pbnQoV2ViUG9pbnQoMCwgMTAp
KTsKKyAgICBBU1NFUlRfRVEoMTAsIHBvaW50My54KTsKKyAgICBBU1NFUlRfRVEoMCwgcG9pbnQz
LnkpOworICAgIFdlYlBvaW50IHBvaW50NCA9IHBsdWdpbkNvbnRhaW5lclR3by0+d2luZG93VG9M
b2NhbFBvaW50KFdlYlBvaW50KC0xMCwgMTApKTsKKyAgICBBU1NFUlRfRVEoMTAsIHBvaW50NC54
KTsKKyAgICBBU1NFUlRfRVEoMTAsIHBvaW50NC55KTsKKworICAgIHdlYlZpZXctPmNsb3NlKCk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9w
bHVnaW5fY29udGFpbmVyLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEv
cGx1Z2luX2NvbnRhaW5lci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxM2NhODA0ZTg3NmU1MDM3Nzg0Njkx
YzM1N2YxYjgyY2M2ODBjODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL2RhdGEvcGx1Z2luX2NvbnRhaW5lci5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4K
KyAgICBib2R5IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgPG9iamVjdCBpZD0icm90YXRlZC1wbHVnaW4iCisgICAgICBzdHlsZT0iLXdl
YmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAw
OyBsZWZ0OiAwOyAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAgMDsiCisgICAgICB0eXBlPSJh
cHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LXdlYnBsdWdpbiIKKyAgICAgIGJvcmRlcj0wCisgICAg
ICB3aWR0aD0iNDAiCisgICAgICBoZWlnaHQ9IjQwIj4KKyAgPC9vYmplY3Q+CisgIDxvYmplY3Qg
aWQ9InRyYW5zbGF0ZWQtcGx1Z2luIgorICAgICAgYm9yZGVyPTAKKyAgICAgIHN0eWxlPSItd2Vi
a2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDEwcHgsIDEwcHgpOyBwb3NpdGlvbjogYWJzb2x1dGU7
IHRvcDogMDsgbGVmdDogMDsiCisgICAgICB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0
LXdlYnBsdWdpbiIKKyAgICAgIHdpZHRoPSI0MCIKKyAgICAgIGhlaWdodD0iNDAiPgorICA8L29i
amVjdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174501</attachid>
            <date>2012-11-15 12:52:50 -0800</date>
            <delta_ts>2012-11-15 15:02:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102339-20121115155047.patch</filename>
            <type>text/plain</type>
            <size>22500</size>
            <attacher>lazyboy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggY2VjMTgzYzE5YmVlNWNkZmU0ZTk2ODYzNzU0
ZGI0NDI1ZTQ4NzY4Ni4uMDQ3Zjg2N2Q1ZmY0OWM3ZDcxYTdhNTk1YjZhMjRkYjRhMGFlMDQ4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMi0xMS0xNCAg
SXN0aWFxdWUgQWhtZWQgIDxsYXp5Ym95QGNocm9taXVtLm9yZz4KKworICAgICAgICBQcm92aWRl
IHBhZ2Uvd2luZG93IGNvb3JkaW5hdGVzIHRvIHBsdWdpbidzIGxvY2FsIGNvb3JkaW5hdGVzIHRy
YW5zbGF0aW9uIGluIFdlYlBsdWdpbkNvbnRhaW5lci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjMzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHdpbGwgYWxsb3cgY29udmVydGlu
ZyBhIHBhZ2UncyB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gcGx1Z2lucydzIGxvY2FsIGNvb3JkaW5h
dGVzLAorICAgICAgICB0YWtpbmcgQ1NTIHRyYW5zZm9ybWF0aW9ucyBpbnRvIGFjY291bnQuIEVt
YmVkZGVyIHBhZ2Ugb2YgdGhlIHBsdWdpbiBjYW4gdXNlIHRoaXMgaW5mb3JtYXRpb24KKyAgICAg
ICAgZm9yIHRhcmdldHRpbmcgZWxlbWVudHMgaW5zaWRlIHRoZSBwbHVnaW4gKGUuZy4gZGV2dG9v
bHMgY2FuIGluc3BlY3QgYSBzcGVjaWZpYyBlbGVtZW50IGF0IHRoZQorICAgICAgICBsb2NhbCBj
b29yZGluYXRlIHBvc2l0aW9uIGluc2lkZSBwbHVnaW4pLgorCisgICAgICAgICogV2ViS2l0Lmd5
cDoKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2ViUGx1Z2luQ29u
dGFpbmVyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFpbmVy
KToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OndpbmRvd1RvTG9jYWxQb2ludCk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmg6Cisg
ICAgICAgIChXZWJQbHVnaW5Db250YWluZXJJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9GYWtlV2Vi
UGx1Z2luLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpG
YWtlV2ViUGx1Z2luOjpGYWtlV2ViUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYlBs
dWdpbjo6fkZha2VXZWJQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpGYWtlV2ViUGx1Z2luOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYlBsdWdpbjo6ZGVzdHJveSk6Cisg
ICAgICAgIChXZWJLaXQ6OkZha2VXZWJQbHVnaW46Om1pbWVUeXBlKToKKyAgICAgICAgKiB0ZXN0
cy9GYWtlV2ViUGx1Z2luLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEZh
a2VXZWJQbHVnaW4pOgorICAgICAgICAqIHRlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwOgorICAg
ICAgICAqIHRlc3RzL1dlYlBsdWdpbkNvbnRhaW5lclRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJQbHVnaW5Db250YWluZXJUZXN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGx1Z2luQ29udGFpbmVyVGVzdDo6V2ViUGx1Z2luQ29udGFpbmVyVGVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lclRlc3Q6OlRlYXJEb3duKToKKyAgICAg
ICAgKFdlYktpdDo6Z2V0V2ViUGx1Z2luQ29udGFpbmVyKToKKyAgICAgICAgKFdlYktpdDo6VEVT
VF9GKToKKyAgICAgICAgKiB0ZXN0cy9kYXRhL3BsdWdpbl9jb250YWluZXIuaHRtbDogQWRkZWQu
CisKIDIwMTItMTEtMTQgIE1pa2UgUmVlZCAgPHJlZWRAZ29vZ2xlLmNvbT4KIAogICAgICAgICBE
eW5hbWljYWxseSBjcmVhdGUgY2FudmFzIGluIFNldHVwKCkgdG8gYXZvaWQgY2FsbGluZyBERVBS
RUNBVEVEIGZ1bmN0aW9uIHNldERldmljZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmlu
ZGV4IDQ3NjBjN2ZlNjEyZmViNjMzNDA1Y2I1NGVkMTgyMWIzNWRhOWY2MDUuLmUzNDgyNWE3YTI3
ZTQ5ZWMyZTFmNzMzNDU5NzZhYTNkMDcxMGNjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKQEAgLTcxNCw2ICs3MTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
IGZ1bmN0aW9ucyBkZWZpbmVkIG9ubHkgaW4gIVdFQktJVF9JTVBMRU1FTlRBVElPTi4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0
LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9FdmVudExpc3Rl
bmVyVGVzdC5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvRmFr
ZVdlYlBsdWdpbi5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMv
RnJhbWVUZXN0SGVscGVycy5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
dGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Rlc3RzL0xldmVsREJUZXN0LmNwcCcsCkBAIC03MjgsNiArNzI5LDcgQEAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkltYWdlVGVzdC5jcHAn
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1Nlcmlh
bGl6ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9X
ZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3Rlc3RzL1dlYlBsdWdpbkNvbnRhaW5lclRlc3QuY3BwJwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAndGVzdHMvV2ViVmlld1Rlc3QuY3BwJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzog
WwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggMDAyOWRhNGIwNzVlMDczY2JmZDY0
MWIwMjA0YmMwMDgwM2M0MWY0Ny4uZGQ1ZDZjZjFiNmJlOGIwY2IwOTdlZjBlMjU0ZmQwMTAzZWYz
ZDA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC02NCw2ICs2NCw4IEBACiAg
ICAgICAgICAgICAndGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0V2ZW50
TGlzdGVuZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvRmFrZVdlYlBsdWdpbi5jcHAn
LAorICAgICAgICAgICAgJ3Rlc3RzL0Zha2VXZWJQbHVnaW4uaCcsCiAgICAgICAgICAgICAndGVz
dHMvRmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlLmgnLAogICAgICAgICAgICAgJ3Rlc3Rz
L0Zha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oJywKICAgICAgICAgICAgICd0ZXN0cy9GaWx0ZXJP
cGVyYXRpb25zVGVzdC5jcHAnLApAQCAtMTEzLDYgKzExNSw3IEBACiAgICAgICAgICAgICAndGVz
dHMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3Rz
L1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlBh
Z2VTZXJpYWxpemVyVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL1dlYlBsdWdpbkNvbnRh
aW5lclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVz
dC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlVSTFJlcXVlc3RUZXN0LmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5Db250YWluZXIu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkNvbnRhaW5lci5oCmlu
ZGV4IGRlYmUyNjAzODAxYjhmYzE4YzcyMTNkNDhlMjEwMzA4YmFjZWVjMzAuLmQwYTRkYjE1NTQ4
YmEyODQ1OGY0MDAyZjhlZTgyMTAxZjRiOGQ0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkNvbnRhaW5lci5oCkBAIC00MCw2ICs0MCw3IEBAIGNs
YXNzIFdlYlBsdWdpbjsKIGNsYXNzIFdlYlN0cmluZzsKIGNsYXNzIFdlYlVSTDsKIGNsYXNzIFdl
YlVSTFJlcXVlc3Q7CitzdHJ1Y3QgV2ViUG9pbnQ7CiBzdHJ1Y3QgV2ViUmVjdDsKIAogY2xhc3Mg
V2ViUGx1Z2luQ29udGFpbmVyIHsKQEAgLTExMSw2ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgLy8g
Tm90aWZpZXMgd2hlbiB0aGUgcGx1Z2luIHN0YXJ0cy9zdG9wcyBhY2NlcHRpbmcgdG91Y2ggZXZl
bnRzLgogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0FjY2VwdGluZ1RvdWNoRXZlbnRzKGJvb2wpID0g
MDsKIAorICAgIC8vIENvbnZlcnRzIHZpZXcncyB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gcGx1Z2lu
J3MgbG9jYWwgY29vcmRpbmF0ZXMuCisgICAgdmlydHVhbCBXZWJQb2ludCB3aW5kb3dUb0xvY2Fs
UG9pbnQoY29uc3QgV2ViUG9pbnQmKSA9IDA7CisKICAgICB2aXJ0dWFsIFdlYlBsdWdpbiogcGx1
Z2luKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQbHVnaW4oV2ViUGx1Z2luKikgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCAxOTM2
NDc2ZjNhZTFhMjAxNDAzM2RjM2ZkYjdlMGNhYjVjYThjN2YyLi40NTk4MGNmYTViMDUxMmVkMmIy
NTJiZjk5YmUwMWU4YTljNWIwNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAKQEAgLTMwNCw3ICszMDQsNyBAQCBzdGF0aWMgbG9uZyBsb25nIGdlbmVy
YXRlRnJhbWVJZGVudGlmaWVyKCkKICAgICByZXR1cm4gKytuZXh0OwogfQogCi1zdGF0aWMgV2Vi
UGx1Z2luQ29udGFpbmVySW1wbCogcGx1Z2luQ29udGFpbmVyRnJvbU5vZGUoY29uc3QgV2ViTm9k
ZSYgbm9kZSkKK1dlYlBsdWdpbkNvbnRhaW5lckltcGwqIFdlYkZyYW1lSW1wbDo6cGx1Z2luQ29u
dGFpbmVyRnJvbU5vZGUoY29uc3QgV2ViTm9kZSYgbm9kZSkKIHsKICAgICBpZiAobm9kZS5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5oCmluZGV4IDcyMmVjZjU1OTc0NTBlY2U1NGI2ZGU0MmFiODhhMTAzOGZlYzFkMWEu
LjEwNGM5ZmIyZjg3OWI4NGM4YjYxZTE5ZTljZjdjMzlkN2VlZWFlZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC0yNjMsNiArMjYzLDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBXZWJGcmFtZUltcGwqIGZyb21GcmFtZShXZWJDb3JlOjpGcmFtZSogZnJh
bWUpOwogICAgIHN0YXRpYyBXZWJGcmFtZUltcGwqIGZyb21GcmFtZU93bmVyRWxlbWVudChXZWJD
b3JlOjpFbGVtZW50KiBlbGVtZW50KTsKIAorICAgIHN0YXRpYyBXZWJQbHVnaW5Db250YWluZXJJ
bXBsKiBwbHVnaW5Db250YWluZXJGcm9tTm9kZShjb25zdCBXZWJOb2RlJik7CisKICAgICAvLyBJ
ZiB0aGUgZnJhbWUgaG9zdHMgYSBQbHVnaW5Eb2N1bWVudCwgdGhpcyBtZXRob2QgcmV0dXJucyB0
aGUgV2ViUGx1Z2luQ29udGFpbmVySW1wbAogICAgIC8vIHRoYXQgaG9zdHMgdGhlIHBsdWdpbi4K
ICAgICBzdGF0aWMgV2ViUGx1Z2luQ29udGFpbmVySW1wbCogcGx1Z2luQ29udGFpbmVyRnJvbUZy
YW1lKFdlYkNvcmU6OkZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4IDczODQyYTE5ZjhiZTVjZjQ5NmM5
ODBmNTA4NjMxMzBkYzAzYjgxZGMuLjIzNjJlYmJhNjUyMmRiMGQyYTQ5NGE0ZjUwODQwNGVlYTUx
NWEwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNv
bnRhaW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdp
bkNvbnRhaW5lckltcGwuY3BwCkBAIC01MzEsNiArNTMxLDE1IEBAIHZvaWQgV2ViUGx1Z2luQ29u
dGFpbmVySW1wbDo6c2V0SXNBY2NlcHRpbmdUb3VjaEV2ZW50cyhib29sIGFjY2VwdGluZ1RvdWNo
RXZlbnRzCiAgICAgICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZGlkUmVtb3ZlVG91Y2hFdmVu
dEhhbmRsZXIoKTsKIH0KIAorV2ViUG9pbnQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6d2luZG93
VG9Mb2NhbFBvaW50KGNvbnN0IFdlYlBvaW50JiBwb2ludCkKK3sKKyAgICBTY3JvbGxWaWV3KiB2
aWV3ID0gcGFyZW50KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gcG9pbnQ7Cisg
ICAgV2ViUG9pbnQgd2luZG93UG9pbnQgPSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KTsK
KyAgICByZXR1cm4gcm91bmRlZEludFBvaW50KG1fZWxlbWVudC0+cmVuZGVyZXIoKS0+YWJzb2x1
dGVUb0xvY2FsKExheW91dFBvaW50KHdpbmRvd1BvaW50KSwgVXNlVHJhbnNmb3JtcyB8IFNuYXBP
ZmZzZXRGb3JUcmFuc2Zvcm1zKSk7Cit9CisKIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewog
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBwbHVnaW4gcmVjZWl2ZXMgd2luZG93IGdlb21ldHJ5
IGJlZm9yZSBkYXRhLCBvciBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKaW5kZXggODlmMjk3MWI3MjMyOWUwZmQ2NjQ3OTc2
NTZmYTAzYzJkOTQxNWZjYi4uN2U3OTQ0NjA3YWY5MzA1ZTcwZmUzZGNlZTc4YTlkZWRmY2M4MDlk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFp
bmVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRh
aW5lckltcGwuaApAQCAtMTEzLDYgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0T3BhcXVlKGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBpc1JlY3RUb3Btb3N0KGNvbnN0IFdl
YlJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNBY2NlcHRpbmdUb3VjaEV2ZW50cyhib29s
KTsKKyAgICB2aXJ0dWFsIFdlYlBvaW50IHdpbmRvd1RvTG9jYWxQb2ludChjb25zdCBXZWJQb2lu
dCYpOwogCiAgICAgLy8gVGhpcyBjYW5ub3QgYmUgbnVsbC4KICAgICBXZWJQbHVnaW4qIHBsdWdp
bigpIHsgcmV0dXJuIG1fd2ViUGx1Z2luOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0Zha2VXZWJQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9GYWtlV2ViUGx1Z2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNGJkZDE1MDAxYTg3YTA2NmM5ZGQ0
MmE2ODIzODBmNmNkNTZhN2JjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9GYWtlV2ViUGx1Z2luLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29w
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
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkZha2VXZWJQbHVnaW4uaCIKKworI2luY2x1ZGUgIldlYlBsdWdp
blBhcmFtcy5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK0Zha2VXZWJQbHVnaW46OkZha2VXZWJQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBj
b25zdCBXZWJQbHVnaW5QYXJhbXMmIHBhcmFtcykKKyAgICA6IG1fZnJhbWUoZnJhbWUpCit7Cit9
CisKK0Zha2VXZWJQbHVnaW46On5GYWtlV2ViUGx1Z2luKCkKK3sKK30KKworYm9vbCBGYWtlV2Vi
UGx1Z2luOjppbml0aWFsaXplKFdlYlBsdWdpbkNvbnRhaW5lciogY29udGFpbmVyKQoreworICAg
IG1fY29udGFpbmVyID0gY29udGFpbmVyOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEZh
a2VXZWJQbHVnaW46OmRlc3Ryb3koKQoreworICAgIG1fY29udGFpbmVyID0gMDsKKyAgICBtX2Zy
YW1lID0gMDsKK30KKworY29uc3QgV2ViU3RyaW5nJiBGYWtlV2ViUGx1Z2luOjptaW1lVHlwZSgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBXZWJTdHJpbmcsIGtUZXN0V2ViUGx1
Z2luTWltZVR5cGUsIChXZWJTdHJpbmc6OmZyb21VVEY4KCJhcHBsaWNhdGlvbi94LXdlYmtpdC10
ZXN0LXdlYnBsdWdpbiIpKSk7CisgICAgcmV0dXJuIGtUZXN0V2ViUGx1Z2luTWltZVR5cGU7Cit9
CisKK30gLy8gbmFtZXNwYWNlICBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRmFrZVdlYlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9GYWtlV2ViUGx1Z2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQwZmJjMzFmNWFkMDNkNDNhMDFhYjY4NTUy
NDFmYjJkM2NkYzBhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvRmFrZVdlYlBsdWdpbi5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZha2VXZWJQbHVn
aW5faAorI2RlZmluZSBGYWtlV2ViUGx1Z2luX2gKKworI2luY2x1ZGUgIldlYlBsdWdpbi5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRHJhZ0RhdGE7CitjbGFzcyBXZWJGcmFt
ZTsKK2NsYXNzIFdlYklucHV0RXZlbnQ7CitjbGFzcyBXZWJQbHVnaW5Db250YWluZXI7CitjbGFz
cyBXZWJVUkw7CitjbGFzcyBXZWJVUkxSZXF1ZXN0OworY2xhc3MgV2ViVVJMUmVzcG9uc2U7CisK
K2NsYXNzIEZha2VXZWJQbHVnaW4gOiBwdWJsaWMgV2ViUGx1Z2luIHsKK3B1YmxpYzoKKyAgICBG
YWtlV2ViUGx1Z2luKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlBsdWdpblBh
cmFtcyYpOworICAgIHZpcnR1YWwgfkZha2VXZWJQbHVnaW4oKTsKKworICAgIHN0YXRpYyBjb25z
dCBXZWJTdHJpbmcmIG1pbWVUeXBlKCk7CisKKyAgICAvLyBXZWJQbHVnaW4gbWV0aG9kczoKKyAg
ICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lciopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBOUE9iamVjdCogc2NyaXB0YWJsZU9iamVjdCgpIE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgY2FuUHJvY2Vzc0RyYWcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJLaXQ6OldlYkNhbnZhcyosIGNvbnN0
IFdlYktpdDo6V2ViUmVjdCYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVH
ZW9tZXRyeShjb25zdCBXZWJLaXQ6OldlYlJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViS2l0OjpX
ZWJSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJSZWN0
PiYgY3V0T3V0c1JlY3RzLCBib29sIGlzVmlzaWJsZSkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUZvY3VzKGJvb2wpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVWaXNpYmlsaXR5KGJvb2wpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9vbCBhY2Nl
cHRzSW5wdXRFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIGhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViS2l0OjpXZWJJbnB1dEV2ZW50JiwgV2ViS2l0
OjpXZWJDdXJzb3JJbmZvJikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaGFuZGxlRHJhZ1N0YXR1c1VwZGF0ZShXZWJLaXQ6OldlYkRyYWdTdGF0dXMsIGNvbnN0
IFdlYktpdDo6V2ViRHJhZ0RhdGEmLCBXZWJLaXQ6OldlYkRyYWdPcGVyYXRpb25zTWFzaywgY29u
c3QgV2ViS2l0OjpXZWJQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYktpdDo6V2ViUG9pbnQmIHNj
cmVlblBvc2l0aW9uKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViS2l0OjpXZWJVUkxSZXNwb25zZSYpIE9WRVJS
SURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmco
Y29uc3QgV2ViS2l0OjpXZWJVUkxFcnJvciYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nRnJhbWVSZXF1ZXN0KGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgdm9p
ZCogbm90aWZ5RGF0YSkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2Fk
aW5nRnJhbWVSZXF1ZXN0KGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgdm9pZCogbm90aWZ5RGF0YSwg
Y29uc3QgV2ViS2l0OjpXZWJVUkxFcnJvciYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc1BsYWNlaG9sZGVyKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworcHJpdmF0ZToK
KyAgICBXZWJGcmFtZSogbV9mcmFtZTsKKyAgICBXZWJQbHVnaW5Db250YWluZXIqIG1fY29udGFp
bmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBGYWtlV2ViUGx1
Z2luX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0
SGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBl
cnMuY3BwCmluZGV4IGMzZThiZjA4ZGRiZjZkOWM4MzM5N2JmYjljMDhhOGYzNjU5NTc2MjcuLjY0
MTIxMjQ1YWJkOWMyODFiZGUwZGMxYWViYTllNmEzODhmOTBjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmNwcApAQCAtMzQsNyArMzQs
NiBAQAogI2luY2x1ZGUgIlVSTFRlc3RIZWxwZXJzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCi0jaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmlu
Zy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTFJlcXVlc3QuaCIKQEAgLTU0LDkgKzUzLDYg
QEAgdm9pZCBsb2FkRnJhbWUoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYgdXJs
KQogICAgIGZyYW1lLT5sb2FkUmVxdWVzdCh1cmxSZXF1ZXN0KTsKIH0KIAotY2xhc3MgVGVzdFdl
YkZyYW1lQ2xpZW50IDogcHVibGljIFdlYkZyYW1lQ2xpZW50IHsKLX07Ci0KIHN0YXRpYyBXZWJG
cmFtZUNsaWVudCogZGVmYXVsdFdlYkZyYW1lQ2xpZW50KCkKIHsKICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFRlc3RXZWJGcmFtZUNsaWVudCwgY2xpZW50LCAoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5oCmluZGV4IGJmYjU3YjY3Y2QyOTAx
MGU4NjdjZDJiZTg1ZjEzNGVmY2ViN2Q5NGUuLjVlOTU0ODVmMmU2NGFkNjNlMzE3Mzk1MTg0Nzc0
M2E3ZDFhNGQwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJh
bWVUZXN0SGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVU
ZXN0SGVscGVycy5oCkBAIC0zMSwxNyArMzEsMjAgQEAKICNpZm5kZWYgRnJhbWVUZXN0SGVscGVy
c19oCiAjZGVmaW5lIEZyYW1lVGVzdEhlbHBlcnNfaAogCisjaW5jbHVkZSAiV2ViRnJhbWVDbGll
bnQuaCIKICNpbmNsdWRlIDxzdHJpbmc+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBX
ZWJGcmFtZTsKLWNsYXNzIFdlYkZyYW1lQ2xpZW50OwogY2xhc3MgV2ViVmlldzsKIGNsYXNzIFdl
YlZpZXdDbGllbnQ7CiAKIG5hbWVzcGFjZSBGcmFtZVRlc3RIZWxwZXJzIHsKIAorY2xhc3MgVGVz
dFdlYkZyYW1lQ2xpZW50IDogcHVibGljIFdlYkZyYW1lQ2xpZW50IHsKK307CisKIHZvaWQgbG9h
ZEZyYW1lKFdlYkZyYW1lKiwgY29uc3Qgc3RkOjpzdHJpbmcmIHVybCk7CiAKIFdlYlZpZXcqIGNy
ZWF0ZVdlYlZpZXdBbmRMb2FkKGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmwsIGJvb2wgZW5hYmxlSmF2
YXNjcmlwdCA9IGZhbHNlLCBXZWJGcmFtZUNsaWVudCogPSAwLCBXZWJWaWV3Q2xpZW50KiA9IDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQbHVnaW5Db250
YWluZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGx1Z2luQ29u
dGFpbmVyVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjMzODM1MjExMGJjOTA4ZjM1NjFmMTg0MzYzNmQ0
ZGU2ZjUwOGJkYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvV2ViUGx1Z2luQ29udGFpbmVyVGVzdC5jcHAKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVyLmgiCisKKyNpbmNsdWRlICJF
bGVtZW50LmgiCisjaW5jbHVkZSAiRmFrZVdlYlBsdWdpbi5oIgorI2luY2x1ZGUgIkZyYW1lVGVz
dEhlbHBlcnMuaCIKKyNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgorI2luY2x1ZGUgIldlYkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgi
CisjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIK
KyNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXJJbXBsLmgiCisjaW5jbHVkZSAiV2ViUGx1Z2lu
UGFyYW1zLmgiCisjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJWaWV3Lmgi
CisjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2lu
Y2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFdlYlBsdWdpbkNvbnRhaW5lclRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgV2ViUGx1Z2luQ29udGFpbmVy
VGVzdCgpCisgICAgICAgIDogbV9iYXNlVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tLyIpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAgICAgICB3
ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAgICB9CisKK3Byb3Rl
Y3RlZDoKKyAgICBzdGQ6OnN0cmluZyBtX2Jhc2VVUkw7Cit9OworCitjbGFzcyBUZXN0UGx1Z2lu
V2ViRnJhbWVDbGllbnQgOiBwdWJsaWMgRnJhbWVUZXN0SGVscGVyczo6VGVzdFdlYkZyYW1lQ2xp
ZW50IHsKKyAgICB2aXJ0dWFsIFdlYlBsdWdpbiogY3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgV2ViUGx1Z2luUGFyYW1zJiBwYXJhbXMpIE9WRVJSSURFCisgICAgeworICAgICAg
ICBpZiAocGFyYW1zLm1pbWVUeXBlID09IFdlYktpdDo6RmFrZVdlYlBsdWdpbjo6bWltZVR5cGUo
KSkKKyAgICAgICAgICAgIHJldHVybiBuZXcgRmFrZVdlYlBsdWdpbihmcmFtZSwgcGFyYW1zKTsK
KyAgICAgICAgcmV0dXJuIFdlYkZyYW1lQ2xpZW50OjpjcmVhdGVQbHVnaW4oZnJhbWUsIHBhcmFt
cyk7CisgICAgfQorfTsKKworc3RhdGljIFdlYkZyYW1lQ2xpZW50KiBwbHVnaW5XZWJGcmFtZUNs
aWVudCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUZXN0UGx1Z2luV2ViRnJhbWVDbGll
bnQsIHBsdWdpbkNsaWVudCwgKCkpOworICAgIHJldHVybiAmcGx1Z2luQ2xpZW50OworfQorCitX
ZWJQbHVnaW5Db250YWluZXJJbXBsKiBnZXRXZWJQbHVnaW5Db250YWluZXIoV2ViVmlldyogd2Vi
VmlldywgY29uc3QgV2ViU3RyaW5nJiBpZCkKK3sKKyAgICBXZWJFbGVtZW50IGVsZW1lbnQgPSB3
ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZChpZCk7CisgICAg
cmV0dXJuIFdlYkZyYW1lSW1wbDo6cGx1Z2luQ29udGFpbmVyRnJvbU5vZGUoZWxlbWVudCk7Cit9
CisKK1RFU1RfRihXZWJQbHVnaW5Db250YWluZXJUZXN0LCBXaW5kb3dUb0xvY2FsUG9pbnRUZXN0
KQoreworICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKFdl
YlN0cmluZzo6ZnJvbVVURjgobV9iYXNlVVJMLmNfc3RyKCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4
KCJwbHVnaW5fY29udGFpbmVyLmh0bWwiKSk7CisgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1l
VGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJwbHVnaW5fY29u
dGFpbmVyLmh0bWwiLCB0cnVlLCBwbHVnaW5XZWJGcmFtZUNsaWVudCgpKTsKKyAgICBBU1NFUlQo
d2ViVmlldyk7CisgICAgc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPih3ZWJWaWV3KS0+c2V0dGlu
Z3MoKS0+c2V0UGx1Z2luc0VuYWJsZWQodHJ1ZSk7CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNp
emUoMzAwLCAzMDApKTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKyAgICB3ZWJraXRfc3VwcG9y
dDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisKKyAgICBXZWJQbHVnaW5Db250YWluZXJJbXBs
KiBwbHVnaW5Db250YWluZXJPbmUgPSBnZXRXZWJQbHVnaW5Db250YWluZXIod2ViVmlldywgV2Vi
U3RyaW5nOjpmcm9tVVRGOCgidHJhbnNsYXRlZC1wbHVnaW4iKSk7CisgICAgQVNTRVJUKHBsdWdp
bkNvbnRhaW5lck9uZSk7CisgICAgV2ViUG9pbnQgcG9pbnQxID0gcGx1Z2luQ29udGFpbmVyT25l
LT53aW5kb3dUb0xvY2FsUG9pbnQoV2ViUG9pbnQoMTAsIDEwKSk7CisgICAgQVNTRVJUX0VRKDAs
IHBvaW50MS54KTsKKyAgICBBU1NFUlRfRVEoMCwgcG9pbnQxLnkpOworICAgIFdlYlBvaW50IHBv
aW50MiA9IHBsdWdpbkNvbnRhaW5lck9uZS0+d2luZG93VG9Mb2NhbFBvaW50KFdlYlBvaW50KDEw
MCwgMTAwKSk7CisgICAgQVNTRVJUX0VRKDkwLCBwb2ludDIueCk7CisgICAgQVNTRVJUX0VRKDkw
LCBwb2ludDIueSk7CisKKyAgICBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5Db250YWlu
ZXJUd28gPSBnZXRXZWJQbHVnaW5Db250YWluZXIod2ViVmlldywgV2ViU3RyaW5nOjpmcm9tVVRG
OCgicm90YXRlZC1wbHVnaW4iKSk7CisgICAgQVNTRVJUKHBsdWdpbkNvbnRhaW5lclR3byk7Cisg
ICAgV2ViUG9pbnQgcG9pbnQzID0gcGx1Z2luQ29udGFpbmVyVHdvLT53aW5kb3dUb0xvY2FsUG9p
bnQoV2ViUG9pbnQoMCwgMTApKTsKKyAgICBBU1NFUlRfRVEoMTAsIHBvaW50My54KTsKKyAgICBB
U1NFUlRfRVEoMCwgcG9pbnQzLnkpOworICAgIFdlYlBvaW50IHBvaW50NCA9IHBsdWdpbkNvbnRh
aW5lclR3by0+d2luZG93VG9Mb2NhbFBvaW50KFdlYlBvaW50KC0xMCwgMTApKTsKKyAgICBBU1NF
UlRfRVEoMTAsIHBvaW50NC54KTsKKyAgICBBU1NFUlRfRVEoMTAsIHBvaW50NC55KTsKKworICAg
IHdlYlZpZXctPmNsb3NlKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvZGF0YS9wbHVnaW5fY29udGFpbmVyLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL2RhdGEvcGx1Z2luX2NvbnRhaW5lci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxM2Nh
ODA0ZTg3NmU1MDM3Nzg0NjkxYzM1N2YxYjgyY2M2ODBjODYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcGx1Z2luX2NvbnRhaW5lci5odG1sCkBA
IC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxl
IHR5cGU9InRleHQvY3NzIj4KKyAgICBib2R5IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9Cisg
IDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPG9iamVjdCBpZD0icm90YXRlZC1wbHVnaW4i
CisgICAgICBzdHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IHBvc2l0aW9u
OiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAg
MDsiCisgICAgICB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LXdlYnBsdWdpbiIKKyAg
ICAgIGJvcmRlcj0wCisgICAgICB3aWR0aD0iNDAiCisgICAgICBoZWlnaHQ9IjQwIj4KKyAgPC9v
YmplY3Q+CisgIDxvYmplY3QgaWQ9InRyYW5zbGF0ZWQtcGx1Z2luIgorICAgICAgYm9yZGVyPTAK
KyAgICAgIHN0eWxlPSItd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDEwcHgsIDEwcHgpOyBw
b3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsiCisgICAgICB0eXBlPSJhcHBsaWNh
dGlvbi94LXdlYmtpdC10ZXN0LXdlYnBsdWdpbiIKKyAgICAgIHdpZHRoPSI0MCIKKyAgICAgIGhl
aWdodD0iNDAiPgorICA8L29iamVjdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174527</attachid>
            <date>2012-11-15 15:01:05 -0800</date>
            <delta_ts>2012-11-15 16:20:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102339-20121115175901.patch</filename>
            <type>text/plain</type>
            <size>26012</size>
            <attacher>lazyboy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggY2VjMTgzYzE5YmVlNWNkZmU0ZTk2ODYzNzU0
ZGI0NDI1ZTQ4NzY4Ni4uMDQ3Zjg2N2Q1ZmY0OWM3ZDcxYTdhNTk1YjZhMjRkYjRhMGFlMDQ4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMi0xMS0xNCAg
SXN0aWFxdWUgQWhtZWQgIDxsYXp5Ym95QGNocm9taXVtLm9yZz4KKworICAgICAgICBQcm92aWRl
IHBhZ2Uvd2luZG93IGNvb3JkaW5hdGVzIHRvIHBsdWdpbidzIGxvY2FsIGNvb3JkaW5hdGVzIHRy
YW5zbGF0aW9uIGluIFdlYlBsdWdpbkNvbnRhaW5lci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjMzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHdpbGwgYWxsb3cgY29udmVydGlu
ZyBhIHBhZ2UncyB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gcGx1Z2lucydzIGxvY2FsIGNvb3JkaW5h
dGVzLAorICAgICAgICB0YWtpbmcgQ1NTIHRyYW5zZm9ybWF0aW9ucyBpbnRvIGFjY291bnQuIEVt
YmVkZGVyIHBhZ2Ugb2YgdGhlIHBsdWdpbiBjYW4gdXNlIHRoaXMgaW5mb3JtYXRpb24KKyAgICAg
ICAgZm9yIHRhcmdldHRpbmcgZWxlbWVudHMgaW5zaWRlIHRoZSBwbHVnaW4gKGUuZy4gZGV2dG9v
bHMgY2FuIGluc3BlY3QgYSBzcGVjaWZpYyBlbGVtZW50IGF0IHRoZQorICAgICAgICBsb2NhbCBj
b29yZGluYXRlIHBvc2l0aW9uIGluc2lkZSBwbHVnaW4pLgorCisgICAgICAgICogV2ViS2l0Lmd5
cDoKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2ViUGx1Z2luQ29u
dGFpbmVyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFpbmVy
KToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OndpbmRvd1RvTG9jYWxQb2ludCk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmg6Cisg
ICAgICAgIChXZWJQbHVnaW5Db250YWluZXJJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9GYWtlV2Vi
UGx1Z2luLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpG
YWtlV2ViUGx1Z2luOjpGYWtlV2ViUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYlBs
dWdpbjo6fkZha2VXZWJQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpGYWtlV2ViUGx1Z2luOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYlBsdWdpbjo6ZGVzdHJveSk6Cisg
ICAgICAgIChXZWJLaXQ6OkZha2VXZWJQbHVnaW46Om1pbWVUeXBlKToKKyAgICAgICAgKiB0ZXN0
cy9GYWtlV2ViUGx1Z2luLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEZh
a2VXZWJQbHVnaW4pOgorICAgICAgICAqIHRlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwOgorICAg
ICAgICAqIHRlc3RzL1dlYlBsdWdpbkNvbnRhaW5lclRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJQbHVnaW5Db250YWluZXJUZXN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGx1Z2luQ29udGFpbmVyVGVzdDo6V2ViUGx1Z2luQ29udGFpbmVyVGVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lclRlc3Q6OlRlYXJEb3duKToKKyAgICAg
ICAgKFdlYktpdDo6Z2V0V2ViUGx1Z2luQ29udGFpbmVyKToKKyAgICAgICAgKFdlYktpdDo6VEVT
VF9GKToKKyAgICAgICAgKiB0ZXN0cy9kYXRhL3BsdWdpbl9jb250YWluZXIuaHRtbDogQWRkZWQu
CisKIDIwMTItMTEtMTQgIE1pa2UgUmVlZCAgPHJlZWRAZ29vZ2xlLmNvbT4KIAogICAgICAgICBE
eW5hbWljYWxseSBjcmVhdGUgY2FudmFzIGluIFNldHVwKCkgdG8gYXZvaWQgY2FsbGluZyBERVBS
RUNBVEVEIGZ1bmN0aW9uIHNldERldmljZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmlu
ZGV4IDQ3NjBjN2ZlNjEyZmViNjMzNDA1Y2I1NGVkMTgyMWIzNWRhOWY2MDUuLmUzNDgyNWE3YTI3
ZTQ5ZWMyZTFmNzMzNDU5NzZhYTNkMDcxMGNjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKQEAgLTcxNCw2ICs3MTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
IGZ1bmN0aW9ucyBkZWZpbmVkIG9ubHkgaW4gIVdFQktJVF9JTVBMRU1FTlRBVElPTi4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0
LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9FdmVudExpc3Rl
bmVyVGVzdC5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvRmFr
ZVdlYlBsdWdpbi5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMv
RnJhbWVUZXN0SGVscGVycy5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
dGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Rlc3RzL0xldmVsREJUZXN0LmNwcCcsCkBAIC03MjgsNiArNzI5LDcgQEAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkltYWdlVGVzdC5jcHAn
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1Nlcmlh
bGl6ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9X
ZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3Rlc3RzL1dlYlBsdWdpbkNvbnRhaW5lclRlc3QuY3BwJwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAndGVzdHMvV2ViVmlld1Rlc3QuY3BwJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzog
WwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggMDAyOWRhNGIwNzVlMDczY2JmZDY0
MWIwMjA0YmMwMDgwM2M0MWY0Ny4uZGQ1ZDZjZjFiNmJlOGIwY2IwOTdlZjBlMjU0ZmQwMTAzZWYz
ZDA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC02NCw2ICs2NCw4IEBACiAg
ICAgICAgICAgICAndGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0V2ZW50
TGlzdGVuZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvRmFrZVdlYlBsdWdpbi5jcHAn
LAorICAgICAgICAgICAgJ3Rlc3RzL0Zha2VXZWJQbHVnaW4uaCcsCiAgICAgICAgICAgICAndGVz
dHMvRmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlLmgnLAogICAgICAgICAgICAgJ3Rlc3Rz
L0Zha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oJywKICAgICAgICAgICAgICd0ZXN0cy9GaWx0ZXJP
cGVyYXRpb25zVGVzdC5jcHAnLApAQCAtMTEzLDYgKzExNSw3IEBACiAgICAgICAgICAgICAndGVz
dHMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3Rz
L1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlBh
Z2VTZXJpYWxpemVyVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL1dlYlBsdWdpbkNvbnRh
aW5lclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVz
dC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlVSTFJlcXVlc3RUZXN0LmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFbGVtZW50LmgKaW5kZXggNzVlM2FmZjBmZmE3
YzNlODM3YzJjMWFlMjcyOTk4OTdkMjE5ZTgzNS4uOTcxODNjYTFmYTc2NDc1YjMyMzA0MDc3YzRk
NThjNjFlOTZmODdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkVsZW1l
bnQuaApAQCAtMzgsNiArMzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEVsZW1lbnQ7
IH0KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlBsdWdpbkNvbnRhaW5l
ckltcGw7CisKIHN0cnVjdCBXZWJSZWN0OwogCiAgICAgLy8gUHJvdmlkZXMgYWNjZXNzIHRvIHNv
bWUgcHJvcGVydGllcyBvZiBhIERPTSBlbGVtZW50IG5vZGUuCkBAIC04MSw2ICs4Myw3IEBAIHN0
cnVjdCBXZWJSZWN0OwogICAgICAgICAvLyBhbHNvIGNhbGxlZCB0aGUgUm9vdCBWaWV3IGluIFdl
YktpdC4KICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSB0aGUgbGF5b3V0IGlm
IHJlcXVpcmVkLgogICAgICAgICBXRUJLSVRfRVhQT1JUIFdlYlJlY3QgYm91bmRzSW5WaWV3cG9y
dFNwYWNlKCk7CisgICAgICAgIFdFQktJVF9FWFBPUlQgV2ViUGx1Z2luQ29udGFpbmVySW1wbCog
cGx1Z2luQ29udGFpbmVyRnJvbUVsZW1lbnQoKSBjb25zdDsKIAogI2lmIFdFQktJVF9JTVBMRU1F
TlRBVElPTgogICAgICAgICBXZWJFbGVtZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpFbGVtZW50PiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViUGx1Z2luQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQ
bHVnaW5Db250YWluZXIuaAppbmRleCBkZWJlMjYwMzgwMWI4ZmMxOGM3MjEzZDQ4ZTIxMDMwOGJh
Y2VlYzMwLi5kMGE0ZGIxNTU0OGJhMjg0NThmNDAwMmY4ZWU4MjEwMWY0YjhkNGI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5Db250YWluZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5Db250YWluZXIuaApA
QCAtNDAsNiArNDAsNyBAQCBjbGFzcyBXZWJQbHVnaW47CiBjbGFzcyBXZWJTdHJpbmc7CiBjbGFz
cyBXZWJVUkw7CiBjbGFzcyBXZWJVUkxSZXF1ZXN0Oworc3RydWN0IFdlYlBvaW50Owogc3RydWN0
IFdlYlJlY3Q7CiAKIGNsYXNzIFdlYlBsdWdpbkNvbnRhaW5lciB7CkBAIC0xMTEsNiArMTEyLDkg
QEAgcHVibGljOgogICAgIC8vIE5vdGlmaWVzIHdoZW4gdGhlIHBsdWdpbiBzdGFydHMvc3RvcHMg
YWNjZXB0aW5nIHRvdWNoIGV2ZW50cy4KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNBY2NlcHRpbmdU
b3VjaEV2ZW50cyhib29sKSA9IDA7CiAKKyAgICAvLyBDb252ZXJ0cyB2aWV3J3Mgd2luZG93IGNv
b3JkaW5hdGVzIHRvIHBsdWdpbidzIGxvY2FsIGNvb3JkaW5hdGVzLgorICAgIHZpcnR1YWwgV2Vi
UG9pbnQgd2luZG93VG9Mb2NhbFBvaW50KGNvbnN0IFdlYlBvaW50JikgPSAwOworCiAgICAgdmly
dHVhbCBXZWJQbHVnaW4qIHBsdWdpbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGx1Z2lu
KFdlYlBsdWdpbiopID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFbGVtZW50
LmNwcAppbmRleCA5NmNmOTc5MWQwNjkxODFiZGE0ODVkN2I4YzIwOTNkNzkxN2U2NmU4Li40ZGUx
NGFmMmRkMDExMTBlZGVmOTc1NTllNzI5NTc3NjA3Y2U4MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJFbGVtZW50LmNwcApAQCAtMzUsNiArMzUsOSBAQAogI2luY2x1ZGUgIk5h
bWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIlJlbmRlckJveE1vZGVsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCisjaW5jbHVkZSAi
V2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIgorI2luY2x1ZGUgIldpZGdldC5oIgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJSZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtMTQw
LDYgKzE0MywyMiBAQCBXZWJSZWN0IFdlYkVsZW1lbnQ6OmJvdW5kc0luVmlld3BvcnRTcGFjZSgp
CiAgICAgcmV0dXJuIHVud3JhcDxFbGVtZW50PigpLT5ib3VuZHNJblJvb3RWaWV3U3BhY2UoKTsK
IH0KIAorV2ViUGx1Z2luQ29udGFpbmVySW1wbCogV2ViRWxlbWVudDo6cGx1Z2luQ29udGFpbmVy
RnJvbUVsZW1lbnQoKSBjb25zdAoreworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgY29uc3QgRWxlbWVudCogY29yZUVsZW1lbnQgPSBjb25zdFVud3JhcDxFbGVtZW50
PigpOworICAgIGlmIChjb3JlRWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9iamVjdFRh
ZykgfHwgY29yZUVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjplbWJlZFRhZykpIHsKKyAg
ICAgICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBjb3JlRWxlbWVudC0+cmVuZGVyZXIoKTsKKyAg
ICAgICAgaWYgKG9iamVjdCAmJiBvYmplY3QtPmlzV2lkZ2V0KCkpIHsKKyAgICAgICAgICAgIFdp
ZGdldCogd2lkZ2V0ID0gV2ViQ29yZTo6dG9SZW5kZXJXaWRnZXQob2JqZWN0KS0+d2lkZ2V0KCk7
CisgICAgICAgICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNQbHVnaW5Db250YWluZXIoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViUGx1Z2luQ29udGFpbmVySW1w
bCo+KHdpZGdldCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIFdlYkVs
ZW1lbnQ6OldlYkVsZW1lbnQoY29uc3QgUGFzc1JlZlB0cjxFbGVtZW50PiYgZWxlbSkKICAgICA6
IFdlYk5vZGUoZWxlbSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuY3BwCmluZGV4IDE5MzY0NzZmM2FlMWEyMDE0MDMzZGMzZmRiN2UwY2FiNWNhOGM3ZjIuLjY5
YjA2YzlhOTE5M2U2Zjc3MWFlMDViMWZlMzRjMGVlZmZkYzI5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMTMwLDcgKzEzMCw2IEBACiAjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclZpZXcuaCIKLSNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1
ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCkBAIC0zMDQsMjMgKzMwMyw2IEBAIHN0YXRpYyBsb25nIGxv
bmcgZ2VuZXJhdGVGcmFtZUlkZW50aWZpZXIoKQogICAgIHJldHVybiArK25leHQ7CiB9CiAKLXN0
YXRpYyBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXJGcm9tTm9kZShjb25z
dCBXZWJOb2RlJiBub2RlKQotewotICAgIGlmIChub2RlLmlzTnVsbCgpKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIGNvbnN0IE5vZGUqIGNvcmVOb2RlID0gbm9kZS5jb25zdFVud3JhcDxOb2Rl
PigpOwotICAgIGlmIChjb3JlTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9iamVjdFRhZykg
fHwgY29yZU5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjplbWJlZFRhZykpIHsKLSAgICAgICAg
UmVuZGVyT2JqZWN0KiBvYmplY3QgPSBjb3JlTm9kZS0+cmVuZGVyZXIoKTsKLSAgICAgICAgaWYg
KG9iamVjdCAmJiBvYmplY3QtPmlzV2lkZ2V0KCkpIHsKLSAgICAgICAgICAgIFdpZGdldCogd2lk
Z2V0ID0gdG9SZW5kZXJXaWRnZXQob2JqZWN0KS0+d2lkZ2V0KCk7Ci0gICAgICAgICAgICBpZiAo
d2lkZ2V0ICYmIHdpZGdldC0+aXNQbHVnaW5Db250YWluZXIoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8V2ViUGx1Z2luQ29udGFpbmVySW1wbCo+KHdpZGdldCk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIFdlYlBsdWdpbkNvbnRhaW5lckltcGwq
IFdlYkZyYW1lSW1wbDo6cGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKEZyYW1lKiBmcmFtZSkKIHsK
ICAgICBpZiAoIWZyYW1lKQpAQCAtMTIzMiw3ICsxMjE0LDcgQEAgYm9vbCBXZWJGcmFtZUltcGw6
OmV4ZWN1dGVDb21tYW5kKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViTm9kZSYgbm9k
ZSkKICAgICBpZiAoY29tbWFuZCA9PSAiQ29weSIpIHsKICAgICAgICAgV2ViUGx1Z2luQ29udGFp
bmVySW1wbCogcGx1Z2luQ29udGFpbmVyID0gcGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKGZyYW1l
KCkpOwogICAgICAgICBpZiAoIXBsdWdpbkNvbnRhaW5lcikKLSAgICAgICAgICAgIHBsdWdpbkNv
bnRhaW5lciA9IHBsdWdpbkNvbnRhaW5lckZyb21Ob2RlKG5vZGUpOworICAgICAgICAgICAgcGx1
Z2luQ29udGFpbmVyID0gbm9kZS50b0NvbnN0PFdlYkVsZW1lbnQ+KCkucGx1Z2luQ29udGFpbmVy
RnJvbUVsZW1lbnQoKTsKICAgICAgICAgaWYgKHBsdWdpbkNvbnRhaW5lcikgewogICAgICAgICAg
ICAgcGx1Z2luQ29udGFpbmVyLT5jb3B5KCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTE0MjgsNyArMTQxMCw3IEBAIGludCBXZWJGcmFtZUltcGw6OnByaW50QmVnaW4oY29uc3QgV2Vi
UHJpbnRQYXJhbXMmIHByaW50UGFyYW1zLCBjb25zdCBXZWJOb2RlJiBjCiAgICAgICAgIHBsdWdp
bkNvbnRhaW5lciA9IHBsdWdpbkNvbnRhaW5lckZyb21GcmFtZShmcmFtZSgpKTsKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBXZSBvbmx5IHN1cHBvcnQgcHJpbnRpbmcgcGx1Z2luIG5vZGVzIGZv
ciBub3cuCi0gICAgICAgIHBsdWdpbkNvbnRhaW5lciA9IHBsdWdpbkNvbnRhaW5lckZyb21Ob2Rl
KGNvbnN0cmFpblRvTm9kZSk7CisgICAgICAgIHBsdWdpbkNvbnRhaW5lciA9IGNvbnN0cmFpblRv
Tm9kZS50b0NvbnN0PFdlYkVsZW1lbnQ+KCkucGx1Z2luQ29udGFpbmVyRnJvbUVsZW1lbnQoKTsK
ICAgICB9CiAKICAgICBpZiAocGx1Z2luQ29udGFpbmVyICYmIHBsdWdpbkNvbnRhaW5lci0+c3Vw
cG9ydHNQYWdpbmF0ZWRQcmludCgpKQpAQCAtMTQ3Nyw3ICsxNDU5LDcgQEAgdm9pZCBXZWJGcmFt
ZUltcGw6OnByaW50RW5kKCkKIAogYm9vbCBXZWJGcmFtZUltcGw6OmlzUHJpbnRTY2FsaW5nRGlz
YWJsZWRGb3JQbHVnaW4oY29uc3QgV2ViTm9kZSYgbm9kZSkKIHsKLSAgICBXZWJQbHVnaW5Db250
YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXIgPSAgbm9kZS5pc051bGwoKSA/IHBsdWdpbkNvbnRh
aW5lckZyb21GcmFtZShmcmFtZSgpKSA6IHBsdWdpbkNvbnRhaW5lckZyb21Ob2RlKG5vZGUpOwor
ICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbkNvbnRhaW5lciA9ICBub2RlLmlzTnVs
bCgpID8gcGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKGZyYW1lKCkpIDogbm9kZS50b0NvbnN0PFdl
YkVsZW1lbnQ+KCkucGx1Z2luQ29udGFpbmVyRnJvbUVsZW1lbnQoKTsKIAogICAgIGlmICghcGx1
Z2luQ29udGFpbmVyIHx8ICFwbHVnaW5Db250YWluZXItPnN1cHBvcnRzUGFnaW5hdGVkUHJpbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAppbmRleCA3Mzg0MmExOWY4YmU1Y2Y0
OTZjOTgwZjUwODYzMTMwZGMwM2I4MWRjLi4yMzYyZWJiYTY1MjJkYjBkMmE0OTRhNGY1MDg0MDRl
ZWE1MTVhMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVn
aW5Db250YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQ
bHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAtNTMxLDYgKzUzMSwxNSBAQCB2b2lkIFdlYlBsdWdp
bkNvbnRhaW5lckltcGw6OnNldElzQWNjZXB0aW5nVG91Y2hFdmVudHMoYm9vbCBhY2NlcHRpbmdU
b3VjaEV2ZW50cwogICAgICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPmRpZFJlbW92ZVRvdWNo
RXZlbnRIYW5kbGVyKCk7CiB9CiAKK1dlYlBvaW50IFdlYlBsdWdpbkNvbnRhaW5lckltcGw6Ondp
bmRvd1RvTG9jYWxQb2ludChjb25zdCBXZWJQb2ludCYgcG9pbnQpCit7CisgICAgU2Nyb2xsVmll
dyogdmlldyA9IHBhcmVudCgpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIHBvaW50
OworICAgIFdlYlBvaW50IHdpbmRvd1BvaW50ID0gdmlldy0+d2luZG93VG9Db250ZW50cyhwb2lu
dCk7CisgICAgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChtX2VsZW1lbnQtPnJlbmRlcmVyKCktPmFi
c29sdXRlVG9Mb2NhbChMYXlvdXRQb2ludCh3aW5kb3dQb2ludCksIFVzZVRyYW5zZm9ybXMgfCBT
bmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcykpOworfQorCiB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lcklt
cGw6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
IHsKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgcGx1Z2luIHJlY2VpdmVzIHdpbmRvdyBnZW9t
ZXRyeSBiZWZvcmUgZGF0YSwgb3IgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCmluZGV4IDg5ZjI5NzFiNzIzMjllMGZkNjY0
Nzk3NjU2ZmEwM2MyZDk0MTVmY2IuLjdlNzk0NDYwN2FmOTMwNWU3MGZlM2RjZWU3OGE5ZGVkZmNj
ODA5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNv
bnRhaW5lckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5D
b250YWluZXJJbXBsLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldE9wYXF1ZShib29sKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNSZWN0VG9wbW9zdChjb25z
dCBXZWJSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHNldElzQWNjZXB0aW5nVG91Y2hFdmVudHMo
Ym9vbCk7CisgICAgdmlydHVhbCBXZWJQb2ludCB3aW5kb3dUb0xvY2FsUG9pbnQoY29uc3QgV2Vi
UG9pbnQmKTsKIAogICAgIC8vIFRoaXMgY2Fubm90IGJlIG51bGwuCiAgICAgV2ViUGx1Z2luKiBw
bHVnaW4oKSB7IHJldHVybiBtX3dlYlBsdWdpbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9GYWtlV2ViUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvRmFrZVdlYlBsdWdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRiZGQxNTAwMWE4N2EwNjZj
OWRkNDJhNjgyMzgwZjZjZDU2YTdiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvRmFrZVdlYlBsdWdpbi5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJGYWtlV2ViUGx1Z2luLmgiCisKKyNpbmNsdWRlICJXZWJQ
bHVnaW5QYXJhbXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitGYWtlV2ViUGx1Z2luOjpGYWtlV2ViUGx1Z2luKFdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgV2ViUGx1Z2luUGFyYW1zJiBwYXJhbXMpCisgICAgOiBtX2ZyYW1lKGZyYW1lKQor
eworfQorCitGYWtlV2ViUGx1Z2luOjp+RmFrZVdlYlBsdWdpbigpCit7Cit9CisKK2Jvb2wgRmFr
ZVdlYlBsdWdpbjo6aW5pdGlhbGl6ZShXZWJQbHVnaW5Db250YWluZXIqIGNvbnRhaW5lcikKK3sK
KyAgICBtX2NvbnRhaW5lciA9IGNvbnRhaW5lcjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBGYWtlV2ViUGx1Z2luOjpkZXN0cm95KCkKK3sKKyAgICBtX2NvbnRhaW5lciA9IDA7CisgICAg
bV9mcmFtZSA9IDA7Cit9CisKK2NvbnN0IFdlYlN0cmluZyYgRmFrZVdlYlBsdWdpbjo6bWltZVR5
cGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgV2ViU3RyaW5nLCBrVGVzdFdl
YlBsdWdpbk1pbWVUeXBlLCAoV2ViU3RyaW5nOjpmcm9tVVRGOCgiYXBwbGljYXRpb24veC13ZWJr
aXQtdGVzdC13ZWJwbHVnaW4iKSkpOworICAgIHJldHVybiBrVGVzdFdlYlBsdWdpbk1pbWVUeXBl
OworfQorCit9IC8vIG5hbWVzcGFjZSAgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0Zha2VXZWJQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvRmFrZVdlYlBsdWdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MGZiYzMxZjVhZDAzZDQzYTAxYWI2
ODU1MjQxZmIyZDNjZGMwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0Zha2VXZWJQbHVnaW4uaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGYWtlV2Vi
UGx1Z2luX2gKKyNkZWZpbmUgRmFrZVdlYlBsdWdpbl9oCisKKyNpbmNsdWRlICJXZWJQbHVnaW4u
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRyYWdEYXRhOworY2xhc3MgV2Vi
RnJhbWU7CitjbGFzcyBXZWJJbnB1dEV2ZW50OworY2xhc3MgV2ViUGx1Z2luQ29udGFpbmVyOwor
Y2xhc3MgV2ViVVJMOworY2xhc3MgV2ViVVJMUmVxdWVzdDsKK2NsYXNzIFdlYlVSTFJlc3BvbnNl
OworCitjbGFzcyBGYWtlV2ViUGx1Z2luIDogcHVibGljIFdlYlBsdWdpbiB7CitwdWJsaWM6Cisg
ICAgRmFrZVdlYlBsdWdpbihXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJQbHVn
aW5QYXJhbXMmKTsKKyAgICB2aXJ0dWFsIH5GYWtlV2ViUGx1Z2luKCk7CisKKyAgICBzdGF0aWMg
Y29uc3QgV2ViU3RyaW5nJiBtaW1lVHlwZSgpOworCisgICAgLy8gV2ViUGx1Z2luIG1ldGhvZHM6
CisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXIq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgTlBPYmplY3QqIHNjcmlwdGFibGVPYmplY3QoKSBPVkVSUklERSB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBib29sIGNhblByb2Nlc3NEcmFnKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViS2l0OjpXZWJDYW52YXMqLCBj
b25zdCBXZWJLaXQ6OldlYlJlY3QmKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlR2VvbWV0cnkoY29uc3QgV2ViS2l0OjpXZWJSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYktp
dDo6V2ViUmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2Vi
UmVjdD4mIGN1dE91dHNSZWN0cywgYm9vbCBpc1Zpc2libGUpIE9WRVJSSURFIHsgfQorICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVGb2N1cyhib29sKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlVmlzaWJpbGl0eShib29sKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
YWNjZXB0c0lucHV0RXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViSW5wdXRFdmVudCYsIFdl
YktpdDo6V2ViQ3Vyc29ySW5mbyYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGhhbmRsZURyYWdTdGF0dXNVcGRhdGUoV2ViS2l0OjpXZWJEcmFnU3RhdHVzLCBj
b25zdCBXZWJLaXQ6OldlYkRyYWdEYXRhJiwgV2ViS2l0OjpXZWJEcmFnT3BlcmF0aW9uc01hc2ss
IGNvbnN0IFdlYktpdDo6V2ViUG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJLaXQ6OldlYlBvaW50
JiBzY3JlZW5Qb3NpdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmKSBP
VkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciog
ZGF0YSwgaW50IGRhdGFMZW5ndGgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2Fk
aW5nKGNvbnN0IFdlYktpdDo6V2ViVVJMRXJyb3ImKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZ0ZyYW1lUmVxdWVzdChjb25zdCBXZWJLaXQ6OldlYlVSTCYs
IHZvaWQqIG5vdGlmeURhdGEpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
TG9hZGluZ0ZyYW1lUmVxdWVzdChjb25zdCBXZWJLaXQ6OldlYlVSTCYsIHZvaWQqIG5vdGlmeURh
dGEsIGNvbnN0IFdlYktpdDo6V2ViVVJMRXJyb3ImKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNQbGFjZWhvbGRlcigpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKK3ByaXZh
dGU6CisgICAgV2ViRnJhbWUqIG1fZnJhbWU7CisgICAgV2ViUGx1Z2luQ29udGFpbmVyKiBtX2Nv
bnRhaW5lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRmFrZVdl
YlBsdWdpbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1l
VGVzdEhlbHBlcnMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RI
ZWxwZXJzLmNwcAppbmRleCBjM2U4YmYwOGRkYmY2ZDljODMzOTdiZmI5YzA4YThmMzY1OTU3NjI3
Li42NDEyMTI0NWFiZDljMjgxYmRlMGRjMWFlYmE5ZTZhMzg4ZjkwY2EzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5jcHAKQEAgLTM0LDcg
KzM0LDYgQEAKICNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KICNpbmNsdWRlICJXZWJGcmFtZS5oIgotI2luY2x1ZGUgIldlYkZyYW1lQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJT
dHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxSZXF1ZXN0LmgiCkBAIC01NCw5ICs1
Myw2IEBAIHZvaWQgbG9hZEZyYW1lKFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcm
IHVybCkKICAgICBmcmFtZS0+bG9hZFJlcXVlc3QodXJsUmVxdWVzdCk7CiB9CiAKLWNsYXNzIFRl
c3RXZWJGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7Ci19OwotCiBzdGF0aWMg
V2ViRnJhbWVDbGllbnQqIGRlZmF1bHRXZWJGcmFtZUNsaWVudCgpCiB7CiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChUZXN0V2ViRnJhbWVDbGllbnQsIGNsaWVudCwgKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuaAppbmRleCBiZmI1N2I2N2Nk
MjkwMTBlODY3Y2QyYmU4NWYxMzRlZmNlYjdkOTRlLi41ZTk1NDg1ZjJlNjRhZDYzZTMxNzM5NTE4
NDc3NDNhN2QxYTRkMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0ZyYW1lVGVzdEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zy
YW1lVGVzdEhlbHBlcnMuaApAQCAtMzEsMTcgKzMxLDIwIEBACiAjaWZuZGVmIEZyYW1lVGVzdEhl
bHBlcnNfaAogI2RlZmluZSBGcmFtZVRlc3RIZWxwZXJzX2gKIAorI2luY2x1ZGUgIldlYkZyYW1l
Q2xpZW50LmgiCiAjaW5jbHVkZSA8c3RyaW5nPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViRnJhbWU7Ci1jbGFzcyBXZWJGcmFtZUNsaWVudDsKIGNsYXNzIFdlYlZpZXc7CiBjbGFz
cyBXZWJWaWV3Q2xpZW50OwogCiBuYW1lc3BhY2UgRnJhbWVUZXN0SGVscGVycyB7CiAKK2NsYXNz
IFRlc3RXZWJGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7Cit9OworCiB2b2lk
IGxvYWRGcmFtZShXZWJGcmFtZSosIGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmwpOwogCiBXZWJWaWV3
KiBjcmVhdGVXZWJWaWV3QW5kTG9hZChjb25zdCBzdGQ6OnN0cmluZyYgdXJsLCBib29sIGVuYWJs
ZUphdmFzY3JpcHQgPSBmYWxzZSwgV2ViRnJhbWVDbGllbnQqID0gMCwgV2ViVmlld0NsaWVudCog
PSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGx1Z2lu
Q29udGFpbmVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBsdWdp
bkNvbnRhaW5lclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3OTUzNmIwYzgwNDMzMTgwYzM1ODE3NWNk
MjQ1MjBlODAwNjUzZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYlBsdWdpbkNvbnRhaW5lclRlc3QuY3BwCkBAIC0wLDAgKzEsMTE3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lci5oIgorCisjaW5jbHVk
ZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkZha2VXZWJQbHVnaW4uaCIKKyNpbmNsdWRlICJGcmFt
ZVRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMuaCIKKyNpbmNsdWRlICJX
ZWJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJGcmFt
ZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViRnJhbWVJbXBs
LmgiCisjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIgorI2luY2x1ZGUgIldlYlBs
dWdpblBhcmFtcy5oIgorI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViVmll
dy5oIgorI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
KyNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgeworCitjbGFzcyBXZWJQbHVnaW5Db250YWluZXJU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIFdlYlBsdWdpbkNvbnRh
aW5lclRlc3QoKQorICAgICAgICA6IG1fYmFzZVVSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS8iKQor
ICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAgICAg
ICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgfQorCitw
cm90ZWN0ZWQ6CisgICAgc3RkOjpzdHJpbmcgbV9iYXNlVVJMOworfTsKKworY2xhc3MgVGVzdFBs
dWdpbldlYkZyYW1lQ2xpZW50IDogcHVibGljIEZyYW1lVGVzdEhlbHBlcnM6OlRlc3RXZWJGcmFt
ZUNsaWVudCB7CisgICAgdmlydHVhbCBXZWJQbHVnaW4qIGNyZWF0ZVBsdWdpbihXZWJGcmFtZSog
ZnJhbWUsIGNvbnN0IFdlYlBsdWdpblBhcmFtcyYgcGFyYW1zKSBPVkVSUklERQorICAgIHsKKyAg
ICAgICAgaWYgKHBhcmFtcy5taW1lVHlwZSA9PSBGYWtlV2ViUGx1Z2luOjptaW1lVHlwZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBGYWtlV2ViUGx1Z2luKGZyYW1lLCBwYXJhbXMpOworICAg
ICAgICByZXR1cm4gV2ViRnJhbWVDbGllbnQ6OmNyZWF0ZVBsdWdpbihmcmFtZSwgcGFyYW1zKTsK
KyAgICB9Cit9OworCitXZWJQbHVnaW5Db250YWluZXJJbXBsKiBnZXRXZWJQbHVnaW5Db250YWlu
ZXIoV2ViVmlldyogd2ViVmlldywgY29uc3QgV2ViU3RyaW5nJiBpZCkKK3sKKyAgICBXZWJFbGVt
ZW50IGVsZW1lbnQgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS5nZXRFbGVtZW50
QnlJZChpZCk7CisgICAgcmV0dXJuIGVsZW1lbnQucGx1Z2luQ29udGFpbmVyRnJvbUVsZW1lbnQo
KTsKK30KKworVEVTVF9GKFdlYlBsdWdpbkNvbnRhaW5lclRlc3QsIFdpbmRvd1RvTG9jYWxQb2lu
dFRlc3QpCit7CisgICAgVVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMRnJvbUJhc2VV
UkwoV2ViU3RyaW5nOjpmcm9tVVRGOChtX2Jhc2VVUkwuY19zdHIoKSksIFdlYlN0cmluZzo6ZnJv
bVVURjgoInBsdWdpbl9jb250YWluZXIuaHRtbCIpKTsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0g
RnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgInBsdWdp
bl9jb250YWluZXIuaHRtbCIsIHRydWUsIG5ldyBUZXN0UGx1Z2luV2ViRnJhbWVDbGllbnQoKSk7
CisgICAgQVNTRVJUKHdlYlZpZXcpOworICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldFBsdWdp
bnNFbmFibGVkKHRydWUpOworICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDMwMCwgMzAwKSk7
CisgICAgd2ViVmlldy0+bGF5b3V0KCk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRp
bmdNZXNzYWdlcygpOworCisgICAgV2ViUGx1Z2luQ29udGFpbmVyKiBwbHVnaW5Db250YWluZXJP
bmUgPSBnZXRXZWJQbHVnaW5Db250YWluZXIod2ViVmlldywgV2ViU3RyaW5nOjpmcm9tVVRGOCgi
dHJhbnNsYXRlZC1wbHVnaW4iKSk7CisgICAgQVNTRVJUKHBsdWdpbkNvbnRhaW5lck9uZSk7Cisg
ICAgV2ViUG9pbnQgcG9pbnQxID0gcGx1Z2luQ29udGFpbmVyT25lLT53aW5kb3dUb0xvY2FsUG9p
bnQoV2ViUG9pbnQoMTAsIDEwKSk7CisgICAgQVNTRVJUX0VRKDAsIHBvaW50MS54KTsKKyAgICBB
U1NFUlRfRVEoMCwgcG9pbnQxLnkpOworICAgIFdlYlBvaW50IHBvaW50MiA9IHBsdWdpbkNvbnRh
aW5lck9uZS0+d2luZG93VG9Mb2NhbFBvaW50KFdlYlBvaW50KDEwMCwgMTAwKSk7CisgICAgQVNT
RVJUX0VRKDkwLCBwb2ludDIueCk7CisgICAgQVNTRVJUX0VRKDkwLCBwb2ludDIueSk7CisKKyAg
ICBXZWJQbHVnaW5Db250YWluZXIqIHBsdWdpbkNvbnRhaW5lclR3byA9IGdldFdlYlBsdWdpbkNv
bnRhaW5lcih3ZWJWaWV3LCBXZWJTdHJpbmc6OmZyb21VVEY4KCJyb3RhdGVkLXBsdWdpbiIpKTsK
KyAgICBBU1NFUlQocGx1Z2luQ29udGFpbmVyVHdvKTsKKyAgICBXZWJQb2ludCBwb2ludDMgPSBw
bHVnaW5Db250YWluZXJUd28tPndpbmRvd1RvTG9jYWxQb2ludChXZWJQb2ludCgwLCAxMCkpOwor
ICAgIEFTU0VSVF9FUSgxMCwgcG9pbnQzLngpOworICAgIEFTU0VSVF9FUSgwLCBwb2ludDMueSk7
CisgICAgV2ViUG9pbnQgcG9pbnQ0ID0gcGx1Z2luQ29udGFpbmVyVHdvLT53aW5kb3dUb0xvY2Fs
UG9pbnQoV2ViUG9pbnQoLTEwLCAxMCkpOworICAgIEFTU0VSVF9FUSgxMCwgcG9pbnQ0LngpOwor
ICAgIEFTU0VSVF9FUSgxMCwgcG9pbnQ0LnkpOworCisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3BsdWdp
bl9jb250YWluZXIuaHRtbCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9wbHVn
aW5fY29udGFpbmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzEzY2E4MDRlODc2ZTUwMzc3ODQ2OTFjMzU3
ZjFiODJjYzY4MGM4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvZGF0YS9wbHVnaW5fY29udGFpbmVyLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAg
IGJvZHkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0KKyAgPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorICA8b2JqZWN0IGlkPSJyb3RhdGVkLXBsdWdpbiIKKyAgICAgIHN0eWxlPSItd2Via2l0
LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxl
ZnQ6IDA7IC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMCAwOyIKKyAgICAgIHR5cGU9ImFwcGxp
Y2F0aW9uL3gtd2Via2l0LXRlc3Qtd2VicGx1Z2luIgorICAgICAgYm9yZGVyPTAKKyAgICAgIHdp
ZHRoPSI0MCIKKyAgICAgIGhlaWdodD0iNDAiPgorICA8L29iamVjdD4KKyAgPG9iamVjdCBpZD0i
dHJhbnNsYXRlZC1wbHVnaW4iCisgICAgICBib3JkZXI9MAorICAgICAgc3R5bGU9Ii13ZWJraXQt
dHJhbnNmb3JtOiB0cmFuc2xhdGUoMTBweCwgMTBweCk7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OiAwOyBsZWZ0OiAwOyIKKyAgICAgIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3Qtd2Vi
cGx1Z2luIgorICAgICAgd2lkdGg9IjQwIgorICAgICAgaGVpZ2h0PSI0MCI+CisgIDwvb2JqZWN0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174541</attachid>
            <date>2012-11-15 16:15:22 -0800</date>
            <delta_ts>2012-11-15 18:20:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102339-20121115191318.patch</filename>
            <type>text/plain</type>
            <size>25905</size>
            <attacher>lazyboy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggY2VjMTgzYzE5YmVlNWNkZmU0ZTk2ODYzNzU0
ZGI0NDI1ZTQ4NzY4Ni4uMDQ3Zjg2N2Q1ZmY0OWM3ZDcxYTdhNTk1YjZhMjRkYjRhMGFlMDQ4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMi0xMS0xNCAg
SXN0aWFxdWUgQWhtZWQgIDxsYXp5Ym95QGNocm9taXVtLm9yZz4KKworICAgICAgICBQcm92aWRl
IHBhZ2Uvd2luZG93IGNvb3JkaW5hdGVzIHRvIHBsdWdpbidzIGxvY2FsIGNvb3JkaW5hdGVzIHRy
YW5zbGF0aW9uIGluIFdlYlBsdWdpbkNvbnRhaW5lci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjMzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHdpbGwgYWxsb3cgY29udmVydGlu
ZyBhIHBhZ2UncyB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gcGx1Z2lucydzIGxvY2FsIGNvb3JkaW5h
dGVzLAorICAgICAgICB0YWtpbmcgQ1NTIHRyYW5zZm9ybWF0aW9ucyBpbnRvIGFjY291bnQuIEVt
YmVkZGVyIHBhZ2Ugb2YgdGhlIHBsdWdpbiBjYW4gdXNlIHRoaXMgaW5mb3JtYXRpb24KKyAgICAg
ICAgZm9yIHRhcmdldHRpbmcgZWxlbWVudHMgaW5zaWRlIHRoZSBwbHVnaW4gKGUuZy4gZGV2dG9v
bHMgY2FuIGluc3BlY3QgYSBzcGVjaWZpYyBlbGVtZW50IGF0IHRoZQorICAgICAgICBsb2NhbCBj
b29yZGluYXRlIHBvc2l0aW9uIGluc2lkZSBwbHVnaW4pLgorCisgICAgICAgICogV2ViS2l0Lmd5
cDoKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2ViUGx1Z2luQ29u
dGFpbmVyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFpbmVy
KToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OndpbmRvd1RvTG9jYWxQb2ludCk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmg6Cisg
ICAgICAgIChXZWJQbHVnaW5Db250YWluZXJJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9GYWtlV2Vi
UGx1Z2luLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpG
YWtlV2ViUGx1Z2luOjpGYWtlV2ViUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYlBs
dWdpbjo6fkZha2VXZWJQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpGYWtlV2ViUGx1Z2luOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYlBsdWdpbjo6ZGVzdHJveSk6Cisg
ICAgICAgIChXZWJLaXQ6OkZha2VXZWJQbHVnaW46Om1pbWVUeXBlKToKKyAgICAgICAgKiB0ZXN0
cy9GYWtlV2ViUGx1Z2luLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEZh
a2VXZWJQbHVnaW4pOgorICAgICAgICAqIHRlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwOgorICAg
ICAgICAqIHRlc3RzL1dlYlBsdWdpbkNvbnRhaW5lclRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJQbHVnaW5Db250YWluZXJUZXN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGx1Z2luQ29udGFpbmVyVGVzdDo6V2ViUGx1Z2luQ29udGFpbmVyVGVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lclRlc3Q6OlRlYXJEb3duKToKKyAgICAg
ICAgKFdlYktpdDo6Z2V0V2ViUGx1Z2luQ29udGFpbmVyKToKKyAgICAgICAgKFdlYktpdDo6VEVT
VF9GKToKKyAgICAgICAgKiB0ZXN0cy9kYXRhL3BsdWdpbl9jb250YWluZXIuaHRtbDogQWRkZWQu
CisKIDIwMTItMTEtMTQgIE1pa2UgUmVlZCAgPHJlZWRAZ29vZ2xlLmNvbT4KIAogICAgICAgICBE
eW5hbWljYWxseSBjcmVhdGUgY2FudmFzIGluIFNldHVwKCkgdG8gYXZvaWQgY2FsbGluZyBERVBS
RUNBVEVEIGZ1bmN0aW9uIHNldERldmljZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmlu
ZGV4IDQ3NjBjN2ZlNjEyZmViNjMzNDA1Y2I1NGVkMTgyMWIzNWRhOWY2MDUuLmUzNDgyNWE3YTI3
ZTQ5ZWMyZTFmNzMzNDU5NzZhYTNkMDcxMGNjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKQEAgLTcxNCw2ICs3MTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
IGZ1bmN0aW9ucyBkZWZpbmVkIG9ubHkgaW4gIVdFQktJVF9JTVBMRU1FTlRBVElPTi4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0
LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9FdmVudExpc3Rl
bmVyVGVzdC5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvRmFr
ZVdlYlBsdWdpbi5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMv
RnJhbWVUZXN0SGVscGVycy5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
dGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Rlc3RzL0xldmVsREJUZXN0LmNwcCcsCkBAIC03MjgsNiArNzI5LDcgQEAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkltYWdlVGVzdC5jcHAn
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1Nlcmlh
bGl6ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9X
ZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3Rlc3RzL1dlYlBsdWdpbkNvbnRhaW5lclRlc3QuY3BwJwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAndGVzdHMvV2ViVmlld1Rlc3QuY3BwJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzog
WwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggMDAyOWRhNGIwNzVlMDczY2JmZDY0
MWIwMjA0YmMwMDgwM2M0MWY0Ny4uZGQ1ZDZjZjFiNmJlOGIwY2IwOTdlZjBlMjU0ZmQwMTAzZWYz
ZDA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC02NCw2ICs2NCw4IEBACiAg
ICAgICAgICAgICAndGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0V2ZW50
TGlzdGVuZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvRmFrZVdlYlBsdWdpbi5jcHAn
LAorICAgICAgICAgICAgJ3Rlc3RzL0Zha2VXZWJQbHVnaW4uaCcsCiAgICAgICAgICAgICAndGVz
dHMvRmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlLmgnLAogICAgICAgICAgICAgJ3Rlc3Rz
L0Zha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oJywKICAgICAgICAgICAgICd0ZXN0cy9GaWx0ZXJP
cGVyYXRpb25zVGVzdC5jcHAnLApAQCAtMTEzLDYgKzExNSw3IEBACiAgICAgICAgICAgICAndGVz
dHMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3Rz
L1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlBh
Z2VTZXJpYWxpemVyVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL1dlYlBsdWdpbkNvbnRh
aW5lclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVz
dC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlVSTFJlcXVlc3RUZXN0LmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOb2RlLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOb2RlLmgKaW5kZXggNTg2OWFlZWM2Mjc3NTI3YmU4
NzFiZDI0NzRhMGY2YWM0M2RlYzdlZC4uZTg0YTdiMDFiNWIwZTNiODQ3NTFjY2UyMjUxNDNkMmYx
ZjYyYWE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vZGUuaApAQCAtNDUs
NiArNDUsNyBAQCBjbGFzcyBXZWJEb2N1bWVudDsKIGNsYXNzIFdlYkVsZW1lbnQ7CiBjbGFzcyBX
ZWJGcmFtZTsKIGNsYXNzIFdlYk5vZGVMaXN0OworY2xhc3MgV2ViUGx1Z2luQ29udGFpbmVyOwog
CiAvLyBQcm92aWRlcyBhY2Nlc3MgdG8gc29tZSBwcm9wZXJ0aWVzIG9mIGEgRE9NIG5vZGUuCiBj
bGFzcyBXZWJOb2RlIHsKQEAgLTExOSw2ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBk
b2VzIG5vdCAxMDAlIGd1YXJhbnRlZSB0aGUgdXNlciBjYW4gc2VlIGl0LCBidXQgaXMgcHJldHR5
IGNsb3NlLgogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kIG9ubHkgd29ya3MgcHJvcGVybHkgYWZ0
ZXIgbGF5b3V0IGhhcyBvY2N1cnJlZC4KICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaGFzTm9uRW1w
dHlCb3VuZGluZ0JveCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViUGx1Z2luQ29udGFp
bmVyKiBwbHVnaW5Db250YWluZXIoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IFQgdG8oKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlBsdWdpbkNvbnRhaW5lci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
UGx1Z2luQ29udGFpbmVyLmgKaW5kZXggZGViZTI2MDM4MDFiOGZjMThjNzIxM2Q0OGUyMTAzMDhi
YWNlZWMzMC4uZDBhNGRiMTU1NDhiYTI4NDU4ZjQwMDJmOGVlODIxMDFmNGI4ZDRiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luQ29udGFpbmVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luQ29udGFpbmVyLmgK
QEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgV2ViUGx1Z2luOwogY2xhc3MgV2ViU3RyaW5nOwogY2xh
c3MgV2ViVVJMOwogY2xhc3MgV2ViVVJMUmVxdWVzdDsKK3N0cnVjdCBXZWJQb2ludDsKIHN0cnVj
dCBXZWJSZWN0OwogCiBjbGFzcyBXZWJQbHVnaW5Db250YWluZXIgewpAQCAtMTExLDYgKzExMiw5
IEBAIHB1YmxpYzoKICAgICAvLyBOb3RpZmllcyB3aGVuIHRoZSBwbHVnaW4gc3RhcnRzL3N0b3Bz
IGFjY2VwdGluZyB0b3VjaCBldmVudHMuCiAgICAgdmlydHVhbCB2b2lkIHNldElzQWNjZXB0aW5n
VG91Y2hFdmVudHMoYm9vbCkgPSAwOwogCisgICAgLy8gQ29udmVydHMgdmlldydzIHdpbmRvdyBj
b29yZGluYXRlcyB0byBwbHVnaW4ncyBsb2NhbCBjb29yZGluYXRlcy4KKyAgICB2aXJ0dWFsIFdl
YlBvaW50IHdpbmRvd1RvTG9jYWxQb2ludChjb25zdCBXZWJQb2ludCYpID0gMDsKKwogICAgIHZp
cnR1YWwgV2ViUGx1Z2luKiBwbHVnaW4oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBsdWdp
bihXZWJQbHVnaW4qKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCmluZGV4IDE5MzY0NzZmM2FlMWEyMDE0MDMzZGMzZmRiN2UwY2FiNWNhOGM3ZjIu
LjM3ZjE0NGYyMWVlMmZhYTQ1MmZkZmU4MzY2NGNiNzUxYWQyOWQ5Y2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMTMwLDcgKzEzMCw2IEBACiAj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKLSNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCkBAIC0zMDQsMjMgKzMwMyw2IEBAIHN0YXRpYyBsb25n
IGxvbmcgZ2VuZXJhdGVGcmFtZUlkZW50aWZpZXIoKQogICAgIHJldHVybiArK25leHQ7CiB9CiAK
LXN0YXRpYyBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXJGcm9tTm9kZShj
b25zdCBXZWJOb2RlJiBub2RlKQotewotICAgIGlmIChub2RlLmlzTnVsbCgpKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIGNvbnN0IE5vZGUqIGNvcmVOb2RlID0gbm9kZS5jb25zdFVud3JhcDxO
b2RlPigpOwotICAgIGlmIChjb3JlTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9iamVjdFRh
ZykgfHwgY29yZU5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjplbWJlZFRhZykpIHsKLSAgICAg
ICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBjb3JlTm9kZS0+cmVuZGVyZXIoKTsKLSAgICAgICAg
aWYgKG9iamVjdCAmJiBvYmplY3QtPmlzV2lkZ2V0KCkpIHsKLSAgICAgICAgICAgIFdpZGdldCog
d2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQob2JqZWN0KS0+d2lkZ2V0KCk7Ci0gICAgICAgICAgICBp
ZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNQbHVnaW5Db250YWluZXIoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViUGx1Z2luQ29udGFpbmVySW1wbCo+KHdpZGdldCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIFdlYlBsdWdpbkNvbnRhaW5lcklt
cGwqIFdlYkZyYW1lSW1wbDo6cGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKEZyYW1lKiBmcmFtZSkK
IHsKICAgICBpZiAoIWZyYW1lKQpAQCAtMTIzMiw3ICsxMjE0LDcgQEAgYm9vbCBXZWJGcmFtZUlt
cGw6OmV4ZWN1dGVDb21tYW5kKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViTm9kZSYg
bm9kZSkKICAgICBpZiAoY29tbWFuZCA9PSAiQ29weSIpIHsKICAgICAgICAgV2ViUGx1Z2luQ29u
dGFpbmVySW1wbCogcGx1Z2luQ29udGFpbmVyID0gcGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKGZy
YW1lKCkpOwogICAgICAgICBpZiAoIXBsdWdpbkNvbnRhaW5lcikKLSAgICAgICAgICAgIHBsdWdp
bkNvbnRhaW5lciA9IHBsdWdpbkNvbnRhaW5lckZyb21Ob2RlKG5vZGUpOworICAgICAgICAgICAg
cGx1Z2luQ29udGFpbmVyID0gc3RhdGljX2Nhc3Q8V2ViUGx1Z2luQ29udGFpbmVySW1wbCo+KG5v
ZGUucGx1Z2luQ29udGFpbmVyKCkpOwogICAgICAgICBpZiAocGx1Z2luQ29udGFpbmVyKSB7CiAg
ICAgICAgICAgICBwbHVnaW5Db250YWluZXItPmNvcHkoKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMTQyOCw3ICsxNDEwLDcgQEAgaW50IFdlYkZyYW1lSW1wbDo6cHJpbnRCZWdpbihj
b25zdCBXZWJQcmludFBhcmFtcyYgcHJpbnRQYXJhbXMsIGNvbnN0IFdlYk5vZGUmIGMKICAgICAg
ICAgcGx1Z2luQ29udGFpbmVyID0gcGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKGZyYW1lKCkpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBwcmludGluZyBwbHVnaW4g
bm9kZXMgZm9yIG5vdy4KLSAgICAgICAgcGx1Z2luQ29udGFpbmVyID0gcGx1Z2luQ29udGFpbmVy
RnJvbU5vZGUoY29uc3RyYWluVG9Ob2RlKTsKKyAgICAgICAgcGx1Z2luQ29udGFpbmVyID0gc3Rh
dGljX2Nhc3Q8V2ViUGx1Z2luQ29udGFpbmVySW1wbCo+KGNvbnN0cmFpblRvTm9kZS5wbHVnaW5D
b250YWluZXIoKSk7CiAgICAgfQogCiAgICAgaWYgKHBsdWdpbkNvbnRhaW5lciAmJiBwbHVnaW5D
b250YWluZXItPnN1cHBvcnRzUGFnaW5hdGVkUHJpbnQoKSkKQEAgLTE0NzcsNyArMTQ1OSw3IEBA
IHZvaWQgV2ViRnJhbWVJbXBsOjpwcmludEVuZCgpCiAKIGJvb2wgV2ViRnJhbWVJbXBsOjppc1By
aW50U2NhbGluZ0Rpc2FibGVkRm9yUGx1Z2luKGNvbnN0IFdlYk5vZGUmIG5vZGUpCiB7Ci0gICAg
V2ViUGx1Z2luQ29udGFpbmVySW1wbCogcGx1Z2luQ29udGFpbmVyID0gIG5vZGUuaXNOdWxsKCkg
PyBwbHVnaW5Db250YWluZXJGcm9tRnJhbWUoZnJhbWUoKSkgOiBwbHVnaW5Db250YWluZXJGcm9t
Tm9kZShub2RlKTsKKyAgICBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXIg
PSAgbm9kZS5pc051bGwoKSA/IHBsdWdpbkNvbnRhaW5lckZyb21GcmFtZShmcmFtZSgpKSA6IHN0
YXRpY19jYXN0PFdlYlBsdWdpbkNvbnRhaW5lckltcGwqPihub2RlLnBsdWdpbkNvbnRhaW5lcigp
KTsKIAogICAgIGlmICghcGx1Z2luQ29udGFpbmVyIHx8ICFwbHVnaW5Db250YWluZXItPnN1cHBv
cnRzUGFnaW5hdGVkUHJpbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJOb2RlLmNwcAppbmRleCAyN2Q1N2NmYmM2ZDdlMmQ2M2EwZTVlYmNjZjZk
MThiYjE2MmQ0Yzg5Li4xOGJjYzM0YjBhZGZlYjA2MzAyZjdjOTVhMTc1ZjFlYzUyMzkxMzg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcApAQCAtMzgsMTIgKzM4LDE3IEBA
CiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiRXZl
bnRMaXN0ZW5lcldyYXBwZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRl
ICJSZW5kZXJXaWRnZXQuaCIKICNpbmNsdWRlICJXZWJET01FdmVudC5oIgogI2luY2x1ZGUgIldl
YkRPTUV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IldlYkVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJXZWJO
b2RlTGlzdC5oIgorI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lci5oIgorI2luY2x1ZGUgIldl
YlBsdWdpbkNvbnRhaW5lckltcGwuaCIKKyNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlICJt
YXJrdXAuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CiAjaW5jbHVkZSA8cHVibGlj
L1dlYlZlY3Rvci5oPgpAQCAtMjM2LDYgKzI0MSwyMiBAQCBib29sIFdlYk5vZGU6Omhhc05vbkVt
cHR5Qm91bmRpbmdCb3goKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPmhhc05vbkVtcHR5
Qm91bmRpbmdCb3goKTsKIH0KIAorV2ViUGx1Z2luQ29udGFpbmVyKiBXZWJOb2RlOjpwbHVnaW5D
b250YWluZXIoKSBjb25zdAoreworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgY29uc3QgTm9kZSogY29yZU5vZGUgPSBjb25zdFVud3JhcDxOb2RlPigpOworICAgIGlm
IChjb3JlTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9iamVjdFRhZykgfHwgY29yZU5vZGUt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjplbWJlZFRhZykpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0
KiBvYmplY3QgPSBjb3JlTm9kZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgaWYgKG9iamVjdCAmJiBv
YmplY3QtPmlzV2lkZ2V0KCkpIHsKKyAgICAgICAgICAgIFdpZGdldCogd2lkZ2V0ID0gV2ViQ29y
ZTo6dG9SZW5kZXJXaWRnZXQob2JqZWN0KS0+d2lkZ2V0KCk7CisgICAgICAgICAgICBpZiAod2lk
Z2V0ICYmIHdpZGdldC0+aXNQbHVnaW5Db250YWluZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViUGx1Z2luQ29udGFpbmVySW1wbCo+KHdpZGdldCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIFdlYk5vZGU6OldlYk5vZGUoY29uc3QgUGFz
c1JlZlB0cjxOb2RlPiYgbm9kZSkKICAgICA6IG1fcHJpdmF0ZShub2RlKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApp
bmRleCA3Mzg0MmExOWY4YmU1Y2Y0OTZjOTgwZjUwODYzMTMwZGMwM2I4MWRjLi4yMzYyZWJiYTY1
MjJkYjBkMmE0OTRhNGY1MDg0MDRlZWE1MTVhMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAtNTMxLDYgKzUz
MSwxNSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldElzQWNjZXB0aW5nVG91Y2hF
dmVudHMoYm9vbCBhY2NlcHRpbmdUb3VjaEV2ZW50cwogICAgICAgICBtX2VsZW1lbnQtPmRvY3Vt
ZW50KCktPmRpZFJlbW92ZVRvdWNoRXZlbnRIYW5kbGVyKCk7CiB9CiAKK1dlYlBvaW50IFdlYlBs
dWdpbkNvbnRhaW5lckltcGw6OndpbmRvd1RvTG9jYWxQb2ludChjb25zdCBXZWJQb2ludCYgcG9p
bnQpCit7CisgICAgU2Nyb2xsVmlldyogdmlldyA9IHBhcmVudCgpOworICAgIGlmICghdmlldykK
KyAgICAgICAgcmV0dXJuIHBvaW50OworICAgIFdlYlBvaW50IHdpbmRvd1BvaW50ID0gdmlldy0+
d2luZG93VG9Db250ZW50cyhwb2ludCk7CisgICAgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChtX2Vs
ZW1lbnQtPnJlbmRlcmVyKCktPmFic29sdXRlVG9Mb2NhbChMYXlvdXRQb2ludCh3aW5kb3dQb2lu
dCksIFVzZVRyYW5zZm9ybXMgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcykpOworfQorCiB2b2lk
IFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgcGx1Z2lu
IHJlY2VpdmVzIHdpbmRvdyBnZW9tZXRyeSBiZWZvcmUgZGF0YSwgb3IgZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCmluZGV4
IDg5ZjI5NzFiNzIzMjllMGZkNjY0Nzk3NjU2ZmEwM2MyZDk0MTVmY2IuLjdlNzk0NDYwN2FmOTMw
NWU3MGZlM2RjZWU3OGE5ZGVkZmNjODA5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKTsKICAgICB2aXJ0dWFsIGJv
b2wgaXNSZWN0VG9wbW9zdChjb25zdCBXZWJSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHNldElz
QWNjZXB0aW5nVG91Y2hFdmVudHMoYm9vbCk7CisgICAgdmlydHVhbCBXZWJQb2ludCB3aW5kb3dU
b0xvY2FsUG9pbnQoY29uc3QgV2ViUG9pbnQmKTsKIAogICAgIC8vIFRoaXMgY2Fubm90IGJlIG51
bGwuCiAgICAgV2ViUGx1Z2luKiBwbHVnaW4oKSB7IHJldHVybiBtX3dlYlBsdWdpbjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlV2ViUGx1Z2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZVdlYlBsdWdpbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWUxY2I5ZmEwMWVlZDI0ZTc4ZGU1ZTY0NTExOGFkYTYzZTNhYTY0MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZVdlYlBsdWdpbi5jcHAKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
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
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGYWtlV2ViUGx1Z2lu
LmgiCisKKyNpbmNsdWRlICJXZWJQbHVnaW5QYXJhbXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitGYWtlV2ViUGx1Z2luOjpGYWtlV2Vi
UGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViUGx1Z2luUGFyYW1zJiBwYXJhbXMpCisg
ICAgOiBtX2ZyYW1lKGZyYW1lKQoreworfQorCitGYWtlV2ViUGx1Z2luOjp+RmFrZVdlYlBsdWdp
bigpCit7Cit9CisKK2Jvb2wgRmFrZVdlYlBsdWdpbjo6aW5pdGlhbGl6ZShXZWJQbHVnaW5Db250
YWluZXIqIGNvbnRhaW5lcikKK3sKKyAgICBtX2NvbnRhaW5lciA9IGNvbnRhaW5lcjsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBGYWtlV2ViUGx1Z2luOjpkZXN0cm95KCkKK3sKKyAgICBt
X2NvbnRhaW5lciA9IDA7CisgICAgbV9mcmFtZSA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlICBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZVdlYlBs
dWdpbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlV2ViUGx1Z2luLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2VlNDFjOGRjNjJmNDNjOGJiMWNkYjZiYTM0Nzk2OTJmZmIwYTg0ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZVdlYlBsdWdpbi5o
CkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZha2VXZWJQbHVnaW5faAorI2RlZmluZSBGYWtlV2Vi
UGx1Z2luX2gKKworI2luY2x1ZGUgIldlYlBsdWdpbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViRHJhZ0RhdGE7CitjbGFzcyBXZWJGcmFtZTsKK2NsYXNzIFdlYklucHV0RXZl
bnQ7CitjbGFzcyBXZWJQbHVnaW5Db250YWluZXI7CitjbGFzcyBXZWJVUkw7CitjbGFzcyBXZWJV
UkxSZXF1ZXN0OworY2xhc3MgV2ViVVJMUmVzcG9uc2U7CisKK2NsYXNzIEZha2VXZWJQbHVnaW4g
OiBwdWJsaWMgV2ViUGx1Z2luIHsKK3B1YmxpYzoKKyAgICBGYWtlV2ViUGx1Z2luKFdlYktpdDo6
V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlBsdWdpblBhcmFtcyYpOworICAgIHZpcnR1YWwg
fkZha2VXZWJQbHVnaW4oKTsKKworICAgIC8vIFdlYlBsdWdpbiBtZXRob2RzOgorICAgIHZpcnR1
YWwgYm9vbCBpbml0aWFsaXplKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVyKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIE5QT2Jq
ZWN0KiBzY3JpcHRhYmxlT2JqZWN0KCkgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgYm9vbCBjYW5Qcm9jZXNzRHJhZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYktpdDo6V2ViQ2FudmFzKiwgY29uc3QgV2ViS2l0
OjpXZWJSZWN0JikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5
KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlJlY3Qm
IGNsaXBSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OldlYlJlY3Q+JiBjdXRP
dXRzUmVjdHMsIGJvb2wgaXNWaXNpYmxlKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRm9jdXMoYm9vbCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZp
c2liaWxpdHkoYm9vbCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBib29sIGFjY2VwdHNJbnB1
dEV2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlSW5wdXRFdmVudChjb25zdCBXZWJLaXQ6OldlYklucHV0RXZlbnQmLCBXZWJLaXQ6OldlYkN1
cnNvckluZm8mKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVEcmFnU3RhdHVzVXBkYXRlKFdlYktpdDo6V2ViRHJhZ1N0YXR1cywgY29uc3QgV2ViS2l0
OjpXZWJEcmFnRGF0YSYsIFdlYktpdDo6V2ViRHJhZ09wZXJhdGlvbnNNYXNrLCBjb25zdCBXZWJL
aXQ6OldlYlBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViS2l0OjpXZWJQb2ludCYgc2NyZWVuUG9z
aXRpb24pIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBXZWJLaXQ6OldlYlVSTFJlc3BvbnNlJikgT1ZFUlJJREUgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZygpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBX
ZWJLaXQ6OldlYlVSTEVycm9yJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmdGcmFtZVJlcXVlc3QoY29uc3QgV2ViS2l0OjpXZWJVUkwmLCB2b2lkKiBub3Rp
ZnlEYXRhKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmdGcmFt
ZVJlcXVlc3QoY29uc3QgV2ViS2l0OjpXZWJVUkwmLCB2b2lkKiBub3RpZnlEYXRhLCBjb25zdCBX
ZWJLaXQ6OldlYlVSTEVycm9yJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBib29sIGlzUGxh
Y2Vob2xkZXIoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCitwcml2YXRlOgorICAgIFdl
YkZyYW1lKiBtX2ZyYW1lOworICAgIFdlYlBsdWdpbkNvbnRhaW5lciogbV9jb250YWluZXI7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEZha2VXZWJQbHVnaW5faApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxwZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5jcHAK
aW5kZXggYzNlOGJmMDhkZGJmNmQ5YzgzMzk3YmZiOWMwOGE4ZjM2NTk1NzYyNy4uNjQxMjEyNDVh
YmQ5YzI4MWJkZTBkYzFhZWJhOWU2YTM4OGY5MGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAj
aW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKLSNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIldlYlNldHRpbmdzLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAj
aW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMUmVxdWVzdC5oIgpAQCAtNTQsOSArNTMsNiBAQCB2b2lk
IGxvYWRGcmFtZShXZWJGcmFtZSogZnJhbWUsIGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmwpCiAgICAg
ZnJhbWUtPmxvYWRSZXF1ZXN0KHVybFJlcXVlc3QpOwogfQogCi1jbGFzcyBUZXN0V2ViRnJhbWVD
bGllbnQgOiBwdWJsaWMgV2ViRnJhbWVDbGllbnQgewotfTsKLQogc3RhdGljIFdlYkZyYW1lQ2xp
ZW50KiBkZWZhdWx0V2ViRnJhbWVDbGllbnQoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
VGVzdFdlYkZyYW1lQ2xpZW50LCBjbGllbnQsICgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmgKaW5kZXggYmZiNTdiNjdjZDI5MDEwZTg2N2Nk
MmJlODVmMTM0ZWZjZWI3ZDk0ZS4uNWU5NTQ4NWYyZTY0YWQ2M2UzMTczOTUxODQ3NzQzYTdkMWE0
ZDBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RI
ZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxw
ZXJzLmgKQEAgLTMxLDE3ICszMSwyMCBAQAogI2lmbmRlZiBGcmFtZVRlc3RIZWxwZXJzX2gKICNk
ZWZpbmUgRnJhbWVUZXN0SGVscGVyc19oCiAKKyNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgog
I2luY2x1ZGUgPHN0cmluZz4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1l
OwotY2xhc3MgV2ViRnJhbWVDbGllbnQ7CiBjbGFzcyBXZWJWaWV3OwogY2xhc3MgV2ViVmlld0Ns
aWVudDsKIAogbmFtZXNwYWNlIEZyYW1lVGVzdEhlbHBlcnMgewogCitjbGFzcyBUZXN0V2ViRnJh
bWVDbGllbnQgOiBwdWJsaWMgV2ViRnJhbWVDbGllbnQgeworfTsKKwogdm9pZCBsb2FkRnJhbWUo
V2ViRnJhbWUqLCBjb25zdCBzdGQ6OnN0cmluZyYgdXJsKTsKIAogV2ViVmlldyogY3JlYXRlV2Vi
Vmlld0FuZExvYWQoY29uc3Qgc3RkOjpzdHJpbmcmIHVybCwgYm9vbCBlbmFibGVKYXZhc2NyaXB0
ID0gZmFsc2UsIFdlYkZyYW1lQ2xpZW50KiA9IDAsIFdlYlZpZXdDbGllbnQqID0gMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBsdWdpbkNvbnRhaW5lclRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQbHVnaW5Db250YWluZXJU
ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45YzVlNzEwNjM0M2RmMGQxMDMwOTk2MjFhZTRkOTQ1NGI5NGU5
YjNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQ
bHVnaW5Db250YWluZXJUZXN0LmNwcApAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXIuaCIKKworI2luY2x1ZGUgIkVsZW1lbnQu
aCIKKyNpbmNsdWRlICJGYWtlV2ViUGx1Z2luLmgiCisjaW5jbHVkZSAiRnJhbWVUZXN0SGVscGVy
cy5oIgorI2luY2x1ZGUgIlVSTFRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiV2ViRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJXZWJFbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNs
dWRlICJXZWJGcmFtZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgorI2luY2x1
ZGUgIldlYlBsdWdpbkNvbnRhaW5lckltcGwuaCIKKyNpbmNsdWRlICJXZWJQbHVnaW5QYXJhbXMu
aCIKKyNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKKyNpbmNs
dWRlICJXZWJWaWV3SW1wbC5oIgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8
d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgV2ViUGx1Z2luQ29udGFpbmVyVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICBXZWJQbHVnaW5Db250YWluZXJUZXN0KCkK
KyAgICAgICAgOiBtX2Jhc2VVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vIikKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIHdlYmtpdF9z
dXBwb3J0OjpVbnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOworICAgIH0KKworcHJvdGVjdGVkOgor
ICAgIHN0ZDo6c3RyaW5nIG1fYmFzZVVSTDsKK307CisKK2NsYXNzIFRlc3RQbHVnaW5XZWJGcmFt
ZUNsaWVudCA6IHB1YmxpYyBGcmFtZVRlc3RIZWxwZXJzOjpUZXN0V2ViRnJhbWVDbGllbnQgewor
ICAgIHZpcnR1YWwgV2ViUGx1Z2luKiBjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBjb25z
dCBXZWJQbHVnaW5QYXJhbXMmIHBhcmFtcykgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGlmIChw
YXJhbXMubWltZVR5cGUgPT0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiYXBwbGljYXRpb24veC13ZWJr
aXQtdGVzdC13ZWJwbHVnaW4iKSkKKyAgICAgICAgICAgIHJldHVybiBuZXcgRmFrZVdlYlBsdWdp
bihmcmFtZSwgcGFyYW1zKTsKKyAgICAgICAgcmV0dXJuIFdlYkZyYW1lQ2xpZW50OjpjcmVhdGVQ
bHVnaW4oZnJhbWUsIHBhcmFtcyk7CisgICAgfQorfTsKKworV2ViUGx1Z2luQ29udGFpbmVyKiBn
ZXRXZWJQbHVnaW5Db250YWluZXIoV2ViVmlldyogd2ViVmlldywgY29uc3QgV2ViU3RyaW5nJiBp
ZCkKK3sKKyAgICBXZWJFbGVtZW50IGVsZW1lbnQgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9j
dW1lbnQoKS5nZXRFbGVtZW50QnlJZChpZCk7CisgICAgcmV0dXJuIGVsZW1lbnQucGx1Z2luQ29u
dGFpbmVyKCk7Cit9CisKK1RFU1RfRihXZWJQbHVnaW5Db250YWluZXJUZXN0LCBXaW5kb3dUb0xv
Y2FsUG9pbnRUZXN0KQoreworICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTEZy
b21CYXNlVVJMKFdlYlN0cmluZzo6ZnJvbVVURjgobV9iYXNlVVJMLmNfc3RyKCkpLCBXZWJTdHJp
bmc6OmZyb21VVEY4KCJwbHVnaW5fY29udGFpbmVyLmh0bWwiKSk7CisgICAgV2ViVmlldyogd2Vi
VmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCAr
ICJwbHVnaW5fY29udGFpbmVyLmh0bWwiLCB0cnVlLCBuZXcgVGVzdFBsdWdpbldlYkZyYW1lQ2xp
ZW50KCkpOworICAgIEFTU0VSVCh3ZWJWaWV3KTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5z
ZXRQbHVnaW5zRW5hYmxlZCh0cnVlKTsKKyAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSgzMDAs
IDMwMCkpOworICAgIHdlYlZpZXctPmxheW91dCgpOworICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5B
bGxQZW5kaW5nTWVzc2FnZXMoKTsKKworICAgIFdlYlBsdWdpbkNvbnRhaW5lciogcGx1Z2luQ29u
dGFpbmVyT25lID0gZ2V0V2ViUGx1Z2luQ29udGFpbmVyKHdlYlZpZXcsIFdlYlN0cmluZzo6ZnJv
bVVURjgoInRyYW5zbGF0ZWQtcGx1Z2luIikpOworICAgIEFTU0VSVChwbHVnaW5Db250YWluZXJP
bmUpOworICAgIFdlYlBvaW50IHBvaW50MSA9IHBsdWdpbkNvbnRhaW5lck9uZS0+d2luZG93VG9M
b2NhbFBvaW50KFdlYlBvaW50KDEwLCAxMCkpOworICAgIEFTU0VSVF9FUSgwLCBwb2ludDEueCk7
CisgICAgQVNTRVJUX0VRKDAsIHBvaW50MS55KTsKKyAgICBXZWJQb2ludCBwb2ludDIgPSBwbHVn
aW5Db250YWluZXJPbmUtPndpbmRvd1RvTG9jYWxQb2ludChXZWJQb2ludCgxMDAsIDEwMCkpOwor
ICAgIEFTU0VSVF9FUSg5MCwgcG9pbnQyLngpOworICAgIEFTU0VSVF9FUSg5MCwgcG9pbnQyLnkp
OworCisgICAgV2ViUGx1Z2luQ29udGFpbmVyKiBwbHVnaW5Db250YWluZXJUd28gPSBnZXRXZWJQ
bHVnaW5Db250YWluZXIod2ViVmlldywgV2ViU3RyaW5nOjpmcm9tVVRGOCgicm90YXRlZC1wbHVn
aW4iKSk7CisgICAgQVNTRVJUKHBsdWdpbkNvbnRhaW5lclR3byk7CisgICAgV2ViUG9pbnQgcG9p
bnQzID0gcGx1Z2luQ29udGFpbmVyVHdvLT53aW5kb3dUb0xvY2FsUG9pbnQoV2ViUG9pbnQoMCwg
MTApKTsKKyAgICBBU1NFUlRfRVEoMTAsIHBvaW50My54KTsKKyAgICBBU1NFUlRfRVEoMCwgcG9p
bnQzLnkpOworICAgIFdlYlBvaW50IHBvaW50NCA9IHBsdWdpbkNvbnRhaW5lclR3by0+d2luZG93
VG9Mb2NhbFBvaW50KFdlYlBvaW50KC0xMCwgMTApKTsKKyAgICBBU1NFUlRfRVEoMTAsIHBvaW50
NC54KTsKKyAgICBBU1NFUlRfRVEoMTAsIHBvaW50NC55KTsKKworICAgIHdlYlZpZXctPmNsb3Nl
KCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0
YS9wbHVnaW5fY29udGFpbmVyLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2Rh
dGEvcGx1Z2luX2NvbnRhaW5lci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxM2NhODA0ZTg3NmU1MDM3Nzg0
NjkxYzM1N2YxYjgyY2M2ODBjODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL2RhdGEvcGx1Z2luX2NvbnRhaW5lci5odG1sCkBAIC0wLDAgKzEsMjQgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4KKyAgICBib2R5IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisgIDwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgPG9iamVjdCBpZD0icm90YXRlZC1wbHVnaW4iCisgICAgICBzdHlsZT0i
LXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OiAwOyBsZWZ0OiAwOyAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAgMDsiCisgICAgICB0eXBl
PSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LXdlYnBsdWdpbiIKKyAgICAgIGJvcmRlcj0wCisg
ICAgICB3aWR0aD0iNDAiCisgICAgICBoZWlnaHQ9IjQwIj4KKyAgPC9vYmplY3Q+CisgIDxvYmpl
Y3QgaWQ9InRyYW5zbGF0ZWQtcGx1Z2luIgorICAgICAgYm9yZGVyPTAKKyAgICAgIHN0eWxlPSIt
d2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDEwcHgsIDEwcHgpOyBwb3NpdGlvbjogYWJzb2x1
dGU7IHRvcDogMDsgbGVmdDogMDsiCisgICAgICB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10
ZXN0LXdlYnBsdWdpbiIKKyAgICAgIHdpZHRoPSI0MCIKKyAgICAgIGhlaWdodD0iNDAiPgorICA8
L29iamVjdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174583</attachid>
            <date>2012-11-15 18:19:13 -0800</date>
            <delta_ts>2012-11-16 13:28:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102339-20121115211710.patch</filename>
            <type>text/plain</type>
            <size>24484</size>
            <attacher>lazyboy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggY2VjMTgzYzE5YmVlNWNkZmU0ZTk2ODYzNzU0
ZGI0NDI1ZTQ4NzY4Ni4uYjRmNmYxMWYxYWE2NzRhN2YxNmMxMTFjZTBiMmJjODkzYjk0Njg4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMi0xMS0xNCAg
SXN0aWFxdWUgQWhtZWQgIDxsYXp5Ym95QGNocm9taXVtLm9yZz4KKworICAgICAgICBQcm92aWRl
IHBhZ2Uvd2luZG93IGNvb3JkaW5hdGVzIHRvIHBsdWdpbidzIGxvY2FsIGNvb3JkaW5hdGVzIHRy
YW5zbGF0aW9uIGluIFdlYlBsdWdpbkNvbnRhaW5lci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjMzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHdpbGwgYWxsb3cgY29udmVydGlu
ZyBhIHBhZ2UncyB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gcGx1Z2lucydzIGxvY2FsIGNvb3JkaW5h
dGVzLAorICAgICAgICB0YWtpbmcgQ1NTIHRyYW5zZm9ybWF0aW9ucyBpbnRvIGFjY291bnQuIEVt
YmVkZGVyIHBhZ2Ugb2YgdGhlIHBsdWdpbiBjYW4gdXNlIHRoaXMgaW5mb3JtYXRpb24KKyAgICAg
ICAgZm9yIHRhcmdldHRpbmcgZWxlbWVudHMgaW5zaWRlIHRoZSBwbHVnaW4gKGUuZy4gZGV2dG9v
bHMgY2FuIGluc3BlY3QgYSBzcGVjaWZpYyBlbGVtZW50IGF0IHRoZQorICAgICAgICBsb2NhbCBj
b29yZGluYXRlIHBvc2l0aW9uIGluc2lkZSBwbHVnaW4pLgorCisgICAgICAgICogV2ViS2l0Lmd5
cDoKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2ViTm9kZS5oOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBwdWJsaWMvV2ViUGx1Z2luQ29udGFpbmVyLmg6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFpbmVyKToKKyAgICAg
ICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBs
OjpleGVjdXRlQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6cHJpbnRC
ZWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6aXNQcmludFNjYWxpbmdEaXNh
YmxlZEZvclBsdWdpbik6CisgICAgICAgICogc3JjL1dlYk5vZGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb2RlOjpwbHVnaW5Db250YWluZXIpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsdWdpbkNvbnRhaW5lckltcGw6OndpbmRvd1RvTG9jYWxQb2ludCk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmg6CisgICAgICAgIChX
ZWJQbHVnaW5Db250YWluZXJJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9GYWtlV2ViUGx1Z2luLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpGYWtlV2ViUGx1
Z2luOjpGYWtlV2ViUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYlBsdWdpbjo6fkZh
a2VXZWJQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpGYWtlV2ViUGx1Z2luOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYlBsdWdpbjo6ZGVzdHJveSk6CisgICAgICAgICog
dGVzdHMvRmFrZVdlYlBsdWdpbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChGYWtlV2ViUGx1Z2luKToKKyAgICAgICAgKiB0ZXN0cy9XZWJQbHVnaW5Db250YWluZXJUZXN0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFp
bmVyVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lclRlc3Q6OldlYlBs
dWdpbkNvbnRhaW5lclRlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJU
ZXN0OjpUZWFyRG93bik6CisgICAgICAgIChXZWJLaXQ6OmdldFdlYlBsdWdpbkNvbnRhaW5lcik6
CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvZGF0YS9wbHVnaW5f
Y29udGFpbmVyLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTE0ICBNaWtlIFJlZWQgIDxyZWVkQGdv
b2dsZS5jb20+CiAKICAgICAgICAgRHluYW1pY2FsbHkgY3JlYXRlIGNhbnZhcyBpbiBTZXR1cCgp
IHRvIGF2b2lkIGNhbGxpbmcgREVQUkVDQVRFRCBmdW5jdGlvbiBzZXREZXZpY2UoKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA0NzYwYzdmZTYxMmZlYjYzMzQwNWNiNTRlZDE4MjFi
MzVkYTlmNjA1Li5lMzQ4MjVhN2EyN2U0OWVjMmUxZjczMzQ1OTc2YWEzZDA3MTBjYzA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC03MTQsNiArNzE0LDcgQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIyBmdW5jdGlvbnMgZGVmaW5lZCBvbmx5IGluICFXRUJLSVRf
SU1QTEVNRU5UQVRJT04uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9B
c3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndGVzdHMvRXZlbnRMaXN0ZW5lclRlc3QuY3BwJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Rlc3RzL0Zha2VXZWJQbHVnaW4uY3BwJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9MZXZlbERCVGVzdC5jcHAn
LApAQCAtNzI4LDYgKzcyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0
ZXN0cy9XZWJJbWFnZVRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJQbHVnaW5Db250YWluZXJUZXN0LmNw
cCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYlZpZXdUZXN0LmNw
cCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnY29uZGl0aW9ucyc6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4
IDAwMjlkYTRiMDc1ZTA3M2NiZmQ2NDFiMDIwNGJjMDA4MDNjNDFmNDcuLmRkNWQ2Y2YxYjZiZThi
MGNiMDk3ZWYwZTI1NGZkMDEwM2VmM2QwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
aQpAQCAtNjQsNiArNjQsOCBAQAogICAgICAgICAgICAgJ3Rlc3RzL0RlZmVycmVkSW1hZ2VEZWNv
ZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9FdmVudExpc3RlbmVyVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rl
c3RzL0Zha2VXZWJQbHVnaW4uY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9GYWtlV2ViUGx1Z2lu
LmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0Zha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZS5o
JywKICAgICAgICAgICAgICd0ZXN0cy9GYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAgICAg
ICAgICAgICAndGVzdHMvRmlsdGVyT3BlcmF0aW9uc1Rlc3QuY3BwJywKQEAgLTExMyw2ICsxMTUs
NyBAQAogICAgICAgICAgICAgJ3Rlc3RzL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbFRlc3QuY3Bw
JywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwJywKKyAgICAgICAgICAg
ICd0ZXN0cy9XZWJQbHVnaW5Db250YWluZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMv
V2ViU29ja2V0RGVmbGF0ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJVUkxS
ZXF1ZXN0VGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViTm9kZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5oCmlu
ZGV4IDU4NjlhZWVjNjI3NzUyN2JlODcxYmQyNDc0YTBmNmFjNDNkZWM3ZWQuLmU4NGE3YjAxYjVi
MGUzYjg0NzUxY2NlMjI1MTQzZDJmMWY2MmFhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJOb2RlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgV2ViRG9jdW1lbnQ7CiBjbGFz
cyBXZWJFbGVtZW50OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJOb2RlTGlzdDsKK2NsYXNz
IFdlYlBsdWdpbkNvbnRhaW5lcjsKIAogLy8gUHJvdmlkZXMgYWNjZXNzIHRvIHNvbWUgcHJvcGVy
dGllcyBvZiBhIERPTSBub2RlLgogY2xhc3MgV2ViTm9kZSB7CkBAIC0xMTksNiArMTIwLDcgQEAg
cHVibGljOgogICAgIC8vIFRoaXMgZG9lcyBub3QgMTAwJSBndWFyYW50ZWUgdGhlIHVzZXIgY2Fu
IHNlZSBpdCwgYnV0IGlzIHByZXR0eSBjbG9zZS4KICAgICAvLyBOb3RlOiBUaGlzIG1ldGhvZCBv
bmx5IHdvcmtzIHByb3Blcmx5IGFmdGVyIGxheW91dCBoYXMgb2NjdXJyZWQuCiAgICAgV0VCS0lU
X0VYUE9SVCBib29sIGhhc05vbkVtcHR5Qm91bmRpbmdCb3goKSBjb25zdDsKKyAgICBXRUJLSVRf
RVhQT1JUIFdlYlBsdWdpbkNvbnRhaW5lciogcGx1Z2luQ29udGFpbmVyKCkgY29uc3Q7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHRvKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5Db250YWluZXIuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkNvbnRhaW5lci5oCmluZGV4IGRlYmUyNjAzODAx
YjhmYzE4YzcyMTNkNDhlMjEwMzA4YmFjZWVjMzAuLmQwYTRkYjE1NTQ4YmEyODQ1OGY0MDAyZjhl
ZTgyMTAxZjRiOGQ0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlBsdWdpbkNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlBsdWdpbkNvbnRhaW5lci5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIFdlYlBsdWdpbjsK
IGNsYXNzIFdlYlN0cmluZzsKIGNsYXNzIFdlYlVSTDsKIGNsYXNzIFdlYlVSTFJlcXVlc3Q7Citz
dHJ1Y3QgV2ViUG9pbnQ7CiBzdHJ1Y3QgV2ViUmVjdDsKIAogY2xhc3MgV2ViUGx1Z2luQ29udGFp
bmVyIHsKQEAgLTExMSw2ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgLy8gTm90aWZpZXMgd2hlbiB0
aGUgcGx1Z2luIHN0YXJ0cy9zdG9wcyBhY2NlcHRpbmcgdG91Y2ggZXZlbnRzLgogICAgIHZpcnR1
YWwgdm9pZCBzZXRJc0FjY2VwdGluZ1RvdWNoRXZlbnRzKGJvb2wpID0gMDsKIAorICAgIC8vIENv
bnZlcnRzIHZpZXcncyB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gcGx1Z2luJ3MgbG9jYWwgY29vcmRp
bmF0ZXMuCisgICAgdmlydHVhbCBXZWJQb2ludCB3aW5kb3dUb0xvY2FsUG9pbnQoY29uc3QgV2Vi
UG9pbnQmKSA9IDA7CisKICAgICB2aXJ0dWFsIFdlYlBsdWdpbiogcGx1Z2luKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRQbHVnaW4oV2ViUGx1Z2luKikgPSAwOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCAxOTM2NDc2ZjNhZTFhMjAxNDAz
M2RjM2ZkYjdlMGNhYjVjYThjN2YyLi4zN2YxNDRmMjFlZTJmYWE0NTJmZGZlODM2NjRjYjc1MWFk
MjlkOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAK
QEAgLTEzMCw3ICsxMzAsNiBAQAogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUg
IlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSAi
UmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgpAQCAtMzA0LDIz
ICszMDMsNiBAQCBzdGF0aWMgbG9uZyBsb25nIGdlbmVyYXRlRnJhbWVJZGVudGlmaWVyKCkKICAg
ICByZXR1cm4gKytuZXh0OwogfQogCi1zdGF0aWMgV2ViUGx1Z2luQ29udGFpbmVySW1wbCogcGx1
Z2luQ29udGFpbmVyRnJvbU5vZGUoY29uc3QgV2ViTm9kZSYgbm9kZSkKLXsKLSAgICBpZiAobm9k
ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb25zdCBOb2RlKiBjb3JlTm9k
ZSA9IG5vZGUuY29uc3RVbndyYXA8Tm9kZT4oKTsKLSAgICBpZiAoY29yZU5vZGUtPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjpvYmplY3RUYWcpIHx8IGNvcmVOb2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6ZW1iZWRUYWcpKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gY29yZU5vZGUt
PnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LT5pc1dpZGdldCgpKSB7
Ci0gICAgICAgICAgICBXaWRnZXQqIHdpZGdldCA9IHRvUmVuZGVyV2lkZ2V0KG9iamVjdCktPndp
ZGdldCgpOwotICAgICAgICAgICAgaWYgKHdpZGdldCAmJiB3aWRnZXQtPmlzUGx1Z2luQ29udGFp
bmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYlBsdWdpbkNvbnRh
aW5lckltcGwqPih3aWRnZXQpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAwOwotfQot
CiBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBXZWJGcmFtZUltcGw6OnBsdWdpbkNvbnRhaW5lckZy
b21GcmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTEyMzIsNyArMTIx
NCw3IEBAIGJvb2wgV2ViRnJhbWVJbXBsOjpleGVjdXRlQ29tbWFuZChjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYk5vZGUmIG5vZGUpCiAgICAgaWYgKGNvbW1hbmQgPT0gIkNvcHkiKSB7
CiAgICAgICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbkNvbnRhaW5lciA9IHBsdWdp
bkNvbnRhaW5lckZyb21GcmFtZShmcmFtZSgpKTsKICAgICAgICAgaWYgKCFwbHVnaW5Db250YWlu
ZXIpCi0gICAgICAgICAgICBwbHVnaW5Db250YWluZXIgPSBwbHVnaW5Db250YWluZXJGcm9tTm9k
ZShub2RlKTsKKyAgICAgICAgICAgIHBsdWdpbkNvbnRhaW5lciA9IHN0YXRpY19jYXN0PFdlYlBs
dWdpbkNvbnRhaW5lckltcGwqPihub2RlLnBsdWdpbkNvbnRhaW5lcigpKTsKICAgICAgICAgaWYg
KHBsdWdpbkNvbnRhaW5lcikgewogICAgICAgICAgICAgcGx1Z2luQ29udGFpbmVyLT5jb3B5KCk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0MjgsNyArMTQxMCw3IEBAIGludCBXZWJG
cmFtZUltcGw6OnByaW50QmVnaW4oY29uc3QgV2ViUHJpbnRQYXJhbXMmIHByaW50UGFyYW1zLCBj
b25zdCBXZWJOb2RlJiBjCiAgICAgICAgIHBsdWdpbkNvbnRhaW5lciA9IHBsdWdpbkNvbnRhaW5l
ckZyb21GcmFtZShmcmFtZSgpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBXZSBvbmx5IHN1
cHBvcnQgcHJpbnRpbmcgcGx1Z2luIG5vZGVzIGZvciBub3cuCi0gICAgICAgIHBsdWdpbkNvbnRh
aW5lciA9IHBsdWdpbkNvbnRhaW5lckZyb21Ob2RlKGNvbnN0cmFpblRvTm9kZSk7CisgICAgICAg
IHBsdWdpbkNvbnRhaW5lciA9IHN0YXRpY19jYXN0PFdlYlBsdWdpbkNvbnRhaW5lckltcGwqPihj
b25zdHJhaW5Ub05vZGUucGx1Z2luQ29udGFpbmVyKCkpOwogICAgIH0KIAogICAgIGlmIChwbHVn
aW5Db250YWluZXIgJiYgcGx1Z2luQ29udGFpbmVyLT5zdXBwb3J0c1BhZ2luYXRlZFByaW50KCkp
CkBAIC0xNDc3LDcgKzE0NTksNyBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6cHJpbnRFbmQoKQogCiBi
b29sIFdlYkZyYW1lSW1wbDo6aXNQcmludFNjYWxpbmdEaXNhYmxlZEZvclBsdWdpbihjb25zdCBX
ZWJOb2RlJiBub2RlKQogewotICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbkNvbnRh
aW5lciA9ICBub2RlLmlzTnVsbCgpID8gcGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKGZyYW1lKCkp
IDogcGx1Z2luQ29udGFpbmVyRnJvbU5vZGUobm9kZSk7CisgICAgV2ViUGx1Z2luQ29udGFpbmVy
SW1wbCogcGx1Z2luQ29udGFpbmVyID0gIG5vZGUuaXNOdWxsKCkgPyBwbHVnaW5Db250YWluZXJG
cm9tRnJhbWUoZnJhbWUoKSkgOiBzdGF0aWNfY2FzdDxXZWJQbHVnaW5Db250YWluZXJJbXBsKj4o
bm9kZS5wbHVnaW5Db250YWluZXIoKSk7CiAKICAgICBpZiAoIXBsdWdpbkNvbnRhaW5lciB8fCAh
cGx1Z2luQ29udGFpbmVyLT5zdXBwb3J0c1BhZ2luYXRlZFByaW50KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk5vZGUu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5jcHAKaW5kZXggMjdkNTdj
ZmJjNmQ3ZTJkNjNhMGU1ZWJjY2Y2ZDE4YmIxNjJkNGM4OS4uMThiY2MzNGIwYWRmZWIwNjMwMmY3
Yzk1YTE3NWYxZWM1MjM5MTM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5j
cHAKQEAgLTM4LDEyICszOCwxNyBAQAogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXJXcmFwcGVyLmgiCisjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiV2ViRE9N
RXZlbnQuaCIKICNpbmNsdWRlICJXZWJET01FdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2Vi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJ
bXBsLmgiCiAjaW5jbHVkZSAiV2ViTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJXZWJQbHVnaW5Db250
YWluZXIuaCIKKyNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXJJbXBsLmgiCisjaW5jbHVkZSAi
V2lkZ2V0LmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYlN0cmlu
Zy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJWZWN0b3IuaD4KQEAgLTIzNiw2ICsyNDEsMjIgQEAg
Ym9vbCBXZWJOb2RlOjpoYXNOb25FbXB0eUJvdW5kaW5nQm94KCkgY29uc3QKICAgICByZXR1cm4g
bV9wcml2YXRlLT5oYXNOb25FbXB0eUJvdW5kaW5nQm94KCk7CiB9CiAKK1dlYlBsdWdpbkNvbnRh
aW5lciogV2ViTm9kZTo6cGx1Z2luQ29udGFpbmVyKCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiAwOworICAgIGNvbnN0IE5vZGUqIGNvcmVOb2RlID0gY29uc3RV
bndyYXA8Tm9kZT4oKTsKKyAgICBpZiAoY29yZU5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpv
YmplY3RUYWcpIHx8IGNvcmVOb2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZW1iZWRUYWcpKSB7
CisgICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gY29yZU5vZGUtPnJlbmRlcmVyKCk7Cisg
ICAgICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LT5pc1dpZGdldCgpKSB7CisgICAgICAgICAgICBX
aWRnZXQqIHdpZGdldCA9IFdlYkNvcmU6OnRvUmVuZGVyV2lkZ2V0KG9iamVjdCktPndpZGdldCgp
OworICAgICAgICAgICAgaWYgKHdpZGdldCAmJiB3aWRnZXQtPmlzUGx1Z2luQ29udGFpbmVyKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYlBsdWdpbkNvbnRhaW5lcklt
cGwqPih3aWRnZXQpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCiBXZWJO
b2RlOjpXZWJOb2RlKGNvbnN0IFBhc3NSZWZQdHI8Tm9kZT4mIG5vZGUpCiAgICAgOiBtX3ByaXZh
dGUobm9kZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBs
dWdpbkNvbnRhaW5lckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1
Z2luQ29udGFpbmVySW1wbC5jcHAKaW5kZXggNzM4NDJhMTlmOGJlNWNmNDk2Yzk4MGY1MDg2MzEz
MGRjMDNiODFkYy4uMjM2MmViYmE2NTIyZGIwZDJhNDk0YTRmNTA4NDA0ZWVhNTE1YTBmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVy
SW1wbC5jcHAKQEAgLTUzMSw2ICs1MzEsMTUgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBs
OjpzZXRJc0FjY2VwdGluZ1RvdWNoRXZlbnRzKGJvb2wgYWNjZXB0aW5nVG91Y2hFdmVudHMKICAg
ICAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLT5kaWRSZW1vdmVUb3VjaEV2ZW50SGFuZGxlcigp
OwogfQogCitXZWJQb2ludCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjp3aW5kb3dUb0xvY2FsUG9p
bnQoY29uc3QgV2ViUG9pbnQmIHBvaW50KQoreworICAgIFNjcm9sbFZpZXcqIHZpZXcgPSBwYXJl
bnQoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBwb2ludDsKKyAgICBXZWJQb2lu
dCB3aW5kb3dQb2ludCA9IHZpZXctPndpbmRvd1RvQ29udGVudHMocG9pbnQpOworICAgIHJldHVy
biByb3VuZGVkSW50UG9pbnQobV9lbGVtZW50LT5yZW5kZXJlcigpLT5hYnNvbHV0ZVRvTG9jYWwo
TGF5b3V0UG9pbnQod2luZG93UG9pbnQpLCBVc2VUcmFuc2Zvcm1zIHwgU25hcE9mZnNldEZvclRy
YW5zZm9ybXMpKTsKK30KKwogdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgLy8gTWFr
ZSBzdXJlIHRoYXQgdGhlIHBsdWdpbiByZWNlaXZlcyB3aW5kb3cgZ2VvbWV0cnkgYmVmb3JlIGRh
dGEsIG9yIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBs
dWdpbkNvbnRhaW5lckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdp
bkNvbnRhaW5lckltcGwuaAppbmRleCA4OWYyOTcxYjcyMzI5ZTBmZDY2NDc5NzY1NmZhMDNjMmQ5
NDE1ZmNiLi43ZTc5NDQ2MDdhZjkzMDVlNzBmZTNkY2VlNzhhOWRlZGZjYzgwOWQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5o
CkBAIC0xMTMsNiArMTEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUo
Ym9vbCk7CiAgICAgdmlydHVhbCBib29sIGlzUmVjdFRvcG1vc3QoY29uc3QgV2ViUmVjdCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRJc0FjY2VwdGluZ1RvdWNoRXZlbnRzKGJvb2wpOworICAgIHZp
cnR1YWwgV2ViUG9pbnQgd2luZG93VG9Mb2NhbFBvaW50KGNvbnN0IFdlYlBvaW50Jik7CiAKICAg
ICAvLyBUaGlzIGNhbm5vdCBiZSBudWxsLgogICAgIFdlYlBsdWdpbiogcGx1Z2luKCkgeyByZXR1
cm4gbV93ZWJQbHVnaW47IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvRmFrZVdlYlBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VX
ZWJQbHVnaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMWNiOWZhMDFlZWQyNGU3OGRlNWU2NDUxMThhZGE2
M2UzYWE2NDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0Zha2VXZWJQbHVnaW4uY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRmFrZVdlYlBsdWdpbi5oIgorCisjaW5jbHVkZSAiV2ViUGx1Z2luUGFyYW1zLmgi
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
RmFrZVdlYlBsdWdpbjo6RmFrZVdlYlBsdWdpbihXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYlBs
dWdpblBhcmFtcyYgcGFyYW1zKQorICAgIDogbV9mcmFtZShmcmFtZSkKK3sKK30KKworRmFrZVdl
YlBsdWdpbjo6fkZha2VXZWJQbHVnaW4oKQoreworfQorCitib29sIEZha2VXZWJQbHVnaW46Omlu
aXRpYWxpemUoV2ViUGx1Z2luQ29udGFpbmVyKiBjb250YWluZXIpCit7CisgICAgbV9jb250YWlu
ZXIgPSBjb250YWluZXI7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRmFrZVdlYlBsdWdp
bjo6ZGVzdHJveSgpCit7CisgICAgbV9jb250YWluZXIgPSAwOworICAgIG1fZnJhbWUgPSAwOwor
fQorCit9IC8vIG5hbWVzcGFjZSAgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0Zha2VXZWJQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvRmFrZVdlYlBsdWdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlZTQxYzhkYzYyZjQzYzhiYjFjZGI2YmEz
NDc5NjkyZmZiMGE4NGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0Zha2VXZWJQbHVnaW4uaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGYWtlV2ViUGx1
Z2luX2gKKyNkZWZpbmUgRmFrZVdlYlBsdWdpbl9oCisKKyNpbmNsdWRlICJXZWJQbHVnaW4uaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRyYWdEYXRhOworY2xhc3MgV2ViRnJh
bWU7CitjbGFzcyBXZWJJbnB1dEV2ZW50OworY2xhc3MgV2ViUGx1Z2luQ29udGFpbmVyOworY2xh
c3MgV2ViVVJMOworY2xhc3MgV2ViVVJMUmVxdWVzdDsKK2NsYXNzIFdlYlVSTFJlc3BvbnNlOwor
CitjbGFzcyBGYWtlV2ViUGx1Z2luIDogcHVibGljIFdlYlBsdWdpbiB7CitwdWJsaWM6CisgICAg
RmFrZVdlYlBsdWdpbihXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJQbHVnaW5Q
YXJhbXMmKTsKKyAgICB2aXJ0dWFsIH5GYWtlV2ViUGx1Z2luKCk7CisKKyAgICAvLyBXZWJQbHVn
aW4gbWV0aG9kczoKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShXZWJLaXQ6OldlYlBsdWdp
bkNvbnRhaW5lciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBOUE9iamVjdCogc2NyaXB0YWJsZU9iamVjdCgpIE9WRVJSSURFIHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuUHJvY2Vzc0RyYWcoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJLaXQ6Oldl
YkNhbnZhcyosIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVHZW9tZXRyeShjb25zdCBXZWJLaXQ6OldlYlJlY3QmIGZyYW1lUmVjdCwg
Y29uc3QgV2ViS2l0OjpXZWJSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViS2l0OjpXZWJWZWN0b3I8
V2ViS2l0OjpXZWJSZWN0PiYgY3V0T3V0c1JlY3RzLCBib29sIGlzVmlzaWJsZSkgT1ZFUlJJREUg
eyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvY3VzKGJvb2wpIE9WRVJSSURFIHsgfQorICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVWaXNpYmlsaXR5KGJvb2wpIE9WRVJSSURFIHsgfQorICAgIHZp
cnR1YWwgYm9vbCBhY2NlcHRzSW5wdXRFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIGhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViS2l0OjpXZWJJbnB1
dEV2ZW50JiwgV2ViS2l0OjpXZWJDdXJzb3JJbmZvJikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRHJhZ1N0YXR1c1VwZGF0ZShXZWJLaXQ6OldlYkRy
YWdTdGF0dXMsIGNvbnN0IFdlYktpdDo6V2ViRHJhZ0RhdGEmLCBXZWJLaXQ6OldlYkRyYWdPcGVy
YXRpb25zTWFzaywgY29uc3QgV2ViS2l0OjpXZWJQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYktp
dDo6V2ViUG9pbnQmIHNjcmVlblBvc2l0aW9uKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViS2l0OjpXZWJVUkxS
ZXNwb25zZSYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViS2l0OjpXZWJVUkxFcnJvciYpIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nRnJhbWVSZXF1ZXN0KGNvbnN0IFdlYktp
dDo6V2ViVVJMJiwgdm9pZCogbm90aWZ5RGF0YSkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWxMb2FkaW5nRnJhbWVSZXF1ZXN0KGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgdm9p
ZCogbm90aWZ5RGF0YSwgY29uc3QgV2ViS2l0OjpXZWJVUkxFcnJvciYpIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc1BsYWNlaG9sZGVyKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KKworcHJpdmF0ZToKKyAgICBXZWJGcmFtZSogbV9mcmFtZTsKKyAgICBXZWJQbHVnaW5Db250
YWluZXIqIG1fY29udGFpbmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBGYWtlV2ViUGx1Z2luX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViUGx1Z2luQ29udGFpbmVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYlBsdWdpbkNvbnRhaW5lclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMDg5YzlkNGQ2
MTBkZmYzOTdjNTJmNmYxNDQ5N2EyMDYzYzU3NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBsdWdpbkNvbnRhaW5lclRlc3QuY3BwCkBAIC0wLDAg
KzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5l
ci5oIgorCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkZha2VXZWJQbHVnaW4uaCIK
KyNpbmNsdWRlICJGcmFtZVRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMu
aCIKKyNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKKyNp
bmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCisjaW5jbHVk
ZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIgor
I2luY2x1ZGUgIldlYlBsdWdpblBhcmFtcy5oIgorI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCisj
aW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCisjaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgeworCitjbGFzcyBXZWJQ
bHVnaW5Db250YWluZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAg
IFdlYlBsdWdpbkNvbnRhaW5lclRlc3QoKQorICAgICAgICA6IG1fYmFzZVVSTCgiaHR0cDovL3d3
dy50ZXN0LmNvbS8iKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KQorICAgIHsKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxz
KCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgc3RkOjpzdHJpbmcgbV9iYXNlVVJMOworfTsK
KworY2xhc3MgVGVzdFBsdWdpbldlYkZyYW1lQ2xpZW50IDogcHVibGljIFdlYkZyYW1lQ2xpZW50
IHsKKyAgICB2aXJ0dWFsIFdlYlBsdWdpbiogY3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgV2ViUGx1Z2luUGFyYW1zJiBwYXJhbXMpIE9WRVJSSURFCisgICAgeworICAgICAgICBp
ZiAocGFyYW1zLm1pbWVUeXBlID09IFdlYlN0cmluZzo6ZnJvbVVURjgoImFwcGxpY2F0aW9uL3gt
d2Via2l0LXRlc3Qtd2VicGx1Z2luIikpCisgICAgICAgICAgICByZXR1cm4gbmV3IEZha2VXZWJQ
bHVnaW4oZnJhbWUsIHBhcmFtcyk7CisgICAgICAgIHJldHVybiBXZWJGcmFtZUNsaWVudDo6Y3Jl
YXRlUGx1Z2luKGZyYW1lLCBwYXJhbXMpOworICAgIH0KK307CisKK1dlYlBsdWdpbkNvbnRhaW5l
ciogZ2V0V2ViUGx1Z2luQ29udGFpbmVyKFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFdlYlN0cmlu
ZyYgaWQpCit7CisgICAgV2ViRWxlbWVudCBlbGVtZW50ID0gd2ViVmlldy0+bWFpbkZyYW1lKCkt
PmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoaWQpOworICAgIHJldHVybiBlbGVtZW50LnBsdWdp
bkNvbnRhaW5lcigpOworfQorCitURVNUX0YoV2ViUGx1Z2luQ29udGFpbmVyVGVzdCwgV2luZG93
VG9Mb2NhbFBvaW50VGVzdCkKK3sKKyAgICBVUkxUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRV
UkxGcm9tQmFzZVVSTChXZWJTdHJpbmc6OmZyb21VVEY4KG1fYmFzZVVSTC5jX3N0cigpKSwgV2Vi
U3RyaW5nOjpmcm9tVVRGOCgicGx1Z2luX2NvbnRhaW5lci5odG1sIikpOworICAgIFdlYlZpZXcq
IHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VV
UkwgKyAicGx1Z2luX2NvbnRhaW5lci5odG1sIiwgdHJ1ZSwgbmV3IFRlc3RQbHVnaW5XZWJGcmFt
ZUNsaWVudCgpKTsKKyAgICBBU1NFUlQod2ViVmlldyk7CisgICAgd2ViVmlldy0+c2V0dGluZ3Mo
KS0+c2V0UGx1Z2luc0VuYWJsZWQodHJ1ZSk7CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUo
MzAwLCAzMDApKTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6
UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisKKyAgICBXZWJQbHVnaW5Db250YWluZXIqIHBsdWdp
bkNvbnRhaW5lck9uZSA9IGdldFdlYlBsdWdpbkNvbnRhaW5lcih3ZWJWaWV3LCBXZWJTdHJpbmc6
OmZyb21VVEY4KCJ0cmFuc2xhdGVkLXBsdWdpbiIpKTsKKyAgICBBU1NFUlQocGx1Z2luQ29udGFp
bmVyT25lKTsKKyAgICBXZWJQb2ludCBwb2ludDEgPSBwbHVnaW5Db250YWluZXJPbmUtPndpbmRv
d1RvTG9jYWxQb2ludChXZWJQb2ludCgxMCwgMTApKTsKKyAgICBBU1NFUlRfRVEoMCwgcG9pbnQx
LngpOworICAgIEFTU0VSVF9FUSgwLCBwb2ludDEueSk7CisgICAgV2ViUG9pbnQgcG9pbnQyID0g
cGx1Z2luQ29udGFpbmVyT25lLT53aW5kb3dUb0xvY2FsUG9pbnQoV2ViUG9pbnQoMTAwLCAxMDAp
KTsKKyAgICBBU1NFUlRfRVEoOTAsIHBvaW50Mi54KTsKKyAgICBBU1NFUlRfRVEoOTAsIHBvaW50
Mi55KTsKKworICAgIFdlYlBsdWdpbkNvbnRhaW5lciogcGx1Z2luQ29udGFpbmVyVHdvID0gZ2V0
V2ViUGx1Z2luQ29udGFpbmVyKHdlYlZpZXcsIFdlYlN0cmluZzo6ZnJvbVVURjgoInJvdGF0ZWQt
cGx1Z2luIikpOworICAgIEFTU0VSVChwbHVnaW5Db250YWluZXJUd28pOworICAgIFdlYlBvaW50
IHBvaW50MyA9IHBsdWdpbkNvbnRhaW5lclR3by0+d2luZG93VG9Mb2NhbFBvaW50KFdlYlBvaW50
KDAsIDEwKSk7CisgICAgQVNTRVJUX0VRKDEwLCBwb2ludDMueCk7CisgICAgQVNTRVJUX0VRKDAs
IHBvaW50My55KTsKKyAgICBXZWJQb2ludCBwb2ludDQgPSBwbHVnaW5Db250YWluZXJUd28tPndp
bmRvd1RvTG9jYWxQb2ludChXZWJQb2ludCgtMTAsIDEwKSk7CisgICAgQVNTRVJUX0VRKDEwLCBw
b2ludDQueCk7CisgICAgQVNTRVJUX0VRKDEwLCBwb2ludDQueSk7CisKKyAgICB3ZWJWaWV3LT5j
bG9zZSgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L2RhdGEvcGx1Z2luX2NvbnRhaW5lci5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9kYXRhL3BsdWdpbl9jb250YWluZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTNjYTgwNGU4NzZlNTAz
Nzc4NDY5MWMzNTdmMWI4MmNjNjgwYzg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9kYXRhL3BsdWdpbl9jb250YWluZXIuaHRtbApAQCAtMCwwICsxLDI0
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+CisgICAgYm9keSB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQorICA8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+CisgIDxvYmplY3QgaWQ9InJvdGF0ZWQtcGx1Z2luIgorICAgICAgc3R5
bGU9Ii13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOyBwb3NpdGlvbjogYWJzb2x1dGU7
IHRvcDogMDsgbGVmdDogMDsgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7IgorICAgICAg
dHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC13ZWJwbHVnaW4iCisgICAgICBib3JkZXI9
MAorICAgICAgd2lkdGg9IjQwIgorICAgICAgaGVpZ2h0PSI0MCI+CisgIDwvb2JqZWN0PgorICA8
b2JqZWN0IGlkPSJ0cmFuc2xhdGVkLXBsdWdpbiIKKyAgICAgIGJvcmRlcj0wCisgICAgICBzdHls
ZT0iLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMHB4LCAxMHB4KTsgcG9zaXRpb246IGFi
c29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IgorICAgICAgdHlwZT0iYXBwbGljYXRpb24veC13ZWJr
aXQtdGVzdC13ZWJwbHVnaW4iCisgICAgICB3aWR0aD0iNDAiCisgICAgICBoZWlnaHQ9IjQwIj4K
KyAgPC9vYmplY3Q+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174751</attachid>
            <date>2012-11-16 13:28:54 -0800</date>
            <delta_ts>2012-11-19 19:21:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102339-20121116162649.patch</filename>
            <type>text/plain</type>
            <size>24642</size>
            <attacher>lazyboy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYjlmOTk1MTIzYzQzZTBlY2QwMjgxMDgxNGJi
MTAxYzExYWJhMTc4ZC4uYzU2OGE4YzE0YjU3ZjQyOGFkOWFlODZiNWE2NDg1MzkzNzIwYjAwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxMi0xMS0xNiAg
SXN0aWFxdWUgQWhtZWQgIDxsYXp5Ym95QGNocm9taXVtLm9yZz4KKworICAgICAgICBQcm92aWRl
IHBhZ2Uvd2luZG93IGNvb3JkaW5hdGVzIHRvIHBsdWdpbidzIGxvY2FsIGNvb3JkaW5hdGVzIHRy
YW5zbGF0aW9uIGluIFdlYlBsdWdpbkNvbnRhaW5lci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjMzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHdpbGwgYWxsb3cgY29udmVydGlu
ZyBhIHBhZ2UncyB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gcGx1Z2lucydzIGxvY2FsIGNvb3JkaW5h
dGVzLAorICAgICAgICB0YWtpbmcgQ1NTIHRyYW5zZm9ybWF0aW9ucyBpbnRvIGFjY291bnQuIEVt
YmVkZGVyIHBhZ2Ugb2YgdGhlIHBsdWdpbiBjYW4gdXNlIHRoaXMgaW5mb3JtYXRpb24KKyAgICAg
ICAgZm9yIHRhcmdldHRpbmcgZWxlbWVudHMgaW5zaWRlIHRoZSBwbHVnaW4gKGUuZy4gZGV2dG9v
bHMgY2FuIGluc3BlY3QgYSBzcGVjaWZpYyBlbGVtZW50IGF0IHRoZQorICAgICAgICBsb2NhbCBj
b29yZGluYXRlIHBvc2l0aW9uIGluc2lkZSBwbHVnaW4pLgorICAgICAgICBBdHRlbXB0aW5nIHRv
IHJlLWxhbmQgYWZ0ZXIgV2luZG93cyBidWlsZCBmaXguCisKKyAgICAgICAgKiBXZWJLaXQuZ3lw
OgorICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJOb2RlLmg6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHB1YmxpYy9XZWJQbHVnaW5Db250YWluZXIuaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJQbHVnaW5Db250YWluZXIpOgorICAgICAg
ICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6
OmV4ZWN1dGVDb21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpwcmludEJl
Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjppc1ByaW50U2NhbGluZ0Rpc2Fi
bGVkRm9yUGx1Z2luKToKKyAgICAgICAgKiBzcmMvV2ViTm9kZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYk5vZGU6OnBsdWdpbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGx1Z2luQ29udGFpbmVySW1wbDo6d2luZG93VG9Mb2NhbFBvaW50KToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaDoKKyAgICAgICAgKFdl
YlBsdWdpbkNvbnRhaW5lckltcGwpOgorICAgICAgICAqIHRlc3RzL0Zha2VXZWJQbHVnaW4uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkZha2VXZWJQbHVn
aW46OkZha2VXZWJQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpGYWtlV2ViUGx1Z2luOjp+RmFr
ZVdlYlBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OkZha2VXZWJQbHVnaW46OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViS2l0OjpGYWtlV2ViUGx1Z2luOjpkZXN0cm95KToKKyAgICAgICAgKiB0
ZXN0cy9GYWtlV2ViUGx1Z2luLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KEZha2VXZWJQbHVnaW4pOgorICAgICAgICAqIHRlc3RzL1dlYlBsdWdpbkNvbnRhaW5lclRlc3Qu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJQbHVnaW5Db250YWlu
ZXJUZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVyVGVzdDo6V2ViUGx1
Z2luQ29udGFpbmVyVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lclRl
c3Q6OlRlYXJEb3duKToKKyAgICAgICAgKFdlYktpdDo6Z2V0V2ViUGx1Z2luQ29udGFpbmVyKToK
KyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9kYXRhL3BsdWdpbl9j
b250YWluZXIuaHRtbDogQWRkZWQuCisKIDIwMTItMTEtMTYgIFBldGVyIEJldmVybG9vICA8cGV0
ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA0NzYwYzdmZTYxMmZlYjYzMzQwNWNiNTRlZDE4
MjFiMzVkYTlmNjA1Li5lMzQ4MjVhN2EyN2U0OWVjMmUxZjczMzQ1OTc2YWEzZDA3MTBjYzA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC03MTQsNiArNzE0LDcgQEAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIyBmdW5jdGlvbnMgZGVmaW5lZCBvbmx5IGluICFXRUJL
SVRfSU1QTEVNRU5UQVRJT04uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0
cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAndGVzdHMvRXZlbnRMaXN0ZW5lclRlc3QuY3BwJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3Rlc3RzL0Zha2VXZWJQbHVnaW4uY3BwJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNw
cCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9MZXZlbERCVGVzdC5j
cHAnLApAQCAtNzI4LDYgKzcyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd0ZXN0cy9XZWJJbWFnZVRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHAnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJQbHVnaW5Db250YWluZXJUZXN0
LmNwcCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYlZpZXdUZXN0
LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmlu
ZGV4IDAwMjlkYTRiMDc1ZTA3M2NiZmQ2NDFiMDIwNGJjMDA4MDNjNDFmNDcuLmRkNWQ2Y2YxYjZi
ZThiMGNiMDk3ZWYwZTI1NGZkMDEwM2VmM2QwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwaQpAQCAtNjQsNiArNjQsOCBAQAogICAgICAgICAgICAgJ3Rlc3RzL0RlZmVycmVkSW1hZ2VE
ZWNvZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwJywK
ICAgICAgICAgICAgICd0ZXN0cy9FdmVudExpc3RlbmVyVGVzdC5jcHAnLAorICAgICAgICAgICAg
J3Rlc3RzL0Zha2VXZWJQbHVnaW4uY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9GYWtlV2ViUGx1
Z2luLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0Zha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFj
ZS5oJywKICAgICAgICAgICAgICd0ZXN0cy9GYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAg
ICAgICAgICAgICAndGVzdHMvRmlsdGVyT3BlcmF0aW9uc1Rlc3QuY3BwJywKQEAgLTExMyw2ICsx
MTUsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbFRlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwJywK
ICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwJywKKyAgICAgICAg
ICAgICd0ZXN0cy9XZWJQbHVnaW5Db250YWluZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvV2ViU29ja2V0RGVmbGF0ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViU29j
a2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJV
UkxSZXF1ZXN0VGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViTm9kZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5o
CmluZGV4IDU4NjlhZWVjNjI3NzUyN2JlODcxYmQyNDc0YTBmNmFjNDNkZWM3ZWQuLmU4NGE3YjAx
YjViMGUzYjg0NzUxY2NlMjI1MTQzZDJmMWY2MmFhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJOb2RlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgV2ViRG9jdW1lbnQ7CiBj
bGFzcyBXZWJFbGVtZW50OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJOb2RlTGlzdDsKK2Ns
YXNzIFdlYlBsdWdpbkNvbnRhaW5lcjsKIAogLy8gUHJvdmlkZXMgYWNjZXNzIHRvIHNvbWUgcHJv
cGVydGllcyBvZiBhIERPTSBub2RlLgogY2xhc3MgV2ViTm9kZSB7CkBAIC0xMTksNiArMTIwLDcg
QEAgcHVibGljOgogICAgIC8vIFRoaXMgZG9lcyBub3QgMTAwJSBndWFyYW50ZWUgdGhlIHVzZXIg
Y2FuIHNlZSBpdCwgYnV0IGlzIHByZXR0eSBjbG9zZS4KICAgICAvLyBOb3RlOiBUaGlzIG1ldGhv
ZCBvbmx5IHdvcmtzIHByb3Blcmx5IGFmdGVyIGxheW91dCBoYXMgb2NjdXJyZWQuCiAgICAgV0VC
S0lUX0VYUE9SVCBib29sIGhhc05vbkVtcHR5Qm91bmRpbmdCb3goKSBjb25zdDsKKyAgICBXRUJL
SVRfRVhQT1JUIFdlYlBsdWdpbkNvbnRhaW5lciogcGx1Z2luQ29udGFpbmVyKCkgY29uc3Q7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHRvKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5Db250YWluZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkNvbnRhaW5lci5oCmluZGV4IGRlYmUyNjAz
ODAxYjhmYzE4YzcyMTNkNDhlMjEwMzA4YmFjZWVjMzAuLjI4MTZmYmRhMGRiNWEwYzk5YmQ2N2E5
NjZhMzBjODdlYjdjYjg4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlBsdWdpbkNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlBsdWdpbkNvbnRhaW5lci5oCkBAIC0zMSw2ICszMSw4IEBACiAjaWZuZGVmIFdlYlBs
dWdpbkNvbnRhaW5lcl9oCiAjZGVmaW5lIFdlYlBsdWdpbkNvbnRhaW5lcl9oCiAKKyNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKwogc3RydWN0IE5QT2JqZWN0OwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTQwLDYgKzQyLDcgQEAgY2xhc3MgV2ViUGx1Z2luOwogY2xhc3MgV2ViU3Ry
aW5nOwogY2xhc3MgV2ViVVJMOwogY2xhc3MgV2ViVVJMUmVxdWVzdDsKK3N0cnVjdCBXZWJQb2lu
dDsKIHN0cnVjdCBXZWJSZWN0OwogCiBjbGFzcyBXZWJQbHVnaW5Db250YWluZXIgewpAQCAtMTEx
LDYgKzExNCw5IEBAIHB1YmxpYzoKICAgICAvLyBOb3RpZmllcyB3aGVuIHRoZSBwbHVnaW4gc3Rh
cnRzL3N0b3BzIGFjY2VwdGluZyB0b3VjaCBldmVudHMuCiAgICAgdmlydHVhbCB2b2lkIHNldElz
QWNjZXB0aW5nVG91Y2hFdmVudHMoYm9vbCkgPSAwOwogCisgICAgLy8gQ29udmVydHMgdmlldydz
IHdpbmRvdyBjb29yZGluYXRlcyB0byBwbHVnaW4ncyBsb2NhbCBjb29yZGluYXRlcy4KKyAgICB2
aXJ0dWFsIFdlYlBvaW50IHdpbmRvd1RvTG9jYWxQb2ludChjb25zdCBXZWJQb2ludCYpID0gMDsK
KwogICAgIHZpcnR1YWwgV2ViUGx1Z2luKiBwbHVnaW4oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldFBsdWdpbihXZWJQbHVnaW4qKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDE5MzY0NzZmM2FlMWEyMDE0MDMzZGMzZmRiN2UwY2Fi
NWNhOGM3ZjIuLjM3ZjE0NGYyMWVlMmZhYTQ1MmZkZmU4MzY2NGNiNzUxYWQyOWQ5Y2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMTMwLDcgKzEz
MCw2IEBACiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFz
VGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKLSNpbmNsdWRlICJSZW5kZXJXaWRnZXQu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCkBAIC0zMDQsMjMgKzMwMyw2IEBAIHN0
YXRpYyBsb25nIGxvbmcgZ2VuZXJhdGVGcmFtZUlkZW50aWZpZXIoKQogICAgIHJldHVybiArK25l
eHQ7CiB9CiAKLXN0YXRpYyBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXJG
cm9tTm9kZShjb25zdCBXZWJOb2RlJiBub2RlKQotewotICAgIGlmIChub2RlLmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIGNvbnN0IE5vZGUqIGNvcmVOb2RlID0gbm9kZS5jb25z
dFVud3JhcDxOb2RlPigpOwotICAgIGlmIChjb3JlTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6
Om9iamVjdFRhZykgfHwgY29yZU5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjplbWJlZFRhZykp
IHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBjb3JlTm9kZS0+cmVuZGVyZXIoKTsK
LSAgICAgICAgaWYgKG9iamVjdCAmJiBvYmplY3QtPmlzV2lkZ2V0KCkpIHsKLSAgICAgICAgICAg
IFdpZGdldCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQob2JqZWN0KS0+d2lkZ2V0KCk7Ci0gICAg
ICAgICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNQbHVnaW5Db250YWluZXIoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViUGx1Z2luQ29udGFpbmVySW1wbCo+KHdp
ZGdldCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIFdlYlBsdWdpbkNv
bnRhaW5lckltcGwqIFdlYkZyYW1lSW1wbDo6cGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKEZyYW1l
KiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lKQpAQCAtMTIzMiw3ICsxMjE0LDcgQEAgYm9vbCBX
ZWJGcmFtZUltcGw6OmV4ZWN1dGVDb21tYW5kKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViTm9kZSYgbm9kZSkKICAgICBpZiAoY29tbWFuZCA9PSAiQ29weSIpIHsKICAgICAgICAgV2Vi
UGx1Z2luQ29udGFpbmVySW1wbCogcGx1Z2luQ29udGFpbmVyID0gcGx1Z2luQ29udGFpbmVyRnJv
bUZyYW1lKGZyYW1lKCkpOwogICAgICAgICBpZiAoIXBsdWdpbkNvbnRhaW5lcikKLSAgICAgICAg
ICAgIHBsdWdpbkNvbnRhaW5lciA9IHBsdWdpbkNvbnRhaW5lckZyb21Ob2RlKG5vZGUpOworICAg
ICAgICAgICAgcGx1Z2luQ29udGFpbmVyID0gc3RhdGljX2Nhc3Q8V2ViUGx1Z2luQ29udGFpbmVy
SW1wbCo+KG5vZGUucGx1Z2luQ29udGFpbmVyKCkpOwogICAgICAgICBpZiAocGx1Z2luQ29udGFp
bmVyKSB7CiAgICAgICAgICAgICBwbHVnaW5Db250YWluZXItPmNvcHkoKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtMTQyOCw3ICsxNDEwLDcgQEAgaW50IFdlYkZyYW1lSW1wbDo6cHJp
bnRCZWdpbihjb25zdCBXZWJQcmludFBhcmFtcyYgcHJpbnRQYXJhbXMsIGNvbnN0IFdlYk5vZGUm
IGMKICAgICAgICAgcGx1Z2luQ29udGFpbmVyID0gcGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKGZy
YW1lKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBwcmludGlu
ZyBwbHVnaW4gbm9kZXMgZm9yIG5vdy4KLSAgICAgICAgcGx1Z2luQ29udGFpbmVyID0gcGx1Z2lu
Q29udGFpbmVyRnJvbU5vZGUoY29uc3RyYWluVG9Ob2RlKTsKKyAgICAgICAgcGx1Z2luQ29udGFp
bmVyID0gc3RhdGljX2Nhc3Q8V2ViUGx1Z2luQ29udGFpbmVySW1wbCo+KGNvbnN0cmFpblRvTm9k
ZS5wbHVnaW5Db250YWluZXIoKSk7CiAgICAgfQogCiAgICAgaWYgKHBsdWdpbkNvbnRhaW5lciAm
JiBwbHVnaW5Db250YWluZXItPnN1cHBvcnRzUGFnaW5hdGVkUHJpbnQoKSkKQEAgLTE0NzcsNyAr
MTQ1OSw3IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpwcmludEVuZCgpCiAKIGJvb2wgV2ViRnJhbWVJ
bXBsOjppc1ByaW50U2NhbGluZ0Rpc2FibGVkRm9yUGx1Z2luKGNvbnN0IFdlYk5vZGUmIG5vZGUp
CiB7Ci0gICAgV2ViUGx1Z2luQ29udGFpbmVySW1wbCogcGx1Z2luQ29udGFpbmVyID0gIG5vZGUu
aXNOdWxsKCkgPyBwbHVnaW5Db250YWluZXJGcm9tRnJhbWUoZnJhbWUoKSkgOiBwbHVnaW5Db250
YWluZXJGcm9tTm9kZShub2RlKTsKKyAgICBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5D
b250YWluZXIgPSAgbm9kZS5pc051bGwoKSA/IHBsdWdpbkNvbnRhaW5lckZyb21GcmFtZShmcmFt
ZSgpKSA6IHN0YXRpY19jYXN0PFdlYlBsdWdpbkNvbnRhaW5lckltcGwqPihub2RlLnBsdWdpbkNv
bnRhaW5lcigpKTsKIAogICAgIGlmICghcGx1Z2luQ29udGFpbmVyIHx8ICFwbHVnaW5Db250YWlu
ZXItPnN1cHBvcnRzUGFnaW5hdGVkUHJpbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcAppbmRleCAyN2Q1N2NmYmM2ZDdlMmQ2M2Ew
ZTVlYmNjZjZkMThiYjE2MmQ0Yzg5Li4xOGJjYzM0YjBhZGZlYjA2MzAyZjdjOTVhMTc1ZjFlYzUy
MzkxMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcApAQCAtMzgsMTIg
KzM4LDE3IEBACiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5j
bHVkZSAiRXZlbnRMaXN0ZW5lcldyYXBwZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
KyNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNsdWRlICJXZWJET01FdmVudC5oIgogI2lu
Y2x1ZGUgIldlYkRPTUV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNs
dWRlICJXZWJOb2RlTGlzdC5oIgorI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lci5oIgorI2lu
Y2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lckltcGwuaCIKKyNpbmNsdWRlICJXaWRnZXQuaCIKICNp
bmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYlZlY3Rvci5oPgpAQCAtMjM2LDYgKzI0MSwyMiBAQCBib29sIFdlYk5vZGU6
Omhhc05vbkVtcHR5Qm91bmRpbmdCb3goKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPmhh
c05vbkVtcHR5Qm91bmRpbmdCb3goKTsKIH0KIAorV2ViUGx1Z2luQ29udGFpbmVyKiBXZWJOb2Rl
OjpwbHVnaW5Db250YWluZXIoKSBjb25zdAoreworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgY29uc3QgTm9kZSogY29yZU5vZGUgPSBjb25zdFVud3JhcDxOb2RlPigp
OworICAgIGlmIChjb3JlTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9iamVjdFRhZykgfHwg
Y29yZU5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjplbWJlZFRhZykpIHsKKyAgICAgICAgUmVu
ZGVyT2JqZWN0KiBvYmplY3QgPSBjb3JlTm9kZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgaWYgKG9i
amVjdCAmJiBvYmplY3QtPmlzV2lkZ2V0KCkpIHsKKyAgICAgICAgICAgIFdpZGdldCogd2lkZ2V0
ID0gV2ViQ29yZTo6dG9SZW5kZXJXaWRnZXQob2JqZWN0KS0+d2lkZ2V0KCk7CisgICAgICAgICAg
ICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNQbHVnaW5Db250YWluZXIoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViUGx1Z2luQ29udGFpbmVySW1wbCo+KHdpZGdldCk7
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIFdlYk5vZGU6OldlYk5vZGUo
Y29uc3QgUGFzc1JlZlB0cjxOb2RlPiYgbm9kZSkKICAgICA6IG1fcHJpdmF0ZShub2RlKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJ
bXBsLmNwcAppbmRleCA3Mzg0MmExOWY4YmU1Y2Y0OTZjOTgwZjUwODYzMTMwZGMwM2I4MWRjLi4y
MzYyZWJiYTY1MjJkYjBkMmE0OTRhNGY1MDg0MDRlZWE1MTVhMGZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAt
NTMxLDYgKzUzMSwxNSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldElzQWNjZXB0
aW5nVG91Y2hFdmVudHMoYm9vbCBhY2NlcHRpbmdUb3VjaEV2ZW50cwogICAgICAgICBtX2VsZW1l
bnQtPmRvY3VtZW50KCktPmRpZFJlbW92ZVRvdWNoRXZlbnRIYW5kbGVyKCk7CiB9CiAKK1dlYlBv
aW50IFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OndpbmRvd1RvTG9jYWxQb2ludChjb25zdCBXZWJQ
b2ludCYgcG9pbnQpCit7CisgICAgU2Nyb2xsVmlldyogdmlldyA9IHBhcmVudCgpOworICAgIGlm
ICghdmlldykKKyAgICAgICAgcmV0dXJuIHBvaW50OworICAgIFdlYlBvaW50IHdpbmRvd1BvaW50
ID0gdmlldy0+d2luZG93VG9Db250ZW50cyhwb2ludCk7CisgICAgcmV0dXJuIHJvdW5kZWRJbnRQ
b2ludChtX2VsZW1lbnQtPnJlbmRlcmVyKCktPmFic29sdXRlVG9Mb2NhbChMYXlvdXRQb2ludCh3
aW5kb3dQb2ludCksIFVzZVRyYW5zZm9ybXMgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcykpOwor
fQorCiB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0
aGUgcGx1Z2luIHJlY2VpdmVzIHdpbmRvdyBnZW9tZXRyeSBiZWZvcmUgZGF0YSwgb3IgZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVy
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1w
bC5oCmluZGV4IDg5ZjI5NzFiNzIzMjllMGZkNjY0Nzk3NjU2ZmEwM2MyZDk0MTVmY2IuLjdlNzk0
NDYwN2FmOTMwNWU3MGZlM2RjZWU3OGE5ZGVkZmNjODA5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKQEAgLTExMyw2ICsx
MTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNSZWN0VG9wbW9zdChjb25zdCBXZWJSZWN0Jik7CiAgICAgdmlydHVhbCB2
b2lkIHNldElzQWNjZXB0aW5nVG91Y2hFdmVudHMoYm9vbCk7CisgICAgdmlydHVhbCBXZWJQb2lu
dCB3aW5kb3dUb0xvY2FsUG9pbnQoY29uc3QgV2ViUG9pbnQmKTsKIAogICAgIC8vIFRoaXMgY2Fu
bm90IGJlIG51bGwuCiAgICAgV2ViUGx1Z2luKiBwbHVnaW4oKSB7IHJldHVybiBtX3dlYlBsdWdp
bjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlV2ViUGx1
Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZVdlYlBsdWdpbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWUxY2I5ZmEwMWVlZDI0ZTc4ZGU1ZTY0NTExOGFkYTYzZTNhYTY0MQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZVdlYlBsdWdp
bi5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGYWtl
V2ViUGx1Z2luLmgiCisKKyNpbmNsdWRlICJXZWJQbHVnaW5QYXJhbXMuaCIKKyNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitGYWtlV2ViUGx1Z2lu
OjpGYWtlV2ViUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViUGx1Z2luUGFyYW1zJiBw
YXJhbXMpCisgICAgOiBtX2ZyYW1lKGZyYW1lKQoreworfQorCitGYWtlV2ViUGx1Z2luOjp+RmFr
ZVdlYlBsdWdpbigpCit7Cit9CisKK2Jvb2wgRmFrZVdlYlBsdWdpbjo6aW5pdGlhbGl6ZShXZWJQ
bHVnaW5Db250YWluZXIqIGNvbnRhaW5lcikKK3sKKyAgICBtX2NvbnRhaW5lciA9IGNvbnRhaW5l
cjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBGYWtlV2ViUGx1Z2luOjpkZXN0cm95KCkK
K3sKKyAgICBtX2NvbnRhaW5lciA9IDA7CisgICAgbV9mcmFtZSA9IDA7Cit9CisKK30gLy8gbmFt
ZXNwYWNlICBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
RmFrZVdlYlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlV2ViUGx1
Z2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2VlNDFjOGRjNjJmNDNjOGJiMWNkYjZiYTM0Nzk2OTJmZmIwYTg0
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZVdl
YlBsdWdpbi5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZha2VXZWJQbHVnaW5faAorI2RlZmlu
ZSBGYWtlV2ViUGx1Z2luX2gKKworI2luY2x1ZGUgIldlYlBsdWdpbi5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViRHJhZ0RhdGE7CitjbGFzcyBXZWJGcmFtZTsKK2NsYXNzIFdl
YklucHV0RXZlbnQ7CitjbGFzcyBXZWJQbHVnaW5Db250YWluZXI7CitjbGFzcyBXZWJVUkw7Citj
bGFzcyBXZWJVUkxSZXF1ZXN0OworY2xhc3MgV2ViVVJMUmVzcG9uc2U7CisKK2NsYXNzIEZha2VX
ZWJQbHVnaW4gOiBwdWJsaWMgV2ViUGx1Z2luIHsKK3B1YmxpYzoKKyAgICBGYWtlV2ViUGx1Z2lu
KFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlBsdWdpblBhcmFtcyYpOworICAg
IHZpcnR1YWwgfkZha2VXZWJQbHVnaW4oKTsKKworICAgIC8vIFdlYlBsdWdpbiBtZXRob2RzOgor
ICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVyKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIE5QT2JqZWN0KiBzY3JpcHRhYmxlT2JqZWN0KCkgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQor
ICAgIHZpcnR1YWwgYm9vbCBjYW5Qcm9jZXNzRHJhZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYktpdDo6V2ViQ2FudmFzKiwgY29u
c3QgV2ViS2l0OjpXZWJSZWN0JikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUdlb21ldHJ5KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJLaXQ6
OldlYlJlY3QmIGNsaXBSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OldlYlJl
Y3Q+JiBjdXRPdXRzUmVjdHMsIGJvb2wgaXNWaXNpYmxlKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRm9jdXMoYm9vbCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVZpc2liaWxpdHkoYm9vbCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBib29sIGFj
Y2VwdHNJbnB1dEV2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJLaXQ6OldlYklucHV0RXZlbnQmLCBXZWJL
aXQ6OldlYkN1cnNvckluZm8mKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVEcmFnU3RhdHVzVXBkYXRlKFdlYktpdDo6V2ViRHJhZ1N0YXR1cywgY29u
c3QgV2ViS2l0OjpXZWJEcmFnRGF0YSYsIFdlYktpdDo6V2ViRHJhZ09wZXJhdGlvbnNNYXNrLCBj
b25zdCBXZWJLaXQ6OldlYlBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViS2l0OjpXZWJQb2ludCYg
c2NyZWVuUG9zaXRpb24pIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJLaXQ6OldlYlVSTFJlc3BvbnNlJikgT1ZF
UlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZygpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGlu
Zyhjb25zdCBXZWJLaXQ6OldlYlVSTEVycm9yJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaExvYWRpbmdGcmFtZVJlcXVlc3QoY29uc3QgV2ViS2l0OjpXZWJVUkwmLCB2
b2lkKiBub3RpZnlEYXRhKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExv
YWRpbmdGcmFtZVJlcXVlc3QoY29uc3QgV2ViS2l0OjpXZWJVUkwmLCB2b2lkKiBub3RpZnlEYXRh
LCBjb25zdCBXZWJLaXQ6OldlYlVSTEVycm9yJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBi
b29sIGlzUGxhY2Vob2xkZXIoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCitwcml2YXRl
OgorICAgIFdlYkZyYW1lKiBtX2ZyYW1lOworICAgIFdlYlBsdWdpbkNvbnRhaW5lciogbV9jb250
YWluZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEZha2VXZWJQ
bHVnaW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQbHVn
aW5Db250YWluZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGx1
Z2luQ29udGFpbmVyVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTAwODljOWQ0ZDYxMGRmZjM5N2M1MmY2
ZjE0NDk3YTIwNjNjNTc2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViUGx1Z2luQ29udGFpbmVyVGVzdC5jcHAKQEAgLTAsMCArMSwxMTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVyLmgiCisKKyNpbmNs
dWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRmFrZVdlYlBsdWdpbi5oIgorI2luY2x1ZGUgIkZy
YW1lVGVzdEhlbHBlcnMuaCIKKyNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgorI2luY2x1ZGUg
IldlYkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgorI2luY2x1ZGUgIldlYkZy
YW1lLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUlt
cGwuaCIKKyNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXJJbXBsLmgiCisjaW5jbHVkZSAiV2Vi
UGx1Z2luUGFyYW1zLmgiCisjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJW
aWV3LmgiCisjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgorI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFdlYlBsdWdpbkNvbnRhaW5l
clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgV2ViUGx1Z2luQ29u
dGFpbmVyVGVzdCgpCisgICAgICAgIDogbV9iYXNlVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tLyIp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAg
ICAgICB3ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAgICB9CisK
K3Byb3RlY3RlZDoKKyAgICBzdGQ6OnN0cmluZyBtX2Jhc2VVUkw7Cit9OworCitjbGFzcyBUZXN0
UGx1Z2luV2ViRnJhbWVDbGllbnQgOiBwdWJsaWMgV2ViRnJhbWVDbGllbnQgeworICAgIHZpcnR1
YWwgV2ViUGx1Z2luKiBjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJQbHVn
aW5QYXJhbXMmIHBhcmFtcykgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGlmIChwYXJhbXMubWlt
ZVR5cGUgPT0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC13
ZWJwbHVnaW4iKSkKKyAgICAgICAgICAgIHJldHVybiBuZXcgRmFrZVdlYlBsdWdpbihmcmFtZSwg
cGFyYW1zKTsKKyAgICAgICAgcmV0dXJuIFdlYkZyYW1lQ2xpZW50OjpjcmVhdGVQbHVnaW4oZnJh
bWUsIHBhcmFtcyk7CisgICAgfQorfTsKKworV2ViUGx1Z2luQ29udGFpbmVyKiBnZXRXZWJQbHVn
aW5Db250YWluZXIoV2ViVmlldyogd2ViVmlldywgY29uc3QgV2ViU3RyaW5nJiBpZCkKK3sKKyAg
ICBXZWJFbGVtZW50IGVsZW1lbnQgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS5n
ZXRFbGVtZW50QnlJZChpZCk7CisgICAgcmV0dXJuIGVsZW1lbnQucGx1Z2luQ29udGFpbmVyKCk7
Cit9CisKK1RFU1RfRihXZWJQbHVnaW5Db250YWluZXJUZXN0LCBXaW5kb3dUb0xvY2FsUG9pbnRU
ZXN0KQoreworICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJM
KFdlYlN0cmluZzo6ZnJvbVVURjgobV9iYXNlVVJMLmNfc3RyKCkpLCBXZWJTdHJpbmc6OmZyb21V
VEY4KCJwbHVnaW5fY29udGFpbmVyLmh0bWwiKSk7CisgICAgV2ViVmlldyogd2ViVmlldyA9IEZy
YW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJwbHVnaW5f
Y29udGFpbmVyLmh0bWwiLCB0cnVlLCBuZXcgVGVzdFBsdWdpbldlYkZyYW1lQ2xpZW50KCkpOwor
ICAgIEFTU0VSVCh3ZWJWaWV3KTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRQbHVnaW5z
RW5hYmxlZCh0cnVlKTsKKyAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSgzMDAsIDMwMCkpOwor
ICAgIHdlYlZpZXctPmxheW91dCgpOworICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5n
TWVzc2FnZXMoKTsKKworICAgIFdlYlBsdWdpbkNvbnRhaW5lciogcGx1Z2luQ29udGFpbmVyT25l
ID0gZ2V0V2ViUGx1Z2luQ29udGFpbmVyKHdlYlZpZXcsIFdlYlN0cmluZzo6ZnJvbVVURjgoInRy
YW5zbGF0ZWQtcGx1Z2luIikpOworICAgIEFTU0VSVChwbHVnaW5Db250YWluZXJPbmUpOworICAg
IFdlYlBvaW50IHBvaW50MSA9IHBsdWdpbkNvbnRhaW5lck9uZS0+d2luZG93VG9Mb2NhbFBvaW50
KFdlYlBvaW50KDEwLCAxMCkpOworICAgIEFTU0VSVF9FUSgwLCBwb2ludDEueCk7CisgICAgQVNT
RVJUX0VRKDAsIHBvaW50MS55KTsKKyAgICBXZWJQb2ludCBwb2ludDIgPSBwbHVnaW5Db250YWlu
ZXJPbmUtPndpbmRvd1RvTG9jYWxQb2ludChXZWJQb2ludCgxMDAsIDEwMCkpOworICAgIEFTU0VS
VF9FUSg5MCwgcG9pbnQyLngpOworICAgIEFTU0VSVF9FUSg5MCwgcG9pbnQyLnkpOworCisgICAg
V2ViUGx1Z2luQ29udGFpbmVyKiBwbHVnaW5Db250YWluZXJUd28gPSBnZXRXZWJQbHVnaW5Db250
YWluZXIod2ViVmlldywgV2ViU3RyaW5nOjpmcm9tVVRGOCgicm90YXRlZC1wbHVnaW4iKSk7Cisg
ICAgQVNTRVJUKHBsdWdpbkNvbnRhaW5lclR3byk7CisgICAgV2ViUG9pbnQgcG9pbnQzID0gcGx1
Z2luQ29udGFpbmVyVHdvLT53aW5kb3dUb0xvY2FsUG9pbnQoV2ViUG9pbnQoMCwgMTApKTsKKyAg
ICBBU1NFUlRfRVEoMTAsIHBvaW50My54KTsKKyAgICBBU1NFUlRfRVEoMCwgcG9pbnQzLnkpOwor
ICAgIFdlYlBvaW50IHBvaW50NCA9IHBsdWdpbkNvbnRhaW5lclR3by0+d2luZG93VG9Mb2NhbFBv
aW50KFdlYlBvaW50KC0xMCwgMTApKTsKKyAgICBBU1NFUlRfRVEoMTAsIHBvaW50NC54KTsKKyAg
ICBBU1NFUlRfRVEoMTAsIHBvaW50NC55KTsKKworICAgIHdlYlZpZXctPmNsb3NlKCk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9wbHVnaW5f
Y29udGFpbmVyLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcGx1Z2lu
X2NvbnRhaW5lci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxM2NhODA0ZTg3NmU1MDM3Nzg0NjkxYzM1N2Yx
YjgyY2M2ODBjODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL2RhdGEvcGx1Z2luX2NvbnRhaW5lci5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICBi
b2R5IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgPG9iamVjdCBpZD0icm90YXRlZC1wbHVnaW4iCisgICAgICBzdHlsZT0iLXdlYmtpdC10
cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0
OiAwOyAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAgMDsiCisgICAgICB0eXBlPSJhcHBsaWNh
dGlvbi94LXdlYmtpdC10ZXN0LXdlYnBsdWdpbiIKKyAgICAgIGJvcmRlcj0wCisgICAgICB3aWR0
aD0iNDAiCisgICAgICBoZWlnaHQ9IjQwIj4KKyAgPC9vYmplY3Q+CisgIDxvYmplY3QgaWQ9InRy
YW5zbGF0ZWQtcGx1Z2luIgorICAgICAgYm9yZGVyPTAKKyAgICAgIHN0eWxlPSItd2Via2l0LXRy
YW5zZm9ybTogdHJhbnNsYXRlKDEwcHgsIDEwcHgpOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDog
MDsgbGVmdDogMDsiCisgICAgICB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LXdlYnBs
dWdpbiIKKyAgICAgIHdpZHRoPSI0MCIKKyAgICAgIGhlaWdodD0iNDAiPgorICA8L29iamVjdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175116</attachid>
            <date>2012-11-19 19:21:06 -0800</date>
            <delta_ts>2012-11-19 23:36:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102339-20121119221856.patch</filename>
            <type>text/plain</type>
            <size>24598</size>
            <attacher>lazyboy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZDZhYjFmNzNjYzgyOTI5MzdjMzY1YjNmYjI4
Yzc5Y2YwMDhlZjQ2Yy4uYzYzMTdlODE3MmNiYzNhOGRlMzFiNjgxMDNmZGMwNzc1MGE4ZWEwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMi0xMS0xOSAg
SXN0aWFxdWUgQWhtZWQgIDxsYXp5Ym95QGNocm9taXVtLm9yZz4KKworICAgICAgICBQcm92aWRl
IHBhZ2Uvd2luZG93IGNvb3JkaW5hdGVzIHRvIHBsdWdpbidzIGxvY2FsIGNvb3JkaW5hdGVzIHRy
YW5zbGF0aW9uIGluIFdlYlBsdWdpbkNvbnRhaW5lci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjMzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHdpbGwgYWxsb3cgY29udmVydGlu
ZyBhIHBhZ2UncyB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gcGx1Z2lucydzIGxvY2FsIGNvb3JkaW5h
dGVzLAorICAgICAgICB0YWtpbmcgQ1NTIHRyYW5zZm9ybWF0aW9ucyBpbnRvIGFjY291bnQuIEVt
YmVkZGVyIHBhZ2Ugb2YgdGhlIHBsdWdpbiBjYW4gdXNlIHRoaXMgaW5mb3JtYXRpb24KKyAgICAg
ICAgZm9yIHRhcmdldHRpbmcgZWxlbWVudHMgaW5zaWRlIHRoZSBwbHVnaW4gKGUuZy4gZGV2dG9v
bHMgY2FuIGluc3BlY3QgYSBzcGVjaWZpYyBlbGVtZW50IGF0IHRoZQorICAgICAgICBsb2NhbCBj
b29yZGluYXRlIHBvc2l0aW9uIGluc2lkZSBwbHVnaW4pLgorCisgICAgICAgICogV2ViS2l0Lmd5
cDoKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2ViTm9kZS5oOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBwdWJsaWMvV2ViUGx1Z2luQ29udGFpbmVyLmg6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFpbmVyKToKKyAgICAg
ICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBs
OjpleGVjdXRlQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6cHJpbnRC
ZWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6aXNQcmludFNjYWxpbmdEaXNh
YmxlZEZvclBsdWdpbik6CisgICAgICAgICogc3JjL1dlYk5vZGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb2RlOjpwbHVnaW5Db250YWluZXIpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsdWdpbkNvbnRhaW5lckltcGw6OndpbmRvd1RvTG9jYWxQb2ludCk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmg6CisgICAgICAgIChX
ZWJQbHVnaW5Db250YWluZXJJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9GYWtlV2ViUGx1Z2luLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpGYWtlV2ViUGx1
Z2luOjpGYWtlV2ViUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYlBsdWdpbjo6fkZh
a2VXZWJQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpGYWtlV2ViUGx1Z2luOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYlBsdWdpbjo6ZGVzdHJveSk6CisgICAgICAgICog
dGVzdHMvRmFrZVdlYlBsdWdpbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChGYWtlV2ViUGx1Z2luKToKKyAgICAgICAgKiB0ZXN0cy9XZWJQbHVnaW5Db250YWluZXJUZXN0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFp
bmVyVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lclRlc3Q6OldlYlBs
dWdpbkNvbnRhaW5lclRlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJU
ZXN0OjpUZWFyRG93bik6CisgICAgICAgIChXZWJLaXQ6OmdldFdlYlBsdWdpbkNvbnRhaW5lcik6
CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvZGF0YS9wbHVnaW5f
Y29udGFpbmVyLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTE2ICBSYW1hbiBLdW1hciAgPHJhbWFu
a2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBzZXRDaGVja2VkIEFQSSBpbiBXZWJJbnB1
dEVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBmOWM0OTJhOWVlNGE3ODY5
ZGE0ZjY3ZTM1N2IzYTBkNmVjNGFjNTFmLi40M2ZkNjBhZDY4ZDYyYWFkMWQ1MzY2ZmVmNzQzMzYz
YmZmOTQyYWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC03MTUsNiArNzE1LDcg
QEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmdW5jdGlvbnMgZGVmaW5lZCBv
bmx5IGluICFXRUJLSVRfSU1QTEVNRU5UQVRJT04uCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd0ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdHMvRXZlbnRMaXN0ZW5lclRlc3QuY3BwJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0Zha2VXZWJQbHVnaW4uY3BwJywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3Bw
JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0lEQkJpbmRpbmdVdGls
aXRpZXNUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9M
ZXZlbERCVGVzdC5jcHAnLApAQCAtNzI5LDYgKzczMCw3IEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0ZXN0cy9XZWJJbWFnZVRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHAnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0
LmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJQbHVnaW5D
b250YWluZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0
cy9XZWJWaWV3VGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwaQppbmRleCAwMDI5ZGE0YjA3NWUwNzNjYmZkNjQxYjAyMDRiYzAwODAzYzQxZjQ3
Li5kZDVkNmNmMWI2YmU4YjBjYjA5N2VmMGUyNTRmZDAxMDNlZjNkMDdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkKQEAgLTY0LDYgKzY0LDggQEAKICAgICAgICAgICAgICd0ZXN0cy9E
ZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9EcmFnSW1h
Z2VUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvRXZlbnRMaXN0ZW5lclRlc3QuY3BwJywK
KyAgICAgICAgICAgICd0ZXN0cy9GYWtlV2ViUGx1Z2luLmNwcCcsCisgICAgICAgICAgICAndGVz
dHMvRmFrZVdlYlBsdWdpbi5oJywKICAgICAgICAgICAgICd0ZXN0cy9GYWtlV2ViQ29tcG9zaXRv
ck91dHB1dFN1cmZhY2UuaCcsCiAgICAgICAgICAgICAndGVzdHMvRmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNELmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0ZpbHRlck9wZXJhdGlvbnNUZXN0LmNwcCcs
CkBAIC0xMTMsNiArMTE1LDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6
ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNw
cCcsCisgICAgICAgICAgICAndGVzdHMvV2ViUGx1Z2luQ29udGFpbmVyVGVzdC5jcHAnLAogICAg
ICAgICAgICAgJ3Rlc3RzL1dlYlNvY2tldERlZmxhdGVyVGVzdC5jcHAnLAogICAgICAgICAgICAg
J3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LmNwcCcsCiAgICAgICAgICAg
ICAndGVzdHMvV2ViVVJMUmVxdWVzdFRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYk5vZGUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYk5vZGUuaAppbmRleCA1ODY5YWVlYzYyNzc1MjdiZTg3MWJkMjQ3NGEwZjZhYzQzZGVj
N2VkLi5lODRhN2IwMWI1YjBlM2I4NDc1MWNjZTIyNTE0M2QyZjFmNjJhYTQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOb2RlLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIFdl
YkRvY3VtZW50OwogY2xhc3MgV2ViRWxlbWVudDsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2Vi
Tm9kZUxpc3Q7CitjbGFzcyBXZWJQbHVnaW5Db250YWluZXI7CiAKIC8vIFByb3ZpZGVzIGFjY2Vz
cyB0byBzb21lIHByb3BlcnRpZXMgb2YgYSBET00gbm9kZS4KIGNsYXNzIFdlYk5vZGUgewpAQCAt
MTE5LDYgKzEyMCw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGRvZXMgbm90IDEwMCUgZ3VhcmFu
dGVlIHRoZSB1c2VyIGNhbiBzZWUgaXQsIGJ1dCBpcyBwcmV0dHkgY2xvc2UuCiAgICAgLy8gTm90
ZTogVGhpcyBtZXRob2Qgb25seSB3b3JrcyBwcm9wZXJseSBhZnRlciBsYXlvdXQgaGFzIG9jY3Vy
cmVkLgogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBoYXNOb25FbXB0eUJvdW5kaW5nQm94KCkgY29u
c3Q7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJQbHVnaW5Db250YWluZXIqIHBsdWdpbkNvbnRhaW5l
cigpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCB0bygpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luQ29udGFpbmVy
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5Db250YWluZXIuaApp
bmRleCBkZWJlMjYwMzgwMWI4ZmMxOGM3MjEzZDQ4ZTIxMDMwOGJhY2VlYzMwLi4yODE2ZmJkYTBk
YjVhMGM5OWJkNjdhOTY2YTMwYzg3ZWI3Y2I4OGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5Db250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5Db250YWluZXIuaApAQCAtMzEsNiArMzEsOCBAQAog
I2lmbmRlZiBXZWJQbHVnaW5Db250YWluZXJfaAogI2RlZmluZSBXZWJQbHVnaW5Db250YWluZXJf
aAogCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisKIHN0cnVjdCBOUE9iamVjdDsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MCw2ICs0Miw3IEBAIGNsYXNzIFdlYlBsdWdpbjsK
IGNsYXNzIFdlYlN0cmluZzsKIGNsYXNzIFdlYlVSTDsKIGNsYXNzIFdlYlVSTFJlcXVlc3Q7Citz
dHJ1Y3QgV2ViUG9pbnQ7CiBzdHJ1Y3QgV2ViUmVjdDsKIAogY2xhc3MgV2ViUGx1Z2luQ29udGFp
bmVyIHsKQEAgLTExMSw2ICsxMTQsOSBAQCBwdWJsaWM6CiAgICAgLy8gTm90aWZpZXMgd2hlbiB0
aGUgcGx1Z2luIHN0YXJ0cy9zdG9wcyBhY2NlcHRpbmcgdG91Y2ggZXZlbnRzLgogICAgIHZpcnR1
YWwgdm9pZCBzZXRJc0FjY2VwdGluZ1RvdWNoRXZlbnRzKGJvb2wpID0gMDsKIAorICAgIC8vIENv
bnZlcnRzIHZpZXcncyB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gcGx1Z2luJ3MgbG9jYWwgY29vcmRp
bmF0ZXMuCisgICAgdmlydHVhbCBXZWJQb2ludCB3aW5kb3dUb0xvY2FsUG9pbnQoY29uc3QgV2Vi
UG9pbnQmKSA9IDA7CisKICAgICB2aXJ0dWFsIFdlYlBsdWdpbiogcGx1Z2luKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRQbHVnaW4oV2ViUGx1Z2luKikgPSAwOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCAxOTM2NDc2ZjNhZTFhMjAxNDAz
M2RjM2ZkYjdlMGNhYjVjYThjN2YyLi4zN2YxNDRmMjFlZTJmYWE0NTJmZGZlODM2NjRjYjc1MWFk
MjlkOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAK
QEAgLTEzMCw3ICsxMzAsNiBAQAogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUg
IlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSAi
UmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgpAQCAtMzA0LDIz
ICszMDMsNiBAQCBzdGF0aWMgbG9uZyBsb25nIGdlbmVyYXRlRnJhbWVJZGVudGlmaWVyKCkKICAg
ICByZXR1cm4gKytuZXh0OwogfQogCi1zdGF0aWMgV2ViUGx1Z2luQ29udGFpbmVySW1wbCogcGx1
Z2luQ29udGFpbmVyRnJvbU5vZGUoY29uc3QgV2ViTm9kZSYgbm9kZSkKLXsKLSAgICBpZiAobm9k
ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb25zdCBOb2RlKiBjb3JlTm9k
ZSA9IG5vZGUuY29uc3RVbndyYXA8Tm9kZT4oKTsKLSAgICBpZiAoY29yZU5vZGUtPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjpvYmplY3RUYWcpIHx8IGNvcmVOb2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6ZW1iZWRUYWcpKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gY29yZU5vZGUt
PnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LT5pc1dpZGdldCgpKSB7
Ci0gICAgICAgICAgICBXaWRnZXQqIHdpZGdldCA9IHRvUmVuZGVyV2lkZ2V0KG9iamVjdCktPndp
ZGdldCgpOwotICAgICAgICAgICAgaWYgKHdpZGdldCAmJiB3aWRnZXQtPmlzUGx1Z2luQ29udGFp
bmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYlBsdWdpbkNvbnRh
aW5lckltcGwqPih3aWRnZXQpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAwOwotfQot
CiBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBXZWJGcmFtZUltcGw6OnBsdWdpbkNvbnRhaW5lckZy
b21GcmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTEyMzIsNyArMTIx
NCw3IEBAIGJvb2wgV2ViRnJhbWVJbXBsOjpleGVjdXRlQ29tbWFuZChjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYk5vZGUmIG5vZGUpCiAgICAgaWYgKGNvbW1hbmQgPT0gIkNvcHkiKSB7
CiAgICAgICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbkNvbnRhaW5lciA9IHBsdWdp
bkNvbnRhaW5lckZyb21GcmFtZShmcmFtZSgpKTsKICAgICAgICAgaWYgKCFwbHVnaW5Db250YWlu
ZXIpCi0gICAgICAgICAgICBwbHVnaW5Db250YWluZXIgPSBwbHVnaW5Db250YWluZXJGcm9tTm9k
ZShub2RlKTsKKyAgICAgICAgICAgIHBsdWdpbkNvbnRhaW5lciA9IHN0YXRpY19jYXN0PFdlYlBs
dWdpbkNvbnRhaW5lckltcGwqPihub2RlLnBsdWdpbkNvbnRhaW5lcigpKTsKICAgICAgICAgaWYg
KHBsdWdpbkNvbnRhaW5lcikgewogICAgICAgICAgICAgcGx1Z2luQ29udGFpbmVyLT5jb3B5KCk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0MjgsNyArMTQxMCw3IEBAIGludCBXZWJG
cmFtZUltcGw6OnByaW50QmVnaW4oY29uc3QgV2ViUHJpbnRQYXJhbXMmIHByaW50UGFyYW1zLCBj
b25zdCBXZWJOb2RlJiBjCiAgICAgICAgIHBsdWdpbkNvbnRhaW5lciA9IHBsdWdpbkNvbnRhaW5l
ckZyb21GcmFtZShmcmFtZSgpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBXZSBvbmx5IHN1
cHBvcnQgcHJpbnRpbmcgcGx1Z2luIG5vZGVzIGZvciBub3cuCi0gICAgICAgIHBsdWdpbkNvbnRh
aW5lciA9IHBsdWdpbkNvbnRhaW5lckZyb21Ob2RlKGNvbnN0cmFpblRvTm9kZSk7CisgICAgICAg
IHBsdWdpbkNvbnRhaW5lciA9IHN0YXRpY19jYXN0PFdlYlBsdWdpbkNvbnRhaW5lckltcGwqPihj
b25zdHJhaW5Ub05vZGUucGx1Z2luQ29udGFpbmVyKCkpOwogICAgIH0KIAogICAgIGlmIChwbHVn
aW5Db250YWluZXIgJiYgcGx1Z2luQ29udGFpbmVyLT5zdXBwb3J0c1BhZ2luYXRlZFByaW50KCkp
CkBAIC0xNDc3LDcgKzE0NTksNyBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6cHJpbnRFbmQoKQogCiBi
b29sIFdlYkZyYW1lSW1wbDo6aXNQcmludFNjYWxpbmdEaXNhYmxlZEZvclBsdWdpbihjb25zdCBX
ZWJOb2RlJiBub2RlKQogewotICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbkNvbnRh
aW5lciA9ICBub2RlLmlzTnVsbCgpID8gcGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKGZyYW1lKCkp
IDogcGx1Z2luQ29udGFpbmVyRnJvbU5vZGUobm9kZSk7CisgICAgV2ViUGx1Z2luQ29udGFpbmVy
SW1wbCogcGx1Z2luQ29udGFpbmVyID0gIG5vZGUuaXNOdWxsKCkgPyBwbHVnaW5Db250YWluZXJG
cm9tRnJhbWUoZnJhbWUoKSkgOiBzdGF0aWNfY2FzdDxXZWJQbHVnaW5Db250YWluZXJJbXBsKj4o
bm9kZS5wbHVnaW5Db250YWluZXIoKSk7CiAKICAgICBpZiAoIXBsdWdpbkNvbnRhaW5lciB8fCAh
cGx1Z2luQ29udGFpbmVyLT5zdXBwb3J0c1BhZ2luYXRlZFByaW50KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk5vZGUu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5jcHAKaW5kZXggY2UxNzZj
MDE2NzJjMDRmMTBmNjE1NmJkNmNhYzE2YjBkODA1YzRkMy4uZTNlNzIwYjZlMTQyOTg2NWE1MDM1
ZDRkZDU5NzhkMzQ0MmYzNzg3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5j
cHAKQEAgLTM4LDEyICszOCwxNyBAQAogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXJXcmFwcGVyLmgiCisjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiV2ViRE9N
RXZlbnQuaCIKICNpbmNsdWRlICJXZWJET01FdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2Vi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJ
bXBsLmgiCiAjaW5jbHVkZSAiV2ViTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJXZWJQbHVnaW5Db250
YWluZXIuaCIKKyNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXJJbXBsLmgiCisjaW5jbHVkZSAi
V2lkZ2V0LmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYlN0cmlu
Zy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJWZWN0b3IuaD4KQEAgLTIzNSw2ICsyNDAsMjIgQEAg
Ym9vbCBXZWJOb2RlOjpoYXNOb25FbXB0eUJvdW5kaW5nQm94KCkgY29uc3QKICAgICByZXR1cm4g
bV9wcml2YXRlLT5oYXNOb25FbXB0eUJvdW5kaW5nQm94KCk7CiB9CiAKK1dlYlBsdWdpbkNvbnRh
aW5lciogV2ViTm9kZTo6cGx1Z2luQ29udGFpbmVyKCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiAwOworICAgIGNvbnN0IE5vZGUqIGNvcmVOb2RlID0gY29uc3RV
bndyYXA8Tm9kZT4oKTsKKyAgICBpZiAoY29yZU5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpv
YmplY3RUYWcpIHx8IGNvcmVOb2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZW1iZWRUYWcpKSB7
CisgICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gY29yZU5vZGUtPnJlbmRlcmVyKCk7Cisg
ICAgICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LT5pc1dpZGdldCgpKSB7CisgICAgICAgICAgICBX
aWRnZXQqIHdpZGdldCA9IFdlYkNvcmU6OnRvUmVuZGVyV2lkZ2V0KG9iamVjdCktPndpZGdldCgp
OworICAgICAgICAgICAgaWYgKHdpZGdldCAmJiB3aWRnZXQtPmlzUGx1Z2luQ29udGFpbmVyKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYlBsdWdpbkNvbnRhaW5lcklt
cGwqPih3aWRnZXQpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCiBXZWJO
b2RlOjpXZWJOb2RlKGNvbnN0IFBhc3NSZWZQdHI8Tm9kZT4mIG5vZGUpCiAgICAgOiBtX3ByaXZh
dGUobm9kZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBs
dWdpbkNvbnRhaW5lckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1
Z2luQ29udGFpbmVySW1wbC5jcHAKaW5kZXggNzM4NDJhMTlmOGJlNWNmNDk2Yzk4MGY1MDg2MzEz
MGRjMDNiODFkYy4uMjM2MmViYmE2NTIyZGIwZDJhNDk0YTRmNTA4NDA0ZWVhNTE1YTBmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVy
SW1wbC5jcHAKQEAgLTUzMSw2ICs1MzEsMTUgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBs
OjpzZXRJc0FjY2VwdGluZ1RvdWNoRXZlbnRzKGJvb2wgYWNjZXB0aW5nVG91Y2hFdmVudHMKICAg
ICAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLT5kaWRSZW1vdmVUb3VjaEV2ZW50SGFuZGxlcigp
OwogfQogCitXZWJQb2ludCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjp3aW5kb3dUb0xvY2FsUG9p
bnQoY29uc3QgV2ViUG9pbnQmIHBvaW50KQoreworICAgIFNjcm9sbFZpZXcqIHZpZXcgPSBwYXJl
bnQoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBwb2ludDsKKyAgICBXZWJQb2lu
dCB3aW5kb3dQb2ludCA9IHZpZXctPndpbmRvd1RvQ29udGVudHMocG9pbnQpOworICAgIHJldHVy
biByb3VuZGVkSW50UG9pbnQobV9lbGVtZW50LT5yZW5kZXJlcigpLT5hYnNvbHV0ZVRvTG9jYWwo
TGF5b3V0UG9pbnQod2luZG93UG9pbnQpLCBVc2VUcmFuc2Zvcm1zIHwgU25hcE9mZnNldEZvclRy
YW5zZm9ybXMpKTsKK30KKwogdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgLy8gTWFr
ZSBzdXJlIHRoYXQgdGhlIHBsdWdpbiByZWNlaXZlcyB3aW5kb3cgZ2VvbWV0cnkgYmVmb3JlIGRh
dGEsIG9yIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBs
dWdpbkNvbnRhaW5lckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdp
bkNvbnRhaW5lckltcGwuaAppbmRleCA4OWYyOTcxYjcyMzI5ZTBmZDY2NDc5NzY1NmZhMDNjMmQ5
NDE1ZmNiLi43ZTc5NDQ2MDdhZjkzMDVlNzBmZTNkY2VlNzhhOWRlZGZjYzgwOWQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5o
CkBAIC0xMTMsNiArMTEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUo
Ym9vbCk7CiAgICAgdmlydHVhbCBib29sIGlzUmVjdFRvcG1vc3QoY29uc3QgV2ViUmVjdCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRJc0FjY2VwdGluZ1RvdWNoRXZlbnRzKGJvb2wpOworICAgIHZp
cnR1YWwgV2ViUG9pbnQgd2luZG93VG9Mb2NhbFBvaW50KGNvbnN0IFdlYlBvaW50Jik7CiAKICAg
ICAvLyBUaGlzIGNhbm5vdCBiZSBudWxsLgogICAgIFdlYlBsdWdpbiogcGx1Z2luKCkgeyByZXR1
cm4gbV93ZWJQbHVnaW47IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvRmFrZVdlYlBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VX
ZWJQbHVnaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMWNiOWZhMDFlZWQyNGU3OGRlNWU2NDUxMThhZGE2
M2UzYWE2NDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0Zha2VXZWJQbHVnaW4uY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRmFrZVdlYlBsdWdpbi5oIgorCisjaW5jbHVkZSAiV2ViUGx1Z2luUGFyYW1zLmgi
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
RmFrZVdlYlBsdWdpbjo6RmFrZVdlYlBsdWdpbihXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYlBs
dWdpblBhcmFtcyYgcGFyYW1zKQorICAgIDogbV9mcmFtZShmcmFtZSkKK3sKK30KKworRmFrZVdl
YlBsdWdpbjo6fkZha2VXZWJQbHVnaW4oKQoreworfQorCitib29sIEZha2VXZWJQbHVnaW46Omlu
aXRpYWxpemUoV2ViUGx1Z2luQ29udGFpbmVyKiBjb250YWluZXIpCit7CisgICAgbV9jb250YWlu
ZXIgPSBjb250YWluZXI7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRmFrZVdlYlBsdWdp
bjo6ZGVzdHJveSgpCit7CisgICAgbV9jb250YWluZXIgPSAwOworICAgIG1fZnJhbWUgPSAwOwor
fQorCit9IC8vIG5hbWVzcGFjZSAgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0Zha2VXZWJQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvRmFrZVdlYlBsdWdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlZTQxYzhkYzYyZjQzYzhiYjFjZGI2YmEz
NDc5NjkyZmZiMGE4NGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0Zha2VXZWJQbHVnaW4uaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGYWtlV2ViUGx1
Z2luX2gKKyNkZWZpbmUgRmFrZVdlYlBsdWdpbl9oCisKKyNpbmNsdWRlICJXZWJQbHVnaW4uaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRyYWdEYXRhOworY2xhc3MgV2ViRnJh
bWU7CitjbGFzcyBXZWJJbnB1dEV2ZW50OworY2xhc3MgV2ViUGx1Z2luQ29udGFpbmVyOworY2xh
c3MgV2ViVVJMOworY2xhc3MgV2ViVVJMUmVxdWVzdDsKK2NsYXNzIFdlYlVSTFJlc3BvbnNlOwor
CitjbGFzcyBGYWtlV2ViUGx1Z2luIDogcHVibGljIFdlYlBsdWdpbiB7CitwdWJsaWM6CisgICAg
RmFrZVdlYlBsdWdpbihXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJQbHVnaW5Q
YXJhbXMmKTsKKyAgICB2aXJ0dWFsIH5GYWtlV2ViUGx1Z2luKCk7CisKKyAgICAvLyBXZWJQbHVn
aW4gbWV0aG9kczoKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShXZWJLaXQ6OldlYlBsdWdp
bkNvbnRhaW5lciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBOUE9iamVjdCogc2NyaXB0YWJsZU9iamVjdCgpIE9WRVJSSURFIHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuUHJvY2Vzc0RyYWcoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJLaXQ6Oldl
YkNhbnZhcyosIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVHZW9tZXRyeShjb25zdCBXZWJLaXQ6OldlYlJlY3QmIGZyYW1lUmVjdCwg
Y29uc3QgV2ViS2l0OjpXZWJSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViS2l0OjpXZWJWZWN0b3I8
V2ViS2l0OjpXZWJSZWN0PiYgY3V0T3V0c1JlY3RzLCBib29sIGlzVmlzaWJsZSkgT1ZFUlJJREUg
eyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvY3VzKGJvb2wpIE9WRVJSSURFIHsgfQorICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVWaXNpYmlsaXR5KGJvb2wpIE9WRVJSSURFIHsgfQorICAgIHZp
cnR1YWwgYm9vbCBhY2NlcHRzSW5wdXRFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIGhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViS2l0OjpXZWJJbnB1
dEV2ZW50JiwgV2ViS2l0OjpXZWJDdXJzb3JJbmZvJikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRHJhZ1N0YXR1c1VwZGF0ZShXZWJLaXQ6OldlYkRy
YWdTdGF0dXMsIGNvbnN0IFdlYktpdDo6V2ViRHJhZ0RhdGEmLCBXZWJLaXQ6OldlYkRyYWdPcGVy
YXRpb25zTWFzaywgY29uc3QgV2ViS2l0OjpXZWJQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYktp
dDo6V2ViUG9pbnQmIHNjcmVlblBvc2l0aW9uKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViS2l0OjpXZWJVUkxS
ZXNwb25zZSYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViS2l0OjpXZWJVUkxFcnJvciYpIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nRnJhbWVSZXF1ZXN0KGNvbnN0IFdlYktp
dDo6V2ViVVJMJiwgdm9pZCogbm90aWZ5RGF0YSkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWxMb2FkaW5nRnJhbWVSZXF1ZXN0KGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgdm9p
ZCogbm90aWZ5RGF0YSwgY29uc3QgV2ViS2l0OjpXZWJVUkxFcnJvciYpIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc1BsYWNlaG9sZGVyKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KKworcHJpdmF0ZToKKyAgICBXZWJGcmFtZSogbV9mcmFtZTsKKyAgICBXZWJQbHVnaW5Db250
YWluZXIqIG1fY29udGFpbmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBGYWtlV2ViUGx1Z2luX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViUGx1Z2luQ29udGFpbmVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYlBsdWdpbkNvbnRhaW5lclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMDg5YzlkNGQ2
MTBkZmYzOTdjNTJmNmYxNDQ5N2EyMDYzYzU3NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBsdWdpbkNvbnRhaW5lclRlc3QuY3BwCkBAIC0wLDAg
KzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5l
ci5oIgorCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkZha2VXZWJQbHVnaW4uaCIK
KyNpbmNsdWRlICJGcmFtZVRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMu
aCIKKyNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKKyNp
bmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCisjaW5jbHVk
ZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIgor
I2luY2x1ZGUgIldlYlBsdWdpblBhcmFtcy5oIgorI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCisj
aW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCisjaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgeworCitjbGFzcyBXZWJQ
bHVnaW5Db250YWluZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAg
IFdlYlBsdWdpbkNvbnRhaW5lclRlc3QoKQorICAgICAgICA6IG1fYmFzZVVSTCgiaHR0cDovL3d3
dy50ZXN0LmNvbS8iKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KQorICAgIHsKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxz
KCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgc3RkOjpzdHJpbmcgbV9iYXNlVVJMOworfTsK
KworY2xhc3MgVGVzdFBsdWdpbldlYkZyYW1lQ2xpZW50IDogcHVibGljIFdlYkZyYW1lQ2xpZW50
IHsKKyAgICB2aXJ0dWFsIFdlYlBsdWdpbiogY3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgV2ViUGx1Z2luUGFyYW1zJiBwYXJhbXMpIE9WRVJSSURFCisgICAgeworICAgICAgICBp
ZiAocGFyYW1zLm1pbWVUeXBlID09IFdlYlN0cmluZzo6ZnJvbVVURjgoImFwcGxpY2F0aW9uL3gt
d2Via2l0LXRlc3Qtd2VicGx1Z2luIikpCisgICAgICAgICAgICByZXR1cm4gbmV3IEZha2VXZWJQ
bHVnaW4oZnJhbWUsIHBhcmFtcyk7CisgICAgICAgIHJldHVybiBXZWJGcmFtZUNsaWVudDo6Y3Jl
YXRlUGx1Z2luKGZyYW1lLCBwYXJhbXMpOworICAgIH0KK307CisKK1dlYlBsdWdpbkNvbnRhaW5l
ciogZ2V0V2ViUGx1Z2luQ29udGFpbmVyKFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFdlYlN0cmlu
ZyYgaWQpCit7CisgICAgV2ViRWxlbWVudCBlbGVtZW50ID0gd2ViVmlldy0+bWFpbkZyYW1lKCkt
PmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoaWQpOworICAgIHJldHVybiBlbGVtZW50LnBsdWdp
bkNvbnRhaW5lcigpOworfQorCitURVNUX0YoV2ViUGx1Z2luQ29udGFpbmVyVGVzdCwgV2luZG93
VG9Mb2NhbFBvaW50VGVzdCkKK3sKKyAgICBVUkxUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRV
UkxGcm9tQmFzZVVSTChXZWJTdHJpbmc6OmZyb21VVEY4KG1fYmFzZVVSTC5jX3N0cigpKSwgV2Vi
U3RyaW5nOjpmcm9tVVRGOCgicGx1Z2luX2NvbnRhaW5lci5odG1sIikpOworICAgIFdlYlZpZXcq
IHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VV
UkwgKyAicGx1Z2luX2NvbnRhaW5lci5odG1sIiwgdHJ1ZSwgbmV3IFRlc3RQbHVnaW5XZWJGcmFt
ZUNsaWVudCgpKTsKKyAgICBBU1NFUlQod2ViVmlldyk7CisgICAgd2ViVmlldy0+c2V0dGluZ3Mo
KS0+c2V0UGx1Z2luc0VuYWJsZWQodHJ1ZSk7CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUo
MzAwLCAzMDApKTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6
UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisKKyAgICBXZWJQbHVnaW5Db250YWluZXIqIHBsdWdp
bkNvbnRhaW5lck9uZSA9IGdldFdlYlBsdWdpbkNvbnRhaW5lcih3ZWJWaWV3LCBXZWJTdHJpbmc6
OmZyb21VVEY4KCJ0cmFuc2xhdGVkLXBsdWdpbiIpKTsKKyAgICBBU1NFUlQocGx1Z2luQ29udGFp
bmVyT25lKTsKKyAgICBXZWJQb2ludCBwb2ludDEgPSBwbHVnaW5Db250YWluZXJPbmUtPndpbmRv
d1RvTG9jYWxQb2ludChXZWJQb2ludCgxMCwgMTApKTsKKyAgICBBU1NFUlRfRVEoMCwgcG9pbnQx
LngpOworICAgIEFTU0VSVF9FUSgwLCBwb2ludDEueSk7CisgICAgV2ViUG9pbnQgcG9pbnQyID0g
cGx1Z2luQ29udGFpbmVyT25lLT53aW5kb3dUb0xvY2FsUG9pbnQoV2ViUG9pbnQoMTAwLCAxMDAp
KTsKKyAgICBBU1NFUlRfRVEoOTAsIHBvaW50Mi54KTsKKyAgICBBU1NFUlRfRVEoOTAsIHBvaW50
Mi55KTsKKworICAgIFdlYlBsdWdpbkNvbnRhaW5lciogcGx1Z2luQ29udGFpbmVyVHdvID0gZ2V0
V2ViUGx1Z2luQ29udGFpbmVyKHdlYlZpZXcsIFdlYlN0cmluZzo6ZnJvbVVURjgoInJvdGF0ZWQt
cGx1Z2luIikpOworICAgIEFTU0VSVChwbHVnaW5Db250YWluZXJUd28pOworICAgIFdlYlBvaW50
IHBvaW50MyA9IHBsdWdpbkNvbnRhaW5lclR3by0+d2luZG93VG9Mb2NhbFBvaW50KFdlYlBvaW50
KDAsIDEwKSk7CisgICAgQVNTRVJUX0VRKDEwLCBwb2ludDMueCk7CisgICAgQVNTRVJUX0VRKDAs
IHBvaW50My55KTsKKyAgICBXZWJQb2ludCBwb2ludDQgPSBwbHVnaW5Db250YWluZXJUd28tPndp
bmRvd1RvTG9jYWxQb2ludChXZWJQb2ludCgtMTAsIDEwKSk7CisgICAgQVNTRVJUX0VRKDEwLCBw
b2ludDQueCk7CisgICAgQVNTRVJUX0VRKDEwLCBwb2ludDQueSk7CisKKyAgICB3ZWJWaWV3LT5j
bG9zZSgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L2RhdGEvcGx1Z2luX2NvbnRhaW5lci5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9kYXRhL3BsdWdpbl9jb250YWluZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTNjYTgwNGU4NzZlNTAz
Nzc4NDY5MWMzNTdmMWI4MmNjNjgwYzg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9kYXRhL3BsdWdpbl9jb250YWluZXIuaHRtbApAQCAtMCwwICsxLDI0
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+CisgICAgYm9keSB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQorICA8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+CisgIDxvYmplY3QgaWQ9InJvdGF0ZWQtcGx1Z2luIgorICAgICAgc3R5
bGU9Ii13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOyBwb3NpdGlvbjogYWJzb2x1dGU7
IHRvcDogMDsgbGVmdDogMDsgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7IgorICAgICAg
dHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC13ZWJwbHVnaW4iCisgICAgICBib3JkZXI9
MAorICAgICAgd2lkdGg9IjQwIgorICAgICAgaGVpZ2h0PSI0MCI+CisgIDwvb2JqZWN0PgorICA8
b2JqZWN0IGlkPSJ0cmFuc2xhdGVkLXBsdWdpbiIKKyAgICAgIGJvcmRlcj0wCisgICAgICBzdHls
ZT0iLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMHB4LCAxMHB4KTsgcG9zaXRpb246IGFi
c29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IgorICAgICAgdHlwZT0iYXBwbGljYXRpb24veC13ZWJr
aXQtdGVzdC13ZWJwbHVnaW4iCisgICAgICB3aWR0aD0iNDAiCisgICAgICBoZWlnaHQ9IjQwIj4K
KyAgPC9vYmplY3Q+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="190465"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175252</attachid>
            <date>2012-11-20 11:27:42 -0800</date>
            <delta_ts>2012-11-20 14:42:10 -0800</delta_ts>
            <desc>Patch, sync so it applies correctly</desc>
            <filename>bug-102339-20121120142530.patch</filename>
            <type>text/plain</type>
            <size>24540</size>
            <attacher>lazyboy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTZmZDFlYTk3M2E3ZjdjOTk2NDgzODUyZWUz
MzVhYmM3NzE2NDc2ZC4uMzRlNGFjNTA0YzhmNzRmMmQ4ZmY2OGY2YTAwZjMwYjNkNGRjMzVlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMi0xMS0yMCAg
SXN0aWFxdWUgQWhtZWQgIDxsYXp5Ym95QGNocm9taXVtLm9yZz4KKworICAgICAgICBQcm92aWRl
IHBhZ2Uvd2luZG93IGNvb3JkaW5hdGVzIHRvIHBsdWdpbidzIGxvY2FsIGNvb3JkaW5hdGVzIHRy
YW5zbGF0aW9uIGluIFdlYlBsdWdpbkNvbnRhaW5lci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjMzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHdpbGwgYWxsb3cgY29udmVydGlu
ZyBhIHBhZ2UncyB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gcGx1Z2lucydzIGxvY2FsIGNvb3JkaW5h
dGVzLAorICAgICAgICB0YWtpbmcgQ1NTIHRyYW5zZm9ybWF0aW9ucyBpbnRvIGFjY291bnQuIEVt
YmVkZGVyIHBhZ2Ugb2YgdGhlIHBsdWdpbiBjYW4gdXNlIHRoaXMgaW5mb3JtYXRpb24KKyAgICAg
ICAgZm9yIHRhcmdldHRpbmcgZWxlbWVudHMgaW5zaWRlIHRoZSBwbHVnaW4gKGUuZy4gZGV2dG9v
bHMgY2FuIGluc3BlY3QgYSBzcGVjaWZpYyBlbGVtZW50IGF0IHRoZQorICAgICAgICBsb2NhbCBj
b29yZGluYXRlIHBvc2l0aW9uIGluc2lkZSBwbHVnaW4pLgorCisgICAgICAgICogV2ViS2l0Lmd5
cDoKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2ViTm9kZS5oOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBwdWJsaWMvV2ViUGx1Z2luQ29udGFpbmVyLmg6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFpbmVyKToKKyAgICAg
ICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBs
OjpleGVjdXRlQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6cHJpbnRC
ZWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6aXNQcmludFNjYWxpbmdEaXNh
YmxlZEZvclBsdWdpbik6CisgICAgICAgICogc3JjL1dlYk5vZGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb2RlOjpwbHVnaW5Db250YWluZXIpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsdWdpbkNvbnRhaW5lckltcGw6OndpbmRvd1RvTG9jYWxQb2ludCk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmg6CisgICAgICAgIChX
ZWJQbHVnaW5Db250YWluZXJJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9GYWtlV2ViUGx1Z2luLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpGYWtlV2ViUGx1
Z2luOjpGYWtlV2ViUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYlBsdWdpbjo6fkZh
a2VXZWJQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpGYWtlV2ViUGx1Z2luOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYlBsdWdpbjo6ZGVzdHJveSk6CisgICAgICAgICog
dGVzdHMvRmFrZVdlYlBsdWdpbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChGYWtlV2ViUGx1Z2luKToKKyAgICAgICAgKiB0ZXN0cy9XZWJQbHVnaW5Db250YWluZXJUZXN0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFp
bmVyVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lclRlc3Q6OldlYlBs
dWdpbkNvbnRhaW5lclRlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJU
ZXN0OjpUZWFyRG93bik6CisgICAgICAgIChXZWJLaXQ6OmdldFdlYlBsdWdpbkNvbnRhaW5lcik6
CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvZGF0YS9wbHVnaW5f
Y29udGFpbmVyLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTE5ICBZdXJ5IFNlbWlraGF0c2t5ICA8
eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBDaHJvbWl1bSBX
aW4gY29tcGlsYXRpb24gYWZ0ZXIgcjEzNTE5Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApp
bmRleCAyNDc0MmM1N2I4OWRiMmM3MjI3ZjE5Njg4Y2JmMjlkYTUzZDQxZjcwLi4wZGQ1M2JmYTM3
ZmUzMWY5M2RiMDJjYjA3ZWQzMDU5ZDQzZGMwNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCkBAIC03MTcsNiArNzE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IyBmdW5jdGlvbnMgZGVmaW5lZCBvbmx5IGluICFXRUJLSVRfSU1QTEVNRU5UQVRJT04uCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVz
dC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvRXZlbnRMaXN0
ZW5lclRlc3QuY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0Zh
a2VXZWJQbHVnaW4uY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Rz
L0ZyYW1lVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0ZXN0cy9MZXZlbERCVGVzdC5jcHAnLApAQCAtNzMxLDYgKzczMiw3IEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJJbWFnZVRlc3QuY3Bw
JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VOZXdTZXJp
YWxpemVyVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMv
V2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd0ZXN0cy9XZWJQbHVnaW5Db250YWluZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJWaWV3VGVzdC5jcHAnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMn
OiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCAwMDI5ZGE0YjA3NWUwNzNjYmZk
NjQxYjAyMDRiYzAwODAzYzQxZjQ3Li5kZDVkNmNmMWI2YmU4YjBjYjA5N2VmMGUyNTRmZDAxMDNl
ZjNkMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTY0LDYgKzY0LDggQEAK
ICAgICAgICAgICAgICd0ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwJywKICAgICAg
ICAgICAgICd0ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvRXZl
bnRMaXN0ZW5lclRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9GYWtlV2ViUGx1Z2luLmNw
cCcsCisgICAgICAgICAgICAndGVzdHMvRmFrZVdlYlBsdWdpbi5oJywKICAgICAgICAgICAgICd0
ZXN0cy9GYWtlV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2UuaCcsCiAgICAgICAgICAgICAndGVz
dHMvRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0ZpbHRl
ck9wZXJhdGlvbnNUZXN0LmNwcCcsCkBAIC0xMTMsNiArMTE1LDcgQEAKICAgICAgICAgICAgICd0
ZXN0cy9XZWJNZWRpYVBsYXllckNsaWVudEltcGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2Vi
UGFnZVNlcmlhbGl6ZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvV2ViUGx1Z2luQ29u
dGFpbmVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlNvY2tldERlZmxhdGVyVGVz
dC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJU
ZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViVVJMUmVxdWVzdFRlc3QuY3BwJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vZGUuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vZGUuaAppbmRleCA1ODY5YWVlYzYyNzc1Mjdi
ZTg3MWJkMjQ3NGEwZjZhYzQzZGVjN2VkLi5lODRhN2IwMWI1YjBlM2I4NDc1MWNjZTIyNTE0M2Qy
ZjFmNjJhYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJO
b2RlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5oCkBAIC00
NSw2ICs0NSw3IEBAIGNsYXNzIFdlYkRvY3VtZW50OwogY2xhc3MgV2ViRWxlbWVudDsKIGNsYXNz
IFdlYkZyYW1lOwogY2xhc3MgV2ViTm9kZUxpc3Q7CitjbGFzcyBXZWJQbHVnaW5Db250YWluZXI7
CiAKIC8vIFByb3ZpZGVzIGFjY2VzcyB0byBzb21lIHByb3BlcnRpZXMgb2YgYSBET00gbm9kZS4K
IGNsYXNzIFdlYk5vZGUgewpAQCAtMTE5LDYgKzEyMCw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlz
IGRvZXMgbm90IDEwMCUgZ3VhcmFudGVlIHRoZSB1c2VyIGNhbiBzZWUgaXQsIGJ1dCBpcyBwcmV0
dHkgY2xvc2UuCiAgICAgLy8gTm90ZTogVGhpcyBtZXRob2Qgb25seSB3b3JrcyBwcm9wZXJseSBh
ZnRlciBsYXlvdXQgaGFzIG9jY3VycmVkLgogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBoYXNOb25F
bXB0eUJvdW5kaW5nQm94KCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJQbHVnaW5Db250
YWluZXIqIHBsdWdpbkNvbnRhaW5lcigpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gVCB0bygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViUGx1Z2luQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJQbHVnaW5Db250YWluZXIuaAppbmRleCBkM2Q2MGZkM2E5ZmI1ZWE1MmJkMjQ1ZWZkMGVhOTBk
NmZmMzY2ZGYxLi4xMjI5MDE0ZGFiNzU1Y2QzMzNkMmUxNDllNTU4ZDIxNDk5YmU3ZDJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5Db250YWluZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5Db250YWluZXIu
aApAQCAtMzEsNiArMzEsOCBAQAogI2lmbmRlZiBXZWJQbHVnaW5Db250YWluZXJfaAogI2RlZmlu
ZSBXZWJQbHVnaW5Db250YWluZXJfaAogCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgi
CisKIHN0cnVjdCBOUE9iamVjdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MCw2ICs0Miw3
IEBAIGNsYXNzIFdlYlBsdWdpbjsKIGNsYXNzIFdlYlN0cmluZzsKIGNsYXNzIFdlYlVSTDsKIGNs
YXNzIFdlYlVSTFJlcXVlc3Q7CitzdHJ1Y3QgV2ViUG9pbnQ7CiBzdHJ1Y3QgV2ViUmVjdDsKIAog
Y2xhc3MgV2ViUGx1Z2luQ29udGFpbmVyIHsKQEAgLTExNyw2ICsxMjAsOSBAQCBwdWJsaWM6CiAg
ICAgLy8gaXMgaW4gdXNlIGJ1dCBhIHNjcm9sbCBiYXIgaXMgbm90IGluIHVzZSkuCiAgICAgdmly
dHVhbCB2b2lkIHNldFdhbnRzV2hlZWxFdmVudHMoYm9vbCkgPSAwOwogCisgICAgLy8gQ29udmVy
dHMgdmlldydzIHdpbmRvdyBjb29yZGluYXRlcyB0byBwbHVnaW4ncyBsb2NhbCBjb29yZGluYXRl
cy4KKyAgICB2aXJ0dWFsIFdlYlBvaW50IHdpbmRvd1RvTG9jYWxQb2ludChjb25zdCBXZWJQb2lu
dCYpID0gMDsKKwogICAgIHZpcnR1YWwgV2ViUGx1Z2luKiBwbHVnaW4oKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldFBsdWdpbihXZWJQbHVnaW4qKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDE5MzY0NzZmM2FlMWEyMDE0MDMzZGMz
ZmRiN2UwY2FiNWNhOGM3ZjIuLjM3ZjE0NGYyMWVlMmZhYTQ1MmZkZmU4MzY2NGNiNzUxYWQyOWQ5
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAt
MTMwLDcgKzEzMCw2IEBACiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKLSNpbmNsdWRlICJSZW5k
ZXJXaWRnZXQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCkBAIC0zMDQsMjMgKzMw
Myw2IEBAIHN0YXRpYyBsb25nIGxvbmcgZ2VuZXJhdGVGcmFtZUlkZW50aWZpZXIoKQogICAgIHJl
dHVybiArK25leHQ7CiB9CiAKLXN0YXRpYyBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5D
b250YWluZXJGcm9tTm9kZShjb25zdCBXZWJOb2RlJiBub2RlKQotewotICAgIGlmIChub2RlLmlz
TnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGNvbnN0IE5vZGUqIGNvcmVOb2RlID0g
bm9kZS5jb25zdFVud3JhcDxOb2RlPigpOwotICAgIGlmIChjb3JlTm9kZS0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6Om9iamVjdFRhZykgfHwgY29yZU5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpl
bWJlZFRhZykpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBjb3JlTm9kZS0+cmVu
ZGVyZXIoKTsKLSAgICAgICAgaWYgKG9iamVjdCAmJiBvYmplY3QtPmlzV2lkZ2V0KCkpIHsKLSAg
ICAgICAgICAgIFdpZGdldCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQob2JqZWN0KS0+d2lkZ2V0
KCk7Ci0gICAgICAgICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNQbHVnaW5Db250YWluZXIo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViUGx1Z2luQ29udGFpbmVy
SW1wbCo+KHdpZGdldCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIFdl
YlBsdWdpbkNvbnRhaW5lckltcGwqIFdlYkZyYW1lSW1wbDo6cGx1Z2luQ29udGFpbmVyRnJvbUZy
YW1lKEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lKQpAQCAtMTIzMiw3ICsxMjE0LDcg
QEAgYm9vbCBXZWJGcmFtZUltcGw6OmV4ZWN1dGVDb21tYW5kKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViTm9kZSYgbm9kZSkKICAgICBpZiAoY29tbWFuZCA9PSAiQ29weSIpIHsKICAg
ICAgICAgV2ViUGx1Z2luQ29udGFpbmVySW1wbCogcGx1Z2luQ29udGFpbmVyID0gcGx1Z2luQ29u
dGFpbmVyRnJvbUZyYW1lKGZyYW1lKCkpOwogICAgICAgICBpZiAoIXBsdWdpbkNvbnRhaW5lcikK
LSAgICAgICAgICAgIHBsdWdpbkNvbnRhaW5lciA9IHBsdWdpbkNvbnRhaW5lckZyb21Ob2RlKG5v
ZGUpOworICAgICAgICAgICAgcGx1Z2luQ29udGFpbmVyID0gc3RhdGljX2Nhc3Q8V2ViUGx1Z2lu
Q29udGFpbmVySW1wbCo+KG5vZGUucGx1Z2luQ29udGFpbmVyKCkpOwogICAgICAgICBpZiAocGx1
Z2luQ29udGFpbmVyKSB7CiAgICAgICAgICAgICBwbHVnaW5Db250YWluZXItPmNvcHkoKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQyOCw3ICsxNDEwLDcgQEAgaW50IFdlYkZyYW1l
SW1wbDo6cHJpbnRCZWdpbihjb25zdCBXZWJQcmludFBhcmFtcyYgcHJpbnRQYXJhbXMsIGNvbnN0
IFdlYk5vZGUmIGMKICAgICAgICAgcGx1Z2luQ29udGFpbmVyID0gcGx1Z2luQ29udGFpbmVyRnJv
bUZyYW1lKGZyYW1lKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIG9ubHkgc3VwcG9y
dCBwcmludGluZyBwbHVnaW4gbm9kZXMgZm9yIG5vdy4KLSAgICAgICAgcGx1Z2luQ29udGFpbmVy
ID0gcGx1Z2luQ29udGFpbmVyRnJvbU5vZGUoY29uc3RyYWluVG9Ob2RlKTsKKyAgICAgICAgcGx1
Z2luQ29udGFpbmVyID0gc3RhdGljX2Nhc3Q8V2ViUGx1Z2luQ29udGFpbmVySW1wbCo+KGNvbnN0
cmFpblRvTm9kZS5wbHVnaW5Db250YWluZXIoKSk7CiAgICAgfQogCiAgICAgaWYgKHBsdWdpbkNv
bnRhaW5lciAmJiBwbHVnaW5Db250YWluZXItPnN1cHBvcnRzUGFnaW5hdGVkUHJpbnQoKSkKQEAg
LTE0NzcsNyArMTQ1OSw3IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpwcmludEVuZCgpCiAKIGJvb2wg
V2ViRnJhbWVJbXBsOjppc1ByaW50U2NhbGluZ0Rpc2FibGVkRm9yUGx1Z2luKGNvbnN0IFdlYk5v
ZGUmIG5vZGUpCiB7Ci0gICAgV2ViUGx1Z2luQ29udGFpbmVySW1wbCogcGx1Z2luQ29udGFpbmVy
ID0gIG5vZGUuaXNOdWxsKCkgPyBwbHVnaW5Db250YWluZXJGcm9tRnJhbWUoZnJhbWUoKSkgOiBw
bHVnaW5Db250YWluZXJGcm9tTm9kZShub2RlKTsKKyAgICBXZWJQbHVnaW5Db250YWluZXJJbXBs
KiBwbHVnaW5Db250YWluZXIgPSAgbm9kZS5pc051bGwoKSA/IHBsdWdpbkNvbnRhaW5lckZyb21G
cmFtZShmcmFtZSgpKSA6IHN0YXRpY19jYXN0PFdlYlBsdWdpbkNvbnRhaW5lckltcGwqPihub2Rl
LnBsdWdpbkNvbnRhaW5lcigpKTsKIAogICAgIGlmICghcGx1Z2luQ29udGFpbmVyIHx8ICFwbHVn
aW5Db250YWluZXItPnN1cHBvcnRzUGFnaW5hdGVkUHJpbnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcAppbmRleCBjZTE3NmMwMTY3
MmMwNGYxMGY2MTU2YmQ2Y2FjMTZiMGQ4MDVjNGQzLi5lM2U3MjBiNmUxNDI5ODY1YTUwMzVkNGRk
NTk3OGQzNDQyZjM3ODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcApA
QCAtMzgsMTIgKzM4LDE3IEBACiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0
LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lcldyYXBwZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJP
YmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNsdWRlICJXZWJET01FdmVu
dC5oIgogI2luY2x1ZGUgIldlYkRPTUV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwu
aCIKICNpbmNsdWRlICJXZWJOb2RlTGlzdC5oIgorI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5l
ci5oIgorI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lckltcGwuaCIKKyNpbmNsdWRlICJXaWRn
ZXQuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYlZlY3Rvci5oPgpAQCAtMjM1LDYgKzI0MCwyMiBAQCBib29s
IFdlYk5vZGU6Omhhc05vbkVtcHR5Qm91bmRpbmdCb3goKSBjb25zdAogICAgIHJldHVybiBtX3By
aXZhdGUtPmhhc05vbkVtcHR5Qm91bmRpbmdCb3goKTsKIH0KIAorV2ViUGx1Z2luQ29udGFpbmVy
KiBXZWJOb2RlOjpwbHVnaW5Db250YWluZXIoKSBjb25zdAoreworICAgIGlmIChpc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgY29uc3QgTm9kZSogY29yZU5vZGUgPSBjb25zdFVud3Jh
cDxOb2RlPigpOworICAgIGlmIChjb3JlTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9iamVj
dFRhZykgfHwgY29yZU5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjplbWJlZFRhZykpIHsKKyAg
ICAgICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBjb3JlTm9kZS0+cmVuZGVyZXIoKTsKKyAgICAg
ICAgaWYgKG9iamVjdCAmJiBvYmplY3QtPmlzV2lkZ2V0KCkpIHsKKyAgICAgICAgICAgIFdpZGdl
dCogd2lkZ2V0ID0gV2ViQ29yZTo6dG9SZW5kZXJXaWRnZXQob2JqZWN0KS0+d2lkZ2V0KCk7Cisg
ICAgICAgICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNQbHVnaW5Db250YWluZXIoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViUGx1Z2luQ29udGFpbmVySW1wbCo+
KHdpZGdldCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIFdlYk5vZGU6
OldlYk5vZGUoY29uc3QgUGFzc1JlZlB0cjxOb2RlPiYgbm9kZSkKICAgICA6IG1fcHJpdmF0ZShu
b2RlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2lu
Q29udGFpbmVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5D
b250YWluZXJJbXBsLmNwcAppbmRleCBhZTkyMmExMWExNDNkMTUzMzFmMDY4NzE3MmMyOWU0ODE1
OGQ3MzBlLi4wNzVmYzA1NDg2ZDQ1OWMwY2RhOWFlYzQwNDJlZDVhZDk3ZDYxZTM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBs
LmNwcApAQCAtNTQ1LDYgKzU0NSwxNSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNl
dFdhbnRzV2hlZWxFdmVudHMoYm9vbCB3YW50c1doZWVsRXZlbnRzKQogICAgIH0KIH0KIAorV2Vi
UG9pbnQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6d2luZG93VG9Mb2NhbFBvaW50KGNvbnN0IFdl
YlBvaW50JiBwb2ludCkKK3sKKyAgICBTY3JvbGxWaWV3KiB2aWV3ID0gcGFyZW50KCk7CisgICAg
aWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gcG9pbnQ7CisgICAgV2ViUG9pbnQgd2luZG93UG9p
bnQgPSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KTsKKyAgICByZXR1cm4gcm91bmRlZElu
dFBvaW50KG1fZWxlbWVudC0+cmVuZGVyZXIoKS0+YWJzb2x1dGVUb0xvY2FsKExheW91dFBvaW50
KHdpbmRvd1BvaW50KSwgVXNlVHJhbnNmb3JtcyB8IFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zKSk7
Cit9CisKIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGF0
IHRoZSBwbHVnaW4gcmVjZWl2ZXMgd2luZG93IGdlb21ldHJ5IGJlZm9yZSBkYXRhLCBvciBlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWlu
ZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJ
bXBsLmgKaW5kZXggMTY5MmU4MjcxY2I2ODUwNDU1ZDQ1YzA2OTQxOWNlZGFmZDQ4Zjg0Yy4uYjQ5
NThmZTE5NTU3MDJkMjRmN2MxMGNjNDMyNTQ0ZjA1YTc5MTYxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaApAQCAtMTE1LDYg
KzExNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNSZWN0VG9wbW9zdChjb25zdCBX
ZWJSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHNldElzQWNjZXB0aW5nVG91Y2hFdmVudHMoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFdhbnRzV2hlZWxFdmVudHMoYm9vbCk7CisgICAgdmly
dHVhbCBXZWJQb2ludCB3aW5kb3dUb0xvY2FsUG9pbnQoY29uc3QgV2ViUG9pbnQmKTsKIAogICAg
IC8vIFRoaXMgY2Fubm90IGJlIG51bGwuCiAgICAgV2ViUGx1Z2luKiBwbHVnaW4oKSB7IHJldHVy
biBtX3dlYlBsdWdpbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9GYWtlV2ViUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZVdl
YlBsdWdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUxY2I5ZmEwMWVlZDI0ZTc4ZGU1ZTY0NTExOGFkYTYz
ZTNhYTY0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
RmFrZVdlYlBsdWdpbi5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJGYWtlV2ViUGx1Z2luLmgiCisKKyNpbmNsdWRlICJXZWJQbHVnaW5QYXJhbXMuaCIK
KyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitG
YWtlV2ViUGx1Z2luOjpGYWtlV2ViUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViUGx1
Z2luUGFyYW1zJiBwYXJhbXMpCisgICAgOiBtX2ZyYW1lKGZyYW1lKQoreworfQorCitGYWtlV2Vi
UGx1Z2luOjp+RmFrZVdlYlBsdWdpbigpCit7Cit9CisKK2Jvb2wgRmFrZVdlYlBsdWdpbjo6aW5p
dGlhbGl6ZShXZWJQbHVnaW5Db250YWluZXIqIGNvbnRhaW5lcikKK3sKKyAgICBtX2NvbnRhaW5l
ciA9IGNvbnRhaW5lcjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBGYWtlV2ViUGx1Z2lu
OjpkZXN0cm95KCkKK3sKKyAgICBtX2NvbnRhaW5lciA9IDA7CisgICAgbV9mcmFtZSA9IDA7Cit9
CisKK30gLy8gbmFtZXNwYWNlICBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRmFrZVdlYlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9GYWtlV2ViUGx1Z2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2VlNDFjOGRjNjJmNDNjOGJiMWNkYjZiYTM0
Nzk2OTJmZmIwYTg0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvRmFrZVdlYlBsdWdpbi5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZha2VXZWJQbHVn
aW5faAorI2RlZmluZSBGYWtlV2ViUGx1Z2luX2gKKworI2luY2x1ZGUgIldlYlBsdWdpbi5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRHJhZ0RhdGE7CitjbGFzcyBXZWJGcmFt
ZTsKK2NsYXNzIFdlYklucHV0RXZlbnQ7CitjbGFzcyBXZWJQbHVnaW5Db250YWluZXI7CitjbGFz
cyBXZWJVUkw7CitjbGFzcyBXZWJVUkxSZXF1ZXN0OworY2xhc3MgV2ViVVJMUmVzcG9uc2U7CisK
K2NsYXNzIEZha2VXZWJQbHVnaW4gOiBwdWJsaWMgV2ViUGx1Z2luIHsKK3B1YmxpYzoKKyAgICBG
YWtlV2ViUGx1Z2luKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlBsdWdpblBh
cmFtcyYpOworICAgIHZpcnR1YWwgfkZha2VXZWJQbHVnaW4oKTsKKworICAgIC8vIFdlYlBsdWdp
biBtZXRob2RzOgorICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKFdlYktpdDo6V2ViUGx1Z2lu
Q29udGFpbmVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIE5QT2JqZWN0KiBzY3JpcHRhYmxlT2JqZWN0KCkgT1ZFUlJJREUgeyBy
ZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5Qcm9jZXNzRHJhZygpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYktpdDo6V2Vi
Q2FudmFzKiwgY29uc3QgV2ViS2l0OjpXZWJSZWN0JikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUdlb21ldHJ5KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgZnJhbWVSZWN0LCBj
b25zdCBXZWJLaXQ6OldlYlJlY3QmIGNsaXBSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlZlY3RvcjxX
ZWJLaXQ6OldlYlJlY3Q+JiBjdXRPdXRzUmVjdHMsIGJvb2wgaXNWaXNpYmxlKSBPVkVSUklERSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9jdXMoYm9vbCkgT1ZFUlJJREUgeyB9CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVZpc2liaWxpdHkoYm9vbCkgT1ZFUlJJREUgeyB9CisgICAgdmly
dHVhbCBib29sIGFjY2VwdHNJbnB1dEV2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJLaXQ6OldlYklucHV0
RXZlbnQmLCBXZWJLaXQ6OldlYkN1cnNvckluZm8mKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVEcmFnU3RhdHVzVXBkYXRlKFdlYktpdDo6V2ViRHJh
Z1N0YXR1cywgY29uc3QgV2ViS2l0OjpXZWJEcmFnRGF0YSYsIFdlYktpdDo6V2ViRHJhZ09wZXJh
dGlvbnNNYXNrLCBjb25zdCBXZWJLaXQ6OldlYlBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViS2l0
OjpXZWJQb2ludCYgc2NyZWVuUG9zaXRpb24pIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJLaXQ6OldlYlVSTFJl
c3BvbnNlJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZygpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsTG9hZGluZyhjb25zdCBXZWJLaXQ6OldlYlVSTEVycm9yJikgT1ZFUlJJREUgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdGcmFtZVJlcXVlc3QoY29uc3QgV2ViS2l0
OjpXZWJVUkwmLCB2b2lkKiBub3RpZnlEYXRhKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbExvYWRpbmdGcmFtZVJlcXVlc3QoY29uc3QgV2ViS2l0OjpXZWJVUkwmLCB2b2lk
KiBub3RpZnlEYXRhLCBjb25zdCBXZWJLaXQ6OldlYlVSTEVycm9yJikgT1ZFUlJJREUgeyB9Cisg
ICAgdmlydHVhbCBib29sIGlzUGxhY2Vob2xkZXIoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fQorCitwcml2YXRlOgorICAgIFdlYkZyYW1lKiBtX2ZyYW1lOworICAgIFdlYlBsdWdpbkNvbnRh
aW5lciogbV9jb250YWluZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEZha2VXZWJQbHVnaW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9XZWJQbHVnaW5Db250YWluZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViUGx1Z2luQ29udGFpbmVyVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTAwODljOWQ0ZDYx
MGRmZjM5N2M1MmY2ZjE0NDk3YTIwNjNjNTc2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGx1Z2luQ29udGFpbmVyVGVzdC5jcHAKQEAgLTAsMCAr
MSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
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
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVy
LmgiCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRmFrZVdlYlBsdWdpbi5oIgor
I2luY2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIKKyNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5o
IgorI2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRl
ICJXZWJGcmFtZUltcGwuaCIKKyNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXJJbXBsLmgiCisj
aW5jbHVkZSAiV2ViUGx1Z2luUGFyYW1zLmgiCisjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKKyNp
bmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKKyNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFdlYlBs
dWdpbkNvbnRhaW5lclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAg
V2ViUGx1Z2luQ29udGFpbmVyVGVzdCgpCisgICAgICAgIDogbV9iYXNlVVJMKCJodHRwOi8vd3d3
LnRlc3QuY29tLyIpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigp
CisgICAgeworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMo
KTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBzdGQ6OnN0cmluZyBtX2Jhc2VVUkw7Cit9Owor
CitjbGFzcyBUZXN0UGx1Z2luV2ViRnJhbWVDbGllbnQgOiBwdWJsaWMgV2ViRnJhbWVDbGllbnQg
eworICAgIHZpcnR1YWwgV2ViUGx1Z2luKiBjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBj
b25zdCBXZWJQbHVnaW5QYXJhbXMmIHBhcmFtcykgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGlm
IChwYXJhbXMubWltZVR5cGUgPT0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiYXBwbGljYXRpb24veC13
ZWJraXQtdGVzdC13ZWJwbHVnaW4iKSkKKyAgICAgICAgICAgIHJldHVybiBuZXcgRmFrZVdlYlBs
dWdpbihmcmFtZSwgcGFyYW1zKTsKKyAgICAgICAgcmV0dXJuIFdlYkZyYW1lQ2xpZW50OjpjcmVh
dGVQbHVnaW4oZnJhbWUsIHBhcmFtcyk7CisgICAgfQorfTsKKworV2ViUGx1Z2luQ29udGFpbmVy
KiBnZXRXZWJQbHVnaW5Db250YWluZXIoV2ViVmlldyogd2ViVmlldywgY29uc3QgV2ViU3RyaW5n
JiBpZCkKK3sKKyAgICBXZWJFbGVtZW50IGVsZW1lbnQgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+
ZG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZChpZCk7CisgICAgcmV0dXJuIGVsZW1lbnQucGx1Z2lu
Q29udGFpbmVyKCk7Cit9CisKK1RFU1RfRihXZWJQbHVnaW5Db250YWluZXJUZXN0LCBXaW5kb3dU
b0xvY2FsUG9pbnRUZXN0KQoreworICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVS
TEZyb21CYXNlVVJMKFdlYlN0cmluZzo6ZnJvbVVURjgobV9iYXNlVVJMLmNfc3RyKCkpLCBXZWJT
dHJpbmc6OmZyb21VVEY4KCJwbHVnaW5fY29udGFpbmVyLmh0bWwiKSk7CisgICAgV2ViVmlldyog
d2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVS
TCArICJwbHVnaW5fY29udGFpbmVyLmh0bWwiLCB0cnVlLCBuZXcgVGVzdFBsdWdpbldlYkZyYW1l
Q2xpZW50KCkpOworICAgIEFTU0VSVCh3ZWJWaWV3KTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5ncygp
LT5zZXRQbHVnaW5zRW5hYmxlZCh0cnVlKTsKKyAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSgz
MDAsIDMwMCkpOworICAgIHdlYlZpZXctPmxheW91dCgpOworICAgIHdlYmtpdF9zdXBwb3J0OjpS
dW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKworICAgIFdlYlBsdWdpbkNvbnRhaW5lciogcGx1Z2lu
Q29udGFpbmVyT25lID0gZ2V0V2ViUGx1Z2luQ29udGFpbmVyKHdlYlZpZXcsIFdlYlN0cmluZzo6
ZnJvbVVURjgoInRyYW5zbGF0ZWQtcGx1Z2luIikpOworICAgIEFTU0VSVChwbHVnaW5Db250YWlu
ZXJPbmUpOworICAgIFdlYlBvaW50IHBvaW50MSA9IHBsdWdpbkNvbnRhaW5lck9uZS0+d2luZG93
VG9Mb2NhbFBvaW50KFdlYlBvaW50KDEwLCAxMCkpOworICAgIEFTU0VSVF9FUSgwLCBwb2ludDEu
eCk7CisgICAgQVNTRVJUX0VRKDAsIHBvaW50MS55KTsKKyAgICBXZWJQb2ludCBwb2ludDIgPSBw
bHVnaW5Db250YWluZXJPbmUtPndpbmRvd1RvTG9jYWxQb2ludChXZWJQb2ludCgxMDAsIDEwMCkp
OworICAgIEFTU0VSVF9FUSg5MCwgcG9pbnQyLngpOworICAgIEFTU0VSVF9FUSg5MCwgcG9pbnQy
LnkpOworCisgICAgV2ViUGx1Z2luQ29udGFpbmVyKiBwbHVnaW5Db250YWluZXJUd28gPSBnZXRX
ZWJQbHVnaW5Db250YWluZXIod2ViVmlldywgV2ViU3RyaW5nOjpmcm9tVVRGOCgicm90YXRlZC1w
bHVnaW4iKSk7CisgICAgQVNTRVJUKHBsdWdpbkNvbnRhaW5lclR3byk7CisgICAgV2ViUG9pbnQg
cG9pbnQzID0gcGx1Z2luQ29udGFpbmVyVHdvLT53aW5kb3dUb0xvY2FsUG9pbnQoV2ViUG9pbnQo
MCwgMTApKTsKKyAgICBBU1NFUlRfRVEoMTAsIHBvaW50My54KTsKKyAgICBBU1NFUlRfRVEoMCwg
cG9pbnQzLnkpOworICAgIFdlYlBvaW50IHBvaW50NCA9IHBsdWdpbkNvbnRhaW5lclR3by0+d2lu
ZG93VG9Mb2NhbFBvaW50KFdlYlBvaW50KC0xMCwgMTApKTsKKyAgICBBU1NFUlRfRVEoMTAsIHBv
aW50NC54KTsKKyAgICBBU1NFUlRfRVEoMTAsIHBvaW50NC55KTsKKworICAgIHdlYlZpZXctPmNs
b3NlKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
ZGF0YS9wbHVnaW5fY29udGFpbmVyLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L2RhdGEvcGx1Z2luX2NvbnRhaW5lci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxM2NhODA0ZTg3NmU1MDM3
Nzg0NjkxYzM1N2YxYjgyY2M2ODBjODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL2RhdGEvcGx1Z2luX2NvbnRhaW5lci5odG1sCkBAIC0wLDAgKzEsMjQg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KKyAgICBib2R5IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisgIDwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgPG9iamVjdCBpZD0icm90YXRlZC1wbHVnaW4iCisgICAgICBzdHls
ZT0iLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IHBvc2l0aW9uOiBhYnNvbHV0ZTsg
dG9wOiAwOyBsZWZ0OiAwOyAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAgMDsiCisgICAgICB0
eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LXdlYnBsdWdpbiIKKyAgICAgIGJvcmRlcj0w
CisgICAgICB3aWR0aD0iNDAiCisgICAgICBoZWlnaHQ9IjQwIj4KKyAgPC9vYmplY3Q+CisgIDxv
YmplY3QgaWQ9InRyYW5zbGF0ZWQtcGx1Z2luIgorICAgICAgYm9yZGVyPTAKKyAgICAgIHN0eWxl
PSItd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDEwcHgsIDEwcHgpOyBwb3NpdGlvbjogYWJz
b2x1dGU7IHRvcDogMDsgbGVmdDogMDsiCisgICAgICB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtp
dC10ZXN0LXdlYnBsdWdpbiIKKyAgICAgIHdpZHRoPSI0MCIKKyAgICAgIGhlaWdodD0iNDAiPgor
ICA8L29iamVjdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>